無意間看到 [1] 的資訊,有個叫做 aviutl 的工具,有提供 plugin 可以去除浮水印。
其實想想覺得也蠻有道理的,浮水印如果是半透明的話,透過收集不同畫面上的浮水印資訊
應該可以解析每個畫面的浮水印跟周遭的顏色差異,得到某一個特徵值
然後綜合每個有浮水印的畫面的特徵值,理論上可以得到 "近似" 浮水印原始顏色和形狀的特徵值
用這個特徵值去反向演算每個畫面上的浮水印,應該是有蠻高的機率可以讓浮水印消掉 8~9 成的顏色吧。
Software entities (class, modules, functions, etc.) should be open for extension, but closed for modification. Junior programmers create simple solutions to simple problems. Senior programmers create complex solutions to complex problems. Great programmers find simple solutions to complex problems. 註1:本部落格的範例程式碼在 2015 年以前的文章中,大多是以全型空白做縮排。如需服用,請自行用文字編輯器的取代功能把全型空白取代成半型空白。
- Bertrand Meyer
- Charles Connell
註2:本部落格的內容授權請參閱部落格底部的授權宣告。
2013年5月31日 星期五
2013年5月30日 星期四
2013年5月24日 星期五
(書籤) 有關 MongoDB 的 AGPL-3.0 授權條款
今天被問到有關 AGPL-3.0 條款,是否需要讓專案 Open Source 的問題
稍微查了一下之後,發現 OpenFoundary 有蠻詳細的案例解說!
簡而言之,一般狀況下只要沒有對 MongoDB 的資料庫核心做任何修改,原則上並不需要跟著使用 AGPL-3.0 授權並開源。
稍微查了一下之後,發現 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 了。
後來同事查到了這個可能性,因為我們專案中使用了不少 Runtime.exec() 去存取 Linux 的 Shell Script
這時就會出現 [1] 中描述的狀況,在 exec() 時會先完全複製目前的 JVM 的實體出來
導致在 Runtime.exec() 執行期間,JVM 會跟系統要求兩倍的記憶體,但是實際上可能用不到這麼多
如果這時 JVM 無法 allocate 足夠的記憶體,就會拋出記憶體不足的 Exception 了。
2013年5月20日 星期一
關於 Android 的 BroadcaseReceiver (1)
最近想寫個偵測 Wifi 狀態的服務,不過首先必須先讓服務能夠偵測到系統打開、關閉 Wifi
而要偵測到系統的通知,就必須先對系統註冊 BroadcastReceiver 事件。
而要偵測到系統的通知,就必須先對系統註冊 BroadcastReceiver 事件。