mapleboard on the table

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

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

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 套件管理和發行管理伺服器下載安裝。




坚持梦想

《顽固》——五月天

我身在 當時妳 幻想的 未來裏

這個狂熱和沖動 早已冷卻的如今

妳頑固 的神情 消失在 鏡子裏

只留下 時光消逝的痕跡

 

每顆心 的相信 每個人 的際遇

每個故事的自己 反復地問著自己

這些年 讓步的 妳是否 會嘆息

有什麽 是妳永遠不放棄

 

壹次壹次妳 吞下了淚滴

壹次壹次 拼回破碎自己

壹天壹天妳 是否還相信

活在妳心深處 那頑固自己

 

妳追逐 妳呼吸 妳囂張 的任性

鼻青臉腫的哭過 若無其事的忘記

如果妳 能預知 這條路 的陷阱

我想妳 依然錯得很過癮

 

走過的 叫足跡 走不到 叫憧景

學會收拾起叛逆 學會隱藏了表情

卸下了 這面具 我想說 謝謝妳

謝謝妳 壹路陪我到這裏

 

壹次壹次妳 吞下了淚滴

壹次壹次 拼回破碎自己

壹天壹天妳 是否還相信

活在妳心深處 那頑固的自己

 

妳當時相信 的那些事情

會在如今 變成美麗風景

每當我遲疑 從不曾忘記

活在我心深處 那頑固的自己

 

五月天,顽固

 

五月天的這首歌,也許並不是他們最膾炙人口、傳唱度最高的壹首歌,但是如果妳看過這首歌的MV,再細細品味它的歌詞,相信心有戚戚的妳定會被它演繹的故事,傳遞的精神所打動,甚至能在壹幕幕感人的畫面裏看到自己的人生片段,走過的路,曾經的自己。

 

每個人都有過類似的故事吧,在幼時我們天真懵懂,對世界充滿幻想,對未來充滿希冀,那時候我們都曾經擁有過夢想,雖然有些幼稚,甚至不著邊際,但幼小心靈裏埋下的夢想的種子,在長大的日子裏,有的被持續澆灌,隨我們壹同長大,當然,也有的在現實的風霜雨雪摧殘下,不幸夭折了,或者被遗忘在心底最深的角落。

 

儿时梦想

 

在不同的際遇下,我們走上了各自不同的人生道路,有的輝煌閃耀,有的平凡暗淡,我們成為了不同的人。後來某壹天突然發現,長大的自己和幼時相比,竟然已面目全非,變得連自己都不認識自己。

 

是什麽將我們與人群區分開來,成為不壹樣的自己?在壹張張看似千篇壹律的面孔之下,又將如何保有獨壹無二的靈魂,讓妳依然認得自己?那個活在妳心深處的頑固的自己?

 

做独一无二的你

 

在寫下以上文字時,我剛好看完紀錄片Genius的其中壹集,是關於六十年代美蘇太空競賽的。1961年4月12日,蘇聯宇航員加加林成為全世界第壹個進入太空的人。1969年7月20日,美國宇航員阿姆斯特朗成為全世界第壹個登上月球的人。在冷戰時期這場影響全人類的美蘇太空爭霸戰中,背後有兩位偉大的天才科學家——馮•布勞恩和科羅廖夫。他們之間的競爭使得人類對於太空的探索取得了歷史性的突破。這不只是國家與國家之間的博弈,更重要的是夢想的推動力,無論是加加林和阿姆斯特朗,還是馮•布勞恩和科羅廖夫,他們肩上所承載的,都是全人類的夢想,是我們向未知領域不斷探索的動力。

 

 

儿时梦想

 

而我們這些與天才無法相提並論的普通人,也是因為擁有夢想,才不至於被現實磨礪得失去自己,成為庸碌無為的nobody。“沒有夢想的人,和鹹魚有什麽兩樣?”是夢想使平凡的我們閃耀出光芒。就像《頑固》的MV裏的主人公梁家輝壹樣,即使做著毫不起眼的工作,私底下卻仍未放棄他成為宇航員的夢想,誰又能說他的夢想比不上加加林或科羅廖夫們呢?

 

儿时梦想

 

