發表文章

目前顯示的是有「Programming | 程式設計」標籤的文章

「Ansible 自動化組態管理實戰講堂」與「自我實現」

圖片
凍仁在學時很喜愛 《Unix 與 Linux 自動化管理》 一書,並幻想著有朝一日也能達到自動化管理的境界。儘管管了多年機器,可頂多是寫些小 Shell Script 打打下手,雖說偶爾也會寫點 Python 卻難以突破。 在友人 @pichung 介紹下,凍仁選擇 Python 陣營的 Ansible 做為 infrastructure as code 的技能,也在 @sakanamax 於台南 SA 分享「 淺談 Ansible 自動化管理工具 」後正式入門 Ansible。 終於上到期待已久的 Ansible 實戰講堂 (03/20) 了,有種被傳授心法的感覺,是場很棒的 Workshop!接下來得靠自己的慧根哩。 #Ansible #workshop pic.twitter.com/da2eSr9L4E — 凍仁翔 (@chusiang_lai) 2016年3月20日

《Google 建議的 Python 風格指南》懶人包

承 Google Python 風格指南-命名規則, Main, 編後語 一文,凍仁把《[翻譯] Google 建議的 Python 風格指南》該系列其餘的文章連結也整理了,相信多個目錄會更便於大家學習 Python。

Google Python 風格指南-命名規則, Main, 編後語

為某紅色的海公司服務的凍仁,近來研究了 藉由 DRBL/Clonezilla SE 來大量部署 OS 的 solution ,也使用了 Python 和 shell-script 來撰寫批次更換主機名稱 (hostname)、IP ... 等的差異化程式。這中間牽址到磁碟分割、DHCP、網路架構、PXE 網路開機、系統權限 … 等技術,其系統架構凍仁在此就不多詳加述,有興趣的伙伴可至 官網 詳讀。 因公司培訓的關係,凍仁現在很注重 程式碼的品質 ,更找到了這篇在介紹 Python coding style 的好文,就在此與大家分享了。

LiveReload - 網頁開發者必備的自動重新整理外掛 on Ubuntu 12.04

圖片
網頁開發者 (Web Developer) 一天會在瀏覽器 (browser) 裡重新整理 (refresh) 個千百次是常有的事,但這樣不只會造成開發上的中斷,也會加重雙手的負擔。 這裡凍仁將介紹 LiveReload 給大家, 它是個可以在儲存檔案後自動重新整理 browser 的解決方案 ,LiveReload 雖然不能即時呈現,但可以讓開發環境變得友善點,是值得投資的好工具,若能搭配雙螢幕使用其效果更佳。

PHP: Commands out of sync; you can't run this command now

近日凍仁使用 PROCEDURE 及動態 LIMIT 改寫某 PHP 網站的 列出最後 10 筆資料 功能,套上新程式碼後,再持續送出 query 就會跳「 Commands out of sync; you can't run this command now」的錯誤訊息,其 MySQL 文件的解釋如下: 18.2.8 Commands out of sync in client 錯誤 如果你在你的客戶代碼中得到 Commands out of sync; You can't run this command now,你正在以錯誤的次序調用客戶函數! 這可能發生,例如,如果你正在使用 mysql_use_result() 並且在你已經調用了 mysql_free_result() 之前試圖執行新查詢。如果你在 mysql_use_result()或mysql_store_result() 之間試圖執行返回數據的 2 個查詢,它也可能發生。

MySQL: Failed test 'use DBD::mysql;'

凍仁在幫 Perl 安裝 DBD 模組時,得到了錯誤訊息: 「 t/00base ......NOK 2# Failed test 'use DBD::mysql;' 」 請教 星空夜雨 後才知道這是因為 DBD 模組與 MySQL 有相依性,若沒依照 Distribution 預設的方式安裝,得手動補上參數才會過,而以下條件大概都會碰到: MySQL Server 為自行編譯。 本機無安裝 MySQL Server。 未於 MySQL Server 建立指定的測試帳號及密碼。

【Scripts】CapsLock Notification on Debian

圖片
自從得知 ThinkPad T410 的大寫鍵 Caps Lock 狀態燈 離開螢幕下方的 LED 面板的以後,凍仁就一直很依賴右下角的通知(Notification), 不是說新的設計不好,但用久了就會發現它早就被左手的小拇指遮住,哪還看得到什麼 LED ..!? 雖說官方早已幫 Windows 寫好 On-screen display(OSD) ,而 Mac OSX 上也有 CapSee ,至於 Linux 上凍仁有找到 lock-keys-applet ,但還是不像官方的直覺。

【Scripts】input GPG key for Debian/Ubuntu

凍仁每次安裝 Debian 以及 Ubuntu 時,多少都會使用到第三方 (third-party) 的套件來源,而一般的都會多簽署個 GPG 金鑰 (key) 來驗證,但要是沒手動匯入 key,則每次更新時皆會有「NO_PUBKEY? Add GPG key for apt-get update」的錯誤訊息。指令不難只是很煩,寫個 scripts 就來處理就省事些。

