:::

伸縮三節筷&旋轉二節筷使用心得

布丁布丁吃布丁

伸縮三節筷&旋轉二節筷使用心得

最近好像越來越流行自行攜帶環保筷了,週遭朋友幾乎都有一雙環保筷。雖然我在宿舍也有一雙從國中營養午餐用到現在的筷子湯匙組,但是因為體積過大不方便帶出門,因此我決定選擇可以縮短的二節甚至是三節環保筷。

以下就先從二節環保筷開始介紹吧。


旋轉二節環保筷

優點:

  • 塑膠材質
  • 可拆成二節,縮小體積
  • 結合後筷子牢固
  • 筷身設計佳,好夾又好掌握
  • 便宜,家樂福35元購得

缺點:

  • 不容易使用旋轉來接合二節筷身(理由後述)
  • 盒子質感不足

長13cm*寬4cm*高1.5cm,跟國父百元鈔比比看,大概可以佔了快一半的大小。

塑膠外殼與筷身,不重,我也沒有磅秤可以秤重。我喜歡塑膠的質感,相對的,總覺得金屬就是會有種味道,而且又冰又滑不是很好用的感覺。

如上圖所示,筷身是由兩節所構成,中間是以螺絲齒痕的方式連接。問題是齒痕跟另一邊的洞感覺容易囤積髒物,而且不好清理。注意到塑膠的筷身中間還是金屬材質,所以應該蠻牢靠的。

二節筷光靠單之手就可以結合了,但是這仍然有著相當嚴重的問題:手會碰到前半筷身。為什麼這是問題呢?吃飯的時候使用筷子,因此前半的筷身就會很油或是很黏。綜使在吃完之後我們會用衛生紙做簡單的清理,但是油膩的前半筷身依然是不太想去碰。更何況,要抓住前半筷身旋轉的接合或分離的時候,也會因為油膩的關係不好掌握。這是二節旋轉環保筷的致命缺點。

接著來看看筷子的其他部分。這是前半筷身的圓型尖頭,可以看到有刻痕幫助夾食物時較為牢靠,實際用起來也不錯。

後半筷身的尾端,是呈現方形的,以方便掌握筷子本體,手感很好。

因為目前這支二節筷不使用,就乾脆拿前半筷身來當作泡麥片粥的攪拌筷,長度略短,但比整個筷子長還好的多,也不算白買啦。

盒身是單面打開的形式,注意到下半部有擺置前半筷身的架子,讓筷子在收納之後不會因為晃動而滾來滾去發出聲音。

盒身雖然薄,但是面積龐大,對我來說不便攜帶,所以就沒有帶著走了。


伸縮三節環保筷

優點:

  • 體積更小,有質感
  • 伸縮較為方便
  • 拆裝清理容易

缺點:

長8.5cm*寬2.1cm*高1.15,佔了國父紙鈔1/4不到的面積,相當迷你。

先來看看盒身,上方的蓋子旁有鑰匙圈的吊勾,方便吊在包包上。中間有個不太明顯的凹痕,那是用來當筷子架時,筷子會集中在凹槽不容易跑掉的設計。另外,照片上的水漬是因為剛洗過的關係XD

來看看背面,除了凹痕沒有之外,基本上跟正面是一樣的。

蓋子打開的圖片,兩個金色的球狀的東西是筷子的尾端。

蓋子也是單方向開闔的形式,而且有凹槽方便打開,卡住時也蓋得很緊,筷子不會輕易掉落。盒身也跟筷子的尺寸吻合,放在裡面不會因為晃動發出聲音。但是這麼小的盒身要清理也不太容易。

拿出筷子,來看看筷身跟盒子的比例吧。

可以看到三節伸縮的原理,它是三節直徑不同的筷身。

把尾部的金球部份拆開,就可以把筷子拆成三節。注意到上面第二張圖片,這是依照拿出來的順序,所以最後一節的筷身擺在左下角,而第一節的尖端筷身擺在右上角,方向是左下方的。

第一節筷身前端也有刻痕,讓夾食物時比較穩固。

最後一節筷身也有刻痕,但是我覺得這對握筷子的手感幫助不大。而且因為伸縮構造的關係所以是圓的,我也不太喜歡。尾端則是上面提到的金球蓋子部份。

接著來看看他的伸縮。廣告台詞寫的「一甩即出」是真的,但甩出來卻還不能用,還要「順勢的把筷身往外拉一下」。他沒有內建彈簧,所以用甩出來的筷身,還是很容易縮回去。所以必須要抓著第一節筷身拉一下才比較穩固,然而,卻是單隻手無法做到的動作(因為左手要拍照,所以照片只有右手),而且拉過頭的話筷身還會被拉出來。

伸縮三節筷也有跟二節筷一樣的問題:要用手去碰油膩的第一節筷身,就是一種不方便!更何況是當吃飯吃到一半,筷子不小心戳太用力而縮回去,那要再拉出來簡直是一種痛苦且不雅觀的動作。

這是收回去的方式,第一節筷子朝著盒內,用力一插就進去了,也不會弄髒手,我很喜歡。

而且因為攜帶體積小,所以目前是帶著這一組在外面跑。

最後拿這兩組筷子的比較圖來看看,可以看到二節筷比三節筷還要長,實際用起來的時候其實感覺差異不大就是。


結語

在這邊我不講什麼環保概念,主要是厭煩了劣質竹筷容易刺到手、以及怕竹筷會有漂白水不乾淨的問題,所以才想弄個環保筷來用用。

