2012年1月31日 星期二

用 清華紫光 TH-OCR 辨視韓文

1. 先下載 TH-OCR
URL: http://blog.sina.com.cn/s/blog_49ee6d690100ixe4.html
or
URL: http://u.115.com/file/f690399e2b


2. 設定字型:
韓文字型的話, 可以使用 GulimChe 或 GungsuhChe



3. 執行 TH-OCR, 並開啟抓到的圖檔, 點選 Recognize(辨視).



4. OCR 的結果.




5. 再透過 google translate 來看答案.



更簡單的方式, 是透過 JOCR:
http://philtzki.pixnet.net/blog/post/5189840
(這個需要安裝 office 2003 以上的版本, 透過office 內建的OCR元件來辨視)



附註: OCR 都會有這一個問題, 就是您抓取的圖片太小, 會造成圓形與正方形在判斷上會誤判,
例如:
한고객이 매매 할수 있는최뎨매수는 4입니다. 翻出來是: 營銷可以有遊客,將染料中的最大數是4
한고객이 예매 할수 있는최뎨매수는 4입니다. 翻出來是: 保留可以有遊客,將染料中的最大數是4

說明: 第1行的正方形是誤判, 把 source image 放大後, 再減少亮度, 增加對比後, 即可判斷為圓形.

2012年1月20日 星期五

[facebook].自動發佈粉絲專頁App Demo.(post fan page wall)

app 提供2個功能:
1.加入粉絲專頁.
2.管理粉絲專頁.(+發佈測試)

先使用瀏覽器1號(chrome), 已登入 facebook, 管理介面如下:



目前管理的粉絲專頁= 0 筆. (使用前)



點選 "Facebook 應用程式授權" 超連結.



會列出目前已登入的 facebook 帳號可以管理的 Fan pages.



按下 "確定送出"



按下 "確定" 後, 會導到 "粉絲專區維護" 的管理界面.



為了確保, 其他台的電腦也可以正常使用該發佈功能,
改用 瀏覽器2號(firefox) 來操作, 點選 "測試發佈", 並輸入:
"測試發佈訊息-2012-01-20"



貼到粉絲專頁塗鴉牆的畫面:

2012年1月18日 星期三

[facebook].取得 page_access_token 的2個方法

資料來源1: How To: Post On Facebook Page As Page Not As Admin User Using PHP-SDK
http://www.masteringapi.com/tutorials/how-to-post-on-facebook-page-as-page-not-as-admin-user-using-php-sdk/31/

資料來源2: 111219 facebook connect 改使用 php sdk 3.01與Graph API
http://living.donghong.info/blog/?page_id=9986

要讓 facebook app 存取粉絲專頁, 需要授與 manage_pages 權限.



方法1: 透過 $facebook->api("/$page_id?fields=access_token")
---------------------
$page_id = 'page_id';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
$args = array(
'access_token' => $page_info['access_token'],
'message' => "I'm a Page!"
);
$post_id = $facebook->api("/$page_id/feed","post",$args);
}



方法2: 透過 $facebook->api("/$user_id/accounts")
---------------------
$page_id = "XXXXXXXXX";
$page_access_token = "";
$result = $facebook->api("/me/accounts");
foreach($result["data"] as $page) {
if($page["id"] == $page_id) {
$page_access_token = $page["access_token"];
break;
}
}

* 附註: 如果您有開發 app 的話, 透過 /$user_id/accounts 來列 object 時, app 也算是在 page 裡的一個object, 可以透過下面的 code 來判斷是 facebook app 還是 fan page.
$page["category"] == "Application"

[facebook].以粉絲的角色貼文到粉絲專頁(Page),而非管理員帳號(Admin User)

資料來源1: How To: Post On Facebook Page As Page Not As Admin User Using PHP-SDK
http://www.masteringapi.com/tutorials/how-to-post-on-facebook-page-as-page-not-as-admin-user-using-php-sdk/31/

資料來源2: 111219 facebook connect 改使用 php sdk 3.01與Graph API
http://living.donghong.info/blog/?page_id=9986

看完上面這2篇, 應該就可以實作出來,
首先要多授與 facebook app 下列3個權限:
publish_stream, manage_pages, offlice_access


第2點, 就是需要在貼文到 fan page 時, 要多指定 page_access_token, 而不是 user 的 access_token. 下圖中的 Max Yao 就是過 user access token, 第2次再貼就是透過 page_access_token 即可用 "Max家裡蹲公司" 的角色進行貼文.



只是, 貼到 fan page, 的限制比貼到一般的 user 塗鴉牆多, 貼文中的 link (hyperlink) 有限制, 如果輸入外部的 URL 就會顯示錯誤訊息:
The post's links must direct to the application's connect or canvas URL

[facebook].貼文到user 的塗鴉牆(wall)

資料來源1: How To: Post A Message On The User Wall Using Facebook Graph API
http://www.masteringapi.com/tutorials/how-to-post-a-message-on-the-user-wall-using-facebook-graph-api/33/

