跳到主要內容

發表文章

目前顯示的是 2012的文章

使用 MinGW64 compiler 的程式大小

將之前在 Windows 8 系統中寫的一些小程式(包含執行檔) copy 到別的目錄,赫然發現在 Windows 8 所編譯出來的 hello.exe 檔案竟然有 6.4 MB 那麼大,比對之前在 Windows 7 以前的檔案,icuTest.exe 只有 50K, locale.exe 只有 1.1 MB。於是在不同的系統測試,以 hello.cpp 測試結果如下: 1. FreeBSB :7.3 K 2. MinGW32 on Windows XP:9.34 K 3. Visual Studio on Windows 8:68 K 4. Clang on Windows XP: 5.36 K 另外,拿 boost 程式測試 boost library 測試產生 Binary 檔的結果: 1. FreeBSB :未測試 2. MinGW32 on Windows XP:1.08 MB 3. Visual Studio on Windows 8:未測試 4. Clang on Windows XP: 471 KB ,但是在 XP 仍然不能 work 這樣的差別太大,使用 gcc -s 的參數,將 gcc 所編譯出來的執行檔,不含所有的 symbol table,測試結果如下: 1. FreeBSB :5 K 2. MinGW32 on Windows XP:4.68 K 3. MinGW64 on Windows 8:671 K 結論是:在 Windows 系統中要加入 -s 選項。 在 CodeBlocks 中有一個相同的選項,在 Settings -> Compiler 中,要記得將 Strip all symbols from binary(minimize size [-s] 這個項目選取,產生的 Binary 檔才不會太大。 順帶一提,使用 Visual Studio for Desktop 測試 hello.cpp 程式,利用 win32 的 template 時,會 include "stdafx.h" 這個 header,而 include <iostream> 必須在它之後 include 進來,否則找不到 <iostream> 這個 head

Setting LLVM + Clang on CodeBlocks for Windows 8

因為工作的需要,一直希望能在 Windows OS 中能執行 LLVM, Clang 等,但是找了一些網路的文件,目前對於 Windows 系統的支援還不成熟,特別是 Windows 64 bits,在 LLVM project 中只 支援 32 bits 。又不想再依照之前 compile llvm 3.0 所寫的 llvm.txt 文件,在 Windows 8 64-bits 系統來 compile LLVM 的套件,在網路上找到 MinGW 的開發者已經 compile 的 binary 檔,下載 ran_linn 編譯了 Clang + LLVM for Windows 64 bits 的 binary 檔 ,在測試 Hello World 的時候,無法載入 MinGW 64 的 include 檔,在 Clang on Windows 的這篇問答 中,另一個開發者 rubenvb 回應這篇的問題,提供了他在 i686-w64-mingw32 編譯 Clang with LLVM 的 binary 檔 ,確實可以使用 Clang 及 Clang++ 來 compile C, C++ 的 source。另外, rubenvb 也有 compile 64 bits 的 LLVM 套件 ,不過,在下載的說明中他寫道:   I also provide 64-bit builds, but these are only useful for C. Compiling C++ to 64-bit object code will result in linker errors. 測試以後,他 compile 的 Clang 3.1 版本無法在 64-bits 的系統中正常 work。如果要測試LLVM 暫時要使用 rubenvb 所編譯 i686-w64-mingw32 的版本,或者到 FreeBSD or Ubuntu 的系統。 接著,在 CodeBlocks 中新增了一個 clang-llvm with mingw32 的 compile 環境,測試 boost library 是否可以使用? 結果是:可以 compile 成功,但是程式卻無法執行,雖然重新安裝 boost 32-bits 的版本,結果仍然一樣。所以,要使用 boost 仍然要使用

Visual Studio Express 2012 的版本

重新安裝 Windows 8 主要是因為原來 Windows 7 的 C: 空間不足,無法再安裝Visual Studio 2012(原來只 partition 50 GB),等了許久才知道學校已經有 Windows 8 的授權版,也很自然的裝了 VS Express 2012 for Windows 8 的版本。一直都是使用 CodeBlocks + MinGW 寫程式的環境,很自然的不會想用 VS 來 compile 程式;所以,安裝好 VS 之後就把它放在一邊,要等到再次 compile LLVM or 某些 open source 時再來用它。 今天,看到 MSDN 的 VC++中有一個 Parallel Programming 的 C++AMP 的 Classes,想試一下這個 Classes 的效果及是否需要特別的 hardware? Copy Overview 中的程式來測試,當然要拿 VS Express for Windows 8 出來,單獨對這個程式 compile,結果如這一篇文章所說: No more Win32 template on Express Edition at Visual C++ 2011? (ps: Visual C++ 2011 in Microsoft Visual Studio 11.0 就是 VS Express 2012),在 VS for Windows 8 中找不到 Win32 console application, 在 Answer 的第一篇中引述 Visual Studio Express 2012 for Windows Desktop ,第四段中間寫這:With this new Express edition, developers will be able to use C++, C#, or Visual Basic to create Windows desktop and console applications, 所以如果要使用內建的 Win32 Console Applications template 的話,需要安裝 for Desktop 的版本。  如果不想要再安裝 for Desktop 版本,可以使用 這一篇文章 所說的作法: 在 command line 中 輸

Eclipse IDE

之前都是寫 C, C++ 程式,不需要寫 java ,但是 programming in cloud computing 課程需要寫 java,所以不得不安裝 Eclipse 來幫助 william 寫程式,不然他的負荷很大。 由於懶得看 Eclipse 內 help 的說明,在 google 中搜尋了一下國內對於 Eclipse IDE 的教學,除了在 java world  [1] 有些說明可以參考外,但是還是不足我想要的內容,於是在國外的網站 [2] 有詳盡的 IDE 操作教學。 ---------------------------------------------------------- [1] http://www.javaworld.com.tw/jute/post/view?bid=10&id=40626 [2] http://www.vogella.de/articles/Eclipse/article.html

美媒點名「危險核廠」台灣全上榜!

美媒點名「危險核廠」 台灣全上榜! TVBS /  2011/03/26 引述這篇報導的內容: 台大公衛所教授詹長權:「幾乎南北這樣一夾,幾乎就佔了三分之二個台灣。」 原能會副主委謝得志:「原來的設計是,5公里以外的都不要疏散。」 到底要疏散多遠,原能會已經開始「自我總體檢」,否則,要是輻射外洩,台灣南北不過400公里,要怎麼逃才安全,著實是一大隱憂。 唉!早在基隆關時,對於台灣共有那麼多的核能電廠,還要建核四就憂心忡忡?一旦發生核能外洩,台灣人民往哪裡逃?如今,已經施工那麼多年,是否如當時預期所估算,急需要這麼的電源,否則會影響經濟的成長?且核四的施工品質,屢屢上報,拼裝的機組,商轉以後,更是危險。 時至今日,在日本 311 的海嘯擊毀核能電廠之後,再來討論這個議題,已經投入的時間、金額、人力、物力等,已經相當複雜,為時已晚矣。現在才來檢視各個核電廠的安危?只是亡羊補牢罷了。

What is Web services?

昨天(2012.05.17)聽「 那一年,我們談的個人資料保護 」時,與計中林組長談起 Web services ,還以為是 Web 的開發?於是 Google 了一下,在 Wikipedia's Web Services 的解釋是 is a method of communication between two electronic devices over the Web (Internet) 。是乎有些籠統,在 reference 中有一篇文章「 Putting the "web" into the web services 」中提到 Rest 系統,於再次 Google 一下,石頭閒語中有一篇 RESTful 的實做 。 http://www.petefreitag.com/item/431.cfm

Installing cwTeX in Windows 8

update: 2018.06.15 新版 cwTeX 是 5.1 版,安裝套件也更新 MikTeX 最新版本,但是卻無法使用 pdflatex 編譯舊版的 .ctx 檔案,從C:\Users\user\AppData\Local\MiKTeX\2.9\miktex\log\pdflatex.log 檔得知,FATAL pdflatex - No space left on device,吳老師也在 MiKteX project 中提出 bug report[1],專案主持人指引[2]文章產生無法使用 pdflatex 編譯的問題,起因於中文字編碼所造成,解決方法是改用 lualatex 來編譯。新版的 cwtex5 與 lualatex 編譯 .ctx 和 .tex 文件,不需要再輸入副檔名。 將 OS 改成 Windows 8,是重新安裝,不是從 Windows 7 升級,所有的軟體必須全部重新安裝,其中包括  MikTeX, Texmaker, Ghostscript, Gsview, 以及 cwTeX 這些撰寫 TeX/LaTeX 所需要的軟體。由於 Windows 8 是安裝 64 bits 的系統,除了 cwTeX 仍然是 32 bits 以外,其他的軟體皆安裝 64 bits 的版本,安裝的過程如下: 1. 下載 MikTeX , Texmaker , Ghostscript , Gsview 64 bits 的版本,安裝到系統中 依照 cwTeX 的手動安裝的說明 ,因為 cwTeX 是32 bits, 且 Windows 64 bits 的軟體是裝在 c:\Program Files, 32 bits 的軟體是安裝在 c:\Program Files (x86) 2. 下載 cwTeX cwtex34-minstall 的 zip 檔案,解壓縮到 c:\Program Files (x86) 目錄之下 3. 將 cwTeX 字型加入到 MikTeX 系統中:  3a) 搜尋 -> Setting -> Settings(Admin) -> Root, 點選 Add 將 c:\Program Files (x86)\cwtex 目錄加入 3b) 編輯 c:\Program Files (x86)\cw

