2008年7月29日

29 歲生日願望

上星期六滿 29 歲生日了,其實我一直不想承認 29 這個數字,這是虛歲,這年頭哪有人算虛歲,1980 出生的我,實歲才 28 啦。

以前對於生日總是抱持著憧憬,一個月前就開始期待生日的到來,因為生日時可以跟爸爸媽媽要生日禮物,那種期待的感覺令人難以忘懷。但隨著年紀越來越大,過生日的感覺也越來越淡,甚至有點害怕過生日,因為生日這天代表著年紀又大了一歲。

11071226767257_408

看著身邊比自己年輕的人越來越多,害怕的感覺越來越深。剛出社會工作時,總覺得自己年輕,傲慢可以寫在頭上,過了幾年慢慢發覺,身邊的人年紀越來越小,71、73、75...差距越來越大。雖然年紀跟心智年齡有成正比成長(應該有吧),但任誰都不想要這樣吧。偶而回想起高中、大學、當兵這些令人難忘的年代,才發覺自己真的老了。

時間是無法停止的巨輪,老了也不能怎麼樣,只能把握每一天不是嗎?既然過了生日,就來許一些願望吧(三個對老人來說太少了啦)。

  1. 工作上,如果明年的這個時候還留在這間公司,那我一定要完成現在手上的事,打造一家公司的後端系統,如同去年夏天打造前端系統一樣。
  2. 運動上,我要在這一年內完成騎腳踏車環島一圈,這是一個挑戰,接續著去年騎機車 24 HR 環島的腳步。(明年變成走路環島嗎?)
  3. 學習上,我要再考一張證照。出社會到現在每年都會考一張,今年還沒考,看來不是一年的時間,是下半年要加油了。
  4. 經濟上,一年內我要再存 36 萬,一個月平均要存 3 萬似乎有點困難,祈禱這一年熊市變牛市吧。(做夢嗎?)
  5. Blog上,這一年要寫 100 篇文章,逼自己戒掉有時會偷懶不想寫的心態。
  6. 生活上,要再去國外旅遊一次,東南亞就算了,這次目標是歐洲、日本韓國、美國,澳洲也行啦。

六個,應該差不多了吧,還有的話就太貪心了。突然發現今年生日有收到禮物但還沒吃到蛋糕,明天買來吃好了。

2008年7月20日

驗證密碼的 Regular Expression

好久沒寫技術文章了,來寫一下最近遇到的 Case,利用 Regular Expression 驗證密碼,密碼長度在 6-30 字元內,且要包含數字、英文字,網路上查到的 Pattern 如下

^(?=.*\d)(?=.*[a-zA-Z]).{6,30}$

有人說這是罵人的話,哈,看起來真像。

先來驗證一下是否正確,先到 RegEx: online regular expression testingRegular Expression 輸入上面那一串密文,Test String #1 輸入想驗證的字串,按下 Test 出現驗證結果,這個網站好用的地方在驗證結果會很貼心的把 Java 跟 Regular Expression 有關的 Method 的驗證結果都列出來。

測試沒問題後接著就來了解一下這串外星文在寫些什麼

.:表示任意一個字元,在 Java 中除了 "\r""\n" 外都包括。
*:表示前面那個 Pattern 出現 0 或一次以上。
.*:表示非 "\r""\n" 字元出現了 0 或一次以上。
\d:表示數字 0-9,也可以寫成 [0-9]
.*\d:表示非 "\r""\n" 字元出現了 0 或一次以上,再跟著一個數字,可以驗證字串中有出現過數字,不管在任何位置。
(?=.*\d):這是 Positive Lookahead,用來判斷右邊緊接著的字元是否符合比對條件,如果符合條件才會繼續比對下去。拿這個實例來說,右邊的字元必須包含一個數字才算符合這個條件。
[a-zA-Z]:表示英文字母,大小寫都包含在內。
.*[a-zA-Z]:表示非 "\r""\n" 字元出現了 0 或一次以上,再跟著一個英文字母,可以驗證字串中有出現過英文字母,不管在任何位置。
(?=.*[a-zA-Z]):跟上面出現過得 Positive Lookahead 一樣,這是說右邊的字必須包含一個 a 到 z 或是 A 到 Z 的字元,說穿了就是右邊的字要包含一個英文字的意思。
.{6,30}:表示字串長度要大於等於 6,小於等於 30。
^:表示字首,意思就是說後面的字必須是從字首開始。
$:表示字尾,表示前面的字要是字尾。

