六月 13, 2016

marr's weblog
marrtw
is about »

tag cloud

» OpenGeo Suite

Boundless Exchange 是 Boundless GIS Platform 的一部份,它的功能看來是對應了 GeoNode,而 GeoNode 文件表示它是個 GIS CMS,能夠用來新增 Layer, Map, Document (例如 Excel, PPT, PDF 等),也有群組和簡易權限控制,加入我們的歷史圖資或 Shape File 內容,都可以做到,但我沒發現能直接編輯 HTML 或調整呈現的功能。

整體來說,Boundless Exchange 是編輯 GIS 素材最好的 Open Source 系統環境,算是提供地圖資訊的後台便利環境,但直接在上面「說故事」似乎還不適合,短時間內應該要搭配其他能夠編輯 HTML 的前台環境。如果搭配 LocalWiki 的話,方便共同編輯,但呈現形式要調整後,才容易具備彈性。

GeoNode fig1 GeoNode fig2 GeoServer fig1 GeoServer fig2

擴充開發的角度來看,Python 寫成的元件 (像 Django, pycsw) 偏向前端,以 Java 寫成 (例如 GeoServer) 是後端核心,在調整顯示的情境下,主要應是修改 JavaScript 和 Python 的前端元件部份。

十二月 23, 2015

marr's weblog
marrtw
is about »

tag cloud

» Omeka Notes

安裝 Omeka 2.3.x 之後,有幾個常見問題,依自身實務的需求優先順序來說明:

* Item 只能對應一個 Collection 不能對應多個。所謂的 Collection Tree 通常幫不上任何忙。

* Theme 客製化機制建議先參考這一系列說明,Common Layout 無法依 Item 或 FrontPage 來客製,例如 Disqus Embed Code 無法依 Item (or Item Type) 來顯示

* Navigation 管理方式只有一招,每個 Tab 都要指定 Link URL。

* Item 與 Collection 不能容易地自訂網址。

* 描述欄位的中文斷字預設無法正常顯示,至少要修改下列檔案:

  • application/views/scripts/items/single.php
  • application/views/scripts/collections/single.php
  • themes/.../collections/show.php
  • application/views/scripts/items/browse.php

* 地圖座標搭配 CSV Import 時,無法批次處理。

* Exhibit 的 SubItem Navigation 不能客製化

* Slide Show 模組整合選項有限制,較可行的是像 CSSlider。

* 利用 GetText 建立翻譯用的 pot po 檔,但沒有支援 Multi Lingual 機制。測試用 msgfmt -o 產生的 mo 並沒有成功生效。

* 留意 Version One vs Two 的差異

* Short Code 範例

* Collection 排序調整 數量統計 的範例

試用 Plugin 的心得記錄:

* Youtube 會新增一個匯入介面,輸入個別的影片網址,會自動填寫欄位資料。

* 安裝 GeoLocation Plugin 後,搜尋表單會增加地理相關搜尋欄位,但測試會造成錯誤,要從 application/views/scripts/items/search-form.php 移除 php fire_plugin_hook() 來停用搜尋欄位。

五月 25, 2015

marr's weblog
marrtw
is about »

tag cloud

» Learning Programming Fast

絕不貪快,按部就班,是學好程式的不二法門,除此之外,還是有五個步驟,有助加速學習:

  1. 先讀範例程式,再讀說明文字。
  2. 打一遍範例程式,執行並測試。
  3. 找個實例練習自己寫程式。
  4. 學習使用除錯器。
  5. 聰明發問,獲得更多角度的解說。

以上我稱之為「程式學習快速秘笈」,原文在這裡

五月 22, 2015

marr's weblog
marrtw
is about »

tag cloud

» After-School Class

小孩的媽,最近開始比較住家附近的安親班,用心程度,堪比孟母三遷。

藉由這些親身接觸的機會,我們才體會現代孟母面對怎樣的挑戰。

首先,安親班數量之多,約是便利商店三倍;其次,從業者專注特色,幾近苛求。

有哪些特色呢? 九成會強調純美語、或雙語教學,如果之前沒有足夠的美語根基,要嘛入班前加強訓練,跟上進度,要嘛就不必進去啦,意思是不要拉下既有班級的素質。至於沒有美語課程的安親班,數量雖少,但氣勢也不輸人,強調「省下來」的時間,會加強學生的在校功課,還有戶外運動。

