2007年12月19日星期三

Arcserve for Linux

嘩!
arcserve真係好難install,事原公司班大帝話我好自把自為走去用amanda???
喂!我都係唔想亂駛錢啫,又係我錯?
Anyway,佢地話要用d有support嘅,有咩事都搵到人問喎...(我真係想問佢,點解你又用CentOS?)我真係想放長雙眼睇吓點,不過anyway,佢話要買commercial嘅咪買囉.公司嘅standard唔係Backup Exec就係Arc Serve,不過Backup Exec無linux version,咁即係no choice.一路其實我都唔係好鍾意CA,不過而家無得揀,唯有硬食啦.

一收到media已經知道中招,點解睇哂三隻media都唔係for linux?問vendor佢話無理由,因為media應該得一套喎.Anyway,佢最後都ship多一隻for linux嘅trial media比我,話一樣喎.唉!要趕住install就費事浪費事間去講呢d無聊嘅問題.

到睇完個installation guide就啤一聲叫左出嚟...佢叫我跟住On Screen Instruction嚟做就得喎...無可能.Anyway,唯有跟住嚟試啦.Install完之後佢就叫我行csetup喎,唔駛講都知梗係唔work啦.

唯有去再browse吓個doc folder,睇吓有無料啦.佢個doc folder當然係分好多個sub folder去放唔同language嘅doc啦,但係搵嚟搵去都見唔到en或者eng??不過就有一個叫做C嘅folder,估佢都係stands for "CORE"即係主要咁解.

所有嘅doc都係用number做filename,鬼識係咩number咩,好彩佢都有d sense,比左一個Table of Content嘅file.呢個當然係一個有crosslink嘅doc啦,又咁好彩比我見到一個見getting started嘅link.應該無走雞啦,睇完頭幾個chapter d content一d都唔係getting started,係似admin guide after多d,佢有無病啊?再double check下個TOC,佢竟然將個installation and configuration guide放左去Appendix後面???一個字:”正”!

佢入面就叫我要行一個叫/etc/profile.d/bab.sh嘅script去setup 哂所有relevant嘅environment variable先,但係行完再去行csetup一樣無嘢睇...我當然即刻check吓個script嘅content啦,但係又唔見有咩問題喎,都係setup同export返哂所有path,但係行完再check返d path又無set到喎.本來應該再睇吓有咩問題,不過時間嘅關係,唯有自己打返哂d command去setup d path就算,之後先再行csetup,過然work.之後都係手板眼見功夫,但係究竟用咩command行個GUI呢?又係一個字”正”.

到最後開左另一個term,當然又要行過個sh啦,不過今次我就用source去行,果然得左,都係怪我太過信佢啫。

2007年10月26日星期五

postfix send 唔到 email ?

一路setup左個MTA幾個月,都因為種種嘅原因,包括突然有urgent task亦試過比人slide,搞到隻新嘅postfix server成幾個月都未production launch.

本來今個月諗住忙d都launch左佢唔好再拖,好彩一時心血來潮試一試,一試之後就發現中左招,唔知點解唔work.

個case係佢收到email但係sent唔出,睇個/var/log/maillog就見佢係咁鬧” postfix/qmgr[4096]: warning: connect to transport smtp: Connection refused”,上google search都見到好多post,但係無一個可以solve到我個問題,我當然已經唔理三七二十一全部都跟住嚟做.

比佢玩左一日突然間腦部震盪,叮一聲記起我自己仲有另外一隻行梗無問題嘅MTA,於是就梗係馬上login睇下兩邊個config有d咩唔同啦.一睇之下就馬上發現原來我上次比人slide嘅時候亂咁改過d config去試吓係咩問題,當然試左一日都係無發現啦,後來咪知係比人slide左一獲勁架囉,唉!但係都係自己衰,唔記得backup起d config先玩,搞到衰左都唔知,唔知衰d咩果吓慘吖嗎.

Anyway,最後發現係/etc/postfix/master.cf入面有兩行smtp都比我remark左(無錯,係兩行).unremark左之後梗係work返啦.得返之後又比我見到/var/log/maillog入面有d怪message"postfix/smtpd[8152]: connect from unknown[123.123.123.123]",我份人就係咁,見到d唔想見或者係唔知係咩嘅嘢就好想整左佢,呢d唔知係唔係叫排除異己呢?

但係google左一輪都無發現,最後唯有放棄.之後就再browse http://jimsun.linxnet.com/misc/postfix-anti-UCE.txt去再harden個MTA多d,其實已經做左一定嘅UCE measure,但係還掂有時間,所以想再做多d,睇完哂之後就做左下面嘅measure.