資料來源2: facebook Core Concepts - Graph API - Page
http://developers.facebook.com/docs/reference/api/page/

貼文到user 塗鴉牆很簡單, 需要授與 facebook app publish_stream 權限, 就可以透過下面的指令直接貼文. 比較難的是貼文 "粉絲專區".


$args = array(
'message' => 'Hello from my App!',
'link' => 'http://www.masteringapi.com/',
'caption' => 'Visit MasteringAPI.com For Facebook API Tutorials!'
);
$post_id = $facebook->api("/me/feed", "post", $args);


我常用的 /feed 用的 args(參數) 有下面這幾個.
$message = trim(''.$_GET['message']); // 本文.
$link = trim(''.$_GET['link']); // hyperlnk.
$picture = trim(''.$_GET['picture']); // picture
$caption = trim(''.$_GET['caption']); // 第一行的標題.
$name = trim(''.$_GET['name']); // hyperlink 的 title.
$description = trim(''.$_GET['description']); // 第2行的詳細說明文字.

[facebook].取得 Application Access Token

資料來源1: How To: Get A Facebook Application Access Token
http://www.masteringapi.com/tutorials/how-to-get-a-facebook-application-access-token/41/

資料來源2: facebook SDKs & Tools - PHP SDK - api
http://developers.facebook.com/docs/reference/php/facebook-api/


方法1:
------------------
$APPLICATION_ID = "APP_ID";
$APPLICATION_SECRET = "APP_SECRET";

$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $APPLICATION_ID .
"&client_secret=" . $APPLICATION_SECRET .
"&grant_type=client_credentials";
$app_token = file_get_contents($token_url);




方法2:
------------------
$facebook->getAccessToken();




這2個方法, 都可以取得 app access token, 建議使用方法2.

2012年1月16日 星期一

[facebook].app 取得授權的寫法(Authentication)

facebook 最近加入了時間
facebook app 取得授權的寫法, 程式碼:



不正確的授權視窗:



正確的授權視窗:



結論: 把程式碼裡的 req_perms , 換成 scope, 就可以彈出正確的授權視窗了.


相關文章:
facebook Authentication
http://developers.facebook.com/docs/authentication/

2011.12 已全面改用 php-sdk 3.01 與 Graph API
http://living.donghong.info/blog/?p=7258

2012年1月10日 星期二

認識 css 的 clear:both

設計師, 之前給的 UI 太少, 現在要套用新的畫面(AP)就跑版了,



多一個 div tag, 在 style 屬性加入 clear:both,




修改後, 畫面就正常啦

2012年1月9日 星期一

[Asp].處理 json 中的中文字編碼

前言: 愈來愈多 AP, 除了可以使用 xml 做介接, 也開始支援 json 格式, 例如: jQuery, facebook api, php 等.

jSon 也支援大部份的程式語言,
參考看看 URL: http://www.json.org/

如果收到的 json 字串是: \u5922\u5e7b\u68d2\u58d8\u793e
要怎麼知道對應到的中文字是什麼?


程式碼:

* 說明: 透過 getElement() 即可取得欄位裡的內容.


執行結果:




=============================================
* 備註: 範例中的 json 和 base.asp 是取自於 ASP Xtreme Evolution:
URL: http://zend.lojcomm.com.br
Written by Fabio Zendhi Nagao

KindEditor HTML editor (網頁編輯器)

KindEditor is a lightweight, Open Source(LGPL), cross browser, web based WYSIWYG HTML editor.


下載 URL:
-------------
http://code.google.com/p/kindeditor/


What is it?
-------------
KindEditor is a lightweight, Open Source(LGPL), cross browser, web based WYSIWYG HTML editor written by JavaScript, easy to integrate with all of server side language such as Java, .NET, PHP, ASP, Python, Perl and Ruby.


Features
-------------
Lightweight: Only 27KB after gziped.
Cross browser: IE6-IE9, Firefox, Chrome, Safari and Opera.
Customizable: Change themes and plugins, block defined elements.


Examples
-------------
http://kindeditor.googlecode.com/svn/trunk/examples/multi-language.html


Compatible
-------------
Internet Explorer 6.0+
Mozilla Firefox 3+
Chrome 3+
Safari 4+
Opera 10+

[Asp].自動上傳影片到 youtube的範例.

step 1: 利用 google帳號及取得developerKey
URL: http://code.google.com/apis/youtube/dashboard/


step 2: 把取得的 developerKey 寫入我們的設定檔.


說明: 由於這個年代沒有人在寫 Asp 了, 反正程式的邏輯是一樣的, 你可以下載你看的懂的 sample code 下來看:
https://developers.google.com/youtube/code_samples



step 3: 透過 max牌 youtube object, 測試看看把本機的檔案傳上 youtube.

* 參數說明: videoPath(本機路徑) + videoTitle(標題) + descript(說明)


