Git v2.9.0 釋出

台灣時間  6 / 14 號早上8點左右釋出的新版本,官方 Windows 的 binary release 在中午為止看起來都還停留在 v2.8.4,Mac 甚至還停留在 v2.8.1,而 FreeBSD 的 ports 目前也還沒看到更新,但如果是 Ubuntu 或是基於 Ubuntu 的 GNU/Linux 發行版,只要透過官方的 PPA 就可以直接升上去了。(可以參考 Ubuntu 上的 PPA 整理)

除了每次版本更新都必備的修 bug 以外,這次沒看到明顯跟效能提升有關的更新,背後實作的部份太瑣碎就先不琢磨,列舉依些對使用上有直接影響的更新:

  • Shell 的 auto-completion 更新
    (就是你打命令要按 tab 把剩下字補完的功能)

    • 目前看起來還是缺不少指令,不過有更新總比沒有好 …
  • git rebase -x 現在不需要加 -i 參數就可以直接使用了
    • (rebase 的時候針對每個 commit 跑測試的功能)
    • 省下了一些瑣碎的步驟/時間,畢竟不是每個人都需要 interactive 的互動操作
    • 之前的版本不加 -i 就會不讓你跑,然後出現錯誤訊息:
      • The --exec option must be used with the --interactive option
  • 可以自行指定 hooks 的位置
    (將一些事件和行為進行連結達到自動化的功能)

    • 先前都是放在 .git/hooks,可以指定之後應該某些專案就可以共用 hooks 了,或許可能就會有人性質相同專案會用到的 hooks 也可以打包成專案釋出?複雜一點的話就是偵測專案性質用比較 general 的方式跑簡單的檢查,syntax check / lint 之類的
  • git commit 現在會吃 verbose 的設定,就不用在命令後面加參數了
    (顯示更詳細的資訊輸出)

  • git clone 現在可以直接 shallow clone submodule 了
    (clone 的時候不要 clone 整個改版歷史,可以有效減少空間跟頻寬消耗跟提升速度)
  • git diff / log 預設啟用自動偵測檔名變更
    (區別 “檔名變更" 和 “刪除一個舊檔案再寫一個新檔案" 的不同)

    • 可以透過設定來停用
  • 預設禁止沒有共同祖先的分支合併
    • 可以避免一些錯誤的操作
  • git log 的 commit message 縮排預設用 4 個 spaces 來展開 tab
    • 不知道是不是我沒讀懂或哪邊有問題,目前看起來還是8個空白的長度
    • 可以透過參數來取消這功能

繼續閱讀

在 nodejs 手動 garbage collection 的方法

前陣子因為在 Heroku 上面跑的 nodejs 程式開始不斷出現記憶體使用超量的訊息:
R14 - Memory Quota Exceeded ,加錢升 dyno (Heroku 上的 instance) 也不見好轉,只好想看看有沒有什麼方法可以改善,後來作法是手動執行 garbage collection,記憶體使用量就掉下去了 …

cdnjs 的 api / web server 為例,沒做 gc 的話大概要吃 410 MB 的記憶體,一模一樣的程式,有做 gc 的話只要吃 230 MB的記憶體,相差甚大,其中原由大概只能等高手指教或是等很閒的時候才有空追了 …

作法滿簡單的,執行 nodejs 的時候加上 --expose-gc 的參數,並且在你想要執行 garbage collection 的地方加入 global.gc(); 即可。

Netflix 推出的 Fast.com 網路測速服務

Netflix 前幾天在他們部落格上的這篇 「Now Available Globally: Fast.com, a New Tool to Check Your Internet Speed」跟大家宣佈推出的網路測速服務:Fast.com

Fast.com 的畫面非常簡潔,只測試使用者的 “下載" 速度、不測試上傳速度,整個畫面除了測速速率以外,只有暫停 / 重新測試的按鈕,說明按鈕,以及 FAST 和 NETFLIX 的 LOGO,測試結束後會出現 Speedtest.net 的連結讓使用者方便連到 Speedtest 做參考:

netflix-fast.com

目前看起來 Fast.com 比起 Speedtest 的幾個優勢:

  • 使用 https 加密連線,對使用者的隱私更加有保障 (雖然只是測速、可是為什麼要讓其他人知道?)
  • 畫面非常簡單、沒有廣告
  • 單純的 html + js 搭建出來的網頁前端 ( Speedtest 目前都還是在使用 Flash ),在手機、平版電腦或是 FreeBSD / Linux 等不支援(或是使用較困難) Flash player 的平台上都可以使用輕易透過 Chrome / Firefox 等瀏覽器直接使用,不需要另外安裝應用程式

不過現階段看起來 Fast.com 也有頻寬明顯不足的問題,除了沒有 ping 值參考外,有別於 Speedtest 是透過多方合作的模式在各地建立測試點, Fast.com 目前看起來是丟在Amazon S3 上面走 Akamai 的網路,我以下載速率 1 Gbps 的網路多次使用 Fast.com 測試結果只跑的到 140 Mps 上下, 同樣的網路環境 Speedtest.net 則是落在 900~950 Mbps 的區間,如果說 Netflix 只是要提供自己的用戶測試存取自家服務的網路頻寬的話還算是有參考價值,但如果要真的拿來確認所在網路的對外頻寬的話看起來現在還不能拿來當作參考 …

