星期五, 9月 23, 2016

"top" in docker container - TERM environment variable not set

在 docker 裡竟然不能用 top 觀察資源的使用情況?執行這個命令之後就好了(參考這篇):
  • export TERM=xterm

星期二, 9月 06, 2016

移植 NUnit + Selenium BDD 測試案例到 Linux 上執行

首先準備乾淨的 Linux,這次用的是 OSBoxes 的 CentOS 7。當 VM 開起來之後,要手動啟用網路、讓它自動抓時區並對時,然後檢查 Firefox 的版本,ESR 38.3 太舊了,這樣更新:
  • sudo yum install -y firefox
升級到 ESR 45.3 之後,到 Selenium 下載 geckodriver,解壓後執行,再檢查是否有程式在聆聽 4444 埠?
  • netstat -tunlp | grep 4444
若有就對了。幸好 Mono 官網近來也提供 CentOS 的支援,這裡說明非常清楚,先加入金鑰與儲存庫,再安裝 mono-devel:
  • sudo yum install yum-utils
  • sudo rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
  • sudo yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
  • sudo yum-install -y mono-devel
NUnit 也只是從官網下載解壓,至此萬事俱備。我的測試專案若要使用本機的瀏覽器,需如下設定:
  • RemoteWebDriverUri: http://localhost:4444
設定修改後需要重新編譯:
  • xbuild BehaviorTestSkeleton.sln
在命令列執行:
  • mono nunit3-console.exe BehaviorTestSkeleton.dll

星期二, 8月 30, 2016

Nginx on CentOS 5/6/7

之前在 Windows 裝過 Nginx,這次是 CentOS。
  • Install
    • 建立 /etc/yum.repos.d/nginx.repo 文字檔,內容如下:
      • [nginx]
      • name=nginx repo
      • baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
      • gpgcheck=0
      • enabled=1
    • 注意上述的 $releasever 要換成 CentOS 的版本號,可以是 5、6 或是 7
    • 執行 sudo yum install nginx
    • 官網原文在
  • Start as a service
    • sudo service nginx start
  • Test
    • curl http://localhost
[2018/02/05]
也可以先裝 EPEL 就好:
  • sudo yum install epel-release
  • sudo yum install nginx

星期五, 8月 26, 2016

GitLab 8.x Upgrade

系統升級本是一件大事,理論上流程應該是「備份、下載、升級、重啟、成功或還原」,但在我所處的困苦環境,想備份都沒有硬碟空間,所以只好冒著失敗的風險直接升(當然還是有整機還原這條後路),只要三個步驟,大約三分鐘:
  • sudo yum install gitlab-ce
  • gitlab-ctl reconfigure
  • gitlab-ctl restart

星期四, 8月 04, 2016

第一次看到微軟的 Docker Images

雖然 Docker 官網已默默地「有了」微軟的產品(其實是作者後知後覺?),但介紹文出爐還不到一個月。對於最低消費還要近 10GB 感到還有進步空間。有圖為證:

星期二, 7月 12, 2016

Simplest AJAX client / server with CORS

先談最簡單的 AJAX server:
  • NodeJS
  • Module: Express (optional)
  • 網路上一大堆 http.createServer(req, res) 範例
  • 防火牆設定
接著在 server 上準備一個 jQuery based 網頁去呼叫上述的服務,但因為網頁並沒有真的部署在任何 Web Server 上,所以在瀏覽器開啟的網址列會是以 file:// 開頭,一般受限於 CORS 會不能對 server 發起 Request,或精確地說,在瀏覽器預檢 preflight 失敗後就放棄,若開啟任何開發者工具之類的側錄看來像沒反應。針對各種瀏覽器的解決如下:
  • Chrome、Firefox、Safari:在 server js 加這一行
    • response.setHeader("Access-Control-Allow-Origin", "*");
  • IE:在網頁傳送 ajax 之前加這一行
    • $.support.cors = true;
  • Edge:以系統管理員身分開啟命令列提示,輸入
    • CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe
這絕對是我看過最怪的解法了,不過有憑有據,也真的有效。