2009年3月30日星期一

兩則新聞我這麼看

首先是星雲法師公開發表的一段話,這個大和尚是這樣說的。

星雲法師:「來往,你來我往,來往多了,誰來誰往都搞不清楚了,那就統一了。或者是你愛我我愛你,究竟誰是你誰是我也搞不清了,誰是台灣誰是大陸,都一家,就統一了。」

關於這段話,我只有兩個字,中肯!而且我覺得政府現在就在作這件事情,簽ECFA啦,開放這個開放那個,總之就是要跟中國大陸多多往來,星雲法師都親自開釋了,多多往來就可以統一,我想這個大概也是政府的目的,可能有人會問那台灣的利益呢?我會回答政府認為台灣最大的利益就是跟中國可以統一,只要統一,現在沒飯吃也沒關係,反正以後一定是大大的有好處。

再來是另一個新聞,從funP看來的,跟台派部落格的聚會有關,大概的情形就是台派部落格的私人聚會,被警察闖入關心,詳情請看

要如何看這件事情?很簡單,政府就是做賊心虛嘛,自己作不好整天就想著別人會反他,也不動腦想看看,作那麼爛不反你反誰,就是心虛才會想要去控制人民,因為他知道自己不好,很多人民對他不滿意,而對於滿意度過低,政府拿出的解決方法就是把這些「不聽話」的人都處理一下,最好是可以都拿去作雞精(要劃一下輔助線,不然現在風聲很緊。),才會一天到晚有如芒刺在背,自己的位置才作的穩。

現在政治正確是在社會上立足很重要的一個求生技能,但是目前政治正確的人也不要太開心,好像得到了很多利益,但是不要以為你的生活就會永遠這麼順利,統一之後有沒有可能被批鬥?我不知道;不管作什麼事情警察會不會來關切?我也不知道;如果答案是否定的,我想問這些人可以保證他的下一代,下下一代,你的子子孫孫都不會受到這樣的迫害?

如果在以前,要我回答這個問題,我一定比這些目前政治正確的人還要有信心,因為我生在一個保障人權的國家,縱使我們的司法天天死了又復生,但我相信我們一直在往更好的地方前進。

現在如果有人再問我這個問題,我會跟他說,如果我沒有能力移民,我大概不會想要生小孩了,我不希望我小孩生活在這樣的環境,而我沒有任何的力量可以去保護他,因為我們的國家將會變成一個沒有人權,沒有法治,完全弱肉強食的社會,說到這邊,我實在不得不驚訝,這樣的生活好多人在盼望著,說實話,好多人還等不及了呢。

2008年12月1日星期一

為什麼tagging很受歡迎?

Tagging在web applications真的很熱門,到底為什麼這麼熱門勒,一下子被問到可能會有點答不上來,剛剛做meeting投影片做到一半,發現這篇paper整理了幾個tagging的特點,感覺還不錯,下次被問到就用這個回答吧。

Why tagging is so popular?

  • Tags make it easy and intuitive to retrieve previously viewed resources (Hammond et al. 2005).
  • Further, tagging allows users to categorized resources by several terms. (Millen, Feinberg, and Kerr 2006).
  • Collaborative tagging systems have a low entry cost. It doesn’t require users to conform to a rigid hierarchy.
  • Users may enjoy the social aspects of collaborative tagging (Choy and Lui 2006).
  • Users may share or discover resources and connect to people with similar interests.

Reference:Personalization in Folksonomies Based on Tag Clustering
Authors: Jonathan Gemmell, Andriy Shepitsen, Bamshad Mobasher, Robin Burke

er, Robin Burke

2008年11月28日星期五

專題演講雜記與感想 - Yahoo!的Open Strategy

Yahoo!是一家非常知名的網路公司,雖然在全球市場的表現並沒有非常好,但在台灣擁有極高的市佔率且具有領導性的地位。近年來Web 2.0的概念非常的火紅,新觀念以及新技術讓網路更為的開放,內容也越來越多元,多變的網路環境讓許多網路公司也面臨許多挑戰,Yahoo!的市占率雖然苦苦在Google後面追趕,但仍然致力於創造更開放的平台,創造使用者更好的使用經驗,希望從另一個角度切入,掌握市場的脈動,打造自己的品牌與增加自己的市佔率。

演講者一開始提到的群眾智慧以及UGC是現在網路的主流,這是Yahoo!一直都非常強的地方,例如Yahoo!的知識家在台灣廣受好評,利用眾人的力量彼此互助,解決彼此的問題,許多遇到問題第一個直覺都是上知識家。也就是因為網路的生態產生了如此的改變,Yahoo!開始調整自己的經營方針,朝向open innovation的方向前進,Yahoo!希望可以利用網路上群體的智慧來進行企業產品的創新,為了要達到這樣的目標,Yahoo!提出了open platform,這個平台可以提供使用者許多的已經設計得好的工具,幫助使用進行套件的開發,藉由這些使用者開發的套件來創造更好的使用者經驗。這個平台讓我聯想到Facebook,Facebook也是利用這樣的平台讓使用者自行開發新的應用,讓整個社群更為的豐富,Yahoo!擁有的content還有涵蓋的範圍遠遠超過Facebook,如果真的可以達成這樣的效果,相信會對網路業造成極為巨大的衝擊。

Yahoo!的目標是要讓網路更為的開放以及更多的社群,這些訊息在之前我也曾經從網路上看到過,他們要在讓社群進入他們每個網路服務之中,但那時候屬於一個非常模糊的概念,沒有提到如何的去達到這個目標,在課堂上,演講者有提到幾個在國外才有的服務跟一些正在實驗階段的構想,看起來是相當不錯,但是在Web 2.0世界,很多時候是雞生蛋、蛋生雞的問題,要讓使用者參與應用服務的開發,首先要有一定使用者數量,而且使用者要愛用這樣的服務,藉由這些使用者的貢獻才能吸引更多的使用者,Yahoo!在台灣的使用者數量是沒有什麼問題,但是在國外可能就沒有這樣的順利,再者,一些具有開發能力的技客對於Yahoo!的品牌是不太認同的,他們會不會熱衷於開發相關的應用,也是個很大的問題。

雖然目前的情勢對Yahoo!看起來是非常不利的,但Yahoo!開放這條路走也是個對的方向,希望Yahoo!可以藉由大量的開放,慢慢的建立起自己的品牌,打造自己的口碑(例如Yahoo!的YUI就作的非常好),或許Yahoo!在未來可以再掀一波高潮,重回往日的榮耀時光。

2008年10月11日星期六

下個台灣兆元機會,科技業瞄準的新藍海 ?

很久以前就曾經聽過日本有機器人博覽會,那時候就很好奇現在製作機器人的技術到底進步到什麼樣的程度了,該不會展場裡面就只是幾個像玩具式的遙控機器人,或者是一些自動化生產的器具,是有智慧的機器沒有錯,但怎麼看也不會像人。

在聽完這次演講之後,我才知道原來機器人這個領域已經進步到超越我想像的地步了,有的機器人不但真的長得很像人,而且真的可以作出跟人一樣的動作,甚至可以作跟人一樣的事情。


小時候只要看過卡通跟漫畫,多多少少都會對機器人有點憧憬,但隨著年紀的增長以及科技的限制,看過很多不是機器人的"機器人",才發現機器人是這麼遙不可及的,直到現在,看到機器人產業如此的蓬勃發展,才又重新燃起了對機器人的浪漫幻想。

image image

這次的演講標題為「下個台灣兆元機會,科技業瞄準的新藍海。」,主講者自己覺得這個標題下的有點重,但事實上從市場面來看的話,機器人的確是有莫大的商業潛力,這個產業到底有沒有希望?這的確很難說,但不可否認的是這是一個長期的趨勢,科技總有一天會夠成熟,成熟到足以作出我們滿意的機器人,除非有哪個天才可以用數學或者邏輯證明出我們永遠不可能作出機器人,否則發展機器人這件事情大概就是一個不會變的趨勢了。

事實上,我認為機器人已經找到自己的利基點,目前機器人已經大量的被製作為玩具以及家具,例如鴻海代工的Pleo小恐龍,還有現在很紅的掃地機器人,這些都是具有商業價值的商品,機器人已經初步的走出實驗室,進入一般的家庭,這些商品一方面可以賺取商業利潤,一方面也可以支援機器人的研究與發展,這樣的模式將會是發展機器人一個很好的溫床。

image    image

當然機器人的發展也有許多的挑戰,除了要發展更高跟更擬真的機器人之外,最主要問題還是製造成本,目前許多的機器人的售價都控制在台幣一萬元到一萬五千左右,扣掉利潤之後在這個成本範圍之內,必須要創造出功能強大且讓消費者接受的機器人,一個機器人裡面要有多少零件還有運算晶片,如何作到cost down,就變成機器人產業是否可以繼續推陳出新的重要課題,不過我想這個問題對台灣來說不太大,只要技術問題解決了,基本上台灣要作多便宜就有多便宜,看看現在的DRAM就知道,記憶體真的超不值錢,但台灣也不能僅僅限於代工,在這波機器人浪潮裡,還有許多潛在的機會,或許這真的是台灣下一個明星產業,目前國內也有許多知名公司紛紛投入研究,希望機器人產業在不久的將來真的可以在台灣開花結果。

2008年9月11日星期四

海角七號-台灣一直未完的故事

image 

前幾天終於去看了海角七號,去看的原因一半是因為名氣很大,很多人推薦,另一半的原因是他是國片而且名氣還很大,在我的印象中,國片已經沉寂了很長一段時間,不是沒有好的作品,只是都沒有引起太大的迴響。看完海角七號,心中的感觸很深,看完很直接的感想就是,這真的是「台灣」的電影。

海角七號充滿著濃濃的台灣味,從演員、劇情一直到演員的表演,都散發出台灣的感覺,有別於以往的「台灣拍的電影」,海角七號有的特殊的台灣文化,劇情裡描述的生活就是每天發生在你我周遭的故事,裡面的角色,也是你我熟知的模樣,劇情的主軸也是融合了台灣的歷史,述說著在台灣一直尚未結束的故事。

還記得小時候曾經念過的課文片段「婆娑之洋,美麗之島」,類似歌頌或者描述台灣的文章在課本中佔的篇幅不多,而且文章給人的震撼力也不似電影如此巨大,再加上當時年紀小,心中的感觸沒有如此深厚,在看完海角七號後,才重新的了解到我們自己的故事有多重要,也才第一次有了根的感覺。

劇中除了讓人笑到不行的片段之外,有幾個地方讓我非常有感覺,首先是劇中的代表看著恆春的海洋,口中喃喃自語的說,這麼漂亮的海洋,怎麼會留不住年輕人,這一幕讓我想到在台灣的我們,其實也常常嫌棄台灣,我們有很多美好的東西,但我們總是覺得國外的月亮比較圓,什麼東西我們都覺得別人比較好,盲目的追求之下,我們喪失了我們自己的生活文化,更甚者還貶低了自己的文化。

另一個讓我印象深刻的地方是他們幾個人湊在一起練團的時候,在阿嘎(阿嘉)唱到一半,被其他團員打斷,隨後加上一段原住民式的獨唱,最後被keyboard小妹妹以「阿門」作結,這一幕展現了台灣多元的文化,我們有很多不同的種族,不同的宗教,不同的文化,因緣際會我們聚集在這邊,我們互相的融合,在台灣生根,發展出我們自己的文化。

海角七號真的是一部相當好看的電影,我實在佩服參與這部片的每個人員,他們可以不局限於任何一種意識形態的觀點,忠實地呈現了台灣的故事,而不只是台灣閩南人或者台灣外省人、台灣客家人的故事,這個故事是你我的故事,台灣土地的故事,而台灣就如同劇情中描述的一樣,很多事都還沒結束,台灣還沒到終點,我們還是現在進行式,我們承接了許多歷史的包袱,也擁有了許多共同的回憶,甚至還有很多的「我們」在這塊土地上才正要發生,希望每個人都可以去這部電影,也希望每個人都可以在台灣找到根的感覺。

image

image
(女主角好正)

2008年9月4日星期四

經濟政策也該化整為零

今天股市慘跌了172點,一次跨越重重障礙,正式跌破20年線,從520以來台股就跌了30%,股民血流成河,各地哀鴻遍野,在一個國家中,股市往往反映的是國家經濟狀況的預期心理,如果國家未來的前景不錯,股市的表現也不會太差,如果大家對未來悲觀,股市自然也不會好到哪裡去。股市的表現「不佳」(事實上應該用淒慘來形容),有許多的原因都會產生影響,有可能政府政策的不當所造成,也或許來自於國際局勢不穩定的影響,雖然不知道確切的原因是什麼,但我相信的是目前的經濟政策並沒有辦法帶領台灣脫離困境,也無法為台灣在未來建立台灣的競爭力。

我記得在總統辯論會上,馬英九主打的經濟政策是633,這三個數字應該是耳熟能詳,尤其最近新聞一直拿出來幫大家複習。如何達到633這個標準,馬政府主推愛台建設,用大規模的基礎建設來帶動經濟成長,由政府帶頭花錢來刺激經濟,這種政策的中心思想是由政府領導經濟的走向,政府將經濟成長的重責大任覽於一身,擔任國家經濟的主角。

乍看之下,這樣的政府和這樣的政策頗具有責任感,但我認為國家不應該扮演經濟發展的主角,主角應該由人民來扮演。由於現今的社會發展快速,世界不斷的改變,產業也不斷更新,我們可能會永遠猜錯或者忽略未來的明星產業,在朱學恆的演講中也曾提到,「我們必須教導現在的學生,畢業後投入目前還不存在的工作、使用根本還沒發明的科技、解決我們從未想像過的問題。」,幾段簡單的文字,忠實的說明了我們處在一個極度多變的世界,未來的不可確定性越來越大,而面對一個幾乎未知的未來,政府不應該也沒有能力將國家經濟發展的大任攬在自己的身上,因為政府也無法預測未來會如何發展。

面對一個未知的未來,我們需要很多元的意見與思維,還需要不停多方面、多角度、多層面、多領域的try and error,政府應該將經濟發展的責任下放,積極培養在各個領域具有熱情的人才,由人民來開創不同的產業為國家創造財富與未來,讓人民成為國家發展的主角,人民相對於政府,就好像小企業對於大企業,具有相當的彈性,而且為數眾多,可以接觸的層面極廣,從最通俗的市場到最高階的市場、單一文化的市場到多元文化的市場都可以接觸,其所擁有的創意以及多元性都不是政府團隊可以比擬的。

這樣的想法其實並不新鮮,近年來許多企業文化也都有這樣的轉變,從過去由企業高層領導企業的發展,改變成所有企業的員工都可以對企業的發展方向有所貢獻。政府在經濟發展的角色應該退居二線,成為一個配角,成為配角不代表政府變得不重要了,事實上政府可以作得事情仍然很多。記得前幾天才看到一個新聞,一對外國兄弟在台灣開了行銷公司,專門幫助台灣的傳統企業打進國際市場,類似這樣的問題都是政府可以努力的方向,輔導和幫助民間企業與國際接軌,與國外的企業競爭。政府應該打造一個良好的平台,作為各項領域發展的溫床,而不是局限在一個特定的範圍,進行同一性質的經濟發展。這個概念有點像Web 2.0,Web 2.0的網站也是致力於提供一個良好的平台給使用者,不同的使用者自然會激出不同的火花,這些火花為網站帶來的效益將是不可預測的。

政府的經濟政策也應該如此,在面對一個不可知的未來,應該捨棄以大規模建設領導經濟的方式,將經濟政策化整為零,創造一個良好的環境,讓人民有能力實踐自己的理想,將經濟發展的大旗交給每一個人,我相信這樣的作法不但可以帶領台灣脫離困境,也可以為台灣創造比現在更強大的競爭力。

2008年8月21日星期四

Java Date function的使用

這個函式不是很常用,每次遇到都要查一次還滿麻煩的,這次一勞永逸把他記下來,下次就不用再去Google了。

*
* ShowDateTime.java
* Please See SimpleDateFormat
* http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
* Created on 2007年5月17日, 上午 7:57
*
*/


import java.io.*;
import java.util.*;
import java.text.DecimalFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;

/**
*
* @author RYANPAI
*
*/

public class ShowDateTime {

/** Creates a new instance of ShowDateTime */
public ShowDateTime() {

}

/**
* @param args the command line arguments
*/

public static void main(String[] args) {
// TODO code application logic here

// 今天
System.out.println("showSerial = "+getDateBySerial());

// 相差幾天
System.out.println("20070517 ~ 20060731...相差天數..."+calcutePeriod("20070517","20060901"));

// 20天前日期
System.out.println("20070517...20天前..."+calcuteBeforebyStr("20070517",20));

// 20天後日期
System.out.println("20070517...20天後..."+calcuteAfterbyStr("20070517",20));

// 是否閏年
System.out.println("是否閏年...");
System.out.println("1900..."+isBissextile("1900")); // false
System.out.println("2000..."+isBissextile("2000")); // true
System.out.println("2007..."+isBissextile("2007")); // false

}


// ****************************************************************************
// * 回傳系統日 yyyy/MM/dd
// ****************************************************************************
private static String getDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
java.util.Date today = new Date();
return String.valueOf(sdf.format(today));
}

// ****************************************************************************
// * 回傳系統日 yyyy-MM-dd
// ****************************************************************************
public static String getDateByDash() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date today = new Date();
return String.valueOf(sdf.format(today));
}


// ****************************************************************************
// * 回傳系統日 yyMMdd
// ****************************************************************************
private static String getDateInShort() {
SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
java.util.Date today = new Date();
return String.valueOf(sdf.format(today));
}

// ****************************************************************************
// * 回傳系統日 yyyy-MMM-dd (java.util.Locale.US)
// ****************************************************************************
private static String getDateBySerial() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMM-dd",java.util.Locale.US);
java.util.Date today = new Date();
return String.valueOf(sdf.format(today));
}

// ****************************************************************************
// * 回傳系統日至時分秒 yyyyMMddThhmmss*//
// ****************************************************************************
private static String getDateTimeStrWithT() {
Calendar now = Calendar.getInstance();
long ndate = now.get(Calendar.YEAR)*10000+(now.get(Calendar.MONTH)+1)*100+
now.get(Calendar.DAY_OF_MONTH);
long ntime = now.get(Calendar.HOUR_OF_DAY)*10000+now.get(Calendar.MINUTE)*100+
now.get(Calendar.SECOND);
return String.valueOf(ndate)+"T"+ String.valueOf(ntime);
}

// ****************************************************************************
// * 計算兩日期區間差異回傳??天*//
// ****************************************************************************
private static long calcutePeriod(String dateStr1,String dateStr2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
ParsePosition pos1 = new ParsePosition(0);
ParsePosition pos2 = new ParsePosition(0);
java.util.Date date1= sdf.parse(dateStr1,pos1);
java.util.Date date2= sdf.parse(dateStr2,pos2);
long dateDiff = 0;
if(date1.getTime(){
dateDiff = ((date2.getTime()/1000-date1.getTime()/1000)/(24*60*60));
}
else {
dateDiff = ((date1.getTime()/1000-date2.getTime()/1000)/(24*60*60));
}
return dateDiff;
}

// ****************************************************************************
// * 計算??天前回傳日期字串 *//
// ****************************************************************************
private static String calcuteBeforebyStr(String dateStr1,int bef) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
ParsePosition pos1 = new ParsePosition(0);
java.util.Date date1= sdf.parse(dateStr1,pos1);
java.util.Date date2 = new Date((date1.getTime()/1000-(bef*24*60*60))*1000);
return String.valueOf(sdf.format(date2));
}

// ****************************************************************************
// * 計算??天後回傳日期字串 *//
// ****************************************************************************
private static String calcuteAfterbyStr(String dateStr1,int aft) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
ParsePosition pos1 = new ParsePosition(0);
java.util.Date date1= sdf.parse(dateStr1,pos1);
java.util.Date date2 = new Date((date1.getTime()/1000+(aft*24*60*60))*1000);
return String.valueOf(sdf.format(date2));
}

// ****************************************************************************
// * 依base_month取得當月份第一天 : yyyyMM01 *//
// ****************************************************************************
private static String getFirstDate(String base_month) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
ParsePosition pos1 = new ParsePosition(0);
base_month = base_month +"01";
java.util.Date FirstDate= sdf.parse(base_month,pos1);
return String.valueOf(sdf.format(FirstDate));
}

// ****************************************************************************
// * 回傳是否閏年 *// base_year = yyyy
// ****************************************************************************
private static boolean isBissextile(String base_year) {
boolean checkIsBissextile = false;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
ParsePosition pos1 = new ParsePosition(0);
String base_year_0228 = base_year +"0228";
String base_year_0301 = base_year +"0301";
if(calcutePeriod(base_year_0228,base_year_0301)==2) checkIsBissextile = true;
return checkIsBissextile;
}

}
資料來源:JavaWorld