2008年12月10日 星期三

[演講筆記]從Google服務看創新與創意

仔細想想,每次要報名都在最後一刻好像也不是很好 -v- ,而對今天的影響,就是比較晚才能進場。雖然場地看起來座位是夠, 不過還是得按照時間進去,等了大概十分鐘, 哈哈,

原本還想說提早去才不會變成用站的,沒想到變成在外頭等 0.0 ,所以以後還是盡早確定吧!

全部人數我覺得不是很多,我也不曉得為什麼, 是因為今天主題比較偏創新行銷?(非技術層面?) 還是政大是人文學校? 姆,未知……
本來看主題我也是猶豫了一下,看在「創新」的標題,還是來聽聽看能有什麼收穫吧!

在介紹層面,自認為差不多剛好,因為如果講的太淺薄,那就看網路上的分析還有專題介紹文,其實都可以獲得資訊。因此今天除了介紹幾個較廣為人知的東西, 也從使用者需求跟創意的角度來講述新的創意如何產生, 站在學子的立場,也算是蠻有幫助的創意思考,下面就分享一些筆記吧!

-流水帳

google 最近要收錄一百年左右的報紙,將他數位化, 內容都變成電子檔後,未來應該有更多加值產出或是應用服務。

提到一個新名詞「免費經濟」,用"其實免費服務是可怕的"來形容此策略吸引顧客的極大黏著力,google 也才有能耐靠廣告賺錢。 對呀,線上遊戲如果註冊就要錢,大概沒幾個人會玩, 只用在進階功能或是加值飾品,玩大玩多人的自然會進入消費模式了。

講述「創業成功的六大元素

1. 最優質的員工
G社寧願花很多時間來找到一個正確而合適的人,也不願意找一個很強但是錯的人。

2. 20% is at core
工作時間有 1/5 可以做自己的事,應該是大家都知道了,站在鼓勵創新的立場,我想建立在"有興趣"的專案,執行者應該會很賣力當然,這方向跟 G社的公司宗旨是一致的。

3. transparency
首先拿 google trends 來做示範,這個除了可以看到拿來pk的項目增長趨勢,首頁下方還有美國每日最夯的 10個搜尋 keywords (小題外,學英文可以看的窗口之一) 。
另外是趨勢的進階版 - See what the world is searching for.
從這邊可以看到世界各地的搜尋統計數字,跟商品熱門程度是相當貼近的,因為是反映出使用者關切程度的數值。除了各國與語言的分析,點下方的地圖,還有該區域性更詳細的資料牽涉到「市場分析」,團隊往往在想一個產品或服務時, 都會想取得使用者取向的資訊,這絕對是蠻重要的參考呀!
演講會場裡很多學生是商學院的,似乎對這領域的研究很有幫助 (business model議題?) ps. 登入 google acount 後才會看到表格上的數字跳動。

舉完例子,說明 G社對於收集資料的重新包裝呈現, 絕對是公平公正公開的!

4. Data
就是重視數字,決定 project 存活,策略走向。

拿影片的語音搜尋為例,除了可以找出有該關鍵字的影片,還有標出色塊出現在幾分幾秒,包含前後文資訊,真是厲害(某種程度上的相似,我大學的專題就是做這個 -v- 所以知道一些背景知識跟關鍵技術)

5. User come first
同上,重視(客戶)使用者。

6. Speed matters
新科技推陳出新..


接著繼續提 G社提供服務的好用創新之例:

10^100 改善人類福祉活動,有一提案是運用在尼羅河的原住民上,當地女人需要把到河流取水完的容器頂在頭上運回來,一個改進的方式,是把容器改造成輪子,透過支柱來推行,是否輕鬆多了呢?

google earth,應該也不少人看過或用過了,但他可以幹麻? 介紹時說九成的人都拿來找自己的家~噗噗!不過使用者通常會發現一個共識,就是系統的切換地點加鏡頭拉遠近的感覺夠炫,所以其實可以用來宣揚「國威」是個很不錯的方式(某種東西或是團隊的佔據點呈現), 比如展現台灣各地自己母校的校友會地點(os:喔哦.. 了,聽說明年台灣有選舉惹) 。


