作者:牛三羊

字符集错误使SVN无法更新的解决方法

SVN更新或检出有时候会遇到编码错误的提示:

Can't convert string from 'UTF-8' to native encoding

1、这种问题一般是由于客户端使用的非UTF8字符集,而SVN使用UTF8,可以通过临时修改环境变量的方式进行调整,然后再进行up或者co就不会有错误提示了,屡试不爽。

export LANG=zh_CN.UTF-8

2、如果上述操作不成功,也可能是客户端字符集没有正确安装或配置。需要先安装配置字符集。在debian上,有如下的错误提示就说明没有正确安装或者配置:

root@localhost:~# locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

使用下面的步骤重新配置安装,配置中选择常用的几个就够了:en_US、en_US.iso88591、en_US.utf8、zh_CN、zh_CN.gb2312、zh_CN.gbk、zh_CN.utf8

root@localhost:~# dpkg-reconfigure locales

这时SVN再update或者checkout就不会有问题了。

SOAP通用接口笔记

很久之前做数据对接,对方要求使用SOAP协议,我们作为server提供接口。但当时遇到一个很麻烦的问题,就是对方使用.NET开发,必须要提供WSDL文件才能调用。但是使用ZDE生成的WSDL文件不能被.NET识别,使用NuSoap生成的也失败了。针对这种情况,我们准备对一个.NET生成的WSDL文件进行了改写,所以要求我们的类库越简单通用越好。总体来讲就是只提供一个名为action的接口,我们把所有具体的操作都放到action的参数当中。这样在WSDL文件中描述action的时候就变得非常方便了。
程序共分为3个文件,假设给对方提供的接口地址:http://example.com/interface/server.php 服务类名称:AbcSoapService 函数:action
(更多…)

《HTML5设计原理》阅读笔记

今天读了一篇译文:Jeremy Keith在 Fronteers 2010 上的主题演讲《HTML5设计原理》,翻译的很不错,从中学到了很多东西。

从文章中了解一些HTML的历史,标准的制定也是很曲折的:
1、HTML是从2.0版本开始
2、W3C之前就有HTML了。W3C是后续接手HTML的定制工作
3、XHTML 1.0 代替HTML 4,但是XHTML 1.1却因为差异过大没有被业内接受
4、浏览器厂商爆发了,决定自己搞标准,成立了WHATWG,由于浏览器的支持,发展还不错
5、W3C认识到错误,与WHATWG合作定制,才有了现在的HTML 5标准

文中解释了设计原理的概念是什么。它本质上是一种信念、一种想法、一个概念,是你行动的支柱。不管你是制定规范,还是制造一种有形的物品,或者编写软件,甚至发明编程语言。比如,美国的设计原理都写在了《独立宣言》中:“我们认为这些真理是不言而喻的,人人生而平等,造物主赋予了每个人不可剥夺的权利,包括生存、自由和追求幸福。”。

文章提到一条设计原理:“伯斯塔尔法则(Postel’s Law)”。伯斯塔尔法则:“发送时要保守;接收时要开放。” 。这也让我想起以前定制接口规范的时候,对于客户端发送过来的数据格式要求过于严格,或者说是有些苛刻了。接口还是要友好一些,简单一些,效率才更高。做人也是,“严以律己,宽以待人”,也会让人觉得你更友善……

作者列出一些设计HTML 5中的理念:
1、避免不必要的复杂性。例如:HTML 5的终于把那烦人的doctype简化了
2、支持已有内容。不用再纠结于单引号,双引号了
3、解决现实问题。从理论上承认人们普遍存在的问题,解决理论问题,消除敏感问题。
4、求真务实。集中精力去理解这些“民间的”解决方案才是当务之急。
5、平稳退化。考虑兼容性,渐进增强的另一面就是平稳退化。
6、最终用户优先,一旦遇到冲突,最终用户优先,其次是作者,其次是实现者,其次标准制定者,最后才是理论上的完满。
首先为人类设计,其次为机器设计。
软件,就像所有技术一样,具有天然的政治性。代码必然会反映作者的选择、偏见和期望。