解釋完畢,到這裡原本就不懂的人應該還是不懂,原本就懂的人會覺得這是垃圾文,半懂的人應該會有點收穫,但腦海中應該會浮出更多疑惑。

在測試完這神奇的外星文可以正確的達到我想要得效果後,去網路上找了一些資料,發覺 Regular Expression 真強大,一堆看不懂的符號交錯在一起就可以完成驗證的工作,這就像 SQL 一樣,要常寫、常練習才會寫得好、寫得漂亮。因此解釋完有更多疑惑是正常的。

想更了解的可以參考 JavaWorld 上有一篇 Java Regular Expression的學習筆記,寫得算很淺顯易懂。最後放上驗證的程式碼供參考

public boolean isPwValid() {
String pw = getSysUser().getPassword();
String pattern = "^(?=.*[a-zA-Z]+)(?=.*\\d+)[a-zA-Z0-9]{6,16}$";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(pw);
return m.matches();
}

很意外不是用 Jakarta 的 RegExp 套件吧,原來 Java 中藏了這麼好用的 Class。

2008年7月16日

意外的關渡行造就小六在台北街頭 Off Load


檢視較大的地圖

這是小六第二次出遊路線圖,又是一次計畫趕不上變化的行程。原本只想從新海橋騎到台北大橋,再從台北大橋回永和,沒想到騎錯路一路騎到關渡去。傻傻的我直到看到關渡大橋才恍然大悟,原來我已經身在八里nEO_IMG_DSC03782

nEO_IMG_DSC03781過了重新橋後的自行車道標示的算很清楚,每個一小段路就會有自行車道的路標。只是在一些岔路的地方做得不是很理想,往往要靠直覺判斷,一不小心就會騎錯,幸好路上車友很多,看大家往哪騎跟著準沒錯。也就是這樣,原先規劃的路線在三重出現變化,不小心轉到二重疏洪道上,這時只好將錯就錯,頭也不回的一路往前。

第二次騎車感覺體力有增強許多,沒有第一次騎車一直想要返回的念頭,一路騎來體力夠,再加上二重疏洪道是我連機車都沒騎過的路,騎來充滿新鮮感,分心了,就不會感到累。

nEO_IMG_DSC03772以往都是從淡水河的另外一邊欣賞河邊風景,再美的風景看久了也會膩,這是第一次從另外一邊欣賞河畔景色,同樣一條淡水河,沒想到換邊看景色大不同,是新鮮感作祟嗎?總覺得景色超好,尤其是早上還有點霧的情況下,朦朧美隴照著對岸,河的另外一頭從習慣了好幾十年的觀音山變成陽明山,瞬間把視覺拉大變壯闊了。

八里左岸欣賞淡水河畔全景
pano1

關渡大橋上回頭俯瞰來時路
pano

回家路上經過關渡宮,經過關渡破百次的我還是第一次看到關渡宮的本尊呢。關渡宮前廣場不知道在舉辦什麼活動,只聽到現場主持人一直叫大家牽著腳踏車往場中央移動,大家愛動不動的,搞到主持人好像有點毛了,一直鬼吼鬼叫。
nEO_IMG_DSC03785nEO_IMG_DSC03794

