当前分类: 互联网2.0

推荐一些socket工具,TCP、UDP调试、抓包工具04/16/2013

还记得我在很久很久以前和大家推荐的FiddlerCharles debugger么?他们都是HTTP的神器级调试工具,非常非常的好用。好工具能让你事半功倍,基本上,我是属于彻头彻尾的工具控。

假如有一天,你写“传统”的PHP有些累了,想玩玩socket了,搞搞python、NodeJS、GO之类的新兴语言或框架(当然我不是说这些语言不能写web),或者干脆就用PHP吧,事实上PHP5.4的性能提高的真是相当之多,用PHP 的socket函数就能简单的写一个web socket服务器 (代码在评论里)了,甚至有个很不错的PHP框架—— swoole,他和其他的大多数常见的框架都不同,因为他不依赖http服务器!号称高级开发框架,“目标是向Java框架、Rails On Ruby、Python Django Pylons等一流框架发起挑战”的一种以socket方式运行的PHP框架。还有一个叫nanoserv,……我说这么多就是为了证明PHP也能玩好socket的,所以socket以及TCP、UDP都是平易近人的。

说工具
太给力了,让我看完 »

| 4条评论分类: 互联网2.0,有得下载哦 标签:  

网页游戏与360浏览器05/31/2010

今天看到一份《CNNIC2010年中国网页游戏市场研究报告》,其中关于玩家使用何种浏览器玩游戏的部分颇耐人寻味,这个浏览器使用情况不是按照IE、FF、Chrome这样子区分的,而是将IE细分,毕竟在中国,IE还是占最大份额的,而又有很多基于IE内核的,诸如遨游、世界之窗、360浏览器、腾讯TT浏览器……咦!说到重点了,就是360浏览器,大家看下面的两张截图: 此文妙哉,快快看全文 »

| 7条评论分类: 互联网2.0,咸吃萝卜 标签:  

web socket 心跳包的实现方案05/30/2010

现在网络环境错综复杂,socket心跳包是获得健康强壮的连接的有效解决方案,今天,我们就在web socket中实现心跳包方案,是的,尽管我们只是做一个简单的聊天室,但我们让他稳定可靠一些一点也没有错。

我的心跳包方案很是简单,原理就是间隔发送心跳包数据给服务器,服务器在一定时间内发回心跳包响应,对比超时限定,如果超过设定的超时时间,则认为当前与服务器的websocket连接已经断开,关闭当前web socket连接,善后处理,例如重新连接,或者弹出提示……

比较有用的核心代码是这样子的:

function keepalive( ws ){
	var time = new Date();
	if( last_health != -1 && ( time.getTime() - last_health > health_timeout ) ){
			//此时即可以认为连接断开,可设置重连或者关闭连接
			$("#keeplive_box").html( "服务器没有响应." ).css({"color":"red"});
			//ws.close();
	}
	else{
		$("#keeplive_box").html( "连接正常" ).css({"color":"green"});
		if( ws.bufferedAmount == 0 ){
			ws.send( '~H#C~' );
		}
	}
}

这就是心跳函数,发送心跳包和检测心跳健康度。我们将其植入到websocket的onopen事件中,来开启心跳检测。像这样:

var ws = new WebSocket( to_url );
  ws.onopen=function(){
		$("#statustxt").html("connected.");
		$("#send_btn").attr("disabled", false);
		heartbeat_timer = setInterval( function(){keepalive(ws)}, 1000 );
	}

是的,这样子就可以实现web socket的心跳包,这里有些类似于多线程的发送方式,在发送心跳包的同时,并不影响正常的数据通信,我们的例子还是以上次的websocket聊天室来改进,我们可以发现,心跳包运行过程中,并不会干扰到我们的正常聊天。服务端我也进行了一些修改,原理类似,在超过一定时间内都没有收到客户端发来的心跳包,则认为该客户端已经掉线,关闭连接,收回资源。

Demo在这里:https://www.zendstudio.net/libs/websocket/chat/demo2.html

现在,有一个新的问题出现,如果我们要用php socket来模拟心跳包技术,该怎么实现?各位路过的朋友请多指教,感恩戴德。

| 3条评论分类: web前端编程,互联网2.0,网络通信协议 标签:  

开放型博客程序中应该实现的几个接口05/29/2010

