小试xbmc-php-rpc

俺家里htpc装的xbmc,很炫的一个媒体播放器。

一直想把里面的内容拽出来给朋友分享,前两天找到了个php的库,可以直接用xbmc提供的jsonrpc。于是git下来试了试,花了半天时间,搞定。中间遇到两个问题。

1、连接不上服务器,测了半天,发现在这个rpc/Client.php loadAvailableCommands上挂掉,提示Invalid Params:

   private function loadAvailableCommands() {
        try {
            $response = $this->sendRpc('JSONRPC.Introspect');
        } catch (XBMC_RPC_Exception $e) {
            throw new XBMC_RPC_RequestException(
                'Unable to retrieve list of available commands: ' . $e->getMessage()
            );
        }

google一下儿,发现了这个, JSON RPC: Important changes , 喵的,竟然换了接口,于是加上了参数。

   private function loadAvailableCommands() {
        try {
            $response = $this->sendRpc('JSONRPC.Introspect',
                     array('getdescriptions' => 'True', 'getmetadata' => 'False'));
        } catch (XBMC_RPC_Exception $e) {
            throw new XBMC_RPC_RequestException(
                'Unable to retrieve list of available commands: ' . $e->getMessage()
            );
        }

搞定。

2、中文乱码,继续debug,发现在这个函数之前字符是正确的。

    /**
     * Takes a JSON string as returned from the server and decodes it into an
     * associative array.
     */
    private function decodeResponse($json) {
        if (extension_loaded('mbstring')) {
            $encoding = mb_detect_encoding($json,
                     'ASCII,utf-8,ISO-8859-1,windows-1252,iso-8859-15');
            if ($encoding && !in_array($encoding, array('utf-8', 'ASCII'))) {
                $json = mb_convert_encoding($json, 'utf-8', $encoding);
            }
        }
        $r = json_decode($json, true);
        return $r;
    }

出错的主要原因试$json中的中文本身已经试utf-8的了,但是mb_detect_encoding检测的结果,$json的编码是iso-8859-1,于是在mb_convert_encoding一下儿,就彻底乱套了。继续google,一大堆推荐我用url_encode来解决这个问题的。最终找到一个靠谱的。做个小修改。

    /**
     * Takes a JSON string as returned from the server and decodes it into an
     * associative array.
     */
    private function decodeResponse($json) {
        if (extension_loaded('mbstring')) {
            $encoding = mb_detect_encoding($json,
                    'ASCII,utf-8,ISO-8859-1,windows-1252,iso-8859-15');
            if ($encoding && !in_array($encoding, array('utf-8', 'ASCII'))) {
                $json = mb_convert_encoding($json, 'utf-8', 'auto');
            }
        }
        $r = json_decode($json, true);
        return $r;
    }

事实证明mb_convert_encoding直接auto效果很好,呵呵,搞定。

Posted in 技术帖 | Tagged , , , , , | Leave a comment

Xi’an 5日行

Day1. 陕西历史博物馆。

Day2. 骊山、华清池、兵马俑

Day3、古城墙

Day4. 世园会

Day5. ZZzzz…

More photo

 

Tagged , , | Leave a comment

Muhaha,这下儿完美了。

看一下儿右面那个长长的列表,我挺佩服我自己的,竟然从05年就开始博了,哈哈。

Tagged | 2 Comments

AD error code

用ldap方式访问AD域的的错误一般会如下格式:
LDAP: error code 49 – 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 52e, vece
其中红字部分的意思如下:
525 – 用户没有找到
52e – 证书不正确
530 – not permitted to logon at this time
532 – 密码期满
533 – 帐户不可用
701 – 账户期满
773 – 用户必须重设密码

Tagged | Leave a comment

ios 5

10 个最大的亮点
1、通知系统
把Android上面唯一吸引我的特性给copycat了,无耻但是俺喜欢。很帅。
2、报纸订阅
很帅、但是估计用不上,说不好Instapaper会怎么演,我也没用过那个玩艺。不过貌似不是一个东西吧,News Center应该是面向付费订阅的。跟rss订阅什么的不搭噶。
3、twitter
牛,可惜是跟个虚构出来的公司合作。
4、safari
还不错,终于有阅读器了,而且比mac上的阅读器更牛,希望lion的阅读器也这样儿。
5、task
没啥感觉,界面看着有点儿复杂了。
6、camera
很帅,本来就帅,现在更帅。
7、mail
没用过,没感觉。
8、pc-Free
这个很帅,终于不需要电脑了。
9、Game Center
没用过,没感觉。
10、iMessage
我觉得说这个玩艺会影响kik纯属扯淡,如果这个行的话,iChat其实比很多聊天软件都好的。Messenging服务不能跨平台,有毛用呀。苹果牛B,还能把世界上的手机都变成他的?

Tagged | Leave a comment

洛杉矶之战

2个小时的电影,前20分钟快睡着了。
摇晃的摄影机是个挑战,尤其是一开始那沉闷的20分钟,觉得想吐。
进入战场后,还是挺过瘾的,结尾很好。看来摇晃的摄影机必须配合一下儿战斗画面,别什么地方都摇才好。

外星人的科技太差劲了,多来一些这样儿的让我们地球练练兵吧。

其实电影的名字好似是 “世界入侵” 副标题才是”洛杉矶之战”。应该要拍续集的吧。

另外看的时候不知道怎么就想起来第九区里面的那群外星人,还以为是回来寻仇的呢,呵呵。

Tagged | Leave a comment

Synergy rules

两年前,俺换公司,买了macbook,公司的办公环境是微软系+RTX。大家已经用的很习惯了。俺也没有那么大能量去推动换这个玩艺。
于是俺相继使用了下面几个方案:
方案1、直接本机VMware + windows, RTX/Office用虚拟机里面的。VMware让两个系统衔接的很平滑,用起来很舒服。主要跑跑eclipse,写写shell脚本,很不错。这样大约平稳运行了小1年,两个系统里面累积了各种垃圾以后,4G内存也不太够了,有些慢。
正好家里htpc+下载机的方案整合,节约出一台P 4 2.0,而且恰巧出了Office 2011,于是有了方案2。
方案2、Mac原生的Office 2011 + RTX on Windows 7 + 远程桌面。原生Office还不错,尤其是Excel,很好用。Outlook凑合。因为没有了虚拟机的消耗,整个机器跑的仍旧很舒服。远程桌面连到windows上,反正就是一个rtx,也没什么大问题。共享有些不爽。

周日,偶尔看google reader,若愚共享了一个东西叫什么Synergy,本来就是随便一看,看了以后发现是自己一直想要的。于是开始试验现在的方案3。
方案3、两台机器单独存在,通过Synergy共享鼠标键盘。
参考这里:http://synergy-foss.org/

图片已经很明确的说明了这个程序的作用。
安装一开始以为会比较麻烦,但是实际过程出人意料的顺利。
windows上有个安装程序,直接安装即可。
mac上一开始直接用的命令行,也能搞通,但是不方便。后来找到了SynergyKM,配置简单多了。
过程自己试试,我下面只说一下儿我这个配置下遇到的几个问题:
1、windows 7下如果需要再logon界面就生效,需要把Synergy 作为Service安装。却省windows7下面,运行synergy的身份不是管理呀,所以一直不能安装service。后来想了一下儿,貌似windows 7权限更严格了,于是在qsynergy.exe -> 右键 -> 用管理员身份运行。之后Service安装成功。logon界面共享生效。
2、Synergy目前没有什么安全措施,不过问题也不是很大,因为被控制方必须以client身份连接道键盘鼠标所在的机器,所以我也没想清楚到底有什么大的漏洞。只要我不主动连到一个乱七八糟的IP上就行了。

Tagged | Leave a comment

如何在linux(os x)下批量给字幕文件改名字

在mac下面,选中文件,按回车的话,会直接出现修改名字的编辑框。但是如何一次改很多文件名那?比如说电视剧集的字幕文件,恰巧每个字幕文件都差了一个“.UNCUT.”。
却省可以一个一个改,第一次Friends那个uncut版本,俺是这么做的。干了一季。发现不是程序员出身的俺应该用的方式。
一个就算了,这么多。
虽然写程序解决和一个一个改,加上中间查找资料的时间,最后可能差不多。但是乐趣差了很多。
第一次俺写了个shell脚本,很笨的解决了。那个程序适用性很差,中间个把文件还需要修改一下代码才能搞定。

很不幸,第一次的文件是VobSub图像格式的,没法转AAS,俺的ServeToMe也不支持。于是继续下载。找到了一个英文的。
不出预料的是,又是每个文件都差了个”.UNCUT.”。

这次懒得改程序了,恰巧前两天解决了sed使用命中变量的写法,开始用rename。rename基本上是一个使用正则表达式来给文件改名的perl脚本。正则的写法基本和sed相同,稍有差别。通常的调试步骤是:
1、ls + sed 调试正则。
ls | sed “s/txtout/txtin/g”

这次的任务是媒体文件名是”Friends.S01E02.UNCUT.DVDRip.XviD-SAiNTS.avi”,字幕文件名为“Friends.S01E02.DVDRip.XviD-SAiNTS.English.srt”。所以俺用的正则是:
“s/\(S..E..\).DVD/\1.UNCUT.DVD/g”
括号用来分组, \1 用来去命中的部分。(当然写这篇文章的时候发现其实直接把.DVD替换城.UNCUT.DVD就行了)

2、用rename套用调试好的正则。
rename “s/(S..E…)DVD/$1UNCUT.DVD/g” *.srt
注意使用rename的时候不需要给括号转义,取命中的变量直接用$1而不是\1。

齐活。

md,写完了这篇文章的时候在

http://tips.webdesign10.com/how-to-bulk-rename-files-in-linux-in-the-terminal

看到rename有个参数。
-n 专门用来test正则的。

Tagged | Leave a comment

iPad 2

iPad2出了,一代清仓降了100美元。
对消费者来说是个挺好的事儿,这事儿在苹果产品销售的历史上是个非常平常的事儿。
每次新品发布,用户都可以根据自己的喜好买一个便宜些的老款或者和原来价格差不多的新款。

但是这次iPad 2出来,汉王的老总竟然跳出来说“苹果总是在断同行的路”,呵呵。

一些尾货而已,ipad 一代应该不会再产了,如果担心一代的价格威胁到了其它平板的销量的话,大可不必担心。

要担心的,反而是在面对ipad2的直接竞争时,是否能战胜对方。

想当初,一堆平板跳出来的时候,摄像头,cpu等等等等ipad1没有的都出来了,然而因为有了这几个玩意,就觉得自己应该买的比ipad贵。银河竟然要卖6K,首先个头就小,也不见轻了多少,凭啥呀。用户的心理看到一个大个的和一个小个的,首先就会觉得大个的应该贵。好了,现在ipad2出来了,该有的都有了,屏幕还大,卖的还是便宜,这个帐怎么算,消费者心里很清楚。

不得不说一下儿苹果的一贯定价政策,偏高,但是基本会让你觉得物有所值,你通常的选择是“我什么时候需要一个”,而不是考虑是否值的的问题。但凡买到手,都能让你觉得“是个玩意儿”,这个感觉在我当年买第一个超薄的sony walkman时也一样能感觉到。另外就是除了新品出来,绝对不降价,当然你有路子可以找到各种各样的促销。这就从另外一个方面让你觉得东西基本保值,而不会再买了以后很快就觉得“我靠,亏了”。当然,如果碰巧在2周+1天前买了ipad 1代的不在此列。

Tagged | Leave a comment

V星入侵

终于把V星入侵拉下来了。
整体有点儿4400的炉子,不过另一方换成了外星人而不是被改造的人。
演员阵容基本上也是4400+firefly,看到Anna露面还是有些激动,不过细看,firefly里面那个体年轻美貌的魅姬美貌依旧,不过下巴上的皱纹稍微漏出一些岁月的痕迹。相比之下,老爷们变化小些,无论是4400里面的警长,还是寂静号上的飞行员,看上去变化都不大。
片子排得异常大气,至少第一季里面大量的外景让人觉得好似大片,很爽。看了两个月得stargate,SGC常年得地下环境很容易让人得幽闭症。
在这个吸血鬼和狼人充斥屏幕的年代,能有一部这么高质量得科幻剧作,真是不容易,呵呵。

Tagged | Leave a comment