猪圈 下 Tag 为perl 的日记

hypnotoad workers参数对并发的影响

使用mojo作为生产服务的时候可以使用mojo自带的hypnotoad服务,类似apache的workers模式,可以根据参数产生指定的进程来加大并发能力。 以下是ab测试为1 worker,4 works和8 works的并发情况。 服务器硬件环境:I5 6300U, 4核心,4G内存,运行在VM虚拟机上 服务器软件环境:CentOS 6.5 64位, Perl 5.24 64位 ab范例 ab -c 200 -n 10000 http://192.168.100.10:8080 服务端:一个查询和写入redis数据的功能 1 work:Requests per second: 68.74 [#/sec] (mean) 4 works:Requests per second: 202.60 [#/sec] (mean) 8 works:Requests per second:...

perl生成二维码的方法

因为有现成的模块,所以直接使用就可以了 #!/usr/bin/perl -w use Imager::QRCode; my $qrcode = Imager::QRCode->new( size => 2, margin => 2, version => 1, level => 'M', casesensitive => 1, lightcolor => Imager::Color->new(255, 255, 255), darkcolor => Imager::Color->new(0, 0, 0), ); my $img = $qrcode->plot("www.google.com"); $img->write(file...

windows下使用morbo来调试mojo

mojo确实是perl下一个很强大的web框架,基本上涵盖你需要使用的大部分功能,不管是要使用fcgi模式还是cgi更或者是websocket都能很快的实现, 传统mojo的开发需要不停的关闭和重服务,这对开发来说是很不友好的。不管不用担心,mojo早就想到了这一点,跟nodejs下的geddy一样,mojo有个叫morbo的服务可以做自动加载重启的工作。而使用起来也很简单,如果你装好了mojo,那morbo也就自带了,你只需要执行 morbo yourapp.pl 当你修改过代码后,mojo就会自动帮你重新加载,你只需要把重心放在开发上就ok了。 但是在winodws上使用morbo而恰好你又使用了EV的话可能就会出现下面的情况 Server available at http://127.0.0.1:3000 EV does not work with ithreads. 这是因为EV是不支持线程的,具体愿意可以去看EV的文档。 这个时候也不用慌,只需要在你的用户的环境变量中设置一下 MOJO_REACTOR=Mojo::Reactor::Poll 是不是炒鸡煎蛋,...

AnyMongo在高版本perl下的编译Bug

在perl高于5.12版的时候编译会出现mongo_support.c: In function 'elem_to_sv':mongo_support.c:432:18: error: 'PMf_LOCALE' undeclared (first use in this function)mongo_support.c:432:18: note: each undeclared identifier is reported only once for each function it appears indmake.exe:  Error code 129, while making 'mongo_support.o' 原因是perl5.12以后xs的方法有所变化,简单的做法就是编辑mongo_support.c 找到     flags |= PMf_LOCALE;修改为      #if PERL_REVISION==5...

安装ZMQ::LibZMQ4

首先下载zeromq4 http://zeromq.org/intro:get-the-software 官方推荐2和3的用户升级到4   zeromq4依赖libsodium-devel,没有的话先安装该模块,剩下就是默认的安装方法。   安装好后开始ZMQ::LibZMQ4的安装。 先装好以下模块 Task::Weaken Test::TCP ZMQ::Constants     下载源码后,我懒得去设置pkg-config,所以只需按下面步骤即可 默认zmq的库文件是在/usr/local/lib里,在命令行里依次执行: ZMQ_LIBS=/usr/local/lib \ perl Makefile.PL make  等编译完成后 make test make install 即可。   以上操作在CentOS 6.7,  perl5.22下通过    ...

LWP的HTTP请求突然不能用的问题

LWP

几种perl持久化速度比较

 前段时间看到一个老外对perl网络传输持久化做了个对比,原文地址http://blog.celogeek.com/201401/519/perl-benchmark-jsonxs-vs-sereal-vs-datamessagepack/,需要自己翻墙。本人在自己的机器上也做了下测试。硬件配置Intel(R) Xeon(R) CPU           X3430  @ 2.40GHz, 8G内存,Centos6.4 64位 perl 5.10 64位。原文中作者测试了Data::MessagePack,Sereal,JSON,CBOR,这里我也加了一个Storable,毕竟从取材来说这个模块是自带的。注意CBOR目前只支持64位的操作系统。以下是测试结果...

