分類
Blog服務

SiteTag專注在tag服務的網站服務

同事轉來一個 sitetag.us 的連結, 於是試著加入到網站上, 以取得一些更進階的關鍵字資訊. 一方面來研究一下它的做法, 另一方面也來看看加入他的程式碼後, 看 user 來這個網站時所帶入的關鍵字為何.

我們先來看看結果: 連結

它將站內文章的”連結”和 tag 都條列出來, 也可以讓站長很清楚的知道訪客是透過什麼關鍵字連結進來, 而且也可以有效地分析及了解最近的熱門關鍵字. 對於 blog 網站站長來說可以更進一步地了解自己的網站到訪狀況.

接下來看看它的程式做法, 我們可以藉由觀察它引入的 javascript 來看看, 該程式碼利用 document.referrer 來取得每個網頁的來訪參考 (referrer), 接著再進行這些來訪參考的字串分析, 不過分析的部分並不是在 javascript 做的, 應該是在 server 端做的, 而 client 做的部分就是將 client 端的一些資訊串起來, 並且將這段 javascript 函數再串回 script src 的方式, 利用 script src 將這些資訊回傳給 track 的服務主機: track.sitetag.us , 來進行進一步的分析.

另外也提供了一些小工具用來呈現這些 tag, 例如:

不過這個服務應該還有再發展的目標, 也就是繼續結合一些商業上的應用價值, 來發揮這個有趣的應用.

 

分類
數學

恆河沙乘以不可思議減無量加大數除以阿僧祇等於多少?

從這裡看來的一個怪搜尋字: http://sinwen.com/?p=1300
若你在 google 上輸入的話會有這樣的結果:

((恆河沙乘以不可思議)減無量)加 (大數除以阿僧祇) = 1.0 × 10^116

很妙的答案吧. 我們來看看這些數字算出來的結果是怎麼樣的:
恆河沙: 10^52
不可思議: 10^64
無量大數: 10^68
大數: 10^72
阿僧祇: 10^56
這樣計算一下: ((10^52 * 10^64)-10^68) + (10^72 / 10^56) = (10^116-10^68) + 10^16 = 10^116
也就是前面的恆河沙乘不可思議就是結果了, 後面的兩個小數字都不影響計算的結果.

所以在 google 上輸入: 恆河沙乘以不可思議等於多少

分類
手機大未來

Deepfish-好炫的瀏覽器

手機上的瀏覽器真的不能很炫嗎? 不能比較像 pc 的瀏覽器那樣一次看到整個版面嗎? 若希望能有更好的瀏覽經驗, 使用 windows mobile 的用戶們一定要試試這個 Deepfish, 不過這個還在實驗室 (labs.live.com) 的 Deepfish 目前不公開對外下載, 若想要測試看看的朋友可以到這裡下載: Deepfish .

接下來就看看他的特異功能了: 我們到 yahoo 首頁, 得到的畫面:

分類
手機大未來

手機上網方便檢視網頁的服務

用手機上網已經是在沒有電腦時常用的工具之一, 不過手機雖然也有瀏覽器, 不過在閱讀資料時, 若是網頁沒有針對手機這種設備做一些頁面的規劃及調整, 根本很難用手機檢視.

不過在用手機時最常用的 www.google.com 中也有手機版本的 ig 也就是個人化介面, 其中特別的地方是在於他在自訂的訂閱對外要連結出去其他 google 外部網站時, 會帶著一個貼心的服務, 就是特別為手機檢視時使用的 google 重新整理好的網頁內容.

簡單地說, 就是將網頁上的內容, 將大多數的 css 及圖片做整理後, 再區隔成適當的分頁, 將網頁製成適合手機瀏覽的結果, 舉個例子, 原本的一個 udn 網站上的內容: http://udn.com/NEWS/FINANCE/FIN2/4183633.shtml 透過手機來看是長這樣:

google圖書搜尋

今天發現 google 圖書搜尋, 找了一下資料, 原來去年的3月就上線了, 簡單查一下資料, 發現還不錯用, 可以找到不少資源 (我找的大多是電腦圖書啦), 而且也有提供線上閱讀的功能(部分), 可以容易地讓想買書的讀者先大略看一下內容, 對於找書的 user 來說是蠻方便的工具.

不過目前大多書的線上書局都多有提供摘要及介紹, 所以其實 google 圖書應該著重於跨出版社, 跨時間的(舊書)等的搜尋應用, 若是線上(這裡說的線上是指目前正在發行的書, 也還有出版在賣的書)的書籍, 其實一般的線上書局都有得找.

