2007年9月27日 星期四

MySQL 『Noinstall Zip Archive』 安裝

MySQL 『Noinstall Zip Archive』 安裝
(1) 解壓後放在C:\Apache2.2\mysql
(2) 建立 C:\WINNT\my.ini 檔, 內容如下:

----------my.ini內容----------
[mysqld]
basedir=C:/Apache2.2/mysql
datadir=C:/Apache2.2/mysql/data
----------my.ini內容----------

(3) 到Dos-mode下command:
> cd c:\apache2.2\mysql\bin
> mysqld-nt --install
* --install意思是說register成windows service去管理start/stop/restart

在Win2K上安裝 phpMyAdmin-2.11.1-all-languages

在Win2K上安裝 phpMyAdmin-2.11.1-all-languages

(1) 解壓縮到C:\Apache2.2\htdocs\ 並改名為 phpMyAdmin
(2) 複製config.sample.inc.php to config.inc.php
(3) 修改 config.inc.php內容

----------config.inc.php內容----------
$i++;
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http'; /*將cookie改為http*/
/* Server parameters */
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['user'] = '登入MySQL資料庫帳號';
$cfg['Servers'][$i]['password'] = '登入MySQL資料庫密碼';
----------config.inc.php內容----------

(4) 修改C:\WINNT\php.ini內容, 將extension=php_mysql.dll 前面的『;』comment取消
(5) Restart Apache
(6) 從C:\Apache2.2\php-5.2.4\ext\下複製php_mcrypt.dll,php_mysql.dll and libmysql.dll 到 C:\WINNT\下.
(7) 執行 http://localhost/phpmyadmin/index.php 就可以看到內容.

* 如果步驟(4)跟(6)沒有做到,就會出現『無法讀取 mysql 模組』訊息.

另外在舊資料庫轉移後會出現亂碼, 是因為舊資料庫是採latin1編碼, 而新版5.x版MySQL的default編碼是utf-8,
所以必須要在C:\Apache2.2\htdocs\phpMyAdmin\libraries\select_lang.lib.php修改內容:
找到底下,並將zhtw-utf-8的array內容改為chinese_traditional-big5:
'zhtw-big5' => array('zh[-_](tw|hk)|chinese traditional', 'chinese_traditional-big5', 'zh-TW', '中文'),
'zhtw-utf-8' => array('zh[-_](tw|hk)|chinese traditional', 'chinese_traditional-big5', 'zh-TW', '中文'),

---
再找到底下:
/**
* @global array MySQL charsets map
*/
$GLOBALS['mysql_charset_map'] = array(
...
'big5' => 'latin1', /*修改為 latin1*/
'utf-8' => 'latin1', /*修改為 latin1*/
...
);

存檔後refresh web page...

2007年9月25日 星期二

Pointer 與 Structure 運用.

/*
* 說明: (*pz).a = pz->a

first member before the function call 11, Address = 4598856
first member inside the function 11
first member before the function call 12, Address = 4598976
first member after the function call 12 Address = 4606680
first member before the function call 12, Address = 4606704
Address of y.d = 4606728
Address of y->d = 4606752
*/
struct y{
int d;
int e;
};
struct x{
int a;
int b;
int c;
struct y ys;
};

void function(struct x *);

main(){
struct x z, *pz;

pz = &z;
z.a = 10;
z.a++;

printf("first member before the function call %d, Address = %u\n", pz->a, malloc(sizeof(pz->a)));

function(pz);
printf("first member before the function call %d, Address = %u\n", pz->a, malloc(sizeof(pz->a)));
printf("first member after the function call %d Address = %u\n", (*pz).a, malloc(sizeof((*pz).a)));
printf("first member before the function call %d, Address = %u\n", z.a, malloc(sizeof(z.a)));
printf("Address of y.d = %u \n", malloc(sizeof(z.ys.d)));
printf("Address of y->d = %u \n", malloc(sizeof(pz->ys.d)));

}

void function(struct x *pz){
printf("first member inside the function %d \n", pz->a);

pz->a++;

}

C/C++: Structure Vs Union

A structure is a collection of items of different types; and each data item will have its own memory location. Where as only one item within the union can be used at any time, because the memory allocated for each item inside the union is in a shared memory location i.e., only one memory location will be shared by the data items of union.

Size of union will be the size of the biggest variable.

Why do we need Union in the first place?

Sometimes we may not need the data of all the (related) data items of a complex data structure and be storing/accessing only one data item at a time. Union helps in such scenarios.

