Friday, December 31, 2010
Thursday, December 30, 2010
[nosql] nosql 與 Cassandra 介紹
作者: Died |
Cassandra 是Facebook為了一般關聯式資料庫(relational database)應付不來的龐大資料成長需求,所發展出來的一套系統,2008時Facebook將Cassandra轉給Apache社群負責繼續開發,目前使用Cassandra的知名公司有Digg, Facebook, Twitter, Cisco等等,目前已有使用open source Cassandra運行在150台機器上處理超過100TB的案例。
以Cassandra官方介紹來說,這是一套有著高度擴充性的次世代分散式資料庫,有著Amazon Dynamo的全分散式設計與Google Bidtable的ColumnFamily模式資料結構。
在面臨需要高效能(High performance)、大量資料(Huge Storage)、高延展性(High Scalability)與高可用性(High Availability)的狀況時,nosql可以扮演相當稱職的腳色,但是nosql並不是完美無缺的選擇。
在設計上,nosql系統考慮到現實狀況(機器、網路的出錯是必然的),多半以CAP理論去設計,而非一般關聯式資料庫的ACID理論,CAP為一致性(Consistency)、可用性(Availability)與中斷容忍性(Partition Tolerance),理論上C與A是互斥的,所以一般nosql系統不是選擇CP就是AP。
舉實例來說,nosql有著資料最終一致性的特點,就是在一個節點更動資料後,隨著時間過去,其他節點最終會資料一致,但是nosql不像關聯式資料庫有交易(Transaction)的設計,所以在分散的DB中資料進行同步時,若同時又對同一筆資料異動,就可能會發生結果不如預期的狀況,而這正是nosql開發上需要特別注意的地方。
另外,nosql在資料結構上與關聯式資料庫截然不同,查詢(Query)語法也因nosql系統不同而各有差異,大多nosql是都需要使用API去進行溝通,不過一般來說,熱門的nosql系統都會有相當不錯的資源。
以Cassandra來說,本身有cassandra-cli這個command line工具可使用,官方也有提供thrift這套API來與Cassandra溝通,而用於各種程式語言的API也都有人開發出來,Ruby, Perl, Python, Scala, Java, PHP, Clojure, Grails, C++, C#...等等都有API可支援,進入的難度並不甚高。
若有資料成長快速、需大量讀取/寫入的資料庫需求時,不妨考慮看看可以動態增加資料節點,對於龐大資料有高效能的nosql。
Twitter在選擇Cassandra時,列出了下面這六個優點 Flexible schema、True scalability、Multi-datacenter awareness、Range queries、List datastructures、Distributed writes ,有興趣可以看看這篇文章up and running with cassandra。
Wednesday, December 29, 2010
[nosql] Cassandra 0.7 Cassandra-CLI example @ Windows
作者: Died |
Cassandra-CLI have many change on ver 0.7 , let's talk about it.
- Starting Cassandra-CLI :
Usage: cassandra-cli.bat --host hostname [--port
Example:
cassandra-cli.bat --host localhost --port 9160
If you enabled authentication
Example:
cassandra-cli.bat --host localhost --port 9160 --username jsmith --password havebadpass --keyspace Keyspace1
- Switch keyspace :
Usage: use <keyspace> [<username> 'password'];
Example:
use Keyspace1;
- Create Column Family with the specified attribute :
Usage: create column family <cf> [with <att1>=<value1> [and <att2>=<value2> ...]];
Example: Create standard CF with Secondary indexes on column 'NewsDate'
create column family News with comparator=UTF8Type and column_metadata=[{column_name: Title, validation_class: UTF8Type},{column_name: Body, validation_class: BytesType},{column_name: NewsDate, validation_class: LongType, index_type: KEYS}];
Example: Create a CF with SuperColumn
create column family NewsVote with column_type = Super and comparator = BytesType
At Cassandra 0.7 , you can realtime change your schema by using "create keyspace","update keyspace","create column family","update column family" without shut down Cassandra.
Tuesday, December 28, 2010
[nosql] Connecting Cassandra with C# by Thrift
作者: Died |
Cassandra recommended user use a higher-level client to communicate with Cassandra in their application , for C# , such as FluentCassandra or Aquiles, but you still can use the lowest-level official API - Thrift to accessing Cassandra.
In here , I choose Thrift to work with Cassandra , so let's start it.
Cassandra 建議使用者在它們的程式內用高階API與Cassandrar進行溝通,以C#來說,像是FluentCassandra 或 Aquiles。但是你也可以用官方出的最低階API - Thrift 來與Cassandra溝通。
這邊我選擇使用Thrift來存取Cassandra,下面一步步來介紹(然後我懶得寫中文了)。
Friday, December 24, 2010
慈濟也來搞假新聞 ?
作者: Died |
仔細看了一下,這篇文章在其中只講慈濟的好,然後提了一堆與內湖環境保護區無關的事來為此事護航,看起來跟之前陳文茜寫文章為花博護航的手法如出一轍,就是說一堆似是而非的事,然後用慈濟人/花博員工付出的多辛苦之類的,引起人的同情,而分毫不提真正有爭議之處。
當然了,如果只是這樣的話,根本不需要來寫此篇文章,會來寫這篇文章,就是因為這篇文章掛名的作者"陳碧珍",根本就是慈濟志工,寫護航文卻全篇不提此事,標題也寫"一個老內湖人的盼望"而不是"一個老慈濟人的盼望",這根本是蓄意欺騙,想利用資訊不對等來影響民眾想法,慈濟此種行為可說是惡劣至極。
志工校園說環保 孩子願從小動作做起 (圖片備份)
慈濟內湖區志工以馬拉松接力方式,自6月28日起,密集走入社區校園宣導環保,截至目前已經舉辦四十場。今天〈11/5〉來到台北市東湖國小演奏廳,現場有逾兩百位學生、八位師長和十三位志工共同參與。透過影片及卡通以寓教於樂方式,讓孩子們具體了解全球暖化的嚴重,並在孩子心中建立起正確的環保觀念。
有關環境變遷的議題,志工陳碧珍說,因環境變遷造成無家可歸的災民數字與日俱增。例如,台灣八八水災、大陸華南水患、莫斯科森林大火、凡那比颱風及梅姬颱風等,都是我們要關心、要改善的。
(圖片備份)
由於現場會眾大多是第一次來到內湖園區,慈濟志工陳碧珍除了利用這次機會,分享全球暖化的嚴重性及環保的迫切性,並特別播放影片『2009慈濟大藏經』,讓大家了解全球災難頻仍,慈濟在各地的救援、膚慰以及善念的擴散效應。影片中一幕幕驚心動魄的畫面,凝聚了所有人的目光。
這種惡劣的護航行為,我相信證嚴一定不知道此事吧 ?
樹大有枯枝,我肯定慈濟在救災上的一些作為,但是很多慈濟人的心態上不但高人一等,更是腐敗迂腐,在這世界上,很多事情並不是只要掛上慈濟兩字就是對的,更不要把慈濟的作為強加到別人身上,去影響別人,這種行為是邪教的行為!!!
我不曉得慈濟在內湖的保護區乙事最後的結果會是如何 ? 縱使慈濟已出了不少惡劣的招數,但是在內湖熱心人士努力下,目前慈濟暫時還未過關,可讓人暫時安心。如果有一天在這保護區的大樓蓋了起來,我絕對會追蹤之後的豪雨、風災,看看慈濟會不會就此成為殺人組織。
[分享] Play-Asia 折價Coupon贈送
作者: Died |
第一個是買超過$50 USD可以折價$7 USD的序號
Code: VN-SGD-THF
第二個是買超過$100 USD可以折價$12 USD的序號
Code: PT-VJQ-KZC
玩亞洲Play-Asia常常有很多便宜可以撿,像是這個不到三百台幣的Forza Motorsport 2 (Platinum Hits),或是這個才500台幣的失落的奧德賽.....日文版XD
我之前常玩360時常常從play-asia買遊戲,一來是撿便宜,二來是台灣免運,很方便,最近360很少開,所以折價卷用不到了,如果有需要用的折價卷的話歡迎取用,記得要留言就是。
PS:這兩個序號到期日是2010年底。
Thursday, December 23, 2010
[Facebook] 以FQL查詢使用者是否為特定應用程式的Fans
作者: Died |
Facebook Query Language,簡稱為FQL,為Facebook提供的SQL形式查詢介面,使用上只要將Query String像下面這樣丟出去
https://api.facebook.com/method/fql.query?query=QUERY
然後取得回應即可,回應來的格式可以是xml或是json,看你怎麼指定。 為方便示範結果,所以我使用Facebook的JavaScript SDK去呼叫,先來一個取得名字的簡單範例,語法為
SELECT name FROM user WHERE uid=me()
實際出來的結果可以按看。
[JS] 取得Object內的參數名與內容
作者: Died |
用的語法是for...in這個語法,很簡單,就長得像下面這樣。
for (var i in obj) { alert('name='+i); alert('value='+obj[i]); }
簡單來說就是跟C#裡的foreach很類似,然後拉出來的i是column,obj[i]是value。
於是運用到我要用的fql查詢上,就變成這樣。
function query() { FB.api( { method: 'fql.query' , query: document.getElementById('fqlstring').value }, function(response) { for (var i in response[0]) { alert(i + '=' + response[0][i]); } } ); }
方便許多。
Wednesday, December 22, 2010
[nosql] Cassandra Running a single node @Windows
作者: Died |
Cassandra 官網 http://cassandra.apache.org/
下載頁面 http://cassandra.apache.org/download/
系統需求 : Java 1.6以上,如果是jvm需要是u19以上,最好是u21以上版本
Tuesday, December 21, 2010
Google 回顧 2010
作者: Died |
2010年剩下十天就過去了,Google推出了一段以Google趨勢為根據所製作的2010年回顧影片,內容相當精彩。
身在台灣,若你只接觸封閉、鬥爭與業配的媒體,有多少事件是你從未聽過的呢 ?
Sunday, December 19, 2010
Thursday, December 16, 2010
Wednesday, December 15, 2010
OPEN TAIPEI 感恩加場音樂會
作者: Died |
我想我永遠不會忘記11/26那天晚上,在中央藝文公園的盛況。遠超過十萬人,放眼望去滿滿的都是人頭的樣子,深深印在我心中。
雖然結果不如預期,但是,Open Taipei的美好音樂,超越的精神依然存在。
2010/12/19,下午兩點鐘,在大安森林公園。
Open Taipei 感恩加場音樂會。
這次不來,以後可能就沒機會了。
[Flex] 全螢幕功能
作者: Died |
語法很簡單,主要就是下面的這段。
<fx:Script> <![CDATA[ import flash.display.StageDisplayState; import mx.managers.SystemManager; protected function btn1_clickHandler(event:MouseEvent):void { if (systemManager.stage.displayState == "normal") { systemManager.stage.displayState=StageDisplayState.FULL_SCREEN; btn1.label="回復"; label1.text="現在是全螢幕"; } else { systemManager.stage.displayState=StageDisplayState.NORMAL; btn1.label="全螢幕"; label1.text="現在不是全螢幕"; } } ]]> </fx:Script>
[ benjemin 的日文筆記 ]-です
作者: benjemin |
使用範例--貓咪小姐去美髮~~
已經忘光光的人趕快再來溫習下憋(>w<)d
[Facebook] 邀請功能的應用
作者: Died |
相信很多人都有玩過Facebook上的遊戲,對於滿滿的遊戲邀請,想來也不會陌生,這邊就來介紹如何去運用邀請功能,讓你可以運用在自己的東西上。
要發送邀請很簡單,我拿facebook的範例來說明。
<fb:serverFbml> <script type="text/fbml"> <fb:fbml> <fb:request-form method='POST' type='部落格邀請' content='邀請你加入Died的 Blog <fb:req-choice url="http://apps.facebook.com/smiley/yes.php" label="Yes" />' <fb:req-choice url="http://apps.facebook.com/smiley/no.php" label="No" />' <fb:multi-friend-selector actiontext="加入Blog"> </fb:request-form> </fb:fbml> </script> </fb:serverFbml>
這邊也可以看到送出與收到時的樣子。
何處的文字是是對應到Facebook上的哪裡,可以看圖去對照,這邊比較需要注意的是兩個req-choice內的連結,一個連結是同意這邀請,另一個連結是不同意,我不太曉得按不同意時,一般遊戲會做什麼動作,不過一般來說遊戲內的加好友/鄰居,或是送禮物都是使用同意的這個連結,靠帶不同參數或是指到不同頁面去做的。
舉個例子,使用者在選擇完禮物後,系統產生一組有著使用者uid、禮物、到期時間的unique key,然後在送出邀請時,所指向的連結最後帶上這個unique key為參數,所以在玩家收到邀請時,可以很容易的就顯示出誰送給他了什麼禮物。
當然我說的這些是很基本的,實際上運用還是需要針對需求去做修改,還有一些安全上的防護,被免被利用等等機制,這邊就不多加說明了。
Rift 註冊教學 (beta2)
作者: Died |
基本上如果Rift沒有什麼變動,這註冊教學都是通用的,加上Beta2只是因為我在beta2前寫的,著名一下而已,並不是說只適用於這段時間,先說明一下。
首先,先連到https://account.riftgame.com/en/,在畫面右下處有個Register now,點下去就會到填寫資料的註冊畫面,似乎Rift會因為地區去導到不同頁面,所以我就沒直接給註冊頁面的網址了。
Friday, December 10, 2010
[ACM] Q100 : The 3n + 1 problem
作者: Died |
簡單解釋 :
有個演算法,先暫且叫3N+1演算法,給他一個整數N,有三種可能
1.N=1 -> 結束
2.N為偶數 -> N=N/2
3.N為奇數 -> N=N*3+1
舉個例子,如果N為7,出來的數列為
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
數列長度為17
題目會輸入幾行數字,每行內容為 i j 兩個整數,你要將從 i 到 j 的每個整數套進3N+1演算法,然後將其中數列最長的長度(姑且叫做M)加在 i j 後輸出,也就是輸出時為 i j M ,下面是官方給的輸入輸出範例。
輸入範例
1 10
100 200
201 210
900 1000
輸出範例
1 10 20
100 200 125
201 210 89
900 1000 174
[C#] 三數最大公因數
作者: Died |
隨便列一下程式碼。
private void button1_Click(object sender, EventArgs e) { int N1,N2,N3; if (IsNumeric(textBox1.Text) && IsNumeric(textBox2.Text) && IsNumeric(textBox3.Text)) { N1 = Convert.ToInt32(textBox1.Text); N2 = Convert.ToInt32(textBox2.Text); N3 = Convert.ToInt32(textBox3.Text); int N4 = gcd(N1, N2); label1.Text = gcd(N4, N3).ToString(); } } private int gcd(int a ,int b) { if (b == 0) return a; else return (gcd(b, a % b)); } static bool IsNumeric(object Expression) { bool isNum; double retNum; isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum); return isNum; }
Thursday, December 9, 2010
從台灣世曦工程顧問公司看蘇花改的未來
作者: Died |
先從最近的國道一號五股楊梅段看起,最近一期壹週刊的爆料:
總預算逾8百億元的中山高速公路五股至楊梅路段拓寬工程,恐陷重大公安危機。包商今年初向交通部反映,由台灣世曦工程顧問公司設計的高架路段,總長30公里,沿線119根橋墩井式基礎鋼筋量不夠,橋柱的支撐強度不足,如果遇到地震或塞車,就有可能崩塌。交通部拖了3個月,僅要求世曦將其中已建好的6墩井基重建,並未要求變更設計,顯然包庇失職。
而隔日的中國時報有學者指出,這種鋼筋量不足的情況一般只會出現在施工偷工減料時。
「鋼筋配量少了三分之一,太多了!」中興大學土木系榮譽教授顏聰指出,橋梁結構力計算有固定程式,不太可能出錯,除非橋梁載重、構造或材質改變。一般來說,這種情形只會發生在施工時偷工減料。
Wednesday, December 8, 2010
台電、中油近年盈虧與年終比較表
作者: Died |
台電、中油歷年盈虧與年終比較表 | ||||
年份 | 台電年終(月) | 中油年終(月) | 台電盈虧(億) | 中油盈虧(億) |
---|---|---|---|---|
資料來源:公開資訊觀測站 | ||||
2010 | 4.6 | 4.6 | ||
2009 | 3.6 | 3 | -14.8 | 289.35 |
2008 | 4.3 | 4.6 | -1013.56 | -1393.64 |
2007 | 4.6 | 4.6 | -312.42 | 146.55 |
2006 | 4.6 | 4.6 | -28.93 | -187.69 |
2005 | 9.28 | 70.2 |