2017年12月29日 星期五

SQLAlchemy: Python SQL toolkit and Object Relational Mapper

在使用了Python之後,最先採用的資料庫是SQLite,Python標準庫的sqlite3提供了SQLite資料庫界面,使用上算相當方便,效率也不差。但為了方便將來轉換到PostgreSQL,漸採用SQLAlchemy,它是Python用的SQL工具與ORM (Object Relational Mapper)[1] 。

採用ORM連結資料庫有個好處是,所做的程式在往後若採用不同的資料庫軟體時,資料庫的連結方式無需做大幅度調整。SQLAlchemy支援了多種主流的關聯式資料庫。

雖然SQLAlchemy有相當好處,這裡還是要提醒一點,當資料量很大時,透過ORM存取資料的效率通常不像使用專用資料庫API來的好,譬如前述的SQLite資料庫為例,從sqlite3換成SQLAlchemy後在一次處理大量資料時就會感覺到效率上有點差異。 一般前端應用上的作法通常也不會寫成讓使用者一次調用大量資料, 這類一次調用大量資料的情景,通常像在後端做轉換或匯出/匯入資料,而此時可能會想用其他較合適的方式了。

以下用簡單的例子粗淺的介紹SQLAlchemy的入門使用方式。

2017年12月23日 星期六

GhostBSD 11.1

之前在〈FreeBSD 11.1安裝MATE桌面環境〉提到GhostBSD,那篇之後沒幾天,GhostBSD 11.1正式版就釋出,它是以FreeBSD 11.1為基礎,加上了一些圖形應用,提供Live CD環境與圖形的系統安裝程式。目前它有MATE與XFCE的版本,我慣用MATE,以下就談MATE的版本。

2017年12月20日 星期三

Ubuntu Firefox ESR

如果在Ubuntu上使用的Firefox舊元件尚不支援57版,或是基於其他原因尚不想用57版,而暫時用較舊的版本,那麼可以使用Firefox ESR (Extended Support Release),是長期支援的版本,目前是52.x版,可到明年6月。

雖然在Ubuntu上也可用pinning的方式維持使用指定的舊版,像以前就以這方式使用PHP 5.2,但有些設置的工作要做,且要有backports。但Firefox有ESR這另一種選擇,換成ESR的工作也容易些。

以下以Ubuntu 16.04中文版為例,說明移除firefox後改裝firefox-esr的工作。

2017年12月17日 星期日

Web Based RSS Readers

自從2013年7月1日Google Reader終止服務,就不得不另找線上RSS Reader。這類線上版的reader有個好處,就是它可以隨時在線,不致漏收訊息,如果用單機版的RSS reader來收24小時發送的新聞,除非把機器與reader程式24小時開著連線,不然若照正常人的工作時間運作,假設是固定在一早開機器與Reader看新聞,下班把機器關掉,就會發現可能有段時間的新聞是收不到的;或是連續幾日沒空連線查看訊息,也會有這種情況。這類單機版的Reader用來接收發送不很頻繁的訊息,像一日幾則,還算適合,而且還要對漏接的訊息不感到在意。

有人也許偏好以訂閱電子報的方式,也就是電子郵件的方式來接收訊息,但一旦訊息量很大時,就會發現信箱會被塞滿郵件,更討厭的是有些發電子報的機構只管發送,才不管退訂。在本世紀初本人親身經歷這種不愉快經驗,留在本文最後談如何解決,這裡先談正題。另一個缺點則是這類電子報郵件通常是大量放送,收信的郵件主機若有偵測與過濾廣告信之類的功能,可能把電子報當成廣告郵件處理掉或者甚至把送信的主機列入黑名單。

若改用RSS,則是由訂閱方自行決定要訂閱什麼類別的內容,不必把自己的郵件信箱給人家,也減少了收到廣告/垃圾郵件的風險。

2017年12月16日 星期六

資料夾同步軟體FreeFileSync

由於過去工作上的需要,很早之前就常在Windows桌面環境使用資料夾同步軟體讓不同位置的檔案保持一致。早期前後用過多種不同的軟體,當時用的一些免費軟體,多數沒再繼續更新,有的對中文或是Unicode檔名的支援不佳。直到FreeFileSync出現沒多久,就改用它直到現在,大約也有9年之久了。

2017年12月9日 星期六

調整FreeBSD使用本地時間

剛裝好FreeBSD 11.1時是把硬體的CMOS時間當成UTC時間使用的,如果要改為當成本地時間使用,別再像以前用tzsetup。

增加個空白檔案即可:

# touch /etc/wall_cmos_clock

詳情可見man adjkerntz

2017年12月2日 星期六

螢幕擷圖軟體ShareX

之前介紹過〈螢幕擷圖軟體PicPick與7capture〉,而ShareX則是開放源碼的軟體,有包含正體中文在內的多語界面。功能上除了擷圖之外,還支援許多個網路空間的檔案上傳、文字擷取(OCR)、螢幕錄製……。

2017年12月1日 星期五

常用Markdown語法

記錄自己慣用的Markdown語法。有些語法有多種寫法,這裡只記錄較主要的寫法。較詳盡的可見〈Markdown簡介與資源列表〉中所列的連結。

2017年11月30日 星期四

慣用Firefox WebExtension元件列表

