第一次出國
第一次到日本
第一次參加員工旅遊
第一次參加Y!公司的員工旅遊
第一次沒帶DSLR出遊
第一次用RF拍照
很多很多的第一次,在這趟旅行中發生了。
在Y!熬了一年,終於有資格參加該公司的員工旅遊了。
當時一心就只想到日本東京。
但當時RD的workshop又說要在9月中舉行。
一直被逼著要退團。
日本東京團真的很熱門,只要有人一退團,馬上就沒機會了。
當時我跟法先生的決定是,打死都不退團。
我們兩個人決定蹺RD workshop去日本happy。
最後,我們兩個人的選擇是對的。
RD workshop後來延期了。
我想,當初退團的RD一定很幹吧。
最後同團的RD就只有我跟法先生兩個人而已。
第一次出國,心情真的是超HIGH的。
2004年,倒掉的Q公司,為了要讓我可以到日本出差。
早就幫我準備好護照,還有日本觀光簽証了。
到了2006年,日本已經改成落地簽了。
所以,那個日本觀光簽,始終沒用到過。
為了讓行李輕便,當時決定不帶DSLR。
但又想拍底片。
最後跟熊先生借了CANON IXUS 800IS
跟V桑借了CONTAX T3
我後來不會後悔做了這樣子的決定。
這團因為是公司團,不能自由行。
所以一到東京,下了飛機。
竟然是到JASCO這大賣場購物。
我又不買東西,所以就跑去Capcom Plaza打電動。
晚餐就點了廣島燒來吃。
我只能說,鹹到不行。我已經是吃重口味的了,真的是爆鹹。
結束了購物行程,馬上拉車到HOTEL去CHECK IN。
CHECK IN之後,看看時間還早,才晚上七點多。
馬上跟法先生坐山手線到新宿去逛逛。
一進電車站,馬上會坐,而且沒任何困難。
一到新宿駅,人真是多到爆,車站也是大的很誇張。
生平第一次看到規模這麼大車站。
但到達新宿後,要去哪邊呢?怎麼走?
完全沒有頭緒。
當時的想法就是,往地上走,找比較高的地方。
走上了行人天橋,馬上一覽無遺。
馬上找到此行的目的地,BIC CAMERA。
熊先生有交待,要幫他帶SNOOPY的拚圖回台灣。
BIC CAMERA那麼大,東西又多,找起來有夠累。
此時,語言不通怎麼辦呢?
我最後用寫的,我寫出PUZZLE。
店員馬上告訴我在哪邊了。
很不幸的,沒有找到熊先生指定的拚圖。
逛完BIC CAMERA,我們兩個就到處亂逛。
其實就只在新宿西口附近逛而已,
也不敢走太遠,很怕迷路。
我們兩個,想吃點東西,原本想要去居酒屋坐坐的。
但看到居酒屋的一些價格後,我們最後決定吃松屋。
2006年的松屋,豚丼只要290日幣。
現在2009年了,豚丼要380日幣囉。
第一天的行程就逛了JASCO大賣場跟新宿西口。
第二天的行程是東京DISNEY。
當時可以選擇要去LAND還是SEA或是不去。
不去的人退1500台幣吧,有點忘了。
不去的人當天就是自由行。
我選擇去LAND玩。
老實說,一個人在LAND,真的是悶到爆。
人又超多。6仔也超多。
人多到玩個東西,要排大約2小時的隊。
還好我沒帶DSLR,不然玩起來一定很不方便。
一進LAND,馬上熟讀導覽手冊。
然後進行路線規劃。
最後,所有有FP(Fast Pass)的,全部都玩到。
還有留一個小時到處買東西。
買了一堆POOH桑的東西,送給K小姐跟親朋好友。
最後的遊行跟煙火,真的很讚。
老實說,我會想跟未來的女友,再去一次DISNEY LAND。
DISNEY LAND真的是戀人聖地。
如果有了小孩,我也會帶他們去DISNEY LAND。
DISNEY LAND真的是小朋友的天堂。
第三天,拉車到箱根去。
箱根的行程真的很鳥。
坐海盜船,到小涌園玩水,再到平和公園。
天氣很很差,一天的行程就這樣子結束了。
晚上吃大閘蟹。
不過當晚的HOTEL,睡起來很舒服。
第四天一早,馬上再拉車回東京。
在新宿的歌舞伎町吃台灣料理。
下午的行程是購物跟淺草觀音寺,台場。
當時,我跟法先生決定脫團。
我們兩個留了導遊的手機,
然後跟導遊意思一下買了包干貝糖(安小姐指定的)。
兩個人就殺到秋葉原去當阿宅了。
兩個人漫無目的的亂逛。
這是2006年的女僕。
這是2009年的女僕。
品質有大幅的改善。
但好貨是不會出來發傳單的。
所以想看好貨,請花錢吧。
當天,兩個人,什麼都沒買。
最後怎麼算,都還是台灣賣的比較便宜。
其實是,我們兩個沒有門路,也沒事先做好功課-__-
逛完秋葉原,兩個人再殺到原宿去亂逛。
當天去了SNOOPY TOWN,幫熊先生買拚圖。
然後再逛竹下通。
兩個人,最後什麼東西都沒買。
第五天,上午是自由行。下午準備回台灣。
我跟法先生,決定一早起床,殺去淺草觀音寺。
拍完照後,馬上衝去原宿。
逛完明治神宮後,就去SNOOPY TOWN帶些小禮物送家人。
東京之旅,就這樣子結束了。
回台之後,就決定要到日本求學了。
日本真的是好地方。
Sunday, June 28, 2009
[JP Life] 自己做菜,划算嗎?
高麗菜+豬肉+金針菇炒沙茶
Originally uploaded by chris.jan
高麗菜1/6顆(約30日幣),
金針菇1/3包(約53日幣),
豬肉半盤(約200日幣),
水費+電費+瓦斯費(約100日幣)。
炒一盤菜要大約400日幣,其實並沒有比較省。
外食380日幣就有一碗拉麵了。
松屋,吉野家,最便宜三百多就可以吃飽了。
自己煮,不止花時間,還比較貴-__-
Thursday, June 25, 2009
[Mood] 遇見
孫燕姿的遇見,我最喜歡的一首歌。
我每隻手機都是用這首歌當手機鈴聲。
從NOKIA 6100, 6230, 6233到現在的DoCoMo P906i。
裏面都有這首歌。
每次聽,就會想起村上春樹的"四月のある晴れた朝に100パーセントの女の子に出会うことについて"
中文是"遇見百分百的女孩"
雖然說這文章很短,但我一直很喜歡。
曾經,在我夢中出現了一個女孩。
一直期待著她的出現。
也許在現實生活中,已擦身而過。
結果如何?總有一天,謎底會解開。
Thursday, June 18, 2009
[Linux] 在現有的Hadoop Cluster上安裝與運行NUTCH
This tutorial uses 5 CentOS Linux Servers to build Hadoop cluster.
machine1(192.168.0.1) : namenode, jobtracker
machine2-5(192.168.0.2-5) : datanode
1. Add a user and create working directories for Nutch and Hadoop.
2. Download and upgrade JAVA
3. Modify /etc/hosts
Add these hosts to /etc/hosts
4. Download Hadoop-0.19.1
login to machine1.
The contents of conf/masters:
machine1(192.168.0.1) : namenode, jobtracker
machine2-5(192.168.0.2-5) : datanode
1. Add a user and create working directories for Nutch and Hadoop.
sudo useradd -d /home/nutch nutchApply this step to machine1-5.
sudo mkdir /home/search
sudo chown -R hadoop:hadoop /home/search
sudo as hadoop and change to the home directory.
2. Download and upgrade JAVA
download the latest java package from the link blow:Apply this step to machine1-5.
http://www.java.com/en/download/manual.jsp#lin
chmod a+x jdk-6u14-linux-i586-rpm.bin
./jdk-6u14-linux-i586-rpm.bin
3. Modify /etc/hosts
Add these hosts to /etc/hosts
machine1 192.168.0.1Apply this step to machine1-5.
machine2 192.168.0.2
machine3 192.168.0.3
machine4 192.168.0.4
machine5 192.168.0.5
4. Download Hadoop-0.19.1
login to machine1.
wget http://www.meisei-u.ac.jp/mirror/apache/dist/hadoop/core/hadoop-0.19.1/hadoop-0.19.1.tar.gz5. Download Nutch-1.0
wget http://www.meisei-u.ac.jp/mirror/apache/dist/lucene/nutch/nutch-1.0.tar.gz6. Unpack hadoop-0.19.1.tar.gz and nutch-1.0.tar.gz
tar xvfz hadoop-0.19.1.tar.gz7. Edit hadoop-env.sh in Hadoop Directory.
tar xvfz nutch-1.0.tar.gz
mv ~/hadoop-0.19.1 /home/search/hadoop
mv ~/nutch-1.0 /home/search/nutch
cd /home/search/hadoop
vi conf/hadoop-env.shAttach the following to the hadoop-env.sh.
export JAVA_HOME=/usr/java/jdk1.6.0_148. Export the environment variables.
export HADOOP_HOME=/home/search/hadoop
export HADOOP_CONF_DIR=/home/search/hadoop/conf
export HADOOP_SLAVES=$HADOOP_CONF_DIR/slaves
export HADOOP_LOG_DIR=/tmp/hadoop/logs
export HADOOP_PID_DIR=/tmp/hadoop/pid
export NUTCH_HOME=/home/search/nutch
export NUTCH_CONF_DIR=/home/search/nutch/conf
source conf/hadoop-env.sh9. Edit the hadoop-site.xml
vi conf/hadoop-site.xmlThe contents are as follow.
<configuration>10. Edit the conf/masters and conf/slave
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.1:9000/</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>192.168.0.1:9001</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop/hadoop-${user.name}</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>mapred.task.tracker.http.address</name>
<value>0.0.0.0:0</value>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx512m</value>
</property>
<property>
<name>dfs.block.size</name>
<value>5120000</value>
</property>
</configuration>
The contents of conf/masters:
machine1The contents of conf/slaves
machine211. Deploy Hadoop Env to datanode.
machine3
machine4
machine5
scp -r /home/search/hadoop machine2:/home/search12. Start up Hadoop.
scp -r /home/search/hadoop machine3:/home/search
scp -r /home/search/hadoop machine4:/home/search
scp -r /home/search/hadoop machine5:/home/search
bin/hadoop namenode -format13. Edit the nutch-site.xml
bin/start-all.sh
cd /home/search/nutchThe contents are as follow:
vi conf/nutch-site.xml
14. Edit the crawl-urlfilter.txt<configuration>
<property>
<name>http.agent.name</name>
<value>nutch</value>
<description>HTTP 'User-Agent' request header. </description>
</property>
<property>
<name>http.agent.description</name>
<value>Nutch_Test</value>
<description>Further description</description>
</property>
<property>
<name>http.agent.url</name>
<value>localhost</value>
<description>A URL to advertise in the User-Agent header. </description>
</property>
<property>
<name>http.agent.email</name>
<value>test@test.org.tw</value>
<description>An email address
</description>
</property>
<property>
<name>http.robots.agents</name>
<value>nutch</value>
<description>The agent strings we'll look for in robots.txt files,
comma-separated, in decreasing order of precedence. You should
put the value of http.agent.name as the first agent name, and keep the
default * at the end of the list. E.g.: BlurflDev,Blurfl,*
</description>
</property>
<property>
<name>plugin.folders</name>
<value>/home/search/nutch/plugins</value>
<description>Directories where nutch plugins are located. </description>
</property>
<property>
<name>plugin.includes</name>
<value>protocol-(http|httpclient)|urlfilter-regex|parse-(text|html|js|ext|msexcel|mspowerpoint|msword|oo|pdf|rss|swf|zip)|index-(more|basic|anchor)|query-(more|basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
<description> Regular expression naming plugin directory names</description>
</property>
<property>
<name>parse.plugin.file</name>
<value>parse-plugins.xml</value>
<description>The name of the file that defines the associations between
content-types and parsers.</description>
</property>
<property>
<name>db.max.outlinks.per.page</name>
<value>-1</value>
<description> </description>
</property>
<property>
<name>http.content.limit</name>
<value>-1</value>
</property>
<property>
<name>indexer.mergeFactor</name>
<value>500</value>
<description>The factor that determines the frequency of Lucene segment
merges. This must not be less than 2, higher values increase indexing
speed but lead to increased RAM usage, and increase the number of
open file handles (which may lead to "Too many open files" errors).
NOTE: the "segments" here have nothing to do with Nutch segments, they
are a low-level data unit used by Lucene.
</description>
</property>
<property>
<name>indexer.minMergeDocs</name>
<value>500</value>
<description>This number determines the minimum number of Lucene
Documents buffered in memory between Lucene segment merges. Larger
values increase indexing speed and increase RAM usage.
</description>
</property>
</configuration>
vi conf/crawl-urlfilter.txtThe contents are as follow.
# skip ftp:, & mailto: urls15. Create a directory with a flat file of root urls.
-^(file|ftp|mailto):
# skip image and other suffixes we can't yet parse
-\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|mpg|xls|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP)$
# skip URLs containing certain characters as probable queries, etc.
-[*!@]
# accept anything else
+.*
mkdir urls16. Copy seeds list to hadoop DFS
echo "http://www.apache.org" >> urls/urls.txt
../hadoop/bin/hadoop fs -put urls urls17. Copy conf/nutch-site.xml and conf/crawl-urlfilter.txt to hadoop conf folder.
cp conf/nutch-site.xml conf/crawl-urlfilter.txt /home/search/hadoop/conf18. Deploy nutch configure files to namenode.
scp /home/search/hadoop/conf/nutch-site.xml /home/search/hadoop/conf/crawl-urlfilter.txt machine2:/home/search/hadoop/conf19. Start crawling.
scp /home/search/hadoop/conf/nutch-site.xml /home/search/hadoop/conf/crawl-urlfilter.txt machine3:/home/search/hadoop/conf
scp /home/search/hadoop/conf/nutch-site.xml /home/search/hadoop/conf/crawl-urlfilter.txt machine4:/home/search/hadoop/conf
scp /home/search/hadoop/conf/nutch-site.xml /home/search/hadoop/conf/crawl-urlfilter.txt machine5:/home/search/hadoop/conf
cd /home/search/nutch
../hadoop/bin/hadoop jar nutch-1.0.job org.apache.nutch.crawl.Crawl urls -dir crawl -depth 5 -topN 10000
Sunday, June 14, 2009
[Y! Life] Photo Story EP:18 日出@北海岸
[Y! Life] Photo Story EP:17 Summer Party@2006
[Y! Life] Photo Story EP:16 初登烘爐地
Friday, June 12, 2009
[Linux] 無法compile pftp shit edition的問題
在Linux下,compile pftp shit edition時,會出現
In function ‘int open(const char*, int, ...)’, inlined from ‘bool CTCP::ReadFile(char*, long int)’ at tcp.cc:1180:
/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments make[1]: *** [tcp.o] Error 1
解決方法:
編輯src/tcp.cc
跳到1180行
找到
open(name, O_CREAT | O_TRUNC | O_RDWR | O_BINARY)) == -1) {
改成
open(name, O_CREAT | O_TRUNC,0664 | O_RDWR | O_BINARY)) == -1) {
然後make dynamic
Reference:
pftp-shit wont compile
In function ‘int open(const char*, int, ...)’, inlined from ‘bool CTCP::ReadFile(char*, long int)’ at tcp.cc:1180:
/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments make[1]: *** [tcp.o] Error 1
解決方法:
編輯src/tcp.cc
跳到1180行
找到
open(name, O_CREAT | O_TRUNC | O_RDWR | O_BINARY)) == -1) {
改成
open(name, O_CREAT | O_TRUNC,0664 | O_RDWR | O_BINARY)) == -1) {
然後make dynamic
Reference:
pftp-shit wont compile
Wednesday, June 10, 2009
[Y! Life] Photo Story EP:15 宅宅的盛會
[Y! Life] Photo Story EP:14 YPC人像外拍@三芝
[Y! Life] Photo Story EP:13 小護士餐廳DS
Monday, June 8, 2009
[Y! Life] Photo Story EP:12 遠離家園:蘭嶼
[Y! Life] Photo Story EP:11 雨後的陽明山竹子湖
Friday, June 5, 2009
[Y! Life] Photo Story EP:10 尋找向日葵
[Linux] SSH的Remote Forwarding
早大的網路,管的真的很嚴。
但還是有辦法突破^_^
A : 學校的個人電腦 (Linux, Private IP)
B : SSH Server (Linux, Public IP, 有Firewall,對外只能用port 22)
C : 家裏的電腦 (皆可)
A可以連到B,C
B可以連到C,但不能連到A
C可以連到B,但不能連到A
要如何從C連到A呢?
可以用SSH Remote Forwarding
在A上執行
此時就可以從C用SSH到B之後,再從B SSH到A了
但還是有辦法突破^_^
A : 學校的個人電腦 (Linux, Private IP)
B : SSH Server (Linux, Public IP, 有Firewall,對外只能用port 22)
C : 家裏的電腦 (皆可)
A可以連到B,C
B可以連到C,但不能連到A
C可以連到B,但不能連到A
要如何從C連到A呢?
可以用SSH Remote Forwarding
在A上執行
ssh -N -R 55588:localhost:22 user_of_B@ip.of.B
此時就可以從C用SSH到B之後,再從B SSH到A了
C_SHELL> ssh user_of_B@ip.of.B
B_SHELL> ssh -p 55588 user_of_A@localhost
Wednesday, June 3, 2009
[Linux] 解決 Nutch 中 Cache 亂碼的問題
Edit cache.jsp
Reference:
Nutch缓存乱码解决方案
--- cached.jsp.orig 2009-02-18 12:17:25.000000000 -0500
+++ cached.jsp.patched 2009-02-18 12:43:26.000000000 -0500
@@ -40,6 +40,7 @@
.getLocale().getLanguage();
Metadata metaData = bean.getParseData(details).getContentMeta();
+ Metadata parseMetaData = bean.getParseData(details).getParseMeta();
String content = null;
String contentType = (String) metaData.get(Metadata.CONTENT_TYPE);
@@ -49,7 +50,7 @@
// but I don't know how to emit 'byte sequence' in JSP.
// out.getOutputStream().write(bean.getContent(details)) may work,
// but I'm not sure.
- String encoding = (String) metaData.get("CharEncodingForConversion");
+ String encoding = (String) parseMetaData.get("CharEncodingForConversion");
if (encoding != null) {
try {
content = new String(bean.getContent(details), encoding);
Reference:
Nutch缓存乱码解决方案
Tuesday, June 2, 2009
[Y! Life] Photo Story EP:9 油桐花
Monday, June 1, 2009
[Y! Life] Photo Story EP:8 與黃*瑄的邂逅
這是第一次去高雄的城市光廊拍照。
這次下高雄,是專程跑去找黃*瑄。
這個黃*瑄跟另一個黃X瑄不同人。
她是在Y! Match上認識的網友。
第一次見面,我就送她一對手工的珍珠耳環。
(那不是塑膠的唷,是真的珍珠呢。)
(我經常做這種幫別人養老婆的鳥事。)
到了高雄後,就去城市光廊走走,喝咖啡。
喝完咖啡後,突然下起大雨,只好各自回家:(
過幾天後,就再約她一起去雲林的古坑喝咖啡。
沒想到她竟然答應耶。
她還自己坐車到斗六呢。真感動。
當時還事先調查好哪間咖啡好喝。
(我不喝咖啡的)
不過真的沒梗,連續兩次都喝咖啡。
老實說,當時有想要追她。
不過被阻止了,只好作罷。
但我想,我也是追不到她。
某次下南部,被放了鴿子。
想說都到南部了,就再約她去高雄走走。
去了高雄的蓮池潭。
她真的是誠意十足,肯賞光,還帶了美女朋友。
我只能拍拍她們的背影。
她是我在Match上唯一有見面的網友。
Subscribe to:
Posts (Atom)