虽然早在去年初,乐铺就已经支持 OpenID 登录方式了,当时还为 OpenID 的中文名拉过赞助…… 不过对于大部分人而言,可能对 OpenID 还比较陌生。从国内寥寥无几支持 OpenID 的网站就可以看得出来。
我坚信这种情况不会持续太久了,前段时间 Yahoo! 率先支持了 OpenID 协议,允许在支持 OpenID 的网站上使用 Yahoo! 帐号登录。上月末 Google 也加入了支持行列(虽然支持的很烂)。相信随着两大网络巨头的加入,大家对 OpenID 的应用会越来越熟悉了吧。
抽了一个晚上时间,把乐铺原来简陋的 OpenID 功能完善了一下,现在已经可以允许一个帐号同时绑定多个 OpenID 了,并且加入了通过 Google 帐号注册的功能(Yahoo! 的 Api 没找到返回 Email 的地方,所以不能注册,只能绑定)。希望能对国内的 OpenID 推动起到一些作用。欢迎大家亲自去体验。
对了,还有个秘密透漏下:凡是通过 OpenID 注册的帐号,会自动获得 N 元的折扣券一张哦,N 是多少?对不起,我也不知道……
在 lifesinger 的 blog 上看到淘宝内部使用的 TBCompressor,自己还傻乎乎的留言问有没有 for Linux 版本的。
YUI Compressor 本身就是一个 jar 包,可以方便的跨平台运行,不过每次都要打开控制台来运行,也有些不爽,参考了 TBCompressor,作了一个 nautilus-script,这下就可以直接对 js 和 css 文件点击右键进行操作了。
效果截图如下:
下载地址:MinJS
使用方法:下载后的文件放到 ~/.gnome2/nautilus-scripts 目录下即可,需要先打开文件配置你的 YUI Compressor jar 文件所在的路径。
“PHPE好久没更新了”
每每听到热心的网友们和我说类似的话,心里就很不是滋味。
一直有想把 PHPE 重新发展的计划,也一直在给自己找借口。当时 PHPE 创建的时候,动机是那么的简单,现在条件比之前充足的多,却一直在逃避。昨天难得能静下心来思考。个人的能力是有限的,每个人有每个人的梦想,小团队有小团队的梦想。
希望国内所有 PHP 爱好者,所有关注过 PHPE 的朋友们,能一起为了梦想,加入我们的建设,为国内的 PHP 发展出份力量。
目标:尽可能的使用开源工具(我知道大家时间都很有限,花在该花的地方吧),搭建新的PHP学习、协作、讨论平台及线下交流平台
延续梦想,请关注 PHPE 重建计划,期待电脑前你的意见~ 🙂
讨论请移步:http://club.phpe.net/index.php?s=&act=ST&f=7&t=13501&st=0
中国股市:http://apps.facebook.com/china-stock/
欢迎试用,并提出宝贵意见。 🙂
几个月前就有开发这个应用的想法了,不过一直没动手,这周差不多花了三个晚上的空余时间才搞定。很久没写过代码,手有点生了,还有就是在 FBML 的熟悉过程中花了太多的时间,稍候会再总结一下开发方面的经验。
Facebook 已经推出中文版了,什么时候开发者 wiki 也能中文化就好了, 目前上面中文的应用还很少,还需要国内的开发者一起努力。
公司的版本库由 CVS 转到了 SVN,转的过程就不说了,Google 上一搜一把。 为了实时看到 SVN 版本库的状态,在网上找了一个很好用的工具叫 StatSVN,会把当前 SVN 库的状态用数据和图表的方式展现出来,可以按开发者、目录、commit log 分别展示,很是强大。 在计划写个脚本每天凌晨自动生成前一年的报表的时候,碰到一些麻烦。刚开始的脚本是这样的:
#!/bin/bash
(/usr/bin/svn update /root/SVN)
(/usr/bin/svn log /root/SVN --xml -v > /root/SVN/svn.log)
(/usr/local/jdk/jre/bin/java -jar /root/statsvn-0.3.1/statsvn.jar /root/SVN/svn.log /root/SVN/ -out
put-dir /usr/local/apache2/htdocs/SVN/svnstat/ -title CNFOL -threads 50 -mantis http://xxx.com/bugs
/ -no-developer admin -include **/*.php:**/*.java:**/*.html:**/*.htm:**/*.js:**/*.css:**/*
.shtml:**/*.xml:**/*.sql:**/*.jsp:**/*.do:**/*.cfg)
(/bin/rm -f /root/SVN/svn.log)
第二天发现脚本没有自动运行,再尝试着把所有和 PATH 有关的环境变量都加进去,还是不行。后来在 winger 的协助下,通过记录日志的方式,把脚本的错误输出都记录了下来,发现出错的脚本在 /usr/local/jdk/jre/bin/java -jar /root/statsvn-0.3.1/statsvn.jar 这行,错误信息如下:
Parsing SVN log '/root/SVN/svn.log' exclude pattern ''
Logfile parsing failed.
svn log: svn info: XML document structures must start and end within the same entity.
奇怪的是,在控制台下手工运行都没问题,放到脚本里面就报错。看起来还是环境变量有问题,最终还是 winger 帮忙发现了问题,只要在脚本的头部加入
export LANG=en_US.UTF-8
就一切正常了。
插件说明
PressLine 用来根据你的 blog 内容生成一个时间线的图表出来,可以通过鼠标拖动查看,效果就像 GoogleMap 那样。点击这里 看本站的演示。
安装步骤
- 解压插件安装包,把整个 `pressline` 目录上传到你的 `/wp-content/plugins/` 目录下;
- 更改刚才上传的 `pressline` 目录权限为 777(Windows服务器用户可以跳过这步);
- 进入你的 Blog 后台,在 Plugins 菜单下激活 `PressLine` 插件;
- 上传插件包中的 `pressline.tpl.php` 文件到你目前在用的模板目录下;
- 建立一个新页面,命名为 `PressLine`,页面模板选择 `PressLine`,内容保持为空,发布该页面;
- 完成,在前台点击你新建立的 PressLine 页面即可看到效果。
Download:
Description:
A simple plugin used to display your blog entries on a ajax timeline. Just like the googlemaps.
Feature List:
- This plugins base on the time line library called <TimeLine> at http://simile.mit.edu/timeline/
- Support for WordPress 1.5, 2.0, 2.1, 2.2 and 2.3
- Caches the output
先是看了 桑林志 上的介绍,第一眼就被这个效果吸引了,再看到 mulberry 希望有人做成 wordpress 插件的形式,于是偶的第一个 woredpress 插件就这样诞生了~ hoho~
效果可以 点这里 看到,在发布文章和更新文章的时候,数据文件会被自动更新,是在 mulberry 的代码基础上进行修改的。没啥技术含量。
经过 mulberry 的同意,可以让我继续用 PressLine 这个名称,喜欢的朋友可以 点击这里 进入下载页面。
稍候我会为这个插件专门做了一个页面(页面见此)。 使用过程中有什么意见请在这里留言,我会及时更新的。:)
== Feature List ==
* This plugins base on the time line library called <TimeLine> at http://simile.mit.edu/timeline/
* Support for WordPress 1.5, 2.0, 2.1, 2.2 and 2.3
* Caches the output
公司的数据库一直在用 mysql.4.0.x 的版本,用了几年了,不过现在连 mysql 官方都停止对 4.0.x 版本的支持了,升级看起来是大势所趋。搜索了一些这方面的文章,大家的作法不一,网上的文章也有很多错误的地方。
总结了一下,由于 mysql 4.0.x 的库都是 latin1 编码的,所以主要问题还是出现在编码转换上。
废话少说,下面是经测试可用的转换步骤,测试版本为
mysql4.0.26->mysql5.0.45-community
1.latin1->latin1 原来是 latin1 字符集的数据库,升级后保留 latin1 编码;
个人不推荐这种方式,如果数据库中有包含中文字符的话,还是换成gbk或者utf8编码比较好。
这种方式下,可以直接把 datadir copy 到新的mysql 的data 目录即可,如果数据库中有包含中文,可能用 phpmyadmin 会看不到正常的结果,不用担心,用其它客户端连接的时候,都是可以正常输入和输出的,注意在用 php 连的时候,不需要加 set names xxx 字样;
2.latin1->gbk 原来是 latin1,升级后是 gbk
两种方法:
1) 修改 my.cnf,在 [mysqld] 中加入
default-character-set=gbk
后重启 mysql 服务,然后就可以直接把 datadir copy 过来了,前提是整个库中都是 gbk 编码的库的时候才建议这样,而且copy 过来后,my.cnf中的那行 default-character-set 不能再动了;
2) 手工在新服务器上建立需要的库,字符集选择 gbk,然后在旧服务器上先用 mysqldump 导出为 sql 文件,在导出的 sql 文件的起始位置添加 set names gbk; 在服务器上用以下语句导入:
mysql -u xxx [database] < xxx.sql
这种方式转换后,php 连接数据库后需要先执行 set names gbk;
3.latin1->utf8 原来是 latin1,升级后是 utf8
手工在新服务器上建立需要的库,字符集选择 utf8_bin,然后在旧服务器上先用 mysqldump 导出为 sql 文件,在导出的 sql 文件的起始位置添加 set names gbk; 在服务器上用下面的语句导入:
mysql --default-character-set=utf8 -u xxx [database] < xxx.sql
这种方式转换后,php 连接数据库后需要先执行 set names utf8;
另外有一点要注意的,4.1 版本开始,mysql 的用户密码算法有改变,php5 才支持这种新的验证方式,如果你还是使用 php4,可以在 my.cnf 的 [mysqld] 中多加一句:
old_password = 1
Oracle自带的 EXP 命令,可以很方便的从Oracle库中导出所需要的数据。基本语法可以通过 exp help=y 查看。
今天在使用的时候碰到一个问题,需要导出指定库中的前200条记录,在网上搜索了一下,大部分文章都是这样说的:
exp scott/tiger TABLES=(emp,bonus) QUERY="WHERE job='SALESMAN' and sal<1600"
于是我试着这样做
exp scott/tiger TABLES=(emp,bonus) QUERY="WHERE rownum<201"
实际测试的时候,发现老是报 LRM-00112: multiple values not allowed for parameter 'query' 的错误。再后来发现引号是需要转义的,网上那么多文章都错了……
下面是正确的写法:
windows下的写法:
C:\exp>exp userid=tkyte/tkyte tables=t query="""where object_id < 5000"""
linux下的写法:
$ exp userid=/ tables=t query=\"where object_id \< 5000\"