回家的路上又是一個迷路的開始,說實話,自行車道旁大約一、兩公里才有地圖,如果不看地圖就只能靠著路旁每 500 公尺的路標來認路,路標上面只會寫著淡水河左岸基隆河右岸,告非勒,全台北縣市民每天上班應該都會經過大大小小的橋,有多少人知道橋下是哪條河阿。害我多走了一段冤枉路,繞到圓山去,差點就到了佳佳河濱公園,最後逼不得已在台北街頭 Off Load,看著身邊人來車往,邊騎要邊注意前後來車外加人行道上的路障,簡直太刺激了。

不過也因為這樣,意外的經過忠孝橋下球場,看著大家在打壘球不知不覺的入神了,想起大學時,每個星期六早上也是要準時到華江橋下報到,人老了,連球友都找不到了。
nEO_IMG_DSC03797
nEO_IMG_DSC03798nEO_IMG_DSC03801nEO_IMG_DSC03802

本日的行程詳細資料如下

Track Speed: Avg. 12.5[Kmh] - Max. 27.8[Kmh]
Distance Travelled: 58.369 [Km]

在停留的時間、次數都比較多的情況下,平均時速跟上次一樣,而且路程也變遠了,騎了連我都不敢相信的 58 公里,看來耐力有增強,接下來的路程應該是要來訓練肌力了。

2008年7月6日

45 公里的 Giant FD-806 處女秀

要找到記憶中騎單車的片段,恐怕要倒帶到 16 年前的國小時光了,印象裡上了國中就不曾接觸過腳踏車。經過了這麼長的一段時間,什麼都變了,連腳踏車也水漲船高,唯一不變的是,我還會騎車。

nEO_IMG_DSC03760自從看了練習曲後(練習曲 Etude Island - 譜出人生逐夢的樂章),就一直想要一台腳踏車,加上關於腳踏車的報導越來越多,不知不覺中一直被洗腦,腦海中滿滿地都是要弄台腳踏車來騎。這個月好不容易湊出點錢,千挑萬選之下買了 Giant FD-806(深藍色),會挑這台的最大因素是便宜,其次是因為 Giant 這五個大字,Giant 的店多、名氣大,後續維護、找資料都很方便,最後一個原因就是他是小折,可以很方便的把車扛上樓而不用擔心被偷。

nEO_IMG_DSC03756星期五買車後就有一股衝動想騎出去晃晃,今天(星期日)早上六點不到,我已經著好裝,帶齊傢伙(皮包、相機、GPS、水),準備往河濱出發,當把小折變身恢復戰鬥姿勢,騎上去那一瞬間,彷彿騎入小叮噹的時光機回到 16 年前,不太熟稔卻熟悉到不行的動作,一開始有點搖搖晃晃,但過沒多久就如魚得水,即使過了十幾、二十年,埋藏在身體深處的記憶被挖起後還是那麼的新鮮。

出發前的原計畫是從永和進入河濱,騎到板橋新海橋,過橋到新莊順著河濱往北騎到台北大橋後過橋,再繞河濱回到永和,不過計畫永遠趕不上變化(這不是每次出發前就已經知道的嗎?),變化永遠趕不上腦海中的一句話。

nEO_IMG_DSC03758一開始騎還頗輕鬆,看到車就會覺得怎麼騎那麼慢,壓根也沒想到人家搞不好已經騎了十幾二十公里,騎大概十分鐘後,大腿開始感覺不太對勁,有點酸酸的。箭在弦上不得不發,即使腿酸還是要繼續下去,第一次練習就半途而廢未免太沒用了,更何況河濱一堆老伯、女生,一個比一個快,這已經不是腿酸不酸的問題了,是男人的尊嚴不能掃地。

往前騎了半個小時左右,依序經過光復橋華翠大橋華江橋大漢橋後,終於看到新海橋三個大字橫掛在前方,興奮之餘想找可以離開河濱的地方,可是遍尋不著,心中想著一定在前方的某處,就繼續往前騎(想離開河濱是想要像一般汽機車一樣上橋,完全忘了我騎的是腳踏車)。往前一直騎卻一直沒看到離開河濱的出口,越騎越遠,越想越不對勁,明明出發前才確認過台北市河濱腳踏車道導覽圖,可以從新海橋到新莊阿,怎麼會找不到。

