發表文章

目前顯示的是 2012的文章

[Android] 清理圖片庫暫存

這陣子做了些測試,導致圖片庫一直讀到舊的照片(已刪除的照片),所以翻了手機的設定功能,我想應該可以手動去清除暫存空間吧。 總算是找到了↓ "設定>管理應用程式> 全部> 媒體儲存空間"

[Security] openssl test (續三)

好的,先排除任何版本的bug,簡單解釋一下openssl程式的架構,其實我也不是很熟,只是為了硬加入一個功能,大致上簡單瞭解了一些,怕自己忘記,就把我瞭解的紀錄下來了。 在openssl的程式目錄中,各種加密的方式在crypto/下都有獨立的目錄,但是把這些加密方式串連起來的核心是在apps/和ssl/目錄下的程式。 但,如果你是直接呼叫openssl library的人,基本上是用不到apps/下的東西,因為apps下的程式,通常是給在系統下要呼叫openssl的命令去進行一些簡單的測試。 先提一下... 由於openssl是在網路封包上,將Data channel的部分透過加密後,再封裝至socket中,我指的socket就是網路程式的一個介面,必須經過create socket -> bind socket -> listen socket -> accept socket,才能完成一條跟Client互相溝通的Session。 當然這個過程socket自然就會跟network的driver進行互動了。而openssl為了將加密後的封包包入socket中,自然他就會有自己的socket library,而我們只要透過ssl_read或ssl_write的方式就能透過已經建立的加密連線去丟送封包。 好的,接下來就是我真正想講的重點了。假定你是使用linux的user,那你呼叫openssl的命令時,其實你就是呼叫了apps/openssl.c這隻程式的main function,進而帶入參數後,它就會再跳轉到你帶入參數的下一隻程式中。 比如我們先前的Command是#openssl s_server xxxxx.... 它就會先進到openssl.c的main function中,再帶轉到s_server.c的程式中,而s_server跟s_client也就在apps下的s_server.c跟s_client.c。 我簡單拉出幾個openssl s_server從init到等待client中間會用到的幾個重要function。 Server - apps/s_server.c : MAIN() >  meth=SSLv23_server_method(), SSLv3_server_method(

[Security] openssl test (續二)

繼 上一篇 ,事實上openssl在0.9.8x版似乎是不支援DTLS,而到了1.0.0版終於開始支援DTSL,但我印象中要到1.0.0d才解掉了DTLS大多數的Bug。而x509的bug則是在0.9.8i才解決,否則會無法使用x509 server端的cert key。 基礎的加密、解密過程我就不作解釋,有興趣的朋友可以研究一下密碼學的發展跟運作。 當初我為了讓x509的功能可以正常運作,就把0.9.8e版的openssl升級到0.9.8i,就把一版psk key可以運作的版本加到我們的Device中。 而讓我最頭痛的問題是將openssl 0.9.8i版加入DTLS的功能。 我們生來只在學校讀過密碼學,對openssl極為陌生,於是我從測試命令開始學習。在 上一篇 大至瞭解了指令後,我們便可以透過 #openssl s_server -h的方式得到s_server的參數說明。 就在這時候我該拿出程式說明一下了,程式是怎麼開始進到s_server呢? 我們把從openssl組織download下來的壓縮檔解開後,可以看到一大堆資料夾,我們測試角度來看,只需要關注apps/。因為大多數的測試指令都是由裡面的openssl.c開始帶起。 而整個openssl加密的原則跟運作都是被寫在ssl/中的程式中。 (待續)

[分享] Study report關於創投

這陣子看了很多資料,像Facebook API、Google API、Jsp、AJAX、Java..etc.,就沒一一整理下來,對我來說大都是找一個規則,把一套語言、工具弄懂但不弄熟,再找出工具書的快速查詢方式。然後再轉成實戰的經驗累積。OpenNMS的Study也告一段落,更深入的當然還需要花更多時間去瞭解,畢竟人家是好幾十人的Team在研發OpenNMS,我單一個人怎麼可能一下子就把人家一大包的程式瞭解透徹。 除了技術的Study之外,這陣子還開始看一些關於創投的短篇文章,目前台灣最知名的大概就是 Mr.Jamie  雖然我對他的論點有時候很不爽,更且~偶爾會在它的文章中讀到一些關於學歷者的崇拜,但不可否認他的想法有時候是對的,注意不是全盤皆對喔!但他的文章大都是在引誘你進入思考狀態。(好的,我自己承認我學歷很差,但不可否認我走到現在都是用興趣支撐著自己的毅力。) 在 Mr.Jamie 的言論中,很有趣的事,我發現了他有時候會以創投的利益為出發點討論事情,但更大多數的時候是以「希望創業Team可以成長」的立場去散佈他的想法(我想大多數都是基於他在創投這塊所遇到的狀況居多)。 簡單說, Mr.Jamie 他講的其實是他的經歷,而在人類成長的過程中,最重要的其實是經驗的傳承,進一步才是思考。這不是造神活動,畢竟台灣過去的創投除了官方的資源,剩下的都是我們小老百姓不太容易接觸到的創投,現在可以接觸到的大概就剩這幾位創投顧問。 我的感覺是 Mr.Jamie 對我們有意想自立門戶的朋友來說,就是一扇大門,你不一定要開這扇門,但你可以先讀讀門上的說明字條。 我總結一下我的心得,非必要者,先不要打開創投的大門,想辦法自立救濟,否則你只是把你未來的財富提前使用掉。當然如果你認定你目前的專案一定會成功,非得要一筆資金時,或許就是你是時候打開創投的大門了。至少我還不到這樣的階段。 記住了,創投的資金只會稀釋掉你跟你夥伴的持股。先想一想,究竟你是為了什麼成立這個公司的?

