只不过想听听音乐。。。。。zt

2008年5月18日

转自:http://blog.sina.com.cn/s/reader_4abce54e010008li.html

本EG完全虚构,如有雷同实属无奈~~~~

第一幕:入门

新人A:请问,200以下买什么耳机好?
(叮咚!新人A转职为菜鸟A)
闲人A:这个价格真的很尴尬啊……200以下值得买的也就是MX500了。
菜鸟A:那不是耳塞吗?我想买耳机。
闲人A:这样啊……那你多加点钱买PX100吧,300不到,很平衡的。
(菜鸟A心想:平衡是什么意思?)
闲人B:哎呀,PX100这么没个性的耳机有什么好的?买K66吧,300出头,声场一流!
(菜鸟A心想:声场是什么东东?)
闲人C:kao!K66这种没有下半身的耳机有什么意思?听我的,DT231,500以下无敌!
(菜鸟A心想:没有下半身?)
闲人A:唉,一帮菜鸟……
闲人B:×你大爷!^¥%^¥^¥……
闲人C:你丫^%^#¥%¥#……
菜鸟A:各位大侠……我一会儿再来……

第二幕:进阶

菜鸟A:各位大侠,我在论坛潜了一段时间的水,觉得K66可能适合我。请各位大侠再给点建议吧。
(叮咚!菜鸟A转职为烧友A)
侠客A:K66?这种低端就不用烧了吧,直接上好的不就得了?说说看,喜欢K66的哪一点?
烧友A:大家都说它人声好……
侠客A:喜欢人声啊,那就上A500好了。
侠客B:切,小日本那种BT音染也拿来说事,你知不知道什么叫HI-FI啊?
侠客A:……可是A500的人声是好啊……
(叮咚!侠客A转职为闲人A)
侠客B:你上DT531吧,音染少,人声虽然单薄但是特真实。其实薄也薄不到哪里去,你听蔡琴,一点都不薄。
烧友A:可是我喜欢王菲……DT531多少钱?
侠客B:停产了。
烧友A:啊?
侠客B:你不知道,停产的都是好东西!我认识一个老板,他那儿有工包……
(叮咚!侠客B转职为枪手B)
烧友A心想:好险!
侠客C:这帮烂人!没把你吓着吧。其实啊,我还是推荐M1,1000以下best buy。你看看指标就知道了,和1000以上的耳机比起来毫不逊色呢。
烧友A:是啊,很多人都说过它不错……哎?我的预算只有300……
侠客C:呵呵,相信你过不多久就会厌倦K66的。一步到位多好,省钱啊。牛人A,你说是不是?
牛人A:……
烧友A:……好吧!老板~~~~
老板旁白:凯子上钩了,hoho~
侠客C:恭喜!以后就不用操心耳机了,安心地欣赏音乐吧……(烧友A下场)才怪!

第三幕: 烧

烧友A:各位大侠,我这个M1的声音不行啊!
侠客D:好耳机都是要煲的。今天你煲了没有?
烧友A:当我第一天出来混的?煲了半年了!
(叮咚!烧友A转职为侠客A)
(叮咚!侠客D转职为闲人D)
牛人A:你用的是什么音源?
侠客A:随身听。
牛人A:难怪了。M1虽然可以用在随身听上,但是要发挥它真正的实力,还是得上耳放。
侠客A:耳放?哇呀呀~~~又是一大笔钱!怎么没人告诉我这事啊?
牛人A:你也没问呀,嘿嘿。
侠客A:……买耳放去!老板~~~~
老板旁白:耳机凯子就是好,削过一次还能接着削,hoho~

侠客A:上了耳放的M1确实好多了,可我怎么还觉得不满意啊?
牛人B:你听什么比较多?
侠客A:我喜欢王菲。
牛人B:用M1听王菲?亏你想得出来!听王菲的话,同价位的K501比M1好多了!
侠客A:啊?(一咬牙)老板~~~~
老板旁白:谁说一步到位来着?hoho~