比較多人用的地圖,則是 google map ,展示了一些附加小工具的功能,在[我的地圖]頁面,可以在下方看到不少功能,如美食資訊、房屋資訊(先查再去看會比較好)、 國道資訊(這個在未來配合 G社的手機,應該很有潛力),可以看即時車流影像。

ps. 重點提示:手機市場的服務應用,前途不可限量(未來必是人手一機,看需求選機)

其實之前那個幫你分析大眾運輸的路線跟時程也很好用,還有之前看到有人做的民怨網,也算是蠻有創意的。

還有馬上取得台北市各處停車場的剩餘車位,很多資訊來源都是現成的,只是原本沒有一個適當的平台可以輸出、展示。所以呢,只要自己有新的點子,其實可以盡量去發揮!(蠻久之前就有看到設計比賽)。至於善用 G社平台來進行宣傳的例子,就是美國總統歐巴馬在競選時的宣傳影片囉, 直接用 Youtube link,締造驚人紀錄..

其他還有 igoogle ,其實也有很多小工具可以新增,例如拜拜工具 XD.. 要考試的新增可以來點香一下。


第一階段完畢,第二階段用不少時間給同學們發問,我只記一點感興趣的東西:

有個地方提到,出現的搜尋結果能否出大錢拿買下出現比較前頭,當然不行!

至於廣告的排序呢?基本公式是透過(出價)x(網站品質)之值來決定,網站品質的計算方法大概是,使用者在該網站留比較久的時間,且逛了好幾頁,就會比較高;那麼假設第一名跟第二名的數值分別是 2.2與 1.2,那麼 G社會把廣告費設定為 1.3 與 1.2 ,不會多收你(公司廣告)錢(真善良XD),還有就是他是屬於"點擊"才算錢的方式。

這點跟傳統媒體就不一樣了,平面宣傳買了廣告後,只能從售出份數來取得"可能"讓人看的人次,但實際效益不曉得; 電視廣告呢?請問廣告時間大家在幹麻?
據統計 1)轉台 2)上廁所 3)開冰箱

似乎效果也不大呢? 所以在傳同廣告市場這一塊,的確有削弱的趨勢, 而網路廣告的情景則是一片樂觀,即使最近景氣不好,也不受影響。


嗯,有「創意」的人們,有什麼特質?
答:討論問題,回答問題通常是多面向的,一般忌諱 "me too" or "I guess" 類的回應。


對於忙碌生活的調劑?
講者是用晚上回學校讀書來平衡自己的壓力, 一個角度是從同學皆非工作職務或是商業厲害相關的對象,所以能有個話題討論沒壓力的避風港,其他的想法,當然就靠個人生活經驗跟興趣來排解囉。

#延伸閱讀
數位時代-免費經濟
ZDNet -《長尾》接下來是《免費》

Google 台灣談 Insights新工具(與Android發表)

2008年10月20日 星期一

[講座心得] SA@Taipei - 四連發之 Yahoo! is Open

前言:

今天出門前利用吃早餐的時間,順便裝一下 hinet 跟趨勢合作的防毒軟體安裝, 結果弄到有點小趕,到景美捷運站時已經九點=0=,接下來幾乎都用衝的, 大概 09:20到達教室,好險講師剛開始沒多久。

事實上我應該可以騎機車到台大,只是那附近怕找停車位又是一陣折騰, 就不考慮惹。

講師:
josephj,目前任職於 Yahoo!奇摩、擔任 YDN 科技傳教士(Tech Evangelist)。 之前有兩年半的時間擔任前端工程師,主要負責知識+。 課程相關投影片資訊

筆記:

提到地圖日記用了 YUI,作了 SSO跟搭配 Map等應用,SSO範例二好康挖挖哇

介紹 yahoo創意競賽的首獎「科科科」,報導參賽列表
簡單講就是寫一個 FF的 extension,可以經由選取一段文字幫你丟到各的地方進行搜尋獲得各種文字、圖片等資訊。

然後最近開放的 Open API訊息 (繼生活+ 與地圖開放後,Yahoo! 知識+是第三波)
這對於開發創意應用相當有幫助。 ex flickerurl後面串 getxxxdata 就能取得想要的資料

想要 CLI嗎? 之後有 YQL (Yahoo Query Language),目前是 preview
就像是把 yahoo的各種 web應用服務當做資料庫來用。

各大網站論壇通常都有著自己的服務格式,接著 google率先推出 open social標準,也因此,各大廠都會遵循這規範,而 yahoo 也不例外,透過 social API 可以產生出個多的應用,比如取得 profile ,附加在好友圈、社群互動的即時訊息。

然後提到 Yahoo的理想 - YAP
這樣子要開發應用服務就會變得很方便

介紹Search Monkey
介紹二(英)
對於搜尋結果list所呈現的資料不滿意嗎?
透過 Search Monkey,你可以自訂想要的資料、圖片呈現

接著介紹 pipes,並搭配實做 demo。 官方教學eric網友介紹

這真是超棒的,以往要索取某網站的部份資料,都是要抓回來用 regular做分析, 有了這項`線上視覺話設定工具',不需要寫任何一行程式就可以完成資料重組了!

講師是以三個正咩blog rss feeds 做 union 示範,也就是重新產生一個 RSS來訂閱,三個來源也可以做適當排序,工具箱有許多 operation可以套用,不同視窗透過拖曳可以進行很直覺性的連接,應該就是名字的`管線串流'概念, 其他範例參考(1),(2)

如用 `user input',那便是在使用前由使用者輸入再進行動態產生,欄位中 debug 是用於偵錯、為資料做上 filter 篩選、把 title rename+string builder => [keyword]字串..etc

ps.不過以 blog訂閱整合服務, google reader倒是已經可以完成這樣的彙整功能 @.@

整個很有物件的概念,產生好的 pipes 還可以成為新的元件,讓自己或他人繼續引用該元件(這點可以突破來源限制數)

接著實做 Search Monkey 的自訂過程(略)

第三節,進入介紹 YUI了!這是我來上本堂的主要目的 ,這邊看投影片介紹,應該是我上課的版本 @o@ 簡單差異簡述

除了就是 2.x 舊有的功能,也詳述了 3.x 革新在哪,11/8推出 PR2 版本,整個真是超強大的,而操作方式也像是 jQuery了,DOM上都多包了一層,很有物件導向的 fu(使用方式都跟 2.x不同),我喜歡! //透過屬性限定達到封裝效果,更有安全性


導入方式透過 `seed'更加便利,概念像是埋下一顆種子讓他可以長一顆樹,然後許多函式都是有那個需求再引用即可,達到輕量化的目的!
ex D&D or animation 都還切成很細的功能區塊,舊版都是全包
備忘ddproxy 拖曳時預覽的虛線效果

這工具也可以協助你 YUI Configurator

其他備忘

Y.log() => 輸出訊息
提到要 debug,搭配 Firebug是開發好物,可以把訊息輸出到 condole
才不會按 alert()按到死。

IO => Y.io.transport 跨網域傳遞訊息 Connection Manager

YUI 3 SlickSpeed Selector Test


題外話,無障礙網頁
好的網頁介面設計,對於肢體感官不是那麼方便操作的人,幫助真的很大!
有心之士該好好努力!

2008年9月17日 星期三

[指引] 用 SSMSE 連接到 sql server 做簡易查詢

備忘一下,透過 Microsoft SQL Server Management Studio Express來連接資料庫做簡單的操作。

1.如果連線主機有防火牆,記得開通。

2. 下載 SQL Server Management Studio Express SP2 並安裝

Microsoft SQL Server Management Studio Express (SSMSE) 是一套免費又簡單好用的圖形化管理工具,可以用來管理 SQL Server 2005 Express Edition 和 SQL Server 2005 Express Edition with Advanced Services。

開啟時出現的連線視窗,通常是選擇
a) Database Engine
b) ip
c) SQL Server 驗證
d) 帳號
e) 密碼

3. 成功登入後,檢視與查詢 SQL

展開 [資料庫] > [some_one_db] > [資料表] > table_list

在某 table 右鍵點[開啟資料表],可以看到該 table的資料,接著這模式下按快速鍵
ctrl+3 出現 sql 語法輸入視窗
ctrl+r 是執行 sql


[指引] 透過 JDBC 連接 MS SQL Server

以前連到 informix 資料庫都是照著前輩的語法跑,現在試著連到新平台的資料庫看看。


簡述步驟

1.下載 driver
Microsoft SQL Server 2005 JDBC Driver 1.2 載點


2.安裝 driver

解壓縮找到sqljdbc,jar,而讓程式找的到 driver有幾種方式

1)設定環境變數
ex: classpath=C:\sqljdbc.jar
2)將sqljdbc.jar 拷貝到jdk\jre\lib\ext目錄下
(或是從專案屬性設定新增 sqljdbc.jar)
第二種方法似乎比較好,不用多改 classpath。
3)若是執行 JSP程式,需將 . jar copy到 Tomcat/專案下的 lib目錄下,


3.連接語法

sql server 2000 中的語法是
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://ip:1433;DatabaseName=sample","user","pawd";

sql server 2005 則為
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://ip:1433;DatabaseName=sample","user","pawd";

這樣子就大功告成,如果是要方便往後的系統沿用,可以包成公用物件.jar,程式需要連到sql資料庫時下 connection會比較簡便。

[jsp筆記] web services

未來不同的程式溝通機制之一,有空時先研究好。


JavaWorld Web Services教學範例
從介紹到範例實做,蠻清楚的

簡述步驟:
1. JWSDP
2. Web container 偏好設定到 3-6.pdf p18
3. 接著改用 xfire 部屬 (找了一些資料稍微比較,感覺設定比較單純)
4. 建構 pojo and then copy classes 到對應目錄 (註1.)
5. 測試網址

成功的話,在 http://localhost:8080/webservices/services/communication?wsdl 會看到 XML資訊。

留意!開發環境跟發佈環境可能因為版本新舊,或是納入 .jar 的完整性,可能會遇到一些錯誤,解法是自行加入xalan.jar跟serializer.jar。
http://www.blogjava.net/XXNiuLang/archive/2007/08/15/136952.html

另外是要發佈到 Weblogic 的 qname 問題,請參考官網
http://xfire.codehaus.org/XFire+on+Weblogic+8.1

註:
1.
JWSDP: Java Web Services Developer Pack - Java Web Services相關工具的集合

Web container負責執行 JSP 和 servlet. Web container 提供一些服務(services),
諸如網頁請求分派(request dispatching), 安全控管, 同步控管(concurrency),
和生命週期控管(life-cycle management).

Web container 同時提供一些API的執行 如命名(naming), 交易(transactions),
email 等. 一些設定可以在程式部署時定義在Web container. Web container
最主要的功能是支援HTTP protocol.

From EJB的基本觀念介紹 and Wiki Page
POJO: Plain Old Java Object(其實就是一般的 Java Class)

#延伸閱讀
XFire入門

POJO Web Services using Apache Axis2

Axis vs XFire

Building a Simple Web Service (有點舊)

2008年5月26日 星期一

[筆記] jQuery-tablesorter

這是在撰寫系統時想到可以派上用場的功能,同樣的除了 include jquery.js 外,只要多寫幾行 js,配上 html tag ,就可以完成以前可能要寫數十行程式的功能..

參考的來源在此 Flexible client-side table sorting,只要對於 jQuery 有點認識了,相信瀏覽過就知道怎麼寫了。

這邊做一些重點摘要:
1. include .js 檔
2. 定義 table id (經過測試,不透過id jQuery 也可以找到 table,可能是多 table 時才有差)
3. 新增 table 欄位標籤 ,分成 THEADTBODY,並且要有 th tag(這些在撰寫一般Html都是會被忽略的),如此一來 jQuery 才知道要對哪些欄位來進行操作。
4. 撰寫 js function
$(document).ready(function()
{
$("#myTable").tablesorter();
}
);
這樣子就差不多啦,也可以套用他的 theme,顯示不同的風格。在table sorter的背景圖示部份,是在 css裡指定,把 style.css 打開來看就會知道他怎麼指定個欄位與其動作樣式啦!(thead背景圖片路徑,表格的字體樣式置中等細節,都在這邊完成。)

[筆記] jQuery-Tabs

這是自己學 jQuery 所寫的第一個功能。



一開始上手有看到 ericsk 的文章,覺得看起來蠻不錯的。第二則有說明 Hello jQuery怎麼寫
function showMsg() {    // 設定 Hello 給 msg 物件
$('#msg').html(' Hello');
}

[節錄]
$ 在 jQuery 裡被定義為 jQuery 物件,
$() 則是用來取得頁面上元件(DOM element)的函式,
傳入的 ‘#msg’ 代表的即是 id 為 msg (跟 CSS 的用法一模一樣),
所以 $('#msg') 整個的意義是:
取得頁面上 id 為 msg 的元件,然後把它變成一個 jQuery 物件。

接著理解他的 DOM概念後,直接看 jQuery UI Tabs這邊,可以很清楚的看到透過指定 div 的 id 與 js code做一個對應: $('#container-1 > ul').tabs();,分頁功能就可以完成。

其中的 Start With Custom Tab,也是個很實用的功能,因為我們在有分頁的頁面,不一定跳過去都是想看到第一個分頁,可能想看到第二或其他分頁的資訊,接著我找到 getUrlParam ,透過在網址上串接變數,即可將分頁 index資訊傳到目的頁,但是需要留意
var index = $(document).getUrlParam("tab");
其中 x會被當成字元,所以得透過 eval()轉成 int!
$('#container > ul').tabs({ selected: eval(index) )});
如此一來,便大公告成。

當然,在 UI Tabs上還有很多其他切換的效果,可以選一個適當的做呈現,以Rotating UI Tabs example為例我覺得挺炫的,那麼配上我上述的 code 該怎麼改呢?只要改成以下

$('#container > ul').tabs({ selected: index , fx: { opacity: 'toggle' }});

這樣子就可以正常 work了!
ps. 原本的 .tabs('rotate', 2000) 是自動切換的秒數,用不到所以拿掉了。

備忘 switch tabs

[學習資源] jQuery

輔助 Ajax 功能效果的套件有不少,會選這個的原因之一是承接的系統,是用這個做當前端顯示,於是藉由這個機會好好摸熟吧!

其他套有機會再多接觸來比較看看。

從摸索到上手找了不少參考資料,做一下整理吧!

#教學類
jQuery Tutorials for Designers(英)
Learning jQuery(英)
Easy Ajax with jQuery(簡)
jQuery查詢手冊(簡)

#使用心得類
jQuery Selector Test
jQuery神奇的選擇器(Selector)
jQuery 教學 - 基礎篇 (上一層還有篇文章)
jQuery, I LOVE YOU
jQuery some example (一些心得筆記)


#文件查詢類
API查詢(版本非最新)
官方文件

2008年4月14日 星期一

jsp 程式透過 session 取得 hashmap 值

承接的系統,因為需要處理一個比較複雜的資料傳遞,想說試著用 hashmap 看看。日前是卡在傳完後要怎麼引用,經過多番嘗試與查詢,終於踹出來惹。

sample code:

.java
Map list = new HashMap();
ArrayList ar=new ArrayList();
ar.add(new String[]{"101","honda"});
ar.add(new String[]{"102","asuka"});

list.put("100",ar);
request.getSession().setAttribute("Slist",list);

是由 arraylist 串到 hashmap 的資料型態,構成 arraylist 又是 String[]。

.jsp
"${sessionScopeSlist['100'][0][0]}"

在呈現單筆資料,如此可以正確印出「101」
後面的 index如為 ['100'][1][1] 則是印出「asuka」

之前會卡在無法正確引用,應是 'single quotes',卻一直在試 double quote, [number]組合。

不過原本的系統的資料是有好幾組 key與 value對應,所以顯示部份是包在 foreach 裡,如下:

c:forEach items="${sessionScope.Slist}" var="rowdata">
li> "${rowdata}" ﹤/li>
﹤/c:forEach>


以塞入 99、100 之key 為例,會秀出
- "99=[[Ljava.lang.String;@c2ee15, [Ljava.lang.String;@19cd75a]"
- "100=[[Ljava.lang.String;@c2ee15, [Ljava.lang.String;@19cd75a]"
(物件資訊)

如要指定 string array 的值,或是取 key值寫法就是 .key 與 .value,所以改成這樣子就可以了!

"${rowdata.value[0][0]}"

2008年3月25日 星期二

Vim plugin - taglist

現今除非是已熟悉 command 環境下作業的人,不然大多數 programmer 還是習慣
用個圖形介面的編輯器/IDE,來協助程式撰寫,而如果在某些情況下,
不得不用 unix-like 系統下的 vi來編修程式,也可以考慮這個方便的外掛,
相信使用上會更加便利。

當然,如果是想摸熟 vi編輯器的人,更是不能錯過的一項利器。

操作說明:,輸入`Tlist',左邊就會出現該程式裡的class、function、variable列表,
藉由 highlight focus可以快速跳到該程式片段,

快速鍵 ctrl-w h 與 ctrl-w l 用來切換 taglist `左列對照視窗'與`編輯視窗'。

使用畫面快照

留意使用前要先裝 ctags (/usr/ports/devel/ctags/)

安裝與設定
http://blog.elleryq.idv.tw/2006/05/vimtaglist.html
http://blog.johnpupu.tw/?p=125

更詳盡的操作請參考

Screen Tool in Unix-Like

現在大多數電腦使用者在作業時,通常會使用多重視窗/分頁的方式進行操作,
比如逛網頁會使用 Firefox 或 IE7 的 multi-Tabs 功能,
上 B會使用 PCman、KKman等軟體方便登入多個站台,
那麼假如我們是要使用工作站,為了安全起見通常是使用支援 ssh 的 putty 工具,
那在這終端機上同樣想要操作多個視窗,有什麼方便的機制呢?

