2014年12月25日 星期四

[Education] Raspberry Pi和Google為初學者設計的Coder





Share

一群由紐約Google員工所組成的小團隊,以Raspberry Pi為基礎發展了一項實驗專案,稱之為Coder。它能夠將Raspberry Pi轉換成一個友善的開發環境,讓想學習網站開發的人能夠輕易上手。因此,它非常適合初學者和那些沒有程式設計經驗的人。


入門
在專案的首頁中可以看到Coder教學

在開始使用Coder之前,我們需要下列物品
l  Raspberry Pi (任何機型都可以:ABA+B+)
l  預載CoderSD記憶卡

我將用Raspberry Pi B+以及AdaFruit發行的Coder作說明。然而,你也可以透過網路免費下載Coder,並放入4G記憶卡中。

接下來,將記憶卡插入Raspberry Pi並開機即可開始。
SD Card with Coder from AdaFruit

Micro SD card with Coder from AdaFruit
AdaFruit發行,預載Coder的記憶卡與轉接卡。
Coder Micro SD card inserted in Raspberry Pi B+

Booting process as Coder set up the Raspberry Pi as a Server
在開機的過程中,Coder會將Raspberry Pi設置成網站伺服並架好WiFi基地台。藉此,我們可以用電腦(如:筆記型電腦、桌上型電腦或者是平板)連線至由Coder設置好的伺服器並開始我們的設計之旅。

至於連線的方式,你可以選擇透過網路線或WiFi。我選擇後者,利用我的筆電(HP Chromebook)連線至SSID為「CoderConfig」的基地台。然後,我只要打開瀏覽器並輸入網址即可存取。
http://192.168.0.1

如果你是使用家用網路,那你肯定知道裝置所分配到的IP都是以192.168開頭。這是因為國際間約定好,將192.168.x.x區段保留給私有網路。在這種情況下,筆電與Raspberry Pi共享著一個很小且穩定的私有網路。

在實作時,我們並不需要將螢幕、鍵盤或是滑鼠接到Raspberry Pi上。因為它是以伺服器的角色工作,所有設定都可以從客戶端(筆記型電腦、桌上型電腦或者是平板)完成,所以我們只要將Raspberry Pi接上網路線或是插入USB無線網卡,並接上USB電源線開機即可。如果你還沒有這些元件的話,在Coder的網站中有一份購物清單,可以上去看一看。

Coder所呈現的第一個畫面是讓我們設定密碼,以供未來操作Raspberry Pi上的伺服器使用。對於資訊安全意識,這是很棒的第一步。
Screenshot of first login page, when connecting the laptop to the Raspberry Pi Wifi network
值得注意的是,你設定的密碼也將一同套用到Raspberry Pi中名為「pi」的使用者帳戶。這個帳戶的密碼預設為「raspberry」。這個修改只會在你利用鍵盤操作或SSH連線時會影響,因為你必須輸入「pi」的密碼才能登入。

接下來的是登入畫面,只要輸入剛剛設定的密碼即可。
Screenshot of first login page in Coder
登入成功後會被導向到另外一個畫面,在這裡我們可以選擇建立新的設計專案或是瀏覽一些簡單的範例。
Screenshot of top projects page in Coder

Screenshot of initial projects in Coder

Hello Coder
我們建議從右上角的「Hello Coder」開始。在點擊它後,我們將看見專案的入口頁面。
Screenshot of the Hello Coder project entry page.
依照指示點擊右上角含有「</>」的圖示,我們將會看見主要的編輯視窗,在那裡我們可以檢視或編輯範例應用的程式碼,並立刻看見修改後的結果。

一個典型的網站應用有兩個部分:
l 在伺服器端執行的程式碼。通常是資料庫以及後台管理等。
l 在客戶端執行的程式碼。以呈現從伺服器端所接收到的資料為主。

客戶端由我們的瀏覽器所掌管。而伺服器端則是由執行著CoderRaspberry Pi所掌管。網站應用的客戶端通常由以下三點組成:
l  HTML:頁面的分配與佈局,包含文字、圖片、聲音以及影片等。
l  CSS:定義頁面的外觀,例如:顏色、字型、大小以及對齊方式等。
l  Javascript:提供邏輯以及動態的效果。
Screenshot of editing page in Coder.
Coder的編輯器上方有一排按鈕可以讓我們存取網站應用的各個元素:HTMLCSSJavascript以及Nodejs
Screenshot of CSS editing page in Coder

