Recently in 技術 Category

還不賴的 Google Chrome 語音辨識

| No Comments | No TrackBacks

剛看到 Duckduckgo 發推 說在 Google Chrome 上支援語音輸入,看了一下,竟然不是透過 flash 或其他 plugin,而是 google chrome 內建的。

只要 HTML5 input tag 寫成像這樣,就會在一旁出現個可以按的麥克風:

<input type="text" x-webkit-speech x-webkit-grammar="builtin:translate">

不給 x-webkit-grammar 也行,但英文辯識效果會遜色很多。把 Mac 系統語言設成中文的話,就可以辨識中文了,實在厲害。

順手錄了一份亂測的影片: http://www.youtube.com/watch?v=umrHbzchvM4

由 git commit 造出 Changelog

| No Comments | No TrackBacks

轉貼自 http://blog.rybas.org/2011/01/15/making-a-changelog-from-git-commit-messages, 原文作者 Vladimir Rybas。

摘要。指令如

git log --no-merges --pretty=format:' - %s' release-0.22..HEAD

YouTube 廣告有點煩

| No Comments | No TrackBacks
把 Mac Safari 假裝成 iPad Safari 拿來看 youtube 影片,一來不必 flash, 二來沒有廣告,三來首頁版面單純好看多了。只不過這個動作每次都要手動做,沒有 Safari extension 能做這件事。 

有一個比較自動的方式 是透過 Fluid。Fluid 建出來的 app 可以自由指定 User Agent。目前內建的選單中沒有 iPad,但是可以選擇手動輸入,因此只要輸入這樣的 iPad User Agent String 就行了:

Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10

只是,在要開 YouTube 時要記得去開這個 App,這大概是 SSB App 的基本問題。

有個命令叫 networksetup,它有非常多的子命令,基本上能做到網路偏好設定的所有功能。有沒有更多隱藏功能就不知道了。

第一步要先列出可用的「網路服務」,有點像是 ifconfig -l 列出所有網路介面卡這樣的意思,但會列出 iPhone、VPN、藍芽等其他項目。

networksetup  -listallnetworkservices

會輸出像這樣三行的內容,可以在網路偏好設定 GUI 中一一對應:

Bluetooth DUN
AirPort
iPhone

如果要改 AirPort 的 Proxy,就執行:

networksetup -setwebproxy AirPort localhost 8118;
networksetup -setwebproxystate AirPort on

第一行是設定 http proxy 到 localhost:8118,第二行才會真的啟用這個設定值。on 改成 off 就是關掉的意思。

命令太長,設上 shell alias 就可以方便我開關 tor proxy 設定:

alias tor-proxy-on="networksetup -setwebproxy AirPort localhost 8118;networksetup -setsocksfirewallproxy AirPort localhost 9050; networksetup -setwebproxystate AirPort on; networksetup -setsocksfirewallproxystate AirPort on;"
alias tor-proxy-off="networksetup -setwebproxystate AirPort off; networksetup -setsocksfirewallproxystate AirPort off;"

SSH over Tor on Mac

| No Comments | No TrackBacks

Mac 上透過 Tor 的 SOCKS proxy 連 ssh 的指令:

ssh -o ProxyCommand="nc -X 4 -x localhost:9050 %h %p" example.com

可以設定為 shell alias 備用:

alias tor-ssh='ssh -o ProxyCommand="nc -X 4 -x localhost:9050 %h %p"'

密碼產生器

| No Comments | No TrackBacks

shell function,塞到 .bashrc.zshrc 後使用。用了 pbcopy 自動把內容剪到剪貼簿(Mac 限定)。系統中無此指令時將該例移除即可。


pw () {
    p=`perl -e 'print map { chr rand(94) + 33 } 1..16';` 
    echo -n $p | pbcopy
    echo $p
}

這段程式產生的是像 I:tx)C<!:'xn((AY 這種強密碼,有用到大小寫字母、數字、符號。如果不想要這麼強,可以調整 94,33 這一組數字。例如調為 10,48,就會產生出只有阿拉伯數字的弱密碼。如果長度不用到 16 個字符,就將 1..16 的部份改成 1..12 或 1..8 之類的。

如果不需要自動前剪到剪貼簿的功能,其實可以改成 alias(注意多了一個 -l,才能適當地輸出換行):

alias pw="perl -le 'print map { chr rand(94) + 33 } 1..16';"

或是做成獨立的程式執行檔。

或是把這段程式碼背下來每次重打。

新年快樂。

No flash plugin for Mac Safari

| No Comments | No TrackBacks

It is possible to remove flash plugin for Safari, but keep it for Firefox. Just move it to Firefox profile directory.

cd ~/Library/Application Support/Firefox/Profiles/xxxxxxx
mkdir plugins
mv /Library/Internet Plug-Ins/Flash Plugin.plugin plugins
mv /Library/Internet Plug-Ins/flashplayer.xpt plugins

This boosts Safari startup speed a lot, and yet I can fallback to Firefox to visit those sites that requires Flash. For example, Amazon EC2 console panel.

Google Chrome does not load the flash plugin from /Library/Internet Plug-Ins directory. It actually has one under /Applications/Google Chrome.app/Contents/Versions/7.0.517.41/Google Chrome Framework.framework/Internet Plug-Ins directory.

本機 gem server

| No Comments | No TrackBacks

看裝好的 rubygems 的方式是: 執行指令:gem server,然後打開瀏覽器看。可是這樣總是有點煩,為何不將 gem server 變成 rack app,然後嵌在 nginx 中,隨時可看呢?

簡單的 Javascript 迴圈效能比較

| No Comments | No TrackBacks

比較 jQuery.each 與各種 for 迴圈的寫法在執行效能上的差別。主要是想知道,用在一般簡單陣列(而不是由 jQuery 生成的元素列表)時,會有多少程度的差別。

中文姓名產生器

| No Comments | No TrackBacks
用 Perl, Ruby, Javascript 三種程式語言寫了中文姓名產生器。原始碼丟去 gist 上: http://gist.github.com/476669 ,用來生假資料時意外好用。姓氏與名字的資料分別是取自於 chtsai [1], [2]。