有一家強調網站軟體,小孩回家可以線上複習,「那麼,該怎樣知道小孩有沒有乖乖複習呢?」「我們有會員系統,可以知道誰有沒有登入看影片。」我腦袋浮出的畫面是,哪一天,小朋友們都會安裝好自動登入的外掛程式吧。

總歸一句話,別讓孩子輸在起跑點。但,我依舊納悶,目標在哪個方向都不知道,起跑再早有什麼意義呢?

十二月 26, 2014

marr's weblog
marrtw
is about »

tag cloud

» Chinese Language Formula

中文在數位世界裡,理想上的處理方式,認真探討的人很少,實作的累積速度也慢,不過,這份資源值得參考: http://chineselanguageformula.sourceforge.net/

中文語言方程,以構字式為基礎,針對所有的 ISO 639-3 及民族語,採取語言學的正規方法,進行統一處理。目前多組相關的程式碼公開釋出後,原作者想要找人接手維護。

六月 25, 2014

marr's weblog
marrtw
is about »

tag cloud

» Install Plone on Codio.com

This is a follow-up for Install Plone in under 5 minutes on Codio.com by David Bain, except Plone 4.3.3 standalone installation is used here.

Codio.com 提供線上開發環境,透過瀏覽器就能操作 Linux 系統,效能相當不錯。

臨時需要乾淨的開發或測試環境嗎? 可試看看 Codio 是否滿足需求。已知沒有 sudo 權限,透過 Box Parts 可以擴充程式語言、資料庫、函式庫等功能,例如 dropbox 就有支援,在持續改進的情況下,說不定教學環境也可採用它。

最簡單的測試方式,是建立一個 Empty Project 的範本。

再從 Tools 選單點選 Terminal 來打開命令介面。

想要安裝 Plone 4.3.3 環境? 在 Terminal 裡執行下列指令:

curl -L http://goo.gl/drKJp8 | bash

在 Project 選單點選 Box Info 可以查詢服務連線的資訊,存取網址的技巧,可參考 Non-Standard Port 的規則說明。或是查看 ChangeLog 了解最新版的支援狀況。

查詢 Package 狀況的範例:

$ parts search python                                                                                                               
apache2_mod_wsgi (3.4)
googleappengine (1.9.5)
jython (2.5.3)
pip (1.5.4-2)
pypy (2.2.1)
python2 (2.7.6-2)
python3 (3.4.1)
setuptools (2.2-2)
swig (2.0.11)
virtualenv (1.11.4-2)

十一月 28, 2013

marr's weblog
marrtw
is about »

tag cloud

» Sprint Like Mad

荷蘭 Arnhem 是 Four Digits 公司的所在地,它們舉辦了十一月 Plone Sprint,為期五天,共 35 人參與。

活動裡,有個 Don't Break The Build 規則,會場的大螢幕持續顯示 CI server 的狀態,如果爛掉了,會把爐主的名字秀出來,然後爐主要請其他人吃蛋糕。一週的 sprint 後,多數人都增加不少肥肉。

活動結束時,還有 Party 和 Award。決定 Sprint Award 的方法,是利用分貝計,看哪個隊伍的歡呼聲最大。

技術上的成果包括: New Theme for Plone 5, New Way to Work with JavaScript: Mockup (widgets), Remove Selected Portal Tools from Plone, Make main_template More HTML5 Friendly,更多記錄在 Day 1, Day 2, Day 3, Day 4, Wrapup

八月 19, 2013

marr's weblog
marrtw
is about »

tag cloud

» 2013 Summer Outing

第一次 Python 同好的夏季合宿,八月16日到18日,兩天兩夜在宜蘭,包棟的民宿可供 18 人住宿,場地提供 wifi 和簡易投影設備。

感謝老朋友、新朋友的參加,整體而言,活動滿意度自評 85 分以上,我已經開始期待下一次的活動了。

玩得盡興,是這次活動的最高原則,民宿附近的景點,包括羅東夜市、梅花湖、運動公園,鬆散的行程架構,親子組和散客應該都能自在享受。

下午到晚間是主要的聊天時段,大家除了交換日常工作和工具使用心得,也討論 Python 活動的未來規劃,可以天馬行空聊到深夜。

有了這次經驗,下次可考慮一天一夜的行程,大家參加的彈性應該更大,視天氣情況來搭配地點,例如天氣好的話,就選附有綠地的民宿,天氣冷的話,就選溫泉民宿。

