:::

DSpace遇到「Failed to resolve artifact.」的問題

布丁布丁吃布丁

1 Comments

DSpace遇到「Failed to resolve artifact.」的問題

image

在DSpace編譯的過程中,如果遇到以下錯誤訊息,大部分時候是網路連線已經中斷的問題:

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

No versions are present in the repository for the artifact with a range [1.5.0.0,1.6.0.0)
  org.dspace:dspace-api-lang:jar:null

from the specified remote repositories:
  central (http://repo1.maven.org/maven2),
  maven.dspace.org/snapshot (http://maven.dspace.org/snapshot)


[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------

這是由於DSpace在做MVN的時候需要去網路上檢查jar檔案,而如果你的伺服器網路如果不通,那就無法順利進行編譯。

解決方法則就是一般網管的問題囉。VirtualBox的NAT虛擬網卡偶爾會當掉,就會發生上述情況,我在此留下一個記錄。

(more...)

我也被詐騙了

布丁布丁吃布丁

我也被詐騙了

今晚我被冒稱PCHome購物人員(大陸口音)跟中華郵政人員說我交易紀錄從單筆轉帳變成12期轉帳,原本買了200元的商品變成要繳交2400元,必須趕快處理完畢,便指示我到ATM去作取消的動作,於是我上當了。


過程是這樣的:

晚上8點我接收大陸口音(怪異點:其實電話訊號非常不清楚,我也聽了好久,其實不是很確定)的PCHome客服人員(來電顯示+0227040999,這隻是詐騙電話喔)解釋說我交易資料因為公司伺服器更新失誤所以單筆匯款變成12期匯款,原本交易金額200元便要付12期變成2400元,而我上次的確在PCHome購物時發生匯款錯誤的動作,而稍微相信。

他與我確認中華郵政的客服電話(怪異點:根本就不需要跟我確認,他只是要仿造電話而已)之後,說他要跟中華郵政確認完之後再由中華郵政人員打電話給我。

稍後果然有中華郵政客服專線0423542030來電(怪異點:其實來電號碼可以偽造,只是當時我不知道),叫我去附近ATM作餘額查詢。我想說餘額查詢也不是轉帳,他說要馬上跟我確認,於是我就急忙地衝到附近的ATM去處理。查完餘額之後,他開始跟我確認經辦機號(ATM的編號),並告訴我地址,以讓我信服他其實跟ATM有連線(怪異點:其實這上網查得到經辦機號,那不需要跟ATM連線),然後跟我確認個人資料(怪異點:都外洩了吧),並強調他並不是詐騙集團之類的。

然後他指示我操作ATM,一開始就用跨行轉帳,我有意識到這是詐騙手法,於是很仔細地跟他再確認交易資料跟輸入的資料,他指示我操作的帳號、金額什麼的,都是錯誤的資料,他說那是內部操作。到此為止,都是以往聽過詐騙的手法,我也中斷了好幾次操作,他一直催促我,情急之下我也越來越沒有戒心,想趕快把他弄完回去趕程式,也累了。

最後一次他就用存簿轉帳,而且輸入了PCHOME交易編號(怪異點:其實是存戶帳號,仔細想想PCHome的編號應該不會都是數字),金額則輸入29999密碼(怪異點:這是非約定轉帳上限3萬元少一元),然後匯出後他告訴我連線錯誤,然後說到12點就會恢復正常,叫我別緊張,他現在馬上修正,就掛斷電話。

我馬上打同一隻電話0423542030到中華郵政,他說我被詐騙了,請打165反詐騙電話去報案。我跟165報案完畢,就請浚學弟陪我一起到政大前面的文山分局報案,作筆錄、登記拿三聯單。

總結以上,反詐騙的重點在於:

  1. 不管怎樣都跟165反詐騙電話確認一下吧!
  2. 應該要你打過去跟他確認,他就沒辦法用來電顯示修改器了。.
  3. 不要急,其實這種東西都沒這麼急的,多多跟別人確認確認吧。
  4. 朋友請阻止認識的人不要這樣做,下次有人遇到帳戶問題的,我會第一時間打電話阻止他,順便卡詐騙電話來電。

反正自己笨,也沒什麼好反駁的。就這樣吧。

題外話,被詐騙之後中華電信又來電說我電話費沒繳交,我去電跟客服人員確認之後發現真有此事,但是已經申請延期,所以不必繳。真是麻煩呢。

(more...)

我回來了,我又走了

布丁布丁吃布丁

0 Comments

我回來了,我又走了

2009-10-09-251

教育部全國通識網到中南部舉行公開說明會,而10/8這天來到了台中逢甲,準備10/9將在逢甲大學舉行的中區說明會。台中逢甲夜市一向是十分有名的,既然來了當然是要來逛逛囉。

「熟的人帶路。」同事對我這個台中人這樣說,我有點尷尬地回他道:「其實,我也不知道這裡有什麼好吃的。」

我不太會玩,也不太會分辨美食,大概是因為多少抱持著「不要多花錢在這些吃吃喝喝的玩樂上」的傳統價值觀的關係,「這邊哪裡好玩?有什麼好吃的?」我大概都是一問三不知。

但是,我可以說的是另一種事情……

「這家馬鈴薯泥是以前我朋友帶我來吃過的。」

「這條街以前我跟我朋友來的時候,都是肩靠肩地前進呢。」

「逢甲大學那棟體育館,以前我大學繳交志願卡的地點就是在那邊。」

「我妹很常來逛逢甲夜市喔。」

……諸如此類的事情,都是回憶。

對我來說,比起美食、好玩的事物,回憶有趣多了。

(more...)

製作VirtualBox 3.0.6自動安裝檔

布丁布丁吃布丁

製作VirtualBox 3.0.6自動安裝檔

image

VirtualBox是一個虛擬機器的軟體,我喜歡用他來架設測試用的機器,以及快速安裝KohaDSpace。然而VirtualBox安裝步驟多,我希望能夠簡化這個程序,因此開始研究起自動安裝的方法。(此處使用的是VirtualBox 3.0.6,自由軟體)

AutoIT,可以script(腳本檔)程式來控制你電腦中任何操作,甚至臨時建立表單、問答視窗,都可以作到。他也常被用來作為自動安裝的用途,也包括了自動安裝VirtualBox。(此處使用的是AutoIT V3)

修改了左又天撰寫的自動安裝script,我也利用IconsExtract抽取出VirtualBox的icon檔案,接著就可以利用WinRAR來製作自我解壓縮檔。(此處我使用的是3.61中文版)

最後的結果,就放在此處讓人下載:

另外放上我改過的AutoIT Script 檔案,但是最後的網卡安裝並沒有寫得很好,請各位先進多多指教:

Opt("WinWaitDelay",100)
Opt("WinTitleMatchMode",4)
Opt("WinDetectHiddenText",1)
Opt("MouseCoordMode",0)
RUN("VirtualBox.exe")
WinWait("Sun VirtualBox Setup","The Setup Wizard wil")
If Not WinActive("Sun VirtualBox Setup","The Setup Wizard wil") Then WinActivate("Sun VirtualBox Setup","The Setup Wizard wil")
WinWaitActive("Sun VirtualBox Setup","The Setup Wizard wil")
Send("{ALTDOWN}n{ALTUP}")
WinWait("Sun VirtualBox License Agreement","I &accept the terms ")
If Not WinActive("Sun VirtualBox License Agreement","I &accept the terms ") Then WinActivate("Sun VirtualBox License Agreement","I &accept the terms ")
WinWaitActive("Sun VirtualBox License Agreement","I &accept the terms ")
ControlFocus("Sun VirtualBox License Agreement", "", "Button2")
Send("{ALTDOWN}n{ALTUP}")
WinWait("Sun VirtualBox Setup","")
If Not WinActive("Sun VirtualBox Setup","") Then WinActivate("Sun VirtualBox Setup","")
WinWaitActive("Sun VirtualBox Setup","")
Send("{ALTDOWN}n{ALTUP}")
sleep(1000)
ControlFocus("Sun VirtualBox Setup", "", "Button2")
Send("{space}")
Send("{ALTDOWN}n{ALTUP}")
WinWait("Sun VirtualBox ","Installing the Sun V")
If Not WinActive("Sun VirtualBox ","Installing the Sun V") Then WinActivate("Sun VirtualBox ","Installing the Sun V")
WinWaitActive("Sun VirtualBox ","Installing the Sun V")
Send("{ALTDOWN}y{ALTUP}")
WinWait("Sun VirtualBox Setup","")
If Not WinActive("Sun VirtualBox Setup","") Then WinActivate("Sun VirtualBox Setup","")
WinWaitActive("Sun VirtualBox Setup","")
Send("{ALTDOWN}i{ALTUP}")
WinWait("軟體安裝","繼續安裝這個軟體會在")
If Not WinActive("軟體安裝","繼續安裝這個軟體會在") Then WinActivate("軟體安裝","繼續安裝這個軟體會在")
WinWaitActive("軟體安裝","繼續安裝這個軟體會在")
Send("{ALTDOWN}c{ALTUP}")
WinWait("軟體安裝","")
If Not WinActive("軟體安裝","") Then WinActivate("軟體安裝","")
WinWaitActive("軟體安裝","")
Send("{ALTDOWN}c{ALTUP}")
WinWait("軟體安裝","")
If Not WinActive("軟體安裝","") Then WinActivate("軟體安裝","")
WinWaitActive("軟體安裝","")
Send("{ALTDOWN}c{ALTUP}")
WinWait("硬體安裝","您正要為這個硬體安裝")
If Not WinActive("硬體安裝","您正要為這個硬體安裝") Then WinActivate("硬體安裝","您正要為這個硬體安裝")
WinWaitActive("硬體安裝","您正要為這個硬體安裝")
Send("{ALTDOWN}c{ALTUP}")
WinWait("硬體安裝","您正要為這個硬體安裝")
If Not WinActive("硬體安裝","您正要為這個硬體安裝") Then WinActivate("硬體安裝","您正要為這個硬體安裝")
WinWaitActive("硬體安裝","您正要為這個硬體安裝")
Send("{ALTDOWN}c{ALTUP}")
Sleep(10000)
Send("{ALTDOWN}c{ALTUP}")
Sleep(3000)
Send("{ALTDOWN}n{ALTUP}")
WinWait("Sun VirtualBox Setup","Start Sun VirtualBox")
If Not WinActive("Sun VirtualBox Setup","Start Sun VirtualBox") Then WinActivate("Sun VirtualBox Setup","Start Sun VirtualBox")
WinWaitActive("Sun VirtualBox Setup","Start Sun VirtualBox")
Send("{SHIFTDOWN}{TAB}{SHIFTUP}")
Send("{SPACE}")
Send("{ALTDOWN}f{ALTUP}")

參考來源

[教學] 封裝AutoIt自動安裝程式 - 軟件討論區 - SUM-HK論壇提供/新聞/娛樂/數碼/音樂/電影等資訊~~ - Powered by Discuz! . Retrieved October 5, 2009, from http://sum-hk.marlito.com/redirect.php?tid=760&goto=lastpost.

VirtualBox 3.0.6 一鍵安裝 完整封裝 圖文教學(Autoit) ( 彈指瞬間 - 社群文章 ). . Retrieved October 5, 2009, from http://itgroup.blueshop.com.tw/moan/it_club?n=convew&i=12488.

(more...)

JAVA寄信問題「HELO requires domain address」的解決方法

布丁布丁吃布丁

JAVA寄信問題「HELO requires domain address」的解決方法

image

當我利用VirtualBox架設虛擬機器時,會發現沒辦法正常地使用註冊信的功能。這是因為虛擬機器內部的domain name並不是其他domain name server認可的名稱,只是我測試用的名字。此時可以自行在伺服器當中新增此domain name,對應到127.0.0.1,也就是本機端,就可以解決此問題。

以下詳述這個問題的發生與解決過程。

虛擬機器中DSpace的郵件設定
##### Email settings ######

# SMTP mail server
mail.server = 127.0.0.1

# SMTP mail server authentication username and password (if required)
# mail.server.username = myusername
# mail.server.password = mypassword

# SMTP mail server alternate port (defaults to 25)
mail.server.port = 25

# From address for mail
mail.from.address = dspace-noreply@dspace-dlll.nccu.edu.tw

# Currently limited to one recipient!
feedback.recipient = dspace-help@dspace-dlll.nccu.edu.tw

# General site administration (Webmaster) e-mail
mail.admin = dspace-help@dspace-dlll.nccu.edu.tw

必須說明到,上述設定當中的「dspace-dlll.nccu.edu.tw」完全沒有註冊在任何domain name server當中。因此執行時就會發生錯誤。

認不出domain name的錯誤訊息

image

在此設定當中進入DSpace的使用者註冊時,就會發生錯誤。我們來到DSpace的記錄檔當中看看,預設位置在「[dspace]/log/dspace.log」,可以用文字編輯器來開啟。

錯誤訊息如下:

2009-10-02 23:58:27,828 INFO  org.dspace.app.webui.servlet.RegisterServlet @ anonymous:session_id=29633B32BF10EEEF95FCF4DC71B5C7FD:ip_addr=10.0.2.2:sendtoken_register:email=puddingchen.35@gmail.com
2009-10-02 23:58:30,669 INFO  org.dspace.app.webui.servlet.RegisterServlet @ anonymous:session_id=29633B32BF10EEEF95FCF4DC71B5C7FD:ip_addr=10.0.2.2:error_emailing:email=puddingchen.35@gmail.com
javax.mail.MessagingException: 501 5.0.0 HELO requires domain address

        at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1363)
        at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:838)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:375)
        at javax.mail.Service.connect(Service.java:275)
        at javax.mail.Service.connect(Service.java:156)
        at javax.mail.Service.connect(Service.java:105)
        at javax.mail.Transport.send0(Transport.java:168)
        at javax.mail.Transport.send(Transport.java:98)
        at org.dspace.core.Email.send(Email.java:362)
        at org.dspace.eperson.AccountManager.sendEmail(AccountManager.java:296)
        at org.dspace.eperson.AccountManager.sendInfo(AccountManager.java:256)
        at org.dspace.eperson.AccountManager.sendRegistrationInfo(AccountManager.java:101)
        at org.dspace.app.webui.servlet.RegisterServlet.processEnterEmail(RegisterServlet.java:287)
        at org.dspace.app.webui.servlet.RegisterServlet.doDSPost(RegisterServlet.java:202)
        at org.dspace.app.webui.servlet.DSpaceServlet.processRequest(DSpaceServlet.java:147)
        at org.dspace.app.webui.servlet.DSpaceServlet.doPost(DSpaceServlet.java:105)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)