侠客A:谁跟我说K501好来着?我一点感觉都没有!K501真烂!
牛人B:Stop!你侮辱我可以,但是你侮辱K501就不行!这是设计师智慧的结晶!……不,也不许你侮辱我!K501不是那么好伺候的,得配专门的耳放才可以。
侠客A:我……算了。老板~~~~
老板旁白:牛人啊,托您说话说半截的福,hoho~

侠客A:换过耳放,终于知道K501的好了。可是,怎么感觉还差那么一点呢?
牛人C:不会吧,这么好的耳机用随身听做音源,连台机都没用?就算是国外捡来的洋垃圾台机修修再用,也比随身听强啊。
侠客A:老板~~~~
牛人D:信号线也很重要的,随机配的那都是垃圾线!
侠客A:老板~~~~
牛人E:电源线也很重要!没有稳定的电源,怎么会有稳定的声音?
侠客A:老板~~~~
牛人F:光换线没用,电源还要滤波!你家接的市电没经过HIFI优化吧?
侠客A:老板~~~~
老板旁白:多好的凯子啊!hoho~
(叮咚!侠客A转职为牛人A)
闲人A:恭喜大侠!
闲人B:大侠的装备好多哦,偶好崇拜你~~~~
闲人C:大侠~~~~俺想跟你的大牛装备合影,可以吗?
牛人A心想:我本来想干嘛来着?

第四幕:轮回

侠客C:这帮烂人!没把你吓着吧。其实啊,我还是推荐M1,1000以下best buy。你看看指标就知道了,和1000以上的耳机比起来毫不逊色呢。
烧友B:是啊,很多人都说过它不错……哎?我的预算只有300……
侠客C:呵呵,相信你过不多久就会厌倦K66的。一步到位多好,省钱啊。牛人A,你说是不是?
牛人A:……

新人B:请问,KK现在多少钱?
牛人A:我先问问你的音源是什么,不会是随身听吧?用随身听玩KK,那是不行地,是对设计师的不尊重……
(牛人A心想:话是这么说的没错吧?)
新人B:不要以为老子是新来的就好欺负,家里台机功放老早就配齐了,今天就是想找个KK玩玩!怎么,没见过又有品位又有钱的人啊?
牛人A:……
(叮咚!牛人A转职为侠客A)

新人C:咱手里这个K240S咋就这么不中听捏?
侠客A:呵呵,耳机都是要煲的嘛。今天你煲了没有?
(侠客A心想:大家都这么说,应该没错吧?)
新人C:大哥,不瞒你说,咱虽然是新人,可是在论坛潜水也不是一天两天了,煲耳机这事咱还是知道地!
侠客A:……
(叮咚!侠客A转职为闲人A)

新人D:各位大侠,请给小女子推荐一款300以下的耳机吧!
闲人A:PX100吧,很平衡
(闲人A心想:平衡是什么意思?我在说什么?)
闲人B:哎呀,PX100这么没个性的耳机有什么好的?买K66吧,300出头,声场一流!
闲人C:靠!K66这种没有下半身的耳机有什么意思?听我的,DT231,500以下无敌!
闲人A:唉,一帮菜鸟……
闲人B:×你大爷!^¥%^¥^¥
闲人C:你丫^%^#¥%¥#

……

剧终
谢谢观赏~~~~

Kafeifei 8diagrams

wp post 时500错误重要更新

2008年5月10日

应该有些人用了我修改过的db.php文件,发现一bug,请尽快更新。
详情链接:http://www.nimab.org/2008/05/01/39.html

Kafeifei php

用Mplayer播放高清电影(蓝光原盘)

2008年5月10日

前提还是你的cpu必须强劲,默认情况下mplayer是单线程的,所以显得力不从心,如果你的cpu是双核或支持超线程,那么试试加上一下参数:

-lavdopts threads=8

或者,来自这里:http://ubuntuforums.org/showthread.php?t=629701

-vfm ffmpeg -lavdopts lowres=2:fast:skiploopfilter=all:threads=8

---------
蓝光原盘抓出来的文件一般以 .ts 结尾 h264 标准
------- update ------
mac下,mplayer的性能明显差很多,经过大量测试,发现问题主要在音频驱动上,我的配置:

−vf scale=-2 -lavdopts lowres=1,1400:fast:skiploopfilter=all:threads=8 -ao openal -vo macosx

播放《汽车总动员》时勉强不卡!或许因为ntfs-3g的性能不佳吧,另外lowres这个配置未生效。
−vf scale=-2 可以修正字幕被拉扁的问题(视频质量未见异常)。

Kafeifei Linux, MacosX, mplayer

Wordpress 2.5.1 500 错误解决方法

2008年5月1日

随时听人讲有500错误。
今天在楚云blog上重现了。
抓住机会debug。
结果很快出来:
当你第二次用同样的标题并且标题中含有多字节文字时,有很大机会触发wp一个死循环,然后服务器cpu直接到100%,当运行时间超过max_execution_time时候出现500错误。
死循环在这里:wp-include/post.php

<?php
......
if ( 'draft' != $post_status ) {
    $post_name_check = $wpdb->get_var($wpdb->prepare("SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1", $post_name, $post_type, $post_ID, $post_parent));

    if ($post_name_check || in_array($post_name, $wp_rewrite->feeds) ) {
        $suffix = 2;
        do {
            $alt_post_name = substr($post_name, 0, 200-(strlen($suffix)+1)). "-$suffix";
            // expected_slashed ($alt_post_name, $post_name, $post_type)
            $post_name_check = $wpdb->get_var($wpdb->prepare("SELECT post_name FROM $wpdb->posts WHERE post_name = '$alt_post_name' AND post_type = '$post_type' AND ID != %d AND post_parent = %d LIMIT 1", $post_ID, $post_parent));
            $suffix++;
        } while ($post_name_check);
        $post_name = $alt_post_name;
    }
}

死循环触发点:wp-include/wp-db.php

<?php
......
/**
 * Prepares a SQL query for safe use, using sprintf() syntax
 */
function prepare($args=NULL) {
    if ( NULL === $args )
    return;
    $args = func_get_args();
    $query = array_shift($args);
    $query = str_replace("'%s'", '%s', $query); // in case someone mistakenly already singlequoted it
    $query = str_replace('"%s"', '%s', $query); // doublequote unquoting
    $query = str_replace('%s', "'%s'", $query); // quote the strings
    array_walk($args, array(&$this, 'escape_by_ref'));
    return @vsprintf($query, $args);
}

post_name 中的的多字节文字被 urlencode 成这样 "%e6%88%91%e6%93%8d%ef%bc%81",只要 % 后面跟了 bcdeufFosxX 中任意一个(覆盖了大半个中文区域),就造成 vsprintf 函数调用失败,返回 false,而上层的循环一直在等它返回一个非false的值,直到程序死掉。

解决方法很简单:
修改 wp-include/wp-db.php
用下面的代码替换掉之前贴出的代码:

<?php
......
/**
 * Prepares a SQL query for safe use, using sprintf() syntax
 */
function prepare($args=NULL) {
    if ( NULL === $args )
    return;
    $args = func_get_args();
    $query = array_shift($args);
    $query = str_replace("'%s'", '%s', $query); // in case someone mistakenly already singlequoted it
    $query = str_replace('"%s"', '%s', $query); // doublequote unquoting
    $query = str_replace('%s', "'%s'", $query); // quote the strings
    array_walk($args, array(&$this, 'escape_by_ref'));

    // 旧的方法会引起其他问题
    // $query = preg_replace("#(%[0-f]{2})#sie", "urldecode('$1')", $query);
    // $query = @vsprintf($query, $args);
    // $query = preg_replace("#([\x80-\xff])#se", "strtolower(urlencode('$1'))", $query);

    // 新的方法只针对重复标题时的死循环问题
    $reg = "#post_name = '((?:%[0-9a-f]{2})+.+)'#Usi";
    if (preg_match($reg, $query, $match)) {
        $he = $match[1];
        $hd = urldecode($he);
        $query = str_replace($he, $hd, $query);
        $query = @vsprintf($query, $args);
        $query = str_replace($hd, $he, $query);
    } else {
        $query = @vsprintf($query, $args);
    }

    return $query;
}