七月 15, 2013

marr's weblog
marrtw
is about »

tag cloud

» Learning Path

這是十幾年前的事。小湯姆國小剛畢業,暑假空檔找了短期家教,想學怎樣架設 BBS 站。標準的學習內容和步驟大概是這些:首先,把 Linux 裝起來,學點 Shell 指令,再認識基本的 C 語言,從 Hello World 試起,不久,下載 Firebird 或 Maple,照著 README 編譯。

當年的小湯姆,現在已是技術高超的軟體好手。我常想,這些學習內容和步驟,很多部份現在還是適用,它們應該是程式人員學習路徑的一部份,依照成果標的,我們可以列出 skill set,由淺入深安排成教學項目,並整理項目之間的相依關係。

這種概念,應用在各種領域,幼兒學習數位學習應用軟體學習ShowMeDo 也有使用這方法。

畫成捷運圖,也是很棒的圖解法。

七月 5, 2013

marr's weblog
marrtw
is about »

tag cloud

» MapWarper on Ubuntu

Command list for installing mapwarper on Ubuntu 12.10. This hopefully provides better instruction.

$ sudo apt-get install python-software-properties software-properties-common
$ sudo apt-get install build-essential make
$ sudo apt-get install libxml2-dev libxslt1-dev
$ sudo apt-get install imagemagick git
$ sudo apt-add-repository ppa:ubuntugis/ppa
$ sudo apt-get update
$ sudo apt-get install gdal-bin
$ sudo apt-get install libgdal-ruby
$ sudo apt-get install libmapscript-ruby
$ sudo apt-get install postgresql-9.1-postgis
$ sudo apt-get install ruby1.8
$ sudo apt-get install ruby1.8-dev
$ sudo apt-get install libpq-dev
$ sudo apt-get install libcurl4-openssl-dev
$ sudo apt-get install apache2-threaded-dev

$ wget http://production.cf.rubygems.org/rubygems/rubygems-1.7.2.tgz
$ tar xvpzf rubygems-1.7.2.tgz
$ cd rubygems-1.7.2/
$ sudo ruby setup.rb
$ sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

$ sudo gem install rails -v=2.3.5
$ gem list
# if rake version is not 0.9.2.2 (usually higher), then reinstall rake
$ sudo gem uninstall rake
You have requested to uninstall the gem:
rake-10.0.4
rails-2.3.5 depends on [rake (>= 0.8.3)]
nokogiri-1.5.9 depends on [rake (>= 0.9)]
georuby-2.0.0 depends on [rake (>= 0)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn]
Remove executables:
rake
in addition to the gem? [Yn]
Removing rake
Successfully uninstalled rake-10.0.4

$ sudo gem install rake -v=0.9.2.2

$ sudo gem install yahoo-geoplanet -v=0.2.1
# previous successful with i18n-0.6.1, later successful with i18n-0.6.4

$ sudo gem install nokogiri -v=1.5.9
$ sudo gem install georuby -v=2.0.0

$ sudo gem install pg -v=0.15.1
Fetching: pg-0.15.1.gem (100%)
Building native extensions. This could take a while...
Successfully installed pg-0.15.1
1 gem installed
Installing ri documentation for pg-0.15.1...

Invalid output formatter

For help on options, try 'rdoc --help'

ERROR: While generating documentation for pg-0.15.1
... MESSAGE: exit
... RDOC args: --ri --op /usr/lib/ruby/gems/1.8/doc/pg-0.15.1/ri
-f fivefish -t pg: The Ruby Interface to PostgreSQL -m README.rdoc
lib Contributors.rdoc History.rdoc Manifest.txt README-OS_X.rdoc
README-Windows.rdoc README.ja.rdoc README.rdoc POSTGRES LICENSE
ext/gvl_wrappers.c ext/pg.c ext/pg_connection.c ext/pg_result.c
--title pg-0.15.1 Documentation --quiet

$ sudo gem install fastercsv -v=1.5.5
$ sudo gem install passenger -v=4.0.3
Fetching: daemon_controller-1.1.4.gem (100%)
Fetching: passenger-4.0.3.gem (100%)
Successfully installed daemon_controller-1.1.4
Successfully installed passenger-4.0.3
2 gems installed

