warpuber暂时是一个局域内网的魔兽对战平台,理论上也可以用来做cs联机,但是现在魔兽方面也没有做完。在学校,楼与楼之间魔兽不能自动连机,这是由于魔兽的搜索只能在当前网段.255.255.255.255广播.用魔兽搜索器能够联机。但是那个搜索器缺少一个服务列表,只能靠自己不停的刷新才能看到主机,也看不到延迟,联机时不能退出搜索器。 warpuber是用不同的原理制作的一个“高级搜索器”,自动更新主机信息。谁建主了自动就显示出来了,不需要刷新。自带一个聊天群,喊人更容易。可靠的延迟数据,防止卡卡卡卡最新更新.加入了ip广播功能.主机可以加入一些ip段,选择广播.可以让这些网段的人不使用任何搜索器就能看到你的主机!更新当前版本1.1严重错误 9.27日的版本有一个严重错误.会导致无法聊天! 现已纠正!9.28 请下载9.27的同学重新下载更新说明: 支持私聊(不完善!) 添加提示声音,有人建立主机的时候有提示音,主机人满的时候有提示. 添加修改游戏名称的功能,在游戏选择主机的时候能知道那个主机的楼,和名字.也可以自己添加文字 代码基本上重新改写了. 源码更新较大安装运行说明别说废话,我只要能运行: ok 请下载完整客户端 1,运行 java6.exe 安装完毕; 2,运行 warpuber.jar 输入个名字,登陆完事详细说明:如果你安装了java运行环境jre 1.5以上版本,那么可以直接下载精简客户端。下载后运行即可。注:学校神州数码查上网记录的时候需要安装的一个jre就是1.5版本的。安装了它就能运行warpuber了。 warpuber.jar是可执行jar文件,java特有的 warpuber.exe是用免费的java2exe封装的。 这两个都可以执行。完整版安装完之后,那个最大的文件java6.exe就没有用了,直接删掉都可以。除非你重装系统了,就得重新安装。xml文件夹放的是个人的配置信息,比方说个人登陆时候的名字,版本,和将来要放的ip信息。 icon文件夹下放的是warPuber的图标1.1新加入au文件夹.里面放的是sun的au格式的音乐文件,就是我所说的提示音.觉得不好听可以自己替换掉…注意关闭warpuber的时候不会退出,会最小化到系统托盘。 退出要在最小化的图标上点鼠标右键。如果运行多个warpuber.会出现多个图标。warpuber会出现这样一行字Address already in use: Cannot bind;并且无法获取在线列表。 全部退出就可以了。这个程序不是目前所用的魔兽搜索器.他的原理是完全不同的.这个程序不会搜索游戏.需要主机和客户机同时开才能有用,这个就是对战平台,不是搜索器!#开发说明这是本人自创的方法,软件原理很简单。每个懂编程的人都能做出来。详细信息见我的csdn博客http://blog.csdn.net /xinrui5577/archive/2009/09/16/4560590.aspx (这里不是打广告,确实那个博客写的文章看起来舒服)主要UDP包:收索包:内容:F7 2F 10 00 50 58 33 57 15 00 00 00 00 00 00 00 功能:向主机提出收索信息。问别人“你建什么主机?” 在打开魔兽进入局域网的时候,会向当前网段(255.255.255.255)广播这个包。只要条件符合,收到这个包的主机都会返回一个地图信息给他(他:这个收索包的IP端口)主机包:内容:F7 32 10 00 00 00 00 00 01 00 00 00 00 00 00 00 功能:告诉别人:“我建主机了,要不要看看。” 建立主机的时候开始,向当前网段广播这个包,每5秒钟一次。收到这包的客户机会发送搜索包。地图包:内容: F7 30 8C 00 50 58 33 57 14 00 00 00 01 00 00 00 39 69 C2 00 E5 BD 93 E5 9C B0 E5 B1 80 E5 9F 9F E7 BD 91 E5 86 85 E7 9A 84 E6 B8 B8 E6 88 8F 20 28 76 73 00 00 01 03 49 07 01 01 77 01 B9 79 01 99 D5 B9 31 4D CB 61 71 73 5D 45 6F 77 19 6F 6D 6F 61 65 5D 45 2B 6F 75 41 21 41 6D 6D 2B 73 75 61 73 73 21 77 B1 37 2F 37 31 63 2F 77 23 33 79 01 77 73 01 01 00 0A 00 00 00 01 00 00 00 01 00 00 00 0A 00 00 00 1B 00 00 00 E0 17 功能:“这就是我所建的图,你好好看。” 主机收到搜索包之后就把这个包返回给他,包括所有有用信息。魔兽的工作流程魔兽进入局域网的时候会广播一个搜索包,只发送一次。只发送当前网段(255.255.255.255),所以我们的魔兽只能看到本寝室,或者少数几个寝室的几个主机。建立了了主机的魔兽收到之后就会发送一个包给他,这个包就是地图信息,包括地图信息,主机名,加入了多少人,剩下多少位置,还有一个重要的数据就是游戏的端口。一般魔兽的端口是6112.建立主机的魔兽会向本地发送一个包,“我建立主机了”搜到这条消息的魔兽会发送一个搜索包给主机。主机就发送 地图信息。收到之后就解析地图,这时候大家就看到了有人建主了点击加入· ~ 建立tcp连接 一直到推出主机的游戏ps: 一场游戏下来,和主机发送的包 大概25MB(半小时) 主机收发的包就是 9*25 MB/30 min ;//按照dota计算一个主+9个客户端的10人游戏。 这样粗略的估计主机的网速要求就是 9*25*1024/30*60=128>100 kb/s 加上一点点别的程序所要的通讯包。要想不卡,主机的网速需要保证这个数吧。官方地址 : http://code.google.com/p/warpuber
昨天去 golang.org 安装go语言..环境是系统版本: Mac OS X 10.6.2 (10C540)Kernel 版本: Darwin 10.2.0启动宗卷: MAC SNOW LEOPARD启动模式: 正常电脑名称: “song”的“MacBook Pro”用户名称: song (song)安全虚拟内存: 已启用64 位内核和功能扩展: 是启动后的时间长度: 2:08设置 ~/.profileexport GOROOT=$HOME/Goexport GOOS=darwinexport GOARCH=amd64export GOBIN=$HOME/binexport PATH=$GOBIN:$PATH安装还是出现 http test失败fetch http://www.google.com/robots.txt以为是gfw的问题.. 通过tor翻墙过去执行还是失败.. 继续等待.. 但是firefox能访问这个地址阿..很是不解
Mac下 用 VMWare Fusion 注册机程序[file][attach]1[/attach][/file]
安装mencoder的时候说 /lib/libc.so.7版本不一样mv /lib/libc.so.7 /lib/libc.so.7.bak索性就用另外一个替换 刚替换就完蛋执行任何命令出现 /libexec/ld-elf.so.1: Shared object “libc.so.7″ not found,required by搞了半天啥都用了 启动盘UbuntuFreebsd启动盘google baidu 啥都用上没辙最后在freebsdchina上找到一个和我一样的搬石头砸自己脚的家伙delphij 的一个建议 /rescue/mv /lib/libc.so.7.bak /lib/libc.so.7搞定 冷汗一身啊
其优势就是无需 count 以下总记录数直接采用推进形式在百万记录及高负载有一定作用但是只能上下推进 没更多页选择paginator.py[code]class InvalidPage(Exception): passclass PageNotAnInteger(InvalidPage): passclass EmptyPage(InvalidPage): passclass Paginator(object): def __init__(self,object_list,per_page): self.object_list = object_list self.per_page = per_page def page(self,number=1): self.cur_pages = number if self.cur_pages < 1 : number = 1 number = (int(number)-1)*int(self.per_page) max = int(number)+int(self.per_page)+1 data = self.object_list[number:max] num = data.__len__() data = data._result_cache # if next if num > int(self.per_page): data = data[0:-1] nextpage = abs((int(number)+int(self.per_page))/int(self.per_page))+1 else: nextpage = None # if prev if int(number) > 0: if int(number) < int(self.per_page): prevpage = 0 else: prevpage = abs(int(int(number)-int(self.per_page))/int(self.per_page))+1 else: prevpage = None return Page(data,nextpage,prevpage,self) def _get_num_pages(self): return self.cur_pages num_pages = property(_get_num_pages) def _get_num_per_page(self): return self.per_page per_pages = property(_get_num_per_page)class Page(object): def __init__(self,object_list,next_page,prev_page,paginator): self.object_list = object_list self.next_number = next_page self.previous_number = prev_page self.paginator = paginator def has_next(self): if self.next_number is None: return False else: return True def has_previous(self): if self.previous_number is None: return False else: return True def next_page_number(self): return self.next_number def previous_page_number(self): return self.previous_number[/code]
FROM_UNIXTIMEUNIX_TIMESTAMP
/usr/lib/crt1.o(.text+0×81): In function `_start’:#wget http://tokyocabinet.sourceforge.net/tokyocabinet-1.4.14.tar.gz#tar -xzvf tokyocabinet-1.4.14.tar.gz# cd tokyocabinet-1.4.14# ./configure# make 出错(/usr/lib/crt1.o(.text+0×81): In function `_start’:) 改用虾米 gmake 安装完毕# gmake# make install
测试了下 php_imagick 的一些功能希望能对你有用[code]<?php//define('PATH',dirname(__FILE__));//$srcIMG = PATH.'/src.png';////$srcIMG3 = PATH.'/039.jpg';////$srcIMG4 = PATH.'/041.jpg';////$srcIMG = PATH.'/SI851275.JPG';//$newIMG = PATH.'/newImage.png';//$img = new Imagick($srcIMG);////$img->writeImage($newIMG);exit;//////$img->charcoalImage(1,0.1); // 木炭效果 不错//////$img->chopImage(100,100,100,100); // 模糊效果 不错//////$img->commentImage('hello World'); // 添加图片评论//////echo $img->getImageProperty('comment'); // 读取图片属性//////$img->cropImage(200,100,200,200); //裁减图片 很有用//////$img->cropThumbnailImage(1000,1000); // 缩放后居中裁减//////$img->despeckleImage(); // 去除一些杂点/////////* 在上面写字////$string = 'hello World';////$draw = new ImagickDraw(); ////$draw->setFillColor(new ImagickPixel('blue'));////$draw->setFontSize(28);////$metrix = $img->queryFontMetrics($draw, $string);////$draw->annotation(25,125,$string); ////$img->drawImage($draw); ////*///////////$img->edgeImage(0); // 高亮边缘?//////////$img->embossImage(0,0.1 ); // 感觉好像加入光照效果//////////$img->enhanceImage(); // 提高图片品质//////////$img->equalizeImage(); // 好像增加对比及光照把//////////$img->flipImage(); // 垂直翻转把!//////////$img->flopImage(); // 水平翻转把!//////////$img->frameImage(new ImagickPixel('green'),15,15,2,2);/////////* 去色////$clone = $img->clone(); ////$clone = $img->fximage('p{0,0}'); ////$img->compositeImage($clone,imagick::COMPOSITE_DIFFERENCE,0,0);////$img->modulateImage(100, 0 , 0); // 加个3d边框////*///////////$img->gammaImage(10); // gamma 校正//////////$img->gaussianBlurImage(1,1); // 高斯模糊图像//////////$img->getCompression(); // 压缩图像?//////////$img->getCompressionQuality(); // 压缩图像?//////////echo $img->getCopyright(); // 获得版权 Copyright (C) 1999-2007 ImageMagick Studio LLC//////////$img->oilPaintImage(3); // 油画效果//////$img->adaptiveResizeImage(300,300);//$img->setImageFormat('png');////$bg = new ImagickDraw(); ////$imgs = array($srcIMG2,$srcIMG3,$srcIMG4);////$img2 = new Imagick($imgs);////foreach ($img2 as $i){////$i->thumbnailImage(100,null);////$i->setImageBackgroundColor( new ImagickPixel( "black" ) ); /////* Use a random angle */ ////$angle = mt_rand( 1, 45 ); ////if ( mt_rand( 1, 2 ) % 2 === 0 ){ //// $angle = $angle * -1; ////}////$i->polaroidImage( $bg, $angle ); ////$img->compositeImage( $i, Imagick::COMPOSITE_OVER, mt_rand( 10, 350 ), mt_rand( 10, 350 ) ); ////}//////$img2->writeImage($newIMG); ////$img2->removeImage();////////#////$draw = new ImagickDraw();////#//// ////#/////* Set the fill color to light blue */////#////$draw->setFillColor( new ImagickPixel( 'light blue' ) );////#//// ////#/////* Create the polaroid image */////#////$img->polaroidImage( $draw, 20 );//////$img->radialBlurImage(10); // 径向模糊//////$img->raiseImage(20,20,10,10,false); // 整个按钮//////$img->rotateImage(new ImagickPixel(), 270); // 旋转////$img->scaleImage(300,300,true); // 感觉像缩放//////$img->sepiaToneImage(70); // 深褐色调节?//////$img->setCompression(imagick::COMPRESSION_ZIP);////// a value between 1 and 100, 1 = high compression, 100 low compression////$img->setCompressionQuality(100);//////$img->setImageBias(90); // 不懂//////$img->setImageColorspace(3);////////$img->setImageGamma (10); // 设置gamma效果////$img->setImageOpacity (0.8); // 设置图像透明//////$img->thumbnailImage(500, 0);////$img->setInterlaceScheme(Imagick::INTERLACE_PLANE);////$img->charcoalImage(1,0.1);////$img->sketchImage(10,0.1,5); // 听说素描效果//////$img->solarizeImage(100); // 曝光°//////$img->spliceImage(100,100,10,10);////$img->spreadImage(5);////$img->swirlImage(30); // 旋转扭曲图像//////$new_image = $img->transformImage( "500x600", "500x500" );////$new_image ->writeImage($newIMG);//////$img->transposeImage(); // 逆时针旋转 90°//////$img->transverseImage(); // 顺时针旋转 90°//////$img->vignetteImage(1,1,10,50); // 圆切?//////$img->waveImage(10,10); // 浪折////$img->whiteThresholdImage('grey'); //$img->writeImage($newIMG);//$img->clear();//$img->destroy();?>[/code]附上 最新编译的: PHP 5.2.8 的 php_imagick.dll 下载后放入 ext 目录下 并在 php.ini加入这个扩展例如:[code]extension=php_imagick.dll[/code][file]attachment/1235449948_0.rar[/file]
编译错误‘HCRYPTPROV’ : undeclared identifier#include 在前面加上下面这句 #define _WIN32_WINNT 0×0500例如:[code]#define _WIN32_WINNT 0x0500#include <wincrypt.h>[/code]
本文摘抄自 http://wiki.codemongers.com/NginxChsHttpLimit_zoneModule?highlight=(limit)limit_zone limit $binary_remote_addr 10m;server {location /download/ {limit_conn limit 1;}limit_zone limit $binary_remote_addr 10m;定义一个叫“limit”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准(即一个地址一个会话)。您可以注意到了,在这里使用的是 $binary_remote_addr 而不是 $remote_addr。$remote_addr 的长度为 7 至 15 bytes,会话信息的长度为 32 或 64 bytes。 而 $binary_remote_addr 的长度为 4 bytes,会话信息的长度为 32 bytes。当区的大小为 1M 的时候,大约可以记录 32000 个会话信息(一个会话占用 32 bytes)。limit_conn limit 1;指定一个会话最大的并发连接数。 当超过指定的最发并发连接数时,服务器将返回 “Service unavailable” (503)