What’s wrong with BuzzCounter?

在自己的Blog上展示Buzz,以前一直用的BuzzCounter提供的服务,但BuzzCounter最近开始出问题, 始终显示很老的buzz,不能更新,加之他本来有的一些其他的问题,比如:1. 有广告贴;2. 贴子是通过他服务器中转的,而不是从客户浏览器直接去Google取的。

再加上Google Buzz API现在也RESTful了,更好的是,还支持JSONP,跨域的问题也解决了,所以还是觉得自己写一个比较好。

参见侧边栏和附件,Google ID在buzz.js里的第一行就可以设置。至于颜色、外观啥的,自己改改buzz.css吧。

当然,前提是你的Buzz是Public的。

附件:aXqd Buzz

Forget it…

等待华丽丽的Thinkpad W510+Windows 7 Ultimate 64-bit之后,又华丽丽的等待VMWare Workstation 7的License。正版的算都齐了,结局居然还是Hackintosh了… 用到的所有东西都来自于这里。特别的:

  1. 一定要用UltraISO把DMG转成ISO;
  2. 我只用了Darwin.iso,没用Rebel EFI.iso;
  3. Display and Audio驱动都来自这里
  4. VMWare Tools来自Darwin.iso,直接Connect就行;
  5. AboutThisMac.pkg也很好用;

令人沮丧的是文件大小,好在连Apple速度很快:

  • 7.23G Snow Leopard 10.6
  • 1.04G System Update to 10.6.4
  • 2.94G iOS SDK + XCode

当然,除此之外,由于键盘的区别,还有很多需要tweak的地方,才能让你慢慢感到习惯…

[UPDATE]

