笔头。。
实践启示
posts - 14,comments - 3,trackbacks - 0
安装apache服务器指南http://www.knowsky.com/2989.html

安装apache服务器出现的问题

winxp 下 apache2 安装 问题及解决
安装apache 2 出现的问题:

“(OS 10048)通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次:
make_sock: could not bind to address 0.0.0.0:80...”

一般是IIS或其他程序占用了80端口引起的
分析:
netstat -a
查看相应端口,是否有程序占用
netstat -ab
查看具体占用程序

两种解决方法:
1、打开 控制面板->服务 找到 IIS admin 等相应服务 关闭并禁用
2、如果不想关闭IIS服务 可将apache使用的端口改成其它端口
将apache2/conf/httpd.conf 中的
Listen 80 改为 Listen (你要使用的端口) 如 Listen 8080
不过这时在你访问你的apache 下的Web服务时 在域名后要加上端口号
如: http://localhost:8080

然后用CMD进入命令行模式 进入你安装apache的目录 /apache2/bin
输入
apache -k install
apache -k start
cgwin的安装http://anying.spaces.live.com/Blog/cns!1pBetjxyWRhAf0VYS0IjiD_g!711.entry

连接http://twiki.org/cgi-bin/view/TWiki/WindowsInstallCookbookForTWiki04x01,for window 的安装

设置LocalSite.cfg

