2008年5月22日 星期四

樸克牌有 54 張,樸克牌用 ♠、♥、♣、♦ 當作花色,Why?

樸克牌從小玩到大還真的都不知道,為什麼樸克牌有 54 張?為什麼樸克牌要用 ♠、、♣、 當作花色?

樸克 54 張,兩張大小王(兩張鬼牌 JOKER 一大一小)是日月,其餘 52 張是全年 52 個星期。黑桃 ♠、紅心 、梅花 ♣、方塊 代表春、夏、秋、冬四季。每個花色 13 張,代表一季 13 星期。每種圖案 13 張點數(1 ~ 13)加起來是 91 點,而每季也是 91 天,四季相加,加小王是 365 天,是一年正常天數,而再加大王是 366,代表閏年。此外,全牌只兩色,紅色代表白天,黑色代表夜晚。

撲克牌分為四種花色:黑桃 ♠、紅心 、梅花 ♣、方塊 。各國人民都以本國民族文化對四種花色給予不同的文化闡述。法國人將四種花色理解為矛、紅心、丁香葉、方形;德國人把四種花色理解為樹葉、紅心、橡樹果、鈴鐺;義大利人將四種花色理解為寶劍、酒杯、拐杖、硬幣;瑞士人將四種花色理解為橡樹果、盾牌、花朵、鈴鐺;英國人則將四種花色理解為鏟子、紅心、三葉草、鑽石。

為什麼要以這四種花色,歷來說法很多。比較集中的說法有以下兩種:一說是這四種花色代表當時社會的四種主要行業,其中黑桃 ♠ 代表長矛,象徵軍人;紅桃 代表紅心,象徵牧師;梅花 ♣ 代表三葉草,象徵農業;方塊 代表工匠使用的磚瓦。另一說是這四種花色來源於歐洲古代占卜所用器物的圖樣,其中黑桃 ♠ 代表橄欖葉,象徵和平;紅桃 為紅心型,象徵智慧和愛情;梅花 ♣ 為三葉草,意味著幸運;方塊 呈鑽石形狀,象徵財富。

撲克牌中的 K、Q、J 是英文中國王(King)、王后(Queen)、侍從(Jack)的縮寫,12 張人頭牌分別代表歷史上某個人物︰

♠ K大衛,是西元前 10 世紀以色列聯合王國的第三任國王,他善用豎琴演奏,並在聖經上寫了許多讚美詩,所以 ♠ K 畫面上經常有豎琴圖樣。
♥ K查理大帝,是法蘭克王國加洛林王朝國王,四張國王牌中唯一不留鬍鬚的國王。
♣ K亞歷山大大帝,是最早征服世界的馬其頓帝國國王,他的衣服上總是佩戴著配有十字架的球寶。
♦ K凱撒,是羅馬帝國的國王、名將和政治家,四張國王牌中唯一一張側面像。

♠ Q帕拉斯·雅典娜,是希臘的智慧和戰爭女神,四張皇后牌中唯一手持武器的一位皇后。
♥ Q︰朱迪思皇后。
♣ Q︰阿金尼,由女王(Regina)一詞而來,她手持薔薇花,表示英國以紅 色薔薇花為標誌的蘭開斯特王族和以白色薔薇花為標誌的約克王族經過薔薇戰爭後終於和解,將雙方的薔薇花結在一起。
♦ Q︰雷切爾皇后。

♠ J︰霍吉爾。
♥ J︰拉海爾。
♣ J蘭斯洛特,是在亞瑟王傳說中圓桌騎士團的成員。
♦ J赫克托,他是特洛伊第一勇士,被稱為「特洛伊的城牆」。

相關資料︰
Wikipedia - 撲克牌

2008年5月21日 星期三

SQL 隨機取出資料表格內容

MySQL︰

PostgreSQL︰

Microsoft SQL Server︰

Oracle︰

IBM DB2︰


資料來源︰
SQL to Select a random row from a database table

