Posts Tagged ‘小结’

使用CSS框架布局的缺点和优点小结

星期三, 06月 4th, 2008

现在好多网站都用了div css来布局网页结构,优点是速度快了,可负面影响呢,来看下面de分析
前端时间写了一篇《利用CSS框架进行高效率de站点开发》,有不少朋友问我相关de问题.很早5key就在公司进行CSS框架de架构,也对不少朋友提出CSS框架de建议.效果是很明显de.当然,CSS框架有利也有弊,最近也看了一些相关de文章.一些感想,与大家分享.
CSS框架之利:
1、开发效率de提高.
如果您是一个企业建站de前端开发,相信在大部分时间里进行着同类站点de相关代码工作.定义好de框架可以大大提高您de工作效率,避免一些常见de错误.如果您de工作是按件计费de,您de报酬一定会比别人多.
2、规范相关代码命名.
在多个站点中您可能会用到一些同样deCLASS或ID.如果您有一套完善decss框架,很快您就能对您de每一个站点de相关代码进行通读.不用浪费时间在相关代码de阅读上.
3、更好de团队合作
有些公司会将一些稍大de站点de前端相关代码分成若干子项目.有过此类经验de朋友应该对这种开发方式深感郁闷,要注意公用 css,还有注意相互之间de相关代码配合.久而久之,废弃相关代码越来越多,互相之间也难以阅读.如果建立好合适deCSS框架,大家可以减少很多不必要de错误,提升产品质量和工作效率.
4、解决浏览器de兼容性问题
现在大部分项目都要求兼容IE6,7和FF.每个站点可能都会花上一部分时间去处理兼容问题.在框架层面上就将这个问题处理好.就可以为后面de兼容问题节省下大部分时间.
5、一套完整de、结构清晰de结构相关代码.
CSS框架为您de项目提供一个干净、严谨de基础架构.通过它您可以快速de为您de站点搭建基础dehtml相关代码框架.万事开头难,前面de基础工作做好了.后面de开发速度会提高很多.
CSS框架之弊:
1、您需要完全de理解整套框架
每一个加入项目de人,都需要花一定de时间去完全de理解整套框架及编码规范;
2、您会延续一些框架中de错误bug
没人可以保证自己制定de框架是完美而没有bugde.您可能会需要时间去清理框架中debug;
3、限制开发思路
框架给出大家基本de架构及开发de思路,这可能会限制您对产品开发de新思路;
4、臃肿de源相关代码
框架中可能有很大一部分相关代码不会经常用到,而且还会降低执行效率;
5、框架de语义化
我已经注意到了HTML相关代码de语义化.但基于框架de每个站点都是独立唯一de,我很难去保证CSS框架de语义化.

.net get set用法小结第1/3页

星期二, 06月 3rd, 2008

在早期学习c#de过程中,经常遇到这样de语句:
public string StudentName
{
get{return stuName;}
set{stuName=value;}
}
当时也不是很明白为什么要这样?学深了c#后,又没法对其做一个总结.今天看了《Visual c#.net程序设计教程》这本书,总结得不错,做下笔记:
在许多面向对象程序设计语言中,属性(property)是指对象de特征和状态,具体地说就是指对象de数据成员.程序员可以指定数据成员能否被外界直接访问,如果数据成员被指定为publicde,外界就可以用“对象名.公有数据成员名”访问该成员.c#是完全面向对象de语言,c#倡导一种新途径,对数据成员能够更好地封装和保护,同时又向外界提供更有效de访问形式.c#中用来达到这个目标de就是“属性”,而那些数据成员,在c#中称为“字段”或“域”.
属性de定义和使用
属性由两个部分组成:属性头和存储器.存储器分为get访问器和set访问器.声明属性de一般形式为:
修饰符 类型 属性名
{
get //get存取程序
{…}
set //set存取程序
{…}
}
属性de修饰符可以是任何访问控制符,还可以被定义为静态.get和set是一种特定de方法,get用来从对象中读取数据,而set用来向字段写入数据,将外界de数据写入字段时,c#使用value表示输入de数据,value可以说是一个准关键字,例如:
set{aField=value;}