解決方案是使用`Screen',command中下了這個指令就可以使用了
#常用上手指令 ( ^: ctrl)
^a+c : Creat new screen
^a+z : 丟到背景 //fg: 回前景
^a+a : switch screen between two windows
^a+n : next screen
^a+x : lock screen
^a+0 1 2 .. n : 指定視窗
exit : close window

Tips: 常用指令的可以加到 .cshrc ,讓自己的熱鍵更順手

#參考資料

Wiki解說
unix 上 screen 指令用法
screen 教學

2008年3月5日 星期三

從 ASP.NET 3.5看樣板抽換

是說之前有一段時間沒碰 ASP.NET 了,所以在想網頁架構時,不曉得 .NET這邊是怎麼做 MVC的,找了一些資料來看目前能做到的事。


仔細想想,中文字面上的樣板(Template)抽換有兩種含意,第一個是網頁呈現(View)與後端資料處理的分離,是指在變更版面設計時,其他程式片段(程式邏輯,連接資料)不太需要更動的設計理念,也就是廣泛稱之 MVC的架構,而這個其實在 ASP.NET 3.5已經有支援了!裡面的影片展示蠻詳細的。

另一個層面,則只是探討網頁版面的風格樣式不同(圖片顏色大小等),實做上的解決方案其實只要透過 ASP.NET Themes and Skins就可以快速切換佈景主題了。

延伸閱讀:
ASP.NET MVC Framework(微軟Web平台的總經理Scott Gu Blog的教學文件)

ASP.NET Themes and Skins 範例
ASP.NET MVC + jQuery + Newtonsoft.Json 快樂的AJAX

Visual Studio .Net 2008 新功能與各版本差異

vs.net 2005都還沒摸熟, 2008就出了,學習的速度真是比不上軟體開發的進化呀。


可以先看 從 2003到 2005的演化,文中指出 Express 版本適合給業餘或是初試 .NET 開發環境的人上手。其次也提到為了團隊開發的方便,微軟也出了 Team Foundation Server,這在多人開發的專案上有其方便性。其他細節功能請自行參閱囉。

至於 2008的新版本,請看 IThome的介紹預覽Visual Studio 2008新功能,個人覺得蠻詳盡的!在 JavaScript(除錯、Intellisense機制)跟 CSS(WYSIWYG Editor Tool、Intellisense機制)方面,對web programmer都是很方便的。
這篇文章有一些其他快照跟說明,與VS 2008 Web Designer and CSS Support

延伸閱讀:
關於Visual Studio 2005的版本
Visual Studio 2008 Product Comparison官網很詳盡的列表

由拖曳自訂個人網頁區塊

最常見的大概就是 iGoogleWindows Live,還有包括我目前服務的愛政大系統(樓下同仁的作品^^)。

這功能似乎是 web2.0 網站的風格特色之一,由於最近要製作老師樣板網頁,所以也來研究一下怎麼實做。


一開始找資料時,先是看到 .Net dragPanel 的作法-(指定TargetControlID),不過其實這不是我要的。

翻書完才看到應該是要用 Web Parts 的方式來實做,看完以下的教學相信就會知道怎麼做了
[video]Utilize Web Parts and Personalization?
[PDF]個人化網頁


透過 WebPartManager 核心控制項,設定為 Design 模式即可讓使用者在欲自訂的版面上排版。
以下是找資料時看到的,以後做其他東西或許有幫助。

延伸閱讀:
用Javascript 實做拖、拉、放這個自由拖曳的範例,還有貼齊的效果

JavaScript: DHTML API,Drag & Drop for Images and Layers
後面這個除了自由拖曳,還可以按 shift 來縮放圖片元件,是蠻有趣的應用

2008年2月23日 星期六

[政大課程] 200802 WinForm教學

前言:是計中的同仁開的課程,算是以開發新的校務系統所用的技術架構為例,
一方面算是學自己不會的技術,一方面也了解校務系統的開發模式與流程,
在講課中藉由同仁的提問,也可以體會到設計一套大系統所需要做的前置規劃,
這大概是以前比較少會注意到的細節...@@a
加入新功能系統所需要做最少的更動
各元件獨立開發的便利性
錯誤訊息分別給程式開發員與使用者看的區別
減少組件改寫需要付出的代價(重編、發佈)

主要用的架構是 .Net Remoting,以資料庫連結為例,所有功能會用到連DB的,
都會通過一個共同的連線組件。那麼意味著以後連接組件部份有改寫,
只要重寫這一塊就好,因為其他項目功能連接都是透過這一塊不需變更。

細節筆記:

.Net a)CommonLib b)UserControl

在 Host (主控台)上用最基礎的訊息要求服務 SendMessage() Service 來做溝通,
參數指定(who, do what, how para1, how para2),回傳成功否。
(只是訊息傳送,非 Event 事件)

ex how1: SQL Command、how2: 回傳資料

(.dll)功能組件,有三種
1. .Class : 寫功能
2. UC : 有介面的元件
3. WinForm: BasrDlg(Dialog)
(只有 UC 需要手動 dispose )

BaseForm: dispatch()派遣
functionPro: 功能列表 //列於資料庫,可查詢及觀看函式詳細資訊
.codetxt 轉換對應
組件直接 new 完註冊(給host),比用 sendmesg 的寫法來的簡潔快速

組件的 ColumnGroup 意義上形同多了 where 功能

常出現的 DBerror 存到 local cache(避免打死結)

新寫好一個功能,將 dll發佈到跟 TestApp 同一個目錄,即可測試!

心得:整體上課感覺很不賴,針對組件仔細去計較那些架構設計的夠不夠人性化、
有沒有彈性,多寫一個需要copy&paste需要量,可以在精簡嗎?
乍看之下是程式設計師的思緒該做的考量,不過大概也是科技(程式的高階)
才能讓懶人做的如此徹底(笑)!

#延伸閱讀

分散式系統架構 .Net Remoting介紹

.Net Remoting介紹
探討生命週期跟效能

[工作日誌] 初試學校計中系統

這也算是一個小公司的營運模式吧,只是對象是學生及老師,
上下班這邊採校務裡的出勤系統,來跟走的時候登入按一下。



client 端程式每次執行會檢查更新,
更新方式是用ftp連線(本地端有防火牆的需要注意有無鎖住)。

工作概況是每兩週繳一次工作進度狀況,包括業務諮詢、行政處理、研討會議,
還有需求單完成度。不定時有上課的活動(可能是中心同仁或是其他老師)。

開發方式的細節,學校系統每一兩週會把現存的資料備份到另一個 TestDB,
利用點擊 *.reg改變自己電腦的開發環境,切換連到測試資料庫還是學校資料庫,
這樣子處理算是比較安全且保險吧!

這部份還搭配一個小工具,稱為 SQL Talk 可以確認自己的sql撈出來的東西(註),
至於要看龐大的學校資料庫欄位(資料意義),則由校務系統裡的
單位組織(電算中心系統)功能:[系統組] > [檔案及資料維護] > 查詢欄位
來進行關聯性的查詢

有些小東西看介面就可以知道是稍微有年代惹,
不過基本上功能做得到以開發人員的角度好像是目前符合需求就不必在弄新東西了,
給學生用的就不一樣惹,需要弄好一點的介面...
而雖然是舊的不過可以看當初開發者已經就許多機制處理完會發生的問題,
至於有瑕疵的,則是不斷改善中(or 研究新的解決方案)

註:
option > session >
。release lock ˇautocommit
ˇsaving setting

2008年1月29日 星期二

Zend Framework 安裝筆記

*PHP的單元測試-PHPUnit
1.Download a release archive and extract it to a directory that is listed in the include_path of
your php.ini configuration file(依照你的開發環境).
2.Rename the pear-phpunit script to phpunit. //win32是bat file
3.Replace the @php_bin@ string


*.htaccess使用指南
教學中需要建立這個檔案,除了幫忙導向之外也建立了一些安全方便的機制。
啟動 Apache的 .htaccess功能,搜尋「 httpd.conf: AllowOverride」 改為 All,
並且把 LoadModule rewrite_module modules/mod_rewrite.so 開啟。

*連接資料庫
php.ini 確認開啟
enable extension=php_pdo.dll
extension=php_pdo_mysql.dll

include_path設定你的 Zend Framework 與其他 Libs 路徑

*其他
設定檔更新,記得重新啟動 Apache

遇到問題如果瀏覽器提供的資訊不夠,可以去看 Apache/Mysql 的 log
基本上 AppServ 的預設目錄都幫你建好了,要檢視還是設定/重開都很方便。

*逐步跟著官方的程式教學練習,唯一遇到的問題
在跑首頁的隨機數字,本機的 IE and Firefox 都運作正常,可是在 Zend Studio 裡面執行
卻會顯示「Fatal error: Using $this when not in object context in 」,總之是 $this->RadomNum問題,後續為了趕時間就先不理了此 bug惹。直到整個範例都完成後才又發現這個問題消失了,總之現階段也還不太明瞭為什麼。

Zend Framework 快速上手

主要是參考官方的影片教學,環境架構好之後跟著一步步做應該是沒有問題(瑣碎設定筆記)。

自己除了用 AppServ 下去安裝開發環境,也選了同一個公司的編輯軟體 - Zend Studio,覺得也蠻好用的,看一下官方提供的 Demo示範相信就會清楚他的強大功能,其中「code snippets」算是一個很方便的功能吧,想要寫什麼功能的程式碼片段,可以直接匯入網路上人家寫好的加以修改。其他 WSDL、XML輸出還有CVS/SVN版本控制都有,如果沒有已習慣的 IDE推薦使用看看。

不過開發時有時候會遇到 IDE內建的編譯結果跟外部瀏覽器不一致的問題,這部份還在摸索中,Zend Studio算是提供了一個快速的瀏覽模式,但有增加了一些不確定性。

Getting Started with the Zend Framework(PDF)

#找到更多教學參考 update 20080620
[Zend Framework] MVC 教學 //上層還有其他關於認證,資料庫的教學
Zend Framework之全國加油站
#其他參考
中文版手冊
Zend vs CakePHP
用 Smarty 來擴展 Zend Framework