Posted by: cigdemchen on: 2009/03/10
前兩天突然有朋友 msn 問我:anobii怎麼用?有什麼好玩的? 那麼就來分享一下anobii 網路書架的樂趣…
Anobii是什麼? www.anobii.com 是一個線上書架,對書痴書迷來說,是一個非常好用的線上工具,而且可以真的達到以書會友的功能。
1. 支援最多語系:目前共有11個語系,是我用過可以找到最多華文書的線上書架。國外知名的 GoodReads,Shelfari,LibraryThing 大都只提供英文,德文等,就算是把中文書的ISBN打進去,也不見得找的到書,只有aNobii 找的中文書,到所以aNobii真的是中文書迷的一大福音。
2. 整理書架:購買日期/地點/價格,閱讀進度,Tag標籤,作者,語言分類… 可以一清二楚的把在書架上、躺在地上、堆在床上,疊在客廳茶几,圖書館借來的書,都詳細的記錄下來,了解自己到底有收藏了多少的書,大大的滿足了書痴坐擁書城的成就感。
3. 讀書心得交流:讀書心得,喜愛度星等,閱讀日期,再讀一次的時間 (re-read):
4. 以書會友:Friend, Neighbor,Group,ShoutOut(留言板),RSS,Message(訊息) :
5. 延伸閱讀:wishlist(欲購書單),explore :
6. 不同語系的書目:如果不止對中文書有興趣,打入英文,土耳其文,日文,德文…等,可以找到該語系的書架及書目,尤其對喜歡讀英文書的台灣書友,一般的書店很少提供英文的書單,而且原文書的上架速度也不及Amazon或 Barns and Nobles 快,所以我的英文書很多也是這樣找來的,找到後,再去各處尋二手書,或是網路交換(OS:我下次會再介紹好玩的”網路換書”網站),或是在網上購買。
Web2.0 書友社群擴大的力量:我記得大約是在08年2月時開了anobii書架,那時資料庫裡大概只有200多萬本書吧,現在已經高達1000多萬了,如果找工讀生來key這些資料,會花掉多少錢呢?大家計算一下就會知道;但這些全都是書友自動自發的貢獻的,這就是web2.0的實証之一。
介紹幾個我個人很喜歡的aNobii書架推薦給大家:
我的書架:Watermelon!
原文書架:selinechen,Icedream,Tracy W(書評寫的很棒)
中文閱讀:旺財小美女,syndrome,book686(淡水的有河書店),香璞,bookseeker,WhoseBooks(胡思二手書店),Sisyphe,戀戀風塵,發哥哥,Jackson Chang, 藍色的希臘(商管類的書評很多),ferry(日本文學)
Posted by: Crab Lin on: 2009/02/09
在Part1文章已成功的在DNN4.x使用jQuery,已可以使用jQuery的語法,再來我們要用WebServices的方式實踐ClientAPI。
首先我們得先確認web.config內是否設定下列項目(DNN4.x因為有使用MS的ClientAPI,皆已設定下列數值)
<httpHandlers> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=********************" /> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=********************" /> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=********************" validate="false" /> </httpHandlers>
以上確認完畢後,撰寫WebServices部分,需使用 System.Web.Script.Services,並宣告class為ScriptService(可讓javascript呼叫此函式),webservice程式碼如下:
// WebServices/CrabWS.asmx
...
using System.Web.Script.Services;
...
namespace Crab.WS
{
[WebService(Namespace = "Crab.WS")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class UserService
{
[WebMethod]
public string getName()
{
return "Crab Lin";
}
[WebMethod]
public bool NameEquals(string nameA, string nameB)
{
return nameA.Equals(nameB);
}
}
}
在PageLoad的部分透過DotNetNuke.Framework.AJAX的函式,新增Webservices ClientAPI(也可在Part1時已建立的 SiteModuleBase.cs裡新增AjaxRegisterServices的函式,方便其他模組使用時重覆宣告)
//OnPageLoad
protected void Page_Load(System.Object sender, System.EventArgs e)
{
...
if (DotNetNuke.Framework.AJAX.IsInstalled())
{
DotNetNuke.Framework.AJAX.RegisterScriptManager();
}
// Create a reference to the Script Manager
ScriptManager objScriptManager = ScriptManager.GetCurrent(this.Page);
objScriptManager.EnablePageMethods = true;
ServiceReference objServiceReference = new ServiceReference();
objServiceReference.Path = @"WebService/CrabWS.asmx";
objServiceReference.InlineScript = true;
objScriptManager.Services.Add(objServiceReference);
}
在模組載入時,會同時register webservices funcation,即可在javascript用namespace的方式取用webservices function,如下列方式使用:
<script language="javascript">
jQuery(document).ready(function(){
//無參數
Crab.WS.UserService.getName(function(userName){
alert(userName);
});
//兩個參數
Crab.WS.UserService.NameEquals("Crab", "Max", funcation(IsEqual){
alert(IsEqual);
});
});
});
</script>
重點: 呼叫WS function最後一個參數值為AjaxSuccessFunction,將回傳結果交給一個javascript function接值處理。
同系列文章:
Part.1 成功使用jQuery
Part.3 完成AJAX功能
Posted by: Crab Lin on: 2009/02/02
DotNetNuke 5.x 版本已可以在Host Setting使用jQuery,但是4.x的website還是無法使用jQuery。
因為習慣使用jQuery方便的javascript取用元件方式,及強大的opensource 社群的支援,並且website某些模組尚未測試5.x的版本,無法使用5.x的版本,暫時須用4.x的版本重新設計新的模組使用jQuery時,就必須改寫部分程式碼實踐。
基於並非整個website使用jQuery,但又需在DNN模組啟用時選擇性載入jQuery.js,所以必須新建一個class(筆者此處新建class名稱為SiteModuleBase)參照PortalModuleBase,新建立的模組原本參照PortalModuleBase改為參照SiteModuleBase,則如以下程式:
using DotNetNuke.Entities.Modules;
// use jQuery ModuleBase
public class SiteModuleBase : PortalModuleBase
{
public SiteModuleBase()
{}
override void OnLoad(EventArgs e)
{
this.registerjQuery();
}
private void registerjQuery(){...}
}
首先須了解 DNN 有自己核心的ClientAPI(如 dnn.js, dnncore.js…之類),所以要用jquery.js又不想要更改DNN核心javascript,須使用jQuery內建的function「noConflict()」啟用jQuery,registerjQuery Function 如下:
public registerjQuery()
{
string jQueryPath = "js/jQuery.js";
if (!Page.ClientScript.IsClientScriptIncludeRegistered("jQuery"))
{
Page.ClientScript.RegisterClientScriptInclude(
"jQuery",
jQueryPath);
Page.ClientScript.RegisterClientScriptBlock(
this.GetType(),
"jQuerynoConflict",
"<script type=\"text/javascript\" language=\"javascript\">jQuery.noConflict();</script>");
}
}
建立class後,將新建的DNN模組參照此class(如下列程式),在啟動時即可使用jQuery的函式及jQuery Plugins。
//原先Module參照設定
partial class ViewDNNModule : PortalModuleBase, IActionable
{...}
//修改為以下參照設定
partial class ViewDNNModule : SiteModuleBase, IActionable
{...}
ps.1:因為DNN底層也有使用微軟的ClientAPI,須避免使用「$(…)」取用參數,需使用「jQuery(…)」。
ps.2:若要加入其他的jQuery Plugins建置至模組內,為了避免重覆加入*.js,建議在SiteModuleBase裡撰寫register Javascript(如下列)。
public class SiteModuleBase : PortalModuleBase
{
…
registerjQuery(){…}
registerjQueryUI(){…}
registerjQueryGrid(){…}
registerjQueryTextArea(){…}
}
同系列文章:
Part.2 使用WebServices實踐ClientAPI
Part.3 完成AJAX功能
Posted by: maxchiu on: 2009/02/01
最近因為工作上的需要,需提供資料庫相關的設計資料及圖表。過去,大多使用Microsoft Office Visio來製作,但在查閱便利與友善性的考量尚,產生類似MSDN風格的HTML格式圖表,會是較佳的選擇。是故,便著手在網路上搜尋相關的工具,經一番研究後,SchemaSpy正能符合我當下的需求,且基於是開源專案,軟體授權這筆費用也省了下來。以下,大致説明一下安裝的四個步驟。
步驟一:
首先,因為SchemaSpy是個使用Java開發的工具,所以需要先下載安裝Java 5或是更新的版本。
步驟二:
接下來下載SchemaSpy至您指定的目錄,下載的檔案格式為一個jar檔,無須安裝,官網網址為http://schemaspy.sourceforge.net/。
步驟三:
由於產生的資料庫圖表,是透過Graphviz產生圖檔以及由DOT Language描述其路徑的*.dot檔,所以請下載安裝,安裝完成後請將方才安裝路徑加入系統路徑,方式如下述:
步驟四:
最後由於SchemaSpy是透過JDBC與資料庫連結。是故,必須針對您目前開發環境所使用的資料庫,來決定下載的driver。以下則針對Microsoft SQL Server 2005為例說明。
此時,有兩種方式可以解決,第一、將SchemaSpy.jar檔中SQL Server 2005的屬性檔(.properties)裡的driverPath做修正即可。 第二、在執行SchemaSpy時使用 -dp參數覆蓋屬性檔設定,我先就第一種方式說明,第二種解決方法留待完成設定後,進行測試時說明。
上述所有的安裝步驟完成後,再來就是進行實際的測試,以下附上語法格式說明,如欲了解更為詳盡的參數說明,可逕至SchemaSpy官網:
java -jar schemaSpy.jar -t mssql05 -db <資料庫名稱> -host <Ip 位址/主機名稱> -s dbo -port 1433 -u <資料庫使用者名稱> -p <資料庫使用者密碼> -o <輸出目錄名稱>
如果需要覆寫SQL Server 2005 JDBC Driver路徑,也就是步驟四中提到的第二種解解方法,則需在加入-dp參數,語法格式如下:
java -jar schemaSpy.jar -t mssql05 -db <資料庫名稱> -host <Ip 位址/主機名稱> -s dbo -port 1433 -u <資料庫使用者名稱> -p <資料庫使用者密碼> -o <輸出目錄名稱> -dp <JDBC Driver完整路徑,包含driver檔名,可參照【圖五】中有關driverPath的格式>
範例語法:
java -jar schemaSpy_4.1.1.jar -t mssql05 -db Northwind -host 127.0.0.1 -s dbo -port 1433 -u tester -p test543 -o library
P.S. 以上語法有點繁複,每次輸入似乎沒有效率,筆者建議可產生一個批次檔,使用上將方便許多。另外,可參考SchemaSpy官網所提供的結果範例,以上。
Posted by: cigdemchen on: 2009/01/22
Idea Market 裡是一群對網路充滿想像力,並且又有能力實現的工程師跟PM所組成的。取名為idea Market,是想像到傳統市集裡人聲鼎沸的叫賣聲,大家為了想要售出及買入的物品大聲的對話喊價,你一言我一語的好不熱鬧。
我們也要讓這裡成為各式各樣想法發表跟發酵的地方,自由自在的盡情發揮,熱絡交換意見的想法市集。把對程式及網路的熱情,逐一化成有形的資產,跟這個共筆部落格裡和大家分享!!
cigdemchen@youthcafe