本文記錄在Firefox 57版開始自己常用的一些WebExtension元件。
  • 新同文堂
  • Country Flags & IP Whois:取代Flagfox。
  • Greasemonkey
  • NoScript
  • Stylish
  • uAutoPagerize:自動載入下一頁。取代AutoPager fixed。
  • uBlock Origin
  • Web Developer
  • Xmarks Bookmark Sync
目前只先使用少數幾個。

2017年11月26日 星期日

Python logging模組

在某些情況,在Python程式中要對程式的執行狀況做些記錄,比如排程在凌晨三點執行下載某種資料的程式,程式若只是把執行狀況的資訊顯示在螢幕上,若程式結束,這些資訊就不見了。像這時候較好的作法是把這些資訊存到記錄檔中。Python標準庫中的logging模組在這方面提供了相當方便的途徑,只需做個簡單設置,簡單幾行代碼就可以解決。

以下以簡單的例子說明logging模組的簡易用法。

2017年11月20日 星期一

以Python修改檔案的建立日期與時間

Python zipfile模組之二〉提到如何修改檔案的修改與存取時間,本文則展示在Windows下如何以Python修改檔案的建立時間。

這裡要先說明的是,各種作業系統與檔案系統的設計有所不同(如POSIX標準的定義中並無建立時間),這個檔案建立日期時間是Windows中才有的,所以以下的範例代碼僅用在Windows平台。Python也要先裝好pywin32 (Python extensions for Windows)才行。

另外一個提醒:有一些免費的Windows軟體已提供了修改檔案建立/修改/存取日期時間的功能,像BulkFileChanger。如果不是特別複雜的情況,通常這類工具就夠用了,不必自己寫。

2017年11月19日 星期日

免費中英字型資源列表

免費的字型資源可說相當多,本文記錄自己常用的免費中英文字型。其中所列的中文字型主要是臺灣使用者慣用的。雖然本文主題只著重在中英文字型方面,但其中所附的連結,有些會提供其他語言的字型。

2017年11月16日 星期四

Python zipfile模組之二

本文繼〈Python zipfile模組〉之後再談一下zipfile的解壓縮工作。前述那篇的解壓縮只簡單提到extractall(),這用法雖然簡單,但所解壓出來的檔案,它們的檔案修改日期會與原本在壓縮檔中的不同。如果在意這一點,那麼就必須在解壓完成後自行做修改,而這也是本文所要談論的內容。

以下就直接拿一個實際情境當範例來做說明。在此例中,在一個目錄中有許多zip壓縮檔,每個壓縮檔中包含數個檔案,每個壓縮檔在解壓縮時要把其中的檔案放到各自的目錄中,這各自的目錄就以壓縮檔的主檔名做為名稱。解壓縮時要取得每個檔案的修改時間 ,解壓縮完成後就以這時間來設定檔案的修改/存取時間。

2017年11月11日 星期六

FreeBSD 11.1安裝MATE桌面環境

FreeBSD是個穩定性與安全性都有相當高度評價的作業系統,自己過去主要拿它來架設服務器,只有幾次在短暫時期使用它的桌面環境,不過那時也感受到它桌面環境的優異執行效能。譬如,在當時的Windows上啟動GIMP繪圖程式時,要等好上一段時間才見到啟動畫面(Splash Screen)跑完,而在與前述機器相比,硬體條件相當老舊的機器上的FreeBSD啟動GIMP時,啟動畫面卻是一閃而過。當然這樣比較也許不怎麼公平,因為普遍而言GTK程式在Windows上的啟動都稍久。

雖然FreeBSD的桌面環境其實也很好用,但自己通常不推薦他人使用,除非他本身在這方面有相當的能力與興趣。這有幾個原因:
  1. 相對於其他幾個主流作業系統,FreeBSD對於硬體的支援較慢。如果所用的硬體較新,可能會遇到無法支援的窘境。
  2. 雖然FreeBSD圖形環境中的一些使用設置已比過去方便很多,但相較於Linux還是顯得不怎麼方便。比如用Ubuntu MATE裝好的系統,做個更新後大致上就可以使用相當完備的中文環境。但在FreeBSD還得花費一些時間去做一些設置才能達到這種程度。
如果上述幾點不是問題,那麼就可考慮使用FreeBSD的桌面環境。

在真正開始進入主題之前,有幾點必須先說明清楚:
  1. 本文主題談的是MATE環境的安裝,而在此之前必須先安裝好FreeBSD的基礎系統,本文略過這方面,因為在官方使用手冊中已有詳細的說明。這裡就假定機器是剛裝好FreeBSD的狀態,接下來要安裝MATE環境。
  2. 本文所用的FreeBSD是採用官方版本的FreeBSD 11.1安裝媒體,純粹使用命令行進行安裝工作,並沒有圖形環境的安裝程式。如果想採用有圖形界面的安裝方式,個人推薦GhostBSD,它也有MATE版本,安裝工作相當簡單,但中文環境仍要另行安裝;另一個可以考慮的則是TrueOS,它有中文環境,但使用者可能要再自行調整一下(附帶提一下,今天看DistroWatch,它的排名再往上提升一名到第11)。
  3. FreeBSD預設是不讓root登入圖形環境的(這是種好的作法與習慣),故要使用圖形環境,要先建立好這些帳號。以下假定在安裝FreeBSD時已經建立好這些帳號了。
  4. 機器已正確設置好可以正常連線使用網路,因為MATE要透過網路安裝。
  5. 除非另有說明,以下假定安裝與設置的工作都以root帳號來執行,主要使用命令行。
  6. 因內容涉及設定檔的編輯,假定讀者會使用某種編輯器,如vi。
  7. 本文只談基本的MATE環境安裝與設置,未涉及中文環境的安裝與設置,這留待以後另闢新文章討論。
