2009年8月9日

VirtualBox 在 Ubuntu 9.04 kernel 2.6.28-14 無法執行的問題

於 Ubnutu 9.04 kernel 升級到 2.6.28-14,發現 VirtualBox 無法執行,而且出現下面訊息。


後來發現只要執行錯誤訊息提示的 command 就可以正常工作。
sudo /etc/init.d/vboxdrv setup

2009年7月17日

Windows XP Ruby on Rails 安裝 SQLite3

因為想使用較簡潔的 sqlite3 搭配 ruby on rails 來開發軟體,在安裝過程中發現安裝 sqlite3-ruby,有出現下面的問題。


C:\>gem install sqlite3-ruby
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.

c:/ruby/bin/ruby.exe extconf.rb
checking for fdatasync() in rt.lib... no
checking for sqlite3.h... no

nmake
'nmake' 不是內部或外部命令、
可執行的程式或批次檔。


Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1
.2.4 for inspection.
Results logged to c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_
api/gem_make.out

然後透過 google 尋找一些前人以發表的解決方式。經過自已的測試,發現是OK。將此過程記錄,避免以後自己又忘記。

1~2的過程是先準備安裝的程式。
1. 先到此網站 http://rubyforge.org/frs/?group_id=167 download ruby186-26.exe

2. 在到 http://www.sqlite.org/download.html download sqlite-3_6_16.zip 與 sqlitedll-3_6_16.zip

下面的步驟是安裝過程。
3. 先安裝 ruby186-26.exe,在安裝過程中記得將gem選項勾選起來,否則下面步驟就無法順利安裝。安裝完後,可以到 command line 模式測試ruby是否安裝成功。

C:\>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
C:\>gem -v
0.9.4


4. 然後update rubygem
C:\>gem update --system

檢查rubygem是否update成功

C:\>gem -v
1.3.4


5. 安裝rails
C:\>gem install rails

檢查rails是否安裝成功

C:\>rails -v
Rails 2.3.2


6. 安裝mongrel
C:\>gem install mongrel

檢查mongrel是否安裝成功

C:\>gem list mongrel

*** LOCAL GEMS ***

mongrel (1.1.5)


7. 把先前download sqlite-3_6_16.zip 與 sqlitedll-3_6_16.zip解壓縮,將解壓縮好的3個檔案copy到 ruby\bin 目錄下,default ruby 安裝目錄於 C:\ruby

8. 安裝 sqlite3-ruby

C:\>gem install --version 1.2.3 sqlite3-ruby
Successfully installed sqlite3-ruby-1.2.3-x86-mswin32
1 gem installed
Installing ri documentation for sqlite3-ruby-1.2.3-x86-mswin32...
Installing RDoc documentation for sqlite3-ruby-1.2.3-x86-mswin32...


9. 寫一支小程式測試是否完全可以正常運作,如果正常安裝成功點選 About your application’s environment 可以看到如下畫面:

2009年6月17日

在 Ubuntu 加入字型

紀錄在 Ubuntu 加入字型的方法。
如果給整台主機所有user使用,將字型放入下面目錄中。
/usr/share/fonts/truetype
將字型放入此目錄需要有root權限。

如果給單一user使用,將字型放入下面目錄中。
/home/xxx/.fonts
xxx:表 user 使用者帳號名稱。
.fonts 是一隱藏目錄。

然後在執行下面 command,更新字型清單快取。
sudo fc-cache -f -v

2009年6月5日

更換 SCIM 輸入法為 GCIN on Ubuntu 9.04

安裝完 Ubuntu 9.04 後,Ubuntu 9.04 預設值安裝 scim 輸入法,因為我只會注音方式的輸入法,只要能用注音方式都是 ok。但是幫朋友安裝無蝦米輸入法不小心看到如下的畫面,才發現使用gcin 輸入法,對於使用環境更方便。另外使用 gcin 輸入法另一個理由,就是按下[ctrl+,],就可直接輸入標點符號,此方式比較接近以前使用 windows 的習慣,而且在 Ubuntu 9.04 gcin 內建就有無蝦米輸入法,不用像以前還要下 command 去修改。


移除 scim 輸入法如下
sudo apt-get autoremove scim


安裝 gcin 輸入法如下
sudo apt-get install gcin

然後登出再登入,就可以使用 gcin 輸入法。

如果不想移除 scim 輸入法,可以使用如下方法切換到 gcin 輸入法
sudo im-switch -z zh_TW -s gcin

2009年5月28日

Lightning on Ubuntu 9.04

