煩惱歲月

          付出總是有回報(bào)的 take action follow your heart , or follow your head
          posts - 40, comments - 5, trackbacks - 0, articles - 4

          2009年8月10日

          自動(dòng)地可視化表示數(shù)據(jù)庫(kù)也可以讓您受益匪淺。實(shí)體關(guān)系圖(ERD)是實(shí)現(xiàn)數(shù)據(jù)庫(kù)可視化的最流行的圖示類型。大多數(shù)創(chuàng)建 ERD 的工具(例如,ERWinfor)都需要手動(dòng)生成 ERD。雖然我將要示范的工具 SchemaSpy 無(wú)法與現(xiàn)存的一些更復(fù)雜的工具媲美,但是它能夠提供數(shù)據(jù)庫(kù)的高級(jí) ERD 視圖 — 以及約束、關(guān)系等。而且,通過(guò)自動(dòng)構(gòu)建來(lái)運(yùn)行它,您就可以輕松地從您的版本控制庫(kù)中檢查數(shù)據(jù)定義語(yǔ)言(Data Definition Language,DDL)的最新顯示。

          Ant 腳本使用 SchemaSpy 工具來(lái)創(chuàng)建 Javadoc 格式的文件:

          結(jié)合使用 SchemaSpy、Ant 和 Javadoc

          <property name="reports.dir" value="${basedir}"/>
          <java jar="schemaSpy_3.1.1.jar"
            output="${reports.dir}/output.log"
            error="${reports.dir}/error.log"
            fork="true">
            <arg line="-t mysql"/>
            <arg line="-host localhost"/>
            <arg line="-port 3306"/>
            <arg line="-db brewery"/>
            <arg line="-u root"/>
            <arg line="-p sa"/>
            <arg line="-cp mysql-connector-java-5.0.5-bin.jar"/>
            <arg line="-o ${reports.dir}"/>
          </java>
          

           

          使用 java Ant 任務(wù)調(diào)用 SchemaSpy,傳遞了很多屬性:

          • -t 為數(shù)據(jù)庫(kù)類型(有效值為 mysql、ora、db2,等等。)
          • -host 為托管數(shù)據(jù)庫(kù)的計(jì)算機(jī)名。
          • -port 為數(shù)據(jù)庫(kù) URL 的端口數(shù)。
          • -u 為數(shù)據(jù)庫(kù)用戶名。
          • -p 為數(shù)據(jù)庫(kù)密碼。
          • -cp 為類路徑(用于指示數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序 JAR 文件的位置)。
          • -o 為輸出目錄的位置。

          這些 SchemaSpy 的命令行屬性用于生成顯示 ERD 的 HTML 文件

          通過(guò)結(jié)合使用多種工具、作為構(gòu)建的一部分針對(duì)數(shù)據(jù)庫(kù)執(zhí)行 ERD 生成腳本,并調(diào)度 ERD 生成,您就可以在開發(fā)過(guò)程中輕松、快速地做出很多數(shù)據(jù)庫(kù)決策。

          另外,對(duì)于喜歡maven的同學(xué),SchemaSpy  也提供了plugin

          http://maven.wakaleo.com/mojo/maven-schemaspy-plugin/faq.html

          posted @ 2010-05-16 16:16 不需要解釋 閱讀(543) | 評(píng)論 (0)編輯 收藏

               參加工作也已經(jīng)5年多了,一直想回頭回想一下自己,然后動(dòng)筆寫下來(lái),一來(lái)是自己目前還可以記憶起一些事情,等自己將來(lái)老了,可以看看這些東西回憶回憶。二來(lái)也是想做一個(gè)總結(jié)。本來(lái)這個(gè)題目也可以叫做我的bmi5年,不過(guò)大家知道bmi的實(shí)在是少,而且現(xiàn)在這個(gè)公司已經(jīng)名義上不存在了。

               我是在2001年去沈陽(yáng)讀書的,一直也是很喜歡沈陽(yáng)的氣候和東北人的豪爽,東北爺們是真正可以拿心和你交朋友的,不過(guò)我實(shí)在不喜歡東北的飲食,覺得不細(xì)膩,另外南方還有我的女人在等我回去,要女人來(lái)東北,難度不是一般的大,所以在找工作的時(shí)候,我就下定決心一定要找南方的公司,最好廣州,深圳的,或者老家南昌的也是可以的。但是南方公司去東北招生的實(shí)在是少,除了華為,中興之外真的是少的可憐,盡管我們學(xué)校在沈陽(yáng)也是數(shù)一數(shù)二的學(xué)校。

               在04年在10月份,我面試的第一家公司是東軟,沒有辦法,誰(shuí)讓我們學(xué)校是東軟的最大股東尼(不知道現(xiàn)在是不是),面試的過(guò)程也還不錯(cuò),考試題也做的很順,東軟還提出我們下學(xué)期直接找一些外教來(lái)教我們?nèi)瘴?,不過(guò)當(dāng)時(shí)東軟給出的薪水實(shí)在是低的可憐,只有1800元,而且還要自己負(fù)責(zé)住宿,自己當(dāng)時(shí)也老大不小了,還有女人在讀書,是不是也是需要買些禮物的,而且沈陽(yáng)和大連都不是我想去的地方,結(jié)果就直接沒有去報(bào)道。

               接下來(lái)的日子也就整天在校內(nèi)的招聘網(wǎng)站(白山黑水)上看帖子,看到了上海bmi的招聘廣告,一看是上海的公司,而且做的是遼寧網(wǎng)通的項(xiàng)目,感覺項(xiàng)目很大,可以學(xué)到不少東西,關(guān)鍵是上海的公司,項(xiàng)目做完了就可以去上海發(fā)展呢,而且當(dāng)時(shí)女朋友也還在讀研究生,仔細(xì)的想想覺得這個(gè)公司還是比較適合自己,于是也開始做準(zhǔn)備,接下來(lái)的事情都很順利,筆試,面試,當(dāng)時(shí)有資格參加面試的,整個(gè)我們學(xué)校也就2個(gè)人,一個(gè)本科生,一個(gè)研究生,不過(guò)最后那個(gè)研究生也沒有過(guò)去。

               在遼寧項(xiàng)目的前期這段時(shí)間,估計(jì)也會(huì)我成長(zhǎng)最快,也是最艱苦的時(shí)間,我后續(xù)的會(huì)詳細(xì)介紹到。我第一天上班就是去做release,也就是做發(fā)布和部署,在當(dāng)時(shí)的項(xiàng)目中,我們并沒有像一些公司還有項(xiàng)目配置員這個(gè)角色,就是直接拉一個(gè)開發(fā)人員來(lái)負(fù)責(zé)做release,這個(gè)角色當(dāng)時(shí)是在項(xiàng)目中最辛苦的一個(gè),經(jīng)常是下午6點(diǎn)開始,然后編譯3-4個(gè)小時(shí),到10點(diǎn)才可以編譯完成(比較順利的情況下),如果遇到編譯不過(guò)去的時(shí)候,還需要聯(lián)系開發(fā)人員進(jìn)行修改,編譯之后在對(duì)照check list進(jìn)行增量部署。

              在第一天上班,我就從上午10點(diǎn)過(guò)去,第2天凌晨3點(diǎn)半才下班,到4點(diǎn)才到學(xué)校宿舍睡覺,后續(xù)的1個(gè)月都是如此,現(xiàn)在回想起來(lái),感覺當(dāng)時(shí)真的是很辛苦,不過(guò)那段時(shí)間也開始熟習(xí)了不少東西,知道了基于模塊開發(fā),對(duì)ant,weblogic,oracle,plsql,linux,aix等的使用也開始非常熟習(xí)了。在這段時(shí)間里也開始熟習(xí)了公司的項(xiàng)目情況,開發(fā)人員,測(cè)試人員。

          posted @ 2010-05-04 00:06 不需要解釋 閱讀(308) | 評(píng)論 (0)編輯 收藏

              最近在看一些項(xiàng)目的代碼,總是發(fā)現(xiàn)很少項(xiàng)目提供出uml圖,或者就是提供uml圖的也有可能并沒有和代碼對(duì)應(yīng)上,如果有正確的uml圖,可以非常方便的為大家更好的理解代碼層次邏輯。其實(shí)我們可以使用使用UMLGraph來(lái)生成uml圖,直接使用java代碼來(lái)生成UMLGraph。對(duì)于大部分項(xiàng)目來(lái)說(shuō),我們一般使用maven和ant(還在使用ant,你out了)來(lái)作為項(xiàng)目的編譯工具。

              在maven中,我們可以在pom.xml增加:

              <reporting>
                  <plugins>
                  <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-javadoc-plugin</artifactId>
                  <version>2.6.1</version>
                  <configuration>
                    <doclet>org.umlgraph.doclet.UmlGraphDoc</doclet>
                    <!-- <docletPath>/path/to/UmlGraph.jar</docletPath> -->
                    <docletArtifact>
                      <groupId>org.umlgraph</groupId>
                      <artifactId>doclet</artifactId>
                      <version>5.1</version>
                    </docletArtifact>
                    <additionalparam>-views</additionalparam>
                    <useStandardDocletOptions>true</useStandardDocletOptions>
                  </configuration>
                  </plugin>
                  </plugins>
              </reporting>

          使用javadoc:aggregate 就可以生成出整個(gè)項(xiàng)目按照package的uml圖了。

          如果是使用ant,在build.xml中增加target

             <target name="genuml">
                  <property name="uml.dir" value="${basedir}/uml"/>
                  <property name="src.uml.dir" value="${src.dir}/uml"/>
                  <mkdir dir="${uml.dir}"/>
                  <path id="uml.source.path">
                     <pathelement path="${src.uml.dir}/"/>
                     <pathelement path="${src.java.dir}"/>
                  </path>
                  <javadoc sourcepathref="uml.source.path" packagenames="*" package="true">
                     <doclet name="org.umlgraph.doclet.UmlGraph" path="${basedir}/lib/UmlGraph.jar">
                         <param name="-d" value="${uml.dir}"/>
                     </doclet>
                  </javadoc>
                  <apply executable="dot" dest="${uml.dir}" parallel="false">
                      <arg value="-Tpng"/>
                      <arg value="-o"/>
                      <targetfile/>
                      <srcfile/>
                      <fileset dir="${uml.dir}" includes="*.dot"/>
                      <mapper type="glob" from="*.dot" to="*.png"/>
                  </apply>
              </target>

          注意:要正常使用 UMLGraph,您必須先安裝 Graphviz 工具,請(qǐng)自己google相關(guān)信息。

          posted @ 2010-04-19 23:59 不需要解釋 閱讀(1890) | 評(píng)論 (0)編輯 收藏

                 盡管工作了5年多了,現(xiàn)在能想起來(lái)的培訓(xùn)真的是少之又少,但是我想以后,我一定不會(huì)這樣說(shuō)了,因?yàn)槲覅⒓恿税僦Я耍?/p>

                 百支對(duì)于我來(lái)說(shuō)是一次清洗,洗掉以前的惡習(xí),洗掉以前的老思維,重新培養(yǎng)我丟掉已久的價(jià)值觀,重新找回往日的激情。來(lái)阿里之后,也一直在想一個(gè)問題,阿里和我以前公司有什么不同?或者說(shuō)有什么特別的之處?其實(shí)這個(gè)問題有很簡(jiǎn)單,就是阿里是一家有夢(mèng)想的公司,一家有價(jià)值觀的公司,一家有親情,友情的公司,一家工作生活一體的公司,從中國(guó)來(lái)看,阿里是唯一一家大的公司,而且價(jià)值體系貫徹的這么好的公司,only one in china。

                百支培訓(xùn)了很多業(yè)務(wù)知識(shí),傳統(tǒng)線,虛擬線,兄弟線,安全線,資金線,…學(xué)到了很多東西。

                百支的培訓(xùn),讓我開始結(jié)識(shí)了新的同學(xué),新的家人,新的伙伴,讓我們happly every day! 認(rèn)真工作,快樂生活!

          posted @ 2010-04-16 21:48 不需要解釋 閱讀(422) | 評(píng)論 (0)編輯 收藏

             隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,很多惡意程序往往按照常規(guī)方法無(wú)法徹底刪除。有沒有什么方法能夠在不安裝任何第三方工具的情況下,刪除它們呢?筆者經(jīng)過(guò)多年實(shí)踐,告訴大家一個(gè)秘密武器--關(guān)閉Explorer進(jìn)程法。

            在服務(wù)器系統(tǒng)出現(xiàn)問題時(shí),例如某個(gè)文件無(wú)法刪除,某個(gè)程序假死或者是系統(tǒng)沒有響應(yīng)都可以按CTRL+SHIFT+ESC,調(diào)出Windows任務(wù)管理器。接下來(lái)找到“進(jìn)程”標(biāo)簽,將“explorer.exe”進(jìn)程關(guān)閉。接下來(lái)整個(gè)桌面就會(huì)消失,只剩下桌布了。然后通過(guò)Windows任務(wù)管理器的“文件”菜單下的“新建任務(wù)(運(yùn)行)”打開“創(chuàng)建新任務(wù)”窗口,通過(guò)“瀏覽”按鈕找到要?jiǎng)h除文件所在目錄,在瀏覽窗口里直接刪除即可。99%都可以將這個(gè)頑固的文件刪除,刪除后繼續(xù)選擇“文件”菜單下的“新建任務(wù)(運(yùn)行)”打開“創(chuàng)建新任務(wù)”窗口,在打開處輸入命令--explorer后回車,我們將返回到正常的桌面界面下。顯然,對(duì)付頑固文件,這個(gè)方法尤為簡(jiǎn)單。

          posted @ 2009-11-10 16:19 不需要解釋 閱讀(237) | 評(píng)論 (0)編輯 收藏

              1、專注于構(gòu)建一個(gè)強(qiáng)有力的團(tuán)隊(duì),這一團(tuán)隊(duì)能夠解決困難的問題,并為客戶創(chuàng)造真正的價(jià)值。
            2、領(lǐng)導(dǎo)者鼓舞;管理者授權(quán)。要同時(shí)成為優(yōu)秀的領(lǐng)導(dǎo)者和管理者,你需要就愿景進(jìn)行溝通并理解其細(xì)節(jié)。
            3、對(duì)可能出現(xiàn)的障礙有所準(zhǔn)備,防微杜漸,在這些障礙尚未壯大時(shí)就清除它們。
            4、花時(shí)間來(lái)仔細(xì)傾聽別人的意見,但不要過(guò)于擔(dān)心其他人的想法。
            5、專注于事實(shí)。
            6、充當(dāng)一個(gè)衰減器,而不是放大器,為團(tuán)隊(duì)提供穩(wěn)定性。
            7、永遠(yuǎn)不要將不能解釋的事情歸咎為蓄意破壞。
            8、培養(yǎng)幽默意識(shí)來(lái)作為嚴(yán)肅認(rèn)真的一種平衡:對(duì)工作一絲不茍,對(duì)自己輕松自如。
            9、除了工作,還應(yīng)該懂得享受生活,而且每年要讀25本書。
            10、相信你的直覺:如果你感覺不妙,那么很可能預(yù)感就會(huì)成真。

          posted @ 2009-11-08 03:10 不需要解釋 閱讀(235) | 評(píng)論 (0)編輯 收藏

          Productize software

          When talking about the productized software, people often think of Microsoft Office and Microsoft XP. Of course the Microsoft product series is very successful. They can provide excellent GUI, and good user experience.

          In China, there is a different picture for software products. Let me take Chinese software development companies for example. Most of the companies in China work on some projects, instead of specific products, When a company starts a new project, they need to invest lots of developers and money into the project. Sometimes, they also need to send a number of technicians to the customer site to do the development. In my opinion, there are two reasons.

          (1) The software is not very satisfactory enough to be a perfect product.

          (2) Chinese customers have lots of special requirements.

          Customer is GOD. We can not change the ideas of customer most of time. So, we need to improve our product. Then how to evaluate a software product's success? Because of various concerns, different users hold different opinions and will arrive at different conclusions.

          As for redevelopment and customization, the following should be more concerned:

          (1) Software scaffolding

          If the product provides scaffolding, the redevelopment people will quickly generate code (from database, UML, etc….). As we know, the Spring, Hibernate also provide some scaffolding.

          (2) Easy installation package

          Most of time, the installation gives the first impression to the customer. So it is very important.

          A simple installation must ensure everyone, even someone not very familiar with the application, can install the software.

          The installation log file also plays significant role. Sometimes, it’s possible for the customer’s environment to have some problem so that the installation runs unsuccessfully. In this situation, the customer can send the log file to the technicians for analysis.

          People who do not know about your product also can install easily according to wizard.

          (3) Lots of Examples

          The examples are the best teacher. Why most of java developer favor apache ant? The reason is that apache ant can provide lots of examples; you can find any task example in apache ant web site.

          Example not only provides assistance to the development but also the product redevelopment If your product provides lost of examples, the questions from customers will be reduced substantially.

          (4) Online documentation

          If the developer can find some on-line document, he will not worry about that the document in his hands is an old version. And of course, the product developer also can work more effectively. For example, if the document has some error, or need to be modified, he can fix it quickly.

          (5) Very good support

          If the customer has some problem when he use or customize, he can get easily the support.

          As for end-users, the following is very important.

          (1) Friendly GUI, operator easily

          (2) Collection client information online active, when some error happen.

          (3) Auto-update to new version.

          For customer, he does not need install some patch.

          (4) In a conspicuous place clearly marked version of the software, and contact method

          As for a kernel developer, he might think we need to provide:

          (1) OSGI framework or plug-in framework to facilitate the expansion

          (2) Standard software delivery process

          (3) Software quality control

          (4) A very good suite of documents.

          posted @ 2009-11-02 11:26 不需要解釋 閱讀(312) | 評(píng)論 (0)編輯 收藏

          Repositories are remote collections of projects from which Maven uses to populate the local repository of the build system. It is from this local repository that Maven calls it plugins and dependencies. Different remote repositories may contain different projects, and under the active profile they may be searched for a matching release or snapshot artifact.

          Example A.8. Repository Configuration in settings.xml

          <settings xmlns="http://maven.apache.org/POM/4.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                                http://maven.apache.org/xsd/settings-1.0.0.xsd">
            ...
            <profiles>
              <profile>
                ...
                <repositories>
                  <repository>
                    <id>codehausSnapshots</id>
                    <name>Codehaus Snapshots</name>
                    <releases>
                      <enabled>false</enabled>
                      <updatePolicy>always</updatePolicy>
                      <checksumPolicy>warn</checksumPolicy>
                    </releases>
                    <snapshots>
                      <enabled>true</enabled>
                      <updatePolicy>never</updatePolicy>
                      <checksumPolicy>fail</checksumPolicy>
                    </snapshots>
                    <url>http://snapshots.maven.codehaus.org/maven2</url>
                    <layout>default</layout>
                  </repository>
                </repositories>
                <pluginRepositories>
                  ...
                </pluginRepositories>
                ...
              </profile>
            </profiles>
            ...
          </settings>
          
          releases, snapshots

          These are the policies for each type of artifact, Release or snapshot. With these two sets, a POM has the power to alter the policies for each type independent of the other within a single repository. For example, one may decide to enable only snapshot downloads, possibly for development purposes.

          enabled

          true or false for whether this repository is enabled for the respective type (releases or snapshots).

          updatePolicy

          This element specifies how often updates should attempt to occur. Maven will compare the local POMs timestamp to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.

          checksumPolicy

          When Maven deploys files to the repository, it also deploys corresponding checksum files. Your options are to ignore, fail, or warn on missing or incorrect checksums.

          layout

          In the above description of repositories, it was mentioned that they all follow a common layout. This is mostly correct. Maven 2 has a default layout for its repositories; however, Maven 1.x had a different layout. Use this element to specify which if it is default or legacy. If you are upgrading from Maven 1 to Maven 2, and you want to use the same repository which was used in your Maven 1 build, list the layout as legacy

          posted @ 2009-11-02 11:25 不需要解釋 閱讀(2014) | 評(píng)論 (0)編輯 收藏

          there are lots tools about the java obfuscate. I know two.

          (1)proguard

          (2)yguard

          the proguard support ant, maven. I use maven as the project and build tools. so I want use the maven proguard plugin, but It is not easy to use. so I use yguard.

          in your pom.xml, you can  add:

              <plugin>
                      <groupId>net.sf.mgp</groupId>
                      <artifactId>maven-unclasses-plugin</artifactId>
                      <version>0.0.2</version>
                  </plugin>
                  <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <dependencies>
              <dependency>
                <groupId>yguard</groupId>
                <artifactId>yguard</artifactId>
                <version>2.3.0</version>
                <scope>system</scope>
                <systemPath>lib/yguard.jar</systemPath>
              </dependency>
            </dependencies>
            <executions>
              <execution>
                <phase>package</phase>
                <configuration>
                  <tasks>
                    <property refid="maven.compile.classpath"
                      name="mvn.classpath"></property>
                    <!-- <echo message="Using Maven Classpath: ${mvn.classpath}" /> -->
                    <taskdef name="yguard"
                      classname="com.yworks.yguard.YGuardTask"/>
                    <yguard>
                      <!-- Input file and output file is the same. -->
                      <inoutpair
                        in="${project.build.directory}/${project.build.finalName}.${project.packaging}"
                        out="${project.build.directory}/${project.build.finalName}.jar"/>
                      <!-- Obfuscate classes plus string references. -->
                      <rename
                        logfile="${project.build.directory}/yguard.log.xml"
                        replaceClassNameStrings="true">
                        <!-- Keep the only class to be used for easy running and its public method main(). -->
                        <keep>
                            <class classes="public" methods="public">
                            <patternset>
                              <include name=”xx.xxx.xxx.util.ConnectionUtil"/>
                            </patternset>
                          </class>
                        </keep>
                      </rename>
                      <!-- There are some external libraries used - Maven knows details. -->
                      <externalclasses>
                        <pathelement path="${mvn.classpath}"/>
                      </externalclasses>
                    </yguard>
                  </tasks>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>


          It is very cool!!!.

          posted @ 2009-10-19 00:50 不需要解釋 閱讀(778) | 評(píng)論 (0)編輯 收藏

          有個(gè)大師說(shuō)過(guò)一句話,有人的地方就有江湖,有江湖的地方就有斗爭(zhēng)。今天在java eys就看到了一場(chǎng)Resourcebundle引起的口角,集體見:

          http://www.javaeye.com/topic/6417?page=1.

          這個(gè)問題在jdk1.6已經(jīng)不存在

          clearCache
          public static final void clearCache()
          Removes all resource bundles from the cache that have been loaded using the caller's class loader.
          Since:
          1.6
          See Also:
          ResourceBundle.Control.getTimeToLive(String,Locale)

          clearCache
          public static final void clearCache(ClassLoader loader)
          Removes all resource bundles from the cache that have been loaded using the given class loader.
          Parameters:
          loader - the class loader
          Throws:
          NullPointerException - if loader is null
          Since:
          1.6
          See Also:
          ResourceBundle.Control.getTimeToLive(String,Locale)

           

          在1.5,1.4怎么辦呢:

             Class klass = ResourceBundle.getBundle("your.Bundle").getClass().getSuperclass();
             Field field = klass.getDeclaredField("cacheList");
             field.setAccessible(true);
             sun.misc.SoftCache cache = (sun.misc.SoftCache)field.get(null);
             cache.clear();
             field.setAccessible(false);

          這樣就可以清楚cache.

          posted @ 2009-10-17 17:23 不需要解釋 閱讀(353) | 評(píng)論 (0)編輯 收藏

          Build in properties
          • ${basedir} represents the directory containing pom.xml
          • ${version} equivalent to ${project.version} or ${pom.version}
          Pom/Project properties

          All elements in the pom.xml, can be referenced with the project. prefix or using pom. as prefix. This list is just an example of some commonly used elements.

          • ${project.build.directory} results in the path to your "target" dir, this is the same as ${pom.project.build.directory}
          • ${project.build.outputDirectory} results in the path to your "target/classes" dir
          • ${project.name} or ${pom.name} refers to the name of the project.
          • ${project.version} or ${pom.version} refers to the version of the project.
          • ${project.build.finalName} refers to the final name of the file created when the built project is packaged
          Local user settings

          Similarly, values in the user's settings.xml can be referenced using property names with settings. prefix.

          • ${settings.localRepository} refers to the path of the user's local repository.
          • ${maven.repo.local} also works for backward compatibility with maven1 ??
          Environment variables

          Environment variables can be referenced using the env prefix

          • ${env.M2_HOME} returns the Maven2 installation path.
          • ${java.home} specifies the path to the current JRE_HOME environment use with relative paths to get for example:
            <jvm>${java.home}../bin/java.exe</jvm>
            Java system properties

          All Java System Properties defined by the JVM.

          Custom properties in the POM

          User defined properties in the pom.xml.

          <project>
          ...
            <properties>
               <my.filter.value>hello</my.filter.value>
            </properties>
          ...
          </project>
          
          • ${my.filter.value} will result in hello if you inserted the above XML fragment in your pom.xml
          Parent Project variables

          How can parent project variables be accessed?

          You can use the prefix: ${parent.project}.

          For example, use ${parent.project.version} to retrieve parent version.

          A good way to determine possible variables is to have a look directly at the API. The above example was not working for me, maybe it was working that way with older releases of maven. I'm currently using Maven 2.2.1, and to access the Parent you can use ${project.parent}. This will return an org.apache.maven.project.MavenProject instance.

          Reflection Properties

          The pattern ${someX.someY.someZ} can simply sometimes mean getSomeX().getSomeY().getSomeZ(). Thus, properties such as ${project.build.directory} is translated to getProject().getBuild().getDirectory().

          posted @ 2009-10-11 23:01 不需要解釋 閱讀(1432) | 評(píng)論 (0)編輯 收藏

          今天是偉大的甘地的生日,剛好在印度出差也就享受了一天假期,不過(guò)如果我在國(guó)內(nèi)的話今天也是不上班了,因?yàn)榻裉焓莻ゴ笞鎳?guó)生日的第2天。

          今天繼續(xù)在搞weblogic和jetty的調(diào)試,發(fā)現(xiàn)一個(gè)問題,weblogic會(huì)對(duì)response中的內(nèi)容trim,jetty不會(huì)。估計(jì)是ebos中有一段代碼在response的out里面寫了一些空白進(jìn)去,導(dǎo)致這個(gè)內(nèi)容到client端的時(shí)候就會(huì)解析不對(duì)。obj.responseXML會(huì)是空。

          另外,F(xiàn)iddler是監(jiān)控網(wǎng)絡(luò)連接的,一般的話它會(huì)監(jiān)控有線的那個(gè),我在酒店是使用無(wú)線上網(wǎng),所以一開始找不到原因還以為是fiddler不支持無(wú)線方式的監(jiān)控,查看了一下配置才發(fā)現(xiàn)問題。

          最后實(shí)在沒有辦法直接寫死,好在我做的只是一個(gè)開發(fā)輔助工具,不需要考慮性能影響:

          var xmlData = obj.responseText.trim();
          //alert(xmlData);
          obj.responseXML.loadXML(xmlData);

          明天繼續(xù)完善程序,爭(zhēng)取在這個(gè)假期完成之前能完成大體,后續(xù)文檔補(bǔ)充。也算是功德一件了。

          posted @ 2009-10-03 03:31 不需要解釋 閱讀(259) | 評(píng)論 (0)編輯 收藏

               出國(guó)有很多好處也有很多壞處,這里就說(shuō)一處好處,就是可以為自己的歷史課好好的補(bǔ)一補(bǔ)了。歷史以成敗論英雄,當(dāng)權(quán)者一般都會(huì)去篡改歷史的,不過(guò)在長(zhǎng)久看來(lái),大家都不過(guò)是歷史的一粒沙塵,是無(wú)法改變歷史的,人只能創(chuàng)造歷史,無(wú)法修改歷史。在中國(guó)內(nèi)地的當(dāng)代史就是一部篡改的歷史,所以這次出國(guó)就好好的補(bǔ)了補(bǔ),在國(guó)外很多網(wǎng)站都可以訪問,使用google可以查任何你想要查的東西,不會(huì)過(guò)濾掉一些關(guān)鍵的信息。

                下面我就來(lái)說(shuō)說(shuō)我對(duì)近代一些人物的再認(rèn)識(shí)吧:

               先說(shuō)蔣先生,其實(shí)這個(gè)人的功勞應(yīng)該是很大的,我個(gè)人覺得比先祖的功勞要大,畢竟統(tǒng)一了中國(guó),而且在臺(tái)灣也實(shí)現(xiàn)了一定程度的民主。尤其的是在8年抗戰(zhàn)的歷史上更是不能抹去的功績(jī),歷史應(yīng)該給蔣先生一個(gè)公道。

               張學(xué)良,這個(gè)人的愛國(guó)程度超出我原來(lái)的影響,以前的歷史書上也是說(shuō)張學(xué)良是千古功臣,但是說(shuō)的很含糊,尤其是在D的豐功偉績(jī)下顯得不是偉大,張學(xué)良這個(gè)人不僅僅是愛國(guó),而且這個(gè)人的心胸非常的大,他讓蔣先生關(guān)了后半輩子,看采訪他的是很,他也只是一笑而過(guò),當(dāng)然這個(gè)或者是他后來(lái)是基督教有關(guān)。

               蔣夫人,不愧是中國(guó)的第一夫人,如果有人問我中國(guó)的第一夫人是誰(shuí)?很茫然,是胡夫人嗎?她做了一些啥?看看人家蔣夫人在抗戰(zhàn)時(shí)候做的事情,抗戰(zhàn)后方支援,美國(guó)國(guó)會(huì)演講,國(guó)際場(chǎng)合的外交,真的不愧是第一夫人,不過(guò)對(duì)這個(gè),我了當(dāng)代歷史說(shuō)的就更加的少了。

              毛太祖,看他在建國(guó)后的人大會(huì)議上,儼然就是一個(gè)皇帝,雖然他本人非常的親民,而且一直也是愛民如子,不過(guò)他錯(cuò)過(guò)了歷史給他的機(jī)會(huì),如果他能學(xué)一下華盛頓,為中國(guó)留下一個(gè)比較完善的制度,我看今天的中國(guó)應(yīng)該會(huì)更加富強(qiáng)了。非??上?,強(qiáng)人政治的時(shí)候沒有推進(jìn)民主,在后強(qiáng)人政治就只是剩下了利益斗爭(zhēng)了。

              周公,周公年輕的時(shí)候非常有才華,非常懂得協(xié)調(diào)各方的關(guān)系,不過(guò)可能是太陶醉在協(xié)調(diào)者的角色上面,導(dǎo)致后期嚴(yán)重的邊緣化,他參加革命不必太祖晚,而且有很長(zhǎng)一段時(shí)間地位還比毛祖高。后來(lái)的邊緣化導(dǎo)致不得不為了自保,手舉紅皮書,高喊毛主席萬(wàn)歲來(lái)自保,甚至自己的養(yǎng)女,自己的第一任女朋友都眼睜睜的看著他們迫害致死,其下場(chǎng)可想而知。

              今天看一段網(wǎng)上錄像,說(shuō)小平同志還跟過(guò)馮玉祥。歷史課本上貌似沒有這個(gè)。

          posted @ 2009-09-27 02:08 不需要解釋 閱讀(565) | 評(píng)論 (0)編輯 收藏

               大概在4年前,我還在沈陽(yáng)做遼寧網(wǎng)通的boss項(xiàng)目,那個(gè)時(shí)候系統(tǒng)剛剛上線,問題成堆,尤其是一些單子由于程序或者是數(shù)據(jù)問題,出現(xiàn)異常,出現(xiàn)異常就必須去更正數(shù)據(jù),讓單子繼續(xù)走下去。那個(gè)時(shí)候公司有個(gè)強(qiáng)人,使用Python來(lái)做這個(gè)事情,說(shuō)白了也是比較簡(jiǎn)單,就是使用Python調(diào)用server端得ejb,修改數(shù)據(jù)然后提交到server上去。不過(guò)在那個(gè)時(shí)候懂一門動(dòng)態(tài)語(yǔ)言在我看來(lái)非常的不簡(jiǎn)單。

                goon,最近閑的無(wú)事,把同事的一個(gè)程序拿過(guò)來(lái)修改了一下,大概也是實(shí)現(xiàn)了這樣的一個(gè)邏輯,不過(guò)沒有使用Python,or Jython,使用的是java 程序員都很熟悉的Beanshell 語(yǔ)言來(lái)寫,并添加上了SWT,作為ui。這樣對(duì)公司大部分人就沒有什么難度了,直接可以寫java代碼,而且沒有Jython那樣格式的嚴(yán)格要求(很煩人)。

              先上一下圖:

          image

          結(jié)果后臺(tái)配置,就可以直接修改,查看server上的數(shù)據(jù),如果有問題的單子還可以通過(guò)這個(gè)來(lái)修改,非常cool。

          怎么做到這點(diǎn)呢:

          (1)通過(guò)java調(diào)用beanshell的方法,init 一個(gè)init.bsh, 在這個(gè)bsh里面寫上你自己的邏輯,比如lookup ejb,寫好一些方法,這樣使用者就直接可以調(diào)用了。

          (2)把一些服務(wù)器的配置寫到配置文件里面去。

          如果修擴(kuò)展,也很簡(jiǎn)單,直接修改一下配置文件,添加一些jar 并在init.bsh里面添加自己的邏輯就可以了。

          posted @ 2009-09-23 23:42 不需要解釋 閱讀(374) | 評(píng)論 (0)編輯 收藏

              昨天晚上就抵達(dá)了india的hyderabad,一個(gè)發(fā)展中的城市,在這個(gè)城市你可以看到90年代在珠三角的樣子,所以至少來(lái)講,india還是落后中國(guó)20年,當(dāng)然我們中國(guó)也是和諧的比較厲害,這個(gè)我們還是需要承認(rèn)的。

             到酒店一看,才知道原來(lái)這樣的地方也敢叫hotel,真是人有多大膽地就有多大產(chǎn)!不服不行啊。從公路上來(lái)看india的話,小車和bus比較多,當(dāng)然更多的是那個(gè)三輪摩托他們叫auto,想多的多,而且有一些還是2個(gè)人開,非常好奇的是難道一個(gè)車還要2個(gè)人合伙?更奇怪的是india的bus的門貌似都不關(guān),不管是school bus還是company bus,都一樣不關(guān)門,開的飛快。也不知道他們的車做門做啥??上У氖?,這次出來(lái)沒有帶照相機(jī),要不照照給大家看看。

             吉隆坡還是一個(gè)非常漂亮的city,如果坐飛機(jī)去這個(gè)城市的話,晚上到,飛機(jī)回經(jīng)過(guò)kul的上空,你可以看這個(gè)city的全景,可以看雙子塔,當(dāng)然和上海市沒有的比。

             早上睡不著覺,就很早起來(lái)了,通過(guò)老板娘專線和老板娘通了電話叫車,就下樓等車去了,經(jīng)過(guò)一下樓就發(fā)現(xiàn)一個(gè)出租車往外面跑,叫也叫不住。(這個(gè)hotel沒有前臺(tái),我也搞不清楚老板娘在那個(gè)地方,只能通過(guò)電話call she)。沒有辦法就在外面等,經(jīng)過(guò)等了1 hours才等到一個(gè)車,可憐吧,呵呵。在等的過(guò)程中我就在研究india的馬路上的車,大部分小車都比較低端,貌似那款鈴木(仿mini的)那款在這個(gè)城市還比較多。高端車就沒有看到,唯一比較高端的是在那個(gè)hotel一樓停車場(chǎng)的豐田的私欲。 說(shuō)起hotel的一樓,india人的思維也比較奇詭,我們那邊的1樓都用來(lái)做商品(靠近馬路),這邊直接就做車庫(kù),估計(jì)是不愿意搞地下車庫(kù)。

              office還是不錯(cuò),非常的大,而且有tea room,非常的不錯(cuò)。中午去了一趟office的食堂,中午食堂:2個(gè)咖喱搞的湯(a little),一個(gè)雞蛋,還有一些油炸食品。吃不下,同事介紹說(shuō)附近有一個(gè)shanghai chef,打個(gè)auto跑過(guò)去(taxi就打不到)才發(fā)現(xiàn),全是假冒的,一點(diǎn)也不是Chinese food。

              出差india,苦??!

          posted @ 2009-08-31 20:11 不需要解釋 閱讀(245) | 評(píng)論 (0)編輯 收藏

                真沒想到,戶籍制度和計(jì)劃生育制度協(xié)同發(fā)力,已經(jīng)到如此荒謬的地步了!超過(guò)了所有的政治諷刺劇和黑色幽默劇。某些公民在自己的國(guó)家,已經(jīng)無(wú)法結(jié)婚了?。ㄒ?009年8月6日南方周末)他們的子女,則無(wú)權(quán)在自己上學(xué)的地方參加高考,必須得返回一個(gè)可能從來(lái)沒有去過(guò)的地方參加考試。

            聽上去這些人怎么都不像是公民,而更像是俄國(guó)農(nóng)奴或者美國(guó)黑奴。

            外地大學(xué)生,在北京畢業(yè)以后,被單位錄用,如果不能得到正式的戶口,可以得到一個(gè)集體戶口。這已經(jīng)被認(rèn)為是幸運(yùn)的了。沒想到,集體戶口在結(jié)婚時(shí)遇到麻煩。如果結(jié)婚,就要把戶口遷出去,變成家庭戶口,遷出去就要買房。現(xiàn)在上百萬(wàn)的房?jī)r(jià),當(dāng)然不是人人都買得起,剛畢業(yè)沒幾年的學(xué)生,更是難以負(fù)擔(dān)。沒有自己的住房,就沒有正式的戶口卡,沒有戶口卡,民政局就不給你發(fā)結(jié)婚證。

            那么,就在集體戶口那里登記結(jié)婚不行嗎?不行,如果在那里結(jié)婚,集體戶口的管理者就要確保你不超生,不多生孩子。萬(wàn)一不能確保,一票否決,人家的前程就完了。那么,放棄集體戶口,回到老家呢?也不行,別以為農(nóng)業(yè)戶口就那么容易得到。戶籍制度的限制是雙向的。小城鎮(zhèn)也一樣,許出不許進(jìn)。

            即使你想辦法結(jié)了婚,你生下來(lái)的孩子也相當(dāng)于印度的低級(jí)種姓。雖然不是不可接觸者,但時(shí)候一到,就讓你嘗嘗厲害。你的孩子在北京學(xué)校里高高興興地上學(xué),和其他孩子沒什么區(qū)別。天天在力爭(zhēng)上游,或許成績(jī)還很優(yōu)秀。但到了高考的時(shí)候,就傻了。你的孩子必須回到你原來(lái)的戶口所在地去參加考試。課程不一樣,活該!環(huán)境不適應(yīng),活該!那里早已沒有親人,沒人照顧孩子,活該!

            最讓人憋悶的是,并不是哪個(gè)具體的人在和你過(guò)不去,你想發(fā)泄都不知道去找誰(shuí)。大家都是善良人,都為了這個(gè)國(guó)家好,都沒想坑你,但你就是被玩兒了。玩兒得你一點(diǎn)轍都沒有。

            為什么要有這么多糟糕的規(guī)定?一個(gè)政府為什么要這么處心積慮地難為自己的公民?原因就在于,總是有人,包括那些被玩兒的很慘的人,都相信,如果沒有限制,人們就會(huì)蜂擁進(jìn)入北京這樣的大城市,那么,北京戶籍人口就會(huì)遭到不公平,就會(huì)面對(duì)更激烈的競(jìng)爭(zhēng),就有可能敗下陣來(lái)。必須保護(hù)他們,必須保護(hù)北京戶籍人口。

            呸!

            首先聲明,我就是北京戶籍人口的一員。這樣聲明,是免得那些臟心爛肺、理解力低下的人以為我僅僅是在泄私憤。前兩年我寫文章大罵難為小產(chǎn)權(quán)房的人,許多人就認(rèn)為,我是因?yàn)橘I了小產(chǎn)權(quán)房才這么憤怒,但我其實(shí)沒買。我還沒那種領(lǐng)先的經(jīng)濟(jì)意識(shí)。

            不過(guò),我這樣說(shuō)當(dāng)然也和我的私利有關(guān)。我的實(shí)際收入和經(jīng)濟(jì)利益,當(dāng)然受到身邊人水平、干勁和創(chuàng)造力的直接影響。我不想生活在一個(gè)如此荒唐、狹隘的社會(huì)里。我想有機(jī)會(huì)和盡可能大范圍的優(yōu)秀人士共同居住在一個(gè)城市中,而不想身邊的人都是那些不思進(jìn)取、離開政府保護(hù)就不能生存的家伙。

            重要的是,這個(gè)世界上,沒有任何正當(dāng)?shù)姆?、道德、倫理、傳統(tǒng)規(guī)定:一個(gè)人偶然出生在哪里,他就有權(quán)利、有資格一直在那里生活。如果他負(fù)擔(dān)不起生活費(fèi)用,政府就必須禁止別人和他競(jìng)爭(zhēng),或者從別人那里搶來(lái)錢給他,保證他能在出生地繼續(xù)生活。這種規(guī)定太荒唐可笑了。人是人,不是保護(hù)區(qū)的動(dòng)物。

            如果你出生在北京,如果你是北京戶籍人口之一,那僅僅證明你偶然出生在這里,或者政府曾經(jīng)批準(zhǔn)你居住在這里,僅此而已。如果你自己無(wú)能或者不努力,無(wú)法競(jìng)爭(zhēng)過(guò)那些并非出生在這里的人,那你只好卷鋪蓋走人,別再繼續(xù)在北京生活了。你可以去那些你可以負(fù)擔(dān)起生活費(fèi)的地方生活。

            很多人來(lái)到北京打拼,要在北京買房。房?jī)r(jià)于是上漲。你買不起了。那你只好租房。如果租也租不起,你倒說(shuō)說(shuō)看,除了離開北京之外,還有什么辦法?

            大家一起參加高考,你的分?jǐn)?shù)不如人家,人家就更應(yīng)該上大學(xué)。難道僅僅因?yàn)槟愠錾谶@里,這里的大學(xué)就應(yīng)該優(yōu)先對(duì)你開放嗎?你以為自己是婆羅門或者剎帝利嗎?

            北京不是你的城市。屬于你的,僅僅是你花錢購(gòu)買、或者別人送給你的房子。除此之外的城市的廣大范圍,在權(quán)利的意義上和你無(wú)關(guān)。你不要?jiǎng)硬粍?dòng)就以城市的主人自居,那是無(wú)恥的僭越。

            在精神上,你可以認(rèn)為自己是城市的主人,但這種精神上的主人,僅僅表現(xiàn)為你應(yīng)該用自己的努力發(fā)揚(yáng)光大這個(gè)城市的精神和原則。城市為所有人提供一個(gè)和他人自由合作的場(chǎng)所。城市的精神和原則天生就是自由。人們?cè)诔鞘兄校梢愿笙薅鹊鼗ハ嗉ぐl(fā),創(chuàng)造力有更大發(fā)揮的空間。在這種精神中,絲毫也找不到自閉、限制、停滯、寄生之類的概念

            而且,作為北京戶籍人口之一,我從來(lái)沒有委托過(guò)任何官員,請(qǐng)他們幫助我排除外來(lái)競(jìng)爭(zhēng),禁止其他人在這個(gè)城市里比我表現(xiàn)得更加優(yōu)秀。我也不認(rèn)為,任何人有權(quán)利這樣去做,不管他出生在哪里。

            我認(rèn)為,相關(guān)官員這樣想,這樣做,是對(duì)包括我在內(nèi)的北京戶籍人口的侮辱,是在把我們看作毫無(wú)競(jìng)爭(zhēng)力的廢物,是對(duì)我們?nèi)烁窈妥饑?yán)的蔑視。我不需要他們的這種保護(hù),我自信可以參與競(jìng)爭(zhēng)并在這個(gè)城市中爭(zhēng)取到自己的位置。如果成功,我將享受自己的努力結(jié)果,如果不成功,我也不需要?jiǎng)e人替我負(fù)責(zé)。我不是他們的奴隸,他們也不是我的主子。

            實(shí)際上,北京戶籍人口這個(gè)詞,引起我極大的嫌惡。如果說(shuō),集體戶口讓我聯(lián)想到農(nóng)奴,戶籍人口則讓我聯(lián)想到圈養(yǎng)牲口。實(shí)際上,飼養(yǎng)者是在以貌似慈祥,實(shí)則傲慢的態(tài)度看待這些被飼養(yǎng)者??稍鞯氖?,許多被飼養(yǎng)者還因此萌生出優(yōu)越感,自以為高人一等。真是TMD天生的奴才!

            當(dāng)然,除了奴才以外,更多的人是糊涂。他們多年受到片面性的宣傳。不知不覺中,他們已經(jīng)習(xí)慣從被飼養(yǎng)者的角度看世界,把所有其他人都看作和他搶食的被飼養(yǎng)者。他們已經(jīng)不能想象還有無(wú)需飼養(yǎng)、可以自己創(chuàng)造世界的大寫的人的存在。他們真心恐懼城市的開放,恐懼自由競(jìng)爭(zhēng),恐懼失去政府的保護(hù)。眾多被飼養(yǎng)者的存在,是貌似慈祥、實(shí)則傲慢的官員的堅(jiān)定靠山。就是憑借著這巨大的靠山,官員們才弄出讓公民甚至無(wú)法結(jié)婚的黑色鬧劇。

            我個(gè)人當(dāng)然無(wú)力改變這種鬧劇,但我樂于看到所有想在北京憑借誠(chéng)實(shí)勞動(dòng)謀生存、謀發(fā)展的人積極地主張自己的權(quán)利。我建議他們的主張要和平和非暴力,要持之以恒和堅(jiān)持到底。歷史上無(wú)數(shù)的成功先例可以供他們借鑒。權(quán)利的獲得從來(lái)都不是輕松的,但許多時(shí)候,權(quán)利是最后的贏家。

          posted @ 2009-08-10 12:17 不需要解釋 閱讀(186) | 評(píng)論 (0)編輯 收藏

          我實(shí)話告訴你們,我可是身經(jīng)百戰(zhàn)了.bbs我見的多了,哪個(gè)版我沒灌過(guò)?你們要知道, 一塌糊 涂的triangle,PIC,SEX版,那比你們不知道厲害到哪里去了,我在那談笑風(fēng)聲.你 們有一好就是無(wú)論在哪個(gè)版,什么話題都灌,但是灌來(lái)灌去的問題,都too simple, sometimes naive!你 們懂不懂呀?啊?所以說(shuō)灌水啊,關(guān)鍵是要提高自己的知識(shí)水平.你 們啊,不要總想著弄個(gè)大坑,然后灌上十大,再把我羞辱一番……你們啊,naive!你們這 樣灌是不行地!~那你問我支持 不支持灌水,我說(shuō)支持,我常來(lái)這裡灌,你說(shuō)支持不支持?
          主站蜘蛛池模板: 吉木萨尔县| 嵊州市| 昌江| 桂阳县| 龙南县| 科技| 宜昌市| 玛纳斯县| 兰考县| 北海市| 永昌县| 密山市| 绿春县| 石阡县| 乌恰县| 东乡| 九龙城区| 克山县| 怀来县| 延吉市| 张家川| 甘孜县| 平远县| 高邮市| 武川县| 奉节县| 莲花县| 奇台县| 霞浦县| 民勤县| 兰西县| 奉节县| 天祝| 清水河县| 陵川县| 穆棱市| 乐业县| 县级市| 新竹县| 沧源| 长子县|