e.g.,

typedef union
{
int Wind_Chill;
char Heat_Index;
} Condition;

typedef struct
{
float temp;
Condition feels_like;
} Temperature;

Wind Chill is only calculated when it is cold and heat index is used only when it is hot. There is no need for both of them at the same time. So when we specify the temp, feels_like will have only one value - either wind chill or heat index, but not both.

The following simple program illustrate the above explanation:
% cat structunion.c
#include
#include

typedef union
{
int Wind_Chill;
char Heat_Index;
} Condition;

typedef struct
{
float temp;
Condition feels_like;
} Temperature;

void main()
{
Temperature *tmp;

tmp = (Temperature *)malloc(sizeof(Temperature));

printf("\nAddress of Temperature = %u", tmp);
printf("\nAddress of temp = %u, feels_like = %u", &(*tmp).temp, &(*tmp).feels_like);
printf("\nWind_Chill = %u, Heat_Index= %u\n", &((*tmp).feels_like).Wind_Chill, &((*tmp).feels_like).Heat_Index);
}

% cc -o structunion structunion.c

% ./structunion
Address of Temperature = 165496
Address of temp = 165496, feels_like = 165500
Wind_Chill = 165500, Heat_Index= 165500

2007年9月20日 星期四

Close beep sound in Vmware config.ini

Add the following to C:\Documents and Settings\Administrator\Application Data\VMware\preferences.ini
mks.noBeep = "TRUE"

CF Algorithm

--- Google Book ---
An Efficient Collaborative Filtering Method

2007年9月18日 星期二

C語言中volatile關鍵字

volatile (C++)
Reference: MSDN
const and volatile Pointers
Reference: MSDN

volatile關鍵字是一種類型修飾符,用它聲明的類型變數表示可以被某些編譯器未知的因素更改。
用volatile關鍵字聲明的變量 i 每一次被訪問時,執行時都會從 i 相應的記憶體位址中取出 i 的值。

沒有用volatile關鍵字宣告的變數 i 在被訪問的時候可能直接從CPU的暫存器中取值
(因為之前 i 被訪問過,也就是說之前就從暫存中取出 i 的值保存到某個暫存器中)。

之所以直接從暫存器中取值,而不去記憶體中取值,是因為編譯器優化代碼的結果
(讀取CPU暫存器比讀取記憶體快得多)。

以上兩種情況的區別在於compiler時用debug mode或release mode的結果,兩者是不一樣的。會這樣做是因為變數 i 可能會經常變化(volatile),所以需保證對特殊記憶體位址的值被正確讀取。
---
volatile關鍵字是一種類型修飾符,被宣告的變數表示可以被某些編譯器未知的因素更改,例如:操作系統、硬件或者其它線程等。遇到這個關鍵字聲明的變數,編譯器對讀取該變數的程式碼就不再進行優化,從而可以提供對特殊記憶體位址的值被正確讀取。

例如:
volatile int i=10;
int a = i;
int b = i;

上面程式碼 volatile 指出 i是隨時可能發生變化的,所以每次使用它的時候必須從 i 的記憶體位址中讀取,因而編譯器生成的彙編代碼會重新從 i 的地址讀取數據放在 b 中。而優化做法是,由於編譯器發現兩次從 i 讀數據的程式碼之間的程式碼沒有對 i 進行過操作,它會自動把上次讀的數據放在b中。而不是重新從 i 裡面讀。
 
#include
void main()
{
int i=10;
int a = i;

printf("i= %d\n",a);
//下面彙編語句的作用就是改變記憶體中 i 的值,但是又不讓編譯器知道
__asm {
mov dword ptr [ebp-4], 20h
}
//dev c++ __asm{} must change to __asm("mov ...");

int b = i;
printf("i= %d\n",b);
}
然後,在debug mode執行程式,輸出結果如下:
i = 10
i = 32
然後,在release mode執行程式,輸出結果如下:
i = 10
i = 10
輸出的結果明顯表示,release mode下,編譯器對程式碼進行了優化,所以第二次沒有輸出正確的 i 值。

下面,我們把 i 宣告成volatile關鍵字,看看有什麼變化:
#include
void main()
{
volatile int i=10;
int a = i;

printf("i= %d\n",a);
__asm {
mov dword ptr [ebp-4], 20h
}

int b = i;
printf("i= %d\n",b);
}
分別在debug mode 和release mode 執行程式,輸出都是:
i = 10
i = 32
表示這個關鍵字發揮了它的作用!