MySQL - SHOW 句法(取得資料表、欄位的訊息)

SHOW DATABASES︰列出 MySQL Server 上的資料庫。

SHOW TABLES [FROM db_name]︰列出資料庫的資料表。

SHOW TABLE STATUS [FROM db_name]︰列出資料庫的資料表,提供比較詳細的訊息。

SHOW COLUMNS FROM tbl_name [FROM db_name]︰列出資料表的欄位,同 SHOW FIELDS FROM tbl_name [FROM db_name]DESCRIBE tbl_name [col_name]

SHOW FULL COLUMNS FROM tbl_name [FROM db_name]︰列出資料表的欄位,提供比較詳細的訊息,同 SHOW FULL FIELDS FROM tbl_name [FROM db_name]

SHOW INDEX FROM tbl_name [FROM db_name]︰列出資料表的索引訊息。

SHOW STATUS︰列出 Server 的狀態訊息。

SHOW VARIABLES︰列出 MySQL 系統變數的值。

SHOW PROCESSLIST︰顯示哪個執行緒正在運行。

SHOW GRANTS FOR user︰列出對一個用戶必須發出以重複授權的授權命令。

參考資料︰
MySQL 官方網站
MySQL 5.1 中文參考手冊
MySQL 3.23 中文參考手冊

2008年5月18日 星期日

我所看見的未來 - 嚴長壽︰獻給每一個關心台灣這片土地的人

嚴長壽《亞都麗緻飯店總裁》、《觀光協會名譽會長》,相信很多人跟我一樣,都是從嚴總裁於 1997 年所出版的《總裁獅子心》開始認識他的。今年(2008)3 月嚴總裁又有了一本新的著作《我所看見的未來》。



《我所看見的未來》內容簡介︰

被稱為「飯店教父」的嚴長壽,長期關心台灣的發展,也參與多次國家的重要規劃、國際觀光事務,是台灣觀光旅遊的領航人。

正值台灣面臨國際勢力劇轉的時候、休閒產業即將引領經濟的時候,嚴長壽以自己幾十年來在國際上所學的、在專業上所領悟的、在地方上所看見的,做了條理分明又激勵人心的剖析:我們的優勢在哪裡,台灣的國際級規劃,未來的努力方向。

在即將告別觀光旅遊這領域之前出版這版書,對嚴長壽來說,是他在這一行的畢業報告,對台灣來說,卻是一個美而富的未來。



相關資料︰
我所看見的未來 - 嚴長壽︰獻給每一個關心台灣這片土地的人
博客來 - 我所看見的未來
博客來 - 做自己與別人生命中的天使
博客來 - 總裁獅子心
博客來 - 御風而上:嚴長壽談視野與溝通

Google 推出 Google Maps API for Flash



Google 日前推出了 Google Maps API for Flash,採用的是 Actionscript 3.0,可將 Google Maps 加入 Flash 與 Flex 應用程式內。相信 Google Maps API 在 Flash 上將會有更有趣及更好的應用。

Google Maps API for Flash

相關資料︰
Google Maps API for Flash Demo
Official Google Maps API Blog - Introducing the Google Maps API for Flash

Google Maps API - 新增地圖控制項、地圖類型

‧地圖控制項

在使用 Google Map 時會有地圖縮放及地圖類型切換等控制項,這裡可以使用 GMap2 物件的方法 addControl(control) 來新增地圖控制項。

看範例所呈現的結果

如果要將已經存在地圖上的控制項移除,可以使用 GMap2.removeControl(control)


可使用的控制項如下︰

GLargeMapControl() 帶有可在四個方向平移、放大、縮小的按鈕,以及縮放滑塊的控制項。
GSmallMapControl() 帶有可在四個方向平移、放大和縮小的按鈕的控制項。
GSmallZoomControl() 帶有放大和縮小按鈕的控制項。
GScaleControl() 顯示地圖比例尺的控制項。
GOverviewMapControl() 可摺疊的迷你地圖控制項。
GMapTypeControl() 帶有切換地圖類型的按鈕的控制項。
GMenuMapTypeControl() 帶有切換地圖類型的下拉式的控制項。

