發表文章

目前顯示的是有「有趣新構思」標籤的文章

有趣的洗牌演算法

圖片
最近因為一些專案,所以需要實做一些撲克牌的洗牌機制。雖然這個動作看起來簡單,但其實對於開發者來說相當有趣,因為真的除了做這種牌類遊戲之外,平常很少用到這樣演算法,也由於有太多種做法,不免著迷於其中。 洗牌目的就是讓結果隨機、不能預期,只不過雖然很多遊戲同樣都是圍繞在亂數產生上面,但撲克牌遊戲(或麻將遊戲)最大的不同,就是同一排組每次發出來的牌,一但發過了就不會再出現一次。這一點,和每次都可以出一到六點數的骰子遊戲,就完全不一樣,不是隨機出一個亂數就可以搞定。 準備工作:先準備個牌組 開始前,先準備四種花色、A 到 K 的牌組,使我們可以以 0 至 51 的號碼去取得任意一張牌。 const suits = [ 'S', 'H', 'D', 'C' ]; const points = [ 'A', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K' ]; const cards = []; for (let i = 0; i < 4; i++) { for (let j = 0; j < 13; j++) { cards.push(points[j] + suits[i]); } } console.log(cards[10]); // 10S(黑桃10) 方法一:硬幹 最直覺的方法,不外乎就是不斷產生 52 張牌的亂數(0 ~ 51),然後檢查這張牌發過沒,如果牌發過了就重新產生一個新的亂數,持續這個步驟。 let shuffledCards = []; while(shuffledCards.length != 52) { // 取得 0 ~ 51 的亂數 let idx = Math.floor(Math.random() * 51); let card = cards[idx]; // 檢查這張牌是否已經出現過 if (shuffledCards.indexOf(card) !== -1) continue; // 沒出現過則放入陣列 sh...

從 Maker 出發並反思:於是我們成立了 MakerCup!

圖片
Maker 一詞近年來翻紅,有人稱「自造者」,有人稱「創客」,以代工起家的國內產業,覺得 Maker 風潮是一個維持舊有工業地位的方法和機會,更將其引伸成軟硬整合、創業模式,無一不紛紛出來插手,想佔一塊地,分一杯羹。有些媒體將 Maker 塑造成有專業技術能力的人們,彷彿與一般人有很大的鴻溝。種種因素,自然越來越多人不了解 Maker 是什麼了。 但我們認為真正的 Maker 並不是擁有厲害能力的人,而是願意動手落實的人。 為什麼我們要成立 MakerCup? 我們想聚集純粹想動手、交流的朋友,並讓更多人參與並體驗 Maker 的世界。 事實上,Maker 的定義很簡單,凡是能打造、做東西的人,都能稱為 Maker。做菜的廚師,是個 Maker;編織衣服的人,是個 Maker;畫家,也是個 Maker。當然,寫軟體、做電子電路的人,以及各種設計師,通通都算是 Maker。無論在什麼領域,Maker 精神強調的是動手去實現、完成,去參與過程、瞭解過程,進而讓自己更有能力去打造出更多創意十足的東西。更重要的是,在這種不設限的旅程,能讓我們都具備著跨領域思考的能力。 既然過程才是最重要的,我們便開始思考怎麼樣讓更多人交流,交流技術、能力,共同發展和探討更多的知識。我們不應該只是追求一時且短暫的成果,滿足政府或代工產業想要立即成果的 KPI,更或是不應該鑽牛角尖盲目追求頂尖技能,而是讓更多人參與、動手,普遍瞭解更多不同的事物和技能。 於是, MakerCup 這個社群出現了,每週四都會舉辦一場分享交流活動或是小聚會,讓 Maker 平日下班或閒暇時,可以來走走坐坐,輕鬆喝點小飲料,或是現場做點東西: https://www.facebook.com/groups/MakerCup/ 我們希望,這個社群將如一碗太古時代的生命濃湯一般,熬煮出真正的 Maker 生命。 延續黑客松台灣的精神 還記得這一年,我們籌辦了整個年度的「 黑客松台灣(Hackathon Taiwan) 」,每個月都有 300 至 500 人的大型創作活動,讓不敢踏出來的年輕學子、上班感到無聊的人、及很少離開自己專業領域的朋友,走出來到活動上以「能力會友」。這一年的過程,讓大家的成果,從簡陋成長到真正的創意或產品,從簡單的技術到複雜的應用,從小設計到跨領域的整合。 ...

黑客松式的學習活動:NodeSchool International Day 精彩紀錄

圖片
 『是不是要很厲害才能參加黑客松呢?』這是一個永遠都會有人問的問題。 事實上,黑客松從一開始的出發點,就是三五好友聚在一起進行研究及開發的活動,帶有很純粹的動機。參加這樣的活動,你不必真的很厲害到極點,而最重要的是動手和夥伴合作,過程中可以順便認識朋友與他人交流,讓投入的過程中更加豐富有趣。 從這樣的角度來看,『黑客松式的學習』是不是有可能的呢?如今看來是肯定的,5/23 於台北剛結束的 NodeSchool 聚會就是一場黑客松式學習活動,吸引了近兩百位參加者,共同參與了這場具有黑客精神的學習活動! 順帶一提,這此使用的場地,也是 黑客松台灣(Hackathon Taiwan) 每個月辦活動的主場地,無論如何,也記得來報名下次 6/13 - 6/14 (六、日)的黑客松活動! 什麼是 NodeSchool? NodeSchool 是一個線上學校,目標是運用線上工作坊課程,讓所有人都可以在這學到各種技術。而恰逢 NodeSchool International Day 國際日活動,全球各地都紛紛各自舉行一場 NodeSchool 盛會,因此身在台灣的我們也理所當然響應了這樣的活動。  這個活動的形式相當特別,沒有講師在台上講課,而是採用線上工作坊教材與題目的形式,讓參加者在自己的電腦上挑戰通關。NodeScool 擁有許多工作坊教材,從基礎課程到進階的選修課程都有,除了 JavaScript、Node.js 之外,也有 ES6、WebGL、Three.js、Functional Programing 和 React.js 等課程。詳細的課程資訊,可以參考 NodeSchool 官方網站 。 由於每一份教材都是經過設計,而且每一個主題和關卡都擁有提示和說明,參加者在一題題解答的過程中,可以靠自己慢慢學會一門技術。如果真的遭遇到了自己難以突破的困難,可以跟左右鄰居討論研究,若真的也沒有辦法了,可以找在現場自願的指導員(Mentor)幫忙排解問題。 黑客松式的學習活動 回想起過去從小到大,我們的學習模式,總是有個老師在台上教學,枯燥而乏味,而為了保證教學進度,不免伴隨著填鴨式的教學方法。這樣的模式我們早就習慣,雖不見得喜歡,但也無可奈何,逐漸的,我們的思考和學習,慢慢僵化了。 具有一定寫程式經驗的人都知道,...

精彩回顧!平民化的黑客松:Hackathon Taiwan

圖片
對很多人來說,黑客松(Hackathon)是一個可怕的詞彙,它神秘且陌生,似乎是只有軟體工程師能參與的活動。事實上,黑客松的本意只是希望大家可以齊聚一堂,跳出原本的生活圈,和其他人完成或創造一些與平常不一樣的東西。 打造一個平民化的黑客松一直是 Hackathon Taiwan 的目標,除了每月都舉辦推廣之外,為了讓活動更親民,還特意引入各種初學手把手的工作坊課程,以減少眾人對黑客松的恐懼,課程內容涵括了網站、軟體、硬體、設計、藝術領域,從 Arduino、Node.js、QML、前端、雲端服務、科技藝術一直到 3D 印表機等整合課程都有。為了讓更多人能學習更多更深入的技術,也陸續開設了不同類型的進階工作坊。無論是已經很厲害的人,還是沒有太多經驗的學生,都可以前來活動,找到自己覺得最舒服的位置,學習發自內心的動手去完成一件事。 這活動的最終目的,是希望見到大家以能力會友,撞出火花,讓大家找到能互補的團隊成員,成就未來有潛力的團隊,實現更多具有影響力的創新。如我們一直所說,這是一個如太古般的生命濃湯,孕育著人才與新創火花。來黑客松能做出什麼成果,或許很難說,但你一定會得到很多的朋友與經驗! 我們期待終有一天,當某個成功的新創公司被問到:『當初創辦人們是如何認識?』,他們會回答:『在 Hackathon 活動』。 精彩回顧影片 還不知道黑客松在做些什麼嗎?看看我們三月份兩天一夜活動的精彩回顧吧! 下次活動訊息 4/11-4/12 (六、日)兩天一夜的黑客松活動也開放報名了!完全免費!名額有限,快來報名吧! 議程頁面 ▶  https://hackathon.tw/agenda/agenda.html 報名頁面 ▶  http://www.accupass.com/go/hackathon06 社群訊息 此外,如果你有興趣,可以加入 Hackathon Taiwan 的 Facebook 粉絲團,關注最新動態! https://www.facebook.com/HackathonTaiwan

Hackathon Taiwan 新倒數計時器系統

圖片
話說 如果你之前就有參加過我們的 Hackathon 活動,就會對從第一屆黑客松就有的倒數計時器有所記憶。這是我們特別為 Hackathon 活動所開發的倒數計時器,其著漂亮粒子特效,讓許多人印象深刻,尤其是投影在夜晚的牆壁和玻璃上,伴隨著台北 101 和夜空為背景,可說是非常炫麗又有氣氛。 但經歷過了四次活動,這個計時器也該功成身退了,隨著活動人數成長,活動內容及場地規劃,舊的計時器已經慢慢不敷使用,除了一身漂亮的動畫外,沒有太多的功能。而且,縱使有著一個看起來炫酷的特效,對工作人員和很多參加者來說,也慢慢膩了。 於是,我們又提起筆開始設計一個全新的倒數計時器系統,想設計一個更具科技、科幻感及現代感的介面,除此之外,更希望可以在未來可以引入更多的功能和互動機制,如導引、會場資訊查詢、甚至是直播等。就這樣,一個新的計時器誕生,並在 3/7 - 3/8 第五次的黑客松活動被使用。 因為我們期望這個計時器,不只是用來倒數計時,未來能變成一個多用途的活動系統,所以在設計上有更多的規劃及保留。也採用更多色塊來進行設計,讓畫面上有更多可利用的空間。 互動功能 在這次活動中,我們觀察到了一個現象,那就是對正在專心進行創作及 Hack 的人,手上的工作雖樂趣無窮,但對於旁觀者來說,卻是無聊透頂,這讓黑客松(Hackathon)活動的現場,時不時會呈現一種沈悶的氛圍。此外,參加者的工作效率往往呈現著週期性,或是專心時間總有一個極限,適當的放鬆和中斷也是常見的情況。但是如果放鬆或中斷手上工作時,沒別的事可以舒展身心,這會感到相當無聊了,於是會看到有些人會選擇用吃東西來打發中間的時間。 其實,來黑客松除了動手做之外,人際關係經營及交流也是很重要的一環,但別人正在專心工作時,你不便打攪,尤其是當同隊的人都正在專注做事實,你剛好想要換個氣的時候,更不可能去煩自己的隊友。不過,雖然你的周圍可能沒人可以跟你互動,但你可以去找同樣想換氣的人產生互動,畢竟全場人這麼多,跟你處於同一個狀態的人總是有不少。 那麼,如何找到人可以跟自己互動或交流呢? 這次活動,我們建立了 IRC Channel ,讓參加者可以上來 IRC 聊天室來說說話。所以,如果你有興趣,除了活動時間之外,平時也可以加入我們的 IR...

逼自己思考:嘗試再次思考 UI 設計

圖片
雖然自己從小喜愛設計,殘害過不少紙筆和滑鼠,但也因為懶惰和時間有限,長大後開始比較少開始動手自己做一些設計。所以,除了突然有一些想法和點子之外,多數時候都會把『設計』這件事推給『設計師』來做,講好聽點叫術業有專攻,講不好聽點就是有想法卻不行動的懶惰派。 如許多人所知,我這幾年一直都在做 JavaScript OS 的開發,嘗試把 JavaScript 應用在各種大大小小的硬體和裝置之中,使嵌入式應用的開發工作更有效率和彈性。又由於這一年來物聯網(IoT)的風潮大爆發,也因此有更多人使用 JavaScript 為基礎的開發,或是形形色色的跨界需求,讓我需要更多時間和金錢去投入這些發展。 不過人總是視覺化的動物,任各種應用發展再多,眼睛看得到的 UI 仍不能缺少。開發的過程中,難免會有一些『有螢幕』的應用。這也是為什麼這幾個月 HanGee 國民機一直在做『OwaNEXT』這樣的 UI 設計工具,而我最近也時常去思考一些 UI 的設計。 如下面展示影片,就是最近這幾周所嘗試開發出來的一個 UI 選單介面概念原型,雖然說是概念原型,但實際上是可以使用的程式,不是一個純展示動畫(畢竟我仍然是一個程式開發者 :-D)。這個 UI 因為是設計給大尺寸螢幕所用,所以是用『Everywhere』為出發點,讓人可以在任何一個地方憑空叫出選單,效果和使用方法都是以一個手掌可掌控為目標: 話說,我一直都不是個走純 Web 路線的開發者,過去有好幾年完不碰 Web 開發,只因為當時 JavaScript 和瀏覽器的效能和效果讓我很不滿意,然後也發現因為太依賴瀏覽器,讓自己的視野窄了許多。也許是因為這樣,這些年許多從前端所發起的各種 UI 設計討論,我沒有接觸太多,也沒有被同化成一份子。 所以,大家在前端很熟悉的 UI 切版、排版等等平常再不過的工作,對我來說反而都是可以再思考和需要再質疑的東西,也仍然保留著強烈的好奇心和探索的意圖。所以最近一直在思考設計 UI 時,一直在想『跳脫出 2D 排版的思維』這個議題。 不知道是因為工具的關係,還是設計方法的關係,現今的 UI 設計,總跳脫不出平面排版的框框,這個東西擺左邊一點、擺高一點、放大一點等等修改,一直是現今許多 UI 設計的討論重點。很少聽到在討論,這個速度要慢一點、緩一點、從哪開始、又從哪定位。 ...

Hankathon 黑客松專用倒數計時器!

圖片
不用覺得奇怪,Hankathon 沒有拼錯,這是取自 HanGee + Hackathon 的命名。是這次為了 9/20 - 9/21 兩天的 HanGee Hackathon 活動,設計的一個騷包倒數計時器,也是我在邊辦活動邊做的成果之一,用來提醒眾參加者們,時間正在毫不留情的流逝! Source Code:  https://github.com/HanGee/Hankathon 如果你的黑客松、活動需要用到這個倒數計時器,歡迎取用!也歡迎修改成你想要的功能!只是,如果可以的話,麻煩留下蕃薯的小圖,協助讓 HanGee 亮點像吧!:-) 後記 這次的黑客松活動,就在經歷過兩天美好的夜景、日出景色,最後經歷颱風大雨的情境下落幕。雖然中間出了一些烏龍,仍有一些朋友們沒有被好好照顧到,但都在歡樂的氣氛下和滿滿的產出中結束。下我們肯定會再次舉辦,讓更多無論有沒有資身技術背景的朋友,都能夠共同參與並學到東西和經驗回家。:-D 此外,如果有社群或企業想要一同舉行下次的 Hackathon,歡迎連絡我們!

【萌典 x HanGee x DOITT x 黑客松】睡不著嗎?那就不要睡了!

熱血的開發馬拉松活動(Hackathon)來囉!讓我們吃吃喝喝、不眠不休地設計應用吧!一群素不相識的設計人,無論是程式設計師、視覺設計師、UI/UX設計師,還是任何一種從事『設計』和『開發』工作的人們,在短短有限的時間內組隊並相互合作,一起投入設計同一個專案,與不同隊伍相互較勁! 這次萌點、DOITT 和 HanGee 合作,將於 9/20 - 9/21 兩天,聯合舉辦 80 人不中斷黑客松活動,熱血的朋友們,快來報名並幫忙宣傳吧!如果你願意贊助,也歡迎聯絡! 報名網址: http://han-gee.kktix.cc/events/hangeehackathon201409 讓我們回歸原點,什麼是黑客松呢? 由於這幾年國內舉辦過很多大大小小的黑客松活動,大多數人對於黑客松早就耳熟能詳。不過,除了由技術背景的單位和社群自發性舉辦的活動外,許多黑客松活動,比較像是純粹的比賽,讓許多團隊來展示自己研發已久的專案或產品,慢慢脫離了開發馬拉松的原意。所以,因此不免也有許多人對黑客松產生誤解,覺得就只是個普通的比賽活動。 事實上,和時下流行的路跑活動一樣,黑客松並也不是個普通的比賽活動,而是一個讓設計人在閒暇時間,參與的開發運動。解放自己,做自己想做的設計和開發,挑戰自己,在有限時間內做出東西來,才是黑客松活動的原始目的。 我能參加嗎? 對開放社群的朋友們來說,『黑客松』已經是一個再熟悉不過的名詞了,但對普通人來說,只要看到『黑客』兩個字,就覺得是一個敬而遠之的東西。不只如此,很多技術人員和設計師也對這活動有所誤解,覺得一定要非常有實力才能參加黑客松活動。 其實,黑客松和路跑活動一樣,並非只有專業選手才能參加。只要你有興趣、想實際參與多人設計和開發,無論你是學生、普通程式人員、還是新手設計師、初級自造者,都歡迎帶著學習、共樂的心前來參加! 你可以來找人一起完成自己天馬行空的想法,也可以和別人一起完成其他人的鬼點子,亦或是在這找到同伴共同想出新點子! 我能得到什麼? 在這活動中,參加者將帶著愉快的心情前來,一邊吃吃喝喝交朋友,一邊與從未合作過的朋友和高手們組隊,做出作品!然後你會發現,因為只有短短的一兩天,大家將使出混身解數,在短時間內做出出乎意料的驚人成果。最重要的是,也能從其他高手身上學會不少東西!兩天所獲得的東西,絕對物超所值! ...

Feature-oriented Programming with Node.js

Feature-oriented Programming(FOP)這個名詞對很多人來說應該相當陌生,這是一個鮮少人討論的開發模式,尋找了一下,也找不太到中文的說明和翻譯,所以我就暫時稱它為『特色導向程式開發』。如果你有興趣,可以去搜尋它,或使用關鍵字『Feature-oriented Software Development』找到更多資源。也有一個以 FOP 概念所改良的 C++ 語言『FeatureC++』,可以參考。 因為筆者眼前專注於 Node.js 的發展,所以也用 Node.js 實作了一非常個簡單的 Framework 『wag.js』,讓我們可以在 JavaScript 語言的環境下,引用 FOP 的開發概念來設計軟體。你可以用 npm 直接安裝他: npm install wag.js 之所以會一時興起研究 FOP,是因為多年以來,一直為了重覆開發所苦,很多相同的東西一直不停重覆做了又做,總覺得自己一直在浪費時間,所以想試著尋找個方法來改善眼前的窘境。最麻煩的問題在於,雖然早就應用了許多模組化方法,我們也能把很多功能事先做好打包好,但仍然像個有數不清節點的連連看遊戲,讓人花不少時間在上面編織程式軟體。重點是,當其中有絕大多數的過程是一樣的時候,總讓人做得很無力。 你可以想一想,當你想要寫一個新的專案時,你通常最大的阻力是什麼?又有多少繁雜的事,每次開新專案時都重覆在做?而最令人煩燥的是,因為專案類型的不同,有些微的差異,所以難以用一個標準自動化的方式去完成。 這也是一般人和工程師最大的差別,甚至是造成溝通不良。一般人總是想著是我要什麼功能、再增加哪些功能;工程師則是一直在想著,我要挑選使用哪些功能模組,又該怎麼從數不清的可能中,選一個可行的方法組裝他們?如果想成捏黏土來比喻,一般人會捏個大概形狀,再往上慢慢堆想要的東西,慢慢趨近成果,而工程師會捏好各個部位,再把他一一拼湊起來。 我想,當你能回憶起客戶或老闆跟你說:『這功能很簡單,你應該能馬上做好』,你應該就能更明白我所說的,一般人與工程師的思維差異。不過,事實上,工程師思維和一般人沒兩樣,也是把東西堆起來,只是,工程師所設計出來的各種部位的元件,總是很難拼湊在一起,必需要花些功夫。 到底,有沒有什麼辦法,可以減少各種元件和功能模組的拼湊困難呢?讓我們可以更專心的做一個有更多...

OwaNEXT 計畫來吧!不懂技術也可以設計可用的 Android Launcher!

圖片
自 HanGee 國民機運動發起之後,我們開始從一個全新的思維和高度,來看待這個手機科技產業到底需要些什麼東西,甚至是創新發明這件事的困難是什麼。尤其是排除掉鬼遮眼的短線商業問題後,專注考慮怎麼讓產業提升、科技產業改變,更可以發現有很多東西是我們可以去嘗試的 其中,使用者介面(User Interface、UI/UX)是一個相當重要的課題,當人類和使用者越來越依賴顯示和觸控技術與機器溝通,虛擬形式的使用者介面就更是不可缺少。因此近年來,這也是許多科技人之間的熱門話題。只是,在我們深入了解後發現,仍然存在許多可以改進的空間。 講可以改進,並非是我們真有一個絕佳的 UI/UX 想法,或是覺得現今已經存在的使用者介面和模式有什麼不好,而是我們認為,設計方法和工具有很大的進步空間。我們都相信,在手機產業蓬勃的今天,設計師們早就已經花了大量時間去研究使用者的行為,並為其設計出不少使用者界面,甚至直到此時此刻,世界上隨時都有新的 UI 被設計出來。不過最大的問題是,設計師腦中的想法很容易被創造,但可以用的原型(Prototype)卻難以被製造出來,需要很大的成本和很高的門檻。 的確,打造實際可以用的原型(Prototype)無論在哪裡,一直都是人類進步的過程中最大的問題之一,更可怕的是,往往人類的思考和創意,都因為牽就工具和打造原型的方法,而受到挶限。還記得在你設計出一個自認傑作的使用者界面當下,工程師告訴你做不到時,你有多麼難過嗎?還記得你告訴自己開始要有 Sense 的去設計 UI 後,你總是設計出平淡無奇的作品嗎?這些都是我們被制約的實際例子,當我們無法很容易取得或使用多彩多姿的顏料,我們就只能畫沒有色彩的素描,你我的創意和創作就沒有了明天。 那麼,我們可以做些什麼呢? 事實上,就在 HanGee 國民機運動開始不久後,筆者就建立了一個『 UI 先進技術研究組』,並創造了一個名為 OwaNEXT 的專案,試圖找尋協助設計師更快打造出 UI 的方法,然後進一步設計出可用的工具。如果可以讓不懂程式技術的人和設計師,都能輕易打造出可用的 UI 原型,而且能夠真正直接被使用在實際環境上,勢必能讓 UI/UX 領域的工作和視野往前跨更大一步。 OwaNEXT 的名字由來,一方面是以 Owa (芋頭的台語念法)來呼應蕃薯(HanGee),另一方面是向已逝的 S...

【OSDC.TW 2014 簡報釋出】當 QML 娶了 Node.js

圖片
去年一年在萬里當兵,基隆對我來說就像旁邊的公園一樣,時常去走走逛逛,然後去廟口吃點東西,最後吹吹帶有奇怪味道的海風,然後依依不捨的回去萬里山中隱居。很遺憾,黃色小鴨在我退伍的第二天,才來到基隆,一直沒機會去看看牠,這也是為什麼我為這次的 Talk 取了一個這麼奇怪的題目。當然,在 OSDC 的活動上,大多數人無法理解這樣奇怪的主題,所以我也在場上直接換了一個時事標題,詳見已釋出的簡報檔: 本次簡報的主題,將提到如何使用 Node.js 開發一個 QML 應用程式,以及如何使用 Node.js 去括充 QML 的功能。QML 能讓開發者很快設計出極酷炫的 UI,但最大的問題是他擁有一個殘廢的 JavaScript 支援,所以任何額外的功能擴充,都必需學會 C/C++ 才能達成,相當的難以開發。 此外,在過去如果 QML 要與 Node.js 做橋接,通常都是以 Node.js 建一個本機的 HTTP Server,然後運用 QML 內建的仿 XHR(使用方式和 API 真的完全模仿),去本機 HTTP Server 要資料。或許這對很多 Web 開發者來說相當容易上手,但有趣的是,他不會有 jQuery,所以你要自己手刻 Ajax 的各種機制,甚至是 Long-polling,痛苦至極。 想一下,我們即便是要與本機溝通,取得或監聽機器上的一些資訊,都要使用 Long-polling,這未免也太小題大做,一點也不簡單和直接。所以這也是為什麼要做 Qtjs,讓我們可以用 Node.js 直接來開發 QML 的元件,直接與 QML 溝通和傳遞資料,而不必再透過 HTTP 的方式。 就以本次簡報的例子來說,我們用 QML 設計了一個 IRC 聊天室的前端,然後運用 Node.js 和第三方模組去連線到 IRC Server,最後把聊天內容收回來畫在 QML 的界面上。並使用 Node.js 設計了一個 QML 元件,使用方式如下: IRC {     onReceived: {         console.log(nickname + ': ' + message);     } } 註:過去開發 QML 元件必需使用 C/C++,...

HanGee 國民機運動

圖片
你可能已經知道,我最近相當忙錄,到處奔走,犧牲睡眠,不為別的,就是為了 HanGee (台語發音:蕃薯)國民機運動。過去,心中一直抱持著想改變產業、改變世界的想法,雖然一直在用自己的方式推進,但總是缺少契機去做更大的發展。令人相當意外的是,這次一樣是在自己的 Facebook 動態上許願,許了親手打造國民機的機會,本以為如同過去一樣會石沉大海,但換來的是短短兩天內,幾千個讚的回饋和熱烈支持,一直到現在,關注的人、企業和媒體也越來越多。 說實在的,剛開始我僅僅只是想藉由自己的手,完整參與打造一支手機。但是到了今天, HanGee 國民機運動的目標,已經不僅僅是打造一支手機,更重要的是,藉由打造手機的過程,讓世界能透過『HanGee』看見台灣的科技實力和人才;集結有想法,有能力的人們在這個開放創新的過程中發光發熱,共創價值。 這一個多月以來,看到許多業內外的設計、科技、行銷企劃、學生和富有想法的人才陸續加入,更讓我覺得,當我們能夠靠自己發願的力量,把世界上這最複雜的科技產品打造出來,實踐改變和刺激產業昇華的夢想將不是遙不可及! 我想,這個共創的過程一定能造就無數種創意可能,而創意最後的落實能力,就是台灣的產業優勢,或許也讓我們在社群共創的開放歷程中邀請他們,HanGee 將試圖打造一個完善的開放平台,廣納各方的想法和資源,然後藉國內產業的能力優勢,進一步成就共創價值。如果 HanGee 運動能成功,除了一支手機會誕生,屆時,這裹也將證明台灣是世界上各種創意的實現中心,世界創新的凝聚地。HanGee  開放創新的構想是一場台灣科技公民的冒險行動,歡迎人人都加入了這個未知且令人興奮的旅程。 接下來,HanGee 將會隨著打造手機的過程,逐一建立起線上共創(Co-creation)平台,包括投稿平台、解決方案整合平台等,並著手打造許多工具和標準,讓各界都能參與過程,建立對話平台,讓產業也能持續創造價值。 有興趣的人可以造訪 HanGee 的官方網站: http://han-gee.com/ 也歡迎加入 HanGee 的 Facebook 社團,貢獻你對國民機的想法,或是出一份力讓我們更接近目標: https://www.facebook.com/groups/HanGee/ 無論你是個人還是組織單位,無論你是否為科技圈的人,亦...

OSDC.TW 2013 簡報釋出!使用 JavaScript 大搞桌面應用和嵌入式系統!

OSDC.TW 2013 順利在中央研究院國際會議廳閉幕,但一如往年,失落感接踵而來。為了這次的 Talk,可說是花了不少工夫,除了研究 Webkit 的內部實作,以及 V8 JavaScript Engine 之外,最後也發表了一個新的 JavaScript 作業系統『 Stem 』,一個可以完全用 JavaScript 和 Web 技術去開發應用程式的嵌入式作業系統。Stem 落實了用 JavaScript 語言開發嵌入式系統的理想,並簡化嵌入式應用開發,讓人人都能輕鬆躍過以往嵌入式系統開發的艱澀門檻。 這邊釋出當天的簡報檔,有興趣者可自行參閱: 此外,對 Stem 有興趣的人,可以拜訪專案網站: http://stem.mandice.org/ 也可以在 IRC 上交流: 英文頻道:irc.freenode.net #stemos 中文頻道:irc.freenode.net #stemos-zh 註:目前 Stem 已釋出 x86 版本的安裝鏡像檔,近期內將會釋出 ARM 的版本,敬請期待。有興趣參與開發者,歡迎來信一同交流。

【COSCUP 2012】閉幕!簡報釋出!

國內一年一度最大的開放原始碼(Open Source)活動,再次順利落幕。很多人都意猶未盡,所以每當活動結束,便會開始思考明年要分享什麼、反省今年哪裡做的不夠,有人會在活動過後的連續幾天,電腦上開著簡報編輯器,盯著空白的內容,靜靜的發著呆。可惜的是,最後總是因為沒有任何想法而放棄。一直到了明年 COSCUP 的徵稿消息發出,一堆人又開始拾起空白了近一年的想法,擠出一個題目,逼著自己在一兩個月內完成,上台發表。就如同學校的期中、期末考,沒有死到臨頭,大多數同學都沒有唸書的動力,也不會激發自己 120% 的腦力和體力。所以,Event-Driven 的開發模式,一直是在很多開發者促使自己進步的方式。 別以為兩個月時間很充足,大家都有外務、有工作、要過生活,所剩的時間實在有限,所以每當到了 COSCUP 的前夕,總是會聽到很多講者在拼命趕工的聲音。其實,這樣都還算是常態,頂多拼命一點,少睡一點,都還可以頂得過去。可是,今年一次給『兩個 Talk』,就真的讓人會虛脫到不行,還好,熱情能戰勝一切。:-) 由於今年活動承辦的分工方式比較特殊,所以被選上了兩個稿,分別是: JavaScript 全面逆襲!使用 Node.js 打造桌面環境! 用最潮的 JavaScript 盡情開發 KDE/Qt 程式 前者是總結這一年來,我們團隊所開發出來的各種 Node.js APIs,並整合成為一個如同 GNOME/KDE 的桌面環境(Desktop Environment),並展示使用 JavaScript 開發出來的 Juice Desktop Environment(果汁桌面環境)。後者則是為符合 KDE 的議程方向,探討使用 Node.js 開發 Qt 程式的可能。 後記 退學不是件好的事情,請勿模仿。:-S