Screenshot of CSS editing page in Coder

Screenshot of JavaScript editing page in Coder.
透過右上角的齒輪圖示,我們可以在新開啟的視窗中編輯應用名稱、作者以及專案頁面的顏色。中間的眼睛圖示則會將畫面一分為二,左方為編輯區,右方為預覽區。這樣的設計是非常方便的,因為我們能夠立刻看見左方的修改會造成什麼改變。而初學者也能藉由如此交替的過程,輕易地了解到某一段的程式碼有何功用。
Screenshot of the editing and rendering windows side by side.
使用Coder最好的方式是,將重心圍繞在正在編輯的網頁當中,做了一些小修改後,觀察那些修改將會對網頁呈現的效果有何改變。

設定WiFi
截至目前為止,我們是使用筆電與Raspberry Pi所形成的私人網路。這種方式讓我們能夠快速上手,但我們卻不是真正的連上網路,舉例來說,我們沒辦法瀏覽Coder的教學頁面。為了解決這個問題,我們可以到專案的主頁面,透過齒輪圖示來設定Raspberry Pi的無線功能。以我為例,我需要將Raspberry Pi連接至我家中的WiFi基地台。
Screenshot of the Coder settings page.

Screenshot of the WiFi configuration page in Coder.

Screenshot of final WiFi setup in Coder.
設定一旦完成,Raspberry Pi將會重新啟動並連接至你指定的無線網路。如此一來,我們便能在筆電透過下列網址存取Coder的伺服器:
http://coder.local

另外,我們可以在Rasperry Pi的開機訊息中找到它所分配到的IP地址。
Picture of boot messages in the Raspberry Pi after configuring the Wireless network.
以我為例,Raspberry Pi所分配到的地址為192.168.1.15。在瀏覽器輸入地址後,便能看見伺服器的畫面。
Screenshot connecting to the Coder web server in the Wireless network.
Eyeball專案
玩完「Hello Coder」後,下一步便是「Eyeball」。
Screenshot of Eyeball project in Coder.
這項專案展示出一個眼球的動畫,這不禁讓我們讚嘆:「這是如何實現的?」其實,最關鍵的地方就在於Eyeball專案內的CSS檔案...你一定要自己試試看!

Space Rocks專案
下一步是「Space Rocks」,這是一個相對簡單的遊戲,我們駕駛太空船穿梭在太空中,同時還要閃躲那些致命的小行星!(我現在還在「閃躲」這一部分努力…)
Screenshot of the Space Rocks game in Coder.
我告訴你,這款遊戲並不像看起來那麼容易。然而,我們可以透過「Hack」按鈕來取得遊戲的一些基本參數,例如:太空船速度以及拋體速度等。
Screenshots of parameters settings in Space Rocks game in Coder.
當然了,檢視HTMLCSS以及Javascript,和嘗試改變他們是另外一種趣味。接下來,我們可以建立屬於自己的專案並開始編寫程式碼與觀察它的行為了。

尋找並分享專案
Coder是一項完全開放原始碼的計畫,依照Apache 2.0授權規範所發布。你可以Github中取得。

更多好玩的專案可以到下列網站取得:

忠於開放原始碼,我們也會將我們的專案分享出來。

結論
Coder對於學習程式設計是一個很棒的資源。它簡化了入門的步驟,不需要昂貴的設備,就能夠提供我們那麼有趣的活動。如果你計畫在接下來的假期購入Raspberry Pi(或是已經擁有)玩玩,那麼Coder會是你可以考慮的。

現在,如果你不介意的話,我要繼續玩Space Rocks了。

原文:http://opensource.com/education/14/11/learning-web-programming-everyone-coder

今年一小時程式設計期望有一億名學生能受惠

原文:http://opensource.com/education/14/12/hour-of-code-codecombat-event

下週Code.org將進入資訊科學週的一小時程式設計(Hour of Code)的主題,它也將成為歷史。

前一年,一小時程式設計期待教導一千萬名學生在一週內撰寫程式,但實際上這個活動卻有了一千五百萬名學生參與。今年他們想更進一步地推動至全球教導一億名學生。

