闲来无事要折腾,听说MochiWeb很不错,就准备在本本上实践一下。
网上看了几篇文章:
1.实战Mochiweb.
http://tech.it168.com/jd/2008-01-30/200801301154397.shtml
2.(译)用Mochiweb打造百万级Comet应用,第一二三部分
http://idisc.javaeye.com/blog/267028
http://idisc.javaeye.com/blog/270076
http://idisc.javaeye.com/blog/273074
3.MochiWeb的设计
http://www.javaeye.com/topic/348379
不过呢,这些介绍的都是在linux环境下的安装,在window下自然是行不通的,忙乎了几个小时,其间GOOGLE发挥了很大作用,总算在下班前一秒钟搞定。俗话说好记性不如烂笔头,所以决定发扬流水账精神,把这段MochiWeb坎坷之旅记录下来。
大致过程参照(1.实战Mochiweb.), 这里仅仅记录注意事项:
0.svn checkout mochiweb 在 e:/__opensource__/mochiweb/;
1.安装msys(为了make, 而且必须是GNU make);
2.msys.bat
sh:/>cd /e/__opensource__/mochiweb/
sh:/>make
3.sh:/>escript scripts/new_mochiweb.erl demo
这里会看到有个错误. 同时发现多了个目录demo.
4.上面3的错误是因为windows系统没有符号链接产生的,(deps目录下应该有个符号链接到mochiweb目录,因为要用到(ebin和src)。解决办法到微软网站下载个junction(请google).
sh:/>junction ../mochiweb demo/deps/mochiweb_src
5.进入demo目录;
sh:/>cd demo
sh:/>make all
(如果有堆栈错误请退出msys重进)
6.启动;
sh:/>./start-dev.sh
这时候会有错误(init terminating in do_boot),根据错误提示逐步解决:
7.痛苦的过程在于修改start-dev.sh
1)加入 -s ssl;
2)加入 -s crypto;
3)改路径 $PWD/deps/*/ebin -> #PWD/deps/mochiweb-src/ebin
4)最关键的一步.处理crypto_server的小bug

Code
1 init([]) ->
2 process_flag(trap_exit, true),
3 erl_ddll:start(),
4 PrivDir = code:priv_dir(crypto),
5 LibDir1 = filename:join([PrivDir, "lib"]),
6 LibDir =
7 case erl_ddll:load_driver(LibDir1, crypto_drv) of
8 ok -> LibDir1;
9 {error,_} ->
10 LibDir2 =
11 filename:join(LibDir1,
12 erlang:system_info(system_architecture)),
13 erl_ddll:load_driver(LibDir2, crypto_drv),
14 LibDir2
15 end,
16 Cmd = "crypto_drv elibcrypto " ++ filename:join([LibDir, "elibcrypto"
在erl控制台下,我们可以检验这段代码,会发现L13仍然返回{error,...},原因很简单, 我机器上的目录是这样的
D:\cean\erlang\lib\crypto-1.5.1.1\priv\windows\lib
而要求的是
D:\cean\erlang\lib\crypto-1.5.2.1\priv\lib\win32
解决办法也很懒惰, 重新建个目录, 把crypto_drv.dll考过去.
8.这时候start-dev.sh的exec erl行成这样:
exec erl -s ssl -s crypto -pa $PWD/ebin $PWD/deps/mochiweb-src/ebin -boot start_sasl -s reloader -s demo
9.这时候可以心情愉悦的.
sh:/>./start-dev.sh
然后看http://localhost:8000/
时间仓促要回家就不检查了,有问题请指正,谢谢.
P.S.
1.加入分布式参数:
-sname node1 -setcookie abcdef
2.如果在浏览器中看动起来的结果,就得采用长连接, 在demo_web.erl中修改红色内容(不确定):
Response = Req:ok({"text/html;charset=utf-8;connection=keep-alive",
3.生成测试数据:
(for /L %i in (1, 1, 1000) do @echo http://localhost:8000/test/%i) > mochi-urls.txt
posted @
2009-03-31 17:45 bengxia 阅读(155) |
评论 (0) |
编辑
1、怎么创建Windows Mobile 5.0 PPC "Today"插件,C#可以吗?
2、如何在Mobile 5.0上处理xml文件?
3、为什么我按例子做了,“今日”【选项】按钮却没有啥反应?
4、我们真的需要双缓冲吗?
5、为什么InvalidateRect之后没有触发WM_PAINT消息?
6、我的“Today”插件不是部署在Windows目录下,如何获得它的路径?
posted @
2007-09-30 09:44 bengxia 阅读(548) |
评论 (0) |
编辑
最近需要开发一个Windows Mobile 5.0 Pocket PC的“今日”插件【
一个很好的例子】,结果在设置插件选项时对话框怎么也不出来,我也就纳闷,代码中没有使用到IDD_TODAY_CUSTOM,怎么能显示对话框呢。
结果,忙乎了半天才发现,原来必须把IDD_TODAY_CUSTOM设置成500
#define IDD_TODAY_CUSTOM 500
这个玩笑也开的大了点,文档中也没有提到。
posted @
2007-09-19 16:48 bengxia 阅读(283) |
评论 (3) |
编辑
最近因工作需要开发智能设备项目,在打开一些VC++的sample时没有问题,但是自己着手创建项目时,出现以下问题:在选择设备类型时,选择任何一个VC++的智能项目,都会在状态栏显示“正在创建项目‘XXX’,创建项目失败”。耽搁了好几天,一直没能解决,无法找到错误日志,也想不明白啥原因。
看来今天运气不错,用半调子英文把错误信息转成" smart device, project creation failed" google了一下,很快就找着答案了。
原来又是IE在作怪,早把IE抛弃了,它还是来坑人,烦的狠啊。
说明:{D245F352-3F45-4516-B1E6-04608DA126CC} 指的是
D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjWiz.dll,由于IE的安全机制把HTML的向导页面禁止了。
照着解决办法做了一遍,啊哈,怎么还不行?
不过心里已经基本有底了,
JeffAbraham中讲的是IE7,而我的还是IE6啊,会不会是偶用FireFox的原因?把默认浏览器改成该死的IE(并启用IE选项中的脚本调试,否则还是老样子),再次创建项目,出现JS错误,如下图:

只能调试了,common.js 4039行附近的代码如下:
1 /******************************************************************************
2 Description: When constructing a class name based on project or other user input,
3 Warn user (MessageBox) if the generated class name is a reserved name, and
4 add one digit to the name to avoid the reserved name.
5 Ex: User names the project "Atl" --> C+Atl+Module is a reserved name -->
6 Warning MessageBox plus generated name is CAtl1Module.
7 strPrefix: The first part of class name (Ex: project name - Atl).
8 strPostfix: The second part of class name (Ex: Module).
9 ******************************************************************************/
10 function ConstructClassName(strPrefix, strPostfix)
11 {
12 var strCandidate;
13 strCandidate = "C" + strPrefix + strPostfix;
14 for(var i = 1; i<=10; i++)
15 {
16 var bValid = (window.external.dte.VCLanguageManager.ValidateIdentifier(strCandidate) &&
17 !window.external.dte.VCLanguageManager.IsReservedName(strCandidate));
18 if(!bValid)
19 window.external.ReportError();
20 else
21 break;
22 strCandidate = "C" + strPrefix + i.toString() + strPostfix;
23 }
24 return strCandidate;
25 }
26
原来window.external.dte对象为空,这又是什么原因呢?
修改IE的管理加载项,竟然发现
所有加载项被禁用,并且无法启用,RadioButton都是灰色的(费了好几个小时找原因,原以为是我用了TotalCommander中的注册表优化功能引起的,后来证明不是)。原来,很久很久以前,我装完机器之后设置了组策略-
“除非在加载项列表中特别指定,拒绝所有加载项“(位置:组策略-用户配置-管理模板-Windows组件-Internet Explorer-安全功能-加载项管理)。修改过来,重新启动VS2005,并创建VC项目,终于看到可爱的向导了。
posted @
2007-07-03 14:18 bengxia 阅读(794) |
评论 (1) |
编辑
1、当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------
当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[HttpException (0x80004005): 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。]
System.Web.HttpRuntime.SetUpCodegenDirectory(CompilationSection compilationSection) +3474171
System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags) +226
[HttpException (0x80004005): 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files”的写访问权限。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +3426903
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +88
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +149
正解:
1) 关闭VS.NET
2) net stop iisadmin
3) C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i -enable
4) iisreset
2、未能创建 Mutex
“/WebSite”应用程序中的服务器错误。
--------------------------------------------------------------------------------
未能创建 Mutex。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 未能创建 Mutex。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[InvalidOperationException: 未能创建 Mutex。]
System.Web.Compilation.CompilationMutex..ctor(String name, String comment) +3464673
System.Web.Compilation.CompilationLock..cctor() +158
[TypeInitializationException: “System.Web.Compilation.CompilationLock”的类型初始值设定项引发异常。]
System.Web.Compilation.CompilationLock.GetLock(Boolean& gotLock) +32
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +114
[HttpException (0x80004005): “System.Web.Compilation.CompilationLock”的类型初始值设定项引发异常。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +3426855
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +88
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +149
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42
正解:
http://blogs.msdn.com/jorman/archive/2006/07/24/system-invalidoperationexception-mutex-could-not-be-created.aspx
1) C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASPNET_regiis -ga yourdomain\youraccount
2) iisreset
posted @
2007-04-24 16:02 bengxia 阅读(2562) |
评论 (4) |
编辑
我的机器基本上是裸奔,尤其反感商业杀毒软件与防火墙等,那些骗钱的就是“杀毒毋尽”,至多算个聊胜于无罢了。个人比较喜欢狗狗-看门狗Winpooch,开源,精干,强悍。虽说偶尔有点小情绪,但是可爱,忠诚!
安装的winpooch 0.6.5,一直用的好好的,但是打过windows 2003 service pack 2之后,罢工了。
主要原因是兼容性问题,LOG如下:
This file is an "incompatibility report" for Winpooch version 0.6.5
It contains information that allow Winpooch development team
to make Winpooch compatible with your system.
Please post in on the "bug report system" at the address :
http://sourceforge.net/tracker/?group_id=122629&atid=694093
File ntkrnlpa.exe contains the following kernel :
- Label......... ntkrnlpa 5.2.3790.3959 (srv03_sp2_rtm.070216-1710)
- Dbg file...... ntkrnlpa.pdb
- Signature..... 4121E0AD95474F849EBDDF280C7E498D1
- Translation... 中文(中国)
- Size.......... 2227 kB
File ntoskrnl.exe contains the following kernel :
- Label......... ntoskrnl 5.2.3790.3959 (srv03_sp2_rtm.070216-1710)
- Dbg file...... ntoskrnl.pdb
- Signature..... 6CB8DB5C933549D480D86C017861E13D2
- Translation... 中文(中国)
- Size.......... 2373 kB
通过检查BUG列表,找到解决办法
http://sourceforge.net/tracker/index.php?func=detail&aid=1700552&group_id=122629&atid=694093该问题同时也会出现在windows 2000 sp4, windows xp sp2中。
简单的办法就是下载其中的附件:
http://sourceforge.net/tracker/download.php?group_id=122629&atid=694093&file_id=224996&aid=1700552
解压替换掉winpooch安装目录中的winpooch.sys。
附上一篇强帖:
终极病毒防御体系——人与Winpooch结合的产物但是请注意,强人
uhunters的规则集好像只适用于Winpooch 0.5.1版本。
posted @
2007-04-24 01:06 bengxia 阅读(628) |
评论 (7) |
编辑
摘要: 问题:在Bluehost中部署Drupal不能正确显示中文。原因:MySql的字符集编码设置不正确。解决:在手动安装Drupal之前,登录Bluehost的cPanel,在phpMyAdmin中选择创建的数据库xxx_drupal,在最下面的“整理/collation”中选择:utf8_general_ci,〔执行〕。或者在SQL中执行:Code highlighting ...
阅读全文
posted @
2007-04-19 14:49 bengxia 阅读(331) |
评论 (1) |
编辑
根据
Drupal 5 简易安装指南(文字版)的安装步骤,在windows2003+apache2+php5+mysql5上面安装Drupal,最后一步创建管理员账号完成时,直接显示Access Denied,因为没有本地邮件服务器,所以不会发送密码到注册邮箱,但是也没有如指南所解释的会显示密码要求修改,得到的只是一个Access Denied,并且没有日志。经过分析和google,最终知道问题出在Session和Cookie上(因为我的站点是带有端口号的),根据
Drupal 5 and problems with domains that include ports提示,修改setting.php:
if (isset($_SERVER['HTTP_HOST'])) {
// strip www., IP addresses, and port numbers from HTTP_HOST
$domain = '.'. preg_replace('`(^www\.|[\d:\.]+$)`', '', $_SERVER['HTTP_HOST']);
// Per RFC 2109, cookie domains must contain at least one dot other than the
// first. For hosts such as 'localhost', we don't set a cookie domain.
if (count(explode('.', $domain)) > 2) {
ini_set('session.cookie_domain', $domain);
}
}
/**
* To prevent cookie collisions, use an unique session name. Session names only
* accept alphanumeric characters. If you want to share sessions across
* installations in the same domain, specify the session name by hand.
*/
conf_init();
session_name(preg_replace('`(^https?://|[^a-z\d])`i', '', $base_url));
当然你也可以把那段if(isset...)直接注释掉,并加入
ini_set('session.cookie_domain', 'yourdomain.com');
另外:注意
`(^www\.|[\d:\.]+$)` ,如果站点不以www开头,而以其他(比如ww2)的形式开头,那么也需要对应修改。
目前成功安装了Drupal和Mambo,也试用比较了一下。虽然经验不多,总体感觉来讲,“Drupal更简洁、Mambo更商业”。如果你做一个自娱自乐的网站,那么Drupal比较合适,如果你想做商业化的网站,或许Mambo更合理。当然这不代表Drupal不适合做商业网站,他们的功能都很强大,扩展性也非常好。只是Drupal相对比较清新,使用也比Mambo简单。
Joomal是Mambo的一个分支,看介绍差别不大,有空还是实践一下才能更好的理解。
posted @
2007-04-17 18:33 bengxia 阅读(264) |
评论 (0) |
编辑
想不到重拾PHP竟然遇到了这么多问题,折腾了一个晚上,所幸总算成功了。为了以后不再花这么长时间,还是记个流水账吧。
步骤:
1、下载资源
1 -
MySQL5.0, http://sq5.onlinedown.net/down/mysql-5.0.37-win32.zip;
2 -
Apache2.2, http://sq3.onlinedown.net/down/apache_2.2.4-win32-x86-no_ssl.zip
3 -
PHP5.2, http://www.php.net/get/php-5.2.1-win32-installer.msi/from/this/mirror
4 -
Mambors5.0, http://www.mambochina.net/option,com_remository/Itemid,31/func,download/id,196/chk_0fe55fc41710c8bc9ad4c901a0a3cc49.html
2、安装配置以及遇到的问题
1 - 安装MySQL5.0,过程正常。但是在配置服务的最后一步Execute时,报告错误:
Can't connect to MySQL server on 'localhost' (10061) 根据提示知道,原来我机器上原来安装过MySQL,并且这次安装在同一目录,过去的数据文件仍然存在,而其中保存有原来安装的MySQL的root密码,这次的密码不一样,所以无法启动。
解决办法:干脆把MySQL卸了,把data目录也删除了,重新安装,一切顺利。
注:产生此错误的其他可能原因:hosts文件中,localhost不指向127.0.0.1
2 - 安装Apache2.2,很顺利,安装完之后访问http://localhost,显示It works!,说明Apache没有问题。
3 - 安装PHP5.2,主要耗费的时间都在这里,主要原因是安装时沿用了老习惯<完全安装>。安装完之后,开始配置:
a - 新建一个test.php文件在apache/htdocs目录下,内容很简单,如下:
<?php
phpinfo();
?>
浏览http://localhost/test.php,显示的是源文本,开始配置apache的php module;
b - 在apache/conf/extra下新建httpd-php5.conf,内容如下:
LoadModule php5_module "D:/PHP/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php
PHPIniDir "D:/PHP"
c - 修改apache/conf/httpd.conf,在最后加入:
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
Include conf/extra/httpd-php5.conf
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
d - 修改apache/conf/httpd.conf:
查找:
DirectoryIndex index.html 替换成:
DirectoryIndex index.html index.htm index.php default.php
e - 修改php.ini:
查找:
extension_dir = "./" 替换:
extension_dir = "d:/local/php/ext/"
查找:
;extension=php_mbstring.dll
;extension=php_gd2.dll
;extension=mysql.dll 将前面的;号去掉。
查找:
;date.timezone =
替换:
date.timezone = PRC
f - 重启Apache,发现在停止时httpd抛出异常,并终止,但可以启动apache,并显示状态“Apache/2.2.4 (win32) PHP/5.2.1”,打开http://localhost/test.php,显示空白页。查阅PHP Manual的installation faq:
7. Unix/Windows: I have
installed PHP, but when I try to access a PHP script file via my browser, I get
a blank screen.
Do a 'view source' in the web browser and you will probably find that
you can see the source code of your PHP script. This means that the web server
did not send the script to PHP for interpretation. Something is wrong with the
server configuration - double check the server configuration against the PHP
installation instructions.
一直以为是配置问题,下面省略反复安装/卸载,改配置若干回合(>3),然后才猛然醒悟,为啥不看看apache 的log呢,打开apache/logs/error.log,果然发现:
...[error] [client 192.9.100.40] PHP Warning: require_once(SAM/php_sam.php) [function.require-once]: failed to open stream: No such file or directory in sam_factory on line 1 ...[error] [client 192.9.100.40] PHP Fatal error: require_once() [function.require]: Failed opening required 'SAM/php_sam.php' (include_path='.;D:\\php\\pear') in sam_factory on line 1然后赶紧google,http://drupal.org/node/119623 这篇帖子比较好的阐述了该问题,按照他的解决办法,把extension=php_sam.dll注释掉。重新启动apache,再次访问http://localhost/test.php。结果显示了一小半页面,httpd就抛异常挂了,继续检查error.log,已经明白问题产生的原因了,都怪自己太贪心,安装php时extensions选择的太多了,缺省或者只选择必需的几个就不会有问题,web server setup也只需要选择apache 2.2.x module,注意如果全部选择,安装过程会有错误,只是我开始时没意识到,仅仅做了个修复安装(repair)就以为没问题了。
g - 重新change安装PHP之后,重启apache,浏览http://localhost/test.php显示正常。
4 - 安装并配置Mambors5.0,首先解压到d:/mambors,开始修改apache配置httpd.conf:
查找
d:\apache\htdocs
替换
d:/mambors
修改php.ini:
doc_root = d:/mambors
error_reporting = E_ALL
display_errors = On
5 - 打开http://localhost/,根据向导一步步完成安装,但是在完成之后打开管理站点时,却发现有两个问题:
a - 站点名称显示乱码
b - 页面开始处有好几条:
Notice: Undefined variable: return in d:\mambors\includes\mambo.php on line 2002
这两个问题比较好解决:
a - 这是因为mysql的缺省字符编码配置问题,打开my.ini,在最后加入:
default-charset=utf8
default-character-set=utf8
default-collation=utf8_general_ci
b - 打开
mambo.php文件,第2002行
$return= addslashes( $return);
修改成
$arr[$name] = addslashes( $arr[$name]);
从逻辑上看也只有这样比较合理,如果不行我就再换成$def,结果再进入管理站点,效果让我非常满意。
好了,总算完成个初步了,得出以下教训:
1、别被表面现象所迷惑,多看看log;
2、不要放过过程中的小问题,如果在安装php时仔细一点就不会浪费这么长时间解决问题了;
3、动手之前先回顾或参考一下已有的经验,如果早把my.ini设置好了,也就省的重配一回mambo了;
4、当然,纪录是必要的,好记性不如烂笔头。
posted @
2007-04-13 01:40 bengxia 阅读(2442) |
评论 (7) |
编辑
前不久想看看Office 2007怎么样,下载了一个试用版,就剩下一次试用机会了。
竟然在今天写东西的时候发现,小写字母编号的对齐方式存在问题,如下图:

可以发现,对于非等宽的字母列表,对齐存在格式错误(比较窄的字母fij...)。貌似很弱的问题哦。
posted @
2007-03-06 11:41 bengxia 阅读(132) |
评论 (0) |
编辑