你可能會發現到IP很奇怪,因為這是VirtualBox配給的內部IP。

這段記錄的重點在於錯誤訊息「HELO requires domain address」,代表的意思是HELO認不出來「dspace-dlll.nccu.edu.tw」對應到哪台主機。

設定伺服器當中的domain name對照表

用指令列來修改「/etc/hosts」,增加下列設定:

127.0.0.1       dspace-dlll.nccu.edu.tw dspace-dlll

然後得重新啟動網路,指令是「/etc/init.d/network restart」

或著你也可以用圖形介面來設定。

image

先進入「網路」當中。

image 

切換到「主機」那一頁,然後按「新增」。

image

設定位址、要對應的主機名稱跟其別名。

image

最後記得要儲存才會生效。


以上,大功告成。用虛擬機器果然是比較麻煩了一些,不過也可以藉此在精進網路知識就是了。

(more...)

VirtualBox擴大CentOS的LVM硬碟筆記

布丁布丁吃布丁

VirtualBox擴大CentOS的LVM硬碟筆記

image

前言

VirtualBox使用虛擬動態映像檔(vdi),VDI的好處在於你能夠保留最大到2TB的擴增空間,但卻又只會佔用實際儲存的資料。具體來說,vdi可以讓GuestOS(在此指虛擬機器)當中讀取起來有到2TB(大概2024GB)的硬碟,但在HostOS(在此指實際安裝虛擬機器的本機端)中只會佔用vdi中實際儲存的檔案,可能只需要23GB。當你發現VDI的大小超過HostOS所能允許的空間的話,就直接更換VDI儲存位置,放在更大的硬碟空間裡面就行了,非常方便。