除此之外,CodeCombat也很樂意推動此活動,以讓學生們也可以選擇參加他們的一小時程式設計。CodeCombat已為此活動準備了4個月,希望可以讓參與的人們感到興奮 — 一個我們希望達到的目標:讓學生們認為寫程式是有趣的,甚至我們真的做到了(沒有人曾經告訴我們)



以下為CodeCombat遊戲中的各項新增事物/特色:

角色可以選擇九種角色,有戰士,騎兵,巫師,每個角色都有各自的長處及短處,以及不同的能力

物品:所有角色的程式能力皆來自於物品,總共有250以上的物品你可以解鎖,所以當你獲得一個新的裝備,表示你又學習了新的概念

關卡:我們已經有50個以上的關卡,每週開放/新增5關卡

寶石:完成每關卡後皆會有寶石作為獎勵,其可以用於升級裝備

世界主題:地牢和森林主題是最為完整的,沙漠主題,山丘主題,冰世界,火山世界則正在建構中

音效:帶起你的耳機以獲得最佳體驗,因為這裡現在有更多的音效而不是只有劍的攻擊聲

音樂:我們現在有更多來自我們作曲家José Antonini所創作的背景音樂

視覺設計:為了讓使用者有更佳的體驗,網站都有美麗動人的圖示

人聲:我們的人聲已經不再是由同個人模仿不同聲調而成

修正錯誤:CodeCombat是開放原始碼的,由於大家的貢獻,我們從八月起已有1500個修正

遊戲測試:有著體驗者團隊過去幾週的遊戲測試,遊戲已有大幅度改善,使得遊戲更容易進行,至今我們已經有7歲的使用者完成森林主題的所有關卡

45種語言:我們得團隊已經盡力翻譯了數萬個字句以讓世界各地的使用者皆可以使用,目前最新加入的語言為加利西亞語

文件:在Scribes的幫助下,我們現在已經擁有六種不同程式語言的新手教學文件

解鎖:後面的關卡將會有更多的程式技能解鎖,以及更多角色供使用者選擇

多種角色:一開始使用者可選擇的角色有三種,不再像以往必須晉級後才能選擇多種角色

Python:現為此遊戲預設語言,有著Python大師Matt的協助,使得學習Python比以往更加容易上手

更迅速的App:有著新的WebGL技術、數個月的程式碼優化和許多測試,新的CodeCombat將能在任何環境運作得更流暢,連IE9也不例外

更快速的服務:我們採用AWS服務,提供數萬名玩家在遊戲時有更快的載入速度

多樣化的遊戲:為了讓使用者不覺得枯燥乏味,我們遊戲的進行內容有收集物品、建立籬笆等,其中也包括了一些需要特別動腦以通關的關卡

自動完成:這項功能使得較年幼既無基礎的人更容易進入遊戲狀態

訂閱:如此一來你便可以支持CodeCombat,除此之外我們也會提供額外的關卡給每月付費的訂閱者,而基礎關卡仍是維持免費以讓每個人都能夠體驗

[Education] 未來的開源數位圖書館

Source:http://opensource.com/education/14/11/open-sourcing-public-library
Phil Shapiro, one of my fellow Opensource.com Community Moderators, gave a talk at All Things Open 2014 about open source and libraries. This is a recap of that talk.

Opensource.com社群的版主之一,Phil Shapiro(中譯:菲爾 夏皮羅),在All Things Open 2014談論開源原始碼與圖書館。這是談話內容的概括:

Too many people ask, "What is the future of libraries?" and not, "What should the future be?" A book that we must read is: Expect More: Demanding Better Libraries For Today's Complex World. If we don't expect more of libraries, we're not going to see libraries change. We have to change the frame of mind that libraries belong the directors—they actually belong to the people and they should be serving the people.

有很多人問:「圖書館的未來會是什麼樣子?」而不是問:「未來是什麼樣子?」有一本我們必讀的書籍,Expect More: Demanding Better Libraries For Today's Complex World。假如我們並不對圖書館有多加期待,我們也將不會看到圖書館的改變。我們必須改變心裡對於圖書館屬於圖書館館長?(director)的既定框架,這些圖書資源應屬於所有的人而且director應該為我們服務。

