mapleboard on the table

我是楓葉板社群部落格板主Jonas~歡迎大家多發文、多回應,有任何問題歡迎寫信給我Jonas。                                               目前部落格網站有2個更動:1.草稿位置更改為博主首頁之內2.增加Emoji按鈕(按鈕的最左上角)。請大家留意並多加利用~    

【開源,干卿底事?】

jonas  2018-01-24   留言:0

吹皺一池春水

上回我們科普了何謂開放原始碼(以下簡稱「開源」),這次來談談他與我們的連結。

 

從工程師的角度而言,我完成一個專案、為公司寫了許多Code,但一切版權仍然留在公司,也就是說所有的心血都無法帶走、重製,更甭提商業活動了。而開源的起源,一個很大原因就是如此:冀望有自由、得到更大的創作權利。

 

我不是工程師,那開源又與我何干?在現今的科技產業中,很多東西已經不是傳統「把一種技術練好就打遍全世界」(無法這樣的原因包括1.專案的塊頭太大,憑一公司之力難以完成2.科技產業競爭激烈,自己來不及做出來別人就攻下來了),因此前些年GoogleAndroid開源,為智慧型手機App產業帶來一次前所未有的革新,也就是說,我們現在能有如此多的免費好用的App,這部份要拜Google所賜。

 

而在更貼近生活的部份上,台灣的國家機構、中小學教育機構也開始導入開源,所以我們如果在學校使用電腦,有看見「odt」檔的部份,就是他使用了開源系統。開源的事務軟體也能一併轉換成WordExcelPowerpoint,因此在使用上不會有太大的阻礙。另一方面,Google的雲端硬碟、照片的智慧分類與辨識、Gmail等等相關產品,都有滿大程度的免費使用,這對我們一般使用者而言實在是福音。

 

想進一步體驗、使用開源的話:

1.如果你跟我一樣沒有寫軟體的技術,建議你可以看麻省理工學院的App學習:http://appinventor.mit.edu/explore

(中文解說、舉例:https://sites.google.com/site/jingprogram/app)幾年前我用這個有做出傳簡訊到手機、訂Pizza多久到之類的手機與電腦連動功能。

 

2.如果你是工程師,相信你早已了解關於寫App的部份,TensorFlowDrupalDebian會是你最佳的選擇——參與一個專案,協助專案的推動與完成,這對於你的技術提昇、職涯成長都有莫大助益。

 

開源的概念已經在我們的生活逐漸展開了,你還不跟風試試嗎?




blog01

開始接到這計畫,接到的指令是要把一個未生產的電路板用3D軟體繪製出來, 等於是把一個不存在的東西,讓它實實在在有血有肉的長出來, MP130楓葉板的內容等於是一台電腦的主機板,想必內容是五臟俱全的精細, 兩年前,對於一個已經深深浸泡在2D世界泥沼的我, 內心充滿無限『不可能吧』台灣人問號的想法, 且剛開始從一般業界所用的美工設計軟體大頭Adobe 練習轉為開放源系列軟體, 以公司案件的需求,實戰探索的方式來學習操作,平面類還算可以循序漸進的上手。但是對於3D,我只是3D MAX之小學生...畢業已久 ....

 

想當年『學習3D-Blender軟體』列為年度計畫,對我來說真的非常有挑戰性!

blog03

 

目前現階段3D-MP130楓葉板目標已經完成90%,寫一下小小的紀錄,分享給想學習Blender的人。

blog02

 

開 始

1. 研讀官網的使用者手冊User Manual(全英文)

2. Youtobe上面的教學影片 (外文居多,因開放源常更新,要注意有些改版功能調整很大)

( 練習的第一個建模! 小狗玩偶建模 )

blog04

 

初學者TIPS

  1. 中文教學影片 ( 由淺入深 - 從了解基本界面開始 )
  2. 收尋快速鍵,把常用的功能筆記下來 (Hotkey沒有它不行)
  3. 常常要有x.y.z 立體空間的概念(可練習素描各種物體,增加你對空間感的敏銳度)
  4. 與同好社群朋友一起研究,這就是開放源的精神 (卡住的時候,會有人拉你一把,或是一起迷路不孤單XD)
  5. Blender Animation Studio會不定期推出代表電影,了解軟體可以到什麼無與倫比的境界,讓人期待與有所啟發。https://www.youtube.com/channel/UCz75RVbH8q2jdBJ4SnwuZZQ

 

資 源

 

謝謝收看!:)    




