顯示具有 資訊_unixLike 標籤的文章。 顯示所有文章
顯示具有 資訊_unixLike 標籤的文章。 顯示所有文章

2024年7月10日 星期三

以 MSYS2 在 Windows 構建 Translate Shell 的環境

2024年7月10日 星期三

上個月底幫小孩抓了英文套書的所有音檔,為了方便檢索,利用 OpenAI Whisper 轉好了字幕檔,接著又想弄個雙言的字幕檔,連聽、讀的小工具都寫好了;哈!像滾雪球一樣,愈玩愈大。

在尋找能批次翻譯的工具時,發現了這個 Translate Shell

看中它的原因有兩個,它可以選用 Google 或是 Bing 來進行翻譯,還能將文字轉合成語音(TTS)後的檔案直接儲存。Google TTS 儲存成 MP3 之前玩過,Bing TTS 轉存以前玩過較複雜的,但 Translate Shell 的看起來較簡單。但是的但是,試過才發現 Translate Shell 中的 Bing TTS 抓取程序已經不能用了。不過!研究過以後,我已經知道目前 Bing TTS 的擷取程序了,而且也以 Python 跟 JavaScript 實作過,要轉為 Traslate Shell 的 gawk 語法,也不是難事。

針對 Bing TTS 的程序修正過以後的版本放在這裡:

Translate Shell 滿特別的地方是它使用 GNU Bash 的環境,執行 GNU Awk 的指令來完成翻譯或是抓取 TTS 合成語音。這兩樣如果是在 Unix like 中,要安裝及使用,實在太容易了。但是在我的 Windows 7 中,雖然有 bash ,也有 gawk,但試了好幾天,總是看得到誤錯訊息,而看不見翻譯結果。本來已經放棄 Windows,改到 Mac OS X 、 Linux Mint 跟 Google Colab 中去測試我修改好的 Translate Shell 了。重新再找 Windows 7 的解決方案時,看到了一個對我來說很新鮮的東西 「MYSYS2」 :

它可以在 Windows 建構一個誇平臺的開放環境,不但有我需要玩 Translate Shell 的環境,安裝完,佔的磁碟空間也不大。那有沒有支援 Windows 7 呢?幸好!舊版的是可以安裝的。詳細說明在官網中:

支援 Windows 7 的最後版本在這裡下載:

安裝完,測試了一下,在 MSYS2 中可以正常執行 Translate Shell ,這樣子我修改程式就不用在不同系統中切來切去了。

在 Windows 中想編譯 Translate Shell 可以下這樣的指令:

gawk -f build.awk build -target=bash -type=release

成功的話,可以在 build 目錄中找到 trans 這個檔案。

在 MSYS2 中執行 Translate Shell

Translate Shell 以這樣的指令可以製作中文字串的合成語音:

trans -e bing -b -speak -no-translate -no-play -download-audio-as tts.mp3 zh-TW:en "我現在要來測試一下語音合成的功能,將語音儲存為MP3檔案"

參數記錄一下:

  • -e bing : 使用 Bing 來進行翻譯或合成語音(不指定時,使用 Google)。
  • -b : 使用精簡模式,顯示較少的結果。
  • -speak : 說出合成原文的語音;如果想要播放的是翻譯的語音,就用 -p 的參數。
  • -no-translate : 只合成語音,不翻譯。
  • -no-play : 不播放語音。
  • -download-audio-as : 將語音儲存為指定的檔名(本例是儲存為 tts.mp3)。
  • zh-TW:en 原文為繁體中文,翻譯為英文(雖然本例不進行翻譯)。
後續再來分享 HTML5 支援多語字幕的 MP3 聽讀小工具,及以 Python 批次呼叫翻譯、下載合成語音的小工具。

相關連結


2018年10月17日 星期三

LinuxMint : 解決發不出聲音

2018年10月17日 星期三
上週把舊筆電上的 LinuxMint 18 改安裝為 LinuxMint 19,在測試要給小孩玩的教學軟體後,才發現筆電的喇叭發不出任何音效。改用 Windows XP 開機,音效卻又正常。本來以為是 BIOS 太舊的問題,想辦法更新了 BIOS ,問題依舊。只好再重新認真的找答案。