step 4: 測試可以用之後, 把 youtube object 放到開發中的專案裡, 上傳前 youtube 影片數=0.




step 5: 上傳影片, 上傳後 youtube 影片數=1.



  • * 附註1: 由於 youtube 處理縮圖需要時間, 30秒~90秒不一定, 而且還要視上傳的影片內容的編碼方式和大小而定. 
  • * 附註2: 關於處理縮圖的時間點, 比較好的解法是, 透過程式去檢查 Video API, 取得 video status, 等youtube 處理完成後, 再去取縮圖, 這個我還沒去實作, (偷懶的解法) 取縮圖的部份修改為: 等 user 完成整個文檔的編輯, 並按下 submit 後, 再從 youtube 來取縮圖.


[Asp].http to disk 把URL 裡的文件存到硬碟裡

假設有一個 Http 的 URL 裡的文件(例如: .doc , .pdf , .jpg 或是 .asp) 要把URL 裡的檔案存下來本機的硬碟裡, 可以透過這一個副程式: httpUrlToDisk(URL, filePath)


這個副程式的原理, 就是透過副程式 saveReponseToFile 把 binary array 存到 Disk 裡.

2012年1月8日 星期日

php 處理中文檔案時file does not exit or is not readable

最近在寫 php, 遇到 php處理中文檔案時file does not exit or is not readable, 錯誤的畫面如下:


解法:
$filename_new=iconv("UTF-8","Big5",$filename_old);

把編碼轉成 big5 就ok了.




先用 is_readable() 測試看看, 問題發生的原因是什麼, 看看是安全性的問題, 還是中文字的問題.



後來使用多組的測試路徑, 測出來的結果是中文檔案遇到的問題, 改用 iconv() 即可使程式在處理時變成 readable.

2012年1月4日 星期三

jQuery blockUI 的 bindEvents 造成的事件被吃掉的問題

資料來源:
------------------
http://eragonj.hax4.in/blog/javascript-solve-conflicts-when-using-jquery-blockui-and-datepicker.html


發生的情況:
------------------
同時用 blockUI 及 datepicker,會發生在你使用 modal dialog ,而該 dialog 內還包含一個 datepicker 的元素,這樣就會造成那個 datepicker 在選取年、月的下拉式選單(dropdown)時無法觸發。



結論:
------------------
blockUI 運行的過程中,有這麼一段程式碼會綁定 mousedown / mouseup / keydown / keypress 的事件,這樣就會使得 datepicker 的點擊行為無法發生,這就是為什麼會有這個 bug 的出現。

所以目前比較好的做法,一個是設定 showOverlay : false (這會拿掉漸層背景,不過這通常都不會是我們想要的解法),另一個就是設定 bindEvents : false (讓 blockUI 不要 suppress 我們的點擊 event ),這樣就可以解決這個問題了。

修改 jQuery BlockUI 在 IE6 的情況下彈出視窗的位置.

1. 修改前, 彈出的視窗偏低.
----------------------


而且, 不論怎麼卷動 scroll bar, 都只能看到上半部的 form.




2.修改後, 設定在 IE6 + showOverlay 的情況下, 不自動調整 Y軸(上下坐標), 即可解決.
----------------------




修改方式, 修改檔案 jquery.blockUI.js , 增加程式碼:
// add by max for IE6.
if(ie6 && opts.showOverlay){
opts.centerY=false;
}

2012年1月3日 星期二

居然可以遇到 jQuery bugs - event.layerX and event.layerY are broken



Error Message:
event.layerX and event.layerY are broken and deprecated in WebKit. They will be removed from the engine in the near future.

發生的原因, 是 jQuery 使用了 1.6.2 版, 升級上去使用 1.7.1 版就不會有錯誤訊息.


發生的情況, 是在我的某一段文字, 下了 label for='id' 但, checkbox 並不會因為 label 被 click 而自動勾選, 更新了 1.7.1 是不會產生 Error(應該是 Warnings), 可是 label for 一樣不會 Work, XD

這個畫面, 可能太複雜, 用了很多的 jQuery 元件, 像是 blockUI 和 tiny_mce, 到底是那裡衝到? 只有影響到 label for , 似乎不會被發現, 以後有空再來 trace(debug).


相關Link:
--------------------------
jQuery:
http://jquery.com/

2012年1月2日 星期一

javascript 分析用戶端程式碼並消毒其輸入來源

今天收到一分 IBM Rational AppScan 8.0.0.3 所建立的檢測報告,
雖然, 覺得是誤判, 但還是改一下, 試試看讓檢測工具可以過.

報告如下:



使用一個 html 來做測試:

* 說明: 測試在輸入的參數裡, 帶 javascript, 是可以直接 alert 出訊息.



修改 javascript, 在處理的參數前面, 增加 encodeURI:




測試結果 ok, 可能可以過檢測, 請客戶重新檢測看看:

Facebook 留言板