Netbeans 啟動自動補齊 (Auto Padded)

圖片
近來一直聽到社群上的伙伴在寫 Python, C .. 的時候都用 vim 的文字補齊寫 code 寫的很開心,可問題是已經用 Netbeans 開發三個多月的凍仁是不可能說換就換。

縮短 Netbeans 編譯時間

圖片
近來凍仁都在使用從恩師手中借來的 IBM Thinkpad A31 開發公司的系統,由於小弟學藝不精的緣故得透過 Netbeans IDE 來寫 Java Swing, 這台 91 年度的 Laptop 是開 Windows 會讓人想睡覺的老機器 ,最後改裝 Debian 5 (Lenny) 以進行開發。 NetBeans 預設會啟用「建置 JAR」的選項,讓每次編譯時都多花了不少時間在 JAR 上, 等凍仁發現時都已經是兩個月之後的事情了,把時間還來啊 ~~ Netbeans !!

Install JDK 6 @ Debian 5

近來凍仁開始在 openSUSE 11.1 底下使用 Netbeans 6.8 為公司寫收費系統,可在升級完 11.2 後爛掉了, 聽 MrMoneyC 說動到 dup 會炸掉 ,還是先跑 Debian 5 (lenny) - stable 然後用 SuSE Themes 就好,這邊是重新安裝 JDK 的筆記。

Manual PPPoE on Debian

最近凍仁在 Debian 5.0.3 上發生了件 PPPoE run 完 gnome 的 nm-editor 才跑的情形,既然人家兜好的不好用,那就自己寫 code 唄。 1. 安裝 pppoeconf (已安裝請略過)。 jonny @lenny: ~$ sudo apt-get install ppp pppoeconf ppp-pam ppp-udeb [Enter] 2. 設定 ADSL 帳號及密碼 (請參考 PPPoE 撥接上網(ADSL) )。 jonny @lenny: ~$ sudo pppoeconf [Enter] 3. 將區網設為 dhcp 並註解 pppoe 的 code。 jonny @lenny: ~$ sudo vi /etc/network/interfaces [Enter] # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp # dns-* options are implemented by the resolvconf package, if installed # PPPoE # auto dsl-provider # iface dsl-provider inet ppp # pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf # provider dsl-provider 4. 撰寫 bash script。 jonny @lenny: ~$ vi dsl-up [Enter] # #! /bin/bash #Stop all of PPPoE commect. poff -a # Start PPPoE. cd /etc/ppp/peers pon dsl-provider 5. 參考 Firestarter 開機甭輸入密碼again 一文可讓 dsl-up 免密碼執行,也可加入自動啟動的 Sessions 內。 # 由於已固定使用 PPPoE

刪除 Events Code on NetBeans