PS: Speedtest.net 其實也有提供 html5 的測試版本,有興趣的人可以連到這個網址玩玩看:http://beta.speedtest.net/ ,不過目前沒有開放給行動裝置使用,使用手機連上去會直接跳 Android / iOS / Windows Phone 這幾個平台的 APP 下載連結給你 (連偵測一下使用者系統只顯示對應的連結都沒做 … 可能是因為在 beta 吧) ,相對有點可惜,希望未來可以開放給行動裝置使用 (不然你改用 html5 只是為了避免未來被各家瀏覽器直接封鎖而已嗎? 可攜性就這樣白費了!)。

 

租屋注意事項筆記

差不多又到了學生在外找租屋的季節(?)了,為了避免自己忘東忘西,所以就做了一些筆記,不用每次找房都要想半天,除了租金以外,有哪些東西是應該列入考量或是可以列入考量的,既然有整理出一些東西,也就順便分享給大家參考。

住處週邊考量:

  • 噪音
    • 跟大馬路或商圈的距離等
  • 整潔
  • 週邊生活機能
  • 交通便利性
    • 公車、客運、火車、捷運、高鐵、社區巴士等
    • 缺乏公共交通工具、但離學校或公司距離近也是很好

公共設施、住戶服務:

  • 有無管理員常駐?可否代收信件、包裹?
  • 有無提供飲水機?
    • 只有熱水? 還是冷/溫水+熱水?  冰+溫+熱水?
    • 有無定期更換濾心?
  • 有無提供冰箱?
    • 有無定期清理?
  • 有無提供洗衣機、烘衣機、脫水機?
    • 有無定期清洗?
  • 有無公共空間、電梯、出入口等地點有無監視器?
  • 是否有停放汽、機車位?
    • 室內?室外?
  • 有無晾衣間、曬衣場?
    •  室內?室外?
  • 有無陽台?
  • 有無門禁管理?
  • 有無微波爐?
  • 公共空間是否定期打掃?
  • 有無滅火器?
  • 有無緊急照明燈?

繼續閱讀

Remove Exif info in jpg image under command line

Exif, stands for Exchangeable image file format, which we usually use to recognize the camera manufacturer, model, exposure time in a digital photo, it is a standard that specifies the formats for images, sound, and ancillary tags used by digital cameras (or digital devices in nowadays, like smart phones and tablets), scanners and other systems handling image and sound files recorded by digital cameras.

406px-Konqueror_Exif_data.jpg

Exif in JPEG image example from Wikipedia: https://en.wikipedia.org/wiki/File:Konqueror_Exif_data.jpg

Exif can help us know more about the photos and audios, but may also leaks the valuable and privacy info if you don’t want to let others know that you just want to share pictures with others, it will also cost a small disk space, but uf you don’t need it or you don’t want it, it’s also a waste of disk space, so you may want to remove that info like me in some situation. Here is the steps to remove Exif under command line.

Install exiftool:

Make sure you can now use exiftool:

If you would like to see the current exist info, use this command, filename.jpg is the picture you want to manipulate:

Now you can remove Exif info:

By default, it will backup your file to filename_oringinal, like filename.jpg -> filename.jpg_original, so you don’t need to worry about the backup, if you don’t want it, you can also add parameter -overwrite_original to prevent to backup file been generated.

After you remove the Exif info, you will find the modified file be a little bit smaller now.

If you take a look at its info, you will find that there are only some basic info remaing:

That’s all.

rsync 只同步特定格式/副檔名檔案的方法

想要用 rsync 同步特定格式的檔案,最近比較沒空動腦認真想,只好 Google 找現成的答案,在 stackoverflowUbuntu forums 看到的方法,很實用:

http://ubuntuforums.org/showthread.php?t=763833&p=8546521#post8546521

https://stackoverflow.com/a/11111793

看 stackoverflow 那邊討論是寫 rsync 3.0.7 以前的版本的用法要這樣寫,那個 exclude 和 include 的順序有影響 :

不過我自己是沒特別測試過就是了,隨手翻了一下 change log 好像沒看到相關的說明:

所以不確定是不是真的從 rsync v3.0.7 改了用法還是怎麼樣,等哪天有空再來翻翻看 …

Copy / pipe text from command line to clipboard and vise versa

xclip is command line interface to X selections/clipboard that is designed to run on any system with any X11 implementation, with xclip, we can not easily manipulate the data on the clipboard under a terminal in X11, no need to open a file for just copy its content anymore, and no need to move the mouse to select the output and copy it anymore. Except xclip, there is also a similar program called xsel, google it if you are interested in.

The homepage of xclip:

It’s very to install xclip via apt-get under Debian / Ubuntu based GNU/Linux distros or via pkgng under FreeBSD:

So how to use it?

If you want to copy something to clipboard, just pipe to xclip like this:

Now you can paste it as usual.

If you want to show something from clipboard, just call xclip to output:

xclip will output to standard output (stdout), so you can pipe or redirect the result to other utility and do some works you want.