問題敘述

之前在建立VDI時的錯誤決定,讓他的實體空間只有8GB,這對於我系統的要求是不夠的。所以得想辦法讓他擴大才行。

HostOS是Windows XP,GuestOS則是Linux CentOS 5 final。

GuestOS的硬碟在一開始安裝CentOS時都被切割成LVM(Logical Volume Manager)格式——而我後來才知道,這真是個麻煩的格式。因此調整大小的步驟就會多了很多繁雜的步驟。

那麼,接下來我就一步一步地去記錄我是怎麼調整VDI大小的吧。

擴大VDI虛擬大小空間

一、取得Clonezilla

VirtualBox並沒有直接擴大VDI的功能,網路上大部分的教學都是使用GPart Live CD來複製硬碟分割。但很遺憾的,GPart沒辦法讀取LVM (是的,真的很煩人),所以我採用國人自製的自由軟體Clonezilla Live

  • image下載Clonezilla Live,請選擇iso檔案下載,或是下載zip之後解壓縮成為iso。

image

在VirtualBox當中利用掛載光碟映像檔的方式將Clonezilla掛載上去之後,就可以利用Clonezilla開機來複製硬碟資料。

二、建立新的VDI硬碟

我建立一顆新的VDI硬碟,這次把大小提昇到極限值2TB。然後把舊的8GB VDI硬碟跟2TB VDI硬碟都掛到同一台虛擬機器上。