後來用「linuxmint enable sound」的關鍵字, Google 到一部影片教人家怎麼更改音效卡的輸出設定。哈!在一臺聽不到聲音的筆電上看影片,只能看圖說故事囉!不過,有了大概的方向後,試了一下,真的讓筆電「開金口」了!

關鍵在這部筆電在安裝完 LinuxMint 19 以後,預設的設定,居然是「Off」,然後圖示並不是顯示為關閉的狀態,害我怎麼調音量都沒有用。

底下留一點筆記,以免日後又,「迷路」了。


1.先用滑鼠點一下 LinuxMint 19 畫面右下角「音量控制器」中的「混音器」



2.進入「混音器」(Volume Control) 的設定畫面以後,按一下「Configuration」


如果像上面的「Profile」被設為「Off」,就準備換為其它選項。


3.我將「Configuration」的 Profile 更換為「Analog Stereo Duplex (unplugged)」



4.換好 Profile 以後,就可以關閉設定視窗。


下面是更換 Profile 以後,音量控制選項的畫面



除了輸出,還多了麥克風的選項可以設定。最重要的是筆電在 LinuxMint 19 下,終於可以播放音效了。



2018年10月13日 星期六

LinuxMint : 中文化 chromium-browser-l10n

2018年10月13日 星期六
如果 Linux Mint 安裝完 Chromium 後,界面並不是中文的,沒關係,安裝  chromium-browser-l10n 即可解決問題。

打開終端機,並在裡面執行以下的指令:

sudo apt-get install  chromium-browser-l10n

安裝完,重新啟動 Chromium ,即可出現中文的選單與訊息了。

2015年7月29日 星期三

LinuxMint : 重設 root 密碼

2015年7月29日 星期三
好一陣子沒用 LinuxMint ,上回安裝的 root 密碼忘記了,只好想辦法進入系統的單機模式重設。將過程記錄一下。

1.開機時按住鍵盤的 [Shift] 鍵,進入 Grub 的選單。



2.將光棒移到預設的第一項後,按一下鍵盤的 [e] 鍵來編輯啟動的參數。


3.將游標移到後面,找到類似圖片中的這一行 (/boot/vmlinux-......)


4.將游標移到前述那行的最後面,加入「init=/bin/bash」


5.按鍵盤的 [F10] 鍵來開機進入單人模式,最後應該會出現井字號「#」


6.準備更換 root 的密碼

先執行底下的指令,讓根目錄以可讀寫的模式重新掛載:

mount -o remount,rw  /

執行底下指令來更換 root 的密碼:

passwd root

換好後,執行底下指令確保資料通通寫入磁碟:

sync

最後,執行底下的指令來重新啟動系統:

reboot -f




2014年9月24日 星期三

Scratch : 在 Linux 中使用 wii2scratch

2014年9月24日 星期三
上一篇「Scratch : wii2scratch + Wiimote 當小貓咪的控制(感應)器」中主要介紹如何在 Windows 中以 wii2scratch 來幫忙傳 Wiimote 的遞訊息給 Scratch,因為 wii2scratch 是以 Java 開發的,其實它也可以在 unix like 的作業系統中玩。底下改以在 LinuxMint 中的實作來說明,相信其它的 unix like 平台應該也類似。

2014年7月30日 星期三

LinuxMint : Chromium 無法切換中文輸入法

2014年7月30日 星期三
用了幾天的 Linux Mint 才發現在 Chromium 中無法切換中文輸入法,gcin 原本設定按 [Ctrl + 空白鍵] 進行中、英文輸入法的切換,在 Firefox 及其它軟體中都可以正常運作,獨獨 Chromium 切成中文輸入法以後,馬上又恢復成英文。雖然 Firefox 還是可以使用,總覺得有缺憾。試了半天,在 Linux Mint「軟體管理管理中心」裡還有其它有關 gcin 的模組,只要再安裝「gcin-gtk3-immodule」,並登出後再重新登入,即可解決在 Chromium 無法切換中文輸入法的問題。


這個問題在 iBus 也會發生,但是它的問題似乎更嚴重,會整個卡住,對它實在不了解,反正從以前就習慣用 gcin 了。

另外,查了一下 ezgo 11 用的是什麼輸入法框架,它用的「hime」,它除了「gtk3」的模組,還安裝了「qt4」的模組。反正下次再有問題時,把其它的 immodule 也安裝一下。

