標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (117) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (126) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2013年12月9日 星期一

死生契闊‧與子成說

http://blog.udn.com/liecloud/3970231

《詩三百‧邶風‧擊鼓》中有一段話如此寫道:『死生契闊,與子成說;執子之手,與子偕老。』
  用白話說就是:「無論生死離合多麼遼遠,我都跟妳約定好了,要牽妳的手一起到老。」
  這是幾千年前先人的浪漫,也是丈夫對妻子深切的思念。
  在早期台灣,平埔族與原住民的婚俗中,「牽手」一詞是指對妻子的稱呼,在連雅堂所撰的《台灣語典》中寫道:「土番娶婦,親至婦家,攜手以歸;沿山之人習見其俗,因謂妻曰牽手。」執子之手與牽手兩者之間,似乎冥冥之中有了呼應。
  「執子之手,與子偕老」與「牽手」兩字都是最美的文字之一,也都代表著男人對女人一生的承諾。
  然而曾幾何時,這種美凋零了,被電光石火的愛情與水逝雲卷的承諾所取代,一切都變成得之容易、失之不難。或許在這個愛情太氾濫的年代,兩性關係需要檢討,對生命的態度也值得省思。
  今時男女,在花前月下傾訴著綿綿不絕的甜言蜜語,宛如星飛電掣般纏綿在一起,口中輕輕吐出「我愛你」三個字,看似如此堅定不移,甚至以為可以海枯石爛、至死不渝,但實際上那只因當下一觸即發的慾望,而併發出短暫且絢麗的煙火而已,不過曇花一現、海市蜃樓般不切實際。
   所謂未經一番寒徹骨,哪得梅花撲鼻香的道理,即是世界太多元,很多「速食」觀念的形成,導致許多事情被本末倒置化,而無法去體會細水長流的美,更無法領 略《上邪》詩中的那份執著與堅定。現今多數的年青男女很難懂得「我愛你」的真諦,大部分年青男女只為了心中那股慾望,就像乾柴遇上烈火般,用盡氣力燃燒耗 竭,一地成灰後,原以為昇華了彼此愛情的模樣,實際上卻是愛情的原貌始終不曾看見。
  所以一個人若是沒有歷經過愛情真正的洗禮,是很難體悟何謂:『死生契闊,與子成說。執子之手,與子偕老。』這份願意用一生一世與愛人廝磨的渴望。更無法去理解樂府詩歌中那句:『我欲與君相知,長命無絕衰!』這種不因時間流逝而有所遞減的情感。
  所以走過愛情,回頭看看來時路,是否我們都曾不留遺憾,且遇見過生命裡真正的那份愛呢?我相信,對天地合、乃敢與君絕這樣的愛情渴望,應該不分男女老少都想擁有的,對執子之手,與子偕老的這份期盼,應該也是存活在每個人內心深處吧!


以下收錄兩首原篇
《詩經‧邶風‧擊鼓》
擊鼓其鏜,踊躍用兵。土國城漕,我獨南行。
從孫子仲,平陳與宋。不我以歸,憂心有忡。
爰居爰處?爰喪其馬?于以求之?于林之下。
死生契闊,與子成說。執子之手,與子偕老。
于嗟闊兮,不我活兮。于嗟洵兮,不我信兮。

《上邪》
上邪!我欲與君相知,長命無絕哀。
山無陵,江水為竭,冬雷震震,夏雨雪,天地合,乃敢與君絕。



http://tw.myblog.yahoo.com/jw!JXtfR4iXFBJibPnil02kvQ--/article?mid=7

《詩經·邶風·擊鼓》
擊鼓其鏜,踴躍用兵。土國城漕,我獨南行。
從孫子仲,平陳與宋。不我以歸,憂心有忡。
爰居爰處?爰喪其馬?於以求之?於林之下。
死生契闊,與子成說。執子之手,與子偕老。
于嗟闊兮,不我活兮。于嗟洵兮,不我信兮。
--------------------------------------------------------


譯文

  敲鼓聲音響鏜鏜, 鼓舞士兵上戰場。 人留國內築漕城, 唯獨我卻奔南方。


  跟從將軍孫子仲, 要去調停陳和宋。 長期不許我回家, 使人愁苦心忡忡。


  安營紮寨有了家, 繫馬不牢走失馬。 叫我何處去尋找? 原來馬在樹林下。


  無論聚散與死活, 我曾發誓對你說。 拉著你手緊緊握, 白頭到老與你過。


  歎息與你久離別, 再難與你來會面。 歎息相隔太遙遠, 不能實現那誓約。
 
 
解釋
 
長年行役於外的將兵思念家鄉和妻子。
 
孫子仲:當時衛國的元帥。