相關連結:
http://informationlit.blogspot.com/2007/11/150.html
http://www.wretch.cc/blog/arshloh&article_id=13926715

 

分類
.net

StringDictionary強制型別字字典class

在 .NET 裡有個內建的 Hashtable (System.Collections.Hashtable) 可供做 Key/Value Pair 使用, 不過若是要再增加效能, 可以考慮使用 StringDictionary 強制型別字串對照字典, 名稱空間是在 System.Collections.Specilized.StringDictionary . 使用強制型別可以有效提升效能, 原本的 Hashtable 是可以存放 object / object 的方式, 當然也可以存放 string / string , 但總是多了 object 與 string 間的轉換, 而且也容易放錯資料進去, 若是有強制型別的 StringDictionary class 來存放這樣的資料, 在型態上及在效能上都能有效提升.

該 StringDictionary 的使用方式請參考: MSDN Link

其他相關的資料可以參考 Hashtable, 泛型的 Dictionary, 泛型的 KeyValuePair,

其中泛型的 Dictionary 就是利用 Template 進行 Dictionary 的宣告, 讓 Dictionay 的存放資料的型別為指定的型別, 例如:

Dictionary<string, string> dicData = new Dictionary<string, string>();

dicData.Add("a","apple");
dicData.Add("b","banana");
分類
Database

利用CTE將分頁資料取出-Stored Procedure篇

之前在 用CTE來取出指定筆數 – SQL2005 這篇介紹了如何利用 CTE 來取出指定的筆數, 這篇文章將進一步實作一支 stored procedure 做為方便分頁的方式.

主要是為了方便取出指定的筆數來實作的, 所以傳入的參數很單純, 就是原本的查詢指令, 將查詢及排序條件分開, 並指定開始的索引值和結束的索引值即可, 建立的程式碼如下:

create proc sp_getRecordByCTE 
@sqlcmd nvarchar(4000),
@ordercmd nvarchar(1000),
@startindex int,
@endindex int
as
declare @mycmd nvarchar(4000)
select @mycmd = '
with myctequery as (
select row_number() over ( ' + @ordercmd + ' ) 
as CTESN, '+replace(@sqlcmd,'select ',' ')+' )
select * from myctequery 
where CTESN between ' + convert(nvarchar,@startindex) + ' and '+convert(nvarchar,@endindex) 
exec sp_executesql @mycmd

其中比較特別的是為了方便輸入起見, 只要將原來查詢指令的非排序部分和排序部分分開即可, 簡單範列如下:

原來的查詢是:

select a.orderid, a.orderdate, b.custname, b.custaddr from orders a inner join cust b on a.ordercustid = b.custid order by a.orderdate desc

利用上面的 stored procedure 做指定分頁的筆數若為 51~100 (每頁50筆的第二頁), 先將指令區分為紅色查詢及藍色排序, 並且如下輸入給 sp_getRecordByCTE:

exec sp_getRecordByCTE
'select a.orderid, a.orderdate, b.custname, b.custaddr from orders a inner join cust b on a.ordercustid = b.custid',
'order by a.orderdate desc',
51,100

便能將指定的分頁第二頁(51~100)這些資料取出, 這樣和使用 ADO 分頁比較, 不僅可以降低 network IO 外, 更能在複雜查詢時提升效能, 減少不必要的資源浪費, 對於網頁分頁使用時有很大的幫助. 不過目前尚有一個問題無法解決, 就是總筆數這個部分, 因為利用 ADO 查詢時, 可以取得總筆數這個資料, 利用這個 stored procedure sp_getRecordByCTE 將無法取得這個資訊, 看是否有沒有什麼好方法來做這個資料的取得及回傳, 若各位有什麼好建議也歡迎給我建議!

希望這個 stored procedure 對各位能有所幫助.

繼續閱讀:

分類
好用軟體

U3.com隨身碟軟體

看了 monday 購物的廣告, 發現有一個還蠻有趣的軟體, 是 sandisk 隨身碟附贈的 u3, 可以到 www.u3.com 看看. 雖然這種軟體之前也有出過類似的, 不過這次考量得更完整, 除了原來隨身碟就有的功能外, 還可以將檔案同步, 安裝軟體(至隨身碟上), 記錄工作環境(方便於其他人的電腦上執行自己的工作), 這樣方便的工具, 令人很想試看看, 查了一下最便宜的就是這支了, “SanDisk New Cruzer Micro 1GB 新麥可碟”, 才299一支 (連結), 該軟體的介紹如下:

