How to uninstall a word plugin

二月 9, 2010 由 tingan

Manually Installing the Zotero Word Plugin for Windows

To install the plugin by hand, first download the plugin template file for your Zotero version:

Zotero 1.0

Once downloaded, open the ZIP file and move the Zotero.dot file into the Word Startup folder.

Zotero 2.0

Once the plugin (distributed as a Firefox extension) is installed into Firefox, you can find a copy of the Zotero.dot file in the extensions/zoteroWinWordIntegration@zotero.org/install directory within your Firefox profile. Be sure to copy (rather than move) the file to the Word Startup folder.

Locating your Word Startup folder

The correct folder can be found in the Options window of Word:

Word 2003: open the Tools menu and click Options. Under the ‘File Locations’ tab you will find the Startup directory.

Word 2007: click the Microsoft Office Button, and then click Word Options. Click Advanced. Under General, click File Locations. The Startup folder should be listed there.

The default startup folders of Word are:

Word 2000, 2002 (XP), 2003, 2007 under Windows 2000 or XP

  • C:\Documents and Settings\::username::\Application Data\Microsoft\Word\Startup (::username:: is the user name of the currently logged-in user)

Word 2000, 2002 (XP), 2003, 2007 under Windows Vista

  • C:\Users\::username::\AppData\Roaming\Microsoft\Word\Startup (::username:: is the user name of the currently logged-in user)

Once you have moved the Zotero.dot file into the Startup folder, start (or restart) Microsoft Word to begin using the plugin. Note that after you’ve installed the .dot file, you can delete the downloaded ZIP file.

In many cases you will need to change your macro security settings to use the plugin. These are generally found under the tools drop-down menu in Word. Change your macro security settings to allow macros in the document. Then save the document, close it and reopen it. When you reopen your document you should be able to use the plugin.

 
windows_word_plugin_manual_installation_instructions.txt · Last modified: 2009/09/16 05:17 by dstillman

 

Driven by DokuWiki <!– –>

SaS9.13破解方法

二月 4, 2010 由 tingan


送一个9.1.3的sid和永久破解sashost,作为对本论坛和版主的感谢

1楼

njukjzl 发表于:2007-4-17 13:00:22

由于文件太大,不好上传,我把方法列示如下:

第一步:复制下列文件为文本文件进行安 装,注意调整时间,我是调到了2004年1月,不知道其他的调整会不会有影响,然后选择安装的时候选择英文版,中文版大家有兴趣可以试,我没有试验。

[_SID_]
Version=9.1
Revision=9.1.3
Platform=WINDOWS
Platform_long=Microsoft Windows Professional, Microsoft Windows Server, and Microsoft Windows Datacenter Server
Order=980173
SID_schema=2
SID_header=SAS 9.1.3 SAS AppDev Studio, SAS AppDev Studio
x64=0
[_Info_]
[_FileData_]
$_Filename=indexfile.txt
$_Path=.\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
indexfile.txt
sas91_980173.txt

$_Stream=——————— END ———————
$_Filename=tletter.txt
$_Path=.\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
Microsoft Windows Professional, Microsoft Windows Server, and Microsoft Windows Datacenter Server
Academic Analysis Suite May 29, 2006
Base SAS Software May 29, 2006
SAS AppDev Studio 
SAS/ACCESS Interface to ODBC Software 
SAS/ACCESS Interface to OLE DB Software 
SAS/ACCESS Interface to PC Files Software 
SAS/CONNECT Software 
SAS/ETS Software 
SAS/FSP Software 
SAS/GRAPH Software 
SAS/IML Software 
SAS/INSIGHT Software 
SAS/SHARE Software 
SAS/STAT Software 
Enterprise Miner Server Solution May 29, 2006
SAS AppDev Studio 
SAS/OR Software May 29, 2006
SAS/QC Software May 29, 2006

$_Stream=——————— END ———————
$_Filename=setinit.sss
$_Path=sas\\core\\sasinst\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
PROC SETINIT RELEASE=\’9.1\’;
SITEINFO NAME=\’ICFAI BUSINESS SCHOOL\’
SITE=49647001 OSNAME=\’WIN_NTE\’ RECREATE WARN=15  GRACE=15
BIRTHDAY=\’23NOV1992\’D EXPIRE=\’29MAY2006\’D  PASSWORD=74994967;
ALIAS \’ACADEMIC ANALYSIS SUITE\’ \’PRODNUM000\’ \’PRODNUM001\’ \’PRODNUM002\’
       \’PRODNUM003\’ \’PRODNUM004\’ \’PRODNUM007\’ \’PRODNUM010\’ \’PRODNUM015\’
       \’PRODNUM018\’ \’PRODNUM096\’ \’PRODNUM208\’ \’PRODNUM209\’ \’PRODNUM215\’
       / PASSWORD=332658067 PRODNUM=253;
CPU  MODEL=\’ \’ MODNUM=\’ \’ SERIAL=\’ \’ NAME=CPU000;
EXPIRE \’PRODNUM006\’ \’PRODNUM005\’ \’PRODNUM008\’ \’PRODNUM102\’ \’PRODNUM103\’
       \’PRODNUM025\’ \’PRODNUM164\’ \’PRODNUM165\’ \’PRODNUM166\’ \’PRODNUM167\’
       \’PRODNUM035\’ \’PRODNUM054\’ \’PRODNUM050\’ \’PRODNUM070\’ \’PRODNUM075\’
       \’ACADEMIC ANALYSIS SUITE\’ \’29MAY2006\’D / CPU=CPU000;
SAVE; RUN;

$_Stream=——————— END ———————
$_Filename=compinfo.dat
$_Path=sas\\core\\sasinst\\reserved\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
[SeparatelylicensedComponents]
Comp1=or
Comp2=qc
Comp3=sas
Comp4=base
Comp5=5O
Comp6=9D
Comp7=AU

$_Stream=——————— END ———————
$_Filename=misc.txt
$_Path=.\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
[CDSetInfo]
CDSetVersion=0
StrictVerChk=0

