2019年1月21日 星期一

搬家囉!

本部落格已經搬家至 https://myapollo.com.tw/ 囉!歡迎舊雨新知到新部落格走走!

2014年7月22日 星期二

tmux 設定初上手

接續上一篇「tmux 操作初上手」,本篇就來談談 tmux 的設定。


tmux 基本設定


在 tmux 之中幾乎所有的操作都是由 tmux 所定義好的指令集來達成的,包括畫面切割、多重同步輸入以及畫面顯示調整等,在 tmux 之中都可以用特定的指令去完成,也可以將各式各樣的按鍵組合綁定(bind)到不同的指令上,讓平時可以更方便使用。

tmux 幾乎所有的設定都可以藉由命令列輸入指令進行修改,若想要每次開啟 tmux 時都可以有設定好的環境則需要透過建立與設定 $HOME/.tmux.conf 設定檔,或是設定系統全域通用的設定檔 /etc/tmux.conf

設定檔中的指令,會在 tmux server 啟動的時候被讀取並執行。

我們首先介紹三個實用的設定指令:
  • set-option
  • set-window-option
  • bind-key

2014年7月19日 星期六

tmux 操作初上手

tmux 為 Terminal Multiplexer 之縮寫,從原文我們可以了解使用 tmux 的目的,即是為了達到終端機介面的多工執行。

在以往較為被 Unix, Linux 使用者熟悉的多工終端機是由 GNU Project 所推出的 GNU Screen,作為多工終端機使用的 GNU Screen 擁有許多傑出的功能,故常被作為多工終端機的首要選項,但近來 tmux 也逐漸成為另一支異軍突起的多工終端機,讓多工終端機有其他不一樣的選擇。

與 GNU Screen 相較之下,tmux 在多工輸入、畫面的切割以及調整、多人共用 Session 等方面,都能夠與 GNU Screen 互別苗頭,因此也是值得使用的一款多工終端機。

以下筆者將針對 tmux 中幾個重要的元素做個詳細的介紹,如有任何不足的地方歡迎大家討論與指教。


2014年5月22日 星期四

GitLab installation on Debian 7(Wheezy)

Git是目前主流的版控軟體,GitHub更是目前主流的版控平台,但把程式碼放上去,就幾乎代表將程式碼公開(除非購買私人空間),而且對於企業來說,將自己程式碼放到外部環境也不太適合,因此便有了 GitLab 工具的誕生,提供使用者可以在自己的環境假設類似GitHub的共享平台。以下筆者提供的安裝過程,是以Debian 7的環境進行安裝,並以Nginx做為SSL加密以及 reverse proxy的角色。


首先我們先進行系統套件的更新以及安裝所需套件:
$ apt-get install ruby bundler sudo vim dialog build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev python-docutils libpq-dev
$ gem install bundler --no-ri --no-rdoc
$ gem install rake
$ bundle install
$ gem install charlock_holmes

2014年3月2日 星期日

解放開發環境建置之原罪 - Packer / Brief Introduction of Packer

Packer - 幫您打包好不同虛擬機器 image 的好幫手!


什麼是 Packer ?

近年虛擬化技術隨著雲端技術大鳴大放,程式開發者也受益於虛擬化技術,使得原本的開發環境能夠透過虛擬機器建立標準化開發環境並能夠藉由虛擬機器 image 相互交流,有Packer 這套工具可幫助使用者快速且大量的製作運用在不同平台上(Virtualbox, VMWare, Amazon EC2, DigitalOcean, Docker, Google Compute Engine, Openstack, QEMU)的虛擬機器 image。只要在設定擋上寫好設定,接下來的安裝步驟通通可以交給 Packer 來幫你處理了。是不是很方便呢!

2014年2月23日 星期日

解放開發環境建置之原罪 - Vagrant 網路設定篇 / Network Settings

前言


* 先前已撰寫一「解放開發環境建置之原罪 - Vagrant」,該文簡介如何利用 Vagrant 建立多個虛擬機器。

這些虛擬機器都是利用 NAT 搭配 Port forwarding 的方式,與外面網路進行溝通(換句話說,與虛擬機器之間的溝通都是透過 HOST/DOMAIN0,並非直接與虛擬機器連線溝通)。如果我們想要不透過 Port forwarding 的方式直接與虛擬機器連線溝通,就需要讓虛擬機器使用 Public/Private IP,或者我們想創造一個只有虛擬機器間可相互溝通但與外界隔絕的環境,我們就必須設定所謂的內部網路(internal network),這些都可以在 Vagrantfile 中進行設定,以建立我們所需要的各種環境。
以下就逐一介紹各種環境的設置方法。

