google-code-prettify

2015年1月9日 星期五

Java在cmd環境下執行的編碼問題

編寫了call Web-service的client程式,
將資料組成JSON的格式送至Server,
在Eclipse下執行一切相安無事,
但是在cmd的環境執行時,
卻有些資料會收到Server回傳400錯誤。

將有問題的JSON資料在cmd畫面中印出來放到jsonlint驗證, 卻是一切正確。 
仔細看了發生錯誤的幾筆資料,
發現資料內容都有含一些特殊符號(例如:數學符號),
所以應該就是編碼的問題。
因為在Eclipse中編寫java時,
整個環境都是設定為UTF-8編碼,
而cmd的環境卻是Big5編碼。 

解決的方式:
1. 在執行java時,給予「-Dfile.encoding=UTF-8」參數。這樣可以解決資料處理時的編碼問題。
2. 在cmd下執行「chcp 65001」指令,65001是表示設定為UTF-8(Big5為950),並到以下的畫面設定字型。這樣可以解決cmd印出中文出現亂碼的問題。


以上的作法可以編寫成以下這樣一個.bat檔,
這樣執行程式時,就方便很多了。
chcp 65001
java -Dfile.encoding=UTF-8 你的java程式 

2015年1月8日 星期四

MongoDB使用forEach進行非固定值update

使用關聯式資料庫時,
如果只是想要簡單的以該筆資料的A欄位狀況來update它的B欄位值,
可以很簡單的用類似以下的SQL進行:
update tableA set column_B = column_A+"-new value" 
where column_C="abc";

在MongoDB中我並沒有發現有像SQL這麼簡單程式碼就可以達到相同的作法, 所以使用forEach的方式來達到同樣的目的:
db.tableA.find({"column_C":"abc"}).forEach( 
    function(myDoc) { 
        if (myDoc.column_A == null){
            return;
        }

        db.tableA.update({"column_PK":myDoc.column_PK},{ "$set": { "column_B": myDoc.column_A+"-new value"}});

    } 
);  

2014年9月6日 星期六

D3 JavaScript Framework Demo

藉由研讀「網頁互動式資料視覺化:使用 D3 (Interactive Data Visualization for the Web)」這本書,
學習D3這套JavaScript Framework,
雖然書本有附上原作者的範例程式,
但一昧的照著範例程式打字實在無聊,
所以就盡量作一些變化,
例如:採用自己準備的資料、將原作者多支範例程式進行整合、使用台灣地圖資料等等。
過程中也不免需要去找一些作者沒提到或沒示範的處理方式來自我練習呈現在我的程式之中,
相對的收穫也較大。
我將這部份的程式放在GitHub作為分享,
提供需要的人作為參考!

Demo:http://pintse.github.io/D3Demo/

Source Code:https://github.com/pintse/D3Demo

我所使用的台灣地圖GeoJSON資料要感謝g0v熱血提供

2014年7月16日 星期三

開發Kinect for Windows v1 應用程式所需安裝的環境


Kinect的Driver和開發套件有兩大流派,
一個是開放原始碼社群的OpenNI和OpenCV,並使用C/C++語言開發之流,
另一個是使用微軟官方SDK和KinectDeveloperToolkit,主要使用C#(也可以使用VB/C++)語言開發,
我的經驗是使用官方的solution這部份。

我上網去看下載Kinect for Windows SDK 的網頁,
發現官網已推出Kinect for Windows SDK 2.0 Public Preview,
硬體需求上面寫明只支援「A Microsoft Kinect for Windows v2 sensor」,

才知道剛好是新版Kinect在台上市的日子。
所以原本之前學習時碰的實驗室所購買的Kinect v1無法使用,

下載的頁面我沒看到下載舊版SDK的連結有點不便,
搜尋了一下才找到下載的網址。

開發Kinect應用程式採用官方所推廣的Solution,
除了要安裝Visual Studio(我使用過2010、2012),
還要安裝:

Kinect for Windows v1 sensor使用的:
Kinect for Windows SDK v1.8
Kinect for Windows Developer Toolkit v1.8

佈署程式時,可不用安裝SDK,但需要Runtime,
Kinect for Windows Runtime v1.8


另外,我使用了Kinect Toolbox這個Open Source的Framework作為肢體行為辨識框架:
Kinect Toolbox
這個Open Source的創建者寫了一本書介紹這個Framework,
也有中文版的譯書:寫給專業開發者用的 Windows Kinect SDK 技術手冊 (Programming with the Kinect for Windows Software Development Kit)

還有其他有趣的Open Source,可以增加應用程式的UI豐富性,
例如:Coding4Fun Kinect Toolkit 

以上是針對Kinect for Windows v1 sensor所作的介紹

2013年7月2日 星期二

How To Configure Google Calendar for Shared Calendar