Open NI

在 Heresy 的網站 中介紹 Open NI 的的套件,對於 3D 及 VR 的研究結合了感知器,可以創造出不一樣的虛擬世界。 在他的 blog 中也有提到關於體感知器的應用,其中一個很有創意的應用是使用感知器來學習中文字,由遊戲者看著螢幕的中文字,再透過感知器的感知,將光照的部分,利用身體的動作將光遮罩起來,在時限內如果遮罩完全就會出現成功的警示。這種利用感知器的應用,類似海尼根的一個廣告,一個人在大庭廣眾之下,看著螢幕的指示來做動作,之後旁邊圍觀的群眾也紛紛到設定的範圍內嘗試。目前 Xbox 也是使用這種感知器來為遊戲,比 wII 還需要拿無線的遊戲棒來玩,似乎先進了一些。

Installing new version boost library for CodeBlock IDE

2013.08.15 -------------------------------------------- Boost 在 sourceforge   中也有 binary 的檔案 ,不需要到 BoostPro 中下載他們編譯的 binary 檔。 Boost document 是使用 DocBook 的套件所製作的文件,在 Boost document 第39章 有介紹,另外,在 sourceforge 中也有 Boost document for pdf format 的檔案,。 --------------------------------------------- 之前拿 boost library source code 來編譯,當時的版本是 1.38v,現在已經是 1.52v 了,不過編譯 boost 需要很多時間,不想再編譯,而在 Boost Getting Started on Windows 中寫道:The easiest way to get a copy of Boost is to use an installer,這個 installer 是 BoostPro Computing 所提供,下載這個 installer 以後,就像 Windows 安裝軟體那樣容易。   由於將 OS 升級為 Windows 8,之前所安裝的 boost library 已經不在,新版本 (1.51 版 by BoostPro) 是否將 include 的目錄架構變更或以前就沒有這個目錄,已經不可考了,總之,之前所寫的設定過程已經不能再使用了。不管這些的變化,主要能將 1.51 版本的 boost 讓 CodeBlocks IDE 可以讀得到才是重要,底下是整個設定的過程,在 codeblock.txt 檔中是簡單設定的版本。   1. 下載 installer, 選擇所需要的 library 形式來安裝,假設是安裝在 c:\library\boost_1_51 目錄   2. 在 CodeBlocks 中設定 Global variable:       2a.) Setting -> Global variable, new 一個 Current variable, 名稱輸入 boost       2b.

