Re: [討論] 非資工背景想走程式設計這條路?
回一下四年前自己Po的文XD
後續是靠DEMO這個作品進了hTC MASD,做AP的開發和維護
當時會被錄取也滿意外的,因為不會java和android...
我留下的東西也在離職後一年半,因為公司重整的關係整個被砍掉了
當下其實有點感慨,像是自己的孩子沒機會繼續長大了(雖然嚴格上說起來是我先拋棄它了)
進hTC大概一年後,深深感覺到工作內容和當年的天馬行空相比,其實滿平淡的
不過面試的時候其實就知道了,這也是自己的抉擇...
但那時突然有個想法:為何不試試看,利用閒暇時間,用java+Android移植看看呢?
然後就花了一個月左右的時間,把程式核心的部份跟繪圖引擎改寫成java,
然後就有了這段影片
https://www.youtube.com/watch?v=zz1TbZwr3sQ
但當時面臨一些瓶頸
1.無法讀取正規醫學影像檔(DICOM):因為DCMTK不支援java
2.效能問題:從影片可以看得出來,完整的重繪3D view超級花時間
3.記憶體問題:Android AP可以用的java heap是有限的,而3D影像檔很容易就會超過限制
(當年的手機java heap大多都32M左右,就算開了largeHeap也頂多64M)
這三個大問題讓我裹足不前了,再加上當時接了一些新的topic,
也讓我無心分神來搞這些有的沒的
而且連原公司都放棄了,實驗室也改走別的方向了,似乎沒有繼續做的理由
所以只好放棄...
說是放棄,但時不時還是會被一些很好的想法打中,然後又像是回到研究所時代
可以因為思考可行性和實作方法而徹夜未眠
這對我來說是個折磨,因為好像失去了自己的舞台...
然後大概就在一年多前,突然又想要繼續挑戰看看
當時我腦子裡想的是"為何要停下來?"
其實我知道答案,這三個問題的答案不約而同的指向了"Java native interface"
也就是JNI
我害怕接觸的技術,怕做不好,怕花了時間卻沒有結果,尤其是醫學影像這個冷門的東西
但這都不是停下腳步的理由,而只是藉口,對吧?
最奇妙的是當時是在看著線上遊戲的遊玩時和獎盃,
心裡想說我如果把寫code當打怪,應該就可以解開一些人生的成就了吧?
於是故事再開,我花了一個月的時間把DCMTK編譯成Android jni靜態函式庫,
會花這麼久是因為網路上找不到教學,
連怎麼用cmaker編譯函式庫跟怎麼掛載我都摸了老半天...
這過程中又放棄了大約三次左右XD
編譯完成後,在debug下看到資料讀進來的那瞬間,感覺的到眼淚在眼眶裡打轉
不是因為花了一個月的時間,而是因為終於跨過第一道門檻!
為了解決效能和記憶體的問題,程式開發的方向就改為JNI為主,Android則只是表皮
開發的過程是既快樂又痛苦,在不熟的開發環境開發熟悉的軟體,
像是在黑暗中摸索回家的路
總結整個開發過程中,跨過的門檻應該有三個
過了第一號門檻DCMTK後,第二個門檻就是效能了,號稱飛快的JNI實測到底能有多快呢?
結果很慘的是,我自己實做的繪圖演算法,在效能上,JNI居然比java慢一倍左右
這讓我萬念俱灰,但心裡又覺得不可能,因為大家都說JNI比較快啊!
結果這又是外行人的悲歌XD
因為我在開發初期,限定只用armeabi這老舊的東西,後來換用armeabi-v7a,
效能反超java 2倍左右!
第三個門檻也是效能的問題,手機在怎麼快,實做的立體渲染還是跑不太動
而在繪圖完成前,使用者是無法操作的(程式寫不好...)
又由於舊版ndk的bug,用非主執行序來跑多執行序必當機...
(這個bug在最新的r10e才解掉 囧)
所以程式的核心功能-3D繪圖,反而變成拖累UX的最大包袱
後來也是突然天外飛來一個想法:如果分次繪圖呢?
在操作3D view的時候,程式會依照重繪的效能將繪圖的解析度降低,
結束操作時才畫出完整解析度的圖
改良的方式就是先預測完整解析度的圖要畫多久,然後把圖照繪圖時間來切割重繪
每畫完一部分就貼到view上,同時檢查是否有user操作進來
(我猜這應該有人做過了,還有個專有名詞,但讓我野人獻曝一下XD)
這個想法徹底解決程式卡卡的問題,從超級卡卡變成普通卡卡,
這對我來說,也是最後一個門檻了
終於...上個禮拜上架了
https://play.google.com/store/apps/details?id=com.luolai.droidrender
基本功能是免費的,付費可以去廣告
(主要是針對真的有需要使用的人,另外hTC官方ROM應該是看不到廣告的,
算是小回饋,因為這公司真的有養活我家XD)
付很多錢可以變VIP,目前VIP只有多了雞肋的檔案輸出功能
下一階段想試著在3D繪圖實作實體陰影,因為這光想就很Cooooool啊(更寫實/噁心的圖)
請大家有空的時候可以下載試玩看看,可以的話請給個5星鼓勵一下!
程式內有連結可以下載範例檔,教學影片在這裡
https://www.youtube.com/watch?v=JisG_6W1fqc
然後還有一個作為教學,意見回饋跟Bug report的粉專
https://www.facebook.com/droidrender
我也不知道是什麼支撐我到上架的,可能是我真的很想解掉這個成就吧XD
※ 引述《startm (startm)》之銘言:
: 先說明一下我的背景~
: 我大學跟碩士都是唸機械系,但碩班主要工作是在寫VC++,
: 寫著寫著就有種上癮的感覺,發現自己對程設有相當大的熱情~
: 我在實驗室主要負責的是醫學影像的應用(CT,MRI等)
: 因為是新的題目,所以幾乎所有的工作都是由我包辦,
: 整體程式架構,資料結構,演算法,介面都要我設計跟實作,也有一些不錯的成果
: 高效能立體渲染法(DEMO http://tinyurl.com/3byfcg9 )
: 骨組織快速擷取演算法(DEMO http://tinyurl.com/446cetu )
: 圖層視窗式控制樹開發(DEMO http://tinyurl.com/3tvlncc )
: 另外還有MutliThread,nVidia 3DVision掛載等等族繁不及備載XD
: 大部分的演算法除了實作之外,還會加上一些個人的巧思來改良效能等~
: 這隻程式也讓我畢業後得到一份繼續開發這隻程式的工作,
: 在工作上我算是半自主開發,因為只有我懂這塊,所以要做什麼功能大多是我自己決定
: 程式碼也是自己撰寫,寫的方法也是我認為該怎麼架就怎麼架...
: 工作兩年後,發現自己若要再繼續走程式設計這條路,勢必要學一些更正統的東西
: 但因為自己是非資工背景,在找相關工作的時候會較難得到青睞...
: 我想問的是:
: 1.像我這樣非資工背景的,是不是要考一些證照會比較好呢?
: 有哪些證照在程式設計這塊是比較有價值的?
: 2.我到現在還是只會用VC++6.0/2008跟MFC,最近找工作發現業界有在用VC/MFC的似乎很少?
: 是不是該把底層的C/C++也好好惡補一下呢?
: 3.純程式設計的公司在新竹地區有那些比較推薦的嗎?
: 希望能夠學到更多東西,公司也能夠栽培工程師~
: 4.以過往的經驗來看.我的身價大概是到哪裡呢?
: 最近開始找工作,自己也想了很多,但很多實務面的東西實在是不了解,
: 希望各位前輩能夠指引小弟方向~
: 感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.122.2
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1437990957.A.98A.html
推
07/27 18:47, , 1F
07/27 18:47, 1F
推
07/27 19:13, , 2F
07/27 19:13, 2F
推
07/27 19:18, , 3F
07/27 19:18, 3F
推
07/27 19:29, , 4F
07/27 19:29, 4F
推
07/27 19:32, , 5F
07/27 19:32, 5F
推
07/27 20:00, , 6F
07/27 20:00, 6F
→
07/27 21:12, , 7F
07/27 21:12, 7F
推
07/27 21:35, , 8F
07/27 21:35, 8F
※ 編輯: startm (114.32.245.164), 07/27/2015 21:45:49
→
07/27 21:46, , 9F
07/27 21:46, 9F
推
07/27 22:43, , 10F
07/27 22:43, 10F
推
07/27 22:46, , 11F
07/27 22:46, 11F
推
07/27 23:07, , 12F
07/27 23:07, 12F
推
07/27 23:30, , 13F
07/27 23:30, 13F
待過兩年的意思是有用過兩年嗎?
實際上DCMTK我超不熟的...只用來讀DICOM
聽說可以用來讀PACS...可以指點一下嗎XD
推
07/28 02:18, , 14F
07/28 02:18, 14F
推
07/28 09:25, , 15F
07/28 09:25, 15F
推
07/28 09:30, , 16F
07/28 09:30, 16F
推
07/28 09:43, , 17F
07/28 09:43, 17F
推
07/28 10:31, , 18F
07/28 10:31, 18F
推
07/28 11:41, , 19F
07/28 11:41, 19F
推
07/28 12:34, , 20F
07/28 12:34, 20F
→
07/28 12:36, , 21F
07/28 12:36, 21F
這是用ray-casting寫的,B大要不要下載玩玩看阿~
※ 編輯: startm (210.61.122.2), 07/28/2015 16:17:46
→
07/28 17:03, , 22F
07/28 17:03, 22F
→
07/28 17:04, , 23F
07/28 17:04, 23F
推
07/28 19:13, , 24F
07/28 19:13, 24F
→
07/28 19:13, , 25F
07/28 19:13, 25F
→
07/28 19:13, , 26F
07/28 19:13, 26F
推
07/29 01:00, , 27F
07/29 01:00, 27F
推
07/29 01:57, , 28F
07/29 01:57, 28F
推
07/29 02:05, , 29F
07/29 02:05, 29F
推
07/29 07:20, , 30F
07/29 07:20, 30F
推
07/29 12:34, , 31F
07/29 12:34, 31F
推
07/29 17:39, , 32F
07/29 17:39, 32F
推
07/30 11:40, , 33F
07/30 11:40, 33F
推
07/31 09:38, , 34F
07/31 09:38, 34F
推
08/02 02:46, , 35F
08/02 02:46, 35F
討論串 (同標題文章)
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章