實際上這兩組用起來並不是非常滿意,伸縮三節筷也只能說是堪用的程度。

使用完畢之後,會拿衛生紙擦拭再回收,然而是沒辦法完全清理筷子,筷身依然會油油的。這造成了第二次就不想拿出筷子來使用的問題,因為要拿著油膩的筷身往外拉,覺得不是很舒服。就算是包著衛生紙往外拉,也會怕衛生紙黏到筷子上面,待會一起吃進去。

雖然有點吹毛求疵的感覺,不過在意這些小細節,才能夠設計出好用的產品,繼續努力吧。

(more...)

DSpace系統安裝及設定指南

布丁布丁吃布丁

2 Comments

DSpace系統安裝及設定指南

邱偉嘉
政大圖檔所百年圖書館數位典藏計畫的系統開發維護小組
(2008/1/14)

此文件內容由政大圖檔所百年圖書館數位典藏計畫的系統開發維護小組撰寫,內容包含DSpace所有需具備的環境、安裝程序、後續維護及系統開發建議。



一、管理及開發人員

DSpace網站管理人員需要基礎的linux操作技能,如果你已經具備UNIX-like OS的管理經驗更好。系統開發人員需要具備Java/Jsp/Tomcat/PostgreSQL(or other database)基礎知識,如果你已經具備OOP (Object-oriented programming)、MVC (Model-View-Controller,模型-視圖-控制器模式)、ORM (Object-Relational mapping)的知識更好。

二、DSpace安裝及設定

安裝環境需求

DSpace在UNIX-like OS上有比較好的支援度,也比較穩定,以下將以Step by step的方式說明關於DSpace的安裝及設定。DSpace安裝的環境需求包括:

  • UNIX-like OS (CentOS, RHEL, SUSE etc)
  • Java 1.4 或者更新的版本(SDK即可不需要J2EE)
  • Apache Ant 1.6.2或者更新的版本
  • PostgreSQL 7.3 或Oracle 9或者更新的版本
  • Jakarta Tomcat 4.x/5.x 或者其他類似的Jsp server像是Jetty或Caucho Resin

CentOS

在UNIX-like OS中,我們有很多的選擇,包CentOS (Community ENTerprise Operating System)、RHEL (Red Hat Enterprise Linux)、SUSE等,其中RHEL是需付費的企業用linux發行版,是受到肯定最穩定的distribution,而CentOS是Linux發行版之一,它是來自於Red Hat Enterprise Linux依照開放原始碼規定釋出的原始碼所編譯而成。由於出自同樣的原始碼,因此有些要求高度穩定性的伺服器以CentOS替代商業版的Red Hat Enterprise Linux使用 (維基百科, 2007)。兩者的不同,在於CentOS並不包含封閉原始碼軟體,也沒有Red Hat公司的服務,但是CentOS是不需要付費的。通常伺服器的RAID (Redundant Array of Independent Disks,磁碟陣列)都受到RHEL/CentOS的支援,而在我們的例子中支援RAID是必須的,以提高伺服器的安全機制,所以最終我們選擇CentOS作為我們的OS。

CentOS安裝說明

在下面幾個地方可以下載到安裝ISO檔。

到BIOS設定「使用光碟開機(Boot from CD-ROM)」,將光碟放入並且重新啟動電腦,即可進入安裝畫面,按照電腦的指示一步一步完成安裝。需要注意的是如果你也想要使用RAID來安裝你的伺服器,你必須選擇你的伺服器支援RAID的RHEL/CentOS版本,過高或過低都不行,否則可能會有驅動程式無法支援的問題。如果你需要更詳細的說明請參照 http://apt.nc.hcc.edu.tw/web/student_server_centos/student_server_centos.html

Java安裝

安裝完CentOS之後,一般都已經內建Java SDK,如果你想要升級你的Java到更新的版本,你可以透過CentOS帶的Yum指令來升級,指令如下。

yum update java

關於Yum指令更詳細的說明請參照http://linux.vbird.org/linux_server/0220upgrade.php#yum

你可以通過Java -version指令來檢查你的Java版本以及是否安裝成功。

Apache Ant

Ant是一套方便Java佈署應用程式的軟體,而DSpace便是採用Ant來佈署,這樣你就不必自己手動安裝佈署DSpace。

Apache Ant安裝及設定

  1. 你可以在http://ant.apache.org/下載到最新的binary版本。一般我們會將下載回來的檔案解壓縮至/opt。
  2. 設置環境變數。指令如下

    vim /etc/profile

    加入以下設定(請注意版本與路徑要以你的設定為主)

    ANT_HOME=/opt/apache-ant-1.7.0
    JAVA_HOME=/usr/java/jdk1.6.0_02
    PATH要加入$ANT_HOME/bin。

  3. 你可以通過ant -version指令來檢查你的ant版本以及是否安裝成功。
    更詳細的Ant安裝及使用說明可以參照http://ant.apache.org/

PostgreSQL

DSpace支援的資料庫有PostgreSQL及Oracle,而Oracle是需要付費的資料庫,PostgreSQL則不用,所以我們採用PostgreSQL作為DSpace的支援資料庫。

PostgreSQL安裝

CentOS已經內建PostgreSQL。如果你想要升級你的PostgreSQL到更新的版本,你可以透過CentOS帶的Yum指令來升級,指令如下。

yum update postgresql

PostgreSQL設定

安裝完PostgreSQL之後我們還需要做一些基本設定,才能夠讓DSpace使用PostgreSQL。