$ sudo gem install oauth -v=0.4.7

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
$ sudo passenger-install-apache2-module
Welcome to the Phusion Passenger Apache 2 module installer, v4.0.3.

This installer will guide you through the entire installation process.
It shouldn't take more than 3 minutes in total.

Here's what you can expect from the installation process:

1. The Apache 2 module will be installed for you.
2. You'll learn how to configure Apache.
3. You'll learn how to deploy a Ruby on Rails application.

Don't worry if anything goes wrong. This installer will advise you
on how to solve any problems.

The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/ \
passenger-4.0.3/libout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.3
PassengerDefaultRuby /usr/bin/ruby1.8

After you restart Apache, you are ready to deploy any number of
Ruby on Rails applications on Apache, without any further
Ruby on Rails-specific configuration!

Deploying a Ruby on Rails application: an example

Suppose you have a Rails application in /somewhere.
Add a virtual host to your Apache configuration file and
set its DocumentRoot to /somewhere/public:


ServerName www.yourhost.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public

# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews



And that's it! You may also want to check the Users Guide for security
and optimization tips, troubleshooting and other useful information:

/usr/lib/ruby/gems/1.8/gems/passenger-4.0.3/doc/Users guide Apache.html


$ sudo vi /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/ \
passenger-4.0.3/libout/apache2/mod_passenger.so

$ sudo vi /etc/apache2/mods-available/passenger.conf
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.3
PassengerDefaultRuby /usr/bin/ruby1.8

$ sudo a2enmod passenger

$ sudo vi /etc/apache2/sites-available/warper.mysite.org

ServerName warper.mysite.org
RedirectMatch ^/$ http://warper.mysite.org/warper/
ProxyRequests off
ProxyPass /warper/ http://localhost:3000/

ProxyPassReverse /



$ sudo a2ensite warper.mysite.org
$ sudo service apache2 restart

$ wget http://home.gdal.org/fwtools/FWTools-linux-2.0.6.tar.gz
$ tar xvpzf FWTools-linux-2.0.6.tar.gz
$ cd FWTools-2.0.6/
$ ./install.sh
# so we have $HOME/FWTools-2.0.6/bin_safe/ for GDAL_PATH
# that will be used in development.rb or production.rb

$ sudo su - postgres
postgres$ createuser gis (the username running mapwarper)
Shall the new role be a superuser? (y/n) y
postgres$ createdb template_gis
postgres$ createlang plpgsql template_gis
postgres$ psql -f
/usr/share/postgresql/9.1/contrib/postgis-2.0/postgis.sql template_gis
postgres$ psql -f
/usr/share/postgresql/9.1/contrib/postgis-2.0/spatial_ref_sys.sql
template_gis
postgres$ createdb -T template_gis mysite_db
postgres$ exit

$ cd ~
$ git clone git://github.com/timwaters/mapwarper.git
$ cd mapwarper
$ mkdir public/mapimages
$ mkdir public/mapimages/src
$ mkdir public/mapimages/dst
$ mkdir public/mapimages/dst/png

$ vi config/environments/development.rb
# or production.rb copied from production.example
SITE_URL
SITE_EMAIL
GDAL_PATH

$ cp config/initializers/session_store.example config/initializers/session_store.rb
$ cp config/database.example config/database.yml
$ vi config/database.yml
development:
adapter: postgresql
database: mysite_db
username: marr
password: topsecret

$ rake db:migrate
# when user is created, no db, rake db:create can be used;
# however, we need postgis-based db

$ cd; screen
$ cd mapwarper/script
$ ./server
# Ctrl A + D to detach screen

六月 7, 2013

marr's weblog
marrtw
is about »

tag cloud

» Map Warper Configuration

The challenge is from bringing together old Ubuntu 10.10 and Rails with Geo libraries, especially GDAL, mapscript and mapserver.

update /etc/apt/sources.list source URL to old-releases.ubuntu.com and add deb http://ppa.launchpad.net/ubuntugis/ppa/ubuntu maverick main deb-src http://ppa.launchpad.net/ubuntugis/ppa/ubuntu maverick main

At http://code.mapwarper.net/wiki/DevServerConfig you will see instructions to install postgresql-8.3-postgis, but at http://code.mapwarper.net/wiki/InstallationOne says to install postgresql-8.4

My installation is postgresql-8.4

What is /var/lib/maps for? It is easy to run `sudo chgrp -R maps /var/lib/maps`, but I don't know why `mkdir /var/lib/maps` needed.