平:《集傳》:「平,和也。合二國之好也」。有說當時陳、宋二國作亂,孫子仲平之,則「平」應為「平伏」,或不戰而使蕃國歸順,並不是兩個平等的國家締結和盟。孫子仲當時是「天子師」的出兵,不是衛國戰爭。

 
爰居爰處,爰喪其馬:《傳》:「有不還者,有亡其馬者」。《箋》:「不還,謂死也,傷也,病也。今於何居乎?於何處乎?於何喪其馬乎?」爰(ㄩㄢˊ) ,即哪裡。
 
契闊:離合。馬瑞辰《通釋》:「契當讀如契合之契,闊當讀如疏闊之闊。……契闊與死生相對成文,猶雲合離聚散耳」。契即合,闊即離。

 
成說:《通釋》:「成說即成言也。……《傳》訓說為數者,蓋為預有成計,猶言有成約也。」即已有約定。
 
洵(ㄒㄩㄣˊ):遠。

 
信:即「言而有信」的信。(一說古「伸」字,志不得伸,一說極,信、極連讀,猶言終古。按通篇意旨,均不從)

[ 執子之手,與子偕老] :子,你的意思 ~
 
        在《詩經》的註解裡,契為合,闊為離,死生契闊就是生死離合的意思。「生死相依,我與你已經發過誓了;牽著你的手,就和你一起白頭到老。」這是一個征戰在 外不能歸的士兵,對妻子分別時誓言的懷念,兩情繾綣,海誓山盟,痛徹心扉。從此,「執子之手」成了生死不渝的愛情的代名詞。千百年來,斗轉星移,滄海桑 田,多少語匯老去,這個詞卻依然煥發著讓人怦然心動的生命力。

2013年12月6日 星期五

Regular Expression (RegExp) in JavaScript

http://blog.roodo.com/rocksaying/archives/2670695.html

Regular Expression (RegExp) in JavaScript

javascript regexp
Regular Expression (以下簡稱 REGEX) 是以一組特定字元符號描述字串樣式規則的記述語法。簡單地說, REGEX 用於表達字元符號在字串中出現的規則。舉個例子說明,在 REGEX 中,字元 '^' 放在第一個位置表示字串開頭位置,當我寫下 ^A 的記述時,便表示必須是一個開頭為 A 的字串,如 Adam,才符合此一規則。這個表達規則通常稱為 pattern 。 ECMAScript/JavaScript 以內建的 RegExp Object 提供 REGEX 功能。See also: ECMA-262 15.10 - RegExp Objects
要產生一個 RegExp 個體有兩種方式。第一種是直接以斜線 (/) 包住 pattern ,例如 /^A/ 。注意不要再用單引號或雙引號包在斜線外圍,一但用了引號圍住,就只是一個 String 而非 RegExp 個體。 "/^A/" 就是錯誤寫法,這只是一個普通字串。第二種是向系統要求建立一個 RegExp 個體,即 new RegExp(pattern) ,引數 pattern 可以是一個字串也可以是另一個 RegExp 個體。第一種方法只能使用常值的 pattern ,我們不能用斜線包住一個變數或一個字串運算結果。如果 pattern 保存在變數之中,則必須使用第二種方式。
RegExp 個體提供兩個主要行為,即 exec() 和 test() 。 exec() 會對引數字串進行比對運算,並將匹配的字串內容記錄在陣列中回傳。而 test() 則僅僅測試引數字串是否符合規則,只回傳 truefalse 。此外,RegExp 個體也可以作為 String 個體的 match(), search(), replace(), split() 之引數。 String 的 match() 其實就是調用 RegExp 的 exec() ,兩者的結果相同。
ECMAScript/JavaScript 的 REGEX 規則是以 Perl 的規則為範本 (PHP 中稱為 PCRE 的內容) ,本文僅簡短說明幾個常見的字元意義。想了解更多用法者,請參看 Perl/PHP 的相關書籍,以及 ECMA-262 15.10 的內容。
  1. ^
    寫在 pattern 第一個位置時,表示其後一符號必須出現在字串開頭的位置。寫在 pattern 中間位置時則為否定之意,表示字串中不可有 ^ 之後一符號的內容。
  2. $
    寫在 pattern 最後一個位置時,表示其前一符號必須出現在字串尾端的位置。寫在 pattern 中時無特別意義。
  3. *
    表示字串中有 0 到無數個其前一符號的內容。
  4. +
    表示字串中有 1 到無數個其前一符號的內容。
  5. ?
    表示字串中有 0 到 1個其前一符號的內容。
  6. { }
    表示前一符號在字串中的重覆次數。例如 /A{2}/ 表示 'A' 重覆兩次 (即 'AA') ;/A{2,}/ 表示字串含有 2 到無數多個 'A' ;/A{2,5}/ 表示含有 2 到 5 個 'A' 。
  7. .
    表示一個任意字元。
  8. [ ]
    表示字串含有括號中任一字元的內容。可以 - 表示一組連續字元,例如 /[a-z]/, /[0-9]/ 。注意, [] 僅代表一個字元,例如 /[abc]/ 表示 'a' 或 'b' 或 'c' ,而不是 'abc' 。
  9. ( )
    表示一個 sub pattern ,符合 sub pattern 的字串內容會被存放在匹配陣列中,並依序指派數字代表此 sub pattern 。可以此數字在 pattern 的其他地方引用內容,例如 /The h([0-9]) means Title (\1)/ 表示第 1 個 sub pattern 是 0 到 9 的任一字元,而 \1 表示匹配的內容。故 'The h1 means Title 1', 'The h2 means Title 2' 到 'The h9 means Title 9' 符合規則。
  10. \
    表示轉義 (escaping) ,將其後的字元視為一般字元。例如要表示字串中含有 '/' 字元時,就必須寫作 /\//
  11. |
    「或」意,字串中含有 '|' 之前一符號或後一符號的內容。例如 /image\.(jpg|png)/ 表示 'image.jpg' 或 'image.png' 。通常會用 () 括住 '|' 的前後符號。
  12. \d
    表示任何一個數字,意同 [0-9] 。
  13. \D
    表示任何一個非數字,意同 [^0-9] 。
  14. \w
    表示任何一個字元與數字以及 '_' ,意同 [a-zA-Z0-9_] 。
  15. \W
    表示任何一個 \w 以外的字元。
  16. \s
    表示任何一個空白符號,包括 \t, \v 等。
  17. \S
    表示任何一個非空白符號。

