??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧洲日产v特级毛片,亚洲精品国产成人99久久,亚洲精品偷拍无码不卡avhttp://www.tkk7.com/Vencent/category/5790.html<font color='orange'>本博客仅为收集所用。在此对原作者表C感谢?lt;/font> <div class="custom"> <script type="text/javascript"><!-- google_ad_client = "pub-6256612161572960"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text"; google_ad_channel =""; google_page_url = document.location; google_color_border = ["FFDDAA","FFDDAA","FFDDAA","FFDDAA"]; google_color_bg = ["FFDDAA","FFDDAA","FFDDAA","FFDDAA"]; google_color_link = ["FFDDAA","0033FF","00008B","99CC33"]; google_color_url = ["999999","0033FF","00008B","FFCC00"]; google_color_text = ["0033FF","AA9999","0033FF","AA9999"]; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script></div>zh-cnWed, 28 Feb 2007 03:57:56 GMTWed, 28 Feb 2007 03:57:56 GMT60Java VS Rubyhttp://www.tkk7.com/Vencent/articles/58448.htmlVincent ChenVincent ChenSun, 16 Jul 2006 11:17:00 GMThttp://www.tkk7.com/Vencent/articles/58448.htmlhttp://www.tkk7.com/Vencent/comments/58448.htmlhttp://www.tkk7.com/Vencent/articles/58448.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/58448.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/58448.html


记一下?br />

Vincent Chen 2006-07-16 19:17 发表评论
]]>
在Win32q_上编?Apache (2.0.x - 2.2.x) + SSLhttp://www.tkk7.com/Vencent/articles/44792.htmlVincent ChenVincent ChenSat, 06 May 2006 11:07:00 GMThttp://www.tkk7.com/Vencent/articles/44792.htmlhttp://www.tkk7.com/Vencent/comments/44792.htmlhttp://www.tkk7.com/Vencent/articles/44792.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/44792.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/44792.html1 介绍

Apache HTTP Server 是一ƾ优U的开放源码YӞ?996q以来已l被q泛地应用于多种操作pȝ。据Netcraft.com 2006q?月的l计Q目前Internet?8.70%|站用的是Apache?

OpenSSL 是一个稳定的而且功能齐全的开放源码工具包Q它实现了安全套接字?(SSL v2/v3)和传输层层安?(TLS v1)协议Q也是一个强大的通用加密工具库?

不幸的是 Apache HTTP Server 官方提供的安装包目前不包含SSL功能Q因为美国政府对“strong crypto redistribution”有意见。但是爱好者们可以自己DIY?

本h?3qvQ编译了Apache (2.0.x - 2.2.x)和OpenSSL (0.9.6i - 0.9.8a)几乎每个版本?

2 ~译材料清单

2.1 ~译OpenSSL所需材料

2.2 ~译Apache所需材料

2.3 环境变量

  • 把以下文件的路径攑ֈPATH? perl.exe, awk.exe, nasmw.exe, bison.exe, flex.exe, sed.exe, nmake.exe, mspdb60.dll?
  • 在INCLUDE和LIB里把MS Platform SDK攑ֈVC 6.0前面?

3 ~译OpenSSL

  • 把OpenSSL源码解开C个目录,比如 c:\openssl
  • 讄Perl
        c:\openssl>perl Configure VC-WIN32
  • 生成Makefiles
        c:\openssl>ms\do_nasm
  • 用VC++~译
        nmake -f ms\ntdll.mak
  •     c:\openssl>cd out32dll
    c:\openssl\out32dll>..\ms\test

4 ~译Apache

  • 把Apache源码解开C个目录,比如 c:\httpd-2.2.0
  • 复制OpenSSL?
        c:\httpd-2.2.0>mkdir srclib\openssl
    c:\httpd-2.2.0>xcopy/e openssl srclib\openssl
  • ~译
        nmake -f makefile.win SERVERNAME=myDomainName PORT=myPort 
    INSTDIR=myInstallDir installr
  • 删除多余文g (可?。以下语a文g一般可以删除:(x)*.de *.es *.euc-jp *.euc-kr *.fr *.ja *.jis *.ko *.koi8-r *.pt-br。如果不惌?.pdb文g也可删除?


Vincent Chen 2006-05-06 19:07 发表评论
]]>
配置 Apache 2.2.x + Tomcat 5.5.xhttp://www.tkk7.com/Vencent/articles/44791.htmlVincent ChenVincent ChenSat, 06 May 2006 11:06:00 GMThttp://www.tkk7.com/Vencent/articles/44791.htmlhttp://www.tkk7.com/Vencent/comments/44791.htmlhttp://www.tkk7.com/Vencent/articles/44791.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/44791.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/44791.html1 Apache?/h3>

1.1 ~辑APACHE_HOME/conf/httpd.conf

d以下语句, 把APACHE_HOMEҎ(gu)相应目录.

    LoadModule jk_module modules/mod_jk.so
