[Gtk] glade3

  • Glade Interface Designer
  • Download : Gtk-RanPass.zip

    在linux平台底下要做視窗程式設計多半會使用到Gtk或者是Qt,這裡介紹一個Gtk圖形化介面設計的輔助工具-glade。你可以透過下面的指令來安裝:

    • sudo apt-get install glade3

    為什麼我不用glade而選擇glade3?原因是因為我在glade裡開發的程式常常會出現跟我預期不同結果,有可能是我用build raw source code之後沒有好好設定的原因。而glade3雖然沒有內建build raw source code的功能,但我還是滿推薦使用它,至少目前為止我的小程式還沒出問題。安裝完後你會在Application->Programming裡會找到Glade Interface Designer。

    我概略的敘述Glade Interface Designer使用步驟,假設我的專案名稱叫做RanPass

    • 使用Glade Interface Designer設計一個介面
    • 設計完後存檔成RanPass.glade
    • 使用gtk-builder-convert將RanPass.glade轉成RanPass.xml,指令如下:

      gtk-builder-convert RanPass.glade RanPass.xml

    • 使用GtkBuilder相關函式來載入RanPass.xml,以及與你的程式功能結合編譯成圖形化介面

    光是上面四點的簡述你可能還是不知道如何下手,你可以參考下面的Tutorial來了解如何使用Glade Interface Designer:

    http://www.micahcarrick.com/12-24-2007/gtk-glade-tutorial-part-1.html

    另外這個網頁有完整的GTK+ Reference Manual

    http://library.gnome.org/devel/gtk/2.12/index.html

    Gtk圖形化開發環境本來就會比VB還要複雜一點,但如果你非常了解Gtk的語法,直接拋棄glade輔助設計會來的方便許多。glade3是一個滿新的套件,網路上這類的相關文件支援就相對較少,只能靠大家共同努力啦!

    #你可以下載我的Gtk-RanPass範例來編譯,我已經將基本的makefile寫好,裡面結合Password Generator的小功能,該有的註解也寫上了,或許這個小範例可以幫你了解到如何使用Gtk+glade。

    範例畫面如下:

    如果你不喜歡透過glade來處理UI的部份,那你可以下載下面沒有glade版的Password Generator

    Download: GGenPass.c

    透過下面的指令就可以編譯GGenPass.c了

    • gcc GGenPass.c -o GGenPass `pkg-config --cflags --libs gtk+-2.0`

    所以以小程式來講,自行設計也不是多大的負擔。

[UTips. 52] Apache, PHP, MySQL, phpMyAdmin

  • Apache, PHP, MySQL, phpMyAdmin
  • 在ubuntu裡面要一次安裝這麼多套件其實是一件很簡單的事情,透過下面的指令你可以分別安裝Apache2, PHP5以及MySQL5

    • sudo apt-get install apache2
    • sudo apt-get install libapache2-mod-auth-mysql
    • sudo apt-get install mysql-server
    • sudo apt-get install php5
    • sudo apt-get install php5-mysql
  • Apache
  • Apache的設定檔位置預設在/etc/apache2/apache2.conf,關於apache2.conf的詳細訊息可以參考下面的網頁,裡面頁有提到之前介紹的OpenSSL。

    http://tech.seety.org/debian/ApacheConf.html#apache-apache2

    啟動Apache2

    • sudo /etc/init.d/apache2 start

    關閉Apache2

    • sudo /etc/init.d/apache2 stop
  • MySQL
  • 如果安裝過程中並沒有設定MySQL的root密碼,你可以透過下面的指令新增:

    • mysqladmin -u root password yourPassword

    啟動mysql

    • sudo /etc/init.d/mysql start

    關閉mysql

    • sudo /etc/init.d/mysql stop
  • PHP
  • PHP的設定檔位置在/etc/php5/apache2/php.ini,如果沒有特殊需求的話,安裝完即可正常使用,更改完畢之後請重新啟動apache。

    除此之外,如果你有用到mcrypt這個module,請透過以下指令安裝

    sudo apt-get install php5-mcrypt

  • phpMyAdmin
  • 這是一個圖形化MySQL管理工具,請到官方下載原始碼

    http://www.phpmyadmin.net/home_page/downloads.php

    解壓縮後將整個目錄放置/var/www裡,然後將phpMyAdminXXX這個資料夾裡的檔案重新命名:

    config.sample.inc.php

    改成

    config.inc.php

    接著編輯config.inc.php這個檔案,找到$cfg['blowfish_secret'] = ''; ,在''輸入任意英文字母,存檔案輸入以下網址在瀏覽器(假設你的資料夾名稱為phpMyAdmin)

    http://localhost/phpMyAdmin

    如果你能夠正常使用phpMyAdmin登入MySQL,那就設定完成了。

  • MySQL Query Browser
  • MySQL Query Browser是一個開發過程中的好用工具,你可以從官方下載原始馬來編譯:

    http://dev.mysql.com/downloads/gui-tools/5.0.html

    但是為了方便我們還是直接使用apt-get吧!

    • sudo apt-get install mysql-query-browser

    安裝完後在你的Application->Programming就會有MySQL Query Browser了。