QR code 的應用

OR code 是 Quick Response Code 的簡稱,中文稱為二維條碼,與之前所知的二維條碼略有不同,不過,總是可以利用這個碼來做一些不一樣的事。   QR code 產生器 提供了一個產生各種不同需求的 OR code,在網站中也使用「文字」的選項來產生一個 OR code 來看看,文字的內容是如下: 這是中興大學註冊組提供的註冊證明,同學取的這個訊息,表示同學已經完成註冊程序。 中興大學  註冊組敬啟 真的可以產生一個 內含文字的 QR code ,結果存成 ORcode.png 檔。似乎要實作一個註冊成功的網站,讓註冊完成的學生來掃描並不難。

Setting Home environment variable for MSYS

重新安裝 Windows 8 讓 C:\ 的空間增加,但是已經忘記之前如何將Home environment variable 指定到 E:\elvis\home 當中,在 MinGW 網頁中找到一篇 HOWTO Set the HOME variable for cmd exe 的文章,摘要如下: 1. 開啟 regedit 2. 找 [HKEY_CURRENT_USER\Software\Microsoft\Command Processor] //for current user   or   找 [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor] //for system-wide 3. 編輯 -> 新增 -> 字串值,加入:     "AutoRun"="%USERPROFILE%\\cmdrc.bat" 4. 在 user home directory(c:\Users\user_name目錄中) 中加入 cmdrc.bat 檔,內容如下: @echo off set MINGWDIR=C:\MinGW set MSYSDIR=%MINGWDIR%\msys\1.0 rem set HOME=%USERPROFILE% set HOME=%MSYSDIR%\home\%USERNAME% set PATH=%PATH%;%MINGWDIR%\bin;%MSYSDIR%\bin rem Useful doskey macros doskey ^D=exit doskey ll=ls -l $* doskey vi=vim -N $* doskey which=sh -c "which $*"   5. 執行 MinGW Shell   修正後的 cmdrc.bat  檔案在 elvls/home  中有一份備份,以後只要修改 home 的目錄即可。  

