2008年6月30日 星期一
2008年6月24日 星期二
將字串型態的運算式,轉成真正的數學運算式
有時程式會用到外部傳入的運算式,
可是傳入的卻是字串型態,
這時可以用.NET 的 COM 元件來計算
Private Function CalculateEquation(ByVal strEquation As String) As Double
'要先引用 [Microsoft Script Control 1.0] 的 COM 元件
Dim MsScrCtl As New MSScriptControl.ScriptControl
MsScrCtl.Language = "VBSCript"
'傳回結果
Return sc.Eval(strNewEquation)
End Function
不過通常結果沒那麼簡單,大多數都是運算式中有很多值要替換,
因此可以將字串和值放入陣列中,
Public Class Form1
Private Structure typCalculateValue
Dim Name As String
Dim Value As Double
End Structure
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strValue(2) As typCalculateValue
strValue(0).Name = "TestA"
strValue(0).Value = 0.0894216
strValue(1).Name = "TestB"
strValue(1).Value = 0.0436392
strValue(1).Name = "TestC"
strValue(1).Value = 0.42
Dim strEquation As String
strEquation = "((TestA/2+(TestB*TestC)-123.456)/77)*(1e2)"
MsgBox(CalculateEquation(strValue, strEquation))
End Sub
Private Function CalculateEquation(ByVal aryTmpValue() As typCalculateValue, ByVal strEquation As String) As Double
'要先引用 [Microsoft Script Control 1.0] 的 COM 元件
Dim MsScrCtl As New MSScriptControl.ScriptControl
MsScrCtl.Language = "VBSCript"
Dim i As Integer
Dim strNewEquation As String
strNewEquation = strEquation
For i = 0 To UBound(aryTmpValue)
strNewEquation = Replace(strNewEquation, aryTmpValue(i).Name, aryTmpValue(i).Value)
Next
Return MsScrCtl.Eval(strNewEquation)
End Function
End Class
標籤: 電腦資訊
2008年6月22日 星期日
風力發電機
昨天(星期六)在家趕程式,寫到不知道如何寫,
所以自己一個人騎著車,從新竹出發到後龍走走,
想要看看那裡的風力發電機,
一路上豔陽高照,天氣又熱,
幸好新竹什麼沒有,就是風大,所以不會覺得太悶,
延著濱海公路往南騎,過了香山就可以看到一排的風力發電機在海岸邊轉動,
一路上走走停停,好像只有我一人在拍照,
其它的車輛都是呼嘯而過,
為了要拍風車轉動的樣子,拉長了曝光時間,光圈縮到最小,
還是過曝,完全失敗,當場好想衝去買減光鏡。
一個人走在田間小路上,很怕草叢裡有生物突然出現,
找到好位置就開始拍照了,
火狐(Firefox) 3好用套件_輕鬆升級
前幾天網路上的盛事Firefox 出 3.0版了,
同時挑戰「單日最多人下載軟體」的金氏世界紀錄
對於新軟體總是抱著不要衝第一的心態,
畢竟總是會有很多的問題,我也沒時間去幫忙測試,
還是交給專業的玩家去測吧,
不過今天心血來潮把我的Firefox 2.0.0.1.4一次升級到 3.0
可以想像我幾乎沒在升級軟體的。
升上去後首先面臨的是以前的套件幾乎不能用,
我常用的是
Tab Mix Plus
新同文堂
FlashGot
IE Tab
Super Drag and Go
Web Developer
.....等等的套件
最不能忍受的當然是Tab Mix Plus和Super Drag and Go
所以找到一個非官網的版本
安裝 Tab Mix Plus Dev-Build 0.3.6.1.080416
替代 Super Drag and Go 的 QuickDrag 1.0.5
官網說明
官網下載
其它的套件
可在Firefox上使用IE的瀏覽器IE Tab 1.5.20080310
新同文堂3.9.1(這個版本沒有自動更新功能)
其它如 FlashGot , Web Developer 都可以自動更新到新版本
其它可參考
火狐套件官網
以前版本常用套件Top 15
http://quitt.net/mozilla/extensions/
不過新的火狐部份功能有Bug,但是整理上來說還是很好用。
相關消息可以參閱官網論壇
標籤: 電腦資訊
2008年6月17日 星期二
桂花茶
今天心血來潮,拿公司送的水壺來沖泡桂花茶,
先把桂花釀放到瓶底的過濾網中,
然後由瓶口加水,
當我把水壺倒置時發現有糖蜜慢慢的向下流出,
感覺很好看,於是就把它拍下來做紀念啦,
拿這個 行動拍擋 PC-701-740cc 來泡桂花茶還真是方便,
難怪人家申請那麼多專利,
當我搖晃水壺後打開瓶蓋,發現竟然瓶口不會殘留水珠,
而且輕輕一鎖,完全不漏,
甚至濾網內部會鎖住水份,
可以看到與空氣接觸的上半部,裡面的水並沒有留出,
還有桂花在裡頭飄浮著,
實在想不透是什麼原理??
2008年6月15日 星期日
LR快速編輯圖片
為了編輯大量的RAW檔,可以用LR來完成批次轉檔
否則用NX可是要編輯到天荒地老咧
下載 http://www.mediafire.com/?tjgnl0mwxmm
相關文件可以上Google 查詢。
標籤: 電腦資訊
又被鎖在門外了
每次回到家裡總會忘了帶家裡的鑰匙就出門,
這次也是一樣,
話說今天早上去剪頭髮,想說很快,
於是拿著錢和雨傘就走路出門啦,連手機都沒帶....
而爸媽以為我人在樓上,出門時順便把門給鎖上,
等我回到家才發現又被鎖在門外了,
這不是第一次,每次被鎖才會想到自己的粗心,
既然被鎖在門外,不如就欣賞著天空和過路人,
好久沒有這麼仔細的看看家裡周圍的環境,
今天的天氣不太好,天空特別的黑,雲層特別的厚,
大雨下下停停的,其實在涼亭裡看著外面的大雨,還別有一番滋味,
以前被鎖在門外總會很不高興,現在換個角度想,很難得被鎖在門外,
不如放鬆心情好好欣賞風景,一下子就過了一個半小時,
也終於等到爸媽回家了。
標籤: 我的一天
2008年6月11日 星期三
旅社再度開張
昨天,以前的台積同事來我這裡借住一晚,
因為他上來新竹面試,第二天還要上台北,
所以就先暫住一宿。
昨天晚上找了另外兩個同事一起去吃鐵板燒,
位在食品路上的肥仔龍鐵板燒,學生餐一客99元,
就是兩樣菜,外加魚排和 牛.豬.羊 三選一,
飲料和湯無限量供應,不過白飯一碗就要十元,
整體來說是還ok啦,
不過現場的排煙設備設計不太好,所以在風尾的人只能猛吸油煙。
吃完後再去附近的 7-11 坐著聊天,
可以說是方便又省錢了,缺點是上廁所要跟四週的店家借。
晚上聊到九點就各自回家,
回到家,同事再教我.NET程式設計觀念,
一下子講太多還真有點消化不良咧。
2008年6月8日 星期日
今年的第一口玉荷包
今天老姐他們去日月潭回來,
帶了些東西給我,其中一個就是玉荷包,
今年的產量減少,加上肥料有錢也買不到,還有氣候的變化,
造就了今年的高價位,
吃起來偏酸,幸好我很會吃酸,所以感覺還好,
雖然我很喜歡吃荔枝,不過怕吃多上火,又會像前陣子那樣,
天天流鼻血.....反正也沒多少啦,因為一斤要價120元,真的太貴了。
2008年6月7日 星期六
真不巧,下雨了,無法照相
本來今天要去苗栗,結果阿坤生病,
想說那就去照相,順便爬山,
結果才出門就下雨,只好回來照我的小花圃了。
先看看好久沒拍照的小精靈(Tillandsia ionantha),
長大了不少,可以比較先前照的照片
再來是我的 Tillandsia tricolor 開完花後也長了一株側芽
無意間還發現我的 Tillandsia tricolor (三色花)還有結夾果,
還以為它那球拍狀的花序會爛掉,結果沒有,還結果咧!
只不過我的 Tillandsia juncifolia 還是沒有開花,一點動靜都沒有
到是去年無意間丟到土裡的紅龍果種子發芽了,
等了好久才長成這般大小,本來還不想讓它活的,不太去照顧它,
結果是還長大了。
再加上隨意丟棄的小蕃茄,也長了好多出來,
快變成小森林了,可以看到小黃花,那可是茼蒿的花哦,
不知道它的種子長什麼樣子
一個無法拍照的星期六,只好拍拍小花圃,
結果意外發現我的植物變了不少,算是意外收穫吧!!
參考 Tillandsia tricolor開花了
微觀新世界
2008年6月6日 星期五
歌手 蘇明淵(蘇兒真) 的部落格
前幾天無意間看到的一則新聞,
裡面可以試聽到蘇兒真的歌,個人感覺是滿輕柔的,
蘇明淵的部落格名為「律師歌手蘇兒真的部落格」,
網址為http://www.wretch.cc/blog/ninthchords
輕盈的資料庫 SQLite
在某些情況下,會用到資料庫,但又不想要安裝一個龐大的系統在電腦中,
這時可以選擇輕如羽毛的資料庫 SQLite ,
它是免費軟體,重點是他的輕量化讓人感覺不到他的存在,
而且功能具備,實在是一個好用的資料庫。
除了 PHP 會用到,還支援很多語言,可以上官方網站查詢,
我也寫了一篇 TCL 和 SQLite 的應用,這是參考官網的 Documentation 範例所改編,
非常的簡單易學,今天第一次接觸,就發現它的輕便之處,
Command-Line程式也才幾百K,下載回來的DLL也一樣的小,
單一的檔案,直接使用,不用安裝,簡單明瞭,驚嚇到嘴巴合不攏。
有需要的可以下載回來玩玩看。
標籤: 電腦資訊
TCL 和 SQLite 的應用
###=== 載入 下載回來的tclsqlite.DLL
load "C:/Tcl/lib/tclsqlite3.dll" sqlite
###=== 建立新的資料庫
sqlite db1 F:/Andre_kao/testdb.db
db1 eval {CREATE TABLE t1(a int, b text)}
###=== 寫入資料
db1 eval {INSERT INTO t1 VALUES(1,'hello')}
db1 eval {INSERT INTO t1 VALUES(2,'goodbye')}
db1 eval {INSERT INTO t1 VALUES(3,'howdy!')}
set x [db1 eval
{SELECT * FROM t1 ORDER BY a}]
###--- 傳回 1 hello 2 goodbye 3 howdy!
###=== 將資料庫中的資料排序後印出來
db1 eval {SELECT * FROM t1 ORDER BY a} values {
parray values
puts ""
}
###=== 輸出結果
###=== values(*) = a b
###=== values(a) = 1
###=== values(b) = hello
###=== values(*) = a b
###=== values(a) = 2
###=== values(b) = goodbye
###=== values(*) = a b
###=== values(a) = 3
###=== values(b) = howdy!
###=== 請參考 http://www.sqlite.org/tclsqlite.html
標籤: 電腦資訊
Metlab DLL 和 TCL 的應用
###### Metlab Code ######
###=== 建立一個 matlab 的檔案,命名為test2
###=== 程式碼如下
function [result] =test3(a,b,c,d)
result = a+b*c-d;
save('D:\MATLAB6p5\work');
return
###=== 在 Matlab 主程式中,選擇..
###=== Start --> Matlab --> Matlab COM Builder --> Matlab COM Builder
###=== 建立 New Project 取名為 test1
###=== Component Name 設為 testAAA
###=== 將 Build debug version 的選項打勾
###=== 執行Build產生 DLL 檔案
###=== 將DLL檔COPY到 C:\Windows\System32 裡面
################################
########### tcl 載入 DLL ###############
package require tcom
::tcom::import test1_1_0.dll
set comUtil [::test1::testAAA]
### 這裡的[::test1::testAAA]
### test1是Matlab 的COM Builder檔名
### testAAA是Matlab 的Component Name,也就是 Class Name
###===--- 執行 DLL
### a 矩陣內容為
### { 1.0 2.0 }
### { 3.0 4.0 }
set a [list [list [expr double(1)] [expr double(2)]] [list [expr double(3)] [expr double(4)]] ]
### b 矩陣內容為
### { 3.0 2.0 }
### { 4.0 5.0 }
set b [list [list [expr double(3)] [expr double(2)]] [list [expr double(4)] [expr double(5)]] ]
### c 矩陣內容為
### { 1.0 2.0 }
### { 3.0 4.0 }
set c [list [list [expr double(1)] [expr double(2)]] [list [expr double(3)] [expr double(4)]] ]
### d 矩陣內容為
### { 4.0 5.0 }
### { 6.0 7.0 }
set d [list [list [expr double(4)] [expr double(5)]] [list [expr double(6)] [expr double(7)]] ]
set retx $comUtil test2 1 retx $a $b $c $d
### 這裡的 $comUtil test2 ....
### test2 是Matlab的M File Name,也就是存放程式碼的檔名
puts $retx
### 上面的$comUtil test2 1 retx.. "1" 表示傳回一個值 由 retx 變數接
### 傳回 {6.0 11.0} {16.0 25.0}
標籤: 電腦資訊
2008年6月5日 星期四
工程師節的禮物
想不到6/6日的工程師節,在台積還會送禮物,
真是太高興了,這次是送有多國專利的水壺,
行動拍擋 PC-701-740cc
在網路上看的價格還有點貴咧,
嚇死人,應該是專利的關係吧,
聽說大陸早就開始出現仿冒仿冒品了。
整組就長這樣
把上下蓋子都打開就是這樣
水壺的"腸子"還在肚子裡時
把腸子拉出來特寫,旁邊是水壺的上蓋,裡面還有洩壓閥的裝置
金鋼合體......這才是能帶出門的樣子!
感覺上泡茶很方便,也可以泡咖啡和果茶,
不過若是茶葉泡在裡面太久要拿出來也是挺麻煩的,
應該比較適合冷泡茶吧!因為冰水泡茶可以泡久一點。
Yahoo! 奇摩輸入法
想不到 Yahoo 竟然也出了輸入法,
其實這造福了不少打注音的朋友們,
感覺上我的倉頡輸入好像用不太到,
畢竟打了這麼久的倉頡,一時間要換也不太容易,
不過還是拿來比較一下好了,
一般倉頡
Yahoo! 奇摩輸入法
兩者比較起來,一般倉頡可以選的字較少,
不過聯想詞提示來說,Yahoo! 奇摩輸入法比較能夠選到對的字,
只不過我習慣用舊的提示字,所以常會不自覺的按錯,
應該只是習慣與否的問題而已,到是建議使用注音的朋友可以考慮看看 Yahoo! 奇摩輸入法
觀看 Yahoo! 奇摩輸入法 動畫教學
標籤: 電腦資訊
教你如何用 Backy 收 Yahoo 的 pop3 信箱
今天在網路上無意間看到一篇利用Gmail的過濾機制收Yahoo的Mail,
請參考如何用Gmail收發Yahoo!奇摩信箱的Email郵件?(用Gmail過濾Yahoo垃圾信)
在那裡面就有講到如何破解Yahoo信箱要付費才能收POP3的限制,
原來登入在國外的Yahoo是不用收費,可是到了台灣就變成要錢了,
照著他的方法做一次,果然沒錯,可以收POP3的MAIL,
於是將我的 Backy Mail 也設定一下好了,
這樣我也可以在自己的電腦收Yahoo的信啦,真是好用。
首先新增一個帳戶
然後在內容的設定改為
在同一個視窗,不同分頁中,[雜項]裡有關SSL的設定如下
簡單設定就ok了
不過Yahoo的 Mail過濾功能真的太差了,
看得很頭痛,經過實際使用狀況來看,
先經由Gmail過濾完再收會比較好,
因為我原先的Yahoo 信箱有 一千多封信,大多是廣告或病毒信,
經過Gmail過濾完剩下一百多封,省去了我很多時間。
真是強烈建議如此比照辦理的啦!!
標籤: 電腦資訊
2008年6月4日 星期三
我口年的蚊帳
使用 TCL 解高斯函數(矩陣 Matrix)
### 設定矩陣大小
### 矩陣內容如下
### MatrixA :
### | 1 1 2 |
### | 10 11 12 |
### MatrixB :
### | 5 |
### | 7 |
set X 3
set Y 2
### 引用 TCL 的數學函式 Library Package
package require
math::linearalgebra
### 建立矩陣
set MatrixA [::math::linearalgebra::mkMatrix $Y $X 0]
set MatrixB [::math::linearalgebra::mkMatrix $Y 1 1]
### 填入矩陣 MatrixA 內容
::math::linearalgebra::setelem MatrixA 0 0 1
::math::linearalgebra::setelem MatrixA 0 1 1
::math::linearalgebra::setelem MatrixA 0 2 2
::math::linearalgebra::setelem MatrixA 1 0 10
::math::linearalgebra::setelem MatrixA 1 1 11
::math::linearalgebra::setelem MatrixA 1 2 12
### 填入矩陣 MatrixB 內容
::math::linearalgebra::setelem MatrixB 0 0 5
::math::linearalgebra::setelem MatrixB 1 0 7
### 使用 TCL 的 Library 計算 解高斯函數
set Z [::math::linearalgebra::solveGauss$MatrixA $MatrixB]
### 傳回答案 48.0 -43.0
標籤: 電腦資訊
TCL中,將陣列(Array) 轉成不含Index 的 List 字串
### 取得陣列大小,如 Array1 的大小為 (3,5)
### 傳入 GetArraySize Array1 取得的值為 { 3 5 } 的 List
### 可由 [lindex [GetArraySize Array1] 0] 的方式取出 Row
### [lindex [GetArraySize Array1] 1] 的方式取出 Col
proc GetArraySize {arryName} {
set listName ""
upvar $arryName arryNameII
set arrRowMax 0
set arrColMax 0
foreach {value} [array get arryNameII] {lappend arrElment $value}
for {set i 1} {$i = [llength $arrElment]} {set i [expr $i+2]} {
set arrIdx [lindex $arrElment [expr $i-1]]
set arrRow [string range $arrIdx 0 [expr [string first "," $arrIdx 0] - 1] ]
set arrCol [string range $arrIdx [expr [string first "," $arrIdx 0] + 1] [string length $arrIdx]
]
if {$arrRow>$arrRowMax} {set arrRowMax $arrRow}
if {$arrCol>$arrColMax} {set arrColMax $arrCol}
}
return "$arrRowMax $arrColMax"
}
### 將陣列轉成List
### 因為用TCL的 array get 會連同 Array Index 同時轉成 List
### 所以另外寫一個 procedure ,將陣列內容轉成不含 Index 的 List
### 這一段才是主要的程轉換 Function
proc Array2List {srcArrName} {
upvar $srcArrName srcArrNameII
### 呼叫副程式取出陣列的 Row 及 Col 大小
set srcArrNameII_r [lindex [GetArraySize srcArrNameII] 0]
set srcArrNameII_c [lindex [GetArraySize srcArrNameII] 1]
set destListName ""
for {set i 1} {$i <= $srcArrNameII_r} {incr i } {
set temp ""
for {set j 1} {$j <= $srcArrNameII_c} {incr j } {
lappend temp 0
}
lappend destListName $temp
}
for {set i 1} {$i <= $srcArrNameII_r} {incr i } {
for {set j 1} {$j <= $srcArrNameII_c} {incr j } {
lset destListName [expr $i-1] [expr $j-1] [expr double ($srcArrNameII($i,$j))]
}
}
return $destListName
}
標籤: 電腦資訊
2008年6月2日 星期一
VB DLL 和 TCL 的應用
'################# VB DLL Class 設定 ###########
'### 開啟 VB 的 DLL 專案,並且命名為 ReCallDLL
'### 新增一個 Class 檔案 ,命名為 clsReCallDLL
'###---------- 加入以下程式碼 -----------------
Public Function testAB(a() As Variant, b()As Variant) As String
'組合第一個陣列內容
testAB = "aryStr = " & a(0) & b(0)
End Function
Public Function mathadd(a As Double, b As Double) As Double
'兩數相加
mathadd = a + b
End Function
Public Function mathadd2(a As Variant) As String
'傳回傳入字串
mathadd2 = "The Value is = " & a
End Function
'###----------------------------------------
################# TCL 的執行 Scrip ###########
### TCL 載入 DLL
package require tcom
::tcom::import ReCallDLL.dll ;#採用動態(未安裝 DLL)載入
### 若是靜態(事先安裝DLL)載入則用下面的方法
#set comUtil [::ReCallDLL::clsReCallDLL]
### 建立連接端
set comUtil [::tcom::ref createobject "ReCallDLL.clsReCallDLL"]
### TCL 執行 DLL
set b "1 2" ;#將 b 設為 List ,因為設成陣列Array 傳遞時會出現錯誤
set c "3 4" ;#將 c 設為 List ,因為設成陣列Array 傳遞時會出現錯誤
set a [$comUtil testAB b c] ;#呼叫 DLL 並執行其中的一個 testAB Function
### 傳回 aryStr = 13
set b 12 ;#將 b 設為單一數字
set c 23 ;#將 c 設為單一數字
set a [$comUtil mathadd bl cl] ;#呼叫 DLL 並執行 mathadd 將兩數相加並傳回
## 傳回 35
標籤: 電腦資訊
2008年6月1日 星期日
nUtella 能多益榛子果仁可可醬
自從上回老弟去義大利帶回來
La buona prima colazione con nUtella
一吃到真是驚為天人,於是到處找看台灣有沒有在賣,
後來在網路上查到好市多和大潤發都有在賣,
所以昨天就去大潤發買了一瓶,
大潤發賣的是200克包裝,一瓶要72元
進口商是:香港商亞洲費列羅有限公司台灣分公司
今天就拿來比較看看,
外觀是有差別,因為義大利的是400克包裝(歐元2.56),台灣是200克包裝(台幣72元),
背面看來也有所不同,
以口感來說,台灣的味道比較淡,而且濃稠度也沒有義大利的濃,
台灣賣的榛果味也沒有義大利的香,
台灣進口的可可醬一開封還帶點淡淡的藥味,必須將蓋子打開幾分鐘才行,
那股藥味不知道是包裝的關係還是內容物的關係?
也因為台灣進口的能多益榛子果仁可可醬濃度比較稀,
在抹麵包或餅干時可以很容易的抹上,只是要抹很厚一層
而義大利的較濃,在抹時要稍微出點力否則不容易抹上去,
不過卻只要薄薄一層就有濃濃的金沙味了。