净空无道
(4 comments, 113 posts)
This user hasn't shared any profile information
Home page: http://www.nulltao.net
Posts by 净空无道
胡言乱语之廉价的爱国
1近日世界颇不得太平,奥运火炬在欧美诸国受到了各种阻挠,海外的华人留学生也用各种方式祛除ZD,弘我国威。国内也前所未有的热闹,一霎那间各个论坛上的脑残愤青摇身一变成了爱国热血青年,洒家的QQ、MSN也不断受到了诸多好友的骚扰,幸好俺一贯是实名制,倒也不存在LC君的(L)China扰民问题。
纵观各大论坛上各种爱国青年的举动,不外乎以下几点:
- 转发爱国短信到10个号码、QQ群等
- 51抵制家乐福
- 在家乐福购物时把冰淇淋拿到其他地方扔下就跑
- 去法国大使馆门口烧法国国旗
以上爱国举动,方法一花费1块钱,方法二无成本,方法三也无成本,不过隐性成本(假设该人月薪3k,该举动花费15min)约4.7块钱,方法三,好像南京木有法国大使馆,故此方法不了了之。
在这物价一路飙升,股市一下下跌的美好春天里,如此爱国真的是太便宜了,谁都可以爱个几次,堪比便宜到可以买给太太的玫瑰花,考虑到猪肉都16快/斤,而最贵的方法三也不过3两猪肉,太廉价了。
如果周总理能够活到现在,估计也不会说“为了中华之崛起而读书”了,只要“为中华之崛起发短信”就好了,又快捷又方便,还给CMCC创造了巨大的利润(这可是国企,要支持的哦)。对了,洒家每个月短信包月用不完,有哪位愿意骚扰的请留言,偶会把月底用不完的都发给大家,俺也要爱国。
——————–洒家也要爱国的分割线——————–
PS:如果你看到了这篇 BLOG,你就肯定不爱国,因为你没有抵制 intel、amd、或者moto、ti 的芯片,哈哈。什么?你说你用的龙芯?那么龙芯上跑的 OS 可是基于 linux的,也是米国货。恩,你说你要用0、1自己写个 OS 出来?也行,不过好像阿拉伯数字是印度人发明的,阿三可是很支持 ZD 的啊,要不您老用龟壳刻个 OS 出来上网如何?爱国吗。
胡言乱语之做前端真痛苦
6突发奇想用纯粹的前端做一个小程序玩玩,结果 Firefox 的安全机制迫使俺不得不用 PHP 做一个 Proxy,否则 XMLHTTPRequest 就没有办法跨域。这也就算了,剩下的 JS 简直要整死人。俺在写到第三个 JS 函数的时候,彻底放弃了这个伟大的构想。
向所有从事前端开发的弟兄们致敬~~~
看图说话:自作简易版香蒜法棍
10今日在金润发购得法棍一根,黄油一盒(内有十二颗),家里有蒜头和葱,没有买到西芫荽,就只能用点葱碎代替了。
微波炉把黄油融化,加入蒜泥、葱碎,然后把法棍斜切片,把前面的黄油蒜泥均匀的涂抹在法棍上,然后用微波炉的烧烤功能烤制。第一次没有经验,烤一会看一次,大概用了 5 分钟吧。出炉。蒜香浓郁,法棍香脆,美哉美哉~~~
如果让我来运营玩具反斗城
3首先搞一些亲子活动,让父母们带着孩子都来参加,这样小孩就知道有一个全是玩具的地方了。
然后申请会员卡的时候,不是现在这样让父母填写然后给你张普通的卡片,应该给小孩填写,最好现场拍照制卡,发行照片卡,这样孩子就认为这是自己的卡,会要求自己拿着这张卡,并且给同学朋友炫耀。
然后孩子们就会央求父母带自己去玩具城买玩具,央求十次总能去一次吧。去一次多多少少总要买一些回来吧。
下面的事情就是老板偷偷的乐着数钱吧。
唉,发现我太黑心了,嘿嘿。
symfony 学习笔记 – 2 – 开始运行 symfony
1安装 symfony 库
用 PEAR 方式安装
1 2 3 4 5 6 7 8 9 10 | # 在 PEAR 频道列表里添加 symfony 频道 pear channel-discover pear.symfony-project.com # 查看该频道内可用的包 pear remote-list -c symfony # 安装 symfony 包 pear install symfony/symfony # 安装完毕后,查看版本,确认安装成功 symfony -V # 用下面这句来安装最新的 beta 版 install symfony/symfony-beta |
Symfony 库被安装在以下目录内:
-
$php_dir/symfony/:核心库。 -
$data_dir/symfony/:symfony 的程序框架,默认的模块和配置信息,全球化数据等。 -
$doc_dir/symfony/:文档。 -
$test_dir/symfony/:单元测试。
注:最新版本的 PEAR 安装 symfony 会出现错误,解决方法参见在 Linux 下用 PEAR 安装 Symfony 出现错误的解决方案。
通过 SVN 安装
1 2 3 4 5 6 7 | # 创建 symfony 库的目录 mkdir /path/to/symfony cd /path/to/symfony # 通过 SVN 检出发行版文件 svn checkout http://svn.symfony-project.com/tags/RELEASE_1_0_0/ . # 查看版本号,确认安装成功 php /path/to/symfony/data/bin/symfony -V |
如果你用 SVN 方式安装,那么你需要在 config/config.php 文件内修改下面两个变量的信息:
1 2 | $sf_symfony_lib_dir = '/path/to/symfony/lib/'; $sf_symfony_data_dir = '/path/to/symfony/data/'; |
创建第一个程序
创建项目
1 2 3 4 5 6 7 | # 假设当前目录为 htdocs 目录 mkdir myproject cd myproject # 下面这句适用于 PEAR 安装方式 symfony init-project myproject # 下面这句适用于 SVN 安装方式 php /path/to/symfony/data/bin/symfony init-project myproject |
Symfony 会自动生成上一节说的那些目录结构。
创建应用
1 | symfony init-app myapp |
建立 web/sf/ 目录。把 /path/to/symfony/data/web/sf/ 拷贝到 myproject/web/sf/,或者创建对应的符号链接。
现在访问 http://localhost/myproject/web/myapp_dev.php/ 应该能看到这样的界面:
如果你看到类似这样的界面,那么你的 symfony 第一步安装成功了。
symfony 学习笔记 – 1 – 基础知识
0symfont 的 MVC 实现
-
模型层
-
数据库抽象层
-
数据访问
-
-
视图层
-
视图
-
模板
-
布局
-
-
控制层
-
前端控制
-
动作
-
symfont 的工作流:

代码组织
代码组织实例:

根目录文件树结构
-
apps/:一个子目录对应一个应用,通常是frontend对应前台,backend对应后台。-
frontend/ -
backend/
-
-
batch/:需要从命令行运行或者周期性运行的 PHP 批处理脚本。 -
cache/:配置信息的缓存,以及动作和和模板的缓存(如果你启用了的话)。用这个缓存机制来加速请求的响应速度,每个应用都有一个对应的目录,放置预处理过的
PHP 和 HTML 文件。 -
config/:每个项目的常规配置信息。 -
data/:项目里和数据相关的文件,比如数据库模式、SQL 文件,甚至是 SQLite
的数据库文件。-
sql/ -
functional/
-
-
doc/:项目文档,包括你自己写的文档,和由 PHPDoc 生成的文档。 -
lib/:外部的类或者库。你可以在这里添加需要在项目级共享的代码。-
model/:目录里是项目整体的对象模型。
-
-
log/:由 symfony 直接生成的日志文件。 -
plugins/:插件目录。 -
test/:单元测试和功能测试脚本。在创建项目的过程中,symfony 会自动创建一些测试的。-
unit/ -
functional/
-
-
web/:Web 服务器的根目录,只有这个目录里面的文件才能被访问到。-
css/ -
images/ -
js/ -
uploads/
-
模型目录树文件结构
-
apps/-
[application name]-
[module name]-
actions/:通常情况下这个目录里只有一个名为actions.class.php的文件,这个文件里是该模型的全部动作,你也可以分开成单独的文件。-
actions.class.php
-
-
config/:该模型的自定义配置信息,可以有本地化参数。 -
lib/:该模型特有的类库。 -
templates/:与每个动作对应的模板文件。在创建模型的时候会自动生成默认模板文件indexSuccess.php。 -
indexSuccess.php
-
-
validate/:专门用来校验表单数据的配置文件。
-
-
Web 目录树文件结构
-
web/-
css/:样式表文件。 -
images/:图形文件。 -
js/:JavaScript 脚本文件。 -
uploads/:用户上传的目录。
-
用 .htaccess 文件来屏蔽指定的浏览器的访问
0最近不知道找谁惹谁了,总是有一个以 larbin 开头的 HTTP_USER_AGENT 浏览器访问(估计是用了什么类库吧。不像是一个真正的浏览器),导致偶的访客记录表大量的冗余记录。今天决定用 .httaccess 来彻底杜绝。
在 .htaccess 最后添加如下记录:
1 2 | RewriteCond %{HTTP_USER_AGENT} larbin [NC,OR] RewriteRule .* - [F] |
现在,世界清静了。
10 件(也许)你不了解 PHP 的事情
0来源:10 things you (probably) didn’t know about PHP
PHP 是我用过的语言中,最令人恼火的但同时也是最有趣的语言。我之所以说“令人恼火”主要是因为函数命名极其不一致。尽管我每天都要用到这些函数,我还是要想一下“究竟是 str_pos 还是 strpos?是 str_split 还是 strsplit?”。另一方面,有时候可以用一行简单的代码就能解决一个难题。
下面是一些很酷的特性,很可能你也没有注意到:
- 使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。
- 在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于 checkdnsrr(),用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 “joeuser@wwwphp.net” 而不是 “joeuser@php.net” 的家伙们,这个方法可以很方便的抓住他们。
- 如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。一个很好的功能就是你可以使用预处理语句,如果你在维护一个数据库密集型站点,这个功能能够加快查询速度。一些评估分数。
- 学会爱上三元运算符。
- 如果你在项目中感觉到有可复用的部分,在你写下一行代码前先看看 PEAR 中是否已经有了。很多 PHP 程序员都知道 PEAR 是一个很好的资源库,虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段,这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的,你总能找到帮你节省时间的 PEAR 包。(参见 PECL)
- 用 highlight_file() 来自动的打印出格式化的很漂亮的源代码。如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话,这个函数用起来非常的顺手。当然了,要小心不要意外的泄露出你的数据库连接信息和密码等。
- 使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。在理想情况下,发布服务器应该在 php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php.ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。
- 在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。这个 PHP 内置函数使用 gzip 算法,可以压缩普通文本达 90%。在我每次要读写 BLOB 类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。
- 通过“引用”传递参数的方法从一个函数中得到多个返回值。就像三元运算符一样,大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下,从一个函数里返回多个值?”答案就是在变量前加上一个 “&” 符号,通过“引用”传递而非“值”传递。
- 完全理解“魔术引号”和 SQL 注入的危险性。我希望阅读到这里的开发者都已经很对 SQL 注入和了解了。不过我还是把这条列在这里,是因为这个确实有点难以理解。如果你还没有听说过这种说法,那么把今天剩下的时间都用来 Google、阅读吧。
不要和用户习惯为敌
7本人室友的朋友小住寒舍,出卖体力做家务为偿。本人冬天习惯在卫生间门口放塑料拖鞋一双,这样洗澡的时候自然的换拖鞋进去洗澡,洗完了出来换毛拖鞋。可惜该友实在是勤快,把塑料拖鞋放到门边上摆放的整整齐齐。
于是早晨洗澡,没有看到塑料拖鞋也就自然的进入卫生间,开水龙头,等待热水,然后沐浴焚香……等等,脚上感觉不对,一看没有换拖鞋,整个毛拖鞋已经尽湿。
于是想到 UE 中,不要随便更改用户习惯,尤其是一些看起来好象是障碍的习惯,这些障碍也许是有他的用途。
PS:本人厨房洗洁精不多,故特意水平放置,方便下次挤用,该友每次都把洗洁精竖好整齐的放在窗台角……于是不得不每次洗碗都要挤半天才能看洗洁精流下来。同上。


Recent Comments