后来楚云坚持认为wp可以不用修改任何原始代码解决所有问题,所以找到了下面的方法:
下载这个文件:db.tgz 解压后得到 db.php 将它放到 wp-content/ 下。
---------
或许这只是其中一个造成500的原因,下次遇到再说吧。
--------- update --------
补充,此db.php为2.5.1的,后来才知道2.5.1比2.5.0也有更新,不保证其他版本没有意外情况。
--------- update 2008/05/10 --------
发现bug,更新了方法以及db.php下载链接。以前的方法太粗暴,一些其他的查询也被强制转码造成数据错误。
解决方法:重新下载db.php或按照前文代码重新修改wp-db.php。已经出错的数据,可重新编辑保存。已知会引发错误的地方:http://yourwpuri/wp-admin/widgets.php (也就是说你使用了之前的 db 文件后,有设置过 widgets 功能,最好重新设置一遍)

Kafeifei php

新装 Leopard 安装开发环境全记录

2008年3月16日

前期工作

安装光盘里的 Xcode,或者下载 iPhone SDK,2.1G,包括了最新的 Xcode 和 iPhone SDK。

安装好后会有 apache-2.2.6 / php-5.2.5 / ruby-1.8.6 / rails-1.2.6 / python-2.5.1 / java-1.5.0_13 / sqlite-3.4.0 …… gcc 会有2个版本:4.0.14.2.1,默认 /usr/bin/gcc 软连到 gcc-4.0,我们先让默认的 gcc 改用 4.2(2007年1月就 release 了,Changelog

cd /usr/bin
sudo unlink gcc
sudo ln -s gcc-4.2 gcc

设置全局编译参数,编辑 /etc/profile,加上下面的全局变量,保存后重启终端

export MACOSX_DEPLOYMENT_TARGET=10.5
export ARCHFLAGS='-arch x86_64'
export CFLAGS='-arch x86_64 -O3 -pipe'
export CXXFLAGS=$CFLAGS
export LDFLAGS='-arch x86_64 -bind_at_load'

如果需要编译兼容 i386、ppc、ppc64 版本的(编译出来的文件会增大不少),只要加上相应的 -arch 即可

export CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -O3 -pipe"
export CXXFLAGS=$CFLAGS
export LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load"

如果需要编译针对 CPU 优化的,Apple 全系列已经升级到 Intel Core Duo,所以可以加上以下参数

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"

-O 使用 O3,其他详见 http://www.gentoo-wiki.com/Safe_Cflags

因此我自己编译的最终参数是

export MACOSX_DEPLOYMENT_TARGET=10.5
export ARCHFLAGS='-arch x86_64'
export CFLAGS='-arch x86_64 -march=nocona -pipe -O3 -pipe'
export CXXFLAGS=$CFLAGS
export LDFLAGS='-arch x86_64 -bind_at_load'

Java

虽然 Apple 总算在 2008年2月 放出了 JDK6 Preview,但是问题还是非常多。我们还是用 BSD 的一个移植版本 Soylatte,直接下载 64-bit JDK for Mac OS X 10.5: soylatte16-amd64-1.0.2.tar.bz2 (Username: 'jrl',Password: 'I am a Licensee in good standing')
解压后放到 /usr/local/soylatte16-amd64,软连 /usr/local/java 到这个目录:

cd /usr/local; sudo ln -s soylatte16-amd64 java
cd /System/Library/Frameworks/JavaVM.framework/Versions/; sudo mkdir soylatte16-amd64
cd soylatte16-amd64; sudo ln -s /usr/local/java Home; sudo ln -s ./Home/bin ./Commands
cd ../A; sudo mv Commands Commands.bak; sudo ln -s ../CurrentJDK/Commands ./
cd ..; sudo unlink CurrentJDK; sudo ln -s soylatte16-amd64 CurrentJDK
java -version

显示如下,Java 就算搞定了

java version "1.6.0_03-p3"
Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_03_feb_2008_01_32-b00)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-p3-landonf_03_feb_2008_01_32-b00, mixed mode)

