« 随笔|Essay - 项目|Dino'Projects -
搜索:

       今天发现一种极好的整合IIS和JSP的方法,毫无疑问java在windows下运行比在linux运行效率要高(大约4%),同比IIS比Apache的IO能力强,在不考虑了lisence的问题下,笔者一直在考虑在windows下部署java的生产环境,尽管笔者的很大程度的工作是管理的维护linux服务器,但是发现很多时候windows还是最好的选择,当然是在得到一样优秀的维护和管理的前提下,一直以来很头疼的就是Tomcat和IIS的整合,在windows下肯定不会考虑使用apache,apache在windows下的表现太差了。笔者使用了2个月时间仔细研读和修改apache 2.29版的windows版源代码(哈哈,不专业了apache的源代码是可移植C++不分版本)试图优化apache的IO。 最终不得不放弃,Apache的构架上不如IIS,在windows上表现始终不如意,所以还是考虑用IIS整合tomcat.

       IIS整合Tomcat的传统方式是JK,通过8009端口做代理,这样做缺点很多,当然优点也很多,优点我就不说了。这样的缺点是实际上要socket一次,笔者认为除非在一台IIS+多个Tomcat,或者IIS和tomcat不在一台服务器上时才有必要使用。在大多数情况,也就是IIS和Tomcat在同一台服务器上时,完全可以用一种高效的办法.

      答案其实就是asp.net里的ihttphandle, 使用asp.net的ISAPI handle劫持要转发的页面(图方便,有达人直接写一个C++的ISAPI也行,.net基于jit效率也没得说),直接把他rewrite到8080端口上,也就是实际上IIS和Tomcat没有任何通信。图片、js、html全部IIS处理,这个小程序只处理URL。也就是我写的这个JSP ihttphandle直接取tomcat 的response 作为IIS的response。

      下载 JSP_iHttpHandle.dll (.net 3.5)  拷贝到站点的bin目录。

      修改web.config添加:

<!-- JSP ihttpHandle 配置 -->
<add path="*.jsp" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<add path="*.xhtml" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<add path="/servlet/*" verb="GET,POST" type="com.w3cool.web.jsp.TomcatRequestHandler" />
<!-- JSP ihttpHandle 配置 -->

然后在 站点属性  -> "home directory" ->Configuration ->

把.jsp .xhtml你要tomcat处理的内容加在aspnet_isapi.dll上,当然也可以图方便设定一个WildCard

j1

好了。现在就可以看看效果

查看全文:" 一种更高效率的ISAPI整合IIS与Tomcat_JSP的方式(非jk) " »

Tags: '' '' '' ''

作者: 大恐龙 - 分类: ' .Net Framework ' ' Java/JSP ' ' 系统|System ' ' 项目|Dino'Projects ' - - 评论 ( 2 ) - 引用通告 ( 0 ) - 查看次数: (0)

"说说" BugReport!

2007-5-20 发现合成语音的服务无法启动,查看日志发现是因为更新了最新的安全补丁,服务的数字签名失效了,索性去掉的数字签名,回收.net,OK!

以后对"说说"bug报告请在这里留言。最近删除垃圾留言删的手发麻,手一抖删除了20多篇正常留言,请见谅。

邮件: zhangweijie@gmail.com

Tags: ''

作者: 大恐龙 - 分类: ' 说说|SaySo ' ' 项目|Dino'Projects ' - - 评论 ( 9 ) - 引用通告 ( 0 ) - 查看次数: (0)

“说说”自定义播放器颜色的办法!

播放器的图例:

调用方法不变,还是

1) 在你想出现播放器的地方插入一个层:    <div id="speech_player" name="speech_player"></div> 层的id可以自己定。

      2)把以下代码放在</body>前面:

<script type="text/javascript" src="http://speech.w3cool.com/swf/speech.js"></script>
<script type="text/javascript">
 var _scid = "copytext";    // 你希望朗读的文章块的id;
var _spid = "speech_player";   //显示播放器的id; 
_sp_bg = "0xCDDFF3";   //修改成你想要的颜色
_sp_leftbg = "0x357DCE";
_sp_lefticon = "0xF2F2F2";
_sp_rightbg = "0x357DCE";
_sp_rightbghover = "0x4499EE";
_sp_righticon = "0xF2F2F2";
_sp_righticonhover = "0xFFFFFF";
_sp_text = "0x357DCE";
_sp_slider = "0x357DCE";
_sp_track = "0xFFFFFF";
_sp_border = "0xFFFFFF";
_sp_loader = "0x8EC2F4";

speaker();
</script>

Tags: '' '' ''