現在實驗Ubuntu是否能夠取代Windows。平常工作之一就是收email,在Ubuntu 9.04 Thunderbird跟Outlook Express是類似軟體。開始使用Thunderbird兩三天,發現它的spam功能還算不錯。接著開始試用Lightning Plugin元件。我直接使用Thunderbird附加元件來安裝Lightning,安裝完發現不能使用。後來去Google Search一下,發現需要依照下面 command安裝,才能使用。
sudo apt-get install lightning-extension

但是使用此方式安裝,發現是英文介面,雖然是英文介面還是可以使用,也是可以key in中文。

2009年5月24日

Ubuntu 9.04 解 RAR 壓縮檔

目前開始使用Ubuntu 9.04發現Ubuntu 9.04 安裝完後無法解RAR壓縮檔,必須自行安裝解RAR壓縮程式。

安裝方式
sudo apt-get install rar unrar

或安裝Open Source 7 zip
sudo apt-get install p7zip-rar

2009年5月2日

Linq To Sql Query Expressions by C#

最近利用Linq to Sql O/R 技術撰寫程式碼,紀錄查詢語法避免以後久不用又忘記。

有一個table Brand 包含三個欄位,欄位一廠牌代號(id),欄位二廠牌名稱(name),欄位三停用(isuse)。

查詢廠牌名稱含有"A"的SQL語法
select id, name, isuse from Brand where name like '%A%'

Linq 語法
db = new BaseDataDataContext();
var b = from s1 in db.Brand where s1.Name.Contains("A") select s1;


查詢廠牌名稱第一個字含有"A"的SQL語法
select id, name, isuse from Brand where name like 'A%'

Linq 語法
db = new BaseDataDataContext();
var b = from s1 in db.Brand where s1.Name.StartsWith("A") select s1;


查詢廠牌名稱最後一個字含有"A"的SQL語法
select id, name, isuse from Brand where name like '%A'

Linq 語法
db = new BaseDataDataContext();
var b = from s1 in db.Brand where s1.Name.EndsWith("A") select s1;


查詢結果只有廠牌名稱欄位的SQL語法
select name from Brand

Linq 語法
db = new BaseDataDataContext();
var b = from s1 in db.Brand select new {name=s1.Name};

2009年4月10日

SqLite.Net CRUD 參數語法 by C#

記錄使用 SQLite 的 ADO.NET 2.0 Provider 參數式寫法 by C#。

下面語法無效
dbCommand.Parameters.AddWithValue("@parameter", value);

下面語法才能成功傳遞參數
dbCommand.Parameters.Add(new SQLiteParameter("@parameter"));
dbCommand.Parameters["@parameter"].Value = value;


下面是一個 sample code
string SqlText = "Delete From Brand Where id=@id";
SQLiteCommand dbCmd = new SQLiteCommand(SqlText, _sCon);
dbCmd.Parameters.Add(new SQLiteParameter("@id"));
dbCmd.Parameters["@id"].Value = BrandID;
_sCon.Open();
dbCmd.ExecuteNonQuery();
_sCon.Close();

2009年3月3日

SQLite.NET Connection Strings

之前在網路上尋得 SQLite 的 ADO.NET 2.0 Provider,順便整理網路上查到的 SQLite Connection String 的資料。作為未來寫程式的參考資料。

最基本
Data Source=dbname;Version=3;
Data Source:資料庫檔案名稱
Version:版本

使用 UTF16 編碼
Data Source=dbname;Version=3;UseUTF16Encoding=True;
UseUTF16Encoding:True(啟用),False(關閉)

使用 Connection Pooling
Data Source=dbname;Version=3;Pooling=True;Max Pool Size=100;
Pooling:True(啟用),False(關閉)


範例
Data Source=C:\folder\dbname.db;Version=3;Compress=True

Excel 取得目前工作表名稱 by 程式

紀錄取得目前正在工作中工作表名稱 VBA 語法。
ActiveSheet.Name

ThisWorkbook.ActiveSheet.Name

2009年2月26日

AutoCad 利用 MVSETUP 設定出圖比例

已經很久不用AutoCad,最近工作需要,重新使用AutoCad,目前使用2007的版本跟以前R13、R14差蠻多。

為一張圖面需使用不同比例出圖傷腦筋。公司的同事教我一個以前未曾學過的指令 mvsetup。經過測試,認為下列步驟可以很容易設定多比例的圖面,然後繪製圖面都是1:1繪製,不需考慮比例問題。
  1. 在模型空間(model space)繪製1:1的圖面。
  2. 在配置空間(paper space)建立不同紙張大小的配置。然後在配置裏的頁面設定(page setup manager)設繪圖比例為1:1,使用公制,單位就設mm,使用英制,單位就設inch。並在配置裏建立浮動視埠,選取你需要出圖的圖面。
  3. 利用mvsetup設定浮動視埠比例。設定方式: paper space unit一律設為1,model space unit 就根據出圖比例設圖。如果出圖比例是1:1,model space unit就設1;出圖比例1:10,model space就設10。建築製圖單位常使用cm,如果出圖比例為1:10,model space unit就設1;出圖比例是1:20,model space unit就設2。

