8月 07, 2013

Linux:使用gtkmm、glade3開發C++ 圖型介面I程式(一)簡介

一、開發環境與版本

作業系統:ubuntu 13.04
GTK+圖形介面函式庫的C++介面:gtkmm 3.0
GTK+視覺化使用者界面設計工具:glade 3.14.2
C++編譯器:g++ 4.7.3

二、使用glade建立GTK+圖型介面
(一)構成圖型界面
1、基本視窗(top level window)。
2、容器(Container),如VBox、HBox...。
3、視窗元件(Widget),如button、label...。
4、設定視窗元件屬性,如偵測Clicked事件,自定信號處理。

(二)存檔,新版産生xml格式設計檔( .glade),廣泛提供其它程式語言解析、建立變數與設定處理信號。

(舊版程式則是針對C、C++、Ada95、Perl等程式語言依設計圖形界面産生原始碼,再與主程式一起編譯為執行檔,以C為例,産生下列原始碼:
1、Interface Create Functions:interface.c、interface.h。
2、Signal Handler & Callback Functions:callback.c、callback.h。
3、Support fufunctions:support.c、support.h。)

(三)預覽圖形界面

三、編譯圖型介面程式
(一)建立專案資料夾(Project Folder),放置三個檔案:
1、標頭檔(.h Header File):定義類別(Class)等項目。
(1)引用gtkmm.h。
(2)成員變數(Member Variable)、成員函數(Member Function)及其它類別,此外,需定義構成圖形介面並與信號處理相關的的小元件(Widget),如按鈕(Button)、標籤(Label)等。
(3)設定圖形介面的應用程式介面(API)Gtk::Builder,編譯時載入XML格式檔。
(4)宣告建構子(Constructor)及解構子(Destructor)(解構子可省略),此時僅宣告存取層級(Public)(保留於程式碼原始檔處,配合Builder參考glade設定檔,實作圖形介面(Implementation))。
(5)信號處理(Signal Handlers),定義處理圖形界面小元件觸發事件(Event)。

2、根據標頭檔撰寫的程式原始檔(.cc or .cpp Source File):

3、圖形介面格式檔(.glade):經由Glade設計儲存的XML格式檔。





(二)在文字終端下達指令編譯(粉色字為固定指令;白色字體為原始碼檔,依序為主程式、界面程式及執行檔)。

   g++ xmain.cpp xglade.cpp -o xmain  `pkg-config gtkmm-3.0 --cflags --libs`


8月 06, 2013

Linux系統:轉換正體中文與簡體中文文字編碼!

寫這篇文章最主要的,是怕自己忘掉後每次花很長的時間找資料。

一、網際網路四通八達,許多取自網路的中文資料,除很大一部份是簡體編碼,造成台灣使用者的困擾,因此轉換編碼的需求應運而生,首先僅就曾用過的中文內碼,簡介其編碼系統:
(一)1.大五碼(Big5)
1983年由台灣地區電腦廠商推出的中文系統編碼業界標準,使用在DOS、Windows 3.1、 Windows 95及Windows98等正體中文作業系統作為內碼。
(二)簡體中文(GB2312)
1981年由中國大陸發布的政府標準,全稱為信息交換用漢字編碼字符集.基本集,使用於簡體中文系統作為內碼。
(三)統一碼(UTF8)
1993年正式在美國USENIX會議正式推介,以容納世界上大多數字符的編碼。

二、Linux系統轉換簡體中文為正體中文編碼

請於文字終端輸入下列指令,只轉換檔案內容文字符號的編碼,但檔名編碼並不會跟著更改(gbfile.txt為簡體中文檔,outputfile.txt為輸出正體中文編碼)

iconv gbfile.txt -f gb2312 -t big5 | iconv -f big5 -t utf8 -o outputfile.txt

三、Linux系統轉換正體中文編碼為簡體中文

請於文字終端輸入下列指令

 iconv big5file.txt -f big5 -t utf8 | iconv -f utf8 -t gb2312 -o outputfile.txt


 請參考!

4月 26, 2012

slackware13.37 遠端桌面連上WINDOWS伺服器

最近因控管系統,需要在SLACKWARE LINUX系統上以遠端桌面連上WINDOWS伺服器,使用XP或其它WINDOWs的作業系統,是以MSTSC這個程式連上WINDOWS伺服器;不巧我常用的是LINUX系統,難道要另外安裝XP嗎??
經過一番努力搜尋,終於發現在LINUX上也有這種程式,名叫 rdesktop(文字界面)或grdesktop(圖形界面),圖形介面的操作就不講解了,以下為操作指令:

rdesktop  192.168.1.106   -a 16 -f

192.168.1.106    WINDOWS伺服器IP網址
-a 16                   以16位元彩色顯示
-f                         以全螢幕顯示

有圖有真相:


4月 07, 2012

slackware13.37下mysql資料庫的啟動錯誤

啟動MySQL資料庫時顯示

Can't start server : Bind on unix socket: Permission denied

檢查log紀錄

sudo vi /var/lib/mysql/HOSTNAME.err

發現其中有2個錯誤

120407 14:53:08 [ERROR] Can't start server : Bind on unix socket: Permission den
ied
120407 14:53:08 [ERROR] Do you already have another mysqld server running on soc
ket: /var/run/mysql/mysql.sock ?



觀察錯誤訊息顯現為存取權限問題,由於在SLACKWARE中MYSQL資料庫是由帳號mysql(所屬羣組也是mysql)啟動運行,因此其執行檔案的存取權限皆應設為755 mysql.mysql,如下

sudo chmod 755 -R mysq.mysql /var/run/mysql  /var/lib/mysql

修改完成後,再啟動mysql就能運行了

sudo /etc/rc.d/rc.mysql 或 sudo mysqld_safe