浅谈Delphi如何控制Excel操作

    1 创建Excel文件
  要在Delphi中控制Excel,就必须用到OLE自动化。现在一般采用OLE2来创建OLE对象,当激活一个OLE对象时,服务器程序仅在容器程序内部激活,这就是所谓的“就地激活”(in-place activation)。

  创建Excel文件时,先创建一个OLE对象,然后在对象中建立工作表worksheet,如函数createExcel所示:

  function createExcel:variant;

  var

  v:variant;

  sheet:variant;

  begin

  v:=createoleobject(‘Excel.Application’);//创建OLE对象

  v.visible:=true;

  v.workbooks.add(-4167); //添加工作表

  v.workbooks[1].sheets[1].name:=’test’;

  sheet:=v.workbooks[1].sheets[‘test’];

  return v;

  end;

  2 数据表格控制

  Excel表格的控制,主要包括数据的导入、修改;单元格的合并、边框的控制;表格的复制、粘贴等。当报表格式一定的情况下,表格的复制、粘贴显得尤为重要,这样,可以先制作一个文件模板,然后按照实际需要输出多页报表即可。

  (1)数据的导入(importData)

  procedure importData;

  var

  I,j:integer;

  v:variant;

  begin

  v:=createExcel; //创建Excel文件test

  for I:=0 to maxcolumn do

  begin

  for j:=0 to maxrow do

  v.workbooks[1].sheets[1].cells[I,j]:=I*j; //导入数据

  end;

  end;

  (2)单元格的合并、边框的控制(lineStylecontrol)

  单元格的合并,是在选定合并范围的情况下进行的。边框控制可以操作边框线条的是否显示。其他方式的控制,可以仿照下面过程进行。

  procedure lineStylecontrol;

  var

  v,sheet,range:variant;

  begin

  v:=createExecl;

  sheet:= v.workbooks[1].sheets[1];

  range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];//选定表格

  range.select;

  range.merge; //合并单元格

  range.borders.linestyle:=xlcontinuous; //置边框线可见

  range.font.size:=9; //改变表格内文本字体大小

  end;

在Linux下安装、汉化Bugzilla

今天浏览以前论坛中的文章,顺摘录一些。此文虽老,但仍有参考价值。此文原为RD室已毕业学生hatasun撰写。我们现在使用的bugzilla也是他先安装部署的,感谢hatasun。

——————————————–