$_Stream=——————— END ———————
$_Filename=sas.ini
$_Path=sas\\core\\sasinst\\data\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
[Component]
Filter=SAS,SAW
Visible=1
Media=cd101.id
MediaLabel=Software Disk 1
Parent=ROOT
ProcessOrder=900
Component=sas:SAS 9.1:SAS 9.1 for Windows:0
Prereq1=base:REQUIRED|SHOW
Prereq2=abmadaptsap
Prereq3=af
Prereq4=assist
Prereq5=baan
Prereq6=bissupp
Prereq7=connect
Prereq8=creditscrnod
Prereq9=db2
Prereq10=delete:HIDE
Prereq11=delete_server:HIDE
Prereq12=di
Prereq13=dipcl
Prereq14=dippr
Prereq15=dquality
Prereq16=eis
Prereq17=ets
Prereq18=finance
Prereq19=fsp
Prereq20=gis
Prereq21=gismaps
Prereq22=graph
Prereq23=hpf
Prereq24=iml
Prereq25=insight
Prereq26=intrnet
Prereq27=inttech
Prereq28=irp
Prereq29=itmadaptsap
Prereq30=itslm
Prereq31=lab
Prereq32=lastdisk:REQUIRED
Prereq33=ma
Prereq34=maps
Prereq35=mddbserv
Prereq36=mktopt
Prereq37=mysql
Prereq38=odbc
Prereq39=oledb
Prereq40=or
Prereq41=oracle
Prereq42=pcfile
Prereq43=peosoft
Prereq44=procurement
Prereq45=qc
Prereq46=r3
Prereq47=reinstal:REQUIRED
Prereq48=reporter
Prereq49=sapbw
Prereq50=scorecard
Prereq51=share
Prereq52=shrbndls:REQUIRED
Prereq53=soladaptsap
Prereq54=soltnsdata
Prereq55=srmsrcdqual
Prereq56=stat
Prereq57=sview
Prereq58=sybase
Prereq59=teradata
Prereq60=tmine
Prereq61=toolkt
Prereq62=txtmindan
Prereq63=txtmindut
Prereq64=txtminfin
Prereq65=txtminfre
Prereq66=txtminger
Prereq67=txtminita
Prereq68=txtminpor
Prereq69=txtminspa
Prereq70=txtminswe
Prereq71=vca
Prereq72=weba
Prereq73=webdatasrv
Prereq74=whouse

[Icons]
Icon1=RunSAS
Icon2=RunSASIQ
Icon3=RunSASQDoc

[Icons]
Icon1=RunSAS
Icon2=RunSASIQ
Icon3=RunSASQDoc

[RunSAS]
FolderType=PROGRAMS
ProgramFolder=SAS
Name=SAS 9.1
CommandLine=”<TARGETDIR>\\sas.exe”
DefaultConfig=1
Args=
WorkingDir=%USERPROFILE%
IconFile=”<TARGETDIR>\\sas.exe”
IconIndex=
ShortCutKey=
GroupType=COMMON

[RunSASIQ]
FolderType=PROGRAMS
ProgramFolder=SAS\\SAS 9.1 Utilities
Name=SAS Installation Qualification Tool
CommandLine=”<SASROOT>\\sastest\\sasiq.exe”
DefaultConfig=0
Args=
WorkingDir=”<SASROOT>\\sastest”
IconFile=”<SASROOT>\\sastest\\sasiq.exe”
IconIndex=
ShortCutKey=
GroupType=COMMON

[RunSASQDoc]
FolderType=PROGRAMS
ProgramFolder=SAS\\SAS 9.1 Utilities
Name=SAS Qualification Tools User\’s Guide
CommandLine=”<SASROOT>\\doc09\\qualification_tools_guide.pdf”
DefaultConfig=0
Args=
WorkingDir=%USERPROFILE%
IconFile=”<SASROOT>\\doc09\\qualification_tools_guide.pdf”
IconIndex=
ShortCutKey=
GroupType=COMMON

$_Stream=——————— END ———————
$_Filename=media.txt
$_Path=ssncd\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
sassetup1cd:SAS Setup Disk
sharedcomp1cd:SAS Shared Components
srvpakwin1cd:Service Pack 3 for SAS Foundation
srvpakall1cd:Service Pack 3 Installer
ssncd:SAS Software Navigator
config1cd:SAS Configuration and Management – Volume 1
srwizard1cd:System Requirements Wizard
server2cd:SAS AppDev Studio Server Components
mid1cd:SAS Mid-Tier Components
mid5cd:SAS OnlineDoc for the Web
apidoc1cd:SAS BI API Developer Documentation for Java
mid4cd:SAS Web Report Viewer
client1cd:SAS Client-Side Components Volume 1
client2cd:SAS Client-Side Components Volume 2
client21cd:SAS Client-Side Components Volume 3
client8cd:SAS Enterprise Guide
client10cd:SAS BI Metadata Management Clients
client11cd:SAS AppDev Studio Java Components
thirdpty1cd:Third Party Software Components – Volume 1
thirdpty2cd:Third Party Software Components – Volume 2
thirdpty3cd:Third Party Software Components – Volume 3

$_Stream=——————— END ———————
$_Filename=showit.txt
$_Path=ssncd\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
overview
media
sasplatform
acadsuite
dminesol
appdevupdate

$_Stream=——————— END ———————
$_Filename=orderable12byte.txt
$_Path=.\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
# Order of Variables: 12byte, orderable, installable, planEnabled, Orderables, isServer
ACADSUITE     1  1  0  0  0
BASE          1  1  0  0  0
APPDEVUPDATE  1  1  1  0  0
ODBC          1  1  0  0  0
OLEDB         1  1  0  0  0
PCFILE        1  1  0  0  0
CONNECT       1  1  0  0  0
ETS           1  1  0  0  0
FSP           1  1  0  0  0
GRAPH         1  1  0  0  0
IML           1  1  0  0  0
INSIGHT       1  1  0  0  0
SHARE         1  1  0  0  0
STAT          1  1  0  0  0
DMINESOL      1  1  1  0  0
APPDEVUPDATE  1  1  1  0  0
OR            1  1  0  0  0
QC            1  1  0  0  0
EGUIDE        1  1  0  0  0

$_Stream=——————— END ———————
$_Filename=au.ini
$_Path=sas\\core\\sasinst\\data\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
[Component]
Filter=SAS,SAW
Media=cd101.id
MediaLabel=Software Disk 1
Parent=ROOT
ProcessOrder=901
Component=AU:SAS AppDev Studio:SAS AppDev:0
Prereq1=lastdisk:REQUIRED
Prereq2=reinstal:REQUIRED
Prereq3=shrbndls:REQUIRED
Prereq4=delete:HIDE
Prereq5=delete_server:HIDE
Prereq6=af:REQUIRED
Prereq7=connect:REQUIRED
Prereq8=eis:REQUIRED
Prereq9=fsp:REQUIRED
Prereq10=graph:REQUIRED
Prereq11=inttech:REQUIRED
Prereq12=share:REQUIRED
Prereq13=intrnet:REQUIRED
Prereq14=base:REQUIRED

