分類
Database

用CTE來取出指定筆數 – SQL2005

SQL2005中有個CTE (Common Table Expression)功能十分強大, 可以用來做遞迴式的參考, 藉以達成複雜的查詢邏輯並簡化查詢指令, 是 SQL2005的一個新的重要功能.

在使用 MySQL 時, 可以容易地利用 limit m, n 的語法進行指定筆數的取得, 然而在 SQL Server這裡一直沒有這種功能. 這樣的需求通常是應用在分頁上會用到. 不過SQL Server可以利用 ADO存取方式內的分頁方法來進行, 也就避開了這個問題. 但無論如何, 仍是將所有的資料帶到查詢端(如客戶端或是中間層)後, 再進行分頁, 效能仍然不佳.

分類
Database

方便好用的Database Mail – SQL2005

有在用 SQL 2000的使用者還記得 SQL Mail吧. SQL Mail是利用MAPI的方式進行mail的傳遞, 在實務上往往會使用outlook配合exchange server來進行環境的建立, 也造成在使用SQL Mail前, 要準備好這些環境. 但在一般的應用上, 要使用SQL Mail, 又要有這些環境, 不見得很容易實現. 另外再加上SQL Mail在cluster環境時, 也要注意兩台的MAPI profile的設定, 才不會發生發不出mail的問題.

是的, 你的不方便, MS都知道, 到 SQL 2005後, 你會發現多了一個 Database Mail 的功能, 本篇文章就是來介紹這個方便又好用的 SQL Server發信方式. Database Mail 是基於 SMTP的方式來寄送信件, 所以很容易設定, 不太需要像 MAPI 需要 outlook 介面及 exchange server 配合寄送, 當然還是要建立 profile, 好讓 SQL Server 明白你要發信的帳號. 不過因為是走 SMTP, 所以設定也就容易多了. 而且 Database Mail 是能完全支援 cluster 的(因為是用 SQL Server 的機制, 而非外部的資源).

HEMiDEMi影片瀏覽功能上線

HEMiDEMi 今天在 login 的時候發現有個 video 區可以直接瀏覽 video功能. 於是點入來看看, 發現可以直接將 embed 語法嵌入, 其實也就是將 youtube, google video 的 embed 語法再利用一個欄位存入, 方便大家在線上收視這些內嵌的影片.

不用離開黑米就能預覽影片?!

Flickr geotagging功能上線囉

Flickr 我沒用過!

但我看過不少 Flickr 的圖片及用戶, 等我有空, 我一定要來玩看看.

Flickr 幾天前推出了 geotagging, 也就是利用了地理資訊來做為圖片的標籤. 之前有 blog 結合地理資訊的應用, 現在 Flickr 推出了這樣的一個服務, 相信對於圖片的提供者來說會是非常實用的一項功能. 藉由這樣的功能, 可以輕易地將圖片的拍攝位置利用地圖來表達, 相信這會是最容易讓人了解的一個方法. 反過來說, 也就是讓閱讀者能 “身歷其境” 的感覺增加了.

vlog 2.0上線囉

vlog 2.0 於 9/1 上線了. http://www.im.tv/vlog

不同於 youtube, vlog 2.0 beta 已有相當多的功能是用來建立社群的概念, 基本上, 要能有效黏著使用者是很重要的社群經營手法, 如何能有效黏著使用者? 可以從使用者習慣及方便性來著手, 另外增加成就感也是很重要的, 服務品質, 影音品質, 好友等都是重要的元素. 還有增強了不少使用者方便的功能, 利用了 web 2.0 常用的 ajax 技術, 也更增加了可用性. 使用者可自訂 layout, 自訂個性主題等, 也都相當引人入勝.

再來看一個很重要的功能, 家族, 在 vlog 2.0 beta 中, 家族相信是一個讓人與人及人與家族聚合的一個重要做法, 將原來拆散的一支一支影片(像 youtube), 變成一個人的多支影片(vlog 1.0), 又變成為多人的多支影片, 用家族的方式相信是相當恰當的. 有效地將個人影像庫, 轉變為家族或伙伴的影像庫, 集合眾人的力量來完成同質的影片集結. 從中間也可找到同好, 相信這對社群經營來說是很重要的一項功能.

另外像是 tag 功能, tag cloud 呈現, 留言次, 收藏次, 熱門(到訪), 評分(rank), 而且依日, 週, 月, 全部等方式, 將會有效幫助使用者在茫茫影像海中找尋影像.

不過目前仍在 beta 版本, 似乎還有部分 bug 及邏輯問題尚待修復, 也希望能愈做愈好, 謝謝 vlog 這樣的網站提供如此方便的服務, 也希望大家多多利用, 讓國內的最大影像庫能愈做愈棒囉!

繼續閱讀: vlog, youtube, google video
相關文章: http://www.x2y2.com/fisker/archives/06.09.02-vlog-2.0-beta.htm

分類
程式技術

XML/SWF Charts好用繪製圖表組件

同事給了一個連結, 看到了 www.maani.us 上有個 XML/SWF Charts的繪製圖表的組件, 介面很不錯, 而且又有動畫效果, 於是就來試試看.

這個網站上有多組套件可用, 這次針對 XML/SWF 進行安裝試用, 他的安裝很容易, 就下載放到 web server 上即可, 而 data 的內容可以拉 xml 的檔案, 或是 asp/php/cfm/cgi 等可輸出的網頁皆可. 內容不難實作, 格式如下:

分類
Javascript 懶得分類

再探AJAX – 簡單小範例

利用原來的文章: https://diary.tw/archives/274 撰寫了一個更容易測試的 html 範例, 一則以測試同步及非同步, 另一則了解在IE及FF的 AJAX Callback 的差異.

幾件事情要特別小心:

1. browser cache:
在做 AJAX Callback 時, 若是 server side 程式不強迫 client side browser 不 cache 時, IE 會發生 callback response cache 的行為, 這個會讓 AJAX 取得的回應發生問題, 當然有多重方法可以解決, 在 FF 就沒有這種現象. 比較單純而又通用解決方法就是在 callback url 上動手腳, 和一般解決 cache 的方法相同, 這裡利用了 javascript 的時間戳記來將 url 變成每次都不同. 一般的實作方法有兩個, 一個是用 Date.parse(new Date()) 方法, 但時間比較不精確(每次取回的值最後三位皆為 000, IE, FF皆同), 另一則是 (new Date()).getTime() 似乎比較精確, 這兩個方法都是傳回從 January 1, 1970, 00:00:00, local time 開始的 milliseconds. 當然, server side 加不加上 cache control 的 header 就比較不影響了, 因為每次 browser 就會乖乖地來 request.

令人驚豔的Moodle

CMS – Course Management System

今天在逛網站的時候, 偶然看到一個線上教學的網站, 叫做Moodle, 想說看看做的怎麼樣, 結果發現 Moodle 是一個 open source 的 web-based CMS, 真不得了了, 把線上教學的這類應該在網頁上實現, 而且功能似乎還不少.

分類
Blog服務

新加入FAV功能

加了HEMiDEMi後, 又再加入了 del.icio.us 及 Technorati.com 的加入書籤功能, 利用原來的 TAG 上面, 同時放入了 HEMiDEMi, del.icio.us, Technorati 三種書籤系統的新增.

其中 HEMiDEMi 及 del.icio.us 的引述都可以利用選取原網頁反白處自動將引述帶入加入書籤的連結內(不過此欄位是非必填項目), 另外 del.icio.us 還 support 帶入 tag 的功能, 不過想要在 tattertools 上將文章的 tag 帶入, 若只在 skin.html 上著手是有困難的, 因為既無法拿到 tag div 的 id, 更不用說解析內容後再帶入新增書籤功能頁面, 看之後還有沒有時間研究這段, 可能的話再試試看囉!

分類
懶得分類

新增HEMiDEMi文章加入書籤功能

今天才發現 HEMiDEMi 有個將網頁加入HEMiDEMi書籤的功能, (其實是從這個網頁發現的: http://blog.yam.com/syshen/archives/1410294.html), 於是就著手加自己的文章, 利用 HEMiDEMi來加點人氣, 並方便用戶收藏.

連上HEMiDEMi選右上角的[工具], 再選[小貼紙產生器]後, 即可進行小貼紙的產生, 由於它沒有直接 support TT 的 blog 語法, 所以就選其他囉, 不過奇怪的是其他的 href link 最後是 void((URL))這樣的語法, 想說是不是什麼新東東, 自行先測試發現並不會發生連結的結果, 於是就先手動改一下, 並改為用 onmousedown方式(不用onclick原因如後), 產生放在 TT 上用的 HEMiDEMi 的語法, 如下:

<a href=# target=_blank  onmousedown="desc='';via='';if(document.referrer)via=document.referrer;
if(typeof(_ref)!='undefined')via=_ref;
if(window.getSelection)desc=window.getSelection();
if(document.getSelection)desc=document.getSelection();
if(document.selection)desc=document.selection.createRange().text;
this.href='http://www.hemidemi.com/user_bookmark/new?
title='+encodeURIComponent('[ ##_article_rep_title_## ]')+'&url='+
encodeURIComponent('https://diary.tw[ ##_article_rep_link_## ]')+
'&description=
'+encodeURIComponent(desc)+'&via='+encodeURIComponent(via);
return true;" ><img src="http://www.hemidemi.com/sticker/clipcolor_8015.gif" border="0"></a>

(以上的 onmousedown 的 javascript 皆無斷行, 因排版需要有略做調整, 另外TT為避免衝碼, 也將 [ ] 和 ## 間加上了空白, 另外 onclick 會有 selection focus 消失問題(在 IE 下不會), 而取不到 desc, 因為原來設計的引述功能只要反白就會自動帶出哦, 所以改用onmousedown來取得, 方便在產生 HEMiDEMi 標籤時, 帶出使用者反白的引述, 可參閱文章: http://www.quirksmode.org/js/selected.html)

其實重點在於最後的 http://www.hemidemi.com/user_bookmark/new 後面要帶一些東東, title, url, description, via, 分別是加入書籤的[標題](必填), [網址](必填), [引述](非必填), [referer](未出現在畫面上, 應是要做某種分析用), 上面的 javascript 對於 desc 及 via 兩個變數用了相當多的語法來產生, 尤其是 desc, 因為用 desc 所以code會比較大一些, 相對於client side也有一些code的下載負載.

另外採用 anchor + target=_blank 的語法就可以避開 browser 因 window.open 造成的阻擋.