2014年2月14日 星期五

解放開發環境建置之原罪 - Vagrant / Brief Introduction of Vagrant

什麼是 Vagrant?


* Vagrant 是一套用來管理與建置虛擬機器的工具。對於需要在許多不同環境下開發與測試的開發者來講可有很大的幫助。

* 以往開發者在進行專案測試前,都要花費許多時間進行環境的建置。一段時間後,當環境變髒亂時。開發者又要重新整理,甚至是重新建置整個測試環境。這不僅耗費開發者大量的時間,也耗盡開發者不少精力。而這些瑣碎事都可透過 Vagrant 來進行管理,您說這是不是太棒了!:-D


2013年6月21日 星期五

Tor 網路匿蹤 - Tor Anonymity Online

還記得前陣子臺灣的智慧財產局所鬧出的封鎖侵權網站風波剛落幕,近日美國國家安全局(National Security Agency, NSA)也被爆出利用稜鏡計畫(PRISM)監控網路使用者的通訊資料,姑且不論這些行為是出於利益關係還是政治因素,至少可以確定政府單位想將網路世界納入監控網之中,而這意圖是十分有可能轉變成實際行動的。

在美國有電子前線基金會(Electronic Frontier Fundation, EFF)能夠代表網路使用者向美國政府發聲,悍衛屬於網路世界的自由,但很不幸的是,身為網路一份子的我們,在臺灣並沒有一個像樣的組織能夠保護我們使用網路的自由;因此,除了盡全力守護對政府大聲疾呼我們應當擁有網路自由的權利之外,也應該懂得如何保護自己。

但如何保護自己呢?如何讓政府單位無法監控我們的網路通訊內容呢?

我想,學會如何使用 Tor 會是一個很好的開始。

Tor is free software and an open network that helps you defend against a form of network surveillance

2013年5月2日 星期四

Debain 安裝 pythonbrew 徹底解脫 Python 的版本問題

筆者很喜歡 Python 這個程式語言,可是在使用上總會遭遇到版本的問題,例如在 Debian 這個作業系統上的 Python 版本總是會比較舊一些,導致有些套件的使用上感到不順手,特別是有些方便的 Package 只有在 Python 2.7.X 以上才能夠使用,偏偏 Python 2.7.X 目前只有升級到 Debian testing 才能夠使用,而筆者目前只想使用 Debian stable(Squeeze) 的套件、系統環境(雖然 testing 也頗為穩定)。

幸好這樣的問題可以靠 pythonbrew 來解決!
pythonbrew is a program to automate the building and installation of Python in the users $HOME.
簡而言之,pythonbrew 可以在不變動到系統主要環境的情況下,將 Python 安裝在一個隔離的路徑下,同時允許多個版本的 Python 存在,令使用者能夠自行切換 Python 版本與安裝不同版本的 Python 套件。

下文就是 pythonbrew 的安裝指令與簡要的使用方法。

2013年4月20日 星期六

利用 Squid 代理伺服器(Proxy)分析 HTTPS 連線內容


筆者近來學了些如何側錄(sniffer) HTTPS 連線內容的技術,在這裡分享給大家。
要側錄 HTTPS 的封包並不困難,把 Wireshark 開催下去就好了(無誤),但要看到 HTTPS 封包的內容,就得想辦法解開加密內容,不然只能看到像下圖的有字天書。

HTTPS連線內容

2013年3月26日 星期二

Javascript 取得 split() 結果的第1個及最後1個元素 (the first element and the last element)

Javascript 的 split() 函式會將結果以陣列(array)型態回傳,因此可以分別以 shift() pop() 取得第一個及最後一個元素。

範例:
var str = "A, B, C, D";

console.log(str.split(",").shift());
// output A

console.log(str.split(",").pop());
// output D

jQuery - detach() 與 remove() 之差異

在 jQuery 官網的 DOM 操作文件中,有提到 detach()remove() 兩種方法,這兩種方法的說明都是:
Remove the set of matched elements from the DOM.
意思就是將元素從 DOM 中移除,不過進一步閱讀詳細的使用說明時, 就會發現兩者其實是不太相同的。

2013年3月22日 星期五

jQuery 小祕訣 - htmlentities

