:::
顯示具有 Programing/PHP 標籤的文章。 顯示所有文章

如何從句子中的單字搜尋詞典中符合的詞彙? / How to search for the matching terms in the dictionary from a word in the sentence?

如何從句子中的單字搜尋詞典中符合的詞彙? / How to search for the matching terms in the dictionary from a word in the sentence?

21-How_to_search_for_the_matching_terms.png

如果我想要以一個字搜尋字典裡面有的詞彙,而這個詞彙又需要符合該字在句子構成的詞彙時,要怎麼做呢?舉例來說,我想在「清晨時去游泳池」這個句子裡,用「泳」來找出「游泳池」、「泳池」、「游泳」,但要排除掉「晨泳」、「泳褲」等詞彙。我整理了一套搜尋演算法來實作這個目標,這套搜尋演算法包括了過濾出現字、過濾相連順序、過濾相符詞彙、排序詞彙長度、排序錨點字位置這五個步驟。以下我將以JavaScript程式碼來講解各步驟的做法,最後附上JavaScript跟PHP兩種版本的實作程式碼。

(more...)

PHP文內關鍵字索引全文資料庫 / PHP KWIC Database

PHP文內關鍵字索引全文資料庫 / PHP KWIC Database

image

這個PHP KWIC Database是我在進行文本分析研究中的一個產物。文內關鍵字索引(Key Word In Context)的做法是將檢索的關鍵字擺在查詢結果中間,前後呈現該關鍵字的前後文。這不僅只是拿來搜尋具有該關鍵字的文本,還能夠進一步知道該關鍵字在這些文本中的用法。在許多人文研究中,具備引得查詢資料庫是非常重要的研究工具,許多語料庫(corpus)都有提供。可惜的是,現在許多全文檢索系統都沒有實作引得,包括Apache Solr。所以我在2016年年初的研究中順手寫了這個PHP KWIC Database,並將之整理成框架,讓大家能夠簡單地使用Excel整理文本資料後,並利用Convert to SQLite Online將Excel檔案轉換成SQLite資料庫,就能夠並使用PHP KWIC Database來進行檢索與分析。

(more...)

Voc4Fun 全民樂單字:單字學習行動應用程式 / Voc4Fun: A Mobile APP for Vocabulary Learning

Voc4Fun 全民樂單字:單字學習行動應用程式 / Voc4Fun: A Mobile APP for Vocabulary Learning

image

這是2016年年初我與學弟共同開發的單字學習行動應用程式,名為「Voc4Fun 全民樂單字」。這個應用程式包含了客戶端 voc4fun-client伺服器端 voc4fun-server,全部在GitHub儲存庫保存。該程式的客戶端是以Onsen UI 2開發,並可能夠直接使用Adobe PhoneGap Build來封裝成APP。而伺服器端則是我用RedBeanPHP開發的特製Log型資料庫,以詳細記錄各個行為歷程細節,再用view視圖功能做成普通的資料表。

這篇就為全民樂單字 Voc4Fun的功能做個介紹,記錄我做過的這個單字學習行動應用程式吧。

(more...)

從PHP的Fat-Free Framework框架來看用Node.js的Express框架開發網站的心得 / Fat-Free Framework in PHP vs. Express in Node.js: Pros and Cons of Node.js

從PHP的Fat-Free Framework框架來看用Node.js的Express框架開發網站的心得 / Fat-Free Framework in PHP vs. Express in Node.js: Pros and Cons of Node.js

image

之前我跟學弟嘗試使用Node.js的Express框架來開發網站。本想著前端跟後端都可以統一使用JavaScript,但實際嘗試之後才發現Express框架問題頗多。這兩天為了把Zotero的資料庫寫成網站,我回頭使用PHP的Fat-Free Framework框架來開發,順手程度讓我感動到痛哭流涕,不禁想要寫一篇來整理一下Node.js的各種問題。這篇就閒聊一下吧。

(more...)

行動應用程式「政大借書籃」介紹 / Introduce “NCCU Book Cart”

行動應用程式「政大借書籃」介紹 / Introduce “NCCU Book Cart”

image

為了試著開發PhoneGap的行動應用程式APP,我使用OnsenUI建構了一個簡單的APP:政大借書籃。這個APP的功能是為了取代在政大圖書館找書時,使用公用電腦旁邊的小紙條來抄書的困擾。政大借書籃可以用掃描條碼功能把政大圖書館公用目錄上面找到的書加入借書清單,然後就可以拿著手機去找書了。

