2010年4月28日 星期三

Facebook 的Open Graph 與 Google 的關鍵字廣告

這陣子,Facebook的 Open Graph 一推出,網路上對於語意網、社群網路的隱私權問題甚至是接下來要討論的與Google之間的商業競爭的討論(Facebook陰謀論?) 都出籠了。

某人對於Facebook Open Graph 對於Google 關鍵字廣告的衝擊的文章。

http://epromotor.pixnet.net/blog/post/31004644

我個人認為,還是有差別的。
Google關鍵字廣告是靠:『某個人』目前正在對某個字感興趣。
Facebook是靠:讓『你認識的人』知道:『你』認同某個內容(可以是連結、Web App或廣告)
來讓廣告商有個平台來進行推銷。 
前者是任何『當下』對這個字有興趣的人會看到廣告。
後者是將某位客戶的興趣揭露給他的朋友甚至大眾,幾乎是要這個人拿他的信用來替別人的商品背書。


後者不見得會發生問題,但這確實有道德風險,如果客戶對所謂的『明確告知』跟Facebook不同的話。

賣香煙的盒子上得印『吸煙有害健康』、賣金融商品的簽約時都要有個『不保證獲利虧損』的條款,在Facebook上給個讚或許沒有這麼嚴重,但當你的朋友因為『看到你給了讚』而買錯東西時,他真的會完全不怨你嗎?或許大家都是『成熟的大人』,機率或許真的很低,但只要可能性不是沒有,你就確實拿了自己的信用替別人作廣告了。

至少要是買了差勁的東西,你的朋友會開始懷疑你的品味。

2010年4月23日 星期五

3 秒停高鐵?

大家都有國中畢業對吧?
我記得我國中時老師有教過,目標速度  = 初始速度 + 加速度 * 作用時間

V = V0 + A *t

所以300 km/hr 的物體要三秒停下來,他的加速度的計算就是:

先換算速度從km/hr 變成 m/s
300 km/hr = 300 * 1000 / (60 * 60) = 83.33 m/s
調整一下速度公式 (國中代數因式分解,不會的回去找老師跪算盤):  
A = (V - V0) / t
其中目標速度(把列車停下來)V = 0,初始速度(高鐵時速)V0 = 83.33 m/s,把參數帶入:
A = (0 - 83.33)/ 3 = 27.777公尺/秒平方

稍微Google一下(國中生會Google喔),地球的重力加速度約等於:
9.80665 m / s2

挖~ 一除下來怪怪不得了, 2.8 G阿。

人從三樓跳樓瞬間要承受的衝力差不多是距離地面3*3 = 9 公尺以加速度1G 執行下去的結果。阿如果重力加速度變成2.8G,那只要9/2.8 = 3.2公尺就可以達到一樣的效果了, 這意味著:

如果你椅子前方任何有機會可以阻擋你的東西比3.2公尺遠,你得到的結果就跟從三樓跳樓會是一樣的。

到底地震翻車比較會死人,還是從叫車廂內的乘客集體跳樓比較會死呢?

科科。

人如果笨,那至少可以把自己這輩子學到過最簡單的東西給完全弄懂,國中課本夠簡單了吧?

(所以說人好好的幹什麼要當記者?當到比國中生還笨。要不要我把國立編譯館時代的數學、理化課本翻給你看啊?)

2010年4月22日 星期四

Kohjinsha小筆電給我上!

家裡的老P4掛了,R.I.P.,但是它可是我拉驢子、BT最重要的機器啊。
沒了它我的謎片要打哪來?VeryCD上了只能乾瞪眼這可不行。

本來是打算用平常玩Game的 C2Q來跑,但不幸的是她就在我的床旁邊。
害我不是睡覺睡到一半被硬碟聲吵醒、就是被硬碟燈給閃到。

經過兩個晚上,我終於受不了了, 左看看、右瞧瞧,床底下翻一翻(無誤)
於是 :














在最克難的時候就算只是台ATOM小筆電也要給我上拉。

性能諸元:

Intel ATOM Z520 1.33hz(有Hyper Threading喔)
2GB DDR2 RAM
外接USB HDD (WD 640GB)
她還有光碟機、觸碰式螢幕、內建3G網卡(可惜當農場統統沒用)。

