净空无道

净空无道

(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扰民问题。

纵观各大论坛上各种爱国青年的举动,不外乎以下几点:

  1. 转发爱国短信到10个号码、QQ群等
  2. 51抵制家乐福
  3. 在家乐福购物时把冰淇淋拿到其他地方扔下就跑
  4. 去法国大使馆门口烧法国国旗

以上爱国举动,方法一花费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 – 基础知识

0

symfont 的 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/:用户上传的目录。

胡言乱语之男人女人

0

这年头,男人除了生孩子什么都得学会,女人还天天腻腻歪歪的不想生孩子——最近几对同学结婚有感。

——————–结婚多可怕的分割线——————–

去年过年时,一异性死党跟偶讨教感情问题,偶立下三个关于她有了男友之后的预言(注:其实该女当时已经有了男友,就是不说),年中时电话偶,第一个预言已经实现了。

该预言是:他二位定会在一个美好的下午,在温馨的小家里,沐浴着首都的夕阳,然后用各种高级的厨具,搭配着精致的调料,一起做出一桌幸福的晚餐——然后全部倒掉,出门下馆子去。

用 .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?”。另一方面,有时候可以用一行简单的代码就能解决一个难题。

下面是一些很酷的特性,很可能你也没有注意到:

  1. 使用 ip2long()long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。
  2. 在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于 checkdnsrr(),用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 “joeuser@wwwphp.net” 而不是 “joeuser@php.net” 的家伙们,这个方法可以很方便的抓住他们。
  3. 如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。一个很好的功能就是你可以使用预处理语句,如果你在维护一个数据库密集型站点,这个功能能够加快查询速度。一些评估分数
  4. 学会爱上三元运算符
  5. 如果你在项目中感觉到有可复用的部分,在你写下一行代码前先看看 PEAR 中是否已经有了。很多 PHP 程序员都知道 PEAR 是一个很好的资源库,虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段,这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的,你总能找到帮你节省时间的 PEAR 包。(参见 PECL
  6. highlight_file() 来自动的打印出格式化的很漂亮的源代码。如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话,这个函数用起来非常的顺手。当然了,要小心不要意外的泄露出你的数据库连接信息和密码等。
  7. 使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。在理想情况下,发布服务器应该在 php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php.ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。
  8. 在网数据库中存储很大的字符串之前使用 gzcompress()gzuncompress() 来显式的压缩/解压字符串。这个 PHP 内置函数使用 gzip 算法,可以压缩普通文本达 90%。在我每次要读写 BLOB 类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。
  9. 通过“引用”传递参数的方法从一个函数中得到多个返回值。就像三元运算符一样,大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下,从一个函数里返回多个值?”答案就是在变量前加上一个 “&” 符号,通过“引用”传递而非“值”传递。
  10. 完全理解“魔术引号”和 SQL 注入的危险性。我希望阅读到这里的开发者都已经很对 SQL 注入和了解了。不过我还是把这条列在这里,是因为这个确实有点难以理解。如果你还没有听说过这种说法,那么把今天剩下的时间都用来 Google、阅读吧。

不要和用户习惯为敌

7

本人室友的朋友小住寒舍,出卖体力做家务为偿。本人冬天习惯在卫生间门口放塑料拖鞋一双,这样洗澡的时候自然的换拖鞋进去洗澡,洗完了出来换毛拖鞋。可惜该友实在是勤快,把塑料拖鞋放到门边上摆放的整整齐齐。

于是早晨洗澡,没有看到塑料拖鞋也就自然的进入卫生间,开水龙头,等待热水,然后沐浴焚香……等等,脚上感觉不对,一看没有换拖鞋,整个毛拖鞋已经尽湿。

于是想到 UE 中,不要随便更改用户习惯,尤其是一些看起来好象是障碍的习惯,这些障碍也许是有他的用途。

PS:本人厨房洗洁精不多,故特意水平放置,方便下次挤用,该友每次都把洗洁精竖好整齐的放在窗台角……于是不得不每次洗碗都要挤半天才能看洗洁精流下来。同上。

净空无道's RSS Feed
Go to Top