以下就正式進入主題。

2017年11月4日 星期六

OpenShot Video Editor

OpenShot Video Editor是一套開放源碼、支援多種作業平台的影片剪輯軟體,提供多國語言界面,包含正體中文。

這軟體不僅功能強大且穩定,使用上也很簡單,如果有用過類似軟體輕驗就很容易上手。檔案也不算大,Windows 64位元版也才133 MB。這裡就不一一列舉軟體功能,官網上有。

2017年10月28日 星期六

Python zipfile模組

zipfile是Python內建標準庫提供做壓縮與解壓縮用的。

它目前不支援多磁片壓縮,支援加密ZIP的解密,但尚不支援加密。壓縮方法有保存(無壓縮), PKZIP, BZIP2, LZMA 。雖然功能並不算很齊全,但可以應付大多數的使用情況,而且它的使用方式也相當簡單。

本文簡單展示zipfile的部分用法。

2017年10月27日 星期五

Ubuntu 16.04關機時等很久

之前自從換了Ubuntu 16.04桌面版後就發現關機經常要花較久時間,而且用了這麼久了,即使系統一直更新也沒有很好的改善。就連前一陣子試了Ubuntu 17.04與17.10仍難免如此,另外也試了Linux Mint 18.2(基本上它也是採用Ubuntu 16.04為基礎),也有同樣現象。因為新的版本仍有此相當困擾人的問題,所以就決定在此補上本文做個記錄。

就以前的使用過程中觀察所得到的發現,在有有線網路連結或以手機連網時,關機時會比沒有連線來的久很多。還有,若有非開機時自動掛載的外部硬碟,關機前若先正常卸載,也有助縮短關機時間。

2017年10月21日 星期六

SOFA統計軟體

SOFA (Statistics Open For All),以Python開發的開放源碼、跨平台的統計、分析與報表套裝軟體。

安裝好後附有範例資料,可以馬上一試。有線上版的使用說明。在官方Blog也可看到一些介紹,其中也可找到教學資料。

2017年10月15日 星期日

Ubuntu資源列表

筆者在接觸Linux之前就用過FreeBSD,不過FreeBSD的學習資源遠比Linux少,再加上工作上的需要,就開始接觸Linux,最早用Red Hat 6,不幸的是第一次用就發現它有安全漏洞。當時先把Linux暫擱下,工作上用FreeBSD架服務器。

之後用過百資Linux(從Red Hat改來的付費版,包含紙本說明書)、Mandrake(後來改稱Mandriva Linux,到2011年就沒了)。在Red Hat移除國旗事件[1]之後有一陣之不想用Red Hat,只是之後服務的公司仍用Red Hat 7,之後稍用了一陣子Red Hat 9,不過感覺它的桌面環境太耗資源。

印象中還用過其它幾種發行版,在歷經一番不同的嚐試後,發現Linux兩大主流系列中的Red Hat與Debian,後者比較適合我,而用了Ubuntu後,就沒再用過其它Linux發行版,只在Ubuntu的不同桌面版之間試過幾款,最終決定用Ubuntu MATE。在類UNIX的服務器方面,自己主要使用FreeBSD,後來因用戶的需要,也採用了Ubuntu Server。這種選擇有如青菜蘿蔔,每個人的喜好不同,本文並無在各發行版或不同OS之間比較優劣之意。

平常我只用LTS版,因為某種原因,前一陣子開始試用Ubuntu MATE 17.10 Beta 1,感覺尚穩定,效能也不錯。這版內建了RedShift,方便夜間看電腦螢幕能保護眼睛。正式版本再過不久就會釋出,考慮要採用這桌面版。

Ubuntu是由Canonical公司發行,另有一些延伸的版本。商業公司推行的主流軟體有些好處,但也別盲從,像Unity界面,自己在初接觸時就不是很喜歡,而轉用別種桌面版,而Unity開發了7年之後,最終宣布放棄[2]。在有眾多的選擇情況下,使用者有權自主判斷,從中選擇最方便使用或最適合的東西,不必一味追隨有力傳宣所形成的群眾潮流。

Ubuntu是個人選擇慣用的發行版,主要是用來順手,資源也廣大。以下是Ubuntu相關的非詳盡連結,大多是我較常用的:

2017年10月10日 星期二

Firefox與Thunderbird的使用者設定檔

上週換了Firefox 56版後發現有記憶體洩露的問題,我懶得去查問題點是出在56版本身或是元件上,這問題就留給Firefox開發人員解決,很快就有修正版出現。

下個月的Firefox 57版,即Firefox Quantum正式推出的版本,將會是採用新引擎的版本,有相當大的不同,個人是期待以久,在效能與許多方面應該會有不少改善,不過預期可能有些舊元件會不相容。沒想去抓57版的開發版來嚐鮮,反正沒多久後正式版就會出現。