TOP / BOTTOM Boot Block

Reference URL

Vlsi-design Of Non-volatile Memories
By Giovanni Campardo, Rino Micheloni, David Novosel
P526

Digital Design with CPLD Applications and VHDL
By Robert K. Dueck
P851

Floorplan (integrated circuits)

Floorplan (integrated circuits)

In semiconductor device design, a floorplan of an integrated circuit is a diagram of the actual placement of its major components within the chip area. The image below is a mock chip floorplan, shown in an IC layout editor window.

The creation or design of a floorplan is an important aspect of integrated circuit design, since the layout of the major components on the chip affects their connectivity and performance, and the aspect ratio of the chip depends on the floorplan (long thin chips are avoided in favor of square or nearly square chips.

URL:http://en.wikipedia.org/wiki/Floorplan_%28integrated_circuits%29

前門&花園


花園全景-原本建商種的一些花卉都被我一一拔掉重種,因為我比較不喜歡整個花園的花種得太密集,這樣一來不好打理,二來又很容易讓蜘蛛、害蟲等滋生...


花園老婆婆-房子蓋好之後就一直在想著,每間房子的大門都一模一樣,很容易搞不清楚,所以我們就去買了老婆婆來顧門口,後來將她擺在花園,也覺得整體很搭配的.


2F~3F外觀


社區走道-是人車分道,我覺得這樣的設計很好,小孩子以後可以在這裡跑來跑去的,不用擔心會有車子突然冒出來,現在每天下班時我都會在這裡溜狗~

英式鄉村風-4F書房


書房的燈光我就沒有用黃光,不然看書會看到近視,我會放一個地球儀的原因就是每當我閒閒的時候就會去看看其他國家領土...


書房另一景-現在的書桌前面還多了一個裁縫機,也就是每當我在工作時,我老婆手上也沒閒著,就在做拼布,雖然現在都是做一些小作品,不過老婆加油一點,我們家兩隻愛犬的冬季衣服就要靠妳了^^

英式鄉村風-3F未來小朋友的房間


未來小朋友的房間-當初在決定小朋友的房間顏色時,我考慮了很久,後來還是選擇了藍色,因為藍色有很多不錯的涵義...

英式鄉村風-3F客房


照片上看到的這個大花窗簾是進口布,很貴! 不過很搭配我們的風格~


床罩也是用小花花,所以跟窗簾很搭配。


一般我比較不喜歡整間家釘得空間變得很小,為了也要讓這間客房有鄉村味,所以我在牆壁上設計了一個花花腰帶。

2F主臥房浴室


大家一看到浴室的第一句話就是:"哇~你們家的浴室好大哦~"大約有7~8坪,我的相機鏡頭不好,拍的不夠大,之前小狗買回來就是先養在這裡^^


淋浴間


浴室的主角-按摩浴缸啦~ 目前上面已經有一層後後的灰塵... ^^ 我看以後可以抓小狗來訓練游泳.

英式鄉村風-2F主臥房


主臥房-席夢思的床的確有差,貴還是有它的道理在。

這個兩人沙發就是從樓下客廳搬上來的,因為客廳放不下了,不過放在這裡覺得還滿搭配的。


小花花落地窗簾-這款窗簾的材質也是雞皮的,花色跟牆壁的油漆顏色滿搭配的。


電視後面的是小花花壁紙,光是這個壁紙就花了我們1~2個月的時間在找,這款避紙在樣本上看並不突出,後來貼一整片之後,感覺很棒~


衣櫥跟電視櫃、床組和化妝檯都是同一組的。上面這個線性出風口是冷氣的出風口,房子在還沒裝潢時也是為了這個出風口位置很頭痛,後來放在這裡很適合。


老婆大大的化妝檯


這個小碎花床罩也老婆特地去挑的,真用心。


老婆大大的化妝檯


電視櫃


衣櫥-全實木,很重,當初是很多個工人一起搬上來的...

英式鄉村風-餐廳


餐廳全景-餐廳的顏色會選擇黃橘色,是因為這顏色讓人比較容易下飯,而且也很放鬆。


餐桌-這桌巾我們還有挑了其他花樣,主要是要用在聖誕節的時候要拿出來,這樣才能有聖誕節的氣氛。


這個廚櫃是我們後來買的,我覺得很實用,上面又可以放東西。


餐椅-很美吧,拍張特寫~


右邊角落的是三角櫃,很棒吧,不佔空間又實用,不過,很貴...
外面是雙車庫。



這個漂亮的吊燈跟廚房很搭吧!

英式鄉村風-客廳


客廳主牆是客廳最關鍵的地區,為了能讓客廳整理看起來很有鄉村味道,所以我跟我老婆選擇了用壁爐來呈現,當然壁爐並不像國外真正可以燒材的,我們利用它中間嵌入的空間來放電視,另外上面那幾隻娃娃可是有名的荷蘭娃娃哦,壁爐左右白色門是置物櫃。

窗簾的顏色與花樣如果搭配的好可是有加分的效果哦,光是這個窗簾的牌子來頭就不小了,叫"Pierre Cardin",布料也很特別,是雞皮的。
我們儘可能去挑花樣是"大花"的,然後顏色是與客聽整體顏色又很相近的,後來這塊布是我老婆挑的(價格真貴)
地毯是我們在HOLA特價的時候買的,義大利羊毛地毯,踩上去的感覺很舒服,很厚,鋪上之後也覺得它的顏色跟花樣與客廳很搭配。在HOLA買進口地毯如果沒有特價買的話真的很貴。
客廳桌子是安格斯。


這是客廳要進廚房的那一面,原本是沒有隔間的,風水上說:廚房灶台忌從大門口可以直接看到。所以為了壁免這個問題,然後又不想讓整體空間視覺變小,所以我選擇了用玻璃拉門,拉門的玻璃不能太小片哦,不然看起來會很小氣,大片一點,當然為了安全問題,所以我們採用安全玻璃,這個拉門一片也很大片,重重的,光是這個門的顏色就花了油漆師傅幾天的時間,因為我用了鋼琴烤漆的方式去漆,這樣木頭表面才會光滑,比較不會留手汗,時間久了手把旁邊才不會黑黑的手印。
白色拉門上方是隱藏式冷氣的出風口,為了要讓出風口的位置能夠跟拉門對齊,出風管還是特別訂製。
另外拉門旁邊的兩面牆是文化石,跟璧爐的文化石是一樣的,光是這個文化石的種類有進來台灣的約有30~40種左右,但是大部份都是外牆用的,所以要挑一種很適合室內用的真的不好找,這個文化時就讓我們跑石材工廠好多次。
歐式進口沙發,很大吧,畫面這個是三人座的,旁邊是一人座的,而兩人座也很大,1+2+3都放在客廳的話,會放不下,所以我們將兩人座的搬到樓上主臥房。
客廳除了主牆很重要之外,另外的主角就是沙發牆,為了不讓整體鄉村風格走樣,所以在沙發牆部份我們選擇了較保守的表現,就是掛一幅油畫,當然這幅畫也是貴貴的...

這個角色是為了拍攝客廳主燈跟整理的搭配,主燈我們也挑了很久,後來決定了這個古銅燈,是真正的古銅哦,很重! 這個燈架就好幾公斤重,現在外面很多燈飾都是大陸製,品質很差,而材質更不用說,幾乎都是塑膠居多。
客廳的油漆是鄉村風最經典的顏色『蘋果綠』,我們為了要找這種顏色,找了很多油漆品牌,也從國外網站找了很多漂亮的顏色,但是後來才知道外面賣的水泥漆是沒有辦法調漆,如果可以調,都是手工調漆,手工調漆的缺點就是容易有顏色不均勻,所以漆起來會東深西淺,後來我們到B&Q用電腦調漆,所以我們用乳膠漆,另外我比較不喜歡牆壁上有很明顯的油漆刷痕,所以我們就跟油漆師傅說用噴的,噴完後的感覺的確不一樣,顏色很飽和,不會有這邊漆太重那邊漆太薄。


2007年9月17日 星期一

第一次接觸 Flash memory



AMD, Am29LV160B

Datasheet


MXIC, MX25L1605D ~ MX25L6405
Datasheet

2007年9月13日 星期四

皮皮耳朵養傷中,妞妞學爬樓梯

皮皮,耳朵養傷中

2007-07-27

白目的皮皮,自己把耳朵抓傷,養傷中,看到牠戴著像外星人的頭罩... 好笑 :-)

妞妞學爬樓梯

2007-08-08
妞妞,不要瞪"拔拔",麻麻說:你們長大了變重了,沒辦法一次抱兩隻上樓,所以要學會爬樓梯。