2011年11月5日 星期六

二分之一「日人路O形連走露門山和波露山」個人心得

時間:2011年11月5日 (六)

人員:領隊:林教授,接著換友聖教官。押隊:大咖。亂集團、週三隊共十六名隊員。

天氣:晴朗,好的不得了。

預計路線
內洞森林遊樂區停車場 → 內洞林道 → 露門山西北稜登山口 → 露門山 → 波露山 → 1407峰東轉東北稜 → 內洞林道 → 內洞森林遊樂區停車場
(示意圖)

實際路線
內洞森林遊樂區停車場 → 內洞林道 → 露門山西北稜登山口 → 露門山 → 波露山 → 波露山北轉東北稜 → 內洞林道 → 內洞森林遊樂區停車場
(平緩處是內洞林道)

前言
「日人路O形連走露門山和波露山」有兩塊重要拼圖。第一塊是「露門山西北稜」,第二塊是「1407峰東轉東北稜」。今天行程便嘗試連走兩段日人路。

當初報名參加這個行程,單純想走1407峰東轉東北稜而已,如果行程改成逆走,可能爬到波露山就大功告成,如果有人想撤退,我可是會湊一腳。今天已有心理準備,如果最近撐不下去,還有大咖當押隊,我真幸運。
  • 0430 台北東三門。行前不曉得有多少人參加。林教授在信裡請Terry大哥載一個人,原來這個人就是我。
  • 0600 內洞森林遊樂區停車場出發。地點很熟悉,不過亂集團很陌生。當初以為會有其他中級山訓練營的同學前來,結果一個也沒有,原本認識的人只有:林教授、大咖、友聖。這樣也不錯,可以認識新朋友,讚啦!

    這邊發生一點小錯誤,教授說今天隊員有15名,我們也沒有細算,結果過露門山下切時,人數怎麼數都多一個。當然,這個錯誤可以糾正,但假如真的弄丟一個,報數人數正確,那可慘了。所以報數真的要小心再小心。

    半路有一老伯問我們去哪,我們要去很深很深的山,那裡有美麗的稜線。
  • 0650 內洞林道12.3K。休息。終於擺脫人工步道的摧殘,大家都很規矩,沒有切西瓜走捷徑。這條步道擁有我的回憶。
  • 0700 出發。內洞林道我又來了!原來,走林道也是有技巧的。大咖晚上跟我們講,下坡腳步要輕盈,利用重心加速度,前腳輕鬆往前挪,後腳趁機打直休息,行進猶如媒婆左右晃動,減緩下坡一急一緩的衝力,手左右擺動,便能領會其中訣竅。
  • 0800 15.7K林道底,右邊路徑整理很乾淨,不取。去左穿越草叢。過溪一次,此為最後水源。過溪後尋找寫字的黃色布條,此為日本人登露門山的路口。沿途尋找日本人走過的證據,可惜找不到。
  • 0830 一隊員A體力不濟,穿牛仔褲爬中級山,穿著有點錯誤,大咖陪他撤退下山。猜測大咖有點三條線。
  • 0900 休息。教授根據大家行進速度,推估尚需十個小時才能完成行程,若有人要下山撤退,這是很好的時機點,因為往上走就回不去了。教授陪隊員B下山,直接載他們回家。
  • 0940 接回傳統路。休息。第一次探勘路跡沒清乾淨,後來教授又來清一次,幾個月內又有熱心山友幫忙清路跡,萬分感謝。雖然露門山西北稜硬硬的,不過先苦後甘,接上傳統路後,後面上上下下便不覺得難行。
  • 1030 休息。
  • 1125 ▲露門山(H1461M),用午餐。早上買兩個飯團,剛好省去煮水的時間。教授原先規劃是1100到露門山,因此我們得趕一點。
  • 1140 大咖與大家會合。大咖陪隊員A走到內洞林道底,再陪他走一小段林道,確定安全無虞,再從後面追上我們,仔細推估時間,這未免走太快了吧。
  • 1210 出發。開始走稜線路。稜線路布條很少,也沒有路牌指示,行至叉路口請特別小心,某隊就在某叉路口走叉了,直接開往宜蘭。新布條僅僅表示「布條是新的」,大路僅僅表示「路很大條」,正確的稜線路是不起眼的小路,旁邊有年代久遠的布條。
  • 1340 1359峰。稜線路一半。沿途雪山山脈清楚可見,特別是淡淡的大霸尖山,搭上變色的山毛櫸,讓人有戀愛的感覺。有時循稜苦下,有時歡樂腰繞,只為了心中自以為的目的地。想太多反而有害健康,我們都是過客,長期來看,我們都死了。
  • 1430 ▲波露山(H1418M)。只見光線越來越透亮,波露山好久不見。上次綁在基石的黃色布條仍在,好有趣。
  • 1500 出發。因為時間關係,「1407峰東轉東北稜」下次再探,這次直取波露山北轉東北稜下山。這條路修的很乾淨,比起上次探勘迷的亂七八糟,實在是好太多了。

    下山的路好陡,我走的好慢。晚上問大咖怎麼走才快,因為我想走快一點。大咖說可以用登山杖當支撐點,先插在地上,前腳順過去橫踩住登山杖前面,當做支撐的點。

    這邊發生小插曲。前面隊友踩破蜂窩,當我經過破蜂窩,瞬間噴出百多隻蜂,哇!第一次看到那麼多蜂!仔細看不是虎頭蜂,我該怎麼辦?此時往後退些,等後面隊友問他們意見。他們說:

    因為沒有攻擊性,裝死穿過去就對了。

    裝死無誤,不過鼻頭被螫一下,頗痛。也搞的我心神不寧,一直擔心群蜂圍攻。我是好人不要叮我。原本已經走很慢了,一搞之後,又走更慢,浪費無謂的體力,還滑了兩次,沒事。這時候我告訴自己要冷靜點,慢慢走,千萬不要受傷了。有時候很渴,就休息一下喝個水,等到後方隊友追來,再一起下山。
  • 1650 波露山北轉東北稜登山口。這段路太精彩了,人生第一次穿越百隻蜂蜂,真的瘋瘋。
  • 1800 內洞林道12.3K。摸黑慢慢踢。開始陡下人工步道,苦命。
  • 1900 內洞森林遊樂區停車場。13小時的汗水真的是流免錢,感覺身體快乾了,這次行程又逼出我的潛能。