最大的好處:省電(ATOM CPU只有2W,三顆風扇都比他強。)、內接的4 Cell鋰電池比UPS強大太多了。
壞處:慢、而且可能會折壽(雖然有散熱墊了,還是有60度)、外接螢幕只有1024 * 768,作業系統是不能Remote Desktop的爛Vista Home Premium,這點最讓我不滿。


無論如何,我終於可以把我睡覺枕頭旁邊那個100W的電磁波發射源給關掉了。
加油~Kohjinsha SX,你主人沒錢,你就努力撐個一年吧。

2010年4月21日 星期三

一個Java Programmer的電腦

自己組裝的電腦  Duke, Nekobean, Glassfish 當然還要有一杯咖啡!

















宅阿~

2010年4月19日 星期一

憶組器,人腦細胞模擬?

 這陣子還蠻熱門的EE新聞,憶組器(memristor)的發展有了新的突破。
這個概念1971年就創造出來的,但直到現在人們才開始看到商業應用、實做的可能。

而某些科學家就開始打算利用它與神經細胞之間的相似性來打造有智慧的機器了。
 
http://www.eetimes.com/showArticle.jhtml?articleID=224400366

不太清楚憶組器是啥的可以從這裡開始:
http://zh.wikipedia.org/zh-tw/%E6%86%B6%E9%98%BB%E5%99%A8

2010年4月17日 星期六

剛剛在打末日之戰(Crysis)

Crysis是一個FPS第一人稱射擊遊戲,雖然是2007出的,但即使是2010年的顯卡也不見得跑得動。

今天把公司在用的電腦(我自己的)裡的顯卡拆回家玩Cross Fire(兩張HD5770好不容易可以特效全開最大,不過反鋸齒還是不行),打呀打的竟然發現這個:


真是熊熊嚇了我一跳,怎麼台灣的門牌會出現在外星人的巢穴裡勒?
難道...

2010年4月8日 星期四

他X的台灣大學教育(恨文,要戰,請!)

『大學不是職業訓練所!』

對,是他X的學術殿堂,全台一開160幾間,比夜市還多。
夜市還能貢獻一些地下經濟勒。那些多出來的大學除了磨耗年輕人的青春來養只懂得教難以活用的知識的教授還能幹什麼? 還間間菜色都一樣,淨是某些系在那裡排列組合(拎盃唸的系是大獨盃成員,免疫,挖哈哈~)。

『我們要平衡城鄉差距!我們是通才教育!』
我看是平衡城鄉間學店所得級距的差距,還有把年輕人通通變成廢才的教育吧?


18~23歲這四年有多寶貴這些人知道嗎?『所有人都是大學畢業』,搞到不適合透過大學去學習的人不去浪費那四年都不行。 說大學不是職業訓練,問題是連『職業訓練課程』這種半年一期可以搞定的東西都搞不定,那是要搞定什麼更了不起的東西?

這年頭不管結果是出來工作當黑手、還是搞什麼了不起的研究、不管你大學有沒有畢業,你一定得要有的就是『獨立思考的能力』、『自我學習的能力』以及『解決問題的能力』。
 因為除了時候到通通都得拖去種以外,天底下沒有學校、老師、父母可以保證未來是什麼。

結果勒?常常遇到小朋友東西不教就不會、要他們自己想就是兩手一攤、幫他Google 完連結給他,有資料可以給就不錯了還敢對英文面有難色。

台灣不是中國、不是日本,不是那些有著上億人口可以單靠自己人跟自己人做生意就能開心過活的地方。要能自己掌握自己的命運,而不是到時候被中國一口吞掉再像當年一紙馬關條約隨意丟棄,還是被逃來台灣的外來政權隨意奴役,對小孩子就不要太好。

HTML5 Canvas簡介

今天下午寫SBIR工作記錄簿寫到實在很幹,我對這種沒啥意思的紙上文書作業一向很皮(這是病),像這種類似小學寫寒暑假作業到家庭聯絡簿的東西比起看牙齒都還來的令我難過。
所以後來寫到後來大爆炸,冥冥之中就想起Gaius Julius Caesar的名言:(他誰?凱撒大帝啦。)

『作一件事不要只有一個目的。』(真的有這句話?起乩是吧?)