圖片截取自 https://help.gnome.org/users/gnome-help/stable/screen-shot-record.html.en

(圖片截取自 https://help.gnome.org/users/gnome-help/stable/screen-shot-record.html…

我已經使用GNOME桌面多年,經常需要截取Screen一小區域,例如做Bug Report。往往大費周張,先按 alt + prt sc 截取整個視窗圖,然後用GIMP,取出我所需要的區塊。

昨天無意中看到 Sia 用 shift + prt sc 直接截取Screen中一小區塊圖,歎爲觀止,立刻請她教我。這麼簡單,這麼直覺。這些年來,我卻做了多少虛功?感謝 Sia。

寫下這個短博文,分享這個小小 tip 給還不曉得的人。

 




不做不知道

contact  2018-01-11   留言:2

MP130楓葉板海報

Jennie新設計了一張楓葉板海報,很有節慶的味道。春節即將來臨,拿出來曬給大家看。

楓葉板是什麼?多面向的單板電腦:學習板、應用板、開發板、測試板、發想板、 DIY 板。大家都知道在英國開發的樹莓派是現在單板電腦的盟主,創造了一個新風潮,銷售到全世界,每天幾乎賣到一萬八千片。

當樹莓派已經這麼dominate的情況下,我們爲什麼還要做楓葉板?楓葉板計劃已經進行超過兩年了,我常反覆思索這個問題。隨着計劃的進展,對我來說,這個問題的答案越來越清楚,就是,不做不知道。

舉一個例子來說,當楓葉板計劃徹底做下去,很快就會發現,只有硬體一塊電路板成就不了什麼。真正重要的是跟着而來的楓葉板社羣的建立和經營。這真是大塊頭,不做不知道。要建立經營楓葉板社羣,先從楓葉板部落格做起。原來想,做部落格沒什麼,小菜一碟,就當作暖身和訓練計劃。做下去才曉得不是這麼回事,從各種Web程式語言技術,框架選擇,內容管理系統,資料庫,到實驗設計伺服器,功能測試伺服器,可靠度測試伺服器,最後才是舞臺上的Production伺服器。也就是說一個檯面上的部落格伺服器,後面有三個流水線般的伺服器,同時在一版又一版不中斷的開發、測試和發佈。此外還有使用者介面、使用者經驗、使用者Scenario的設計,最後才是內容撰寫和美工設計。好不容易,楓葉板部落格總算要開張了,且慢,10個使用者,100個使用者,1000個使用者,5000個使用者時的Policy和Mechanism間的分寸安排,應該很不同吧,每個階段過多或不足的Policy,過少或太多的Mechanism,都會造成不同程度的災難。

怎麼說呢?還是一句話:不做不知道。

附記:這篇短短博文寫得不太順暢,今晚很冷,有隻貓咪來亂,躺在我懷裏取暖,趕不走。

 

bagel1

 

bagel2




Lost in time

首頁圖  Image source

 

0. 楔子

一開始以為很簡單的系統時間顯示, 沒想到處理起來才發現其中隱藏很多技術問題.

這篇主要會說明在實做發現的問題以及解法, 以及最後發現的可行實做的解法供大家做參考.
 

0.1 問題定義

期望結果:有一個php js編寫的網頁, 希望可以透過網頁操作修改系統時間, 並將網頁上的時間更新.

已知問題:目前可以透過網頁修改系統時間, 但無法將系統時間更新至網頁顯示. 之前沒有發現這個問題是因為, 系統和瀏覽器都在同一台電腦, 這次的問題就是發生在系統和瀏覽器在不同電腦上.

實做時間功能:系統時間是對系統下linux 指令 date , 瀏覽器時間則是用moment.js 的 moment() 函式取得

欲解決之問題:如何讓網頁顯示伺服器的時間

建議解法:計算兩者時間差, 使用moment().add() 完成系統時間的計算

 

1. What is moment.js

就是一個已經寫好的javascript提供許多容易理解以及實用的函數供網頁開發者處理時間顯示,轉換等功能

如果需要處理時區資訊還有另外一個姊妹作 moment-timezone.js

moment.js

    使用範例  /  基本入門

moment-timezone.js

    使用範例  /  基本入門

 

2. 實戰篇

這邊不介紹實做細節,因為這都不是最後採用的解法,但因為這個過程中學到不少東西,所以就把有用的一些資訊整理紀錄下來作分享.

2.1 moment().add(兩地時間差,'milliseconds')

  • 系統的date 也可以調整輸出格式(更多細節
  • moment() 直接使用就是顯示瀏覽器的時間, 至於如何調整時間顯示格式則可透過moment().format() (更多細節
  • time format:
        hh (01~12) vs HH (00~23) 如果有使用am/pm 要注意使用的時間格式
  • timezone format :
        z / zz 這個會回傳時區縮寫
        Z ZZ 這個才是會回傳已中央標準時間(GMT)-07:00 ~07:00 
  • 時差計算:(更多細節
        moment().diff(Moment|String|Number|Date|Array);
  • js date and moment object conversion: 
        建議把javascript date 使用 toIsoString() 轉換格式後再配合moment的物件或是函式使用
  • 更多其他有趣使用plugin 可以參考 這裡

2.2 moment.tz(伺服器時區).format()

  • 如果有使用到時區資訊請使用moment-timezone-with-data / moment-timezone-with-data-20xx-20xx,否則timezone資訊找不到會造成時間無法顯示
  • javascript使用上有呼叫先後順序, 錯誤的擺放引用順序會產生物件或是函式未定義的情況發生
    <script src="/path/to/my/js/moment.js"></script>
    <script src="/path/to/my/js/moment-timezone.js"></script>
    

     

3. 真 ‧ 解法

其實這裡解法並非唯一

php解法說明  (參考連結

  • php 可以直接取得系統時間資訊 (參考連結
  • php 可以將值傳到javascript上 (參考連結
    var currenttime = '<? print date("F d, Y H:i:s", time())?>';
    var serverdate=new Date(currenttime);

     

js 解法說明 (參考連結

  • javascript 可以透過網頁特殊欄位取得系統時間資訊
    完整欄位資訊可以透過getAllResponseHeaders取得 (範例
  • 整體分成三個步驟
    1. fetchServerTime:取得系統時間計算時間差
    2. timerHandler:目前顯示時間=目前時間moment()+時間差
    3. updateDisplay :更新目前顯示時間

 

4. 後記 - 問題探索過程摘要

當然對於一個之前非網頁專門工程師來說, 中間當然要借助不少開發者工具,或是線上沙盒幫忙, 最後才會知道說原來兩邊說的時間是不一樣的. linux 指令 date:這個毫無疑問可以取得伺服器時間, 而moment.js 的 moment() 則是回報瀏覽器的時間這會因為使用者所在時區或自行設定的時間不同而有所不同. 剛開始的確是按照建議的方式去執行,並依照建議將linux date得到的結果透過toISOString(), 但結果是時間會因為時區計算錯誤而導致顯示時間和想要設定的時間差了幾個小時大致慘況是這樣

網頁角度:
瀏覽器目前所在時區為GMT+08:00
目前顯示的時間為 2018/01/10 17:36 GMT+08:00
伺服器目前時區為 GMT-04:00 而時間又是調整過成為 2018/01/10 09:22 那瀏覽器會怎解釋呢?

瀏覽器會先把 要設定的時間轉為一致的時區再做計算 (-4 → +8)
2018/01/10 09:22 (-04:00) → 2018/01/10 21:22 (+08:00)
瀏覽器就會看到 2018/01/10 21 :22 GMT+08:00

使用者角度:

看到時間從 09:22 變成 21:22
使用者就崩潰了 >< (為什麼跟我設定的時間不一樣)

於是我又開始往更麻煩的地方去想:時間差=兩地時間差+兩地時差
過程中還有使用到系統時區資訊將最後顯示到的網頁時間重新調整

var dispDate=moment(iso格式時間).tz(系統時區).format(時間格式)

但是這次又變成不會更新了!!原因是我的系統時間只會再有變更或是頁面重新載入時才會更新, 除此之外並不會自動更新
其實要自動更新並不是不行, 而是目前使用的方法每一次對系統詢問或是設定至少都需要0.2ms,所以每秒都要更新的時間, 這樣是不切實際的

所以到頭來才發現
1.要取得系統時間不麻煩
2.取得時間方法不唯一

知道這兩點剩下就輕鬆了 surprise

常用資源

1. w3cshools - js

2. w3cshools - php

3. online php sandbox

4. jsfiddle

5. php manual




【科普文】何謂開放原始碼?

jonas  2018-01-10   留言:2

何謂開放原始碼(以下簡稱開源open source softwareOSS),根據MBA智庫百科的定義:

開源軟體也稱開放源代碼軟體,是一種源代碼可以任意獲取的電腦軟體,這種軟體的版權持有人在軟體協議的規定之下保留一部分權利並允許用戶學習、修改、增進提高這款軟體的質量

 

提到開源的歷史,就一定要談談Richard Stallman 這號人物。在1970年以降,當時許多大企業並沒有開源的觀念、或甚有「原本是開源、後來改成不開源的情形」。Richard Stallman對這樣的情況很不滿意,因此下定決心要創見一個開源的作業系統,來根本解決開源的問題。

 

Richard Stallman

Image Source

 

 

 

1983/09/27Richard Stallman發起GNU計畫,希望做出一個「讓人人都能自由使用的開源電腦作業系統」。而在Richard Stallman獲得資金贊助不久後,另一支同樣本著開源理念的部隊也逐漸壯大--Linus Torvalds所引領的 Linux企劃如火如荼的進行。最後, Linux企劃很成功,也就成了今日提到「開源作業系統」就立即聯想到 Linux的局勢。

 

雖然Richard StallmanGNU計畫上並沒有如期的成為主流開源軟體,但他對開源界所提出的貢獻是不可忽視的:提出GPL的觀念、條款。什麼GPL?簡而言之就是讓開源的東西能夠進行商業行為、二次編寫修改,這對於當時的世界是一件不可思議的事情--你能想像一項你發明的技術,將用「無酬」方式分享給大家,並且無限制的讓大家做重新創作與使用嗎?

 

因此這份條款讓開源獲得生命,並在全球的程式編輯者、創作者之間不斷流通運轉,形成今日的開源社群、以及無數的開源軟體。




silicone

人類真是一種容易習慣的動物。

我輕輕鬆鬆就習慣了禮拜一不上班這回事,其實不過也才12/25閉著眼睛過耶誕和1/1大力跨年去而已,

但習慣了就是習慣,總得來說這禮拜一我只差沒揪緊眉頭拎著哀怨來上班。


但是!對的,就是但是(淚目)

老闆叫我要寫一篇博文,而且還指定了題目!

(頭家啊~你知道嗎,小的身為一介廢文界的行家,就算指定題目,寫出來的還是廢文啊哈哈哈)

不過,領人錢財為人消災,介紹矽膠腳墊是吧,寫就寫,來囉!

客倌們快跟上,輸人不輸陣,尤其跟風這回事。


荒野中的一枚矽膠腳墊

瞧瞧這孩子,淒凜堅勁的站在荒漠的鍵盤上,多麼帥(不)氣(知)凜(所)然(以)啊~~~

【矽膠腳墊】
規格:高11mm、直徑6mm
硬度:60度
顏色:矽膠原色
適用:Ø5mm六角銅柱
功用:矽膠腳墊完整包覆六角銅柱,能達到顯著的止滑功效,亦能提供良好的防震能力、耐熱效果。
 

unisilicone
打完了矽膠腳墊的基本資料,應該算是介紹完了吧!(其實只不過是我無限辭窮罷了)

這幾行簡單的敘述,讓人不禁遙望把個月前啊~

接到了製作矽膠腳墊的任務後,從矽膠的特性、應用開始研究,好久不見的化學,總有種驀然回首原來你一直都在感

再來便要畫張模具圖,天啊!小的無才,聽到模具圖都想立正了,竟...竟...竟然要畫出它來!

好吧,雖然簡陋到爆炸,但我還是完成了(灑花轉圈)

再後來就是一連串的尋找廠商拜訪廠商探探工廠逼逼價打聲招呼說你好,這又是另一段故事了。

 

看看標題再看下內文,歷險記是歷到哪裡去了......

還沒開始就累了,然後用最快速度果斷放棄

容易辭窮的人真是不能欠缺自知之明,以為千字廢文是小事,但中途辭窮無數次啊QAQ

但我想我的優點大概是逼死自己,好的,那麼就來立志:「每個禮拜產出一篇千字廢文。」

 

don_trump

圖片來源: JIM WATSON / AFP


提到廢文就想到最近看到美國方言學會(American Dialect Society)票選出2017年的關鍵字了

2017年度關鍵字:fake news(假新聞)
                     定義:1. 把虛假的訊息當成真實的事報導
                                 2. 實際的事情卻對外宣稱是虛假的

說穿了就是把假的當真的、把真的當假的,不談中間牽涉的所有問題,某部份而言還挺浪漫的啦!

但是我要提的是2017網路世界的關鍵字(DIGITAL WORD OF THE YEAR)是「廢文(Shitpost)」

廢文(Shitpost):發佈無意義或不相關的內容,目的在挑起群眾情緒或轉移注意力

OhOh廢文集聚好像真有點糟糕,風向好亂啊~

但人生之難,小的又如此筆鈍,應該還是可以寫寫廢文吧!

附上2017年度的關鍵字票選資料,有興趣的人可以好好研究一番,然後我們還是要好好面對2018啊!

2017 Word of the Year:
https://www.americandialect.org/wp-content/uploads/2017-Word-of-the-Year-PRESS-RELEASE.pdf




Maple GNU/Linux 作業系統

contact  2018-01-09   留言:1

Maple GNU/Linux 作業系統架構圖

Maple GNU/Linux作業系統(簡稱Maple作業系統),為一功能完整且針對楓葉板單板電腦應用需求所設計的作業系統,能連結、整合和管理楓葉板單板電腦的軟、硬體資源。 Maple 作業系統衍生自 Debian GNU/Linux 作業系統,故其操作及使用方法和 Debian GNU/Linux 相同。

Maple 作業系統提供標準的文字模式 Linux Shell ,可藉由輸入 Shell 命令,進行系統管理、使用者設定、安全設定、啓動應用程式執行等等。 Maple 作業系統同時提供 MapleWebDE網頁桌面環境,可由此進行系統管理設定,啓動應用程式執行,及開發相關應用程式等等。

Maple 作業系統提供完整的網路連線能力,從實體層的相關驅動程式,到資料鏈接層、網路層、傳輸層,以及更高層等。 Maple 作業系統支援各種常用的通訊協定、網路管理和公用程式,可隨着不同的應用場合,選擇使用。

Maple 作業系統提供完整的 GNU 程式開發工具鏈、 GNU Build 系統、 GNU 除錯系統,可用來開發 C/C++ 以及其他程式語言應用程式。 Maple作業系統也支援 Python Java Perl PHP Javascript 等直譯式程式語言開發應用程式。 Maple 作業系統還提供豐富的公用程式庫和中介軟體,可供應用程式呼叫使用。

Maple 作業系統採用Debian套件管理系統,提供三萬多個套件軟體,隨需要可從Maple 套件管理和發行管理伺服器下載安裝。