nEO_IMG_DSC03757這時大概知道今天的 A 計畫又泡湯了,腦海中的一句話出現了,「拿出 B 計畫」,嘿嘿,別以為我有那麼多閒工夫準備備用計畫,所謂的 B 計畫就是船到橋頭自然直,順天而行,既然前方還有自行車道的標示,表示天意叫我往前,那就沿著路繼續騎下去吧。

就在不知前方會通往哪裡的情況下,我傻傻的騎,當作來遠足郊遊一樣,雖然身體有點累,但心情很放鬆,直到我看到浮洲橋。這...這...這不是從板橋樹林會經過的橋嗎?前幾個星期才從這去三峽ㄝ,這時大概知道我身處的位置了,如果路一直延續下去,我應該會到桃園吧,這時天真的我還對於腳沒很酸感到自豪,自大的就這樣繼續騎下去。

nEO_IMG_DSC03766過沒多久看到城林大橋,這大概是土城樹林的橋吧,我腦中這樣想著,才到土城而已,那前方應該就是三峽了,過了三峽就是桃園了ㄝ,越想越興奮,又繼續往前騎,沿路每看到路標指向前方是三峽,腎上腺數就會刺激一下大腦,像打了嗎啡一發不可收拾。

騎著騎著,身旁的自行車越來越少,景色也越來越荒涼,沒想到騎到了自行車道的盡頭,這是接近三峽的地方,如果要繼續往前就要騎在一般道路跟汽車、機車一起爭車道,這時我突然恍然大悟,雖然前方就是三峽,但我也騎太久、騎太遠了吧,算算已經騎了一個半鐘頭了,這一個半鐘頭我可是都沒停下來ㄝ,身上只帶了一瓶水,早餐沒吃現在又超級餓,再這樣下去會沒體力。

好,決定了,這裡就是今天的轉折點了,心中這樣算計著,先停下來休息,喝了今天的第一口水,順便幫小六拍個照吧。
nEO_IMG_DSC03755

這時腳酸的感覺開始明顯起來,但一想到回家的漫漫長路,即使腿斷掉也要當作不知道。以往出去玩,回家的路總是讓人感到特別快,但為啥騎腳踏車就沒這種感覺,只有越騎越慢、越騎越酸、越騎越餓。去的時候還可以保持不被超車(雖然有老伯騎大車,三、兩下就把我海放),回家路上卻是一直被超車,除了小弟弟、小妹妹的四輪腳踏車我勉強可以超過外,其他的只能看車尾燈慢慢消失卻無能為力(自行車也有車尾燈的)。

回家路上終於發現可以上新海橋的地方,恨阿,不過回到家後重新看了一下地圖,其實 A 計畫跟 B計畫的路程應該相去不遠,就當作有練習到好了,A 計畫就等下次有緣再相會吧。

回家路上我保持一樣的速度,緩慢前進,這時我發現,如果腳保持一樣的速度踩踏板,不會有酸的感覺,可是一停下來,酸的感覺會從小腿、大腿,直達腦袋,因此即使下坡,我還是保持一貫的速度踩踏版,回家的路上還是沒停下來休息過,因為一停下來腳就會感到酸,那幹麼休息。

nEO_IMG_DSC03761促使我回家的動力,是漢堡蛋+冰奶茶,整路上就用這個一直催眠自己,等回到家可以開著冷氣、舒舒服服的坐在電腦前、吃著好吃的早餐上網(打這篇 Blog 時我早已吃完),而且要買兩份來吃,這是真的,後來我真的買了兩個漢堡蛋+兩杯大冰奶。就這樣,早餐戰勝腿酸,六點出發,九點半帶著一袋早餐回到家。