三、使用Clonezilla複製硬碟

我利用Clonezilla將舊硬碟複製到新硬碟去,細節我沒有特別記錄。但是必須讓它保持原本的分割區,不要放大分割區。因為對LVM來說,放大分割區並沒有意義。整個複製作業大概花了我30分鐘。

複製完成之後關掉虛擬機器,卸載就VDI硬碟跟Clonezilla,再以新硬碟開啟,可以成功啟動。而且利用「fdisk -l」的指令查詢,會發現到除了原本的分割區之外,還有很多空間可以利用。

四、擴大LVM的空間

鳥哥的fdiskLVM教學中還蠻詳細的,在此我僅節錄指令步驟:(我的LVM主要空間是「/dev/VolGroup00/LogVol00」,VDI硬碟代號是「/dev/hdb」)

  1. 進入fdisk,用「n」新增分割,選擇「p」主分割,編號為「3」(因為我原本系統中1為boot,2為其他空間),然後指令「w」建立分割並離開。
  2. 使用「partprobe」讓核心重新抓取一次硬碟分割表,成功建立第三個分割,代號是「/dev/hdb3」。
  3. 用「pvcreate /dev/hdb3」建立新的PV,然後用「pvscan」檢查。
  4. 用「vgextend /dev/VolGroup00/LogVol00」來加大VG。
  5. 用「vgdisplay」檢查,注意訊息中會有類似「Free  PE / Size       16486 / 2 TB」(正確數字我有點忘了),那個「16486」就是待會可以新增的空間。
  6. 用「lvresize –l + 16486 /dev/VolGroup00/LogVol00」加大空間。
  7. 用「resize2fs /dev/VolGroup00/LogVol00」把LV的容量擴大到整個檔案系統可以允許的上限。需要耗費一段時間,此時VDI實際大小也會逐漸加大。
  8. 完成後可以用「df -h」來檢查是否有真的擴大了。

