懶的更新到blogger了

本站2010年10月以後的,都更新到google docs上了:
連結在這裡

2008/02/29

久違了~牛仔褲~

大概有將近10年沒有穿牛仔褲了吧,(也許不到10年,反正很久了)
以前對牛仔褲的印象就是「硬」、「緊」。
這次去試穿的結果,發現有很多是有彈性的或是較軟的,
不過,價錢上,也發現都是我想像不到的價格,應該是百貨公司的關係吧...
最後還是買特價的,一件5折,另一件6折。
感想:
  • 穿起來真的有比較年輕的感覺,是錯覺嗎 ^^
  • 折扣較高的褲子穿起來感覺較合身,也是錯覺嗎 ^^
  • 中腰的褲子,明明拉到最高,但感覺好像還是往下掉了。
  • 有人陪著一起買、給點意見,感覺真不錯。

2008/02/08

法國春天藝術節─紅色長頸鹿遊行

之前新聞有報導,說農曆春節時會在嘉義有紅色長頸鹿的踩街活動,
本以為是在嘉義市,後來才發現是在嘉義縣,

大年初一,正好家裡有人要去看,所以當然也跟著去,
沿路,感覺車子真的不多,看來是沒什麼人去看吧...
到了朴子,開始交通管制,車位已不太好找,才發現人其實還蠻多的 :)

拍了一些照片:
FrenchSpring2008


也順便用相機記錄一些動態影像:



--
活動網站:http://www.wretch.cc/blog/frenchspring

2008/02/06

第一次寫utf8的php程式

今天是除夕,想不到竟然是整天在家沒出去,
沒辦法,誰叫天氣那麼冷……

好了,言歸正傳。
仔細想想,雖然之前曾經把所架的phpBB從big5轉到utf8,
但是好沒從來沒有自己寫過utf8的php程式。

今天正好有一些小資料想要把它轉成phpBB發文時我想要的bbcode格式,
資料是放在google線上spreadsheet裡,裡面有繁中、簡中、日文字(google服務都是使用utf8)
本來想用Excel去處裡的,可是家裡電腦沒有灌Excel,
後來也想使用OpenOffice.org的Calc,可是打開後怎麼有些字顯示不出來……不太保險的感覺。
所以打算自己寫,把它們都放進MySQL再寫php程式來產生我要的格式,
大材小用? 殺雞用牛刀?...反正就順便也練習嘛~