【OSDC.tw 2012 Hackathon 成果分享】用 JavaScript 打電話囉!

圖片
以為 OSDC.tw 2012 在 4/15 號時就結束了嗎?其實並沒有。在活動的一個星期後,於 4/21 星期六,OSDC.tw 接著舉行了 Hackathon 的活動。很多人可能不知道 Hackathon 是什麼,有人叫他『駭客鬆』、『駭客松』或是『駭客爽』,其實總歸來說,就是讓開發人員盡情開發程式的活動。 這類活動的規則是,參加的開發者可以自由組隊,提交想法,然後當場實作。最後,在活動結束前,讓各隊伍一一上台展示成果。由於開發者的創意常常天馬行空,又能看到實際成果,所以這類活動都相當有意思。這次,OSDC.tw 提供了無限量供應的食物還有場地,活動時間是從當天早上 9:00 到下午 6:00,成果發表是從下午 4:30 開始,每個隊伍約有七個半小時實作自己的提案。 這次 Hackathon 活動,我與『魏藥』組隊,選的主題是『使用 JavaScript 打電話』,意即使用 JavaScript 開發出一支 Linux 應用程式,可以像手機一樣撥出電話並與對方通話。選這主題是因為我們的機器上剛好有 3G 數據卡(Modem),所以這個提案的目的,主要是撰寫一個 Node.js 模組『jsdx-ofono』,去提供控制 Modem 的 JavaScript API,讓開發者可以透過這組 APIs 撥打甚至是傳接 SMS/MMS 之類的訊息。最後,為了驗證並展示,運用了之前開發的『jsdx-toolkit』,用 JavaScript 撰寫了一個簡單的撥號介面『jsdx-app-voicecall』。 註:因為時間太趕,後來才發現,撥號 UI 忘了放倒退按鈕,所以撥錯號時要把程式重啟。:-P 如專案名,其主要整合了 oFone ,應用了之前開發的 node-dbus,所以省下了不少時間,最後再以 jsdx-toolkit 快速實作了一個 UI。原本希望,如果時間再充足一些,我們計劃幫 jsdx-ofono 加上 SMS/MMS 和讀寫 SIM 卡電話簿的功能,可惜最後沒來得及。 註:因為時間也不足,我們還來不及將 Linux 上的麥克風接上 oFone,所以目前接通後,只能聽到對方手機傳來的聲音。 此外,這次展示的兩個元件『jsdx-ofono』和『jsdx-app-voicecall』都有在 github 釋出,歡迎取用: https...