像上述更換新版但又擔心換版會出現問題的狀況難免會碰到。由於Firefox以及一般軟體的設計上,程式檔案與設定檔profile是分開放,此時可以先把舊的設定保存一份,在換新版發現不滿意時,改回舊版Firefox,把之前備份的profile還原。等待滿意了新版的改善程度,或是沒什麼問題後再來換新版。

有幾種不同的作法可保存設定,有些元件可協助做備份,Sync也可以,不過自己不用Sync。另外一種方式就是自行把整個使用者設定檔profile備份或複製下來。

以下就談一下Firefox的profile所在,由於Thunderbird的profile的儲存方式也很類似,也一併談一下。

2017年10月9日 星期一

VirtualBox虛擬機器軟體

VirtualBox是一套免費與開放源碼的虛擬機器軟體,但其中部分屬於專有軟體,它也支援主流作業平台,2010年歸到Oracle公司旗下。在目前多種虛擬機軟體中,對於剛接觸虛擬機軟體的使用者,它可能是最容易取得與最方便使用與學習的一種。

有時會有人將VirtualBox簡稱為VBox,然而也有其他東西也稱為VBox,會有撞名之虞,不過多數提到VBox時,指的會是VirtualBox。本文為避免混淆,不採用簡稱,而用正式的名稱。

自己以前慣用VMWare公司的虛擬機器軟體,直到VirtualBox出現之後,就改用這套,隨著版號的演進,功能也越加強大。

VirtualBox的用途相當多樣,最常見的像是要測試某個作業系統的功能,此時無須一部實體的機器,在VirtualBox軟體中創建的虛擬機環境中就可以把該作業系統安裝進去。

它對不同作業系統的支援程度不太一樣,以下就以Windows版的VirtualBox為例,簡單介紹一般使用上幾個實用的要點。

2017年9月30日 星期六

FreeBSD資源列表

過去使用FreeBSD時所寫的記錄文件一直都是零散放置沒有好好整理,不像用Ubutu時利用心智圖軟體做記錄。過去的零散文件也懶得再整理了,而且以前太早期的東西也不一定適用較新版的FreeBSD,以後就依新版的使用來做記錄就好了。

以下記錄一些相關資源,並不是詳盡的列表,太老舊或失效的也不列入。有些並不限定於FreeBSD,往後若有必要再分拆。

2017年9月24日 星期日

Python csv模組

本文簡單展示Python內建準標函式庫中csv模組的用法。

以下範例採用一個從臺灣證券交易所網站下載的實際csv資料檔,從中取得當日ETF交易資料,把需要的欄位資料另存到一個csv檔案。即簡單的csv讀取與寫入的作法。

2017年9月16日 星期六

Freeplane心智圖軟體

Freeplane是開放源碼的免費心智圖軟體,支援各種主流桌面作業平台。

心智圖可協助學習、分析、思考、筆記、組織事物與研究等等多種方面。自己在接觸了幾款心智圖軟體後覺得心智圖是相當值得花些時間去了解如何運用的工具。市面上有一些介紹心智圖的書籍,也有些機構提供心智圖的教育訓練,這裡就不對心智圖做太多介紹,把重心放在本文的主題Freeplane。

2017年9月14日 星期四

修復GPT硬碟Windows 10的EFI bootloader

在某部UEFI[1]的電腦使用GPT[2]硬碟,裝正體中文版Windows 10 Home 64位元 , 自行做磁碟分割,不使用MSR與修復磁區,三個分割區:EFI、OS、資料磁區。

在系統安裝好後用可支援GTP的磁碟克隆軟體把EFI[3]與OS磁區備份下來,之後因某種因素必須更換硬碟,新的硬碟分割方式同上,從備份檔將系統還原到新硬碟的EFI與OS磁區後重開機時出現類似BOOT ERROR 0xc00000e之類的錯誤訊息而無法開機。

我最初以reinstall windows 10 efi bootloader的方向做了些網路搜尋,看了幾篇談fix/repair UEFI Boot/bootloader的文章,大意就是使用安裝光碟開機,進入修復模式,利用幾個指令diskpart、bootrec與bcdboot來修復EFI啟動檔;或用啟動修復的功能 。這幾篇都提到了重點,但說明都不是很清楚,除了其中一篇[5]較為可靠之外,其它幾篇看起來還是抄襲而來的,令人懷疑作者是否實際操作過,事後發現其中的錯誤,更肯定了我的懷疑沒錯。試著查了bcdboot /?,但說明文字也不多。 自己實際照著操作了一下,發現沒用,平白浪費不少時間。試了啟動修復的功能也無用,後來想到應該是磁碟分割與Windows安裝的預設分割法不同有關。

之後有一次再試著還原 時也發現備份軟體不讓我把系統還原到另一顆硬碟的磁區 ,我開始懷疑是否搞錯方向。之後再以“UEFI 換硬碟”為關鍵字,看到 一篇[6]寫的較明確的。看了一下其中內容,發現與之前查到的那幾篇大同小異,但主要的不同是bcdboot指令的使用。當下決定從網路上找bcdboot指令正確完整的說明[9],這才搞清楚真正的用法,實際試一下馬上就成功了。

2017年9月9日 星期六

GitBook CLI電子書製作入門

電子書已經很流行,有不少網站提供商業或免費的電子書的撰寫、製作甚至出版的平台,這類平台,各家有各自不同的特色,作法也各不相同。GitBook算是這其中較知名且流行的一個,它提供了圖形編輯器,供線上編輯,是個方便的雲端服務。

若要在本機產出電子書就得用它的終端機指令工具來做,本文簡單介紹這方面的部分作法,僅供有需要這方面的人做參考,一般使用者直接用圖形編輯器即可。

2018-4-19補充:GitBook前一陣子改版後已不再使用CLI toolchain,本篇內容已不適用於新版的GitBook。

2017年9月3日 星期日

calibre:跨平台的多功能電子書軟體

calibre是由Python, C/C++與JavaScript語言所寫成的自由開放源碼軟體,支援三大主要作業系統平台。

相當不同於一般的電子書閱讀軟體,它不僅有支援目前多數流行格式的電子書閱讀器,還有其他多種功能。像電子書的後設資料(metadata,或譯為“元資料”)編輯、格式轉換、編輯、搜尋、下載、分享……,以及書庫的組織管理。如果要在電腦上閱讀電子書,可考慮用它來幫你建立書庫以方便做組織與管理。

以下就提幾個自己長久以來使用上的心得。

2017年8月27日 星期日

Python讀寫試算表檔案

在某些情況,需要從試算表檔案中讀取資料,或是把資料存入試算表中,Python有一些package包可以很方便的把這類工作做好。這類試算表檔案,較流行的有MS Excel的.xls或.xlsx以及Open/Libre Office Calc的.ods格式。因為Python包可以良好的處理它們,所以這裡就不花時間去探討它們的檔案格式。

網路上的一些公開資料,若是試算表檔案,通常以.xls居多。而Libre Office這免費的自由軟體取得容易,Calc的使用也類似Excel,是最佳的辦公室軟體套件。這裡就以讀取.xls與寫入.ods為例。

會用到二個package,記得要先用pip安裝xlrdrelatorio。閱讀本文者除了要稍有Python基礎,也要知道Libre Office Calc的簡單使用方法,以下例子中會用到插入超連結的操作。

2017年8月19日 星期六

幾款星空軟體

小時候讀過一本《天上動物園》的兒童書,介紹的是天上的西方星座,還有其中的神話故事,從此對天上的星星著迷。記得小學時的畢業旅行有到台北天文館,當時還想買個星座盤,一個我等待多時終於有機會可買到且夢寐以求的東西,價格是100元,對一個小學生而言可不是筆小數目,有個同學還好奇問我買這東西做什麼?可惜正好缺貨而無法達成這願望。

在Windows 3.1的年代,已經有幾款共享軟體或免費軟體提供星空模擬的軟體,視覺效果也十分不錯,只是當時沒太多時間花在這方面。畢章這類軟體要配合實景夜空才有意思,但想要好好欣賞夜空還是要有一定的條件的,工作太忙沒時間或是天候不理想,甚至光害嚴重都難讓人有好心情去觀星。去年看到有篇新聞報導說因為光害的關係,在近代有許多人不曾看過銀河,光害讓許多人失去抬頭凝視星空沈思的機會。近幾個月,住家附近的一些路燈大多換成了高亮度的LED燈,把夜間搞的像大白天一樣,晚上睡覺若不拉上窗簾,外面的亮光照進房間容易干擾睡眠,這樣的光害,對於想觀賞星空的人而言更是一大不利。在台灣若真想好好觀賞星空,恐怕得到高山、大海上以避開光害,或是好天氣的夜裡遇到像前幾天的815台電大停電才有可能,不然就只能用星空軟體過乾癮。

星空軟體可以協助辦星,有的也可以模擬時間流轉時天空的變化,以下就分享幾款在電腦與Android上自己常用的星空軟體,也附上軟體畫面的擷圖,是昨夜預先擷取的。

2017年8月12日 星期六

highlight.js:網頁語法高亮

若想在網頁上呈現程式的語法高亮的效果,不必自己辛苦編輯HTML代碼,可使用JavaScript來協助達成這工作即可,也不須自己辛苦寫JavaScript代碼,因為這類現成可用的JavaScript函式庫在很早以前就有了,本文簡單介紹其中一種。

2017年8月5日 星期六

Pencil:圖形界面雛型設計工具

Pencil是以JavaScript打造的開放源碼軟體,可在三大作業平台上的桌面使用,主要用途是做軟體圖形界面的雛型設計,也可用來畫一般流程圖或是圖解Diagram。

2017年7月29日 星期六

configparser:Python的設置檔解析器

有時我們寫了某個程式,希望它啟動後讀取一些程式的設置,或是程式結束之前儲存某些資料,譬如程式的狀態,以利下回程式啟動時可以取用。在Python這類儲存程式設置或狀態的作法可有幾種現成的選擇,pickle, JSON, shelve或是configparser。如果希望設置檔中的內容可方便人工編輯與人眼閱讀,就像Windows上使用的.ini檔那般,那麼configparser是最好的選擇。

Python標準函式庫中的configparser模組有個ConfigParser類別,可方便對.ini檔內容的操作,以下就用一個簡單範例做說明:

2017年7月22日 星期六

nomacs:開放源碼且支援多平台的圖像檢視器

nomacs在前幾年出現 ,連續幾年參加Google夏日程式碼大賽(Google Summer of Code),用起來感覺功能穩定,並不輸給其它商業或已開發多年的圖像檢視軟體。