在 gcin 的設定中有「酷音輸入法」的選項,但沒有安裝「gcin-chewing」,又選取了,每次在設定 gcin 時,都會蹦出找不到 chewing-module.so ...... 的訊息,真要使用酷音輸入法,記得要安裝一下。

相關文章




2014年7月28日 星期一

LinuxMint : 安裝 Broadcom b43 wireless driver

2014年7月28日 星期一
Aspire 5020 內建的無線網卡用的是 Broadcom 的晶片,Linux Mint 並沒有直接驅動它,如果想使用,只好手動來安裝驅動程式囉!在 Linux Minit 17 中的「驅動程式管理員」中雖然有偵測到 Broadcom 網卡的存在,千萬別安裝它建議的驅動程式,我裝了以後發現沒用,之後再用下面要介紹的方法也無解。糟糕的是不知道怎麼把錯的驅動程式移除,只好整個系統重灌再試,所以,記住下圖中的是「不使用這個裝置」,可別像我走了冤枉路。

不使用這個裝置哦!

LinuxMint : 安裝中文輸入法 gcin

家裡有幾台從同事那裡接收來的舊筆電,其中一台的記憶體只有 512MB,另一台更少,256MB 還被拿部份給螢幕顯示用。試著讓它們跑 Linux,512MB 的裝 ezgo 就有一點吃力,另外一台更不用說,跑跑 Lubuntu 舊版的也滿勉強的。好久沒認真的玩 Linux,一口氣下載幾個號稱輕量級的 Linux :LinuxMint Xfce 16 bit、Lubuntu 14、Lubuntu 12 txde、Bodhi Linux、PepperMint、Pubbpy Linux(Slackware、Ubuntu) 和 Arch Linux。


兩天就一直反覆的燒光碟、安裝系統,終於找出較適合的版本,512MB 的那台安裝 Linux Mint Xfce (16-bit),而 256MB 的那台則是安裝 Arch Linux 搭 LXDE。還記得第一次玩 Linux 是由 Slackware 3.x 開始的,之後就跳到 FreeBSD,好久沒那麼認真的玩 Linux。

聽說 Linux Mint 滿好,一直沒有去玩玩看,第一次的體驗,感覺真的不錯!不過,就一點很納悶,為什麼預設使用中文環境,卻沒有中文輸入法可以使用?為了要能輸入中文,花了我不少時間和精力去裝東、裝西,結果,簡單的方式是要把「gcin」裝上去,一下子就可以搞定了啦!底下將過程稍作記錄。

2014年7月13日 星期日

EzGo : 以 NQC 寫 LEGO RCX 程式

2014年7月13日 星期日
多年前買的 LEGO 9794 動力機械組中附的是 RCX 1.0,原廠並沒有給 Linux 用的寫程式工具,不過有 LEGO 的愛好者開發了其它可跨平台使用的工具。「NQC」是其中一種替代的工具,我們可以在文字編輯軟體中用類似 C 語言的語法來寫 RCX 的控制程式,再利用 nqc 編譯並將程式傳給 RCX,雖然不像 Windows 下的 ROBOLAB 有圖形化的操作界面,但是能直接在 Linux 下寫 LEGO 的程式,也是不錯的選擇。

2014年6月22日 星期日

EzGo : 讀取 Mac 的 HFS 分割區

2014年6月22日 星期日

看到好友新竹瘋浪客在網路上問如何讀取無法開機的 Mac 硬碟,把之前 MBP 換下的硬碟拿來用 EzGo 試了一下,安裝「hfsprogs」即可讓 Ubuntu base 的 EzGo 11 多了個「hfsplus」的檔案系統可以 mount Mac 的 HFS 分割區。

安裝


先在 EzGo 的終端機下輸入並執行以下指令來安裝軟體:

sudo apt-get install hfsprogs

手動掛載


安裝完,我們就可以利用 mount 指令在終端機中下指令將 Mac 硬碟中的分割區掛載在系統中。像我的 Mac 硬碟以 USB 接上 EzGo 後,用 dmesg 查到它的裝置「代號」為 /deb/sdb ,而想查看的 HFS 分割區在 /dev/sdb2 ,可以執行以下的指令來掛載該分割區:

sudo mount -t hfsplus -o force,rw /dev/sdb2 /mnt