我為什麼大舉投入 JavaScript 的相關開發

和我比較熟的人,最近應該都知道,目前我專注於 JavaScript 和 Google V8 engine 的相關研究上,甚至決定從今年開始,公司營運以及技術團隊的方向,是企圖提供『最專業的 Node.js 和 JavaScript 相關服務』。(所以,如果您有需要,請聯絡我們 :-) )我非常清楚知道,有些人聽到 JavaScript 就歡天喜地,而有些人則不將他當一回事。更有多到數不清的技術人員,熟悉並使用 JavaScript 非常多年,聽到我說要提供『最專業的 JavaScript 相關服務』,會不屑一顧甚至以為我在瘋言瘋語。不過,如果你願意聽,接下來我會說明這是怎麼樣的瘋狂服務。 我不能阻止你對 JavaScript 有預設立場,因為這是無奈的歷史包袱,但請暫時放下過去成見,聽我靡靡道來。 我所遭遇的矛盾 過去,絕大多數人都只將 JavaScript 視為 Web 開發的一環,在大家的印象和認知中,JavaScript 充其量只是一個在瀏覽器中控制著 HTML DOM 的腳本語言。雖然近年來出現了 Node.js,過去微軟也支援使用者使用 JavaScript 撰寫 ASP 和系統腳本程式,但也不改這樣的看法:『JavaScript 是身處於末端的語言,與網頁、網站密不可分的東西』。所以,對許多硬底子的企業和研發人員來說,JavaScript 象徵了 Web/HTML 與不彰的效能,一種幻想的存在;而對很多 Web 開發者和前端工程師來說,JavaScript 卻是一種當今資訊產業的萬靈丹。如此天差地遠的矛盾,一直存在於這個產業界。 曾經當過 Web 開發者一段不少的時間,我承認也理解,使用 Web 技術來實作各類使用者界面(User Interface)和資料庫應用,非常容易和快速,不用考慮到太多的事。這一切要歸功於 JavaScript 和 HTML 的合作無間。所以,不時能聽到一些 Web 開發者,嘲笑作業系統程式開發者和嵌入式裝置的技術人員的辛苦,認為許多功能和特效,使用 Web 技術一下就達成了。 由於我過去也是『慣C』一族,做過很多包羅萬象的硬碰硬開發,小從一般電腦到嵌入式裝置、桌面系統到手機平版,大到各類特殊需求的系統研發,都有所涉獵。所以,對於系統資源和效能,一直有著莫明...