編輯utf8的編輯器:使用 MadEdit...超好用的。
資料的部份,本來想就開始寫php程式來匯入,後來發現phpMyAdmin可以匯進csv檔,
那當然就從google spreadsheet匯出的txt檔去改成phpMyAdmin所使用的csv格式
(格式是 "欄位1";"欄位2";"欄位3"; .......預設用「"」和「;」....不過是可修改的 ^^)
這邊也確定放進到MySQL的資料是utf8編碼的資料。

開始吧,寫的php是utf8的編碼,資料庫裡也是utf8編碼,
寫出來執行的結果......果然和我想的一樣,一大堆的 ??? 。
雖然早料到會如此,可是還是很傷心 ^^

網路時代,不浪費時間,馬上用google查「php utf8」,果然已經早有解決方法了,
我參考這篇:分享MySQL和php採用UTF8的詳細方法

裡面寫到了可以改的地方還真不少,不過,我自己也沒有全改,只改我自己認為可能的地方,
  • 0.先決條件:資料一定是utf8編碼(包含php程式碼和放進資料庫的東西.....廢話)
  • 1.我沒有使用php的header函數
    header('Content-Type: text/html; charset=utf-8');
    倒是有把phpBB的標頭copy過來用(順便copy一份,下次可以用)
    echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
    echo "<html dir=\"LTR\">\n";
    echo "<head>\n";
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n";
    echo "<body>\n";
    echo "</body>\n";
    echo "</html>\n";
    (↑應該用單引號「'」的,但我希望產生的原始碼好看些 ^^ ,當然,關鍵是utf-8那一行)
  • 2.再來是建立資料庫時
    CREATE TABLE `table1` (
    `sn` INT UNSIGNED NOT NULL ,
    `title` VARCHAR( 60 ) NOT NULL ,
    ) ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    說真的COLLATE關鍵是什麼我不知道,但我還是加上去了。
  • 3.我覺得這個才是真正的關鍵,在開始query資料之前,先執行:
    mysql_query("SET NAMES 'utf8'");
    mysql_query("SET CHARACTER_SET_CLIENT=utf8");
    mysql_query("SET CHARACTER_SET_RESULTS=utf8");
    然後我的程式就可以正常運作了。
  • 文章裡面提到的php.ini , httpd.conf , my.cnf 還有cache什麼的,我就都沒改了
    (其實我有改過php.ini,但改完後再改回來,我的程式還是可以正常運作)
其他....好像沒什麼好寫的了,暫時到這裡。
--
相關php函數、範例查詢 http://www.php.net/

2007/12/29

我的鞋子到底穿多久

今天買新鞋子,Just do it!! 算是第一次為了運動而買的運動鞋,
嗯,那也就是說最近應該再去買雙平常上班用的鞋子,要不然真的沒鞋穿了。

一直很好奇自己一雙鞋子到底穿多久,
就上來留個言,順便讓系統紀錄一下時間,
希望等我穿壞這雙鞋時還會記得要上來看看到底穿了多久 ^^
--
題外話,家裡客廳的時鐘,每次換電池時,都會把換電池的時間寫在紙上,
包在電池外圍,等下次換電池時就可以知道該電池用了多久,
現在等於在做相同的事情吧。

2007/12/07

Google的線上圖表功能

http://code.google.com/apis/chart/
打一個網址,就直接產生圖表,
這會有什麼樣的用途呢?
我也不知道,試著把我自己的id打上去看看,
很好奇會產生什麼樣的圖...
結果是:
http://chart.apis.google.com/chart?cht=lc&chs=200x125&chd=s:YHLin
YHLin chart


呵,原來是把 A-Za-z0-9 當成是數字來用,
A-Z是0-25
a-z是26-51
0-9是52-61

詳細說明還是要看它的API網站....

2007/11/20

奇怪的狀況,網路上不去,中毒?

遇過幾台電腦,可能是因為中毒,讓網路上不去,
(也許是毒清掉了,但設定被改掉了吧)

狀況很神奇,
當我用 netstat -na 時,沒有看到127.0.0.1,
但是...可以ping出去(例如ping到hinet的dns),而且有回應,
但瀏覽器就是上不去。

今天又遇到了,
網路上查了一下關鍵字「中毒 不能上網」,查到了一些方法,
其中有人提到,在命令提示字元裡打「netsh winsock reset」,然後會要求重新開機,重開後就好了。
但上面寫只能用在 sp2,
若是其他系統,可以到 http://cexx.org/lspfix.htm參考看看

看來值得一試(總比重灌好)
因為系統是sp2,所以就用第一種方法,
下完指令 ─ 重新開機 ─ ─ ─ 疑!真的好了!
太好了,那第二種就不試了 :)

2007/10/23

用PXE開機去還原系統

話說公司裡的電腦,明明有還原的機制,但只要過了一段時間,還是會生出一些有的沒的,
實在是因為用的人太多太雜了,所以該重灌的還是要重灌。

之前有寫過硬碟的備份與還原 ,之後就很常使用SystemRescueCd
所以目前的重灌方式就是帶著一片SystemRescueCd + USB外接硬碟(含image檔),
被玩壞一台就重製一台。

很久沒有再連上它的網站去看了,不知道現在已經到第幾版本,昨天連上去看看,是0.4版,
再往下看,主要功能之一是「PXE Network booting」,這麼棒的功能,怎麼可以不試試看呢。
如果成功的話,只要找一台電腦來開機,就可以用它來還原別台電腦了。

今天,就隨便選了台電腦主機A來當主角(192.168.0.2)。
開機時,在boot:畫面時按F6,有一些對於使用pxe功能的解說,
=====.....=====
開機過程省略
=====.....=====
開完機後,
1.先設定主機A的ip (gateway和dns應該沒設都沒關係吧)
 ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255
 route add default gw 192.168.0.1 (呵...個人習慣把gateway設在.1)
2.修改/etc/conf.d/pxebootsrv
 可用vi,裡面主要是設自己的網段、ip、dhcpd發放ip的範圍.....看了就知道。
3.啟動服務/etc/init.d/pxebootsrv start

天啊!就這麼簡單?真的這樣就可以了?趕快找台電腦來試吧。
另,說明檔裡面有講到,client端除了要能網路上開機以外,
要有280MB(另一個說300MB)的ram -_- 真的假的!?...算了,反正這裡都512MB

好,選定一台電腦B,進bios設定去啟動網卡上的boot rom,
開機........真的進去了(高興)
哇!開的好快...比用光碟開機還快(很高興)
疑...停下來了!?在下載一個100多MB的檔案.....(其實這裡也跑得很快)
這個檔案就是原本應該燒在光碟片裡的,現在整個用http的方法從電腦A抓到電腦B的ram裡。
開機完成了,跑得....很快(因為都放在ram裡了能不快嗎 XD )
※註:開機完後,電腦B的網卡要重新設定,可執行 net-setup

再來,就是在電腦A執行partimaged來當還原用的伺服器,
電腦B就可以連線上來還原了。
接著電腦C...電腦D......嗯,比之前又更方便了,真是個好東西。
--
*理論上,應該可以允許很多人同時連上去還原,但我只要第二個人上去一下子,就一定掛掉...
*試用nfs分享出去,也是第二個人連上去就出現檔案被lock住....
也就是說我同一個時間只能還原1台,應該是有哪邊沒設定好吧,
雖然是美中不足,但比起之前的方法,已經又更方便了(至少不用每一台去放光碟開機片)。

2007/09/21

Google的線上簡報Presentation

Google線上簡報工具終於推出了,
之前就一直有聽到消息,前幾天終於發表了,
馬上試用,做一個線上的簡報來試試看,
http://docs.google.com/Present?docid=dhtm7m2j_85f5gs5c&fs=true

目前看來,它的功能很陽春,可以插入文字和圖片,
更換投影片的背景主題,和一些簡單的排版功能,可發布成網頁。

雖沒有動畫特效和音效,
但和之前的 Google Docs 一樣,可能線上多人共同編輯。

2007/09/17

最大公因數,原來很簡單




找A,B的最大公因數
A=(←請輸入一個整數)
B=(←請輸入一個整數)
最大公因數是:



===== 以下是主要程式碼 =====
while (a != b){
if (a>b)
a -= b;
else
b -= a;
}
return a; // or b
===== 其實就是輾轉相除法 =====

2007/09/10

firefox 下方出現 menuitem.....

其實已經不是第一次了,
但今天開機時忽然又出現了,可能又是更新JRE所發生的情形,
依照上次的方法,到控制台裡,開啟Java的控制面版,「進階」→「瀏覽器的預設Java」→把「Mozilla 系列」的勾勾拿掉,
上次明明把勾勾拿掉了,怎麼又自動勾上去了呢??
不管了,拿掉後再重新開啟firefox......
糟...怎麼還是一樣,那就重新開機好了...
糟...又一樣,這次是怎麼了....


趕快再google一下,找到了不錯的方法:
http://forum.moztw.org/viewtopic.php?t=16874

原來只要把 firefox 安裝目錄(預設是 C:\Program Files\Mozilla Firefox\)
裡面的 extensions\{CAFEEFAC-0016-0000-0001-ABCDEFFEDCBA}\chrome.manifest
檔案裡的 zh_TW 改成 zh-TW 。
然後再用安全模式啟動firefox( firefox.exe -safe-mode)
關掉後再正常啟動就可以了。

2007/09/07

Google Spreadsheets 抓外部資料的函數

其實是參考Google自家的線上help就很清楚了,
http://docs.google.com/support/spreadsheets/bin/answer.py?answer=75507&hl=en
但還是自己的話打一次,方便自己以後參考。

抓外部資料當然就是抓網路上可以「直接存取」到的資料,
格式可以是 xml,html,csv,tsv,rss。

功能如下:
語法:=importXML("URL","query")
說明:URL可以是 html或是xml文件,query是想要查詢的XPath語法。
例:=importXml("www.google.com", "//a/@href"),將會把www.google.com裡面所有<a>標籤的所有href都列出來。

語法:=importData("URL")
說明:URL是一個逗點隔開的檔案(csv),或tab隔開的檔案(tsv)。

語法:=importHtml("URL", "list" | "table", index)
說明:把該「URL」裡面的第「index」個「list或table」抓進來。其中list包含 <ol>,<ul><dl>。table當然就是<table>標籤。
例:=ImportHtml("http://en.wikipedia.org/wiki/Demographics_of_India", "table",4)


語法:=GoogleReader("URL", [feedQuery | itemQuery], [headers], [numItems])
說明:就把該URL的feed資料抓進來(必須是googlereader可以判讀的資料)
例:=GoogleReader("http://news.google.com/?output=atom")

2007/09/01

日本行

2007-08-22 to 26
第二次到日本,與第一次的某些景點(清水寺、大阪城)是重覆的,但正好可以做些比較。
最大的不同點是「顏色」吧 ^^
上次是櫻花盛開的4月,
而這次是8月...也不是不好,就用綠意盎然來形容吧~
記錄了一些照片,包含了 景點、販賣機、和食物(這才是重點)。

From japan2

2007/08/10

用JavaScript抓滑鼠位置

想用JavaScript抓取滑鼠的位置..(在IE和FF都可以)
本來以為這是很容易的事情,但試了一下發現問題一大堆,
最後發現我跟本不會JavaScript的event.....

網路上很多站的圖可以跟著滑鼠跑,可是一用火狐就一動也不動...
後來連到政府電子採購網的測試網站(http://web1test.gp.gov.tw/)
發現IE和FF都可以讓圖跟著滑鼠跑...太好了,馬上看一下它的原始碼。
它的方式是利用有沒有 window.Event 來測試是IE或FF,
所以參考它的原始碼改了一個抓取滑鼠位置的備忘程式...


<script type="text/javascript">

// if (window.Event) alert("window.Event"); else alert("No window.Event");

document.onclick = myclickpic;

function myclickpic(evnt){ //這裡打 evnt 不是打 event
var myX;
var myY;
if (window.Event) {//firefox
myX = evnt.pageX;
myY = evnt.pageY;
}else{ // IE
myX = event.x+document.body.scrollLeft;
myY = event.y+document.body.scrollTop;
}

alert(myX);
alert(myY);
}
</script>

2007/07/20

貼上到google文件─試算表

其實應該不用試也可以想像得到,但還是試貼看看,
可不可以把Excel的資料直接複製─貼上到Google文件的試算表,順便看看公式貼上去會如何。
果然,是可以直接用Ctrl+C、Ctrl+V去操作,
公式的部份,會變成「值」。

Word的表格也可以直接複製貼過去,

另外,純文字的部份,也可以用 Tab 隔開的方式直接貼上。

2007/06/07

研習之外~台南小吃

今天下午到台南市勝利國小研習,時間是下午1~4點,
12點多走出了後火車站後,就有人站在那裡等了,第一個感覺就是,有朋友真好~
有人可以專車接送到目的地(本來是打算走路過去的)。
......中間研習內容省略......
結束後,開始展開台南小吃之旅,
冬瓜茶、棺材板、米糕、四神湯、蝦仁肉圓、安平豆花......還有很多想吃的,可是肚子飽了。

冬瓜茶...好喝,不過我點金桔口味的,好像原本冬瓜茶味就少了點...
棺材板...外皮酥脆,好吃,聽說那家是發明者的店
米糕就要配四神湯...奇怪? 誰規定的? 雖然配起來還不錯啦 :)
蝦仁肉圓...一份三粒(小粒),蒸的? 不是炸的...
安平豆花...不錯,不過這桌椅怎麼讓我聯想到東海那邊的仙草凍....

2007/05/23

[原來]這就是晶片讀卡機..網路ATM..網路報稅

原來這就是晶片讀卡機
好久好久以前,人室主任就問大家要不要申請自然人憑證,
反正不用錢,所以就跟著大家一起申請了一張,然後就一真放在錢包裡...完全沒有使用。

今天,正好要值夜班,下午 5點多,吃過晚餐後...時間還早,逛一下燦坤好了...
正好看到有一區IC晶片卡的讀卡機,印象中沒有同時看過這麼多的,應該是因為5月是報稅的季節吧 XD。
就走過去看看吧,價錢從199,299,3xx,4xx都有,想起錢包裡的自然人憑證,放了這麼久了,也來用用看好了,
於是買了個299的讀卡機 EZ100PU...(不敢買199的,也不想買4xx的)
回來看過裡面的 FAQ之後,發現它除了要驅動程式之外,還會自動啟動一個叫 Smart Card 的服務...
(平常是綠燈...插卡後,讀到卡片時是亮紅燈)

---  安裝...當然沒有問題...  ---

馬上來試用吧,但是...能用在什麼地方?...完全沒有概念 ,
這時候,就連上 http://moica.nat.gov.tw/ 吧,裡面有一些自然人憑證相關應用的連結...
但...好像沒看到自己想試用的服務。

忽然想起,我們郵政好像有提供網路ATM的服務,那就來用用看好了...
https://webatm.post.gov.tw/
(因為有ActiveX的東西,目前應該只能用IE...那就用IE Tab吧...)
插卡,打PIN碼(用畫面上的鍵盤,滑鼠去點數字..不錯不錯),然後,就來個餘額查詢好了,
耶~還真的可以(廢話^^)
轉帳...存簿轉存簿看看...嗯,還要打一組random的驗證碼和一次pin碼...(雖然麻煩..但還不錯)...
什麼...還要把sim卡拔掉再重插....(嗯...應該也是為了安全吧...只好照做)
ok,轉出去了...100元...手續費 0元...

對了,對了,可以網路報稅,連上
http://tax.nat.gov.tw/
下載了「電子申報程式IRX8.05--網路自動安裝版」(IRX800.EXE)...也就是說...不是在瀏覽器裡,而是另一個程式在控制。
安裝後,啟動...那個圖示也太明確了...「稅」-_-
可以有三種方式連上去使用 1.自然人憑證  2.金融憑證(跟本不知這是什麼)  3.身分證號+ 戶口名簿戶號(原來有戶號這種東西)
當然是用自然人憑證(就是要來試這東西才買讀卡機的啊),
連上去,輸入身分證字號....
把薪資所得下載下來......天啊......原來小老百姓的所得資料都逃不過政府的眼睛啊.....一清二楚、一目了然...
好吧,驚嚇之餘,還是把這個程式簡單操作過一次,基本上就是紙本的內容(我有寫過紙本的),
應該是列舉扣除會比較麻煩,如果用一般扣除的話,這網路報稅,真的是超方便的了。

還能玩什麼呢?  如果還有想到再說吧...
--
網路報稅程式,啟動時會問說要不要連上網看有沒有新的版本..
網路報稅程式,每年都要下載一次(它自己是這麼說的..)
雖然不太能信任網路安全...但不信任就不要玩這些東西了 ^^

2007/04/12

[備忘]javascript 和 php 裡的 timestamp

常會用到 timestamp
可是總覺得一直都記不起來....應該是自己不願意去記吧,反正查一下就有了 :)