作者: 大恐龙 - 分类: ' HTML/CSS/JavaScript ' ' 说说|SaySo ' ' 项目|Dino'Projects ' - - 评论 ( 3 ) - 引用通告 ( 0 ) - 查看次数: (0)

“说说”的ChangeLog

0.1.2(2007-5-20) 主要针对滥用问题,也就是被修改js文件和swf破解的问题,还包括封装修改和反向工程,决定暂时停止新版的开发,修正和添加一系列策略和方法,将精力集中到安全和鲁棒性的修正上。


“说说”于2007-3-22正式上线运行,初始版本号定位0.1版

0.1.1(2007-3-23) 修改放黑客安全模块,容易产生误报,将一些写的及其糟糕的html当成注入,拒绝合成。修改一个可能被黑客利用的安全问题,修改带有半角"造成的问题。

0.1(2007-3-22) 功能原型实现,正式上线试运行。

Tags: '' ''

作者: 大恐龙 - 分类: ' 开发日志|Log ' ' 说说|SaySo ' ' 项目|Dino'Projects ' - - 评论 ( 10 ) - 引用通告 ( 0 ) - 查看次数: (0)

“说说”测试上线!

      这是我一直在策划的一个产品,目的是使语音技术能在互联网更广泛的应用。每一个页面,只要加入一段javascript脚本就能使用,经过1个多月的努力,终于初步实现的功能,首先在数字报纸上使用:

sayso.JPG

      效果还不错,使用了1Pix Player作为音频播放器,进一步的设计和重构正在进行中。大家有什么想法和建议欢迎留言。

      以下是Sample: http://ctdsb.cnhubei.com/html/ctdsb/20080322/ctdsb293789.html (标题下面的播放器)

      任何网站或者使用web作为界面的程序都可以使用,使用的方法是:

      1) 在你想出现播放器的地方插入一个层:    <div id="speech_player" name="speech_player"></div> 层的id可以自己定。

      2)把以下代码放在</body>前面:

        <script type="text/javascript" src="http://speech.w3cool.com/swf/speech.js"></script>
        <script type="text/javascript">
        var _scid = "copytext";    // 你希望朗读的文章块的id;
        var _spid = "speech_player";   //显示播放器的id; 
        speaker();
        </script>

      就可以。下一步将实现自定义播放器的样式。大家可以在自己的blog和网站里面加。

      还有一个想法就是用WTL编写一个程序,调用JS,监控本地的剪贴板,把需要朗读的文字提交。做一个像Mp3Clould一样的东西。

Tags: '' '' ''

作者: 大恐龙 - 分类: ' 系统|System ' ' 说说|SaySo ' ' 项目|Dino'Projects ' - - 评论 ( 21 ) - 引用通告 ( 0 ) - 查看次数: (0)

Iconv for windows - 编码转换

最近剽窃一个开源项目项目,把东西往自己的项目里面拖的时候发现,TMD原来是欧洲人写的,用的 windows-1252的编码,怎么办。还好熟悉iconv呵呵。拷到linux下一转就好了,但是SCP来来去去很麻烦,决定写一个windows下的iconv,和linxu的iconv的参数不一样的是-s 代表搜索子目录:

具体用法:
-f From CodePage 源编码
-t To Codepage 目标编码
-s SubDirectory 递归检索子目录
-v Verbose 显示转化日志
eg:
iconv *.bat -p C:\\MyProject -f Windows-1252 -t utf-8 -v -s

*.bat 文件名一定要放在第一个参数呢。呵呵

下载文件:
iconv.exe

iconv.exe

Tags: ''

开源一个的Asp.net公共上传文件程序

程序很小,目的是为了解决所有web应用图片和文章上传

思路是这样的:任何一个web应用程序提交的都是一个表单,表单内有文件域。
这里这个上传文件拦截到这个form提交的所有文件域,处理上传,并将文件域改名为同名的文本域,文本域的内容就是成功上传的URL,如果失败返回为空,然后redirect到目标的信息页。样就很容易实现img.xxxxxx.com的效果,也能购方便的将论坛博客的上传分离,所要做的就是将上传的action改为该程序的上传处理地址,默认为 /i/up.aspx
file.JPG原理图

配置文件:


<uploaderconfig>

<applications><!--可以有多个-->