Document Slider 文件滑動閱覽器

不知不覺又過了一年,在這幾天假期花了一番功夫,便從去年與廠商合作的 Project 中,拆出了當時設計的UI並重新撰寫成一個新的文件滑動閱覽程式。在移除了和廠商相關的各個部份後,整體介面功能相當單純易用。該操作介面以滑動(Slider)和時間軸(Timeline)為主要操作概念,方便使用者瀏覽需要照時間排列的各類文件和圖檔資料,並以無限延伸的設計回朔歷史訊息,有點類似圖書館內的報紙查閱機器。

Mandice 為您在 Linux 和新產業機會開路

近來忙於工作和協助新團隊的建立,付出於 Blog 上的時間也少了許多,不過,雖然在 Blog 上與自己對話的時間減少,但這些日子,卻自我反省甚多。 回想起過去的經歷,總讓一波波湧出來的『資訊新名詞』,將自己不停往岸上沖。這就是資訊業,三天一小變,五天一大變,稍不留神,已改朝換代而擱淺在岩岸上。但在這浪花四起的時代,總不曉得是被誰所欺負。有時欲求助卻會惹一身麻煩,每每都問自己,到底要忍到何時?知道被沖上岸者眾,人人都不甘心,卻也莫可奈何世代交替,也在擔心哪一天自己會被衝上岸。 經過風風雨雨,能體會許多外界不瞭解的心聲;隨『科技業』起舞多時,我們多少也有在第一線立足的經驗和能力。尋思,與其每天趕潮流拼出貨,日日廢寢忘食只為解決沒價值的人為遐疵,何不帶著最新的技術為沉睡多年的前輩們『重新開路』,開一條不孤單的路,開一條喚醒巨龍的路? 為此,一個全新的台灣車庫團隊 [ Mandice ] 誕生,宗旨『做正確的事(Do the right thing)』,我們不盲目跟從,我們創造和領導新方向。 由於團隊的存活與堅顧理想是無法避免的考量,我們目前的經營三大方向為: 保本 以接案、顧問服務、銷售軟硬體和商業合作為主要訴求 創新 建立商業模式,開發有產業價值或有自身創意之產品 擴展 強健內部團隊技術發展和體制 我們計畫推出的服務項目: 各式軟硬體技術整合顧問服務,讓企業精準做正確決策  代理維護底層軟體系統平台,讓企業專注自身優勢發展  伺服器軟硬體建置支援,協助 IT 系統建設  快速供應完全免授權費的商業用 Linux 作業系統,今天下單明天出貨  量身訂做各式專門用途作業系統,使產品效能和品質兼具  協助將 Linux 系統導入自家產品設計,協助業者迎接資訊新世代 設計並生產自己的概念產品,創造新時代  此外,我們也將投入網路服務的發展和創新,期望在台灣重建網路泡沫化後,各界對網路失去的信心。 當前,如果您有以下需求,您就將會是我們的商業夥伴 想有劃時代資作為的老闆和企業  想將原本的應用轉移至更有機會的平台  需要隨機出貨的免授權作業系統  不想自己養大隊人馬貢奉底層系統  不想傷腦筋卻又必需追新東西的人 燒錢燒到失望...