到目前為止,儘管VDI的虛擬大小總算擴大到2TB了,但實體大小卻也從7GB增大到23GB。進去虛擬機器中查詢使用量,卻也只有5GB多的用量而已。我猜可能是2TB所需要得區塊量(blocks)比較多,所以也佔去了不少空間。這就跟「買了80G硬碟,實際上可用只有75G」的道理一樣。詳細的原理請回去查查「作業系統」的課本吧。

即使如此,現在VDI的實際大小還是太大了,我們下一節就來談談如何減少VDI的實體大小。

縮小VDI實際檔案大小

image

VirtualBox的VDI的實際大小似乎是取決於虛擬機器當中動到的區塊量。也就是說,即使你在虛擬機器當中刪除了檔案,但VDI的實際大小並不會因此減少。因此VDI只會越用越多,並不會縮小。

在此有兩種方法可以使用:VirtualBox的VBoxManage提供了「modifyhd」來清除被設為0的區塊以壓縮VDI的實際大小;或用檔案壓縮工具7-zip來減少檔案大小。以下一一介紹作法。

VBoxManage的modifyhd

自由流浪的心靈世界中介紹縮小VirtualBox VDI檔案的作法十分詳細,我參考其他資料之後整理的大致上步驟如下

  1. 先刪除虛擬機器裡面不需要的檔案。
  2. 安裝「zerofree」這個工具,RPM Search裡面可以找到給Red Hat/CentOS的版本。RPM安裝方法可以參考鳥哥,指令是「rpm –ivh [*.rpm]」。
    安裝完畢之後,可以用「/usr/sbin/zerofree」來使用他
  3. 重新啟動虛擬機器,進入CentOS的單機模式(single user mode)。具體作法是開機時按esc進入選單,按e編輯選單內容,再選擇有「kernal」那一項按e編輯開機參數。進入指令列之後再原有指令最後加上「singel」,然後按b開機即可。
  4. 執行init 1 (還沒去查這到底是什麼功能)
  5. 將硬碟以ro模式掛載:mount -n -o remount,ro -t ext3 /dev/VolGroup00/LogVol00 /
  6. 執行zerofree:/usr/sbin/zerofree /dev/VolGroup00/LogVol00。他需要花上好長一段時間來作這個動作,請慢慢等待。
  7. 完成zerofree之後關閉虛擬機器。
  8. 在HostOS底下執行壓縮指令:VBoxManage modifyhd 你的VDI位置.vdi compact。當然,VBoxManage的執行位置你也要修改成你安裝VirtualBox的位置才行。
    整個壓縮過程大概耗費2小時完成。

完成之後,原本在虛擬機器中刪除檔案所減少的空間,也讓VDI實際大小減少了。

7-zip壓縮

image 使用modifyhd之後讓VDI的實體大小從23GB減到22GB,但這大小對我來說仍然是過大的負荷。當我架設完虛擬機器而不需要執行時,可以考慮採用7-zip之類的壓縮軟體來壓縮檔案。我選擇使用7-zip Portable,一來這是開放原始碼的自由軟體;二來7-zip可以壓縮超過2GB大小的檔案,而且壓縮比例又很高,儘管比較需要花時間;最後Portable則是不需要安裝即可執行的版本,下載下來馬上就可以使用。

利用7-zip壓縮了22GB的VDI檔案之後,我取得了2GB的壓縮檔,成果讓我非常滿意。


一邊找尋資料、一邊實際操作,然後又來不斷修改這篇Blog。這一篇是我大概一天多的成果,又是一篇用時間跟精力換來的筆記記錄,還好最後有達到我想要的成效,真是可喜可賀。

(more...)

Timemark to SSA使用教學

布丁布丁吃布丁

Timemark to SSA使用教學

image

輔大動畫OPED放映會即將邁入十代目現在,我想也把Timemark to SSA(簡稱TTS)重新介紹一下好了。

本篇首頁的影片中您可以看到類似卡啦OK的字幕,這是利用影片與字幕檔案結合重新壓置(render)之後產生的結果。大部分的影片都沒有字幕,為了方便觀看,所以我才會想要製作字幕檔案。TTS即是將我們常見的lrc詞曲同步檔案 (範例檔案千千靜聽之類的音樂播放器最常用來顯示同步歌詞的檔案類型)轉換成SSA字幕檔(範例檔案)的程式。以上兩種都是單純的文字檔案,可以用記事本等文字編輯工具直接開啟。

TTS是一個網頁檔,可以從開啟影片標註時間標籤(我稱之為Timemark)、調整字幕顯示格式、時間並且輸出,一氣呵成地製作出SSA字幕檔。本篇就是要教大家怎麼使用TTS來製作SSA字幕檔!

  • Timemark to SSA 下載:miroko空間SkyDrive空間
    ※ 請下載到您的電腦,並用瀏覽器開啟電腦中的TTS網頁運作。