[PhotoSystem Note] 分享

Start----> 想一想,還是將這個粗糙的東西分享出來給需要的朋友,這陣子太忙了,根本沒時間好好研究,而且後面還有一大堆案子要趕。 就按opennms的架構分解出web server的部分,需要就拿去研究吧,很多都是直接Copy OpenNMS的資源管理方式。加油了各位! 維護跟控制、新增、刪除模組的方式,一切如OpenNMS,只是services下的東西我並沒去測試過,有興趣的可以加入測試。 http://dl.dropbox.com/u/65537942/photosystem-0.0.01_20120702pm2223.tgz 我的環境如下: OS: Ubuntu, version: 11.04 安裝流程如下: 1. sudo apt-get install postgresql 2. sudo apt-get install pgadmin3 3. sudo apt-get install maven2 4. Setup Postgresql -     #>sudo -u postgres createuser --superuser $USER     #>sudo -u postgres psql       postgres=#> \password postgres                   createdb postgres (      postgres=#> \password $USER                    createdb $USER   ) 5. Unzip repository_20120607.tgz to ~/.m2/     #>tar zxvf repository_20120607.tgz ~/.m2/ 當然啦,這是我花兩個星期,一邊上班趁晚上一邊抽空弄出來的,很多東西還滿粗糙的,就當作是Study OpenNMS後的練習了。 最後,有興趣的朋友也可以跟我一起討論,畢竟我一路走來都自己一個人而已。哈哈哈哈,有點無趣。 [20120704-pm10:33補充一下] 忘了說... 執行方式如下: #初始化Java執行環境 ./target/photosystem-0.0.1/bin/

[OpenNMS Note] 加我加我加我~ OpenNMS新增Service的方法

圖片
這時候開頭不免要誇一下OpenNMS,因為它的模組化架構,讓我們可以輕易的抽取、更換或者新增某一個模組,當然最大的影響還是在於各模組間的Dependency,如果A模組必須依賴B模組,但你抽掉B模組,勢必A就往生了。這在OpenNMS算是滿重要的概念了。 先不介紹OpenNMS用到的那些技術,像spring、Jmx、Dao..等等,因為我敢說我做完整個架構移植,我也只是略懂Orz......。 ↓這就是OpenNMS程式碼的目錄。 首先,第一步,我們先將Log4j的log4j.properties設定好。 ↓檔案就在這個位置。 \\192.168.10.69\opennms_workspace\opennms-1.8.16-1\source\opennms-base-assembly\src\main\filtered\etc\log4j.properties 設定內容如下,設定的細節可以參考Log4j的教學網站。   # BrianSys   log4j.category.OpenNMS. BrianSys =DEBUG, BRIANSYS   log4j.additivity.OpenNMS. BrianSys =false   log4j.category.org.opennms.netmgt.briansys=DEBUG,  BRIANSYS   log4j.additivity.org.opennms.netmgt.briansys =false   log4j.appender. BRIANSYS =org.apache.log4j.RollingFileAppender   log4j.appender. BRIANSYS.MaxFileSize=100MB   log4j.appender. BRIANSYS.MaxBackupIndex=4   log4j.appender. BRIANSYS.File=/home/ianathome/opennms_workspace/opennms-1.8.16-1/source/target/opennms-1.8.16/logs/daemon/briansys.log   log4j.appender. BRIANSYS.layout=org.apache.l

[OpenNMS Note] OpenNMS SNMP的誕生