模仿且沒有新意的 iPhone-like UI

為了應付即將開學的各項開支,到了春節依然不能停滯而必須努力工作。原本,只是為了工作單單在修某支程式的使用者界面,卻一時心血來潮,幫這選單 UI 添上了『加速度』的處理,更沒想到結果居然讓該 UI 的行為幾乎和 Apple iPhone 一模一樣。就這樣,除夕夜一個晚上,都在玩弄這支程式中不知不覺度過了,半點錢都沒有賭到,歲到是守得很徹底。為了紀念這隻小年獸,就用手機錄下成果。(沒有專業器材,畫質不佳還請多包涵!)

2009 Yahoo! Open Hack Day 之偷人瘋!瘋狂醫院

圖片
今年的『 Yahoo! Open Hack Day 』是在台大醫院旁的國際會議廳舉行,為期兩天(10/17~10/18),其實小弟本來沒有報名,但被再三威脅利誘後妥協,有朋友私下請主辦單位直接在活動舉行前兩天,將小弟加入參加者名單,因此無奈只好去玩樂兩天,或與無名正妹們聊聊天(這應該是大部份參加者的本意吧)。 話說 Yahoo! Open Hack Day 的宣傳標語令人有股 Coding 的衝動: 想跟來自全台灣的網路高手同台較勁? 想體驗 24 小時不斷電的過程? 想在 2 分鐘的時間展現你超棒創意與超強 Coding 能力? 就當場思考創意,立即實作以及團隊合作這幾點而言,就足夠促使大家熱血沸騰,想要在這兩天一展身手。不過可惜的是,原先以為在這種時間緊迫和視覺感觀的刺激下,會讓各隊參賽者絞盡腦汁,爆出火花,但是事實上,多半隊伍都早已在家做好準備或寫好程式,只是來當場修 Bug 和改版如此而已。最早期望看到場內瘋狂討論之場景,幾乎完全沒有出現。因此就感覺上,活動宣傳標語的『 24 小時不斷電』淪為形式,大概只有工作人員和少數正妹們真正在場體驗 24 小時的拼命。:-D 而小弟這次去因為是臨時組隊,到場才知道隊員名單和隊名,所以一開始便抱著『志在把妹不在得獎』的心情參加。隨性抓起手邊的電子產品,我們就先花了點時間讓 Moblin 可以支援 Yahoo! 的無名服務,讓手持式裝置(MID)、小筆電(Netbook)等電子產品可以直接與 Yahoo! 無名的相片、滴咕和 Blog 等服務做連接和存取。 但由於時間太多,我們又做了第二個有趣的專案『Crazy Hospital 瘋狂醫院』。這年頭人人都上網,但不是人人都發 Email,也不是人人都上 MSN,不過卻是人人都上 Facebook 的開心農場!因為 Yahoo! 沒有類似『偷菜』功能,當然就不是人人都會上!由於這次活動重點是運用 Yahoo! Open API 去實作新的服務應用,我們便思考著開心農場在 Yahoo! 平台上的可行性,不過照抄實在是沒創意,幾經思考後決定從活動場地取構思(台大醫院),而成就了『Crazy Hospital 瘋狂醫院』的誕生! 你可以蓋你的醫院,你可以應徵你的小護士,你也可以找帥哥主治醫生,但你要努力把病人治好!當然,你也可以去偷無名好友的病...