[Icons]
Icon1=RunSAS

[RunSAS]
FolderType=PROGRAMS
ProgramFolder=SAS
Name=SAS 9.1
CommandLine=”<TARGETDIR>\\sas.exe”
DefaultConfig=1
Args=
WorkingDir=%USERPROFILE%
IconFile=”<TARGETDIR>\\sas.exe”
IconIndex=
ShortCutKey=
GroupType=COMMON
$_Stream=——————— END ———————
$_Filename=9d.ini
$_Path=sas\\core\\sasinst\\data\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
[Component]
Filter=SAS,SAW
Media=cd101.id
MediaLabel=Software Disk 1
Parent=ROOT
ProcessOrder=901
Component=9D:Enterprise Miner Server Solution:Enterprise:0
Prereq1=lastdisk:REQUIRED
Prereq2=reinstal:REQUIRED
Prereq3=shrbndls:REQUIRED
Prereq4=delete:HIDE
Prereq5=delete_server:HIDE
Prereq6=dmine:REQUIRED
Prereq7=connect:REQUIRED
Prereq8=ets:REQUIRED
Prereq9=graph:REQUIRED
Prereq10=eis:REQUIRED
Prereq11=fsp:REQUIRED
Prereq12=insight:REQUIRED
Prereq13=mddbserv:REQUIRED
Prereq14=or:REQUIRED
Prereq15=inttech:REQUIRED
Prereq16=base:REQUIRED

[Icons]
Icon1=RunSAS

[RunSAS]
FolderType=PROGRAMS
ProgramFolder=SAS
Name=SAS 9.1
CommandLine=”<TARGETDIR>\\sas.exe”
DefaultConfig=1
Args=
WorkingDir=%USERPROFILE%
IconFile=”<TARGETDIR>\\sas.exe”
IconIndex=
ShortCutKey=
GroupType=COMMON
$_Stream=——————— END ———————
$_Filename=5o.ini
$_Path=sas\\core\\sasinst\\data\\
$_Date=
$_Time=
$_Stream=——————– BEGIN ——————–
[Component]
Filter=SAS,SAW
Media=cd101.id
MediaLabel=Software Disk 1
Parent=ROOT
ProcessOrder=901
Component=5O:Academic Analysis Suite:Academic A:0
Prereq1=lastdisk:REQUIRED
Prereq2=reinstal:REQUIRED
Prereq3=shrbndls:REQUIRED
Prereq4=delete:HIDE
Prereq5=delete_server:HIDE
Prereq6=graph:REQUIRED
Prereq7=ets:REQUIRED
Prereq8=fsp:REQUIRED
Prereq9=iml:REQUIRED
Prereq10=share:REQUIRED
Prereq11=stat:REQUIRED
Prereq12=insight:REQUIRED
Prereq13=connect:REQUIRED
Prereq14=oledb:REQUIRED
Prereq15=pcfile:REQUIRED
Prereq16=odbc:REQUIRED
Prereq17=base:REQUIRED

[Icons]
Icon1=RunSAS

[RunSAS]
FolderType=PROGRAMS
ProgramFolder=SAS
Name=SAS 9.1
CommandLine=”<TARGETDIR>\\sas.exe”
DefaultConfig=1
Args=
WorkingDir=%USERPROFILE%
IconFile=”<TARGETDIR>\\sas.exe”
IconIndex=
ShortCutKey=
GroupType=COMMON
$_Stream=——————— END ———————
[_EOF_]

第 二步:用十六进制编辑器(例如ULTRAEDIT) 打开sashost.dll
搜索:31C9668B4DE8
换 成:31C966B92C00

然后将这个新生成的sashost复制到SAS安装目录下面覆盖原先的SASHOST就可以了。

这 样就可以调整过来了

不是想侵犯知识产权,只是想让更多的人都能用上SAS,感受一下最新的9.1.3,对了,我一直在找有ADD-IN OFFICE模块的SID,不知道有没有高手可以邮一份给我

ubuntu java 中文乱码

一月 1, 2010 由 tingan

1,中文乱码问题

  在linux下安装完后,有中文乱码问题,经查找原因发现,Visual Paradigm自己带了JRE,关于在linux下java环境的中文乱码问题,在网上有很多解决的文章,这里就略过。如果当前的java环境中文是正 常的,只要将你的系统内的jre环境下的fontconfig.properties 文件复制一份到 Visual Paradigm软件安装目录下的 jre/lib目录。这样重新打开启动这个软件,你会发现中文正常使用了。

  不过发现菜单及窗口内有些还是英文的,汉化不是很完整。

How to run IntelliJ IDEA from Ubuntu Menu

十二月 31, 2009 由 tingan

After you had installed IntelliJ IDEA onto your PC with Ubuntu you probably want to add to it to Main Menu. But shortcut to
idea.sh
doesn’t work as expected, you need command like this:
sh -c "export JDK_HOME=/usr/lib/jvm/java-6-sun && /path/to/idea/bin/idea.sh"
and all will be ok.

Nutch 1.0 use experience

十一月 23, 2009 由 tingan

create a dmoz folder under the bin folder
create a urls text file to contain the urls:
http://www.britishhorrorfilms.co.uk/rillington.shtml
http://www.shoestring.org/mmi_revs/10-rillington-place.html
http://www.tvguide.com/movies/database/ShowMovie.asp?MI=22983
http://us.imdb.com/title/tt0066730/
http://www.geocities.com/aaronbcaldwell/1984.html
http://orwell.ru/a_life/movies/m84_01.htm
http://www.britmovie.co.uk/genres/fiction/filmography/014.html
http://adrianmco.batcave.net/1984.htm
http://us.imdb.com/title/tt0114746/
http://www.geocities.com/darkdaze18/
http://apolloguide.com/mov_revtemp.asp?Title=13th+Warrior,+The
http://www.boxofficemojo.com/13thwarrior.html
http://movie-reviews.colossus.net/movies/t/13th_warrior.html
http://ter.air0day.com/13thwarrior.shtml
http://www.metacritic.com/video/titles/13thwarrior
http://us.imdb.com/title/tt0120657/
http://www.all-reviews.com/videos/thirteenth-warrior.htm
http://www.haro-online.com/movies/13th_warrior.html
http://www.rottentomatoes.com/movie-1091574/
http://upcomingmovies.com/13thwarrior.html
http://www.brunching.com/selfmade/selfmade-thirteenthwarrior.html
http://www.filmtracks.com/titles/13th_warrior.html
http://www.100girls.net/
http://imdb.com/title/tt0214388/
http://us.imdb.com/title/tt0146394/
http://us.imdb.com/title/tt0085121/