First, you should accept the invitation of shared Google Calendar (e.g. Lab of Collaborative and Creative HCI ).
Then you can see the shared Google Calendar in your Google Calendar interface.
To click the button in the right of the shared Google Calendar and it pop-up the menu.
If you are an administrator of the shared Google Calendar, you can see all menu item for administration.
If your are a User, you just can only operate "Reminders and notifications".


The Calendar Details only for administrator. 


The "Share this Calendar" only for administrator.
The administrator can configure who can use it and what permission granted to. 



If you are a User, you can operate the "Reminders and notifications" tab.
To "Add a reminder" for informed you before each event. 


I recommend you choose "Pop-up" for remind you, it will happen in your configured mobile device and the Google Calendar web page on you configured reminded time.
I like to get the pop-up for remind me 2 hours and 10 or 15 minutes before each event.

Please checked all of Email checkbox for notification any modified event, except "Daily agenda".


In the mobile device :

Open your Google Calendar App and click menu to choose "Settings" item.


To click your Gmail account of Google Calendar.


You can see the shared Google calendar then you should check its checkbox.

2013年4月29日 星期一

自動收集資訊的好工具 - Google Alert 介紹

        Google 提供了一個很好用的自動收集資訊工具 - Google Alert,他可以依照您設定的關鍵字定期自動的搜尋網路上最新發表的資料並寄送給您或彙整成RSS,這工具在Google Search 和 Google Scholar 都有提供,不過我感覺似乎很多人不知道。

       以下介紹如何設定這個方便的工具:

在Google 搜尋的首頁點選「更多」

進入下一頁之後,點選「Google 快訊」(可能會在頁面最下面)

 進入下一頁之後,
在「搜尋查詢」欄位填入您要查詢的關鍵字詞,可以用「OR」(表示關鍵字詞其一出現,即符合)或「AND」(關鍵字詞全部出現,即符合)串連關鍵字,因為字若要一定串在一起搜尋,則以「""」框起來。
「搜尋結果類型」可以選「網誌、新聞、影片」等等。
「傳送至」欄位,可以選擇送到您的信箱或是產生RSS用RSS Reader閱讀。
選好之後,按「建立快訊」。
 完成建立快訊,顯示已建立的清單


若要改變剛剛建立的快訊,點選「編輯」,即可以修改。
例如,要把「傳送至」原本寄到信箱的設定,改為產生RSS,就點選下拉選單的「資訊提供」,改好後按「儲存」存檔。



選擇「資訊提供」者,會顯示成「Google 閱讀器」,(如果您有使用Google Reader的話)這時候已經自動加入您的Google Reader裡,或是您在「Google 閱讀器」後面的橘色圖示(這圖示為RSS表示符)上按滑鼠右鍵出現選單,點選「複製連結網址」,即可將其RSS網址複製出來,貼到您慣用的RSS閱讀器(例如:Feedly)上做設定,方便閱讀。


以上是Google Search這部份的設定。


Google Scholar 這部份的設定,在其首頁右上方點選「快訊」。

進入下一頁之後,按「建立快訊」

在「快訊查詢」欄位中,輸入您要的查詢的關鍵字,用法和前面Google Search提到用法一樣。
至於資料接收方式只能是電子郵件的方式。
輸入選擇好之後,按「建立快訊」完成。

隨即產生Google Scholar 的快訊清單。

2013年4月14日 星期日

翻轉教室的模式


「翻轉教室」,上上週中山大學陳年興教授演講,提到了學校教育「翻轉教室」的方向,他並且在這學期(年?)開始已經把他自己開的課全部爭取採用「翻轉教室」的方式授課。

「翻轉教室」的推廣者認為把學生叫到學校教室,只是進行單向教學是花費了太多成本並且效果不見得比較好,所以翻轉教室的理念是,將可單向教學的內容(例如:影片、投影片等等)放上網,由學生上網觀看錄影帶學習或使用網路視訊會議功能進行上課學習,這種網路視訊教學系統已經有廠商在販賣,在視訊教學過程中,老師可以看到每位學生的反應,或是進行線上即時測驗,學生使用電腦作答,立即知道學習狀況,老師也可以立即知道學生學習狀況。只有在需要進行「雙向」教學活動時,才會把學生和老師都聚到同一間教室,例如:需要進行手動實作時。

這樣的方式減少了時間與金錢的成本,並且學生可以在線上隨時並且不限次數的觀看教學影片,相對於傳統教室,翻轉教室的學習成效較好。

這幾天的新聞,西班牙學校進行「翻轉教室」教學。
詳細報導與圖片出處請見:
Attica school 'flipping the classrooms'
http://www.jconline.com/article/20130412/NEWS0401/304120033/Attica-school-flipping-the-classrooms-?nclick_check=1

LAF N E-LEARNING ATTICA
P
Spanish teacher Piedad Corredor-Sanchez finishes work Thursday in her empty classroom during the final E-Learning Day of the school year at Attica High School. On this and three other E-Learning Days, students stayed home and used school-provided laptops. / Alex Farris/Journal & Courier