2014年4月6日

树莓派(Raspberry Pi)上听豆瓣电台的正确方法

在树莓派上折腾步进电机的时候,看到 Hugo Zhu 的blog上有用树莓派听豆瓣fm的方法。看了代码,虽然很简单,明显不够完美,只能播放默认频道,没法对播放列表进行各种控制。

想了一下,最简单的方法是, 从豆瓣那边拿到歌单,然后组织一下,丢给我部署在树莓派上的mpd,然后播放和各种播放控制的事情就丢给 mpd 去管理,只要做个简单的web界面控制下歌单选择就ok了。google了一下,豆瓣fm的api已经被人逆向出来了(豆瓣FM-API),mpd控制协议现成的(python-mpd2)。就在我撸起袖子准备开搞的时候,突然想到,这样的事情,应该有人干过了吧?于是又google了一下,果然,这个 项目做了我全部的需求! ^_^

接下来就简单啦, 先把树莓派的ruby升级到1.9.1(早期树莓派默认是1.8的)。然后...就听歌吧...

现在目测只有两个不足:
  • 不支持mpd认证
  • 不支持在web管理页面上暂停播放,要去mpd client上搞,略不方便
作为ruby苦手, 只能看最近能不能照猫画虎支持一下,不行就只能等作者了 T.T

2014年3月15日

SSH 使用保存在LDAP里的公钥(Public Key)验证用户

鄙司员工的账户密码都保存在LDAP中统一管理,平时做各个独立系统鉴权操作很好用。但是若干主机登录时使用密码登录颇不方便,特别是用autossh做通道时。最好的办法还是每个人把自己的公钥上传到LDAP中, 然后用Key认证登录到系统中。

今天上网转了一圈, 了解一般的解决方案是在sshd_config 里配置 AuthorizedKeysCommand,

参数是一个命令。当用户登录时, 会调用这个命令, 把用户名传进去, 程序会返回该用户的public key。具体见 man sshd_config。

虽然有不少人写过 针对这个配置的ldap读取脚本,不过看起来都不满足我的需求。redhat也出过一个,不过没有找到它的独立项目,而是和redhat整合在一起,我也很不喜欢,就自己写了一个。
https://github.com/sean-lin/pylpk

测试了一下,基本能用。

2010年1月30日

pike的坏味道

今天在twitter上看到laiyonghao同学在推荐pike,他是在和python, C++这两种我基本上算是熟识的编程语言做了比较后,才做的推荐。也引起我的兴趣。
看了一个下午pike的推荐,感觉是个靠谱的语言,能用来干活。不过,大概是设计的年代久远的缘故,也弥漫着一些坏味道,总让人觉得异常不爽.

1. 没有bool,用1, 0来表示真假也就算了,还用0来表示nil
2. 预处理器和宏
3. 没有typedef.
4. 没有对象模型里没有类似interface或者鸭子类型的东西.

好吧,更重要的是,没有任何让人看起来非用不可的东西呀...
大概,用来替换掉lua做游戏的开发脚本还是可以的,pike 和MUD 有很深的渊源, 是在PLC的基础上开发出来的。大概用来描述游戏逻辑还是不错的吧,而且速度足够的快.

2009年6月14日

科幻,阅读和其他碎碎念

最近很忙,一直没有时间看完一些大段的文章。虽然想读的书甚多,但是只见书单越长越长,却总是没气力开打超过200K文本去阅读。更不用说跑到图书馆,或者书店,淘一些小说来看了。

昨天在豆瓣上闲逛,看到这个有趣的小组
经典短篇阅读
http://www.douban.com/group/74135/

喜欢得紧。大概,以我的阅读速度,所谓"三上"时间,大概也就只能看里面的一篇文章。

一直喜欢比较短的文章,小时在家,有闲暇拿出来翻翻的,大多是鲁迅杂文,王小波,古文观止,甚至十万个为什么(笑),概因能在那时那刻读完,不会留下念想。加上长的文章,总会有高潮低谷,阅读时又容易受外事影响,常常放下后,就再也没重新拿出来,然后再看看结局简介,就草草了之,不可谓不遗憾。阅读一本长篇小说,对于现在的我,大概已近似奢望。

而这个小组的妙处,则在于不是短篇小说,而是短篇阅读,各种文章夹杂期间,虽然良莠不分,但总体上水准还不错,慢慢阅读下来也不会太累。不像以前拿着鲁迅的杂文全集,全是老先生的嬉笑怒骂,读多了自己的火气也大了不少。

今天偶然看到的闻名已久的《真名实姓》,读后感慨万千。开始因让FBI知道真名而受到威胁的主角,让我想起现在的实名制。还有从信息公司里租借运算时间,都快赶上现在的云计算了。当故事高潮,男女主角如上帝般俯瞰着世界,全世界的信息悉数从他们的思维中流过时,不知为何,我亦莫名的兴奋,大概,Google
的那班人现在就快有这种感觉了吧。结局更让我喜欢,虽然和攻壳的结局有点像,却阳光了不少。