for Apache, don't know if Passenger and XSendFile are essential.

for PostGIS, it says postgis user, that I think it is typo for postgres user.

Make sure ruby1.8-dev is installed, or you will run into error "mkmf Not Found".

svnadmin init /var/local/svn --> sudo svnadmin create /var/local/svn

added sderle to group svn. --> sudo usermod -aG svn gis

imported r30 from http://svn2.geothings.net/warper/ to /warper --> not yet and don't know how

For Postgresql 8.4, lwpostgis.sql and spatial_ref_sys.sql files are changing their paths.

psql -f ... lwpostgis.sql --> psql -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql template_gis

psql -f ... spatial_ref_sys.sql --> psql -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql template_gis

At InstallationOne, it says template_gis, but at InstallationTwo, it says template_postgis.

Refer to Ubuntu Postgresql Manual, createuser sderle --> createuser -D -A -P gis

sudo apt-get install libgdal1-dev --> this helps to solve gdal-config not found issue.

ERROR: permission denied for relation geometry_columns

六月 4, 2013

marr's weblog
marrtw
is about »

tag cloud

» Diazo: Bridging Designers and Programmers

很高興能在 PyConTW 2013 介紹 Diazo 工具,可惜準備時間不夠,沒辦法把 Diazo 多樣應用的可能性呈現出來,只能先簡介它的機制和概念。我在投影片裡整理的範例,主要是參考 David Bain文件,這也是既有文件中最詳實的內容。

有聽眾問到 Diazo 是否有支援 HTML5,網路上確實有範例,這些進階技巧,期待有機會試出來跟大家分享。

附上投稿時的文字:

Diazo is a smart approach to theming a website. Diazo does its magic by building on top of XSLT and provides a set of basic rules. Even better is that an easy-to-use in-browser rich editor is coming for designers. Most modern webservers supporting for XSLT transformations also ease the deployment. In this talk, we will learn and demo how Diazo is working.
In general, designers work with static HTML while programmers work on codes and frameworks. Often, they hardly collaborate without bumping into each other.
Diazo eases the process of theming a website, by isolating users from having to understand how developers build websites with frameworks. Diazo does its magic by building on top of XSLT. Raw XSLT is too complex for everyday use, so Diazo provides a simple and user-friendly set of basic rules that get compiled into XSLT behind the scenes. Even better is that an easy-to-use in-browser rich editor is coming for designers to create themes without needing filesystem access or knowledge of Python. Most modern webservers already support for XSLT transformations, so deploying Diazo via WSGI, Ngnix, Varnish or Apache is simple and straightforward.

» PyLadies Reviewed

PyLadies 是怎樣的團體呢? 透過學習和互助,像是提供專業能力和職涯成長的活動,它致力協助更多女生成為 Python 社群的一份子。Python 社群本身有個多樣化原則鼓勵各式各樣使用者,依照自己最感興趣、最適合的方式,成為 Python 社群的一份子。

在三月間,PyCon 2013 舉辦義賣活動獲得一萬美金的資助,用來協助更多女生進入 IT 圈,或是參與 open source 活動,初期的想法是贊助女生去參加 DjangoCon。

PyLadies 的成員散佈全球,目前已成立十餘個 chapter,有個 starting kit 說明成立 chapter 的注意事項:

Nashville PyLadies
NYC PyLadies
PyLadies Austin
PyLadies DC
PyLadiesLA
PyladiesIndia
PyLadies Montréal
PyLadies PDX
PyLadies SF
PyLadies Stockholm
PyLadies Vienna

參考 Plone 基金會的範本,PyLadies 也公佈自己的 Code of Conduct 公約,要求社群朋友共同維護平等友善的交流環境

已經舉辦過的活動,包括 hackathon, ladies' night, workshop 等,網路上找得到許多影片記錄,包括 Selena Deckelmann 在 OSDC 的演講

男生可以參加 PyLadies 活動嗎? 這點由活動主辦人決定,常見的方式是以女生優先為主,已參加的女生可帶一個男生到場。如果 PyLadies 活動和 User Group 合辦,就更容易達到性別中立的效果。不管男生是否能夠到場,早點明確宣佈原則,對大家都有好處。

五月 28, 2013

marr's weblog
marrtw
is about »

tag cloud

» PyLadies Taiwan Bootstrapping