2017年7月15日 星期六

R與相關資源列表

R是開放源碼的編程語言與軟體環境,主要用於統計計算並可將數據以圖形展示,被統計學家廣泛使用在數據分析與資料採礦方面的領域,當然有也有人拿來用在教育方面——教授統計學。就個人的觀察,它的應用領域並不限於此,前述只是幾個較主要的。R最早由二位統計學者所開發,這二位開發者的名字都以R開頭,故以R命名。若具有統計學基礎及簡單的編程知識,要學會R應該不會是件難事,當然“學會”與“學的好”是不同層次的事。R所提供的強大功能與運算能力,足可媲美一些統計分析的商業軟體。

R已出現了20幾年,隨著資料科學與數據分析的流行,在近年變得更加火紅,而且擁有廣大的使用社群與生態系統,所提供的豐富資源,令人難以忽視它的存在。即使自己不常用R,也會運用R相關的資源。

2017年7月8日 星期六

Clementine音樂撥放器

Clementine(在英文的字面意義是一種柑橘類水果,也是女子名,讀音像“可樂免談”)是開放源碼的跨平台音樂撥放器。支援多國語言界面,包含正體中文。

它不僅可撥放你機器中的音樂檔案與音樂CD,也支援串流,可收聽網路收音機,甚至從網路空間播放音樂,還可搜尋歌詞……。除了撥放音樂,它也有擷取音樂光碟以及音樂轉碼的功能,但這部分可能還需要必要的外掛。

2017年7月1日 星期六

Useful Proxy Server Lists

在早期,就說西元2000年之前好了,網際網路還不算很發達之時,網路頻寬比起現在也小很多,若連到國外的網站,回應的時間可能較久。當時有些大學會提供Proxy server代理服務器(在台灣一般習慣稱為伺服器),它的作用是當網頁cache快取用,假設有人利用它連線到國外取得網頁資料,會暫存一份在它那裡,之後若有另一個人同樣透過它連線到國外同一個網頁時,就直接把暫存的網頁給他,而不是再次連到遙遠的國外取回資料,因而可以省下一些等待時間。當然這其中還涉及快取資料的有效期限之類的細節,這裡不談這方面。

隨著時代的發展,網路頻寬的大幅提升,以及網頁由靜態頁面演變到程式產生的動態頁面,多種因素減少了一般使用者透過代理服務器連線的需要與意願,除非他有較特殊的需求,或是公司、機構規定內部連外要用機構所提供的代理服務器。

姑且不論使用者的特殊需求如何,在網路上仍舊有不少代理服務器的提供者,也有一些網站收集並把找到的代理服務器做成清單提供人使用,免費或收費的都有。本文記錄這類清單中的其中一部分,以及幾個相關名詞的解譯。本文純粹談代理服務器這方面,不涉及Tor或VPN。

2017年6月24日 星期六

一些常用的Python 3rd Party Packages

Python除了自身的標準函式庫以外,還有廣大使用者社群提供的package,這些多數可在PyPI上找到。以下列表是自己較常用的其中一部分,做個粗略的分類:

Office類

  • relatorio:輸出資料到Open/LibreOffice檔案。
  • xlrd:讀Excel檔案內容。
  • xlwt-future:寫入資料到Excel檔案。

網路類

  • requests:HTTP函式庫,堪稱設計典範。改用它之後,都快忘了標準庫中的urllib怎麼用了。
  • selenium:Python language bindings for Selenium WebDriver.
  • Django:Python Web framework

2017年6月17日 星期六

Markdown簡介與資源列表

Markdown簡介

Markdown(以下簡稱為MD)是種輕量的標記語言,相較HTML而言簡化許多,所以有些網站所提供的線上文章編輯器,實際上是採用MD。MD的使用已越來越普遍而且流行,編輯好的文件透過其它工具,可以轉換成HTML格式的網頁或製作成電子書(epub, mobi, pdf等格式),這類較知名的工具像HexoGitBook

2017年6月16日 星期五

cx_Freeze:打包Python程式的利器

若要把Python開發好的應用程式交到用戶端使用,通常要在用戶端安裝Python執行環境,以及所用到的package,這工作若交由一般使用者進行,可能會有些挑戰性。一種變通的方式就是把Python腳本轉成.exe執行檔,連同用到的Python執行環境與package一起打包好,交給使用者,使用者無須煩惱前述的安裝工作,只要會啟動這些執行檔即可。

這類把Python程式打包成執行檔的工具有幾種不同選擇,這裡只談其中之一的cx_Freeze,因為它使用上較為簡單,而且支援多種平台,本文的範例則是用在Windows平台。

cx_Freeze是一套腳本與模組,用來將Python腳本凍結(freeze)成執行檔,就像py2exe與py2app所做的。與這二者不同的是,cx_Freeze是跨平台且可在Python本身可運行的任何平台上運行。它需要Python 2.7或以上版本,且可用在Python 3。

cx_Freeze除了有可把腳本程式凍結成執行檔的功能,也有建立安裝程式的功能,但本文只談前者,因為後者有其他更進階的工具可以辦到。我自己的作法是使用cx_Freeze把程式凍結成執行檔後,再使用Inno Setup製作安裝程式。

2017年6月15日 星期四

D3.js與相關JavaScript資料視覺化函式庫簡介

簡介

