2009年11月5日 星期四

Windows 7 開啟 3D 桌面

執行程式: %SystemRoot%\System32\rundll32.exe DwmApi #105
圖示位置: %SystemRoot%\System32\imageres.dll

2009年7月27日 星期一

MS Access 中的 like 語法

一般 SQL 都是用 '%' 及 '_' 當通配字符, 但 MS Access 中卻要用 '?' 及 '*'

2009年7月19日 星期日

用 php 寫 sqlite3

php 5.3.0 已開始支援 SQLite3:

$db=new sqlite3("my.sql3"); // use a database
if( $db )
{
$table="foo";
header("Content-Type: text/html;charset=big5");
$result=$db->query("Select * from $table");
$col=$result->numColumns();
$str="";
for($i=0;$i<$col;$i++) $str.=$result->columnName($i)."  ";
echo "$str
";

while( $s1=$result->fetchArray() )
{
$str="";
for($i=0;$i<$col;$i++) $str.=$s1[$i]."        ";
echo "$str
";
}
}
$db->close();
?>

如果要 delete, update, insert into, 等 SQL query, 可以執行 $db->exec($sql_query)

2009年7月15日 星期三

用 php 寫一個簡單的 sqlite 資料庫


$newdb ="stock.sqlite";
$table ="ase";
$db=sqlite_open($newdb,0666,$sqlerr);
if( $db )
{
$Q1=sqlite_query($db,"select count(serial) from ase");
if ( !$Q1 )
{
echo "Create $table
";
sqlite_query($db,"create table $table (serial int not null,name char(255),primary key(serial))");
$Q1=sqlite_query($db,"select count(serial) from ase");
}
$record=sqlite_fetch_array($Q1);
$id=intval($record[0]);
if( $id==0 )
{ // no record, add some record
echo "Insert $table
";
$id++;sqlite_query($db,"insert into $table (serial,name) values ('$id','第一筆')");
$id++;sqlite_query($db,"insert into $table (serial,name) values ('$id','第二筆')");
$id++;sqlite_query($db,"insert into $table (serial,name) values ('$id','第三筆')");
$id++;sqlite_query($db,"insert into $table (serial,name) values ('$id','第四筆')");
$id++;sqlite_query($db,"insert into $table (serial,name) values ('$id','第五筆')");
$id++;sqlite_query($db,"insert into $table (serial,name) values ('$id','第六筆')");
}
sqlite_close($db);
}
fclose($fin);

?>

AMP for windows