JavaScript中,取得現在時間(本機時間)的timestamp可以用對Date()物件用 getTime()

var now = new Date();
now.getTime();  //這樣就可以了,不過注意的是,這個timestamp是用1/1000秒為單位,所以使用時要小心

方便一點也可以直接new以後,getTime() 除以 1000 再取整數 :)
mytimestamp = parseInt(new Date().getTime() / 1000 ) ;

-----

php裡,取得現在時間(server端)的timestamp,只要用 time() 函數就可以了。
$mytimestamp = time();
echo $mytimestamp;  //是以 秒 為單位,很習慣^^
 

2007/04/09

[偏方]硬碟發出怪聲

硬碟發出怪聲,一聽到就知道差不多了,可是也沒有辦法。
重新開機後,果然就進不去系統了....糟....裡面還有資料。

電腦公司的人說:「發出怪聲就不要一直試,把硬碟『直放』再開」。(主機橫放硬碟就直了)
照這個方式做了以後再開機,果然又進入到系統了 :)

好,就趁這個機會快把硬碟備份起來吧。

2007/03/29

[心得]桌面上的怪檔刪不掉

最近,有幾台windows xp的桌面上,出現了奇怪的檔案
看起來都是英文字母(大寫),最後以「.」結束,檔案大小是 0,屬性有 A HS(是系統檔又是隱藏檔)
直接用滑鼠點一下,按del卻刪不掉,
再試了一些刪除的方法,一樣都刪不掉,真的是怪檔,
後來使用 cmd
cd 到桌面後,
用 dir 當然是看不到的,要dir /ah
就使用 del 指令來刪好了....
可是檔名真是太奇怪了,直接 del 檔名也找不到檔案,只好用萬用字元了,
最後使用
DEL /p /ah *. (← /p會在刪除前先尋問,萬用字元不尋問就太危險了 /ah代表顯示隱藏檔)
果然列出來那個檔案,問(Y/N)....當然是 Y

檔案是刪除了,可是不知是怎麼產生的。

2007/03/06

z-index

數字大的會在上面,數字小的在下面
<div style="position: relative; top: 0px; left: 0px; width: 150px; height: 150px; background-color: yellow; z-index: 1;">
yellow; z-index:1;
</div>
<div style="position: relative; top: -75px; left: 75px; width: 150px; height: 150px; background-color: red; z-index: 2;">
red; z-index:2;
</div>
<div style="position: relative; top: -150px; left: 150px; width: 150px; height: 150px; background-color: pink; z-index: 3;">
pink; z-index:3;
</div>


yellow; z-index:1;


red; z-index:2;


pink; z-index:3;