2018年4月5日 星期四

Linux Mint 桌面使用散記 (五) 即時訊息軟體

在 Windows 底下有好多套常用的即時訊息軟體,如 Line、Skype、WeChat 等,這些軟體在 Linux 要怎麼辦?

最簡單的就是 Skype 了,Skype 官方就有 Linux 版本,去軟體管理員中搜尋 skype 安裝就行。

Linux 版 Skype 的功能與 Windows 版沒有兩樣,文字訊息、傳檔案、語音通話、視訊通話、群組通話、分享螢幕都可以做到,可以設定開機啟動,上線之後也會同步所有訊息。




其次是 Line,Line 雖然沒有官方的 Linux 版本,但是有 Chrome 應用程式的版本,安裝好 Chromium 瀏覽器之後,去應用程式商店搜尋 Line 並安裝就行。只是他不是獨立的應用程式,每次開機之後必須開啟 Chromium 瀏覽器,再點擊 Line 的圖示啟動,而且也不能設定成開機啟動,也不能自動登入,每次都必須輸入密碼。

Chrome 應用程式的 Line 無法語音通話,可以傳訊息、貼圖、檔案,也會同步舊訊息。



至於 WeChat,連 Chrome 應用程式都沒有了,只能用網頁版 WeChat。雖然有一個 open source 的 project 叫做 electronic-wechat 的,號稱是 Linux 版的 WeChat,但是他也只是一個瀏覽器,一啟動就開啟網頁版 WeChat 的頁面而已。

不管是網頁版還是 electronic-wechat,每次使用都必須用手機 WeChat 刷二維條碼,然後在手機上點確定登入才行,而且看不見舊訊息,只能看見這次開啟之後傳入與傳出的訊息。

至於其他的即時訊息程式,我很少使用,基本上不在 Linux 上使用也沒差了。

Linux Mint 桌面使用散記 (四) 中文字型

Linux Mint 安裝完中文支援,重開機之後赫然發現所有的選單、圖示、視窗文字都變成楷體字了!我不要楷體,要黑體啊!

上網搜尋有三種解決的方法:
  1. 刪掉楷體
  2. 停用楷體
  3. 設定字型替代
決定使用第三種方法,設定字型替代

參考這個網頁 http://www.cnblogs.com/zzyyxxjc/p/6279145.html 的作法設定字型替代清單,重開機之後,就正常了。

中文字型方面,有人把 Windows 下的細明體跟標楷體複製過來使用,但是我不願意這樣,所以還是設定楷體跟明體字型的替代清單。
這兩個字型的替代清單在
/etc/fonts/conf.avail/35-arphic-ukai-aliases.conf (楷體)

/etc/fonts/conf.avail/35-arphic-uming-aliases.conf (明體)

把常見的楷體都替換成 AR PL UKai 來顯示,把常見的明體/宋體都替換成思源宋體來顯示

2018年4月4日 星期三

Linux Mint 桌面使用散記 (三) VirtualBox

雖然筆電改用了 Linux,但是工作上還是需要 Windows,這就得依靠虛擬機器來幫忙了。安裝好 VirtualBox 之後,順利的啟動了先前在 Windows 10 上製作好的虛擬機器。執行工作上需要的開發工具也沒有問題,也能夠順利的偵錯。

但奇怪的是,怎麼也無法抓到電腦上安裝的 USB 設備,如晶片卡讀卡機等。經過幾番搜尋,發現必須要把目前的使用者加入 vboxusers 群組才可以,使用這個命令,將目前的使用者加入 vboxusers 群組。

sudo usermod -a -G vboxusers $USER

然後在 VirtualBox 中就能夠順利的使用 USB 設備了。

Linux Mint 桌面使用散記 (二) 中文輸入法

在 Linux 底下有很多套中文輸入法,如 gcin、iBus、fcitx、scim 等,中文輸入法的安裝與切換在 Linux Mint 底下非常容易,只要使用 系統設定 > 輸入法 就可以安裝各種輸入法,以及選擇要使用哪一種輸入法。

當然也可以用 apt 來安裝需要的輸入法之後,再去 系統設定 > 輸入法 選擇要使用的輸入法,然後重新登入就可以了。