tingan@tingan-laptop:~/download/spider/nutch/bin$ cd dmoz/
tingan@tingan-laptop:~/download/spider/nutch/bin/dmoz$ ls
urls
tingan@tingan-laptop:~/download/spider/nutch/bin/dmoz$ gedit urls
tingan@tingan-laptop:~/download/spider/nutch/bin/dmoz$ cd ..
tingan@tingan-laptop:~/download/spider/nutch/bin$ ./nutch inject crawl-20091123183328/crawldb/ dmoz/
Injector: starting
Injector: crawlDb: crawl-20091123183328/crawldb
Injector: urlDir: dmoz
Injector: Converting injected urls to crawl db entries.
Injector: Merging injected urls into crawl db.
Injector: done

Ubuntu Nutch 1.0 Installation

十一月 23, 2009 由 tingan

1. download and install tomcat 5.5 or tomcat 6.0, you can install both.
2. set JAVA_HOME, CLASSPATH environment variable
sudo gedit .bashrc  or sudo gedit .profile
export JAVA_HOME=/usr/lib/jvm/java-6-sun
#export CATALINA_HOME=/usr/share/tomcat5.5
export CATALINA_HOME=/home/tingan/download/Java/apache-tomcat-6.0.20
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/tingan/download/spider/nutch/lib:$CATALINA_HOME/common/lib/jsp-api.jar:$CATALINA_HOME/common/lib/servlet-api.jar
 
in the process of run nutch command line, it shows the error that the java class .
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/nutch/crawl/Crawl
I copy the nutch-1.0.jar to the $JAVA_HOME/lib/nutch.jar and add a line to the CLASSPATH variable.

3. test nutch command line
/home/tingan/download/spider/nutch/bin

创建目录
       在nutch\bin 目录下创建一个urls目录,然后在目录里面新建一个文件,文件名为 “url.txt”,内容为你要爬行的网站如:http://www.sina.com.cn或者 http://133.40.188.130:8880/klms
3、修改nutch\conf\crawl-urlfilter.txt文件
打 开nutch\conf\crawl-urlfilter.txt文件,把MY.DOMAIN.NAME字符替换为url.txt内的url的域名,其实 更简单点,直接删除MY.DOMAIN.NAME这几个字就可以了,也就是说,只保存+^http://([a-z0-9]*\.)*这几个字就可以了, 表示所有http的网站都同意爬行。
如:+^http://([a-z0-9]*\.)*133.40.188.130:8880/
或者:+^http://([a-z0-9]*\.)*sina.com.cn/
4、修改nutch\conf\conf/nutch-site.xml文件
       打开nutch\conf\conf/nutch-site.xml文件,在内插入一下内容:注:如果是sina.com.cn 则value 的值修改为:http://www.sina.com.cn
        
                         http.robots.agents
                         http://133.40.188.130:8880/klms
        
        
                         http.agent.name
                         http://133.40.188.130:8880/klms
        
        
                         http.agent.url
                         http://133.40.188.130:8880/klms
        
 
     把XXX之间的内容替换为其他字符,当然就算是不替换也无所谓,这里的设置,是因为nutch遵守了robots协议,在获取response时,把自己的相关信息提交给被爬行的网站,以供识别。
5、修改nutch\conf\nutch-default.xml
打开nutch\conf\nutch-default.xml 文件,找到http.agent.name ,然后把Value值随便设计一个。
http.agent.name
 sina
以上配置,是爬取intranet的配置方式。
6、执行nutch
由于配置nutch采用的是单独网站的配置方式,所以执行上我们也采用的是单网查询,全网查询在以后的内容中介绍。
先看一看nutch给出的命令:nutch crawl urls -dir crawl -depth 3 -topN 50
crawl:通知nutch.jar,执行crawl的main方法。
urls:存放需要爬行的url.txt文件的目录,注意,这个名字需要和你的文件夹目录相同,如果你的文件夹为search,那这里也应该改成search。
 -dir crawl:爬行后文件保存的位置,可以在nutch/bin目录下找到。
-depth 3:爬行次数,或者成为深度,不过还是觉得次数更贴切,建议测试时改为1。
 -topN 50:一个网站保存的最大页面数。
      执行命令的步骤:
1.  进入cygwin界面。
2.  使用cd命令,进入nutch\bin路径下。
3.  执行:sh nutch crawl urls -dir crawl -depth 3 -topN 50
4.  具体的爬行日志可以在nutch/logs目录下看到,注意查找“INFO  fetcher.Fetcher – fetching http://XXXXXXX”这样的内容,这里是抓去过程日志。
7、查询搜索:
nutch 提供了类似google、baidu的网页页面,在nutch压缩包下找到nutch-0.8.war文件,放到tomcat/webapps目录下,修 改webapps/nutch/WEB-INF/classes/nutch-site.xml文件内容如下:
searcher.dir
/home/tingan/download/spider/nutch/bin/crawl-20091123183328
   的内容是刚才爬行后的crawl目录位置,提供给客户端来查询。
/home/tingan/download/spider/nutch/bin/crawl-20091123183328
这个目录是在执行nutch/bin/nutch crawl url.txt后在bin文件夹中生成的内容文件夹。

中文乱码问题:

在Nutch的搜索框中输入中文,点击“搜索”按钮之后,可以看到搜索框中的关键字是乱码,搜索结果也为空。网上有很多文章都谈到了这个现象,这不 是Nutch的问题,而是Tomcat没有对uri做编码造成的。解决的办法也很简单,在Tomcat的安装目录下找 到”conf/server.xml”文件,在“Connector port=”8080″”那一节添加“URIEncoding=”UTF-8″ useBodyEncodingForURI=”true””就可以了。完整的配置可能是下面这个样子:

maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true”
URIEncoding=”UTF-8″ useBodyEncodingForURI=”true” />

/home/tingan/download/spider/nutch/bin/crawl-20091124001536

关于nutch-0.9在使用过程中的错误

悬赏:5 发布时间:2008-08-07 提问人:zhaojuan8 (初级程序员)