開啟PostgreSQL的TCP/IP的連線,編輯postgresql.conf通常會放在 (/var/lib/pgsql/data或者/usr/local/pgsql/data) Linux操作如下。

vim postgresql.conf
加入tcpip_socket = true
加入listen_addresses = 'localhost' #限定只能localhost連線
vim pg_hba.conf
加入host dspace dspace 127.0.0.1 255.255.255.255 md5

如果你想要開放所有的對外連線來查看你的資料庫(ex. pgAdmin),則你修改的內容必須更改為

vim postgresql.conf
加入tcpip_socket = true
加入listen_addresses = '*' #限定任何IP皆可連線
vim pg_hba.conf
加入host dspace dspace 127.0.0.1 0.0.0.0 md5

(注意,開放所有對外連線是不安全的,你必須明確的了解你做什麼事情。)

最後重新啟動PostgreSQL。

Tomcat

Java/Jsp有很多的伺服器選擇,其中Tomcat是最多人使用的伺服器,且將來若考慮到與Apache(在linux中穩定性最高的網頁伺服器)結合也有比較好的支援度。所以我們採以Tomcat作為我們的Java/Jsp伺服器。

Tomcat安裝

你可以在http://jakarta.apache.org/下載最新的Tomcat development版本,將它放到/opt底下,用tar解開。

tar zxvf apache-tomcat-deployer-6.0.13.tar.gz

執行後會安裝到/opt/apache-tomcat-6.0.13。一樣我們還要設置環境變數。

vim /etc/profile

加入

CATALINA_HOME=/opt/apache-tomcat-6.0.13
CLASSPATH=$CATALINA_HOME/common/lib/servlet-api.jar

將Java加入PATH路徑

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ANT_HOME/bin

export變數

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC JAVA_HOME ANT_HOME CATALINA_HOME

設定以utf-8來啟動Tomcat,加入

JAVA_OPTS="-Xmx512M -Xms64M -Dfile.encoding=UTF-8"

編輯[tomcat]/ config/server.xml ([tomcat]是你tomcat的安裝路徑)

vim [tomcat]/ config/server.xml

在下面類似的位置加入URIEncoding="UTF-8"

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8" />

執行下面程式碼,來重新啟動Tomcat。

[tomcat]/bin/stratup.sh

DSpace快速安裝

前置作業及設定

  1. 在CentOS建立DSpace的帳號

    useradd -m dspace

  2. http://www.dspace.org/下載最新的DSpace source code(本計劃是使用DSpace 1.41版本),放在/opt,並解壓縮。

    gunzip -c dspace-source-1.x.tar.gz | tar -xf -

  3. 複製PostgreSQL JDBC driver (.jar file)到[DSpace-source]/lib,你可以在/usr/share/java/postgresql-jdbc2.jar找到,或者到PostgreSQL JDBC site下載你支援你PostgreSQL版本的JDBC2。
    1. JDBC:Java Database Connectivity,Java資料庫連接,請參考Wikipedia http://zh.wikipedia.org/w/index.php?title=JDBC&variant=zh-tw
    2. [DSpace-source]:你的DSpace原始安裝檔的位置
  4. 建立DSpace在PostgreSQL的帳號:

    createuser -U postgres -W -d -S -P dspace

  5. 建立一個名為DSpace的database:

    createdb -U dspace -E UNICODE dspace

  6. 然後輸入你要設定的密碼
  7. 編輯[DSpace-source]/config/dspace.cfg:

    vim [DSpace-source]/config/dspace.cfg

    下面是你會用到的欄位

    • dspace.dir -- must be set to the [DSpace] (installation) directory.
    • dspace.url -- complete URL of this server's DSpace home page.
    • dspace.hostname -- fully-qualified domain name of web server.
    • dspace.name -- "Proper" name of your server, e.g., "My Digital Library".
    • db.password -- the database password you entered in the previous step.
    • mail.server -- fully-qualified domain name of your outgoing mail server.
    • mail.from.address -- the "From:" address to put on email sent by DSpace.
    • feedback.recipient -- mailbox for feedback mail.
    • mail.admin -- mailbox for DSpace site administrator.
    • alert.recipient -- mailbox for server errors/alerts (not essential but very useful!)

