跳到主要內容

發表文章

目前顯示的是 2014的文章

找回由 SSH 做 uBuntu 升級時遺失的連線

uBuntu 14.04 LTS 釋出已經有一小段時間,決定將遠端機房中上一個 LTS 版的 uBuntu 12.04 升級上來。uBuntu 現在做的很貼心,只要透過一個簡單的指令就能夠升級,由 SSH 連線至遠端主機,在 command line 輸入下面的指令: $ sudo do-release-upgrade 執行後是一個互動式的升級過程,逐一的檢查與詢問項目後才進行升級的動作,由於下載更新的時間較長,利用等待的時間出去覓食,回來之後就發生杯具了!互動的過程卡在一個詢問步驟...而且還不能動 XD,沒錯,因爲 SSH connection timeout。更新到一半也不能重新開機,否則問題可能會更大。 很幸運的,uBuntu update 程序的設計者似乎瞭解使用者這樣的「意外」!將系統版本的 update 放在 screen 裡執行。GUN screen 是一種在 Server 上執行的終端,只要 screen 本身沒有被終止,就可以繼續恢復原來的內容。 所以,我重新以 SSH連上了 Server 並且執行了下面的指令來觀察 Server 上現有的 screen session 有哪些: $ sudo screen -list There are screens on:         9129.ubuntu-release-upgrade-screen-window       (10/07/2014 08:50:08 PM)        (Attached) 2 Sockets in /var/run/screen/S-root. 可以由列表發現目前仍在執行的 screen session 名稱,如果我們要引用回原來的 session session,只要使用「-d -r [session擁有者]/[pid.tty.host]」的方式: $ sudo screen -d -r root/9129.ubuntu-release-upgrade-screen-window 很感動的,我拉回了原先因 timeout 僵住的詢問步驟,而且可以繼續下去,也完成了整個系統版本升級的過程。

LibreOffice 穿新衣,Firefox 好朋友

自由的好處就是可以隨心所欲的客製化,去年曾經發表一篇 如何修改 LibreOffice 圖示 的文章,現在除了更換 Icon 還可以讓 LibreOffice 穿上 Firefox 的漂亮外衣。 我的環境如下: OS: uBuntu 14.04.1 LibreOffice 版本:v.4.2 LibreOffice 原本素雅的外觀如下圖所示, 在 Tools > Options > LibreOffice > Personalization 選擇 Own Theme,點選右方的「Select Theme」開啓對話視窗。 在對話視窗中,點選 Visit Firefox Themes 開啓 Firefox 的網站 選擇喜歡的主題,複製網址內容貼到 Theme address 下方的欄位中,在這裡我選用的主題為: https://addons.mozilla.org/en-US/firefox/addon/retro-color/  將這串網址貼到 Theme address 欄位中。 就完成穿上新外衣的動作了! LibreOffie 4.2 版已經包含至 uBuntu 14.04 官方的套件庫中,如果要將之前文章所提的 Icon theme 更換,只需要使用 apt-get 來安裝就可以了。這個簡單黑白的 Icon theme 現在的名稱為 sifr,安裝方法在 terminal 輸入: $ sudo apt-get install libreoffice-style-sifr 安裝後在 Tools > Options >LibreOffice > View,由右側的「Icon size and style」下拉選單中,選擇「Sifr」按下 OK 確認,就可以換爲這純粹黑白又好看的 Icon Theme。

備份神級輸入法引擎 RIME 使用者字典