看log日志
Java代码
  1. crawl started in: mydir  
  2. rootUrlDir = url  
  3. threads = 4  
  4. depth = 2  
  5. Injector: starting  
  6. Injector: crawlDb: mydir/crawldb  
  7. Injector: urlDir: url  
  8. Injector: Converting injected urls to crawl db entries.  
  9. Injector: Merging injected urls into crawl db.  
  10. Injector: done  
  11. Generator: Selecting best-scoring urls due for fetch.  
  12. Generator: starting  
  13. Generator: segment: mydir/segments/20080713015110  
  14. Generator: filtering: false  
  15. Generator: topN: 2147483647  
  16. Generator: jobtracker is ‘local’, generating exactly one partition.  
  17. Generator: Partitioning selected urls by host, for politeness.  
  18. Generator: done.  
  19. Fetcher: starting  
  20. Fetcher: segment: mydir/segments/20080713015110  
  21. Fetcher: threads: 4  
  22. fetching http://wwww.sina.com.cn/  
  23. fetch of http://wwww.sina.com.cn/ failed with: org.apache.nutch.protocol.http.api.HttpException: java.net.UnknownHostException: wwww.sina.com.cn  
  24. Fetcher: done  
  25. CrawlDb update: starting  
  26. CrawlDb update: db: mydir/crawldb  
  27. CrawlDb update: segments: [mydir/segments/20080713015110]  
  28. CrawlDb update: additions allowed: true  
  29. CrawlDb update: URL normalizing: true  
  30. CrawlDb update: URL filtering: true  
  31. CrawlDb update: Merging segment data into db.  
  32. CrawlDb update: done  
  33. Generator: Selecting best-scoring urls due for fetch.  
  34. Generator: starting  
  35. Generator: segment: mydir/segments/20080713015119  
  36. Generator: filtering: false  
  37. Generator: topN: 2147483647  
  38. Generator: jobtracker is ‘local’, generating exactly one partition.  
  39. Generator: Partitioning selected urls by host, for politeness.  
  40. Generator: done.  
  41. Fetcher: starting  
  42. Fetcher: segment: mydir/segments/20080713015119  
  43. Fetcher: threads: 4  
  44. fetching http://wwww.sina.com.cn/  
  45. fetch of http://wwww.sina.com.cn/ failed with: org.apache.nutch.protocol.http.api.HttpException: java.net.UnknownHostException: wwww.sina.com.cn  
  46. Fetcher: done  
  47. CrawlDb update: starting  
  48. CrawlDb update: db: mydir/crawldb  
  49. CrawlDb update: segments: [mydir/segments/20080713015119]  
  50. CrawlDb update: additions allowed: true  
  51. CrawlDb update: URL normalizing: true  
  52. CrawlDb update: URL filtering: true  
  53. CrawlDb update: Merging segment data into db.  
  54. CrawlDb update: done  
  55. LinkDb: starting  
  56. LinkDb: linkdb: mydir/linkdb  
  57. LinkDb: URL normalize: true  
  58. LinkDb: URL filter: true  
  59. LinkDb: adding segment: mydir/segments/20080713015110  
  60. LinkDb: adding segment: mydir/segments/20080713015119  
  61. LinkDb: done  
  62. Indexer: starting  
  63. Indexer: linkdb: mydir/linkdb  
  64. Indexer: adding segment: mydir/segments/20080713015110  
  65. Indexer: adding segment: mydir/segments/20080713015119  
  66. Optimizing index.  
  67. Indexer: done  
  68. Dedup: starting  
  69. Dedup: adding indexes in: mydir/indexes  
  70. Exception in thread “main” java.io.IOException: Job failed!  
  71.     at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:604)  
  72.     at org.apache.nutch.indexer.DeleteDuplicates.dedup(DeleteDuplicates.java:439)  
  73.     at org.apache.nutch.crawl.Crawl.main(Crawl.java:135)  

crawl-urlfilter.txt

Java代码
  1. # accept hosts in MY.DOMAIN.NAME  
  2. +^http://([a-z0-9]*\.)*sina.com.cn/  

这个错误困扰了我半天时间,找了许多资料都不能解决,那位高人给看看

问题补充:
nutch-site.xml的配置如下:
<configuration>
<property> <name>http.agent.name</name> <value>ihooyo</value> <description></description> </property> <property> <name>http.agent.description</name> <value>apersonblog</value> <description></description> </property> <property> <name>http.agent.url</name> <value>www.sina.com.cn</value> <description></description> </property> <property> <name>http.agent.email</name> <value>test@qq.com</value> <description></description> </property>
</configuration>


该问题已经关闭: 问题找到了,# accept hosts in MY.DOMAIN.NAME +^http://([a-z0-9]*\.)*sina.com.cn/ 直接改成 +^http://www.sina.com.cn/ 好了

Ubuntu Linux 8.04系统JAVA环境配置方法

十一月 23, 2009 由 tingan

