在 R 裡頭使用中文字型

(這個適用於 Mac 或是 GNU/Linux, *BSD 的使用者)

R 的繪圖功能十分強大,但美中不足的是在繪圖若要使用非西歐字母的 multibyte 字元時會無法顯示,這是因為字型的關係,因此我們可以在設定中使用 par 來設定字型(這裡預設使用 Noto Sans 字型,可以免費下載),例如使用 “Noto Sans T Chinese” :

par(family='Noto Sans T Chinese')

但是如果要輸出成 png, pdf 等格式的話,上述的參數不適用,因為 par() 只能夠針對 R 預設的 graphical device 輸出。所以我們可以安裝 R 的 cairo 套件。Cairo 是一套繪製 2D 圖型的 library,亦支援字型繪製,R 安裝 cairo library

install.packages(“cairo”)

接下來就可以設定一般的字型或粗體字

CairoFonts(regular = "Noto Sans T Chinese:style=Light", bold = "Noto Sans T Chinese:style=Regular")

最後在輸出圖之前,使用 Cairo() 設定輸出的細節,type 代表輸出圖片的格式,例如 png, pdf, jpg 等:

Cairo(1600, 1600, file=filename, type="png", bg="white", dpi=300)

#繪圖的指令

dev.off()

 

語言學習—使用線上字彙卡記憶

自從去年在俄國遠東地區看植物爬山參加研討會回來之後,發現俄國很多地方真的很不錯,森林類型和天然的地景都是很吸引我的地方,所以回來後這一年來都在學俄文(好想去勘察加和庫頁島、西伯利亞看針葉林和 Betula, Larix 森林!),雖然上了許多課,不過當開始熟悉文法之後,練習寫文章時,才發現單字的累積是很重要的。隨著年歲的增長,記憶力和專注力就不如以前了(以前可是上完課單字全部都記起來了,根本沒在背單字 XD),直到老婆 Света 介紹了 quizlet (一個線上字彙卡網站),才發現真的非常好用!好的工具加上毅力,讓我每次考試都考一百分了(星爺梗)!

提到「字彙卡(flashcard)」就想起以前國中的時候,班上許多同學都會寫字彙卡,正面寫英文單字,背面寫中文解釋,帶著這些卡片在空閒的時間背誦,好處是當你在看這張卡片的時候,整個人的專注力就集中在這個單字上,忘記了就翻到背面瞄一眼,同時自己也可以看著單字念出來,讓

使用方法非常簡單,網路上也可以搜尋到一些使用方法,所以這邊就不再像爸媽般碎念詳細說明每個步驟,只有重點的提示:

1. 建立

Quizlet 可以用單筆方式建立字彙卡(建立的時候,也可以搜尋有沒有其他人定義過這個字,有的話可以自動帶入),也可以使用批次匯入,或是線上去匯出別人已經建好的字彙卡等。跟土法煉鋼自己學語言做卡片的方式不同點就是 Quizlet 融合了社群的功能,你可以參與某些課程,或是一個小組編輯同個字彙卡(還沒測試過是否可以協同編輯?),讓語言學習變成群體作戰,互相交流學習。還有一個功能是標重音,當你在輸入(要先定義好是哪種語言)時,螢幕就會出現該語言的重音符號鍵盤,就可以直接點選輸入,省得再去找特殊符號輸入。最後,Quizlet 也提供了插入圖片的功能,但是免費的會員只能從 flickr 上開放 creative commons 授權的圖片可以插入,至於如果你要手動插入自己的圖片,就得要付費升級了(另外一個小撇步就是去申請 flickr 的會員(目前免費會員空間有 1TB),輸入關鍵字,再用 Quizlet 的插入圖片搜尋即可 XD)

quizlet flashcard mode

quizlet accent keyboard

2. 學習

Quizlet 的學習可以分成兩個部分,一個部分就是傳統的顯示定義(字彙卡背面),讓你自己拼出單字(字彙卡正面)的方式(也可以正反互翻);第二個則是拼音模式,念出你要記誦的語言,讓你自己輸入單字,如果你輸入上有錯誤,Quizlet speller 會將你錯誤的字母標出來,並把正確的訂正回去,再把每個字母唸一次,最後再把這個字唸一次:

https://www.youtube.com/watch?v=Qh0YfW4tWQ0&feature=youtu.be (似乎沒有錄到音,請見諒)

Screen Shot 2013-10-22 at 4.10.52 PM

3. 測驗

這個部分可以像出考卷一般,有拼字填空、連連看、選擇、true/false 等,練習過後加深印象,單字比較不容易忘記。

4. 輸出字彙表