‧地圖類型

在地圖類型切換控制項會出現那些地圖類型,是依據此地圖中註冊了那些地圖類型,預設已註冊 G_NORMAL_MAP、G_SATELLITE_MAP、G_HYBRID_MAP 等三個地圖類型,地圖類型顯示預設為 G_NORMAL_MAP,這裡可以透過幾個方法來做更改。

看範例所呈現的結果

在這個範例中更改了地圖類型註冊為 G_NORMAL_MAP、G_PHYSICAL_MAP,並將地圖類型顯示更改為 G_PHYSICAL_MAP。

GMap2.getMapTypes() 取得地圖中註冊的地圖類型陣列,這裡我用了偷雞的方法直接用 myMap.getMapTypes().length = 0; 將這個陣列長度設為 0,先將預設已註冊的三個地圖類型清除。

GMap2.addMapType( type ) 新增地圖類型,type 必須為已知的地圖類型 GMapType。

GMap2.setMapType( type ) 設定顯示的地圖類型,type 必須為已知的地圖類型 GMapType。

如果要將已註冊的地圖類型移除可以使用 GMap2.removeMapType( type ) ,所以上個範例也可以這樣做,如下。

可使用的地圖類型如下︰

G_NORMAL_MAP 地圖
G_SATELLITE_MAP 衛星
G_HYBRID_MAP 混合
G_PHYSICAL_MAP 地形

除了 Google Maps 所提供的四種地圖類型之外,Google Maps API 也允許使用者建立自己的地圖類型,這部份在往後會再做詳盡的說明。

參考︰
class GMap2︰addControl(control, position?),removeControl(control)
class GControl
class GMap2︰getMapTypes(),setMapType(type),addMapType(type),removeMapType(type)
class GMapType


更多教學文件在此︰Google Maps API - 前言及目錄

Google Maps API - 第一個範例在網頁嵌入 Google Map

在生成 Google Maps API Key 的頁面會看到 Google Maps API 的第一個範例,如下︰

看範例所呈現的結果

http://maps.google.com/maps?file=api&v=2&key=XXXXXX 其中 key= 後面就是你所取得的 Google Maps API Key。

<div id="map" style="width: 500px; height: 300px"></div> 用來擺置 Google Map,其中 style="width: 300px; height:300px" 則是指定地圖區塊大小。

GBrowserIsCompatible() 判斷 Google Maps API 是否可用於當前的瀏覽器中,如當前瀏覽器支援 Google Maps API 則回傳 true

var map = new GMap2(document.getElementById("map")); 宣告一個 GMap 物件,其中 "map" 就是先前用來擺置 Google Map 所宣告 div 標籤的 id。

map.setCenter(new GLatLng(37.4419, -122.1419), 13); 將地圖的中心點設定在經度 37.4419 和緯度 -122.1419,而 Zoom Level 在這範例中設成 13(1 為最大,數字越大 Zoom Level 越小)。在這或許會有個疑問,要怎麼知道某個地點的經緯度?可以利用 Google Map 找到要的地點固定在中間,然後按下『連結至此網頁』 URL 上就有該點的經緯度了,例如 http://maps.google.com/maps?ie=UTF8&ll=25.08532,121.561498&spn=0.291039,0.6427&z=11 紅字部分就是該點的經緯度。在往後的教學中會再介紹如何運用 Google Maps API 取得經緯度。

<body onload="load()" onunload="GUnload()"> 釋放 Google Maps API,在這要注意的是應在頁面的 unload 事件處理程序中使用此函數,不可在 Google Maps API 執行中使用。

參考︰
class GMap2︰setCenter(center, zoom?, type?)
function GBrowserIsCompatible
function GUnload


更多教學文件在此︰Google Maps API - 前言及目錄

Google Maps API - 前言及目錄

