Posted by 淡水河边 on 2010-08-05
其实这个是凑数来的。只是好久没动博客了,实在是说不过去了,丫的太懒了。其实是淡水没有时间(好假的借口)。 闲话不多说了。现在一般都是用li做菜单了,淡水也就从了。li的float:left,可以了变成横向的菜单了。但是它们怎么跑到区域里居中显示呢(一般是页脚的链接是居中的)?li的display:inline;就可以了,float:left都不要了,自己跑一行去了。 #main_footer{ list-style:none; text-align:center; } #main_footer li{ display:inline; } <ul id=”main_footer”> <li><a href=”#”>公司介绍</a></li> <li><a href=”#”>我们的创新</a></li> <li><a href=”#”>工作理念</a></li> <li><a href=”#”>价值观</a></li> <li><a href=”#”>联系我们</a></li> </ul> 其实淡水还是在用table布局,为啥,方便啊。不过也少了:) 哎,div啊。。。
Posted by 淡水河边 on 2010-06-11
首先说明,这是淡水的牢骚,看不惯不要看。 老华仔歌里唱的应景“总逃不开工作表,做完了又来了,怎样也甩不掉……”。淡水手头的项目还没有完全结束,新的项目又要上马。于是前期就框架选择开大会,开小会。 有.net高手就开始在网上搜索合适框架。结果他得出的结论是Zend Framework,理由:官方。 不推荐Codeigniter是因为,一家小公司做的,后期支持跟不上。而且ci是轻量级的,功能不强。 php本身就是草根出身,如果看公司大小,那么为什么不用.net? ci是轻量级的,但是php能做的,他都能做,没有内置的功能,可以自己加阿?非得一定要和zend framework一样,几乎把所有能想到用到的功能都整合进去变成皇家内裤(类库)? 窃以为,做大型应用时应用框架快速开发是可取的,但是要考虑到代码的执行效率,和开发的灵活度。 zend framework能做到的, ci扩展一下也能做到,麻烦一点了。但是zend framwork有ci灵活么,ci2天可以掌握,zend framework可以么(太NB的天才不算)。 这些主流框架的评比本身没有太大的意义。框架只是工具,各有其特点(Yii高效;ci上手容易,代码优雅;thinkphp代码全中文注释,文档齐全;qee……),人才是重点。 如果理由是: zend framework是官方出品,支持应该比其他(ci)公司长久。 zend framework是官方出品,使用人数较多,人力资源丰富。 zend framework内置许多类库,扩展类库的时间可以节省不少。 zend framework内置许多类库,规范了代码(尽量使用内置类库)。 还有最具分量的理由:这是高层主管决定的。 这些我可以接受,但是说ci不行,以否定ci来肯定zend framwork,那就有些牵强了。 滔滔不绝的,连绵不断,就是要表明“zend framework是php官方出品,功能强大。ci一家小公司做的,后期支持跟不上。而且ci是轻量级的,功能不强。”。但是,zend framework哪些方面强大,ci又是哪里功能不强,都没有说出个一二三来。 嗯,滔滔不绝但也要言之有物才行吧!
Posted by 淡水河边 on 2010-06-09
嗯,体验还不错。推荐。。。 不过wine下ie6太耗资源了,能跑死机器。 两天了,基本上手 开发用XAMPP+PDT,PDT在linux下比windows下的速度快些,但是边框太粗,难看。 :p
Posted by 淡水河边 on 2010-03-27
需要在服务器上装sock5 proxy,服务器平台是Redhat enterprise linux5,淡水要在有限的时间里去折腾它。 google之。 找到了socks5-v1.0r11编译报错:( 再google之。。。 又转找到ss5-3.6.4-3, 编译,又报错:( 时间有限,精力有限,关键是能力有限。。 最后google之。。。。。。 找到Antinat。看似很方便的样子。官网:http://antinat.sourceforge.net/ 下载: antinat-0.90-1.i386.rpm antinat-libs-0.90-1.i386.rpm 先rpm -ivh antinat-libs-0.90-1.i386.rpm 再rpm -ivh antinat-0.90-1.i386.rpm 搞定。 也可以下载:antinat-0.90.tar.bz2 编译安装。 tar jvxf antinat-0.90.tar.bz2 cd antinat-0.90 ./configure make install cp etc/antinat.xml.allopen /usr/local/etc/antinat.xml 配置端口: <!– Port to listen on –> <port value=’1080′/> 如无需认证,这样就完成了。我要加入认证帐号则,那么如下: vi /usr/local/etc/antinat.xml <!– <user user=’testuser’ password=’testpass’/> –> [...]
Posted by 淡水河边 on 2010-03-09
asp.net的md5加密貌似是16位的 而php的md5加密是32位的 这样解决 echo substr(md5("admin"),8,16); // 16位MD5加密效果等同于asp.net的md5echo "<hr>";echo md5("admin"); // 32位MD5加密 另:php的md5函数,按官方的说法,第二个参数设为true,可以生成16位的,但是淡水测试下来是乱码。淡水没空深究了,有心人可以找找缘由。
Posted by 淡水河边 on 2010-03-08
select distinct可以去掉重复记录。 disctinct将重复的记录忽略,但它忽略的是完全一致的重复记录,而不是其中某个字段重复的记录,或者说,distinct查询一个字段时好使,多个字段就不好使。 所以用聚合函数和group by实现 注意:group by只能跟聚合函数搭配使用 例表 ID username password TRDESC …………………… 1 A abcdef QR 2 A abcdef W34 3 A bbbbbb AD 4 B aaaaaa asdf 查询username和password组合起来的条件不能重复的查询结果(这个都能重复,不能不说这是个烂摊子) 当username和password重复时,取ID最大的记录: select * from mytable where ID in(select max(ID) from mytable group by username,password) 当username和password重复时,取ID最小的记录: select * from mytable where ID in(select min(ID) from mytable [...]
Posted by 淡水河边 on 2010-03-07
标题党了。 这是一个使用jQuery和flash的多文件上传组件: http://www.uploadify.com/demo/
Posted by 淡水河边 on 2010-03-01
1,插入flash,不追求web标准,可以这样简短: <EMBED src="URL" width="100" height="300" type=application/x-shockwave-flash quality="high"></EMBED> 2,同一选择器针对不同浏览器的css hack select { background-color: black;/* firefox, opera, ie8 */ [;background-color: green;]/* safari, chrome */ *background-color: blue;/* ie7 */ _background-color: red;/* ie6 */ } html*~/**/body select { border: 5px solid red;/* ie8 */ }以上只是一个例子说明混合写法.以下是对例子的补充 1.IE都能识别*;标准浏览器(如FF)不能识别*; 2.IE7,FF能识别!important,IE6不能. 3.只有IE6能识别_ 4.不管是什么方法,书写的顺序都应该是firefox的写在前面,IE7的写在中间,IE6的写在最后面。 5.对于ie8 chrome hack的请 GOOGLE or BAIDU …
Posted by 淡水河边 on 2010-03-01
.textOverFlow { width:300px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; border:1px solid #ddd; } 实现原理: (1)指定宽度:width:300px; (2)overflow:hidden; 将超出内容隐藏 (3)text-overflow:ellipsis; IE 专有属性,当对象内文本溢出时显示省略标记(…) (4)white-space:nowrap; 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。
Posted by 淡水河边 on 2010-02-22
嗯,很强的功能。比较简单实用。 淡水先说明一下,本文说的计划任务是指linux的Cronjob。 语法 下面是个简单的计划任务: 10 * * * * /usr/bin/php /www/virtual/username/cron.php > /dev/null 2>&1 它主要有两部分组成: 1.”10 * * * *” ,这是定时器。 2.其他部分是命令,它们会在命令行运行。 这个例子中,命令本身又有三个部分: 1.”/usr/bin/php”。PHP脚本通常不会自己执行,它需要通过PHP解析器来执行。 2.”/www/virtual/username/cron.php”。这个是需要执行的脚本的路径。 3.”> /dev/null 2>&1″。这部分是处理脚本的输出的。稍后我们详细说它。 定时器语法 就是上面计划任务的第一部分。它决定了何时执行计划任务。 它包含5部分: 1.分钟(0-59) 2.小时(0-23) 3.一个月的哪一天(1-31) 4.一年中的哪个月(1-12) 5.星期几(0是星期天) 星号 如果某个部分出现的是星号而不是数字,就是说明这个部分表示的时间全部会执行。 不太容易说清楚,看例子吧。 示例: 下面的计划任务会一直运行 * * * * * [command] 下面的计划任务会在每个小时的0分时运行(就是每小时执行一次) 0 * * * * [command] 下面依旧是一个每小时运行一次的计划任务。不过是在每个小时的一刻钟时运行的(1:15,2:15.。。) [...]