2012年6月15日 星期五

自動傳檔到遠方Server,並繪圖展於網頁上(from WinXP to Cygwin)



本篇是將Local(WinXP)GPS tilt資料,以SSH的協定定時將所要的資料傳到遠方Server (Cygwin),而遠端Server定時將近期的資料彙整,並用GMT軟體繪製成圖檔,放在Apache網頁的目錄下!

雖然過程的概念很簡單,但是過程中總有小小的”眉眉角角”問題不時跳出來,所以趁印象深刻,趕快紀錄下來。
 -----------------------------------------------------------------------------------------------------------------

Local(WinXP)
sendGPSTVO.batWindows批次檔整理檔案,並利用pscp上傳遠端,其中pscpPuTTY Download Page可以下載,同屬運用SSH協定軟體
 
####以下為sendGPSTVO.bat內容########
cls
@echo off
REM get previous date
set dir=C:\"GNSS Spider"\Data\RINEX\ym05\  #Data目錄
set dir2=C:\         #Data收集tmp檔放在C:\主要是當用pscp傳檔時檔名最好不要有超長檔名或空格(C:\Documents and Settings\User)
echo wscript.echo dateadd("d",-1,date) >%tmp%\tmp.vbs 
    for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
    for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
    for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k
    if %m% LSS 9 set m=0%m%
    if %d% LSS 9 set d=0%d%          
#六行是抓Windows下昨年月日,沿用網路高手,但是google完就忘記是那位高手寫的,所以無法Reference,其中第一行的"d",-1表示昨天
set t1file=%dir2%ym05_%y%%m%%d%.dat        #昨天資料改成時間檔名並放於暫存位置
set t1=%y%_%m%_%d%

echo wscript.echo dateadd("d",0,date) >%tmp%\tmp.vbs 
    for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
    for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
    for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k
    if %m% LSS 9 set m=0%m%
    if %d% LSS 9 set d=0%d%
#重複抓今天日期,本用%date:~4,4%_%date:~9,2%_%date:~12,2%方式直接擷取,但會有不同版本windows欄位的問題發生
set t0file=%dir2%ym05_%y%%m%%d%.dat
set t0=%y%_%m%_%d%

copy %dir%%t1%\*.12a %t1file%      #將檔案複製到暫存區
copy %dir%%t0%\*.12a %t0file%
echo %t1file%  %t0file%
REM transfer data to remote server
echo %t0% %time%
C:\"GNSS Spider"\Data\pscp -pw passwd %t1file% Lin@ymstvo.dyndns.org:/home/Lin/GPS/data  #將檔案傳到遠方,使用者Lin,密碼passwd,當然遠方SSH要開
C:\"GNSS Spider"\Data\pscp -pw passwd %t0file% Lin@ymstvo.dyndns.org:/home/Lin/GPS/data
del %t1file% %t0file%
################################

 
下一步用Windows排定的工作,將批次檔加入,預設頻率是每天一次,若要更快(Ex: 1小時)可以在排程的進階選項開啟
 而執行的身分最好用工作環境的使用者(本例為nancy),原本用Administrator,但是pscp硬是不執行。
排定的工作預設一定要有密碼,假如遇到必須不設密碼的情況,可以將 ”限制使用空白密碼的本機帳戶僅能登入到主控台的選項關掉即可!方法如下(WinXP為例)
[控制台]->[系統管理工具]-> [本機安全性原則]-> [帳戶:限制使用空白密碼的本機帳戶僅能登入到主控台] 改成已停用即可!
 -------------------------------------------------------------------------------------------------------------------
 
Server(Cygwin@WinXP)
首先先將CygwinSSH選項打開,方法請自行Google!
Recent7d_plotTimeS_tilt.sh整檔與繪圖,主要是繪製七天內的資料時序圖,當然GMT要在cygwin內先灌好

