在 Console 底下簡單的 Yaml syntax check Script

介紹

在編寫 yaml 檔時,如果沒有使用任何的 IDE, 或是想 automation 作檢查,勢必需要在 CLI 可以檢查的方法。Yaml 檔發生錯誤是很擾人的,尤其是一個yaml 檔可能上百行,要找一個空白空錯沒有什麼好方法。最近就遇到因為前一版 commit 設定檔的人沒有檢查語法,設定檔裡面少了一個空白,結果造成 indent 就不對,接著程式沒寫好就直接停止執行的問題。但後來想想,應該要有一些方便的 tool 在編寫 yaml 檔結束後,作一些簡單的檢查,來減少浪費大家人力來追問題。

實作方法

  • 安裝 ruby
  • 安裝 awesome_print 的 gem 檔
    # sudo gem install awesome_print
  • 執行 ruby 指令
    $ ruby -e "require 'yaml'; require 'awesome_print'; y=YAML.load_file('/tmp/example.yaml'); ap y"

在 MAC 下只要安裝一個 gem 檔,然後用內建的 ruby 指令馬上就可以看出來了,而且畫面還非常的漂亮。

DEMO

我們以 wikipedia 上的 yaml 範例檔為例:

--- receipt: Oz-Ware Purchase Invoice date: 2012-08-06 customer: given: Dorothy family: Gale items: - part_no: A4786 descrip: Water Bucket (Filled) price: 1.47 quantity: 4 - part_no: E1628 descrip: High Heeled "Ruby" Slippers size: 8 price: 100.27 quantity: 1 bill-to: &id001 street: | 123 Tornado Alley Suite 16 city: East Centerville state: FL ship-to: *id001 specialDelivery: > Follow the Yellow Brick Road to the Emerald City. Pay no attention to the man behind the curtain.

Result:
如果一切順利的話,可以看到下面的結果,除了可以驗證內容打的對不對之外,還可以看結構是否正確。
yaml parse result

如果結構有錯,或是語法有錯,他會顯示錯誤的行數,這樣就比較好 Debug 了。
parse error

結論

如果有 vim 的 plugin or sublime 的 plugin 在即時編寫時,就可以直接列出語法有問題的地方應該會更好更直覺。不過現在這個方法比較適合在 CI commit build 預先作檢查,減少錯誤的程式上到 production 。

參考

[1] http://stackoverflow.com/questions/3971822/yaml-syntax-validator
[2] http://stackoverflow.com/questions/17289399/how-do-i-pretty-print-a-hash-to-a-rails-view
[3] https://github.com/michaeldv/awesome_print

Asus WL-500W 改機實錄

在幾個月前,買了 Asus WL-500W 這台 ip 分享器,看上的是他可以改機,與他支援 802.11N draft 的 protocol ,而且如果正式板出來的話,聽說還可以寄回去換主式板哦。雖然改機可能會破壞保固,但是可以自由的惡搞,這才是最令人爽快的。以下的內容就是 Asus WL-500W 的改機的方式。當然也是我自已作記錄的方式,避免之後忘記怎麼處理。

具備的知識與能力:

  • 最好有基本的 Linux 的管理與操作知識
  • 對於網路要有基本的了解
  • 不怕死的精神

刷機步驟:

  • 參考 OpenWRT for wl 500w 這篇文章,裡面其實已經說的滿詳細的。
  • 準備刷機的 Firmware ,我是使用 brcm-2.4/openvpn 這一板的(下載位置),因為我也想順便玩玩 openvpn 的功能。當然我也有不怕死的精神,所以我下載的是 snapshots 的板本。
  • 準備 tftp server 讓 wl-500w 可以更新他的 Firmware 。參考文件:Installing OpenWrt via TFTP
  • 我是使用 atftp 來作為我的 tftp server ,在 debian 下只要使用下列指令即可安裝:
    <br />
    # apt-get install atftp<br />
    
    安裝完後,照著上述說明完成架設 tftp server ,並且把 wl-500w 重開後,他就會自動下載更新。
  • 刷機的這段時間,不要拔掉電源,否則會有不可預期的錯誤發生。
  • 刷機完成後,如果想用 web 管理的話,可以進入http://192.168.1.1/作管理,一開始會請你設定 root 密碼。
  • 除了使用 web 管理之外, ssh root@192.168.1.1 也可以登入管理主機。
  • 有需要安裝什麼功能,可以利過 system/package 或是 opkg 來安裝。