請注意,請以Internet Explorer 6開啟或IE Tester中模擬IE6來開啟TTS才能正常運作。


操作畫面說明

image

image 所有功能都包含在一個網頁檔裡面,當全部功能都打開時,網頁就會變得很長。整個TTS包括五大功能,以下大略地講解各功能的概要,各功能的操作細節,可以看一下標題旁邊的「提示說明」(如右圖)。

1. 來源歌詞編輯器

image

左半邊是影片播放器,下面有個「瀏覽」的表單,請選擇你本機端的影片載入,因為是使用Windows Media Player的關係,只要確定Windows Media Player可以播放的檔案,此處都可以播放。

右邊的編輯框分成「歌詞編輯模式」跟「時間標籤編輯模式」。請先在歌詞編輯模式中將您的歌詞檔案都準備好,再切換到時間標籤編輯模式當中,一邊利用左邊的播放器播放影片,一邊利用快速鍵(如空白鍵、enter鍵等等,網頁上有提示)來加入時間標籤。

在此說明一下時間標籤,表示影片播到此處的時間記錄點。格式是[00:38:50]或[00:38.50],第一個「00」表示分鐘,第二個「38」表示秒,第三個「50」則是百分之一秒。對TTS來說,時間標籤只有在一行的開頭或結尾才有意義。

當然,除了TTS之外,千千靜聽本身也有時間標籤編輯器的功能,網路上也很多lrc的下載網站,所以倒也不用每次都自己製作lrc格式的歌詞檔啦。

但是TTS的特色在於,你可以在歌詞檔上加入漢字的拼音,轉換成字幕檔的時候,就可以看到漢字歌詞上頭有著拼音的註解囉。詳細作法稍後再來介紹,我們繼續看看其他的功能吧。

2. 參數與格式設定

image

這個功能又分成上方的「時間軸設定參數」跟下方的「字幕顯示格式」兩種,只有取消勾選「使用預設的…」選項的時候才會顯示他的詳細設定。

時間軸設定參數的說明在TTS上已經很詳細了。字幕顯示格式主要是設定顏色、字型、大小等參數,其他的參數則不建議更動。此處的字幕顯示格式跟SSA的格式設定有很大的關聯,TTS只有使用到一部分SSA功能的關係,所以大部分設定都是無效的。有興趣的話可以來研究一下SSA的教學喔。

3. 轉換設定

image

此處選擇輸出字幕檔的模式跟一些功能。

上方有四種模式,動畫OPED放映會主要使用的是「兩行左右格式」,也是一般卡啦OK常用的格式。下方則有幾個小功能,其中「拼音補完功能」會使用一些預設好的漢字與拼音對照表來幫漢字加上拼音,但那畢竟只是作好玩的,還是請自行幫歌詞注音吧。

4. 歌詞編輯器

image

TTS讀取來源歌詞檔跟參數設定之後,會將分析的結果在此呈現。此區可以調整每一句歌詞的細節,包括拼音。雖然說這是TTS編輯器的精華,但其實我不太希望會有人用到這個功能。如果在來源歌詞檔跟參數設定的部份就已經設定好的話,就不需要在此處手動調整了。

5. 輸出結果

image

全部輸出完成的SSA檔案會出現在此處。請依照提示說明的方式將內文儲存成SSA檔案就可以正常播放了!


製作SSA歌詞字幕檔

以下我們就用「化物語 第10話OP(HD)」來介紹如何幫他製作歌詞檔案。

1. 取得歌詞

以下是轉載自YouTube的本曲歌詞

(せーの)

でもそんなんじゃダメ もうそんなんじゃホラ

心は進化するよ もっともっと

言葉にすれば消えちゃう関係なら

言葉を消せばいいなって

思ってた?恐れてた?

だけどあれ? なんか違うかも?

千里の道も一歩から

石のように硬いそんな意志で

塵も積もれば山と(大和)撫子?

私意抜きでいや死ぬ気で

ふわふわり ふわふわる

あなたが名前を呼ぶ それだけでじゅうえうかぶ

ふわふわる ふわふわり

あなたが笑っている それだけで笑顔になる

神様ありがとう 運命のイタズラでも

巡り合えたことが 幸せなの

でもそんなんじゃダメ もうそんなんじゃホラ

心は進化するよ もっともっと

そうそんなんじゃヤダ ねえそんなんじゃまだ

私のこと見ててねずっとずっと

2. 修飾歌詞,並加上拼音

修飾歌詞要把握幾點原則:

  1. 一句話太長時,應該斷行,以免作成字幕檔時超出畫面。
  2. 拼音的括號只接受半形括號,例如「(」或「)」。全形括號會被當作歌詞的一部分,像是「(」、「)」。
  3. 歌曲部份有間奏的時候,請多插入一個空行,否則不要輕易增加空行。
  4. 日文漢字拼音請多多利用日文辭典goo辞書ひらひらのひらがなめだね

