sqlite来了

面对胃口越来越大的MySQL,为了节约咱VPS可怜的内存shuai,全站改用SQLite。瞬间30多MB回来了。cool

 

“站点首页”去flash

“站点首页”的照片墙原来是“捡”别人的flash代码改了改做的,最近简单学习下JQuery,用JS重构,去除flash,效果保持不变。


增加“我的微博”

微博大道而行,我也得跟上:

1、顶部栏目新增“我的微博”,自动采集最新20条,来源有我的新浪微博和腾讯微博,抓取的缓冲时间为300秒;腾讯微博抓取偶尔有“check sign error”错误,略不稳定,不知是腾讯接口问题,还是偶对oauth_signature的算法实现有问题,待观察
2、左侧栏目增加微博入口


鉴于微博口水较多,暂不加入RSS输出,酱紫~~~

写这个页面的时候,粗略看了“腾讯微博开放平台”和“新浪微博开放平台”API文档中OAuth和timeline的一些描述、范例和接口说明,前者的文档需要努力呀,大小写错误、描述不清晰等问题较多。

---------------以下 2011年5月5日补充------------------
“腾讯微博抓取偶尔有“check sign error”错误”,这个问题找到了,是由于生成的oauth_signature拼装到url的时候,没有做urlencode,当其中包含+字符的时候,参数传递就会出现问题;其他参数也忘记了,一并加上。

附:以调用腾讯“broadcast_timeline 我发表时间线”为例的PHP片段代码,主要为了说明oauth_signature的生成和url的拼装,其中考虑有同名参数时需再按value排序(If two or more parameters share the same name, they are sorted by their value):
[quote]$QQ_APP_KEY = "xxx";
$QQ_APP_SECRET = "xxx";
$QQ_AUTH_TOKEN = "xxx"; //Request Token
$QQ_TOKEN_SECRET = "xxx"; //Request Token Secret
$QQ_BROADCAST_TIMELINE_URL = "http://open.t.qq.com/api/statuses/broadcast_timeline";
$QQ_HTTP_METHOD = "GET";
$QQ_DEFAULT_COUNT_NUMBER = 20;

$QQ_BROADCAST_TIMELINE_PARAMS = array (
 "format" => "json",
 "oauth_consumer_key" => $QQ_APP_KEY,
 "oauth_signature_method" => "HMAC-SHA1",
 "oauth_token" => $QQ_AUTH_TOKEN,
 "oauth_version" => "1.0",
 "pageflag" => 0,
 "pagetime" => 0,
 "reqnum" => $QQ_DEFAULT_COUNT_NUMBER,
 "oauth_timestamp" => "",
 "oauth_nonce" => ""
);

//init variable params
$QQ_BROADCAST_TIMELINE_PARAMS["oauth_timestamp"] = time();
$QQ_BROADCAST_TIMELINE_PARAMS["oauth_nonce"] = md5(uniqid(rand()));

//sort params: If two or more parameters share the same name, they are sorted by their value
ksort($QQ_BROADCAST_TIMELINE_PARAMS);
foreach ($QQ_BROADCAST_TIMELINE_PARAMS as $k => $v)
{
 if (is_array($v))
 {
  sort($v);
  $QQ_BROADCAST_TIMELINE_PARAMS[$k] = $v;
 }
}

$params = "";
foreach ($QQ_BROADCAST_TIMELINE_PARAMS as $k => $v)
{
 if (is_array($v))
 {
  foreach ($v as $k2 => $v2)
  {
   $params .= urlencode($k)."%3D".urlencode($v2)."%26";
  }
 }
 else
 {
  $params .= urlencode($k)."%3D".urlencode($v)."%26";
 }
}
$params = substr($params, 0, strlen($params) - 3);

//generate signature base string, key and oauth signature
$signature_base = $QQ_HTTP_METHOD."&".urlencode(strtolower($QQ_BROADCAST_TIMELINE_URL))."&".$params;
$signature_key = $QQ_APP_SECRET."&".$QQ_TOKEN_SECRET;
$oauth_signature = base64_encode(hash_hmac("sha1", $signature_base, $signature_key, true));

//generate full request url
$url = $QQ_BROADCAST_TIMELINE_URL."?";
foreach ($QQ_BROADCAST_TIMELINE_PARAMS as $k => $v)
{
 if (is_array($v))
 {
  foreach ($v as $k2 => $v2)
  {
   $url .= urlencode($k)."=".urlencode($v2)."&";
  }
 }
 else
 {
  $url .= urlencode($k)."=".urlencode($v)."&";
 }
}
$url .= "oauth_signature=".urlencode($oauth_signature);

//get remote data by url
...

[/quote]

又又搬家

架不住XEN的诱惑,小站又又搬家了。
1、我自己访问和管理貌似要快点;
2、可以做L2TP/IPSec PSK的VPN,ssh转发和pptp似乎不能满足某些时候的需求,哈哈
3、对于XEN架构的VPS来说,价格还不错,有兴趣也去看看吧:Colo2VM

