分類
好用軟體

中西曆轉換

這個是用來對中西曆轉換對照用的, 可以方便看西方何時, 對照東方的何時, 不過特別有意思的是中國的年號, 在位皇帝, 年號等資訊也可以可從這裡看見.

網址在這裡: http://sinocal.sinica.edu.tw/

這是中央研究院的兩千年中西曆轉換的網頁工具.

例如以東漢光武帝建武元年, 對應到西元的時間是西元25年, 可以利用下面的方式輸入:
按下上面的中曆轉西曆後, 就會產生如下畫面:

得到: 東漢光武帝建武年間 西元25年7月15日(星期日) ~ 56年5月3日(星期一)

如此一來就可以很方便地將中國朝代在位皇帝及年號等資訊查找出來, 也是一個很實用的工具.
再來試看看比較近代的清朝看看, 如清光緒帝:
清德宗光緒年間 西元1875年2月6日(星期六) ~ 1909年1月21日(星期四)

唐太宗呢? 來看看:
唐太宗貞觀年間 西元627年1月23日(星期五) ~ 650年2月6日(星期六)

真的還蠻實用的呢!

再來看看他的程式中記錄這些朝代, 皇帝, 年號等的資訊是在這支程式裡有記載: http://sinocal.sinica.edu.tw/empreigns.js
這樣就有一份整理很清楚的資料, 而且已經整理程式化了.

[2011/10/11 18:56]
從上面的資料來看, 年號最多的皇帝是唐武后, 也就是武則天, 共用了18個年號, 真的太厲害了, 常在改年號耶: 光宅,垂拱,永昌,載初,天授,如意,長壽,延載,證聖,天冊萬歲,萬歲登封,萬歲通天,神功,聖曆,久視,大足,長安,神龍.

分類
程式技術

YQL for flickr的問題

之前寫了一篇利用 YQL 查詢 setid 取出 flickr 中的照片功能: 利用YQL抓出Flickr相簿中的照片url

不過最近似乎是失效了, 檢查一下, 發現 YQL 只會回傳 flickr 的 api url, 而不主動回傳 photos 的內容, 訪問該 flickr api url:

http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&photoset_id={set_id}&page=1&per_page=10

會回傳:

<rsp stat=”fail”>
<err code=”100″ msg=”Invalid API Key (Key has invalid format)”/>
</rsp>

所以只好來去申請 flickr 的 api key, 才能查詢了. 不過這樣就不用透過 YQL 了, 直接向 flickr api 取出內容即可. 申請的網址在這裡: http://www.flickr.com/services/api/keys/ , (有分兩種, free 及 commercial 的, 請依開發用途申請即可) 申請好了之後, 可以直接從該 api 服務介紹來查找這個由 setid 找出照片服務, 不過已經知道由 YQL 給的 flickr api url 了, 所以再掛上 api key 就可以順利輸出結果了, 如下:

http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key={api_key}&photoset_id={set_id}&format=rest

輸出結果如下:

<?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
  <photoset id="72157600079438372" primary="460118008" owner="owner_id" ownername="owner_name" page="1" per_page="500" perpage="500" pages="1" total="18">
    <photo id="460118008" secret="4d856aaa72" server="239" farm="1" title="DSC_3989" isprimary="1" />
    <photo id="460125135" secret="15a3d24484" server="208" farm="1" title="DSC_3987" isprimary="0" />
    <photo id="460117456" secret="76bdfd928c" server="191" farm="1" title="DSC_3986" isprimary="0" />
    <photo id="460117112" secret="515535f02e" server="253" farm="1" title="DSC_3983" isprimary="0" />
    <photo id="460116928" secret="68286fc46a" server="200" farm="1" title="DSC_3981" isprimary="0" />
    <photo id="460116620" secret="4245ef4c5a" server="183" farm="1" title="DSC_3980" isprimary="0" />
    <photo id="460123637" secret="68351dfe14" server="236" farm="1" title="DSC_3963" isprimary="0" />
    <photo id="460123365" secret="80edceee74" server="243" farm="1" title="DSC_3961" isprimary="0" />
    <photo id="460115832" secret="80b8d482bf" server="246" farm="1" title="DSC_3958" isprimary="0" />
    <photo id="460122569" secret="2ee7c9e00e" server="242" farm="1" title="DSC_3954" isprimary="0" />
    <photo id="460122271" secret="074ba7710c" server="173" farm="1" title="DSC_3952" isprimary="0" />
    <photo id="460121955" secret="88a7b286b8" server="235" farm="1" title="DSC_3950" isprimary="0" />
    <photo id="460121519" secret="a5c2250e09" server="241" farm="1" title="DSC_3948" isprimary="0" />
    <photo id="460114100" secret="7dd0300dd6" server="199" farm="1" title="DSC_4000" isprimary="0" />
    <photo id="460120927" secret="c07c9eab50" server="189" farm="1" title="DSC_3997" isprimary="0" />
    <photo id="460120523" secret="5c00300368" server="191" farm="1" title="DSC_3995" isprimary="0" />
    <photo id="460120281" secret="affb220ee8" server="218" farm="1" title="DSC_3992" isprimary="0" />
    <photo id="460112878" secret="fcff8d8665" server="246" farm="1" title="DSC_3991" isprimary="0" />
  </photoset>