剛好,想起前陣子客戶也對這方面的需要非常殷切,就把心一橫,硬是把SBIR的內容,從原本是寫ZK Studio的實做,轉向了研究起HTML 5 Canvas 與 Java 2D API之間的差別。(喂喂喂~)

於是,ㄟ死逼唉阿寫完了,HTML 5 Canvas + Java 2D的API K過了,客戶想做的東西:以AJAX呈現影像辨識結果實做實時管理的功能也有著落了,一魚三吃,一箭三雕啊 ,哇哈哈~~~

言歸正傳,Canvas。

HTML 5 的Canvas instance,其實只提供兩個方法,那就是:

 getContext()完取到的 CanvasRenderingContext2D 
才是實際2D繪圖的主角。
這個CanvasRenderingContext2D,提供了一系列標準的低階2D Graphic 方法,供開發者在Canvas上畫出所想要的圖形,以下稍微介紹幾個重要的(要詳細,乖,去看這裡):

向量圖形:
簡單的rectangular 系列,例如:

  1.     ctx.fillRect(25,25,100,100);  
  2.     ctx.clearRect(45,45,60,60);  
  3.     ctx.strokeRect(50,50,50,50);  

標準的line path 繪製:

  1. ctx.beginPath();  
  2. ctx.moveTo(75,50);  
  3. ctx.lineTo(100,75);  
  4. ctx.lineTo(100,25);  
  5. ctx.fill();
  6. ctx.closePath();
其中fill()會以目前ctx的current Style去作填色。

Arc Path 繪製(可與line並用):

  1. ctx.arc(x,y,radius,startAngle,endAngle, anticlockwise);  
  2. ctx.arcTo(x1,y1,x2,y2,radius)

二次曲線、貝茲曲線:

  1. ctx.quadraticCurveTo(25,25,25,62.5);
  2. bezierCurveTo(75,37,70,25,50,25); 


影像鑲嵌:

將一個Image加入Canvas其實很簡單,只要

  1. var img = new Image();   // Create new Image object  
  2. img.onload = function(){ ctx.drawImage(img,0,0);  }
  3. img.src = 'myImage.png'// Set source path  

當然你也可以在img.src之後馬上call ctx.drawImage(),但這樣drawImage就會等到image遠端讀取結束才會離開,而你的程式就得等了。
其他還有很多drawImage相關的 arguments,例如scaling, slicing 等。

填色:

支援兩種style 填充方式與多種色彩格式
  1. ctx.fillStyle = "orange";  
  2. ctx.fillStyle = "#FFA500";  
  3. ctx.fillStyle = "rgb(255,165,0)";  
  4. ctx.fillStyle = "rgba(255,165,0,1)";  
  5. ctx.strokeStyle = "orange";  

其中rgba 的a 就是指alpha值,也可以透過設定

  1. ctx.globalAlpha = 0.3;  

來單獨指定。

轉換:
translate, transform, scale,基本上就是平面的 仿射投影(Affine)支援。(詳細自己看,念資工的線代忘記就wiki一下,念測量的忘記請去找塊豆腐撞死)。


動畫(Animation):
曾經(像我一樣笨)認為Canvas會跟Flash compete的人可以放下心中的大石了。Canvas畫上去的東西就是潑出去的水,要改變就是砍掉重畫,基本上也不會支援甚麼canvas中的圖形物件事件處理(沒關係,Ajax的Framework例如ZK是作得到這段的,都有人在Canvas上porting Quake2了,雖然performance...)。

以下是Mozilla官方推薦的Basic Animation steps:

1. clear the Canvas
除非你接下來要畫的東西會填滿整個Canvas,否則你必須先清除你之前畫的所有東西,要清除當下畫面,最簡單的作法就是呼叫clearRect(...);

2. Save the Canvas State
如果你改變了任何可以改變Canvas狀態的設定(styles, transformations, etc)而且你想要確定前面曾經作出來的狀態可以保存下來,請記得在該save的時候save。

3. Draw animated shapes
把當前的Frame畫上去。

4. Restore the canvas state
這個frame畫完後,記得要restore到畫之前的狀態。
再來,就是用HTML底下的API呈現出Animation的效果。

  • setInterval(animateShape,500);

  • setTimeout(animateShape,500);



  • 想看這種東西可以作到怎樣,可以參考:
    http://www.benjoffe.com/code/tools/functions3d/


    呼~累了,該去睡了。