讓你的電腦定時自動靜音的方式

晚上喜歡開著音樂邊聽邊睡覺,可是一旦睡著了音樂一直開著又覺得很吵…所以一直想要有一個可以自動幫我把音樂關掉的功能,可是我用的foobar 2000好像沒有自動停止播放的功能,而且我又喜歡開shuffle album這樣可以聽到play list上的所有的歌,但是這樣一來就會變成音樂一直播不完,所以晚上播音樂的這種問題就一直很困擾著我。

於是找了一個叫 Wizmo 的程式來幫我達到定時自動靜音的這個需求。

Wismo是一個可以透過簡易的command line指令來設定一些系統設定的小工具,我們的Script也是透過這個小工具來完成。Wismo可以達成很多的功能,設定系統的音量是其中一項,詳細的用法請參考 作者首頁

下面是我寫的簡單的script,把這段script貼到筆記本並另存成副檔名為 *.bat(例如:auto_mute.bat)並把wismo.exe (你可以在作者的首頁這裡直接下載)存放在相同目錄就可以直接點擊這個bat檔執行。

@echo off
ping 127.0.0.1 -n 1800 -w 1000 > nul
.wizmo.exe volume=0 quiet
pause
.wizmo.exe volume=50 quiet

簡單的說一下Script的內容,第二行的ping是讓Scirpt等待固定的秒數,因為XP沒有內建sleep的指令,所以必須用ping來代替sleep的功能,其中1800代表的是1800秒(也就是30分鐘),所以你可以在這裡設定你想要靜音的時間。等等待的時間到了,script會呼叫wizmo把系統的音量調成0,也就是會變成靜音的情況。這個時候文字視窗會出現「請按任意鍵繼續 . . .」的對話框,如果按鍵盤的任何一個按鍵,就會執行第5行(最後一行)把聲音調回原本的音量(這邊的設定是50),這樣人性化的設定,早上一醒來的時候只要隨便按一個按鈕,音樂就又回來啦?真是方便阿(哈哈哈),需要的話可以試試看嚕。

Linux指令Screen指令 – 避免執行中的程式因為關閉console而終止

Linux指令Screen Cheat sheet

有時候一個程序可能會運行很久或者是你想把某個程式一直運行,就會把程式開在某個console讓他一直跑,可是開在實體的console上如果沒有鎖定的話,會有安全上的問題(可以摸到這個電腦的人,就可以直接操作了),又或者是用SSH遠端連線的時候,一斷開連線程式就終止了,此時也許可以用nohup指令,或在程序執行的時候就使用背景執行,不過用nohup預設會把程式產出的訊息寫在nohup.out時間一久,檔案不斷增長也不是個辦法,另外一點這跟跟背景執行有一樣的缺點,就是如果想要直接回去原本的console變得不可行。

Linux的screen指令就是一個管理工作console的程式,在screen程式中一個console稱為一個window,我們可以利用screen開啟多個window。

以下是screen的常用指令:

在還沒進入screen的時候,輸入screen就會讓screen 開啟一個新的window,也就是一個新的console。

screen -list
screen -ls

列出目前所有的screen

screen -r [id]
重新連接某個id的screen,如果不設定id的話,會連接上一次detached的screen (id 可以用 screen -list看到)

screen -R
重新連接上一個screen,如果沒有上一個screen就建立新的

在screen中有下列的動作

要跳出、或登出screen

Ctrl+a d
Ctrl+a Ctrl+d

Detach screen 跳出screen,但screen仍在運行

Ctrl+a C
Clear清空screen上的資訊

Ctrl+a D D
Detach & Logout 跳出並登出screen,screen中運行的程式會被終止

其實在screen中可以開啟多個window
Ctrl+a w
列出目前的window

Ctrl+a c
Create 開啟新的 window

Ctrl+a n
Next 下一個 window

Ctrl+a p
Previous 前一個 window

Ctrl+a Ctrl+a
兩個window相互切換

Ctrl+a #
#是0?9的數字,切換到該編號的 window

完整操作請參考screen的man page:http://www.manpagez.com/man/1/screen/

MySql 資料表、資料庫名稱區分大小寫的設定

MySql 資料表(table)、資料庫名稱(database names)區分大小寫(Case Sensitive)

參考文件: http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

幫客戶轉移系統到Linux卻發現Linux上的Mysql有區分table及DB name的大小寫的問題,導致原本寫的query不相容。google後發現這和mysql的設定有關係,導致mysql是區分大小寫的。

需要配合 lower_case_table_names 這個參數來調整,這個是mysqld的啟動參數,所以可以寫在 my.ini 或 my.cnf 中。
參數簡略說明

以下是針對這個參數的小翻譯(詳情請看官方文件)
lower_case_table_names = 0 (Windows預設)
資料表(table)及資料庫名稱(database names)一律用小寫存在磁碟中。比較(查詢)時是區分大小寫(case sensitive)。

lower_case_table_names = 1
資料表(table)及資料庫名稱(database names)一律用小寫存在磁碟中。比較時是不區分大小寫(case insensitive)。MySql轉換所有的資料表(table)、資料庫名稱(database names)、table aliases(這個我不知道怎麼翻譯比較好)名稱為小寫來存取。
註:所以實體檔案的名稱必須全為小寫,否則會存取不到。

lower_case_table_names = 2 (Mac OS X預設)
資料表(table)、資料庫名稱(database names)儲存時磁碟的檔案區分大小寫。但查詢比較時MySQL將查詢轉換成小寫,不是區分大小寫。但這個設定僅適用於不區分大小寫的檔案系統。