####以下為Recent7d_plotTimeS_tilt.sh內容########
#!/bin/bash
home=/home/Lin/GPS
gmtdir=/opt/GMT/bin/
#-------------------------------Get  Files -----------------------------
rm  $home/*.dat    #將七天內的資料複製到近端暫存,因為dateday語法還不會批次,只好呆呆一個個複製
cp $home/data/ym05_`date --date='-8 hour' +%Y%m%d`.dat $home
cp $home/data/ym05_`date --date='-1 day' +%Y%m%d`.dat $home
cp $home/data/ym05_`date --date='-2 day' +%Y%m%d`.dat $home
cp $home/data/ym05_`date --date='-3 day' +%Y%m%d`.dat $home
cp $home/data/ym05_`date --date='-4 day' +%Y%m%d`.dat $home
cp $home/data/ym05_`date --date='-5 day' +%Y%m%d`.dat $home
cp $home/data/ym05_`date --date='-6 day' +%Y%m%d`.dat $home
dos2unix $home/*.dat 
#------------------------------- Filename -----------------------------
for ifn in $home/*.dat;do
 gawk 'NR>13&&$1>0{print "20"$1"-"$2"-"$3"T"$4":"$5":"$6,$7*100,$8*100,$9}'  $ifn >>$home/ifn2.dat    #抓成GMT日期format,六七欄因為太小,先乘100
 echo ">" >>$home/ifn2.dat  #每天資料用”>”斷開,避免頭尾資料連起來與長時間斷資料也硬連起來的不合理圖示
 gawk 'NR>13&&$1>0{print $7*100,$8*100,$9}'  $ifn >>$home/ifn3.dat #抓資料極值用
done
outfile=$home/tilt.ps
img=$home/tilt.png
#---------------------------- Time Duriation and Location ----------------------------
x1=`date --date='-6 day' +%Y-%m-%d`T00:00:00    #七天圖示時間軸起點
x2=`date --date='+1 day' +%Y-%m-%d`T00:00:00   #圖示時間軸起點終點
x3=`date  +%Y-%m-%d`T00:00:00                           #今日圖示時間軸起點
t=`date  +%H:%M`                                                    #繪圖時間

#---------------------------- catch window ----------------------------
range=`"$gmtdir"minmax -I.0001 -m -C $home/ifn3.dat ` #抓資料極值
np1=`echo $range |awk '{print $1}'`   #Y軸低值
np2=`echo $range |awk '{print $2}'`   #Y軸高值
ndy=`echo $range |awk '{print ($2-$1)*10000 }' |awk '{printf("%.f", $1/100 ) }'|awk '{print $1/1000}' `
#概念是Y軸動態繪製約十個左右的label,因為資料很小,先將資料變化區間乘上10000,然後除以一百取整數,再回歸原始值
ndyy=`echo $ndy|awk '{print $1/2}'`
ep1=`echo $range |awk '{print $3}'`
ep2=`echo $range |awk '{print $4}'`
edy=`echo $range |awk '{print ($4-$3)*10000 }' |awk '{printf("%.f", $1/100 ) }'|awk '{print $1/1000}' `
edyy=`echo $edy|awk '{print $1/2}'`
tp1=`echo $range |awk '{print $5}'`
tp2=`echo $range |awk '{print $6}'`
tdy=`echo $range |awk '{print ($6-$5)*10000 }' |awk '{printf("%.f", $1/100 ) }'|awk '{print $1/1000}' `
tdyy=`echo $tdy|awk '{print $1/2}'`

#---------------------------- Plot----------------------------
#gmtset PLOT_DATE_FORMAT "yyyy-o"
"$gmtdir"gmtset ANOT_FONT_SIZE 10 FRAME_WIDTH 0.08 TICK_LENGTH 0.1c LABEL_FONT_SIZE 10
"$gmtdir"gmtset PLOT_CLOCK_FORMAT hh:mm  ANNOT_FONT_SIZE_SECONDARY 36
"$gmtdir"gmtset PLOT_DATE_FORMAT "o dd" PLOT_CLOCK_FORMAT hh:mm ANNOT_FONT_SIZE_PRIMARY +10p

echo " 6 22  228 35 5 CM T V O "|"$gmtdir"pstext -X2.5c -Y1.5c -R0/10/0/10 -G225 -JX16.5c/4c -K -N  > $outfile
gawk '{print $1,$2}' "$home"/ifn2.dat|"$gmtdir"psxy  -R$x1/$x2/$np1/$np2 -G255/0/0 -JX14cT/5c -Bpa12Hf1h/a"$ndy"f"$ndyy"g"$ndy":: -Bsa1DS/:"m Degree":WSne  -K -O -m  >> $outfile  #重點是-m參數繪製斷資料
gawk '{print $1,$3}' "$home"/ifn2.dat|"$gmtdir"psxy  -R$x1/$x2/$ep1/$ep2 -G0/0/255 -JX -Bpa12Hf1h/a"$edy"f"$edyy"g"$edy":: -Bsa1DS/:"m Degree":Wsne  -K -O -m -Y5.5c  >> $outfile
gawk '{print $1,$4}' "$home"/ifn2.dat|"$gmtdir"psxy -W1/0/255/0  -R$x1/$x2/$tp1/$tp2 -G0/255/0 -JX   -Bpa12Hf1h/a"$tdy"f"$tdyy"g"$tdy":: -Bsa1DS/:"Degree":WsNe  -K -O -m -Y5.5c  >> $outfile

gawk '{print $1,$2}' "$home"/ifn2.dat|"$gmtdir"psxy  -R$x3/$x2/$np1/$np2 -G255/0/0 -JX9.5cT/5c -Bpa3Hf1h/a"$ndy"f"$ndyy"g"$ndy":: -Bsa1DS/:"m Degree":wSnE  -K -O -m -Y9c -X15c -Y-11c>> $outfile
gawk '{print $1,$3}' "$home"/ifn2.dat|"$gmtdir"psxy  -R$x3/$x2/$ep1/$ep2 -G0/0/255 -JX       -Bpa3Hf1h/a"$edy"f"$edyy"g"$edy":: -Bsa1DS/:"m Degree":wsnE  -K -O -m -Y9c  -Y5.5c>> $outfile
gawk '{print $1,$4}' "$home"/ifn2.dat|"$gmtdir"psxy -W1/0/255/0 -R$x3/$x2/$tp1/$tp2 -G0/255/0 -JX   -Bpa3Hf1h/a"$tdy"f"$tdyy"g"$tdy":: -Bsa1DS/:"Degree":wsNE -K -O -m -Y5.5c  >> $outfile

"$gmtdir"pstext  -R0/20.2/0/20.2 -JX20.2c  -O  -N -X-15c -Y-11c <> $outfile
12.1 17.8  38 0 5 CM  YM05
.6  4.5   16 0 5 LM  Tilt N
.6 10.0   16 0 5 LM  Tilt E
.6 15.5   16 0 5 LM  Temperature
25 -1   14 0 5 CM  Made $t
END
ps2pdf $outfile $home/tilt.pdf   #這兩行將ps轉成pdf,又轉回來,主要是將ps圖旋轉90度,以利gs轉成png
pdf2ps $home/tilt.pdf $outfile
gs -dNOPAUSE   -sDEVICE=png16 -r200 -sOutputFile="$img" "$outfile"  -dBATCH  -q –dNODISPLAY  #gs轉成png
mv $img /cygdrive/c/AppServ/www     #png檔放到Apache Server目錄下
rm  $home/tilt.p*  $home/*.dat 

########################
最後結果如下


2012年6月6日 星期三

2012/06/02 林慶台牧師分享@慈林基金會


奇妙的經驗,5/27在羅東教會的佈告欄上看到林慶台牧師要分享的公告,是慈林基金會要請林牧師演講,題目是林慶台的人生課題”!

時至6/2,跟Nancy到慈林基金會(蘭陽大橋旁),會議會場主人是名人林義雄(後知後覺才發現,慈林基金會根本就是他的)

 
林牧師談到在國小一到四年級,無心上學,但是彈弓打得很不錯;之後因為學業問題,五六年級轉到羅東公正國小,雖然課業依舊低空,但是棒球打得不錯,用彈弓的技巧運用到棒球的變化球上,變成學校的王牌投手,對手看到他幾乎都是被三振的命運,甚至創下少棒618K的完美紀錄,也帶領學校拿冠軍。

升上羅東國中,卻受到校內霸凌事件,一次撿球經驗,因未依學長的指示,將女同學的球物歸原主而沒給學長,慘遭圍毆,且照三餐打,不得已只好離開羅東國中回到部落,但也非常怨恨漢人。

國中畢業後,到台北工作,做過學習各式各樣的技能,但是因為語言與現代社會適應問題,往往下場都很慘,例如在機車行工作,師傅要一個板手,但是發音跟母語內褲一樣,林牧師就拿個內褲給師傅,想當然耳師傅是火冒三丈,甚至有受辱的感覺,免不了大飆一場,林牧師就離開了,因為再留下,可能就會發生社會事件…….

此時的林牧師是一個找不到目標的人,每個方向都嘗試,但是結果都不好,到哪裡都是弱勢被欺負的,失意的過程往往藉著酒精消愁,前後米酒喝掉近1萬瓶,喝到胃潰瘍等一大堆病痛。

時間到了近三十歲左右,在姐姐的建議下,進入玉山神學院。那是一個充滿愛的處所,沒有歧視、沒有霸凌、沒有欺負,在神學院有好的人物跟事務,學習到饒恕與包容,受到從小到大未曾受過的尊重,雖然成績一樣低檔,但是善於修繕,獲得最佳服務獎,快畢業時,因為距離及格分數四分,居然用飛鼠抵扣而過關XD

由玉山神學院畢業的林牧師,回到了家鄉南澳金岳部落從事神職工作。一回到家鄉,才發現問題是如此嚴重,部落裡酗酒、賭博、沒工作、婚姻小三問題原住民文化與新文化的平衡,家庭經濟的貧窮,青年學子的迷失等等困難繁雜艱鉅的狀況,讓菜鳥牧師的險些作不下去,想要放棄;但不願看到部落同胞受苦,也想到過去自己迷失的過往,祈求上帝,在主帶領下,一點一滴的貢獻部落;例如教育問題,以自己熟練的木雕為誘因,吸引小孩受教育;尋找社會救助的管道(世界展望會、宜蘭縣政府等等)解決經濟與就業等問題,在多年努力之下,逐漸有成。

直到50歲,遇到魏德聖拍了賽德克巴萊…….
當初賽片劇組到部落找原住民演員,有人建議找牧師最好,不然會被誤會成詐騙集團份子(顯示世道不古啊),而某次魏導到玉山神學院尋賽片演員,經林約道牧師引薦(慶台牧師胞弟),回台北途中到南澳金岳部落找慶台牧師,一眼認定就是他,之後再找半年,幾乎找不到中年莫那魯道合適的演員。而接拍時過胖的林牧師,體能測驗時,一度心肌梗塞,血脂數標高到四千,體內放入支架,進入加護病房二十多天,竟因此瘦到七十五,符合拍片要求,真是奇阿!


林牧師經過上帝的試煉,終於一一成他人生各階段的使命,優秀的牧師解救了金岳部落,優秀的演員提升了原住民的地位;很好奇優秀的林牧師接下來會完成何種上帝交付的使命!

最後林牧師唱了算是電影裡的莫那魯道之歌!很棒的男中音