发表于 2006-03-15 16:34 | 分类: 菠萝菠萝蜜 | tags: DMMT | 评论 (1)

网站使用性经典书籍Don’t Make Me Think推出了繁体中文版,不过翻译过来的名字显得很弱智,叫如何设计好网站,这种名字怎么能引起购买者的兴趣呢?听名字还以为是网络泡沫时期的又一垃圾呢。不过还好,封面没怎么改动。
简体中文版也要出来了,只是一再跳票,偶都还等Windy送我一本呢?不过,在这里可以先看看翻译的样张。
Update: 在炎热的8月,书终于出来了,虽然也有个不伦不类的名字,但味道还真不错。很快就攀升到销售榜的前列,而且这本网志年会签名版最终被拍出了原书9倍的价格,啧啧,不知道是看书呢还是看字来的。
发表于 2006-02-06 23:00 | 分类: 菠萝菠萝蜜 | tags: wordpress, movabletype, mysql | 发表评论
WordPress和MovableType是主流的Blog系统,而他们都用的是MySQL数据库,那么在MySQL4.1下,中文的WP和MT就会产生种种的乱码问题。
如前MySQL4.1乱码问题分析的,一个程序( PHP,CGI 等)与MySQL建立连接后,这个程序发送给MySQL的数据采用的是什么字符集,MySQL 是无从得知的。所以解决乱码问题的根本就是我们在程序中告诉MySQL采用的编码是什么,简单的就是在程序中加入这样的一个语句:
SET NAMES ‘utf8′。
这个语句的效果等同于同时设定了
SET character_set_client=’utf8′
SET character_set_connection=’utf8′
SET character_set_results=’utf8′
为什么这么做?
我们安装MySQL4.1时按照默认配置,那么default-character-set= utf8。在MySQL Command Line Client下查看到的查看系统的字符集和排序方式的设定为:
mysql> SHOW VARIABLES LIKE ‘character_set_%’;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
7 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE ‘collation_%’;
+———————-+——————-+
| Variable_name | Value |
+———————-+——————-+
| collation_connection | latin1_swedish_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+———————-+——————-+
3 rows in set (0.00 sec)
按照MySQL的存储机制,数据在传输的过程中就会在latin1和utf8两种编码之间互相转换,这样就很容易的变成了乱码。我们在程序中设置了SET NAMES ‘UTF8′,就等同于把所有的编码都设置为utf8,这样数据就没有了编码转换问题,也就没有了乱码问题了。
在WP和MT中的设置方法
那么具体在WordPress和MovableType中,怎么设定SET NAMES ‘UTF8′呢?
对于PHP的MySQL系统来说,这样的修改很简单:
找到wp-includes/wp-db.php
$this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);
//加上下面这行
$this->query(”SET NAMES ‘utf8′”);
对于用Perl的MT系统来说,同样的修改方法是:
在 MT 目录下找到lib/MT/ObjectDriver/DBI/mysql.pm
加上以下粗体显示的那行
sub init {
my $driver = shift;
$driver->SUPER::init(@_);
my $cfg = $driver->cfg;
my $dsn = ‘dbi:mysql:database=’ . $cfg->Database;
$dsn .= ‘;hostname=’ . $cfg->DBHost if $cfg->DBHost;
$dsn .= ‘;mysql_socket=’ . $cfg->DBSocket if $cfg->DBSocket;
$dsn .= ‘;port=’ . $cfg->DBPort if $cfg->DBPort;
$driver->{dbh} = DBI->connect($dsn, $cfg->DBUser, $cfg->DBPassword,
{ RaiseError => 0, PrintError => 0 })
or return $driver->error(MT->translate(”Connection error: [_1]”,
$DBI::errstr));
$driver->{dbh}->do(”SET NAMES ‘utf8′”); //加上这行
$driver;
这样的Blog系统,数据在传输和存储的过程中,都不会出现乱码了。
ps:MT系统的修改方法感谢Pedro Melo,Zack 和 e-luck 的指点。也感谢xdanger最终在邮件中的帮助。
发表于 2006-02-06 22:44 | 分类: 菠萝菠萝蜜 | tags: mysql | 发表评论
MySQL4.1的变化
MySQL为解决并控制不同层次的不同字符编码问题,在4.1以上版本对字符集的支持细化到四个层次:服务器(server)、数据库(database)、数据表(table)和连接(connection)。
MySQL通过以下三个方面来控制各个层次的字符编码:MySQL字符集(Character set)、MySQL连接校对(Collation,整理)以及站点编码。
编译 MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
安装 MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
启动 mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的;
此时 character_set_server 被设定为这个默认的字符集;
当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为 character_set_server;
当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
这个字符集就是数据库中实际存储数据采用的字符集,mysqldump 出来的内容就是这个字符集下的;
简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。
MySQL的存储机制
当一个程序( PHP,CGI 等)与MySQL建立连接后,这个程序发送给MySQL的数据采用的是什么字符集?MySQL 无从得知(它最多只能猜测),所以:
MySQL 4.1要求客户端必须指定这个字符集,也就是character_set_client;MySQL的怪异之处在于,得到的这个字符集并不立即转换为存储在数据库中的那个字符集,而是先转换为character_set_connection 变量指定的一个字符集;转换为character_set_connection的这个字符集之后,还要转换为数据库默认的字符集character_set_database 进行存储;当这个数据被输出时,又要转换为 character_set_results指定的字符集。
上面3个变量的作用是这样的,client表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection则在客户端和数据库起一个连接作用。
所以,因为MySQL4.1的支持细化到了四个层次,但是每个层次的设定并不是唯一,这样就造成了在数据的传输过程中有多次的编码转换,对于中文来说,就很容易的形成乱码了。
发表于 2005-12-31 19:52 | 分类: 菠萝菠萝蜜 | tags: live-mail | 发表评论
微软启动的windows Live项目可是个大家伙,这是一个以免费程序为主的程序集合,像Windows Live Messenger和Windows Live Mail,不过是把以前的几项MSN网络服务换了个名字,进行了少许改动而已。但也有一些新东西,比如OneCare Live安全服务。
Live Messenger早就已经发布beta版本提供给用户测试,而我比较感兴趣的是Live Mail的beta版本,这是微软大受欢迎的Hotmail免费邮件服务的大规模升级版本,也是微软借以打击Gmail的重要武器。很早就申请了测试,但是却在半月前收到了Windows Live Mail Beta team的拒信:
Thank you so much for your interest in Windows Live? Mail beta.
Unfortunately, Windows Live Mail beta isn’t available where you Live. But it will be! Until then, we’ll hold on to your e-mail address and notify you once Windows Live Mail beta is made available where you Live.
Thanks again for your interest, and for your patience.
Best regards,
The Windows Live Mail beta team
原来Live Mail只在美国部分地区的用户才能试用,不过我的资料本来就填写的是Florida of United States,还是没能得到邀请就有点不理解了。还好今天看到了这个不需要邀请从Hotmail升级到Live Mail的漏洞,立马依葫芦画瓢,几经捣鼓,再次登录后便顺利的进入了Live Mail Beta界面。
总体感觉不但界面更加简捷明快,也更加精致悦目。信息清单的右侧有一个预览窗口,与Outlook类似。清单上的信息可以用鼠标拖曳到文件夹里。用鼠标右键点击某个图标时,有用的电子邮件选项就会显示出来,而不是简单的浏览命令(这就是传说中的支持可拖拽和鼠标右键功能)。
新的电子邮件程序会自动填写邮件地址,并保存发出的信息。此外,还有各种新的安全保护和编辑功能。总体来看,这个程序更像Outlook或Outlook Express,不过目前的很多功能还不能在Mac或者Firefox环境下运行。微软提供2G的免费存储空间。已有Hotmail帐号的用户可以继续保留,不过要是新地址采用@Live.com这样的后缀的话,那应该是比较酷的。
update:说把资料改成美国佛罗里达州就应该会收到邀请的,这不,在发现漏洞升级为Livemail不久,今天就收到了微软的Windows Live Mail Beta Invitation。不过过这信确实显示了微软的NB,开头就是一个大大的3个大字: You’re Invited!
这确实使我受宠若惊啊,脑海里立刻浮现出施瓦辛格同志同样NB的话:You‘re Fired.
以下是Livemail自认为很NB的几点:
- Speed, Speed, Speed. Built on new technology that makes navigating your e-mail much faster
- Easy Inbox Management. Includes drag & drop, plus message previews with reading pane
- Info Bar. A new weapon to help zap junk and “phishing” e-mail
- Expanded storage. Extra space for all your stuff with 2GB of storage
总结一下:快,简,强,大。总结完毕。
我还是去用我的Gmail去。
发表于 2005-12-30 22:48 | 分类: 菠萝菠萝蜜 | tags: firefox | 评论 (4)
用Firefox,就不能不装上一大堆的扩展(Extension)来帮助自己更加有效率的浏览,这也是Firefox如此受欢迎的一个很重要的原因。但是扩展插件越来越多,有时候自己都搞晕了,还好有Listzilla这个扩展(又多了一个)可以帮助你列出已经安装的主题与扩展插件。而对于Firefox的扩展插件,很多人都已经写过了(1 2),甚至有十大最佳扩展,最有用的20大插件各种推荐,有的的确不错,但有的只能算是鸡肋了。
我的FF装的扩展不多,但都是我工作学习的得力助手,我喜欢这些Extensions。
Del.icio.us插件
使用比较频繁。同样还有del.icio.us的searchengine插件(以前不知道有,FF的搜索引擎还是自己修改的)。
Performancing
可以浏览器中进行blog的编辑和发布,支持Movable Type。我的blog是基于MT的,所以用这个比较方便。但是也有一些不爽的地方,比如所有的内容发布了都在同一个
里面,换行是用br来表示,这个和MT自带的发布工具默认的代码(不同的段落用不同的
断开)是不一样的。
WebDeveloper
目前是第 0.9.4 版,具有各式各样的丰富的功能,对于想要做点Web设计的人可是必不可少的。
SuperDragAndGo
超级拖拽,用鼠标拖动网页链接,文本或文本链接自动在新Tab中打开,选中一段文字后用鼠标拖动,会在新Tab中调用选中的整合搜索引擎自动进行搜索,还可以设置拖动一张图片,自动对图片进行下载和保存(这个东西超喜欢,鼠标拖拽在Maxthon里面用的实在是太舒服了)。
Copy Plain Text
如果你经常要从Web页面复制文本到你的电脑,你一定会喜欢这个工具。它能让你复制无格式的文本,并以可编辑的形式轻松保存页面文本。而我通常是在记事本里操作的。
IE View
FF是支持网页标准的浏览器,但是国内99.9%的网站都是过时的,很多网站在FF里浏览简直惨不忍睹。IE View可以使你在FF里调用IE内核浏览那些只能用IE浏览的网页。现在,你是不是可以完全抛弃IE了呢。
Bloglines Toolkit
随时检查你在Bloglines订阅的内容有没有更新。安装后在状态栏显示,如有更新,点击这个图标,就可以直接打开你的Bloglines订阅页面。
而对于那些著名的扩展,比如AdBlock(用FF后我好像很少在遇到垃圾广告)、Tab Mix(FF自带的标签浏览完全足够我的试用了)、FlashGot(我还是习惯用FlashGet)、ForecastFox(我似乎不需要时刻都要知晓世界各地的天气情况)、Sage(Bloglines+GreatNews的组合完全满足我的需求了),我倒是使用的不多,大多是装上后测试一下,马上就卸载了。
Extension是个好东西,但是装多了FF就显得太臃肿,启动慢而且占内存,那样也就失去了扩展的意义了。
发表于 2005-12-22 21:38 | 分类: 菠萝菠萝蜜 | tags: google | 评论 (1)
又是一年冬至日,又逢冬至吃饺子。
今天出现频率最多的词就是饺子了。开始总被人问,晚上吃饺子不。我着实很奇怪了,我今天吃什么与他人有何干系?他人乃苦口婆心尊尊教导我起来:今天是传统的冬至,要吃饺子(俗称“捏冻耳朵”)的,否则耳朵就会冻掉咯。
我还是第一次听到这个习俗的,也许在北方比较盛行。Google了一下,原来这冬至吃饺子,是不忘“医圣”张仲景“祛寒娇耳汤”之恩。至今南阳仍有“冬至不端饺子碗,冻掉耳朵没人管”的民谣。发短信给广州(很南方了吧)的同学问候了一下,发现竟然也在吃饺子,看来是我闭塞了,不过还好,我的耳朵仍然好好的长着,只是偶尔不听话罢了。
冬至是一年廿四个节气中,最重要的一个节气,算是中国传统的节日之一了。可是,实在搞不懂的是这两天Google的Logo。

点击进去后是doodle10的网页,而且第三个是三个大大的问号。我猜第三幅图应该是很多彩灯闪烁,几个老鼠在一起跳舞的画面。
doodle是涂鸦的意思。而且这个是第十个网页,让我们来看看其他的。
doodle9是北极熊在庆祝佳节,doodle8是奥运专辑,doodle7是雪人,doodle6是动物欢聚,doodle5是冬奥会,doodle4是熊熊在张灯结彩的庆祝节日,doodle3是悉尼奥运会,doodle2是庆祝独立日,doodle是外星人的阴谋。
doodle系列一直是short illustrated story,在几天内展开的。而且后来的doodle系列都有佳节愉快的字样,所以相信,doodle10也应该是充满节日气氛的画面。而且就画面来看,第一幅是小老鼠偷偷探出脑袋,第二副是两只老鼠拿起插座准备接上,那么第三幅会不会就是电源接上后,灯光闪烁,老鼠们都出来happy了呢?Happy Holiday嘛,老鼠也不例外。

update: Google的第三幅出来了,看来这套short illustrated story不只是四格漫画呢。等着看好戏……

原来如此……