</rsp>

如此一來, 又能順利正常工作啦, 網址不變, 仍在這裡: http://sample.diary.tw/flickrset/

分類
好用軟體

Firefox7來了-更快

這次 Firefox 7來了, 感覺的確有更快, 那之前說的快是怎樣?!

Firefox 7的更新, 似乎又更短的更新週期了, 好快又跳下一個版本, 真是驚人的速度啊, 不過這次升級上來, 好多 extension 又不能用了, 還好 Firebug 有 1.8.3 支援, 沒有問題, 但還有蠻多不能用的, 希望能快點跟上來才好.

話說回來, 這次的更新, 明顯有感覺變快不少, 希望能愈做愈好用, 加油.

分類
程式技術

XPath學習

在解析 xml 資料時, 若只是取出一些固定欄位資料, 除了用 regular expression 或是指令字串比對方式外, 利用 XPath 來操作算是比較正規的作法.

有效利用 XPath 可以快速地選擇到需要查詢出來的資料, 而且更正確更有效地取出資料. 例如想要取出下面資料(bb.xml):

<root>
  <app>
    <name>test1</name>
    <tick>20</tick>
    <pt>12</pt>
  </app>
  <app>
    <tick>test2</tick>
    <value>32</value>
    <pt>15</pt>
  </app>
</root>

若要取出的是 app name=test1 的資料, 並讀出 value 的方式, 可以如下操作(以asp/vbs為例):

Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")

xmlhttp.Open "GET", "http://localhost/bb.xml", False
xmlhttp.Send  

Set root = xmlhttp.responseXML
Set app = root.selectSingleNode("//app[name=""test1""]")
Set tick = app.selectSingleNode("//tick")
Response.Write tick.text

也就是利用 XPath 的 //app[name=”test1″] 來取出 app node 內容有 name 值是 test1 的 node 出來, 之後再利用 //tick 將該 node 下的 tick node 取出, 再用 text 讀出該值為 20.

若只需要取出 value 的值, 而不是要將 app node select 出來使用, 可以一行搞定, 如下:

Response.Write root.selectSingleNode("//app[name=""test1""]//tick").text

這樣操作很快也很有效, 而且可以找對各節點的關連關係. 在操作 xml 時, 得要好好學習的一個工具.

參考資料:
http://www.w3schools.com/xpath/xpath_syntax.asp
http://zvon.org/xxl/XPathTutorial/General/examples.html
http://msdn.microsoft.com/en-us/library/d271ytdx.aspx

[2011/9/16 17:23]
補充若有 xmlns (xml namespace) 的狀況下, 取不出 node(s) 的問題:
http://www.dotblogs.com.tw/rainmaker/archive/2011/09/16/36457.aspx

分類
好用軟體

Firefox6的檢視原始碼功能

快快升級到 Firefox 6 後, 發現檢視原始碼功能不見了, 原本在 “檢視” 選單下的 “頁面原始碼” 消失了, 先來看看在 Firefox 5 的檢視功能表內還在的 “頁面原始碼”:
但在 Firefox 6 下, 這個功能不見了:
雖然有快速鍵 Ctrl+U 可以快速叫出來, 不過還是得來找看看到底跑到哪裡去了, 原來是放到”工具” 下的 “網頁開發者” 下的 “頁面原始碼”, 如下圖:

真是的, 藏在這麼裡面, 真是不太方便啊, 看來之後得用快速鍵 Ctrl+U 來叫出可能會快一些了, 不然藏得如此深的地方, 光要去點到, 都要花一點時間.

不過也可能是讓不是做網頁開發的人少點麻煩, 從檢視中移出來吧.

相關閱讀:
http://por.tw/Website_Design/index.php?load=read&id=67

分類
好用軟體

好快又升級的Firefox6

現在 Firefox 拼了命的升級, 奇怪耶, 又沒有多大的功能改善, 主版本號一直往上跳, 這不是個好現象吧. 雖然說這是一個持續在前進的軟體專案, 不過這樣跳躍式的版本號大躍進, 似乎是想證明我們很積極地在改善及進步.

今天的 Firefox 5 提出了要升級到 Firefox 6 的升級通知, 於是就順手升級上來, 不過又是有一些 plugin 不能用了, 看看有沒有它宣稱的速度變快.

分類
Database

FreeBSD上mysql的效能追蹤

最近因為有台主機的 mysql cpu 異常變高許多, 所以要來進行查詢問題所在.

因為 mysql 沒有像 mssql 的 sql profiler 那麼方便的工具, 所以利用 mysql 本身的 log 來進行, 也就是 slow query log 這個功能, 步驟如下:

1. 先將 /etc/my.cnf 中的 [mysqld] 內多加入下面資料:

log-slow-queries = /var/log/slow-query.log #slow query記錄檔的位置
long_query_time = 2 #query執行超過2秒時才記錄

2. 重啟 mysql 服務, 指令如下:

/usr/local/etc/rc.d/mysql-server restart

3. 執行一陣子後, 就可以看看該 log 檔內的 query , 接下來就是針對這些 query 來調整效能

以上是在 FreeBSD 環境下的作法. (其他環境其實也類似)

其實執行時間長不一定是效率不好, 不過若是常常發生的查詢是需要長時間的, 就有改善的必要, 簡單地說, 就是若一個查詢需要 5秒, 但一天跑不到 10次, 那根本不用管他, 不過若一個查詢需要 0.02 秒, 但一天要用到數萬次, 即使從 0.02 改善到 0.015 就會有很明顯的效能改善, 所以要看發生的頻率及所花費執行的時間, 平衡來看.

另外, 若是該 log 沒有產出, 記得權限要給對, 因為是 mysql service account 去執行寫入的動作, 就算沒有任何 log 也會有 mysql 啟動的資訊, 不會沒有任何產出的 log.

參考資料:
http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
http://blog.lansea-chu.com/index.php/archives/238
http://homeserver.com.tw/mysql/mysql%E7%9A%84%E6%9F%A5%E8%A9%A2%E6%99%82%E9%96%93log-slow-queries/
http://ezkuan.blogspot.com/2010/05/freebsd-mysql.html

分類
好用軟體

WEB版Google地圖街景導航

這個是個蠻好玩的應用, 由於全台的街景服務已經有蠻大的覆蓋率了, 所以用這樣的方式來模擬導航駕駛, 相信會讓不熟地址路況的人更容易上路.

這個算是整合 google maps api 出來的一個應用, 網址在:

http://gmaps-samples.googlecode.com/svn/trunk/streetview/streetview_directions.html

進來之後, 其實也就是簡單地輸入出發地地址, 目的地地址就可以按下 route 產生導航, 並利用 drive 按鈕來模擬駕駛的街景.

例如輸入台北市政府到總統府地址, 台北市市府路1號, 台北市重慶南路一段122號, 按下 route 後, 產生如下畫面:

接下來可以點 driver 或是右下的導航點, 都可以更新上方的街景到所在位置, 也可以直接操作上方的街景, 來進行前後移動(如原來的 street view一樣的操作方式), 這樣就可以模擬了.

嫌開的速度太慢? 可以調整一下 speed 到 fast 會快一點, 不過這個導航是個安全駕駛, 所以即使是 fast 也還是很慢!

分類
好用軟體

線上學習科學的互動活網站PhET

這篇文章要介紹的是一個 PhET 線上教學網站.
以往我們在學習物理, 化學, 地球科學等科學時, 看文字教材遠不如看影片或是互動活教材, 這個網站提供了線上(也有離線版本), 分門別類整理好的互動式活教材, 而且還有繁體中文. 先來看看首頁:

http://phet.colorado.edu/zh_TW/

開始用就直接按下”開始玩教學”, 若是要下載離線版本可以點右下方的”完整執行”後, 即可下載教學離線版本. 由於所有的教材都是使用 flash 及 java 在瀏覽器環境下使用, 所以可以很方便地在各種作業系統及瀏覽器上使用, 方便又好用.

點入開始玩教學後, 左邊看到的是完整的分類, 右邊則是目前分類項目的內容(預設在最新):
而且還有區分年級的方式整理, 讓小朋友也能找到適合的教材, 點下”依年級區分教學主題:
有區分為國小, 國中, 高中, 大學幾個分類, 來點個國小的看看吧, 選了裡面的”繩波”:

繩波的連結: http://phet.colorado.edu/sims/wave-on-a-string/wave-on-a-string_zh_TW.html

用互動的方式來呈現的教學, 相信最容易也記憶最深, 大家可以好好利用, 趁暑假, 可以讓自己或小朋友多學一些科學觀念.

繼續閱讀:
http://blog.soft.idv.tw/?p=989

分類
好用軟體

Firefox5來了

是的, Firefox 5 來了, 記得沒多久前才 Firefox 4, 而且也就才 4.0.1 而已, Firefox 5 已經於之前更新的 Firefox 4.0.1 上提出新的版本更新提示, 於是又再更新到 Firefox 5, 目前的版本是 5.0

不知道為什麼更新的這麼快, 而且這次更新的主要功能似乎不多, 或許是希望能藉由更新版本數字來活絡一下這個社群持續的求新求快求變的特質吧.

但是這次更新, 有一些 plugin (或稱 extension) 又不能用了, 像是 google 的 toolbar 就是個列子, 不過這些小問題應該很快會獲得解決.

隨著瀏覽器版本的更新, developer 們與 designer 也就必須快速地來適應這個相容性的考驗, 不過也正因為如此, 也讓標準能更標準, 大家能依循著標準來開發及設計, 這樣也是件好事!