2007/02
16
2007/02
14
继续使用继续出问题。
我以组件的模式来将cakephp和smarty结合使用,但当我在进行view的设计时又出现问题,由于render已经被重构为空,$html->input('Post/title', array('size' => '40'))这样的helper也不能被smarty支持使用了了(我没有找到在smarty中如何支持这些语法的办法),这样就破坏了cakephp中整个的一个MVC结构。这样整进来smarty貌似得不偿失。
看来还得继续研究方法。
cakephp的view语法格式肯定是不可接受的。对于美工来讲,这样镶入大量的php语句是不可能的。所以,cakephp虽然实现了MVC的框架,但是他并没有考虑到人的因素,M应该是DBA可以进行编写的,C是PHPer来写的,V是界面UI来做的。UI知道的只能是HTML代码,学习php(cakephp所使用的V界面)的成本相当大,smarty相对而言要小一些。
我以组件的模式来将cakephp和smarty结合使用,但当我在进行view的设计时又出现问题,由于render已经被重构为空,$html->input('Post/title', array('size' => '40'))这样的helper也不能被smarty支持使用了了(我没有找到在smarty中如何支持这些语法的办法),这样就破坏了cakephp中整个的一个MVC结构。这样整进来smarty貌似得不偿失。
看来还得继续研究方法。
cakephp的view语法格式肯定是不可接受的。对于美工来讲,这样镶入大量的php语句是不可能的。所以,cakephp虽然实现了MVC的框架,但是他并没有考虑到人的因素,M应该是DBA可以进行编写的,C是PHPer来写的,V是界面UI来做的。UI知道的只能是HTML代码,学习php(cakephp所使用的V界面)的成本相当大,smarty相对而言要小一些。
Defined tags for this entry: PHP
Not modified
2007/02
13
2007/02
12
2007/02
12
2007/02
11
够崩溃,她竟然需要解压5张盘!
装了半途,告诉我错误,openoffice依赖关系不正确。退出,重起。
发现grub没有都没有设置好。重新修复安装,搞定。
默认进入终端,发现需要密码,但是我在安装过程中根本没有输入过。
修改grub,使用单用户模式进入,修改root的密码,再重启,搞定。
但是一直是在非图形界面,使用startx可以进入一个很别扭的图形,使用gdm可以进入gnome
不过密码我一贯设置六个数字,但单纯六个数字的密码是登陆不了图形gnome的,只有把密码设置的复杂一点才能正常登陆。
没有仔细去玩了,把机子封存了,明年再说,不过从今天的安装来将,opensuse真的让我失望了。
装了半途,告诉我错误,openoffice依赖关系不正确。退出,重起。
发现grub没有都没有设置好。重新修复安装,搞定。
默认进入终端,发现需要密码,但是我在安装过程中根本没有输入过。
修改grub,使用单用户模式进入,修改root的密码,再重启,搞定。
但是一直是在非图形界面,使用startx可以进入一个很别扭的图形,使用gdm可以进入gnome
不过密码我一贯设置六个数字,但单纯六个数字的密码是登陆不了图形gnome的,只有把密码设置的复杂一点才能正常登陆。
没有仔细去玩了,把机子封存了,明年再说,不过从今天的安装来将,opensuse真的让我失望了。
Last modified on 2007-02-12 15:00
2007/02
10
如果仅仅根据类的接口文档还是无法得知如何实现一个类的话,正确的做法不是拉出这个类的源代码,从中查看其内部实现。这是一个好的初衷,但却是个错误的决断。正确的做法应该是去联系类的作者,告诉他“我不知道该怎么用这个类”。而对于类的作者来说,正确的做法不是面对面地告诉你答案,而是从代码库中check out类的接口文件,修改类的接口文档,再把文件check in回去,然后告诉你“看看现在你知不知道该怎么用它了”。
这段话记下来就行了。关注他的实现。
知识来源: 《代码大全2》
这段话记下来就行了。关注他的实现。
知识来源: 《代码大全2》
Defined tags for this entry: PHP
Last modified on 2007-02-10 20:10
2007/02
10
想起了高中时期的题海战术。
我还不是命题人,我还不具备创意的能力和机会。
自己磕磕碰碰也许能找到答案,但是既然能够知道已经有答案了,为什么不直接去找,然后理解之。
举一反三,我需要更多的一,也需要二来理解一,更需要三来熟悉一。所以,我需要的还不只是一。
我需要经验。
我还不是命题人,我还不具备创意的能力和机会。
自己磕磕碰碰也许能找到答案,但是既然能够知道已经有答案了,为什么不直接去找,然后理解之。
举一反三,我需要更多的一,也需要二来理解一,更需要三来熟悉一。所以,我需要的还不只是一。
我需要经验。
Defined tags for this entry: 学习
Last modified on 2007-02-11 13:30
2007/02
10
通过component 的形式来使用smarty
前几天也记录了一下将smarty作为cakephp的视图解释器的方法:cakephp与smarty的组合,但是如何使用smarty的缓存却成了问题。因此,把smarty改为组件的形式可能更合适:
To install:
* Download and install Smarty, and place it (preferably) in '/vendors/smarty' (lowercase) directory.
* 建立一些smarty需要的文件夹,与上文同。
* 建立/app/controllers/components/smarty.php文件:
* That's it!
To use:
Inside your controller:
* 把smarty作为controller的组件(e.g. this->$components = array('smarty');)
* 重构render方法为空,阻止默认view的输出:
* 在函数中使用$this->smarty来调用smarty。
* 模板tpl的使用方式与原smarty一样。
示例代码:
参考: Cake and Smarty
前几天也记录了一下将smarty作为cakephp的视图解释器的方法:cakephp与smarty的组合,但是如何使用smarty的缓存却成了问题。因此,把smarty改为组件的形式可能更合适:
To install:
* Download and install Smarty, and place it (preferably) in '/vendors/smarty' (lowercase) directory.
* 建立一些smarty需要的文件夹,与上文同。
* 建立/app/controllers/components/smarty.php文件:
template_dir = VIEWS;
$this->compile_dir = TMP . 'smarty' . DS . 'compile' . DS;
$this->cache_dir = TMP . 'smarty' . DS . 'cache' . DS;
$this->left_delimiter = '{#';
$this->right_delimiter = '#}';
}
}
?>
* That's it!
To use:
Inside your controller:
* 把smarty作为controller的组件(e.g. this->$components = array('smarty');)
* 重构render方法为空,阻止默认view的输出:
function render() { }
* 在函数中使用$this->smarty来调用smarty。
* 模板tpl的使用方式与原smarty一样。
示例代码:
class TestsController extends AppController
{
var $name = 'Tests';
var $components = array('smarty');
function index()
{
$this->smarty->caching = true;
$this->smarty->cache_lifetime = 3600*5;
if($this->smarty->is_cached('tests/index.tpl'))
{
$this->smarty->display('tests/index.tpl');
exit;
}
$this->smarty->assign('posts', $this->Test->findAll());
$this->smarty->assign('time', date('H:i:s', time()));
$this->smarty->display('tests/index.tpl');
}
function render() { }
}
参考: Cake and Smarty
Defined tags for this entry: PHP
Last modified on 2007-02-14 19:12
2007/02
8
Levels of Design
1.软件系统 Software System
2.分解为子系统或包 Division into Subsystem or Package :
分解为数据库、用户界面、业务规则、命令解释器、报表引擎等。
目标:确定如何分解以及各个子系统如何协作。
重点:子系统之间的相互通信规则
基本原则:子系统图应该是无环图
PS:我更喜欢按功能来划分子系统,比如用户模块,业务模块,客服模块,管理模块等,而以上所谈到的数据库模块等等知识属于公用的底层模块部分。
3.分解为类 Division into Classes
目标:识别出系统中所有的类,识别接口
4.分解成子程序 Division into Routines
目标: 细化出私有函数,子程序。
也有可能再返回第3层设计
5.子程序内部的设计 Internal Routine Design
目标:具体实现。
包括编写为代码,选择算法、组织子程序内部的代码块以及编码。
知识来源: 《代码大全2》
1.软件系统 Software System
2.分解为子系统或包 Division into Subsystem or Package :
分解为数据库、用户界面、业务规则、命令解释器、报表引擎等。
目标:确定如何分解以及各个子系统如何协作。
重点:子系统之间的相互通信规则
基本原则:子系统图应该是无环图
PS:我更喜欢按功能来划分子系统,比如用户模块,业务模块,客服模块,管理模块等,而以上所谈到的数据库模块等等知识属于公用的底层模块部分。
3.分解为类 Division into Classes
目标:识别出系统中所有的类,识别接口
4.分解成子程序 Division into Routines
目标: 细化出私有函数,子程序。
也有可能再返回第3层设计
5.子程序内部的设计 Internal Routine Design
目标:具体实现。
包括编写为代码,选择算法、组织子程序内部的代码块以及编码。
知识来源: 《代码大全2》
Defined tags for this entry: 学习
Not modified
2007/02
8
Desirable Characteristics of a Design
1.最小的复杂度 Minimal complexity: 应该作出简单而易于理解的设计,避免“聪明的”设计,“聪明的”设计往往是难以理解的。
2.易于维护 Ease of maintenance : 考虑做维护工作的程序员会提出的问题。
3.松散耦合 loose coupling 人那个程序各个组成部分之间关联最小。实现手法: 抽象接口,合理封装,信息隐藏等。
4.可扩展性 extensibility : 可以改动系统的一部分而不会影响到其他部分。
5. 可重用性 reusebility : 该系统组成部分能够在其他系统中使用。
6. 高扇入 high fan-in 可以让大量的类使用某个给定的类,系统可以很好的利用较低层次上的工具类。
7.底扇出 low fan-in :一个类少使用其他的类。大于7为高扇出,导致系统复杂。
8.可移植性 protability : 方便地移植到其他环境。
9.精简性 leanness : 没有对于部分,关键问题: “这虽然简单,但把它加进来之后会损害什么呢?"
10.层次性 stratification : 可以在任何层面上观察系统并得到一致性看法。可以在任意参差上观察而不需要进入其他层次。
知识来源:《代码大全2 》
1.最小的复杂度 Minimal complexity: 应该作出简单而易于理解的设计,避免“聪明的”设计,“聪明的”设计往往是难以理解的。
2.易于维护 Ease of maintenance : 考虑做维护工作的程序员会提出的问题。
3.松散耦合 loose coupling 人那个程序各个组成部分之间关联最小。实现手法: 抽象接口,合理封装,信息隐藏等。
4.可扩展性 extensibility : 可以改动系统的一部分而不会影响到其他部分。
5. 可重用性 reusebility : 该系统组成部分能够在其他系统中使用。
6. 高扇入 high fan-in 可以让大量的类使用某个给定的类,系统可以很好的利用较低层次上的工具类。
7.底扇出 low fan-in :一个类少使用其他的类。大于7为高扇出,导致系统复杂。
8.可移植性 protability : 方便地移植到其他环境。
9.精简性 leanness : 没有对于部分,关键问题: “这虽然简单,但把它加进来之后会损害什么呢?"
10.层次性 stratification : 可以在任何层面上观察系统并得到一致性看法。可以在任意参差上观察而不需要进入其他层次。
知识来源:《代码大全2 》
Defined tags for this entry: 学习
Last modified on 2007-02-08 20:56
2007/02
7
在XP下使用金山词霸2006,2007般都出现过这种问题,主窗口只有最大化才能出来,在“还原”状态不出现。
解决办法很easy:
首先关闭金山词霸,打开运行目录下的XDICT.INI文件。
找到
WindowPos=***
把后面的值全部改成0.
启动词霸,就可以看到非最大化状态的金山词霸了。
Last modified on 2007-03-14 11:01
2007/02
6
在各种语言中,define是不能把一个变量值define给一个常量的,如以下语法:
这样会出现错误Parse error错误。
但是你可以使用类的方法来赋值一个变量给常量,如以下代码:
输出结果为hello2。
注意,这个hello2是一个可变量。
关于常量的一些知识:
知识来源:
Joomla源代码
php Manual
$url = 'www.luochunhui.com'
define('URL', $url);
这样会出现错误Parse error错误。
但是你可以使用类的方法来赋值一个变量给常量,如以下代码:
class A
{
var $v = 'hello';
function setV($str)
{
$this->v = $str;
}
}
$o = new A();
$o->setV('hello2');
define('A', $o->v);
echo A;
输出结果为hello2。
注意,这个hello2是一个可变量。
关于常量的一些知识:
- 常量前面没有美元符号($);
- 常量只能用 define() 函数定义,而不能通过赋值语句;
- 常量可以不用理会变量范围的规则而在任何地方定义和访问;
- 常量一旦定义就不能被重新定义或者取消定义;
- 常量的值只能是标量(boolean,integer,float 和 string)。
知识来源:
Joomla源代码
php Manual
Defined tags for this entry: PHP
Last modified on 2007-03-04 21:48
2007/02
6
一查天气预报,今天最高气温21℃。
看来冬天过了。
但春天?
已经在我的眼前悄悄的走过了么?
还是被夏天绊住了脚。。。。
我不喜欢冬天,但现在,我还不需要夏天。
看来冬天过了。
但春天?
已经在我的眼前悄悄的走过了么?
还是被夏天绊住了脚。。。。
我不喜欢冬天,但现在,我还不需要夏天。
Defined tags for this entry: 其他
Not modified
2007/02
5
算是见识了。
- 上海春运购票只能提前十一天。
- 通宵排队 为通往春天的火车票——上海南站2000多人通宵排队
- 周六晚7点见闻: 门前的售票代理点已关门,但门前还有5~6人迟迟不离开, 我问:不是关门了么? 那人的回答真的很恐怖:明天早上开门啊。 后面的人接茬:我去了南站,但人太多,还不如在这里等。 我无语,闪人。
- 周一早九点 上班,顺便去售票代理点逛逛,太长,没敢数,一眼过去没看到尾就对了。周边坐着3个辅警类似的人物。 我请靠前边的一位大哥帮我问票,说了好长时间,他说早2点就在这里等了,都不知道自己能不能拿到票。 纠缠了老半天,他终于答应帮我问下有票没。谢天谢地。 结果:没有我的,只有临时车,还没座。这位大哥的票也没有。其他也有半数以上的人在抱怨,白白排了一个通宵,到头啥都没有。
- 周一早十一点 在网上搜索上海火车票电话预定,找了7~8个拨了十来二十通,没一个接通的。
- 现在 不知道。。。。。
- 弄到票了 向黄牛和警察叔叔致敬
Defined tags for this entry: 生活
Last modified on 2007-02-12 23:10
(Page 1 of 2, totaling 20 entries)