后来看看作品年代,1981年,我彻底傻掉了。81年,我还没有出世,第一台IBM
PC也没生产.互联网连邮件协议都还没有。然而,作者描绘的计算机世界已经慢慢的变成了现实.... 这大概,就是科幻的奇迹和魅力吧。

阅读的几篇文章之后,更是想买一个Kindle之类的东西了,翰林汇或者foxit也好,不然给个table pc我也忍了,难不成要去买Q7...
为啥到现在还没一个能比较好满足我要求的东西呢 >_<

最后,转贴一则冷笑话:
YY先生语录359
from 费乐沃||PhilColumn 0.4
YY先生说,对理工科男生说,摄影是门槛最低的艺术形式了;可是他们所受的专业训练和他们的性别,很容易让他们沦为器材派。
http://www.philewar.org/index.php?itemid=1839

难不成我看书也看成器材派...

#END

2009年6月3日

阉割与自我阉割

6.4就快到了,当然今年是20周年,所以中共给的待遇也格外的高.
昨天才知道,Flickr,twitter,bing都被封了,加上前段时间的youtube,当然,还有blogger本身,我这篇blog都是通过邮件寄送的。大中华局域网已经初具规模了。中共Good Job!

不知道啥时候把脸书,gmail,greader啥的都封了,那就真和谐了。

让人气闷的,除了中共的阉割,douban的自我阉割才真是让人无语。

有一本有趣的书.《5月35日》 http://www.douban.com/subject/3083264/
昨晚我无意看到的。于是顺手加了个书评,

题目:好名字呀好名字
内容:充满了艺术感.

结果早上看邮箱,发现7:26的时候,这篇书评让豆瓣删除了。理由是:

你好,你发表的 好名字呀好名字 ,因为 讨论内容与主题无关 已经被豆瓣删除。

附:内容被删除的情况较多时,帐号有可能被自动停用数天。请参考:
用户管理细则 ( http://www.douban.com/about?policy=userrules )
社区指导原则 ( http://www.douban.com/about?policy=guideline )

--豆瓣

为啥会和主题无关呢。3月35日就其书名来说,确实是标新立异,又符合童话这个文体,
人家感叹下也不行?

好吧,我知道你们知道我发贴说的是什么,然而,这样的擦边球都不让人发,G点也太多了。

中共的网特们,你们辛苦了,在这个悲伤的纪念日里,你们通宵达旦,不眠不休,为建设和谐社会努力工作着,真的太不容易了,愿你们浑身G点,夜夜高潮,永不痔疮。

2009年4月23日

Awesome 3.2.1 At Ubuntu 9.04

前几天经受不了诱惑,装上ubuntu 9.04 rc. 发现该死的libxcb版本还是低于awesome 当前release版本3.2.1的需求。于是只能自己编译了.

编译好最新libxcb 0.3.4,顺利的装上awesome,却发现awesome默认的热键,mod4(win键)不能用. 在网上google了一会,才发现awesome 3.2.1并和libxcb 0.3.4 冲突, git上的最新版本已经fix了,于是下了最新版本,却发现,awesome依赖的几个库又更新了。

awesome这帮人真不让人省心呀,为啥老是要依赖最新的第三方库呢,现在的大部分库,API都是稳定的,至少升级了也能保持向下兼容,何必每次都折腾得其他人鸡飞狗跳呢。

最后乖乖的把libxcb降到0.3.3,热键终于能用了。

试用了一下午,结论是,果然,程序员还是要用能够自己编程WM。自己写了点lua在里面,轻松搞定了很多一般wm不能解决的问题,爽!

2009年3月28日

有爱的lunatic python

还是在做上篇blog说的某半所见即所得的的ui编辑器,终于快搞定了。有时间可以写写里面用到的一个好玩的库。
lunatic python

用途是让你能在python中调用lua,在lua中调用,在python中调用lua中的python... 恩。大概就是这样...

具体的使用方法见项目主页,用法很简单,有兴趣的还可以看看代码,也非常简单,支持自省,基于C的动态语言互相沟通还真简单。

然则这个项目更新有点慢,在ubuntu的Lua5.1下不能正常编译,要参照 lua-user wiki 上文章做些修改.

最后有个小tips,如果打算在python中调用lua,载入lua的第三方c库,要在python中先执行

import sys, dl
sys.setdlopenflags(dl.RTLD_NOW|dl.RTLD_GLOBAL)
import lua

然后才能lua.require("ooxx"). 因为linux下lua的第三方库都是不指定动态链接liblua.so的,python默认import用的dlopen又是RTLD_LOCAL,不会把lua模块的符号表给后面的库使用,
后面的C库就会找不到lua的C函数的。