几种压缩算法对比

因为需求原因,需要多台机器向一台机器发送数据,考虑到网络原因,需要对传输的数据(json)格式进行压缩,因为是多对一,也就意味着对压缩而言,解压速度需要更好一些,以下是几种压缩算法测试的结果,一共四种LZ4,Snappy,LZF,Zlib...

几种Perl下读取文件的效率测试

测试

Make perl模块的时候出现Your Makefile has been rebuilt

最近编译perl模块,在Make的时候报出一下错误==> Your Makefile has been rebuilt. <====> Please rerun the make command. <==falsemake: *** [Makefile] Error 1看上去不像是编译的环境问题,到网上查看了下原因,主要是因为系统的时间戳不对,从stage1开始是很容易出现这个毛病,当你将localtime设为中国区时间时,系统会自动+8小时,,然后你在把时间校正,会造成文件时间戳不对,多数程序编译时会有警告,但仍然可以通过,不过不排除有些过不去的因为是在虚拟机上,所以系统时间和实际时间相差很大,当然解决方法也有2种,一种是等8个时小时后在编译,一种则是在安装时,做时区设定这一步时,即ln -sf /usr/share/zoneinfo/PRC /etc/localtime先将时间往回调8小时,这样,链接后,系统自动+8小时,就是正常时间再次编译,顺利通过...

Undefined subroutine &Compress::Zlib::gzopen

今天在用CPAN安装模块的时候却发现无法安装模块了,报告以下错误Undefined subroutine &Compress::Zlib::gzopen called at /usr/lib/perl5/5.8.8/CPAN.pm line 5721大概问题就是Compress::Zlib这个模块有点问题,至于为什么有问题我也懒得去研究了。这里有两种方法:其一就是自己去CPAN下载个最新版Compress::Zlib ,注意不要用CentOS自带YUM的其二就是删除掉所有的Compress::Zlib相关的模块(我选择的是这种),执行find /usr/lib/perl5/ | grep Compress | grep Zlib就OK了,注意:这里的/usr/lib/perl5是你perl的路径,不同的系统可能路径不一样再次运行CPAN,一切OK...

运行libfetion-perl出现 __stack_chk_fail_local

最近因为系统移植,把以前在CentOS5.3环境的libfetion-perl在另外一个机器上重新编译安装。编译和安装都很顺利,可当运行的时候Perl就报出__stack_chk_fail的错误。找了很多资料,后来发现有人也遇见过同样的问题(原文参考),究其原因是因为gcc编译器的版本太低。我查看了目标机器上的gcc 版本 3.4.6,而CentOS5.3上的gcc 版本 4.1.2 2007062,所以才会出现上述的错误。解决方法按参考文章所述:编辑/usr/include/sys/cdefs.h (系统不同可能路径也不同)文件,在最后一个#endif前面加上如下代码:extern void __attribute__((noreturn))        __stack_chk_fail(void);extern void __attribute__ ((noreturn))        __stack_chk_fail_local(void);然后在libfetion的include中选任意一个.h结尾的文件加入以下2段代码 void __attribute__((noreturn))__stack_chk_fail(void){        ;} void __attribute__((noreturn))__stack_chk_fail_local(void){        ;}make的时候会报如下错误,无视掉好了: login.c: In function `__stack_chk_fail':login.c:114: warning: `noreturn' function does returnlogin.c: In function `__stack_chk_fail_local':login.c:120: warning: `noreturn' function does return至此模块可以正常使用了...

2008北京perlchina大会见闻!(旅行篇)

其实早该记录完这些信息的,但因为从大连回来后就伤风感冒,而且特别严重,以至到今天才开始动笔。PerlChina大会定于11月8日开始,为了能赶上大会,我选择了7日晚的火车,因为从武汉到北京只需要9个多小时,在车上睡一觉就可以了,本来一直担心安全问题,所以一直犹豫在软卧和硬卧之间的选择,主要原因是软卧的价格和机票已经相差无几了,主要是飞机早上的那班比较早,我未必能赶上,于是还是选择火车,几经思索后决定还是选择硬卧,反正我也没啥可以被偷的,在乎那多干吗。...