注音輸入法一直以來都是我主要使用的中文輸入法,前一陣子心血來潮想多學一個輸入法以備不時之需,如在沒有注音符號的鍵盤上,也能夠順利的輸入(好卑微的心願 XD)。爲了期待能同時加強英文輸入,選擇了漢語拼音輸入法,因爲漢語拼音最接近注音輸入法,轉移上比較可以微痛就好。 在 uBuntu 的環境中,一開始是用 ibus 裡的拼音,但是 ibus 速度上慢上不少,於是換了一套許多使用者推薦的輸入法框架 fictx (Flexible Context-aware Input Tool with eXtension),真是一套穩定又快速的輸入法框架,用一次就愛上了! 在這個框架下,曾經嘗試了由 Android 移植過來的 Google 拼音(fcitx-googlepinyin)、集結雲端智慧的雲拼音(fcitx-cloudpinyin)、早期昇陽開發的拼音(fcitx-sunpinyin)還有原生的漢語拼音(fcitx-pinyin),可惜的是這幾個輸入法的基礎都是建構在簡體中文的基礎上,當我們要對應至繁體字的時候,有些字就會發生錯誤,如「才」->「纔」,在輸入上帶來相當多的不便。在失望之際,看到 一篇文章 介紹跨平臺的神級輸入法引擎 RIME 中州韻輸入法引擎,能準確的輸入正體中文的輸入法引擎,且其輸入法引擎的演算法符合拼音、注音、五筆等等。 這是一套跨平臺的輸入法引擎,在 Linux 稱爲「中州韻」、Windows 稱爲「小狼毫」、MACOS 上稱爲「鼠鬚管」,這個引擎的好處請參考上述連結文章的介紹,在此不另做介紹,但小弟我一試成主顧了! 在 uBuntu 14.04 開始 fcitx 已收錄至官方的套件庫,安裝上變的更爲方便了,輸入以下的指令安裝即可完成: $ sudo apt-get install fcitx fcitx-rime 安裝後開啓「Language Support」將 Keyboard input method system 改爲 fcitx,重新開機就可以使用 fcitx 當作輸入法框架,RIME 作爲輸入法引擎,而我使用的是其中的「朙月拼音」。 在 Linux 中「中州韻」缺少 GUI 的界面來備份使用者的字典檔,每次重新安裝系統我們都無法保留下過去的學習習慣。關於 RIME  的備份方式,在網路上很少看到討論,在一篇對

Python MySQLdb SQL裡含有特殊字元的處理

在文本的處理中,無論是網路上抓取的資料,還是由實際資料轉換而來的文本,已結構化處理的資料我都習慣放至資料庫中儲存和管理。一直以來都很習慣的使用 PHP 語言來做資料的整理和處理,一方面是因爲最熟悉這個語言,一方面是 PHP 也可以很容易的做成網頁來呈現結果。 而有些近來處理的資料,需要經過中文斷詞(中文分詞)的處理,雖然 PHP 已有人發展出 SCWS 中文分詞工具,主要運用在 GBK 和 UTF-8 上,對於繁體中文的斷詞目前則不如其他工具來的好用。也因此我最近選擇了 Python 作爲文本處理的主要語言,使用 JieBa 這套斷詞工具(斷詞的細節在這裡我就不多琢磨)。以往 PHP 操作 MySQL 的方式現在要改成 Python 了,也還好 python 有 MySQLdb Library 來幫助操作。 在 PHP 中爲了避免 Single quote 或是 double quote 等特殊字元可能造成 SQL injection,多半會使用  addslashes() 或 mysqli::real_escape_string() 函數來事先處理。而在 python 的 MySQLdb 中也有雷同的函數 MySQLdb.escape_string() 可是使用來跳脫特殊字元,我所處理的文本資料是 utf-8 編碼,在第一次使用就出現了如下的錯誤訊息: MySQLdb.escape_string(sql) UnicodeEncodeError: 'ascii' codec can't encode character... 讓我傷透了腦筋以爲是 unicode 造成的問題,陸續找了其他像 replace 或 regular expression 的方式來替換,也試過字串以參數代入的方式,但都無法盡善盡美。 最後我又回到了這個錯誤訊息,錯誤訊息總是會有解答的 Hint :)。 原來 MySQLdb.escape_string() 試圖將 query 的內容 encode 成字串,預設使用的 encode 編碼是 ascii,而我們所使用的 query 無法被 encode 成 ascii 而產生錯誤。所以我們 必須告訴 MySQLdb 要使用的編碼是 utf-8 ,方法如下: MySQLdb.escape_s