Tips:

  • 如果要讓外部的人連上 ssh 除了可以在 web 介面設定之外,也可以在 /etc/config/firewall 下新增下列設定:
    <br />
    config 'rule' 'ssh'<br />
            option 'src' 'wan'<br />
            option 'proto' 'tcp'<br />
            option 'src_ip' ''<br />
            option 'dest_ip' ''<br />
            option 'dest_port' '22'<br />
            option 'target' 'ACCEPT'<br />
    
  • 啟用 usb 隨身儲存裝置,可參考 UsbStorageHowto 來實作,可 ssh 進去後,使用下列指令:
    <br />
    #opkg update<br />
    #opkg install<br />
    #opkg install kmod-fs-vfat<br />
    #opkg kmod-usb-core kmod-usb-ohci    kmod-usb-storage kmod-usb2<br />
    

    或是利用 web 界面中的 package 選項裡安裝 kmod-fs-vfat, kmod-usb-core,kmod-usb-ohci,kmod-usb-storage,kmod-usb2 。接著利用 fdisk -l 與 mount 指令,就可以把隨身裝置掛載上去了。

最後,歡迎加入惡搞世界。

Doxazosin

PowerPint 轉 flash 格式

之前在網路上有看到一個服務–「SlideShare」,是 share powerpoint 的,他會顯示如 youtube 的畫面,可以直接點選下一頁,顯示下一頁的 powerpoint 。這種服務如果放在 lab 上,各個同學可以很輕鬆的分享自已的 powerpoint ,並且不需要作下載的動作。我是覺得還滿方便的。

不過平常的 lab meeting 所作出來的 powerpoint 可能會有版權的疑慮,有許多的圖型都懶的註明出處,因為只是單純的上台報告而已,所以也沒辦法上傳到 SlideShare 上。而在 google 尋找到的方案通常都是需要錢的,或是只能應用在 Windows 平台上,這並不符合我的需求。

不過我在 sourceforge 上尋找到一個專案,他是利用 openoffice 可以直接將檔案格式的轉為其他格式來達成差不多的功能。不過當然沒有 SlideShare 上的美觀,不過也是免強可以達到類似的功能。

專案名稱:PyODConverter
說明:

其實使用方法很簡單,就是把 openoffice 給驅動起來,接著再用該指令即可將 openoffice 可以讀取的格式,轉換成你想要的格式。這些格式不單單只有 swf 也包括 pdf/csv 之類的,只要是 Openoffice 可以讀,可以匯出的格式,就可以產生。

步驟:

  • 找到 openoffice 路徑後,使用下列指令啟動。
    bash# soffice" -accept="socket,port=8100;urp;"
  • 接著使用它所提供的 script ,即可轉檔。
    bash# ./DocumentConverter.py test.ppt test.swf

TIPS:

  • 因為啟動 Openoffice 需要 Xwindow ,如果不想安裝 Xwindow 的話,可以使用 xvfb 來模擬 xwindow 。

不過老實說還有一些缺點,並不是所有的 powerpoint 的動畫,或是效果都可以轉的,但是基本上不是太複雜的功能,應該都可以展現出來。

在 debian 下安裝 webcam

Debian 真是太方便了,如果你使用官方的 kernel ,那只要下一個指令就可以安裝好 web cam 了。

apt-get install gspca-modules-xxxx

xxx 是 的你 kernel 板本,接著 web cam 的驅動程式就灌好了。

如果你不是使用官方板本的話,就要抓 gspca-source 來自行編譯了。

如果要測試的話, 可以使用 gnome-meeting/kopete/amsn 這幾類的產品都可以使用 webcam 的功能。

底下有幾個參考網址可以參考: