2019-06-21

Postgres SQL 和 QT

用QT在Windows系統上寫資料庫應用程式有點煩人,不是QT不好用,而是SqlDriver的問題。

#include
#include
#include

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    db.setHostName("localhost");
    db.setDatabaseName("lab");
    db.setUserName("dbuser");
    db.setPassword("dbpw");
    if (! db.open()) {
        qDebug()<<"DB connection error; " << db.lastError().text();
    }
    return a.exec();
}


 
編譯執行後,出現
QSqlDatabase: QPSQL driver not loaded

原因是因為 QT 沒有將必要的DLL放在程式目錄內,解決之道有幾個,第一個是到 Postgres SQL目錄下的bin把下列幾個檔案複製到新創的專案目錄去


libeay32.dll
libiconv-2.dll
libintl-8.dll
libpq.dll
ssleay32.dll

另外,依照專案編譯的形式,還要把
qsqlpsql.dll (Release)
qsqlpsqld.dll (Debug)
複製到專案目錄去


第二個比較簡單,把Postgres SQL的bin目錄設定到Windows的path即可,但這只是可以在開發者的電腦上執行,打包給用戶時,還是要把必要的DLL複製進來才行。

2016-03-06

ACER V3-372 Laptop 安裝 Windows 7

Intel 在 Skylake 世代全面換用 xCHI,Windows 7 所使用的 ECHI 被放棄掉,因此要安裝 Windows 7 在新的筆電上就會出現問題了,甚麼問題呢?找不到 USB 裝置啊!有人會說這算啥問題,不要用 USB 光碟機不用好了?但不是每一台筆電都有光碟機,例如 ACER V3-372 這台 13.3 吋的 Laptop 就沒有光碟機,只能用 USB Flash Drive 或 USB External DVD-ROM 來安裝 Windows。

如何將 USB 3.0 整合進 Windows 7 安裝碟片,網路上有很多文章提到,重點就是用主機板廠商出的工具,但要注意不要用多合一的 Windows 7 光碟。

最令人頭痛的驅動程式問題,用 Lenovo 的Thinkpad X260 所附的 Windows 7可以解決大部分,但網路卡得另外去 Realtek 下載,Thinkpad 用的是 Intel 的。真正有問題的是 Wireless 網路卡,ACER V3-372 用的是高通的 QCA61x4A 晶片,可以用 Lenovo Thinkpad E460 的驅動程式來安裝。

結論是,ACER 的筆電真的不適合商務人士使用,Lenovo Thinkpad 系列安裝 Windows 7 不用這麼麻煩。

2015-12-29

Outlook 無法建立預覽檔案的問題

最近使用者反應ㄧ個問題,她的 Outlook 2010 不能開啟來自某些寄件者的PDF,系統一直顯示

無法建立檔案:file name。用滑鼠右鍵按一下您要建立檔案的資料夾,然後按一下快顯功能表上的 [內容] 以檢查您對該資料夾的權限。

這是因為使用者對於系統預設的 temporary file folder 沒有足夠的讀寫權力,解決的方法就是強制指定ㄧ個暫存檔給 Outlook 2010。


  1. 找出下列登錄機碼並按一下:
    HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Security\
  2. 在右邊窗格中,按兩下 [OutlookSecureTempFolder]
  3. [數值資料] 欄位中,輸入 C:\temp0\,然後按一下 [確定]
  4. 結束 [登錄編輯程式]。
  5. 將電腦重新開機。

2015-12-20

Outlook 2010 一直進入安全模式的問題

看來M$的更新程式又惹禍了,安裝了 KB3114409 更新程式後,Outlook 2010會一直以安全模式執行。這安全模式到底有甚麼影響,說實話,我不知道。但使用者反映看到這字樣很不舒服,那還是想辦法移除吧。

解決方案就將 KB3114409 移除,移除後,一切就天下太平了。

2009-02-21

IDT HD Audio Codec 在 XP 系統無法正常啟動的解決方法

前一陣子在幫朋友處理 HP DV7-1185eg 這款 17 吋內建 Vista 系統的筆記型電腦,由於 Vista 實在用不習慣,因此興起了裝 XP 系統的念頭。

這個念頭讓我吃了苦頭,簡單來說,就是自找苦吃。一般來說,新款筆記型電腦要安裝XP會遇到問題主要是驅動程式和系統預設的工具程式無相對應版本,這款筆電也不例外。

首先遇到 XP 無法辨識 SATA 裝置的問題,這個問題好解決,因為這款筆電使用 Intel 的晶片組,因此只要到 Intel 網站下載軟碟版驅動程式,然後利用 nLite 將裝置資訊整合進 XP,製作一片新的安裝 CD 就解決了。

接下來就是解決裝置管理員中一連串的問號,到 Intel 網站下載相對應版本的 inf 即可解決晶片組問號,到 nVidia 下載 9600GM 的 XP 驅動程式就解決顯示卡問題,而RJ-45網路卡是 Realtek 的 PCI-E GBits,Wireless 網路卡是 Intel 的 802.11n,只要下載 XP 驅動程式就解決。

剩下的問號是 ACPI 裝置和讀卡機部分,讀卡機部分可以到 HP 網站下載 VISTA 32bits 的驅動程式,這個驅動程式兼容 XP 32 bits 模式,而 ACPI 部分分成兩個,一個是 HP Mobile Shock,另一個是 Applicaion Key Launch,前者 M$ 有提供驅動程式,只要完成 Windows Update 就解決,後者則必須在網路上搜尋合適的驅動程式。

做完這些之後,裝置管理員的問號全部消失,但音效不見了,正確來說,是根本沒出現....囧rz

一般採用 HD Audio Codec 的系統,在剛裝完 XP 的時候,系統應該不認得音效裝置,裝上 UAA 驅動程序後應該就會顯示出 HD Audio 裝置。但這個系統很特別,XP SP3 內建的 UAA 驅動程式辨識不出正確的 HD Audio 裝置,即使此時安裝 IDT HD Audio 的 XP 32 驅動程式,安裝程式也會回報找不到裝置。然而若是將 UAA 停止並重新啟用,系統便能辨識出兩個 HD Audio 裝置,一個是 HDMI 音效,一個就是 IDT HD Audio,此時便可安裝對應的驅動程式,聲音就這樣出現了。

不過事情並不會這麼順利,關機重新啟動,系統又辨識不出剛裝好的音效裝置... Orz

難道每次開機都要手動進行這個愚蠢的程序嗎?

當然不用,M$ 有一個工具程式,DEVCON,他可以針對硬體裝置進行停止和啟動的動作,所以寫一個批次檔,讓系統每次開機後自動執行 UAA 的再啟動程序。

批次檔內包含如下的指令 devcon.exe restart PCI\VEN_8...(VEN_xxxx 的資料請查詢裝置管理員中 UAA 的 Hardward ID)

這樣就暫時解決了擾人的音效問題,但依舊無法解決 XP 開機時,系統嘗試辨認音效裝置失敗所導致的開機時間冗長。這個責任不知道應該歸屬在 IDT 的晶片還是 M$ 的 UAA 驅動程式。

結論是,如果看到系統是採用 IDT HD Audio, SigmaTEL HD Audio, ADI HD Audio 這三種 Audio Codec,該款筆電直接丟進垃圾桶!

繼惹人厭的 Sony 後,再度遇到令人厭惡的筆電....


2008-12-06

Rebuild Grub Bootloader

GRUB (GRand Unified Bootloader)是目前 Linux 下常用的開機磁區管理程式, 預設情況會覆蓋掉 Windows 的 MBR 資料。重裝 Windows XP 後,Windows XP 會以系統預設的 MBR 覆蓋掉 GRUB 磁區,這個時候就需要重建 GRUB。

步驟如下:
  1. 用 Linux Live CD 開機
  2. 進入 Console Mode
  3. sudo grub (以 root 權限執行 grub shell)
  4. 首先尋找系統中的 grub 開機資料,find /boot/grub/stage1
  5. 系統會回應如 (hdx, y) 這樣的資訊,x 代表實體硬碟,y 代表分割區
  6. 指定 root 位置, root (hdx,y)
  7. 安裝 grub, setup (hdx)
這樣就重建完 GRUB,消失了 Linux 開機程式又回到系統。

Grub 的用途很多,當我們已經擁有一個正常的 Windows 系統,然後想安裝 Linux 系統,卻沒有光碟可用時,GRUB 便可完成這個任務。

2008-11-28

時代


很感傷卻又激勵人心的一首歌, 中島阿姨唱的這首時代訴說了旅人的無奈和期望, 不管經歷了多少挫折, 只要不失去希望, 都會有未來.




時代
作詩:中島みゆき 作曲:中島みゆき

今はこんなに悲しくて 涙もかれ果てて
もう二度と笑顔には なれそうもないけど

そんな時代もあったねと いつか話せる日がくるわ
あんな時代もあったねと きっと笑って話せるわ
だから 今日はくよくよしないで
今日の風に吹かれましょう
まわるまわるよ 時代はまわる
喜び悲しみくり返し 今日は別れた恋人たちも
生まれ変わって めぐりあうよ

旅を続ける人々は いつか故郷に出会う日を
たとえ今夜は倒れても きっと信じてドアを出る
たとえ今日は果てしもなく
冷たい雨が降っていても
めぐるめぐるよ 時代はめぐる
別れと出会いをくり返し
今日は倒れた旅人たちも 生まれ変って歩きだすよ

まわるまわるよ 時代はまわる
別れと出逢いをくり返し
今日は倒れた旅人たちも 生まれ変って歩きだすよ

まわるまわるよ 時代はまわる
別れと出逢いをくり返し
今日は倒れた旅人たちも 生まれ変って歩きだすよ
今日は倒れた旅人たちも 生まれ変って 歩きだすよ