楓葉板的締造者是我敬爱的老师,他是五月天的粉絲,是他向我推薦了《頑固》這首歌。他的心裏也有壹個夢想,他的夢想就是,希望楓葉板能成為壹艘載著人類共同的夢想飛往外太空的宇宙飛船,也載著妳我各自不同的夢想,飛向曾經幻想的未來,讓妳當時相信的那些事情變成如今的美麗風景!

 

顽固的自己

 

無論世界如何改變,妳經歷了什麽,請記得不要丟棄夢想,要始終相信,那個活在妳心深處,最頑固的自己。




Drupal 預設的account menu有兩個:my account 跟 login/logout
如何改掉my account顯示登入者的名字呢?
hook 的 function 名字要怎麼叫他才會呼叫到呢?

一開始在twig裏面動手,
把 text = 'my account' 換掉,結果行不通...
最後沒有解決是哪裡出了問題

然後查了很多決定在 .module 裏面做

/*change route user.page title to current user name, but link is always cached*/
function blog_user_manager_menu_links_discovered_alter(&$links) {
  $uid = \Drupal::currentUser()->id();
  $user = \Drupal\user\Entity\User::load($uid);
  $name = $user->getUsername();
  $links['user.page']['title'] = $name;
}

 

以上可以改掉my account的title沒錯,但是link 是在 page render之前做好的?
所以一定會被cache起來,即使我們page cache都關關掉也沒用的。
清掉所有cache後第一次登入是我sean,
之後不論是誰登入還是顯示sean...

為了解決cache的問題和Mark弄了一整天,沒有辦法成功,
大部份是在處理動態route的問題。
最後決定回到render page的層面處理。

/*make account_menu do not cache with user changed*/
function mapleblog2_preprocess_page(&$variables) {
  $variables['page']['navigation_collapsible']['mapleblog2_account_menu']['#cache']['contexts'][] = 
    'user';
}

 

以上使得account menu的render不會cache,
但是$link在這之前已經固定了...

在kint($variables[page])找不到$link title有關的東西,
最後的最後還是得在theme做啊~

讓我們把剛剛那些通通刪掉!

 

答案

找到render menu account的twig然後在custom theme裏面編輯,
在<li>...</li>之間找到印出menu item的地方,

{% if item.title == 'My account' %}
          {{ link(user.displayname, item.url) }}
        {% else %}
          {{ link(item.title, item.url) }}
        {% endif %}

 

drupal8 預設有提供$user給twig用,因此可以使用user裏面的displayname,
不過我們的theme用了macro 這個function來處理menu item,
macro有自己的scope,twig doc
因此我們需要解決如何讓macro裏面也叫到 $user,
Issues with passing a variable to a macro

所以補上user參數傳進去

{{ menus.menu_links(items, attributes, 0, user) }}
{% macro menu_links(items, attributes, menu_level, user) %}

 

成功!

----------------------------------

後記:
cache context加 $user 是必要的,不然該menu block可能會顯示出其他人的名字(cached)




Multi-user Blog: Make User Own Page

sean  2017-12-08   留言:1

website building

接續Content Node: Make a Page
來談談我的blog建立吧!

最麻煩的是blog multi-user...
每個user如何擁有自己的頁面呢?
因為不是basic page而且要是動態的,
所以架構上要考慮的其實很多很多啊!

利用node與view(filter)的想法做出來後,
在添加各種功能上遇到了不直覺操作的困難...
由於該頁是fliter撈出來的,
所以無法像固定頁面那樣給他固定的圖片、工具,
畢竟每個人的頁面要長得不同呀!

目前困惑的點:
以view去做,
需要想出如何新建account時,
給他自動建好那些content(空的封面照片、自我介紹、0篇文章),
然後還需要讓使用者直接在該頁面點連結(contextual link)去編輯頁或是in-place修改。

對了!
像是封面照片如果讓他建立account時,
建一個custom block給他並且自動assign到固定位置,
這樣好像會GG呢!因為整個網站的Block會又臭又長,
而且這樣就破壞了view的觀念了。
所以想法還是建一個block放在那邊,
該block會自動認識路徑從database撈出我要的照片出來才對。