作者的设计理念值得让人回味,感慨颇深,在以后软件设计及开发中也应多多留意那。

感谢作者和译者。

WordPress自动备份脚本

blog也运行3个月了,一直没有备份,今天写了个自动备份数据脚本,备份步骤:
1、连接数据库,导出SQL备份脚本到临时目录并压缩
2、使用mutt邮寄到备份信箱
3、删除临时文件

为了安全起见,先为脚本分配独立的只读用户和密码:

grant select on niu3y.* to niu3ybak@'localhost' identified by 'backup';

编写shell 脚本:

# 数据库配置
DBNAME=niu3y
DBPASS=backup
DBUSER=niu3ybak
# 备份的邮件地址
EMAIL="niu3yang@gmail.com"

/usr/bin/mysqldump --skip-opt -u $DBUSER -p$DBPASS $DBNAME > backup.sql
/usr/bin/gzip backup.sql
DATE=`date +%Y%m%d`
/bin/mv backup.sql.gz $DBNAME-$DATE.sql.gz
# 用mutt
/usr/bin/mutt -a $DBNAME-$DATE.sql.gz $EMAIL -s "n3yang.com MySQL Backup $DATE"
# 没有mutt的时候用mail
# /usr/bin/uuencode $DBNAME-$DATE.sql.gz $DBNAME-$DATE.sql.gz | /bin/mail -s 'n3yang.com MySQL Backup $DATE' $EMAIL
/bin/rm $DBNAME-$DATE.sql.gz

最后加入crontab,每周日运行

3 2 * * 0 /root/crontab/niu3y.backup.db.sh

修正VPS上日志时间不准

昨天查看nginx日志发现时间与北京东八区的时间对不上,首先想到的是由于VPS在美国,是由于时区引起的问题。通过date命令查看当期日期:
[root@niu3y ~]# date
Wed Jan 12 19:57:03 MST 2011

果然是时区不对,于是调整时区:
[root@niu3y ~]# cp -f /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
[root@niu3y ~]# date
Thu Jan 13 10:59:32 CST 2011

这次日期和时间终于对上了,可是再查看nginx的日志时间还是对不上,重启nginx之后写入时间准确。
既然调整了时区,就再通过ntp来校正一下时间吧,失败:
[root@niu3y ~]# ntpdate 1.centos.pool.ntp.org
13 Jan 11:10:07 ntpdate[26483]: Can't adjust the time of day: Operation not permitted

那clock和date是否可以调整时间呢?果然都可耻的失败鸟:
[root@niu3y ~]# clock -r
hwclock is unable to get I/O port access: the iopl(3) call failed.
[root@niu3y ~]# clock -w
hwclock is unable to get I/O port access: the iopl(3) call failed.
[root@niu3y ~]# date -s 'Thu Jan 13 11:20:00 CST 2011'
date: cannot set date: Operation not permitted
Thu Jan 13 11:20:00 CST 2011
[root@niu3y ~]# date
Thu Jan 13 11:19:13 CST 2011

没有权限,这应该是OpenVZ的限制,时间要和母鸡相同…

2010年20个jQuery插件效果

今天在CSSRain的网站上看到一篇介绍jQuery最新插件的文件,这么好的东西当然要收藏了。又把插件都浏览了一遍,感觉非常实用,顺便写写注释,以便不时之需,嘿嘿。

1. Custom Animation Banner with jQuery
通过使用 jQuery Easing和jQuery 2D Transform插件,创建自定义animation banner。
View Demo(查看示例)
注:效果是常见的广告2种广告banner ,包括横向与纵向两种,支持多种图片切换效果

2. 快速反馈表 – jQuery & PHP
Martin Angelov 将教你如何快速的创建用于接收来自用户反馈的解决方案,使用到了jQuery, PHP 和 PHPMailer类。
View Demo(查看示例)