1、首先安装JDK

  Java6 在命令行输入 apt-get install sun-Java6-jre sun-Java6-jdk 可以自行选择是否安装jre

  Java5 在命令行输入 apt-get install sun-Java5-jre sun-Java5-jdk

  多个jdk可以同时安装,而且可以随时更改当前的默认jdk

  在命令行输入 sudo update-alternatives –config Javac 来更改当前默认jdk

  sun-Java5-doc和sun-Java6-doc是jdk的文档的安装程序,但是不包括jdk文档。

  在安装jdk文档前,必须到sun的网站下载jdk文档。你下载的文档可以是任意语言,包括中文例如你 安装jdk5的文档,应该在安装前把下载的文档存放到/tmp/jdk-1_5_0-doc.zip;再例如你安装jdk6的文档,应该在安装前将下载的 文档存放到 /tmp/jdk-6-doc.zip。当然你也可以不在安装前做这件事情,因为安装的过程会提示你这么做,请注意看终端窗口的提示。

  写入环境变量 gedit /etc/environment

  在编辑器中加入 Java_HOME=/usr/lib/jvm/Java-6-sun

  classpath不必配置,错误的classpath会导致许多问题。jvm会知道自带的classpath。对于自定义的classpath,可以在运行、编译时加上-classpath参数来指定。至于环境变量,当你写的程序需要时再指定也不迟

  要使配置生效必须在命令行输入 . /etc/environment

  如果需要还要修改系统虚拟机的优先级顺序调整: sudo gedit /etc/jvm

  jdk安装完毕,在终端输入 Java -version 查看是否安装成功(或直接输入Java

  2、安装  

  从tomcat官方网站下载绿色的即可,解压后运行bin目录下的startup.sh

  在浏览器输入http://localhost:8080 查看tomcat是否启动

  要关闭tomcat只要运行bin目录下shutdown.sh即可

  如果需要tomcat开机启动可以参照一下方法:

  修改/etc/rc.local 文件 gedit /etc/rc.local 加入

  Java_HOME=/usr/lib/jvm/Java-6-sun

  CLASSPATH=.:/usr/lib/jvm/Java-6-sun/lib

  JRE_HOME=/usr/lib/jvm/Java-6-sun/jre

  export JRE_HOME

  export CLASSPATH

  export Java_HOME

  /home/allenwei/Tomcat/apache-tomcat-6.0.14/bin/startup.sh //你放tomcat的目录

  修改/etc/profile 输入 gedit /etc/profile,增加以下行:

  Java_HOME=/usr/lib/jvm/Java-6-sun

  CATALINA_HOME=/home/test/Tomcat/apache-tomcat-6.0.14

  export Java_HOME CATALINA_HOME

  重启系统后tomcat就可以随开机启动了

  3、安装mysql

  首先 sudo apt-get install mysql-server mysql-client

  安装完成后输入 sudo /etc/init.d/mysql start 启动mysql

  此时需要修改root的密码

  查看默认密码输入 sudo gedit /etc/mysql/debian.cnf 在[client]段可以看到用户名密码

  输入 mysql -uroot -p 登录,提示输入密码,输入在debian.cnf文件中的密码

  修改密码 输入 GRANT ALL PRIVILEGES ON *.* TO root@localhostIDENTIFIED BY “你要修改的密码”

  此时mysql 的安装完成

  您也可以安装mysql 的图形化管理工具 sudo apt-get mysql-admin mysql-query-browser

  4、eclipse 和 netbeans 的安装就很简单了,从官方网站上下载 deb包,安装即可。 

PHP URL query

十一月 21, 2009 由 tingan

parse_url

<?php
$url 
'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($urlPHP_URL_PATH);
?>

The above example will output:

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
<big><big><b>Http_build_query</b></big></big>
$data = array('foo'=>'bar',
              
'baz'=>'boom',
              
'cow'=>'milk',
              
'php'=>'hypertext processor');

echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
echo http_build_query($data'''&amp;'); // foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor

?>

http_build_url

echo http_build_url("http://user@www.example.com/pub/index.php?a=b#files",
    array(
        
"scheme" => "ftp",
        
"host" => "ftp.example.com",
        
"path" => "files/current/",
        
"query" => "a=c"
    
),
    
HTTP_URL_STRIP_AUTH HTTP_URL_JOIN_PATH HTTP_URL_JOIN_QUERY HTTP_URL_STRIP_FRAGMENT
);
?>

The above example will output:

ftp://ftp.example.com/pub/files/current/?a=b&a=c<br />

Doxygen 使用

十一月 21, 2009 由 tingan

ubuntu中

sudo apt-get install doxygen  doxygen-gui
启动GUI程序
doxywizard

Doxygen formatting conventions

Last modified: October 27, 2009 – 19:12

Doxygen is a documentation generation system. The documentation is extracted directly from the sources, which makes it much easier to keep the documentation consistent with the source code.

There is an excellent Doxygen manual at the Doxygen site. The following notes pertain to the Drupal implementation of Doxygen.

General documentation syntax

To document a block of code, the syntax we use is:

/**
 * Documentation here.
 */

Doxygen will parse any comments located in such a block. Our style is to use as few Doxygen-specific commands as possible, so as to keep the source legible. Any mentions of functions or file names within the documentation will automatically link to the referenced code, so typically no markup need be introduced to produce links.

Text formatting (and API parser conformance)

Doxygen directives

/**<br /> * Summary here; one sentence on one line (even if it exceeds 80 chars).<br /> *<br /> * A more detailed description goes here.<br /> *<br /> * A blank line forms a paragraph. There should be no trailing white-space<br /> * anywhere.<br /> *<br /> * @param $first<br /> *   "@param" is a Doxygen directive to describe a function parameter. Like some<br /> *   other directives, it takes a term/summary on the same line, and a<br /> *   description (this text) indented by 2 spaces on the next line. All<br /> *   descriptive text should wrap at 80 chars.<br /> *   Newlines are NOT supported within directives; if a newline would be before<br /> *   this text, it would be appended to the general description above.<br /> * @param $second<br /> *   There should be no newline between multiple directives of the same type.<br /> *<br /> * @return<br /> *   "@return" is a different Doxygen directive to describe the return value of<br /> *   a function, if there is any.<br /> */<br />

Lists

 * @param $variables<br /> *   An associative array containing:<br /> *   - tags: An array of labels for the controls in the pager:<br /> *     - first: A string to use for the first pager element.<br /> *     - last: A string to use for the last pager element.<br /> *   - element: An optional integer to distinguish between multiple pagers on<br /> *     one page.<br /> *   Any further description - still belonging to the same param.<br /> * This no longer belongs to the param. There should be a newline before this<br /> * paragraph, but it was left out for clarity.<br />

Lists can appear everywhere in Doxygen, but the documentation parser requires to follow a strict syntax to make them appear correctly in the parsed HTML output:

  • The list bullet/hyphen is aligned with (uses the same indentation level as) the paragraph before it, no newline before or after the list.
  • No newlines between list items.
  • Each list item starts with the key, followed by a colon, followed by a space, followed by the key description. The key description starts capitalized.
  • If a list item exceeds 80 chars, it needs to wrap, and the following lines need to be aligned with the key (intended by 2 more spaces).
  • If there should appear text after the list that still belongs to the block before the list, then it uses the same alignment/indentation as the initial text.
  • Again: within a Doxygen directive, blank lines are NOT supported.
  • Lists can appear within lists, and the same rules apply recursively.

Links

/**<br /> * @see foo_bar()<br /> * @see ajax.inc<br /> * @see MyModuleClass<br /> * @see <a href="http://drupal.org/node/1354" title="http://drupal.org/node/1354" rel="nofollow">http://drupal.org/node/1354</a><br /> */<br />

The @see directive may be used to link to (existing) functions, files, or URLs. @see directives should always be placed on an own line.

/**<br /> * See also @link group_name Link text @endlink<br /> */<br />

The @link directive may be used to output a HTML link, but also to link to Doxygen groups that are defined elsewhere via @defgroup.

Documenting files

It is good practice to provide a comment describing what a file does at the start of it. For example:

<?php<br />// $Id: theme.inc,v 1.202 2004/07/08 16:08:21 dries Exp $<br /><br />/**<br /> * @file<br /> * The theme system, which controls the output of Drupal.<br /> *<br /> * The theme system allows for nearly all output of the Drupal system to be<br /> * customized by user themes.<br /> */<br />

The line immediately following the @file directive is a summary that will be shown in the list of all files in the generated documentation. If the line begins with a verb, that verb should be in present tense, e.g., “Handles file uploads.” Further description may follow after a blank PHPDoc line.

In general, @file directives should not contain large descriptions, because those are better placed into @defgroup directives, so developers can look up high-level documentation by reading the “group” topic. See http://api.drupal.org/api/groups for a list of API topics/groups.

To add CVS ID-Tags to your file, add a // $Id$ to your file. CVS will automatically expand it to the format shown above. In the future, you don’t have to care about that as CVS will update these information automatically.

For .install files, the following template is used:

/**<br /> * @file<br /> * Install, update and uninstall functions for the XXX module.<br /> */<br />

Documenting functions

All functions that may be called by other files should be documented; private functions optionally may be documented as well. A function documentation block should immediately precede the declaration of the function itself, like so:

/**<br /> * Verifies the syntax of the given e-mail address.<br /> *<br /> * Empty e-mail addresses are allowed. See RFC 2822 for details.<br /> *<br /> * @param $mail<br /> *   A string containing an email address.<br /> *<br /> * @return<br /> *   TRUE if the address is in a valid format.<br /> */<br />function valid_email_address($mail) {<br />

The first line of the block should contain a brief description of what the function does, limited to 80 characters, and beginning with a verb in the form “Does such and such” (third person, as in “This function does such and such”, rather than second person imperative “Do such and such”). A longer description with usage notes should follow after a blank line, if more explanation is needed. Each parameter should be listed with a @param directive, with a description indented on the following line. After all the parameters, a @return directive should be used to document the return value if there is one. There is a blank line between the @param and @return directives.

Functions that are easily described in one line may omit these directives, as follows:

/**<br /> * Converts an associative array to an anonymous object.<br /> */<br />function array2object($array) {<br />

The parameters and return value must be described within this one-line description in this case.

Documenting hook implementations

Many modules consist largely of hook implementations. If the implementation is rather standard and does not require more explanation than the hook reference provides, a shorthand documentation form may be used:

/**<br /> * Implements hook_help().<br /> */<br />function blog_help($section) {<br />  // ...<br />}<br />

This generates a link to the hook reference, reminds the developer that this is a hook implementation, and avoids having to document parameters and return values that are the same for every implementation of the hook.

Documenting forms

/**<br /> * Form builder for the user login form.<br /> *<br /> * @param $msg<br /> *   The message to display.<br /> *<br /> * @see user_login_form_validate()<br /> * @see user_login_form_submit()<br /> * @ingroup forms<br /> */<br />function user_login_form(&$form_state, $msg = '')<br />

In order to provide a quick reference for themers, we tag all form builder functions so that Doxygen can group them together. The form builder function is defined as any function meant to be used as an argument for drupal_get_form(). To do this, add a grouping instruction to the documentation of the function. Additionally, while submit, validate and other handlers for the form are not meant to be in this group, you should provide a @see to provide an easy reference to handlers that are attached to the form.

/**<br /> * Form validation handler for user_login_form().<br /> *<br /> * @see user_login_form()<br /> * @see user_login_form_submit()<br /> */<br />function user_login_form_validate($form, &$form_state) {<br />  ...<br />}<br /><br />/**<br /> * Form submission handler for user_login_form().<br /> *<br /> * @see user_login_form()<br /> * @see user_login_form_validate()<br /> */<br />function user_login_form_submit($form, &$form_state) {<br />  ...<br />}<br />

Documenting themeable functions

In order to provide a quick reference for theme developers, we tag all themeable functions so that Doxygen can group them on one page. To do this, add a grouping instruction to the documentation of all such functions:

/**<br /> * Formats a query pager.<br /> *<br /> * ...<br /> *<br /> * @ingroup themeable<br /> */<br />function theme_pager($tags = array(), $limit = 10, $element = 0, $attributes = array()) {<br />  ...<br />}<br />

Documenting theme templates

If a template and a preprocess function is used instead of a theming function, an empty function definition of the theme function that is not used should be placed in the contributed documentation (contributions/docs/developer/theme.php).

The template itself should be documented with a @file directive and contain a list of the variables that the template_preprocess_HOOK has prepared for it. If any of these variables contain data that is unsafe to output for XSS reasons, they should be documented; otherwise it can be assumed that variables available have already been appropriately filtered. Anything not listed should not be assumed to be safe to output. It should also contain a @see directive to link back to the preprocessor and the theme_X function.

<?php<br />// $Id$<br /><br />/**<br /> * @file<br /> * Default theme implementation to display a list of forums.<br /> *<br /> * Available variables:<br /> * - $forums: An array of forums to display.<br /> *<br /> * Each $forum in $forums contains:<br /> * - $forum->is_container: Is TRUE if the forum can contain other forums. Is<br /> *   FALSE if the forum can contain only topics.<br /> * - $forum->depth: How deep the forum is in the current hierarchy.<br /> * - $forum->name: The name of the forum.<br /> * - $forum->link: The URL to link to this forum.<br /> * - $forum->description: The description of this forum.<br /> * - $forum->new_topics: True if the forum contains unread posts.<br /> * - $forum->new_url: A URL to the forum's unread posts.<br /> * - $forum->new_text: Text for the above URL which tells how many new posts.<br /> * - $forum->old_topics: A count of posts that have already been read.<br /> * - $forum->num_posts: The total number of posts in the forum.<br /> * - $forum->last_reply: Text representing the last time a forum was posted<br /> *   or commented in.<br /> *<br /> * @see template_preprocess_forum_list()<br /> */<br />

The template_preprocess_HOOK function should also contain appropriate @see directives.

Documenting contributed modules and themes

  • Don’t use @mainpage. There can be only one @mainpage in the contributions repository, which is reserved for an index page of all contributes modules and themes.
  • Use Doxygen Modules (@defgroup, @ingroup, @addtogroup, see “Limitations and hints” below) sparingly. There are currently over 2,200 module directories in contrib, many of them consisting of more than one module. If each of these modules used just one @defgroup, there would be more than 2,200 entries in the global Module list. If each used more than one …
  • If you do use Doxygen Modules, make sure you give them a unique namespace, which would be your module’s name. E.g. @defgroup views ... for the views.module, @defgroup views_ui ... for the views_ui.module. Don’t use group names which are defined in Drupal core (hooks, themeable, file, batch, database, forms, form_api, format, image, validation, search, etc.).

A recommended way of using Doxygen grouping in contributed modules and themes is the following:

/**<br /> * @defgroup example Example module functionality<br /> * @{<br /> * Longer description of your module's API.<br /> */<br /><br />/**<br /> * Load an example.<br /> * ...<br /> */<br />function example_load() ...<br /><br />/**<br /> * Save an example.<br /> * ...<br /> */<br />function example_save() ...<br /><br />/**<br /> * @} End of "defgroup example".<br /> */<br />

This defines the primary Doxygen group. The syntax is @defgroup [internal_name] [Summary]. The internal name has to be prefixed with the module name (unless it is located in Drupal core’s include files).

Other functions in other files (or even entirely different modules) can then declare @ingroup example to put themselves into the same group.

Limitations and hints

Drupal’s Doxygen processing module, api.module, currently only supports a small subset of all Doxygen commands and makes some assumptions about the formatting of the source. Code to be processed by api.module is advised to stick to these conventions.

Api.module currently supports only one of Doxygen’s three grouping mechanisms: Modules (@defgroup, @ingroup, @addtogroup, @{, @}). When using those, please note the following:

  • Modules work at a global level, creating a new page for each group. They should be used only to group functions that provide some kind of API, which possibly spans multiple files. Or the other way round: they should not be used to group functions in a file when these functions are only used in that very file. Thats what Member Groups are for (which unfortunately aren’t supported by api.module yet).
  • @defgroups can be defined only once – trying to define a second @defgroup name with a name already used will result in an error. Use @defgroup name in the “most important” section/file of that group and add to it from other places with @addtogroup / @ingroup.
  • The name in @defgroup name Explaination of that group must be single-word identifier, like a PHP variable or function name. Or, as regular expression: [a-zA-Z_][a-zA-Z0-9_]*. Dots, hyphens, etc. are not allowed.

To see how a real Doxygen processes and displays the current Drupal code documentation (both core and contrib), have a look at ax’ Drupal site. Especially, look at the “doxygen error logs” and help improving Drupals code documentation.

  

Doxygen常用指令介绍

Doxygen注释风格

1 类的申明
/**
*   class declaration
*/

2 变量申明
/**< val’s brief. val’s details1. */

3 函数申明
  /**
  * a normal member taking two arguments and returning an integer value.
  * @param a an integer argument.
  * @param s a constant character pointer.
  * @see Test()
  * @see ~Test()
  * @see testMeToo()
  * @see publicVar()
  * @return The test results
  */

 
@file
档案的批注说明。
@author
作者的信息
@brief
用于class function的简易说明
eg
@brief 本函数负责打印错误信息串
@param
主要用于函数说明中,后面接参数的名字,然后再接关于该参数的说明
@return
描述该函数的返回值情况
eg:
@return 本函数返回执行结果,若成功则返回TRUE,否则返回FLASE
@retval
描述返回值类型
eg:
@retval NULL 空字符串。
@retval !NULL 非空字符串。
注解
@attention
注意
@warning
警告信息
@enum
引用了某个枚举,Doxygen会在该枚举处产生一个链接
eg
@enum CTest::MyEnum
@var
引用了某个变量,Doxygen会在该枚举处产生一个链接
eg
@var CTest::m_FileKey
@class
引用某个类,
格式:@class <name> [<header-file>] [<header-name>]
eg:
@class CTest “inc/class.h”
@exception
可能产生的异常描述
eg:
@exception 本函数执行可能会产生超出范围的异常

Insert figure in Latex

十一月 21, 2009 由 tingan

psfig

Example:

\noindent
\psfig{file=fig1.eps,width=\textwidth}
\noindent{{\bfseries Fig.~1} \ Example of the interesting object for which
we aim to obtain near-IR $J$ and $H$ surface photometry.}

Note that in this example, we did not use a \begin{figure}\end{figure} environment. If you happen to have an EPS file in which the figure was in landscape orientation, then you can add an angle option as follows: <br />

$\backslash$psfig{file=fig1.eps,width=$\backslash$textwidth,angle=-90}

$\backslash$epsfig

Example:

\null<br />\newcommand{\txw}{\textwidth}<br />\begin{figure}[t!]<br />\mbox{<br />   \epsfig{file=fig1a.eps,width=0.325\txw,clip=}<br />   \epsfig{file=fig1b.eps,width=0.325\txw,clip=}<br />   \epsfig{file=fig1c.eps,width=0.325\txw,clip=}<br />}\par<br />\mbox{<br />   \epsfig{file=fig1d.eps,width=0.325\txw,clip=}<br />   \epsfig{file=fig1e.eps,width=0.325\txw,clip=}<br />   \makebox[0.325\txw]{\rule{0pt}{0.325\txw}}   <br />}<br />\caption{{\sc Figure~1} Five out of six ain't bad.}<br />\end{figure}<br />\vfill\clearpage<br />

Example of a full page, multi-panel figure. Five panels contain a figure, while the sixth was filled with a phantom space of the same width and height as the other panels. All sizes are expressed as a fraction of the current textwidth. Should that at some point change, then the figures will automatically scale with that change. There is an empty clip= option in the \epsfig commands. Should an EPS figure have been produced with copious amounts of white space around the area of interest or should you happen to have a PS instead of EPS file (i.e, without a %BoundingBox statement), then a new BoundingBox may be specified, e.g.:clip="[92 345 538 742]"

8.6.2 $\backslash$plotone, $\backslash$plottwo, and $\backslash$plotfiddle

Example:

begin{figure} <br />    \epsscale{0.85}<br />    \plotone{sample.eps}<br />    \caption{Sample figure showing important results.}<br />\end{figure}<br />

\begin{figure}<br />\plottwo{fig2a.eps}{fig2b.eps}<br />\caption{{\sc Fig.~2} (\emph{a}) field surrounding target \#1; (\emph{b})<br />   detail of the inner 70~kpc.\label{targetfov}}<br />\end{figure}<br />

If you need to rotate or make other transformations to a figure, you may use the \plotfiddle command:

\plotfiddle{PSFILE}{VSIZE}{ROTANG}{HSCALE}{VSCALE}{HTRANS}{VTRANS}<br />\plotfiddle{sample.eps}{2.6in}{-90.}{32.}{32.}{-250}{225}<br />

$\backslash$includegraphics

Example:

\begin{figure} \resizebox{\textwidth}{!} {\includegraphics[bb=10 20 100 300,clip,angle=-90,width=\textwidth]{empty.eps} \caption{Mostly empty field, demonstrating the need for a larger-aperture telescope and high-throughput camera.} \label{FigEmpty} \end{figure}