[SSH/SSL] OpenSSL Programing : Connection

  • OpenSSL Programing : Connection
  • Linux: unix_openssl_conn.zip

    MinGW: mingw_openssl_conn.zip

    Visual C++ 2008: vc2k8_openssl_conn.zip

    繼這篇[SSH/SSL] Creating Certificate之後,我將三種環境的基本SSL連線程式給打包設定好,有需要的人下載對應的版本,裡面的程式範例是最簡易的,結合之前的[C/C++] Socket Connection在搭配OpenSSL而已,只是原先的 send()/recv()將會改由SSL_read()/SSL_write()來取代。

    流程架構如下:

    輸出範例畫面(linux):

    /*** Server ***/

    /*** Client ***/

    如此一來你就可以使用OpenSSL來加密你的通訊資料。

    #其中有爭議的是Visual C++2008的版本,我在編譯過程中出現ossl_typ.h裡175~177的程式碼有錯誤,我暫且先把他們給註解掉,初步判斷這是0.9.8h才有的功能,所以如果你有用到Online Certificate Status Protocol (OCSP)的功能,建議你把註解給放掉,然後想辦法解決啦!

[SSH/SSL] Creating Certificate

  • Creating Certificate
  • 建立憑證是OpenSSL Programming裡的一項重要的前置工作,這裡我介紹使用CA.pl來製做Server跟Client的憑證。

    製作憑證的一個簡單流程圖如上圖,概略描述如下:

    • 產生Self-Sigh Root CA 憑證中心
    • 產生Server的Private key
    • 使用Server的Certificate Request(csr)+CA的Private Key(簽名)來產生Server的Public Key
    • 產生Client的Private key
    • 使用Client的Certificate Request(csr)+CA的Private Key(簽名)來產生Client的Public Key
    • 最簡易的方式就是這五個步驟(如同圖上由CA.pl連出來的五條線)


    概略的了解這樣一個製作過程後,我以ubuntu為例來製作Certificate,如果你是透過apt-get來安裝openssl的話,你的CA.pl的路徑如下:

    • /usr/lib/ssl/misc/

    如果你是自行安裝OpenSSL,且沒有設定路徑的話,那你的CA.pl會在這裡

    • /usr/lcoal/ssl/misc


  • RootCA
  • 產生RootCA,請用以下指令

    • CA.pl -newca

    接著他會要你設定一組密碼給CA。再來你就依照螢幕指示輸入相關憑證訊息即可,要注意的是最後他會問你要不要設定Extra attributes,你就直接按Enter跳過。

    產生完後在你的openssl資料夾下,例如:

    • /usr/local/ssl/misc/demoCA

    裡面就會有分別以下目錄與資料

    • cacert.pem <-- CA的public key
    • private <-- CA的private key所在的資料夾
    • crl <-- Certificate Rovoke List (註銷的憑證清單目錄)
    • newcerts <-- CA所簽發過的憑證

    而一般OpenSSL Programming你會先用到的cacert.pem,其餘的之後使用到再說。如果你沒有要建立,ChildCA,那麼CA的建立就完成了(別忘了你的CA的密碼,之後簽發時要使用到)。

  • Server Key/Certificate
  • 產生Server的Private Key請輸入

    • CA.pl -newreq

    接著他會要你設定一組密碼給Server的Private key使用,接著你就按照螢幕上的指示去設定即可,最後的Extra attributes,你也直接按Enter跳過即可。

    產生完後會在你的openssl資料夾,例如

    • /usr/loca/ssl/misc/

    裡面會出現如下檔案:

    • newkey.pem <-- Server的Private Key
    • newcsr.pem <-- Server的Certificate Request

    有了Private Key和csr之後,我們要再建立Server的Public Key,輸入下面的指令

    • CA.pl -sign

    這時你就要輸入CA的密碼了,其餘皆按照螢幕指示操作即可,產生完後也會在剛剛那個目錄下多了一個檔案:

    • newcert.pem <--- Server的public key

    如此一來Server的Public & Private Key都產生好了,你可以把newcsr.pem刪除,然後把newkey.pem, newcert.pem重新命名完後移至別的資料夾裡保存。

  • Client Key/Certificate
  • Client的Key/Certificate產生方式跟Server一模一樣,因為不管你的憑證是要給Server還是Client,對rootCA而言,這些都是他的子層級,沒有任何差別。

    總結一下,產生完後你會有以下五個Programming必備的檔案

    • CaPuk.pem (CA的Public Key,由cacert.pem改命名而來)
    • SrvPrK.pem(Server的Private Key由產生Server的憑證過程時,將newkey.pem改名而來)
    • SrvPuK.pem(Server的Public Key由產生Server的憑證過程時,將newcert.pem改名而來)
    • CliPrK.pem(Client的Private Key由產生Client的憑證過程時,將newkey.pem改名而來)
    • CliPuK.pem(Client的Public Key由產生Client的憑證過程時,將newcert.pem改名而來)

    CaPuK.pem, SrvPuK.pem, SrvPrK.pem, CliPuK.pem, CliPrK.pem這五個檔案好好保存,在下一篇[SSH/SSL] OpenSSL Programing : Connection裡會用到。

    #關於Windows用戶如果無法使用CA.pl的使用者,你可以使用傳統建立憑證的指令來產生(先切換到openssl.exe所在的目錄底下,一般沒有設定的話會在c:\usr\local\ssl\bin):

    RootCA:

    • openssl genrsa -des3 -out ca.key 4096
    • openssl req -new -x509 -days 365 -key ca.key -out ca.crt

    Server:

    • openssl genrsa -des3 -out server.key 4096
    • openssl req -new -key server.key -out server.csr
    • openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out serve

    Client:

    • openssl genrsa -des3 -out client.key 4096
    • openssl req -new -key client.key -out client.csr
    • openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out serve

    雖然用傳統的方式要多打一些指令,但是同時你也可以發現你有比較多的參數可以設定,像是密碼的位元數,憑證的期限,以及加密的規格,再者透過上面的指令你更能了解憑證產生以及簽署的關聯。

