2013年8月28日 星期三

以網路為家之GOOGLE雲端開發

以前學生時代沒事喜歡架站, 但隨著俗務漸多, 自己養一個伺服器已經沒有興趣。當然身邊不是沒有伺服器, 但皆屬公務性質, 如果想要放一些小玩意, 找個比較不會倒的伺服器服務是比較合理的選擇. 但免費的伺服器空間狀況都不好, 都是想逼人家付錢, 小玩意兒特別付錢實在不是好的理由(當然絕不付錢也是一個重點)。

對於只是單純的小程式, 可以用java script寫的, 丟在DROPBOX裡設成分享其實就OK了, 而且它的分享資料夾基本上就是一個靜態網站. 但總是有後端的問題, 至少, 第三方資料就是一個大麻煩, 從早期開始, JS均被禁止第三方存取, 包括用POST跟IFRAME均同, 從伺服器轉資料一直就是必須的.

GOOGLE的雲端服務打得火熱, 它提供了GOOGLE SCRIPT作為伺服器端的快速開發, 但大部份人的認知都是不能加瀏覽器端的JS, 因為它的HTML會被先編譯(可以當active page用), 而且編譯後提供的基本物件有很大限制(如 document.stylesheets都沒有)。經過試作, 有幾個基本的操作可以減少一些麻煩

1. 使用JQuery架構, 但用google 優化過的library
2. 所有的東西都寫在 ready()裡, 特別是廣域變數及事件, 例如不要寫button onclick="...", 而是button id="ox", 在 ready() 裡再定義
$('#ox').click(function() {...});
3. 所有selector都用jqeury的, 如$('.myclass').css('font-size','10 em');

當然還有一些缺點, 主要的有
1. 速度並不快
2. 不能動態載入script

2013年6月17日 星期一

快速製作大型地圖檔

因為沒有用汽車導航的習慣,在去一個陌生的地方的行前都會用GOOGLE MAP把要去的地方做一個圖檔。以前就是用很白痴的方法把圖片一個一個的存下來再拼接。因為即將前往日本,常常用地圖規劃行程,今天進去發現一個新的地圖設計的功能, 可以標記一些地點然後儲存或輸出成KML檔。所以利用google map的另一個產生static map功能,以及輸出KML的座標, 做了一個小的產生 640X640 LEVEL 16 圖檔的網頁小程式。另外附加 LEVEL 15 LEVEL 17的版本

使用方式很簡單
1. 進入地圖設計,把要畫的地圖的地方的必須涵蓋的地方的地點標記起來,輸出成KML檔
2. 在 chrome 裡(IE不行)進入 http://goo.gl/snmnC,選擇存下來的KML檔,會將包括這些地標的 LEVEL 16地圖以經度差0.012,緯度差0.01的範圍顯示在640X640有接合重疊區的圖片。(東經/北緯為正)
3. 在空白處按滑鼠右鍵,選另存新檔,所有圖片會變成 staticmap(n)的檔名存在子資料夾裡。
4. 在命令提示字元裡 cd 到所存的資料夾, 執行  ren * *.png
5. 在photoshop的photomerge裡把圖片拼成大圖儲存,打完收工。因為地圖每一片其實都很像,如果一次太多片,在photoshop裡的拼圖可能會拼不起來或拼錯(還真的不仔細看會看不出來),就必須要分成幾個小區來拼

存在

2013年6月15日 星期六

擺脫M$之路

M$的授權合約日益昂貴, 而內容也日益機車, 而必須購買授權的兩個必要原因,首先是很多網站用VB+ACTIVEX,如弊校的校務行政系統就是用以下的程式碼

    Dim objExcel
    Sub OpenDoc(strLocation)
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = true
    objExcel.Workbooks.Open strLocation
    objExcel.ActiveSheet.PrintPreview
    set objExcel=Nothing
    End Sub

