2010年9月10日 星期五

MongoDB用Java寫Map/Reduce的方法

官方的API
http://api.mongodb.org/java/2.1/index.html

public MapReduceOutput mapReduce(String map,
String reduce,
String outputCollection,
DBObject query)
throws MongoException

最讓人迷惑的,應該就是String map和String reduce這二個參數吧,
參考http://github.com/mongodb/mongo-java-driver/commit/fa003adc5db8a6c4efe0279c74973af15d99e6ed
簡單的說,就是硬上就對啦,
String m = "function(){ for ( var i=0; i<this.x.length; i++ ){ emit( this.x[i] , 1 ); } }";
String r = "function(key,values){ var sum=0; for( var i=0; i<values.length; i++ ) sum += values[i]; return sum;}";
coll.mapReduce(m , r , null , null);
就搞定。

2010年8月16日 星期一

連上遠端的HBase

        hbConfiguration    =    new HBaseConfiguration();
        hbConfiguration.set("hbase.zookeeper.property.clientPort", dbPort);
        hbConfiguration.set("hbase.zookeeper.quorum", dbSite);

        try
        {
            hbAdmin    =    new HBaseAdmin(hbConfiguration);
            System.out.println("connectioned");
        }
        catch (MasterNotRunningException e)
        {
            System.out.println("connection fail");
            e.printStackTrace();
        }

2010年8月2日 星期一

以(0,0)為中心,90度為單位向右旋轉座標速算法

向右轉90度:x和y對調後,新的x*-1。
向右轉180度:x、y各自*-1。
向右轉270度:x和y對調後,新的y*-1。

2010年4月3日 星期六

Python,比我想像的還合我的胃口

  • 多重繼承
  • 執行期改變Class
  • 執行期改變繼承鏈
  • 動態型別
  • 運算子覆寫
這些都是春節時想在as3上實現的功能,
想不到Python全有…
連實作的方法也和春節時做的AdvancedObject相仿…

缺點:
  • 變數名稱只能用底線和英數字
  • 殘缺的物件導向,缺乏封裝
  • 部份語法詭異

2010年3月31日 星期三

ActionScript 3.0 Closure(封合、閉鎖) 初探

初步測試,運作良好。
使用getPow這個函式工廠取回的function中的傳入值v,正確的被記住。
下一步測試其範圍。

2010年3月30日 星期二

[食譜]梅子綠茶啤酒

材料:梅子綠茶(大瓶)。
作法:

  1. 直接對嘴喝到剩四分之一。
  2. 蓋上瓶蓋。
  3. 靜待二天的醞釀。
  4. 神奇的事就這樣發生了…

附註:好孩子千萬不要喝喔,不然醫生叔叔等著你。

2010年3月9日 星期二

方法名稱翻譯器




2010年3月2日 星期二

Trigger ,特定條件觸發器(3/7更新)

方便在達成特定的條件時,觸發特定的方法。
並在從達成變未達成時,也會觸發特定的方法。

2010年2月25日 星期四

ActionScript 3.0 Class 程式碼生成器



2010年2月24日 星期三

ActionScript 3.0 Event 程式碼生成器

2010年2月23日 星期二

SequenceCollectionUtil

有順序的集合的操作工具。
有順序的集合(以從0開始的連續整數為索引)
應具有length:uint屬性,
及下述方法:
1.addAt(obj:* , index:int):*
2.removeAt(index:int):*
3.getAt(index:int):*

Aggregation

方便使用聚合的物件。
在建構式中傳入要聚合的物件,
參數越後面的,優先序越高。

AdvancedProxy

這個物件是動態的,可以完全代理另一個物件。
主要功能如下:
1.代理另一個物件的所有屬性(無法區分唯讀、唯寫)和方法。
2.若被代理物件發出這個Proxy有偵聽的事件,一律使用Event.clone轉發。
3.使用$alias產生屬性及方法的別名。
注意事項:
1.for...in迴圈,只會跑這個Proxy上的屬性及方法(含別名),不會有被代理者的。
2.若被代理者的屬性、方法名和Proxy擁有的同名,Proxy的屬性及方法優先。
3.動態加入的屬性方法,不會加到被代理者身上。
4.$super(被代理者)的更換,不會影響Proxy現有的屬性、方法。已加到Proxy上的事件偵聽式也不會消失。

2010年2月21日 星期日

ArrayUtil 方便陣列使用的工具

已將這個類別納入開源專案之中,
https://code.google.com/p/actionscript-3-advanced-object/

內含五個方法

unique(arr:*):Array
消除陣列中的重覆項目。

union(arr1:* , arr2:*):Array
傳回二個陣列間的聯集,會消除重覆的項目。

intersect(arr1:* , arr2:*):Array
傳回二個陣列間的交集,會消除重覆的項目。

isInclude(arr1:* , arr2:*):Boolean
陣列1是否包含了陣列2的所有物件,會消除重覆的項目。

difference(arr1:* , arr2:*):Array
陣列1和陣列2的差(陣列1中有但陣列2中沒有的),會消除重覆的項目。


AdvancedObject (1) 加入EventListener的能力

在AdvanceObject中結合了AdvancedEventDispatcher,
使AdvanceObject具有轉發EventListener的能力。
源碼https://code.google.com/p/actionscript-3-advanced-object/

2010年2月20日 星期六

加強版的EventDispatcher

已將這個類別納入開源專案之中,



加入四個新方法、一個新屬性:

getAllEventListenerType():Array
取得目前所有的事件偵聽式的type列表。

removeAllEventListener():void
移除所有的事件偵聽式。

removeEventListenerByType(type:String):Array
移除指定事件的所有偵聽式。

addEventListenerByArray(listeners:Array):void
加入陣列(用removeEventListenerByType所傳回的陣列)中的所有偵聽式。

eventSource屬性
若傳入的是IEventDispatcher的物件,
則會轉發所有AdvancedEventDispatcher上有偵聽的事件。
(注意,若是自訂的事件,請一定要覆寫clone方法)

2010年2月19日 星期五

追蹤者