如果想要获得最新的VMWare Tools,请直接下载最新的Trial版的VMWare Fusion。(http://www.vmware.com/products/fusion/
然后用7-zip等打开DMG文件,最新的VMWare Tools在最新的darwin.iso里,具体路径在(还蛮难找的):
File:\VMware-Fusion-3.1.1-282344-light.dmg2.hfsVMware FusionInstall VMware Fusion.appContentsResourcesInstall VMware Fusion.mpkgContentsPackagescom.vmware.fusion.tools.darwin.pkgContentsArchive.pax.gzArchive.pax.LibraryApplication SupportVMware Fusionisoimagesdarwin.iso
注意:用于引导的darwin.iso请还是用老的,不要用这个新extract出来的,不然无法启动。这个新的darwin.iso只用于安装VMWare Tools。

最后还是不免俗的上涨图呗:

Snow Leopard Desktop 1

Snow Leopard Desktop 1

Snow Leopard Desktop 2

Snow Leopard Desktop 2

Better Javascript Syntax Support

近来需要看一段被混淆的Javascript,所有代码都挤在一行,很是难过。看那一屏的乱码,手动整理自然不可能,好在vim有自动格式化。

不过Vim Bundle自带的Syntax格式化出来,那叫一个惨不忍睹。网上搜了一下,将信将疑的下载了这个脚本至C:Program Files (x86)Vimvim73syntaxjavascript.vim,真的很是好用啊,呵呵

  1. Copy & Paste 拷贝粘贴
  2. :g/;/s//;r/g 以分号换行
  3. :g/{/s//r{r/g 以{换行
  4. :g/}/s//r}r/g 以}换行
  5. :set filetype=javascript 使用新下载的那个Syntax脚本文件
  6. gg=G 格式化
  7. :g/^$/d 删掉空行

打完收工,格式化得很是完美…

Video and photo solution on WordPress

1. Video Solution

在Wordpress的Plugins->Add New页面里搜索”HTML5 and Flash Video Player”,安装完成并激活后,就可以用下面的方式嵌入视频:

  • Without Html5 Video Support:
    [ videoplayer file=”video/xxx.flv” /]
  • With Html5 Video Support:
    [ videoplayer file=”video/xxx.(mp4, ogg, webm)” /]

注意, 去掉'[‘后面的空格,但保留 ‘/]’前面的空格。具体效果,见这里

2. Photo Solution

在Wordpress的Plugins->Add New页面里搜索”NextGEN Gallery“和”NextGEN Monoslideshow“,安装完成后,需要先下载相关SWF文件到’wp-contentuploads’,然后再激活。

需要下载的文件有:

  • JW Image Rotator – 非商业用途,免费
    下载地址是这里:http://www.longtailvideo.com/players/jw-image-rotator/
    解压缩后,释放imagerotator.swf文件到’wp-contentuploads’目录。
  • Mono Slideshow – 收费,25欧
    Demo地址:http://www.monoslideshow.com/demo
    需要的文件是monoslideshow.swf,同样需要释放到’wp-contentuploads’目录。
    如果你很邪恶或者你很穷困潦倒,欢迎使用google的filetype:swf,自行查找,大家共同鄙视之…
    小声说,最好的偷窃地方是这里

好了,最后配置一下路径:

  • Gallery->Options->Slideshow下面的路径;
  • Gallery->Monoslideshow下面的路径;

在Gallery里放好图片,获得Gallery的ID,你就可以开始插入图片了:

  • 基于JW Image Rotator的Slide show方式:
    [ slideshow id=2 ]
  • 基于Mono Slideshow的Mono Slideshow方式:
    [ monoslideshow id=2 ]

注意去掉'[‘后面和’]’前面的空格,效果如下:(如果要指定长宽,请用w和h参数)

  • Slide Show – 这种方式很实用,一定要试试全屏按钮,很震撼…
    [slideshow id=2 w=500 h=375]
  • Mono Slide Show – 这种方式有很多参数,特别是preset参数可以选择,具体请参考上面的Demo地址和下面的附录,效果也很炫…
    [monoslideshow id=2 w=500 h=375]

附:Mono Slideshow的preset参数:

  • preset=’iris’
  • preset=’melt’
  • preset=’ news-flash’
  • preset=’ rgb-separation’
  • preset=’ simple-focus-fade’
  • preset=’ simple-shatter’
  • preset=’ sparkles’
  • preset=’ spot’
  • preset=’ tv-swap’
  • preset=’ widescreen’
  • preset=’ white-water-drop’
  • preset=’ wipe-3d’
  • preset=’ zoom’

Steps to install mirrorrr and birdnest to GAE

  1. Create a GAE application named ‘<xxx>-proxy’;
    @ https://appengine.google.com
  2. Download the GAE SDK and then unzip it;
    @ https://code.google.com/appengine/downloads.html
  3. svn checkout http://mirrorrr.googlecode.com/svn/trunk/ <xxx>-proxy
  4. Change application name to ‘<xxx>-proxy’ and version to ‘1’ in app.yaml file
  5. Delete index.yaml file
  6. appcfg.py update xxx-proxy

自己建一个是好习惯,表老抢别人的流量用,霍霍~~~

Updated: Steps to install Birdnest to GAE

  1. Create a GAE application named ‘<xxx>-twitter’;
    @ https://appengine.google.com
  2. Download the GAE SDK and then unzip it;
    @ https://code.google.com/appengine/downloads.html
  3. svn checkout http://birdnest.googlecode.com/svn/branches/gae/
    DO NOT USE TRUNK
  4. Change application name to ‘<xxx>-twitter ‘ in app.yaml file
  5. Remove the following codes from code.py file.

    import socket
    import re
    ua = web.ctx.environ.get(“HTTP_USER_AGENT”, ‘None’)
    if ua.find(‘jibjib) >= 0:
    socket.setdefaulttimeout(60)
    elif ua.find(‘zh-CN’) >= 0:
    #raise Exception(‘unknown error’)
    socket.setdefaulttimeout(2)
    else:
    socket.setdefaulttimeout(2)

  6. appcfg.py update xxx-twitter

Slice as a copy

Fine, I have no choice, but to say I am an outman… I’ve no idea that python slice can be used as a copy of the original array, which, of course, can save us a tons of typing.

Again, when I talked about slice, I mean array slice, not immutable/optimized string slice.

>>> a = [ 1, 2, 3 ]
>>> b = a[ : ]

>>> id( a )
12822008
>>> id( b )
17547792

>>> id( a[ 0 ] )
505408872
>>> id( b[ 0 ] )
505408872

>>> a = ‘123’
>>> b = a[ : ]

>>> id( a )
12578656
>>> id( b )
12578656

BASH取得脚本所在路径

脚本所在路径通常来说,比pwd好用得多。以前,总是直接dirname $0,或者在perl里从__FILE__里取。今天又要写这个,看恶心了,想起bash自己就能做这种事情,但不记得语法了。于是google了一下”bash string manipulate”。

果然很好很强大:http://tldp.org/LDP/abs/html/string-manipulation.html

用得上的是这段:
${string%substring}
Deletes shortest match of $substring from back of $string.

于是${0%/*}把末尾’/’以后的全删掉就行了。
当然,这是相对于pwd的路径,不过已经够用了。

Notes from “Systems that never stop” by Joe Armstrong

1. isolation;
2. concurrency – built in programming language instead of operating system;
3. must detect failures – must work across machine boundaries;
4. failure identification;
5. live code upgrade – for post hock debugging;
6. stable storage;

不知道为什么,一直挺喜欢Joe Armstrong的讲座,虽然每次都是差不多的内容。可能是因为他的声音很有特色,非常的comedy 😀