如果成功,就可以在 /mnt 中看到 Mac 硬碟中的資料了。

自動掛載


如果嫌在終端機中下指令太沒有「親和力」,那就得在系統設定檔中加一點「料」。先來看看,在沒有 mount 的狀況下,我們以 EzGo 的「檔案總管」試圖開啟 Mac 硬碟的情形:


在「Dolphin」的畫面中,紅底的訊息中其實已經提示我們,只要幫「/etc/filesystems」這個檔案裡加點「料」,下次它就可以幫我自動掛載 hfsplus(HFS) 格式的分割區了。

查了一下,我的 EzGo 11 中並沒有「/etc/filesystems」這個設定檔,我們可以在終端機中執行底下的指令來新增(或修改)該檔案:

sudo nano /etc/filesystems

然後在裡加入底下這一行:

hfsplus

好了就按 Ctrl + X 後再按 Y 儲存檔案。

將「檔案總管」關閉並重新開啟,點選 Mac 的硬碟,就會自動掛載 HFS 的分割區囉!


在終端中執行 mount 指令查看一下:


HFS 分割區以「hfsplus」的格式來掛載,不過,它是用唯讀的模式「ro」掛載的,所以,只能讀取,無法寫入。

參考網頁






EzGo : 更新時出現 "404 Not Found" 的錯誤訊息

接收同事一台不要的 ASUS M9V 舊筆電, 換上我自己的 20GB 舊硬碟後, 灌了 EzGo 11, 更新時卻出現了 "404 Not Found" 的錯誤訊息:


查了一下, 應該是該 source 官方已不支援了, 把有問題的那兩行註解掉就好, 執行底下的指令來進行修改:

sudo nano /etc/apt/sources.list

將下列兩行以井字號註解掉:

 deb http://extras.ubuntu.com/ubuntu raring main
 deb-src http://extras.ubuntu.com/ubuntu raring main


改好以後, 按 Ctrl + X 後再按 Y 儲存, 再度進行更新時就不會有錯誤訊息了。


2014年6月10日 星期二

Tools : 磁碟救援工具 ddrescue & PhotoRec

2014年6月10日 星期二

使用電腦有一件事一定得牢牢記住:「備份,備份,再備份」。現在的USB隨身碟也好,記憶卡也好,經常會聽到有人資料突然不見了,硬碟則是常有壞軌,甚或更嚴重,根本連偵測都偵測不到的情形發生。如果有養成好習慣,除了電腦的硬碟中有一份原始檔案,行動儲存裝置有備份,甚至「雲端」也來一份,相信就不怕那些不知何時會引爆的「炸彈」了。

最近有好幾次救援資料的經驗,由於當事人都沒有備份,只能死馬當活馬醫。除了類似 Final Data 這種商業軟體,我也試著在網路上找免費甚至「開源」的工具來解決。用過「GNU ddrescue」、「PhotoRec」後,覺得這兩個工具值得推薦,前者可以幫我們將有壞軌的磁碟備份成「映像檔」,而後者則可以幫我們將消失的檔案「撈」回來,至於能救回多少檔案,可能得看看運氣好不好囉!

2014年5月22日 星期四

Tools : youtube-dl-gui 下載影片的利器 Part II

2014年5月22日 星期四
補記
本文為 2014年的舊文,youtube-dl 建議改用尚有持續發展的 yt-dlp :
如果想直接使用,可以參考 2023年3月較新的這一篇:
-----
原文開始

有網路真好,但是遇到網路不通,或是碰到龜速般的網路是又令人苦惱,最安心的做法當然是有「備」無患。上課前將要使用到的影片預先下載回來,管它是學校網路掛了,還是什麼「哇擱」Net 斷了、廢了,「雲」飄走了,備好的檔案一開就能上陣!


之前用過很多下載影片的方法,網站的、瀏覽器擴充功能的……,因為同事想找一個操作簡單、畫面單純的 Youtube 影片下載的方法給她活到老學到老,積極努力學電腦的長輩使用,花了點時間研究 youtube-dl 這個安裝過,卻不曾好好用過的厲害工具。為了讓老先生可以做到複製網址、貼網址,最後再按個「下載」鈕就可以輕鬆下載影片,本來我是利用 vbs 為 yotube-dl 這個 Python開發的工具,寫了個陽春的圖形界面,不過,這樣一來,可埋沒了 youtube-dl 的強大功能。後來又想用 C# 寫個有進階選項的 youtube-dl GUI,加入更多 youtube-dl 的功能選項,不過,看到網路上已經有人利用wxPython開發可跨平臺的 youtube-dlG (youtube-dl-gui) 當 youtube-dl 的前端圖形操作界面,決定好好用它就好啦!不傷神寫程式了。