所以如果要將Case sensitive的資料庫改成case insenstive,必須把lower_case_table_names = 1 或 2 。但2只使用於Mac OS X、Windows之類不區分大小寫的系統,所以必須設定為1,但設定為1時,實體儲存資料的檔名就必須全是小寫,否則會存取不到,但這個系統在production中,所以我不敢貿然去改data中的檔案(萬一改壞了,我也死定了),所以這個方案是不是可行可能還要實驗一下。

謝謝觀賞

Ps. 因為還沒有研究得很深,所以本文中應該有些謬誤,所以如果有錯麻煩還請指正嚕。

eclipse tip 顯示太快的問題

eclipse的tooltip出現太快,是在eclipse的設定上卻好像沒有這方面的設定,稍微google了一下發現,下面這個方法好像可行,原文可以略過因為他的圖太小不太容易看(要另開視窗才看得清楚),而且在文字說明中也沒有說到圖中的內容。

How do you change the mouse hover time

大概翻譯一下,這篇文章是說
他發現tooltip的出現時間好像不是由eclipse控制,所以需要改Windows的機碼

用 開始 > 執行 > regedit

中找到
HKEY_CURRENT_USER ControlPanel Mouse
加入或修改一個名稱為 mousehovertime 的字串值,並給他一個值,文中是建議填300(應該是300毫秒的意思),可以根據個人喜好填入不同的值。

利用Offline NT Password & Registry Editor 修改Windows密碼

如果你的Windows密碼忘記或是前人交接電腦卻忘寄給你密碼的話,不必急著重灌電腦,可以使用Offline NT Password & Registry Editor 來變更密碼,進去官方網站 (下面有個 download可以選)下載完ISO後可以,製作成USB bootable或是直接燒成光碟,弄好後記得在BIOS設好開機順序後用剛剛的ISO開機,如果是VM的話就直接掛載ISO就可以了(記得VM也要變更開機Device的順序喔)。

重設的方法蠻簡單的,幾乎都只要使用預設值就可以了,只要按照提示輸入就可以重設密碼,重設存檔後就可以利用新密碼進入系統嚕。So easy阿。

[書評] Java SE 6全方位學習 + Java 6 新手入門書推薦

好久沒有打網誌了!最近壓力真的超級大阿,所以網誌就比較沒時間來維護啦!今天花了大概兩小時的時間把朱仲傑前輩所著的『Java SE 6全方位學習』給看完了,因為JAVA也用了很久了,雖然不算厲害但也算是自己熟悉的語言,因此大部分的知識都已經會了所以看的速度很快。也許有人會問如果都會了為什麼還要看呢?我只能說施主學無止盡阿!主要是因為自己對於程式語言的教學還蠻有興趣的,一方面想多學學別人是怎麼編寫教材的,另一方面是在一次檢視自己的觀念是不是有謬誤的地方。

今天看完了這本Java 6的書,不過結論是不推,中間夾了一些心路歷程,有興趣的同胞就繼續看下去吧!

Continue reading “[書評] Java SE 6全方位學習 + Java 6 新手入門書推薦”

Validate E-mail地址的regex

最近寫一些code會用到regex (regular expression),中文翻譯為正規表示式或正則表示式(坦白說我比較喜歡引用前者,後者比較難以理解regex是什麼東西),用途很多主要是表達一串字串的樣式(例如:身分證字號第一碼是英文,後面有九碼數字)。

不懂程式的話本斷可以跳過,之前在處理文字的時候因為要把用括號([…])中間的文字去除。我的文章會長的像下面這樣:林國喵是個[好人],每天固定會扶一個[老太太]過馬路呢!所以我的預期結果是:林國喵是個,每天固定會扶一個過馬路呢!但是我寫了個regex長的是這樣 [{1}S*]{1},這邊寫得的簡單"["在開頭會出現一次({1})中間夾著任意非空白字元S多次(*),結果會變成:林國喵是個過馬路呢!結果會把中間的字串也去掉因為S包含括號,因此必須把括號給排除才行所以,正確的寫法要變成這麼一段:[\[<]{1}[^\[\]<>]*[\]>]{1},當然也許是因為我笨所以才寫成那麼長的。

上面那段寫了很多主要就是要說,即使是個簡單的pattern寫成regex也可能會變成很長的一串,剛剛看書有寫到e-mail格式的正確性辨識的regex,竟然寫到長達一千多的字,沒注意看的話還會以為是亂碼呢!附上連結,有需要自己去看吧:

http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

有些東西真的是可以想得很簡單,也可以想得很複雜…

 

克服P2P封鎖…

學校從上學期末開始明顯的限制P2P軟體的使用,上下傳的速度各不會跑超過30KB/s。可現今有很多的應用都是用P2P的架構來完成,因此在這樣的限制下上網其實已經有點半殘…。小弟雖學藝不精,但還粗略了解網路的運作苦,思不得其解的是在我總頻寬上並沒有限制,如果開其他服務還是可以達到原本的速率,因此不太像是對特定IP封鎖或限制總流量,僅有對P2P的封包作限制。而由於目前的P2P軟體都使用隨機port因此,不太可能是用傳統的所謂「鎖port」去block該port傳出傳入的封包。實在是不了解到底是用什麼辦法限制的。

Continue reading “克服P2P封鎖…”