SanDisk 以全新的設計風格融入U3智慧型新麥克碟中,首次以U3 Launchpad獨特行動平臺概念,輕鬆使用內建U3軟體:CruzerSync synchronization tool U 盤同步化程序/ SignupShield password manager密碼管理員/SKYPE voice over IP software SKYPE軟體/AVAST virus scan 掃毒軟體等。並且方便攜帶個人資料和在www.u3.com下載的U3應用程式,將會顛覆以往對於隨身碟只能當隨身聽或是行動相簿等等的附加功能印象。

這種將附加價值大幅提高的軟體還真該人想試看看, 參考下面兩則影片, 相信能更了解:
廣告, 使用介紹. 其實不難想像這類的應用, 若是能整合的完整, 相信對於使用者來說會是相當方便的, 雖然我們也很清楚未來工具會慢慢地往線上應用發展, 利用瀏覽器來操作, 但不可避免的仍有些相當需要資源的軟體仍需要以桌面應用程式方式操作, 這樣的商品整合應用, 將會有相當大的好處, 再看看 u3 的軟體整理 (連結), 應該會覺得這個軟體應該還有蠻大的發揮空間, 再加上 u3 也提供了給廠商開發軟體使用的 api, 這樣對於要在 u3 上發展應用程式的軟體供應商也給了一個方便的管道, 形成了一種良性的發展.

http://www.3u.com/images/smart/launchpad2.jpg

有興趣的朋友可以透過此 連結 購買, 或下方的推薦商品進行購買. 若需要其他容量的也可以透過下面連結購買:

Sandisk Cruzer Contour 4GB 旗鑑級隨身碟 Sandisk Cruzer Contour 8GB 旗鑑級隨身碟
SanDisk New Cruzer Micro 4GB 新麥可碟 SanDisk New Cruzer Micro 2GB 新麥可碟

相關文章:
http://www.everythingusb.com/u3.html
http://slammerb.spaces.live.com/Blog/cns!7C4C09C802323BAF!202.entry

[2009/1/5 1:30]
最新 monday 有 16GB 版的促銷, 請參考:
SanDisk New Cruzer Micro 16GB 新麥可碟

分類
.net

C#判定BIG5字碼的方式

繼上一篇 如何在ASP內判定BIG5碼中文字 之後, 再來整理一下在 ASP.NET C# 中判定 BIG5 碼的方式, 其實方式一樣很單純, 不過不需要利用到轉碼的 code page, 只需要利用 System.Text.Encoding 即可順利判讀, 程式碼如下:

Boolean IsBig5(string strOne)
{
    Boolean bIsBig5 = false;
    byte[] ByteArrayBig5 = System.Text.Encoding.GetEncoding("big5").GetBytes(strOne);
    if (ByteArrayBig5.Length == 2)
    {

        //check A440~C67E 常用字, C940~F9D5 次常用字 

        //42048~50814, 51520~63957            
         
        int iCode = ByteArrayBig5[0] * 256 + ByteArrayBig5[1];
        if ((iCode >= 42048 && iCode <= 50814) || (iCode >= 51520 && iCode <= 63957))
        {
            // chinese char big5 
            bIsBig5 = true;
        }
    }
    return bIsBig5;      
}

利用了 Encoding 的 GetBytes 方式, 取出在 strOne 中的一個字元, 並判定是否為 2個 byte 後, 一樣利用了原來的判定方式, 若落在對應的區間內, 就可以判定為 BIG5 字元集內的字了!

google documents presentation不錯的簡報功能

google 線上 documents 是一個類似 office 的功能, 而又全部在線上完成的跨平台 office 軟體, 簡報功能強化了線上發行及線上直接做”簡報”, 這個功能可以很方便地讓使用者在線上製作簡報後, 再進行發佈, 並在線上進行簡報.

發佈後的簡報文件, 可以透過單一連結進行發佈給其他人觀看並加入簡報過程, 相信這將會是十分方便的功能, 製作了一個測試的簡報, 連結如下:

http://docs.google.com/Present?docid=dhcdp9kg_1hdw9xt

當多人同時進入時, 可以同時利用 ajax 的聊天室介面進行簡報, 並且可以由簡報者取得簡報控制權進行簡報, 不過由於沒有聲音, 所以簡報進行中僅能以文字方式進行, 不太像一般的簡報, 不過這樣方便的功能, 看起來加入語音可能是遲早的事了.

雖然功能有些限制, 不過這樣線上的免費文件及簡報編輯器和線上發佈簡報的功能, 真的是很方便呢!

ps. 另外也將之前文章: gmail支援線上播放powerpoint?! 附的 1.ppt 上傳上來並發佈試看看:
http://docs.google.com/Present?id=dhcdp9kg_3fczsrq

相關閱讀:
gmail支援線上播放powerpoint?!