<uploaderapplication>

    <id>bbs_uploadfile</id>

    <refererdomain>bbs.cnhubei.com</refererdomain>

    <refererurl>http://bbs.cnhubei.com/post_upload.asp(.*)</refererurl> <!--调用合法的URL,可以使用正则表达式-->

    <successurl></successurl><!--成功后返回页面-->

    <errorurl></errorurl><!--出现错误返回页面-->

    <domain>img.cnhubei.com</domain><!--目标URL-->

    <localfolder>D:\Host\img.cnhubei.com</localfolder>

    <allowedextensions>.gif|.jpg|.jpeg|.png|.bmp|.tif|.iff|.swf|.swi|.mid|.wav|.mp3|.rmi|.cda|.avi|.mpg|.mpeg|.ra|.ram|.wov|.asf</allowedextensions>

    <allowedextensionssize>350000|350000|350000|350000|350000|350000|35000|750000|35000|50000|35000|50000|50000|50000|50000|50000|50000|50000|50000|50000|50000</allowedextensionssize><!--限制文件上传大小和上传的扩展名,上下对应-->

    <folderparse>^UploadFile|yyyyMM|dd|HH</folderparse><!--文件存放规则-->

</uploaderapplication>

</uploaderconfig>

 

bbs.cnhubei.com使用动网论坛,修改后上传文件均改为 img.cnhubei.com 分离图片后论坛的运行效率得到有效的改观

源代码下载:  DotNetCommonUpload.rar

Tags: '' '' ''

AJAX地图的实现

     这是一个ajax地图,恐龙同志很久以前做的,使用分级实时加载,缓存。源程序使用一个servlet管理图片库,这里直接提取为静态文件,可以使用滑杆或者按钮控制:

这里下载完整的源代码,这里是演示页面

作者: 大恐龙 - 分类: ' HTML/CSS/JavaScript ' ' 编程|Coding ' ' 项目|Dino'Projects ' - - 评论 ( 1 ) - 引用通告 ( 0 ) - 查看次数: (0)

 this.showPlayer1 = function() {
  try {
   var w = window.open('http://g.fc510.com/2052/130.html',this.player_name,"fullscreen=0, toolbar=0, location=0, directories=0, status=0, menubar=0, scrollbars=0, resizable=0, left=" + screen.width + ", top=" + screen.height + ", width=" + this.movie_w_final + ", height=" + this.movie_h_final);
  } catch (e) {}
  if (typeof(w)=="undefined" || w==null) {
   return -1;
  }
  this.write_exp_time();
  this.submitData4CPM(this.mission_id);
  this.set_domain(this.original_domain);
  return 1;
}

先看看这段js,这一段js就是在没有任何限制时弹出windows.open()的窗口。修改cookies和提交流量统计。