So many awesome things happen in the PyCon Taiwan 2013. One of my favorites is the discussion to build a PyLadies chapter. On Apr 29, I talk to imacat about Selena Deckelmann's OSDC speech, and ask if anyone is interested to make PyLadies Taiwan real. Finally we decide in the PyCon lightning talk session, announcing a PyLadies BoF, to call for participation. Things go well and there are 10+ ladies sign up for further discussion.

Photos by toomore

There's already a dedicated group for female engineers in Taiwan -- WoFOSS. Surely the PyLadies core team needs to figure out their vision and goals. With confidence, I see the picture becoming clear.

The following is the quote from the initial email:

對於 PyLadies,我至少有兩個初衷,一是女生朋友在資訊領域,本來就該有一半的發言權或影響力,二是 Python 能有效促成前面命題的落實。 軟體資訊包含了數理、心理、藝術等不同領域面向,理應適合女生朋友投入發展,但不平衡的現況,代表有些社會因素,壓抑了這個發展。 Python 鼓勵 diversity,拿掉不必要的門檻,是個值得長期投入的培力工具和環境。
我是男生,只會協助起個頭,不會限制 PyLadies 在台灣的發展方式,但,總期待有人願意來主導 PyLadies 的成長。

五月 27, 2013

marr's weblog
marrtw
is about »

tag cloud

» Quotes of The Day

  • 一杯清水因滴入一滴污水而變污濁,一杯污水卻不會因一滴清水的存在而變清澈。
  • 這世上有三樣東西是別人搶不走的:一是吃進胃裡的食物,二是藏在心中的夢想,三是讀進大腦的書。
  • 馬在鬆軟的土地上易失蹄,人在甜言蜜語中易摔跤。
  • 世界沒有悲劇和喜劇之分,如果你能從悲劇中走出來,那就是喜劇,如果你沉緬於喜劇之中,那它就是悲劇。
  • 如果不讀書,行萬里路也不過是個郵差。
  • 當你的鄰居在深夜兩點彈鋼琴時你別氣惱,你可以在四點鐘時叫醒他,並告訴他你很欣賞他的演奏。
  • 如果你只是等待,發生的事情只會是你變老了。
  • 真正的朋友不是在一起有聊不完的話,而是即使不說一句話也不覺得尷尬。
  • 時間是治療心靈創傷的大師,但絕不是解決問題的高手。
  • 寧願做過了後悔,也不要錯過了後悔。

四月 30, 2013

marr's weblog
marrtw
is about »

tag cloud

» Online Map Rectifying

New York Public Library Map Warper 提供地圖校正的線上服務,它將館藏的地圖,開放給使用者進行對應校正,成果就能搭配 Open Street Map 來顯示。

程式碼主體是 Ruby on Rails,在 Ubuntu 12.04 環境下,啟動前要安裝 cgi-mapserver,順利的話,連帶把 libgdal 裝好,想用 MySQL 的話,就執行 sudo apt-get install mysql-server mysql-common mysql-client libmysqlclient-dev。還有 curl 和 git,以及 libmagickcore-dev libmagickwand-dev。

身為 Rails 菜鳥,最簡單的安裝方式,當然還是 apt-get install ruby-rails,但這樣裝的版本會很舊,提示建議要先裝 nodejs (套件名稱不是 node 要小心) 和 RVM (Ruby Version Manager),在安裝 RVM 前,先確認 Ubuntu 已裝好下列套件:

$ sudo apt-get install build-essential libssl-dev libpcre3-dev libncurses5-dev libreadline6-dev。

執行 curl -L https://get.rvm.io | bash -s head --autolibs=3 --ruby 後,留意裝的 ruby 版本號碼,例如 2.0.0-p0 之類,如果不是自己想要的版本,就要再想法子更新。

按照訊息提示,執行 source /home/marr/.rvm/scripts/rvm 就可以使用了,終於可以 gem install rails 啦。

執行了 nypl-warper/script/server 後,出現訊息:

Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`,
update your RAILS_GEM_VERSION setting in config/environment.rb
for the Rails version you do have installed,
or comment out RAILS_GEM_VERSION to use the latest version installed.

此處的 `gem install -v=2.3.5 rails` 對我而言,像是繞路的陷阱,執行到 Fetching: rails-2.3.5.gem 時,遇到:

rails's executable "rails" conflicts with railties
Overwrite the executable? [yN]

選 N 的話,會結束安裝:

ERROR:  Error installing rails:
"rails" from rails conflicts with installed executable from railties

後來又遇到:

/home/marr/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/site_ruby/2.0.0/
rubygems/core_ext/kernel_require.rb:45:in `require':
cannot load such file -- iconv (LoadError)