調整完畢之後的歌詞如下:

(せーの)

でもそんなんじゃダメ

もうそんなんじゃホラ

心(こころ)は進化(しんか)するよ

もっともっと

 

言葉(ことば)にすれば消(き)えちゃう関係(かんけい)なら

言葉(ことば)を消(き)せばいいなって

思(おも)ってた?恐(おそ)れてた?

だけどあれ? なんか違(ちが)うかも?

千里(せんり)の道(みち)も一歩(いっほ)から

石(いし)のように硬(かた)いそんな意志(いし)で

塵(ちり)も積(つ)もれば山(やま)と撫子(なでしこ)?

私意(しい)抜(ぬ)きでいや死(し)ぬ気(き)で

ふわふわり ふわふわる

あなたが名前(なまえ)を呼(よ)ぶ

それだけでじゅうえうかぶ

ふわふわる ふわふわり

あなたが笑(わら)っている

それだけで笑顔(えがお)になる

 

神様(かみさま)ありがとう

運命(うんめい)のイタズラでも

巡(めぐ)り合(あ)えたことが

幸(しあわ)せなの

でもそんなんじゃダメ

もうそんなんじゃホラ

心(こころ)は進化(しんか)するよ

もっともっと

そうそんなんじゃヤダ

ねえそんなんじゃまだ

私(わたし)のこと見(み)ててね

ずっとずっと

3. 貼到TTS的歌詞編輯模式吧

如下圖。

image

4. 載入可以播放的影片

image

為了標註時間標籤,我們需要利用左邊的影片播放器播放此影片。

建議安裝K-lite之類的codec編碼包,讓你的Windows Media Player就可以播放多種影片格式。此外有許多小技巧可以從YouTube下載影片,並轉換成Windows Media Player可以播放的avi檔案,網路上很多,在此我就先略過這些細節吧。

5. 切換到時間標籤編輯模式

image

按一下右上角的「時間標籤編輯模式」就可以切換過去了。框框也會跟著變成藍色喔。

6. 一邊播放影片,一邊利用快速鍵加入時間標籤

在標註時間標籤之前,必須先牢記快速鍵!

  • 使用上下鍵來選擇要編輯的歌詞行
  • ctrl-m: 切換歌詞編輯模式與時間標籤編輯模式
    (以下功能,可以按著shift鍵讓他暫時失效)
  • space(空白鍵): 在該行開頭加入時間標籤
  • enter: 在該行結尾加入時間標籤
  • delete: 刪除該行開頭的時間標籤
  • backspace(←): 刪除該行結尾的時間標籤

添加時間標籤時,也有幾個原則:

  1. 通常只要加入行首的時間標籤就可以了。請善用space空白鍵來加入時間標籤吧。
  2. 如果該行沒有歌詞只有時間標籤,那會判斷成前一行歌詞的結束時間。
  3. 歌詞最後一定要加入結尾的時間標籤!不然TTS不知道最後一句歌詞會放到什麼時候。
  4. 注意斷行!每個斷行都會影響TTS最後產出的歌詞時間。當你覺得這一句歌詞跟下一句歌詞中間有間隔時,請不要客氣地將他們中間增加一個斷行吧。否則的話請千萬不要加入沒有意義的斷行喔!

加註完時間標籤之後,請切回歌詞編輯模式作微調。

最後結果如下:

[00:00:00](せーの)

[00:00:89]でもそんなんじゃダメ

[00:02:77]もうそんなんじゃホラ

[00:04:69]心(こころ)は進化(しんか)するよ

[00:07:16]もっともっと

[00:08:70]

[00:24:73]言葉(ことば)にすれば消(き)えちゃう関係(かんけい)なら

[00:27:03]言葉(ことば)を消(き)せばいいなって

[00:28:96]思(おも)ってた?恐(おそ)れてた?

[00:30:60]だけどあれ? なんか違(ちが)うかも?

[00:32:69]千里(せんり)の道(みち)も一歩(いっほ)から

[00:34:55]石(いし)のように硬(かた)いそんな意志(いし)で

[00:36:87]塵(ちり)も積(つ)もれば山(やま)と撫子(なでしこ)?

[00:38:98]私意(しい)抜(ぬ)きでいや死(し)ぬ気(き)で

 

[00:40:85]ふわふわり ふわふわる

[00:43:80]あなたが名前(なまえ)を呼(よ)ぶ

[00:46:13]それだけでじゅうえうかぶ

[00:48:74]ふわふわる ふわふわり

[00:51:75]あなたが笑(わら)っている

[00:54:02]それだけで笑顔(えがお)になる

[00:56:75]神様(かみさま)ありがとう

[01:00:54]運命(うんめい)のイタズラでも

[01:04:68]巡(めぐ)り合(あ)えたことが

[01:08:55]幸(しあわ)せなの

 

[01:12:53]でもそんなんじゃダメ

[01:14:68]もうそんなんじゃホラ