經過多方的嘗試,最後的選擇是 fcitx 小企鵝輸入法。當然 iBus 跟 gcin 也都是很不錯的,只是這兩種輸入法在 Mozilla 家的軟體輸入時,iBus 是只有第一個字看得見輸入的注音,後面的字都看不見輸入的注音,直到從輸入暫存區送出之後,再輸入的第一個字才看得到輸入的注音。而 gcin 稍微好一點點,第一個字看得到,接下來的字只看得到第一個注音碼。由於我使用的郵件軟體是 Thunderbird,正好是 Mozilla 家的,所以就選擇 fcitx 了

安裝 fcitx 的方法很簡單,在終端機裡輸入
sudo apt install fcitx fcitx-chewing
就可以安裝 fcitx 以及新酷音模組
再去 系統設定 > 輸入法 選擇要使用 fcitx 輸入法,重新登入就可以了。

Linux Mint 桌面使用散記 (一) 為什麼改用 Linux

自從使用 Windows 10 以來,在很多地方都很滿意,但不滿意的地方總是比較在意的。例如:中文輸入法,慣用的自然輸入法在 Windows 10 底下一直有問題,嘗試了很多其他的智慧注音輸入法,如 PIME、超注音電腦版、搜狗輸入法注音版,但各有各的問題。

不過輸入法還不是最受不了的,無法關掉的自動更新、不知什麼時候會吃掉 100% CPU 的「系統服務」以及移除不掉的內建程式,才是讓我下定決心更換作業系統的關鍵。

既然要換作業系統,原先在 Windows 下的程式開發環境就得搬移到 VM 裡,雖然已經有做好的 Windows 7 VM,不過那是用 VMWare 做的,Linux 上可沒有 VMWare,好在 VirtualBox 可以支援 VMWare 的虛擬磁碟檔 (.vmdk) ,就使用 Virtual Box 建立新的 VM,掛上 .vmdk 檔後開機。很好!可以順利開機使用。

接下來就是程式開發環境,花了一些時間在 VM 裡把程式開發環境安裝好之後,就準備重灌了。

因為我不喜歡 Ubuntu 用的 Unity 桌面,所以選用的發行版是 Linux Mint,安裝媒體也很簡單,下載 Linux Mint 的 ISO 檔之後,用 WinDiskImager 32 寫入隨身碟,就可以開機試用與安裝了。

安裝過程一切都很順利,VirtualBox 的安裝也很簡單,VM 也順利的啟動了。

蠻好的!

2018年3月15日 星期四

ASP.Net 對於從 Url 傳入 BIG5 中文的處理方法

今天同事遇到一個問題,他跟某便利商店對接挑選門市,結果對方回呼時,傳入的中文是 BIG5 的,問我要怎麼處理。

由於 Request["param_name"] 是已經「壞掉」的資料,所以得從 Request.RowUrl 下手。

經過一番搜尋,得到的結果是下面這一段程式,用指定的 Encoding 來解碼 Request.RowUrl,再用 HttpUtility.ParseQueryString 拆解成 NameValueCollection

var request = HttpUtility.ParseQueryString(
    HttpUtility.UrlDecode(
        Request.RawUrl,
        Encoding.GetEncoding("big5")));

這樣 request["param_name"] 就得到正確編碼的內容了

特記於此,以備日後查看。

2017年8月1日 星期二

JavaScript 對於字串內含有 Unicode 編碼的處理方式

在 Web 應用程式上要做關鍵字搜尋時,用的是自製的搜尋元件,前端與後端都是自製的。一直以來都沒有什麼問題,而這次的新案子測試人員發現罕用字出現了問題。

輸入關鍵字,查詢出來顯示時還是正常的,點選需要的資料帶入 textbox 時,罕用字卻變成了 &#xxxxx; 這樣的型式 (xxxxx 是10進位數字)

嘗試了呼叫 unescape、decodeURI、decodeURIComponent 都無法處理

後來只好問 google,找到一些資料之後,寫成以下的 function,提供出來給大家參考:

//--------------------------------------------
//  將字串裡的 unicode 換成文字
//--------------------------------------------
function ConvertUnicode(str)
{
    // 先處理 \uXXXX 這種型式的
    str = unescape(str);
    // 然後再處理 &#XXXXX; 這種型式的
    var regexp = /&#[0-9]+;/g;
    var match = regexp.exec(str);
    while (match !== null)
    {
        var s = String.fromCharCode(match[0].replace(/[&#;]/g, ""));
        str = str.replace(new RegExp(match[0], "g"), s);
        match = regexp.exec(str);
    }
    return str;
}