Category: 小小草

IT 技术领域学海无涯。其实任何领域都学海无涯,无非 IT 发展太快了,让我有更多嘘唏。希望我掌握的技术有如小小草,虽然渺小,却有旺盛的生命力。

  • Find and share in Google Drive

    我今天才意识到,Google 域用户 Google Drive 共享设置里的 People at some domain find and view / find and edit,指的是用 link 去 find。我一直误以为是可以按 keyword 去 find,或许它会自动出现在域内所有用户的 Shared with me 列表里。

    Google drive share setting
    Google drive share setting

    如果做域内用户共享,应该手动发送 link 给他们;任何一个用户访问过该 link 以后,他的账号会出现在 Who has access 列表里。

    如果手动添加用户账号在 Who has access 里,他才能在 Shared with me 里看到该共享资源。这大概是 Shared with me 之所以叫 Shared with me 而不叫 Shared with us 的原因吧。

  • Social login plugin for WordPress, which one is the best?

    My client is asking a way to manage 3 WordPress sites in one place. I could use WordPress multisite feature by creating a network of sites. However, I felt difficult to control those sites when WordPress multisite was turned on. I would rather have those sites installed into separate databases but have a SSO feature. It is actually what my client is asking for.

    I started looking for a social login plugin for WordPress. I shortlisted four plugins.

    Social login plugins for WordPress
    Social login plugins for WordPress
    • Social Login
    • Social Login for wordpress (LoginRadius)
    • Social Login & Social Sharing by Janrain (Janrain Engage)
    • WordPress Social Login (WP Social Login)

    All installation, I found the first three plugins require create an account with a federal login service provider site of the author, I assume. Although a basic account accommodate 2,500 users or less is free, I do not want to create such an account. It adds risk – everyone can not login if the federal login service provider server is down. Meanwhile, social login is to eliminate create more and more account. I do not want to achieve this goal by creating an intermediate account myself.

    Luckily, I have the forth plugin – WordPress Social Login. It asks me to create Application ID and Applicate Secret with each login service provider. That is what I was expecting.

    It is a coincidence that all the first three social login plugins sit themselves in a top level menu in WordPress sidebar. Are they so important? I am not an aggressive person and I do not like aggressive software.

    WP Social Login modestly sit under Setting menu. That is the way I like!

  • AnTuTu Benchmark on my devices

    I am looking for a suitable hardware for Hotel TV project, so I am keen to know the candidate devices performance. Raspberry Pi Model B has been already ruled out. At moment the first choice is FX5. As comparison, I benchmark all android devices I got.

    Samsung Galaxy S3: AnTuTu Benchmark 15912
    Samsung Galaxy S3: AnTuTu Benchmark 15912
    Samsung Galaxy S2: AnTuTu Benchmark 7513
    Samsung Galaxy S2: AnTuTu Benchmark 7513

    KuYouLe FX5: AnTuTu Benchmark 5215. It is very disappointing as it does not meet what manufacturer claimed benchmarch.

    Geniatech ATV1000 (A80KW): AnTuTu Benchmark 2005.

    Motorola MB200: AnTuTu Benchmark 605
    Motorola MB200: AnTuTu Benchmark 605
  • Rescue a VBox missing l_intl.nls

    有人求助说一台 Windows 虚拟机坏了,启动不了。我去一看,黑屏白字,说,missing C:\Windows\System32\l_intl.nls,要我用 Windows 启动盘里的故障修复台修复。

    Missing l_intl.nls
    Missing l_intl.nls

    怎么修复呢?没有说。我手边一时没有启动盘,自作聪明地把坏掉的虚拟机的硬盘文件 vhd 挂载到另一台虚拟机下做第二硬盘,查看 \Windows\System32\l_intl.nls 还在不在。在另一台虚拟机下看这硬盘挺健康的,\Windows\System32\l_intl.nls 也在。

    我仍是复制了一份 l_intl.nls 给它,还是启动不了。

    还是 Google 来一个办法,去取来 Windows 启动盘,在故障修复台命令行执行

    
    chkdsk c: /r
    
    

    30G 的硬盘,花了 1个多小时修理完毕,没提示有什么磁盘错误。重启,非常遗憾,仍是黑屏。

    接着又试着把坏掉的虚拟机的硬盘文件 vhd 挂到另一台虚拟机下,直接在它的 Windows DOS 里执行

    
    chkdsk c: /f
    
    

    这跟故障修复台环境不同,chkdsk 能接受的参数也不同。这次修理快了很多,提示了一堆 Index 错误,看不懂,也不知修复了没有,看重启,仍是黑屏。

    之后又尝试种种工具,无一有效。直到看到一个论坛的角落里(因为我花了几小时才看到,所以是角落)有人说,”YET ANOTHER Microsoft screw up”。一语惊醒梦中人!

    那人建议试试 BIOS 重置、测试下内存(换下有问题的内存条)。我的是虚拟机,没有 BIOS 重置一说。我就新建了一个虚拟机,加载既有的 vhd,mamma mia,重见 Windows 的徽标在飘扬,舒了口气。

    但是,我高兴得太早了,我很快发现此 Windows 非彼 Windows——我忘了这是虚拟机。刚才新建的虚拟机,加载的 vhd 文件,是有问题的虚拟机下的硬盘的最初状态!最初状态非常健康。这也是之前种种努力,把它挂载到其他虚拟机下尝试修复,修复时没发现问题,l_intl.nls 文件也在,而在有问题的虚拟机下真正加载的不单是这个 vhd,而是一个 Current State。修来修去,修的都不是 Current State。

    明白这个道理之后,剩下的事情就很简单了。

    我赶紧把 Current State 生成一个独立的 vhd 文件。在有问题的虚拟机的目录里,找到 [虚拟机名].vbox 来查看一下,从中找到 Current State 对应的文件名,我的是 {991f2a80-9fbe-48b5-9c02-27f745bdf81c}.vhd。这个 vhd 不是独立的,它是从最初状态,经过一次次 Snapshot (如果有的话),diff 得到的 Current State。

    怎么把这些 diff 合并得到一个独立的 vhd 文件?VirtualBox 有个简单的命令:

    
    VBoxManage clonehd \{991f2a80-9fbe-48b5-9c02-27f745bdf81c\}.vhd currentstate.vhd -format VHD
    
    

    这命令必须在原 host machine 上运行,否则哪里去找 {991f2a80-9fbe-48b5-9c02-27f745bdf81c}.vhd 的 parent,parent 的 parent…

    这次做的 currentstate.vhd,再次挂载到其他虚拟机里作第二硬盘,一看,果然,\Windows\System32\l_intl.nls is missing,赶紧,复制一个给它。

    然后以 currentstate.vhd 为第一硬盘,加载到坏掉的虚拟机里,终于又见 Windows 的徽标在飘扬——这一次是真的真的真的 Windows!

  • Enable desktop sharing in Fedora 18

    I remember in Fedora 16, desktop sharing is pre-installed with the system. Now I am on Fedora 18, and I want to use it as a VNC server. I don’t want to install tigervnc-server. I just want to use the same one comes with Fedora 16.

    On Fedora project site, it still says

    To activate desktop sharing, select System > Preferences > Internet and Network > Remote Desktop from the user menu.

    However, in Fedora 18, the path has changed, so I thought the name of desktop sharing might have changed as well, but I assumed it should be pre-installed in Fedora 18. It took me hours trying to find remote desktop before I found somewhere it says remote desktop comes in Vino. I could not remember what Vino was, but afterwards was quite simple:

    yum install vino

    Then I found Desktop Sharing in Internet (no longer in Preferences).

    P.S. After I wrote this post, I realised I learned Vino 4 years ago! But I totally forgot it.

  • DeVeDe is the only software I made it working to burn MP4

    我有一些 MP4 文件,想把它们刻录到 VCD 片上,在 DVD 机上演示用。

    我在 Fedora 18 下想用 Brasero 直接刻录 MP4,不成功。

    有人说,把 MP4 转成 MPEG 格式就可以了,我用 VLC 转换 MP4 成 MPEG,只有一个 MP4 成功,其他 MP4 转换时总有个我看不懂的 error message。但即使是已转换成功的唯一一个 MPEG 格式文件,用 Brasero 刻录时又有一个 我看不懂的 error message。

    Devede
    DeVeDe

    我开动 Windows,想找一款 Windows 平台下的视频格式转换软件,由于对此类软件缺乏了解,最终还是无功而返。无奈中,发现有人提到 Fedora 下的 Devede 软件,我几乎不抱希望,却还是安装了。结果,它顺利地把所有的 MP4 保存为一个 VCD 格式的 ISO 文件。接下来的事情就简单多了,我用 Brasero burn image,VCD 片就做好了。在 DVD 机上一试,播放成功,好像还是 VCD 2.0。

    安装 Devede 非常简单哦:

    
    yum install devede
    
    
  • Raspberry Pi development kit arrived

    关注 Raspberry Pi 有段时间了,最近碰到一位教授,在 University of Lincoln 教书,说他就是教学生们玩 Raspberry Pi;而我也在想,Hotel TV project 是不是也可以在 Raspberry Pi 上实现。兴趣加需求,就买了一套 Raspberry Pi development kit 测试。今天货到了。

    Raspberry Pi Development Kit
    Raspberry Pi Development Kit

    我虽事先知道 Raspberry Pi 只有信用卡大小,见到实物还是再次震惊她的小巧玲珑——鄙视一下其他 PC 厂商。

    开机进入 LXDE 桌面 31 秒,稍有失望,我希望是 15 秒。得看看能否再精简一下启动,或用 PXE boot 提高启动速度。

    Raspberry Pi 一开始没有占到全屏 1920 x 1080,我开始研究 /boot/config.txt。有前人说要在里面增加

    
    hdmi_mode=16
    hdmi_drive=2
    disable_overscan=1
    
    

    而我看到 /boot/config.txt 里就有一句注释

    
    # uncomment this if your display has a black border of unused pixels visible
    # and your display can output without overscan
    #disable_overscan=1
    
    

    我就把 disable_overscan=1 给 uncomment 了,重启后完美全屏!

    用了 Raspberry Pi 才知道,她没有 Firefox,但可以装 iceweasel(没听说过,大概是 Firefox 在 Raspberry Pi 上的另一种称呼?)。她不支持 flash player(或者说 flash player 不支持她),但可以装 browser-plugin-gnash。

    网页版 Youtube 慢得像蜗牛,看来要用好 Raspberry Pi 还挺周折,我才刚刚开始。

  • Add Value to Hotel TV project

    我受托为小型连锁酒店做一个解决方案,配合现有的大屏幕全高清 LED TV 提供增值信息服务。要求大致是:

    • 定制桌面背景,主要是为了致欢迎辞,如 Welcome, Mr and Mrs Bruces,客人姓名从指定数据库或 API 读取。
    • 打开 TV 见桌面,为了避免客人开 TV 就是为了看电视节目,而错过酒店想要传递给客人的重要信息。
    • 在桌面美观优雅地摆置一些图标,客人点击启动预装的应用。
    • 应用如 Web browser, Youtube, Facebook 等,都不是资源消耗型。
    • 客人不能改变桌面,不能碰及设置。客人浏览痕迹能在客人离店后快速清除。或客人可以改动任何设置,但设备能在客人离店后快速重置。
    • 整个应用环境使用起来如流行操作系统(我指 Android, Windows XP, Fedora 等)一样直观,而不是如现有的大部分酒店用的 Hotel TV 系统那样,摸索半天,记不住向上/向下键是干吗的,向左/向右键又是干吗的。
    • 只能有一个遥控器,含 TV 遥控器在内。就是说,一个遥控器,要控制电视频道、音量,还要控制桌面上的应用。
  • Favicon Controller in Msdk

    昨晚在 Magento 里写了个 FaviconController.php,是为了解决 Magento 根目录下的 favicon.ico 静态文件无法根据多网店不同的 favicon.ico 而变化。

    Magento 有支持多网店多 favicon.ico,但直接访问 example1.com/favicon.ico 和 example2.com/favicon.ico 怎么回应不同的 favicon.ico?我是把静态文件删了,由 FaviconController.php 读取 SystemConfig 从 media 或 skin 目录里读出相应的 favicon.ico,响应 /favicon.ico 的请求。

    逻辑很简单,我调试好了以后决定把这个功能归于我的 Msdk 模块,可是天黑眼花,竟然塞错进了另一个不相干的 Misc 模块,于是怎么看 /favicon.ico 都是 404 Error。这事折腾了有2个小时才发现错误所在。我痛下决心,要把 Misc 模块改个名。

    P.S. Msdk 模块是免费的。下次发布新版大家就会看到 FaviconController.php 了。

  • Using Nivo Slider with Prototype

    我想要一个 jQuery slider plugin 用在 Magento 上。jQuery slider 类不乏优秀的程序。我不及精挑细选,用了 Nivo Slider。

    虽然 slider 能运行,但 FireBug 停止响应。查错发现 too much recursion occured in prototype.js 1132 行。自然想到了 jQuery 和 Prototype 的 conflict,但我有做 noConflict.js,而且 jquery.nivo.slider.js 也没有在全局使用 $,看上去挺规范的呀。

    我让 Magento 暂不加载 prototype.js,too much recursion 错误就没有了,但 Magento 不能没有 prototype.js (盼望 Magento 哪天自动放弃 prototype,用 jQuery 重写)。

    我有意放弃 Nivo Slider,无意中又发现别人竟做过同样的事情——把 Nivo Slider 用在Magento 下,而且没有 javascript 错误。

    我以为是我那段 slider 的 html 写得不好,全盘拷了别人的来用,还是出错。然后我认为是版本问题,可是用别人的 jQuery 库,放在我这里,还是出错。

    最后,直到最后,我意识到一点不同之处,我用不带任何参数启动 Nivo Slider,即

    $('#slider').nivoSlider();
    

    而别人用

    	$('#slider').nivoSlider({
            effect: 'sliceDown', 
            slices: 15, 
           
            animSpeed: 500, 
            pauseTime: 3000, 
            startSlide: 0, 
    		 
            directionNav: true, 
    		        directionNavHide: true, 
    		        controlNav: true, 
                    keyboardNav: true, 
    		        pauseOnHover: true, 
                    captionOpacity: 1, 
            prevText: 'Prev', 
            nextText: 'Next' 
           
        });
    

    就这点造成了 too much recursion。