幾年前第一次看到D3.js時真令人興奮,對其製作出來的東西感到嘆為觀止,因為不僅做出來的網頁式互動式圖表美觀漂亮,而且它還是開放源碼。

D3.js也簡稱為D3,全稱是Data-Driven Documents,是JavaScript函式庫,用來在網頁瀏覽器上產生動態互動式資料視覺化。

2017年5月29日 星期一

JavaScript資源列表

JavaScript(簡寫為JS)大概是我所用過程式語言中,用起來最不情願但又不得不用的一個,不過這是過去的情況,現在的它不僅吸引人,也擁有廣大的使用者社群,也是最為流行的語言之一。會出現如此矛盾現象當然有幾個原因,以下就列舉一些:

2017年5月19日 星期五

HandBrake:開放源碼的影片格式轉換器

目前的影片轉換軟體已經很普遍常見,其中大多數功能都很不錯,也可免費使用。HandBrake則不僅可免費使用,也開放源碼,可支援多種作業平台,雖然目前沒有中文界面,但使用上其實也很方便。

先提醒一下,它的輸出格式只有兩種:MP4與MKV。如果想要輸出別種格式,那就改用別種軟體。

2017年4月16日 星期日

AutoIt v3

AutoIt是使用於Windows平台的自動腳本語言,可用來建立自動化執行的腳本。其應用層面相當廣泛,有人用於遊戲的自動化,也有人用在瀏覽器中擷取網頁上的資料,或是把軟體的安裝程式做成自動化,省卻輸入長長的軟體序號或是按很多次“下一步”按鈕的工夫。還有其他的,像在這個“AutoIt碼源與撰寫技巧討論區”就可以看到許多不同的應用。

2017年4月6日 星期四

筆電用藍光燒錄機與ImgBurn

終於還是要動用到藍光燒錄機了,因為某些資料檔案已累積過多,不會再更動的東西就封存了。

為方便筆電外接使用,故買了筆電藍光燒錄機,購買處同〈筆記本電腦改裝記:硬碟托架與外接光碟盒〉。

開箱照

先貼個開箱照,包裝內有一藍光燒錄機與一個光碟外接盒,寄來時燒錄機已裝在外接盒內,特地再取出來拍照。

2017年3月29日 星期三

XnView MP:支援多平台的圖片檢視軟體

從上個世紀末到本世紀初在Windows上最令人難忘的圖片檢視器軟體大概就是ACDSee了,可說是電腦中不可或缺的軟體。自己後來逐漸改用較晚出現的其他幾種相似功能的免費軟體,近年則漸改用XnView MP,這軟體名稱中的MP指的是多平台版本,支援三大主要桌面作業系統平台。

2017年3月25日 星期六

Windows Firewall Control

自己在Windows上用過的軟體防火牆,自Windows 2000開始算起至今,不論是免費或是付費,已不記得用過幾種,其中也有些只是做評估是否合用。這類防火牆軟體,多數需要使用者具備某些基礎程度的網路運作知識,少數則僅提供簡單的調整功能,自己較偏好使用前者,因可有較多的自訂與控制功能,只是這對一般使用者算是較困難的選擇;至於後者,自己也懶得用,通常只有別人問我該用哪種防火牆軟體,且對方對這方面也沒什麼概念時才會介紹使用。這兩類一複雜一簡單就有點像專業單眼相機與傻瓜相機一般,前者可能需要拍照者知道如何調整光圈、快門甚至調焦(雖然也可用自動模式),後者則只需按個鈕即可(還有別忘了把鏡頭前的罩子拿掉)。

近些年在Windows上的軟體防火牆自然又比10幾年前做得好很多了,使用上也更具親和力,但有些雖然做的功能更強大了,卻也顯得更耗資源,給人的感覺反而累贅。使用者若要挑選這類軟體,還是要以合用、順手為宜,沒必要為了強大功能,卻挑個足夠拖累系統效能的軟體來用,結果自然是得不償失。

2017年2月28日 星期二

螢幕擷圖軟體PicPick與7capture

PicPick7capture都是不錯的擷圖軟體,各有其特色。

PicPick除了擷圖,還有圖片編輯功能,方便擷圖後對圖片做一些處理。它也支援捲動視窗,這是一般擷圖軟體所缺乏的功能。這是目前我做擷圖時最常用到的工具軟體。

7capture則是界面相當簡單,可完美擷取Windows Aero視窗圓角並去除透明視窗下的背景圖。注意這裡所謂透明視窗指的是Aero的效果,若是應用程式本身做出來的透明視窗就不同了。

2017年2月24日 星期五

HTML相關資源列表

對於網頁設計師或網頁開發人員而言,HTML是不可缺的要素。自己約在1994接觸HTML,當時編寫網頁是使用像PE2這類純文字編輯器,後來發現Netscape Composer網頁編輯器簡直就像是看到救星(對當年的NCSA Mosaic與Netscape Navigator兩大瀏覽器仍印象深印,後來分別演變為IE與Firefox,瀏覽器大戰未曾停歇。)。20多前過去,不論網路的發展或是網頁應用,都有相當大的改變,製作網頁系統的軟體工具也形形色色,功能強大,即使完全不懂HTML的人都能夠利用這些軟體製作出漂亮無比的靜態網頁甚至是動態的網頁應用系統。這類工具自己在過去的工作也用過一些,不過這些好用的工具並不曾讓我因此就放下HTML的基本功。

