2017年1月14日 星期六

FastText 可以解讀傳統中文嗎?

FastText 是由 Facebook Research 研發的文字分類程式。顧名思義,會有很快速的效能。我試過 IBM Watson, Google Cloud API, Facebook FastText 三個當中,最快的是 FastText,真的很快。初試時隨手拿英文的數據來測試,沒有試過傳統中文,今次就試一試。

首先要自行準備中文數據。每行第一個字是「標韱」,後面跟著「文字」:


再把數據轉變為 FastText 的格式。主要是為「標韱」文字加入「__label__」字頭;而「標韱」與「文字」間以空白符號隔開:


準備好數據,便是訓練步驟。以 skipgram 訓練「單詞特徵」:

可惜出現「std::bad_alloc」錯誤,我找不到解決辦法。

於是試一試「Supervised」文字分類訓練:
今次訓練得非常之快,看似成功;但理應在訓練完成後會產生 .bin 及 .vec 檔,卻只有 .bin 存在,不見 .vec。拿訓練成功的模型測試一下,結果 P 值及 R 值都沒有數字,訓練失敗了...。

2017年1月13日 星期五

解決 FastText 組譯問題


正在研究一個查詢機械人項目,很想加入意語理解的能力。早前認識了 Facebook 的 FastText 項目都沒有時間測試,今次是一個好機會。把 FastText 下載到伺服器進行組譯時出了問題。經過一輪發掘,知道問題是由於 GCC 版本不夠新的緣故。於是按照以下步聚把 CentOS 6.8 的 GCC 升級:
sudo rpm --import http://ftp.scientificlinux.org/linux/scientific/5x/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern
wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
sudo yum install devtoolset-2
scl enable devtoolset-2 bash
gcc --version


再次組譯,問題沒有再發生了。

2017年1月11日 星期三

解決 MySQL 表格預設值的問題


今日遇到了 MySQL 的問題。在把一個項目連資料庫從 A 網頁寄存供應商的伺服器,拷到 B 網頁寄存供應商的伺服器後,項目無法順利執行。查過連接的設定沒有問題,唯有在代碼中加入除錯的程式。發現原來是表格結構出現問題。當中一些 Not Null 的欄目在舊伺服器沒問題,來到新伺服器就不行,需要一一加入預設值。

問題是表格及欄目眾多,工序很花時間,得找一個簡單快捷的方法。原來在 MySQL 設定檔 my.cnf 中有一行 sql_mode。如果當中包含 STRICT_TRANS_TABLES 便需要指定預設值;只要把它移除,重啟 mysqld 就能變成不需要預設值。

2017年1月9日 星期一

確認電郵的錯誤


很久沒有看樂壇頒獎禮,已經過了這個年紀好一陣子了。今年難得有全程直播,於是打開電視。這是我最期待的頒獎禮。不過,以經較我作為歌迷時代的那個沉悶很多,歌曲也不合口味。但我始終都喜歡創作歌手。比起光環,我更喜歡憑自己努力獲得認同的歌手。聽過「你是你本身的傳奇」覺得不錯,於是購買了這首歌。

今天收到 iTunes 購買的確認電郵,發現出了一個錯誤。SFDiskplayableKind.song.one 應該是一個鍵值,現在沒有出現值,卻出現鍵。不知道為何 Apple 沒有知道。

2017年1月6日 星期五

掃瞄網頁漏洞


今日找到一個可以掃瞄網站漏洞的網頁。拿了其中一個自家製項目來測試。不需要任何證明,便能開始測試。到結果出爐後,才需要證明自己有網頁的控制權。當然,證明後才能得到測試報告。本來以為很安全的網頁,也被找出六個問題。雖然是小問題,還是得安排時間處理及修正。

2017年1月4日 星期三

解決「ERR_SSL_OBSOLETE_CIPHER」問題

為 Mac mini + Mac OS X Mavericks 建立的網頁伺服器加入免費的 SSL 證書後,出現以下畫面:


單看「ERR_SSL_OBSOLETE_CIPHER」意味著是 SSL 方面關於加密的問題。看看 httpd-ssl.conf 內的設定沒問題,加密算法的設定又是 gethttpsforfree 那邊給出的,應該沒問題吧!

後來把 SSLCipherSuite 的值修改,重啟 Apache 就沒事了。
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5

2017年1月3日 星期二

在 macOS Mavericks 安裝 MySQL

PHP 本身在 macOS 上已經安裝好,繼 Apache 後,下一個便是最常用到的 MySQL。按照 Installing MySQL on OS X Using Native Packages 的指示下載並安裝好 MySQL;


打開系統設定會看到多了 MySQL 圖示:
點擊它並啟動 MySQL 服務。在 Terminal 輸入:
export PATH=/usr/local/mysql/bin:$PATH
mysql_secure_installation

進行設定工作。之後便能正式使用。

參考網頁:
https://jason.pureconcepts.net/2015/10/install-apache-php-mysql-mac-os-x-el-capitan/

2016年12月31日 星期六

我對 Team work 的定義

星期四那天,談了我對 Team work 的定義。我的做法是大家對等,不分你我高低;把所有選項曝露出來,然後找個大家都接受的方法,遇到問題一起面對。每個崗位都有各自的難處,只有協商才能找到出路。

而我的 Team work 是對應所有合作伙伴;不只是部門內的手足;不只是公司內的同事;連客戶 Vendor 都包含在內。我不是說我的方法很掂,但我很希望大家不是對立的局面。愛拼才會贏,但我追求的是雙贏。可能這個想法有點天真,但這個世界就是由天真及有能力的人帶領。

2016年12月30日 星期五

把 Mac OS X 當成伺服器


以前在家中建立好的 ESXi 伺服器,由於風扇太嘈,加上沒有多大效用,於是把它關上。後來加入了 QNAP TS-410 用來儲存檔案,方便家中的裝置能共享;用了一段時間,風扇也太吵,於是把它關上。到現在,想有一台電腦能抓取數據、監視家中情況、把網頁放回自己的電腦、重開得到 Apple 認可的 VPN 連線、Facebook Messenger 管家機械人...等等。於是拿了退役的 Mac mini,灌入 CentOS 作多用途伺服器。

CentOS 是裝好了,但缺了網絡卡的驅動程式,在苦無對策下只好放棄,改為用 Mac OS X Server。可是問題又來了,我的復原光碟不翼而飛,硬碟沒有復原的分割,根本無法復原。打算求助其他復原光碟,在公司又找不到,更得知原來復原光碟是跟機,未必能在我的 Mac mini 上執行;就像我拿 MacBook Air 的復原手指一樣,到安裝的一刻說「無法安裝」。幸好,在 iTunes 的「已購買項目」中能重新下載舊的 Mac OS X 版本。我選擇了 Mavericks。至於 Mac OS X Server 則沒有了。於是,我嘗試把 Mac OS X 當成伺服器來建立...。

首先是安裝網頁伺服器程式。原本 Mac OS X 已經有 Apache 裝好了,只要簡單啟動指令便可:
sudo apachectl start
需要留意的是,預設的網頁路徑是「/Library/WebServer/Documents」;我把它改為用戶的目錄下。

2016年12月29日 星期四

修復 Django 的「Error loading MySQLdb module」錯誤


另一個在 Django 上架時出現的錯誤是「Error loading MySQLdb module」。明明已經安裝好了 MySQL-Python 這個模組。原來是 WSGI 使用了 Python 2.7,而程式卻是在 Python 3.5 下執行。雖然我已把 Python 的預設版本設定為 Python 3.5,但在 Apache + WSGI 下卻是另一個設定。最主要要留意 httpd.conf 內關於 LoadModule 時 WSGI 的版本,像是預設值 mod_wsgi.so;而在我的情況卻是用 /etc/httpd/modules/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so。