互联网上的应用越发的五花八门,特别是进入web2.0以后,互联网更是把各地的人们紧紧的联系在了一起,为了掌握资讯,人们大量的使用搜索引擎来寻找自己想要知道的,自从有了RSS,比如我,就喜欢用google reader来订阅各种新鲜的资讯、先进的技术资源,这使得信息的呈现方式多样化,人们可以更为个性的、以更为适合自己的方式来获取和阅读资讯。

博客程序的出现,已有很多年的时间,然而未见其有所衰退,网民们还是很热衷于写博客,阅读博客,这还是一个很个性、独立的个人空间,我们可以写任何自己想写的东西。为了让自己写的东西更容易被别人找到,博客程序需要搜索引擎友好。搜索引擎技术也是不断进步,发展至今,其已经不仅仅是靠蜘蛛去抓取内容了,他们有了更好的技术,今天,就单独讲讲博客搜索吧!

百度开放平台的推出,确实是一个很大的进步,他的阿拉丁接口相当不错,从用户的角度看,可以不用点击进入目标网站,直接在搜索引擎即可了解到他想要知道的讯息。同时,它也支持blog ping接口了,该接口标准和google的blog ping是一样的,数据格式没有什么不同。这些API接口的推出,无疑是大大加快文章的收录速度,新鲜出炉的文字能够更快更广的发布传播出去,当然,前不久,google又推出了PubSubHubbub协议,这更是个伟大的创举,其实现了实时搜索!也就是XXX在微博上刚刚说了一句话,google通过使用PubSubHubbub就能马上呈现给对此话题感兴趣的用户。在技术上,我们一贯的承认,google是走在前列的。

从开放型博客程序的角度出发,那么以上讲到的都是主动技术,被动技术除了日志页面内容之外呢,还有RSS、RDF、Atom等等格式的被动呈现,用户可以在订阅了这些源之后,不用打开主页,只要在自己的阅读器里就可以浏览诸多的博客内容,感兴趣的可以再点击了解详细,发表评论等等,并且从阅读器可以一口气看很多的博客,而不用一个一个的来回切换,这是有效率的阅读方式。

所以,开放型博客程序已经不仅仅是将日志内容简单的显示出来完事的东西了,她需要默默工作的东西还有很多,除了以上的google ping,百度ping,RSS,RDF,Atom,甚至还需要更新sitemap,虽然很多人认为这是SEO,可是你的博客程序要显得有足够的开放性,这些都应该去实现,因为你根本不知道你的用户以哪种方式来阅读你发表的文字。是的,请相信这一点,就像我以前说的,多做一些,再多做一些

| 发表评论分类: 互联网2.0,浅谈做产品 标签:  

有中国特色的云计算正在建设中05/28/2010

近日360终于显露出来它的流氓本质,我说这句话的意思是,我认为它从来就是个流氓!看到360通过用户数打压竞争对手——可牛免费杀毒,据可牛论坛称,其仅仅发布5分钟即遭360恶意拦截。啊!若情况属实,那真是——————杯具了~这其中的透露出来的强烈信号,或多或少还是让人有些惊讶。中国的杀毒市场从来都是热闹非凡,相比大家都已经习惯了的“潜规则”的娱乐圈,那真是我等IT人士司空见惯了。

从可牛论坛的诸多技术分析来看,我只有一个字,啊!!!!原来云计算还能这么干啊?这他妈的和黑客控制的僵尸网络有什么区别?同样是向所有客户端下达指令,同样被控电脑不明真相,……不同的是,360是一间公司,而且打着为人民服务的旗帜,这甚至让流氓显得光明正大,正人君子们还得给他让个道儿。。。这哪里是什么云计算,这根本就是个大木马,想让他的客户端干啥就干啥。

在我们天朝,没有人管流氓,因为中国做大的公司有两种,一种是耍流氓做大的,另一种是做大了耍流氓的,怎么管?我们用户只能骂骂人公司流氓,却不能对他做什么,他公司还可以继续安然无恙的开下去,处处都在跟进云计算,我们中国当然不会错过这项先进技术,但我真的没有想到我们的同胞居然如此聪明,云计算竟成了他们的武器,用户的电脑就是他们的战场,他们可以让自己的软件在用户的电脑里头“计算”他们想要的结果,而这个云端,实际上可以理解为是个远程控制端,所以齐了,云+计算=云计算。什么他妈的云计算,根本就是个超级大僵尸网络。