# Local site settings for TWiki. This file is managed by the 'configure'
# CGI script, though you can also make (careful!) manual changes with a
# text editor.
$TWiki::cfg{DefaultUrlHost} = 'http://localhost:8060';
$TWiki::cfg{ScriptUrlPath} = '/twiki/bin';
$TWiki::cfg{PubUrlPath} = '/twiki/pub';
$TWiki::cfg{PubDir} = 'c:/PROGRA~1/TWiki/twiki/pub';
$TWiki::cfg{TemplateDir} = 'c:/PROGRA~1/TWiki/twiki/templates';
$TWiki::cfg{DataDir} = 'c:/PROGRA~1/TWiki/twiki/data';
$TWiki::cfg{LocalesDir} = 'c:/PROGRA~1/TWiki/twiki/locale';
$TWiki::cfg{WorkingDir} = 'c:/PROGRA~1/TWiki/twiki/working';
$TWiki::cfg{ScriptSuffix} = '';
$TWiki::cfg{Password} = 'OmNauFZ7U.p3Y';
$TWiki::cfg{UseClientSessions} = 1;
$TWiki::cfg{Sessions}{ExpireAfter} = 21600;
$TWiki::cfg{Sessions}{ExpireCookiesAfter} = 0;
$TWiki::cfg{Sessions}{IDsInURLs} = 0;
$TWiki::cfg{Sessions}{UseIPMatching} = 1;
$TWiki::cfg{Sessions}{MapIP2SID} = 0;
$TWiki::cfg{LoginManager} = 'TWiki::LoginManager::TemplateLogin';
$TWiki::cfg{LoginNameFilterIn} = '^[^\\s\\*?~^\\$@%`"\'&;|<>\\x00-\\x1f]+$';
$TWiki::cfg{DefaultUserLogin} = 'guest';
$TWiki::cfg{DefaultUserWikiName} = 'TWikiGuest';
$TWiki::cfg{AdminUserWikiName} = 'TWikiAdminGroup';
$TWiki::cfg{AdminUserLogin} = 'admin';
$TWiki::cfg{SuperAdminGroup} = 'TWikiAdminGroup';
$TWiki::cfg{UsersTopicName} = 'TWikiUsers';
$TWiki::cfg{AuthScripts} = 'attach,edit,manage,rename,save,upload,viewauth,rdiffauth';
$TWiki::cfg{AuthRealm} = 'Enter your TWiki.LoginName. (Typically First name and last name, no space, no dots, capitalized, e.g. !JohnSmith, unless you chose otherwise). Visit TWiki.TWikiRegistration if you do not have one.';
$TWiki::cfg{UserMappingManager} = 'TWiki::Users::TWikiUserMapping';
$TWiki::cfg{Register}{EnableNewUserRegistration} = 1;
$TWiki::cfg{Register}{HidePasswd} = 1;
$TWiki::cfg{Register}{NeedVerification} = 1;
$TWiki::cfg{PasswordManager} = 'TWiki::Users::HtPasswdUser';
$TWiki::cfg{MinPasswordLength} = 1;
$TWiki::cfg{Htpasswd}{FileName} = 'c:\\PROGRA~1\\TWiki\\twiki\\data\\.htpasswd.txt';
$TWiki::cfg{Htpasswd}{Encoding} = 'plain';
$TWiki::cfg{SafeEnvPath} = '';
$TWiki::cfg{OS} = 'WINDOWS';
$TWiki::cfg{DetailedOS} = 'MSWin32';
$TWiki::cfg{DenyDotDotInclude} = 1;
$TWiki::cfg{AllowInlineScript} = 1;
$TWiki::cfg{UploadFilter} = '^(\\.htaccess|.*\\.(?i)(?:php[0-9s]?(\\..*)?|[sp]htm[l]?(\\..*)?|pl|py|cgi))$';
$TWiki::cfg{NameFilter} = '[\\s\\*?^\\$@%`"\'&;|<>\\x00-\\x1f]';
$TWiki::cfg{AccessibleENV} = '^(HTTP_\\w+|REMOTE_\\w+|SERVER_\\w+|REQUEST_\\w+|MOD_PERL)$';
$TWiki::cfg{AntiSpam}{EmailPadding} = '';
$TWiki::cfg{AntiSpam}{HideUserDetails} = 1;
$TWiki::cfg{AntiSpam}{RobotsAreWelcome} = 1;
$TWiki::cfg{Log}{view} = 1;
$TWiki::cfg{Log}{search} = 1;
$TWiki::cfg{Log}{changes} = 1;
$TWiki::cfg{Log}{rdiff} = 1;
$TWiki::cfg{Log}{edit} = 1;
$TWiki::cfg{Log}{save} = 1;
$TWiki::cfg{Log}{upload} = 1;
$TWiki::cfg{Log}{attach} = 1;
$TWiki::cfg{Log}{rename} = 1;
$TWiki::cfg{Log}{register} = 1;
$TWiki::cfg{ConfigurationLogName} = 'c:/PROGRA~1/TWiki/twiki/data/configurationlog.txt';
$TWiki::cfg{DebugFileName} = 'c:/PROGRA~1/TWiki/twiki/data/debug.txt';
$TWiki::cfg{WarningFileName} = 'c:/PROGRA~1/TWiki/twiki/data/warn%DATE%.txt';
$TWiki::cfg{LogFileName} = 'c:/PROGRA~1/TWiki/twiki/data/log%DATE%.txt';
$TWiki::cfg{Languages}{cs}{Enabled} = 1;
$TWiki::cfg{Languages}{da}{Enabled} = 1;
$TWiki::cfg{Languages}{de}{Enabled} = 1;
$TWiki::cfg{Languages}{es}{Enabled} = 1;
$TWiki::cfg{Languages}{fr}{Enabled} = 1;
$TWiki::cfg{Languages}{it}{Enabled} = 1;
$TWiki::cfg{Languages}{nl}{Enabled} = 1;
$TWiki::cfg{Languages}{pl}{Enabled} = 1;
$TWiki::cfg{Languages}{pt}{Enabled} = 1;
$TWiki::cfg{Languages}{ru}{Enabled} = 1;
$TWiki::cfg{Languages}{sv}{Enabled} = 1;
$TWiki::cfg{Languages}{'zh-cn'}{Enabled} = 1;
$TWiki::cfg{Languages}{'zh-tw'}{Enabled} = 1;
$TWiki::cfg{DisplayTimeValues} = 'servertime';
$TWiki::cfg{DefaultDateFormat} = '$day $month $year';
$TWiki::cfg{Site}{Locale} = 'zh_CN.UTF-8';
$TWiki::cfg{Site}{LocaleRegexes} = 1;
$TWiki::cfg{UpperNational} = '';
$TWiki::cfg{LowerNational} = '';
$TWiki::cfg{PluralToSingular} = 1;
$TWiki::cfg{StoreImpl} = 'RcsLite';
$TWiki::cfg{RCS}{ExtOption} = '-x,v';
$TWiki::cfg{RCS}{dirPermission} = 493;
$TWiki::cfg{RCS}{filePermission} = 420;
$TWiki::cfg{Store}{RememberChangesFor} = 2678400;
$TWiki::cfg{RCS}{asciiFileSuffixes} = '\\.(txt|html|xml|pl)$';
$TWiki::cfg{RCS}{initBinaryCmd} = '/usr/bin/rcs  -i -t-none -kb %FILENAME|F%';
$TWiki::cfg{RCS}{initTextCmd} = '/usr/bin/rcs  -i -t-none -ko %FILENAME|F%';
$TWiki::cfg{RCS}{tmpBinaryCmd} = '/usr/bin/rcs  -kb %FILENAME|F%';
$TWiki::cfg{RCS}{ciCmd} = '/usr/bin/ci  -m%COMMENT|U% -t-none -w%USERNAME|S% -u %FILENAME|F%';
$TWiki::cfg{RCS}{ciDateCmd} = '/usr/bin/ci  -m%COMMENT|U% -t-none -d%DATE|D% -u -w%USERNAME|S% %FILENAME|F%';
$TWiki::cfg{RCS}{coCmd} = '/usr/bin/co  -p%REVISION|N% -ko %FILENAME|F%';
$TWiki::cfg{RCS}{histCmd} = '/usr/bin/rlog  -h %FILENAME|F%';
$TWiki::cfg{RCS}{infoCmd} = '/usr/bin/rlog  -r%REVISION|N% %FILENAME|F%';
$TWiki::cfg{RCS}{rlogDateCmd} = '/usr/bin/rlog  -d%DATE|D% %FILENAME|F%';
$TWiki::cfg{RCS}{diffCmd} = '/usr/bin/rcsdiff  -q -w -B -r%REVISION1|N% -r%REVISION2|N% -ko --unified=%CONTEXT|N% %FILENAME|F%';
$TWiki::cfg{RCS}{lockCmd} = '/usr/bin/rcs  -l %FILENAME|F%';
$TWiki::cfg{RCS}{unlockCmd} = '/usr/bin/rcs  -u %FILENAME|F%';
$TWiki::cfg{RCS}{breaklockCmd} = '/usr/bin/rcs  -u -M %FILENAME|F%';
$TWiki::cfg{RCS}{delRevCmd} = '/usr/bin/rcs  -o%REVISION|N% %FILENAME|F%';
$TWiki::cfg{RCS}{SearchAlgorithm} = 'TWiki::Store::SearchAlgorithms::Forking';
$TWiki::cfg{RCS}{EgrepCmd} = 'c:/PROGRA~1/GnuWin32/bin/grep -E %CS{|-i}% %DET{|-l}% -H -- %TOKEN|U% %FILES|F%';
$TWiki::cfg{RCS}{FgrepCmd} = 'c:/PROGRA~1/GnuWin32/bin/grep -F %CS{|-i}% %DET{|-l}% -H -- %TOKEN|U% %FILES|F%';
$TWiki::cfg{EnableHierarchicalWebs} = 0;
$TWiki::cfg{SystemWebName} = 'TWiki';
$TWiki::cfg{TrashWebName} = 'Trash';
$TWiki::cfg{UsersWebName} = 'Main';
$TWiki::cfg{WebMasterEmail} = 'zhanghui026@gmail.com';
$TWiki::cfg{WebMasterName} = 'TWiki Administrator';
$TWiki::cfg{MailProgram} = '';
$TWiki::cfg{SMTP}{MAILHOST} = 'smtp.sina.com.cn';
$TWiki::cfg{SMTP}{SENDERHOST} = '';
$TWiki::cfg{SMTP}{Username} = '';
$TWiki::cfg{SMTP}{Password} = '';
$TWiki::cfg{RemoveImgInMailnotify} = 1;
$TWiki::cfg{NotifyTopicName} = 'WebNotify';
$TWiki::cfg{SMTP}{Debug} = 0;
$TWiki::cfg{PROXY}{HOST} = '';
$TWiki::cfg{PROXY}{PORT} = '';
$TWiki::cfg{Stats}{TopViews} = 10;
$TWiki::cfg{Stats}{TopContrib} = 10;
$TWiki::cfg{Stats}{TopicName} = 'WebStatistics';
$TWiki::cfg{TemplatePath} = 'c:/PROGRA~1/TWiki/twiki/templates/$web/$name.$skin.tmpl, c:/PROGRA~1/TWiki/twiki/templates/$name.$skin.tmpl, c:/PROGRA~1/TWiki/twiki/templates/$web/$name.tmpl, c:/PROGRA~1/TWiki/twiki/templates/$name.tmpl, $web.$skinSkin$nameTemplate, TWiki.$skinSkin$nameTemplate, $web.$nameTemplate, TWiki.$nameTemplate';
$TWiki::cfg{LinkProtocolPattern} = '(file|ftp|gopher|https|http|irc|mailto|news|nntp|telnet)';
$TWiki::cfg{SiteWebTopicName} = '';
$TWiki::cfg{SitePrefsTopicName} = 'TWikiPreferences';
$TWiki::cfg{LocalSitePreferences} = 'Main.TWikiPreferences';
$TWiki::cfg{HomeTopicName} = 'WebHome';
$TWiki::cfg{WebPrefsTopicName} = 'WebPreferences';
$TWiki::cfg{NumberOfRevisions} = 4;
$TWiki::cfg{ReplaceIfEditedAgainWithin} = 3600;
$TWiki::cfg{LeaseLength} = 3600;
$TWiki::cfg{LeaseLengthLessForceful} = 3600;
$TWiki::cfg{MimeTypesFileName} = 'c:/PROGRA~1/TWiki/twiki/data/mime.types';
$TWiki::cfg{Plugins}{CommentPlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{EditTablePlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{InterwikiPlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{PreferencesPlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{SlideShowPlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{SmiliesPlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{SpreadSheetPlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{TablePlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{TwistyPlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{TinyMCEPlugin}{Enabled} = 1;
$TWiki::cfg{Plugins}{WysiwygPlugin}{Enabled} = 0;
$TWiki::cfg{PluginsOrder} = 'SpreadSheetPlugin';
$TWiki::cfg{MailerContrib}{EmailFilterIn} = '';
$TWiki::cfg{Languages}{bg}{Enabled} = 0;
$TWiki::cfg{Languages}{jp}{Enabled} = 0;
$TWiki::cfg{Site}{CharSet} = 'UTF-8';
$TWiki::cfg{Site}{Lang} = 'zh';
$TWiki::cfg{Site}{FullLang} = 'zh-cn';
$TWiki::cfg{PermittedRedirectHostUrls} = 'http://localhost';
$TWiki::cfg{EnableEmail} = 1;
$TWiki::cfg{UserInterfaceInternationalisation} = 1;
$TWiki::cfg{UseLocale} = 1;
$TWiki::cfg{RCS}{QueryAlgorithm} = 'TWiki::Store::QueryAlgorithms::BruteForce';
$TWiki::cfg{ExtensionsRepositories} = 'TWiki.org=(http://twiki.org/cgi-bin/view/Plugins/,http://twiki.org/p/pub/Plugins/)';
$TWiki::cfg{Register}{AllowLoginName} = 1;
1;
posted @ 2008-04-16 22:45 如果有一天de 阅读(3274) | 评论 (0)编辑 收藏
     摘要: My Oracle Cook Book-来自oralce菜鸟的学习笔记
准备
用到的是oracle自带的用户和表
用户为scott/tiger
步骤是:连接数据库  阅读全文
posted @ 2008-03-28 09:26 如果有一天de 阅读(549) | 评论 (0)编辑 收藏
     摘要: Try not to take this personally, but Tracy McGrady hates you.
Sunday, March 09, 2008

All right, maybe not you specifically, but what you think. He knows you never thought much of him as a leader, even though it's pretty clear it was never really in his serene(adj.宁静的、安静的) personality. He knows you think he is soft(软蛋), a critique(n.批评) left over from those nights you begged him to drive the ball and take the hit with a bulging disk(灌篮). And he knows you think he is -- for lack o  阅读全文
posted @ 2008-03-10 22:31 如果有一天de 阅读(409) | 评论 (0)编辑 收藏
    最近在修改组里的TMonitor程序头疼坏了,程序的好多类在设计之初没有考虑线程安全性,现在在源程序上加功能,怎一个痛苦了的。。。
    杨哥(我刚到公司时接手他的程序)是个大牛,他在地图的方面开始设计的很好,但是都是静态数据,没有数据的动态变化的麻烦,然而后来在
JMapEdit上实现模拟动态飞行以及动态监控上实现起来是个头疼的问题,可能会多个线程访问共享变量,而且有线程对共享变量的write操作,在程序中尽量调整原接口以及实现方式。杨哥走了,目前在组里只有我一个人了解地图类编程,昨天跟方sir商量新来的同事是否也能接触我的程序,方sir的回答:TMonitor还是比较难的,估计新来的同事(是个女的)不成,下次招个男的让他接。。。不爽中,俺还是希望带个女滴。。。
   
    PS:经验总结。
    在没有正确同步的情况下,如果多线程访问同一个变量,你的程序就存在隐患。有3种方法修复它:
  • 不要多线程共享变量
  • 使状态变量为不可变的;或者
  • 在任何访问状态变量的时候使用同步
    设计线程安全的类时,使用封装、不可变性以及明确的不便约束等面向对象技术可以使你在解决同步方面的问题时思路清晰
posted @ 2008-03-05 15:50 如果有一天de 阅读(227) | 评论 (0)编辑 收藏
动画的实现上来说,是设置定时器进行刷新.
对于Swing程序来说java.swing.Timer类保证了线程在swing调用上的安全性。通过时间参数的设置时间动态定时刷新,
对于动态往复描绘来说,比如类似于动态的颜色变化,动态的进行透明变化之类的周期性刷新来说,一般需要几个条件
1.动画的周期性
2.动画的当前状态在起始状态和目标状态之间
实现上需要这么几个参数
  • 起始时间 animation startTime
  • 当前时间 currentime
  • 动画周期 animation duration
  • 往返因数 fraction

    往返因数fraction

    比如动态调整透明度、动态修改颜色在动画的过程中可以设定起始与目标值,通过fraction在0-1范围内进行运算进行调整。
以算法来描述则为
  起始值设为 init
  目标值为 dest
  实际值为 actual
    actual=init*(1-fraction)+dest*fraction;
  比较明显的例子为,将颜色从初始颜色动态变化到目标颜色
 
  Color startColor = Color.red;    // where we start
    Color endColor = Color.BLACK;         // where we end
    Color currentColor = startColor;
   ....
   描绘currentColor的一个圆
   在Timer的actionPerform里调整currentColor
   
// interpolate between start and end colors with current fraction
        int red = (int)(fraction * endColor.getRed() + 
                (
1 - fraction) * startColor.getRed());
        
int green = (int)(fraction * endColor.getGreen() + 
                (
1 - fraction) * startColor.getGreen());
        
int blue = (int)(fraction * endColor.getBlue() + 
                (
1 - fraction) * startColor.getBlue());
        
// set our new color appropriately
        currentColor = new Color(red, green, blue);

通过定时器的时间参数动态调整往返因数

    通过时间参数进行计算
    如下代码所示,在Timer的actionPerform里实现
            long currentTime = System.nanoTime() / 1000000;
            
long totalTime = currentTime - animationStartTime;
            //调整周期的起始时间
            if (totalTime > animationDuration) {
                animationStartTime 
= currentTime;
            }
            
float fraction = (float)totalTime / animationDuration;
            fraction 
= Math.min(1.0f, fraction);
     注意当前只是计算出了fraction,如何使因子在1-0和0-1之间往复变化呢
    以下代码实现了该算法
   
    // This calculation will cause alpha to go from 1 to 0 and back to 1
            
// as the fraction goes from 0 to 1
            alpha = Math.abs(1 - (2 * fraction));
      
    //repaint();//重新绘制


posted @ 2008-02-14 12:00 如果有一天de 阅读(1296) | 评论 (1)编辑 收藏
    OO面向对象的编程的一大优势是封装,对于现代软件来说,软件系统使用组件搭建起来的,这些组件不仅可以出现在一个软件系统中,而且有可能出现在其他软件系统中。大多数组件在单线程系统中运行良好,但是在多线程环境下,如何保证组件的线程安全性呢?
    一般来说,封装能够保证类的线程安全性。
   
    首先,确定对象的状态是由那些变量构成的。对象的状态就是field域的完整状态。比如基本类型(primitive)的,int value是Counte类的一个field,那么这个域就组成了对象的完整状态。如果对象有n个基本域,那么对象的状态就是阈值组成的n元组;如果一个对象引用了其他对象,那么他的状态也同时包含了被引用的对象的域。比如collection的状态包含了所有存储在链表的节点对象的状态。

posted @ 2008-01-28 16:33 如果有一天de 阅读(314) | 评论 (0)编辑 收藏