两个小更新

1、“站点首页”增加提示
曾经有人给我说入口不明显,一直想找一个合适的提示效果,终于发现了,加上。
当鼠标移动到左侧封面图片或者底部“点击进入我的BLOG”的时候,会有一个弹出的提示效果。
homepage


2、“我的相册”修改布局
也是偶然看到别人用了这种当鼠标移动到图片上时候才弹出提示说明的效果,我觉得不错,借来试用一下。同时,也把封面图片变大,看起来爽点。
my photo


以上效果同时兼容Chrome、IE、Firefox。

又搬家

扛不住VPS的诱惑,把站点搬家了。

这次选择的是HighVPS.com中最低配置的Unmanaged VPS,感觉还行,偶尔抽风,米国便宜的似乎都是这个样子,机房在米国东海岸,每次访问都要穿过海底光纤,在米国西岸登录,然后再横跨了米国大陆才能到。HyperVM的虚拟技术和平时用的VPC、VM、VBox什么的有不同,使用上只能说是近似真正的服务器,还是还是有点点限制,不过对于一般的应用,完全没问题。

遇到除了一个很恶的问题。我发现VPS的时间在时区正确的情况下,慢了4个小时,于是发ticket要求修改母鸡的时间,和鬼子纠缠了3天3夜,从头到尾都在喊我用不同的方式改timezone,最终还是不给我改母鸡的时间,算了,我放弃,ticket就open放在那里,评价全是poor。自己把VPS的时区和博客的时区都调到GMT-12,然后把历史博客涉及日期的数据都减了14400秒(4小时,不然我历史数据就会快4小时)。期间还想过把linux或者php的time()函数源码改了重新编译,但是好麻烦,日后也不好维护,还是直接改数据算了。

现在用的组合如下,全部用源码编译安装,咱也玩玩现在流行的nginx+php-fpm,免得变成outMAN:
bind-9.7.0-P2
vsftpd-2.2.2
mysql-5.1.47
nginx-0.7.65
php-5.2.13 + php-5.2.13-fpm-0.5.14 + eaccelerator-0.9.6

BTW.前几天的某天,Domain.com有0.99美元注册.com .net .org域名的优惠,考虑已经有.net和.info的了,于是买了个allmoneygomyhome.org来玩。

装了才几天,发现暴多的网络攻击,主要是密码试探,做了很多加固的工作,不要变成肉鸡了。。。

“我的音乐”更新

此前一直使用的在网页中嵌入MediaPlayer的方法播放背景音乐,Chrome测试阶段还可以调用MediaPlayer,正式发布之后就不支持了,提示装QuickTime,安装之后也不能正常播放
优点:支持mp3和wma;支持文本方式的播放列表,每个URL一行即可
缺点:界面不可控制;多浏览器支持不好

昨天无意中看到这个jPlayer(http://www.happyworm.com/jquery/jplayer/),下载回来改了改,感觉还行就换了
优点:多浏览器兼容好,测试了IE7、Chrome、FireFox都兼容;界面可控;支持ogg(似乎现在还不广泛)
缺点:不支持wma




播放策略仍然是:
站点首页:总是自动播放
博客首页:只在首次进入(根据是都存在会话判断)时自动播放
如果有多首歌曲,则乱序排列

博客又搬家

之前用的fatcow被封,寻觅、对比和试用了半天,最后终于决定搬家到freehostia。由于之前付费遇到了问题,导致又拖延了一周,现在终于全部搞定了,正式落户。

最开始是试用了免费版(Chocolate Plan),感觉速度还是可以,免费版有500KB文件上限和CURL等使用的限制,于是升级到收费的最低版本(Watercircle Plan),一年$35.4,价格还是可以,流量和空间容量都还是够用,最重要的是有可以变换IP,只要不是整段被封,就不用再次搬家了,呵呵。

当前使用情况(In Use是已经使用的,Available是还可以使用的):

增加站点首页

一直以来首页都是直接跳转到BLOG里面的,最近看到几个漂亮的首页,倍受刺激,于是决定自己也整一个。左侧图片和下部链接点击后进入BLOG,右侧图片点击后打开查看大图,所有图片不定期更新。


首页用到了以下几个东西:
1、FLASH相册,有源码,自己修改去除了分类链接,修改了布局和大小、XML数据格式,点击动作修改为与lightbox交互:http://www.sinker.cn/html/down/galley2/20070829/855.shtml
2、用于在HTML中动态插入flash的JavaScript模块swfobject:http://code.google.com/p/swfobject/
3、图片动态显示效果工具lightbox,自己修改增加了垂直方向自动居中的功能:http://www.huddletogether.com/projects/lightbox2/
4、用于连接flash和lightbox的JavaScript模块flashLightBoxInjector:http://www.bram.us/projects/flashlightboxinjector/

更换模板

找了一个模板,自己改了改,看着比原来顺眼点

左新右旧