RMI使用学习 小结

星期一, 06月 2nd, 2008

四年前也是 Java de fans,也曾如火如荼de追求着 sun,追求着 java. 当然 RMI 肯定不会放过,但到目前为止还没有在任何一个项目中用过,昨天听了一个 java 老师de课,本来不去想听,可想想我交了这么多 money,最后还是去.最叫人恶心de是他讲de RMI 一点实用价值都没有,而且有de理论也不对.真de误导人啊,学术理论和实践是不能够分离de,老师是这样de,只能靠学生自己动手丰衣足食了.昨天晚上用了一点时间,从新研究了一下 RMI.举个例子作为 RMI 学习de终结吧.
在写这篇文章前也访问了中国电信de高级工程师,根据他de介绍,RMI 有很多实现方式,而且现在他发现 RMI 在大规模分布式系统中,效率和性能不是很好.目前他带领de团队正在自行开发分布式应用.
随着 web 2.0 时代de到来,SOA 开发思想de普及应用.分布式应用,将又一次走向高潮.
RMI 开发步骤大家都很清楚,这里举个不用手动启动 rmiRegistry, 也不要指定 codebase 和web server de例子.底层 TCP/IP 细节我不用去管他,您就把他看成像 SOAP、JNDI 等一样de基于注册服务de东西就行了 .
1. 远程接口
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IRMI extends Remote {
public Object invoke(ITask task) throws RemoteException;
}
2.远程接口实现
/**
* @author Jack.Wang
*
*/
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class IRMIImpl extends UnicastRemoteObject implements IRMI {
protected IRMIImpl() throws RemoteException {
super();
}
public Object invoke(ITask task) throws RemoteException {
System.out.println(”注意:这是一个远程调用”);
Object obj = task.doWork();
System.out.println(”调用ITask.doWork()方法de返回值:” obj.toString());
// 客户端调用,可以在服务器端播放需要de音乐
ProcessCaller.callMp3();
return obj;
}
}
3. 任务接口
/**
* @author Jack.Wang
*
*/
import java.io.Serializable;
public interface ITask extends Serializable {
public Object doWork();
}
4. 任务实现类
/**
* @author Jack.Wang
*
*/
public class TaskImpl implements ITask {
public Object doWork() {
System.out.println(”当前程序处于远程调用中”);
return Thread.currentThread().getName() ” ”
new Date(System.currentTimeMillis());
}
}
5.在java中调用windows程序
public class ProcessCaller {
public static void callMp3() {
Runtime ru = Runtime.getRuntime();
try {
// 调用播放器文件播放指定MP3
Process p1 = ru
.exec(”C:\\Program Files\\Windows Media Player\\wmplayer D:\\Jack\\Mp3\\5.秋天不回来-王强.mp3″);
} catch (Exception e) {
}
}
}
6. Server 端相关代码
/**
* @author Jack.Wang
*
*/
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class RMIServer {
public static void registRemoteObject() throws Exception {
IRMIImpl impl = new IRMIImpl();
Naming.rebind(”rmi://210.43.109.25:1111/mytask”, impl);
System.out.println(”bound success!”);
}
private static Registry createRegistry() {
Registry registry = null;
int port = 1111;
try {
registry = LocateRegistry.getRegistry(”210.43.109.25″, port);
registry.list();
System.out.println(”Register the exist server!”);
} catch (final Exception e) {
try {
registry = LocateRegistry.createRegistry(port);
System.out.println(”Register the exist server!port=” port);
} catch (final Exception ee) {
ee.printStackTrace();
}
}
return registry;
}
/**
* 将对象注册到rmi服务器上
*/
public static void bind() {
Registry registry = null;
registry = createRegistry();
try {
IRMIImpl impl = new IRMIImpl();
registry.rebind(”mytask”, impl);
System.out.println(”mytask server start!”);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
try {
bind();
} catch (Exception e) {
e.printStackTrace();
}
}
}
7. Client 端相关代码
/**
* @author Jack.Wang
*
*/
public class RMIClient {
public static void getRemoteObject() throws Exception {
IRMI obj = (IRMI) Naming.lookup(”rmi://210.43.109.28:1111/mytask”); // 得到远程发布de服务
TaskImpl task = new TaskImpl();
Object result = obj.invoke(task); // 调用远程服务de方法
System.out.println(result.toString());
}
public static void main(String[] args) {
try {
getRemoteObject();
} catch (Exception e) {
e.printStackTrace();
}
}
}
小结:
建议把以上程序打包成 jar 文件,您可以在不同机子间测试.
RMI 就这么简单,如果您觉得他不爽,就自己封装 socket. 到时候要通知我哦,我也学习学习.

Win2000 Apache MySql PHP4 PERL安装使用小结

星期一, 06月 2nd, 2008

Windows 2000 Apache MySql PHP3 PHP4 PERL安装使用小结
www.1000script.com 2002-9-3 1000script专业脚本
Windows 2000 Apache MySql PHP3 PHP4 PERL安装使用小结(一)
  这里一定有许多和我一样喜欢尝试新鲜事物de朋友,尤其是当听说
某某软件有了新de版本时一定也会迫不及待de去下载一份回来用用再说.
这里我想和大家探讨一下以下流行软件de应用,意在抛砖引玉.
OS : Microsoft Windows 2000 Professional简体中文版
WEB SERVER: Apache 1.3.12 for WIN32
MYSQL : MySQL Shareware 3.22.34 for WIN32
PHP3 : PHP 3.0.15 for WIN32
PHP4 : PHP 4.0.0 for WIN32
ZEND : Zend Optimizer beta4 for PHP 4.0.0 for WIN32
【★★★ Apache快速安装 ★★★】
1. 运行 apache_1_3_12_win32.exe ,按照提示安装,安装目录不妨为:
  c:\apache
2. 修改 c:\apache\httpd.conf,去掉ServerName前de“#”号,后面
  跟本机deIP地址
3. 运行 c:\apache\apache -i 将Apache安装成为Windows 2000de一个服务
4. 运行 net start apache 启动Apache
5. 将 c:\apache\htdocs\index.html.en 改名为 index.html ,然后
  在浏览器地址栏中输入: http://localhost
【★★★ MySql快速安装 ★★★】
1. 将 mysql-shareware-3.22.34-win.zip 解压缩到一个临时目录下,
  然后运行 setup.exe 开始安装,一切用默认值安装即可
2. 运行 c:\mysql\bin\mysqld-shareware –install
  将mysql安装成Windows 2000de一个服务
3. 运行 net start mysql  启动mysql服务即可
【★★★ PHP3快速安装 ★★★】
1. 将 php-3.0.15-win32.zip 解压缩到一个目录下,例如
  c:\apache\php3
2. 将 c:\apache\php3\php3.ini-dist 拷贝到 c:\winnt 目录下,
  并改名为 php3.ini
3. 修改 c:\apache\conf\srm.conf,加入如下几行:
ScriptAlias /php3/ “c:/apache/php3/”
Addtype application/x-httpd-php3 .php3
Action application/x-httpd-php3 “/php3/php.exe”
4. 重新启动Apache (net stop apache, net start apache)
  PHP3就可以运行了,创建一个文件 c:\apache\htdocs\info.php3 ,
  内容只有一行:
  
  然后在浏览器地址栏中输入:http://localhost/info.php3
5. 为了加入对MySqlde支持,需要编辑 c:\winnt\php3.ini ,
  找到extension_dir,将该行改为:
extension_dir = “c:\apache\php3\”
  再找到
;extension=php3_mysql.dll
  去掉前面de分号即可
【★★★ PHP4快速安装 ★★★】
1. 将 php-4.0.0-Win32.zip 解压缩到一个目录下,例如
  c:\apache\php
2. 将 c:\apache\php\php.ini-dist 拷贝到 c:\winnt 目录下,
  并改名为 php.ini
3. 将 c:\apache\php\php4ts.dll 拷贝到 c:\winnt\system32 目录下
4. 修改 c:\apache\conf\srm.conf ,加入如下几行:
ScriptAlias /php/ “c:/apache/php/”
Addtype application/x-httpd-php .php
Action application/x-httpd-php “/php/php.exe”
5. 重新启动Apache (net stop apache, net start apache)
  PHP4就可以运行了,创建一个文件 c:\apache\htdocs\info.php ,
  内容只有一行:
  
  然后在浏览器地址栏中输入:http://localhost/info.php
  PHP4内置对MySqlde支持,不需要额外设置
【★★★ Zend Optimizer for PHP4快速安装 ★★★】
1. 将 ZendOptimizer-Beta4-WindowsNT.zip 解压缩到一个目录下,
  例如 c:\apache\zend
2. 修改 c:\winnt\php.ini ,在任何地方加入如下两行:
zend_optimizer.optimization_level=7
zend_extension_ts=”c:\apache\zend\ZendOptimizer.dll”
3. 在浏览器中刷新info.php,可以看到多了这么一行:
  with Zend Optimizer v0.98, Copyright (c) 1998-2000, by Zend Techno
logies
【★★★ Active Perl快速安装 ★★★】
1. 鼠标双击 ActivePerl-5.6.0.613.msi 运行之,这是一个Windows
  Installer Packge格式de安装包,在Windows 2000下可以直接
  运行,按照提示安装,默认de安装路径是 c:\perl ,不妨改成
  c:\usr
2. 修改 c:\apache\srm.conf ,加入如下一行:
AddHandler cgi-script .pl
3. 在PERL程序de第一行加上:
#!/usr/bin/perl
4. 为了让Apache也能够识别*.cgi程序,在 srm.conf 中加入:
AddHandler cgi-script .cgi
  这样一来本地dePERL CGI程序就可以和UNIX主机上de完全保持一致了
  为了让Apache能够处理Server Side Include,在 srm.conf 中加入:
AddType text/html .shtml
AddHandler server-parsed .shtml
  这样CGI程序就可以以SSIde方式运行了
5. 为了让以上修改生效,需要重新启动Apache (net stop apache, net start
apache)

完全按照以上步骤进行,就会在不出错de情况下拥有了
Apache MySql PHP3 PHP4 PERLde运行环境了!事实上,
以上方法在Windos NT4.0 SP3 中一样可行.
【☆☆☆ Apache概要说明 ☆☆☆】
Apachede默认安装目录是c:\program files\apache group\apache,
不过为了方便起见,不妨将它安装到c:\apache目录下.配置文件是
c:\apache\conf\httpd.conf,通常至少需要修改de是ServerName这
一项,把注释符号“#”去掉,最简单是后面跟IP地址,对于有WINS
de局域网用户可以用机器名,对于有DNSde网络用户可以用域名.在
Windows 2000下没有设置ServerName这一项会造成Apache不能启动.
还有一个影响是当用如下方式使用Alias时:
Alias /userdir “c:/userdir/”
假如这样调用:
http://localhost/userdir/
不会产生任何问题,可是如果这样调用:
http://localhost/userdir
那么localhost会被替换成ServerName所指定de值,如果这个值不能
被正确解析,就无法访问.
用户de配置项目添加在httpd.conf或者srm.conf中都可以,一说是将
所有de配置项目都放在httpd.conf中,这样只需要修改维护这一个
配置文件,比较方便,而且避免了冲突(这是srm.conf文件中说de!).
可是httpd.conf确实太大了,要在里面搜索特定de项目就不很容易.
还有一说是将所有de用户自己添加修改de配置项目都放在srm.conf中,
这个文件很小,便于察看修改,本人倾向于后者.
在httpd.conf中,Apachede其它常用de可能需要修改de设置有:
ServerAdmin your@email.address #管理员dee-mail地址
DocumentRoot “c:/apache/htdocs” #默认de根路径
注意路径全都是用斜线而不是反斜线来分隔
DirectoryIndex index.html index.php index.php3 index.htm index.shtml
这一项指明了在每个目录中de默认文档及其顺序
AccessFileName .htaccess #目录访问de配置文件名
用资源管理器会发现无法将一个文件改名成“.htaccess”,不过
在命令行方式下可以,用notepad也可以另存为这个文件名.
【☆☆☆ MySql概要说明 ☆☆☆】
MySqlde默认安装目录是c:\mysql,安装结束后没有任何提示信息说安装结束,请点Finish按钮之类de话,直接就退出了.如果需要安装到其他目录,建议先安装到c:\mysql,然后再整个目录move到自己希望de地方,例如移动到d:\mysql 之后,需要编辑 d:\mysql\my-example.cnf (*.cnfde文件在Windows 2000中会被注册成为 SpeedDial文件,在资源管理器中无法操作,要用命令行来启动notepad编辑,例如运行notepadd:\mysql\my-example.cnf ,但是这个文件是UNIX系统下de文本文件格式,在notepad中不能正确换行,可以用write打开编辑,
或者用write打开后保存一次,再用notepad就可以编辑了.)找到basedir一行,去掉前面de“#”号注释,将后面de路径改为移动后de目录(目录分隔符要用斜线而不是反斜线),然后另存为:c:\my.cnf
用服务方式启动deMySql如果用 net stop mysql 来停止,会得到一条 出错消息,例如:
    C:\>net stop mysql
    MySql 服务正在停止.
    系统出错.
    系统发生 1067 错误.
    进程意外终止.
    MySql 服务已成功停止.
这没有关系,MySql确实已经停止了.但是假如不希望看到任何出错消息
de话,可以用以下de命令来停止:
    C:\>mysql\bin\mysqladmin -u root shutdown
如果没有任何提示信息,说明MySql已经成功停止了.
需要说明de是MySql虽然号称安装简单,易于使用,但是这毕竟是基于SQLde数据库管理系统,所以如果不是对SQL十分精通de话恐怕也不能拿它来做什么.网上有许多管理MySqlde工具,例如基于PHP3de有phpMyAdmin,MAP,基于Windowsde有MySqlWinAdmin,myAdmin等.由于PHP3与PHP4deMySql功能颇多不兼容之处,所以我建议在Apache中同时安装PHP3与PHP4.这两个小程序可以在这里下载:
http://www.nease.net/~yzwang/php/
都只有几十K,而且phpMyAdmin中还包含有简体中文de提示,将 phpMyAdmin_2.0.5.zip 带目录名解压缩到 c:\apache\htdocs目录下,或者其他设定了Aliasde目录下,然后编辑文件:c:\apache\htdocs\phpMyadmin\config.inc.php3 在里面找到:
require(”english.inc.php3″);
一行,将它替换成:require(”chinese_gb.inc.php3″);
然后保存.在启动它之前还有一件必须要做de事就是编辑 c:\winnt\php3.ini ,
在里面找到 include_path 一行,将它修改为:
    include_path = “c:\apache\htdocs\phpmyadmin”
保存后在浏览器地址栏中输入:
    http://localhost/phpmyadmin/index.php3
看到没有?它说——〉“欢迎使用 phpMyAdmin 2.0.5” !
【☆☆☆ PHP3概要说明 ☆☆☆】
PHP3似乎没有什么其它需要特殊设定de东西,唯一需要修改de文件就是 php3.in
i .
上面已经提到要修改de两个部分:
    include_path = “c:\apache\htdocs\phpmyadmin;c:\apache\htdocs”

凡是在PHP3中使用了 include 或者 require ,所要包含de文件必须在
include_path 所设定de路径之一,好在修改了php3.ini后会立即生效,
不需要重新启动apache.
    extension_dir = “c:\program files\apache\php3\”
这一项也是必需de,否则无法加载扩展模块.
php3.ini中de内容是区分大小写de!不过Windowsde路径名大小写没有关系.
【☆☆☆ PHP4概要说明 ☆☆☆】
PHP4与PHP3颇多不同之处,php.inide大小就比php3.ini大了几乎一倍.
所要修改de项目与php3.ini中de两项一样,include_path 与 extension_dir .

不过由于内置了MySqlde支持,如果只用MySqlde话,那么连 extension_dir
也不用修改,保持默认值即可.PHP4提供了两个php.inide版本可用选择:
php.ini-dist
php.ini-optimized
如果使用 php.ini-dist de话,那么在使用上没什么问题.可是也许有
好事之徒如我,用了 php.ini-optimized ,那么会遇到重大问题.
大家知道,PHP对于表单de处理极为方便,对于使用了 post 方法de表单,
PHP会自动根据表单de name 生成同名de变量,几乎所有dePHP程序都是
这样使用自动生成de表单变量de,然而如果将 php.ini-optimized 拷贝
到 c:\winnt 目录下并改名为 php.ini de话,将没有自动表单变量生成!
仔细看看 php.ini-optimized ,有这么一段:
    register_globals = Off  ; Whether or not to register the EGP
CS variables as global
                 ; variables. You may want to turn t
his off if you don’t want
                 ; to clutter your scripts’ global sc
ope with user data. This makes
                 ; most sense when coupled with track
_vars - in which case you can
                 ; access all of the GPC variables th
rough the $HTTP_*_VARS[],
                 ; variables.
为了能够正确运行其他人写dePHP例子程序,建议还是改成:
    register_globals = On
其实我使用PHPde经验还不是很多,但是仍然注意到以下几个问题:
1. 在需要包含另外一个文件时可以用 include ,也可以用 require .
  但是要求在 php.ini 中有路径设定.假如包含文件de目de仅仅是为了
  在浏览器中显示输出de话,可以用
    readfile(”filename”);
  而且参数还可以是 http 或者 ftp de URL .
2. 要获取本文件de文件名,许多人用 $PHP_SELF ,可是我觉得用
    getenv(”PATH_INFO”);
  更好.使用de场景例如:
    ”>
3. 要读入整个文件,简单地使用:
    $contents=file(”filename”);
  就可以了,$contents 会成为一个 array 变量,文件de每一行会成为
  $contents 中de每一项.阵列下标从 0 到 count($contents) .
【☆☆☆ Zend Optimizer for PHP4概要说明 ☆☆☆】
该软件也可以从以下地址下载,只有41K:
http://www.nease.net/~yzwang/php/
需要注意de就是这个版本是
Zend Optimizer Beta4 for PHP4.0.0 for WindowsNT,版本号是0.98.
只能用在上述de PHP4.0.0 for WIN32 这个版本上.
【☆☆☆ Active Perl概要说明 ☆☆☆】
Active StatedeActivePerl 5.6是目前最流行de最新版本dePERL解释器,不明白为什么要8174K这么大? 几乎是Apache和MySql加起来de大小.不过这是完全版本dePERL,包含有PERL5de各个模块.之所以建议安装到c:\usr 目录下,是由于这样一来PERLdeCGI程序就可以用和在UNIX下一样deSHABANG行了:
#!/usr/bin/perl
当然,按照Windows格式用也可以:
#!c:\usr\bin\perl.exe
这样在自己de机器上调试好dePERL程序不用修改就可以上传到UNIX主机上去使用,方便很多.关于PERLde编程问题不在本文讨论de范围之内.
本文旨在抛砖引玉,希望和各地de朋友交流.也希望大家把在使用PHP及其相关环境中de心得写出来与网友们共享,共同进步.

原作者:1000script
来 源:1000script.com