有些時候為了避免網頁被植入一些 HTML 標籤(如 <iframe>, <script>, <applet> 等),就必須將一些特殊字元轉為 HTML entities (或稱 HTML 實體),例如 < 可被轉為 &lt; 或是 &#60,其中前者(&lt;)被稱為 entity name, 後者(&#60)為 entity number,這兩種都是可被接受的轉換方式。

更進一步的例子為如下的 HTML 標籤:
<script>&</script>
被轉換成 HTML entities 之後就會變成如下的字串:
&lt;script&gt;&amp;&lt;/script&gt;

雖然在瀏覽器上看起來一樣是 <script>&</script> ,不過已經不是 HTML 標籤了。
p.s. 這對於網頁程式師而言算是相當實務的安全性作法之一

2013年3月18日 星期一

KVM (Kernel based Virtual Machine) 常用指令解說

KVM(Kernel based Virtual Machine) 是一套基於 Linux Kernel 的虛擬化技術,與 QEMU, XEN, Oracle VirtualBox 一樣都已經是相當成熟的 Open Source 的虛擬化解決方案。值得一提的是,KVM, QEMU, XEN 三種不同的虛擬化解決方案能夠在 Linux 內兼容並蓄,並且透過 libvirt 達成統一的管理窗口,因此本篇會以 virsh 指令運用為主解說常用的 KVM 指令。

2013年3月13日 星期三

Debian 重新編譯套件 (Rebuilding Debian packages)

雖然 Debian 有很方便的 APT 套件管理工具,讓我們省去了許多自行下載、編譯(compile)、安裝程式碼的過程,但總難免會遇到需要修改程式碼的問題,這時就得下載套件原始碼(source code),接著再根據套件相依性安裝其他套件,最後修改程式碼後進行編譯、安裝,但是問題往往不會如此順利與單純......。

一般透過 APT 所安裝的套件,大多都有經過 Debian 開發者的維護與修補(patch),多多少少會與原本套件的原始碼不同,所以下載其他來源(如官方網站)的套件原始碼進行編譯時,有可能會遇到一些光怪陸離、不知如何解決的問題,例如你可能會遇到你所下載的套件原始碼並沒有針對 Debian 環境的修補,而導致無法順利安裝。

累了嗎?也許你可以有更好的選擇!

2012年12月29日 星期六

VirtualBox 調整 Linux 虛擬機器的磁碟(虛擬硬碟)空間大小

筆者最近遇到 Linux 硬碟空間不足的問題。

從以前開始只要遇到 Linux 空間不夠的解決方法就是買一顆新硬碟來加裝,
接著進行磁區切割(partition),建立檔案系統(file system)再掛載(mount)起來,
如果不是用於硬碟空間每天持續成長的情況,基本上這樣就能夠解決了大部份的問題。

另外,也能夠在安裝 Linux 時選擇用 LVM(Logical Volume Manager),
來達成動態調整硬碟磁區大小的功能,
但 LVM 最大的缺點就是一定要確保我們的 Linux 系統有良好的備份機制,
否則當 LVM 其中一個磁區或硬碟壞掉時,是很難救回資料的。

這兩種增加硬碟空間的方式就端看各位怎麼抉擇了。

不過,此次要增加硬碟空間的主角是虛擬機器,
我們將示範如何使用 LVM 幫虛擬機器達成動態調整硬碟磁區大小。(也適用一般的實體環境)


2012年12月18日 星期二

在 HP Proliant DL360 G7 上安裝 Debian 6


如果要在 HP ProLiant DL360 G7 上安裝 Debian 6 的話,
有可能會遇到缺少網路卡韌體 bnx2 firmware 的情況,
事實上, HP ProLiant 系列的伺服器很多都有使用 Broadcom NetXtreme 的網路卡,
因此就需要 bnx2 firmware 進行驅動,而這個 firmware 因為被歸類為 non-free 套件,
所以預設並不會收納到安裝映像檔內,
以下是一些解決之道。

解法有兩種:
1.把 bnx2 firmware 打包到我們的 Debian 安裝光碟內,
也就是製作有包含 bnx2 firmware 驅動程式的 Debian 安裝光碟,
不過這其實有點複雜,有興趣的人可以到以下網址了解詳情:
http://wiki.debian.org/HP/ProLiant#Need_bnx2_firmware
http://wiki.debian.org/DebianInstaller/NetbootFirmware

2.無痛的解法-利用已經打包好的 Debian 安裝映像檔進行安裝,
在 Debian 的官方網站上就有提供打包好 non-free firmware 的安裝映像檔,如下圖所示:

大家可以到 官網下載 需要的版本回來使用。
基本上,用第二個方法會比較不麻煩些。