(more...)

布丁版OCS特色介紹:第三部分 / Pudding’s OCS Features: Part 3

布丁版OCS特色介紹:第三部分 / Pudding’s OCS Features: Part 3

2016-03-01_174458

上一篇講完了OCS的作者投稿流程,最後這一篇則是要介紹線上審查以及邀請審查委員審稿的審核流程。雖然這些流程跟一般研討會參與者無關,但是卻是常常另研討會管理者傷透腦筋的一個環節(當然,研討會當天的行程安排也是很費工啦XD)。如果有像是OCS這樣的資訊系統來輔助這些瑣碎的流程,相信會為研討會省下不少功夫吧。

不過就如之前所提過的,資訊系統可不是銀彈,特別像是OCS這樣目標在於提供全面功能,卻又造成讓人難以上手的複雜系統,在迎接OCS的好處之前,可別忘了它高昂的學習成本。

因此,我這此大幅度修改OCS,也是希望讓大家能夠更容易使用它。至於改得好不好用,就請看以下的介紹囉。

 

(more...)

布丁版OCS特色介紹:第二部分 / Pudding’s OCS Features: Part 2

布丁版OCS特色介紹:第二部分 / Pudding’s OCS Features: Part 2

2016-03-01_160300

上一篇對於布丁改造OCS的特色介紹,本篇則是繼續介紹OCS的主要特色工作流程之一:作者投稿

「作者投稿不是像Dropbox一樣丟過去就上傳完了嗎?」

(來自某老師的真實疑問)