2014年4月15日 星期二

Tools : youtube-dl 下載影片的利器

2014年4月15日 星期二

補記

本文為 2014年的舊文,youtube-dl 建議改用尚有持續發展的 yt-dlp :
如果想直接使用,可以參考 2023年3月的這一篇:
-----
原文開始

之前利用「TubGet」來下載 Youtube 上的影片,覺得還滿簡單好用的,只是最近不知怎麼了,已無法下載影片或是 MP3。同事問到還有什麼好用的工具可以下載影片,回想起上次在 Raspberry Pi 上安裝 rPlay 玩 AirPlay mirroring 時,它特別提醒要安裝 youtube-dl ,並更新為最新版,這個 youtube-dl 可是個好物,可以利用它來下載常見影音網站中的影音,可以下載單支影片,也支援播放清單及批次下載,功能強大,如果它有提供圖形界面就更完美了。

2014年3月2日 星期日

Raspberry Pi : tcpdump & tcpflow

2014年3月2日 星期日
為了想觀察某個軟體是否有暗送資料,在 Raspberry Pi 上安裝封包監聽工具 tcpdump,執行底下的指令即可:

sudo apt-get install tcpdump

這個工具以前在 Linux 和 FreeBSD 上玩過,哈~久沒用,忘得差不多了。想監聽某個 IP 的封包就執行:

sudo tcpdump ip host xxx.xxx.xxx.xxx

不過,一堆「外星文」充斥著畫面,滿嚇人的。


另外有個使起來較輕鬆的「tcpflow」,執行底下的指令來安裝:

sudo apt-get install tcpflow

tcpflow 的用法和 tcpdump 很像,好處是會自動將封包資料處理過並儲存在檔案中,以 HTTP 協定來說,雙邊傳送什麼資料,會分別儲存起來,方便我們觀察。例如想觀察某 IP 的封包,就執行:

sudo tcpflow ip host xxx.xxx.xxx.xxx

這東西真好用,看到我想知道的了。用過這種工具後,就可以明瞭為什麼要盡量使用有加密的服務,實在太恐怖了!







Linux : EzGo Grub 開機選單保留前一次的選擇

花了一天,將同事不要的舊筆電整理了一下,目前灌雙系統,暫時以 EzGo 11 為主,Windows XP 為輔。雖然硬碟空間不大,以後放在教室裡,還是可以給學生使用。

在調整 Windows XP 時,每次重新啟動就得顧 Grub 的選單,不然就自動跑進 EzGo 裡了,有一點困擾,只好動一點手腳,改一下 EzGo Grub 的預設值,讓它可以記住最後選的是哪一個系統,下次就以那個當預設值。

進入 EzGo 後,開一個終端機,執行以下的指令編輯設定檔:

sudo nano /etc/default/grub

將裡面的:

GRUB_DEFAULT=0

改成:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

第一行是讓預設的選項變成「儲存的」,而第二行則是告訴 Grub 要儲存選的項目。

好了就儲存檔案並執行底下的指令讓它生效:

sudo update-grub

接著就可以重新開機試試囉!




2013年12月15日 星期日

PHP : smbwebclient.php 2.9 增強版

2013年12月15日 星期日
如果您的主機只有提供存放網頁服務,卻沒有 FTP 服務可用;又那麼剛好,該主機有提供 Samba 給內部網路連線存取檔案,最最湊巧的是 web server 有 PHP ,這樣,smbwebclient.php 可以是 FTP 的替代方案。

不過,smbwebclient.php 有個不算小的缺點,如果想要 upload 整個資料夾的檔案到主機上,得一個個檔案用滑鼠去點、點、點,應該會加快把手給廢了!

哈!我最近就是遇到這樣的情形,弄得我有一點煩了,於是花了大半天,好好的研究了一下 smbwebclient.php 的程式碼及 smbclient 的參數,將它稍微增強了一下。

2013年10月1日 星期二