Programming Tutorial Website

Foundation is front-end framework for website, 提供網頁設計者設計各種不同 devices 的網頁,它是使用 Sass, Compass 這兩種 CSS framework 發展而成的。整個專案是採用 Ruby 的套件管理方式來運作,安裝它相當容易,使用 Ruby 的 gem install zurb-foundation 來安裝,若要調整 Foundation 的內容,需要再安裝 Sass, Compass, 網路上有介紹 Sass, Compass 的書籍,使用這兩種 CSS framework 對於寫 CSS 則更具有彈性[1]。   在安裝這些套件時,看見 Ruby 有安裝這些套件的文件,只是不知道如何從 Ruby 系統中讀出這些文件? 目前對於 Ruby 的系統不熟悉,需要找些資料來了解。在尋找資料時,找到一個不錯的教學網站,名為 Programming tutorials and source code examples 有許多教學文件及原始程式碼,其中包括 C++, HTML, Ruby, GIMP, etc ...,也有許多 free HTML templates 可以下載,可以做為做為教學時的教材。   另外, jQurey EasyUI 是另外一種開發 Website 的 framework, 是基於 jQuery UI 的基礎上,讓使用者不需要寫 Javascript 就可以容易的建立 jQuery 的 UI 介面。 --------------------------------------------------------------- [1] http://www.slideshare.net/kurotanshi/compass-sass

USB flash Partition