使用Ant來佈署你的DSpace

  1. 在跟(root)目錄建立一個DSpace目錄

    cd /
    mkdir dspace

    (/dspace這個安裝路徑以下以[DSpace]取代)
  2. 變更DSpace目錄的擁有者(chown是改變擁有者的指令):

    chown dspace dspace

  3. 編譯並且安裝DSpace:

    cd [DSpace-source]
    ant fresh_install

  4. 複製DSpace Web application archives (.war files)到你的Tomcat目錄。

    cp [DSpace-source]/build/*.war [tomcat]/webapps

  5. 建立administrator(管理者)帳號:

    [DSpace]/bin/create-administrator

  6. 重新啟動Tomcat。透過URL檢查你安裝是否成功

    http://[伺服器的IP]:8080/dspace (8080 port是tomcat預設連接埠)

如果能夠看到DSpace初始畫面,恭喜你已經安裝成功,若否,請檢查你是否有遺漏的設定,或者聯絡:chiu.wei.jia@gmail.com

三、進階系統設定

在安裝DSpace之後你可能還會需要一些設定讓你的管理工作更輕鬆,以下介紹幾個簡單的功能。

cron-建立週期性自動執行指令

在linux上我們可以使用crontab指令來編輯我們所需要的例行性工作。以下是我們所建議的設定,你可以依據你的需求來建立屬於你的DSpace例行性任務。使用方法如下:

crontab -e

加入以下設定

# Run the media filter at 02:00 every day
0 2 * * * [DSpace]/bin/filter-media

你可以依照你的需求增加與修改,更多個功能情可以查看http://zh.wikipedia.org/w/index.php?title=JDBC&variant=zh-tw

開機時自動啟動服務

如果你想要開機就啟動一些功能(ex: Tomcat伺服器),那你可以修改/etc/rc.d/rc.local檔:

vim /etc/rc.d/rc.local

加入以下設定

#啟動tomcat
/opt/apache-tomcat-6.0.13/bin/startup.sh

備份

如果你想要讓DSpace可以有自動備份的機制,你可以寫一個shell檔(.sh file)裡面寫著備份的程式碼,然後再以先前介紹的方法加入周期性執行。Shell程式碼如下:

dt=`date +%Y%m%d`
mkdir /home/backup/dspace/$dt
chmod 755 /home/backup/*

#備份/DSpace
tar -zcvf /home/backup/dspace/$dt/dspace.tar.gz /dspace

#備份source code
tar -zcvf /home/backup/dspace/$dt/dspace-1.4.1-source.tar.gz /opt/dspace-1.4.1-source

#備份DSpace資料庫
pg_dump dspace > /home/backup/dspace/$dt/dspace_sql.backup

四、總結

上面所介紹的安裝及進階功能都可以依照你自己的需求及情況作調整,無需照抄。若有不明白的部分可以連絡我們。

五、參考資料與網站

(more...)

DSpace中文化專用utf-8轉碼程式

布丁布丁吃布丁

DSpace中文化專用utf-8轉碼程式

要轉換的文字


已經轉換的UTF碼

備註:

  • 英文字及標點符號不會轉換而直接輸出,以免造成DSpace讀取錯誤
  • 轉換方法是前置詞「\u」與uft-8碼的16進位組合而成
  • 如果有「\」會造成錯誤!
(more...)

DSpace的PostgreSQL資料庫架構與操作

布丁布丁吃布丁

DSpace的PostgreSQL資料庫架構與操作

前言

PostgreSQL是個專業但卻免費開放原始碼的資料,選擇他做為DSpace的資料庫是很穩定的。即使由於它過於複雜的架構讓我們沒辦法把它像MySQL這樣地簡單操作,在本文件當中我們依然要求你具備關聯式資料庫的概念,並且熟知SQL語法的操作。特別是SQL語法,這是所有資料庫的共通語言,所以一定要知道。
PostgreSQL有pdAdmin III資料庫管理介面可供使用,GUI圖形化且中文的操作介面也容易使用。但是在DSpace裡面操作資料庫的時候,除了要知道怎麼看JAVA程式來操作物件,還會使用到SQL指令。看完本文件,希望讓你對於操作PostgreSQL有個概念。

第一章 PostgreSQL簡介

PostgreSQL 是由散佈在全球的數百名開發者(包含非營利組織團體,學術研究機構及國際企業體)志願貢獻與共同開發的專案成果,歷今22年來持續發展。長久以來被用於要 求極端嚴謹的商業應用/科學研究環境及政府組織中。PostgreSQL 為 BSD 版權協議發佈,允許您在商業或非商業應用的兩種環境下均能享有自由取得且不受限制的使用權。PostgreSQL 具有高度擴展性,且完整遵從國際 ISO-SQL 規範的開發方向,是當前全球最先進的開放源始碼(OSS)的物件關聯型資料庫管理系統(ORDBMS)。更詳細的介紹可以參考PostgreSQL ::國際中文社群網誌:: http://postgresql-chinese.blogspot.com/

PostgreSQL與其他資料庫類似,使用SQL語言來執行資料的查詢。它的特色在於資料庫的可程式性,對於使用資料庫資料的實際應用,PostgreSQL 讓開發與使用的工作,變得更加容易。

我們在建構DSpace的過程中,只需要透過DSpace的API來操控資料庫,你只需要擁有操控SQL語言的能力即可,不需要深入研究PostgreSQL的功能。由於它的架構十分複雜,我們不建議用SQL或pgAdmin手動新增、刪除或修改資料庫的任何資料或架構,請盡量使用DSpace設計好的物件(object)中的方法(method)來執行。

第二章 PostgreSQL安裝

有些Linux發行版已經內建PostgreSQL,在DSpace的建立過程中,我們使用的CentOS作業系統已經內建,因此我們不需要另外安裝。

如果你想要開放所有的對外連線來查看你的資料庫(ex. pgAdmin),則你需要編輯postgresql.conf (通常會放在/var/lib/pgsql/data或者/usr/local/pgsql/data),並且在Linux之中修改為:

vim postgresql.conf
加入tcpip_socket = true
加入listen_addresses = '*' #限定任何IP皆可連線
vim pg_hba.conf
加入host dspace dspace 127.0.0.1 0.0.0.0 md5

(注意,開放所有對外連線是不安全的,你必須明確的了解你做什麼事情。)

第三章 DSpace資料庫架構說明

透過pgAdmin III可以看到DSpace整個架構。pgAdmin III詳細的操作方法在稍後章節會提到。

以下是DSpace在安裝的過程中會自動建立的表格架構,由於PostgreSQL本身架構太過複雜,與其撰寫把完整的資料庫架構細節寫上來,不如請直接參考輸出的備份檔。在此我將各表格與各欄位的用處及注意事項寫下來,未確認的表格與欄位,註釋則是空白。灰色背景表示是表格名稱與註釋,白色背景表示是該表格底下的欄位名稱與註釋。

第四章 透過pgAdmin操作資料庫

第一節 pdAdmin簡介

pgAdmin III是一個針對PostgreSQL的通用並且具有豐富特性的開放源碼管理和開發工具,可以用在Linux、FreeBSD、Solaris、Mac OSX和Windows平臺上管理運行於任何平臺的PostgreSQL 7.3以及更高級的版本,也包括商業版本例如EnterpriseDB、Mammoth PostgreSQL、Bizgres 和 Greenplum database。詳細網址是http://www.pgadmin.org/index.php?lang=zh_CN,目前最新的版本是pgAdmin III 1.8.1版本(2008年1月23日),適用於Windows平台的pgAdmin III下載位置在http://www.pgadmin.org/download/windows.php,左方可以選擇其他的平台。

第二節 新伺服器登錄

安裝完pgAdminIII並開啟之後,首先你要做的便是將DSpace的連線資料登錄,以便之後的連線。欄位的填寫資料可以參考上圖,但要確定你的PostgreSQL是否有開啟TCP/IP連線,並且允許任何IP連線管理。

第三節 pgAdminIII操作環境簡介

PostgreSQL是有嚴謹架構的資料庫,而pdAdminIII也提供了相當完整且複雜的功能。在此我僅介紹管理DSpace時可能會使用的操作部分。

查詢資料庫中的資料表

如上圖的路徑中,可以找到DSpace所有的資料表。

查詢資料表當中的欄位

資料表可繼續往下打開,即可看到該資料表的所有欄位資料。

查詢資料表當中的資料列

資料表按右鍵,選擇「檢視資料」,當中有

  • 「檢視頂部100筆資料列」:最前面100筆資料的意
  • 「檢視全部資料列」:注意,檢視的資料量過大將會導致伺服器負荷過大,不建議開啟此項
  • 「檢視已篩選資料列」:以where的條件來篩選資料。但也要注意是否篩選結果資料量會過大的問題

直接輸入SQL指令

點選主視窗的SQL查詢工具,可使用此工具快速測試你的SQL語法。如上圖所示,上方是輸入SQL的地方,下方則是輸出的結果處,但不能像「檢視資料」這樣直接修改。除了select查詢之外,你也可以使用update、delete等其他指令,而下方結果輸出處會顯示有幾筆欄位受到影響。

第五章 透過DSpace的API來操作資料庫

DSpace大部分的物件使用方式,你都可以在原始安裝檔的src目錄下找到。其中src/org/dspace/content目錄裡面皆擺放著常用的物件及方法,例如你要操作item的話,那麼可以查詢src/org/dspace/content/Item.java。當然,要記得在文件開頭import檔案。

詳細的物件使用方法我想再另外一個Dspace操作手冊裡面說明,在此就省略。

然而,Dspace提供的物件並不能滿足設計所需,有時候我們仍需要以純粹的SQL語法來進行查詢。src/org/dspace/storage/rdbms中的DatabaseManager.java、TableRow.java跟TableRowIterator.java裡面的物件可以幫助你這樣做。以下詳細說明這些物件的操作方式。

  1. 必須在開頭輸入需要的檔案路徑。在JAVA跟JSP的輸入方法不同,看你要在哪邊操作資料庫。
    JAVA:
    import org.dspace.storage.rdbms.DatabaseManager;
    import org.dspace.storage.rdbms.TableRow;
    import org.dspace.storage.rdbms.TableRowIterator;
    JSP:
    <%@ page import="org.dspace.storage.rdbms.DatabaseManager" %>
    <%@ page import="org.dspace.storage.rdbms.TableRow" %>
    <%@ page import="org.dspace.storage.rdbms.TableRowIterator" %>
  2. Context context = new Context(); //context是DSpace定義的情境,如果你之前的文件裡面沒有context的話,那麼請用此方法建立一個空的context。當然,要記得在開頭import檔案。

  3. TableRow row = DatabaseManager.querySingle(context, "select * from collection"); //querySingle第二個參數是sql語法

  4. String temp = row.getStringColumn("name"); //這樣就能取得第一列的name欄位的值。再執行一次則是取得下一列,依此類推。

DatabaseManager.java中的操作方法有很多種,除了查詢之外也有刪除(delete)、更新(update),也有搜尋或新增等方法,相當地實用,請務必好好讀過一遍。

第六章 透過JDBC連接操作資料庫

JAVA程式語言本身也有提供連接資料庫的應用介面,Java Database Connectivity,簡稱JDBC。開始之前必須再次,DSpace的API具有錯誤回報與紀錄log的功能,而且似乎較不會使系統出現問題,建議不要使用原始的JDBC進行連線。由於早期尚未熟悉DSpace的API前,我先使用了JDBC的方式,導致現在系統時常因為資料庫連線而無法回應,並不是好事。

要使用的JDBC API包裝在java.sql(之後的延伸版本則是擺在javax.sql)之中,因此在使用之前必須要import這個檔案:

JAVA:

import java.sql.*

JSP:

<%@ page import="java.sql.*" %>

接著是與資料庫進行連線。注意以下來自於ConfigurationManager的三個參數,個別代表著資料庫位置、帳號及密碼,這是使用Dspace內建的ConfigurationManger來取得與Dspace同樣設定的方法。當然,要記得import:

Class.forName("org.postgresql.Driver").newInstance();
String db_url = ConfigurationManager.getProperty("db.url");
String db_user= ConfigurationManager.getProperty("db.username");
String db_password= ConfigurationManager.getProperty("db.password");
Connection conn= DriverManager.getConnection(db_url,db_user,db_password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

接著便可以對stmt輸入sql、傳回查詢結果,並且取出。以下是範例,請注意到sql跟rs的類型宣告:

String sql="SELECT * FROM item LIMIT 10 OFFSET 0";
//修改這邊的SQL語法!
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {
%><br />
欄位1: <%=rs.getString(1)%>/
欄位2: <%=rs.getString(2)%>/
欄位3: <%=rs.getString(3)%>/
欄位4: <%=rs.getString(4)%>/
<%
}

在while迴圈中,你可以注意到取出rs資料的方法是用getString,而且參數是從1開始而非常見的0。

(more...)

考試懶得做弊

布丁布丁吃布丁

考試懶得做弊

「考試不做畢業,明年當學弟」、「寧願沒人格,不可不及格」這幾句話大家耳熟能詳,考試課業壓力重,看看雙修的學弟妹隨隨便便都在挑戰一學期修30學分,那麼讀書讀不完是家常便飯的事情。

不知道是不是我在文學院的關係,總覺得身邊很少看到作弊的情景,但是偶爾還是會聽到某個同學這次作了弊,作了小抄什麼的事情,不管再怎樣都要臨時抱佛腳(?)一下。

看著他們作弊的事蹟,我就會覺得,他們真拼。

以前看過一部日本電影,叫做「史上最大作弊戰爭」(原來是安室奈美惠的電影處女作),裡面用了各種手法來作弊,甚至看起來比背整晚講義還認真的多。

如果是我的話:「讀多少就寫多少就好啦。」說好聽一點叫做坦然接受自己的能力上限,說難聽一點就是沒讀到什麼書也不想做弊,已經連掙扎也都不想做了。這麼沒有鬥志的想法,真不知道是好事還是壞事?


20080130補充:不作弊的結果

難得考這種分數,紀念一下

(more...)

Zoundry Raven 0.8.185 Alpha發佈,但問題還在

布丁布丁吃布丁

Zoundry Raven 0.8.185 Alpha發佈,但問題還在

就如之前的介紹中所說的,Zoundry Raven是個不錯的部落格離線寫作軟體。官方的討論區在2008年1月22日公佈了Alpha測試版的0.8.185,但我遇到的問題似乎還是無法解決。因此我想趁這個機會把遇到的問題記錄一下,看未來是否能夠改善。

過長的開啟時間

Zoundry Raven開啟時似乎要載入相當多的程式,特別是載入zoundry.blogapp.service.mediastorage時異常地久,而且還非常吃CPU跟記憶體資源(請見上圖),這中途我連打字都會停頓很久,電腦大概會停頓在此狀態三分鐘左右。

平行線仍然不能使用

我不太能懂為什麼這個看起來應該在裝入這個所見即得編輯器之後就能夠使用的功能,到現在還是不能使用。讓我得到XHTML編輯模式下自己輸入<hr />,感覺真奇怪。

Template Manager仍無法完全解析我的部落格樣板

我得先承認這是因為我在樣板裡面使用了一些非Blogger標準規定的JavaScript,但一般在瀏覽器開啟的時候不會發生錯誤,卻在Zoundry Raven裡面就一直顯示錯誤訊息,這還真讓我頭大。

因為沒有時間去研究怎樣修改我樣板中的JavaScript才能夠適應到Zoundry Raven裡面,所以只好繼續等待有朝一日它能夠解析成功吧。

強行修改XHTML原始碼

所見即得編輯器強行修改原始碼不是第一天見到,但是只要模式切換他就立刻修改,逼的我得發佈之後在自行到Blogger上修改內文,就還是第一次看到了。

特別麻煩的是,插入的縮圖前後一定要加<p>標籤,不然縮圖馬上變成失效的程式碼,這真是頭大。

首次Publish(發佈)一定會失敗

這次的版本有改善,但第一次發佈仍然失敗。上傳圖片到一半,就跳出了上面的錯誤訊息。雖然看起來像是int()的錯誤,但我也無從著手修正,只能期待作者改進吧。

諷刺的是,雖然失敗了,但我的Blog裡面卻出現了該篇文章,所以還有下面這個問題。

無法偵測發佈錯誤的文章

注意到上圖,我的Blog出現了發佈錯誤的文章,但是Zoundry Raven卻沒有偵測到。也就是說,當我發佈第二次而且順利發佈成功之後,我的Blog上便會出現兩篇文章,讓我得手動刪去發佈錯誤的首篇。這動作讓我覺得我還蠻蠢的,你說呢?

這是發佈之後的比較圖,最新文章莫名其妙地重複發佈,真是麻煩啊。有人可能會說,為什麼不要僅發佈第一篇錯誤的就好?因為我常常在做發佈後修改的動作,也就是說幾乎都會做第二次發佈,演變成兩篇新舊發佈文章的情況難以避免啊。


如果能改善上述的缺點的話,我想我一定更喜歡Zoundry Raven吧。不然換到可以用WLW的環境,我應該還是會繼續用WLW才是。

(more...)

青春譜新店唱歌記行

布丁布丁吃布丁

青春譜新店唱歌記行

青春譜日文卡拉OK歡唱天地自2007年年中遷店之後,這是我第一次到新店的位置光顧。新店內部明顯地花了大筆銀兩裝潢,但是外面卻連招牌都沒有,讓我朋友看著門牌找了好一陣子。

新店分成大廳與四間包廂,但目前只開放15人包廂一間。入門右手邊是店長小六的櫃檯,進去之後映入眼簾的便是長方形開放式的大廳。再往裡面走進走廊,轉角處是15人包廂入口,走廊再進去則是廁所。整個店的感覺不太大,而且卡拉OK陰暗的氣氛也有點壓迫感,我們還自己開玩笑地說:「趕快確認逃生出口!」

我們這次訂位的是15人包廂,ㄇ字型的沙發圍繞著兩個長方形桌子併起來的大桌子,前方還有不小的舞臺空間可供表演,旁邊也有廁所。雖說是15人包廂,我認為10人左右應該是比較合宜的人數,應該比好樂迪的包廂還要大,加上折價卷大家攤一攤的價格也還算可以接受。包廂內的運作方式跟一般的KTV一樣,由我們自己操作遙控器點歌,所以像是卡歌、調key什麼的,都相當地自由。

有趣的是,不知道是不是在這些店唱久了的習慣使然,我們點歌一樣是一個一個輪流點,唱完一輪再點下一輪。許多人(包括我)事先都有準備歌單,點歌的時候也不會出現像其他在KTV時翻歌本翻老半天的情況。不過那時候來的人只有7人,每個人都唱了超過10首歌,唱到最後連歌單都沒了,大家開始翻歌本找要唱的歌。

新店採用了新的cyber DAM G50機種,可以開啟此網頁查詢歌單,機種選擇cyber DAM G50。目前青春譜的網頁上公告是更新到2007年3月,雖然跟現在差了快一年,但還是有許多讓人喜愛的經典歌曲可點。日本流行的JPOP就不說了,JAM Project的歌曲、I've(KOTOKO川田まみ島みやえい子等)的歌曲、近期的動畫、甚至連倫Game的歌也有,真讓人目不暇給、難以抉擇。

因為沒有很多時間練歌的關係,所以這次都是練唱舊歌。看到社團朋友們的歡樂表演、精湛的唱功,真的是相當地感動。雖然一學期大概只有一次的時間能跟大家一起唱歌,我還是相當地珍惜、把握,並期待下次地聚會。

(more...)

校內公車刷悠遊卡的話會怎樣?

布丁布丁吃布丁

校內公車刷悠遊卡的話會怎樣?

政治大學因為校區內有山坡,雖然大部分的學院跟女生宿舍都在山下,但是也有少部分的學院跟男生宿舍在山上,其中我所在的圖檔所就是在山腰的文學院,而宿舍則是山頂上。

因此政大校內設有公車,分成學生乘坐的普通公車跟教職員專用的綠色小型公車。普通公車就跟外面街道在跑的沒什麼兩樣,應該也是定期改換跑政大校內的班次。校內公車只需要投一塊錢便可搭乘,所以學生常常會保留一元錢幣在身上,不過有時候沒帶錢不投好像也不會有人介意。

在台北公車上一定會有的東西,就是上圖的那個悠遊卡感應器。搭了一個學期的公車,我一直很好奇那個感應器有沒有作用。每次上車的時候,別人都只有投錢,沒人刷悠遊卡。問了其他同學,大家似乎也都是跟著別人做,沒嘗試去刷過。

如果能用悠遊卡刷一塊錢的話,那不是很方便嗎?不用再找零錢了耶。可是大家都不刷,代表刷了要不是非一塊錢,就是沒有效果。

昨晚搭車上山時,車內人少,司機在旁邊跟乘客聊天,我就拿出悠遊卡來刷刷看。「嗶嗶!」學生票的聲音,而且螢幕上面也顯示著「學生 12元」的訊息。

「唉呀!你怎麼刷悠遊卡呢?」司機驚訝地轉過頭看著我說:「你這樣讓我賺了五毛錢耶。」聽到這句話,我笑了出來。司機補充說道:「按下這個『查詢』可以抵掉你剛剛刷的12元喔?要不要按啊。」我想了想,自己很多次都是沒帶錢就坐霸王車,那這次補刷了12塊應該算補足前面的缺額吧,所以就跟司機說沒關係。

事後想想,我應該對司機跟乘客們,用很帥的語氣說「沒關係,那這些錢就當作請接下來坐車的人吧!」才對。那就留到下次投10元的時候再說吧。

(more...)

移除「我的共用資料夾」

布丁布丁吃布丁

移除「我的共用資料夾」

Windows Live Messenger(MSN 8.0)中有個新功能:「我的共用資料夾(My Sharing Folders)」,其功能是產生一個網路檔案中心,讓其他你MSN上的聯絡人都可以到你的「我的共用資料夾」來下載檔案。

可是對於頻寬不大的網路環境來說,這是個不太好用的功能,而且一不小心打開還會造成卡住的狀態,讓我蠻困擾的。

網路上有提供修改登錄檔的方式移除掉「我的共用資料夾」,其修改的方法可以參考這個網頁。另外也找到了直接修改登錄檔的指令檔,你可以下載這個檔案,直接執行,就可以移除掉「我的共用資料夾」了。

(more...)

Tagging and Metadata for Social Information Organization研討會論文閱讀

Tagging and Metadata for Social Information Organization研討會論文閱讀

WWW2007 Workshop:
Tagging and Metadata for Social Information Organization

使用者產生的內容已經改變了整個網路的結構。這些內容──包括影片、網誌、照片等等──通常都是眾人聯手組織起來的。這可能是使用標籤(tags)或是關鍵字,都是由使用者去填寫。

標籤是一種很有用的著手點,它可以藉由搜尋、過濾、導覽及其他方法來拓展資料內容。聯合式的標籤內容資源允許他們用在知識與資訊分享,並且組成一種社會互動,而這些關鍵字之間的關聯可以被用在建立主題網路(topic network)的關係。


這個研討會中討論了七篇論文(由此網站可以下載到全文的PDF檔),而我大略地看了其中的四篇,茲將標題與摘要翻譯紀錄於下:

Learning User Profiles from Tagging Data and Leveraging them for Personal(ized) Information Access

by Elke Michlmayr, Steve Cayzer

由於社會性書籤系統(social bookmarking system)大流行,大量的metadata可以從中取用。要從一堆的使用紀錄當中找出使用者的使用行為(profile),通常是用資訊過濾(Information Filtering)。

這篇論文呈現出該怎麼去從標註資料(tagging data)的動作建立使用者的使用行為。該文用Add-A-Tag演算法找出使用行為,建立該使用者的結構性與暫存性標註資料特點。

這裡有兩個需要主要的收穫。第一,該文作了一個小範圍使用者的實驗,簡單地從一群資料中看到過往有用的標註行為。第二,使用者使用行為可以用來指引使用者,也就是說,提供使用者個人化的指引,去找到資源。

Emerging Motivations for Tagging: Expression, Performance, and Activism

by Alla Zollers

內文社會性標註系統(social tagging system)已經應用在許多個人化資訊組織與檢索上。人們使用各式各樣的網站去標注照片(Flickr)、網站(De.licio.us)、部落格(黑米)以及影片(YouTube)。最近,商業網站例如Amazon.com,也開始將標註系統應用到網站上。就連圖書館的OPAC也有標註系統了,這真是一股無法抵擋的趨勢。

這種標註的類型不只是個社會現象,讓使用者可以看到其他的標註與資源,同時也是種蒐集或合作,任何使用者可以標註任何資源。藉 由分析兩個自由標籤網站(Amazon.com與Last.fm)的實作,該篇文章敘述找出標籤的社會性動機(social motivations ofor tagging)。從系統中找出來的動機將會包括表達(expression)、呈現(performance)與行為學(activism)。

備註:

Amazon.com我想大家都很熟了,比較陌生的應該是Last.fm,所以我去找了wikipedia的資料來看看:Last.fm是一個以英國為總部的網路電台和音樂社區。有遍佈232個國家超過1500萬的活躍聽眾。2007年被CBS Interactive以2.8億美元價格收購,是目前歐洲Web 2.0網站中成交價最高的紀錄。

Applying Collaborative Tagging to E-Learning

by Scott Bateman, Christopher Brooks, Peter Brusilovsky

這篇論文概要地描述作者用合作式標籤支援數位學習的傳統metadata蒐集策略。最近10年間,學習導向示例(learning object paradigm)已經被用來在數位學習上,而且讓標準本身變成專注在於基於自由分類的情況下創造metadata保存資料庫。我們同意社會性蒐集現象與輸入可靈活改變的metadata標準將是調整線上學習所需。這篇論文將會用宏觀的角度來看標註在數位學習上的應用。

首先先看到特定領域的標註實作,透過分析學生們為學習物件分類所提供的標籤。接著看到兩個應用標註到長篇小說介面的案例。這兩個系統使用突顯重點的方式,強調標籤應用到學習內容中。因為跟老師的理念蠻接近的,所以很值得一讀

後面的案例裡面,作者用Open Annotation and Tagging System(OATS)這個開放原始碼的工具來強化學習管理系統。OATS提供了自我組織工具、標註筆記(note-takeing)到內容裡、還有畫重點的功能。如果很多人在同個地方畫重點,那個段落的背景色就會由原本的黃色漸漸變重,這種凸顯重點的方式作者稱之為social annotation support。

作者的tag跟note是分開的。tag是分類用,note則是紀錄事情用。他用tag去分將畫重點的文字與note作分類,形成一種社群。

文章後面討論到多媒體的tag,作者提到YouTube將影片切割成30秒左右的小段落去作tag,這樣有助於分享與找尋資料(畢竟一個10分鐘的影片也不是全部都是重點)。但是YouTube並沒有提供影片本身的annotate或note taking,只有簡單的開放討論版。

Network Properties of Folksonomies

by Christoph Schmitz, Miranda Grahl, Andreas Hotho, Gerd Stumme, Ciro Cattuto, Andrea Baldassarri, Vittorio Loreto, Vito D.P. Servedio

近年來,社會性資源分享系統如YouTube以及del.icio.us吸引了為數可觀的使用者。他們提供了豐富的資源,可供資料分析、資訊檢索以及知識發掘應用。朝這方向的第一步就是對這些內容與系統架構有更好的著眼點。

在這篇論文中,我們將會分析兩種系統的網路特性。我們思考了他們的潛在資料架構──又稱為社會性分類(folksonomiy)──為第三個特性,並且為他們調整了傳統網路測量方式,例如特性路徑長度(characteristic path length)以及聚合係數(clustering coefficient)。

接著,我們介紹網路合作式標註以及它的特性統計調查,關注各節點之間的關連反映出社會性分類的語義。我們將展示簡單的統計指示模糊少量非社會性行為,例如垃圾郵件。

(more...)