admin

  • 一个有趣的perl函数

    ·

    入职已经489天了,新鲜事很多,不过更多应该是无趣、枯燥的日常:装很多的数据库、反复的测试、写很多的脚本…… 不过,在这繁忙工作中,还是希望自己能够保持一份趣味。

    下面这个perl函数就是帮你保持脚本有趣的一个办法。

    在你的Perl脚本中下面的函数,并在脚本的第一行调用之。函数会在你的输出前随机的输出一条“名言”,让你在枯燥的调试程序时,仍然保持一份清醒:

    use MIME::Base64; ####################################################### # This is a interesting function by orczhou@gmail.com # It outputs a random quote ####################################################### sub randomQuote{ my @quote; push(@quote,"S2VlcCBpdCBzaW1wbGUsIFN0dXBpZA=="); push(@quote,"VG9tb3Jyb3cgaXMgYW5vdGhlciBkYXk="); push(@quote,"TGlmZSBpcyBsaWtlIGEgYm94IG9mY2hvY29sYXRlcw=="); push(@quote,"VGhlIGFuZ3J5IGlzIHRoYXQgdGFraW5nIHRoZSBvdGhlcidzIG1pc3Rha2UgdG8gcHVuaXNoIG9uZXNlbGY="); push(@quote,"VGhlIGhvcGUgb2YgdG9tb3Jyb3cgbGV0cyB1cyBmb3JnZXQgdG9kYXkncyBwYWlu"); push(@quote,"VGhlIHBsYWNlIHdoaWNoIHRoZSBpZGVhbCBpcyBpbiwgdGhlIGhlbGwgbWF5YmUgYSBoZWF2ZW4="); push(@quote,"Rm9yIGhpcyBsb25nIGFuZCBub24tdmlvbGVudCBzdHJ1Z2dsZSBmb3IgZnVuZGFtZW50YWwgaHVtYW4gcmlnaHRzIGluIENoaW5h"); push(@quote,"V2hhdCBpcyBkb25lIGJ5IG5pZ2h0IGFwcGVhcnMgYnkgZGF5"); push(@quote,"SWYgeW91IHdhbnQgdG8gaGF2ZSB0aGUgcGVyZmVjdCBmcmllbmRzaGlwLCBwb3NzaWJseSB5b3UgbWF5IGZpbmQgbm8gZnJpZW5kIGZvciBhbGw gbGlmZXRpbWU="); push(@quote,"VGhlIGV4cGVyaWVuY2UgdGFrZXMgb3V0IGJ5IHRoZSBlc3NlbmNlIG9mIHBhaW4="); push(@quote,"VGhlIGJpZ2dlc3QgbWlzdGFrZSBpbiBsaWZlIGlzIHRoZSB1bmNlYXNpbmdseSB3b3JyaWVkIGFib3V0IG1ha2luZyBtaXN0YWtl"); push(@quote,"TGF6aW5lc3Mgd2lsbCBjYXVzZSB5b3UgcGFpbg=="); push(@quote,"S2VlcCB0aGUgcGFzc2lvbiBmb3IgeW91ciBqb2I="); push(@quote,"VGhlcmUgaXMgb2Z0ZW4gbGVzcyBkYW5nZXIgaW4gdGhlIHRoaW5ncyB3ZSBmZWFyIHRoYW4gaW4gdGhlIHRoaW5ncyB3ZSBkZXNpcmU="); push(@quote,"WW91IGNhbiB1c2Ugc2NyaXB0IGRvIG1vcmUgd29yayxidXQgc2FkZGx5IGl0IG1ha2UgbW9yZSBqb2JzIGNvbWUgdG8gdQ=="); push(@quote,"TXkgbmFtZSBpcyBteXNxbGRhdXRvLkkgd2FzIGNyZWF0ZWQgYnkgb3JjemhvdQ=="); #push(@quote,""); my $count = scalar(@quote); my $rand_num = int(rand($count)); print decode_base64($quote[$rand_num])."\n"; } randomQuote();

    如果觉得上面的代码,破坏了脚本的输出,可以使用参数控制其是否输出。

  • 这是在2010年,第一次淘宝数据库技术沙龙上的一次分享,包含了淘宝在MySQL技术上的探索:

    • 如何批量化管理
    • 如何监控
    • 如何测试
    • 如何保持生产环境稳定性等
    managemysqlwithopensource-100620074016-phpapp01

    下载链接:Manage MySQL with Open Source

  • 通过ssh在Linux终端下工作,有一个很烦的事情就是,如果需要执行一个长时间的命令(例如拷贝一个大文件,或者做DDL)时,如果终端意外断开(网络或者别的原因),一般命令就会终止,当然你可以使用nohup命令,这里提供另一个办法:使用screen

    概述

    一般,我们创建一个screen会话,然后连接会话并在会话下工作,这时候,我们可以随时挂起会话,去做别的事情,而且这个挂起的会话会一直在后台执行。而后又可以重新连接会话。下面是一个简单的How-to:

    1. How-to

    1.1 创建一个screen会话

    screen -dmS supu

    该命令,创建一个名为supu的会话,当时并不立刻进入会话。

    (more…)
  • FireFox+支付宝登录框

    ·

    在众多支付平台中,无疑支付宝是最好用的,支持的商户、银行也是最多的。不过在FireFox下,支付宝的登录框,用起来有一点点不方便。

    背景:我是不用鼠标的,需要鼠标操作的时候,就用小红点代替之,所以移动光标的操作代价相对较大。

    现象:在FireFox下打开支付宝页面(控件已安装),填写“账户名”,按TAB键焦点转移到密码框,输入“登录密码”。对于一般的表单,这时候使用回车键就可以提交了。不过,在支付宝的这个登录页面,怎么按回车都没用。

    zhifubaologin-5

    接着,在Firefox下尝试登录百付宝和财付通。百付宝是正常的,回车后每次都能正常提交表单;财付通很杯具,刷新首页后焦点不会自动跳到输入框,更别说使用TAB和回车提交了(很大概率发生),但是如果运气好,回车提交表单也不会有任何问题。不过财付通需要输入一个验证码,这也可能是财付通绕过回车问题的办法:最后一个输入框是普通输入框,而不是控件。

    其他办法:在支付宝首页,虽然在输入完密码后,立刻按回车是无效的,但可以通过再按一次TAB键,将焦点移到“登录”按钮上,然后回车就可以了。

    最后:也许,我的要求苛刻了点~~,毕竟支付宝除了支持Firefox,还是国内唯一支持Chrome浏览器的。说到Chrome再唠叨几句,Chrome下别说回车提交,现在就连TAB键都不能使用,这是很费劲的。难道这是Chrome自己内伤吗?(截图内容来自支付志

    zhifubaologin-4

    貌似这个问题在“日程”上很久了。

    PS:作为一个支付宝的普通用户,上面是我的一些体验

    UPDATE:Firefox版本3.5.8;Chrome版本5.0.342.8Beta;OS版本WinXP.SP3

  • 本文试图从硬件结构、逻辑结构两方面来介绍Linux中本地磁盘的基本知识。

    1. 硬件结构

    一块磁盘由多个盘面组成,每个盘面有一个对应的磁头(heads),我们可以在该盘面上存储我们需要的信息。

    每一个盘面,被分成多个圆环,我们称之为柱面(cylinders)。每一个柱面又被分割为多个扇形区域,简称扇区(sectors),参见下图:

    磁盘扇区(图片来源www.eygle.com/

    两个红色环形之间是一个柱面;图中黄色标记部分是一个扇区。 (more…)

  • 在MySQL的压力测试中,Super Smack是一个”广受赞誉”的压力测试工具(在MySQL的Manual中推荐的)。主页:Homepage,目前暂时没有详细的文档(代码维护者,已经在考虑写了),在下载的源码文件中,有一个README和MANUAL文件,里面可以找到一些介绍。

    安装super smack

    这里假设,MySQL编译安装目录是:/opt/mysql

    $wget http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz
    $tar zxvf super-smack-1.3.tar.gz
    $cd super-smack-1.3
    ./configure --prefix=/home/mysql/supersmack/ --with-mysql=/opt/mysql \
    --with-mysql-lib=/opt/mysql/lib/mysql --with-mysql-include=/opt/mysql/include/mysql
    $make
    $make install
    

    编译、安装完成后,在/home/mysql/supersmack/bin/目录下会有两个二进制文件:

    $cd /home/mysql/supersmack/bin/ && ls
    gen-data  super-smack
    

    64位系统中,一般还需要在合适的位置放置libmysqlclient.so.16.0.0,一般需要如下操作:

    ln -s /opt/mysql/lib/mysql/libmysqlclient.so.16.0.0 /opt/lib64/libmysqlclient.so.16
    

    一般,这样你就可以开始进行压力测试了。

    super-smack -d mysql /home/mysql/super-smack-1.3/smacks/select-key.smack 10 1000

    这里select-key.smack是一个任务文件,定义了如何进行测试:执行怎样的SQL,执行多少次?通过配置这个文件,可以模拟各种场景的测试。这也正是super smack的优点所在。

    关于这个文件的语法,可以参考目录/home/mysql/super-smack-1.3/smacks中的几个示例,也可以阅读源代码中附带了MANUAL文件。

    super smack任务文件详解

    已经有很多编写了关于如何安装super smack的,但是要用好super smack还需要编写漂亮的任务文件,这也是super smack强大的地方。

    http://blog.chinaunix.net/u/29134/showart_443933.html