筆記

文字介面的聖經關鍵字搜尋

話說 DR 在 N900 上有使用一款聖經閱讀軟體 Katana,然而這個軟體卻有個問題,就是搜尋欄位無法使用輸入法,也就不能在搜尋經文時輸入中文。看了一下原始碼,發現該搜尋欄位是單純使用 Qt 的 QLineEdit 元件來建構,而無法使用輸入法的問題應該跟底層 Qt 函式庫在 Maemo 系統上的實作有關。因此一時之間也想不到有什麼好的修正方式。

 

分類: 

檔名式的程式遞迴法

最近 DR 工作的地方開始使用線上打卡系統,來取代原本以門禁刷卡做出缺勤管理的方式。而這項變化也不免讓人思考,是否有更加自動化的打卡方式?由於 DR 上班做的第一件事就是將電腦開機,至於關機則也是下班時的固定動作。於是便嘗試利用 Python 及 Selenium 撰寫了一支打卡程式,然後設法將它結合在電腦開關機的程序裡。

 

使用的作業系統為 Windows 7,一開始 DR 是將打卡程式加入到群組原則(gpedit.msc)的啟動 / 關機指令碼裡,但測試結果並不是很理想。於是便改為將程式捷徑放進使用者的「啟動」資料夾裡,讓打卡程式在進入桌面後自動執行。

 

至於關機的部份,則是再寫一支名為 shutdown.bat 的批次檔。該批次檔的作用是先後執行打卡程式及關機指令,因此只要使用者(也就是 DR 自己)的關機操作方式改為點選該批次檔,便會在關機前執行打卡動作。批次檔的內容如下:

@echo off
time_clock_automatic.py
shutdown /s /t 30

 

分類: 

大量文字檔編碼轉換

一座古蹟應該要修繕到什麼程度,有時候還真是個好問題。

 

話說本站的前一個版本(v5)是由靜態的 HTML 網頁檔所組成,數了一下,總共有 249 支網頁檔位於舊網站的目錄中,而其中絕大多數是採用繁體中文的 Big5 編碼。然而日前 DR 看著看著,突然覺得這些編碼應該要統一成 UTF-8 才是,於是便開始構思應該要怎麼處理才好。

 

雖然一開始很自然而然就會想到 iconv 這支工具,但隨後很快就會意識到,這項需求實則需要更加精細的功能。它應該要能夠偵測檔案的編碼,而不是僅檢查 <meta> 標籤的 charset 屬性,然後根據偵測結果來決定是否需要執行編碼轉換。除此之外,它也要能夠在轉換後自動修改 charset 屬性。

 

分類: 

Drupal 7 新增「更新日期」資訊於文章頁面

自從本站於數年前利用 Drupal 7 重新建置後,DR 便偶爾會意識到一個問題,但過去一直都沒有動手處理。這個問題就是文章頁面僅會顯示起初的發表日期,而沒有包含後來的更新日期,並且管理介面也沒有提供這方面的設定功能。

 

雖然文章起初的發表日期是可以輕易重設的,也就是說,發表日期經覆寫後也可以等同於文章最後的更新日期。然而 DR 卻認為同時顯示發表日期與更新日期仍是有其意義的,尤其對於技術性的文章而言,發表日期可以透露出該主題之所以存在的時間背景,至於更新日期則可以反應出,文章的內容並不一定是過時的,而是有可能是與時俱進的(不過,也有可能只是純粹訂正錯字而已)。

 

於是最近 DR 終於卯起來解決了這個問題,循線找了一下,決定修改 modules/node/node.module 這支檔案裡的 template_preprocess_node() 函式,首先新增一個自訂變數:

  $variables['updated_date'] = format_date($node->changed);
  

 

分類: 

GNOME 無障礙功能與右側數字鍵盤

除了玩《銀河生死鬥》(Tribes)系列遊戲會需要用到外,其實 DR 在日常的操作上一直沒有使用鍵盤右側數字區的習慣。因此直到日前有朋友來家裡操作電腦,才發現原來在 Fedora 21 上,右側數字區的按鍵是無法輸入的,無論 Num Lock 鍵啟用與否。

 

上網查了一下,發現這是因為系統預設啟用了「無障礙功能」(Universal Access)的「滑鼠按鍵」(Mouse Keys)項目,讓數字區的按鍵可以在桌面操作時充當滑鼠的功能。至於該項目的停用方式,即是前往無障礙功能的設定頁面,命令行的執行方式如下:

  • gnome-control-center universal-access

 

然後找到【滑鼠按鍵】項目後再行關閉即可。

 

分類: 

ddrescue 硬碟救援及對拷

幾天前(其實就是中秋節那一天)接到一部故障的主機,發現是裡頭的 WD 藍標 500GB 硬碟掛了,如果用 GNOME 磁碟工具程式(gnome-disks)來檢視 S.M.A.R.T. 資訊,就會看到一項「Reallocated Sector Count」出現錯誤:

 

 

於是拿了一顆 Toshiba 1TB 硬碟打算做更換。由於 DR 先前還未曾使用 ddrescue 做過針對故障磁碟的對拷,便想說順便嘗試看看。若故障的來源磁碟為 sdb,而目標磁碟為 sdc,則 DR 所使用的指令如下:

  • sudo ddrescue -f -r 1 -n -v /dev/sdb /dev/sdc recovery.log

 

分類: 

NEC/TOKIN 0E907

日前處理到一部故障的筆電,型號為 Lenovo IdeaPad Y550,CPU 是 Pentium T4400,而作業系統為 Windows 7。這部筆電最主要的問題是容易跳電關閉,尤其是在剛載入 Windows 的時候。另外也用裝有 Fedora 22 的可開機隨身碟測試過,儘管跳電情形不似 Windows 那般頻繁,但也還是會發生。

 

所以這很顯然是硬體性的故障,後來出於好奇的緣故,DR 索性把主機板拆出來,想看看是否有一些肉眼可見的問題。主機板的型號是 KIWB1/B2 LA-4602P(Rev: 1.0,2009-06-19),就在一邊端詳著主機板、一邊搜尋相關資訊的情況下,DR 發現問題是出在位於 CPU 插槽背面的一顆 NEC/TOKIN 0E907 去耦電容,又名為「Proadlizer」,此外網路上也經常將它寫為「OE907」。

 

分類: 

程式化的 Word 文字搜尋與取代

最近在工作上會很需要經常使用 MS Word,對多份稿件進行大量的文字搜尋及取代。雖然早先已寫了一支 Python 程式來處裡,然而在後續檢查內容的過程裡,卻發現原先撰寫的取代功能處理得未盡確實,例如文字方塊(textbox)裡的內容就無法被取代掉。經過上網搜尋後找到了一項解法,儘管確實可行,不過 DR 仍覺得其背後的設計邏輯還蠻弔詭的。

 

原本的寫法是像這樣:

分類: 

Firefox 與 YouTube HTML5 影片播放器

雖然 DR 平常在看線上影片時,通常都不太會在意影片的解析度。然而最近 DR 卻也注意到,在 Fedora 21 上使用 Firefox(40.0.3)觀看 YouTube 影片時,若使用 HTML5 影片播放器則只有 360p 的解析度可用,影片格式為 VP8 編碼的 WebM。但在 Windows 7 上的相同版本卻沒有這個問題。經過上網搜尋並做了一些交叉測試後,發現有不只一種作法能夠處理這個問題。

 

由於 YouTube 也有提供 VP9 編碼的 WebM 影片,因此可行的作法之一便是啟用 Firefox 內建的 VP9 支援。這個方法不需要依賴其它套件,只要至 Firefox 設定清單(about:config)修改下列設定值:

分類: 

程式設計初學指南

這是一篇沒有任何程式碼的程式設計初學指南……目的是期望作為一種具普遍性的指引。撰寫本文的起因是最近在工作上涉及到有關於程式設計學習路線的討論,使得 DR 開始思考有沒有一種具概括性卻仍是有效的指引,可以讓任何程式設計的初學者不論具體是想要走哪一種領域,都能夠從中獲益。

 

於是 DR 便在這裡將一些想法記錄下來,日後也有可能會因著想法有所更新而修訂本文的內容(甚至是整個砍掉重來?)。

 

首先要先聲明的是,DR 未曾真正擔任過程式設計師的職務(或任何不同職稱、但份內工作等同於程式設計師的職務),而且在可預見的將來,DR 大概也不會從事這類的職務。不過最至少 DR 還是會不時寫到一些程式(目的則不一而足),所以寫寫跟這類議題有關的東西應該還不至於太過突兀。

 

由於本文很大程度是參考 DR 個人的學習經歷,因此這裡會先簡單交代一下 DR 當年的程式設計學習路徑,讓本文的觀點能夠更容易被理解。

 

分類: 

頁面

Subscribe to RSS - 筆記