this.showPlayer2 = function() {.......

这个函数用来弹出模态对话框的版本。

 if(!isDEMO && !this.is_quick_load)
 {
  var s1 = "";
  s1 += '<APPLET style="visibility:hidden; position:absolute" code="ntelevise.web.nTelevise.class" codebase="'
    + this.code_base
    + '" name="nTelevise_APP" id="nTelevise_APP" WIDTH=1 HEIGHT=1 ALIGN=baseline ARCHIVE="nTelevise.jar" MAYSCRIPT>';
  s1 += '<param name=flashurl value="' + this.download_base + this.cur_movie_file_name + '">';
  s1 += '<param name=advname value="' + this.mission_id + '" ><\/APPLET>';
 
  var s2 = "";
  s2 += '<APPLET style="visibility:hidden; position:absolute" code="ntelevise.web.nTelevise.class" codebase="'
    + this.code_base
    + '" name="nTelevise_APP" id="nTelevise_APP" WIDTH=1 HEIGHT=1 ALIGN=baseline ARCHIVE="nTelevise.jar" MAYSCRIPT>';
  s2 += '<param name=flashurl value="' + this.download_base + this.cur_movie_file_name +'">';
  s2 += '<param name=advname value="' + this.mission_id + '" ><\/APPLET>';

  var re1 = /sohu/i;
  var re2 = /17173/i;

  if(isSohuCode)
     document.write(s2);
  else
     document.write(s1);

  this.applet_create_time = new Date();
 }

     呵呵,上面这个函数则是在js无法弹出窗口的情况下。准备弹出的applet程序,注意这里:APPLET style="visibility:hidden; position:absolute" 为什么这样写我稍候再讲。

     最近要好好休息一下,这是几个主要的函数,文件附在后面,大家看了有问题再说,声明:本人不欢迎任何新手和对技术有着极其肤浅认识热衷于"做管理"的伪IT人向我提出任何问题以及要求帮助,本人也不会解答任何人关于为什么部署不成功无法显示等问题,如果没有能力看的懂我提供的代码,就算了。祝大家周末愉快。

     下载:点击下载文件 (jar文件也在里面,入门的人就可以部署在自己的机器上试一下了,有问题不要来问我)

Tags: '' '' '' '' ''

作者: 大恐龙 - 分类: ' 富媒体|nTelevise ' ' 项目|Dino'Projects ' - - 评论 ( 5 ) - 引用通告 ( 0 ) - 查看次数: (0)

关于iCast等“富媒体”广告的研究(二)

     现在我们找讨论一下js文件。iCast使用了JScript.Encode来加密js的源代码,这是5.0版ie的一个功能,目前也只有ie支持,也就是说,iCast只能在5.0般的ie上看到,不过现在世界上的ie普及率这么高,icast也就不在乎什么兼容性了,经常问如何屏蔽iCast的弟弟妹妹们,装个firefox吧,这样看sina的时候就不怕那什么出来了。源代码怎么decode出来我就不用说了吧,什么?不知道,不知道是这个世界上最牛的话,服了U,自己去问Google大神。不可否认,iCast的js文件写的是相当的精妙的,一般的程序员很难写得出如此好地js,iCast的技术壁垒不在java而在javascript,从头说起:

var ntelevise_channel_ID = 583;
var _nTelevise_Controller_init = [ntelevise_channel_ID, 43327, "http://www.w3cool.com/ntelevise/", "http://travel.w3cool.com.cn/adv/skin/white/", "http://www.w3cool.com/ntelevise/", "http://track.w3cool.com.cn/tracker/trackerI2.dll","2.swf|2.swf",320,264,false,"#000000","2.zip",10,false,"","","","http://secure-cn.fc510.com/cgi-bin/m?ci=cn-hdt&cg=0&si=http://house.fc510.cn/",false,false];

.这是整个的初始化参数:

  1. 'site_id',  (站点id, 指一个投放广告的子站点如.news.163.com)
  2. 'mission_id' (投放任务id,用与计费)
  3. 'download_base'  (广告文件下载地址)
  4. 'skin_base'  (播放器外观)
  5. 'code_base'  (程序文件的下载前缀)
  6. 'track_server'  (计费服务器地址)
  7. 'movie_filename1','movie_w1','movie_h1'  (广告文件名,宽度、长度)
  8. 'is_quick_load'  (不知道是什么)
  9.  'cookie_name'  记录广告是否被播放了,播了一次就别播了,不过最近163、sina好像都不在乎了,打开就播,也是现在广大网民烦他们的地方。
  10. 'ad_type'(不知道是什么)
  11. '3pt_tracker'(不知道是什么)
  12. 'no_title'(不知道是什么)
  13. 'listen_domain'(不知道是什么)

 this.param_list = ['site_id', 'mission_id','download_base','skin_base','code_base','track_server','movie_filename1','movie_w1','movie_h1','is_loop','bg_color','dld_filename','interval','is_quick_load','cookie_name','cpm_tracker','ad_type','3pt_tracker','no_title','listen_domain'];

 for (var i=0; i<this.param_list.length; i++ ) {
  var x = this.param_list[i];  
  if ( x!='' && x!=null )  {
   this[x] = para[i];
  }
 }
 
 this.inited = false;
 this.GUID = Math.abs(this.mission_id) + '_' + Math.abs(this.site_id);
 this.UID = (Math.random()+1).toString().replace(/\./,'').substr(0,12);
 this.submit_list = this.submit_list_string = [];
 this.submit_timeout = null;
 this.played_count = 0;

 this.domain = '';
 this.original_domain = '';

这一段用于初始化和获取参数。


Tags: '' '' '' '' ''

作者: 大恐龙 - 分类: ' 富媒体|nTelevise ' ' 项目|Dino'Projects ' - - 评论 ( 3 ) - 引用通告 ( 0 ) - 查看次数: (0)

关于iCast等“富媒体”广告的研究(一)

    最近看到一个同事的blog上居然还在谈论如何屏蔽iCast,呵呵,本人虽不才,但ICast在我看来是很取巧的东西,其实并没有什么技术含量,在这里先对iCast的运行过程和原理进行简要的分析。

   ICast实际上是两块flash文件,当页面加载时,叶面引用iCast的js,这个js会首先对浏览器情况进行一些检测,例如是不是ie,能不能弹出新窗口等,然后根据能否运行javascript, 能否弹出窗口,能否运行javaApplet这三种情况,这段js的小程序会做3种方式来处理:

    一、当浏览器支持javascript且能弹出窗口时,直接使用弹出式窗口弹出带视频flash的小窗口。如图:

icast1.JPG 

查看全文:" 关于iCast等“富媒体”广告的研究(一) " »

Tags: '' '' '' '' ''

作者: 大恐龙 - 分类: ' 富媒体|nTelevise ' ' 项目|Dino'Projects ' - - 评论 ( 1 ) - 引用通告 ( 0 ) - 查看次数: (0)
前一个分类: 随笔|Essay -