星期三, 11月 25, 2015

以 C# 程式產生 Word 檔案

原本直覺是用 NPOI,但實際動手才發現還真不好做。另外有一個 Open XML SDK for Microsoft Office,似乎比較有希望,NPOI 還是專門對付 Excel 就好了。

星期五, 11月 13, 2015

又差點被一個 VirtualBox Image 搞瘋

從某個知名網站抓 VirtualBox 映像檔,CentOS 5.6 x86_64 的鍵盤都亂了,看似歐洲出品,但 locale 都是 en_US?答案在 /etc/sysconfig/keyboard:
  • KEYBOARDTYPE="pc"
  • KEYTABLE="it"
讓 IT 下班就沒事了!

[2015/12/12 補充]
有一種類似的狀況是只有單、雙引號要連按鍵兩次才會出現,而且長相有些奇特,依這篇的說法下指令解救:

setxkbmap -layout us

星期三, 11月 11, 2015

Windows 指令服務化-搭配自動重啟

為了這個目標,原先還蠻高興找到一個官方的 SC.exe 工具,但總是失敗在服務無法啟動。後來才了解到,在 Windows 的世界,可不是一般的程式都可以「服務化」的。好在有善心人士開發了得獎程式,以 Wrapper 的原理讓普通程式都能服務化,真是感謝!這套工具的使用步驟也非常容易:
  • 下載
  • 安裝(其實就是複製幾個執行檔、動態連結函式庫到系統目錄)
  • 撰寫組態設定(可參考快速上手)
  • 執行服務註冊(srvstart.exe install MY_SERVICE -c C:\SRVSTART\SRVSTART.INI,大寫處都要依實際狀況調整)
在確認服務可以啟動之後,若也想要掛了之後可以自動重啟,搭配服務本身的設定(還細分為第一、二次、後續的失敗)即可。

[2016/11/29]
看來這個更好用。

星期二, 11月 10, 2015

CentOS 6 指令服務化-搭配自動重啟

使用者抱怨有個常駐型的程式「經常」會自動消失,事實上是有拋出例外,只不過那在標準輸出/錯誤,又沒有重導留下紀錄,所以結果是一定要等有人覺得不對勁,去檢查才知道程式掛了,再重啟來補救。
因為底層很多元件原廠都不再支援,再維護下去也是枉然,所以老闆指示要快速「緩解」,不求根治。找了半天資料,還考慮過 Nagios,後來發現這種事在 Linux 根本是小事一椿:respawn。
這種自動復活的技巧已經發展了三代(參考資料),CentOS 6 是第二代的 Upstart。請在 /etc/init 目錄下新建一個類似 myJob.conf 的檔案,內容框架如下:
  • start on runlevel [2345]
  • stop on shutdown
  • respawn
  • exec your-command args
為了保險起見,我用 Java 寫了一個小程式,輸入參數為延遲秒數,時間到了之後就故意拋個例外出來,也終止程式。通常這種都會開個 console 來跑,但拿掉之後不就非常像上述的症狀?設成開機後自動執行不就更像了?改用上述的啟動方式,可以到 /var/log/messages 取得證明,果真是一再重覆「掛了」又「復活」的戲碼。

星期二, 10月 20, 2015

星期四, 10月 08, 2015

Docker Container without ps / yum / rpm command?

在我抓了一個官方的 HAProxy 來練 Docker 時,很奇怪的是用這招進去:
  • docker exec -it myContainerName bash
之後想下幾個常用命令都不行?一度懷疑是要用什麼別招進去,但最後證明是一連串的誤會:
  • 在 Linux 管理套件有兩大主流,Debian / Red Hat,在企業應用的訓練之下一直都著重後者,忘了前者才是個人使用的最愛。HAProxy 是 Debian 系的,所以沒有 yum / rpm 是正常的,試 apt-get / dpkg 就有了(參考資料)。
  • 如何得知我在使用中的 Linux 是屬於什麼發行套件?指令 cat /etc/*-release(參考資料)。
  • Docker 化的 Debian GNU/Linux 7 (wheezy) 天生就漏了 ps 命令?但這麼多人會遇到的問題也不必煩惱的(參考資料)。

星期五, 10月 02, 2015

El Capitan

  • 字變漂亮了
  • VPN 不再一直斷
  • VirtualBox 4.x 必須升級至 5.x
  • Secure Empty Trash 功能已被移除
  • Notes 舊資料會不見,請先備份或事後補救。