我的雲端生活網 - Life+

Wednesday, November 25, 2009

嘉南藥理科技大學開發校內專屬msn機器人

資管系公告

即時通訊在校園生活裡日趨頻繁,為了提供師生更佳的資訊服務,感謝
微程式資訊(股)公司提供msnSDK訊息控制開發套件測試即日起將進行
校內系統開發整合等測試,期能完成校內專屬msn機器人,成為師生訊
息傳播另一重要管道

http://mis.chna.edu.tw/data3/average_show.asp?average_id=814

Sunday, November 22, 2009

答覆客戶問題: 你們與其他msn機器人最大的不同是什麼?

我們與其他發展msn機器人的團隊最大的不同是

1.我們不是只發展msn機器人,我們是以整體im為發展方向,所以yahoo即時通 gtalk google-wave機器人 plurk機器人 facebook機器人...都會是我們的產品重點
2.我們是唯一提供完整api 讓使用者可以在msn機器人上自行應用發展的產品,當然我們本身也提供客製化的服務
3.我們的投資團隊包含經營電子商務相關產業與訊息平台開發商...,所以我們自己也在使用這些行銷工具或是相關系統整合
4.我們應用的領域比較廣泛,有很多實例可供參考 http://www.imoo.tw/blog/?p=84
5.我們是目前是市場上客戶最多的IM機器人團隊

Monday, November 16, 2009

微程式資訊新聞中心相關報導

◎微程式新聞中心
http://www.program.com.tw/app/geturl.pl?id=5&url=../xml/news/case_page1.xml&sid=1&cid=
【2009/10/30 成交案例】感謝蓋德科技 選購「RFID門禁設備(MT180)一批」交貨完成。
【2009/10/21 成交案例】感謝高苑科大 選購「RFID讀卡機(MP-508U)一批」交貨完成。
【2009/10/13 成交案例】感謝狀態廣告 選購「MSN SDK」。
【2009/10/12 成交案例】感謝嘉義大學 購買「RFID讀卡機(MP-501SSRN)、控制器(MP-511RRW-N)一批」交貨完成。
【2009/10/05 成交案例】感謝蓋德科技 選購「RFID開發套件(Demo Kit-T&A)」交貨完成。
【2009/10/01 成交案例】感謝台灣互動 訂製「RFID 讀卡機模組(MP-507)一批」交貨完成。

◎微程式情報局 http://microprogram.blogspot.com/
【2009/10/30】TASHI 智慧生活從開門那一刻開始...
【2009/10/30】微程式「MSN機器人」成為校園安全守門員

◎lazy Guy http://rd-program.blogspot.com/
【2009/10/27】微程式「MSN機器人」成為校園安全守門員
【2009/10/14】他們都在做--msn機器人與校務/圖書館系統的整合


Thursday, November 12, 2009

使用shell script 操作 msn機器人