smtpd_client_restrictions加左reject_unknown_reverse_client_hostname同埋reject_unknown_client_hostname

加呢兩個setting係想防止accept email from Unknown嘅host,包括無reverse PTR Record嘅server.但係點知加完之後,我用另外一部work緊嘅MTA send email去呢個新嘅MTA就點都唔得,/var/log/maillog就見”postfix/smtpd[8152]: NOQUEUE: reject: RCPT from unknown[123.123.123.123]: 450 4.7.1 Client host rejected: cannot find your hostname, [123.123.123.123]; from=<me@OKMTA.com> to=<me@newMTA.com> proto=SMTP helo=”.

諗來諗去都唔知點解,明明我部MTA果d DNS Record應該好齊吓架,有A, PTR同TXT(for SPF)嘅record,再者,我都無enable到SPF Checking.Google左好一陣,終於都比我搵到有人http://archives.neohapsis.com/archives/postfix/1999-q4/0199.html有d suggestion,佢話resolver唔一定搵bind,咁咪即係有機會要check吓/etc/nsswitch.conf.一睇之吓就發現"hosts: files dns".哈哈,Resolvr果然係睇host,咁我咪試下改成"hosts: dns files”,改完咩都唔洗restart就得左.

雖然都知會對其他program有影響,好彩呢部係真係一部pure MTA所以應該無問題.而改完呢個setting仲搞掂埋"postfix/smtpd[8152]: connect from unknown[123.123.123.123]"添,其實果個post係唔關事架,但係睇吓睇吓又比我搵到d關聯.所以有時有問題不妨退一步,或者行開一吓,因為可能會比見到嘅所謂fact影響左,比佢帶完玩遊花園都未知架.

2007年8月23日星期四

selinux好鬼煩

其實我都已經set過九次都唔係好記得個死人selinux點set.每一次setup一部新機都比佢玩一輪.為左唔好再比佢玩,我決定將今次嘅setup經歷blog低佢,以後就有得refer.

今次我嘅target係setup果套mailgraph on centOS 5,我用嘅mailgraph version係1.13,開始我仲發夢想用yum install去setup.點不知當然無啦,唯有自已去http://mailgraph.schweikert.ch download.

首先我要install好所有dependency先.

perl -MCPAN -e shell
install File::Tail
quit
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.23.tar.gz
tar zxf rrdtool-1.2.23.tar.gz
cd rrdtool-1.2.23
BUILD_DIR=/tmp/rrdbuild
INSTALL_DIR=/usr/local/rrdtool-1.2.23
./configure --prefix=$INSTALL_DIR && make && make install

之後就可以開始setup套mailgraph喇:-

wget http://mailgraph.schweikert.ch/pub/mailgraph-1.13.tar.gz
tar zxf mailgraph-1.13.tar.gz
cd mailgraph-1.13
cp mailgraph.pl /usr/local/bin

然後vi mailgraph-init
將MAIL_LOG改成"MAIL_LOG=/var/log/maillog"
cp mailgraph-init /etc/init.d

最後就vi mailgraph.cgi
將my $rrd =改成"my $rrd = '/var/lib/mailgraph.rrd'"
將my $rrd_virus =改成"my $rrd_virus = '/var/lib/mailgraph_virus.rrd'"
cp mailgraph.cgi /var/www/cgi-bin

理輪上就已經完成,可惜我enable左selinux,所就仲有嘢搞.

唔理佢嘅話你就會見到/var/log/httpd/error_log有下面嘅error message:
[Wed Aug 22 15:21:46 2007] [error] [client 99.99.99.99] ERROR: opening '/var/lib/mailgraph.rrd': Permission denied, referer: http://99.99.99.99/cgi-bin/mailgraph.cgi

而且你都會見到/var/log/messages有下面嘅error message:
Aug 22 14:57:00 server setroubleshoot: SELinux is preventing the mailgraph.cgi from using potentially mislabeled files mailgraph.rrd (var_lib_t). For complete SELinux messages. run sealert -l c961bc8c-9da8-468b-8727-8ba3eafc3517

唔做嘢當然佢唔會work啦.

[root@server ~]# ls -Z /var/lib/*.rrd
-rwxr--r-- root root user_u:object_r:var_lib_t mailgraph.rrd
-rwxr--r-- root root user_u:object_r:var_lib_t mailgraph_virus.rrd
[root@server ~]# ls -Z /var/www/cgi-bin/mailgraph.cgi
-rwxr-xr-x root root user_u:object_r:httpd_sys_script_exec_t /var/www/cgi-bin/mailgraph.cgi