在 model space 裏有單位但沒指定此單位為cm或者mm,真正指定1個單位為實際長度單位是在paper space的頁面設定。因為我們在 paper space 的頁面設定已經指定比例1:1與單位mm,所以指令 mvsetup 設定 paper space unit 為1,model space unit 為1,實際繪製的長度為 1mm。如果在 paper space 的頁面設定已經指定比例1:1與單位 cm,實際繪製的長度為 1cm。但目前於 paper space 的頁面設定只能設定實際長度單位為 mm 與 inch 兩種。

2009年2月14日

SQLite

微軟釋放可以免費使用的 SQL Express 2008,對個人使用者來講是一大德政。但是對於個人單機使用上我還是覺得太複雜。最近不小心在 Internet 上發現有 SQLite 的 ADO.NET 2.0 Provider,讓我回頭再檢視 SQLite 的特性。它有下列特性:
  • 支援ACID (Atomic, Consistent, Isolated, Durable) transaction。
  • 支援大部分 92 SQL語法。
  • 不需要管理者,以及額外的設定。
  • 一個資料庫為單一檔案。
  • 支援 TCL,也支援很多其他語言。
  • 是一個自由軟體的關聯式資料庫。
  • 佔用記憶體小。
  • 誇平台。

由於它的簡單很適合開發崁入式與個人單機的程式。從文字內容看似簡單,也要試試才知道是否可以拿來開發程式使用。於是按照官方網站(http://www.sqlite.org/)的文件,測試看看是否OK。下面記錄 command-line 的模式下的語法與結果。

sqlite3 test.db
SQLite version 3.6.10
Enter ".help" for instructions
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello!',10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> select * from tbl1;
hello!10
goodbye20
sqlite>

經簡單測試,覺的真的很容易使用。但是靠 command-line 模式,覺得也不是挺方便。後來發現它的讚助者 Mozilla 在 FireFox 有個 add-on 元件提供一個 GUI 的管理程式。讓你很容易可以管理SQLite 的資料庫,可讓建立 Database 與 Table 更輕鬆。


下面是 SQLite 的 ADO.NET 2.0 Provider 的參考網站 http://sqlite.phxsoftware.com/。先記錄此網站。等待以後在 Visaul Express 2008 測試是否可以使用。

2009年1月13日

VB 字串函數

最近用c#在寫 code,已經有一段時間沒有寫 VB Code,最近寫一些 VBA 程式連一些很基本字串函數快要忘光或搞混掉。順便作一下筆記整理整理,以便以後不時之需。

計算字串長度
Len(string)--------->return 整數值

範例
Dim x As String
Dim i As Integer
i = Len("string")---------> i=6

轉換英文字母大小寫
UCase(string)---------->將字串的小寫英文字母轉換成大寫
LCase(string)---------->將字串的大寫英文字母轉換成小寫

範例
UCase("Abc")--------->return ABC
LCase("Abc")--------->return abc

取字串
Left(string,n)-------->從字串左邊取出n個字元
Right(string,n)------->從字串右邊取出n個字元
Mid(string,n)--------->從字串第n個字元開始,取出所有字元
Mid(string,n,m)------->從字串第n個字元開始,取出m個字元

範例
Left("123456",3)-------->return 123
Right("123456")--------->return 456
Mid("123456",3)--------->return 3456
Mid("123456",3,3)------->return 345

字串取代
Replace(字串,被取代的字串, 取代的字串)--------->將字串中某些字串取代成別的字串

範例
Replace("AA_BB_CC","_","-")--------->return "AA-BB-CC"

尋找字串
InStr(字串,尋找的字串)------------>從前面尋找字串第一次出現的位置
InStrRev(字串,尋找的字串)-------->從後面尋找字串第一次出現的位置

範例
InStr("AA_BB_CC", "_")-------->return 3
InStrRev("AA_BB_CC", "_")---->return 6

反轉字串
StrReverse(字串)------------->將字串反轉

範例
StrReverse("AA_BB_CC")------>return CC_BB_AA

產生空白字串
Space(n)---------->產生n個字元空白字串

範例
x= "AA" + Space(2) + "BB"--------->return AA BB

2009年1月10日

Excel 複製 WorkSheet by 程式

在Excel中用程式的方法複製工作表並更新工作表名稱語法。
Sheets("2").Select
Sheets("2").Copy After:=Sheets("2")
Sheets("2 (2)").Select
Sheets("2 (2)").Name = "WorkSheetName"