為了把干擾降到最低,決定把 Ubuntu 原本裝的 ruby 相關套件都 apt-get purge 移除,刪掉 $HOME/.rvm 重裝 ruby 1.9.3 rails 2.3.5。

Rails 2.3.5 application starting on http://0.0.0.0:3000
/home/marr/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:
in `to_specs': Could not find oauth (>= 0.3.5) amongst
[actionmailer-2.3.5, actionpack-2.3.5, activerecord-2.3.5, activeresource-2.3.5,
activesupport-2.3.5, bundler-1.3.4, rack-1.0.1, rails-2.3.5, rake-10.0.4,
rubygems-bundler-1.1.1, rvm-1.11.3.6] (Gem::LoadError)

再 gem install oauth

Fetching: oauth-0.4.7.gem (100%)
Successfully installed oauth-0.4.7
1 gem installed
Installing ri documentation for oauth-0.4.7...
Installing RDoc documentation for oauth-0.4.7...

遇到 in `require': cannot load such file -- geo_ruby (LoadError) 使用 gem install geo_ruby 說「沒有 geo_ruby」,改用 gem install georuby 成功,遇到 in `require': cannot load such file -- pg (LoadError) 使用 apt-get install postgresql postgresql-contrib libpq-dev 和 gem install pg 成功。

接著是 invalid multibyte char (US-ASCII) (SyntaxError) 錯誤,在檔案前面加:

#!/bin/env ruby
# encoding: utf-8

至此,總算 ./server 跑起來了,新的訊息是:

The bundled mysql.rb driver has been removed from Rails 2.2.
Please install the mysql gem and try again: gem install mysql.
Status: 500 Internal Server Error
cannot load such file -- mysql

補了 sudo apt-get install libmysqlclient-dev 再 gem install mysql 應該是搞定了。

修改 config/database.yml 後,執行 rake db:migrate 遇到:

ERROR: 'rake/rdoctask' is obsolete and no longer supported.
Use 'rdoc/task' instead.

先修改 Rakefile 把 rake/rdoctask 換成 rdoc/task

再補 sudo apt-get install libgdal1-dev 雖然可以處理 gdal-config 找不到的問題,但 gem install gdal 還是出現 libgdal not found 問題。

遇到 Can not load gdal/gdal 改成 gdal 可過關。

找時間繼續...

四月 3, 2013

marr's weblog
marrtw
is about »

tag cloud

» 清代鳳山縣雙城古道

今天的演講提到清代鳳山縣舊城和新城之間,有條「雙城古道」,指的是由舊城東門開始,經東門路往東南方向,經凹子底,過愛河的七孔橋,再經過灣子內、寶珠溝、獅頭、赤山,從文衡路進入鳳山新城,先進外北門,再入新城的北門。

十七世紀荷蘭人繪製的地圖,就曾把愛河繪出,當時名稱是硫磺水,早年愛河沒橋,僅七孔橋作為來往新舊城間的要道,日據時代改成三孔,後歷經重建,今日則成為自由橋

左營舊城最早使用夯土牆,歷經林爽文事件而毀,遷建為鳳山新城,舊城在道光五年重建為石牆城,但縣署從未搬回,成為清末的大型蚊子館。臺灣通史有載:「臺灣民風強悍,一言不合,拔刀相向,聚眾挾官,視為常事。」當時的四任知縣,有三任死於亂事,誠民風強悍。

日治時期,以舊城扼守左營海港為由,強制遷走城內居民,例如昔日北門內街兩側都是大戶人家,後來國民政府拆除舊舍,改成眷村。可參考李仙得 (Charles Le Gendre) 的舊照片

三月 22, 2013

marr's weblog
marrtw
is about »

tag cloud

» Open Source Economy

Open Source Economy
image from: http://www.dance-tech.net/profiles/blogs/1462368:BlogPost:20665

「免費軟體該怎樣賺錢?」

這算是老掉牙的題目,而且,很多朋友都知道「免費」跟「自由/開放」是不同的。不過,很少人能夠生動入裡地解釋這件事。