一睇就知道邊度出錯啦,就係因為rrd同個cgi唔同security label囉,rrd係var_lib_t,而個cgi就係httpd_sys_script_exec_t.於是我就將/var/lib/*.rrd改個label改到一樣囉,點解唔改mailgraph.cgi?因為mailgrahp.cgi個label係control個script做得d咩,所以一改佢咪violate左個原意囉.

chcon -t httpd_user_content_t /var/lib/*.rrd
[root@server mailgraph-1.13]# ls -laZ /var/lib/*.rrd
-rwxr--r-- root root user_u:object_r:httpd_sys_content_t /var/lib/mailgraph.rrd
-rwxr--r-- root root user_u:object_r:httpd_sys_content_t /var/lib/mailgraph_virus.rrd

finally我睇到個mailgraph喇,不過都仲係有d問題,點解個graph好似停左無update到嘅?

2007年6月10日星期日

Oracle 同 Amanda 都玩人架 - 2

上次講到restore哂所有under oradata folder嘅files.然後當然係輪到DBA開工繼續.但係當佢start Oracle嘅時候佢就見到oracle係咁話ORA-1092.佢當然無頭緒啦,話哂都係第一次做咁raw嘅file level restore,無辦法啦,鬼叫無錢買veritas咩.

第一條事我就問下友好,見下有無insight啦,佢不知幾咁幫得手,一見就叫我睇下個alert log,佢仲話好多時真正嘅原因就唔會upfront print出嚟個console度,反而alert log就一定有,因為所有oracle嘅message都會出現o係alert log,而console只會有一d比較core嘅message.睇左個alert log一陣,見到原來係Ora-00600 4194,我個friend仲比左兩條URL我添:-

如何解決Ora-00600 4194
http://2jliu.itpub.net/category/21805/35399
http://www.eygle.com/archives/2006/02/howto_resolve_ora_600_4194.html

基本上都係我地個case,我覺得應該都似係rollback segment出事,但係我個DBA同事就覺得唔多似,因為個console message唔似係話衰呢樣咁話.當然我都唔想多事,不過佢一日做唔完,我一日都唔走得.我唯有insist叫佢試一次,因為唔得都無壞,試又唔會要好多時間.好彩到最後我個同事都比我說服左.但係一開工就唔知點做,因為佢就咁話要將所有AUM加返入去個init.ora入面,但係佢就唔佑咩係AUM,我第一時間幫手查下現代啞老師(Google)啦,一搵就搵到呢條link

好彩最後都真係work,如果唔係就唔知點算.從今我再唔信conssole嘅message喇,今次真係一次難能可貴嘅經驗,我亦唔希望有第二次咁嘅機會....

2007年6月9日星期六

Oracle 同 Amanda 都玩人架

今個星期一中哂招.一早起身已經係咁咳,又有少少痰,梗係訓多陣然後睇個醫生穏陣d啦.三點左右返到公司,有同事就同我講話要Load返上個星期五個backup出嚟,因為Oracle嘅data好似有問題.於是我就馬上打左個突,原因好簡單,就係我Backup左咁耐(一年有多)都未做過restore,梗係唔記得左點做啦,不過始終都要做架啦,咁我咪二話不說馬上試下點做.

我公司其實係用梗Amanda做Backup嘅,我一上手第一樣試嘅就係做個“amtape show”睇下係邊個Slot果餅帶Back左上星期五嘅Data.一睇之下知道係Tape 3嘅Inecremental.咁我咪打“amtape slot 3 ”轉去Tape 3然後就入“amrecover DailyBack”.入左amrecover個console我仲記得係用sethost setdisk 同setdate三個command去identify要由邊個backup度restore出嚟.先用sethost去point到去個DB Server,然後就用setdisk去point去DB嘅partition,最後用setdate去point去要restore果一日.

當我打完呢三個之後就發現自己之前蠢左,原來佢係醒到識自己幫我轉埋tape架,諗深一層又覺得應該嘅,如果咁都唔識又洗咩用佢呢?跟住我就用“cd”navigate到自己想restore嘅target,然後再用“add”將個target放extraction list,到最後用“extract”去execute個restore動作,個amrecover concole竟然係咁話:-

EOF, check amidxtaped..debug file on localhost.
amrecover: short block 0 bytes
UNKNOWN file
amrecover: Can't read file header
extract_list - child returned non-zero status: 1
Continue [?/Y/n/r]? Y

大佬,咩事啊?唔知點算咪Google下囉,一搵就搵到Amanda個faq-o-matric有喎,開心到我暈,以為咩黑氣都過哂添,點不知睇完真係暈左,原來係有兩個人都有咁嘅問題,並唔係有人有Answer....Shit!

唉!但係佢地都比到個hints我,就係要去睇下/var/log/amanda/amidx.*有咩message睇.一睇之下嚇到眼都突埋,佢話餅tape入面嘅data係6月4號???咪即係星期一,亦即係打梗command果一日?我梗唔信啦,有咩理由先得架.我之後就用“amadmin find myhost myfile“睇下咩東東,喂!明明係Tape7先係星期一架喎,你有無搞錯啊!我份人就死都唔信邪.

其實我用Amanda嘅原因除左係因為佢免費之外,仲有就係因為佢係用gnu tar或者係用ufsdump做backup架,好處就梗係萬一個OS有咩事,唔洗慌唔知點restore啦.事關tar同ufsdump係OS Bundle嘅program,有咩事只要有OS就可以馬上做restore,就算真係無OS,用Knoppix咪無有怕囉,CD就可以Boot得起成個OS,gnu tar就梗係一boot起就有啦.

上去睇Amanda.org嘅manual學下點做manual restore.睇來睇去都係唔明,小弟一向都信“世上無難事,只怕你唔試”!試下試下就知道個Concept個好簡單,其實每一日嘅backup係store入一個file裡面,而佢就用在個file最前面嘅32 kbyte做file header store下個backup究竟係邊個,邊個host同邊個隻disk.

係咁嘅情況下,我就先check下我要嘅backup係第幾個file啦,只要睇下個amidx.*就知原來我要嘅backup係第72個file,然後就用standard Linux command”mt -f /dev/tapedevice fsf 72”去skip到我要個file,跟住就又係用standard Linux command讀左頭果512個byte睇下係唔係我要嘅嘢先.點不知都唔係我要嘅嘢,都估佢唔會咁so我架喇.我就估可能前前後後多左或者少左d file啫,只要我睇下個amidx.*睇下佢話呢個file係第幾個file,然後同72呢個我嘅target做個加或減咪得囉.

點知都唔係,仲要個sequence都唔match,我嘅意思係amidx.*入面講嘅file個實際上tape入面嘅file都唔一樣,直情係九唔答八添.我開始懷疑係個index corrupt左,原因好可能係啱啱上個星期日開始左個新cycle,咁佢就將之前個cycle嘅index drop左.

真係唔好以為我會咁易放棄先得架,我就當無左個amanda做一個full manual restore,即係完全唔用amanda provide嘅任何command,只係用standard Linux入面嘅command做restore.第一樣要做嘅就係幫餅tape做個list,我就寫左一個好簡單嘅script:-

!/bin/bash
let “count=1”
mt –f /dev/tapedevice rewind
while [ “0” = “0” ];do
mt –f /dev/tapedevice fsf 1
dd if =/dev/tapedevice bs=32k count=1 of=idx.$count
echo “$count” >> tape.index
head -1 idx.$count >> tape.index
let “count+=1”
done

行完之後就就會將個file list放左入一個叫tape.index嘅file入面,一睇知下就更加confirm我講個index corrupt左嘅講法,因為個list係同amidex.*入面嘅content真係完全唔同,說時遲那時快,我馬上搵到個file嘅position原來係78,咁我就用下面嘅command去讀返個file去嚟:-

mt –f /dev/tapedevice rewind
mt –f /dev/tapedevice fsf 78
dd if=/dev/tapedevice bs=32m count=1
之後就confirm個list係啱,然後就將個file用下面嘅command load返出去個OS上面:-
dd if=/dev/tapedevice bs=32k of=oracle.restore.tar

之後我就“tar –xvf app/oracle/oradata/SID/* oracle.restore.tar”restore返d oracle嘅data file出嚟.嘩!你都咪講笑,我將個file由tape到落返落個OS度就用左半個鐘,但係我由個disk file度restore返d oracle data file出嚟竟然用左一個鐘都唔止.真係蠢到極,竟然唔記得tape嘅concept係sequential所以係會好快,而disk係random access,所以會比tape慢.

之後就到比oracle玩我個同事,不過都係下個blog先再同大家交代.

2007年6月7日星期四

Imagemagick 勁得 - 2

上次Imagemagick 勁得做去嚟個Logo好似好有問題.

第一,效果真係唔似,同我嘅expectation差好遠.
第二,個Size 320x240真係算太過大.
第三,個logo個physical file size有成900k,都真係比較大.

諗下又睇下,發現個Semi-transparent exampleColor Optimization嘅example又真係幾得喎.

好等我做多一個睇睇下個效果會唔會好d先.

個idea好簡單,就中文寫我個遊記嘅名,然後就用Color Optimization嘅Effect.而英文就用嘅寫低我個遊記嘅URL,Effect就用Semi-transparent.另外一個改變就係要將個Logo嘅Size由320x240變細,大概200數上就OK.

首先就改左個createlogobase.sh嘅script.

convert logo/originallogo.jpg -chop 153x0 -extent 1741x1306 \
-density 50% -quality 30% logo/resizedlogo.jpg

convert logo/resizedlogo.jpg -resize 230x173 -density 6% logo/logo1.jpg


今次個script簡單左好多,因為一個base做background就好夠,size到最後就用230x173,都keep返個aspect ratio (x / y).

然後就改個engfont.sh.


function createlogo {

# color Aqua, LightYellow, Snow2 is quite good

logofile=$1

convert finalfont/${logofile}_mask.png -fill lightyellow \
-draw 'color 0,0 reset' \
finalfont/${logofile}_mask.png +matte -compose CopyOpacity -composite \
finalfont/${logofile}_original.png

convert finalfont/${logofile}_original.png -fx A +matte -blur 0x6 \
-shade 60x30 -normalize \
finalfont/${logofile}_original.png -compose Overlay -composite \
finalfont/${logofile}_original.png -matte -compose Dst_in -composite \
finalfont/${logofile}_3D_original.png

}

fonts=/usr/share/fonts/truetype/WALSHES.ttf

convert -size 400x50 xc:black \
-fill white -draw 'circle 25,25 25,8' \
-draw 'circle 375,25 375,42' \
-draw 'rectangle 25,8 375,42' \
-gaussian 1x1 +matte \
-font ${fonts} -pointsize 32 -gravity center -fill black \
-annotate 0 "http://mohimga.awardspace.com/hokkaido2006/" \
-resize 200 \
finalfont/engborderlogo_mask.png

createlogo "engborderlogo"


主要係resize到fit到落去個background度,我就揀左200pixel闊,高就等Imagemagick自己determine.

中文個script一樣要改.

fonts=/usr/share/fonts/truetype/bkai00mp.ttf
convert -size 300x100 xc:transparent -font ${fonts} \
-pointsize 72 -stroke grey -strokewidth 10 \
-draw "text +5+80 '`cat mohimdiary.txt|iconv -f UTF-8 -t UTF-8`'" \
-blur 0x25 -fill burlywood -pointsize 72 -stroke none \
-draw "text +10+85 '`cat mohimdiary.txt|iconv -f UTF-8 -t UTF-8`'" \
-resize 70 \
finalfont/chineselogo_original.png


主要都係resize,70就幾ideal,因為個script係做到個字由最左飛到最右,然後中間就做小小blur同wave,搞到好有動感咁.個backup係230,將佢除三就大概係70.

最後其實就係要apply果個兩effect落果兩個png度,然後將background加上果兩個新做嘅effect,咁就大公告成.

convert -channel RGBA -fill white \
\( -page 230x173+15+140 finalfont/engborderlogo_3D_original.png \
-coalesce -set delay 1500 \) \
\( +clone -motion-blur 0x20+90 -blur 0x3 -colorize 100% \
+clone -colorize 30% +swap -composite -set delay 10 \) \
\( +clone -roll +0-20 -blur 0x3 -colorize 30% \
-motion-blur 0x15+90 -motion-blur 0x15-90 -set delay 5 \) \
\( +clone -colorize 30% \
-motion-blur 0x30+90 -blur 0x5 \) \
\( +page -size 230x173 xc:none -set delay 1 \) \
\( -clone -2-1 \) \
\( -page 230x173+15+140 finalfont/engborderlogo_3D_original.png \
-coalesce -set delay 1500 \) \
-set dispose background -coalesce -loop 0 \
finalfont/teleportengfont.miff
convert finalfont/teleportengfont.miff \
-channel A -ordered-dither o8x8 \
finalfont/teleportengfont.gif

convert -dispose none -channel RGBA \
\( -page 230x60+5+14 finalfont/chineselogo_original.png \
-set delay 1000 \) \
\( -background transparent -page 230x44+74+6 \
finalfont/chineselogo_original.png -set delay 5 \
-motion-blur 0x12+0 -motion-blur 0x12+180 -wave -8x200 \) \
\( -page 230x60+153+14 \
finalfont/chineselogo_original.png \
-set delay 1000 \) \
\( -background transparent -page 230x44+74+6 \
finalfont/chineselogo_original.png \
-set delay 5 \
-motion-blur 0x12+0 -motion-blur 0x12+180 -wave +8x200 \) \
\( -page 230x60+5+14 finalfont/chineselogo_original.png \
-set delay 1000 \) \
-loop 0 finalfont/teleportchinesefont.miff

convert -layers CompareAny \
-dispose none logo/logo1.jpg \
\( -dispose previous finalfont/teleportengfont.gif \) \
\( -dispose previous finalfont/teleportchinesefont.miff \) \
logo/movinglogo.gif


本來我都想up個logo上埋嚟,不過還掂up上嚟之後都睇唔到,咁咪費事搞咁多嘢囉.個Concept我唔會詳細講,因為你睇完Imagemagick嘅example自然會明,我亦唔想做到好似自己諗出嚟咁.不過有一樣嘢我想特別攞出嚟講架,就係如果用Explorer睇影片咁睇,個Animation係有問題架,不過只要用IE,Opera或者Firefox睇就會無事,基哥你玩我玩左大半日,到最後,我都覺得無做錯先開始試下用第二d方法睇,然後先知係比阿基哥你又玩左一次金金地...

如果真係想睇下個完成圖,可以到我個遊記坐下架.

2007年6月3日星期日

Imagemagick 勁得

四月尾有個網友travelpooh,佢竟然邀請我整個Banner Logo比佢link去我個"遊記",真係開心死我.

本來我已經馬上動身開工做logo,點不知我身邊好多至親一齊中Virus,真係講你都唔信,點不知幫佢地整好之後,就連我自己都中埋一份,真係講比人聽都怕笑大人個口.唉!

終於都花左成個月去從新Install過哂所有人嘅window,點不知真係禍不單行.竟然我個HDD有開始死嘅Sign出現.有無搞錯,我都知今年我行衰運架喇,只不過估唔到真係衰到咁啫.唉!之後花左八百蚊同兩個星期嘅時間去Fixup我自己部電腦.

Finally,五月尾終於可以開始個logo嘅Creation,初初諗住用Gimp做,後來發現我隻手原來真係好震.....都唔知點做Art Work....唉!

最後都係決定用返ImageMagick.其實之前都用過下,感覺係自己能力真係有限,點學都係唔太明,但係無其他方法,唯有頂硬上啦.

點知用下又睇個佢個Tutorial,做做下又比我做到出嚟,Yeah.

在此我Post個Step出嚟比大家分享一下:-

我個Idea係做一個有好似Camera Zoom-in動感嘅Logo,而且上面要有一句中文Title同我個遊記嘅URL.原圖:-


首先我Search左一d中英文嘅Truetype Fonts,然後用下面嘅Script做哂d Image去嚟自己揀,睇下用邊隻Fonts比較好.


for fonts in /usr/share/fonts/truetype/*
do
fontfile=`basename $fonts`
fontname=`echo $fontfile | cut -d. -f1`
echo $fontname

convert -fill white -pointsize 72 -font ${fonts} -size 500x200 xc:black \
-draw "text +20+100 '`cat mohimdiary.txt|iconv -f UTF-8 -t UTF-8`'" \
fontresult/chinese/${fontname}_original.png
convert fontresult/chinese/${fontname}_original.png -blur 0x3 \
fontresult/chinese/${fontname}_blur.png
convert fontresult/chinese/${fontname}_blur.png -sharpen 0x3 \
fontresult/chinese/${fontname}_blur_sharp.png
convert fontresult/chinese/${fontname}_blur_sharp.png -sharpen 0x3 \
fontresult/chinese/${fontname}_blur_sharp_x2.png

convert -background black -fill white -pointsize 72 -font ${fonts} -size 500x200 \
-gravity center label:http://mohimga.awardspace.com/hokkaido2006/ \
fontresult/eng/${fontname}_eng_original.png
convert fontresult/eng/${fontname}_eng_original.png -blur 0x3 \
fontresult/eng/${fontname}_eng_blur.png
convert fontresult/eng/${fontname}_eng_blur.png -sharpen 0x3 \
fontresult/eng/${fontname}_eng_blur_sharp.png
convert fontresult/eng/${fontname}_eng_blur_sharp.png -sharpen 0x3 \
fontresult/eng/${fontname}_eng_blur_sharp_x2.png

done


事先我已經將Internet (Wen Quan Yi Wiki , CLE 檔案伺服器 -- 字型區Unicode Font Guide For Free/Libre Open Source Operating Systems ) download返嚟嘅Fonts放哂入/usr/share/fonts/truetype入面.唔記得講其實我都將中文字用Ultraedit用UTF-8 Save左入一個text file入面.點解要咁做?原因好簡單,就係cygwin同window都唔support我在command line直接打中文,我亦都試過Linux同樣唔得,比佢玩左好耐,然後在Internet Search到東海大野狼的部落格 教人點用Imagemagick做中文圖.另外,我所有Script都係放入Cygwin入面Run.原因係我要做好多Script,而我亦都比較多用Linux所以寫Script會快一d,亦都因為要用iconv所以就no choice.

最後我決定左中文就用 bkai00mp.ttf 而英文就用 WALSHES.ttf .之後我就用左d時間揀下用咩Font Effect.最後我就做左兩個Script去Build個effect:-

英文個Script

function createlogo {

# color Aqua, LightYellow, Snow2 is quite good

logofile=$1

convert finalfont/${logofile}_mask.png -fill lightyellow \
-draw 'color 0,0 reset' \
finalfont/${logofile}_mask.png +matte -compose CopyOpacity -composite \
finalfont/${logofile}_original.png

convert finalfont/${logofile}_original.png -fx A +matte -blur 0x6 \
-shade 60x30 -normalize \
finalfont/${logofile}_original.png -compose Overlay -composite \
finalfont/${logofile}_original.png -matte -compose Dst_in -composite \
finalfont/${logofile}_3D_original.png

logo=${logofile}_3D
blurimage ${logo}

convert -page +6+6 finalfont/${logofile}_3D_original.png \
\( +clone -background burlywood -shadow 80x4+6+6 \) +swap \
-background none -flatten -shave 11x11 +repage \
finalfont/${logofile}_3D_shadow_original.png

logo=${logofile}_3D_shadow
blurimage ${logo}
}

function blurimage {

logo=$1

convert finalfont/${logo}_original.png -blur 0x3 \
finalfont/${logo}_blur.png

convert finalfont/${logo}_blur.png -sharpen 0x3 \
finalfont/${logo}_blur_sharp.png

convert finalfont/${logo}_blur_sharp.png -sharpen 0x3 \
finalfont/${logo}_blur_sharp_x2.png
}

fonts=/usr/share/fonts/truetype/WALSHES.ttf

convert -size 400x50 xc:black \
-fill white -draw 'circle 25,25 25,8' \
-draw 'circle 375,25 375,42' \
-draw 'rectangle 25,8 375,42' \
-gaussian 1x1 +matte \
-font ${fonts} -pointsize 32 -gravity center -fill black \
-annotate 0 "http://mohimga.awardspace.com/hokkaido2006/" \
-resize 300 \
finalfont/engborderlogo_mask.png

createlogo "engborderlogo"


行完個英文Script就會有






中文個Script


fonts=/usr/share/fonts/truetype/bkai00mp.ttf
convert -size 300x100 xc:transparent -font ${fonts} \
-pointsize 72 -stroke grey -strokewidth 10 \
-draw "text +5+80 '`cat mohimdiary.txt|iconv -f UTF-8 -t UTF-8`'" \
-blur 0x25 -fill burlywood -pointsize 72 -stroke none \
-draw "text +10+85 '`cat mohimdiary.txt|iconv -f UTF-8 -t UTF-8`'" \
-resize 100 \
finalfont/chineselogo_original.png

convert finalfont/chineselogo_original.png -blur 0x3 \
finalfont/chineselogo_blur.png

convert finalfont/chineselogo_blur.png -sharpen 0x3 \
finalfont/chineselogo_blur_sharp.png

convert finalfont/chineselogo_blur_sharp.png -sharpen 0x3 \
finalfont/chineselogo_blur_sharp_x2.png



行完個中文Script就會有






之後用下低個Script create個scene zoom-in嘅base即係做好每一個Frame嘅Logo.

#2048x1536 = X(2048 - 1741) / 2 = 153
#1741x1306 = X(1741 - 1698) / 2 = 21, Y(1306 - 1268) / 2 = 19

function nextstep {

convert logo/resizedlogo.jpg -chop ${stepx}x0 -crop +0-${stepy} +repage \
-extent ${length}x${height} -resize 320x240 -density 6% \
logo/logo${step}.jpg

}

convert logo/originallogo.jpg -chop 153x0 -extent 1741x1306 \
-density 85% -quality 70% logo/resizedlogo.jpg

convert logo/resizedlogo.jpg -resize 320x240 -density 6% logo/logo1.jpg

length=1741
height=1306
stepping=5
stepx=5
stepy=`echo "${stepx} * 1306/1741" | bc`

for step in `seq 2 7`; do
echo chop ${stepx} crop ${stepy} length ${length} height ${height}
nextstep
stepx=`echo "${stepping} * ${step}" | bc`
length=`echo "1741 - (${stepx} * 2)" | bc`
stepy=`echo "${stepx} * 1306/1741" | bc`
height=`echo "1306 - (${stepy} * 2)" | bc`
done



Total係有七個Frame.









最後就用下面個Script 做十個Frame而每個Frame都有Logo不過就係唔同效果,好似希望做到Zoom-in嘅時候未Focus到嘅感覺.其實之前只係做好7個Frame,Frame八,九同十其實係想做一個Swirl嘅Effect,好似個鏡頭有問題咁.

convert -size 320x240 xc:transparent \
logo/logo1.jpg -geometry +0+0 -composite \
finalfont/chineselogo_original.png -geometry +0+0 -composite \
finalfont/engborderlogo_3D_original.png -geometry +10+200 -composite \
logo/taggedlogo1.jpg

convert -size 320x240 xc:transparent \
logo/logo2.jpg -geometry +0+0 -composite \
finalfont/chineselogo_blur.png -geometry +0+0 -composite \
finalfont/engborderlogo_3D_blur.png -geometry +10+200 -composite \
logo/taggedlogo2.jpg

convert -size 320x240 xc:transparent \
logo/logo3.jpg -geometry +0+0 -composite \
finalfont/chineselogo_blur_sharp.png -geometry +0+0 -composite \
finalfont/engborderlogo_3D_blur_sharp.png -geometry +10+200 -composite \
logo/taggedlogo3.jpg

convert -size 320x240 xc:transparent \
logo/logo4.jpg -geometry +0+0 -composite \
finalfont/chineselogo_blur_sharp_x2.png -geometry +0+0 -composite \
finalfont/engborderlogo_3D_blur_sharp_x2.png -geometry +10+200 -composite \
logo/taggedlogo4.jpg

convert -size 320x240 xc:transparent \
logo/logo5.jpg -geometry +0+0 -composite \
finalfont/chineselogo_blur_sharp.png -geometry +0+0 -composite \
finalfont/engborderlogo_3D_blur_sharp.png -geometry +10+200 -composite \
logo/taggedlogo5.jpg

convert -size 320x240 xc:transparent \
logo/logo6.jpg -geometry +0+0 -composite \
finalfont/chineselogo_blur.png -geometry +0+0 -composite \
finalfont/engborderlogo_3D_blur.png -geometry +10+200 -composite \
logo/taggedlogo6.jpg

convert -size 320x240 xc:transparent \
logo/logo7.jpg -geometry +0+0 -composite \
finalfont/chineselogo_original.png -geometry +0+0 -composite \
finalfont/engborderlogo_3D_original.png -geometry +10+200 -composite \
logo/taggedlogo7.jpg

convert -swirl 2 logo/taggedlogo7.jpg \
logo/taggedlogo8.jpg

convert -swirl 8 logo/taggedlogo8.jpg \
logo/taggedlogo9.jpg

convert -swirl 4 logo/taggedlogo9.jpg \
logo/taggedlogo10.jpg

convert -delay 100 -size 320x240 logo/taggedlogo1.jpg \
-delay 80 logo/taggedlogo2.jpg \
-delay 60 logo/taggedlogo3.jpg \
-delay 40 logo/taggedlogo4.jpg \
-delay 20 logo/taggedlogo5.jpg \
-delay 10 logo/taggedlogo6.jpg \
-delay 5 logo/taggedlogo7.jpg \
-delay 4 logo/taggedlogo8.jpg \
-delay 3 logo/taggedlogo9.jpg \
-delay 2 logo/taggedlogo10.jpg \
-delay 2 logo/taggedlogo9.jpg \
-delay 3 logo/taggedlogo8.jpg \
-delay 4 logo/taggedlogo7.jpg \
-delay 5 logo/taggedlogo6.jpg \
-delay 10 logo/taggedlogo5.jpg \
-delay 20 logo/taggedlogo4.jpg \
-delay 40 logo/taggedlogo3.jpg \
-delay 60 logo/taggedlogo2.jpg \
-delay 80 -loop 0 logo/animatedlogo.gif


果十個Frame係咁:-











完成圖:-



原本係會郁的,可惜上載後就變成不會動了....