Google Maps API 發佈了好一段時間,目前已經發展到 2.0 的版本,讓我最開心的是 Google Maps API 提供了中文說明文件,雖然是簡體中文但是這已經足夠我們更容易閱讀使用了。

在這將陸續對 Google Maps API 的使用做一些經驗教學,你會發現這是多麼簡單的一件事情,而各篇教學也將會在這篇文中統一建立目錄以方便閱讀。

Goole Maps API 使用上有些法律上的限制要注意:


  • 你的 Google Maps 服務必須免費開放給一般使用者。

  • 如果你預估你的地圖服務會有超過每天 50,000 筆頁面的存取量,請主動聯絡 Google。

  • Google 會不定期更新 API,你有責任跟著更新你的網頁中的 API。

  • 你不能更改或隱藏 Google 的 logo。

  • Google 有權力以後在地圖上放廣告,而你不能更改或破壞這些廣告。

  • 有些地圖應用是 Google 不希望看到的,例如指明哪些地方可以購買到毒品或是任何違法行為。


這些限制我想一般簡單的應用都不太會觸及,目前為止,Google 也尚未在地圖上擺放廣告。

首先我們必須申請 Google Maps API Key,申請一個 API key

當您閱讀完 Google Maps API 的一些說明及使用條款後,勾選『我已閱讀並同意這些條款和條件』,並在『我的網址:』輸入你要使用 Google Maps API 的位址。如果要在 http://www.domainname.com/mysxite/xxx.htm 應該要輸入 http://www.domainname.com/mysxite/,那麼所取得的 Key 只對 http://www.domainname.com/mysxite/ 之下的頁面有效,也可以針對 http://www.domainname.com/ 來申請,如此在 http://www.domainname.com/ 之下的所有頁面都可以使用這個 Key,當然包含 http://www.domainname.com/mysxite/ 之下的頁面。最後按下『生成 API 密鑰』,將會在下個頁面取得 Google Maps API Key。

目錄︰

第一個範例在網頁嵌入 Google Map
新增地圖控制項、地圖類型
在地圖上新增標註
地圖座標定位
設定地圖控制項位置及自訂地圖控制項
標註管理器
自定地圖類型

更多教學將在以後持續新增。

相關資料︰

Google Maps API 參考文件
Google Maps API 使用條款
Google Maps API 範例

Google App Engine - 讓 Google 幫你 Hosting



Google 於美國時間 2008/4/7 推出 Google App Engine 服務,讓開發人員可以在 Google 架構上撰寫應用程式,而且可使用與 Google 應用程式中一樣的建置模組。

這意謂著開發人員透過 Google App Engine 所開發的網路應用程式將由 Google 代管,而開發人員也不用擔心系統使用量擴充或是系統維護的問題,因為 Google 都一手包辦了,等於是 Google 在幫你 Hosting。

你可以使用 Google App Engine 更提供的 SDK 來開發 Web Application, 目前提供的 SDK 僅有 Python 的版本,未來應該會提供其他更多的語言版本。

目前 Google App Engine 仍為測試階段,開放 1 萬名開發人員申請測試,在我申請的時候名額已經沒了出現以下訊息。

Thanks for checking in! When space in the Google App Engine preview release becomes available, we'll notify you by emailing xxxxxxx@gmail.com .
Don't worry--you don't have to wait to start building applications! You can get started now by downloading our SDK and reading through our documentation.



相關資料︰
Google App Engine SDK
Google App Engine Documentation
iThome Online - Google 測試 App Engine 應用程式代管服務
Wikipedia - Python
Python 教學文件

2008年5月17日 星期六

Google 網頁記錄

使用 Google 這麼多的服務,我的感想是 Google 服務就等於是個 Data 的服務,您不得不佩服 Google 的資料系統整合有多完善,以下為 Google 網頁記錄官方簡介。

Google 網頁記錄