圖片
Netbeans 是套不錯用的 Java IDE,更棒的是可以直接拖曳 Button, Label .. 等等的 Opject(物件)。或許就因包太多東西,使用上也不是那麼的得心應手.. (以下 Design 模式簡稱 [Design];Source 模式簡稱 [Source]。 NetBeans - Design 模式

KaLUG 五月份:Python 於 Embedded linux 上的應用

過了兩個月,終於可以抽空參加 kalug 聚會了,這次的主講者 Tim 帶來了他們公司新研發的產品, 有點像傳說中的黑盒子,雖然他是白的:D 它是個 DV Camera(攝影機) Player、DVD-RW(燒錄機)及DVD-Player(播放機),還支援 HDMI 輸出,直接與電視連線即可欣賞,省了一道轉檔的手續... (相信玩過轉檔的人都知道,cpu 不夠力可是要等上半天的) 。其中的 TUI(Tim`s GUI) 就是 Python 寫的,Tim 還把 Python 壓縮,好讓它輕量化。 (Python 凍仁還沒玩到.. 跳過跳過XD)

【Java】[94上]網路程式設計作業

這是凍仁在讀大二時的Java作業,那時幾乎是每個星期三、四的晚上都在熬夜寫Java.. 雖然功力不高,可凍仁還是很喜歡自己寫 porgram(程式) :P 可惜這位良師被假日班同學趕走了,不然凍仁在大三大四應該會繼續寫下去,很感謝這位熱心的老師,因為他凍仁至少有把一種程式語言重頭學到尾一遍.. 凍仁的 Java 作業 @ Google 文件 授課教師: 羅孟彥 課本: JAVA2 JDK 5.0 教學手冊(第三版) 作者: 洪維恩 出版: 博碩文化

java.lang.NoClassDefFoundError with Ecilpse

圖片
這幾天一直不是很順利,一下可以跑一下不行的 Orz ,索性上網爬個文,雖說 JavaWorld@TW 這篇有說明了 Java.lang.NoClassDefFoundError 的錯誤訊息通常指的是 Java 無法在所給予的 classpath 中找到提及的類別或介面的定義,因而丟出的執行時期例外。這個錯誤通常是因為 classpath 的設定錯誤而丟出的。

【Program】Eclipse 3.21–安裝 + 中文化

圖片
開始玩 Ubuntu 也有兩三星期了,終於告一段落了.. 不過我想自己還是會繼續惡搞下去吧XD.. 對現在的我而言: Linux 比 Game 還好玩,廢話就先說到這,接著來寫這兩天安裝 Eclipse 的 Note .. 雖然他給我的感覺有點像 Windows 上的 JCreator,可是因為自己對此軟體不熟在加上對 Ubuntu 也沒熟到那去,搞了兩天才搞定.. 囧rz ps:安裝前請先把 Ubuntu 7.10 desktop 灌起來XD 安裝 Eclipse 移除 ubuntu 套件管理員抓來的 Eclipse 3.3 / * 目前 3.3 還未出正體套件,所以得先砍掉才行 * / Ubuntu(應用程式) → 添加/刪除 → 已安裝的應用程式 / *事先沒安裝可省略這步驟 * / → 標記 → 移除 下載 Eclipse = 主程式 +中文化 eclipse-SDK-3.2.1-linux-gtk.tar.gz / * 主程式 * / NLpack1-eclipse-SDK-3.2.1-gtk.zip / * 語言套件 * / 將 eclipse-SDK-3.2.1-linux-gtk.tar.gz 解壓縮 至 /opt 底下 # sudo tar -zxvf eclipse-SDK-3.2.1-linux-gtk.tar.gz /opt 將 NLpack-eclipse..-SDK-321-gtk.zip 裡 features/ 底下的檔案覆蓋至 /opt/eclipse/features,plugins/ 解壓縮至 /opt/eclipse/ # ??? 切到 eclipse 目錄下 # cd /opt/eclipse/ 執行 eclipse / * 執行檔 * / # ./eclipse End 相關連結: ★ 初學Eclipse ★ Eclipse 的使用簡介及外掛程式開發 ★ Sungo 的 Eclipse 使用技巧 ★ RC2 熱鍵表

SA@Tainan 快快樂樂學 GNU Debugger (gdb)

簡介 兩年前,為了徹底理解 GNU/Linux 底層運作機制,拿最簡單的 "Hello World" 開刀,部份心得匯集為「深入淺出Hello World」,並於北中南等地分享,計有 Part I / II / III。 後續的規劃則因為大量使用 gdb / kdb /kgdb 等重要工具,決定以獨立的議程作講解,期望使聽者得以透過 GNU Debugger (gdb)來加速系統開發與分析,讓這個臥在硬碟深處許久的強力程式,激發其威力。本議程捨棄過往教條式的介紹形式,延續「深入淺出 HelloWorld」系列的「作中學」途徑逐一探討使用情境與案例分析... 原始連結: ★ 2008一月份 SA@Tainan 快快樂樂學 GNU Debugger (gdb)

【Java】摸彩 → Random

後面一樣用布林Boolean下去做判斷,有嘗試用函式Function下去寫,不過失敗了!其random部分老師上課有讓我們抄原始碼sourse sode...阿翔就只把之前那猜拳的程式中間猜拳的部份換為random罷了!! import java.io.*; public class ex_random{ public static void main(String[]args) throws IOException{ boolean flag=true; String str; BufferedReader buf_YesNo; buf_YesNo=new BufferedReader(new InputStreamReader(System.in)); System.out.println("摸彩摸彩..祝你中頭彩!"); do{ int i,intTransform; double doubleAR; System.out.println(); for(i=1;i<11;i++){ doubleAR = Math.random(); intTransform = (int)(doubleAR*100); System.out.println("第\t"+i+"\t次為 "+intTransform); } System.out.println(); char charYesNo; System.out.print("輸入Y繼續,N離開 → ");

【Java】猜生日

知道阿翔我的生日嘛!?不知道的話就抓下面source code來玩玩唄! PS:已經忘記是第幾次的作業了~~ 裡面用到:do while、if else、輸入字元.... /*猜生日,輸入兩變數用if else下去判斷 */ import java.io.*; public class ex_birthday{ public static void main(String[]args) throws IOException{ int intMonth,intDay; do{ String strMonth,strDay; BufferedReader buf; buf=new BufferedReader(new InputStreamReader(System.in)); System.out.print("請猜猜阿翔的生日 → 幾月 → "); strMonth=buf.readLine();       //↑將輸入的文字指定給字串變數str_Month intMonth=Integer.parseInt(strMonth); System.out.println("你猜的月份為:"+intMonth); System.out.print("請猜猜阿翔的生日 → 幾日 →"); strDay=buf.readLine();       //↑將輸入的文字指定給字串變數str_Day intDay=Integer.parseInt(strDay); System.out.println("你猜的日期為:"+intDay); System.out.println(""); if(