感謝教授、友聖帶隊,大咖押隊,隊友無限量的水果、問候及幫忙。太感謝了。其實我應該感謝那群蜂蜂放過我一馬,哈哈,真是夠好運的!

參考資料
  1. 照片及航跡圖取自Mpro Yu 大哥之「烏來雙姑-路門山連走波露山 (2011.11.05)」
  2. 台北縣烏來鄉內洞林道登路門山 (藍天圖集[7])
  3. 露門山西北稜線探勘露門山連走大保克山 (台灣山岳教育公益協會、週三登山隊)
  4. 日人路O形攀登波露山 (週三登山隊、台灣山岳教育公益協會)

2011年11月4日 星期五

Apache Ant - HelloWorldWithAnt Tutorial Problems

http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html is a great tutorial. However, I meet some problems in the tutorial. Here I summarize well-known solutions here.



Problem 1:
PROJECT_HOME\build.xml:24: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

Solution:
Change <javac> tag to <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" includeantruntime="false"/>.



Problem 2:
compile:
    [mkdir] Created dir: PROJECT_HOME\build\classes
    [javac] Compiling 2 source files to PROJECT_HOME\build\classes
    [javac] PROJECT_HOME\src\HelloWorldTest.java:1: package junit.framework does not exist
    [javac] public class HelloWorldTest extends junit.framework.TestCase {
    [javac]                                                    ^
    [javac] PROJECT_HOME\src\HelloWorldTest.java:7: cannot find symbol
    [javac] symbol  : method fail(java.lang.String)
    [javac] location: class HelloWorldTest
    [javac]         fail("An error message");
    [javac]         ^
    [javac] 2 errors

BUILD FAILED

Solution:
Download JUnit and put junit-4.10.jar (for example) in PROJECT_HOME\lib directory.



Problem 3:
When we execute ant junit command, we may fail.
BUILD FAILED
PROJECT_HOME\build.xml:49: Reference application not found.

Solution:
To fix it, we need to isolate application path:
    <path id="application" location="${jar.dir}/${ant.project.name}.jar"/>

    <target name="run" depends="jar">
        <java fork="true" classname="${main-class}">
            <classpath>
                <path refid="classpath"/>
                <path refid="application"/>
            </classpath>
        </java>
    </target>
    
    <target name="junit" depends="jar">
        <junit printsummary="yes">
            <classpath>
                <path refid="classpath"/>
                <path refid="application"/>
            </classpath>
            
            <batchtest fork="yes">
                <fileset dir="${src.dir}" includes="*Test.java"/>
            </batchtest>
        </junit>
    </target>



So, the whole PROJECT_HOME\build.xml is
<project name="AntHelloWorld" basedir="." default="main">

    <property name="src.dir"     value="src"/>
    <property name="lib.dir"     value="lib"/>
    <property name="build.dir"   value="build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>
    <property name="jar.dir"     value="${build.dir}/jar"/>

    <property name="main-class"  value="demo.HelloWorld"/>

    
    <path id="classpath">
        <fileset dir="${lib.dir}" includes="**/*.jar"/>
    </path>
    <path id="application" location="${jar.dir}/${ant.project.name}.jar"/>

    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" includeantruntime="false"/>
        <copy todir="${classes.dir}">
            <fileset dir="${src.dir}" excludes="**/*.java"/>
        </copy>
    </target>

    <target name="jar" depends="compile">
        <mkdir dir="${jar.dir}"/>
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
        </jar>
    </target>

    <target name="run" depends="jar">
        <java fork="true" classname="${main-class}">
            <classpath>
                <path refid="classpath"/>
                <path refid="application"/>
            </classpath>
        </java>
    </target>
    
    <target name="junit" depends="jar">
        <junit printsummary="yes">
            <classpath>
                <path refid="classpath"/>
                <path refid="application"/>
            </classpath>
            
            <batchtest fork="yes">
                <fileset dir="${src.dir}" includes="*Test.java"/>
            </batchtest>
        </junit>
    </target>

    <target name="clean-build" depends="clean,jar"/>

    <target name="main" depends="clean,run"/>

</project>
(Reference: https://gist.github.com/1117003)

Enjoy!

(PS. To avoid import error, we should set ANT_HOME correctly in the environment variable.)

2011年11月3日 星期四

Apache Ant 耍笨記 - 少打一個句號

故事是這樣的。我需要類似 GNU Make 的工具,來幫我 build Java files,首選當然是 Apache Ant

但我沒經驗,得從簡單的範例開始,於是開始研究 http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html。一切都很順利,直到這邊:
echo Main-Class: oata.HelloWorld>myManifest
md build\jar
jar cfm build\jar\HelloWorld.jar myManifest -C build\classes .
java -jar build\jar\HelloWorld.jar
怪了,jar 怎麼打都失敗。後來發現。少。打。一。個。句。號。我真笨。
jar cfm build\jar\HelloWorld.jar myManifest -C build\classes .

Remarks on Calculus of Variations

Statement of the Problem:
Let Ω = { y(x) | y: [a,b]->real number system, where y has a continuous first derivative. } Let F be a functional whose domain is Ω,
F[y] = ∫_[a,b] f(x, y, y') dx.
Suppose the functional F[y] obtains a minimum (or maximum) value. Determine the curve y.

The Euler-Lagrange Equation:
partial / partial y - d/dx( partial f / partial y' ) = 0.
Example: F[y] = ∫_[a,b] (1 + y'^2)^{1/2}. By Euler-Lagrange equation, 0 = -y''/(1 + y')^{3/2}, or y = Ax+B.

(To prove the Euler-Lagrange equation, we may start a helper function y_ε(x) = y(x) + εh(x), where h: [x,y]->real number system having a continuous second derivative.)

Reference:

2011年11月2日 星期三

[Java] JAX-WS Using Spring Framework

Step-by-step:
  1. In Eclipse, new a dynamic web project, say EchoService
  2. Provide an interface for EchoService, say EchoService.java, in a custom demo package.
    package demo;
    
    public interface EchoService {
        
        public String echo(String word);
        
    }
  3. Provide an implementation for EchoService interface, say EchoServiceImpl.java.
    package demo;
    
    public class EchoServiceImpl implements EchoService {
    
        public String echo(String word) {
            return word;
        }
    
    }
  4. Provide an endpoint to exporting EchoService web service. Make sure that all Spring framework JAR files and commons-logging JAR file are in the build path.
    package demo;
    
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    @WebService
    (
        targetNamespace = "http://demo/", 
        serviceName="EchoService"
    )
    public class EchoServiceEndpoint {
    
        @Autowired 
        private EchoService biz;
        
        @WebMethod
        public String echo(
                @WebParam(name = "word") String word
        ) {
            return biz.echo(word);
        }
        
    }
  5. Provide applicationContext.xml.
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:util="http://www.springframework.org/schema/util"
        xmlns:tx="http://www.springframework.org/schema/tx" 
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    
        <context:annotation-config />
        <bean id="echoService" class="demo.EchoServiceImpl" />
    
        <bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter">
            <property name="baseAddress" value="http://localhost:8888/" />
        </bean>
    
        <bean id="echoServiceEndpoint"
            class="demo.EchoServiceEndpoint">
        </bean>
    </beans>
    
  6. Provide a standalone web service publisher, say Main.java.
    package demo;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Main {
    
        private static final ApplicationContext ctx = new ClassPathXmlApplicationContext(
                "demo/applicationContext.xml");
    
        public static void main(String[] args) {
            System.out.println("Start Standalone JAX-WS Server...");
        }
    
    }
  7. Run as Java application (demo.Main). Please check http://localhost:8888/EchoService?wsdl.
Enjoy!


Reference:

Comments on World of Work Report 2011

News: World of Work Report 2011- ILO says world heading for a new and deeper jobs recession, warns of more social unrest

副標就是背景音樂,主旋律是這樣唱的:
Initially, the effects of the economic crisis were felt more slowly in Asia and the Pacific than some other regions, but as the fallout moved beyond the financial sector and into the global economy its impact became unavoidable. The dependency on trade and exports, the decline in capital inflows and Foreign Direct Investment.

The consequences are being felt not only as a rise in unemployment. Just as concerning are the expansion in the informal economy – where workers have little or no social protection – and the rise in poverty. Women, young people, and unskilled migrant workers are among those who are particularly vulnerable, and whose situation requires specific attention from policy makers.
以台灣目前狀況來看,雖有勞基法保護勞工,可惜執法不力徒具形式,企業想怎麼做就怎麼做。這讓我想起 Blood Diamond 這部電影。我們常常享用便宜的勞務,為什麼會那麼便宜?「勞工不准請事假」,「晚上睡公司等於熱忱」,「我30歲,不知道自己未來目標」,「老闆積欠員工薪水」,「第一個月薪水只有一萬五,勞工當學經驗」等等,這些血汗剛好創造便宜的勞務
或者說,這些血汗剛好為老闆創造最大利潤,反正天高皇帝遠,勞基法僅供參考,認真就輸了。外國人很厲害,一句「workers have little or no social protection」道破台灣的現況。

台灣勞動環境惡劣,你知我知政府也知,但知道不等於改善,只要勞資雙方沒起太大衝突,維持現狀就是最好的選擇。例子就是今年七月勞委會將基本工資調漲至18780元 (時薪103元),調幅5.03%,雖然資方不太滿意(調幅3.47%),勞方更不滿意(23459元),但紛爭似乎就此平息。勞委會功德圓滿,善哉善哉。這樣真的有改善台灣勞動環境?最好有改善啦。

看看隔壁韓國,韓國有聯合工會與政府和資方談判,年年調高基本工資。依匯率換算,今年一樣在超商工作一小時,韓國勞工已經比台灣勞工多領兩成薪水。卻沒有傳出企業倒閉潮,失業率甚至低於台灣 (天下雜誌)。



此外,ILO指出亞洲國家「the dependency on trade and exports, the decline in capital inflows and Foreign Direct Investment」,恰巧反應台灣無薪假的窘況。讓我猜猜政府會怎麼處理,嗯,掐指一算,處理方式就是「維持現狀」。講在前頭,事後驗證,我們來對對歷史新聞。



億光:
  1. (10.26) LED封裝大廠億光電子董事長葉寅夫證實,億光將啟動無薪假制度,將從11月起持續兩個月,不過葉寅夫強調,無薪假讓企業跟員工多點彈性,應用健康態度去面對。
  2. (10.26) 勞委會指出,若資方確有實施無薪假必要,勞委會將督責地方主管機關輔導勞資雙方簽訂協議;同時呼籲勞資雙方能參照勞委會公布的「勞雇雙方協商減少工時協議書」進行協商,以保障勞工權益。(執法不力徒具形式)
  3. (10.27) LED封測廠億光電子擬實施無薪假,經濟部長施顏祥今天表示,這是少數個案,每家公司有其經營要求;從整體來看,9月失業率往下降,「希望這個事情以個案方式來協助即可」。(維持現狀不要打草驚蛇)
  4. (10.27) 億光強調,面對景氣衰退,億光不減薪、不裁員、不會讓任何家庭陷入痛苦與打擊,即是對員工最負責的做法,三至五天的無薪假,是公司全體員工共體時艱的向心力做法。(根據我的了解,加薪才是凝聚向心力的做法)
  5. (10.28) 王如玄表示,截至昨天為止,億光尚未向勞委會通報放無薪假的決定,但目前她已先請地方主管機關主動了解,而勞委會也會請就業輔導團進入,在必要時勸資方不要實施無薪假;如果真的發現有濫用情形,則會盡可能協助勞工爭取權益。王如玄說,億光休無薪假其實是「八字還沒一撇」,目前只是先表達態度,但呼籲廠商不要有樣學樣。(我轉彎嘍,請你跟著轉)
  6. (10.28) 億光電子原本計劃從11月起實施無薪假,不料因引起爭議,更惹來立委砲轟,行政院勞工委員會揚言要查,為平息風波,億光稍早宣布無薪假喊卡。億光公告指出,為保障勞工權益,並配合政府政策,決議停止協商減少工時相關作業;並針對因宣布協商減少工時相關作業所造成社會不安,深感抱歉。(無奈)
  7. (10.28) 億光電子今天公告不放無薪假。行政院勞工委員會主委王如玄對此表示,勞工盼望的就是穩定的工作環境,勞委會肯定企業主能聽見社會聲音,願意採取對勞工最有利的方式。(維持現狀不要打草驚蛇)
結果:功德圓滿,善哉善哉。



通報無薪假家數:

無薪假是很厲害的招,可以延遲支付資遣費用,可以節省徵才費用,可以減少教育訓練費用。此外,還有很多怪招,幫助企業降低費用支出,例如減薪,強迫休無薪事假 (但不是無薪假,真會鑽),強迫休特休 (希望逼走員工),怪招一堆,不過都有一個特點:勞資雙方沒有進行協商。台灣勞工真的很nice。
  1. (10.31) 陳冲表示,政府密切注意企業放無薪假情況,截至前天(28日)為止,約有六家企業實施無薪假,其中一家每個月休4天,另一家每個月上限7天;目前看起來,無薪假的情況與2008年金融海嘯時的情況不一樣。(維持現狀不要打草驚蛇)
  2. (11.1) 勞委會今天公布最新通報的無薪假公司,已經來到12家!短短24小時內,就遠比昨天主委王如玄說的6家多出一倍,不只民眾說很錯愕,根據竹科的「電資工會」統計,無薪假企業已經有19間,估計有兩萬多人受影響,比勞委會掌握的數據多出六倍!
  3. (11.2) 勞委會前日才將無薪假通報家數從三家調高到六家,昨又從6家提高到12家,影響勞工人數從1000多人拉高到2801人;但台灣電子電機資訊產業工會勞工通報系統到昨天止,已高達20家企業實施無薪假或變相無薪休假,影響人數多達21500。(維持現狀不要打草驚蛇)
  4. (11.2) 勞委會主委王如玄表示,任何無薪假的訊息都歡迎通報,公會所說的20家,勞委會每一家都願意去查。王如玄同時對外界信心喊話,表示比起金融海嘯時休無薪假的廠商,一開始就有400多家、18萬勞工受影響,相較之下現在的12家、2000多人,都在掌控之內,如果大家擴大無薪假的說法,反而造成消費力緊縮,不但無助於刺激經濟,到頭來造成更多人休無薪假,因此呼籲大家不要恐慌。(維持現狀不要打草驚蛇)
結果:功德圓滿,善哉善哉。



結論:台灣勞工過著幸福快樂的日子。善哉善哉。好啦,勞工要的很簡單,薪水慢慢變多,就這樣,其他講再多都是多餘的。除了無薪假,還有很多東西要改善,很多大企業營所稅實際有效稅率,竟然比我的綜所稅實際有效稅率還低,真是見鬼了。請政府修法明訂營所稅實際有效稅率不得低於10%,謝謝大家。

2011年11月1日 星期二

I Should Write Blogs

啟發文章:You Should Write Blogs

T. Harv Eker, Secrets of the Millionaire Mind: Mastering the Inner Game of Wealth (有錢人想的和你不一樣) 談及「推銷」,作者是這麼說的:
  • 有錢人樂意宣傳自己和自己的價值觀。窮人把推銷和宣傳看成不好的事。
  • 推銷自己或者自我宣傳,就是一種自我吹噓或自吹自擂,請擺脫這種觀念。
  • 厭惡推銷,是最容易阻礙成功的障礙。

或許沒有人看我的部落格,但只要認真推銷自己的想法,誠實說出自己的感受,總有一天能夠找到知己。部落格是很棒的被動傳播媒體,只要文章不消失,就會有越來越多人看,越來越多人認同你的看法。當然,也會有不認同的觀眾,不高興沒關係,盡量寫你的部落格來反擊我,I don't care。(激將法無誤)

除了推銷自己的想法,也可記錄生活瑣事、工作知識,把部落格當流水帳來用,一下寫爬山心得,一下寫相對論,一下寫投資想法,寫部落格真的很有趣,歡迎大家一起寫部落格畫唬爛。