[C/C++] Password Security Checking

  • Password Security Checking
  • Download:passSecurityChecking.c

    一支簡單的密碼安全檢測程式,裡面包括了以下不合格的檢測項目:

    • 密碼長度低於8
    • 密碼皆為數字
    • 連續字母超過4個以上
    • 相同字母連續超過3個以上
    • 特殊鍵盤碼

    在特殊pattern部份並沒有完全,另外還可以擴充檢查身份證字號格式,常用英文人名,常用英文單字,以及常用密碼組合等。

[C/C++] Random Password

  • Random Password
  • Download: ranpass.c

    提供一個簡單的密碼產生程式,RanPass()函式如下:

    參考輸出畫面如下:

[SSH/SSL] OpenSSL Installation

  • OpenSSL Installation
  • OpenSSL下載頁面如下:

    http://www.openssl.org/source/

  • Windows
  • 在windows底下我以Visual C++ 2008來做安裝範例,在安裝之前你要先裝ActivePerl,你可以到下面的頁面去下載:

    ActivePerl

    安裝完後你可以設定環境變數把perl/bin的目錄加到PATH裡面,或者你可以開啟cmd打上

    • set path=C:\Perl\bin

    接著設定Visual C++ Environment:

    • "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32"

    將openssl解壓縮到c:\底下,進入openssl的資料夾

    • cd openssl-0.9.8h
    • perl configure VC-WIN32
    • ms\do_ms
    • nmake -f ms\ntdll.mak
    • nmake -f ms\ntdll.mak test
    • nmake -f ms\ntdll.mak install

    執行完上面的指令後,程式就會安裝至c:/usr/lcoal/ssl底下,裡面分別有bin, lib, include,這些都是openssl programming你會需要用到的。

    詳細訊息可以參考INSTALL.W32文件。

    如果你覺得自行編譯很困難,你也可以到下面的網站去下載已經編譯好的函式庫

    http://www.slproweb.com/products/Win32OpenSSL.html

  • Linux
  • Linux用戶一樣是使用上面的下載頁面的openssl原始碼,解壓縮後執行下面指令

    • ./config
    • make
    • make test
    • sudo make install

    安裝完後程式會在/usr/local/ssl,裡面的lib, include也是openssl programming需要用到的。

    詳細的訊息可以參考INSTALL這個文件。

    另外如果你是ubuntu類的linux,你可以直接打上下面的指令完成安裝openssl

    • sudo apt-get install openssl

    只是deb內的版本會比官方舊一點,同樣的,沒有特殊需求直接使用打包好的deb會方便許多。

Orange - data analysis tool

Installation pip install orange3 Run orange python -m Orange.canvas