2017/02/10

Raspberry Pi:移除掉沒用到的套件

Raspberry Pi基金會官方釋出的Raspbian,為了方便初學者使用,放入許多套件,但其實我們可能都用不到,這篇試著移除一些沒用到的套件。

另一條路子是使用Raspbian Lite精簡版,但那麼一來,就必須自己安裝想要的套件。

我的環境是Raspberry Pi 3,Raspbian Jessie with PIXEL 2017-01-11。

燒錄、開機、raspi-config初始組態設定後,嘿,居然已經用了3.6G。
pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  3.6G   11G  26% /
...其他省略...


讓我先更新套件,讓系統升級到最新版:
$ sudo apt-get update; sudo apt-get -y dist-upgrade

嘿, 居然佔用4.0G。
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  4.0G  9.9G  29% /

不過,因為下載的套件檔仍在,試著清除吧,也移除掉因相依關係而自動安裝的套件:
$ sudo apt-get clean
$ sudo apt-get autoremove --purge

嗯,其實沒多大變化。
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  3.6G   11G  26% /

然後,看看選單Programming裡頭,嘿,不需要的東西還不少啊。

以底下指令來移除套件,IBM的Node-RED、Mathematica、Scratch、Sonic Pi、Minecraft Pi。
$ sudo apt-get remove --purge --auto-remove nodered wolfram-engine scratch sonic-pi minecraft-pi

其中移除wolfram-engine應可拿回650MB的空間,scratch約100MB,sonic-pi約200MB,

再移除兩套Java IDE:BlueJ與Greenfoot,一套輕量型IDE:Geany。
$ sudo apt-get remove --purge --auto-remove bluej greenfoot geany

移除掉Sense HAT Emulator:
$ sudo apt-get remove --purge --auto-remove python-sense-emu python3-sense-emu python-sense-emu-doc sense-emu-tools

移除掉Email軟體Claws Mail、瀏覽器Chromium(可釋放出約200MB的空間)、瀏覽器Epiphany、瀏覽器Dillo。
$ sudo apt-get remove --purge --auto-remove claws-mail chromium-browser rpi-chromium-mods epiphany-browser dillo

當我移除掉Chromium和Ephiphany,發現還有Dillo,第一次看到這玩意。
都移除掉以後,想開啟瀏覽器的話,就會出現錯誤囉。
如果你不需要的話,也可移除掉很大的Libre Office,記得加上星號,才會移除掉全部:
$ sudo apt-get remove --purge --auto-remove libreoffice*

最後看看,從3.6G降到2.1G,還不錯。
pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        15G  2.1G   12G  15% /


其實也不是非移除不可,既然內建、那就放著就好了,但是想更新套件時,常常會需要連帶更新一堆東西,很煩,若能把不需要的先移除,就能減少需要更新的東西。

2017/02/05

Raspberry Pi:遠端桌面連線與VNC

Raspberry Pi 3與Raspbian(2017-01-11),重新燒錄、全新安裝,試著透過遠端桌面連線與VNC進行遠端操控。

第一次開機,會自動擴展記憶卡分割區,並且重開機,很快,可能沒看到。之後開機會看到四顆樹梅水果。

以前開機後,預設是到命令列模式,如下圖。
現在開機後,預設會進入X視窗系統,自2016-09-23起,採用新的桌面環境PIXEL。
注意,自2016-11-25起,Raspbian再預設開啟SSH伺服器(很怪的決定),但可以在第一次開機之前,把記憶卡放進別台電腦,在第一個分割區(Windows應只看得到一個)裡,放入一支檔名為「ssh」的空檔案,這樣預設就會啟動SSH伺服器。

藉由實體連接的螢幕,進入X視窗。
有個警告訊息,意思是說,SSH已開啟,但預設帳號pi的密碼尚未更改。
咦,右上角怎麼有個閃電圖示?這是因為我的電源供應不穩定,電壓過低;以前會顯示彩虹方塊。
實體主控台(實際連接的螢幕鍵盤滑鼠)進入X視窗後,可進入組態選單,自己啟動VNC伺服器(RealVNC)。

然後,從別台Windows 10電腦,使用VNC客戶端(下圖是RealVNC的VNC Viewer),填入rpi的IP位址。
就可從遠端操控桌面了。
以前都是在命令列模式下,使用指令raspi-config設定組態
自2015-09-25起,在GUI畫面裡,也有組態選單囉。