Bubzilla的自带文档提供了详细的安装指南,但在实际安装过程中还是会遇到各种各样的问题。本文主要介绍了在RH8.0的Linux环境下安装Bugzilla的步骤和汉化方法。前提是已经安装rpm的perl、mysql、apache和sendmail,且服务器有可用的完整域名。
1、解压
将下载的bugzilla-2.16.2.tar.gz包放到一个可写的目录下,解压:
$tar xfz bugzilla-2.16.2.tar.gz
得到一个bugzilla-2.16.2目录,改名为bugzilla.
2、配置perl
由于默认的perl安装包缺少一些bugzilla需要的模块,所以需要补充一些模块,最好是在线进行,不要一个一个的自己安装。以root身份运行在联网情况下用以下命令安装所需的最少perl模块:
perl -MCPAN -e ‘install “Bundle::Bugzilla”‘
另外还有有些可选的模块
perl -MCPAN -e ‘install “Template”‘ (安装时它会提示一堆问题,推荐安装)
perl -MCPAN -e’install “LDS/GD-1.19.tar.gz”‘ (make test时候没有成功返回,所以自动不安装)
perl -MCPAN -e’install “N/NI/NINJAZ/Chart-0.99b.tar.gz”‘ (make test时候没有成功返回,所以自动不安装)
3、配置apache(版本2.0.40)
rpm包安装的apache和手动安装的tar.gz包有些路径上的差异,自己按照情况修改。
在apache的配置文件/etc/httpd/conf/httpd.conf中检查一句话,以执行cgi和perl程序:
AddHandler cgi-script .cgi .pl
然后建立虚拟路径,使得在浏览器上用http://servername/bugzilla/路径来访问你的bugzilla
Alias /bugzilla/ “/var/www/bugzilla/” #/var/www是apache的存放网上数据文件的目录
在文件末尾加上存放bugzilla文件(.html .cgi)的目录配置语句:
<Directory “/var/www/bugzilla”>
Options +ExecCGI
AllowOverride Limit
Allow from from all
</Directory>
4、配置mysql数据库(版本3.23.52)
准备用bugs用户来管理bugzilla在mysql中创建的bugs数据库,这个bugs用户和unix系统用户没关系。默认情况下,第一次启动mysql数据库后(怎样启动请参考mysql文档)以root用户名进入(这个root和unix环境系统用户root没关系,这个root是mysql的管理员帐户)。
bash$ mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(‘<new_password’>) WHERE user=’root’;
mysql> FLUSH PRIVILEGES;
这样,为root用户设定了<new_password>管理员密码。然后,以这个管理员身份为mysql创建bugs用户,并为它建立对bugs数据库(目前还没建立)的权限:
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, ALTER,CREATE,DROP,REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY ‘<bugs_password>’;
mysql> FLUSH PRIVILEGES;
这样,bugs用户下次就可以以<bugs_password>密码登陆mysql数据库(本地登陆),对bugs数据库进行管理了。但目前mysql中还没有bugs数据库,这个数据库由后面的执行程序自动创建。
5、配置bugzilla,以root身份
(1)把整个解压bugzilla的目录下的文件移动到/var/www/bugzilla目录下
$cp -R * /var/www/bugzilla/
$cd /var/www
$chown -R nobody.nobody ./bugzilla
最后一句是修改了bugzilla目录的访问权限为nobody.nobody,这是apache的网上用户访问的权限,可以按照自己系统的设置作相应改变。
(2)在/var/www/bugzilla目录下运行:
$perl -pi -e ‘s@#!/usr/bonsaitools/bin/perl@#!/usr/bin/perl@’ *cgi *pl Bug.pm processmail syncshadowdb
它修改了所有文件中应用perl运行程序的路径为/usr/bin/perl,而默认的不是这样。
(3)启动mysql数据库(第一次的时候运行:/etc/rc.d/init.d/mysqld restart 会初始化数据库)
以后启动可以用 /etc/rc.d/init.d/mysqld start -O max_allowed_packet=1M
选项表示可以保存小于1M的附件,而默认的是64k,有时候太小。
(4)运行bugzilla解压后的目录下的check.pl程序,执行程序进行初始化工作,它确定mysql数据库和其他选项与bugzilla的CGI程序相一致,并且建立数据目录,创建bugs数据库:
$ ./checksetup.pl
第一次运行时有时候会提示缺少某些optional的模块,如果不需要这些可选的功能,可跳过。
然后会提示bugs@localhost用户没有权限连接mysql数据库,并停止。
这时,编辑当前目录下生成的一个新文件,叫“localconfig”文件,是一些配置信息,需要自己进一步修改,按照自己的系统来修改一些参数,如webservergroup,它是apache访问用户的默认组名称,我的为nobody。其他主要的需要修改的是:
$db_host = “localhost”; # 数据库是本地还是其他服务器上,默认是本地,即和bugzilla是同一台服务器上
$db_name = “bugs”; # 保存bugzilla数据的数据库名称,默认是bugs
$db_user = “bugs”; # 管理这个数据库的mysql用户名称,可以自己选,现在为bugs
$db_pass = “****”; # bugs数据库的访问密码,即创建bugs用户时输入的密码,默认为空,填入即可。
其他的一般没什么改变,默认的就行。
再次运行check.pl程序,应该正常运行,连接mysql,创建bugs数据库和相关表。
这时会提示说第一次运行bugzilla,输入管理员的email地址,姓名,并创建一个密码,即bugzilla的管理员密码。
(5)安装好后要进行配置,开启apache和mysql,进入http://server_name/bugzilla/editparams.cgi,(需要bugzilla管理员身份)
修改urlbase为http://159.226.2.132/bugzilla/
其他选项可以按照说明做相应修改,默认的一般可以了。
6、关于访问权限:
有时候如果按照上述方法安装后,访问http://159.226.2.132/bugzilla/index.cgi会出现无权访问页面的问题。
解决:把httpd.conf 中的
User ××××
Group ××××
改为
User nobody
User nobody
这样把apache的访问用户都设为了nobody。(这可能会影响其他的apache下的程序,修改前可以询问apache的管理员。反正就是要让/var/www/bugzilla的访问用户权限和apache的访问用户权限一样。
然后执行
$cd /var/www
$chown -R nobody.nobody ./bugzilla
把/var/www/bugzilla目录及其下文件权限全改为nobody.nobody方能解决访问权限问题。
7、启动sendmail服务。如果默认安装的sendmail服务器,就启动sendmail服务,这样bugzilla就可以利用mail服务来进行一些登记注册、发消息等服务了。前提是此服务器有完整的域名。
8、汉化
现在,bugzilla应该就可以用了,用http://server_name/bugzilla/index.cgi 看到bugzilla的界面,但是现在只能是英文环境,不能提交/查看中文的bug帖子,看到的是乱码,界面也是全英文的,比较别扭。下面,我们来进行一些汉化工作,除非你决定就用英文的了。
(1)网上能找到的最新汉化包是在sourcforge上,由侯光敏制作的汉化模板(bugzilla提供界面模板的工具,估计这个汉化模板就是利用这个模板工具制作的),地址是http://sourceforge.net/projects/bugzilla-cn/ 那里可以下载最新的bugzilla-2.16-cn-1.0.tar.gz包,它对bugzilla界面做了几乎完全的汉化(自称90%)。
(2)解压包生成一个template目录,进去后有一个cn目录
$tar xfz bugzilla-2.16-cn-1.0.tar.gz
$cd template
现在,可以把这个cn目录移到/var/www/bugzilla/template/目录下,和默认得en目录并列,也可以在/var/www/bugzilla/template/en/目录下自己创建一个custom目录,然后把cn目录下的所有文件和目录移到custom目录下,这样,启动bugzilla后,这个目录下的内容会覆盖和custom目录并列的默认default目录下的文件内容(第二种方式是按照bugzilla的说明文档进行的,是添加一种模板的方法,替换系统默认的英文模板,但又不破坏原有的文件)。记得和以前一样,修改新加入的文件的访问权限为nobody.nobody。
(3)现在你可以用浏览器访问bugzilla了,但是默认情况下,浏览器会自动使用ISO-8859字符集,而不是gb2312,虽然汉化模板中对每个生成的页面都在源码的meta字段中指定了charset=gb2312,但似乎不能被浏览器识别使用,非得手动修改每个页面的字符集为gb2312后才能看到漂亮的简体中文。这是因为汉化模板只是更改了文字的内容,但没有让浏览器识别成中文字符,而默认的bugzilla生成的都是ISO-8859-1西欧字符集,所以浏览器把中文内容当成西欧字符进行显示,所以呈现乱码。现在要做的是强制生成带“指定中文字符集”的页面。
(4)参阅bugzilla自带的文档说明后发现,可以用一个命令:
$perl -pi -e “s/Content-Type: text/html/Content-Type: text/html; charset=gb2312/i” *.cgi *.pl
在/var/www/bugzilla目录下执行,它的作用是对当前目录下的所有cgi,perl程序中的
Content-Type: text/html
都替换为:
Content-Type: text/html; charset=gb2312
这样就强制cgi和perl程序动态生成页面的时候加上指定字符集gb2312的tag,用户的浏览器就能识别出中文了,否则,汉化模板生成的中文被浏览器识别为ISO-8859的西欧文字出现乱码现象。
但有些动态页面生成的时候,cgi代码中不是”Content-Type: text/html”,故上述命令不能对这些cgi程序奏效,所以要手动修改,目前发现的是enter_bug.cgi程序,把倒数第三行改为
print “Content-type: $format->{‘contenttype’}; charset=gb2312nn”;
即加上了charset=2312的标签,生成的页面就会被浏览器识别为中文字符集。
9、最后
bugzilla允许对界面进行一些用户自己的定制,比如修改页面底部的说明文字等等,在template中修改就可以了(2.16版本以后的新特性),详细内容可参考bugzilla的主页http://bugziila.mozilla.org。
现在看看页面,是不是都变成漂亮的中文了?

[转自]在Linux下安装、汉化Bugzilla–白日梦

7 种流行 PHP IDE 的比较(转)

转自:IBM 开发者社区

级别: 中级

Jack Herrington (jherr@pobox.com), 高级软件工程师, Code Generation Network

2006 年 12 月 28 日

发掘集成开发环境(IDE)的所有用途,并比较 7 种流行的 IDE 的成本和优势。

编写关于 PHP 的系列文章让我更加深刻地了解了 PHP 开发人员的世界。我和许多 PHP 程序员交谈过,最令我惊奇的是只有很少的人使用 IDE。大多数程序员使用文本编辑器,比如 Microsoft® Windows® 上的记事本、Emacs 或者 Vim。

我提到的这些文本编辑器(以及我没提到)都是很不错的 —— 我不想讨论哪个编辑器更好。但是,我要强调的是不使用文本编辑器会使您对 PHP 代码有更深的见解。几乎所有人都将 PHP 项目视为只不过是文件目录而已(这种看法十分片面)。现在就让我带您进入 IDE 的世界,向您展示 IDE 能够 —— 或者应该 —— 给您带来什么,并向您介绍七个最流行的 IDE。

什么是 IDE?

简而言之,IDE 为编码工作提供了一站式服务。IDE 包括一个编辑器,在此编辑器内可以编辑代码、调试代码、在浏览器(通常是嵌入式的)中查看代码和签入和签出源码控制。为了支持这些功能,IDE 拥有一套在基本编辑器(比如记事本或者 Vim)中所找不到的特性。当然,您可以通过扩展编辑器来实现这些功能,但是 IDE 在一个精简软件包中囊括了所有这些功能 —— 并都已预配置:

项目

IDE 的一个关键特性是它把一个 PHP 应用程序看作是一个项目,而不仅仅是一组文件。这个概念 —— 项目 —— 维护额外的信息,比如源码控制的配置、用于调试的数据库设置,以及某一关键目录所在位置。
调试

另一个方便的特性是集成调试。使用这个功能,可以在编辑器中设置断点,当 PHP 解释程序执行到这个脚本时就会停止。从断点开始,就可以检查局部变量的值,在代码中诊断问题。在代码中可以使用 echo 语句来检查值或者也可以使用错误日志获得变量的值。
代码智能

PHP 是一种非常规则的编程语言,这意味着它遵循着简单的模式。这些模式不仅使代码易于编写,也使 IDE 在项目中检查代码变得很容易。此外,它们可以通过显示检查结果帮助您编写程序。例如,如果在项目中定义了一个名为 MyClass 的类,在键入关键词 new 时,IDE 会立即提供一个包括 MyClass 作为选项的弹出窗口。当使用那种类型的对象时,IDE 就会显示它的可用方法和实例变量。当开始键入一个函数命令时,IDE 就会显示它的可用参数。公正地说,这是应该使用 IDE 而不是文本编辑器的首要原因。这种代码智能可以有效减少敲错类名、方法名和参数。
类视图

IDE 中的代码智能引擎产生的另一个作用是 IDE 可以产生项目的 类视图。系统不是显示文件,而是显示已经定义的不同的类,而不管它们所在的文件。当单击类时,编辑器访问相应文件并显示相应类、方法或者实例变量。这在大项目中是一种非常好的导航方法。
多语言支持

这里提到的每种 IDE 不仅支持 PHP 而且支持相关语言集:JavaScript、Structured Query Language(SQL)、Hypertext Markup Language(HTML)和 Cascading Style Sheets(CSS)。因为 HTML 和 CSS 比较简单,所以 IDE 对它们的支持是最好的。对于 JavaScript 的支持经常会突出语法,但是支持比不支持要好。
源码控制

这里评价的所有 IDE 都支持一些与源码控制系统的连接,允许随着时间维护项目中的文件版本。可以标记文件的特别版本为发布版本,这样在需要撤销改动的时候就可以恢复。在团队环境中使用源码控制系统是很关键的,即使对于个人使用也很重要。当磁盘瘫痪或者客户突然想要以前的版本而不是现在的版本的时候,一个好的源码控制系统就可以发挥作用了。大多数的 IDE 都支持 Concurrent Version System (CVS) 和 Subversion,它们都是开源控制系统。其中一种 IDE 支持 Perforce —— 一款商业源码控制系统。
FTP/SFTP 集成

与源码控制相关的一种功能是在服务器中对于最新的代码使用 FTP 。这比使用 FTP 客户机或者自己打包文件并发送给服务器然后再解包要容易许多。
数据库导航

一个非基本但十分有用的特性是数据库导航。使用这个特性,可以浏览应用程序访问的数据库、找到表格和字段名并返回查询结果。一些系统甚至可以自动写入一些数据库访问代码。
集成 Web 浏览器

一些 IDE 支持集成 Web 浏览器,可以直接导航到正在使用指定的附加参数编辑的页面,这个浏览器可以宿主在 IDE 内,也可以外部调用。诚实地讲,我并不大喜欢集成浏览器,因为我不介意在编辑代码和查看结果这两个独立的应用程序之间切换。但是我知道它确实有一定的作用,但您不必一定要使用它。
片段

在所有这些 IDE 中我发现的最后一个特性是对于整段和定制代码片段的支持。片段 是完成小任务(比如在一些输入中运行常规表达式、连接到数据库和查询数据库)的小部分代码。

以上总结了目前从购买的或者开源的 IDE 中可以预期的核心特性。接下来,将会介绍一些流行的 IDE,展示一些 IDE 图片,并将解释它们所支持的功能及其成本。



回页首

Eclipse

在 Eclipse 开发平台中有两个插件支持 PHP。第一个 PHP IDE 项目是 Eclipse Foundation 项目,这意味着它在 Eclipse 许可范围内发布,并使用 Eclipse Foundation 工具和方法开发。

另一个是 PHPEclipse,它是独立开发的。因为使用 Eclipse,所以这两个插件都可以在三大操作系统中运行:Windows、Linux® 和 Mac OS X。您可以只下载这两个插件(如果已经使用 Eclipse),或者下载包含所需要的全部内容的 pre-fab 版本。

这两个插件都支持核心 IDE 特性。特别是代码智能特性,它十分强大,可以在需要的时候弹出并显示所有需要的类、方法和参数信息。

图 1 显示了 Mac OS X 上运行的 PHPEclipse。左边是在项目中文件的项目视图。下面是类视图,显示所有已经定义的类。中间是代码。可以同时在多个选项卡中打开多个文件。右边是调试和浏览的面板。这是常用的 PHPEclipse 用户界面。

图 1. OS X 上的 PHPEclipse
OS X 上的 PHPEclipse

图 2 显示了来自 Eclipse Foundation 的 PHP IDE 项目插件。

图 2. OS X 上的 PHP IDE 项目
OS X 上的 PHP IDE 项目

如果您不能看出区别,没有关系。这两个插件看起来确实非常类似,因为它们都依靠 Eclipse 平台呈现代码浏览和智能特性。Eclipse 插件 GUI 能够保持连贯性是件很好的事情。

我没有发现哪一个插件可以把您锁定在某一个 Eclipse 项目中。您可以经常地将一个插件换成另一个插件。在我有限的测试中,我更喜欢 PHP IDE 项目插件,因为我感觉它集成得更好,而且代码智能特性的性能似乎更快捷。试试这两个插件,看看您更喜欢哪一个。

这两个插件的缺点是 UI 不是为 PHP 量身订做的,原因是 Eclipse 可以用于几乎所有的编程语言。结果是,Eclipse 的术语最初有些另类。如果您刚开始学习 Eclipse,那么这些插件的学习比其他 IDE 更难一些。但是,如果已经了解 Eclipse,那么您就能比较快地熟悉 PHPEclipse 或者 PHP IDE 项目。

Eclipse 和这些插件的最大优点是什么?它们是免费的,而且稳定、可靠。哦,我提到它们是免费的吗?



回页首

Komodo

下一个要介绍的是 ActiveState 的 Komodo IDE。这个 IDE 在 Windows、Mac OS X 和 Linux 上运行,并支持通用的开源语言 —— Perl、PHP 和 Ruby。代码智能引擎非常可靠。它扫描所有语言安装找到定制扩展,比如 PEAR 模块。在项目方面,它支持与 CVS、Subversion 和 Perforce 的集成,也允许直接向服务器 FTP 传递代码。

图 3 显示了在 Windows 上运行的 Komodo。左边是类视图,右边是项目视图。中间的主要部分是代码视图。下面是调试用的断点、命令输出等等。对于所有这些系统,都可以根据需要定制 UI 。

图 3. 在 Windows 上运行的 Komodo
在 Windows 上运行的 Komodo

Komodo 是一个商业产品。在我写作本文的时候,这款 IDE 有个人版(US$29.95)和专业版(US$299.95)两个版本可选。它的一个独特的特性是常规表达式调试器。不管您是常规表达式的新手还是已经开始涉足高级常规表达式特性,这点购买的投入都是很值得的。

它的缺点是没有数据库集成(至少我没有找到),而且我还遇到了代码智能不总是在想要的时候弹出的小问题。但是,总的来说,Komodo 还堪称是一款健壮的、特色丰富的、可靠的 PHP IDE。



回页首

PHP 设计器

PHP 设计器与其他 IDE 不太相同。当然,它支持有限的代码智能。但是,它更集中于 PHP Web 应用程序的设计方面。这一点在其集成的浏览器上可见一斑,该浏览器特别地采用了像素标尺用于帮助在页面上定位元素。

图 4 显示了运行的 PHP 设计器。

图 4. 在 Windows 上的 PHP 设计器
在 Windows 上的 PHP 设计器

PHP 设计器中的 PHP 的代码智能和调试特性不是很显著,而对 HTML、CSS 和 JavaScript 的代码智能支持上要相对更强一些。PHP 设计器介于程序员使用的 IDE (主要侧重于代码)和 Adobe Dreamweaver (更侧重于设计)之间。如果您正在寻找这类中间产品,那么 PHP 设计器很值得考虑,因为 IDE 对于个人使用是免费的,而其专业版也只需 US$55。



回页首

PhpED

NuSphere 的只用于 Windows 的 PhpED 在所有这里介绍的 IDE 中特性是最丰富的。它有一个很好的内部调试器,并为了更容易地访问页面调试而把调试工具条放到了 Microsoft Internet Explorer®之内。

图 5 显示了在 Windows 中使用 PHPEd 开发 PHP 应用程序。在最左边是项目的文件视图。右边紧挨着的是类视图,最右边是代码视图。下面是输出状态。您可能已经注意到,所有这些 IDE 都遵循着相同的基本设计风格。

图 5. 在 Windows 中的 PhpED
在 Windows 中的 PhpED

PhpED 的突出特性包括一个很棒的调试器、优秀的数据库访问、较好的代码智能特性以及集成的 PHP 帮助。PhpED 的价格范围从基础版本的 US$119 到专业版本的 US$495。另外还有试用版本可用。



回页首

PHPEdit

来自 WaterProof Software 的 PHPEdit 感觉像是应用于 PHP 的 Microsoft msdev 环境 —— 这是个不错的事情。PHPEdit 是仅用于 Windows 的 IDE,很容易设置。它甚至还有 PHP 的版本。在 PHP、CSS 和 HTML 的代码智能方面它做得很好,但是却不提供对 JavaScript 的代码智能的支持。图 6 显示了运行的 PHPEdit。

图 6. 在 Windows 中的 PHPEdit
在 Windows 中的 PHPEdit

为了便于部署,PHPEdit 可以连接到 CVS 和 Subversion,以及 FTP 和它自己专有的 ezDeployment 系统。除了代码智能特性,为了加速开发,这款 IDE 有一个极好的代码示例整体模板库,您还可以向库里面添加内容。PHPEdit 的评估版本可以免费使用,要得到正式版本,需要 US$89。



回页首

Zend Studio

最后,我们谈谈 Zend Studio,它被最后列出只是因为它以 Z 开头。它可能应该是您第一个想到的。为什么?因为它来自 Zend —— PHP 幕后的精英团队。 而且它真的是很不错。它运行于三大系统:Windows、Mac OS X 和 Linux。而且绝对能够提供您所需要的一切:PHP V4、PHP V5 等等。它的下载需要花很长时间,但是非常值得。

作为 IDE,Zend Studio 是最好的。它提供所有想在内置库和定制代码中拥有的代码智能特性。它还有非常好的调试功能,而且极易设置。要把代码放到存储库(repository)中,Zend Studio 会连接到 CVS 和 Subversion。要把代码放到服务器上,有集成 FTP 可以使用。Zend Studio 非常适合 Macintosh,如图 7 所示。

图 7. 在 Mac 上的 Zend Studio
在 Mac 上的 Zend Studio

在其他一些 IDE 中,代码片段是内置的以使代码编制更为容易。这款 IDE 也直接集成了数据库以给出可用的表格和字段。

Zend Studio 的标准版需要 US$99,专业版需要 US$299。我在这里提到的某些特性在标准版本中没有包含。Zend Studio 试用版本可以免费使用。



回页首

结束语

有许多极好的 IDE 可供选择 —— 其中一些甚至是免费的 —— 您尽可以选择一个试用一下,如果您是专业人员,就更应如此。您可能需要支付公司或者个人的顾问费用,也可能要花钱购买必需的商品。如果考虑使用 echo 调试代码对比使用集成的调试器所花费的时间,IDE 的购买价格绝对会物有所值。

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文
  • 对于 PHP 开发人员, PHP.net 是个很好的资源。
  • 要获得学习使用 PHP 编程的一系列 developerWorks 教程,请参阅 “学习 PHP” 系列。
  • 访问 IBM developerWorks 的 PHP 项目资源,了解 PHP 的更多信息。
  • 随时关注 developerWorks 技术事件和网络广播
  • 查阅最近将在全球举办的面向 IBM 开放源码开发人员的会议、展览、网络广播和其他 活动
  • 访问 developerWorks Open source 专区,获得广泛的 how-to 信息、工具和项目更新,帮助您使用开放源码技术进行开发,并将其与 IBM 的产品相结合。
  • 要收听针对软件开发人员的有趣访谈和讨论,一定要访问 developerWorks podcasts

获得产品和技术

讨论

关于作者

Jack Herrington 是一名有着 20 余年经验的工程师,现在是 Code Generation Network 的总编。他撰写了 Code Generation in Action 一书。可以通过 jack_d_herrington@codegeneration.net 与他联系。

Becky!使用问题集

★★问题1:旧邮件问题:

我拥有15个email地址,每天都有大量邮件,所以每过4个月要将邮件定期归档,备份到另外的硬盘或光盘,删除原来的所有邮件 (否则占用c :盘或d:盘空间太大)。但是有时我又要查看原来的旧邮件,需要切换到旧历史邮箱目录,查看旧邮件,看完后再切换回来到当前邮件 目录。o utlook可以通过修改注册表里的邮箱路径达到这种目的,但是帐号信息没法备份。

用becky的old mails arrangement插件,完全可解决你的问题。它能自定义多种条件对旧邮件归并,移动,删除,备份,完全不用你手工干预,这 是becky的一个很重要的插件,有汉化版

★★问题2:安全性问题:

我发现foxmail和becky都有本地安全性问题,别人很容易破解密码或用别的方法看到我的私人邮件,但登录网上邮箱太慢了 ,广告也多。
—-
becky的远程管理看正文功能(这是所有邮件程序中becky独有的)可以解决这个安全性的问题,它让你象web登录一样看自 己的邮件,但比真正的w eb登录快,简单。也不用看这么多的广告。
具体做法:
1.在公用的电脑设好基本信息,比如pop服务器,和你的登录用户名,密码不要填!
2.点击远程管理,会出来一个登录框,要你填密码,把你的密码填上
3.这时出来你的远程邮箱的邮件列表,双击你想看的邮件标题就可看邮件正文了。
以后就更简单了,远程管理–双击–完成,你说是不是比web登录快了好多?
关掉远程管理,你的邮件信息也就消失了,别人无比看到,你说,在公用电脑上用,是不是很安全呢?(和web登录的安全性基本是一 样的)

★★问题3:附件问题

我的收到的邮件经常有好多附件(比如图片,文档,小软件)要处理,但手工删除、复制或移动它们太麻烦了,累积下来有好多的历史邮 件附件,能不能象资源管理器一样管理它们?
—-
有大量附件要处理,建议你用becky的附件管理器插件,它能把你邮件中的所有附件单独抽取出来,一目了然,可删除,移动,复制 ;可按时间,附件类型、大小排序,象资源管理器一样管理你的所有附件,非常方便,它也有汉化版

★★问题4.多朋友邮件处理和多账户切换(象oe的多账户发送处理方式)

因为我的工作需要,所以必须处理多个单位的不同信箱,如果建立很多账号的话,实在是很麻烦的!!而且只有我一个人建立那么多的账 号,太麻烦了!!能不能在一个账号里,就可以管理多个e mail的pop3和smtp,同时在发信或回复的时候能够选择不同的账号,比如不同的账号对不同的人?这样对于有很多emai l的用户来说是很方便的!!
—-
becky完全能满足你的需要,你可在becky的一个信箱下建立多个文件夹,比如7个,对应你的7个朋友,每一个文件夹你都可 自定义不同的回复地址,不同的收信地址,不同的模版,不同的个人名称和邮件地址。这是b ecky的一个重要特点:文件夹属性。
比如你有一个网友是candy,另外你有一个同事是john。对candy来说,你的身份是“bricex”,对john来说你 是“zhongli”,当你要发信给c andy,只要把鼠标放在candy的那个文件夹,点“撰写新邮件”,这时出来的新邮件的收信人会自动填为是candy的邮件地 址,邮件模板也是她的模板,同时你的个人信息相应就是b ricex。发给john也一样。
做法很简单,你就在becky邮箱账号下为你的朋友建多个文件夹,然后在这些文件夹点右键,你就能设定相应的内容了。
如果不用文件夹属性来处理,你也可直接在“新邮件”窗口用“switch mailbox”功能直接切换你的发信身份。这样的处理是和oe一样的,但比oe的更强大,灵活,因为becky不仅可切换发送 者,签名,smtp都可切换,非常方便。

★★问题5.文本块选

我的朋友给我发了一些代理服务器如下,我想导入代理猎手,但要手工把前面的空格和序号消掉,太麻烦了。
1. 202.39.13.162:1011
2. 202.39.21.157:1011
3. 200.75.42.3:80
4. 209.81.14.147:81
5. 193.188.97.151:8080
6. 202.39.21.148:6810
—-
becky完全可便利你的工作,它有一个文件块选功能,可垂直选文本,选中间部分点右键“开始块选”,复制,再打开“新邮件”窗 口,用“特别复制/ 粘贴”->“粘贴块选”就行了,比如你只块选
202.39.13.162:1011
202.39.21.157:1011
200.75.42.3:80
209.81.14.147:81
193.188.97.151:8080
202.39.21.148:6810
这个部分,不用再手工删除1.2.3.这些序号,方便多了。

★★问题6:那里下载你说的这么棒的插件,如何安装?

这里有最全的becky插件: http://www.excite.co.jp/world/url/body?wb_url=http%3A%2F%2Fm ao.udn.ne.jp%2Fb2pin%2Fplugins.html&wb_lp=JAEN&wb_dis=2
安装插件非常容易,把下载下来的文件,解压到becky的plugins目录就行了,或者直接运行exe文件,它会有提示的。所 有的插件在安装后必须重新启动 Becky!。第一次从新启动 Becky! 时,Becky! 将提示是否使用此插件。你必须选择 Yes,否则你的插件将无法工作。。

★★问题7:如何在Becky中如何方便地显示、阅读html邮件?

becky的一个很方便之处就是引进了“标签”的做法,比如这个阅读html邮件问题。把鼠标移动到邮件阅读窗的最下方,会自动 出来一个h tml标签,点击就可。如果要缺省显示html,在一般设置中设置为html优先显示。如果你已经设为html优先显示,也可用 同样的方法来显示t xt文本。becky缺省的处理方式是text优先。
becky对html的处理有3种选项,一是把所有的html转换为text文本;二是利用ie的部件来显示,这时你也可同时禁 用html中的有害script 或总是先显示html方式;三是直接显示html源码。

★★问题8:重装系统后会不会丢失设置和信件

重装系统后信件绝对不会丢失(只要你不把它删除), 重装系统后把数据文件夹改为你放信的目录就行。 但一些设置是写在注册表里的,它没有放在邮件数据文件夹中,不过现在有个插件很方便可自动备份你的所有becky的设置(在br uce主页下载),用b ecky最痛苦的事,就是复杂的设置,现在很简单了。

★★问题9:文本地址本的导入问题

我已经试用了becky。但是发现一个问题:她的地址簿导入功能好像很弱啊,不能直接导入oe,用文本却出现错误(e-mail 地址等都到姓名里面去了),难道没有这方面的插件吗?
—-
呵呵,这个错误是你造成的。有没有注意到“文本内容”对话框里,有”email地址”、“部门”、“姓名”等带勾选框的项目?下 面还有“上”“下”两个按钮,是用来移动上述项目的顺序的。你必须根据你的文本的内容,勾选相应的项目,用“上”“下”按钮排好 正确的顺序,就不会出错了。

举例:
假设文本里的内容是
fish,861068828800,小鱼,张,fish@on.net
, ,老牛, ,kao@cow.com
fisher, ,大鱼,李,fisher@on.net
在项目列表中应勾选如下项目并且用“上”“下”按钮排好顺序:
别名
传真号码
名字
姓氏
E-mail地址
而且“分隔符”选项应选择“逗号”。这样就不会错了。这是一种很灵活的设计,当然,对于新手会造成很大的困扰。

★★问题10:关于becky在局域网的共享使用

becky能不能在局域网通过设置公用邮箱地址,实现任一人(而非一人)收取,大家都能读?
—-
becky可做到这一点!多人网络共用!!把数据文件夹共享就可以了,可以多人同一个数据文件夹。你要看的时候,会出来一个对话 框,说有人要用b ecky,问你是否同意让他用,很有趣!可以任一人下载邮件,发送邮件,对邮件的处理反映到全局

★★问题11:如何在becky模板中设定收信人的姓名?

你可用becky战无不胜的“文件夹属性”定义:
比如你的朋友是candy,一般说来你会把她的所有的信都过滤到candy这个文件夹,如果没有,就建立一个candy的文件夹 。
1.建立一个模板,在信正文的抬头写上:亲爱的candy:,并把它保存名为X的模板。
2.右键点击candy文件夹,选“属性”->选模板(compose,reply,forward)为刚建立的X模板, 收信人设为candy@sample.com,你的个人名称. …很多…。好了,设置已经好了。
如何使用:
1.选定candy这个文件夹
2.点击“撰写”只要一次点击,becky自动完成candy邮件地址的填写,candy对应模板的调用,你的个性化名称的调用 …然后你所做的.. .只是写信的内容。总结:一次点击,写信,完成。相当顺手。

★★问题12:html模板

becky支持强大的html模板功能,而且它有类dreamweaver的html编辑工具条,但自己来做太麻烦了,很不方便 ,有没有更方便的方法。
—-
有!两个方法:
①用incredimail XE(它的缺省模板最漂亮)给自己发信(空信,等于就是一个模板了),自己用becky收下来,再把收下来的邮件拖到outbo x,直接存为模板就行了。连编辑的功夫都省了。这个方法最好。
② 用incredimail XE做好或用它的漂亮模板,把它的html源码copy下来。->在becky中撰写html新邮件,点html工具栏的 最右边的“edit source”,粘贴刚才copy的东东->再点一次“edit source”,就可看到漂亮的html信了->存为模板,done!最后再用战无不胜的“文件夹属性”的方法…以后 每次调用这个模板,比f oxmail的模板调用更方便,一次点击就行了。

★★问题13:快速过滤定义

“问题16的解决:如何在becky模板中设定收信人的姓名?”的反馈:为了在becky模板中设定某一个收信人,竟然要专门设 立一个文件夹,设定过滤规则,专门建一个模板,累不累呀, 你?!如果有n个人呢?!
—-
不需要这么复杂。实际上建文件夹并添加过滤条件,becky可用拖拉的方式,是相当方便的。具体做法:
①收到朋友的信后,按Alt并拖邮件到文件夹,会出来一个对话框,选择就行了。这是不用插件的做法。
② 最为方便的是用quick entry插件,收到信后同时按Ctrl+Alt,拖这封信到inbox,就会自动:A为这封邮件建立文件夹,B把他的地址自动 加入地址本,C自动建立过滤条件. ..也就是说,所有的过滤、建文件夹工作并加入地址本的繁琐工作,只要一次拖拉!

★★问题14:如何中止收信或发信

我看不到象oe或foxmail那们的过程窗口,那么我要怎样中止收信或发信呢?
—-
becky主窗口的右上角有一个大的图标,它就是停止按钮。此按钮是用来停止当前的收发邮件操作的。当有活动的连接时,它是动态 的。此功能在网络有问题时很有用,可以点击它用来迅速终止远程连接。

★★问题15:文件夹移动

你可以拖动一个文件夹到任意一个地方(甚至别的邮箱下),但是最好在当前的邮箱中。文件夹拖动时不用担心过滤规则,过滤规则会自 动改变。

★★问题16:为什么我发不出信?

请确认“邮箱设置”中的SMTP Auth (PLAIN/LOGIN/CRAM-MD5):发信校验已填正确。用户名和密码一般和帐号当中的用户名与密码一样。现在大多 SMTP 服务器都需要设置,否则你是发不了信的。

★★问题17:在 Becky! 中怎样进行邮件自动合并解码?

当收到因邮件过大而被自动拆分的多封邮件时,需要把多封信件合并解码。你只需用鼠标双击此类信件的第一封,Becky! 就会自动进行合并解码。

★★问题18:如何设置bkhotmail插件收取hotmail邮箱(bruce原文)

1.将 BkHotmail.dll 和 BkHotmail.ini 复制到 Becky! 的安装目录下的 PlugIns 目录下,然后启动 Becky! 它就会报告找到新插件云云…确定,进入 Becky! 的 主窗口。
2.选择 File->Mailbox->New MailBox 创建一个 POP3 类型的邮箱(重要,因为是 一种 Gateway 的形式,无法和其他真正 POP3 的邮箱通过 Profile 共享一个 (MailBox)

3.然后再弹出的 MailBox Setup 窗口中做如下配置:
Your Name:随便填写(比如:无尾猫)
E-mail address: 你的 Hotmail 的帐号(比如:example@hotmail.com

POP3 Server: localhost
Smtp Server: localhost
User ID: Example
password: Ur Hotmail password

Misc 页:
Port Number
POP3: 6110
Smtp: 6025
Smtp Auth(PLAIN/LOGIN/CRAM-MD5):需要购选,User id 和 Password 填为你的相应user ID和password

Thats all~~

★★问题19:如何使用策略帐号

Becky! Ver.2 中提出了“策略帐号”这个概念,允许你对同一个邮箱设置不同的帐号。
举一个简单的例子,假设你有一台笔记本电脑而且在办公室(局域网连接)和家中(拨号连接)都使用它。
打开“邮箱设置”对话框。你需要事先设置好你的“默认”帐号。默认帐号是基本帐号,在创建策略帐号时要用到。因此,一些常规信息 ,诸如 E-mail 地址和 E-mail 服务器必须要指定。
然后,点击底部右边的“新增”按钮,就创建了一个名称类似为“PRF00001”的新文件夹,将它重命名为“Office”,其 大多数的信息将复制于“默认”帐号。但是,与“默认”帐号不同的是其中一些像 E-mail 地址和邮件服务器的地方是空的。你可以仍旧将它们保持为空。
然后点击连接标签卡并检查连接方式。如果是“局域网(LAN)”,那就对了。因为你在办公室是通过局域网连接到因特网的。
如果需要,可以配置在接收标签卡中的“周期性的邮件检查”,因为当你长时间连接到因特网时,这个功能是特别有用的。
接下来,点击“新增”按钮来创建另一个策略帐号。这次将它命名为“Home”。
点击连接标签卡并在组合框中选择合适的拨号网络。
这就好了。点击 确定 并关闭对话框。
选取根邮箱图标,现在你将看到该策略帐号已经可以使用了。
你就有了另两个策略帐号 –“Office”和“Home”– 在“(默认)”附近。
通过双击,可以切换当前激活的帐号。
以下是该帐号的另一种用法:
通 过设置多个策略帐号,使其具有不同的服务器设置,可以使多个 E-mail 帐号共享同一套邮箱。

小鱼儿注:这实际上也是一种多邮箱管理方式,但是它使用同时“接收和发送多邮箱中的邮件”的方式接收和发送 信件。通过这项功能,可以为同一套邮箱定义不同的属性,如分别设置使用者的个人信息、邮件服务器地址、用户登录信息、I nternet连接设置、信件编辑模板、自动接收设置、邮件服务器端口的信息等(也就是“邮箱设置”中的“帐号、连接、撰写、接 收、杂项”等选项卡中的内容都可以分别设置)。这样,可以使用不同的服务器和设置发送当前邮箱中的信件。
实际上,Becky! ver.2 支持全邮箱过滤,也就是说你可以归类信件到属于其他邮箱的文件夹中。因此,我们建议你建立多个邮箱,以取代对一个邮箱设置多个策 略帐号。但是,如果你使用多个 ISP,又想只使用一个电子邮件地址,将会发现这个功能是很有用的。
你可以简单地对正在使用的每一个 ISP 创建策略帐号。
重要的是你必须在“接收”标签卡中选取“从多个 POP3 服务器上接收信件,这些服务器与其策略帐号各自对应”选项。
在选取了这个选项后,只要通过一个操作,你就可以接收到来自当前的策略帐号的邮件服务器和其他的策略帐号的邮件服务器上的信件。 前提是其他的策略帐号也需要事先将这个选项选中。

★★问题20:becky如何使用模板,它有什么参数?

模板允许你创建按规定格式建立的信件和自动回应规定格式的信件。例如,对于保存邮件列表信件的专用文件夹来说,就可以这么做。可 以认为模板是在离线状态下撰写的特殊信件 — 完全依赖于你所选择的信件头部中的内容、样本文件和复制于原始信件中的信息。在“邮箱设置”>“撰写”对话框中,允许你分 别为撰写信件、回复信件和转发信件指定不同的模板。在 文件夹属性 对话框中,允许你为特定的文件夹取消上述任何部分设置或所有的设置(在这里你可以输入“@”符号来取消默认的邮箱模板。)。
1.创建/编辑模板
其开始过程与撰写一封标准的信件是差不多的。在“文件”菜单中选定“编辑模板”来创建一个新模板或是编辑一个已有的模板。该操作 在主窗口和撰写信件窗口中都可以进行。
接着,在撰写窗口中输入主要的信息。例如:以添加“主题:”、“抄送:”和其他任何在信件头部中的行开始。假设这些内容你希望它 们总是在张贴到邮件列表的邮件或是商务往来的邮件中显示出来。
要增加灵活性,根据下列“宏符号”或者占位符回头查阅原始邮件。在软件载入模板时,这些符号将自动地在其所在的位置填入相关信息 。你可以通过点击鼠标右键弹出的菜单获得关于输入宏符号的帮助。
%f 你想要回复或转发的原始信件的“来自:”栏中的内容。
%t 原始信件中“寄给:”栏中的内容。
%d 原始信件中“日期:”栏中的内容。
%D{fmt} 来自 %d 中的日期,已经转换为本地日期并以视窗的控制面板中所指定的标准日期格式显示出来。你也可以使用“fmt”来以你所希望显示出来 的文字规定日期/ 时间格式。(参阅点击鼠标右键弹出的菜单来获得更详细的说明)
%R{fmt} 原始信件抵达你的邮件服务器的日期和时间。
%W{fmt} 原始信件被取回时的日期和时间。
%T{fmt} 当前的日期和时间。
%i 原始信件中“信件标识:”栏中的内容。
%I 原始信件中“信件标识:”栏中的内容,但没有用“<>”符号括起来。
%s 原始信件中“主题:”栏中的内容。
%S 原始信件中“主题:”栏中的内容,但是栏首的“Re:”、“Fw:”和“[…]”等字符已经被省略。
%n 原始信件中“来自:”栏中的名称部分。
%a 原始信件中“来自:”栏中的邮件地址部分。
%h{信件头} 指定的信件头部(例如:%h{X-mailer})中的内容。
你在{}中输入的用“”符号包含起来的信件头仅在所指定的信件头中包含有内容时才会显示出来。
例如:%h{“CC:”Cc} –> CC: mail@address (仅当 Cc 栏非空时)。
%F{文件名} 插入由“文件名”所指定的文本文件。
%B{文件名} 附带上由“文件名”所指定的附件文件。
%m 原始信件中的所有内容。
%M 原始信件中由前缀符号所标记的引用内容。
%A 你的邮件地址。
%N 你的名称。
%1 to %0 签名 No.1 到 20。(该宏符号与 Ver.1 兼容。我们建议你使用 %G {} 宏符号来替代。)
%G{签名编号} 由“签名编号”所指定的签名来签名。
%% %这个符号自身。
在离线状态下完成后,通过“文件”菜单中的“保存为模板”命令将其保存。
简单地举一个例子:
你好,%n,
在 %d 时,
%f 写到:
%M
%1
保存上面的模板并指定其为该帐号的回复信件的模板 后,将出现类似下面的来自我的一封信件的回信。
你好,Tomohiro Norimatsu,
在 Wed, 20 Sep. 2000 14:56:24 时,
Tomohiro Norimatsu <carty@rimarts.co.jp>写到:
>Hi,
>Whats up?

Johnny B. Good <john@blahblah >
Blah-Blah technology Inc.
2.载入模板
如果你已经打开撰写窗口,使用“载入模板”命令。否则,在你选择“撰写”、“回复”或“转发”命令的同时按下 Shift 键。
另外,你可以为邮箱或文件夹设置专用的模板作为默认模板。参阅“邮箱设置”->撰写和文件夹属性来获得更详细的说明。

★★问题21:becky有什么方便操作的技巧?

以下是一些方便操作的技巧,可能对你使用 Becky! 时很有帮助。
1. 拖放
– 如果你拖放信件到根邮箱图标上,被拖放的信件将被根据其分类规则归类。
– 文本编辑器支持 OLE(对象链接和嵌入)拖放。你可以直接将文本从其他的程序中拖过来。
2.中间条
– 在中间条上,就是在信件列表和信件查看窗口之间的灰色区域,你可以点击“来自”、“寄给”、“主题”和“日期”标签来快速地获得 信件头部信息。
– 用鼠标右键点击有4个方向箭头的按钮可以更改该按钮的行为。
3. 查看源文件
– 你也可以通过进入“直接编辑”模式来直接编辑源文件。
4. 文件夹
– Ctrl+鼠标右键的点击允许你在几种颜色中更改图标的颜色。
5.最大化信件查看
– Ctrl+Alt+箭头键允许你(逐步)最大化和(逐步)最小化某些窗格。(主要针对树查看窗口、列表查看窗口和信件查看窗口。 对于撰写窗口,仅上、下方向键有效。小鱼儿注。)
6.线索模式
– 使用箭头键。左方向键:前往父信件。Ctrl+左方向键:前往根信件。右方向键:前往子信件。Ctrl+右方向键:前往下一封兄 弟信件。
7. 撰写窗口
– Ctrl+上/下方向键允许你显示或隐藏收件者区域的待输入栏目。
8. 图片
– 在安装目录中的 b2.bmp 这个图片是用于启动时显示的。你可以替换它。
你 也可以创建一个 30*30 大小的系列动画图片并将它命名为“b2anim.bmp”。很显然,这将用于替换主窗口中右上角的动画图片。(一般情况下,该图 片是静止的,只有在接收信件时才能显示出动画效果。在某些情况下,例如邮件服务器繁忙或是网路阻塞,以至于迟迟接收不了信件,想 强制 Becky!退出接收状态时,可以用鼠标左键在该动画图片上点击,然后在弹出的消息框中进行选择。小鱼儿注。)

★★问题22:如何让不同的邮件帐号也使用同一个邮件文件夹。

对每一个邮件帐号创建“策略帐号”。别忘了选取在“接收”标签卡中的“从多个 POP3 服务器上接收信件,这些服务器与其策略帐号各自对应”选项。
注意,Becky! ver.2 能够根据过滤设定将信件分类到不同的邮箱中。因此我建议你们对一个主邮箱建立多个子邮箱,而不是建立多个策略帐号。

★★问题23:半个字符问题。

我在使用的时候,发现它把一个汉字作为两个字符处理,在自动换行的时候会出现乱码,你不是说becky是最完美支持汉字和多内码 的吗?
—-
因 为你不懂怎么去配置becky。如果你配置好的话,可以同时显示大五码与GB 码的邮件头与邮件,绝不会出现半个汉字的情况,而同时显示两种内码的邮件头这一点现在的Foxmail也做不到,相比之下,Fo xmail只是容易上手。详细配置请参见本篇的姐妹篇《最强电子邮件程序b ecky集要》的第五和十三点。半个汉字的问题是你没有设显示语言为中文字体的原因(因为becky的缺省字体为英文字体),这 是使用bec ky中最易出错的地方,也是becky尽管是最完美的多内码邮件处理系统,却被人误解为支持中文不好的原因。

yo2 页面显示两个分页标志

晚上修改了一下yo2的选项,yo2是开放了模板编辑,要求转化成私有模板,试了几次,每次转化后,就变成了默认模板。没辙,先不管了。
semagic上传图片到yo2确实存在问题,上次尝试了几次,发现yo2里面,有几个图片的占位符,但是,图片无法显示,看来,有可能是文件头之类的地方有问题。
修改了一些地方,突然发现分页导航的符号竟然有两个,找了好久,在插件里面看到有启用了一个pagebar的插件,去掉后,果真少了一个。
不过,不知道为什么多了个home的链接,就是不知道哪个插件产生的。再研究研究。