發表文章

[分享] 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/ 當然啦,這是我花兩個星期,一邊上班趁晚上一邊抽空弄出來的,很多東西還滿粗糙的,就當作...

[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/log...

[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..等)。

[WebServer Note] Web Server一般架構

圖片