有了 [網頁記錄] 功能,您將能夠:


  • 檢視和管理您的網頁活動。
    您曾在網路上看到一個很棒的網站,但現在卻找不到了? 從現在開始,您可以輕鬆找到瀏覽過的網站。 有了 [網頁記錄],您就可以檢視並搜尋您所造訪網頁的全文,包括 Google 搜尋、網頁、圖片、影片和新聞報導。您也可以隨時管理您的網頁活動並將項目從網頁記錄中移除。

  • 取得與您最相關的搜尋結果。
    [網頁記錄] 可根據您在 Google 上搜尋的內容以及您曾造訪的網站,來協助提供更多個人化搜尋結果。 一開始您也許無法發覺到這對您的搜尋結果有什麼重大影響,但是在您使用 [網頁記錄] 一段時間後,您的搜尋結果就會不斷改進。

  • 追蹤您網頁活動中有趣的趨勢。
    您經常造訪哪些網站? 您在早上 10 點到下午 2 點之間進行了幾次搜尋? [網頁記錄] 可以提供您這些問題的答案,以及您網頁活動上的有趣趨勢。

2008年5月16日 星期五

512 四川大地震

這我想就不必多說了,希望大家有力的出力、有錢的出錢。

Google Map 整合了一些訊息,由 Google 中國的員工維護,可以大略了解目前災區的狀況和規模。


查看大图

2008年5月7日 星期三

PHP - 產生 RSS/ATOM pubDate/created 所需格式

RSS 2.0 的規格,中提到 pubDate 內容發佈日期,日期時間的規格遵循 RFC 822 的標準。那麼在 PHP 是該如何產生這樣的日期格式 (RSS => pubDate, ATOM => created)。

PHP 有提供這些需要的日期格式相關全域變數可以使用(PHP 5.1.1 以後開始支援這些全域變數)。

如果是 MySQL timestamp/datetime format 可以直接使用如下︰


目前支援的日期格式全域變數如下︰


  • DATE_ATOM : Atom Atom ( 2008-05-06T23:51:08+00:00 )
  • DATE_COOKIE : HTTP Cookies ( Tue, 06 May 2008 23:51:08 UTC )
  • DATE_ISO8601 : ISO-8601 ( 2008-05-06T23:51:08+0000 )
  • DATE_RFC822 : RFC 822 ( Tue, 06 May 2008 23:51:08 UTC )
  • DATE_RFC850 : RFC 850 ( Tuesday, 06-May-08 23:51:08 UTC )
  • DATE_RFC1036 : RFC 1036 ( Tuesday, 06-May-08 23:51:08 UTC )
  • DATE_RFC1123 : RFC 1123 ( Tue, 06 May 2008 23:51:08 UTC )
  • DATE_RFC2822 : RFC 2822 ( Tue, 06 May 2008 23:51:08 +0000 )
  • DATE_RFC3339 : Same as DATE_ATOM ( 2008-05-06T23:51:08+00:00 )
  • DATE_RSS : RSS ( Tue, 06 May 2008 23:51:08 UTC )
  • DATE_W3C : World Wide Web Consortium ( 2008-05-06T23:51:08+00:00 )

PHP - 判斷潤年

有三種判斷方法,自己挑一個喜歡的吧。

function:

PHP - 字串空白處理

function:

測試:

輸出結果:

CSS 連結屬性 - LoVe, HAte

以往設定連結的 CSS,總是納悶為什麼某些屬性不會有作用,後來才發現原來要依照 a:link, a:visited, a:hover, a:active 的順序寫,不然某些屬性就不會有作用。

這個順序不好記嗎,您只要記得『愛』與『恨』﹙LoVe and HAte﹚,看出端倪了嗎。

說明︰


  • L : link 未瀏覽的連結

  • V : visited 已瀏覽過的連結

  • H : hover 滑鼠移到連結上

  • A : active 在連結上按下滑鼠


寫法︰

  • a:link, a:visited, a:hover, a:active { }

  • a:link { }

  • a:visited { }

  • a:visited:hover { }

  • a:hover { }

  • a:active { }