2017年2月22日 星期三

FBReader:手機平板用的電子書閱讀器

手機/平板用的電子書閱讀器APP有相當多樣的選擇,自己是個簡樸主義者,不需要太過複雜的功能與操作,FBReader正好符合這點,它支援了主流電子書格式,而PDF的支援則需再加裝了PDF plugin。不過若在手機上看PDF檔,通常PDF的頁面較大,在手機上小小的框框看就不是很方便了。

2017年2月18日 星期六

Firefox資源列表

現今最流行的瀏覽器是Chrome,但自己一直是Firefox的重度使用者,在幾年前曾試著用Chrome,卻因為有些Firefox的元件在Chrome上沒有相對適合的元件可取代而難以適應。即使近年來Chrome上可用的元件已大為增加,而且在許多方面,二相比較之下,可說明顯出現了較大的優勢,自己還是習慣用Firefox,畢竟從1.0版開始使用,也見它不斷改良,雖然對它的JavaScript引擎SpiderMonkey不是很滿意,還是很期待Firefox能越做越好。最起碼也幹掉了IE不是嗎?(老早就建議人家別用IE了,也別再開發那種只有IE才能執行的網頁程式。)

本文無意比較不同瀏覽器的優劣,純粹只是記錄自己慣用的東西。以下大多是自己實際用過的,而且覺得實用的元件或工具的網路連結資源。

2017年2月15日 星期三

Sublime Text資源列表

本來想做個像樣點的噢神Awesome Sublime Text,不過目前暫時沒什麼料,也避免此時花太多時間與精神,所以就先弄個簡單點的資源列表。
以下是與Sublime Text有關,自己有實際使用過,而且覺得好用的東西。〈華麗高尚的多用途文字編輯器Sublime Text〉裡頭提到的,這裡就不再重複列入。

2017年2月12日 星期日

Python數據分析的利器

近年來大數據趨勢的興起,讓數據分析、資料科學、機器學習這類領域成為熱門的潮流,一些適合這方面的語言或軟體像Julia、MATLAB/GNU Octave、Python、R、SAS、Scala也隨之更為流行。本文無意在這些不同軟體或語言之間做優劣比較,不同的軟體、語言之間各有其強弱項與突特之處,使用者應以自身的需求從中做選擇,筆者也只用過其中三種,也不適合寫這類比較文章。

前陣子發現有人以R語言七種武器來做為訓練課程或工具名稱的名稱,來代表R語言工具的使用技能。而這篇〈Python的七种武器_Python有哪些数据分析模块〉以及自己近期工作上的使用情況則激發了產生本文的靈感。

如果看倌是位武俠迷的話,應當會知道七種武器這名稱乃源自古龍武俠小說中的七種武器系列:長生劍、孔雀翎、碧玉刀、多情環、霸王槍、離別鉤、一口箱子。雖然第七種武器有其他二種說法:拳頭或是七殺手,但綜合各方面的因素看來,還是《英雄無淚》中的一口箱子較為合適。

Python不僅是個一般用途的語言,它在加裝幾個套件或模組後,就可立刻搖身一變成為數據分析的強大武器,一點也不遜色於主要為統計分析而打造的R語言,或是像MATLAB、SAS這類知名且歷史悠久的商業軟體。以下就介紹幾個能讓Python成為數據分析變形金剛的擴充套件:

2017年1月23日 星期一

幾款免費字典軟體

現在可供免費使用的字典軟體已有不少,這裡簡介幾款自己現在使用而且好用的。

靈格斯詞霸(Lingoes)
Windows桌面版軟體,小巧好用。官網上的詞典庫提供多種不同語言的字典檔供下載安裝,其中當然也包含了正體中文版的字典。

2017年1月21日 星期六

LibreOffice Math

LibreOffice Math是個好用的公式編輯器,官網上有功能介紹,這裡就不多寫了。

在Ubuntu上使用LibreOffice卻找不到Math時,自行裝上即可:

$ sudo apt install libreoffice-math
可單獨啟動Math,或是從其他LibreOffice程式內啟動。以下是單獨啟動Math做編輯公式的畫面。


2017年1月20日 星期五

GnuCash

綱要

本文提要
個人記錄
Ubuntu上的安裝
給非財會背景的初入門用戶的提示
參考

本文提要

 GnuCash是個人或小型企業用的財務軟體,屬於單機版的軟體。詳細的功能介紹可見官方的功能頁

類似GnuCash的軟體有不少,自己過去也用過其中幾種,這裡並不對這類軟體做推薦、評論或是比較,只是純粹做些自己在使用GnuCash時的一些記錄。讀者在選擇這類軟體時宜考量自身的使用需求並自行評估之後做決定,別只是看了某人寫了篇推薦、評論或比較文章就讓別人的看法替你做了決定,也許該文章只是作者的主觀意見,不見得適於別人。

自己選擇GnuCash主要是因為用的還算順手,功能也符合我的需求,適合本人用途的使用情況,其他的原因則是開放原始碼的自由軟體,支援多種作業平台。

個人使用這類記帳軟體或是財務軟體有何好處?好處多多,其中之一是訓練你自己或是你家的小孩早點培養出良好的金錢觀念。

後面也提供一些私人的想法給非財會背景而想用GnuCash的人做參考。