2013年12月4日 星期三

Java 有 3rd party class 時,應該如何放

http://tw.myblog.yahoo.com/l314kimo/article?mid=338&prev=346&next=337&l=f&fid=10

今天總算釐清了一些困擾我很久的東西,所以做個簡單的筆記。

一、安裝單一版本的jdk時,通常會有:

4個java.exe:

   1.WINDOWS\system32\java.exe
   2.[JRE_location]\bin\java.exe
   3.[JDK_location]\bin\java.exe
   4.[JDK_location]\jre\bin\java.exe

2個JRE:
   1.Public JRE (指[JRE_lcation])
   2.Private JRE (指[JDK_location]\jre)

前兩個java.exe使用的是Public JRE,後兩個java.exe使用的是Private JRE




二、classpath無需設定rt.jar的路徑,因為jdk會預設載入。(參考六)

可以在console mode 輸入java -verbose得之。
(verbose 可以顯示JVM會依序load哪些Class)
不知道是幾版之後才如此。總之,我試了又試,有沒有設rt.jar路徑真的無差別,
很好奇為什麼大家都說要在classpath設定rt.jar,而我在google上卻找不到答案。
也有人提倡最好少設classpath。




三、path用來設定指令的前置位址,如下:

(可以在console mode 輸入set path 或 path以顯示)
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;
C:\Program Files\Microsoft SQL Server\90\Tools\binn\;
C:\Program Files\Java\jdk1.6.0\bin;
C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin;

所以當我們在console mode 輸入java XXX 時,如果current目錄沒有java這指令時,
便會依序嘗試path下的路徑。




四、jdk目錄下之所以安置了一個jre,原因在於jdk下的工具大都是用java開發的。

如:java.exe , javac.exe jar.exe..等,(這些工具都放在jdk\lib\tools.jar中)
外表雖然是用RPC包裝成.exe檔,但其實它們都需要呼叫JRE的library。
所以JDK下就放了一個專供JDK使用的JRE,
但也可以透過path的設定讓[JDK_location]\jre被一般使用者使用。




五、在console mode使用java 這指令時,它使用的是哪個jre呢?

1.先找自己的目錄下是否有jre.

2.父目錄底下的jre目錄.(jdk\bin下的工具便是如此找到jdk\jre)

3.查詢Windows Registry
(HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment\)

所以這時path的順序設定將決定採用的是哪一個jre。

case1:
若path的順序是\WINDOWS\system32 在 \[JDK_location]\bin 之前。
java指令便是執行\WINDOWS\system32\java.exe
由於windows下無jre目錄,所以會參考Window Registry下的jre。
(即前述的Public JRE)

case2:
若path 的順序是\[JDK_location]\bin 在\windows\system32 之前。
那麼java指令便是執行C:\[JDK_location]\bin\java.exe
由於jdk下有一個jre目錄,所以java會參考jdk\jre。
(即前述的Private JRE)