[01:16:68]心(こころ)は進化(しんか)するよ

[01:19:13]もっともっと

[01:20:74]そうそんなんじゃヤダ

[01:22:68]ねえそんなんじゃまだ

[01:24:73]私(わたし)のこと見(み)ててね

[01:26:99]ずっとずっと[01:28:58]

7. 調整格式

預設的字幕顯示格式是黑框白底。為了因應這個可愛的歌曲,我們來把他換成粉紅底吧!

image

首先先取消「使用預設的字幕顯示格式」的選取勾,下面的進階選項就會顯示出來。再找到「主要顏色」的選項,你可以在右邊的框輸入六位數的RGB碼,或是使用下方的選取器來選擇顏色。

image

顏色我稍微挑了靠近紫色的深色,當最後影片用投影機放映的時候會再淡一點。右邊的預覽文字可以作為參考。實際上還是要等製作出SSA檔案之後在確認吧。

8. 執行輸出

image

請直接到網頁最下方找尋「結果輸出」按鈕,點下去吧。

 image

當程式分析完畢之後會顯示「done」的提示音。下面的表單則是寫著輸出的SSA檔案內容囉。

9. 儲存成SSA檔案

image

請複製字幕檔案原始碼,貼到記事本當中並且儲存。注意儲存時,存檔類型必須是「所有檔案」,而編碼必須選擇「Unicode」。檔名需要跟影片相同,而副檔名則是「ssa」,例如我影片檔名叫作「化物語 第10話OP(HD).mp4」的話,存檔的檔名就應該是「化物語 第10話OP(HD).ssa」。

你可以下載結果輸出的SSA檔案來看看最後會輸出成什麼樣子。

10. 測試播放

image

image 你可以開啟你的Windows Media Player來播放看看。如果有正確安裝DirectVobSub的話,播放影片時應該就能自動載入SSA字幕。同時Windows工具列右下角還會有綠色箭頭,表示DirectVobSub運作中(如右圖)。

要注意的是,DirectVobSub即時把影片跟字幕混合的作法非常消耗電腦資源,特別是CPU的速度。要是你覺得影片跟聲音對不上了,除了升級電腦配備之外,你可以考慮把影片先壓縮成低品質低解析度的測試用影片,或是直接作一次跟字幕檔結合的壓製影片來檢查成果。此外,這種即時把影片檔跟字幕檔混和處理的影片是沒辦法用Print Screen擷取畫面的,因此實際上我是使用TMPGEnc Plus開啟此影片再截圖的。


結語

TTS是非常複雜的。

除了上述教學的兩行左右格式之外,還有單行模式跟註解格式。當慢歌時我們會使用單行模式;而有口白之類的歌詞,則會使用註解模式,再跟主要歌詞貼在同一個檔案裡面。以前我在社團有寫過詳細的教學,等我找到之後再放出來看看吧。

因為有了TTS,讓製作歌詞字幕變得簡單。但是除了字幕檔之外,還有製作MAD影片、影片跟字幕檔壓製結合、製作DVD影音光碟等程序,才能做出動畫OPED放映會能夠播放的影片。雖然很辛苦,但也是非常有趣的。有興趣的學弟妹請務必參加輔大動漫電玩研習社的製作教學活動吧!

那就先這樣囉。

(more...)

以IE Tester使用Timemark to SSA程式

布丁布丁吃布丁

以IE Tester使用Timemark to SSA程式

image

我在輔大動漫社時為了動畫OPED放映會所製作了卡啦OK歌詞式SSA字幕檔案產生機Timeamark to SSA (簡稱TTS)。TTS能夠以網頁中內嵌的Windows Media Player來播放影片檔案,一邊為影片檔案加上時間標籤(那時候我稱之為「Timemark」)。以具有時間標籤的歌詞為基礎,TTS可以從中產生出類似卡啦OK歌詞字幕的字幕檔案。除此之外,還可為歌詞加上拼音註解、調整歌詞的顯示格式、以及歌詞顯示與淡入淡出的時間。

  • Timemark to SSA 下載:miroko空間SkyDrive空間
    ※ 請下載到您的電腦,並用瀏覽器開啟電腦中的TTS網頁運作。

然而當時我程式的能力不足,TTS不能在IE6以外的瀏覽器正常運作。而且現在微軟已經逐漸想要把IE6逐出市場,所以以後可能都得依賴像IE Tester之類的Internet Explorer模擬器,才能用IE6的狀態執行TTS。

TTS計算時間標籤的方式實在是太過複雜了,難以去改版。當時的我投入這麼多心力撰寫的這支TTS,到現在我還是覺得很厲害。

(more...)

測試一下Pixelpipe!

布丁布丁吃布丁

1 Comments

測試一下Pixelpipe!

(more...)

今天也是好天氣

布丁布丁吃布丁

0 Comments

今天也是好天氣

颱風呢?外環氣流呢?
手機e-mail發Blog測試中!
(more...)