| 8条评论分类: 互联网2.0,咸吃萝卜,理想与现实 标签:  

websocket 通信协议(已更新到version 13)05/11/2010

UPDATE:前些天有网友mail和我讨论websocket协议,当时颇忙!更惭愧的是,此篇文章竟已不能使用,原因是当时我写的还是websocket草稿时候的协议!终于,我将websocket 协议更新到了version 13版本 —–2012.5.19

websocket通信协议实现的是基于浏览器的原生socket,在客户端用JS即可轻松完成,前些天都在学习websocket 协议(但实际上websocket 协议甚为简约),并且粗略的思考过websocket的对于下一代web应用会产生怎样的影响,我想最大的巨变应该是就是实时性上吧!另外诸如上传大文件之类的优于http的应用。但问题也随之而来,服务端怎么办?前些天我弄了个websocket 聊天室的demo,现在还得在服务器上专门开个进程来跑呢,也许到时候不再是简单架设个web server就能跑应用的了。也许过不了多久,会出不同的服务端方案吧!先期待一下。

websocket的协议是很简单的,这里我把它分成客户端和服务端来讲。在客户端,new WebSocket即可实例化一个新的websocket对象,但其参数略微有一点不一样,参数格式是这样的ws://yourdomain:port/path ,这个从我的聊天室demo里面就可以轻松看出(ws = new WebSocket( “ws://www.zendstudio.net:9108/chat” ); ),WebSocket对象会自动解析这段字符串,发送到指定服务器端口,首先执行的是双方握手(handshake),客户端发送数据格式类似这样: 让我膜拜一下全文吧 »

| 28条评论分类: web前端编程,互联网2.0,网络通信协议 标签:  

弄了个websocket 聊天室玩玩05/09/2010

今天,我写了个websocket的聊天室demo,实践之后感觉这个东西实现的长连接着实很有诱惑力,在数据量的传输上,除了第一次的handshake,其余的每次传输只在原数据头尾分别加上”\x00″和”\xFF”两个字符(除此之外,和socket便没有任何差别),这个和ajax的传输不太一样,后者属于http协议,因此每次都会带有的头信息。

websocket的协议颇为简单,在第一次handshake通过以后,便建立连接,其后的通讯数据都是以”\x00″开头,以”\xFF”结尾。在客户端,这个是透明的,websocket组件会自动将原始数据“掐头去尾”。

好吧!看看我写的简陋的demo吧(PS:请使用chrome 4.0以上版本来打开页面):
https://www.zendstudio.net/libs/websocket/chat/demo1.html

| 14条评论分类: web前端编程,互联网2.0,网络通信协议 标签:  

html5带您进入“云游戏”时代04/22/2010

html5的巨大影响已经越来越无法让人们忽略了,几个牛逼的demo出尽了风头,大家谈论web的东西也越来越多的涉及html5,这个下一代的web标准,她强调的原生概念深入人心,乔布斯帮主犀利的指出导致safari崩溃的罪魁祸首乃是flash插件的言论并非空穴来风,我们也常常在web game中感到flash插件略微的有些捉襟见肘。尽管flash显然在目前比html4+js的解决方案看上去要优秀的多,当然互联网上根本不乏优秀的成功的flash game,甚至“社区游戏”(例如开心农场),但人们往往想做的更好。

于是,html5逐渐的进入人们的视野,到了目前这个让人无法忽略的地位。更为激动人心的不仅仅是html5实现了原生视频播放这么简单代替flash,而webGL绝对是个震撼的体验!

WebGL实现了真正的3D,这项技术如果应用到web game中,那简直就是个颠覆性的效果,我们的web game完全和大型网游之间毫无差别,而且还不用去下载客户端,轻松跨平台。看看这几个关于webGL的demo吧!这真的太不可思议了。

在web game中,基于http的无状态连接有时候着实让我们头疼,我们需要socket,这样可以让我们的游戏运行的更顺畅,负载更小,我们的服务器能同时支持的在线数将更多,游戏体验也会更好!可这些在目前的浏览器上无法直接实现,我们的聊天室实在没有办法基于http,只好使用flash socket + JS的解决方案来让聊天室可以使用。而下一代的web标准,也就是html5中,将加入websocket,这是一个支持长连接的socket底层实现,让我们可以创建自己的通信,这对游戏太重要了,加上她,我们就可以完全的宣布,web game不再和大型网游有什么区别了!现在,我们基于http协议的web game要不断的去通过一个seesion令牌来验证玩家的合法性,验证提交数据的有效性,还有只能通过客户端向服务器“拉”数据,不能“推”数据的机制让很多功能开发起来非常吃力,出来的效果却不甚满意,有了websocket,很多头疼问题都将迎刃而解。