路上我一直都以為這趟行程頂多 30 公里就很了不起,回家把 GPS 的資料匯出發現,我騎了 42.5 公里,不對不對,仔細看一下路線圖,剛開始有一段 GPS 沒抓到訊號,因此有少算,少算的那段估個 2.5 公里好了,也就是說,今天三個半小時內,我騎了 45 公里。你沒看錯我沒打錯,我也嚇到了,這是小六第一次出遊ㄝ,太恐怖了。

速度: Avg. 12.5[Kmh] - Max. 28.3[Kmh]
距離: 42.494 [Km]

今天的行程,藍色線是用汗及明天的鐵腿換來的,在 Google Map 畫出圖的那一瞬間,有股莫名的成就感湧上心頭,一切的累都值得了。


檢視較大的地圖

2008年7月5日

阿宅傳說,成功!

阿宅傳說在 6/30 劃下句點,原計畫「阿宅傳說 - 5000 元吃吃喝喝一個月」,經過 30 天漫長的努力,拒絕美食誘惑,縮衣節食、省吃儉用,一個月下來在吃的方面總計花了 4735 元,天阿,好省,只能說阿宅傳說成功~

這 30 天每天都有預計花費,當日花費少於預計的話,就可以剩下一些錢累計到隔天,下圖就是這 30 天的每日剩餘金額圖表,最多有剩下 337 元,最慘的情況是多預支了 57 元。

雖然說阿宅傳說達成,但這也不算好事,因為有時候會為了省錢盡量不吃,或是吃少少的,不過也因此,多發現了幾家便宜又可以吃很飽的店,也算意外收穫。

每天的預計花費中,早餐 25 元最多就只能吃個漢堡蛋,連想加杯奶茶都是奢侈,一個月當中我幾乎沒喝過早餐店的奶茶。除了漢堡蛋外又不超過預算的早餐,算是飯糰了,一個 25 元剛好達到預算,也可以吃很飽。最常吃的是 7-11 的沙拉培根御飯糰,超便宜才 15 元,又可以吃到米飯,很容易有飽足感。

午餐因為要跟同事一起出去吃,所以沒太多選擇,一定得吃,算是很正常的一餐,再加上吃飽飯後習慣隨手帶一瓶飲料回辦公室,因此午餐的預算常常破表。

晚餐的花樣最多,也是最容易省錢的一餐,30 天中,常常利用晚餐不吃或是吃簡單的食物來省下 75 元,這招用在剩餘金額快到 0 時非常好用,一頓晚餐不吃就省下 75 元,瞬間扳回劣勢,而且晚餐不吃不一定會餓,有時早點睡就不會餓了,一舉多得。

假日真的是個又愛又恨的時間,如果都宅在家大概只會吃晚餐一餐,因此午餐的 70 元預算可以省下來。但如果出門去玩那花費就會大增,所以一到五要盡量節省來應付假日的花費。

回顧一個月下來,其實有預算控制飲食花費真的會把錢省下來,以前都是想買就買、想吃就吃,飲料當開水喝,訂了每日預算可以很清楚知道自己今天是多花還是少花,多花就要想辦法補回來,少花就把錢存下來,當六日的吃吃喝喝基金。

從這次的傳說中,真的徹底感受到要達到目標,一定要有個很詳細的 Plan,徹底實行,每日檢討自己是否達到,會給自己壓力。這種模式也可以延伸到工作中,以往我都是心情好就多作一點,沒 fu 就早點下班,雖然有目標,但會常常 Delay,原因就是沒有那種每日檢討的壓力,如果每天都檢討一次,給自己壓力,說不定就可以像阿宅傳說一樣,輕輕鬆鬆達到。

感受到阿宅傳說的好處後,接下來每個月都要來定些花錢計畫,每日都檢討自己是不是超支,不然每次到月底才發現小朋友、棒球隊、國父都很會離家出走,這不是好事。

這一個月的詳細,當作紀念吧

Related Posts Plugin for WordPress, Blogger...