圖片
這陣子實在是懶到翻掉,一點都不想上班,這幾張圖片還是被我老闆逼出來的。 我承認我真的很懶,懶得囉嗦,我就直接就說明一下。 看圖說故事 ↓這是OpenNMS的架構,基本上OpenNMS的發展一直都是依這樣的架構發展,增加的只是一些模組跟功能,可見這用Maven搭建的架構還算穩定。 我拿到手的版本是1.8.x版,這時候已經是改用Jetty當作Web Server。整個SNMP的功能主要是藏在Dependencies中「snmp*」的module中,opennms/dependencies下的東西大都是用來作Library用,所以很多都是只有pom.xml的檔案,再透過Maven的repository到指定的Server download。當然你也可以自己手動增加一個module,按照其他的pom.xml的架構去搭建就ok了。 接下來OpenNMS的真正核心是在core/snmp/*下面,他會呼叫到Dependencies中的snmp*.tar,所以大家就清楚當初弄Dependencies/snmp*的目的了。當然在core/snmp中只提供大部分的snmp api,而後再依照各個功能需求去初始化Daemon/Service,由此取得SNMP的服務/功能。 ↓剛剛提到的SNMP程式架構的大概。最下面的那幾個是我目前查到有用到SNMP api的幾隻模組。 ↓這其實是整個OpenNMS的Boot up 流程。很多東西都被我省略了,但是剛開始Study OpenNMS的人應該還是有點幫助。 最初的程式其實是「target/openms-1.8x/bin/opennms」這是隻可執行的pl。它平常就被藏在「opennms-base-assembly\src\main\filtered\bin」下。 從中可以看到它會去呼叫opennms-bootstrap.tar,程式就是這樣開始的。 緊接著bootstrap會用classloader的方式去喚起opennms-daemon中的程式,然後就是一連串的初始化,像Spring, JMX, Dao...之類的東西都是在這階段初始化,你也可以從每個module中看到有onInit()或Init的function,這個Function就是在各個資源初始完之後,切入每個Service/mod

[PhotoSystem Note] 第一階段。OpenNMS架構破解

今天下午,總算把耗時三個星期的OpenNMS架構整理給告一段落了。因為OpenNMS主要是基於SNMP4J、Spring、Log4j、jrrd、liquibase、Jicmp、Castor、Jaxb、Hibernate、Jcifs、Jdhcp...等技術去搭建完成,架構搭建則是基於Maven的技術去規劃。 而我這次任務就是將SNMP4J、Jrrd、Jicmp、Jdhcp..這些我暫時用不到的東西抽除,並且把我的程式全部放進去一個獨立模組。 我想了幾天,原本是想用刪去法,一個一個模組抽離。但後來發現刪去法,可能會導致刪除的模組不齊全,那我乾脆由一個乾淨的環境,一個一個組裝回來,這樣少掉什麼模組就會缺少什麼功能,這樣比較能夠掌握每個模組的完整度。 這下來第一個星期,我花了整整一個星期,先用Maven簡單建立起一個簡陋的Web Server,然後再將Jetty抽離為一個獨立模組。 完成第一個階段後,問題來了,因為我當初沒考慮到Spring、Jmx上的應用,甚至我想用更簡單的方式去達到,所以我在Compiler跟Assembly之後,我的管理套件無法呼叫Jetty去初始化。 所以我又回去OpenNMS參照它的Spring、Daemon管理的架構,想了一個星期,後來我還是決定導入OpenNMS的架構,因為我經驗值太低了。 陸續又花了一個星期,導入過程中一直出現錯誤,加上我對Java熟悉度還不是很成熟,就這樣耗費一個星期,又是K資料、又是測試、甚至是再重新建立單一的Spring架構去熟悉Spring、然後再繼續K資料,今天下午總算將這些架構弄懂,導入完成。 現階段我已經將Start、Stop、Status的架構給完成了。並且集中由一隻叫Control的Java程式去控制流程,然後由Manager的程式去掌握資源,初始化則是Starter。 如果你是熟悉OpenNMS的人應該對這幾個關鍵字很熟悉,是的,因為我翻了OpenNMS的程式一段時間後,我真的找不到可以快速替代他們的方案,就直接引入了。 我的架構很單純,就只有Jetty Server、Web UI、Daemon Manager、Spring、Log4j、Caster,大至上是這些東西,但我又留了擴充的能力,如同OpenNMS一樣。 所以,接下來我將會再導入Mysql跟Hibernat

[分享] 生物系統概念

一般而言,似乎是社群聯結Blog,Blog聯結文章,文章聯結圖片, 如果反過來,會不會比較直覺? 圖片經過歸類,然後再聯結其他項目,像是...圖片先聯結相關圖片 (種類相關) ,然後 圖片再做一次跟其他圖片(事件相關)的聯結後變成文章、故事。 簡單化後,就可以透過社群聯結一張圖片,轉而聯結到其他圖片,然後再看到文章、故事...,廣告效益會引起其他相關(事件、種類相關)的圖片聯結。 聲音就已經有Youtube在做了,而且台灣版權問題不明,也不適合做。 再來就是版權影響範圍太大時,會受到其他國力比較強的國家打壓。 生物系統 = 圖片+圖片+圖片+.. ->特徵->屬性分類->物種分類->生物細項分類(出現地區、品種、科)。 當特徵歸類出一套規則後,就可以透過生物辨識系統分辨生物,使用者可以透過這套系統可以瞭解眼前的生物習性、棲息地、生物鏈。轉而提供農業、生態統計上相關的應用,如需要生態工法做為當地環境規劃,也就有很大的參考價值。 牽涉到的技術有:Web Server建置(Jetty、Tomcat、Ruby on Rails)、Java EE架構、Java SE基礎、JSP、PHP、JavaScript、CSS、AJAX、相關網頁語言、IPhone APP開發、Android APP開發、Facebook API(因為Facebook上的廣告效益高於Google+)、SQL(Mysql..等)、電腦影像處理、HTML5、Linux Server、C語言、Google API(方便站在巨人的肩上,流量統計、GoogleMap..等)。