這個功能我很喜歡,可以把一個單元的單字全部整理成字彙表或索引卡直接印出來,不解釋,直接看圖就知道了:

quizlet print

最後,quizlet 也有為行動版裝置開發 app,android & ios 都有,因為最近剛升級成爸爸,幾乎沒有什麼時間坐下來好好背單字,所以我幾乎都利用零散時間背單字,像是坐公車捷運的時候用 quizlet app 來背誦和測驗,每天累積幾個字,久了字彙量就會變多!

延伸閱讀:

輕輕鬆鬆背單字(1):Quizlet基本使用

Quizlet tutorial video

線上文獻引用樣式語言(citation style language)編輯器

前言

每個研究生都會碰到文獻管理及引用的問題,不同的期刊會有不同的引用文獻的格式,光是這點就十分麻煩,寫文章花在「喬」格式的時間就令人想要問候人家老師一下。如果投了某期刊被退稿,換另外一家期刊,就要整個大改。有些人索性全部用手動的方式插入文獻,但是這也太累了,不如用聰明一點的方式來做,省下來的時間拿來睡覺或是出去玩都很好 XD,所以這邊就來介紹一下如何用最省時間的方式來引用插入文獻,並且依照期刊的規範來格式化並排版參考文獻。

這邊要介紹的 CSL(citation style language; 引用文獻樣式語言) 最早是 Bruce D’Arcus 在 OpenOffice.org 中 CiteProc 子專案所發展出來的 XML 語言,目前 Zotero, Mendeley 以及 Papers 等書目文獻管理軟體都有支援 CSL 。但是要從無到有寫出你想要的 CSL 檔案,會花上許多時間,所以有人用 html5 寫出了 citation style 的編輯器(URL 為 http://editor.citationstyle.org/),除了可以直接從 XML 語法編輯外,它還支援幕前所見即所得的編輯。當你的文獻管理軟體搜尋不到相對應的期刊文獻格式時,CSL editor 可以幫你判斷你輸入最接近的格式,之後再直接根據最接近的引用文獻格式修改即可。

繼續閱讀 “線上文獻引用樣式語言(citation style language)編輯器"

將 ESRI Shapefile 轉成 postgis 格式匯入 PostgreSQL 資料庫

可以用 QGIS 的 SPIT 外掛,或是 shp2pgsql 指令,使用 SPIT,圖形介面很簡單,就不用多介紹了

Screen Shot 2012-12-25 at 1.05.25 AM

 

 

用 shp2pgsql 最簡單

shp2pgsql -I -D -c -s 3826 filename.shp > filename.sql  (-s 代表座標系統,常用的是 WGS84 (4326) 或 TWD97 TM2 (3826) )

psql -d database -f filename.sql

利用空間資料庫計算多邊形交集以及計算面積

話說「交集」是個常常被掛在嘴邊的語句,像我和一口巾工讀生們往往都沒有交集,他們不了解我的明白,我也不了解他們的明白啊。交集在幾何上可以用下圖來簡單表示,但是在 GIS 計算交集上,除了空間上的交集外,還有的資料表的交集(ex: join),這個我就不多花篇幅談。Image

以下簡單介紹用空間資料庫的概念來實作多邊形的面積以及交集

一、準備材料:

二、步驟

qgis_layout

上圖是八色鳥在的分布範圍(圖層: range_fairy_pitta,橘色虛線淺綠色底的多邊形區域,簡稱 sp),深綠色是世界的陸域地圖(圖層:map_world,資料屬性表中有國家名稱(cntry_name)以及大陸名稱(continent),簡稱 world),淺橘色則是 sp 和 world 交集的區域。當然我知道做這個很簡單,從 ArcMap 中的工具箱選擇交集工具就可以做出來了,或是用 QGIS 的向量外掛(fTools)的 Geoprocessing Tool/Intersect 即可做出來,但是 GUI 用起來就是有不踏實感 😄 所以我們用空間資料庫來實作!

繼續閱讀 “利用空間資料庫計算多邊形交集以及計算面積"

QGIS 更新屬性表以及用簡單的正規表示式(regular expression)來選擇資料之值

Qgis 中更新屬性表,簡單說就是類似像 SQL 語言去更新或計算某些欄位的資料。

先將屬性表開啟,然後開啟編輯模式(toggle edit mode)之後,選欄位計算(field calculator),如下圖

qgis attribute table

接下來就可以進入欄位計算的介面。如果你想計算後的結果建立一個新的欄位,就選擇建立新欄位(create a new field),並設定好該欄位的名稱、類型(例如整數、浮點數等),精確度等,之後就可在運算式(expression)處輸入你想要的值。

 

 

 

繼續閱讀 “QGIS 更新屬性表以及用簡單的正規表示式(regular expression)來選擇資料之值"

mac 上面的 homebrew

延續著 BSD 的傳統,在 mac 上面有許多類似的套件管理系統,像是  FinkMacPorts 或是 Homebrew 等,我推薦使用 homebrew 是因為他是用 ruby 寫成的,簡單又有彈性,以下記錄 homebrew 的使用(真的很容易上手!)。

1. 先安裝 xcode (從 Appstore 安裝,是免費的)

2. 安裝 homebrew

首先在 Terminal 中輸入:

ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

3. 設定 xcode license

$ xcodebuild -license

4. 使用前先更新 homebrew 的 formula (就把它看成是菜單)

$ brew update

之後要安裝其他的軟體則是使用

$ brew install software

既然有安裝,就會有解除安裝

$ brew uninstall software

搜尋特定軟體名稱

$ brew search software 

如果搜尋到在其他的 repository 的軟體,可以用 brew tap other_repository 加入

[HOWTO] 匯入 ESRI Shapefile 至 PostgreSQL 空間資料庫(postgis)

一、安裝

安裝有好幾種方法,而且都很簡單,如果是 *BSD 平台,就用 ports / pkg_add 之類的套件管理系統,GNU/Linux 例如 Debian ubuntu 就用 aptitude / apt-get 之類的,Mac 就用 Macports 或homebrew。Windows 就去抓 package 自己安裝,例如 http://www.postgresql.org/download/windows/,就…自己看!

要安裝的東西有兩個,第一個是 DBMS,即 PostgreSQL,第二個則是 PostGIS,則是讓 PostgreSQL 具有支援空間資料庫的功能。建議安裝 PostgreSQL > 9.1 版,以及 PostGIS 2.0 以上的版本(因為之後設定比較方便,建議用 2.0 以上版本)。另外如果你是使用 EnterpriseDB 公司所出品的安裝程式,就可以在安裝完 PostgreSQL 後利用 Stack Builder 來選擇延伸模組。

二、設定

先建立一個新的資料庫,可以用 pgAdmin ,或是用 PostgreSQL 的 shell 來建立一個名為 test 的資料庫,然後擁有者是你(選項 -O),並且這個資料庫是 utf8 編碼:

# createdb -E utf8 -l en_US.UTF-8 -O yourusername test

接下來建立 postgis extension,先進入 PostgreSQL shell

# psql -d test

建立 postgis extension

test=# CREATE EXTENSION postgis ;

test=# CREATE EXTENSION postgis_topology;

這樣就讓 PostgreSQL 建立 postgis 支援了!

三、匯入 shape file

這個步驟可以選擇用 QGIS 的 SPIT 延伸套件來匯入,

或是用指令的 shp2pgsql 來匯入:

# shp2pgsql -g geom -W big5 -I -s 3826 -D shpfile > table_name.sql

如果轉換都沒有問題的話,就匯入 psql

# psql -d test -f table_name.sql

之後就可以用 QGIS 連 postgis 資料庫了,如下圖:

Image

另外, postgis 也支援 raster 格式,同樣可以用 raster2pgsql 來匯入

raster2pgsql -s 3826 -t 100×100 -I -C -M raster.tif  | psql -d test

[HOWTO] Aitoff 投影法繪製上次最大冰河期及現今陸域

因為對面的鍾叔叔想發一篇山薰香(Oreomyrrhis sp.)生物地理分布的文章,問我能不能繪製現在陸域套疊冰河期地圖,可以明顯呈現新幾內亞和澳洲在冰期是相連結的,所以我就繪出底下這張圖:

因為對面的鍾叔叔想發一篇山薰香(Oreomyrrhis sp.)生物地理分布的文章,問我能不能繪製現在陸域套疊冰河期地圖,可以明顯呈現新幾內亞和澳洲在冰期是相連結的,所以我就繪出底下這張圖:

繼續閱讀 “[HOWTO] Aitoff 投影法繪製上次最大冰河期及現今陸域"

[HOWTO] Redmine on FreeBSD

參考 http://www.redmine.org/wiki/redmine/RedmineInstall

1. 先從 ports 裡頭安裝 redmine

# cd /usr/ports/www/redmine
# make install clean

因為我要使用 apache2 以及 postgresql 當 database ,所以要 enable passenger, postgresql 支援,
另外也可以啟用 gantt chart 及 mysql database 支援,這個就看個人需求。

2. 安裝好之後,進行設定的步驟

2.1. 設定 database (postgresql)

登入 postgresql 帳號

$ sudo su postgres
$ psql
psql=# CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
psql=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

繼續閱讀 “[HOWTO] Redmine on FreeBSD"