perl 的 __LINE__, __FILE__, __PACKAGE____SUB__ 符号

__LINE__ 符号返回当前行数。

$. 返回文件句柄最后访问的行数。

__FILE__ 符号返回 __FILE__ 所在的文件名。

$0 返回被执行的程序的名字。

__PACKAGE__ 符号返回当前包名。

__SUB__ 符号返回当前方法的一个引用, 方法之外返回 undef。需要使用 Perl 5.16(或以上版本) 的 use feature qw('current_sub') pragma。


这篇文章: 有用 无用 创建 2014-08-11 11:08:43 / 更新 2014-08-11 11:36:28

perl 的 __END____DATA__ 符号

__DATA__ 符号告诉 perl 编译器, perl 代码的编译已经完成。

任何在 __DATA__ 符号后面的数据都可以通过 FOOBAR::DATA 这个文件句柄读到, FOOBAR 就是当前包的包名。

在 'main' 包里, __END__ 符号和 __DATA__ 一样, 但是对于别的模块, __END__ 后的数据是无法自动放入DATA句柄中的, 而 __DATA__ 后的数据可以。

例1

#!/usr/bin/perl
use strict;
use warnings;
while ( <DATA> ) {
    print;
}

__DATA__  # 这时候用 __END__ 一样
abc
123
woaini

例2

# 先写个包 FOOBAR.pm
package FOOBAR;
1;
__DATA__ # 这时候如果用 __END__ 就不能通过 FOOBAR::DATA 这个句柄获得其后面的数据
abc
123
woaini

# 写个脚本调用 FOOBAR 这个包
#!/usr/bin/perl
use strict;
use warnings;
use lib './';
use FOOBAR;
while ( <FOOBAR::DATA> ) {
    print;
}

这篇文章: 有用 无用 创建 2014-08-11 10:32:50 / 更新 2017-02-07 14:59:09

图片优化

  1. 先解释几个名词吧

    1.1) Transparency (透明度)

    1.2) Animation (动画)

    1.3) Lossy (有损)

    1.4) Horizontal scanning (水平扫描)

    1.5) Progressive (渐进)

    1.6) Interlacing (交错)

  2. 如何优化

    2.1) Crushing PNGs

    pngcrush -rem alla -brute -reduce src.png dest.png
    

    2.2) Stripping JPEG metadata

    jpegtran -copy none -optimize src.jpg > dest.jpg
    

    2.3) Converting single-image (nonanimated) GIFs to PNGs

    # Tool: ImageMagick
    convert source.gif destination.png
    identify -format %m my.gif # determine whether the GIF file contains an animation
    

    2.4) Optimizing GIF animations

    # Tool: Gifsicle
    gifsicle -O2 src.gif > dest.gif
    

这篇文章: 有用 无用 创建 2014-08-07 10:21:43 / 更新 2017-02-07 14:59:12

一些有用的链接

查看优化网页速度的:

  1. http://developers.google.com/speed/pagespeed/insights/

  2. http://www.webpagetest.org

  3. http://www.timeanddate.com/time/aboututc.html


这篇文章: 有用 无用 创建 2014-07-25 12:04:49 / 更新 2016-12-16 23:54:17

为什么 mysql slave 同步慢

  1. show slave status\G

  2. 查看 Relay_Log_File 字段, 得到 relay log 的文件名

  3. cd /var/lib/mysql

  4. mysqlbinlog mysqld-relay-bin.005347 > /tmp/mysqld-relay-bin.005347.txt

  5. grep 'update ' /tmp/mysqld-relay-bin.005347.txt | perl -ane 'END {foreach ( sort {$seen{$b}<=>$seen{$a}} keys %seen ) {print $_, "=>", $seen{$_}, "\n"} } $seen{$F[1]}++' # 找出哪个表更新的多

    grep 'insert into ' /tmp/mysqld-relay-bin.005347.txt | perl -ane 'END {foreach ( sort {$seen{$b}<=>$seen{$a}} keys %seen ) {print $_, "=>", $seen{$_}, "\n"} } $seen{$F[2]}++' # 找出哪个表插入的多


这篇文章: 有用 无用 创建 2014-07-25 11:41:25 / 更新 2017-02-07 14:59:20