今天在 Blogger Hacked 發現一個超棒的東西叫作AJAX Labels,也就是之前 [Blog] Peek-A-Boo view of posts in label pages 的改良版,利用 AJAX/JSON 的技術,大幅提升Blog的更新速度,效果就像此圖中所表現的(建議還是試著點圖中的"AJAX Tas Cloud"才能親身體驗「真的快、好厲害」),感謝作者Deepak分享(very Awesome!)資料來源:
接下來開始翻譯(...XD)安裝步驟:
Blogger Hacked: AJAX Labels
Step1:若要此hack能夠正常運作的話,你必需在你的Blog裡使用"Prototype Javascript Library",你可以到官網自行抓一份,放到你的空間中 或者懶得話拿我的去用也無妨..^^(畢竟是Google提供的空費空間),所以到必需在你的Template中新增底下code (放置於<head>...</head>裡頭)<script src='http://chenkaie.googlepages.com/prototype.js' type='text/javascript'> </script>
<script src='http://chenkaie.googlepages.com/scriptaculous.js?load=effects' type='text/javascript'/>
Step2:接著新增核心部份程式碼,將底下連結中的程式碼仿Step1.同樣加到<head>...</head>裡頭,裡頭CSS請依照您個人喜好修改,細項說明,請參考原著解說!CSS Code & Javascript code:
http://bloggerhacked.googlepages.com/ajaxlabelsscript
Step3:在你的Template中找到底下片段,有一樣的全都要修改(若不改的話,就是原本Blogger提供的效果)
將上面紅色部份,取代成底下:<a expr:href='data:label.url' rel='tag'><data:label.name/></a>
<a expr:href='"javascript:getCat(\"" + data:label.name + "\")"' rel='tag'>
Step4:若你原先有裝Labels Cloud的話(沒有請跳到Step5.)資料來源:
若要將點擊Labesl Cloud所呈現出的效果也修改成AJAX Labels的樣式的話,請將底下:
phydeaux3: Blogger Beta Label Cloud Update
phydeaux3: Code for Beta Blogger Label Cloud<a expr:href='data:label.url'><data:label.name/></a>
修改成底下的樣子<a expr:href='"javascript:getCat(\"" + data:label.name + "\")"' rel='tag'><data:label.name/></a>
Step5:新增一個"HTML/Javascript" Page Element放置於"Blog Posts" Element的上面(可隨個人喜好修改),裡頭的code如下(和原作不一樣,原作的似乎有些小Bug,我作了一點修改,若你作完不行的話,請參考原著):<div id="indicator" style="display: none;">
<img alt="Indicator" src="http://bloggerhacked.googlepages.com/indicator.gif" /> Loading...
</div>
<div id="search-result" style="display: none;"></div>
Step6. 存檔離開就好囉....^^ 快去試試看呈現出來的驚人效果吧!!
※此AJAX Labels Cloud是抓取Blogger提供的feed中summary類別(比較精簡,為了追求更佳的速度感^^),作為文章預覽,所以呈現出來只有一小段!
※還有預設,點選每一個Label只有呈現5篇文章,若要增加的話,請將Step2裡頭程式碼"?max-results=5"中的5改為您想要的數字即可!
[Update 2007-03-14]
原作者,發表了新版本的AJAX Labels了,請參照此處
Tags Cloud
My Secret Notebook (我的火星文記事本)
mm0NiDU82M4jV6t2RBCBrz25cuC9sjNwAuamtlEmcM1VguTu
hVs5vX7xayeXoDLwLRIsXDdxVSYNoZecdMY16+hwqpbgm2ch
78a90t0Gr9zL74TcZYwjdl3BbmnCRBJjD88dRHxdcPqIiDGp
zWe9q/XdSxe6yXKdh/hwQJ+D+o6XPWboby+RmoOtn9wmdQnN
o8h7BKWLQQMO+5XEV0RDZmUO3X7ADN8bzC8JmhP1BVP2V80d
Fs3ohWPSt7UBKnHCwI5tyeakRQihDKCzfiP7F0J+spSxCSlR
PqAj0w88PWB2ax8Y2++K/XMFHF6VuSeRhSMCaExmTTLqngxc
WlEA551OvUriquyW8QQc6jVg8lQn4m4H78QgUPvc2F3LsYKm
fd9HLa+mXrnTgh4SfgyUmS84BZdoGpMbfM4OpuWgFVZcN2e/
uKhuJm7md4G0wyo7efCLPwWWWqxZG8yzwQAHDQr5p/3xZeX4
qjMXzpXiwCqLzTGbZPqx9XMDqtrardSQNAw3dJgxgWALNzyu
/OOiDZGnobvYgDXDRuMQHo1k7gvSR7J+SNIbw7cd4696ChIL
c97GW+hdMcpTOcK9dhIKK8tXDJxiM7OSA28KCN4Wn3N1iJ9y
w4Y6W4GqbSiRxrze5zwOGeG5SbvrYvJ4LSDgND6fszdE43uk
PoPKYyfg3r4JcwrcqDJXcv1jWDuLi1swUK8lXhLLA7Ahfl8a
r+3IJJ4bnUASn9UiEMRZsOKJvK83A/TVZTS5QTz9etA60x7T
67VlH432PnH/ktoaE1XmqhbFgZ7v9UD7ujgxFMYvJ7Y9dNcI
bd3iUVa9EmudYLEuw4Otze1lLL3NQgUb+NNjgKx7r6bUHdmZ
WW7V9g==
My Flickr
[+/-] |
[AJAX] AJAX Labels Cloud |
[+/-] |
[Javascript] Selectable Post Font Size for your best view! |
之前有看到許多網站或討論區,有可以自行選擇顯示字型大小的功能,對於視力好的人來說或許字型小了些沒什麼影響,但有些老人家..(是我嗎..XD),有時就會覺得看得有些吃力,若能迅速的讓字型放大,不用再花時間ReLoad頁面的話,將會是個很不賴的工具!!
※當然藉由按 Ctrl++/ Ctrl+- (for Firefox),或者是Browser提供的放大縮小功能,不然就是通用的「Ctrl+滾輪上下滾」來達到放大縮小的功能,但我這個人比較龜毛,因為這兩種功能所表現出來的文字常常是破碎或是很醜,個人無法接受...時常因為這樣不逛那個站了…囧rz,並且透過上述的方式縮放頁面字型時,是所有版面的字型都會放大,也就連帶影響到Sibebar、Header...及其它非本文章內容的部份,整個網站當初設計好的版型都變了樣,喪失美感! 因此,我在此Blog中提供三種用於縮放文章內容的合適字型讓大家選擇(位於此處)!!
至於在Yahoo Taiwan的新聞裡點進每一篇新聞之後,也有提供類似這樣子的工具,But...他每次點換字級大小之後,都必需要 Reload 部份的頁面,明明可以不用Reload的,為啥他這麼作…後來發現,廣告部份也隨著Reload換新的了...囧rz,想必這是最主要的原因吧,那是他們吃飯的工具,就給他reload一下吧...XD!!參考資料來源:
我根據上面所提供的的簡易版本,再修改成較適合於New Blogger版本 ^_^(當然再作適當的修改之後,其它Blog也都是可以套用的)。
懒人图库 LAYABOUT'S GALLERY
在修改的過程中,又遇到某個語法getElementsByName在IE中的話只對表單的物件有作用...OMG..IE sux again!!還好有底下這位大哥的教學,解救了我...感恩!!參考資料來源:
於是,最後完整版的Javascript code (IE & Firefox 都正常) 就變成底下:
IE vs. FireFox 系列 - getElementsByName問題
[Updated 2006-12-26] 針對留言中Benjamin網友所遇到的問題,在這裡提醒大家,貼底下code時應注意的事項:由於Blogger在parse template語法有無錯誤時,他會檢查是否存在相對應的左括: <及右括: >,若不存在便會跟你說你的template語法沒有正確的close,導致儲存失敗。不幸的是,你若將Javascript嵌入template檔中,並且又很巧的,用到compare operator,例如:「小於:<」,如此一來他便會產生上述所提的,少了相對應的右括: >,而導語法錯誤啦! 因此,大家若要將底下這段javascript嵌入template中的話,記得將裡頭的<置換成<
之後,因為我只讓本文內容(Post.body)的字型大小可供縮放,因此編緝template內容,將裡頭找到的所有<script type='text/javascript'>
function getElementsByName_iefix(tag, name) {
var elem = document.getElementsByTagName(tag);
var arr = new Array();
for(i = 0,iarr = 0; i < elem.length; i++) {
att = elem[i].getAttribute("name");
if(att == name) {
arr[iarr] = elem[i];
iarr++;
}
}
return arr;
}
function doZoom(size)
{
var zooms = getElementsByName_iefix("span", "zoom")
for (var i = 0; i < zooms.length; i++) {
zooms[i].style.fontSize = size+'px';
}
}
</script>
都置換成底下的樣子<p><data:post.body/></p>
如此,就可以將被 name='zoom' 的span tag包住的那些內容,賦予字型縮放的功能!!<span name='zoom'><p><data:post.body/></p></span>
最後在將你要提供此項功能的界面,填入此段程式碼即可,裡頭的數字以px為單位:<a href="javascript:doZoom(16)">大</a>
※展示出來的功能,請參照此圖,並加以操作看看…
<a href="javascript:doZoom(14)">中</a>
<a href="javascript:doZoom(12)">小</a>
[+/-] |
[Blog] A not only Awesome but Lightning Fast Blog |
我最常逛而且具有相當豐富內容的一個Blog: Hackosphere 最近全新大改版(作者稱之為:Web 2.0 blog),著實令人目瞪口呆...不得不套句Epson的廣告詞:「真得好快、好厲害」,讓我對於Blog有了一個全新的體驗...XD
裡頭充份利用AJAX/JSON的技術,節省了許多不必要的頁面完全重新下載(reload),只更新頁面裡頭有更新的部份,當我第首次瀏覽Hackosphere的新Blog時,常會以為點了之後,怎麼沒有反應....沒想到是已經更新完成...囧rz,不信的話你可以去逛逛,真的有如作者說的光速般的快..Cool斃啦!
由於他花了很多心血在這個新Template上頭,而且可能又因為聖誕節要到了,要送送禮了,手頭拮据吧...XD! 這次不再是Free Download了,而是以一個 US $10 的低價位給大家購買!! 想要贊助、支持一下他的人,可以透過這裡來得知購買資訊!!
※整體上我對於他的Blog所運用到的技術以及程現出來的效果相當滿意,唯一就是他的Blog的版面,一直無法深得我心...XD,不是我的type(羞)資料來源:
.Unveiling the new Hackosphere
.Neo - The lightning fast blogger beta template
[+/-] |
[WordPress] Theme : Vistered Little 1.6 |
之前為了解決PNG圖檔在IE底下無法正常程現半透明效果(semi-transparent)的問題時(Solution),Google到某一個WordPress的Theme充分的利用PNG圖檔的半透明效果(semi-transparent)特色,設計出一個令人相當驚艷的視覺感受!!等有空的話,我的Blog也想來小改一下,試作看看效果如何..^_^。
※相關資料如下:
[+/-] |
[AJAX] Web-based BBS : gaaan.com |
今天逛到一個很Cool的站,叫作gaaan.com(gan,這個站名我喜歡..有魄力,又好記...),此站的slogan為「我雖然是個網頁,但是我立志成為一個BBS。」。
主要技術是,在使用介面上利用AJAX技術來完全仿造BBS環境的網站!! 操作方式和一般的BBS無異,靠著一手操作Keyboard,另一手....就OK了!! 而且可以嵌入一些東西,像是貼圖,貼影片(future work)...都是辦得到的...Cool !! 並且有支援RSS,有RSS的BBS真是不賴..I love it!
重點是只要有Browser就可以囉,並不需要像一般的BBS站一樣,要藉由telnet的技術,有些公司會鎖Port禁用某些服務,但總不可能擋Http上網的服務吧,因此只要可以上流灠網頁就可以上gaaan.com囉!! 看來ptt要多加小心了...多了這麼一個強力的競爭對手。.參考資料來源:
別再看了,快去搶一個帳號吧...^_^
Mr. 6 -> Gaaan:不只是網頁版PTT
[+/-] |
[Browser] Browser Compatibility Notes |
因為之前我在這個Blog裡頭加了一個Javascript語法,為了達到[Blog Plugins]中的customizable tooltips效果,在Firefox中正常,但是在IE底下卻出現了 "Internet Explorer 無法開啟網際網路網站,操作已終止[Example]"",Oh My God...什麼鳥呀 XD! 對於javascript不熟的我,懶得花時間去Debug了,於是想辦法讓這段Javascript語法在IE中不要執行,方法如下:
. Conditional comment: (for css, xhtml, javascript)<!--[if IE]>
All IE browser
<![endif]-->
<!--[if IE 6]>
IE 6
<![endif]-->
<!--[if IE 7]>
IE 7
<![endif]-->
<!--[if lt IE 7]>
IE 6 以下 (含)
<![endif]-->
<!--[if !IE]> -->
IE 4 或 其他 browsers
<!-- <![endif]-->
.Conditional compilation: (only for Javascript)<script type='text/javascript'>
/*@cc_on @*/
/*@if (@_jscript_version >= 5.7)
// IE7 或以後
@elif (@_jscript_version >= 5.6)
// IE6
@elif (@_jscript_version >= 5.2)
// IE5.5
@elif (@_jscript_version >= 5)
// IE5
@else @*/
// 其他 browser ,例如 Firefox, safari, IE 4.x
/*@end
@*/
</script>.以上資料參考來源:
Xexex's Java 和其他二三事 : Browser相容性技巧筆記
[2007/03/21 Updated]div#milkr{width:200px;} /*-for ff-*/
* html div#milkr{width:180px;} /*-for ie6-*/
*+html div#milkr{width:150px;} /*-for ie7-*/
[+/-] |
[Template] Kubrick style for Blogger beta |
由於個人很喜歡Kubrick這個源自於WordPress裡預設的"簡單中又不失美感"的一個版型 ^_^,於是將他移植到Blogger Beta的平台上 ^_^,並且加上了一些個人自認為還還不錯的功能...,只不過對於IE的親和力可能要說聲抱歉了...XD,IE實在很討人厭..囧rz,可能有一些些小bug就是了,但不會有什麼太大的影響!!
.底下為預覽圖:
(※注意事項:請把原先的作好備份,以備不時之需!!套用時,要先把沒用的widget清空,再小心將你原本的widget搬到此新 template,不然到時不見了,你會愈哭無淚的!)
.額外附加功能:
若你想換成自己的Banner的話,底下有一個簡單又快速的方法...really Awesome!!Website: http://redalt.com/Tools/Kubrickr
此Kubrickr就是利用強大的 Flickr 所提供的超大圖庫,然後由裡頭的圖片產生你所想要的Banner,實在是個非常棒的應用!! 真是造福了不少人群..
所以說,你若看煩了Kubrick預設的Banner,或想要多點變化,你可以隨時輕鬆的從Kubrickr產生你所喜歡的 ^_^
若有問題,歡迎隨時留言討論...
[Updated 2006/12/13]
修正背景色的色差,與原始的Kubrick不太一樣,導致用Kubrickr所產生出來的Banner和舊版本的不一樣!! < 感謝 Orion 提供 >
[Updated 2007/07/14] 由於原作者hosting的javascript file(hackosphere.js)空間,已經無法承受愈來愈多人的存取,請繼續看底下code框框中的更新作法將原本這一行程式碼<script type='text/javascript' src='http://www.anniyalogam.com/widgets/hackosphere.js' />
拿掉,置換成底下這一段程式碼
<script type="text/javascript">
function toggleIt(id) {
post = document.getElementById(id);
if (post.style.display != 'none') {
post.style.display = 'none';
} else {
post.style.display = '';
}
}
function showFullPost(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
if (spans[i].id == "fullpost")
spans[i].style.display = 'inline';
if (spans[i].id == "readmore")
spans[i].style.display = 'none';
}
}
var fade = false;
function showFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
if (spans[i].id == "fullpost") {
if (fade) {
spans[i].style.background = peekaboo_bgcolor;
Effect.Appear(spans[i]);
} else spans[i].style.display = 'inline';
}
if (spans[i].id == "showlink")
spans[i].style.display = 'none';
if (spans[i].id == "hidelink")
spans[i].style.display = 'inline';
}
}
function hideFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
if (spans[i].id == "fullpost") {
if (fade) {
spans[i].style.background = peekaboo_bgcolor;
Effect.Fade(spans[i]);
} else spans[i].style.display = 'none';
}
if (spans[i].id == "showlink")
spans[i].style.display = 'inline';
if (spans[i].id == "hidelink")
spans[i].style.display = 'none';
}
post.scrollIntoView(true);
}
function checkFull(id) {
var post = document.getElementById(id);
var spans = post.getElementsByTagName('span');
var found = 0;
for (var i = 0; i < spans.length; i++) {
if (spans[i].id == "fullpost") {
spans[i].style.display = 'none';
found = 1;
}
if ((spans[i].id == "showlink") && (found == 0))
spans[i].style.display = 'none';
}
}
</script>
[+/-] |
[AJAX] What is AJAX (2) |
接續上一篇[AJAX] What is AJAX(1),是否覺得很有趣...二話不說,繼續往第二篇前進吧....原文出處:
堯@部落格 -> AJAX漫談(2)
※文章內容:
說了那麼多,ajax可以運用在什麼地方,可能還是有很多人不太清楚,這邊我再稍微的說明一下Ajax的運用範例。
※原作者工作經驗談:
說到這,又讓我想起那時候為了生活接案子(悲慘的日子),用Microsoft.NET做了很多案子,可是.NET的很多基本元件,都是用戶填了資料,網頁直接refresh,然後整頁在不知不覺中(根本就是有感覺~~)做了更動。這部分一直讓我很不諒解,這根本只是讓程式開發者用很簡單的方式來開發程式,但是對於伺服器資源及網路流量做了最壞的示範啊。當初在做案子的時後,我心理都會問,這樣的架構最多能夠負擔到多少人?但是由於案子是別人給的,錢也是別人給的,又指定要用.NET開發,所以只好默默的結案了事。也許像這樣的web application根本不需要用到ajax的架構,但如果有一天用戶的老闆大發奇想要擴大運用.....Oops....
[+/-] |
[AJAX] What is AJAX (1) |
之前在堯@部落格中看到了一系列的「AJAX」的文章,筆者以簡易明瞭的條列式方式,一一解說,對於原本半知半解的我,受益良多...透過CC的授權,將文章內容轉戴於底下:.原文出處:
※文章內容:
堯@部落格 -> AJAX漫談
Ajax(Asynchronous JavaScript + XML)是在2005年二月由Jesse James Garrett在一篇名為Ajax: A New Approach to Web Applications所大力推廣。當時很快就獲得了很大的迴響。但是ajax並不是一項新的技術,而只是運用了過去原本就有的技巧所混合出來的一項概念。早在Garrett提出之前,就有很多人運用這樣的技術,例如Google Map。javascript 和xml的技術混用,我在2000年的一個CMS專案中就曾經運用過(我那時候根本沒聽過什麼ajax),而且其優點就如同Garrett所提,可以充分 改善Web Pages的不足之處。只是早期並沒有這個名詞,很多進階的web developer默默的在運用這部分的技術而已。
在傳統的web架構上面,有很多缺點限制了web application的發展:
在Ajax之前,一份由當時MicroSoft提出的IE4架構裡面(沒錯,就是IE4,1997年),介紹了IE4提供的XML物 件,並讓使用者可以透過javaScript來操作xml物件。記得那時候的瀏覽器Netscape必須要使用object的方式load xml object進來才能進行操作,這點其實非常的不方便,所以我後來做的專案都指定要求客戶的web application架構必須使用IE作為標準瀏覽器,說起來我也算是當時殘害netscape的一個幫兇~~~。而現在ajax所用的技術,再當時就 都有提供了。當時流行的概念是soap,但是由於soap需要大量的伺服器端的協助,所以好像也沒有紅起來。 ajax之所以會大紅大紫,原因還是來自於blog和web 2.0的概念大量的被複製,相對於javascript本身架構並沒有太大的變化,但是web的技術門檻由於提供服務的服務性網站變多,很多服務也都相對 的提供xml做為data source,這點讓有programing能力的blogger趨之若鶩,紛紛的透過ajax技術把服務網站的資料整合到blog裡面。總而言之,就是 整個網路消費市場習慣的改變,才讓ajax因此傳播開來,而這一項沒有發明的發明,隨著web 2.0的散佈,慢慢的在網路界變成一個神話。(沒有發明的發明在90年代指的是SOAP,當時還有很多人出來指稱soap會變成影響網路發展的一個重要指 標,但是呢...,或許現在還沒到檢驗的時候吧,we will see...)
[+/-] |
[Programming] Quake3's Fast InvSqrt() |
今天在「苦牢之最後一年」這個Blog中看到了一篇我很感興趣的文章,「開根號倒數 (InvSqrt(), 1 / sqrt(x)) 速算法」,看完的心得果真如原PO所說的:好可怕的奇技淫巧!! XD
.Fast InvSqrt Code:
話說上面那段Code,比原本用sqrt()去實作出來的功能快上四倍左右!!float InvSqrt (float x) {
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f3759df - (i>>1);
x = *(float*)&i;
x = x*(1.5f - xhalf*x*x);
return x;
}PS. 這個 function 之所以重要,是因為求 開根號倒數 這個動作在 3D 運算 (向量運算的部份) 裡面常常會用到,如果你用最原始的 sqrt() 然後再倒數的話,速度比上面的這個版本大概慢了四倍吧… XD -- 引用自: 開根號倒數 (InvSqrt(), 1 / sqrt(x)) 速算法
又再次見識到真正的Programmer,能夠把這麼基本、常用的指令,提升這麼多的效率,果真不是蓋的...要是當初沒這指令的話,我想Quake3要跑得動,可能要再延後個一年半載吧...XD
後來這個人 Shan-yung Yang 本著科學家追根究底的態度,直接來個實作,真是好樣的,數據出來後,更具說服力了! 原始文章在這: Square Root Reciprocal,作者有提供Source Code,可供下載測試...^_^
並且,重點是他也實作了另一個透過CPU支援的SSE指令集版本( CPU: Athlon64 X2 4400+ ),發現SSE這個指令的版本更快(大約比一般的 sqrt() 快十五倍左右),結論是:隨著architecture 的演進所造成的影響,也許十年後直接用 sqrt() 才是最快的方法..XD!!
[+/-] |
[AJAX] CanvasPaint (AJAX MS Paint) and "MS Paint God" |
CanvasPaint : Web版本的小畫家,再次讓人見識到AJAX厲害的地方...若人人都能有小畫家之神(請繼續往底下閱讀即會揭曉) 的一半功力的話,那麼CanvasPaint肯定有機會成為新一代的Killer-Application 囧rz...
線上版的 Word & Excel :Docs & Spreadsheets 再加上這個線上版小畫家 CanvasPaint 都出現了,而且也已經蠻成熟的了...該有的功能都俱備了,看來微軟帝國崩解的那天…指日可待啦..XD
.底下連結,即為傳說中的MS Paint GOD..可說當之無愧呀!! 馬上去瞧瞧吧!
<傳說中的小畫家之神(MS Paint God) 在這>