這一篇文章是使用免費imoo msn機器人套件的使用者提供,msn機器人本
身可以在 linux/win32 下運作,可廣泛支援大多數語言 (asp/asp.net/c#/java/perl/ruby/python/php/vb6/vb.net...)當然也
能使用shell script配合wget 或curl 來撰寫相關應用

以下原文出自 http://dominic16y.world.edoors.com/CGNWR3kC9euM

使用者將imoo msn機器人,應用於系統監控的實例

---

為了便於監控 Server 的狀態,我需要 Server 在更換IP時,能自動透過 msn 發個訊息給我 server 的當前IP。 msn 機器人已經有人寫好了,可在這裡免費申請使用,現在需要的就是我寫一個小程式來呼叫 msn 機器人來幫我發送訊息。

首先參照這個頁面,是 msn 機器人的運作流程,簡單提一下
0.當你申請過後,他會寄給你一個你專屬的 msn 機器人 (就是一個網址啦),和操作這個機器人的帳號密碼。
1.取得 SPID 值,也就是 session ,有效期為六小時。
2.加聯絡人,你和機器人必需互加為聯絡人,才能發訊。
3.發送訊息,發訊時要帶有效的 spid 值才能發送。

以上幾點呢,都還不需要寫程式,但你必需得先用網頁的方式測試ok了,能正常收發訊息時,才接著下一步。也就是說把瀏覽器打開,貼上正確的網址,就能測試了。

開始寫 shell script

以下所寫的程式適用於 debian 4.0 和 5.0 的環境

vim /home/backup/msn_send.sh

#!/bin/bash
# msn 機器人發訊

#1.取得 SPID 值
wget -q -O /tmp/session.txt -q 'http://59.120.234.84:8082/msnSDK/msn_cgi-win32?FUNC=GETSPID&USERID=帳號&PASSWD=密碼'

#2.設定 session 變數,此變數的有效期為六小時
session=`cat /tmp/session.txt|awk '{printf $2 "\n"}'`

#3.設定date與IP 變數
IP1=`/sbin/ifconfig ppp0 | grep "inet" | cut -c 21-38 |awk '{ print $1 }'`
date1=`date +%Y/%m/%d,%T`

#4.送訊息
wget -q "http://59.120.234.84:8082/msnSDK/msn_cgi-win32?UIDS=你的MSN帳號&MSG=$date1 IP更換:$IP1&flags=0&FUNC=SENDMSG&ENCODING=UTF-8&SESSION=$session"


以上的程式內容,需註意紅字的部份修改成你的帳密
再執行以下指令安裝
chmod 755 /home/backup/msn_send.sh
ln -s /home/backup/msn_send.sh /etc/ppp/ip-up.d/msn-send

這樣,一但 server 換IP了,它就會自動的透過 msn 來通知你。

Wednesday, November 11, 2009

準備要Go?讓我們Go

昨天11月10日,Google 發表了新語言 Go ,是簡單、快速、支援 Unicode 、多緒、垃圾回收機制、物件導向的語言寫法、和彈性並安全的資料型態的動態語言。相當像 C 語言。( http://golang.org/ , http://google-opensource.blogspot.com/2009/11/hey-ho-lets-go.html ) 支援 Linux 和 Mac ,不支援 Windows。

Concurrence 方面, Go 提出 Goroutine 一詞:一個 goroutine 是在同一記憶體位置上和其他 goroutine 同時執行的 Go 函數。Goroutine 不是像 coroutine 、 process 或 thread 的東西。一份程式由許多個 goroutines 組成。 Goroutine 是不會被 block 的單元。

語法方面很簡單,記憶體空間配合常值表達配置 (需要一個 byte 的整數就不會硬配四個 bytes ) ,陣列使用空間的代價很少,使用 Goroutine 代價也很少。此外,有特定的語法定義 channel ,方便寫通訊程式。在 channel 語法上定義同步或非同步傳輸。

參考資料

Saturday, November 7, 2009

Oracle-Sun 全新資料庫發表

今年11月4日於台北國際會議中心,昇陽公司發表 Oracle 和昇陽合力發展的資料庫平台 Exadata 。 Exadata 沿襲並整合了昇陽過去十大創新技術,提供高速、平行的大量資料處理功能。

以往的在線交易處理 (OLTP) 可能在硬體或儲存體方面遭遇瓶頸。昇陽公司運用 Chip Multi-Thread 特製晶片減少 Exadata 平台所需的處理器數量,並達到省電需求。在資料儲存方面,使用運行資料壓縮和智慧快取二項技術,解決輸入與輸出的瓶頸。

Exadata 是 Sun SPARC (硬體) 、Sun Solaris (作業系統) 、Java (虛擬機) 、及 Oracle (資料庫) 的完美組合,並且提供多種層次的虛擬化平台,能夠建立虛擬的分散系統。基準測試 (benchmark) 結果,昇陽使用9個機架的 Exadata 系統做到一個TPC-C,而 IBM 需要使用56個機架才做到一個TPC-C。 Exadata 的效能顯得較高,並且耗電率顯得較少。不過,昇陽公司大中華區系統產品事業部高級技術總監潘榆奇先生指出,每一家公司根據基準測試選購產品或方案時,應該先針對自己的專案需求選擇要使用哪些基準測試,才能做有效的決定。

據言 Oracle 即將併購 Sun 公司。而目前發表 Exadata 時,二家還是各自獨立的公司。未來發展如何,「桃李不言,下自成蹊,」可待結果自明。

以上說明及描述僅根據2009年11月4日本人參與昇陽公司舉辦的產品說明會之聽講摘要。

Friday, November 6, 2009

邏輯程式設計 Prolog

最近花不少時間重新看 Prolog 和 Erlang 的程式寫法,感想是,邏輯程式工具的威力真強。

Prolog 是一種老派的邏輯式程式語言,它的目標是執行邏輯系統。邏輯系統是一些事實和一些規則組成的一組「資料庫」,在系統定義範圍內,可以找到有一些情況被滿足。例如最簡單的三段論法說:

morale(X) :- man(X).
man(socrates).

?- man(socrates).
yes
?- man(me).
no

以上程式中,大寫符號是變數,小寫符號是常在詞彙。句子呈現 X :- Y 是規則,讀做 X if Y ,在邏輯表達式是寫成 X <- Y 。另一種普通的句子是事實。而末尾有 ?- 開頭的,是查詢句。根據以上程式,有些對邏輯一知半解的會大叫:「喔!原來我不道德!」但只是因為以上的三段論與現實的認知稍有差別:邏輯句子表達的是語意的最基本部份,但是日常用語的語意結構非常複雜。

Prolog 程式只要定義幾個句子,執行器就會找出一些滿足這些句子的情況。邏輯推論也是如此。設想有個句子定義可以從一列資料的某個位置取出一項資料:

element_at([X|_], 1, X).
element_at([_|Y], N, Z) :- element_at(Y, N1, Z), N is N1 + 1.

第一句說,對開頭為X的一列資料取第一項,答案是X。第二句則使用了遞迴定義。 (第二句讀作:(右邊) 如果 Y 的第 N1 位置是 Z ,則 (左邊) Y 前面多一項資料,這一列的第 N 位置是 Z 。) 以這樣的寫法,除了可以從一列裏指定位置取得資料之外:

?- element_at([a,b,c,d,e], 2, X).
X = b

還可以查詢在什麼位置可以找到指定的資料:

?- element_at([a,b,b,c], N, b).
N = 2;
N = 3

程式的評估,基本上是反覆檢查可以成立的句子,於是可以將所有的情況一筆一筆找出來。所以,寫一些列出各種情況的程式就變得很簡單。例如,寫個組合程式:

combination(0, _, []).
combination(_, [], []).
combination(1, X, [Z]) :- element_at(X, _, Z).
combination(N, [X|Y], [X|Z]) :- N > 1, N1 is N - 1, combination(N1, Y, Z).
combination(N, [_|Y], Z) :- N > 1, combination(N, Y, Z), length(Z, N).

第四句只考慮一列的第一個元素X參與在答案中的情況,而第五句純粹考慮第一個元素不參與在答案中的情況。 (第四句讀作: (右邊) 如果對 Y 取 N1 個元素的一種組合是 Z ,則 (左邊) 對 Y 前面加了一項 X ,取 N 個元素的一種組合,就是 Z 前面也加 X 。因果關係!) 寫程式時,考慮答案只考慮各種情況的其中一種,但程式執行時, Prolog 就像內建迴圈機能一樣,反複將各種情況一樣接著一樣列出來:

?- combination(3, [a,b,c,d,e], X).
X = [a,b,c];
X = [a,b,d];
X = [a,b,e];
X = [a,c,d];
X = [a,c,e];
......

跟 Erlang 比較, Erlang 程式沒有反覆測試每一條句子的執行方式,因為 Erlang 是函數式語言,函數的特性是從多個輸入也必須只對應到一個值。不過, Erlang 也是經由長期用 Prolog 慢慢開發完成的。這是我拿 Prolog 和 Erlang 對照檢視的原因。

Erlang 的組合程式:

combination(0, _) -> [[]];
combination(_, []) -> [[]];
combination(1, X) -> [ [Z] || Z <- X ];
combination(N, [X|Y]) -> [ [X|Z] || Z <- combination(N-1, Y) ] ++
[ Z || Z <-combination(N, Y), length(Z) == N ].

(第四句讀作: (左邊) 想求得 Y 列前面有個 X 的資料取 N 個元素的各種組合情況,先求 (右邊) 可能是對 Y 求 N-1 個元素的各種組合情況,再將 X 套到每個組合情況之前,或者是直接求 Y 中取 N 個元素的各種組合情況。至於末尾檢查 length(Z) == N ,是要克服後半程式結果的不一致情形。)

執行結果:

> test:combination(3, [a,b,c,d,e]).
[[a,b,c],
[a,b,d],
[a,b,e],
[a,c,d],
[a,c,e],
[a,d,e],
[b,c,d],
[b,c,e],
[b,d,e],
[c,d,e]]

Erlang 缺乏逐步列出各種情況的機能,所以要列出全部的組合情況,用 Erlang 必須把各種答案都算出來,並收集成一列。寫 Erlang 程式顯然比寫 Prolog 程式更辛苦一點點,不過, Erlang 提供 List Comprehension 表達法,使這個組合程式也變得稍微簡單一點點。

Tuesday, November 3, 2009

用Erlang做個文書編輯器

11月1日在Erlang Programming論壇發起一陣討論,談到用Erlang寫文字編輯器的疑問(見1.) 。Ted問到,據說Erlang是分散處理及容錯都很好的語言,那麼如果寫文字編輯器,有什麼並行方面的好處?Mats說,如果有分散處理能力,很好,他常在寫東西到一半必須把半成品備份,這樣可以保留他許多編輯的狀態。

Jayson回答,Erlang雖然不錯,但是講到字串處理真是麻煩透了。倒不如使用JRuby或Clojure之類,建立在Java基礎上的語言。接著,Erlang的發明人Joe答覆了,他指出Erlang做列式的資料處理真是超快的。文字編輯器所需要的文字處理,那些在C++看成string的東西,在Erlang只要把它看成list就做得很棒了。他還說,用C寫文字編輯器才是痛苦的事。最麻煩的undo功能,C語言寫起來要擔心stack中儲存的狀態有沒有改掉,而用Erlang做起來很簡單,因為語言特性比較少有狀態改變。

另外,對於載入及搜尋大檔案方面,Joe指出如果你不會寫大檔案處理的功能,這不是語言方面有問題,而是你缺少演算法的知識。他曾經需要處理gigabytes的檔案,讀過 "Managing Gigabytes" 一書之後,實作了gamma encoding就解決了問題。

Luke Gorrie有個用Erlang寫的仿Emacs。(見2.)

1. Erlang for Programming a Text Editor, discussions from Erlang Programming group at Google groups, url: http://groups.google.com/group/erlang-programming/browse_thread/thread/a6c93367b439a284?hl=en .
2. Luke Gorrie, Ermacs (software), http://fresh.homeunix.net/~luke/ermacs/ .

Monday, November 2, 2009

用 MapReduce 處理大量工作

MapReduce是一種簡單的程式模型,只要知道map和reduce程式,系統會幫忙將map用在原始資料上,整理岀中繼資料,然後用reduce程式收斂這些中繼資料。

程式結構

Map是一個從 (key, list(value)) 對應到 list(key', value') 的函數。簡單說,對map輸入一列資料,map會將資料做一些前處理,然後把一個 key 跟每一筆資料配對。Map是使用者自己寫的程式。

Reduce是一個從 list(key', value') 對應到 list(value'') 的函數。簡單說,reduce是彙總函數,將許多 value' 收合為一個value'' 。 Key' 的存在,可能是用於樣式比對或額外附加資訊的需要。最後的結果仍是 list(value'') 是方便與其他 reduce 程式的輸出再做合併。

系統組成

系統使用相當多的工作單元分別消化map和reduce工作。工作單元可以分佈在許多台電腦中,並且工作單元彼此不共享記憶體資料。Map或reduce做完之後,將資料儲存在檔案系統中。只有一種特殊的工作單元稱為master,負責監看所有map和reduce工作單元的活動情況,並負責派遣map或reduce工作。

分散處理:Map和reduce工作單元各別處理自己的一段資料,做完時,將資料儲存在自己所在電腦的檔案系統,並將完成訊息和檔案位置資訊傳給master工作單元。Master工作單元可以再將中繼檔案或結果檔案的位置資訊傳給下一個map或reduce工作單元,指派下一階段的工作。

檔案儲存:檔案從來不整合成一個大檔案,而是以許多小檔案的形式存在許多台電腦中。電腦彼此之間不交換檔案流,節省網路頻寬。

容錯處理:如果有一些工作單元或電腦不活動並且沒有回應,master工作單元將已經指派去那些電腦的工作重新指派給其他工作單元。要重做工作的原因是,不回應的工作單元造成它所在的電腦檔案無法讀取。重做無效的工作最有容錯的保障。

實作案例

Google MapReduce是C/C++寫的。Hadoop是用Java實作的MapReduce平台,從其中擴充出HadoopDB和Hive等資料庫系統。CouchDB是用到MapReduce方法處理索引的文件式資料庫,用Erlang實作。Disco是Nokia開發的開源MapReduce平台,用Erlang實作,使用者必須用Python寫程式。

1. MapReduce, Wikipedia, http://en.wikipedia.org/wiki/MapReduce.
2. Jeffrey Dean and Sanjay Ghemawat, MapReduce: Simplified Data Processing on Large Clusters, Proceedings of 6th Symposium on Operating Systems Design and Implementation, 2004.

Sunday, November 1, 2009

msn機器人應用實例與相關整合應用

社群合作/軟體開發商/廣告行銷公司/學術探討...各行各業需整合/合作,

或是業務搭配...歡迎與我聯繫(sonet.all@gmail.com)



---

我們已有超過100個以上的企業/團體/活動使用 應用實例

---

<<系統整合與應用>>

新竹大學 (校務系統整合)

世新大學 (圖書館系統整合)

元智大學 (圖書館系統整合)

嘉南藥理科技大學 (資管系整合應用)

國立高雄海洋科技大學-電訊工程系 (RFID貴重儀器管理)

高盛理財資訊有限公司 (理財資訊傳遞與管理,與CRM系統結合)

雲林縣消防局 (系統log警示通知系統)

台南縣消防局 (系統log警示通知系統)

花蓮縣消防局 (系統log警示通知系統)

新竹縣消防局 (系統log警示通知系統)

屏東縣消防局 (系統log警示通知系統)

高雄加工出口區管理處 (系統log警示通知系統)





<<行銷與社群合作>>





數位時代

http://bnext.imoo.tw/  

癮科技

http://cool3c.imoo.tw/

我的貼身e管家

http://join.imoo.tw/gov/

瘋狂賣客機器人

http://crazymike.imoo.tw/

2010台灣茗茶、咖啡暨美酒展-展昭國際

http://join.imoo.tw/chanchao/

電丸公仔機器人

http://tgs.imoo.tw/index.php

熊貓機器人

http://panda.imoo.tw/

3BEST的3寶機器人

http://blog.imoo.tw/?p=1262

重灌狂人MSN機器人

http://briian.imoo.tw/

極品專賣MSN機器人

http://join.imoo.tw/expro/

MSN天氣達人

http://www.tenki.tw/itenki/download/other.php

遊戲基地 MSN機器人

http://www.gamebase.com.tw/event/event_20100607_MSN/index.php

ezfly 行銷合作案

http://ezfly.imoo.tw

麗星郵輪 行銷合作案

http://starcruises.imoo.tw/page03.html

華納威秀MSN機器人

http://vieshow.imoo.tw/

狀態廣告

http://statusad.tw





---

msn機器人本身可以在 linux/win32 下運作,可廣泛支援大多數語言

(asp/asp.net/c#/java/perl/ruby/python/php/vb6/vb.net

...),本身提供soap/cgi/ado 介面操外部系統連接,互動選單可直接

支援一般web 程式

RFID 採用情況調查 (2009年度發表)

澳洲 Wollongong 大學研究人員在2009年下半發表了一篇調查報告,指出 RFID 方案採用及投資群的偏好項目。(見1.) 他們就 130 份 RFID 期刊的讀者做調查,客群包括批發商、零售商、通信、服務、通訊、製造、財務保險、採礦、行政與國防。有 39% 小企業 (20人以下) 、21% 中型企業 (20人到200人) 和 40% 大企業 (200人以上) 。從調查的 21 項目中,最廣為據以投資的項目是:
  1. RFID的採用改善資料品質、可信度和及時性。
  2. 高層管理者的贊助,提供投資的可能。
  3. 改善供需的結盟。
較不影響RFID採用決策的是:
  1. 威脅隱私。
  2. 威脅到安全方面。
  3. 工程標準模糊不定。
調查結果顯示,對方案採納人來說,主要的認知是採納RFID方案獲得策略優勢。而對於未採納者,主要的認知是採用成本及連帶成本過高。

1. SF Wamba, B Keating, T Coltman, K Michael, RFID Adoption Issues: Analysis of Organizational Benefits and Risks, working paper series.

最早的對話系統 Eliza

Eliza 是人工智慧領域很有名並很出色的對話程式,模擬心理醫生與人對話。對話的例子像這樣(http://tadhg.com/wp/1997/12/31/a-dialogue-with-eliza/)或那樣(http://osiris.sunderland.ac.uk/cbowww/AI/AI/eliza.html)。Eliza 被一般自然語言處理的教科書當做最基本的例子,因為它沒有建立完整的句子結構、也沒有資料庫更新、更沒有機器學習,卻能夠處理與人對話的工作。它怎麼做到呢?

Natural Language Understanding (見1.) 1.3 節 (第7頁) 指出,Eliza 內建關鍵詞資料庫,每一筆記錄以 keyword, rank, pattern, outputs 等欄位分別表示:輸入句中存在哪個關鍵詞,順序等級,句子符合的樣式,以及應該輸出的對話。例如: (alike, 10, ?X, In what way?), (alike, 10, ?X, What resemblance do you see?), (are, 3, ?X are you ?Y, Would you prefer it if I weren't ?Y?), (are, 3, ?X are ?Y, What if they were not ?Y) ...... 問號開頭的符號 ?X 和 ?Y 是變數。

對話處理方式是先比較輸入的句子符合資料庫哪些筆記錄的樣式,找到相對的關鍵詞。如果關鍵詞很多,就挑選一個順序等級最大的。以挑選的記錄,使用它指定的輸出句子當做回答句。接著,處理下一輸入句。

Eliza 系統成功的意義,或許是,電腦系統可以不懂人輸入的句子是什麼意思、也可以不關心人輸入句子表達的重點,卻只要在人輸入句子時即時運用自己現有的對話知識,用另一個句子回答人。而回答的句子恰好能引發人的對話思考。人類也像 Eliza 一樣,自己懂得什麼,才能夠答什麼。Eliza 系統的優點是很容易實作,人們不必充份懂語言學,就能建立一套聰明的對話系統。

1. James Allen, Natural Language Understanding, The Benjamin/Cummings, 1995.

Blog Archive