使用html5的webGL、webSocket将可以实现web游戏的最佳体验,说起来都令人热血沸腾啊。也许在不久的将来,就会有一款这样的web game 上线,所有的东西都在云端,玩游戏只要打开网页就行,跨浏览器,跨平台,随时随地玩游戏!这就是“云游戏”时代。

当然,html5普及还有很多的工作要做,浏览器的支持,硬件加速,网络带宽……等等等等,还有很长的一段路要走。另外,flash也不会那么快的死掉,flash game目前在国内相当成功,相当火爆,AS的程序员也是相当吃香的,毕竟flash这项技术目前很成熟,有很多资深的开发人员,有很强大的IDE,Adobe公司也没有放弃研发,继续寻找着先进的技术来改进flash,使他支持的东西更多。

html5的IDE会是Dreamweaver么?那不还是adobe的东西?呜呼!作为adobe公司,你好纠结啊,哥们。

| 3条评论分类: web前端编程,互联网2.0 标签:  

非背景中图片的css sprites应用,来自google05/10/2009

不常更新博客是可耻的,我常这样想。趁晚饭还没有准备完成的时候,写一下前些天注意到google的一个css sprites,页面是在google的搜索结果页面,例如在google搜索zend studio,就在这个页面,初看左上角的logo并无任何特别,当我准备将其另存为,我发现,这整张图片是这样的:

google logo

因为在背景中我是常用到或者看到css sprites,而这张图片是“前景”,看了下代码,还是很巧妙的。原理是这样的:父元素相对定位,定义宽和高,然后overflow:hidden,img用绝对定位,然后top和left来控制位置,就让多余的部分hidden了。

看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<style type="text/css">
			body{background:#ccc}
			h1{padding:0;margin:0;font-size:small;}
			a#logo{position:relative;margin:14px 0 7px;width:150px;height:52px;overflow:hidden;display:block;}
			a#logo img{position:absolute;top:-26px;left:0;border:0;}
		</style>
	</head>
	<body>
		<h1>
			<a id="logo" title="google 主页" href="http://www.google.cn/webhp?hl=zh-cn">google<img alt="" src="http://www.google.cn/images/nav_logo4.png" width=168 height=119></a>
		</h1>
		<img alt="" src="http://www.google.cn/images/nav_logo4.png" width=168 height=119>
	</body>
</html>

就是这样的“前景” css sprites,而背景的应用似乎更为简单,就是background-position了,吃饭!

| 5条评论分类: web前端编程,互联网2.0 标签:  

Windows下自由创建.htaccess文件的N种方法10/26/2008

.htaccess是apache的访问控制文件,apache中httpd.conf的选项配合此文件,完美实现了目录、站点的访问控制,当然最多的还是rewrite功能,即URL重写,PHP中实现伪静态的一个重要途径,也是被公认为SEO中搜索引擎友好的极为有效的一个手段。
尽管前些天的黑屏风波闹的沸沸扬扬,但依本人拙见,windows用户并无任何减少。现在的一个实际问题就是windows不允许重命名时.的前面没有字符,它认为这样的文件名是不合法的。这就造成我们无法通过重命名”新建文本文档.txt”为”.htaccess”来创建此访问控制文件,但是,事情总有解决的办法。且看下面的几个方法:

1、使用DOS命令,在DOS下有三种方法可供选择:

使用屏幕编辑命令copy con .htaccess后回车,输入内容,最后按下ctrl+z结束编辑,就成功生成了.htaccess;
使用重命名命令ren 1.txt .htaccess ,这是最常规的方法了,在windows窗口下不能执行的命令,在cmd下却如履平地;
使用重定向命令 echo. >.htaccess,这里将一个回车符输入到.htaccess,同样能创建成功;
三种方法一并截图如下:

太给力了,让我看完 »

| 16条评论分类: 互联网2.0 标签:  

PHP界大牛们
反人类不分昼夜
牛掰级朋友圈子