Phil asks how we get some communities to participate in managing libraries. Start looking at your library's collection and see if there is at least 1% of the collection in the STEM arena. Should that percent be more? Maybe 5% or 10% more? There is no set answer here, but maybe we need to make a suggestion to our libraries. Maybe instead of just books our funds should go to empower the community more in the technology arena. Maybe we should have co-working space in our library—this can be fee based even—and could be something as low as $30.00/month. That would be a way for libraries to help the unemployed and the community as a whole.

菲爾問道我們該如何讓我們的社會參與管理圖書館。可以試著看圖書館的叢刊,觀察一下STEM(science, technology, engineering, and mathematics)的領域在叢刊中是否達到1%。這個百分比會更多嗎?或許5%、10%或是以上?雖然沒有一個固定的比例,但是,或許我們需要給圖書館一些建議。圖書館的經費除了花費在書籍本身之外,也應該去授權社會投入更多心力在科技的領域。也許我們應該在圖書館設立共作空間─可以建立於使用者付費為基礎之上甚至是小額收費,差不多一個月$30這樣相當低廉的價格。這會是一個方法讓圖書館可以幫助失業者、或是整個社會。

Libraries are about so much more than books. People head to the library because they're wondering about something—so having people who have practical skills on your staff is invaluable. Instead of pointing people to the books on the topic, having someone for them to talk to is a value-added service. What are our competitors going to be doing while we're waiting for the transition from analog to digital to happen in libraries? We need to set some milestones for all libraries. Right now it's only the wealthy libraries that seem to be moving in this way.

圖書館擁有最多的東西非書籍莫屬了。會去圖書館的人是應為他們對於某些事物、領域感到好奇,意味著這些人會變成相當珍貴的一群,想像一下你是老闆、而你有一些實用技能的員工,他們就是這一群人。若能有人可以與他們談論他們關心的主題或是延伸議題會是一個有附加價值的服務而不是只關注於書本的內容而已。在圖書館處於一個由實體轉為數位的過渡時期,我們的競爭者正準備著些什麼呢?我們必須為圖書館打下一個里程碑。目前看起來這種圖書館具有價值,看起來也朝著這個方向在進行著。

A lot of the suggestions Phil makes are things I've seen some of the bigger libraries in the US doing, like hosting TED Talks, offering digital issues lectures, etc. You could also invite kids in there to talk about what they know and have learned.

很多菲爾的建議我已經看到很多美國大型圖書館已採納並著手進行。像是舉辦TED演講,提供數位議題的課程等等。你也可以帶著你的孩子參加TED談論他們知道的事、或是學過的東西等議題。

Phil says, "The library fulfills its promise when people of different ages, races, and cultures come together to pool their talents in creating new creative content." One thing to think about is whether this change from analog to digital can happen in libraries without changing the name of the library. Instead of libraries, Phil suggests we call them digital commons. I'm not sure this is necessary—I see Phil's point—but I think we need to just rebrand libraries and market them properly and keep their name.

菲爾:「圖書館履行他的承諾讓不同年齡、種族、文化的人們聚在一起發揮專長天分創造出新穎的東西與內容」我們可以思考這改變可以發生在數位圖書館而沒有改變"圖書館"這名稱。菲爾建議稱它為數位常規而不是圖書館。我不確定這是否是必須的,我了解菲爾的觀點,但是我認為我們應該只須更名圖書館而且適當推銷並保留他們的名字。

Some awesome libraries include: the Chattanooga Public Library, which has a makerspace on the fourth floor; the Anythink Libraries in Colorado; and the Delaware Department of Libraries is creating a new makerspace, too.

一些著名的圖書館包含查塔努加公共圖書館就有一個創造者空間(makerspace)在4樓;科羅拉多州有Anythink圖書館;特拉華州圖書館也有一個新的makerspace。

Books are just one of the tools toward helping libraries enhance human dignity, and there are so many other ways we can do this.

書只是一種工具幫助圖書館來增加人的尊嚴,還有很多其他的方式可以做。

Phil showed us a video he made on digity, control panels, and communities:

菲爾秀出一部短片他製作digity,控制面板和社群



2014年12月19日 星期五

資料庫

資料庫連結

 

 

至今我已經當了軟體工程師快15年了,雖然最初並沒有意識到,但事實上我從最一開始就在開源的環境下工作,從基本的GNU命令列(command line)到C編譯器,開放原始碼從一開始就存在了。