基本库和命令

libtool

curl http://ftp.gnu.org/gnu/libtool/libtool-1.5.26.tar.gz &gt; libtool-1.5.26.tar.gz
tar xzf libtool-1.5.26.tar.gz
cd libtool-1.5.26
./configure
make
sudo make install

zlib

curl http://www.zlib.net/zlib-1.2.3.tar.gz &gt; zlib-1.2.3.tar.gz
tar xzf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
sudo make install

openssl/libssl

curl http://www.openssl.org/source/openssl-0.9.8g.tar.gz &gt; openssl-0.9.8g.tar.gz
tar xzf openssl-0.9.8g.tar.gz
cd openssl-0.9.8g
./config --prefix=/usr/local --openssldir=/openssl threads zlib-dynamic
vi Makefile
# OPTIONS 里去掉 no-sse2 来开启 CPU 的 SSE2 指令集支持
# CFLAG 里 -arch i386 改为 -arch x86_64
# SHARED_LDFLAGS 同上
make
sudo make install
cd /usr/local/bin
sudo ln -s ../openssl/bin/* ./

wget

curl http://ftp.gnu.org/gnu/wget/wget-1.11.tar.bz2 &gt; wget-1.11.tar.bz2
tar xjf wget-1.11.tar.bz2
cd wget-1.11.tar.bz2
./configure --with-libssl-prefix=/usr/local/openssl
make
sudo make install

libpng

wget http://downloads.sourceforge.net/libpng/lpng1225.tar.bz2 -O libpng-1.2.25.tar.bz2
tar xjf libpng-1.2.25.tar.bz2
cd libpng-1.2.25
./configure
make
sudo make install

libjpeg

wget http://freshmeat.net/redir/libjpeg/5665/url_tgz/jpegsrc.v6b.tar.gz
tar xzf jpegsrc.v6b.tar.gz
cd jpeg-6b
cp /usr/share/libtool/config.sub .
cp /usr/share/libtool/config.guess .
./configure --enable-shared --enable-static
make
sudo mkdir -p /usr/local/man/man1
sudo make install -lib

freetype

wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.5.tar.gz
tar xzf freetype-2.3.5.tar.gz
cd freetype-2.3.5
./configure
make
sudo make install

fontconfig

wget http://fontconfig.org/release/fontconfig-2.5.91.tar.gz
tar xzf fontconfig-2.5.91.tar.gz
cd fontconfig-2.5.91
./configure --prefix=/usr/local --with-zlib --with-jpeg --with-png --with-freetype --disable-dependency-tracking
make
sudo make install

gd2

wget http://www.libgd.org/releases/gd-2.0.35.tar.bz2
tar xjf gd-2.0.35.tar.bz2
cd gd-2.0.35
./configure --with-fontconfig=/usr/local/bin --disable-dependency-tracking
make
sudo make install

ImageMagick

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.9-7.tar.bz2
tar xjf ImageMagick-6.3.9-7.tar.bz2
cd ImageMagick-6.3.9
./configure --with-fontconfig
make
sudo make install

mysql

wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.51a.tar.gz/from/http://mirror.services.wisc.edu/mysql/
tar xzf mysql-5.0.51a.tar.gz
cd mysql-5.0.51a
./configure --with-mysql-user=mysql --with-mysql-group=mysql --with-innodb --with-archive-storage-engine --with-ndbcluster --with-zlib-dir=/usr/local --with-pthread --with-extra-charsets=utf8 --disable-dependency-tracking
make
sudo make install

neon

wget http://www.webdav.org/neon/neon-0.25.5.tar.gz
tar xzf neon-0.25.5.tar.gz
cd neon-0.25.5
./configure --with-ssl=openssl
make
sudo make install

Berkeley DB

# 为了让 subversion-1.4.6 使用,只能用 db-4.4 版本的
wget http://download.oracle.com/berkeley-db/db-4.4.20.tar.gz
tar xzf db-4.4.20.tar.gz
cd db-4.4.20/build_unix
make
sudo make install
cd /usr/local/; sudo ln -s BerkeleyDB.4.4 bdb

subversion

wget http://apache.mirror.phpchina.com/httpd/httpd-2.2.8.tar.bz2
tar xjf httpd-2.2.8.tar.bz2
wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.bz2
tar xjf subversion-1.4.6.tar.bz2
cd subversion-1.4.6
cp -r ../httpd-2.2.8/srclib/apr* ./
./configure --with-apxs=/usr/sbin/apxs --with-berkeley-db=/usr/local/bdb --with-ssl
make
sudo make install

libevent

wget http://www.monkey.org/~provos/libevent-1.4.2-rc.tar.gz
tar xzf libevent-1.4.2-rc.tar.gz
cd libevent-1.4.2-rc
./configure
make
sudo make install

memcached

wget http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz
tar xzf memcached-1.2.5.tar.gz
cd memcached-1.2.5
./configure
make
sudo make install

pcre

wget http://nchc.dl.sourceforge.net/sourceforge/pcre/pcre-7.6.tar.bz2
tar xjf pcre-7.6.tar.bz2
cd pcre-7.6
./configure --enable-utf8
make
sudo make install

pkg-config

wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
tar xzf pkg-config-0.23.tar.gz
cd pkg-config-0.23
make
sudo make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig

libxml2

wget ftp://xmlsoft.org/libxml2/libxml2-2.6.31.tar.gz
tar xzf libxml2-2.6.31.tar.gz
cd libxml2-2.6.31

lighttpd

wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.bz2
tar xjf lighttpd-1.4.19.tar.bz2
cd lighttpd-1.4.19
./configure --with-openssl --with-zlib --without-bzip2 --with-pcre  --with-gdbm --with-memcache --with-ldap
make
sudo make install

好像大功告成了,还缺啥嘛?

xdanger MacosX

iphone 1.1.3/1.1.4 完美破解指南

2008年3月15日

首先用itunes将iphone升级至1.1.3/1.1.4
然后运行ziphone激活,破解,解锁……
安装openssh
root登陆,密码:alpine
安全起见 #chmod -x /usr/bin/passwd
这里生成密码,salt为/s,用它替换root密码(/etc/master.passwd)
然后移动 /Application /Library 到第二分区

Kafeifei Bsd, MacosX, Unix, shell

关羽、张飞的武功的来历

2008年3月14日

看三国最让人不解的是那些超一流武将从一登场就有超一流的武功,至于这些武功是怎么来的,罗老先生却惜墨如金,不像金庸的人物,武功都是一天天炼出来的。即使如全庸金康之流,笔下人物也还能喝点蛇血什么的,内功一下暴涨60年,总算有个交待。

三国武将的武功自然不是喝蛇血喝出来的,那是不是一天天炼出来的呢?武将之中,张飞关羽的早期经历写的稍微多一点,我们就以这哥俩为例作一分析。

张飞简历:“某姓张,名飞,字翼德。世居涿郡,颇有庄田,卖酒屠猪,专好结交天下豪杰。恰才见公看榜而叹,故此相问。”

关羽简历:“吾姓关,名羽,字长生,后改云长,河东解良人也。因本处势豪,倚势凌人,被吾杀了;逃难江湖,五六年矣。今闻此处招军破贼,特来应募。”

两位都没有提自己的武功,连“自幼习武”这句都没说。更重要的是随后的情节。刘关张决定起兵后,“云长造青龙偃月刀,又名”冷艳锯“,重八十二斤。张飞造丈八点钢矛。”你看,在这之前,两位连兵器都没有。关羽还好说,毕竟扛着八十二斤的大刀逃难有点困难。张飞就不该了,有钱有房,要是练武,不至于连一杆像样的矛都造不起。

可见他们平时并不练武。

那关羽张飞的武功到底是怎么来的呢?

他们的武功来自他们的职业!

据北京体育大学武术学院的网站,“马克思主义认为,人类的生产活动是最基本的实践活动,是决定其他一切活动的东西。武术的产生,从来就是有生产活动决定的。”

关羽张飞也不能有例外。

汉末,武术还没有系统化,不具备通过向师傅学习成为武林高手的条件。要想成为高手,一要有天生体格,二要悟性高,能从生产活动中领悟攻防技术。以此为指导,我们来分析张飞关羽的武功与职业的关系。

张飞的主要职业是杀猪。杀猪要用杀猪刀。和张飞的兵器不同,但技术特点一致。杀猪时不是用杀猪刀砍,而是捅。所以本质上杀猪刀不是刀,而是和矛类似。猪杀死后要去毛,去毛前要给猪充气,使皮肤绷紧。通常做法是用铁钎从后啼一直捅到腹部,然后拔出铁钎,往腹部充气。张飞没有打气筒,只能用嘴吹。铁钎就是小号的矛,所以张飞自然选矛作武器。

另外,长期给猪吹气,张飞练就了巨大的肺活量,才能在长板坡前一声吼,吓退曹操百万兵。

三国演义中没有提关羽的职业,但大家都知道,关羽在逃亡途中卖过枣。卖了五六年的枣,怎么说也是一种职业了。关羽不擅生意,买不出好价钱,但仍能维持生计,说明其进货渠道不一般。如果正常付款进货,本钱早就陪光了。关羽有案在身,不大可能去抢枣。再说,要抢也应该去抢钱。关羽只能自己去枣园打枣。枣园是地主豪强的,打他的枣就是斗地主,不用付钱,心安理得。为了少惹麻烦,关羽总是穿一身绿,见有人来,便爬到枣树上躲起来。一身绿衣,一张枣红脸,藏在枣树上谁也别想看着。

想必关羽不会爱惜枣树,只顾拿大竹竿一通猛打。上高中时半夜拿大竹竿偷过学校的柿子,深知在枝叶中挥动竹竿需要多大的力气。关羽如此打了五六年,练就无穷臂力。从技术特点看,挥动竹竿和挥动大刀完全相同。所以关羽选择了八十二斤的大刀。

打枣成就了关羽的武功,也造成关羽武功的严重缺陷。

关羽曾和赵云在牛头山打过一仗。这场战斗发生在一条山道上,山道两旁全是树。

“关羽奋然上马,倒提青龙刀,凤目圆睁,蚕眉直竖,直冲卧牛山。遍山树枝如波开浪裂,关公径奔一白杨树。赵云见关羽不来斗将,却入无人之境,方欲问时,关羽赤兔马快,早到树前,手起一刀,将白杨树折做两段。”

关羽的武功源自打枣。在冲锋时精神高度集中,道旁的树木钩起了本能反应,挥刀直奔树木而去,大大出了一回洋相。

关羽也因此弱点被擒,丢了性命。

关羽冲出麦城,沿一条山路逃跑,不想赤兔马被绊倒,关羽落马被马忠所擒。关羽即使落马,但功夫仍在,马忠乃无名之辈,如何擒得关羽?想马超也曾步战,杀得韩遂及手下五将血肉横飞。关羽虽疲惫,对付一个马忠理应绰绰有余。怎奈又是山路,山路两旁又是树木。关羽举刀欲战,却见两旁树木众多,一时不知该砍哪棵。犹豫半分钟,早被马忠绑定。

总结:通过分析关羽张飞的武功特点及典型战例,我们得出结论,关羽张飞的武功源自他们的职业。我们相信该结论可推广到所有三国武将。根据此结论,我们可以分析各武将的弱点,从而设计合理战术,轻松打败他们。

xdanger 8diagrams

交叉编译jpeg库的问题

2008年3月11日
./configure --enable-shared --enable-static

加了 --enable-shared 或者 --enable-statics 就会报

ltconfig: cannot guess host type; you must specify one

方法是安装最新版的 libtool 然后

cp /usr/share/libtool/config.sub . 
cp /usr/share/libtool/config.guess . 
./configure --enable-shared --enable-static 
make; make install

xdanger bash

洪七公生平简介

2008年2月12日

  洪七公原名洪七,他不光杀了王重阳,江南5怪其实都是他杀的
  
  王重阳的秘密是他偷走了辟邪剑法,然后就亲自练了,他无法躲闪林朝英的纠缠,就只好以 "国将不国,何以家为" 的口号躲避她,由于练了辟邪剑法,王重阳轻功极高,再加上他爱吃素食,整天神神秘秘的,所以大家叫他 "中神通。"
  
  中神通有一个徒弟,一个传授了辟邪剑法的徒弟,就是洪七, 由于洪七也自宫了,所以中神通叫他 "洪七公公"
  
  师徒二人惺惺相惜,到也相处的融洽,直到有一天,中神通的辟邪剑法练到了东方不败的地步,他开始把洪( 练辟邪剑法的人最终会发展到两个层次,一是东方不败的类型,就是对别人有性骚扰的, 二是岳不群,林平之类型的,对别人无害)
  
  洪七公公迫不得己杀了中神通,碰巧给江南7怪撞见了,7怪看到辟邪剑法怪异的情景,急忙逃跑了, 而洪七公公只看到了7个人的身影,作贼心虚,就没有追赶。
  
  江南7怪害怕辟邪剑法,一直跑到了大漠,于是就躲了起来,他们一边训练郭靖,一边苦练功夫,时刻准备敌人来灭口,这一躲就是18年.
  
  中神通已死,全真教也待不下去了,洪七公公还要暗中查访那七个人,到哪里立足呢?,丐帮是个好去处,入丐帮的时候,他将名字中一个’公‘字去掉,就成了洪七公
  
  洪七公生性好学,每天勤学苦练,他一腔精力无处发泄,加上辟邪剑法的轻功,洪七公很快就练就了打狗棒法和降龙18掌,并且当上了丐帮帮主

xdanger 8diagrams

Leopard 编译 universal php5

2007年12月11日

因为自带的php没有gd所以要重编
因为服务器用的是x86_64 httpd+php5所以要编 x86_64
因为自带的httpd+php是 universal ,所以要这样做
自带的httpd很好,所以不搞它了
参考:
ppc就不要了

export MACOSX_DEPLOYMENT_TARGET=10.5
export ARCHFLAGS='-arch i386 -arch x86_64'
export CFLAGS='-arch i386 -arch x86_64 -O3 -pipe'
export CXXFLAGS='-arch i386 -arch x86_64 -O3 -pipe'
export LDFLAGS='-arch i386 -arch x86_64 -bind_at_load'

make时候可能出现这样的提示:

gcc-4.0: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags

在 configure 的时候加上 --disable-dependency-tracking

'./configure' \
'--prefix=/usr' \
'--with-config-file-path=/private/etc' \
'--sysconfdir=/private/etc' \
'--with-apxs2=/usr/sbin/apxs' \
'--with-iconv=/usr/local' \
'--with-mhash=/usr/local' \
'--with-gettext=/usr/local' \
'--with-mysql=/usr/local' \
'--with-mysqli=/usr/local/bin/mysql_config' \
'--with-pdo-mysql=/usr/local' \
'--with-openssl=/usr' \
'--with-zlib=/usr' \
'--with-curl=/usr' \
'--with-gd' \
'--with-png-dir=/usr/X11' \
'--with-jpeg-dir=/usr/local' \
'--with-freetype-dir=/usr/X11' \
'--with-xpm-dir=/usr/X11' \
'--enable-gd-native-ttf' \
'--enable-mbstring' \
'--enable-sockets' \

已有的库就不重装了,只需自己安装 gawk, libiconv, mhash, gettext, mysql, jpeg
需要特别注意:系统自带的liviconv有问题,需要自己编一份到/usr/local(小心不要覆盖以前的,否则可能连sh都不能执行了),php在configure时就算指定了 --with-iconv=/usr/local 它还是首先找到 /usr/include/iconv.h ,而且 --help 里只提到 --with-iconv-dir=,应该使用 --with-iconv=
解决方法:

sh#mv /usr/include/iconv.h /usr/include/iconv.h.bak

Kafeifei Bsd, MacosX, Unix, bash, php