2013年5月31日 星期五

去除影片中的半透明浮水印

無意間看到 [1] 的資訊,有個叫做 aviutl 的工具,有提供 plugin 可以去除浮水印。
其實想想覺得也蠻有道理的,浮水印如果是半透明的話,透過收集不同畫面上的浮水印資訊
應該可以解析每個畫面的浮水印跟周遭的顏色差異,得到某一個特徵值
然後綜合每個有浮水印的畫面的特徵值,理論上可以得到 "近似" 浮水印原始顏色和形狀的特徵值
用這個特徵值去反向演算每個畫面上的浮水印,應該是有蠻高的機率可以讓浮水印消掉 8~9 成的顏色吧。

2013年5月30日 星期四

MongoDB 的特性

記錄一下同事在做 MongoDB 的效率測試時發現的一些特性(測試的版本是 MongoDB v2.4.3):

(書籤) 物件相等性

討論 Java 中的物件比較,使用 equals() 時會發生的狀況~。

參考資料:
1、物件相等性(上)物件相等性(下)

2013年5月24日 星期五

(書籤) 有關 MongoDB 的 AGPL-3.0 授權條款

今天被問到有關 AGPL-3.0 條款,是否需要讓專案 Open Source 的問題
稍微查了一下之後,發現 OpenFoundary 有蠻詳細的案例解說!
簡而言之,一般狀況下只要沒有對 MongoDB 的資料庫核心做任何修改,原則上並不需要跟著使用 AGPL-3.0 授權並開源。

2013年5月23日 星期四

Forking the JVM

由同事轉述的一篇文章,主要是因為發現我們開發的專案,在某些狀況下會拋出記憶體不足的錯誤,但記憶體使用量似乎還沒有用滿。
後來同事查到了這個可能性,因為我們專案中使用了不少 Runtime.exec() 去存取 Linux 的 Shell Script
這時就會出現 [1] 中描述的狀況,在 exec() 時會先完全複製目前的 JVM 的實體出來
導致在 Runtime.exec() 執行期間,JVM 會跟系統要求兩倍的記憶體,但是實際上可能用不到這麼多
如果這時 JVM 無法 allocate 足夠的記憶體,就會拋出記憶體不足的 Exception 了。

2013年5月20日 星期一

關於 Android 的 BroadcaseReceiver (1)

最近想寫個偵測 Wifi 狀態的服務,不過首先必須先讓服務能夠偵測到系統打開、關閉 Wifi
而要偵測到系統的通知,就必須先對系統註冊 BroadcastReceiver 事件。