MySQL 中用 GKB 来让 UTF-8 字段中的中文按照拼音排序 Sat, Aug 16. 2008
UTF-8 中的中文不是按照拼音排序的,因此对于 使用 UTF-8 编码集的字段就无法按照拼音进行排序,最简单的解决方法就是转成 GBK 编码。
实例代码:
- SELECT *
- FROM `test`
- ORDER BY CONVERT( `test`.`name`
- USING GBK )
- LIMIT 0 , 30
数据库表结构:
- CREATE TABLE IF NOT EXISTS `test` (
- `id` int(3) NOT NULL AUTO_INCREMENT,
- `name` varchar(10) COLLATE utf8_bin NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
测试环境:Windows 2003 Standard Edition,MySQL 5.1.22-rc-community。
对于偶正在使用的 Symfony 框架,因为使用了 propel 做 ORM,比较难直接操作SQL,除非使用 RAW SQL,而且使用 RAW SQL会导致很多高级特性无法使用,解决方式:
- $criteria->addAscendingOrderByColumn('CONVERT(' . TestPeer::NAME . ' USING GBK)');
让 Firefox3 支持 Flash Wed, Jun 18. 2008
Firefox3 在 beta 和 RC 阶段对 Flash 支持的不好是臭名昭著,用 Google 随便搜索 Firefox3+Flash 看看结果就知道了。
Beata 和 RC 不支持吧。还能说是 bug,今天正式版发布,居然还是不支持,这就说不过去啦。用 Firefox 内嵌的 addons 管理机制安装 Flash 从来就木有成功过。
最后用如下方法才安装成功:
- 下载 Adobe 官方的 FLash 卸载程序;
- 下载 Adobe 官方的 Flash 安装程序;
- 关闭 Firefox;
- 运行卸载程序,再运行安装程序;
- 如果有必须要,则重建 Firefox 插件数据库。
最后一步不是必需的,至少偶就木有用到。
现在终于能够看到满屏的 Flash 了……下一步,安装 flashblock 插件屏幕它们~hiahia~~
干活啦,开工啦,ThingingStone开始开发啦 Thu, Jun 5. 2008
最近赋闲,恩。好像太过于赋闲了,不怎么写代码手都生了。于是开始开启偶的 ThinkingStone 项目。
之所以叫这个名字,因为偶准备把 ThinkingRock web 化,人家是 rock,俺就弄个 stone 玩玩吧。呵呵
顺便玩玩 symfony 框架,据说是 PHP 界最 BT 的框架,偶喜欢,hiahia。
废话不多说,上两张现在的截图看看,然后就等着发布吧。hoho。
symfony 学习笔记 - 2 - 开始运行 symfony Thu, Feb 28. 2008
安装 symfony 库
用 PEAR 方式安装
- # 在 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 安装
- # 创建 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
文件内修改下面两个变量的信息:
- $sf_symfony_lib_dir = '/path/to/symfony/lib/';
- $sf_symfony_data_dir = '/path/to/symfony/data/';
创建第一个程序
创建项目
- # 假设当前目录为 htdocs 目录
- mkdir myproject
- cd myproject
- # 下面这句适用于 PEAR 安装方式
- symfony init-project myproject
- # 下面这句适用于 SVN 安装方式
- php /path/to/symfony/data/bin/symfony init-project myproject
Symfony 会自动生成上一节说的那些目录结构。
创建应用
- 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 - 基础知识 Wed, Feb 27. 2008
symfont 的 MVC 实现
- 模型层
- 数据库抽象层
- 数据访问
- 视图层
- 视图
- 模板
- 布局
- 控制层
- 前端控制
- 动作
symfont 的工作流:

代码组织
代码组织实例:

根目录文件树结构
apps/:一个子目录对应一个应用,通常是frontend对应前台,backend对应后台。frontend/backend/
batch/:需要从命令行运行或者周期性运行的 PHP 批处理脚本。cache/:配置信息的缓存,以及动作和和模板的缓存(如果你启用了的话)。用这个缓存机制来加速请求的响应速度,每个应用都有一个对应的目录,放置预处理过的 PHP 和 HTML 文件。config/:每个项目的常规配置信息。data/:项目里和数据相关的文件,比如数据库模式、SQL 文件,甚至是 SQLite 的数据库文件。sql/functional/
doc/:项目文档,包括你自己写的文档,和由 PHPDoc 生成的文档。lib/:外部的类或者库。你可以在这里添加需要在项目级共享的代码。model/目录里是项目整体的对象模型。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/:用户上传的目录。