對於沒有參與過學術發表的人來說,投稿這件事情的確是有點難以想象。不過我覺得這比較像是一個小組合作作業:組長是研討會主辦單位,而各位作者是組員。組長要告訴組員這份作業要做什麼,以及繳交時應該採用什麼格式,以便最後的統整。而組員就能夠根據組長的要求來分工完成這份作業——有人投A主題、有人投B主題,最後完成這一份大型的作業——也就是這個研討會。
當然,在舉辦研討會的時候並不是像教室內一樣,同學之間很容易聯絡。當研討會採用公開徵稿(call for 的方式進行時,作者可能是來自於四面八方的學者,往往連研討會主辦方都不認識。因此我們需要一個說明徵稿辦法的公開網站。更進一步,我們還要提供一套遞交稿件的流程。其中後者就是大部分研討會網站沒有去做,而在OCS就有建構了高度可自訂的功能。這可能是我們會需要一個研討會管理系統,而不是一般的內容管理系統的一個很重要的理由。

(more...)

布丁版OCS特色介紹: 第一部分 / Pudding version OCS Features: Part 1

布丁版OCS特色介紹: 第一部分 / Pudding version OCS Features: Part 1

2016-02-03_010637

上一篇簡單地介紹了研討會開放原始碼管理系統Open Conference System (以下簡稱OCS),這篇我想來介紹一下我修改的地方。這次要介紹的是外表上的介面、翻譯、以及報名功能。另外還有OCS主要功能的投稿與審查功能,則留到下次再介紹。


套用Bootstrap介面 / Mordern Interface with Bootstrap

原本OCS是2014年發佈的2.3.6版,從現在的角度來看,它的介面實在是很難使用。不僅大部分按鈕都小到只有一個20px*20px的圖示,也不能隨著畫面大小作適度的調整。

image

我參考Bootstrap 3 Affix Sidebar的樣板來套用在OCS上面。套用Bootstrap之後有很多好處,像是RWD的自動適應、置頂的導覽列、按鈕、已經經過良好安排的顏色,這些都可以直接套用在網站上。

2016-02-03_151250

我把OCS的按鈕套用成Bootstrap的格式,讓它變得又大又好按。而且我還加上了圖示,讓整個畫面變得精緻許多。

2016-02-03_013450_thumb

因為Bootstrap本身就是響應式網頁設計(RWD),所以縮小螢幕的時候版面也會自動調整。儘管如此,在我的手機上看起來還是有點奇怪,這個問題就先擱著吧。


中文化翻譯 / Localization Translate

image_thumb[2]

OCS雖然有提供中文版的語系,但是跟主要使用的英文語系相比,中文欠缺的資料非常多。我花了很多時間來把前端訪客看得到的畫面都翻譯好,至於後端管理者介面就之後再處理了。

image

原本OCS中文翻譯還蠻奇怪的,特別是電子郵件的範本以及較長的說明。舉例來說,有一處翻譯如下:「這將如同一個網路超連結,出現在 "關於作者" 內的聲明底部和 "組織團隊" 的彈出頁面。」英文原文是:「You do not yet have access to this conference's presentations.」因此正確的翻譯應該是:「您無權瀏覽該研討會的簡報。」

不過OCS是免費公開的程式碼,在這裡我也不是要吹毛求疵。相反地,正因為它是開放原始碼,所以我們可以繼承前人的進度再繼續前進。

2016-02-03_153552

在進行翻譯之前,必須要先彌補中文缺少的語系設定。因此我製作了4個語系整合工具,用來將英文語系設定檔與中文語系設定檔比對之後整合:

image

之後再一一翻譯中文語系裡面的英文,就這樣將翻譯問題告一段落了。上圖是我主要使用的開發工具NetBeans


報名流程 / Registration

接下來我們來講講OCS的主要流程之一:報名。

image

OCS可以制訂多種報名類型。不同的報名類型都可以設定不同的報名截止時間與繳費方式(或是設定0元,也就是免費)。但是原始的OCS在報名時要求使用者註冊一個OCS帳號,對希望更多人參加的小型研討會來說並不合適,所以我把OCS的報名功能簡化到只需要填入「姓名」、「單位」、「電子信箱」這樣就好。

2016-02-06_115951

基於OCS報名功能,我讓報名時能夠自動寄送確認信之外,又增設報名表格與問卷調查功能上去。

報名表格 / Registration Form

有鑑於一般學術圈的研討會管理者不懂得設計複雜的HTML表單,寧願偏向製作一個Word表格讓人填寫資料,所以報名表格的功能是我新增的一個所見記得的報名表格欄位,讓管理者直接貼上Word中設計好的表格,而使用者也只要像是在Word的所見記得欄位裡面填寫資料就好。

報名表單的優點是簡單就能設計出複雜的報名表,因為就只是表格而已。但是缺點在於難以提供統計資料。為了克服這個問題,我另外做了一個問卷調查功能。

用jQuery.Survey開發的問卷調查功能 / Survey Function

image

問卷調查功能是基於jQuery.Survey的程式碼,管理者只要作出一套JSON的設定檔,就可以動態產生一個HTML的問卷。而使用者填答的結果會以JSON匯出,也能夠再匯入已經填答的結果。我更進一步簡化jQuery.Survey的程式碼,將傳統HTML會把選項(name或label)跟值(value)合成一個設定。例如以前設定HTML表單時,選項是「葷食」,而值我們可能要設成「animat food」。但是簡化過後,只要設定「葷食」,顯示選項跟值都會是「葷食」。這是參考Google表單的設計方式,這種簡單的邏輯似乎很能夠被使用者接受。

當然,我也製作了問卷調查匯出功能。能夠把多位使用者的JSON檔案轉換csv格式匯出。這樣就能夠讓使用者匯入到Excel,進一步製作統計圖表或是報到表。

有機會我再將這套工具獨立釋出給大家使用,有興趣的人可以先到GitHub上抓我改過的jQuery.Survey的程式碼來玩玩看。

可內嵌Google表單 / Integrate with Google Form

image

剛剛講到Google表單被很多國內研討會採用作為報名系統這件事情。我開發系統的原則是盡量遵照使用者原來的使用習慣,因為系統的目標是改善使用者的工作流程,而盡量不要增加大家額外的學習成本。因此我也在OCS裡面加入了可以內嵌網頁(iframe)的設定,方便管理者把建立好的Google表單嵌入到OCS中。

不過這只是單純用iframe來提供連結而已,實際上OCS跟Google表單的資料並沒有共同。所以很抱歉,沒辦法在OCS上面看到Google表單的報名結果囉。


待續 / To be continue

本篇介紹的介面修改、翻譯以及報名流程只是這次修改的一部分。OCS核心的價值在於下一篇要介紹的作者投稿、線上審稿、邀請審查委員審稿的主要流程。

為了維持能夠常常寫blog的動力,我想比起一篇寫得非常非常長,還是分成多個部分一篇一篇來寫比較好。剩下的部分就留待下次介紹吧。

(more...)

研討會管理開放原始碼系統簡介 / Open Conference System (OCS) Introduction

研討會管理開放原始碼系統簡介 / Open Conference System (OCS) Introduction

2016-02-03_005200

由於最近幫空大社科系的2016社會變遷與當代議題研討會在架設研討會網站,所以找了網路上馳名已久的PKG系列系統之一的Open Conference System (我把它翻譯成「研討會開放原始碼管理系統」,以下簡稱OCS)。我把它拿回來進行大幅度的改造,並公開在GitHub上 (請到此下載)。。以下我想針對這個系統做個簡介。


為什麼不要用內容管理系統? / Why not use Content Management System?

很多人應該都有這個疑問,為什麼不要用普通的CMS,中文叫做內容管理系統(Content Management System),像是Joomla、Drupal,或甚至是WordPress (儘管它是用來寫Blog用的,但很多的時候被人用做CMS)。

但是普通的CMS很難支援研討會複雜的處理流程。舉例來說,研討會會有摘要與全文兩階段投稿、多人匿名審查、審查意見與作者修正後再上傳檔案、以及審查結果公告等功能。我們必須對CMS做大量的修改、調整,才能讓它的處理流程支援研討會。因此,與其花費大量時間去將一個CMS調整成能夠支援研討會的系統,不如一開始就找一個能為研討會設計的系統,也就是本篇所介紹的OCS。

為什麼不要用email? /  Why not use email to handle conference?

然而,我先把另一個很重要的問題說在前面:這些複雜的研討會流程,為什麼不要用email來處理就好了?這個問題問的非常好,這是一種人們對於資訊系統的迷思。

事實上,用email很好。主要的理由在於他是大家熟悉的工具,我們幾乎不需要額外的學習成本就能夠使用email。第二個理由是如果研討會規模不大,那麼信件來往勢必數量上也不會多,用email來管理就很足夠了。

那為什麼不要用email呢?這是因為人們會希望追求更省力的工作流程,但是往往卻忽略了學習成本這個問題。一個資訊系統「可以用」,與「好用」,這兩者之間的距離是用新臺幣來計算。而像是OCS這種開放原始碼的系統,只能夠稱得上可以用,但是距離一般人們心目中的好用,換句話說,就是客製化,則是相當困難的事情。

儘管如此,我還是為OCS做了相當大幅度的調整。不過先讓我們看一下OCS有什麼功能好了。


開放原始碼研討會管理系統簡介 / Introduce Open Conference System

以下介紹來自於OCS的首頁

OCS是一個開放自由的網頁發佈工具,專門用來建立學術研討會。OCS的特色如下:

  • 建立研討會網站。
  • 支援論文徵稿(call for papers, cfp)流程。
  • 支援摘要投稿、全文投稿、以及摘要與全文兩階段式投稿。
  • 作者上傳稿件之後仍可以更新版本。
  • 會議主席與審查委員可以在線上完成審查作業,並能夠直接傳送Email通知審查進度。
  • 發佈研討會議程與發表的論文,並支援搜尋功能。
  • 可發佈原始資料集(布丁註:這我不太確定是什麼功能)
  • 支援研討會報名功能。可透過Paypal讓與會者繳交註冊費。

OCS複雜的後台管理系統 / Complexity Management System in OCS

為了研討會處理流程而設計的OCS相當的複雜。就使用角色來說,OCS裡面㑹可能會有以下七種角色(role):

  • 系統管理者 (System Manager):架設OCS與管理伺服器運作的技術人員。
  • 會議管理者 (Conference Manager):設定各研討會的網站細節,像是公告、議程。
  • 會議主席 (Director):負責安排主題負責人、審查者、決定論文審查結果、寫信通知作者等等。
  • 主題負責人 (Track Driector):研討㑹可以細分為多個主題,作者可以投稿到各個主題,而各主題又可以安排負責管理的主席,稱之為主題主席。主題主席可以進行的工作跟會議主席差不多,但只能夠管理投稿到這個主題的稿件。
  • 審查委員 (Reviewer):受會議主席或主題主席邀請,前來審查特定一篇論文的審查者。
  • 作者 (Author):投稿到研討會的作者。
  • 讀者 (Reader):一般研討會比較少強調這個角色。讀者的功能是可以訂閱研討會已經接受且發佈的論文。

每一種角色可以使用的功能都不一樣,例如會議主席不能夠修改整個系統的網站標題,只有系統管理者可以進行這項動作。審查者可以為稿件提出接受/修改/拒絕的意見,但只有會議主席或是主題主席可以決定這個論文的最終結果。

多種不同的角色與複雜的流程造成OCS的高度複雜性。這對許多只是想要架一個「簡單網站」的學者來說,簡直是無法想像的程度。


簡化的第一步:後臺的連結 / First Step to System Simplification: Add Quick Edit Icon

2016-02-03_010637 - Copy

這麼複雜的流程有辦法簡化嗎?老實說,如果要辦一個大型研討會,那就的確是要如此複雜的分工。我目前先做一些小功能來連結前台顯示內容與後台的設定欄位:有筆的圖示按鈕。在使用者擁有相對應的權限時,系統會在公告、議程等我修改過的位置上顯示這個按鈕,點選後就能夠直接跳掉相對應的後台欄位中。這個應急之道是給那些懶得去後台翻設定的使用者使用,但相對於OCS的高度複雜來說,只是杯水車薪。


OCS嘗試要解決的灰色文獻問題 / How OCS resolve gray literature issue

OCS並不是單純的CMS,其中一個特色就是對於灰色文獻(gray literature)問題的處理。什麼是灰色文獻呢?灰色文獻的意思是指在資訊傳播過程中所存在但難以被搜尋、取得的資訊。研討會上發表的論文就是一種很常見的灰色文獻。

大部分研討會上發表的論文並沒有正式出版。常見的情況中,研討會的會議論文集(proceeding)並不會像一般書籍一樣作成一本書、申請ISBN、遵照法定送存規定一樣地送往國家圖書館保存,而通常只是將研討會中所發表的論文作成一本會議手冊──有些研討會手冊裡面甚至連全文都沒有、只有投影片──然後只有參與研討會的與會者才拿得到。這樣的結果造成雖然有研討會論文的存在,但是一般人卻只能知道有這篇文章發表在研討會中,卻難以得到文章的內文,這就是灰色文獻的問題。

image

OCS不僅只是研討會網站,它本身也是資料典藏系統,可以讓其他人輕易取得在OCS上發佈的論文。從設定上可以看到,它提供了OAI-PMH的資料交換功能,可以作為資料提供者(data provider)讓其他資料獲取者(data harvester)來取得資料,像是PKP另一個系統Open Harvester Systems。同時它也可以為發佈的論文加上數位物件識別碼DOI (Digital Object Idenifier System),方便學術論文的引用與取得。

然而現在學術傳播環境中,研討會論文是否要公開的這個問題,其實並沒有定論。有些研討會並不是難以負擔出版成本而不將會議論文出版,而是遵照作者的意願而不公開作者在研討會發表的論文。有人可能會覺得奇怪:如果發表的論文不出版的話,那豈不是違反學術傳播的目的了嗎?這是因為許多作者會在研討會跟期刊上發表同一主題的論文,而通常研討會上只是初步的成果、期刊則會是較完整的內容。為了避免期刊的主編或審查者搜尋到作者之前發表的研討會論文而造成一稿多投的誤解,所以許多作者寧願選擇在研討會不公開他的論文,而是在期刊上刊出較完整的結果。當然,我不否認也會有真的是一稿多投:研討會跟期刊的內容幾乎一樣的問題,但這不是本文的重點。

回到OCS來看,它試圖解決灰色文獻問題的方式是否能為現在學術研討㑹所接受,我想仍需要一段時間來觀察。但我能夠確定的是,在處理OCS的如何公開論文之前,光是OCS複雜的設定就已經讓一堆不懂資訊系統的學者舉白旗投降了吧。


小結:我建置的一個不完整的版本 / Conclusion: My modified OCS is not stable.

2016-02-03_010637_thumb_thumb

如果你也想要來架設OCS看看的話,可以從我的GitHub上取得我目前修改的進度:

秉持著開放原始碼的精神,既然從開放原始碼的系統取得了OCS,我當然也很樂意與大家分享我作的系統。但是必須事先聲明的是,這是一個不完整的系統。因為我是一邊安裝一邊修改,直到最後才順利讓它勉強可以運作。我並沒有要讓它做到可以讓人從無到有地順利架設,只要能夠支援現在研討會運作就好了。

另一方面,我的OCS目前僅支援線上全文審查的功能,還沒有去修改它的摘要/全文二階段審查功能。這可能是要到年中的時候才會去處理的問題,現在就先擱著了。

 

總之,歡迎大家拿取我修改過的程式碼來作進一步開發,有問題歡迎底下提問,或是用GitHub的Issues功能提問都可以。接下來幾篇我想跟大家聊聊我這個OCS改了什麼東西,慢慢來寫吧。

(more...)