原本以為 USB 隨身碟(俗稱拇指碟)可以像硬碟一樣,可以分割成好幾個 partition,但是查了一下資料[1],才得知 USB 隨身碟因為有一個 Removable Media Bit (RMB),在 Windows 作業系統中不提供將此種媒體做分割,而在 Linux 系統中是可以製作分割及讀取這類媒體的分割區。   目前要在  Windows 系統中製作 USB 分割的作法,可以使用 [1] 的作法,利用 IBM 所提供的移除工具 MicroDrives(xpfildrvr1224_320.zip),將 RMB 移除。這種作法是欺騙 Windows 系統,將 USB 隨身碟當成 USB 硬碟,讓 Windows 可以製作或讀取 USB 的 partition。缺點在於只能在安裝 MicroDrives 驅動程式的系統中才可以讀取先前製作的 partition,如果沒有安裝,則僅能讀取第1個 partition。   另外, Lexar 公司有一個工具程式,名叫 BootIt,可以將某些廠牌的 Removable Media Bit 移除,但是,自己下載這個程式,在 Windows 7(64 bits) 系統中無法執行,可能只能在 XP 系統執行吧。   後來採用 [1] 所描述的方法,將 IBM 的驅動程式放在 partition 1 中,讓其他的電腦可以讀取到修改後的驅動程式,就可以讀取到其他的 partition 了。 但是經過實際的測試,無法在 Windows 7(64 bits) 中安裝 IBM 這個 driver[2]。又再 google 中找到 Win 64版本的驅動程式[3],測試以後,造成 Windows 無法開機,在修復的狀態下,切換到 cmd 的模式,將 windows\system32\drivers\cfadisk.sys 刪除,才恢復原來的開機畫面。 最終,將 USB 恢復原來的 driver 以後,先做下列的動作[4]: 1. 執行 diskpart 程式,「開始」-> 輸入 diskpart 2. list disk; select disk #       // # is where in this disk list 3. create partition primary 4. list

Using Lingoes Translator

一直沒有仔細的設定 Lingoes 這個翻譯軟體,因為要使用特殊的 English-English 翻譯來瞭解英文字的使用,才特地看了一下如何設定?原來在左邊第2個小 icon (Guide) 的 Dictionary 選項中,Index Group tab 內可以設定「翻譯時使用 dictionary 的優先順序」,將 Vicon English-Chinese(T) 字典的位置調到最上層,則翻譯時會先使用英翻中(English-Chinese(T)) 這個字典。   另外,在第 3 個 icon(Appendix) 這個附加的功能中,有單位的轉換、時間的轉換、計算機功能、繁體簡體中文轉換等功能。另外,也有 MD5, SHA-1 algorithm 可以使用,也就是將字串利用 MD4, MD5, SHA-1 algorithm 轉成固定的字串;還可以到網站中下載其他的特殊功能。 常用的快速鍵: Ctrl + L: 顯示 Lingoes 。 Ctrl + K: 關閉翻譯的文字 當按 Ctrl + K 開啟最小化的畫面時,點選鸚鵡小圖示中 "keep windows always on top",可以將最小的翻譯畫面維持在螢幕上。

Emscripten

Emscripten : An LLVM-to-JavaScript Compiler, 是一個將 LLVM 所產生的 bitcode 轉成 Javascript library 的編譯器。這樣一個 compiler 有何用處?舉一個例子來說,如果你原來使用 C++ 語言所寫的程式,可以先使用 LLVM 來產生 LLVM 的 bitcode,再交給 Emscripten 當作輸入,經由 Emscripten compiler 輸出成為 javascript 的 library,然後再嵌入到 html 中來使用。有了這個 compiler ,那之前用各種語言所寫的一些 function, member, class etc..., 都以移植到網頁上。這也就是意味著所有在的程式將可以容易的移植到網路了。 ------------------------------------------------------ [1] http://hacks.mozilla.org/2012/04/porting-me-my-shadow-to-the-web-c-to-javascriptcanvas-via-emscripten/

Windows installer

在[1]中比較了各種 Windows 安裝程式產生器,我所謂「安裝產生器」就是當程式設計師將寫好的程式,要打包成安裝檔案的程式。主要是讓一般的使用者可以依照您指定的安裝的程序,一步步的安裝到 Windows 系統中。這些安裝程序包括本版的宣告、安裝的選項、指定安裝目錄等步驟。 目前最被大家使用的是 Inno[2], NSIS[3] 這兩個軟體,都是 open source 的 compiler 軟體,依照所規定的格式來撰寫  script 檔,再透過 Inno, or NSIS 來編譯成安裝檔。 以目前 Inno, NSIS 所謂 third party 的支援情況,Inno 因為有 Inno Script Studio 這個軟體,在製作整個安裝的過程上比較容易,不需要瞭解及撰寫 script 的內容,就可以完成整個安裝步驟;但是缺少圖形設計的頁面來設計每一步驟的頁面。另外,也支援多國語言的安裝選擇,只要將 Inno 網站所提供的多國語言包[4]加入 Languages 目錄中,Inno Script Studio 就可以使用這個語言一步步的安裝。 關於 NSIS 優點在於有 NSIS Dialog Designer 可以設計自己喜歡的安裝畫面,但是整個安裝的步驟,都需要寫 NSIS 的 script 來完成,這是比較難的地方。在 Eclipse 中有支援 NSIS plugin,名叫 EclipseNSIS,不過是採用 NSIS 舊版的 InstallOption 來製作成 .INI 檔,在 include 到 NSIS 來編譯。 -------------------- [1] http://www.techsupportalert.com/content/best-free-setup-builder.htm [2] http://www.jrsoftware.org/ [3] http://nsis.sourceforge.net/Main_Page [4] http://www.jrsoftware.org/files/istrans/

