煩惱歲月

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

          2009年5月5日

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

          Ant 腳本使用 SchemaSpy 工具來創(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ù)庫類型(有效值為 mysqloradb2,等等。)
          • -host 為托管數(shù)據(jù)庫的計算機名。
          • -port 為數(shù)據(jù)庫 URL 的端口數(shù)。
          • -u 為數(shù)據(jù)庫用戶名。
          • -p 為數(shù)據(jù)庫密碼。
          • -cp 為類路徑(用于指示數(shù)據(jù)庫驅(qū)動程序 JAR 文件的位置)。
          • -o 為輸出目錄的位置。

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

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

          另外,對于喜歡maven的同學,SchemaSpy  也提供了plugin

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

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

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

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

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

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

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

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

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

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

              在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 就可以生成出整個項目按照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 工具,請自己google相關(guān)信息。

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

                 盡管工作了5年多了,現(xiàn)在能想起來的培訓真的是少之又少,但是我想以后,我一定不會這樣說了,因為我參加了百支了!

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

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

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

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

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

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

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

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

          posted @ 2009-11-08 03:10 不需要解釋 閱讀(232) | 評論 (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 不需要解釋 閱讀(309) | 評論 (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 不需要解釋 閱讀(2007) | 評論 (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 不需要解釋 閱讀(775) | 評論 (0)編輯 收藏

          有個大師說過一句話,有人的地方就有江湖,有江湖的地方就有斗爭。今天在java eys就看到了一場Resourcebundle引起的口角,集體見:

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

          這個問題在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 不需要解釋 閱讀(347) | 評論 (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 不需要解釋 閱讀(1430) | 評論 (0)編輯 收藏

          今天是偉大的甘地的生日,剛好在印度出差也就享受了一天假期,不過如果我在國內(nèi)的話今天也是不上班了,因為今天是偉大祖國生日的第2天。

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

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

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

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

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

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

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

                下面我就來說說我對近代一些人物的再認識吧:

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

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

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

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

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

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

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

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

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

              先上一下圖:

          image

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

          怎么做到這點呢:

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

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

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

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

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

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

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

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

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

              出差india,苦啊!

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

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

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

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

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

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

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

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

            呸!

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

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

            重要的是,這個世界上,沒有任何正當?shù)姆伞⒌赖隆惱怼鹘y(tǒng)規(guī)定:一個人偶然出生在哪里,他就有權(quán)利、有資格一直在那里生活。如果他負擔不起生活費用,政府就必須禁止別人和他競爭,或者從別人那里搶來錢給他,保證他能在出生地繼續(xù)生活。這種規(guī)定太荒唐可笑了。人是人,不是保護區(qū)的動物。

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

            很多人來到北京打拼,要在北京買房。房價于是上漲。你買不起了。那你只好租房。如果租也租不起,你倒說說看,除了離開北京之外,還有什么辦法?

            大家一起參加高考,你的分數(shù)不如人家,人家就更應(yīng)該上大學。難道僅僅因為你出生在這里,這里的大學就應(yīng)該優(yōu)先對你開放嗎?你以為自己是婆羅門或者剎帝利嗎?

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

            在精神上,你可以認為自己是城市的主人,但這種精神上的主人,僅僅表現(xiàn)為你應(yīng)該用自己的努力發(fā)揚光大這個城市的精神和原則。城市為所有人提供一個和他人自由合作的場所。城市的精神和原則天生就是自由。人們在城市中,可以更大限度地互相激發(fā),創(chuàng)造力有更大發(fā)揮的空間。在這種精神中,絲毫也找不到自閉、限制、停滯、寄生之類的概念

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

            我認為,相關(guān)官員這樣想,這樣做,是對包括我在內(nèi)的北京戶籍人口的侮辱,是在把我們看作毫無競爭力的廢物,是對我們?nèi)烁窈妥饑赖拿镆暋N也恍枰麄兊倪@種保護,我自信可以參與競爭并在這個城市中爭取到自己的位置。如果成功,我將享受自己的努力結(jié)果,如果不成功,我也不需要別人替我負責。我不是他們的奴隸,他們也不是我的主子。

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

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

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

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

          in windows, we can install weblogic as windows service.

          (1)edit bea.home/wlserver_10.3/server/bin/installSvc.cmd

          add :

          rem 設(shè)置域的名字,這里是base_domain
          set DOMAIN_NAME=wsc52
          rem 服務(wù)名
          set SERVER_NAME=AdminServer
          rem 設(shè)置用戶domain的home
          set USERDOMAIN_HOME=D:\bea10\user_projects\domains\wsc52
          rem 設(shè)置口令
          set WLS_pw=weblogic
          set JAVA_HOME=D:\bea10\jdk160_05

          add in the final line, add

          -log:"%USERDOMAIN_HOME%\stdout.log"

          so , weblogic will print all wls log to this file.

           

          (2)start this server, this server name is “beasvc wsc52_AdminServer”

          you can start and stop this service with this command.

          net start “beasvc wsc52_AdminServer” and net stop “beasvc wsc52_AdminServer”.

           

          if you want do delete this service,use this:SC delete “beasvc wsc52_AdminServer”

          posted @ 2009-07-18 08:32 不需要解釋 閱讀(408) | 評論 (0)編輯 收藏

           
          真正的驢爸關(guān)鍵詞列表流出,直接破解自安裝目錄.dat文件,讓你感受毛骨悚然的監(jiān)控
          
          歡迎不署名不寫出處轉(zhuǎn)載。
          
          首先分析驢爸的二進制文件。injlib32.exe, 偏移量 89e8H
          
          000089e0h: F8 89 00 10 E8 89 00 10 65 64 69 74 70 6C 75 73 ; 鴫..鑹..editplus
          000089f0h: 2E 65 78 65 00 00 00 00 75 65 64 69 74 33 32 2E ; .exe....uedit32.
          00008a00h: 65 78 65 00 65 6D 65 64 69 74 6F 72 2E 65 78 65 ; exe.emeditor.exe
          00008a10h: 00 00 00 00 77 6F 72 64 70 61 64 2E 65 78 65 00 ; ....wordpad.exe.
          00008a20h: 6E 6F 74 65 70 61 64 2E 65 78 65 00 77 70 73 2E ; notepad.exe.wps.
          00008a30h: 65 78 65 00 77 70 70 2E 65 78 65 00 65 74 2E 65 ; exe.wpp.exe.et.e
          00008a40h: 78 65 00 00 70 6F 77 65 72 70 6E 74 2E 65 78 65 ; xe..powerpnt.exe
          00008a50h: 00 00 00 00 66 72 6F 6E 74 70 67 2E 65 78 65 00 ; ....frontpg.exe.
          00008a60h: 65 78 63 65 6C 2E 65 78 65 00 00 00 6D 73 61 63 ; excel.exe...msac
          00008a70h: 63 65 73 73 2E 65 78 65 00 00 00 00 6F 75 74 6C ; cess.exe....outl
          00008a80h: 6F 6F 6B 2E 65 78 65 00 77 69 6E 77 6F 72 64 2E ; ook.exe.winword.
          00008a90h: 65 78 65 00 6D 61 69 6C 6D 61 67 69 63 2E 65 78 ; exe.mailmagic.ex
          00008aa0h: 65 00 00 00 70 6F 70 6F 2E 65 78 65 00 00 00 00 ; e...popo.exe....
          00008ab0h: 71 71 6D 61 69 6C 2E 65 78 65 00 00 61 69 78 6D ; qqmail.exe..aixm
          00008ac0h: 61 69 6C 2E 65 78 65 00 69 6D 61 70 70 2E 65 78 ; ail.exe.imapp.ex
          00008ad0h: 65 00 00 00 69 6E 63 6D 61 69 6C 2E 65 78 65 00 ; e...incmail.exe.
          00008ae0h: 6D 73 69 6D 6E 2E 65 78 65 00 00 00 64 6D 32 30 ; msimn.exe...dm20
          00008af0h: 30 35 2E 65 78 65 00 00 66 6F 78 6D 61 69 6C 2E ; 05.exe..foxmail.
          00008b00h: 65 78 65 00 67 6F 6F 67 6C 65 74 61 6C 6B 2E 65 ; exe.googletalk.e
          00008b10h: 78 65 00 00 6D 69 72 61 6E 64 61 33 32 2E 65 78 ; xe..miranda32.ex
          00008b20h: 65 00 00 00 69 6D 75 2E 65 78 65 00 79 70 61 67 ; e...imu.exe.ypag
          00008b30h: 65 72 2E 65 78 65 00 00 74 6D 73 68 65 6C 6C 2E ; er.exe..tmshell.
          00008b40h: 65 78 65 00 73 74 61 72 74 2E 65 78 65 00 00 00 ; exe.start.exe...
          00008b50h: 75 63 2E 65 78 65 00 00 69 63 71 63 68 61 74 72 ; uc.exe..icqchatr
          00008b60h: 6F 62 6F 74 2E 65 78 65 00 00 00 00 71 71 2E 65 ; obot.exe....qq.e
          00008b70h: 78 65 00 00 6D 73 6E 6D 73 67 72 2E 65 78 65 00 ; xe..msnmsgr.exe.
          00008b80h: 67 73 66 62 77 73 72 2E 65 78 65 00 67 72 65 65 ; gsfbwsr.exe.gree
          00008b90h: 6E 62 72 6F 77 73 65 72 2E 65 78 65 00 00 00 00 ; nbrowser.exe....
          00008ba0h: 74 6F 75 63 68 6E 65 74 2E 65 78 65 00 00 00 00 ; touchnet.exe....
          00008bb0h: 74 68 65 77 6F 72 6C 64 2E 65 78 65 00 00 00 00 ; theworld.exe....
          00008bc0h: 6D 61 78 74 68 6F 6E 2E 65 78 65 00 74 74 72 61 ; maxthon.exe.ttra
          00008bd0h: 76 65 6C 65 72 2E 65 78 65 00 00 00 6E 65 74 73 ; veler.exe...nets
          00008be0h: 63 70 2E 65 78 65 00 00 67 65 2E 65 78 65 00 00 ; cp.exe..ge.exe..
          00008bf0h: 66 69 72 65 66 6F 78 2E 65 78 65 00 6F 70 65 72 ; firefox.exe.oper
          00008c00h: 61 2E 65 78 65 00 00 00 6E 65 74 63 61 70 74 6F ; a.exe...netcapto
          00008c10h: 72 2E 65 78 65 00 00 00 6D 79 69 65 2E 65 78 65 ; r.exe...myie.exe
          00008c20h: 00 00 00 00 69 65 78 70 6C 6F 72 65 2E 65 78 65 ; ....iexplore.exe
          00008c30h: 00 00 00 00 6D 6D 63 2E 65 78 65 00 72 65 67 65 ; ....mmc.exe.rege
          00008c40h: 64 69 74 2E 65 78 65 00 74 61 73 6B 6D 67 72 2E ; dit.exe.taskmgr.
          00008c50h: 65 78 65 00 6D 70 73 76 63 63 2E 65 78 65 00 00 ; exe.mpsvcc.exe..
          
          什么意思?驢爸軟件將監(jiān)控下列軟件:
          文本編輯軟件:EdiPlus,UltraEdit,EmEditor, 寫字板,記事本
          辦公軟件:WPS的Word、Presentation、Spreadsheet,微軟的Word、Powerpoint、FrontPage、Excel、Access、Outlook
          電子郵件客戶端:mailmagic.exe popo.exe qqmail.exe aixmail.exe imapp.exe incmail.exe msimn.exe dm2005.exe foxmail.exe
          即時通訊工具:Google Talk,Miranda32,imu.exe,ypager.exe,騰訊QQ和TM,start.exe,新浪UC,ICQ,MSN
          瀏覽器類:GoSuRF,GreenBrowser,TouchNet,TheWorld,MaxThone,騰訊套套瀏覽器,NetScape,F(xiàn)irefox(說明書里說只能監(jiān)控到2.0版本),Opera,NetCaptor,MyIE,IE
          系統(tǒng)工具類:mmc, regedit, taskmgr
          
          在看看XNet2.exe,偏移量 68968h,看看驢爸將會監(jiān)控那些程序
          
          00068960h: B3 CC D0 F2 00 00 00 00 77 6F 77 2E 65 78 65 00 ; 程序....wow.exe.
          00068970h: C4 A7 CA DE CA C0 BD E7 00 00 00 00 79 61 68 6F ; 魔獸世界....yaho
          00068980h: 6F 6D 65 73 73 65 6E 67 65 72 2E 65 78 65 00 00 ; omessenger.exe..
          00068990h: D1 C5 BB A2 CD A8 00 00 77 61 6E 67 77 61 6E 67 ; 雅虎通..wangwang
          000689a0h: 2E 65 78 65 00 00 00 00 B0 A2 C0 EF CD FA CD FA ; .exe....阿里旺旺
          000689b0h: 00 00 00 00 73 74 61 72 74 2E 65 78 65 00 00 00 ; ....start.exe...
          000689c0h: CD F8 D2 D7 50 4F 50 4F 00 00 00 00 CD F8 D2 D7 ; 網(wǎng)易POPO....網(wǎng)易
          000689d0h: 70 6F 70 6F 00 00 00 00 75 63 2E 65 78 65 00 00 ; popo....uc.exe..
          000689e0h: D0 C2 C0 CB 55 43 00 00 D0 C2 C0 CB 75 63 00 00 ; 新浪UC..新浪uc..
          000689f0h: 69 63 71 2E 65 78 65 00 49 43 51 36 00 00 00 00 ; icq.exe.ICQ6....
          00068a00h: 69 63 71 36 00 00 00 00 73 6B 79 70 65 2E 65 78 ; icq6....skype.ex
          00068a10h: 65 00 00 00 53 6B 79 70 65 00 00 00 73 6B 79 70 ; e...Skype...skyp
          00068a20h: 65 00 00 00 65 70 68 2E 65 78 65 00 65 BB B0 CD ; e...eph.exe.e話?
          00068a30h: A8 00 00 00 64 6F 73 68 6F 77 00 00 6D 73 6E 6D ; ?..doshow..msnm
          00068a40h: 73 67 72 2E 65 78 65 00 4D 53 4E 00 6D 73 6E 20 ; sgr.exe.MSN.msn 
          00068a50h: 6D 65 73 73 65 6E 67 65 72 00 00 00 71 71 67 61 ; messenger...qqga
          00068a60h: 6D 65 2E 65 78 65 00 00 51 51 D3 CE CF B7 00 00 ; me.exe..QQ游戲..
          00068a70h: 71 71 D3 CE CF B7 00 00 71 71 63 68 61 74 2E 65 ; qq游戲..qqchat.e
          00068a80h: 78 65 00 00 51 51 C1 C4 CC EC CA D2 00 00 00 00 ; xe..QQ聊天室....
          00068a90h: 71 71 C1 C4 CC EC CA D2 00 00 00 00 71 71 2E 65 ; qq聊天室....qq.e
          00068aa0h: 78 65 00 00 51 51 00 00 71 71 32 00 62 69 74 62 ; xe..QQ..qq2.bitb
          00068ab0h: 6F 6D 65 74 2E 65 78 65 00 00 00 00 42 69 74 43 ; omet.exe....BitC
          00068ac0h: 6F 6D 65 74 00 00 00 00 62 69 74 63 6F 6D 65 74 ; omet....bitcomet
          00068ad0h: 00 00 00 00 B7 D6 CE F6 CD EA B3 C9 A1 A3 00 00 ; ....分析完成。..
          
          具體的我就懶得寫了。凡是窗口標題欄有這些文字的統(tǒng)統(tǒng)會遭到監(jiān)視。
          
          搜索引擎監(jiān)控,來自Surfgd.dll,偏移量16390h
          
          
          00016390h: 2E 6D 73 6E 2E 63 6F 6D 00 00 00 00 2E 79 6F 6B ; .msn.com.....yok
          000163a0h: 61 2E 63 6F 6D 00 00 00 2E 79 61 68 6F 6F 2E 63 ; a.com....yahoo.c
          000163b0h: 6F 6D 00 00 2E 79 69 6D 67 2E 63 6F 6D 00 00 00 ; om...yimg.com...
          000163c0h: 2E 62 61 69 64 75 2E 63 6F 6D 00 00 2E 63 6F 70 ; .baidu.com...cop
          000163d0h: 79 73 6F 2E 63 6F 6D 00 2E 6D 61 70 62 61 72 2E ; yso.com..mapbar.
          000163e0h: 63 6F 6D 00 2E 6E 65 74 73 75 6E 2E 63 6F 6D 00 ; com..netsun.com.
          000163f0h: 2E 66 6F 6C 6F 64 61 2E 63 6F 6D 00 2E 6E 70 69 ; .foloda.com..npi
          00016400h: 63 70 2E 63 6F 6D 00 00 2E 64 69 63 74 2E 63 6E ; cp.com...dict.cn
          00016410h: 00 00 00 00 2E 79 6F 6B 2E 63 6F 6D 00 00 00 00 ; .....yok.com....
          00016420h: 2E 7A 68 6F 6E 67 73 6F 75 2E 63 6F 6D 00 00 00 ; .zhongsou.com...
          00016430h: 2E 73 6F 67 6F 75 2E 63 6F 6D 00 00 2E 79 61 68 ; .sogou.com...yah
          00016440h: 6F 6F 2E 63 6F 6D 2E 63 6E 00 00 00 2E 73 6F 73 ; oo.com.cn....sos
          00016450h: 6F 2E 63 6F 6D 00 00 00 2E 67 6F 6F 67 6C 65 2E ; o.com....google.
          00016460h: 63 6E 00 00 2E 67 6F 6F 67 6C 65 2E 63 6F 6D 00 ; cn...google.com.
          
          dbfilter.dll,這個是直接把你的Windows的winsock2給監(jiān)聽了,也就是說所有從你網(wǎng)卡經(jīng)過的每一個字節(jié)都會被掃描和分析。
          
          現(xiàn)放出來自直接解密安裝路徑下的 .dat 文件的關(guān)鍵字列表,并稍加解說
          
          wfile.dat - http://privatepaste.com/450zZe32hn
          這個文件說明了過濾文件類型
          
          
          TrustUrl.dat - http://privatepaste.com/4c0Q3tzzb0
          信任網(wǎng)址。這些網(wǎng)站毫無疑問都是老大哥信得過的。值得全球站長屏蔽這些網(wǎng)站。這是驢爸軟件中最有價值的一份列表,這些網(wǎng)站都是XX喉舌
          
          
          vgamfil.dat - http://privatepaste.com/1auoil5bP2
          所謂“暴力”游戲類。都有屏蔽了什么游戲呢?Quake,Quake2,Quake3,PLA訓練用的counter-strike.net,F(xiàn)22 Raptor,古墓麗影(這也算暴力類?),古墓麗影II,星際爭霸(暴力類?我看是“封建迷信”吧?),暴雪母公司activision.com,duke4.com,萬年跳票的dukeforever.com,ff8online.com,half-life.com,stormtroopers.com,unreal.org等等。建議大家以后只打清廉戰(zhàn)士。
          
          chtfil.dat - http://privatepaste.com/32hbY5XUgy
          屏蔽了AOL,AIM,Yahoo,MSN
          
          csnews.dat - http://privatepaste.com/bb1RyuqiVu
          這個文件是最喜劇的,驢爸抄襲美國人的過濾庫就算了,還很臨時工的把cybersitter別人的readme文件一起抄過來了
          
          entfil.dat - http://privatepaste.com/bd0qklsJuD
          娛樂類過濾。這里屏蔽了BSG和Firefly的scifi.com,StarTrek.com,StarWars.com,這樣Geek四大劇就被圍剿得一個不剩了。另外southpark、pokemon、xfiles和BritneySpears也是監(jiān)視關(guān)鍵字。blizzard.com暴雪公司官方網(wǎng)站被屏蔽
          
          finfil.dat - http://privatepaste.com/b414bkBNPv
          金融類過濾。包括華爾街時報www.wsj.com,www.ft.com,www.sec.gov等
          
          fmfil.dat - http://privatepaste.com/3d114bf1mD
          電子郵件監(jiān)控。hotmail.com,gmail.com,甚至www.mail開頭的都會受到特別關(guān)注。
          
          fshrfil.dat - http://privatepaste.com/b8kPPu9ZiV
          文件共享監(jiān)控。監(jiān)控市面上幾乎所有的P2P客戶端和軟件。gnutella, bearshare, emule, wrapster, 
          scourexchange, imesh, audiogalaxy, kazaa, filesharing, morpheus, limewire, 
          javalimewire, gnutella, wrapster, scourexchange, shareaza, kazaalite, 
          bittorrent, azureus
          
          
          gdwfil.dat - http://privatepaste.com/49ftIfdRqJ
          屏蔽了amazon.com,還有這款山寨軟件的祖宗cybersitter*.com,download.windowsupdate.com,liveupdate.symantec.com,symantec.liveupdate.com,microsoft.com,symantec.com,windowsupdate.com,zdnet.com。也就是說安裝了某軟件,Windows的補丁和殺毒軟件升級,要么被監(jiān)控,要么就被直接屏蔽了。有人說這個文件是白名單,請問在同一個列表里的amnesty.org,virgin-boys,porno-free.net這些東西也可能是白名單嗎? 
          
          
          imgfil.dat - http://privatepaste.com/cehwHinyM0
          這里屏蔽了很多圖片類網(wǎng)站,只要URL包含下列字符就會像GFW一樣被RST,例如google.ca/image,google.com/image,當然還有Yahoo的yahoo.com/image,還有視頻搜索屏蔽searchcat=vid,video.search.yahoo。請問老大哥究竟有什么見不得人的東西要把圖片和視頻搜索統(tǒng)統(tǒng)屏蔽呢?
          
          mp3fil.dat - http://privatepaste.com/f0uBTti5uh
          mp3類。封殺了一些MP3共享軟件,例如gnutella, bearshare, wrapster, scourexchange, imesh, audiogalaxy, kazaa, filesharing, morpheus, limewire, gnutella, wrapster, scourexchange
          
          
          wrestfil.dat - http://privatepaste.com/eapAh32NC8
          摔跤類。主要是WWE美摔之類的被屏蔽了。沒有屏蔽K1,說明的確是抄襲cybersitter
          
          
          pkmon.dat - http://privatepaste.com/580KvOFYV4 (POKEMON!)
          文件名就很囧。Pokemon就是吃豆子游戲。這份名單貌似過濾了一些anime和manga
          
          sporfil.dat - http://privatepaste.com/e20QeOlezv
          體育類過濾。屏蔽了www.nba.com和wnba.com,還有其他的太多了。。。
          
          
          --------------------分割線--------------------
          
          下面的.dat文件內(nèi)容,幾乎都來自cybersitter,山寨程度可見一斑
          
          wfileu.dat - http://privatepaste.com/9c0oaeS0i1
          這個網(wǎng)址就是cybersitter的升級地址了,居然還保留了。你說驢爸這軟件山寨不山寨?
          
          wzfil.dat - http://privatepaste.com/170Epo2wTZ
          游戲破解
          
          
          adwapp.dat - http://privatepaste.com/aey5BIlkyx
          adult類網(wǎng)站過濾(嚴格)
          
          adwfil.dat - http://privatepaste.com/091MdBUyDv
          adult類網(wǎng)站過濾
          
          
          lgwfil.dat - http://privatepaste.com/a1ndIrVvEn
          同志類網(wǎng)站,不熟悉,不評價。
          
          iawfil.dat - http://privatepaste.com/951A0xSKW2
          非法類。照抄cybersitter的名單
          
          auctfil.dat - http://privatepaste.com/f20vFALQPl
          
          
          bnrfil.dat - http://privatepaste.com/76uATdcCsN
          屏蔽廣告
          
          bsnlst.dat - http://privatepaste.com/b6tJvZlQJN
          
          
          cultfil.dat - http://privatepaste.com/dc1NtZn183
          文化過濾,包括GeorgeKing,scientology,ChurchOfSatan一類的。還是抄襲cybersitter
          
          
          gblfil.dat - http://privatepaste.com/53CXciru9I
          貌似是賭博類。
          
          
          
          gnfil.dat - http://privatepaste.com/c6lU71HHUT
          槍支類。
          
          hatfil.dat - http://privatepaste.com/1005oQLOJv
          種族仇恨類。
          
          
          jbfil.dat - http://privatepaste.com/7d1cmQ7bdW
          招聘類。
          
          
          movfil.dat - http://privatepaste.com/99cMT8Xjyr
          電影類
          
          
          
          nvgamfil.dat - http://privatepaste.com/9aYQOBgQoU
          又一個游戲類過濾。nv game filter.dat?
          
          
          perfil.dat - http://privatepaste.com/7driTj667b
          sex類過濾
          
          picsfil.dat - http://privatepaste.com/34TI4cSbZE
          
          
          
          popfil.dat - http://privatepaste.com/c10gAsIEuq
          廣告彈窗類過濾
          
          psyfil.dat - http://privatepaste.com/ae0GA79ZFm
          封建迷信和超自然類過濾。
          
          
          
          swfil.dat - http://privatepaste.com/aeSIsoDlKd
          盜版軟件過濾。
          
          tafil.dat - http://privatepaste.com/26FTx1Dfjz
          酒精類過濾。抄襲cybersitter的名單
          
          tapfil.dat - http://privatepaste.com/ae0UoosGMk
          紋身類過濾。
          
          
          viofil.dat - http://privatepaste.com/f79OiqXC6J
          暴力自殺類。
          
          
          注意這些網(wǎng)址文件,結(jié)合以前網(wǎng)上流傳出來的FalunWord.lib,我們可以得出一個很驚人的結(jié)論
          
            國內(nèi)網(wǎng)站很少被屏蔽,.cn的網(wǎng)址很少出現(xiàn)。
          
          為什么說這個結(jié)論很驚人
          
          1. 為什么屏蔽對象僅僅局限于歐洲國家、美國的sex情暴力網(wǎng)站,甚至阿拉伯國家的極端宗教網(wǎng)站
          1. 為什么這個耗資4170萬的軟件屏蔽對孩子有害的網(wǎng)站,都直接非法抄襲來自cybersitter的名單
          3. 我知道的幾個XX網(wǎng)站,名單里一個都沒有!
          4. 為什么幾乎不怎么屏蔽國內(nèi)垃圾站呢?國內(nèi)的垃圾站還少了嗎?
          
          所以,綠壩根本不能算一個全功能的家長軟件,只是國外同類軟件的rip-off加上一個強大的合法木馬監(jiān)控每一臺7月1日之后的新電腦。
          
          一個很不情愿的猜測就是官老爺們壓根不是認真做家長類軟件的。這個軟件壓根就不是為了保護納稅人的孩子的。為是為了該軟件的一些“附加功能”。例如匯報老大哥。比較善意的猜測就是一些利益集團想再度搜刮老百姓(特別是家電下鄉(xiāng)的那些)利用國家手段強制搞的一個政策罷了。
          
          最后要感謝http://scott.wolchok.org/greendam.html(解密源碼的C算法在http://scott.wolchok.org/gddec.c,大家可以編譯,自行解驢爸軟件的.dat看看有那些網(wǎng)址),這些成果和你們的辛勤勞動是分不開的。
          

          posted @ 2009-06-13 15:00 不需要解釋 閱讀(205) | 評論 (0)編輯 收藏

          工信部,全稱是工業(yè)和信息化部,名字莫名其妙,no three no four,不像個正經(jīng)機構(gòu),做起事來果然也很不靠譜,很發(fā)飆。比如,最近,這個部忽然發(fā)布一個什么通知,要求所有新生產(chǎn)和銷售的國產(chǎn)和進口計算機都安裝“綠壩—花季護航”軟件。
          讓所有計算機都安裝自己的軟件,這是無數(shù)軟件工程師的夢想。年輕時的比爾·蓋茨就曾這樣幻想過——在每一臺PC上都裝有微軟的操作系統(tǒng)。微軟的夢想最終變成了現(xiàn)實。實現(xiàn)這個夢想的過程中有著令人嘆為觀止的天才、智慧、汗水、機遇和協(xié)作。這是計算機發(fā)展史上最振奮人心的奮斗歷程之一。如今,工信部想憑兩頁自己弄出來的文件就美夢成真,做到同樣的事情,這不是發(fā)飆是什么?
          這個“綠壩—花季護航”軟件是一個過濾軟件,據(jù)文件說,可以過濾“互聯(lián)網(wǎng)不良文字和圖像內(nèi)容”。工信部冠冕堂皇的理由是保護青少年,但地球人都知道,他們真正想要過濾的是成年人的頭腦。道理很明顯,如果真的想要保護青少年,那此軟件只應(yīng)該向家長推介,而不必向所有使用計算機的人強行推廣。難道所有計算機使用者的年輕都尚處花季?再說,真正關(guān)心青少年身心健康的人當然是他們的家長,而不是某些坐在北京某辦公樓內(nèi)悠閑工作的公務(wù)員。為什么要由這些行為可疑、動輒發(fā)飆的公務(wù)員來代替家長決定如何教育孩子呢?
          想要過濾成年人的頭腦,這在當下的中國,并不稀奇。許多人都想做這件事。工信部也試圖做這件事,這不是奇聞,也不算發(fā)飆,但工信部以如此笨拙荒唐的方式做這件事,就完全是奇聞了,不但是標準的發(fā)飆,簡直可以稱作沒事找抽了。
          發(fā)飆者的特征之一就是:做事不考慮后果。官方要求所有新生產(chǎn)銷售的計算機都安裝某種軟件,這可不同于一般的商業(yè)軟件上市。工信部考慮了這件事的所有后果嗎?正常不發(fā)飆的人稍微一想就可以想出一大堆麻煩事:
          首先,據(jù)說,該軟件已經(jīng)“綜合測試和試點應(yīng)用”,意思是,這個軟件非常可靠,毫無問題。但稍知計算機的人都明白,新軟件總會有問題,這是任何軟件都無法徹底解決的問題。既然是強制安裝,那消費者自然應(yīng)該得到全額賠償。具體來說,這個軟件的安全性有保證嗎?和系統(tǒng)軟件和其他軟件的兼容性如何?侵犯計算機使用者的隱私嗎?如果有計算機因為這個軟件而速度變慢,甚至系統(tǒng)崩潰,誰來負責維修和賠償?由此而給財政造成的支出由誰來負責?工信部部長嗎?
          其次,既然是過濾軟件,當然就會有過濾清單。工信部保證清單上的被過濾者都確實應(yīng)該被過濾嗎?這些被過濾者是經(jīng)過什么程序,由哪些權(quán)威部門認定的?如果有冤假錯案怎么辦?如果某個網(wǎng)站其實很好,但被錯誤地列入過濾清單,由此導(dǎo)致其經(jīng)濟利益受損,工信部準備怎么賠償?工信部部長個人的收入因此受影響嗎?在工信部的文件中,我并沒有找到被過濾者如何申辯的規(guī)定。死刑犯都可以上訴,但這些網(wǎng)站看來卻毫無申辯的機會。或許,工信部假設(shè)自己絕不會犯錯。這種假設(shè)不是發(fā)飆是什么?
          第三,工信部花了4000萬,只買斷了一年的軟件使用權(quán)。那么,一年以后怎么辦?如果一年以后該軟件企業(yè)利用這種行政壟斷地位任意抬價,誰來負責?如果該軟件企業(yè)日后未能及時升級,導(dǎo)致效用下降,誰來負責?如果該軟件企業(yè)日后經(jīng)營不善,破產(chǎn)倒閉,廣大用戶的權(quán)益誰來保護,由此造成的損失,誰來負責?
          第四,類似的軟件早就有了,這種東西的技術(shù)含量很低,弄幾個軟件人員就能搞出來。那么,請問,工信部為何偏偏選擇“綠壩—花季護航”軟件?這家軟件公司并沒有什么市場知名度,他們?yōu)槭裁催@么幸運,一下子得到這樣一個大單?此前召開過公開招標或者聽證會嗎?如果輿論質(zhì)詢,工信部部長準備怎么回答?
          第五,工信部并不是執(zhí)法機關(guān),卻發(fā)布這種帶有強制性的文件。如果別人不遵守,你們怎么辦?抓人?罰款?吊銷營業(yè)執(zhí)照?恐怕工信部都沒有這種權(quán)力。那你們打算怎么辦?發(fā)動公安工商城管聯(lián)合執(zhí)法嗎?
          中國的計算機行業(yè)是個高度靈活的行業(yè),政府干預(yù)的力度并不大。這是一件好事,正因為這樣,中國的計算機行業(yè)才發(fā)展迅速,商品品質(zhì)不斷提升,同時價格一降再降,消費者得到了非常大的利益。在這樣一個高度靈活的行業(yè)中,某個笨拙的政府部門想要耍一把威風,基本上只能是自取其辱。他們會看到那些聰明的經(jīng)營者是怎么像耍猴兒一樣耍他們的。坐在辦公室里悠哉游哉的公務(wù)員想和那些天天在市場中摸爬滾打的人比較智力和精力,勝算不會比面對美軍的薩達姆更高。
          當然,還有另一種解釋,工信部的人并不是那么飆,他們也知道自己面臨的種種困境,那他們?yōu)槭裁催€要發(fā)布這種no three no four的文件呢?答案就在于那4000萬的采購合同。現(xiàn)在的中國軟件產(chǎn)業(yè),憑著一個小軟件,一年就可以得到4000萬收入,這種好買賣,如果不是絕對沒有,也是十分罕見的。工信部確定的這個明顯過高的價格,其中大有可疑之處。
          既有可疑之處,當然不希望人們大加關(guān)注。因此,工信部在文件中精心措辭,把強制性的措施架空成一紙空文。這樣就可以把社會的關(guān)注或者反對降到最低程度。整篇通知都在用“應(yīng)”,而不是“必須”。了解法律用語的人都知道,在法條中,“應(yīng)該”和“必須”代表著兩種執(zhí)法力度。如果僅僅是“應(yīng)該”,根本沒有“必須”,那基本上等于沒說。果然,在通知的最后,工信部也不得不承認,如果經(jīng)營者對他們的這個通知不予理睬,當作廢紙,不去裝什么花季軟件,工信部只能“責令改正”。也就是說,經(jīng)營者即使被當面抓住,也不過是補裝了事。工信部才不會傻乎乎去制定嚴厲的罰則。那種罰則不但無從執(zhí)行,還會激起從業(yè)者的反抗。
          對于工信部來說,最好的結(jié)果就是,發(fā)一個貌似強制的文件,給自己的4000萬采購提供一個理由——全國都要強制安裝,這么大的數(shù)量,自然需要花大筆錢買斷軟件。然后,由于只是“應(yīng)該”,而不是“必須”,并且沒有罰則,因此,所有人都不會認真執(zhí)行這個文件,并很快忘掉這件事。這樣一來,錢理由充分地花出去了,還不會真正觸怒任何人。他們想“悶聲發(fā)大財”。
          但消息畢竟公布出去了。工信部的人還是蠢。你們以為自己真的能控制輿論、蒙混過關(guān)嗎?那可是一項高難度的技術(shù)。許多專業(yè)人士都不見得能成功應(yīng)付輿論。看,你們都成了網(wǎng)站頭條了!沒想到吧。因此,嚴重建議反應(yīng)遲緩、未經(jīng)過專業(yè)訓練的公務(wù)員最好遠離輿論,不要在刀口上舔血吃。
          請問,那家軟件公司的背景禁得住調(diào)查嗎?工信部部長難道不知道人肉搜索這回事?這樣在眾目睽睽之下做事,如果一旦被人家查出不堪的事情來,工信部這不是沒事找抽嗎?4000萬確實是一筆大錢,但能花的錢才是錢,如果錢沒掙到,卻被人查出腐敗,還搭進去幾個黨的干部,那就太不值了。
          請工信部的人記住:你們花的是納稅人的血汗錢。雖然你們口口聲聲說“政府出資”云云,好像在這個過程中,你們不但沒占到便宜,還吃了大虧,但事實真相是,政府不能掙一分錢,政府只能花錢。根本沒有什么政府的錢,有的只是納稅人的、被政府通過稅收等各種手段強行拿走的血汗錢。
          因此,作為一個納稅人,我呼吁,反貪局、紀委公開調(diào)查工信部“綠壩—花季護航”軟件軟件采購案,并將調(diào)查結(jié)果公布。調(diào)查重點是該軟件公司和工信部有無關(guān)聯(lián)?有無內(nèi)部交易?有無私下密謀?該項采購案的程序是否合法?是否經(jīng)過公開招標?其他同業(yè)軟件商是否享有同等機會?4000萬的定價依據(jù)是什么?該項款項的去處?審批人和經(jīng)辦人是誰?
          我也呼吁所有有能力調(diào)查的媒體記者關(guān)注此事。納稅人的錢不應(yīng)該這樣被白白浪費和侵占,作為社會公器的媒體有責任揭露背后的真相。
          既然工信部是沒事找抽型,不抽他們幾下也不對。

          posted @ 2009-06-10 23:05 不需要解釋 閱讀(140) | 評論 (0)編輯 收藏

          <html>
          <head>
          <style>
          #test *{vertical-align:middle;}
          </style>
          <body>
              <div id="test">
                  <img src=">
                   <span>sdfhsdhfdksfjhtes:</span>
              </div>
          </body>
          </html>

          請注意:#test *{vertical-align:middle;}

           

          #test *表示了div里面所有元素,當然包含了span,input,img這些內(nèi)聯(lián)元素了。

           

          vertical-align
          初始值: baseline(缺省值)
          可否繼承:否
          適用于: 內(nèi)聯(lián)元素
          說明:vertical-align:baseline使元素的基線同父元素的基線對齊.
          警告:vertical-align不能影響表格單元中的內(nèi)容的對齊,對于塊元素中的內(nèi)容也一樣.

            請注意,vertical-align只影響內(nèi)聯(lián)元素,比如span,img,em,input,a等這些元素,而對div,h3,p等這些塊元素是無效的.

          posted @ 2009-06-09 18:29 不需要解釋 閱讀(10189) | 評論 (1)編輯 收藏

          Mave is good at jar management. so maven can help me to package the java application. with maven help, we can make the release application zip smaller.

          for the smaller:we use the maven ant task to manager jars:

          build.xml

          <project basedir="." default="all" name="jars" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
          <property name="build.compiler" value="modern"/>
               <path id="maven-ant-tasks.classpath" path="${basedir}/maven/maven-ant-tasks-2.0.10.jar" />
            <typeset resource="org/apache/maven/artifact/ant/antlib.xml"
                     uri="antlib:org.apache.maven.artifact.ant"
                     classpathref="maven-ant-tasks.classpath" />

              <target name="all">
                    <antcall target="get_server_jars"/>
                    <antcall target="get_orchis_jars"/>
              </target>

              <target name="get_server_jars">
                  <artifact:dependencies pathId="dependency.classpath"  filesetId="maven.fileset">
                  <dependency groupId="junit" artifactId="junit" version="3.8.2"/>  
                  <dependency groupId="activation" artifactId="activation" version="1.1"/>    
                  <dependency groupId="castor" artifactId="castor" version="1.1"/>    

                  </artifact:dependencies>

              <copy todir="${basedir}/lib">
                  <fileset refid="maven.fileset" />
                  <!-- This mapped strips off all leading directory information -->
                  <mapper type="flatten" />
              </copy>
          </target>

              <target name="get_orchis_jars">
                  <artifact:dependencies pathId="dependency.classpath"  filesetId="maven.fileset">
                      <dependency groupId="junit" artifactId="junit" version="3.8.2"/>       
                      <dependency groupId="javax.servlet" artifactId="servlet-api" version="2.4"/>      
                  </artifact:dependencies>

              <copy todir="${basedir}/webapps/ROOT/WEB-INF/lib">
                  <fileset refid="maven.fileset" />
                  <!-- This mapper strips off all leading directory information -->
                  <mapper type="flatten" />
              </copy>
          </target>

          so we can use maven to update you application.

          posted @ 2009-06-07 14:25 不需要解釋 閱讀(282) | 評論 (0)編輯 收藏

          as we know maven can manager you jars, I am maven funs, Maven can give me lots of good idea. Compare with ant.

          (1)no class path problem.

              Sometimes Many use of ant complained because of class path. They can not direct know which jars they used in project, almost version.

          (2)lots of plug-in to use with maven.(maven-jetty-plug-in)

          (3)maven report is usefully for improve you code.

          (4)manager your jar of application.

          (5)good for team.

          (6)easy to use.

          About this point, user of ant do not agree with me. but i think maven easy to use, you do not need to care class path, you can easily to get all report.

          posted @ 2009-06-07 14:19 不需要解釋 閱讀(191) | 評論 (0)編輯 收藏

          運行自己配置的web應(yīng)用,往往只能看見weblogic編譯之后的class文件。而看不見編譯前的java的文件。為了調(diào)試方便,我們有時候是想看編譯前的java文件。
          在weblogic.xml中加入
          <jsp-descriptor>
            <jsp-param>
              <param-name>keepgenerated</param-name>
              <param-value>true</param-value>
            </jsp-param>
          </jsp-descriptor>

          即可。
          如果沒有,在WEB-INF中建立一個weblogic.xml文件。
          增加
          <?xml version="1.0" encoding="UTF-8"?>
            <!DOCTYPE weblogic-web-app
              PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
              " >
          <weblogic-web-app>   
              <jsp-descriptor>
                  <jsp-param>
                      <param-name>keepgenerated</param-name>
                      <param-value>true</param-value>
                  </jsp-param>
              </jsp-descriptor>
          </weblogic-web-app>

          看看web應(yīng)用在weblogic中生成臨時文件中,有java文件了吧!!

          posted @ 2009-06-03 18:09 不需要解釋 閱讀(946) | 評論 (0)編輯 收藏

              as we know, in weblogic 10. the weblogic.jar just has more than 30MB. so if you want use the client to invoke weblogic ejb method, you need the weblogic.jar. of course, if you use the weblogic9, it work well, but when you upgrade your weblogic server to weblogic10. the weblogic.jar does not work. the weblogic.jar of the weblogic10 is not enough.

          you need do next:


               Use the following steps to create a wlfullclient.jar file for a client application:

                Change directories to the server/lib directory.
          cd WL_HOME/server/lib
          Use the following command to create wlfullclient.jar in the server/lib directory:
          java -jar ../../../modules/com.bea.core.jarbuilder_X.X.X.X.jar
          where X.X.X.X is the version number of the jarbuilder module in the WL_HOME/server/lib directory. For example:

                java -jar ../../../modules/com.bea.core.jarbuilder_1.0.1.0.jar
          You can now copy and bundle the wlfullclient.jar with client applications.
          Add the wlfullclient.jar to the client application’s classpath.

          posted @ 2009-06-02 11:53 不需要解釋 閱讀(243) | 評論 (0)編輯 收藏

          Based on the popular and very useful mod_rewrite for apache, UrlRewriteFilter is a Java Web Filter for any J2EE compliant web application server (such as Resin, Orion or Tomcat), which allows you to rewrite URLs before they get to your code. It is a very powerful tool just like Apache's mod_rewrite.

          URL rewriting is very common with Apache Web Server (see ) but has not been possible in most java web application servers. The main things it is used for are:

          • URL Tidyness / URL Abstraction - keep URLs tidy irrespective of the underlying technology or framework (JSP, Servlet, Struts etc).
          • Browser Detection - Allows you to rewrite URLs based on request HTTP headers (such as user-agent or charset).
          • Date based rewriting - Allows you to forward or redirect to other URL's based on the date/time (good for planned outages).
          • Moved content - enable a graceful move of content or even a change in CMS.
          • Tiny/Friendly URL's (i.e. blah.com/latest can be redirected to blah.com/download/ver1.2.46.2/setup.exe)
          • A Servlet mapping engine (see Method Invocation)

          UrlRewriteFilter uses an xml file, called urlrewrite.xml (it goes into the WEB-INF directory), for configuration. Most parameters can be Perl5 style Regular Expressions or Wildcard Expressions. This makes it very powerful indeed.

           

          example:

          web.xml

            <filter>
                  <filter-name>UrlRewriteFilter</filter-name>
                  <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
              </filter>
              <filter-mapping>
                  <filter-name>UrlRewriteFilter</filter-name>
                  <url-pattern>/*</url-pattern>
                  <dispatcher>REQUEST</dispatcher>
                  <dispatcher>FORWARD</dispatcher>
              </filter-mapping>
          
          urlrewrite.xml
          <?xml version="1.0" encoding="utf-8"?>
          
              <!DOCTYPE urlrewrite
                  PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
                  "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
          
              <urlrewrite>
                  <rule>
                     <from>^/some/olddir/(.*)$</from>
                     <to type="redirect">/very/newdir/$1</to>
                  </rule>
          
                  <rule match-type="wildcard">
                     <from>/blog/archive/**</from>
                     <to type="redirect">/roller/history/$1</to>
                  </rule>
              </urlrewrite>
          

          posted @ 2009-05-24 16:15 不需要解釋 閱讀(197) | 評論 (0)編輯 收藏

          HttpSessionBindingListener雖然叫做監(jiān)聽器,但使用方法與HttpSessionListener完全不同。HttpSessionBindingListener接口中共定義了兩個方法:

          valueBound()和valueUnbound(),分別對應(yīng)數(shù)據(jù)綁定,和取消綁定兩個事件。

          所謂對session進行數(shù)據(jù)綁定,就是調(diào)用session.setAttribute()把HttpSessionBindingListener保存進session中。我們在LoginServlet.java中進行這一步。

          // 把用戶名放入在線列表

          session.setAttribute("onlineUserBindingListener", new OnlineUserBindingListener(username));

          這就是HttpSessionBindingListener和HttpSessionListener之間的最大區(qū)別: HttpSessionListener只需要設(shè)置到web.xml中就可以監(jiān)聽整個應(yīng)用中的所有session。 HttpSessionBindingListener必須實例化后放入某一個session中,才可以進行監(jiān)聽。

          從監(jiān)聽范圍上比較,HttpSessionListener設(shè)置一次就可以監(jiān)聽所有session,HttpSessionBindingListener通常都是一對一的。

          正是這種區(qū)別成就了HttpSessionBindingListener的優(yōu)勢,我們可以讓每個listener對應(yīng)一個username,這樣就不需要每次再去session中讀取username,進一步可以將所有操作在線列表的代碼都移入listener,更容易維護。

          valueBound()方法的代碼如下:

          public void valueBound(HttpSessionBindingEvent event) {

          HttpSession session = event.getSession();

          ServletContext application = session.getServletContext();



          // 把用戶名放入在線列表

          List onlineUserList = (List) application.getAttribute("onlineUserList");

          // 第一次使用前,需要初始化

          if (onlineUserList == null) {

          onlineUserList = new ArrayList();

          application.setAttribute("onlineUserList", onlineUserList);

          }

          onlineUserList.add(this.username);

          }

          username已經(jīng)通過構(gòu)造方法傳遞給listener,在數(shù)據(jù)綁定時,可以直接把它放入用戶列表。

          與之對應(yīng)的valueUnbound()方法,代碼如下:

          public void valueUnbound(HttpSessionBindingEvent event) {

          HttpSession session = event.getSession();

          ServletContext application = session.getServletContext();



          // 從在線列表中刪除用戶名

          List onlineUserList = (List) application.getAttribute("onlineUserList");

          onlineUserList.remove(this.username);



          System.out.println(this.username + "退出。");

          }

          這里可以直接使用listener的username操作在線列表,不必再去擔心session中是否存在username。

          valueUnbound的觸發(fā)條件是以下三種情況:

          1. 執(zhí)行session.invalidate()時。

          2. session超時,自動銷毀時。

          3. 執(zhí)行session.setAttribute("onlineUserListener", "其他對象");或session.removeAttribute("onlineUserListener");將listener從session中刪除時。

          因此,只要不將listener從session中刪除,就可以監(jiān)聽到session的銷毀。

          posted @ 2009-05-20 17:41 不需要解釋 閱讀(3669) | 評論 (0)編輯 收藏

          1、關(guān)于文本編輯器;

          文本編輯器有很多,比如圖形模式的gedit、kwrite、OpenOffice ... ... ,文本模式下的編輯器有vi、vim(vi的增強版本)和nano ... ... vi和vim是我們在Linux中最常用的編輯器。我們有必要介紹一下vi(vim)最簡單的用法,以讓Linux入門級用戶在最短的時間內(nèi)學會使用它。

          nano 工具和DOS操作系統(tǒng)下的edit操作相似,使用簡單,我們不作介紹了,如果您有興趣,不妨嘗試一下;


          2、vi 編輯器;

          為什么要學會簡單應(yīng)用vi

          vi或vim是Linux最基本的文本編輯工具,vi或vim雖然沒有圖形界面編輯器那樣點鼠標的簡單操作,但vi編輯器在系統(tǒng)管理、服務(wù)器管理中,永遠不是圖形界面的編輯器能比的。當您沒有安裝X-windows桌面環(huán)境或桌面環(huán)境崩潰時,我們?nèi)孕枰址J较碌木庉嬈鱲i;

          vi或vim 編輯器在創(chuàng)建和編輯簡單文檔最高效的工具;


          3、vi 編輯器的使用方法;


          3.1 如何調(diào)用vi ;

          [root@localhost ~]# vi  filename

          ~
          ~
          ~
          ~
          ~
          ~
          ~
          ~


          3.2 vi 的三種命令模式;

          Command(命令)模式,用于輸入命令;
          Insert(插入)模式,用于插入文本;
          Visual(可視)模式,用于視化的的高亮并選定正文;


          3.3 文件的保存和退出;

          Command 模式是vi或vim的默認模式,如果我們處于其它命令模式時,要通過ESC鍵切換過來。

          當我們按ESC鍵后,接著再輸入:號時,vi會在屏幕的最下方等待我們輸入命令;

          :w  保存;
          :w  filename 另存為filename;
          :wq! 保存退出;
          :wq! filename 注:以filename為文件名保存后退出;
          :q! 不保存退出;
          :x 應(yīng)該是保存并退出 ,功能和:wq!相同


          3.4 光標移動;

          當我們按ESC進入Command模式后,我們可以用下面的一些鍵位來移動光標;

          j 向下移動一行;
          k 向上移動一行;
          h 向左移動一個字符;
          l 向右移動一個字符;
          ctrl+b  向上移動一屏;
          ctrl+f  向下移動一屏;
          向上箭頭    向上移動;
          向下箭頭    向下移動;
          向左箭頭    向左移動;
          向右箭頭    向右移動;

          我們編輯一個文件時,對于 j、k、l和h鍵,還能在這些動作命令的前面加上數(shù)字,比如 3j,表示向下移動3行。


          3.5 插入模式(文本的插入);

          i  在光標之前插入;
          a  在光標之后插入;
          I 在光標所在行的行首插入;
          A  在光標所在行的行末插入;
          o  在光標所在的行的上面插入一行;
          O  在光標所在的行的下面插入一行;
          s  刪除光標后的一個字符,然后進入插入模式;
          S  刪除光標所在的行,然后進入插入模式;


          3.6 文本內(nèi)容的刪除操作;

          x 一個字符;
          #x 刪除幾個字符,#表示數(shù)字,比如3x;
          dw 刪除一個單詞;
          #dw 刪除幾個單詞,#用數(shù)字表示,比如3dw表示刪除三個單詞;
          dd 刪除一行;
          #dd 刪除多個行,#代表數(shù)字,比如3dd 表示刪除光標行及光標的下兩行;
          d$ 刪除光標到行尾的內(nèi)容;
          J 清除光標所處的行與上一行之間的空格,把光標行和上一行接在一起;


          3.7 恢復(fù)修改及恢復(fù)刪除操作;

          u  撤消修改或刪除操作;

          按ESC鍵返回Command(命令)模式,然后按u鍵來撤消刪除以前的刪除或修改;如果您想撤消多個以前的修改或刪除操作,請按多按幾次u。這和Word的撤消操作沒有太大的區(qū)別;


          3.8 可視模式;

          在最新的Linux發(fā)行版本中,vi提供了可視模式,因為這個功能是vim才有的。如果您用的vi沒有這個功能,就換成vim就有了。打開可視模式,按ESC鍵,然后按v就進入可視模式;

          可視模式為我們提供了極為友好的選取文本范圍,以高亮顯示;在屏幕的最下方顯示有;

          -- 可視 --  

          --VISUAL--

          如圖:

          進入可視模式,我們就可以用前面所說的命令行模式中的光標移動指令,可以進行文本范圍的選取。

          選取文本范圍有何用?

          我們可以對某部份刪除作業(yè),按d鍵就刪除了我們選中的內(nèi)容。
          選中內(nèi)容后,我們按y就表示復(fù)制;按d表示刪除;

          值得一提是的刪除的同時,也表示復(fù)制。我們返回到命令模式,然后移動光標到某個位置,然后按shift+p鍵,就把剛才刪除的內(nèi)容貼上了。我們先在這里提一句,在后文,我們還得詳細說說。

          退出可視模式,還是用ESC鍵;


          3.9 復(fù)制和粘帖的操作;

          其實刪除也帶有剪切的意思,當我們刪除文字時,可以把光標移動到某處,然后按shift+p鍵就把內(nèi)容貼在原處,然后再移動光標到某處,然后再按p或shift+p又能貼上;

          p 在光標之后粘帖;
          shift+p 在光標之前粘帖

          來舉一例:

          比如我們想把一個文檔的第三行復(fù)制下來,然后帖到第五行的后面,我們應(yīng)該怎么做呢?

          有兩種方法;

          第一種方法:

          先把第三行刪除,把光標移動到第三行處,然后用dd動作,接著再按一下shift+p鍵。這樣就把剛才刪除的第三行帖在原處了。

          接著我們再用k鍵移動光標到第五行,然后再按一下p鍵,這樣就把第三行的內(nèi)容又帖到第五行的后面了;

          第二種方法;

          進入可視模式,按ESC鍵,然后按v鍵。移動鼠標指針,選中第三行的內(nèi)容,然后按y鍵復(fù)制;再移動指針到第五行,最后按p鍵;

          所以復(fù)制和粘貼操作,是命令模式、插入模式及可視模式的綜合運用;我們要學會各種模式之間的切換,要常用ESC鍵;更為重要的學會在命令模式下移動光標;


          3.10 關(guān)于行號;

          有時我們配置一個程序運行時,會出現(xiàn)配置文件X行出現(xiàn)錯誤 。這時我們要用到行號相關(guān)的操作;


          為所有內(nèi)容添加行號;

          按ESC鍵,然后輸入:

          :set number

          光標所處位置

          在屏幕的右下角,有類似如下的;

                   57,8          27%

          在這之中,57表示第57行,8表示第8個字符;


          3.11 查找和替換功能;


          3.11.1 查找;

          首先,我們要進入ESC鍵,進入命令模式;我們輸入/或?就進入查找模式了;

          /SEARCH  注:正向查找,按n鍵把光標移動到下一個符合條件的地方;
          ?SEARCH  注:反向查找,按shift+n 鍵,把光標移動到下一個符合條件的

          舉一例:比如我想在一個文件中找到swap單詞,我應(yīng)該如下做;

          首先按ESC鍵,進入命令模式,然后輸入;

          /swap

          ?swap


          3.11.2 替換;

          按ESC鍵進入命令模式;

          :s /SEARCH/REPLACE/g  注:把當前光標所處的行中的SEARCH單詞,替換成REPLACE,并把所有SEARCH高亮顯示;
          :%s /SEARCH/REPLACE  注:把文檔中所有SEARCH替換成REPLACE;
          :#,# s /SEARCH/REPLACE/g  注:#號表示數(shù)字,表示從多少行到多少行,把SEARCH替換成REPLACE;

          注:在這之中,g表示全局查找;我們注意到,就是沒有替換的地方,也會把SEARCH高亮顯示;

          舉例說明:

          比如我們有一篇文檔要修改;

          我們把光標所在的行,把所有單詞the,替換成THE,應(yīng)該是:

          :s /the/THE/g

          我們把整篇文檔的所有的the都替換成THE,應(yīng)該是:

          :%s /the/THE

          我們僅僅是把第1行到第10行中的the,替換成THE,應(yīng)該是;

          :1,10  s /the/THE/g


          參考:man vi 和vi –help

          posted @ 2009-05-20 15:57 不需要解釋 閱讀(169) | 評論 (0)編輯 收藏

                一個Maven項目發(fā)布版本號用version 編碼,用來分組和排序發(fā)布。Maven中的版本包含了以下部分:主版本,次版本,增量版本,和限定版本號。一個版本中,這些部分對應(yīng)如下的格式:

          <major version>.<minor version>.<incremental version>-<qualifier>
          

          例如:版本“1.3.5”由一個主版本1,一個次版本3,和一個增量版本5。而一個版本“5”只有主版本5,沒有次版本和增量版本。限定版本用來標識里程碑構(gòu)建:alpha和beta發(fā)布,限定版本通過連字符與主版本,次版本或增量版本隔離。例如,版本“1.3-beta-01”有一個主版本1,次版本3,和一個限定版本“beta-01”。

          當你想要在你的POM中使用版本界限的時候,保持你的版本號與標準一致十分重要。在版本界限,允許你聲明一個帶有版本界限的依賴,只有你遵循標準的時候該功能才被支持。因為Maven根據(jù)本節(jié)中介紹的版本號格式來對版本進行排序。

          如果你的版本號與格式<主版本>.<次版本>.<增量版本>-<限定版本>相匹配,它就能被正確的比較;“1.2.3”將被評價成是一個比“1.0.2”更新的構(gòu)件,這種比較基于主版本,次版本,和增量版本的數(shù)值。如果你的版本發(fā)布號沒有符合本節(jié)介紹的標準,那么你的版本號只會根據(jù)字符串被比較;“1.0.1b”和“1.2.0b”會使用字符串比較。

          1. 版本構(gòu)建號

                 我們還需要對版本號的限定版本進行排序。以版本號“1.2.3-alpha-2”和“1.2.3-alpha-10”為例,這里“alpha-2”對應(yīng)了第二次alpha構(gòu)建,而“alpha-10”對應(yīng)了第十次alpha構(gòu)建。雖然“alpha-10”應(yīng)該被認為是比“alpha-2”更新的構(gòu)建,但Maven排序的結(jié)果是“alpha-10”比“alpha-2”更舊,問題的原因就是我們剛才討論的Maven處理版本號的方式。

          Maven會將限定版本后面的數(shù)字認作一個構(gòu)建版本。換句話說,這里限定版本是“alpha”,而構(gòu)建版本是2。雖然Maven被設(shè)計成將構(gòu)建版本和限定版本分離,但目前這種解析還是失效的。因此,“alpha-2”和“alpha-10”是使用字符串進行比較的,而根據(jù)字母和數(shù)字“alpha-10”在“alpha-2”前面。要避開這種限制,你需要對你的限定版本使用一些技巧。如果你使用“alpha-02”和“alpha-10”,這個問題就消除了,一旦Maven能正確的解析版本構(gòu)建號之后,這種工作方式也還是能用。

          2. SNAPSHOT版本

                 Maven版本可以包含一個字符串字面量來表示項目正處于活動的開發(fā)狀態(tài)。如果一個版本包含字符串“SNAPSHOT”,Maven就會在安裝或發(fā)布這個組件的時候?qū)⒃摲栒归_為一個日期和時間值,轉(zhuǎn)換為UTC(協(xié)調(diào)世界時)。例如,如果你的項目有個版本為“1.0-SNAPSHOT”并且你將這個項目的構(gòu)件部署到了一個Maven倉庫,如果你在UTC2008年2月7號下午11:08部署了這個版本,Maven就會將這個版本展開成“1.0-20080207-230803-1”。換句話說,當你發(fā)布一個snapshot,你沒有發(fā)布一個軟件模塊,你只是發(fā)布了一個特定時間的快照版本。

          那么為什么要使用這種方式呢?SNAPSHOT版本在項目活動的開發(fā)過程中使用。如果你的項目依賴的一個組件正處于開發(fā)過程中,你可以依賴于一個SNAPSHOT版本,在你運行構(gòu)建的時候Maven會定期的從倉庫下載最新的snapshot。類似的,如果你系統(tǒng)的下一個發(fā)布版本是“1.4”你的項目需要擁有一個“1.4-SNAPSHOT”的版本,之后它被正式發(fā)布。

          作為一個默認設(shè)置,Maven不會從遠程倉庫檢查SNAPSHOT版本,要依賴于SNAPSHOT版本,用戶必須在POM中使用repositorypluginRepository元素顯式的開啟下載snapshot的功能。

          當發(fā)布一個項目的時候,你需要解析所有對SNAPSHOT版本的依賴至正式發(fā)布的版本。如果一個項目依賴于SNAPSHOT,那么這個依賴很不穩(wěn)定,它隨時可能變化。發(fā)布到非snapshot的Maven倉庫(如http://repo1.maven.org/maven2)的構(gòu)件不能依賴于任何SNAPSHOT版本,因為Maven的超級POM對于中央倉庫關(guān)閉了snapshot。SNAPSHOT版本只用于開發(fā)過程。

          3. LATEST 和 RELEASE 版本

                當你依賴于一個插件或一個依賴,你可以使用特殊的版本值LATEST或者RELEASE。LATEST是指某個特定構(gòu)件最新的發(fā)布版或者快照版(snapshot),最近被部署到某個特定倉庫的構(gòu)件。RELEASE是指倉庫中最后的一個非快照版本。總得來說,設(shè)計軟件去依賴于一個構(gòu)件的不明確的版本,并不是一個好的實踐。如果你處于軟件開發(fā)過程中,你可能想要使用RELEASE或者LATEST,這么做十分方便,你也不用為每次一個第三方類庫新版本的發(fā)布而去更新你配置的版本號。但當你發(fā)布軟件的時候,你總是應(yīng)該確定你的項目依賴于某個特定的版本,以減少構(gòu)建的不確定性,免得被其它不受你控制的軟件版本影響。如果無論如何你都要使用LATEST和RELEASE,那么要小心使用。

          Maven 2.0.9之后,Maven在超級POM中鎖住了一些通用及核心Maven插件的版本號,以將某個特定版本Maven的核心Maven插件組標準化。這個變化在Maven 2.0.9中被引入,為Maven構(gòu)建帶來了穩(wěn)定性和重現(xiàn)性。在Maven 2.0.9之前,Maven會自動將核心插件更新至LATEST版本。這種行為導(dǎo)致了很多奇怪現(xiàn)象,因為新版本的插件可能會有一些bug,甚至是行為變更,這往往使得原來的構(gòu)建失敗。當Maven自動更新核心插件的時候,我們就不能保證構(gòu)建的重現(xiàn)性,因為插件隨時都可能從中央倉庫更新至一個新的版本。從Maven 2.0.9開始,Maven從根本上鎖住了一組核心插件的版本。非核心插件,或者說沒有在超級POM中指定版本的插件仍然會使用LATEST版本去從倉庫獲取構(gòu)件。由于這個原因,你在構(gòu)件中使用任何一個自定義非核心插件的時候,都應(yīng)該顯式的指定版本號。

          posted @ 2009-05-14 10:00 不需要解釋 閱讀(3680) | 評論 (0)編輯 收藏

          Often times you will have 3rd party JARs that you need to put in your local repository for use in your builds. The JARs must be placed in the local repository in the correct place in order for it to be correctly picked up by Maven. To make this easier, and less error prone, we have provide a goal in the install plug-in which should make this relatively painless. To install a JAR in the local repository use the following command:

          mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
              -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
          
          

          for example:

          mvn install:install-file -Dfile=jazzy-core-0.5.2.jar -DgroupId=jazzy-core  -DartifactId=jazzy -Dversion=0.5.2 -Dpackaging=jar

          posted @ 2009-05-06 11:06 不需要解釋 閱讀(116) | 評論 (0)編輯 收藏

          ResultSet 接口提供用于從當前行獲取列值的獲取 方法(getBoolean、getLong 等)。可以使用列的索引編號或列的名稱獲取值。一般情況下,使用列索引較為高效。列從 1 開始編號。為了獲得最大的可移植性,應(yīng)該按從左到右的順序讀取每行中的結(jié)果集列,每列只能讀取一次。
          對于獲取方法,JDBC 驅(qū)動程序嘗試將底層數(shù)據(jù)轉(zhuǎn)換為在獲取方法中指定的 Java 類型,并返回適當?shù)?Java 值。JDBC 規(guī)范有一個表,顯示允許的從 SQL 類型到 ResultSet 獲取方法所使用的 Java 類型的映射關(guān)系。

          注意: JDBC 驅(qū)動程序目前不支持 SQL Server sqlvariant 數(shù)據(jù)類型。如果使用查詢從包含 sqlvariant 數(shù)據(jù)類型列的表中檢索數(shù)據(jù),則會發(fā)生異常。

          Getter 方法轉(zhuǎn)換

          基于 SQL Server 2005 的數(shù)據(jù)類型,以下圖表包含 SQLServerResultSet 類的 get<Type> 方法的 JDBC 驅(qū)動程序轉(zhuǎn)換圖,以及 SQLServerCallableStatement 類的 get<Type> 方法支持的轉(zhuǎn)換。

          JDBC 驅(qū)動程序的 getter 方法支持三種基本的轉(zhuǎn)換類別:

          • Non-Lossy (x) :在 getter 類型等于或小于基礎(chǔ)服務(wù)器類型的情況下執(zhí)行轉(zhuǎn)換。例如,對基礎(chǔ)服務(wù)器的十進制數(shù)列調(diào)用 getBigDecimal 時,無需進行轉(zhuǎn)換。
          • Converted (y) :從數(shù)字服務(wù)器類型到 Java 語言類型的轉(zhuǎn)換,此時的轉(zhuǎn)換為常規(guī)轉(zhuǎn)換,并遵循 Java 語言轉(zhuǎn)換規(guī)則。對于這些轉(zhuǎn)換,總是直接截取有效位數(shù)(從不四舍五入),而溢出則按目標類型取模處理,以較小者為準。例如,對包含“1.9999”的基礎(chǔ)十進制數(shù)列調(diào)用 getInt 將返回“1”;如果基礎(chǔ)十進制數(shù)值為“3000000000”,則 int 值將溢出為“-1294967296”。
          • Data Dependent (z) :從基礎(chǔ)字符類型轉(zhuǎn)換到數(shù)字類型時,要求字符類型所包含的值可轉(zhuǎn)換成數(shù)字類型。不執(zhí)行其他轉(zhuǎn)換。如果值對于 getter 類型過大,則該值無效。例如,如果對包含“53”的 varchar(50) 列調(diào)用 getInt ,則該值作為 int 返回;但如果基礎(chǔ)值為“xyz”或“3000000000”,則發(fā)生錯誤。

          posted @ 2009-05-05 16:07 不需要解釋 閱讀(453) | 評論 (0)編輯 收藏

          我實話告訴你們,我可是身經(jīng)百戰(zhàn)了.bbs我見的多了,哪個版我沒灌過?你們要知道, 一塌糊 涂的triangle,PIC,SEX版,那比你們不知道厲害到哪里去了,我在那談笑風聲.你 們有一好就是無論在哪個版,什么話題都灌,但是灌來灌去的問題,都too simple, sometimes naive!你 們懂不懂呀?啊?所以說灌水啊,關(guān)鍵是要提高自己的知識水平.你 們啊,不要總想著弄個大坑,然后灌上十大,再把我羞辱一番……你們啊,naive!你們這 樣灌是不行地!~那你問我支持 不支持灌水,我說支持,我常來這裡灌,你說支持不支持?
          主站蜘蛛池模板: 遂平县| 肇州县| 华蓥市| 若羌县| 云阳县| 扎兰屯市| 咸丰县| 巴里| 新丰县| 斗六市| 桃园县| 前郭尔| 雅江县| 堆龙德庆县| 四川省| 大石桥市| 北宁市| 甘肃省| 广饶县| 泽州县| 桑植县| 孟连| 商都县| 信宜市| 西乌| 潞城市| 兴化市| 阳山县| 南漳县| 台江县| 浮山县| 孟州市| 富顺县| 凭祥市| 丰城市| 建平县| 沙河市| 微博| 石渠县| 新昌县| 伊宁市|