對於很多大型組織而言, 為了這個程式碼就是一年100萬, VB是IE的專利, 而指定OFFICE則是必須要有OFFICE的EXCEL跟WORD(另外一些表單),對於後者, KING OFFICE (http://www.ksosoft.com/product/office-free.html)提供了高度相容的OFFICE界面, 包括ACTIVE X, 而其差別, 只有在CreateObject("Excel.Application") 必須改成 CreateObject("et.Application"), 若是CreateObject("Word.Application")則改為CreateObject("wps.Application"). (參考 http://www.binarynow.com/office-suite/kingsoft-office-2009-supports-microsoft-office-word-excel-api-compatible-ole-com-activex-application-automation/)

但問題在網站程式不能直接修改, 以上面的程式為例, 在沒有WINDOWS OFFICE的電腦中安裝KING OFFICE, 用REGEDIT搜尋所有的et.Application, 把它們通通改成Excel.Application 就可以使用. 由於M$的授權僅包括WINDOWS昇級及OFFICE是必需的, 其他都是強迫搭配, 所有的電腦都有必須購買隨機版, 所以WINDOWS跟IE(自XP後昇級的需求又不多)不需要解決, 如果沒有WINDOWS的話, linux加wine加IE是可以一試的

2013年5月29日 星期三

在PHOTOSHOP裡拼接圖片快速去縫

因為小朋友要交出去的一些水彩畫用4開的圖書紙, 如果時間許可會去輸出的店裡掃瞄, 但如果時間來不及就用家裡的掃瞄器從四個角落分開掃瞄,在Photoshop裡的photomerge功能基本很好用, 它會把四個圖片變成四個圖層接合的很正確, 但是因為掃瞄器不是那種專業的(掃瞄器的控制面板比掃瞄區的玻璃還要高), 中間會有一些色差, 選擇Photomerge的去除暈邊功能並沒有用。心想photoshop應該沒這麼糟, 但網路上搜尋都是還要用印章等方式來蓋掉邊.

試了許多方法後發現, 只要將圖層的選項除了最下面一個圖層(當背景)以外, 從正常改成顏色加亮, 加亮的計算之後的會受到其他圖層的影響而得到幾乎看不到接綘的結果, 不需要再去蓋邊.如果是用其他軟體拼接的話,可以直接複製成一個圖層(原來的當背景是不能做事的)將調整亮度對比的圖層以一定比例的透明與背景(原圖)混合,也可以去掉拼接線

2012年1月19日 星期四

日本老人的能力復健

January 13, 2012
這是在一個演講上取得的日本老人能力復健的投影片稿紙本的掃瞄檔,日本在很多鄉鎮點設小型的復健設施, 用的是sakaimed的compass系列, 雖然來自復健, 但非醫療儀器, 訓練的輔導員對象也不是復健或醫療背景, 值得仿效,一些健身器材及健身房經營不善也是轉型的方向之一

2011年6月14日 星期二

android之長路有多遠

進了一批新玩具,是viewsonic 10s,因為大家都有手機,平板不須再重覆這功能。而經費有時效性,現在市面上android有3G的只有這台10吋。拿到手當然不儘如人意,Andorid x86已經玩了一陣子了,情形大致了解,但得先自行安裝基本工具,包括market跟unzip,一定要用手指,google原廠工具沒裝就算了,整合度也不夠,花了好多時間在基本安裝。顯然這波平板潮流,android雖然人多,但還是搞不懂什麼叫服務。

2011年5月30日 星期一

HTML5

因為一批新玩具準備入手, 加上希望把弘道基金會的老人健康操變成網路電視, 把兩個主要的系統變成HTML5 BASED的, 基實並不因難, IE不支援的HTML5TAG如畫布等也有支援方案, 主要討厭的是IE的window物件一堆事件的狀況很複雜(像event, reload這種), 用document比較正常(但webkit家族的又都是用window物件). 至於一般人擔心的code stealing問題, 其實只要用一個php程式用cookie確認連線並回傳javascript, 再用eval()來執行, 就可以擋掉大部份一般使用者的直接copy的問題. 至於有能力破的, 應該自己寫會比較快....

2010年11月29日 星期一

Android之長路有多遠

上個月為了兩個未來的計畫的龜畫, 又開始摸起嵌入式環境, 剛好在ANDROID-X86站上看到黃志偉的FROYO-VM的ISO
IMAGE, 覺得非常適合沒錢買ANDROID手機的人來試, 但光一個VM的測試環境就花了一個多月的時間才解決所有我面臨的問題. EEEPC的還有螢幕一有DIALOG就會閃, 我猜是VGA MODE的問題(因為它真實解析度是1024X600是其他環境沒有的,後來的版本有換過IC), 還得試著調一堆東西.

2010年7月6日 星期二

JAVA與HID

國科會計會跟USSEN買了一個SKYTECH M7的UHF RFID READER, 可是除了原廠提供USSEN的硬體測試程式及說明之外, 沒有其他的東西(SDK還要再幾百美元). 雖然程式裡有DLL, 並且台大有M2的SDK DOCUMENT, 但考量許多因素,還是自己用JAVA改GOOGLE CODE的原始碼,做了一個HID的封裝,當然需要JNA, 其實封裝也是單純, 只是要找到檔案路徑及輸出入封包的兩個大小,就可以透過低階的FILE IO, 直接丟M7的COMMAND.
其實JNA讓JAVA可以製作C的參數結構, 讓JAVA有直接調用系統服務(如DLL)的能力是重點,HID只是一個DLL呼叫的實作。不過缺點就是包類別包得有點多就是了。

2010年5月27日 星期四

IE限定之略有進步

在去年的IE限定裡, 透過MM$上網雖然比較便宜, 但台灣大哥大會重組人家的HTML, 造成CHROMIUM連上大量使用JS的網站如GOOGLE自家有很大的困擾, 但HTTPS因為PROXY不能怎麼辦, 在GMAIL有HTTPS之後總算好用一些, 今天突然看到IGOOGLE也原則上OK了(不是HTTPS), 一度還以為點錯了設定檔會導致荷包受傷, 經仔細檢查後確認是重組結果變得比較好了, 雖然READER還是有困難, 但總算是進一步了.
最近在想, IPHONE/IPAD熱潮或許有助於把SAFARI變成業界標準, 對於使用同一套WEB KIT的瀏覽器如CHROME系也是好消息.

2010年3月3日 星期三

Web Services兩三事之PHP Client

用PHP當Client, 只要把php.ini中的extension soap.dll的mark去掉就好了, 然後用soap client去抓service提供的wsdl再呼叫方法就好了, 只是如果是對之前的java class有一點奇怪的問題, 如果用
$client=new soapClient($wsdl_url);
$params->name="XYZ";
$result = $client->hello($params);
echo $result;return;
就很正常, 但如果第三行用常數傳
$result = $client->hello("XYZ");
參數傳過去就會變成NULL, 而且改回來也沒用, 一定用重新啟動TOMCAT, 應該是哪兒有問題,AXIS狀態被毁了

2010年2月21日 星期日

Web Services兩三事

在陰冷的寒假的晚上為了產學案在測試如何方便的製作Web Service的JAVA程式, 網路上的文件大多來自這裡, 但一開始試(當然沒有都照著作...)有一些問題, 最後整理了一些小地方
1. TOMCAT要裝好, 如果多裝了幾次, 注意一下會不會有重覆的TOMCAT在跑, 以及到底發佈到哪裡去了
2. 用TOMCAT的Manager來發佈, 雖然第一次會比較麻煩, 但要新增operation會簡單很多
3. 把真正的程式用一個class來代表, 可以先在JAVA Application裡測試正常再加至Web Services, 然後在NET BEANS裡用Eepty Web Service(HelloAxisWorld)來當主程式,不需要特別去做兩個不同的Project,但實際執行Java application跟Web Service是兩個實體要注意. 另外不需要產生WSDL(還是可以由axis的ListService來產生), 在Netbeans裡產生反而會有參數傳遞的問題
4. 新增的空白類別就是入口,在它的建構子裡new真的程式物件再逐一加上呼叫的對口.不要用void當傳回值,如果沒有特別要傳回的就用boolean傳個true吧.
5. 在Netbeans裡要刪掉Web Service重作會把對應的class也宰了, 所以如果需要要先備份
在Netbeans裡作Client就簡單多了, 只要在專案新增一個Client,在對話窗填該填的, 不要勾"genarate dispatch code", 再找一個副程式, 在編輯區中按滑鼠右鍵選最底下的call web services, 再挑一個版本(axis是1.2)跟一個方法, 就會產生幾行sample code, 前兩行算是基本物件, 第二行的port就是對應的物件, 所有的方法都包在裡面, 其他方法使用就跟產生的sample code類似了

2010年1月11日 星期一

部落格小玩意

上網頁設計的課, 用GOOGLE小工具讓學生試, 裡頭東西都太硬, 學生不感興趣, 而且這些(含YAHOO)大站的收集多少都有些私心, 咕了幾個關鑑字, 找到部落格小玩意 這個網站, 覺得還不錯, 紀錄一下

2009年4月17日 星期五

IE限定

因為換了3g手機, 長途旅行時就在玩手機上網, 台灣大哥大基本上分成兩種上網模式, 一種是apn設internet, 可以直接上網, 吃到飽要800元/月, 另一種是apn設mms, 要透過proxy, 吃到飽要399元/月, 當然後者比較划算, 用精靈產生的連線設定一定是前者, 但在桌面捷徑連線圖形上按滑鼠右鍵選內容可以改apn再到控制台的網際網路連線改該連線的proxy設定.
不過用chrome很多網頁都有問題, 包括它自家的igoogle跟google apps, 追蹤發現台灣大的proxy會把網頁解開, 把圖案的格式改變, 再重組為xhtml (原來的不一定是, 例如igoogle是html 4.0), 結果重組回來的xhtml chrome會有問題, 反而ie不會用問題, 看來要寄給google去看看他們自己的程式

2009年4月6日 星期一

搶救word大作戰

怎麼最近老是在做這種事。
word打一打常常會一卡好久, 甚至數小時, 不知道的人都以為當掉了, 有些時候因為文件沒存檔, 只好先去做別的事等它回來。這個問題跟自動格式設定有關(可是關不掉), 如果是在一個段落的最後輸入一個英文或英文標點符號, 即使是用倒退鍵清掉的也一樣, 再用ctrl加標點符號輸入中文標點符號, 有時候是把最後一個英文字母的字型變成中文字型(因為word的符號是另外處理的,但在樣式設定裡沒有符號的選項), 有時候會一次出現兩個標點符號,如果這時候用倒退鍵清掉一個就很常易當在那兒好久, 不是打太快的關係, 因為故意慢慢來也會, 只見狀態列的動畫在一直動, 可是不曉得在做什麼。
今天是發現先切到別的視窗(再切回來會出不來), 在windows桌面下的工作列上word的按鈕一直按滑鼠右鍵就可以把它停下來, 不過玩個幾次word就說記憶體不夠, 然後直接回復成剛開檔時的內容, 所以停下來後趕緊去存檔吧。
當然比較討厭的是為什麼一直習慣用word?我也好想訓練習慣其他的啊, 因為不是每次都要開別人給的, 有複雜表格的檔案。

2009年3月25日 星期三

USB Disk 緊急救援

常常在寫入資料後不小心拔掉USB DISK後毁了整個DISK, 想當年我的第一個拇指碟就是這樣只用了一次, 昨天用隨身硬碟備份資料後想從辦公室拿到研究室, 結果又發生了悲劇, 因為隨身硬碟備份了太多資料, 這樣就毁了太糟糕, 想努力救一救. 點兩下TRAY上的安全移除硬體的ICON, 在對話窗勾選顯示裝置元件可以看到沒有磁碟代號的磁碟機, 從控制台-->系統管理工具-->電腦管理-->磁碟管理裡可以看到一個沒有檔案系統也沒有磁碟代號的磁碟機, 強迫指定一個磁碟代號後居然可以用了, 趕快把資料備出來, 做了一陣子也認出了檔案系統

2009年3月11日 星期三

VBScript 23事

因為常常會demo一些小的程式實驗, 雖然有許多的開發平台, 如 vs, netbeans, appserv, djgpp, 但是因為電腦還不少, 每台電腦的狀況不一樣, 有些可憐的連跑得動都很神奇了, 所以最近就試了一些vbscript, 主要的是檔案io的部份. vbscript沒有檔案io, 文字檔要用System.FileSystemObject, 支援像com1這種device, 二進位檔要用ADODB.Stream, 差別在前者是char(), 中文一個char是2bytes, 後者是byte(), 可是vbs對byte()的支援很少, 如果寫一個float到file, 讀回來變成byte(4), 沒辦法轉回來, 要轉要自己計算IEEE格式. 網路上有人用DLL, 但一直試不出來(連DECLARE SUB都不行), 而且讀一個BYTE要這樣子 ASC(MIDB(BYTEARRAY, N, 1))
MIDB跟MID的差別也是BYTE()跟CHAR(), VBS是從1開始數的

2009年1月13日 星期二

ubuntu lamp的vm

因為要幫陳恆順的健康醫學網確認功能需求的可行性以扺抗合作廠商的什麼都很難, 利用vm架一個drupal的空白站, 抓了幾個比較簡單的linux vm總是有一些東西不完整, 對這些細節也不是很熟. 最後抓了 tuxdistro的ubuntu 8.10 lamp, 用bt下的, 因為種子少加上學網會擋bt, 下了幾天才下完, 裝了drupal也順利, 唯一麻煩是每次冷開機(為了節省mem dump的空間...)網卡的代號總是會跳一號, 只好每次到 /etc/network的interfaces檔案裡去改, 或是儘量不要冷開機了

2008年9月18日 星期四

Infopath 重覆區段的參數們

infopath在編輯重覆區段時是記得focus在重覆的哪一份的, 可是這個索引值取不出來(或者不知道如何取, position()好像不是給它用的), 正常情況下在一些參數裡(查閱, 驗證, 規則)可以用../ooxx來參考同一個區段的其他欄位, 但如果在驗證或規則中必須切換資料來源時(從次要來源利用下拉式選單挑選資料), 它就會忘了自己原先在重覆區段的哪一個, 之後就必須用篩選但很難選。所以必須先把須要記住的值抄到不是重覆區段的地方當作暫存變數, 然後再引用才不會都引用到重覆區段的第一個區段。

2008年6月11日 星期三

Infopath的次要來源

Infopath 2003 sp2在下拉式選單的xpath查詢, 如果條件在另一個xml的資料來源,使用它的查詢編輯工具,xpath的開頭會有

xdXDocument:GetDOM("表單1")

這樣的描述, 可是再進入修改設定的對話窗中,這一段會自己消失,結果抓到主要資料來源去了