The Architecture of Open Source Applications

在 Plan 9 wiki 網站的 reference 中看到 Eric S. Raymond (The Art of Unix Programming 作者)目前正在維護 gpsd system, 在 他個人的網站 中有些他開發的程式,此外,他個人目前的想法,可以從 Blog 中看得出來。他 post 一則 Engineering zero-defect software 的文章,有許多 computer 的 Hacker 在其中提出 comment。其中 Jakub Narebski 提出了一個網址,是 The Architecture of Open Source Applications 線上的書,於 May 8, 2012 出版了第二冊,確實是值得看得書。 gpsd is a daemon that receives data from a GPS receiver, and provides the data back to multiple applications such as Kismet or GPS navigation software

Asynchronous User Interface - AUI

在 Alex MacCaw Blog 中提到一個問題,就是:當使用者 click 個動作之後,必須等待 Server 的 response,例如 Gmail 在送出信件後,必須等待一下子,也就是等待 Server 將信寄出,然後才可以繼續使用 Client 端的畫面。     這樣的設計方式是不符合 User 所期待的。 User 不需要去管 Ajax 的問題,只希望 Gmail 送出訊息之後,告訴 User 是否寄信完成;這種需求就好像插入耳機以後,系統會出現一個耳機插入的訊息,提醒 User 可以使用耳機了,而不會影響其他的動作。     在 Alex MacCaw 開發的 Spine Javascript Framework 已經解決這個問題,他把它稱為 Asynchronous User Interface - AUI, 在他的 Blog 中也有例子說明如何實做 AUI 的使用介面。
第五章的名言是: " I realized that from now on a large part of my life would be spent finding and correcting my own mistakes." --Maurice Wilkes, 1949. 當小孩可以體會出這句話的真義時,這位小孩已經成熟、懂事了!而我的女兒何時才能夠體會呢?

A sentence about Science

在 C++ Father 所寫的一本基礎的 C++ 書本 Programming Principles and Practice using C++, 第10章 Input and Output Streams 的開始處寫著一句話 : "Science is what we have learned about how to keep from fooling ourselves.  --Richard P. Feynman" 確實!對於這句話,在學術單位任職多年,有更深刻的體認。

hadoop install note

配置: 140.120.63.79  register.nchu.edu.tw    FreeBSD 9.0-release 140.120.63.67  elvis.nchu.edu.tw          ubuntu 11.10 the below was ubuntu install step: 1. install openssh server: # sudo apt-get install openssh-server 2. vim /etc/hosts 140.120.63.79  register.nchu.edu.tw    register 140.120.63.67  elvis.nchu.edu.tw          elvis 163.1.17.139    joe 在 FreeBSD 當中也要加入 /etc/hosts 3.安裝 Java   # sudo apt-get install sun-java6-jdk   # sudo apt-get install sun-java6-plugi 4. adduser: hadooper:turtle 5. login hadooper user     ssh-keygen -t dsa     cd .ssh     cp id_dsa.pub authorized_keys     chmod 600 authorized_keys 6. adduser hadooper in FreeBSD     ssh -l elvis register     sudo adduser hadooper 7. login hadooper in FreeBSD and create public key     ssh -l hadooper register // -l username for using to login the username     ssh-keygen -t dsa 8.  login hadooper in ubuntu and copy public key for all hadooper user      cd .ssh      ssh regis