安裝 MariaDB 10.1 與解決套件 unmet dependencies 問題

自從昇陽(Sun)公司被併購入 Oracle 之後對於很多原本的 Open Source 專案都有莫大的影響,加上 Oracle 公司本身主要的產品是資料庫,因此,許多使用者都開始感到擔心 MySQL 這個許多專案都愛用的資料庫軟體,有朝一日會開始朝向收費一途前進,MySQL 在去年的版本更新時偷偷更換了 GPL 授權一事( MySQL man pages silently relicensed away from GPL ),相信不少人的心爲之一振,萌生離去的念頭 。 Oracle 並不是第一次驅使使用者離去,已有 OpenOffice 和 OpenSolaris 的前車之鑑,於是決定開始先熟悉與嘗試由 MySQL 元老 Michael Widenius 發起的 MariaDB。其中 Oracle 帶來的風風雨雨和變動,網路已有不少網友心痛分享在此則不再多做贅述。 MariaDB 由一開始的 MySQL 分支,保持和 MySQL 相同的版本號以維持使用者對於兩個資料庫相容的認知。在 2013 年 4 月 SKySQL 和 MariaDB 的原開發公司 Monty Program Ab 合併 後,便共同開發下一代的 MariaDB。在今年 2014 年 3 月的時候釋出 MariaDB 10 的新版本號,由 5.5 直接跳至 10,也象徵著一個全新的開始。在 MariaDB 10 中主要新增了 3 個新的特色:( 參考資料 ) 新增高效複製功能,可以平行複製資料以及更先進的集體提交功能(Group Commit)。 增加原生NoSQL支援。新版增加了Connect 引擎來做外部資料管理。 內建分片(Sharding)功能,提升對分散式架構的支援。 在這次的安裝中,我選擇了 MariaDB 10.1 的版本號在 uBuntu 14.04 Desktop x64 中安裝。10.1 是建立在 MariaDB 10.0 和源自 MySQL 5.6、5.7 的功能以及一些新功能( 更新記錄 )。安裝方式是使用官方提供的方式,加入 Mirror 的 Repositories 來安裝( Repository Configuration Tool ),跟著步驟一個一個點選安裝即可。 不曉得之前是否有安裝其他軟體造成衝突,在 sudo apt-get in

在 uBuntu 中移動 MySQL 的資料存放位置

在 uBuntu 中,MySQL 的資料預設存放位置在 /var/lib/mysql 資料夾底下,有時候我們會因爲某些需求,將資料預設儲存的位置更改至其他位置。 在 uBuntu 中更改預設儲存位置的方法,除了修改 /etc/mysql/my.cnf 中的 datadir 路徑,還需要修改 /etc/apparmor.d/usr.sbin.mysqld 這個 AppArmor 設定檔,否則重新啓動 MySQL 的時候會出現失敗的錯誤訊息。 假設我們要移動的目標資料夾爲 /data/mysql,修改的方法如下: 暫時停止 MySQL 服務 $ sudo service mysql stop (or sudo /etc/init.d/mysql stop) 修改 my.cnf 設定檔,將 datadir 註解並填上新的路徑 $ sudo vim /etc/mysql/my.cnf # datadir = /var/lib/mysql datadir = /data/mysql 複製原先的資料到新的資料夾中 $ sudo cp -R -p /var/lib/mysql /data/mysql 修改 usr.sbin.mysqld 設定檔,將原本路徑爲 /var/lib/mysql 的都改到 /data/mysql $ sudo vim /etc/apparmor.d/usr.sbin.mysqld 重新啓動 AppArmor 與 MySQL 服務 $ sudo service apparmor restart $ sudo service mysql start 能夠順利啓動的話,就沒有什麼問題了!啓動後登入 MySQL 觀察一下。