JkWorkersFile "APACHE_HOME/conf/workers.properties"
JkLogFile "APACHE_HOME/logs/mod_jk.log"
JkMount /*.jsp worker1
JkMount /*/servlet/* worker1

1.2 生成workers.properties配置文g

生成如下配置文g文g,

    worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

2 Tomcat?/h3>

2.1 ~辑TOMCAT_HOME/conf/server.xml

在Host element下添加相应Context,

    <!-- Test Context -->
<Context path="/test" docBase="APACHE_HOME/htdocs/test" reloadable="true"
crossContext="true"/>

2.2 ~辑TOMCAT_HOME/conf/web.xml (可?

Tomcat 4.1.12之后的版本缺省配|下不能?servlet/*的方式来调用/WEB-INF/classes路径下的servlet. 4.1.12的RELEASE-NOTES提及(qing)以下变化,

Starting with Tomcat 4.1.12, the invoker servlet is no longer available by default in all webapps. Enabling it for all webapps is possible by editing $CATALINA_HOME/conf/web.xml to uncomment the "/servlet/*" servlet-mapping definition.

Using the invoker servlet in a production environment is not recommended and is unsupported. More details are available on the Tomcat FAQ at http://tomcat.apache.org/faq/misc.html#invoker.

其实q需要Tomcat 5.0之后的版本还需要去掉web.xml另一D语句的注释, y؜的是官方文档没提?

也许因ؓ(f)无法消灭q个安全漏洞, 黔驴技IL(fng)开发h员只好宣? "Using /servlet/ to map servlets is evil, absolutely evil". q个解决Ҏ(gu)真是convenient, absolutely convenient.

而言? 用户需要去掉以下段落的注释,

    <servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>


Vincent Chen 2006-05-06 19:06 发表评论
]]>
配置 Apache 2.2.x + PHP 5.xhttp://www.tkk7.com/Vencent/articles/44789.htmlVincent ChenVincent ChenSat, 06 May 2006 11:05:00 GMThttp://www.tkk7.com/Vencent/articles/44789.htmlhttp://www.tkk7.com/Vencent/comments/44789.htmlhttp://www.tkk7.com/Vencent/articles/44789.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/44789.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/44789.htmlApache?/h4>

打开conf/httpd.confd以下语句Q记得把PHP_HOMEҎ(gu)相应目录?

    LoadModule php5_module "PHP_HOME/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "PHP_HOME"

PHP?/h4>
  • ~辑php.ini中以下变量:(x)doc_root, extension_dir (l对路径)
  • 如用MySQL, L以下语句的注释,或添加相应语?
        extension=php_mysql.dll
    extension=php_mysqli.dll
  • 把libmysql.dll拯到APACHE_HOME/bin


Vincent Chen 2006-05-06 19:05 发表评论
]]>配置 Apache 2.2.x + SSLhttp://www.tkk7.com/Vencent/articles/44790.htmlVincent ChenVincent ChenSat, 06 May 2006 11:05:00 GMThttp://www.tkk7.com/Vencent/articles/44790.htmlhttp://www.tkk7.com/Vencent/comments/44790.htmlhttp://www.tkk7.com/Vencent/articles/44790.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/44790.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/44790.html1 基础 (可?

  • ~辑APACHE_HOME/conf/httpd.conf中的以下directives和tags,
    ServerRoot, ServerAdmin, ServerName, DocumentRoot, 
    <Directory %DocumentRoot%>, DirectoryIndex, ScriptAlias /cgi-bin/,
    <Directory %cgi-bin%>
  • L以下语句的注?
    Include conf/extra/httpd-manual.conf

2 生成RSA密钥 (private key)

下面两个命o(h)都可以生成密?

    openssl genrsa -des3 -out server.key
openssl genrsa -out server.key

-des3选项可以加密生成的密? 但是Win32q_不支持加密密钥,启动Apache时会(x)产生以下错误信息, "SSLPassPhraseDialog builtin is not supported on Win32"

3 生成自签|证?(self-signed certificate)

在OpenSSL源码?openssl\apps"目录可以扑ֈopenssl.cnf (OpenSSL配置文g).

    openssl req -config openssl.cnf -new -x509 -key server.key -out 
server.crt -days 365

4 ~辑APACHE_HOME/conf/httpd.conf

L以下语句的注?

   Include conf/extra/httpd-ssl.conf

5 ~辑 conf/extra/httpd-ssl.conf

  • ?tt>SSLMutex标签的值改为default
  • ~辑以下directives(可?,
    DocumentRoot, ServerName, ServerAdmin, ErrorLog, TransferLog, 
    SSLCertificateFile, SSLCertificateKeyFile


Vincent Chen 2006-05-06 19:05 发表评论
]]>
xmlBean资料文档攉(转自david.turing's Blog)http://www.tkk7.com/Vencent/articles/41547.htmlVincent ChenVincent ChenMon, 17 Apr 2006 17:01:00 GMThttp://www.tkk7.com/Vencent/articles/41547.htmlhttp://www.tkk7.com/Vencent/comments/41547.htmlhttp://www.tkk7.com/Vencent/articles/41547.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/41547.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/41547.html

XMLBeans Schema Tools (XMLBeans Version 1.0.3)  This site allows XML Schema validation and compilation tools. You can submit an XML Schema (via file upload or cut and paste) or a set of XML Schemas (zip file) and you can download the resulting XMLBeans JAR file.

XMLBeans Schema Tools (XMLBeans Version 2.0)  Same as above but for XMLBeans V2.0

Do you have or know of a tool that works with XMLBeans? Let us know and we will list it here.

XMLBeans Articles



Vincent Chen 2006-04-18 01:01 发表评论
]]>
110个知名Java目集锦Q包括url和描qͼ(j)http://www.tkk7.com/Vencent/articles/41283.htmlVincent ChenVincent ChenSat, 15 Apr 2006 15:12:00 GMThttp://www.tkk7.com/Vencent/articles/41283.htmlhttp://www.tkk7.com/Vencent/comments/41283.htmlhttp://www.tkk7.com/Vencent/articles/41283.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/41283.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/41283.html 目名称   目描述 ASM Java bytecode manipulation framework AspectWerkz AspectWerkz - Dynamic AOP for Java Axis Axis - an implementation of the SOAP (Simple Object Access Protocol) submission to W3C Batik Batik SVG Toolkit - Toolkit using images in the Scalable Vector Graphics (SVG) format BCEL Byte Code Engineering Library - Analyze, create and manipulate Java class files BeanUtils BeanUtils - Utilities for working with JavaBeans Catalina Catalina - Servlet and JSP based web server Cayenne Professional Object Relational Mapping CGLIB CGLIB - Dynamic byte code generator Chain Chain - Implementation of the GoF "Chain of Responsibility" pattern Checkstyle Checkstyle - Development tool to help writing Java code that adheres to a coding standard CLI Command Line Library - Simple API for working with the command line arguments and options Codec Commons Codec - Encoders and decoders like Base64, Hex, phonetic encodings and URLs Collections Collections - Filling the holes left in Sun's Collections API Configuration Commons Configuration - Generic API enabling configuration from a variety of sources DBCP DBCP - Connection pooling implementations DBUtils DbUtils - Set of classes designed to make working with JDBC easier Digester Struts Digester - Configure an XML/Java mapping with actions when patterns are recognized Discovery Discovery - Discovering, or finding, implementations for pluggable interfaces DNSJava DNS in Java - Supporting common record types, queries, zone transfers and dynamic updates doclet JavaDoc Doclet - Custom output from the types methods and fields in a source tree. Dom4j DOM4J - XML, XPath and XSLT library DTDParser DTDParse DTD Library - You can use this library to parse a DTD EL EL - The JSP 2.0 Expression Language Interpreter from Apache fastutil FastUtil - Type-specific maps sets and lists with a small memory footprint and fast access FileUpload HTTP File Upload Library - Add robust, fast file upload capability to your web applications FreeMarker HTML Template Engine GJT Giant Java Tree - Java library consisting entirely of open source components gnu-regex GNU Regular Expressions - Implementation of a traditional (non-POSIX) NFA regex engine Groovy Groovy - Scripting Language Hibernate Hibernate - Relational Persistence For Idiomatic Java HiveMind HiveMind - A services and configuration microkernel HSQLDB HSQLDB - The Java SQL relational database HTMLParser HTML Parser - Java library used to parse HTML HTTPClient HTTP Client - Fills holes left by the java.net package, including most recent HTTP standards Informa Informa - News aggregation library IO Commons-IO - Utility classes, stream implementations, file filters and endian classes for IO iText iText - Generates PDF on the fly J2EE Java 2 Platform, Enterprise Edition J2SE Java2 Standard Edition v5 JAI Java Advanced Imaging - Network-enabled, scalable, platform-independent image processing Jalopy Jalopy Source Formatter - Formats Java source code according to widely configurable rules Jasper Jasper - Tomcat JSP engine JasperReports JasperReports - Free Java reporting library Java3d Java3D - Object-oriented interfaces that support a simple, high-level programming mode JavaComm Java Communications - API for technologies such as voice mail, fax and smartcards JavaGroups JavaGroups - Reliable multicast communication enable processes to send messages to each other Jaxen Jaxen XPath Processor - Object model walker; evaluate XPath expressions in dom4j and JDOM JAXME JaxMe 2 - Open source implementation of JAXB JClassLib JClassLib - Library for reading, modifing and writing Java class files and bytecode JCommon JCommon - Collection of useful classes used by JFreeChart, JFreeReport and other projects JCrontab JCronTab - Scheduler written in Java, provide a fully functional schedules for Java projects JDIC JDIC - JDesktop Integration Components JDNC JDNC - JDesktop Network Components JDO Java Data Objects - Direct storage of Java domain model instances into a database JDOM JDOM XML Library - For accessing, manipulating and outputting XML data from Java code. JetSpeed JetSpeed - Java Portal Server JEXL Java Expression Language - is an embedable expression language engine JFreeChart JFreeChart - Free library for generating charts, including pie, bar, line and areas charts JGroups JGroups - Multicast communication toolkit JMeter JMeter - Load testing applcation JMF Java Media Framework - Library for audio, video and other time-based media JMock JMock - Testing library JSF JavaServer Faces - Web Framework JSword JSword - Bible software in Java, compatible with the Sword project for C/C++ JTidy JTidy - HTML syntax checker JUnit JUnit - Regression testing framework used by the developer who implements unit tests in Java JXPath JXPath Library - Simple interpreter of an expression language called XPath Lang Lang - Utilities including Enums, String manipulation, reflection, serialization and more Log4J Log4J - Fast logging API that lets you configure logging at runtime Logging Commons Logging - Simple wrapper API around multiple logging APIs Lucene Lucene - high-performance, full-featured text search engine written entirely in Java Math Math - Library of lightweight, self-contained mathematics and statistics components Net Network Library - Support for Finger, Whois, TFTP, Telnet, FTP, NNTP, etc developed by ORO OJB OJB - O/R tool that allows transparent persistence OpenJMS Open source JMS server ORO ORO - Text processing library OSCache OSCache - A high performance J2EE caching framework PJA Pure Java AWT - Toolkit for drawing graphics without any native graphics resources PMD PMD - Scans Java source code for potential problems POI POI - Java OLE 2 Manipulator Pool Commons Pooling - provides an generic, configurable Object-pooling API Primitives Primitives - Collection of types and utilities optimized for working with Java primitives Proxool Java connection pool Quartz Quartz - J2EE open source job scheduler Regexp Jakarta Regular Expressions - Java RegEx library under BSD style license Rhino Mozilla JavaScript - open-source implementation of JavaScript written entirely in Java Seraph Seraph - Atlassian Security Framework SiteMesh A web-page layout and decoration framework Slide Slide - Content repository, can serve as a basis for CMS SOAP Apache Soap - implementation of the SOAP submission to W3C Speedo OSS JDO implementation Spring Server Side alternative to J2EE APIs Struts Jakarta Struts - open source framework for building web applications Tapestry Tapestry - Web Framework Turbine Turbine - Servlet based framework allowing developers to quickly build secure web applications UDDI4J UDDI4J - Library that provides an API to interact with a UDDI registry Validator Validtator - Validate data from user input Velocity Velocity - Support for clean, quick MVC web development and support for the Struts framework Village Village - API that sits on top of the JDBC to make it easier to interact with a JDBC WebWork 2 Next generation of WebWork Xalan Xalan - XSLT processor for transforming XML documents into HTML, text, or XML XDoclet XDoclet - Code generation engine Xerces Xerces2 - The next generation of high performance, XML parsers in the Apache Xerces family XMLBeans XMLBeans - XML-Java binding tool XMLPull XMLPull - Defines a simple pull parsing API that does pull XML parsing from J2ME to J2EE XMLRPC XML-RPC - Implementation of XML-RPC, using XML over HTTP to implement remote procedure calls XNI Xerces Native Interface - Framework for streaming a document and constructing generic parsers XOM XML Object Model - Tree-based API for processing XML that strives for correctness and simplicity. XStream XML serialization

Vincent Chen 2006-04-15 23:12 发表评论
]]>
[转脓(chung)]有效~写软g?5条徏?/title><link>http://www.tkk7.com/Vencent/articles/41265.html</link><dc:creator>Vincent Chen</dc:creator><author>Vincent Chen</author><pubDate>Sat, 15 Apr 2006 12:39:00 GMT</pubDate><guid>http://www.tkk7.com/Vencent/articles/41265.html</guid><wfw:comment>http://www.tkk7.com/Vencent/comments/41265.html</wfw:comment><comments>http://www.tkk7.com/Vencent/articles/41265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Vencent/comments/commentRss/41265.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Vencent/services/trackbacks/41265.html</trackback:ping><description><![CDATA[ 1. 你们的项目组使用源代码管理工具了么?<br /><p>    应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS?/p><p> 2. 你们的项目组使用~陷理pȝ了么Q?br />    应该用。ClearQuest太复杂,我的推荐是BugZilla?</p><p> 3. 你们的测试组q在用Word写测试用例么Q?br />   不要用Word写测试用例(Test CaseQ。应该用一个专门的pȝQ可以是Test ManagerQ也可以是自己开发一个ASP.NET的小|站。主要目的是Track和Browse?</p><p> 4. 你们的项目组有没有徏立一个门L(fng)站?<br />   要有一个门L(fng)站,用来放Contact Info、Baselined Schedule、News{等。推荐Sharepoint Portal Server 2003来实玎ͼ15分钟搞定。买不vSPS 2003可以用WSS (Windows Sharepoint Service)?</p><p> 5. 你们的项目组用了你能买到最好的工具么?<br />  应该用尽量好的工h工作。比如,应该用VS.NET而不是Notepad来写C(j)#。用Notepad写程序多半只是一U炫耀。但也要考虑到经费,所以说?你能买到最好的"?<br /> <br /> 6. 你们的程序员工作在安静的环境里么Q?br />  需要安静环境。这Ҏ(gu)端重要,而且要保证每个h的空间大于一定面U?</p><p> 7. 你们的员工每个h都有一部电(sh)话么Q需要每Z部电(sh)话。而且?sh)话最好是带留a功能的。当?dng)上这么一套带留言?sh)话pȝ开销不小。不q至每Z部电(sh)话要有,千万别搞得经常有人站h喊:(x)"某某某电(sh)?。《h件》里面就强烈谴责q种做法?</p><p> 8. 你们每个人都知道Z问题应该找谁么?<br />  应该知道。Q何一个Feature臛_都应该有一个OwnerQ当?dng)Owner可以l箋Dispatchl其他h?/p><p> 9. 你遇到过有h?我以为?么?<br />  要消?我以?。Never assume anything?</p><p>10. 你们的项目组中所有的人都坐在一起么Q?br />  需要。我反对Virtual TeamQ也反对Dev在美国、Test在中国这U开发方式。能坐在一起就最好坐在一P好处多得不得了?</p><p>11. 你们的进度表是否反映最新开发进展情况? <br />  应该反映。但是,应该用Baseline的方法来理q度表:(x)l护一份稳定的ScheduleQ再l护一份最新更攏VBaseline的方法也应该用于其它的Spec。Baseline是变更管理里面的一个重要手Dc(din)?/p><p>12. 你们的工作量是先由每个h自己估算的么Q?br />  应该让每个h自己估算。要从下而上估算工作量,而不是从上往下分z。除非有其他原因Q比如政MQ务工期固定等?</p><p>13. 你们的开发h员从目一开始就加班么?<br />  不要q样。不要一开始就搞疲x。从目一开始就加班Q只能说明项目进度不合理。当?dng)一些对日Y件外包必d天加班,那属于剥削的范畴?</p><p>14. 你们的项目计划中Buffer Time是加在每个小d后面的么Q?br />  不要。Buffer Time加在每个Q务后面,很容易轻易的p消耗掉。Buffer Time要整D늚加在一个Milestone或者checkpoint前面?</p><p>15. 值得再多׃些时_(d)?5%做到100%好值得Q非常值得?br />  其当项目后期h困马乏的时候,要坚持。这?x)给产品带来质的区别?</p><p>16. 登记新缺hQ是否写清了重现步骤Q?br />  要。这属于Dev和Test之间的沟通手Dc(din)面寚w沟通需要,详细填写Repro Steps也需要?</p><p>17. 写新代码前会(x)把已知缺陯决么Q?br />    要。每个h的缺陷不能超q?0个或15个,否则必须先解册的bug才能l箋写新代码?</p><p>18. 你们对缺L(fng)轻重~急有事先的约定么Q?br />  必须有定义。Severity要分1??Q约定好Q蓝屏和Data LostSev 1QFunction ErrorSev 2Q界面上的算Sev 3。但q种U定可以Ҏ(gu)产品质量现状适当q行调整?/p><p>19. 你们Ҏ(gu)见不一的缺h三国?x)议么?br />    必须要有。要有一个明的决策q程。这cM于CCB (Change Control Board)的概c(din)?</p><p>20. 所有的~陷都是q记的人最后关闭的么? <br />  Bug应该由O(jin)pener关闭。Dev不能U自关闭Bug?</p><p>21. 你们的程序员厌恶修改老的代码么?<br />  厌恶是正常的。解x法是l织Code ReviewQ单独留出时间来。XP也是一个方法?</p><p>22. 你们目l有Team Morale Activity么?<br />  每个月都要搞一ơ,吃饭、唱歌、Outing、打球、开卡丁车等{,一定要有。不要剩q些钱?</p><p>23. 你们目l有自己的Logo么?<br />  要有自己的Logo。至应该有自己的Codename?</p><p>24. 你们的员工有印有公司Logo的T-Shirt么?<br />  要有。能增强归属感。当?dng)T-Shirt要做的好看一些,最好用80支的来做。别没穿几次q破烂烂的?/p><p>25. ȝ理至每月参加次目l会(x)议要的?br />  要让team member觉得高层xq个目?</p><p>26. 你们是给每个Dev开一个分支么Q?br />  反对。Branch的管理以?qing)Merge的工作量太大Q而且Ҏ(gu)出错?</p><p>27. 有h长期不Check-In代码么?<br />  不可以。对大部分项目来_(d)最多两三天应该Check-In?</p><p>28. 在Check-In代码旉填写注释了么Q?br />  要写的,臛_一两句话,比如"解决了Bug No.225Q给bug~号Q?。如果往高处拔,q也做"配置审计"的一部分?/p><p>29. 有没有设定每天Check-In的最后期限?<br />  要的Q要明确Check-In Deadline。否则会(x)Build Break?</p><p>30. 你们能把所有源码一下子~译成安装文件吗Q?<br />  要的。这是每日编译(Daily BuildQ的基础。而且必须要能够做成自动的?</p><p>31. 你们的项目组做每日编译么Q?br />  当然要做。有三样东西是Y仉?产品开发必备的Q?. bug management; 2. source control; 3. daily build?</p><p>32. 你们公司有没有积累一个项目风险列表?<br />  要。Risk Inventory。否则,下个目开始的时候,又只能拍脑袋分析Risk了?/p><p>33. 设计简单越好越单越好?br />  设计时候多一句话Q将来可能就带来无穷无尽的烦(ch)恹{应该从一开始就勇敢的砍。这叫scope management?</p><p>34. 量利用现有的品、技术、代码千万别什么东襉K自己Coding。BizTalk和Sharepoint是最好的例子Q有q两个作为基Q可以把L(fng) 提高很多。或者可以尽量多用现成的Control之类的。或者尽量用XMLQ而不是自己去Parse一个文本文Ӟ量用RegExpQ而不是自׃头操 作字W串Q等{等{。这是"软g复用"的体现?</p><p>35. 你们?x)隔一D|间就停下来夯实代码么Q?br />  要。最好一个月左右一ơ。传adq初Windowsl在Stevb的命令下停过一个月增强安全。BtwQ??q个字念"hang"Q第一声?</p><p>36. 你们的项目组每个人都写Daily Report么?<br />  要写。五分钟够了,?0句话左右Q告诉自己小l的Z天我q了什么。一则ؓ(f)了沟通,二则鞭策自己Q要是游手好闲一天,自己都会(x)不好意思写的)(j)?/p><p>37. 你们的项目经理会(x)发出Weekly Report么?<br />  要。也是ؓ(f)了沟通。内容包括目前进度,可能的风险,质量状况Q各U工作的q展{?/p><p>38. 你们目l是否至每周全体开?x)一ơ?<br />  要。一定要开?x)。程序员讨厌开?x),但每个礼拜开?x)时间加h臛_应该?时。包括team meeting, spec review meeting, bug triage meeting。千万别大家闷头写code?</p><p>39. 你们目l的?x)议、讨论都有记录么Q?br />  ?x)前发meeting request和agendaQ会(x)中有责主持和记录Q会(x)后有责发meeting minutesQ这都是effective meeting的要炏V而且Q每个会(x)议都要Ş成agreements和action items?/p><p>40. 其他部门知道你们目l在q什么么Q?br />  要发一些Newsflashl整个大l织。Show your team's value。否则,当你坐在甉|里面Q其他部门的人问Q?你们在干?Q你回答"ABC目"的时候,别h全然不知Q那U感觉不太好?</p><p>41. 通过Emailq行所有正式沟?<br />  Email的好处是免得抵赖。但也要避免矫枉q正Q最好的Ҏ(gu)是先用电(sh)话和当面_(d)然后Email来确认?</p><p>42. 为项目组建立多个Mailing Group <br />   如果在AD+Exchange里面Q就建Distribution List。比如,我会(x)建ABC Project Core TeamQABC Project Dev TeamQABC Project All TestersQABC Project Extended Team{等。这样发起Email来方便,而且能让该收到email的h都收到、不该收C被骚(d)扰?</p><p>43. 每个人都知道哪里可以扑ֈ全部的文档么Q?br />  应该每个人都知道。这叫做知识理QKnowledge ManagementQ。最方便的就是把文档攑֜一个集中的File ShareQ更好的Ҏ(gu)是用Sharepoint?</p><p>44. 你做军_、做变化Ӟ告诉大家原因了么Q?br />   要告诉大家原因。Empower team member的手D之一是提供够的informationQ这是MSF一开的几个原则之一。的如此,tell me why是h之常情,tell me why了才能有understanding。中国h做事喜欢搞限Ӟ限制信息Q似乎能够看到某一份文件的人就是有w䆾的h。大错特错。权威、权力,不在? 是不是能access information/dataQ而在于是不是掌握资源?</p><p>45. Stay agile and expect change 要这栗?br />  需求一定会(x)变的Q已l写好的代码一定会(x)被要求修改的。做好心理准备,对change不要抗拒Q而是expect change?</p><p>46. 你们有没有专职的软g试人员Q?br />  要有专职试。如果h手不够,可以peer testQ交换了试。千万别自己试自己的?</p><p>47. 你们的测试有一份ȝ计划来规定做什么和怎么做么Q?br />    q就是Test Plan。要不要做性能试Q要不要做Usability试Q什么时候开始测试性能Q测试通过的标准是什么?用什么手D,自动的还是手动的Q这些问题需要用Test Plan来回{?/p><p>48. 你是先写Test Case然后再测试的么?<br />  应该如此。应该先设计再编E、先test case再测试。当?dng)事情是灵zȝ。我有时候在做第一遍测试的同时补上test case。至于先test case再开发,我不喜欢Q因Z?fn)惯Q太ȝ(ch)Q至于别人推荐,那试试看也无妨?</p><p>49. 你是否会(x)为各U输入组合创建测试用例?<br />  不要Q不要搞边界条gl合。当心组合爆炸。有很多test case工具能够自动生成各种边界条g的组?-但要x楚,你是否有旉去运行那么多test case?</p><p>50. 你们的程序员能看到测试用例么Q?br />  要。让Dev看到Test Case吧。我们都是ؓ(f)了同一个目的走Ch的:(x)提高质量?/p><p>51. 你们是否随便抓一些h来做易用性测试? <br />  要这么做。自q自己写的E序界面Q怎么看都是顺眼的。这叫做审美疲劳--臭的看久了也׃臭了Q不方便的永久了也就?fn)惯了?</p><p>52. 你对自动试的期望正么Q?br />  别期望太高。依我看Q除了性能试以外Q还是暂时先忘掉"自动试"吧,忘掉WinRunner和LoadRunner吧。对于国内的软g试的现状来_(d)只能"矫枉必须q正"了?</p><p>53. 你们的性能试是等所有功能都开发完才做的么Q?br />  不能q样。性能试不能被归到所谓的"pȝ试"阶段。早早Ҏ(gu)Q早L升天?</p><p>54. 你注意到试中的杀虫剂效应了么Q?br />  虫子有抗药性,Bug也有。发现的新Bug来少是正常的。这时候,最好大家交换一下测试的areaQ或者用用看其他工具和手法,又?x)发C些新bug了?/p><p>55. 你们目l中有h能说Z品的当前整体质量情况么?<br />  要有。当老板问vq个产品目前质量如何QTest Lead/Manager应该负责回答?</p><p>56. 你们有单元测试么Q?br />  单元试要有的。不q没有单元测试也不是不可以,我做q没有单元测试的目Q也做成功了--可能是oq,可能是大安是熟手的关系。还是那句话QY件工E是非常实践、非常工E、非常灵zȝ一套方法,某些Ҏ(gu)在某些情况下?x)比另一些方法好Q反之亦然?</p><p>57. 你们的程序员是写完代码就扔过墙的么?<br />  大忌。写好一块程序以后,即便不做单元试Q也应该自己先跑一跑。虽然有了专门的试人员Q做开发的Z不可以一Ҏ(gu)试都不做。微软还有Test Release Document的说法,E序太烂的话Q测试有权踢回去?/p><p>58. 你们的程序中所有的函数都有输入(g)查么Q?br />  不要。虽然说做输入检查是write secure code的要点,但不要做太多的输入检查,有些内部函数之间的参C递就不必(g)查输入了Q省点功夫。同L(fng)道理Q未必要l所有的函数都写注释。写一部分主要的就够了?/p><p>59. 产品有统一的错误处理机制和报错界面么?<br />   要有。最好能有统一的error messageQ然后每个error message都带一个error number。这P用户可以自己Ҏ(gu)error number到user manual里面ȝ看错误的具体描述和可能原因,像SQL Server的错误那栗同PASP.NET也要有统一的Exception处理。可以参考有关的Application Block?</p><p>60. 你们有统一的代码书写规范么Q?br />  要有。Code Convention很多Q搞一份来发给大家可以了。当?dng)要是有FxCopq种工具来检查代码就更好了?</p><p>61. 你们的每个h都了解项目的商业意义么?<br />   要。这是Vision的意思。别把项目只当成工作。有时候要想着自己是在Z国某某行业的信息化作先驱者,或者时不时的告诉team memberQ这个项目能够ؓ(f)某某某国安门每q节省多多百万的U税人的钱,q样有动力了。^凡的事情也是可以有个崇高的目标的?/p><p>62. 产品各部分的界面和操作习(fn)惯一致么Q?br />  要这栗要让用戯得整个程序好像是一个h写出来的那样?/p><p>63. 有可以作为宣传亮点的Cool Feature么?<br />  要。这是增强团队凝聚力、信心的。而且Q?一俊遮百丑"Q有亮点可以掩盖一些问题。这P对于客户来说Q会(x)感觉产品从质量角度来说还是acceptable的。或者说Qcool feature或者说亮点可以作ؓ(f)质量问题的一个事后I补措施?</p><p>64. 可能羃短品的启动旉要这栗?br />  软g启动旉QStart-Up timeQ是客户Ҏ(gu)能好坏的第一印象?/p><p>65. 不要q于注重内在品质而忽视了W一眼的外在印象E序员容易犯q个错误Q太看重性能、稳定性、存储效率,但忽视了外在感受。而高层经理、客h相反。这两方面要兼顾Q协调这些是PM的工作?/p><p>66. 你们Ҏ(gu)详细产品功能说明书做开发么Q?br />  要这栗要有设计才能开发,q是必须的。设计文档,应该说清楚这个品会(x)怎么q行Q应该采取一些讲故事的方法。设计的时候千万别ȝ节,别钻到数据库、代码等具体实现里面去,那些是后面的事情Q一步步来不能着急?</p><p>67. 开始开发和试之前每个人都仔细审阅功能设计么?<br />  要做。Function Spec review是用来统一思想的。而且Qreviewq以后Ş成了一致意见,来再也没有人可以说"你看Q当初我是反对q么设计的,现在吃苦头了? </p><p>68. 所有h都始l想着The Whole Image么?要这栗项目里面每个h虽然都只是在刉一片叶子,但每个h都应该知道自己在刉的那片叶子所在的?wi)是怎么样子的。我反对软g蓝领Q反对过分的把Y件制造看成流水线、R间。参见第61条?/p><p>69. Dev工作的划分是单纯U向或横向的么?<br />  不能单纯的根据功能模块分Q或者单U根据表现层、中间层、数据库层分。我推荐q么做:(x)首先Ҏ(gu)功能模块分,然后每个"?都有一个Owner来Review所有h的设计和代码Q保证consistency?</p><p>70. 你们的程序员写程序设计说明文档么Q?br />  要。不q我听说微Y的程序员1999q以前也不写。所以说Q写不写也不是绝对的Q偷懒有时候也是可以的。参见第56条?/p><p>71. 你在招h面试时让他写一D늨序么Q?br />  要的。我最喜欢让h做字W串和链表一cȝ题目。这U题目有很多循环、判断、指针、递归{,既不偏向q于考算法,也不偏向q于考特定的API?</p><p>72. 你们有没有技术交讲座?<br />  要的。每一两个C拜搞一ơ内部的Tech Talk或者Chalk Talk吧。让l员之间分n技术心得,q笔花钱送到外面d训划?</p><p>73. 你们的程序员都能专注于一件事情么Q?br />   要让E序员专注一件事。例如说Q一个部门有两个目?0个hQ一U方法是?0个h同时参加两个目Q每个项目上每个人都?0%旉Q另一U方法是 5个h去项目AQ?个h去项目BQ每个h?00%在某一个项目上。我一定选后面一U。这个道理很多h都懂Q但很多领导实践h把属下当成可以L拆分 的资源了?</p><p>74. 你们的程序员?x)夸大完成某工作所需要的旉么?<br />  ?x)的Q这是常见的Q尤其会(x)在项目后期夸大做某个change所需要的旉Q以ơ来抵制change。解决的Ҏ(gu)是坐下来慢慢,掉E序员的逆反心理Q一起分析,q把估算旉的颗_度变小?</p><p>75. 量不要用Virtual Heads 最好不要用Virtual Heads?br />   Virtual heads意味着resource is not secureQshared resource?x)降低resource的工作效率,Ҏ(gu)增加出错的机?x),会(x)让一心二用的人没有太多时间去review spec、review design。一个dedicated的hQ要两个只能投入50%旉和精力的人。我是吃q亏的:(x)7个part time的testerQ发现的Bug和干的活Q加hq不如两个full-time的。参见第73条?3条是针对E序员的Q?5条是针对 Resource Manager的?/p><img src ="http://www.tkk7.com/Vencent/aggbug/41265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Vencent/" target="_blank">Vincent Chen</a> 2006-04-15 20:39 <a href="http://www.tkk7.com/Vencent/articles/41265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>恢复pȝ栏显C桌面快捷键命o(h)(转自soff@newsmth)http://www.tkk7.com/Vencent/articles/34579.htmlVincent ChenVincent ChenThu, 09 Mar 2006 17:21:00 GMThttp://www.tkk7.com/Vencent/articles/34579.htmlhttp://www.tkk7.com/Vencent/comments/34579.htmlhttp://www.tkk7.com/Vencent/articles/34579.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/34579.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/34579.html

Vincent Chen 2006-03-10 01:21 发表评论
]]>
Domain Pollution Resolution 域污染解?/title><link>http://www.tkk7.com/Vencent/articles/32205.html</link><dc:creator>Vincent Chen</dc:creator><author>Vincent Chen</author><pubDate>Thu, 23 Feb 2006 13:56:00 GMT</pubDate><guid>http://www.tkk7.com/Vencent/articles/32205.html</guid><wfw:comment>http://www.tkk7.com/Vencent/comments/32205.html</wfw:comment><comments>http://www.tkk7.com/Vencent/articles/32205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Vencent/comments/commentRss/32205.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Vencent/services/trackbacks/32205.html</trackback:ping><description><![CDATA[<table class="confluenceTable"><tbody><tr><td class="confluenceTd"><b>主题</b> </td> <td class="confluenceTd"> Domain Pollution Resolution 域污染解?</td> </tr> <tr> <td class="confluenceTd"> <b>作?/b> </td> <td class="confluenceTd"> buaawhl </td> </tr> </tbody></table> <h2>Domain 名词解释</h2> <p>首先说明一?Domain 在本文中的意思?/p> <p><<Domain Driven Design>> 一书,?Domain q个词很火。引起了q泛争论Q哪? Logic 应该攑֜ Business Service Layer, 哪些应该攑֜ Domain Object 里面。这cM论纷Uh扬,最后通常都上升到哲学高度Q世界观高度Q认知心理学高度。如果不q发展到极端情况Q双方很可能开始相互质疑对方的智商和对世界? 基本理解能力。这个层ơ的Domain U争Q不是本文所兛_的话题?/p> <p>我一向认为,设计能够满如下的条Ӟ可以称为是一个好的设计:(x)<u>能够使用多态性,代替 Hard-Coded if else switch {逻辑分支Q新需求来的时候,不需要在旧代码里面添?if else switch{逻辑分支Q而只需要加入一个新?ClassQ尽量避?Package, Class U别的交叉引用?/u></p> <p>本文所兛_的Domain 是一个更高的层次Q类gDSL, Domain Specific Language 里面的Domain的意思?/p> <p>本文主要讨论如下议题Q?/p> <ul><li>HTML是否只应该用来表C结构?</li><li>HTML是否应该包含逻辑Q?/li><li>HTML是否应该包含服务器端脚本逻辑Q比如, JSP, Velocity, Freemarker.</li><li>HTML是否应该包含览器端脚本逻辑Q比如, Java Script.</li><li>Java 代码中是否应该输?HTML标签Q比如,Taglib, Tapestry Page Component, etc?</li><li>Java 代码中是否应该用框架特D的 HTML View Model? 比如Q?XMLC, Wicket, Echo, etc.</li><li>HTTP Web Server 本来的设计宗旨是无状态,支持大用户量Q多q接。目前的server side?page flow, web flow, continuation, 力图使得HTTP Web Server 保持用户的流E状态。这U做法是否应该推荐?</li><li>SQL是一U可L很好,应用q泛的一U?DSL。如何动态拼装SQL Q一直是一个难以解决的问题?/li><li>是否应该在Java 代码中嵌入SQL?</li><li>是否应该在Java 代码中?Criteria API?</li><li>是否应该在SQL Template 中加入动态语a脚本逻辑Q比?iBatis 使用XML if otherwise, OR Bridge 中用velocity?</li><li>HQL, OQL 在SQL中引入了OO 语言的特性,g操作的是对象数据库,而不是关pL据库。这U做法是否应该推荐?</li><li>Hibernate 动态期间篡改用户代码的做法Q是否应该推荐?</li><li>JDO静态期间篡Ҏ(gu)护代码的做法Q是否应该推荐?</li><li>Dynamic Proxy, CGLib {动态篡改用户代码的做法Q是否应该推荐?</li><li>Reflection l开?Java 的类型检查机Ӟ是否应该推荐Q?/li><li>Thread Local 是一U隐式契U,相当于绕开了显式契U(Ҏ(gu){֐method signatureQ,q种做法是否应该推荐Q?br> q些属于开发模式、代码风格方面的问题Q正如所?Code Smell的感觉一P也避免不了主观的成分。所以,下面的陈qƈ非论断,而只?在我看来"?/li></ul> <h2>HTML Template Layer</h2> <p>HTML应该量只用来表C结构,排除所有逻辑?/p> <p>JSP, Velocity, Freemarker {服务器端脚本逻辑Q属于Java Code或?Script Code对HTML 的污染?/p> <p>不仅应该排除JSP, Velocity, Freemarker {服务器端脚本逻辑Q而且应该排除览器端脚本逻辑Q比如Java Script.</p> <p>当然Q这里不是说Q不?Java ScriptQ而是_(d)不要把Java Script 攑֜HTML里面。把Java Script 攑֜一个单独的.js 文g里面Q在HTML中引入,q?CSS把HTML Element ?Java Script Event Handler 联系h?/p> <p>q方面的资料有:(x)</p> <p>Unobtrusive Javascript<br> <span id="8qwqium" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">http://www.onlinetools.org/articles/unobtrusivejavascript/<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span><br> <span id="8owg4ug" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">http://www.kryogenix.org/code/browser/aqlists/<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span><br> <span id="wwiwqoy" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">http://www.bobbyvandersluis.com/articles/goodpractices.php<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <p>如何排除HTML 中的Server Side Logic 呢?</p> <p>Ajax!</p> <p>Ajax fans 一定反应迅速,l出{案?/p> <p>没错。Ajax 可以做到。Ajax 的主要问题在于用和掌握隑ֺ?/p> <p>除了Ajax 呢?</p> <p>有几个选择QXMLC, Jivan, fastm, Wicket, Echo {?and Tapestry?)</p> <p>fastm 是我做的一个模板层Q具体内容可以在此下载?br> <span id="yaoc4ws" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://fastm.dev.java.net/files/documents/1911/25042/fastm1.0c.zip<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <p>fastm采用 XML Comment 作ؓ(f)文档l构标记。注意,是结构标讎ͼ而不是逻辑标记。不含有 for if else?/p> <p>可见Qfastm q不是毫无污染,只是没有逻辑污染。fastm 只在HTML中添加了自定义的l构标签Q也勉强没有违?HTML只用来表C结构的原意?/p> <p>Ajax, XMLC, Jivan 的HTML很干净Q而且对HTML l构的控制能力很强,能够用代码动态控制布局。fastm 也能够动态控制布局。Site mesh, tiles taglib, jsp, velocity, freemarker {做不到?/p> <p>fastm 里面的例子中Q包括一个分늚例子Q和一个动态组?SQL的例?/p> <h2>Java Web Layer</h2> <p>Taglib, Tapestry Page Component, Echo, Wicket {在Java 代码中输出HTML 标签Q这也是一U,而且要求在Java 代码中用框架特D的HTML View ModelQ比?Table, List, Label, Formbean {View Object 。用了q些框架QJava 代码的编译就需要依赖于q些框架了?/p> <p>q相当于HTML 标签对Java 代码的污染?/p> <p>JSP, Velocity, Freemarker 都不存在q种情况。Java 代码只是提供 POJOQ然?HTML 里面的Server Side Script使用q些 POJOQ?/p> <p>fastm不支持逻辑Q所以这个方面弱一些?fastm要求Java Code 把if, else {逻辑分支变成一个Map l构。由? Map属于java 的基本类Q所以,fastm也不需要在 Java code中用Q何特D的框架相关的view model ?/p> <h2>Web Layer - Stateless or Stateful</h2> <p>与其在服务器端支?page flow, web flow, continuationQ那不如在浏览器端支持状态。这U场合下Q我觉得Q正是?Ajax的最?jng)_所?/p> <p>我們֐于这L(fng)设计Q服务器端尽量无状态,如果实需要状态,那么量在浏览器D保持状态?/p> <p>lightweb 是我做的一个Web框架?br> <span id="qcswkmo" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://lightweb.dev.java.net/files/documents/4371/25044/lightweb0.9b.zip<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <p>主要的特Ҏ(gu)QURL-Centric, 鼓励无状态的Service Oriented 设计。支持三UService模型Q?/p> <ul><li>Action (like WebWork Action),</li></ul> <ul><li>Controller (like Spring MVC Controller),</li></ul> <ul><li>Channel (like Struts Action Dispatcher),</li></ul> <p>lightweb 支持多模块LQ用几条匹配规则,代替庞大的Site Map 配置文g?/p> <p>lightweb 查找View的时候,不是Ҏ(gu)Site Map 文g里面的那U小型状态机的配|(success <del>> showIt.jsp; fail</del>> this pageQ? 而是直接资源定位。lightwebl承?fastm的观点,把template 看作资源Q而不是一D运行脚本?/p> <p>Lightweb 设计为IoC友好。在各个环节都暴露出插g接口。程序员可以自己选择 IoC{略。可以采用一般的做法Q用一个IoC container 集中理Q比如,Spring IoC, Pico, Nano{;也可以分散到各子模块Q进行管理;也可以分散到每个 Action Validator里面理?/p> <h2>ORM Layer</h2> <p>Hibernate 动态期间篡改用户代码,JDO静态期间篡改用户代码?/p> <p>令我惌v黑客Q木马,夹带Q偷梁换q。这属于语义上的 Pollution。就是说Q从原有的Source 看v来,Domain Objectq没有那L(fng)行ؓ(f)Q运行v来却有那L(fng)行ؓ(f)?/p> <p>iBatis采用 reflectionQ确实干净。但是,性能、功能上又不够强大。某些功能的实现Q确实需要代码生成?/p> <p>lightor是我做的一?ORM框架?/p> <p><span id="c4siwyk" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://lightor.dev.java.net/files/documents/4370/25043/lightor0.5a.zip<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <p>lightor也需要代码生成。区别在于, lightor不修改Q何代码,只是产生新的 Mapper代码。Domain Object q行的时候,q是你原来的Domain Object。这避免了语义的污染?/p> <p>lightor生成?Mapper代码Q可以编译期cd(g)查,可以阅读Q跟t,调试。这些生成的代码Q也都遵循本文的原则?Java 代码里面不含有SQL 片断QSQL 都存在于单独的资源文件中?/p> <p>Q另外,不采用CGLib Q也是ؓ(f)了实现的单)(j)</p> <p>lightor直接使用 Native SQL。Lightor 的目的不是屏蔽关pL据库Q而是恰好相反。lightor 的目的是Q帮助程序员更清楚地认识关系数据库,SQLQ?JDBC。lightor 和JDBC不冲H,可以一起用?/p> <p>lightor努力的第一个主要方向就是效率。大数据量查询和处理的效率?/p> <p>据我所知,目前只有 lightor才支持大数据量批量处理,因ؓ(f)只有lightor 不惜降低ORM的n份和装层次Q能够接?ResultSet作ؓ(f)参数?/p> <p>lightor的缓存策略比 Hibernate更前q了一步,?query cache ?ID Cache 集成在一赗以便得到更好的控制。ƈ且,把缓存API暴露l程序员Q以便智能的控制某个特定的缓存?/p> <h2>SQL</h2> <p>HQL, OQL 在SQL中引入了OO 语言的特性,g操作的是对象数据库,而不是关pL据库?/p> <p>我感觉,q是一U语法层ơ上?Domain Pollution。OO 语法对SQL语法的污染?/p> <p>正如感觉LinkQ 是数据库查询语法对OO 语法的污染?/p> <p>Java 代码中?Criteria APIQ也属于数据库查询领域对 OO领域的污染?/p> <p>SQL是一U可L很好,应用q泛的一U?DSL?/p> <p>我的看法是,量把完整的 SQL攑ֈ单独的资源文件中Q可以直接Copy 到SQL Client可以运行。特D优化过?Native SQLQ也是同L(fng)C?/p> <p>HQL, OQL ȝ了用户对SQLq行Ҏ(gu)优化?/p> <p>如何动态拼装SQL Q一直是一个难以解决的问题?/p> <p>直接在Java 代码中嵌入SQL Q肯定不行。前面说了,Java里面最好不要有 SQL片断Q最好放到另外的资源文g中?/p> <p>在Java 代码中?Criteria API? 前面也否定了?/p> <p>在SQL Template 中加入动态语a脚本逻辑Q比?iBatis 使用XML if otherwise, OR Bridge 中用velocity?</p> <p>q种Ҏ(gu)q是不错。不q仍然在 SQL里面引入了脚本逻辑?/p> <p>我也没有好的做法。我采用 fastm来处理。在SQL 里面引入l构标记。这也相当于污染。因为SQL?HTML不同。SQL 不是描述l构的,而是一门DSL?/p> <p>q种做法的一个好处是Q整D?SQLq是可以Copy 到SQL Client里面Q稍微修改一番,可以直接运行?/p> <h2>A Demo Forum</h2> <p>farum是我做的一个简单的 forum demo. 使用?fastm, lightor, lightweb, 也尽量体现我前面提出的原则?br> <span id="eace8oa" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://farum.dev.java.net/files/documents/4372/25045/farum0.5a.zip<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <p>我觉得,使用一门语aQ应该尽量发挥它的特长,而不是针对它的短处,修修补补?/p> <p>Java作ؓ(f)静态类型编译语a的好处,是~译期类型检查。那么如何发挥这个优势?前面说的 Mapper源代码生成,是一U尝试?/p> <p>另外Q其它的cM的胶水粘合部分,比如Q?IoC, Validation{,都可以进行这斚w的尝试。目前,farum 是采用q样的做法,自己写的Validator Sourceq行 validation, value setting, service implementation injection{工作?/p> <p>farum没有使用 Dynamic Proxy, CGLib{动态篡改用户代码的做法?/p> <p>量不用Reflection Q因为Reflection l开?Java 的类型检查机制。与其?reflectionQ真不如使用动态脚本语a?/p> <p>当然Qreflection 是非帔R以避免的。farum 也少怋用了reflection?/p> <p>Thread Local 是一U隐式契U,相当于绕开了显式契U(Ҏ(gu){֐method signatureQ?WebWork的一些用法,Spring Framework 的Open Session In ViewQ等都是采用?Thread Local?/p> <p>farum没有采用 Thread LocalQ而是采用了另一U方法实C Open Session In view。而且如果~存命中Q甚至不需要从connection pool 中获取Connection ?/p> <h2>ȝ</h2> <p><<Web 开发构?gt;>一文中Q我提出了,理想中的 Web开发架构是q样的:(x)</p> <p>开发速度快,q行速度快,l构清晰优雅?/p> <p>具体到每一层:(x)</p> <ul><li>Web 框架层主要追?开发速度快?/li></ul> <ul><li>O/R 层主要追?q行速度快?/li></ul> <ul><li>面资源层和面模板层主要追?l构清晰优雅?/li></ul> <p>下面是我对q些理想的初步实现?/p> <p>q远q达不到完美的程度,而只是朝q个方向努力?/p> <h3>Template Layer</h3> <p>fastm<br> <span id="qseg04q" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://fastm.dev.java.net/files/documents/1911/25042/fastm1.0c.zip<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <h3>Web Layer</h3> <p>lightweb<br> <span id="iewmaw8" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://lightweb.dev.java.net/files/documents/4371/25044/lightweb0.9b.zip<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <h3>ORM Layer</h3> <p>lightor<br> <span id="8suwyig" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://lightor.dev.java.net/files/documents/4370/25043/lightor0.5a.zip<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <h3>A forum demo using fastm + lightor + lightweb</h3> <p>farum<br> <span id="qocc8yi" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://farum.dev.java.net/files/documents/4372/25045/farum0.5a.zip<sup><img class="rendericon" src="http://www.javaeye.com/images/icons/linkext7.gif" alt="" align="absmiddle" border="0" height="7" width="7"></sup></a></span></p> <p>----------</p> ׃目可能q没有通过java.net的申hE,所以无法公开下蝲?br> 我把所有的目都放在fastm的这个目录下?br> <span id="mmqeigi" class="nobr"><a title="Visit page outside Confluence" rel="nofollow">https://fastm.dev.java.net/servlets/ProjectDocumentList?folderID=4520</a></span><img src ="http://www.tkk7.com/Vencent/aggbug/32205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Vencent/" target="_blank">Vincent Chen</a> 2006-02-23 21:56 <a href="http://www.tkk7.com/Vencent/articles/32205.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Z?char** 不能自动转化?const char** (?http://www.tkk7.com/Vencent/articles/31945.htmlVincent ChenVincent ChenWed, 22 Feb 2006 05:04:00 GMThttp://www.tkk7.com/Vencent/articles/31945.htmlhttp://www.tkk7.com/Vencent/comments/31945.htmlhttp://www.tkk7.com/Vencent/articles/31945.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/31945.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/31945.htmlZ?char** 不能自动转化?const char**

一ơ偶然的情况下我发现以下代码竟然无法被编译通过Q如果你的编译器Q比如VC6或VC2003Q允许它~译通过Q我想你首先应该换个~译器,比如GCC或VC2005Q:(x)
void foo( const char* [] ) { }
int main( void )
{
    char* s[2];
    foo( s );
}

化成更一般的形式是:(x)
char** p1 = 0;
const char** p2 = p1;

错误是:(x)invalid conversion from `char**' to `const char**'.

lostpencil更加仔细Q用C~译器给出的是一个警告:(x)
initialization from incompatible pointer type.

随后hphol出了合理的解释Q同?a target="_blank">comp.lang.c++.moderated上的Ulrich Eckhardt也用代码q行了说明?/p>

用代码来说明最直观了:(x)
const char* s = "abc";
int main( void )
{
    char* p0 = 0;
    char** p1 = &p0;
    const char** p2 = p1;
// 先假设这一句是合法?( 试Ӟ可以先强制类型{化一?)
    *p2 = s;
    *p0 = 'A';
// 通过p0在修改不应该被修改的sQ这昄和const相违背,其运行结果不可知?br>}




看了 **?惛_?br>tekyDec 29, 2005 -  Show original item

看完?明白**讲的Z么char** 不能自动转化?const char**,(原文)但对我媄(jing)响最q是下面的?

==================================================================
char *p="abc" 能不能编译通过要看你用的~译器。鉴于大量遗留代码的存在Q大部分~译器允许其通过Q或者给个警告。当?dng)E序员自己必M证绝不去修改其倹{?

E序员不应该在代码中出现*p='A'q样的语句。这是当初约定好了的Q编译器允许char *p="abc"通过Q而程序员保证不去修改它?
b. *p='A'~译时应该允?dng)R过Q因为单p条语句而言Q它完全合法?
c. q行?p='A'能不能通过要看实际的运行环境,包括你用的操作pȝ、编译器、编译器选项 {等Q一句话Q其q行l果׃得你Q且不应该由你去兛_Q因U行为本w已l违反约定了?
==================================================================

工作关系?用CString 和string用的太多?很少q样定义字符?char *p=“abcde“了
匝一?q不适应,:(,渐渐的回x惌v一些来(?q是太生?赶快写下?以后别忘?

q样定义的字W串char *p=“abcde?; char *p1=?23445667?

正如上面提到的是不能?*p='A',q行的时候会(x)出错,同样,strcpy(p,p1)也会(x)出错?

"abcde"字符串可以看做是个常量字W串?是不能被修改?

但如?char p[]=“abcde?q样定义,没有问?你可以修?p='A',只要不越界就ok.

q且发现q样两种定义
char *p=“abcde?/font>

char p[]=“abcde?

在运行的时?p指向的地址也不是一L(fng),可见char *p=“abcde“还是有Ҏ(gu)的处?:),具体怎么处理׃知道?高手h?)


随着试,又发C问题,可能是个老问题了?


int main(int argc, char* argv[])
{
 int t[10];
 char p1[7]="123456";
 const char *p2="1234567890123213123";
 
 int len(0);
 
  //*p1='C';  err

 len=strlen(p1);
 printf("%d\n",len);
 
 strcpy(p1,p2);   ///??????????
 
 printf("%s\n",p1);
 
 len=strlen(p1);
 
 printf("%d\n",len);
 return 0;
}

我定义的?个字W数l? 但用strcpy把p2拷到p1?p1是放不下?但程序却正常执行,warning ,err都没?q行也正?


输出

6
1234567890123213123
19

应该是用内存越界了??怎么?x)正常运行?

N对于内存界的?q气好才崩溃表现出来,q气不好正常运??



Vincent Chen 2006-02-22 13:04 发表评论
]]>
Some Words of Valentine's Dayhttp://www.tkk7.com/Vencent/articles/30714.htmlVincent ChenVincent ChenTue, 14 Feb 2006 15:29:00 GMThttp://www.tkk7.com/Vencent/articles/30714.htmlhttp://www.tkk7.com/Vencent/comments/30714.htmlhttp://www.tkk7.com/Vencent/articles/30714.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30714.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30714.html Valentine's Day 情h?br>
Date U会(x)

Bunch 花束

Rose 玫瑰

Candy p果

Chocolate 巧克?br>
Forget-Me-Not 勿忘?br>
Puppy Love/First Love 初恋

Cute Meet O的邂?br>
Fall In Love 坠入爱河

Love At The First Sight 一见钟?br>
Propose 求婚

Valentine Cards 情h节卡?br>
Candlelight Dinner 烛光晚餐

Heart-Shaped/Cordate 心Ş?br>
Truelove 真爱

Enamored 們ֿ?br>
Saint Valentine\'s Day 情h?br>
The Chemical Feeling 奇妙的感觉,触电(sh)

Sweet Bitterness 甜蜜的痛?br>
A Doomed Couple 天生一?br>
A Happy Ending 大团圆结局

Sweetheart 甜心

Lover ׃h

Cupid q丘比?br>
Admirer 仰慕?br>
Romance O

Heartthrob Ȁ?br>
Courtship 求爱

Infatuation 醉心

Promise/Pledge/Vow 誓言

Fidelity 忠心

Eternal/Immortal/Everlasting 永恒


Vincent Chen 2006-02-14 23:29 发表评论
]]>
https相关http://www.tkk7.com/Vencent/articles/30677.htmlVincent ChenVincent ChenTue, 14 Feb 2006 13:00:00 GMThttp://www.tkk7.com/Vencent/articles/30677.htmlhttp://www.tkk7.com/Vencent/comments/30677.htmlhttp://www.tkk7.com/Vencent/articles/30677.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30677.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30677.html什么是HTTPSQ?br>当?ZSSL/TLSQ通常使用 https:// URLQ向站点q行HTTPhӞ从服务器向客h发送一个证书。客h使用已安装的公共证书通过q个证书验证服务器的w䆾Q然后检?IP 名称Q机器名Q与客户接的机器是否匚w。客h生成一些可以用来生成对话的U钥Q称Z(x)话密钥)(j)的随Z息,然后用服务器的公钥对它加密ƈ它发送到 服务器。服务器用自qU钥解密消息Q然后用该随Z息派生出和客h一L(fng)U有?x)话密钥。通常在这个阶D?RSA 公钥法。然后,客户机和服务器用私有会(x)话密钥和U钥法Q通常?RC4Q进行通信。用另一个密钥的消息认证码来保消息的完整性?br>
什么是数字{֐Q?/strong>
所 谓数字签名就是信息发送者用其私有密钥对从所传报文中提取出的特征数据Q或U数字指U)(j)q行RSA法操作Q以保证发信人无法抵赖曾发过该信息(即不可抵 赖性)(j)Q同时也保信息报文在经{֐后末被篡改(卛_整性)(j)。当信息接收者收到报文后Q就可以用发送者的公钥Ҏ(gu)字签名进行验证?br>
Overview of SSLQ?br>     SSL, or Secure Socket Layer, is a technology which allows web browsers and web servers to communicate over a secured connection. This means that the data being sent is encrypted by one side, transmitted, then decrypted by the other side before processing. This is a two-way process, meaning that both the server AND the browser encrypt all traffic before sending out data.
     Another important aspect of the SSL protocol is Authentication. This means that during your initial attempt to communicate with a web server over a secure connection, that server will present your web browser with a set of credentials, in the form of a "Certificate", as proof the site is who and what it claims to be. In certain cases, the server may also request a Certificate from your web browser, asking for proof that you are who you claim to be. This is known as "Client Authentication," although in practice this is used more for business-to-business (B2B) transactions than with individual users. Most SSL-enabled web servers do not request Client Authentication.
https与Tomcat
   The Apache Jakarta Tomcat 5 Servlet/JSP Container SSL Configuration HOW-TO?
利用快速配|:(x)
  1Q用jdk中的keytool生成一个tomcat keystore
    在命令行敲入Q?JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
    ?x)提CZ输入keypassword ?keystorepassword 以及(qing)其它相关信息。按提示认完成?br>  2Q?在conf/server.xml中加入:(x)
    

               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="false" keystorePass="password" sslProtocol="TLS" />
 
3Q启动tomcat,打开览器输?/font>https://localhost:8443 O(jin)K了?br>注意Q用此方法生成的keystore文g|于C:\Documents and Settings\user?br>注释Q?connector>
Attribute Description
clientAuth Set this value to true if you want Tomcat to require all SSL clients to present a client Certificate in order to use this socket. Set this value to want if you want Tomcat to request a client Certificate, but not fail if one isn't presented.
keystoreFile Add this attribute if the keystore file you created is not in the default place that Tomcat expects (a file named .keystore in the user home directory under which Tomcat is running). You can specify an absolute pathname, or a relative pathname that is resolved against the $CATALINA_BASE environment variable.
keystorePass Add this element if you used a different keystore (and Certificate) password than the one Tomcat expects (changeit).
keystoreType Add this element if using a PKCS12 keystore. The valid values are JKS and PKCS12.
sslProtocol The encryption/decryption protocol to be used on this socket. It is not recommended to change this value if you are using Sun's JVM. It is reported that IBM's 1.4.1 implementation of the TLS protocol is not compatible with some popular browsers. In this case, use the value SSL.
ciphers The comma separated list of encryption ciphers that this socket is allowed to use. By default, any available cipher is allowed.
algorithm The X509 algorithm to use. This defaults to the Sun implementation (SunX509). For IBM JVMs you should use the value IbmX509. For other vendors, consult the JVM documentation for the correct value.
truststoreFile The TrustStore file to use to validate client certificates.
truststorePass The password to access the TrustStore. This defaults to the value of keystorePass.
truststoreType Add this element if your are using a different format for the TrustStore then you are using for the KeyStore. The valid values are JKS and PKCS12.

Java keytool工具的作用及(qing)使用Ҏ(gu)?
Keytool 是安全钥匙与证书的管理工兗它理一个存储了U有钥匙和验证相应公共钥匙的与它们相兌的X.509 证书铄keystore(相当一个数据库)?br>Keytool 是一个有效的安全钥匙和证书的理工具。它能够使用户用数字签名来理他们自己的私?公共钥匙?理用来作自我鉴定的相关的证?理数据完整性和鉴定服务。它q能使用户在通信时缓存它们的公共钥匙.
一个证书是某一实体(个h,公司{?的数字签名,指出其他实体的公共钥?或其他信?的详l的?当数据被{֐?q个{֐信息被用来检验数据的完整性和真实?完整性指数据没有被修改和改,真实性指数据从Q何生和{֐的一方真正的传输到达?br>Keytool 把钥匙和证书储存C个keystore.默Q的实现keystore的是一个文件。它用一个密码保护钥匙。而另外的一个工具jarsigner用keystore中的信息产生或检验Java aRchive(jar文g)中的数字{֐?br>Keystore有两个不同的入口:
1.       钥匙入口:保存了非常敏感的加密的钥匙信?q且是用一个保护的格式存储以防止未被授权的讉K.以这UŞ式存储的钥匙是秘密钥?或是一个对应证书链中公有钥匙的U有钥匙.
2.    信Q证书入口:包含一个属于其他部分的单一公共钥匙证书.它之所以被UCؓ(f)"信Q证书",是因为keystore信Q的证书中的公共钥匙真正属于证书所有者的w䆾识别.
 
Keystore的别?
所有的keystore入口(钥匙和信任证书入?是通过唯一的别名访?别名是不区分大小写的。如别名Hugo和hugo指向同一个keystore入口.
可以在加一个入口到keystore的时候?genkey参数来生一个钥匙对(公共钥匙和私有钥?时指定别?也可以用-import参数加一个证书或证书铑ֈ信Q证书?br> 
如:(x)keytool -genkey -alias duke -keypass dukekeypasswd
 
其中duke为别?dukekeypasswd为duke别名的密码。这行命令的作用是生一个新的公?U有钥匙? 其中duke为别?dukekeypasswd为duke别名的密?q行命o(h)的作用是产生一个新的公?U有钥匙?
假如你想修改密码,可以用:(x)
keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass
旧密码dukekeypasswd改ؓ(f)newpass.
 
Keystore的?
1.       当?genkey ?import?identitydb命o(h)d数据C个keystore,而当q个keystore不存在时,产生一个keystore.默认名是.keystore,存放到user-home目录.
2.    当用-keystore指定?生指定的keystore.
 
Keystore的实?
Keytool cM于java.security包下,提供一个非常好的接口去取得和修改一个keystore中的信息. 目前有两个命令行:keytool和jarsinger,一个GUI工具Policy 可以实现keystore.׃keystore是公开?用户可以用它写一些额外的安全应用E序?br>Keystoreq有一个sun公司提供的內在实?它把keystore作ؓ(f)一个文件来实现.利用了一个keystorecd(格式)"JKS".它用单独的密码保护每一个私有钥?也用可能不同的密码保护整个keystore的完整?
 
支持的算法和钥匙大小:
keytool允许用户指定钥匙对和注册密码服务供应者所提供的签名算?~省的钥匙对产生法?DSA"。假如私有钥匙是"DSA"cdQ缺省签名算法是"SHA1withDSA"Q假如私有钥匙是"RSA"cd,~省法?MD5withRSA".
当生一个DSA钥匙?钥匙必须?12-1024位之?对Q何算法的~省钥匙大小?024?
 
1.       证书Q一个证书是一个实体的数字{֐,指出其他实体的公共钥匙有明确的倹{?br>2.       公共钥匙Q是同一个详l的实体的数字关?q有意让所有想同这个实体发生信dpȝ其他实体知道Q公共钥匙用来检验签?
3.    数字{֐:假如数据已被{֐,q用w䆾存储在一个实体中,一个签名能够证明这个实体知道这个数?q个数据用实体私有钥匙签名ƈ递交;
4.    w䆾:知道实体的方?在一些系l中w䆾是公共钥?其他pȝ中可以是从一个X.509名字的邮件地址的Unix UID来的M东西;
5.    {֐:一个签名用实体U有钥匙来计某些加密数?
6.    U有钥匙:是一些数?每一个私有钥匙只能被特定的拥有该U有钥匙的实体知?U有和公共钥匙存在所有用公共钥匙加密的系l的钥匙对中.一个公共钥匙加?如DSA),一个私有钥匙与一个正的公共钥匙通信.U有钥匙用来计算{֐?br>7.    实体:一个实体可以是一个h,一个组l?一个程?一台计机,一个商?一个银?或其他你想信ȝ东西.
 
Keytool应用实例:
 
1.产生一个keystore:
 
keytool -genkey -alias User(keystore的别? -keyalg RSA -validity 7 -keystore keystore(指定keystore).
 
q行q个命o(h),pȝ提示:
Enter keystore password:yourpassword(输入密码)
 
What is your first and last name?
[Unknown]: your name(输入你的名字)
 
What is the name of your organizational unit?
[Unknown]:your organizational(输入你所在组l单位的名字)
 
What is the name of your organization?
[Unknown]:your organization name (输入你所在组l的名字)
 
What is the name of your City or Locality?
[Unknown]:your city name(输入所在城市的名字)
 
What is the name of your State or Province?
[Unknown]:your provice name(输入所在省份名?
 
What is the two-letter country code for this unit?
[Unknown]:cn(输入国家名字)
Is CN=your name, OU=your organizaion, O="your organization name",L=your city name, ST=your province name, C=cn correct?
[no]: yes
 
3.    (g)查一个keystore:
keytool -list -v -keystore keystore
Enter keystore password:your password(输入密码)
 
显Ckeystore內容?
Keystore type: jks
Keystore provider: SUN
 
Your keystore contains 1 entry
Alias name: yourname
Creation date: Dec 20, 2001
Entry type: keyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=yourname, OU=your organization, O="your organization name",
L=your city name, ST=your province name, C=CN
Issuer: CN=Duke, OU=Java Software, O="Sun Microsystems, Inc.", L=Palo Alto, ST=CA, C=US
Serial number: 3c22adc1
Valid from: Thu Dec 20 19:34:25 PST 2001 until: Thu Dec 27 19:34:25 PST 2001
Certificate fingerprints:
MD5: F1:5B:9B:A1:F7:16:CF:25:CF:F4:FF:35:3F:4C:9C:F0
SHA1: B2:00:50:DD:B6:CC:35:66:21:45:0F:96:AA:AF:6A:3D:E4:03:7C:74
 
3Q输出keystoreC个文?testkey:
keytool -export -alias duke -keystore keystore -rfc -file testkey
pȝ输出QEnter keystore password:your password(输入密码)
Certificate stored in file < td>
 
4Q输入证书到一个新的truststore:
keytool -import -alias dukecert -file testkey -keystore truststore
Enter keystore password:your new password.(输入truststore新密?
 
 
5Q检查truststore:
keytool -list -v -keystore truststore
pȝ显Ctruststore的信?
 
现在可以用适当的keystoreq行你的应用E序.?
java -Djavax.net.ssl.keyStore = keystore
-Djavax.net.ssl.keyStorePassword=password Server
 
?
 java -Djavax.net.ssl.trustStore=truststore
-Djavax.net.ssl.trustStorePassword=trustword Client


Vincent Chen 2006-02-14 21:00 发表评论
]]>三步搞定!水货商坦aIBM本本验货指南http://www.tkk7.com/Vencent/articles/30515.htmlVincent ChenVincent ChenMon, 13 Feb 2006 13:42:00 GMThttp://www.tkk7.com/Vencent/articles/30515.htmlhttp://www.tkk7.com/Vencent/comments/30515.htmlhttp://www.tkk7.com/Vencent/articles/30515.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30515.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30515.htmlW?:(x)对照IBM的装单核对包装内物品


一般情况下IBM随包装箱?x)放一张装单Q这个东西现在一般机器都不带Q没有多大用处,也难免香港h?x)把它扔掉,在他们看来除了机器,别的都无所谓。单子上?x)列出包装箱内的所有附件?

三步搞定!水货商坦aIBM本本验货指南

    1、机器一?/p>

 2、电(sh)池一?注意:按行货的装相Ҏ(gu)Q电(sh)池和机器是分开的,因ؓ(f)香港人拿到机器要先验屏有无坏点, 所以电(sh)池就装在机器上了?/p>

 3、适配器一?头ؓ(f)英制Q香港货和新加坡货都是这U?头ؓ(f)制Q美国货是这L(fng)?/p>

 4、电(sh)话线一根,接猫上网的,现在很少人用了?/p>

 5、说明书一套。多数均为T40版的Q猜是IBMZ节约成本Q所以T40QT41QT42QT43都用同一套说明书?/p>

 6、小U帽两个。ؓ(f)来原配的脏了更换的?/p>

 7、固定螺丝一颗用来固定互换光区的Q防止别人插拔?br>

W?:(x)(g)查外观、验证SN?/b>

    接下来就要看外观了,有没有划伤,毕竟外观也是很重要的Q要(g)查外观有无硬商如果有?qing)时更换。特别要注意qx不太注意的细节,比如机器底部?a class="keyword" target="_blank">键盘q有屏幕?

三步搞定!水货商坦aIBM本本验货指南

  开BIOSQ先查看机器大概的配|,主频Q?a class="keyword" target="_blank">内存Q还有关键的两个L(fng)QSN号和UUIDL(fng)。SNh机器唯一的序列号Q没有重复的Q从BIOS里查到的SN可和包装箱的,机器背面的,q有用测试Y件测出来的都对上Q才完整?/p>

 UUIDL(fng)?a class="keyword" target="_blank">L序列受只昄在BIOS里和包装׃Q这两处也要对上。另外要和用试软g出的UUID号也对上。如果机?a class="keyword" target="_blank">L被动q,那UUIDh?x)改变的?br>

W?:(x)(g)查屏q、电(sh)池和保修

 开始进入系l,试屏幕Q可以用专业的测试YӞ|上有很多像Nokia的Y件等{,主要(g)查坏点和亮点?

三步搞定!水货商坦aIBM本本验货指南

    查看甉|充电(sh)ơ数Q一般来_(d)不超q两ơ。如果是旧电(sh)池的Q这一步是逃不q去的,而且以目前的技术,q没有哪个高手可以刷新充甉|?/p>

    一定要上网查询保修期限和核寚w件的~号

    具体|址Q?a >http://www-3.ibm.com/pc/support/site.wss/warranty/warranty.vm 

三步搞定!水货商坦aIBM本本验货指南

  在TYPE一栏中输入机器型号Q如2373在Serial#一栏中输入机器SNP然后点ContinueQ或者点d?x)出C修信息?/p>

三步搞定!水货商坦aIBM本本验货指南

    有本机器的保修期限和销售地?/p>

    特别说明Q因关是机器和包装分开q的Q然后到深圳再一对一的装,隑օ适配器和?sh)话U装错,有可能造成q两个部件的L(fng)和网站显C号码难以对上。除此之外,机器?a class="keyword" target="_blank">盘~号Q电(sh)池编L(fng){都是能对上的。另外次~号是IBMq配g所做的出厂~号Q很多测试Y件是不出来的。最后一Ҏ(gu)查是否带有COA??/p>




Vincent Chen 2006-02-13 21:42 发表评论
]]>
GOOGLE挑战赛练?fn)??qing)答?1000?http://www.tkk7.com/Vencent/articles/30512.htmlVincent ChenVincent ChenMon, 13 Feb 2006 13:38:00 GMThttp://www.tkk7.com/Vencent/articles/30512.htmlhttp://www.tkk7.com/Vencent/comments/30512.htmlhttp://www.tkk7.com/Vencent/articles/30512.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30512.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30512.html

Problem Statement

     When editing a single line of text, there are four keys that can be used to move the cursor: end, home, left-arrow and right-arrow. As you would expect, left-arrow and right-arrow move the cursor one character left or one character right, unless the cursor is at the beginning of the line or the end of the line, respectively, in which case the keystrokes do nothing (the cursor does not wrap to the previous or next line). The home key moves the cursor to the beginning of the line, and the end key moves the cursor to the end of the line.

You will be given a int, N, representing the number of character in a line of text. The cursor is always between two adjacent characters, at the beginning of the line, or at the end of the line. It starts before the first character, at position 0. The position after the last character on the line is position N. You should simulate a series of keystrokes and return the final position of the cursor. You will be given a String where characters of the String represent the keystrokes made, in order. 'L' and 'R' represent left and right, while 'H' and 'E' represent home and end.

Definition

    
Class: CursorPosition
Method: getPosition
Parameters: String, int
Returns: int
Method signature: int getPosition(String keystrokes, int N)
(be sure your method is public)

 

 

 1public class CursorPosition
 2{
 3
 4        public int getPosition(String ks,int len)
 5        {
 6                int pos = 0;
 7                char c ;
 8                for(int i=0;i<ks.length();i++)
 9                {
10                        c = ks.charAt(i);
11
12                        if(c=='E')
13                        {
14                                pos = len;
15                        }

16                        else if(c=='H')
17                        {
18                                pos = 0;
19                        }

20                        else if(c=='L')
21                        {
22                                if(pos>0)
23                                {
24                                  pos--;
25                            }

26                        }

27                        else if(c=='R')
28                        {
29                                if(pos<len)
30                                {
31                                  pos++;
32                            }

33
34                        }

35                }

36
37        return pos;
38        }

39
40}

Feedback

# re: GOOGLE挑战赛练?fn)??qing)答?1000?   回复   

2005-11-29 16:08 by superwu
public class CursorPosition {
public int getPosition(String keystrokes, int N){
int current=0;
int end=N;
int start=0;


for(int i=0;i<keystrokes.length();i++){
char c=keystrokes.charAt(i);
switch(c){
case 'L':
if(current!=start)current--;break;
case 'R':
if(current!=end)current++;break;
case 'H':
current=0;break;
case 'E':
current=N;break;
}
}
return current;
}
public static void main(String[] args) {
CursorPosition c=new CursorPosition2();
System.out.println(c.getPosition("ERLLL",10));
}

}
q道题和你做的几乎一P效率上应该没有太大差?
但我的了920多分Q我觉的是时间的原因Q这道题我做的很快就提交?/div>


Vincent Chen 2006-02-13 21:38 发表评论
]]>GOOGLE挑战赛练?fn)??qing)答?500?http://www.tkk7.com/Vencent/articles/30511.htmlVincent ChenVincent ChenMon, 13 Feb 2006 13:37:00 GMThttp://www.tkk7.com/Vencent/articles/30511.htmlhttp://www.tkk7.com/Vencent/comments/30511.htmlhttp://www.tkk7.com/Vencent/articles/30511.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30511.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30511.html

Problem Statement

     A square matrix is a grid of NxN numbers. For example, the following is a 3x3 matrix:
 4 3 5
2 4 5
0 1 9
One way to represent a matrix of numbers, each of which is between 0 and 9 inclusive, is as a row-major String. To generate the String, simply concatenate all of the elements from the first row followed by the second row and so on, without any spaces. For example, the above matrix would be represented as "435245019".

You will be given a square matrix as a row-major String. Your task is to convert it into a String[], where each element represents one row of the original matrix. Element i of the String[] represents row i of the matrix. You should not include any spaces in your return. Hence, for the above String, you would return {"435","245","019"}. If the input does not represent a square matrix because the number of characters is not a perfect square, return an empty String[], {}.

Definition

    
Class: MatrixTool
Method: convert
Parameters: String
Returns: String[]
Method signature: String[] convert(String s)
(be sure your method is public)


public class MatrixTool
{

        public String[]  convert(String str)
        {
                String[] matrix = null;
                if(str==null || str.length()<1)
                {
                        return matrix;
                }

                int total = str.length();
                double d = total/1.0;
                int len = (int)Math.sqrt(d);

                //check

                for(int i=0;i<total;i++)
                {

                        if(str.charAt(i)>='0' && str.charAt(i)<='9')
                        {
                        }
                        else
                        {
                                System.out.println("invaid charareter.");
                                return matrix;
                        }
                }

 

                if(len*len == total)
                {
                        matrix = new String[len];
                        for(int i=0;i<len;i++)
                        {
                           matrix[i] = "";
                           for(int j=0;j<len;j++)
                           {
                              matrix[i]+= str.charAt(i*len+j);
                           }
                        }

                }
                return matrix;

        }
       
        public static void main(String args[]){
          MatrixTool mt = new MatrixTool();
          String[] temp = mt.convert("435245019");
          for(int i=0;i<temp.length;i++){
            System.out.println(temp[i]);
          }
        }

}

Feedback

# re: GOOGLE挑战赛练?fn)??qing)答?500?  回复   

2005-11-29 15:01 by superwu
public class MatrixTool {
public String[] convert(String s){
String[] error={};
if(s==null)return error;
StringBuffer buffer=new StringBuffer(s);
int length=s.length();
if(!(length>=1&&length<=50))
return error;
double f=Math.sqrt(length);

int n=(int)f;
if((n*n)!=length)
return error;
for(int i=0;i<length;i++){
if(!Character.isDigit(s.charAt(i)))
return error;
}
int count=0;
for (int i=n;i<length;i+=n){
buffer.insert(i+count,'#');
count++;
}
String [] s2=buffer.toString().split("#");
return s2;
}
}
问问Z么我写的只得?02?3分和旉有关pMQ?/div>


Vincent Chen 2006-02-13 21:37 发表评论
]]>GOOGLE挑战赛练?fn)??qing)答?200?http://www.tkk7.com/Vencent/articles/30510.htmlVincent ChenVincent ChenMon, 13 Feb 2006 13:36:00 GMThttp://www.tkk7.com/Vencent/articles/30510.htmlhttp://www.tkk7.com/Vencent/comments/30510.htmlhttp://www.tkk7.com/Vencent/articles/30510.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30510.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30510.html阅读全文

Vincent Chen 2006-02-13 21:36 发表评论
]]>
KMplayer常见问题整理http://www.tkk7.com/Vencent/articles/30384.htmlVincent ChenVincent ChenSun, 12 Feb 2006 14:54:00 GMThttp://www.tkk7.com/Vencent/articles/30384.htmlhttp://www.tkk7.com/Vencent/comments/30384.htmlhttp://www.tkk7.com/Vencent/articles/30384.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30384.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30384.htmlq期开始尝试用KMPQ发现其q是有很多优炏V目前的兼容性和功能q是ZMplayer QKKQ的Q但是发现其配置实在q于复杂Q不是很Ҏ(gu)上手。现整理出来自己遇到的一些常见问题以?qing)解x法,希望对于准备试KMP和对使用q程中一些问 题还存在?惑的朋友能够从这里找到答案,同时希望大家能够分nql验和心得,以完善和充实。(roebinQ?/b>

1、播攄(sh)影时Q想昄中英文双字幕Q如何实现双字幕昄Q?/b>

遇到q种情况可用外挂字幕支持

1[参数选项]→[滤镜讄]→[滤镜理器]→[d扩展滤镜]→KMP目录有个VSFilter.dll(如果没有Q下载最新的vobsubQ里面有q个文g)Q选上?br>
2[参数选项]→[滤镜讄]?扩展字幕控制 禁用取消即?br>
但是注意在极速模式下不能自动启动vobsub

2、如何能够让字幕正确昄Q?/b>

[参数选项]→[字幕处理]→[字体]→语p设|ؓ(f)中文Q简体)(j)Q“默认字q代码”设|成CHS GB?br>
3、Kmplayer拖动播放MOV文g停顿比较明显Q这个如何优化?

在[参数选项]→[滤镜讄]里面的Mplayer内d .MOVQ同时把QuickTime内?MOV删除?br>
4、如何让字幕昄在画面下的黑色区域?

[参数选项]→[字幕处理]→绘制到图表层,或者右键菜单[q移与扫描]选择[4Q?Q纵向拉伸]可以了?br>
5、Kmplayer如何实现多配|文Ӟ

讑֥一U配|后[参数选项]→[配置备䆾]当前配|保存v来,然后在右键菜单里׃(x)多一w择[参数配置切换]的菜单,可以恢复到你设|好的一pd参数?br>
6、如何下载最新的版本Q?/b>

KMP正式版下载地址Q?a target="_blank">http://www.kmplayer.com/down/

KMP试版下载地址Q?a target="_blank">http://www.kmplayer.com/beta/

Real解码器的下蝲地址Q?a target="_blank">http://www.kmplayer.com/bbs/data/pds/cM于KMP_RealMedia_的rar文gQ解压到KMPlayer目录下面卛_?br>
7、如何在不调整系l音量的情况下,增大播放的音量?

选项->音频处理->独立音频控制->声音l合控制->基本音量调节Q范围在0%-400%之间。可以通过Ctrl+TAB查看启用的[Audio DSP]是否讄成功?br>
q且不能在极速模式下Q要求启用音频特效?br>
8、插件目录下文g都有什么用途?

[plugins]目录下都是用于Winamp的插Ӟ允许删除。不q在KMP同步截取功能上可能有些媄(jing)响,因ؓ(f)要用到里面的音频转换插gQ如果保留可以多一些选择性?enc_ 部分)

9、用KMP播放q后,再用其他播放软g播放Q媄(jing)片的色彩׃对了Q只有重启后才能正常。请问这个现象如何能够避免?

不要使用g色彩控制E和Q来调整亮度,如果怕误调整Q可以取消硬件色彩控制的快捷键定义?br>
10、看了一半的?sh)?jing)Q下ơ打开该文件想接着l箋看,能够实现吗?

右键菜单[播放]→[C播放位置]

11、播放某qCPU一直占?00Q,如何解决Q?/b>

可以试使用下面的方法,更换默认的视频音频解码器?br>
1用Tab?查看一下目前的q使用的解码器Q我们假设视频和音频都是MPEG2~码Q月光套ӞMoonlight-Elecard MPEG2 Video DecoderQ对于MPEG2解码效果很好Qƈ且支持硬件加速,因此我们解码器更换为月光套件?br>
2取消目前MPEG2解码器。[参数选项]→[滤镜讄]→[解码器]→[内置视频解码器] 去选MPEG2?br>
3[参数选项]→[滤镜讄]→[解码器]→[扩展视频解码器]Q点几Z搜索扩展解码器”,q是Z搜烦(ch)我们安装q的“Moonlight MPEG2 video Decoder?br>
4在弹出的H口中点几Z搜索”按钮,l过搜烦(ch)之后Q就?x)显C在pȝ中已l安装的解码器列表?br>
5点击“确定”按钮后Q返回到[扩展视频解码器]H口Q将“MPEG2 视频”的q一设|ؓ(f)“月光三套g”之视频解码器(Moonlight-Elecard MPEG2 Video DecoderQ?br>
6[参数选项]→[滤镜讄]→[解码器]→[扩展音频解码器]Q将“MPEG2 音频”这一设|ؓ(f)“月光三套g”之音频解码器(Moonlight Odio DekodaQ?br>
7[参数选项]→[滤镜讄]→[滤镜理器]→[d已注册的滤镜]Q在滤镜列表中选择“月光三套g”之分离器(Moonlight-Elecard MPEG2 DemultiplexerQ,点击“确定”?br>
8回到[滤镜理器]H口后,这个o(h)镜的优先U设|ؓ(f)“强制用”,此时“月光三套g”设|成功了?br>
9按AltQF切换到急速模式,q样才能使用刚才定义的编码器?br>
12、如何播攑֜U节目?

格式 hxxp://127.0.0.1:8888/X.rm 播放讄Ҏ(gu)Q?br>
1[参数选项]→[滤镜讄]→DirectShow中删?RM?br>
2[参数选项]→[滤镜理器]→[d已注册o(h)镜] d RealMedia SourceQƈ作ؓ(f)源过滤器N?br>
首次打开因ؓ(f)存在~冲q程需要等许旉Q出现定屏情况可按先暂停播放再l播放?br>
格式 hxxp://127.0.0.1:8888/XXX.asf 播放讄Ҏ(gu):

1[参数选项]→[滤镜理器]→[d已注册o(h)镜] d Windows Media source filterQƈ作ؓ(f)源过滤器N?br>
播放如果出现严重跛_停顿Q可使用KMP预储装置[参数选项]→[滤镜讄]→[内置源o(h)镜]Q预储容量调整ؓ(f)30?0兆?br>
13、ؓ(f)什么KMP目录下的文g?x)自动更斎ͼ?/b>

如果(zhn)在[参数选项]→[一般选项]中选中了“检查是否有新版本”,ȝ序会(x)自动链接到官方网站更新目录一ơ的?br>
14、ؓ(f)什么在KMP中注册了VobsubQ却不能配置DirectVobSub属性?

如果仅仅是在[d扩展滤镜]注册了VobsubQ没有安装Vobsub是不能配|DirectVobSub属性的Q要想配|DirectVobSub属性,需要在pȝ中注册VSFilter.dll。注册方法:(x)

1复制VSFilter.dll?C:\windows\system32

2“开始-q行”,输入“regsvr32 vsfilter.dll?

15、ؓ(f)什么用KMP昄多字q,画面?x)有停顿现象Q?/b>

不要使用KMP自己来显C多字幕Q还是用VobsubQKMP的方法。比如让Vobsub来显C文字q,用KMP来显CZ文字q?br>
止KMP昄多字q的讄Ҏ(gu)Q[参数选项]→[字幕处理]→[字体]→立xCSMI中的多国语言字幕 取消选中卛_?br>
另:(x)vobsub调用字幕是按照字母顺序的。指定vobsub仅播放英文字q的Ҏ(gu)是(中文同理Q:(x)

1播放q?br>
2手动选择播放英文字幕?br>
3然后选中DirectVobSub属性中→[其他]→立卛_用更攏V?br>
以后vobsub?x)记住这U格式的字幕而优先选择了?br>
16、常用快捷键

软g色彩调整 U增加QT降低。(使用kmp播放器内|解码器的时候用)(j)

Ctrl+L 用来切换字幕语言?br>
Ctrl+[ 下移字幕位置?br>
Ctrl+] 上移字幕位置?

PageUp PageDown 用来播放上一集下一集?br>
方向?快进Q后退?br>
Scroll Lock 可以在屏q右上角昄当前播放旉?/div>

Vincent Chen 2006-02-12 22:54 发表评论
]]>
昨天收到的emailhttp://www.tkk7.com/Vencent/articles/30303.htmlVincent ChenVincent ChenSat, 11 Feb 2006 14:31:00 GMThttp://www.tkk7.com/Vencent/articles/30303.htmlhttp://www.tkk7.com/Vencent/comments/30303.htmlhttp://www.tkk7.com/Vencent/articles/30303.html#Feedback0http://www.tkk7.com/Vencent/comments/commentRss/30303.htmlhttp://www.tkk7.com/Vencent/services/trackbacks/30303.html本邮件ؓ(f)公益邮gQ非营利。随~而发Q若(zhn)有~收刎ͼd全文Q心生欢喜,那是(zhn)与?jng)有~;如果(zhn)能此邮g转发l?0个以上的好友Q让益世文选流通世上,(zhn)将得蒙菩萨慈护Q福寿Ӟ家运日隆


【拒x奔?/p>

明朝宁L地方有位叫孙道的M人,因家里IP靠着教导孩童MQ作为生zȝl济来源。后来连q䆾职业也不保,于是寄n到塘? 张氏Ӟ帮忙抄抄写写Q换取衣食。有一天深夜,张家有一婢女Q偷L(fng)跑到孙道的房_(d)孙道知其来意Q严词的拒绝。而这情景Q却被张家的U塾老师看见Q老师 q下招婢女怼(x)。到了端午节Ӟ该名老师疽疮发作Q无法痊愈,q时Mh只好请孙道升任老师?/p>

有一天,孙道在江口碰C的叔叔,他的叔叔惊讶的说Q「我因儿子的病,在城隍庙祷Q当天晚上就作了一个梦Q梦见城隍爷坐在D上Q呼唤属下将命中? 要饿ȝ人,其名字删改Q名字一个一个的念,念到大概十几人,我就听到你的名字。我偷偷的问那冥官,Z么孙道可以改去?冥官_(d)(x)『这个h的本命,在四 十六岁时Q会(x)饿死他乡。因Zq四月十八日夜晚Q严拒婢x奔,所以g长寿命二U(一U等于十二年Q,攚w馑籍为禄c。』?/p>

后来Q跟着孙道学习(fn)的学生,来多Q每q学生所贡上的学资就百余两黄金。到了明万历三十六年Q孙道四十六岁,也就是他命中本该饿死的那q_(d)果然? 饥荒Q米价变得十分昂贵,IhҎ(gu)无钱购买Q当旉ȝ人很多。但是,孙道不但逃过q一劫,而且q十分的富裕Q到了晚q_(d)孙府已成巨富之家。在他七十岁 Ӟ应验延寿二纪Q无疾而终?/p>


【艳非?/p>

裴章Q山西省河东地区人,他的父亲与神僧昙照法师极为友善。昙师精于相术,他看裴章的相Q天庭饱满,地阁方圆Q将来的功名事业Q一定很有成?/p>

裴章二十岁时Q娶L氏,隔年裴章到太原作官,d则留在家中。数q后Q裴章又遇见昙照法师Q昙师十分惊讶的_(d)(x)「多q以前,我看你是显贵之相Q现 在怎么变了呢?q去你的天庭饱满Q现在怎么天庭有N之象呢?q去你的地阁方圆Q现在怎么地阁削了呢Q再看你的掌心有黑气盘绕Q恐有不之,宜}慎防 范。你的相变得q样多,不知做了什么缺L(fng)事??/p>

裴章听了Q自己反省数q来的所作所为,只有在太原与女hU通,是有违伦理Q其它ƈ无做出有亏良心的事。昙照法师叹了一口气_(d)(x)「你本来有美好的? E,奈何不知珍重Q与别的女h行淫Q你q样自己摧残dQ实在太可惜。」过不多久,裴章真的如昙照法师预a有灾怏(f)w。有一ơ,裴章在ʎ室洗澡,他的部下 q入行刺Q刀中腹部,五脏出而死?/p>


【邪淫果报?/p>

非正式夫妻而行淫事者,是ؓ(f)邪淫。此事天地所不容Q神鬼所愤怒。一有此心,虽未行其事,已大损阴骘。实犯者,非仅pn必有灄Q且D及(qing)家室子孙Q不惟现世感受苦果,更g?qing)未来长劫?/p>

邪淫之事Q即是以短暫之時光,造I天之|恶。是故凡犯邪淫者,由此而夺命者有之,由此而减者有之,由此而破家者有之,由此而绝嗣者有之。或有命? 本该富贵荣Q因而困R倒终生;或有命中本是寿山vQ却遭外伤内病夭亡;或有d原是贞良贤淑Q却成他人淫玩伴侣。邪淫现世恶报,莫论古之典籍记述? 多,今之报章亦日日刊载。凡此报|若细心探其前因后果,则知福无门Q惟召;善恶之报Q如影随形?/p>


淫恶之报Q天律最严。奸人妻奻I玷h闺门Q在地狱中受苦五癑֊Q方得脱生ؓ(f)驴ؓ(f)马,又五癑֊Q乃复hw,为娼Z。设谋造计Q奸宿寡妇尼 僧,败h操Q在地狱中受苦八癑֊Q方得脱生ؓ(f)ؓ(f)豕,供h宰杀Q又八百劫,乃复nQؓ(f)瞽ؓ(f)哑。以卑ؕ,以长乱幼Q|坏纲常,在地׃受苦一千五? 劫,方得q为鼠Q又一千五癑֊Q方得hw,或在母胎中死Q或在孩׃亡,毕竟不n天年。?/p>

地狱之苦Q苦不堪a。书云:(x)「地p苦,极难堪忍Q于一日中Q以三百矛,无间猛刺Q所有痛苦,于地׃Q微苦少分,亦莫能比。」若入无间地狱,脱 之日更是遥遥无期。智者深思,一时半刻,换得长劫大苦。至愚者莫此ؓ(f)甚!x者莫此ؓ(f)甚!Q劫Q时间单位,U合十三亿四千三癑օ十四万年Q?/p>


普劝世hQ未曄邪淫者,当自庆幸Qƈ务期懔懔守持Q}防失뀂俊面容,ȝ是带肉骷髅;姣好w躯Q不q是~筋骼骸。薄皮包裹脓(chung)血屎尿Q? ?ji)孔常出不净U物。花瓶盛_,Z把玩Q蒙衣漏厕,岂D恋!前贤云:(x)「他诱我杀w破家、损寿折,实害我性命的物事,该把作杀人利刃看、作虎狼看、作? 蛇看、作Ng看、作前生怨对看。?/p>


当邪~凑临时Q要有斩钉截铁之气势Q毅然立定脚跟;急思,w旁鬼神怒目切见我一举一动;头上三台明察U毫看我一a一行。若一念失守,子孙 之富늦在此断送;阎王之严惩簿上由此具名。现生则诛鬼戮破家败nQ殁后堕入地狱极刑伺候。知好歹者,能不忍乎哉!能不力退邪缘哉!

邪淫之罪已是极重Q引发他人邪淫其|更重。天戒录云:(x)「造作淫书Q坏人心术,d无间地狱Q直臛_书灭,因其书而作恶者,|报皆空Q方得脱生。? 由此可知Q印造淫书者,阴惩当是无量无边Q贩卖流通者,果报必定非轻非浅。而今之色情光盘与|站Qؕ人心志尤甚淫书,凡制作者、租售者、展转流通者,其所 感之殃恶果Q岂不更为凄惨酷烈乎Q?/p>

引发他h邪淫之罪既重Q则知杜防他人邪淫之功必qѝ杜防之道,展{通福善祸淫之文以警世人,是ؓ(f)其一。若因而劝诫多Z犯邪淫,则阖潭将可久膺多 ,裔世也能长发其祥。若曾自犯邪淫者,或曾引发他h而犯者,应痛切?zhn)改,力行此事。以杜邪之功Q劝善之Pq以改往修来之恳到心Q忏赎昔日之|愆Q庶? 可消减祸D。若功深德厚Q则N消而福星照临也?/p>

【寿康宝鉴劝L?/p>

当今之世Q古道亡。色情光盘,垂手可得Q网际网l,助长嚣风。欲火焚烧,何能制心Q心若不Ӟ淫恶N。望我同?yu),切勿观看Q一늨疏,hh? q。寿康宝_(d)Ʋv清流Q圣贤垂训,善淫。时时警惕,|之座右Q日日阅读,清气爽。盛德君子,贞洁淑媛Qh叹,鬼神钦敬。灾障消灭,寿lgQ? 家运日隆Q民风日。是为劝Q?/p>

【如何取得寿康宝鉴?/p>

?sh)子?请上

http://www.bfnn.org

炚w般若文L(fng)?再点选戒淫文?再点选寿康宝鉴。文a?词句优美,读诵较ؓ(f)畅。ƈ可点选寿康宝鉴白话编译对照?/p>

【放生免瘟疫?/p>

江苏太湖附近的hӞ多数是网鸟捉gؓ(f)生,而沈文宝?qing)其家hQ却见h捕获鱼鸟Q常怹来放生。有一q_(d)瘟疫行Q有人夜里看见疫鬼拿旗一把说Q「除了放生的沈家Q其余的安都要插旗。」没多久Q全村感染疫病而死的超q大半,只有沈文宝家没h被传染?/p>

【戒杀攄 增福延寿?/p>

若想长寿Q则应放生,《放生赞》云Q「汝Ʋg生听我语Q凡事惺惺须求己Q汝Ʋg生须攄Q此是@环真道理。他若死时你救他Q你若死时天救你Qg生生子无别方Q戒杀攄而已矣。」又弥勒菩萨偈云Q「劝君勤攄Q终久得长寿Q若发菩提心Q大隑֤L。?/p>

有些人的病症Q是宿世或今生杀业的果报Q此U怨业病,医药很难起作用,若行攄增长善业Q医d较能得力。杭州有一个打鸟ؓ(f)业的人,背上长疮Q大? 无能为力Q慢慢的Q他自己知道是今生杀生的果报Q于是发誓不再杀生,q作攄Q此后诊M有了效力而逐渐痊愈。在西藏也有很多被医生诊断ؓ(f)必死的病人,l? 家hL生、念l,逐渐恢复生命的活力。尤其是ȝ无法诊断的怪病Q均是自己宿世或今生杀害众生的业感现前Q此Ӟ惟有攄为好?/p>


在清朝道光年间有一位太守,w?zhn)重病Q正在生命垂׃际,他发誓愿云:(x)「从今之后,饶益一切有情,忏?zhn)自己的业障。」当夜,观世韌萨在? 中示现对他说Q「你昔日杀业重Q今得短命报Q幸好此Ӟ能发坚固誓愿Q惟有放生可以g寿,且可增福。」他醒后大有感?zhn)Q于是全家戒杀Q常常放生,后来? 病体真的痊愈了?/p>

最q西藏炉霍县有一位牧民,多年(zhn)疾Q十分痛苦,去过很多医院Q皆无效益。后来有一位僧人打卦说Q「妳前世杀生极多,若不攄Q则短命多病。」此后她发心攄Q渐渐就无病无苦Q如今她特别怿因果Q每q皆捐款攄?/p>


若遭遇严重的疄而接q死亡寿之Ӟ只有攄Q才能增gѝ从前苏州有一位王大林Q每当看见村中的孩们捕捉玩弄鱼鸟等动物Ӟ他就? 力劝止ƈl钱赎来攄Q他_(d)(x)「少q时Q必dȝ惜物命的dQ不可养成残忍好杀的坏?fn)气。」他孜孜不倦劝善断Ӟ在他六十一岁将LQ于自己觉知 的境界中Q听到圣告诉他_(d)(x)「你q生攄Q有极大功dQ将可增g寿三十六q。」后来在他九(ji)十七岁时无病善逝?/p>

同样有一位叫果才的藏族hQ由很多I母等L(fng)通者说Q他只能zM十一岁,若能攄诵咒Q尚可g寿,他立x生甚多,每年攄护生Q今已五十岁。还 有相同的实事Q从前有一位屈师,到市镇去C条赤色鲤鱼放生,后来屈师生病时梦见龙王,q对他说Q「先生本来寿命已,因救龙子一命,增g寿十二q。? 他救鲤鱼时四十八岁,后来zd六十岁。所以,在h间寿命不长的人,应当发心攄Q才能增gѝ?/p>


四川遂宁市有一位医生,她在内外媄(jing)响极大,她的安挂满了锦旗,q些锦旗都是l其ȝ而痊愈的病h所敬献的,以此感谢q表彰其L的高 明,现在她已是成千上万h的救命恩人。经q她L的h都说Q当ȝ无效Ӟq位ȝ劝病h攄、念l等Q遵照嘱咐,q行攄{善行后Q许多病人的w体? 慢慢康复。因此可_(d)攄是一U特异功能的ȝҎ(gu)?/p>


相反Q杀生则是短命多病的直接之因。本来能z长久的人,若喜Ƣ杀生,则成短命。西藏阿梨阿旺扎巴云Q「若行救命放生者,短命亦成长寿Q若杀D{含生,长寿者亦成短命。」自古以来,攄转短命ؓ(f)长寿者,不胜枚D?/p>

我们若能时时以慈心推?qing)物c,自己做到戒杀攄Q又q劝他h戒杀攄Q则一切事必能吉祥如意Q正如《太上感应篇》所说的「吉佑之,禄随之。」华 Z波切亦云Q「恒时行善放生者,护法地神怽役{」《护生的故事》云Q「如影随形,古今善恶报应Q昭昭分明,感应事迹Q历历在目,有何疑Q?/p>

【杀生ؓ(f)?瘟疫为果?/p>

世间至重者,性命也;天下最惨者,杀伤也。由杀生故Q怨业U篏Q戾气所感,遂有瘟疫天灾?/p>

【同念南无观世音菩萨Q消灑օ难】注:南无x?/p>

观世韌萨,誓愿宏深Q寻声救苦。若遇刀c(din)水火、饥馑、虫蝗、瘟疫、旱涝、贼匪、怨家、恶兽、毒蛇、恶鬹{妖、怨业病、小人陷害等(zhn)难者,能发改过q善Q自利利Z心,臌恛_念观世音Q念忉|_(d)军_得蒙慈护Q不致有何危险?/p>

Vincent Chen 2006-02-11 22:31 发表评论
]]>
վ֩ģ壺 ƷһƵ| 鶹紫ýƷ | sss߲| þþƷƵѿ| Ļ˳޵Ӱ| Ůžžվֻ| ŮëƬaѧëƬ| þ4438| **ʵһëƬaa| ް鵺̳| ĻѵӰվ| ޹һ| ޾ƷŮþþþþ| ȫaëƬѿ| þþƷަvDz| 69ƷƵ| 99þþƷ| ŷպëƬ߿վ| ޹ƷVA߹ۿ鶹| 99ƷƷ| ޾Ʒ| aëƬƵѹۿӰԺ| ˳77777վ| ؼAƬëƬѿ| þþƷƷ޾Ʒ| ĻƬ| XOɫXO| crmϵͳz | þwww˳ɿƬ| ޾Ʒ| ֱ߹ۿƵƵ| ޾Ʒ456߲| òƵ߹ۿ| һӰ߹ۿ| ëƬվ߹ۿ| ޾Ʒ˳| ߹ۿİ| ½޾Ʒ| ޾Ʒ| aëƬȫ߲**| AV˾Ʒվ߲|