3. Wijmo – jQuery UI 组件
Wijmo是一个jQuery UI组件集,有超过30多个jQuery UI 组件;这将是一个CSS3,SVG,HTML5的混合物,目前还处于Beta阶段。
View Demo(查看示例)
注:这个很强力。包括表格切换、日历、对话框弹出层 、折叠效果、下拉菜单、进度条等等,支持多种自定义动画效果

4. 页面导航 – jQuery插件
这是一个页面上的导航插件,基于jQuery ScrollTo 插件,你可以在 Github上查看更多介绍。
View Demo(查看示例)

5. RSS Reader With jQuery Mobile
Jeffrey Way 创建了一个简单的RSS reader,主要用于iphone和Andriod手机,通过PHP和jQuery mobile 实现。
View Demo(查看示例)
注:效果很不错,但需要手机的性能也很强才成吧

6. Easy Accordion – jQuery插件
The Easy Accordion插件可以生成一个类似手风琴样子的自定义列表。
View Demo(查看示例)
注:可以用作图片新闻 的切换效果,也可用于产品的展示

7. Lettering – jQuery Typography Plugin
Lettering是一个轻量级易于使用的网页排版插件,例如印刷CSS3的海报,自定义类型的标题等。
View Demo(查看示例)
注:不是很明白,好像多数是用于排版、调整字体。

8. Annotation Overlay Effect with jQuery
创建一个简单的叠加效应
View Demo(查看示例)
注:缩放一张图片,并在上面叠加一个层,可以 为图片添加注释

9. Snippet – jQuery Syntax Highlighter
Snippet是一个很酷的jQuery语法高亮插件,基于SHJS脚本,你可以在SourceForge上找到源码。
View Demo(查看示例)
注:支持多种语法、内置多种高亮样式 、背景样式设定。如果有wp的插件,我会切换到这个吧

10. Google Powered Site Search With jQuery
教你如何创建一个自定义的搜索引擎,只需要使用Google AJAX Search API,你可以搜索到您网站上的图片,视频和新闻等……
View Demo(查看示例)
注:说明比较复杂,用起来简单 ,有人说和google的site参数返回结果不一样。更杯具的是2010年12月1日开始google已经不推荐用ajax api了 = =

11. 简单的工具提示 – jQuery & CSS
Soh Tanaka 创建一个简单的jQuery和CSS样式提示
View Demo(查看示例)
注:悬停提示,简单又好用!

12. Compact News Previewer with jQuery
创建一个文章/新闻预览,以经凑的方式显示您最想的文章或新闻。预览工具将会显示一些关于文章更长的描述。
View Demo(查看示例)
注:这个可以用作电影预览也是不错的。

13. Exposure jQuery插件
Exposure是一个图片预览插件,用于创建丰富,自定义的视觉体验。
View Demo(查看示例)

14. Giveaway Randomizer App – jQuery
它会教你如何去创建一个jQuery专用的随机数发生器。
View Demo(查看示例)

15. jQuery Smooth Tabs Plugin
jQuery Smooth Tabs是一个简单易于使用的插件,可以让你选择一些漂亮的效果来显示你的文字内容,带来更好的用户体验。
View Demo(查看示例)
注:简单易用的tab切换

16. TN34 Timetabs – jQuery Plugin
Mario Alves创建的一个tab容器的jQuery插件,可以选定不一样的样式来显示下一个tab。下载插件:HERE.
View Demo(查看示例)

17. Full Page Image Gallery with jQuery
创建一个效果惊人的滚动缩略图和滚动全屏预览的画廊。
View Demo(查看示例)

18. bgStretcher – jQuery Plugin
Background Stretcher可以让你在背景中添加一个或多个大尺寸的图片,并调整他们的大小来填满整个页面,多张图片时会以幻灯片的形式出现。
View Demo(查看示例)