最常發生的問題是當path的順序如case1,
java指令找到的jre與javac找到的jre是不同的。
產生的問題待第六點解釋。




六、java找尋class的順序

根據JDK 文件說明, java以下面3種順序找尋class的順序
1.Bootstrap classes

2.Extension classes

3.Users classes



Bootstrap classes指的是java在啟動時載入的class,
這些class主要是rt.jar 和 jre/lib 目錄下的一些class。
(所以rt.jar可以不須加入classpath)

下面列出系統中預設的Bootstrap classes:
jre\lib\rt.jar; jre\lib\i18n.jar;
jre\lib\sunrsasign.jar; jre\lib\jsse.jar;
jre\lib\jce.jar; jre\lib\charsets.jar;
jre\classes


Extension classes 指的是jre/lib/ext 目錄下的jar或zip檔。
third-party 的 library通常會放在這目錄下,如java3d, jogl..等。
當classloader 需要resolve class時,jre會自動來此目錄下找。
如果不同名字的jar,卻包含了相同的class,那麼哪一個class被載入是不一定的。

第五點最後提到的問題,常常跟Extension classes扯上關係。
當我們使用third-party的library時,如果只將jar檔放在Private JRE/lib/ext中,
javac指令因為使用Private JRE,所以能夠找到third-party library,得以順利compile。
但java指令使用的是Public JRE,Public JRE找不到 third-party library,
以致無法順利執行,原因是無法import package。

解決的方法有:
1.將third-party library jar檔 在 private JRE/public JRE 各放一份。
2.設定path時,使用第五點的case2。使java及javac指都優先使用Private JRE。

Eclipse可以很方便使用third -party library,
Project->Properties->Java Build Path->Libraries->Add External JARs
(陶百學長教我的)



User classes便是指我們在classpath設定路徑下的class。
如:若總是使用c:\java\的class,或是需要使用c:\lib\test.jar裡的library,
便可以set classpath =.;c:\java\;c:\lib\test.jar
(.jar檔須將完整路徑名加入classpath, jre才會進入該jar檔裡找尋target class)

user classes尋找的優先序:
(1)若無設定classpath, jre預設找(.)目前目錄是否存在target class.
(2)若有設定classpath, jre只找classpath設定的路徑是否存在target class.
(3)在console mode下使用-cp 或 -classpath, 則jre只找參數後的路徑是否存在target class.
(4)在console mode使用-jar來指定jar檔時, jre只找尋jar中是否存在target class.

2013年11月30日 星期六

如何限制只有某些IP才能使用Tomcat Manager

http://zhumeng8337797.blog.163.com/blog/static/100768914201292215550664/

如何限制只有某些IP才能使用Tomcat Manager  

2012-10-22 13:55:50|  分类: apache_tomcat |字号 订阅
Tomcat 所附的manager application可以讓網站管理者透過存取/manager/html的方式隨時去reload一個webapp,基本的安全性保護是透過conf /tomcat-users.xml的帳號跟密碼認證,如果還要進一步要求安全性的話,可以修改manager.xml,加上使用IP或主機名稱來限制來 源主機,底下是用IP作限制的例子: 
01<ContextdocBase="${catalina.home}/server/webapps/manager"
02         privileged="true"antiResourceLocking="false" antiJARLocking="false">
03  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
04                allow="127.0.0.1,192.168.1.*"/>
05 
06  <!-- Link to the user database we will get roles from -->
07  <ResourceLink name="users" global="UserDatabase"
08                type="org.apache.catalina.UserDatabase"/>
09 
10</Context>


只需要對原來的manager.xml加上 
<Valve className="org.apache.catalina.valves.RemoteAddrValve" 
allow="127.0.0.1,192.168.1.*"/> 
的設定,其中allow是允許的來源IP,如果有兩個以上時用逗號(,)隔開,同一個網段,可用萬用字元星號(*)來表示。 

參考資料: 
The Apache Tomcat 5.5 Servlet/JSP Container - Manager App HOW-TO 
Apache Tomcat Configuration Reference - The Valve Component

Tomcat 7.0的設定方法: 
在manager.xml中加入下列設定到Context 
1<Valve className="org.apache.catalina.valves.RemoteAddrValve"
2                allow="114\.\d+\.\d+\.\d+"/>

如: 
1<Context docBase="${catalina.home}/webapps/manager"
2         privileged="true" antiResourceLocking="false" antiJARLocking="false">
3        <Valve className="org.apache.catalina.valves.RemoteAddrValve"
4                allow="114\.\d+\.\d+\.\d+"/>
5</Context>


參考資料: 
http://tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Remote_Address_Filter