用perl实现WIN下第三方程序的后台运行

perl

在WINDOWS上安装Image::magick

看到过两个作者都有写过如何安装Image::magick,不过好像都写的不是很完全 在这里我写下自己的安装方法,也算是一种补充 首先到Image::Magick的网站去下载软件,如下连接 http://www.imagemagick.org/script/binary-releases.php#windows 软件的安装和普通WINDOWS软件的安装没什么不同,注意在安装的时候会有一个地方提示你要进行选择,记得把Install PerlMagick for ActiveState Perl v5.8.8 (这个版本号如何获取的我吧知道)选上。 注意,可能你安装完了是可以使用Image-Magick这个软件,但不代表你的PERL可以使用 如果你的程序在使用Image::Magick的时候提示找不到模块也不需着急。 使用ActivePerl的朋友可以使用PPM来进行Install Image::Magick 不过这个毕竟要依靠网络,其实如果你勾选了我刚才说的那句的话,你可以在Image::Magick的安装目录下找到PerlMagick这个目录,进去看下,看到一个叫Image-Magick.ppd的文件了没,还等什么,用PPM安装吧,注意:安装的时候可能会提示路径找不到的错误,不用怕,如果你有IIS的话把Image-Magick.ppd和目录x86拷贝到网站的根目录下,然后PPM install http://localhost/Image-Magick.ppd 就OK了,或者自己手动编辑Image-Magick.ppd里面的路径 安装完后测试下 CMD到安装目录下的PerlMagick\demo文件夹内,然后运行perl demo.pl(PERL的路径必须已经加入到系统路径中才可以这样使用),如果一切顺利,你将看到一个demo的图片。 至此Image-Magick安装完毕,慢慢享用!...

莫名其妙的Bad protocol 'tcp'错误

今天在服务器上运行自己写的程序的时候发现在自己机器上和其它服务器上跑的好好的代码竟然出错,其信息为“Bad protocol 'tcp'”,这可是头一次遇见这个问题,因为我使用的是PERL的WEBSERVICE服务器,需要远程调用其它网站的信息,所以我以为是防火墙没设置好,但从服务器上访问我需要的那个网站的时候却是没有问题的,也就是网络上应该是没问题的,没办法,先baidu了一把,结果在很快就找到了一个信息...

终于有中文版的KOMODO用了!

我认为这个是在LINUX下一个相当好的PERL的IDE工具了,当然它还能支持PHP,TCL,HTML等多种语言,可以说功能十分强大!,不过最经我的KOMODO不知道为什么在DEBUG PERL的脚本的时候就如同死机了一样的没反应,正好4.0也已经出了,我就把我的3.5的升级到4.0好了。 因为这个是收费的软件,不是我喜欢用破解的东西,而是我还没这个本钱,罢也,找破解的吧。 到国外的HACK网站搜索了下,结果只发现了4.01的,这个版本的在WIN下还好找,但LINUX的就没那容易了,而官方的已经是4.02了,而且还找不到历史版本的下载地址......。 费了半天力,还是一无所获,就在我身心疲惫,心力憔悴,脑力崩溃的时候,就在这时,眼睛一亮。 欲知下文请点击全文浏览...

用MYSQL的数据生成EXCEL文件,我能!

最近研究了下PERL生成PDF,WORD,EXCEL 有一个是HTML2PDF,可惜依赖的包太多,而且有个包我怎么装都装不上去。HTML2WORD的我没找到,倒是找到了XML2EXCEL的,可惜最后运行的时候出错,也许是不支持新版EXCEL导出的数据格式吧,最后找到了个直接从数据库提取数据生成EXCEL的模块!...

用PERL实现AzDG可逆加密算法

因为正好想找下加密解密的方法,虽然CPAN上有不少,但很少有基于KEY加密解密的,正好在DZ上看到了通行证的加密算法,就根据它的算法修改下就成了PERL的版本 以下代码在PERL5.87 LINUX下测试通过,并且可正常加解密中文。...