19. SlideNote – jQuery插件(滑动通
SlideNote 是一个自定义,扩展性很强的jQuery插件,可以轻松的在网页或你的web应用上创建滑动通知。
View Demo(查看示例)
注:这个用作广告也是不错的

20. Easy List Splitter – jQuery插件
Easy List Splitter插件将获取到的list和wrap装入一个container div,生成相应的列表项,并且生成一个有效的HTML代码。
View Demo(查看示例)
注:要想用li实现简单的列表,又不想写css,用这个插件最方便,可以实现横排、竖排、自定义分割等等,赞啊

VPS上创建网速测试文件

一般申请VPS之后都会想测试一下从服务器到本地的链接速度,使用linux的dd命令可以简单创建一个空文件来测试。
通过下面的命令可以创建一个10M的文件,并取名为10m.file
dd if=/dev/zero of=10m.file bs=10M count=1
参数说明:
if:input file, 从/dev/zero 用0填写文件
of:out file, 输出文件
bs:BYTES, 文件块大小,默认值512 bytes
count:多少个bs

另外,bs参数的大小决定了dd一次读取多少数据到内存,VPS上一般内存都很紧张,所以如果想创建更大的文件,还是通过调整count来设定吧。

JS、WebGL、HTML5测试地址收集

HTML5标准兼容测试
http://html5test.com/

CSS3 Selector测试
http://www.css3.info/selectors-test/

V8 JavaScript速度测试
http://v8.googlecode.com/svn/data/benchmarks/v5/run.html

SunSpider JavaScript速度测试
http://www2.webkit.org/perf/sunspider-0.9.1/sunspider.html

Javascript性能测试
http://wd-testnet.world-direct.at/mozilla/dhtml/funo/jsTimeTest.htm

Acid3 HTML标准兼容测试
http://acid3.acidtests.org/

Peacekeeper浏览器综合速度测试,只有支持Canvas的浏览器才能运行图形类测试。(这个测试的东西比较多,时间较长)
http://service.futuremark.com/peacekeeper/run.action

M$的GPU加速,HTML5等综合测试站点(又更新了)
http://ie.microsoft.com/testdrive/

WebGL演示,包括多个demo
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/demos/

一个纯Javascript写的3D场景
http://www.zynaps.com/jslab.xml?id=envmap

一个GPU2D加速演示
live photo resizer http://people.mozilla.com/~vladimir/demos/photos.svg

PNG与JPEG格式图片的区别

在很久以前,大约是在2001年前后,曾经纠结于这两种图片格式。那时候还在玩FW与PS,只知道PNG的算法要比JPEG和GIF先进,输出图片的时候尽量选择PNG格式,因为绝大多数情况下PNG的图片显示效果要好于JPEG,而且文件也会更小。但也有列外,某些图片在使用PNG格式之后图片会比JPEG噪点多了,而文件却大的很。当时非常不理解,只有一个模糊的概念,就是在自己画图的时候要输出PNG会小一些。

时至今日,看了下面的文章才真正了解:来自淘宝UED的一篇介绍PNG与JPEG格式之间区别的文章“图片格式与设计那点事儿”。文章写的非常好,结构很清晰,从概念原理到实际应用都说的很明白,并提供了大量的图片示例。从文章中了解到:
1、PNG与JPEG格式相比,在算法上确实要先进
2、在颜色很多的场景,比如写实的摄影图、颜色层次非常丰富的时候,更适合使用JPEG
3、在颜色较少,渐变少,纯色多,颜色跨度大的时候,更适合使用PNG
4、在对PNG的调色板进行优化过后可以获得更小、效果更好的图片,方便网络使用
5、在大图的时候建议使用“交错”优化
6、根据场景对图片优化,哪怕要牺牲部分效果

音乐能力测试

对自己的音乐天赋一直很怀疑,不是怀疑能力高低有多少,而是怀疑到底能低到什么地步 ⊙﹏⊙b。 今天从 @muyao 推中淘到一个测试音乐能力的网站:http://wiwistudio.com/musictest/ 。一测之下果然很悲剧…… 泪奔

测试程序通过集中方式来测试:
1、播放2次音乐,然后测试者选择2段音乐之间是否有差别
2、一首歌曲前后速度、节奏是否有变化
3、听一段音乐,然后选择一个最能代表的图片
4、一段鼓声 ,选择敲击了多少次。感觉上这个最BT,居然有28+的