修改密碼、主機名稱、開機後要進入視窗畫面還是命令列模式、要不要自動登入、開機時是否等待網路連線、開機畫面、螢幕解析度、Underscan設定。
存取介面,視情況開啟。
超頻,以及要分多少記憶體給GPU。
區域設置、時區、鍵盤配置、WiFi國家。
接下來,試著以「遠端桌面連線」登入吧,先以底下指令安裝RDP伺服器
$ sudo apt-get install xrdp

然後叫出「遠端桌面連線」的客戶端,Windows電腦應已內建。
奇怪,出現login successful的字樣,後面又出現error - problem connecting的字樣。
原因在於,Raspbian預設內建的RealVNC伺服器,與剛剛安裝的xrdp起衝突,唉。解決辦法之一是另行安裝TightVNC伺服器,指令如下:
$ sudo apt-get tightvncserver

然後就可以了。
但系統預設的VNC伺服器也不見了,也不是消失無蹤,而是預設不啟動了。此時想以VNC操控,就會失敗。
不過只要自己在命令列下打指令,啟動TightVNC伺服器:

$ tightvncserver

就可運作,但輸入IP位址時,要加上「:1」,簡單的說,:0代表實體連接的螢幕,而剛剛的指令會開出另一個螢幕:1。
若想關閉TightVNC伺服器,或是想開機後自動啟動,請參閱「Raspberry Pi:VNC伺服器之TightVNC」。


參考資料:

2017/02/01

程式語言排行榜 Part 2

之前寫了一篇《程式語言排行榜》,不知為何,瀏覽量很高,難道大家興趣那麼高嗎?

除了火紅程度,尚可從其他面向評比,例如學習難易度與未來潛力,底下列出我最近看到的比較文章。

What Programming Language Should a Beginner Learn in 2016? | Codementor

非常詳盡,比較語言包括JavaScript、Ruby、Python、PHP、Java、C、C++、Objective-C、Swift、C#、SQL,底下挑出四張圖,此外還有其他統計分析,請自行觀看。注意:這是美國的統計資料。

程式開發人員平均薪資,哇,Swift最高,Python與Ruby居然跟在後面,然後才是C++/Java/C。

接著是薪資範圍,挖賽,Pyhon居然向右突出耶,最差的是PHP與SQL。
下面這張是工作數量趨勢,哇,會C語言果然是王道,不怕沒飯吃,嗯,為什麼在2014年有個尖峰啊?
下面這張則是新創公司需要的程式語言人才,JavaScript佔最大宗。

Highest paying programming language - Shout Article

 薪水最高的8個語言,咦,SQL最高,跟剛剛的資料不一樣。



10 Best Programming Languages That You Need To Learn In 2017 | Balhara Infotech

列出10個你需要在2017年學習的程式語言,ㄟ,10個會不會太多了啊?有JavaScript、Java、Python、Ruby、PHP、C++、C#、Go、Scala、Swift。大都不意外,但是居然有Scala,嘿嘿。只有文字、沒有圖表,啃得下去的人就看一看吧。


Best Language Books and Tutorials for Programming languages 2017 - Darcob - Creative IT Expert

列出學習程式語言的教材與書籍。介紹的語言有PHP、JavaScript、Ruby、C、C++、Java、C#、Python、Perl、Visual Basic。


2017 年程式語言最佳有潛力獎:Go、Dart 與 Perl,你認識幾種呢? | TechOrange

文中提到Go獲得最佳進步獎,嗯,我不了解詳情,但的確在某些場合,開始聽到Go語言。文中提到C語言的沒落,嘛,不意外,可想而知,但各種軟體系統的基礎,仍是C。


What is a list of programming languages ordered from easiest to hardest to learn? - Quora

有人詢問程式語言的難易程度,某個從易到難的回答是:Logo、Lua、Javascript、Python、Ruby、Lolcode、Cobol、Basic、Java、C#、Pascal、C、Objective-C、Fortran、Smalltalk、C++、Haskell、Lisp、Verilog、Assembly。你覺得呢?另可參考這篇


What's the most difficult programming language to learn?

最難的程式語言到底是哪個啊?各種回答都有。


Most used words in programming languages

最後讓我們來看看,在各語言的程式原始碼檔案裡,最常出現的字詞是哪些。底下只放上JavaScript、Python、C++、Java這四個語言,其他的請自行到該網站觀看。

JavaScript的。
Python的。
C++的。
Java的。