用傳統的想法應該是每個人的部落格空間都是獨立的,
content應該是獨立儲存,而不是像我們用CMS大雜燴。
應該在建立account時給他sub-domain,
自動建好一個超微型網站,擁有後台與主頁,
這樣他就可以自由建立自己的page,還有自由控制版面,
此外也可以free的在cover photo這個block上編輯他。

上一個想法應該是商業發行的部落格應該採取的作法,
我有一個stupid的想法是,
既然所有使用者都只能在我們這 "一個" 網站存在,
那是不是可以在建account時,
自動建立好一個以他命名的page,
然後這個page裡我們必須手把手的code好各種功能,
切div做好板型,用api做好widget,view,按鈕等...
還有像是對content的管理存取等介面...

這個想法很蠢,
因為這不就是古老開發網頁的方法嗎?
已經很接近一個html檔案一個page的原始人模式了,
不過還是用到了content管理、view、user等系統啦!
重點是這樣從白紙架起也需要一組優秀的人力...
這是我一個人做不到的~
而且這樣也浪費了使用CMS的投入,
正解可能是組一個team用framework從頭規劃起這個網站吧?

講到這裡,又想到,
Drupal還有麻州官網和那些大學官網,
也是用drupal架起來的,不也有各個會員自己page的複雜功能嗎?
也就是說利用好drupal是可行的,
不過上述例子好像沒有客制頁面的需求...只是固定表格帶入不同使用者的資料。

這樣其實又回到了最初,
建立block,辨識路徑或使用者,從database叫出資料,
這其實也只是現代網站最基本也最好維護的應用吧。
(所以前面幾段想法都是廢話)

很多人認為Drupal是介於framework和CMS之間,
也就是說我應該利用這些drupal的API去和資料庫溝通,
並用control讓我的block有叫想要的資料的能力!

最完整的版本或許要做出drupal的multi-user blog distribution,
像其他開發drupal distribution一樣,只是這個distribution主要給自己公司用啦!
以drupal core為基礎,分好CMS三大team還有其他UX, Art, Marketing...

嗯!
夢做到這裡該醒了。




Content Node: Make a Page

sean  2017-12-08   留言:3

今天肚子痛的時候想到一件事。

之前在看webwash上build a blog的時候,
做homepage的方法是在content type選basic page,
然後該篇文章(node)成為一個page(drupal預設的view node page),
因此就可以將他成為一個頁面來操作,
給予他路徑,誰可以看到等等。

結合上一篇對view的理解 < View "the Magic" >,
基本上我們要建立各個頁面都可以用node來完成,
頁面裡的樣子完全可以用文章編輯去完成。

有了這樣的想法後,
要給出幾個page就幾個page呢!




View "the Magic"

sean  2017-12-08   留言:0

經過這個月對drupal的摸索,
現在終於可以建起一個基本功能的blog了。

今天在學習如何export configuration與寫進custom module裡面,
同時我理解到view真的是一個強大的工具,
難怪會被寫進core裡面,
而且聽說view在D7以前就成為人人必備的模組了。

基本上view進入core以後,
對我們使用者來說他就是一堆configuration了,
透過config可以設定好一堆bundle(例如content type)出來,
因此也可以再drupal的config manager裡面匯入匯出(.yml)。

View的重點在於如何顯示我的內容(node, content),
所以我把他所有的設定都看做filter的概念,
包括要叫出哪些field,或是以view mode來決定。

View的厲害在D8被完全嵌入進網站整體了,
我們maintainer的管理畫面,
admin下content(管理所有content的地方)這個頁面,
點選文章標體進去的node page,
這些其實都是用view做出來的呢!

可以說view不再是一個模組或工具,
他已經是建立網站內各種頁面或是區塊的基本概念!

此外,
用各種條件撈出我要的資料是他最好用的地方,
我認為這根本地掌握了CMS(內容管理),
還有網頁以view(MVC)顯示資料的精神;

很大程度上這也幫助確立了D8的大躍進,
更好實現了物件導向與類MVC,
也把content與config的切割組合完美地應用。

熟悉了view的設定後,
基本上網頁上資料的各種呈現就沒什麼問題了,
剩下就是美工、排版等css, twig的工作了。