Unix like : 利用 dd 去掉檔案前 64 bytes 的方法

2013年10月1日 星期二
為了要研究「u-boot/PPCBoot image」檔案中的內容,必須先將檔案的前 64 bytes 去掉,才能將它還原為 gzip 的壓縮檔。最簡單的方法是執行底下的指令:

dd bs=1 skip=64 if=image.dat of=image-no-header.gz


不過,一個 byte ,一個 byte 的寫入,要等很久吔!

底下的方法更妙:

dd if=image.dat bs=512k | { dd bs=64 count=1 of=/dev/null; dd bs=512k of=image-no-header.gz; }


它一次讀寫 512k ,但是前 64 bytes 輸出給 /dev/null,剩下的才寫入 image-no-header.gz 檔案中。

同樣是一行解決,速度差很多!

2013年9月30日 星期一

修正 SMCWBR14S-N4 DHCP 的 default gateway

2013年9月30日 星期一
幾年前在網路買了臺可以將螢旋轉變成 "平板電腦" 的 11' 筆電 ,在現代的平板還沒流行前,很酷吧!有觸控螢幕,拿在手上就可以點~點~點,不過,和現代的平板比起來,它重到根本不想拿在手上。當時隨機送了一臺 SMCWBR14S-N4 無線網路基地台,先不談它好不好,才用一個月左右,無線網路的部份就不能用了。本來把它丟到一旁(當時沒有很大的無線網路需求),後來在保固內,還是心有不干的將它寄回原廠修理。結果修了好久,還沒寄回來之前,已經因為等不及,買了別廠牌的。等 SMCWBR14S-N4 寄來,就直接放在教室裡用囉!

由於不想干擾學校的 DHCP  server,一直都是使用固定 IP。後來在測 Raspberry PI 時,沒有 DHCP 實在不方便,於是試著將 DHCP server 打開了,但是一直很納悶,為什麼  SMCWBR14S-N4 在 bridge mode 時 DHCP 雖然有派 IP ,但是 client 端似乎都無法正常運作。今天仔細的看了一下 DHCP 派來的網路設定,它居然是將 defautl gateway 設到  SMCWBR14S-N4 自己「有線網路」「區域網路」的網路界面的 IP,而不是在 Web 界面指定的 default gateway (其實 SMC DHCP server 的設定中並沒有 default gateway 這項,直覺的認定它會使用「有線網路」「區域網路」的設定,不都是這樣嗎?)。


找不到什麼方法可以再進一步設定 DHCP server,今天突發其想,將基地台的設定匯出看看,哇!在下載回來的設定檔裡,居然看到一行「dhcpGateway」。

好奇的將「dhcpGateway」設成正確的內容,儲存檔案後再利用「匯入設定」將新設定值匯入給  SMCWBR14S-N4 ,等它重新啟動以後,在 client 端將 DHCP 釋放後重新抓設定。

Yes ! 成功了!。

本來在想,如果還不行就直接解開它的 image 來改,看來,用不到這一招了。



2013年6月23日 星期日

Raspberry PI : 利用 dump & restore 備份整個系統

2013年6月23日 星期日
我的 Raspberry PI 雖然已經使用 2A 的變壓器,如果 USB 裝置吃電兇一點的,拔插時仍常遇到自動 reboot 而掛點的慘劇。預防這樣的事情,最簡單的當然是將系統備份起來,不過,16GB 的 SD 卡明明就只用不到 3GB ,備份完的 image 卻有 16GB ,佔了不少磁碟空間,還原時也需要較久。如果以自訂大小的 image 檔案,經過分割、格式化後,再利用 dump & restore 來複製系統中的檔案,這樣就可以讓 image 比較接近實際使用空間的大小。很久沒玩 Linux ,本來卡在如何讓分割區可以一次下指令完成,看了下面這篇文章後,豁然開朗:


原來 Linux 還有「parted」、「losetup」和「kpartx」這三個好東西,以前在玩 FreeBSD 時,好像沒印象。它們可以處理「虛擬磁碟」及磁碟分割的問題,內容複製的部份就交給 dump & restore 。底下先做主要步驟的解說,最後只要將各個指令放在一個 script 檔中,想重新備份時,執行 script 的一道指令就可以解決。
 
雄::gsyan © 2009. Design by Pocket