懶得安裝各式各樣 Server, 及繁瑣設定, 又想學 php 語法, 可考慮下載 WAMP Server:
http://www.wampserver.com/en/download.php
Appache2, php , mysql 安裝包一次搞定, 如果 mysql 要使用 utf8
記得修改 my.ini 內 client 及 mysqld 內的設定 default-character-set = utf8
這樣灌完就可在 local 端 (http://127.0.0.1) 執行 server 的 php 程式了.
記得將 php 程式放於 apache2 server 目錄內 htdocs 下面.
如果需要特殊外掛(例如 php_mysql.dll, php_sqlite, php_sockets ...等),
記得修改 php.ini 將對應的 dll 註解移除

在 Ubuntu 安裝 php-curl.dll, php-sqlite.dll

apt-get install php-curl,php-sqlite
就可以在 php script 使用了.

apache2

Appach2 是一隻很好用的 Web 伺服器(WWW Server), 支援 mysql, php, cgi-bin...等等, 又是開原程式碼,架設 httpd 非它莫屬

sqlite

SQLITE 是一個小巧好用的 SQL 資料庫語言.
php 支援它, 只要將 php.in 內 php_sqlite.dll
及 php_pdo.dll 註解 ';' 移除就可. 也可上官方
網站下載其原始檔, 用 Tiny C 就可直接編譯完成,
如果在安裝 sqlodbc driver, 就可使用 MS Access
透過 ODBC 方式,直接讀取或修改其所建立的資料庫.

使用 TCC 當作 cgi-bin

TinyC 是一隻很好用的 C compiler, 也可以當作 cgi-bin 的解譯器, 不會使用 php, 但熟 c 語言的老手, 可以考慮用它來寫伺服端軟體.
只要在 C 原始檔前面增加(假設 Tiny C 放在 c:\tcc 目錄下面)編譯指令碼就可以了:
#! c:/tcc/tcc.exe -run
將此原始碼hello.c放於 appach2 的 cgi-bin 目錄內, 就可執行了,tcc 會將他 compier後執行

#! c:/tcc/tcc.exe -run
#include
main()
{
printf("Content-Type: plain/text;charset=big5\n\n");
printf("Hello\n\");
}

安裝 apache2, TinyC, php, sqlite

1. 下載 apache2 for windows: http://httpd.apache.org/download.cgi
2. 下載 php for windows: http://www.php.net/downloads.php
3. 下載 TINYC compiler: http://bellard.org/tcc/
4. 下載 SQLITE: http://www.sqlite.org/download.html
5. 下載 sqlodbc: http://www.ch-werner.de/sqliteodbc/

2009年7月8日 星期三

octave 呼叫 DLL

/* http://www.gnu.org/software/octave/doc/interpreter/Oct_002dFiles.html#Oct_002dFiles
to compile, type
>mkoctfile calldll.cc
*/
// calldll.cc
#include "octave/oct.h"
#include "windows.h"
#include "stdio.h"
typedef void (*helloDLL)(char *in,char *out,int n);

DEFUN_DLD (calldll, args, nargout, "An example to call DLL\n")
{
HINSTANCE hDLL; // Handle to DLL
helloDLL hello;
octave_value_list OctRet;
static char ret[1024];
hDLL = LoadLibrary((LPCSTR)"Project1.dll"); // load dll
if( hDLL != NULL)
{
hello = (helloDLL) GetProcAddress(hDLL, "hello");
hello("send parameter",ret,0);
OctRet(0)="OK";
FreeLibrary(hDLL);
}
return OctRet;

}

用 Dev C++ 寫簡單的 DLL程式

/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include "windows.h"
#include "stdio.h"
extern "C"
{
DLLIMPORT void hello(char *in,char *out,int n);
}

DllClass::DllClass() { }
DllClass::~DllClass () { }
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}

DLLIMPORT void hello(char *in,char *out,int n)
{
int i;
printf ("DLL Hello %s\n",in);
out[0]='Y';
}

Octave's hello world

今天貼一個在 OCTAVE 上用 C 來寫程式
Octave 是一個數學運匴軟體,相當好用, 功能類似 matlab, 但它是自由軟體.學工程的決不能錯過, 且灌完後內建 C++ compiler, 可以用 C 來寫程式, 用 mkoctfile 來 complie, 之後會產生 .oct 檔, 該檔便可直接在命令列上呼叫, 如果要移除已載入的 .oct 程式, 可以下命令 clear all 或 clear 該oct 檔名即可

/*
Refer to URL: http://www.gnu.org/software/octave/doc/interpreter/Oct_002dFiles.html#Oct_002dFiles
use following syntax to compile under octave command line:
> mkoctfile hello.cc
Then it will generate a OCT file called hello.oct in the same directory
type
> p=hello
will execute the program, and the return message will be stored to variable 'p'
type
> help hello
will display the help message about the hello
In the end, it will return a string "OK" back to octave
type
>clear all
or
>clear hello
will unload the oct file
*/

// hello.cc
#include "octave/oct.h"
#include "windows.h"
#include "stdio.h"
DEFUN_DLD(hello,args,nargout,"Hello world\n")
{
octave_value_list OctRet;
printf("This is OCT file\n");
OctRet(0)="OK";
return OctRet;
}

2009年7月7日 星期二

奇怪, 這個 Blog 會將 tag 移除, 每改一次,就少了一些文字, 真是有夠怪?
想貼 php 原始碼都無法忠於原著, 放棄貼全部原碼, 只能貼部份, 因 function OTCstockmatch($match,$fin) 內含 html 的 tag, 會被該網站濾除, 就不貼了. 簡單來講利用 fgetcsv ($fin) 抓出資料, 再比對字串, 如果符合就將該筆資料的欄位內容抓出來, 利用 html 語法將它顯示到 browser 上,

function OTCstockprint($fin)
{
echo '資料來源:證券櫃檯買賣中心';
OTCstockmatch('名稱',$fin);
OTCstockmatch('聯勝',$fin);
echo '
';
}


if( 0 ) { $filename="emgstk.csv"; $fin=fopen($filename,"w+t");}
else $fin= tmpfile();
if( $fin )
{
$ch = curl_init();
if( $ch )
{
curl_setopt($ch, CURLOPT_URL,"http://nweb.otc.org.tw/emgstk/ch/emgstk.csv");
curl_setopt($ch, CURLOPT_FILE,$fin);
curl_exec($ch);
curl_close($ch);
OTCstockprint($fin);
}
fclose($fin);
}
?>

用 php 分析興櫃股票資訊

興櫃股票最新行情,檔案可以輕易自證券櫃檯買賣中心抓取,
URL 為 http://nweb.otc.org.tw/emgstk/ch/emgstk.csv
利用啟用 php CURL 外掛(在 php.ini 檔內 extension=php_curl.dll 的注解 ';' 移除即可),
稍作分析後只秀出自己關心的股票,程式碼如上

2009年4月13日 星期一

4/12刪

2009年3月23日 星期一

3/23 今天叫了一統瓦斯, 因沒空的瓦斯桶,老板說要買一隻大約 1200 元, 瓦斯20公斤裝要 640 元, 另外更換新的瓦斯防爆器要1200元,再買兩根曬衣架共 198元,泡棉地板兩組要178元,鬆緊帶35元,1號電池兩棵45元用來啟動熱水器,瓦斯爐完好還能使用,熱水器也正常可以使用,太好了,算一算今天共花了約 3500 元, 星期天時查了一下農民曆4/1不宜入宅,寧可信其有,反正廟是不會跑的.不急著搬,4/2是搬家的好日子,就選這天吧

2009年3月16日 星期一

3/14 早上等家具送來順便整理一下臥房, 將藝術燈換成20瓦*2日光燈組(450元),及浴室走廊燈也換成20瓦單管日光燈(350元),這樣明亮多了,也較省電,原先屋主竟用電燈炮(60瓦*5) 組的藝術燈,真是太耗電了.11:00家具送到,師傅組裝好就把餘款直接交給他,再將地板打掃一下,臥房充滿木頭味,心怡多了. 再買了透明塑膠紙(540元共27呎)準備將曬衣台圍起來防止雨水打進來,也避免洗衣機招風吹雨打, 另外再尋視了一下所有電燈,打算將耗電的(60W)電燈炮下一次全都都要換掉.否則電費可不低呦.

3/16 今天又發花了19500元, 共買了沙發 7800, 書桌 2500, 電視高低櫃5500,大小茶几3800,本以為賺到了,因書桌小暇疵,小老板娘說原價3800算2500就好,另外再算便宜100元,沒想到回家上網看了一下,沙發才只要6800,電視高低櫃只要5000,被老板A了1500,想一想算了,當作促進經濟發展,讓可愛的小老板娘賺點生活費吧!總之全部家具已買齊,.還需要牽cable/modem上網用,叫瓦斯行送一筒瓦斯再看看熱水器/瓦斯爐是否可以繼續使用,再把家當及電視搬進去,就可入住了,預計選4/1號愚人節就當作一股傻勁吧!

2009年3月10日 星期二

3/10 今天請了半天假, 到戶政單位辦理遷入戶口手續, 結果要說需要帶地籍證明才能辦,只好再回家拿出所有權狀.辦完後, 身份證上換了新住址,領了新戶口名簿, 手續費需 80 元. 升格當了戶長,再到稅捐處申請更改為自用住宅稅率,聽說這樣可少繳一點稅.這樣應該算忙完所有法拍屋的的程序了吧.

順便到全國添購一台冷氣 花了12900, 2500kCal/h, 應該划算吧. 上次買的冰箱洗衣機因為有節能標章, 需到台電申請政府節能家電補助共 4000, 辦事員說約 2~3 個禮拜後錢才會下來.冷氣說明天就可去安裝了.

接著到家具行看看家具, 床花 10000 跟衣廚花 7000, 電視櫃 花 3000元, 都是實木, 看起來質感還算不錯, 老板說星期六早上才會送過去

2009年3月4日 星期三

windows 下 php 控制 RS232?

參考網路文章想在 windows 底下用 php 來控制 RS232
寫了一小段 code:

if( extension_loaded("dio") ) echo "Yes";
else echo "no";
exec('mode COM1: baud=9600 data=8 stop=1 parity=n');
$fd = dio_open('COM1:', O_RDWR);
$data="TEST";
dio_write($fd,$data);
dio_close($fd);

dio_write() 都沒問題, 也正常的將字串丟到 RS232去,
但 dio_read() 就不行了, 根本無法去駕御它,
有時讀到 1 個字元, 有時讀到好幾個, 有時完全讀不到,只好放棄.
其實要寫字串到 RS232, 用 DOS 指令就可操作了
(1. mode 設定 baud rate, 2. 用 '>' 將字串轉到 COM port 就 ok 了)
c:\>mode COM1: baud=9600 data=8 stop=1 parity=n
c:\>echo test > COM1:

Ubuntu 8.10 Server 安裝 php bcompiler

參考
http://plog.longwin.com.tw/my_note-unix/2008/10/13/php-compile-bcomiper-crypt-encode-source-2008
因我是安裝 ubuntu 8.10 Server 版安裝, 照著上述程序作,有點問題.但經一段時間摸索過後,終於成功了,先記下重點:
apt-get update
apt-get upgrade
apt-get install make
apt-get install libbz2-dev
apt-get install php-pear
apt-get install php5-dev
pecl install channel://pecl.php.net/bcompiler-0.8
echo "extension=bcompiler.so" >> /etc/php5/conf.d/bcompile.ini
/etc/init.d/apache2 restart
再到 http://bencoder.urdada.net/ 去下載人家寫好的 php script 叫 BENCODER 的, 來將 php 編碼過就完成了

整理房間

2/28 請了兩位師傅將牆壁重新粉刷一次, 3間臥房+1間廚房+1間客廳及前後陽台共用了一桶油漆,花費3000塊, 油漆師傅工錢 4500, 總共又花了 7500塊
3/2 為免以後要花時間去繳雜七雜八的費用, 今天到銀行辦了轉帳代繳,但行員說只可代繳中華電信,及水電費, 但約需 45 個工作天後才會生效, 真是麻煩, 順便到戶政要遷戶口,結果辦事員說需要攜帶戶口名簿正本才可辦理,唉,又白跑了一趟
3/4 今天買了冰箱洗衣機總共又花了 29800, 店家說 3/6 會送過去

2009年2月8日 星期日

法院點交

2008年
11/4
10:30 標得法拍屋,下午開立本票繳清餘款
11/25
收到不動產移轉證明(11/20 發文): 內文 11/11 取得標授權
11/26
1. 到稅捐處辦理查繳契稅, 但服務人員說要到市公所辦,但可以先申請房屋稅籍證明書
2. 到市公所辦查工程授益費, 並填寫契稅申報書
3. 到房屋住所查看, 管理員說該屋主已搬遷, 有車位
12/2
辦完契稅(鄉公所辦, 農會繳款): 360300*0.06= 21618元(房屋現值: 360300元)
繳前手水費(水力公司): 1796元, (96/12 月 及 97/2 月共 4 個月)
繳前手電費(電力公司): 4016元, (96/12 月 及 97/2 月共 4 個月)
土地登計費(地政事務所): 544元
約三天後可拿到土地所有權狀
今天總共花 27974 元
未來恢復用水需繳 800 元
未來恢復用電需繳 400 元
2009年
1/19
需聯絡好鎖匠, 告知地點,談好價錢,約定時間,到時(1/20 PM 3:00)再會同警方及書記官一同開鎖進入空屋,鎖匠說到時警察來需要準備給每人500元的警員出差費.警察出差需要我付薪,真是怪哉!
1/20
空屋點交, 來了 2 名書記官(1男1女, 沈書計官帶了一個女的.看起來像是徒弟), 2 名員警(似乎主管也來了.這年頭薪水不好賺,加減賺些外會,真是好樣的), 開一道鎖開鎖費 700, 書記官端詳了房間,做了一些紀錄,並要求現場拍照存證, 之後請我及警察簽名完成點交程序,最後付了警察出差費 (500元/人), 共 1000 元.最後安裝兩道新鎖, 總共付給鎖匠 3000 元(大門共兩道鎖, 及開鎖費 700)
2/1
到自來水公司辦理復水申請, 並辦理過戶申請, 需再支付 800元 + 397元 (罰款?), 再到管理員處買進出大樓所需遙控器,上下電梯的 ID card 需花費120元, 車輛進出閘遙控器需花費 280元,並先預繳2個月的管理費( 1600元),順便下樓看看152號停車場,
2/2
下午接到水公司電話,說已完成接水工程,便請了1小時假,騎車到大樓查看水況, 已正常啟用, 水管, 檢查馬桶水龍頭皆正常通暢,心情愉快
2/3
到電力公司辦理復電申請, 需再支付400元 + 287元(雜費, 維護費?)並辦理過戶申請.
2/8
查電況,已完成接電,許多電燈都完好, 用 F828 DSC 拍了好幾張照,在燈光裝飾下,整個房間, 客廳,廚房,臥房都還不錯,算非常滿意, 下週再到戶政事務所辦理遷入戶籍手續,