推薦這個影片 (via http://www.facebook.com/dongpo.deng/posts/545777462133601) --
The Future of the Open Source Economy by Paul Ramsey at FOSS4G 2009

簡報檔在 http://blog.cleverelephant.ca/2009/10/foss4g-2009-keynote.html

Paul Ramsey 以「商場競爭」和「生態演化」進行比擬,說明軟體演化的過程,競爭的是開發者的注意力,沒人用的軟體,進入滅絕狀態,沒人維護的軟體,則是走向衰危之路。進一步地看,軟體安全性也是軟體品質演化的一部份,越多人測試更新的軟體,就越有機會改善安全性。

剛好,前陣子施振榮先生在「談王道與共創共生」提到 Linux,他認為 Linux 雖然參與者眾,但對消費者的價值無法體現,因為沒有標準,參與者無利可圖,造成創新和持續的力量不足。他認為,在 Google Android 創造價值生態後,這現象有所改善了。

有趣的是,二十年前,Microsoft 對開發者的影響力算是相當大,現在競爭可多了,十年前,將 open source 視為威脅、病毒,抵抗那麼久之後,Microsoft 默默地接受和 open source 和解的事實。那麼,十年後又會是怎樣的光景呢? 且讓我們繼續看下去。

» Why PyCon Taiwan

"First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack." -- George Carrette

在我的眼裡,程式員可以比擬很多種角色,是作家,演說家,是創作者,評論者,是魔術師,雕塑師,是江湖俠客,修練精道的智者。

走在前往程式員的修練之路,要有自知之明,不要妄自菲薄,更重要的是,去找尋那份程式員的快樂秘密

從團隊或產業的角度來看,我們還需要工程方法、框架工具、分工協作,達到現代軟體開發的規模與要求。軟體英雄可以號召起義,但我們知道,團隊協作的時代早已開始。

為了自己,還有下一代,我們真心期待,台灣的軟體產業能轉型,技術能茁壯,這份企盼,我們把它落實為 PyCon Taiwan,也就是說,Python 年會不只是個程式語言的同好會,它就該是轉型的促進器,技術交流的平台。

Python 語法,即使兩天沒學完,兩週的時間也一定足夠,但我們知道,語法的重要性,是不如心法的,獨自學習的收獲,遠不及交流切磋的豐富。我定位 PyCon 是欣賞 (認同?) Python Zen 的同好聚會,基於這樣的出發點,即使是 Java、Perl、Ruby、PHP 的朋友,也都是我們的目標族群,因為,追求編程之道,大家都走在這路上。

今年活動規模以超過 600 人為目標,邀請國外講者的過程,感受外國友人主動貢獻的熱忱。相信,關心軟體發展的朋友那麼多,今年的舞台那麼大,每位朋友的挺身貢獻,肯定能為台灣產業的蛻變,帶來一份力量,而上台分享則是最強有力的支持,現在就行動吧!

三月 19, 2013

marr's weblog
marrtw
is about »

tag cloud

» Python Beginner Resources

今天參加的聚會,討論到初學 Python 的建議和學習資源。

有中文的教學文件嗎? google 會有線索,不過,新的資源通常還是英文內容較多。除了靜態的文件外,推薦參加線上群組或實體聚會,分享交流的效果通常比自己獨自學習來得更好。這些群組都是講中文的:Google+ CommunityFacebook GroupGoogle GroupPyHUGTaipei.py

最傳統的語法文件是 http://docs.python.org/2.7/tutorial/index.html,如果啃來覺得乏味,可以考慮 a byte of pythonDive Into PythonLearn Python The Hard Way

影片式的教學資源,也越來越多。例子包括:ShowMeDohttp://learnerstv.com/Free-Computer-Science-Video-lectures-ltv163-Page1.htmhttp://www.udacity.com/http://codeacademy.com/Coursera.orgGoogle Python Class。也有人在維護文件列表

著重程式概念建立的遊戲式網站有:PythonChallengeCheckIO,利用圖解強化學習效果的 Online Python Tutor

少不了的工具是 cheatsheet 文件:http://overapi.com/python/。等到想要進階時,可以參考 The Hitchhiker's Guide to Python

Android 環境的資源:http://python-for-android.readthedocs.org/http://kivy.org/#home

Windows Azuer 環境的資源:Tutorial for Python Web Sites with Django

biggo.com.tw

A Django site.