Tuesday, August 01, 2017

mysql性能问题排查及故障诊断思路


思路:
——————————————————————— 
1.找到瓶颈处
2.针对瓶颈进行优化
3.数据库优化策略分为三步走:
  • 配置优化,cpu,内存,io
  • 表结构优化:表引擎,索引,表拆分(大表转小表,减少大字段,控制表数量及表大小),分表分库,主从分离,读写分离,多主
  • SQL优化:简化SQL,减少join,减少sql计算,减少存储过程,使用preparedstatement,找到慢sql逐个优化
4.程序优化:
  • 减少事务,降低锁的概率
  • 使用缓存应对读(但要保证数据的及时性)
  • 异步写操作(但要保证事务顺序和成功)


实践:
——————————————————————— 
寻找瓶颈,有两个思路:
  • 根据监控找到耗时较大的功能、业务:
    • 程序级别的监控,每个请求的时间记录,access_log或者程序在某个controller的切面中将时间打印出来;
    • 根据用户反馈,这个往往不准,因为用户看到慢的时候可能已经形成了雪崩效应;
    • 捋日志,找第一个慢的,或者找到累计最多的,然后单独测试该功能复现和模拟;
    • 原因可能会很多:比如数据库锁住了,内存不够,SQL性能太低....根据原因找;
  • 根据性能监控,查看资源使用情况
    • 在应用服务器,数据库服务器多方面监控资源使用情况,核心关注CPU,内存,IO和网络三点的使用情况
    • CPU忙:
      • 通常在进行计算,计算包括数据处理,图像,正则,科学计算等;从直观上来看,就是循环多,有很多for循环..
      • 常用监控命令:vmstat,mpstat
      • 如果要看某个进程的情况,可以使用"while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep 'firefox'; sleep 1; done" 类似的语句来查看
    • IO忙:大数据load到内存中,比如数据库、文件检索,本身匹配并不耗CPU,但是数据比较大,比较多需要频繁换页;
      • 监控换页数量,io读写次数,以及iowait数量
      • 常用命令:iostat,lsof
      • 需要注意,swap其实挺慢的,可以通过top、cat /proc/meminfo、vmstat 来监控swap的使用情况;
    • 网络监控:
      • 监控起来最复杂,主要监控网络流出和流入情况,以及丢包、延迟等;
      • 在linux下面可以使用:iptraf,netperf,tcpdump,tcptrace,tcpcopy
  • 工具:salt+zabbix,negios等都可以实现细粒度的监控;
  • 压力测试:针对某些怀疑的点进行压力测试,模拟发现对应的问题,同时检查系统的吞吐能力;
  • 常用工具及命令:Vmstat、sar、iostat、netstat、free、ps、top等
  • 常用组合方式
    • 用vmstat、sar、iostat检测是否是CPU瓶颈
    • 用free、vmstat检测是否是内存瓶颈
    • 用iostat检测是否是磁盘I/O瓶颈
    • 用netstat检测是否是网络带宽瓶颈

针对瓶颈优化:
  • 不同的问题原因不同,优化方案也不一样,通常来讲,分为代码优化和配置优化两条腿,配置优化又分为操作系统,服务和应用的优化。

mysql配置优化:
————————— 
  • 安装以后在mysql的配置文件中有:my-huge.cnf,my-mediam.cnf,my-small.cnf,可以根据需要自己拷贝一份做修改;/usr/local/share/mysql/
  • innodb_buffer_pool_size:数据缓冲池,是数据和索引缓存的地方,这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存);根据内存情况来设定。
  • innodb_log_file_size:redo日志的大小,用于确保写操作快速可靠,且在崩溃的时候可以恢复;默认512M,4G比较合适;
  • max_connections:最大连接数,默认151,根据实际情况扩大,但要注意程序端不会无限的增加(连接池)
  • innodb专属设置:
    • innodb_file_per_table,建议为on,每个表单独有自己的idb文件,可以再drop,truncate或者delete的时候会收表空间,如果表特别多的话,不建议使用(比如超过10k)
    • innodb_flush_log_at_trx_commit,是否支持事务一致性,通常为1,当性能要求大于数据一致性要求是可以设为0,比如从库;
    • innodb_flush_method,数据和日志写入方式,如果有raid,且不会down机,使用O_Driect,否则用fdatasync,可以用sysbench来测试;
    • inodb_log_buffer_size,为未执行的事务分配的缓存,默认1M,可以根据innodb_log_waits状态来看,如果不够的话可以适当增加;
  • 其他设置:
    • query_cache_size,查询缓存,这个可能会有坑,建议设为0,通过其他方式来提升缓存;
    • 设定主从:log_bin,
    • 是否跳过域名解析:skip_name_resolve,这样数据中只能使用ip来进行授权;
    • table_cache,表缓存,可以根据open_tables(show global status)来进行优化

mysql性能诊断命令:
  • show global status;show status like 'xxx';
  • show variables
  • show innodb status
  • show processlist
  • show tables status
  • show processlist
  • 事务和锁的检查
mysql的慢查询开启:
  • slow_query_log,设置为on
  • long_query_time,超时时间,比如设置为1,就是1s
  • slow_query_log_file,记录慢日志的文件
  • log_queries_not_using_indexes,记录没有使用到索引的查询语句

根据某个语句进行优化:
  • desc(explain) 某条语句,查看执行计划,可以看到该语句是否使用了索引,临时表、文件排序检索行数等;
  • 设置profiling,然后执行语句,查看profiling的日志:set profiling=1;execute sql;show profiles;show profile for query 1;


mysql结构优化:
————————— 
  • 每个表有主键,
  • 字段简单:
    • 类型选择好,
      • 数字:尽量用整型,包括枚举、时间、ip等都可以数字化,decimal少用
      • 文本:varchar/char,禁用text
      • 时间:性能考虑可以用bigint,否则用timestamp(不用datetime)
    • 二进制、文本、图片等不要用数据库存储,大字段可以分开表存放,减少io;
    • 字符集编码统一,join的时候可能会出现字符集不匹配无法使用索引的问题;
    • 尽量not null
    • 可以适当冗余字段,减少join
    • 拆表拆库:主要将资源分配到更多cpu和内存上,对结构简化有帮助
    • 单表不超过:1000w,有字符串的尽量在500w以内,单库不超过400张表;字段在30-50个;
    • 每个表都有主键,且建议为数据库自增int
使用语句优化:
————————— 
  • 原则:每个sql尽量小,尽量不用大事务,
  • 尽量每条语句都要是用到索引
  • 语句中尽量少join
  • 在语句中少使用子查询,如果一定要,用join比子查询好;
  • 不用函数或在SQL中进行计算,包括类型转换
  • 少用or
  • union all 代替union
  • 少select *,而是需要什么查询什么
  • 尽早过滤
  • 尽量少排序
  • 优先优化数量多,性能没那么好的SQL;再优化频率低,杀伤力大的sql
  • 大量数据插入用load data,且放到低峰期执行
索引创建合理:
  • 索引数量不是越多越好,而是用得越多越好
  • 索引字段不要在sql中计算,可能无法使用索引
  • 尽量不用外键等约束,由程序来保障,避免高并发死锁

程序优化:
——————————————————— 
1.控制事务大小
2.充分利用应用服务器的资源
3.在应用端缓存,分布式、文件、本地都可以




Refer:

tmux使用简单记录

简单研究tmux的使用,类似于screen,不过有分屏功能:

有个详细的文章: tmux终端复用


大体有几个关键:
1.安装,mac下面brew install tmux,linux下面用yum或者apt-get都可以正常安装
2.基本使用:

创建和连接session:
  tmux new -s session_name
  tmux a -t session_name
  ctrl+b d, detache一个session

创建新的panel:
  ctrl+b %,纵向拆分一个面板
  ctrl+b " 横向拆分一个面板
  如果有鼠标模式,可以鼠标点击进入不同的panel;
  如果没有鼠标,可以使用ctrl+b 方向键,来切换不同的panel


创建新窗口:
  ctrl+b c 创建一个新的窗口
  ctrl+b n,p 进入上一个或者下一个窗口


3.配置:
在~/.tmux.conf中编辑相关配置,可以设置相关的键盘绑定,基本上默认即可,此处有个简单参考 : http://www.opstool.com/article/253


这里有个文章说如何打造更好的tmux配置: https://segmentfault.com/a/1190000008188987

tmux使用简单记录

一直使用screen,但是在远程的时候开多个窗口比较麻烦,用iterm2的cmd+d拆分也可以实现,但会产生多个ssh链接。无意中发现tmux,试用了一下感觉不错,简单记录。

tmux使用简单记录

简单研究tmux的使用,类似于screen,不过有分屏功能:

有个详细的文章: tmux终端复用


大体有几个关键:
1.安装,mac下面brew install tmux,linux下面用yum或者apt-get都可以正常安装
2.基本使用:

创建和连接session:
  tmux new -s session_name
  tmux a -t session_name
  ctrl+b d, detache一个session

创建新的panel:
  ctrl+b %,纵向拆分一个面板
  ctrl+b " 横向拆分一个面板
  如果有鼠标模式,可以鼠标点击进入不同的panel;
  如果没有鼠标,可以使用ctrl+b 方向键,来切换不同的panel


创建新窗口:
  ctrl+b c 创建一个新的窗口
  ctrl+b n,p 进入上一个或者下一个窗口


3.配置:
在~/.tmux.conf中编辑相关配置,可以设置相关的键盘绑定,基本上默认即可,此处有个简单参考 : http://www.opstool.com/article/253


这里有个文章说如何打造更好的tmux配置: https://segmentfault.com/a/1190000008188987
印象笔记,让记忆永存。下载印象笔记

Tuesday, November 29, 2016

落日

某日,路过奥森,天色将晚,酒色的余晖洒落在公园里,有温暖的感觉。公园门口的高塔,泛出七彩,钢铁也变得温暖起来,怀念公园中奔跑的少年


印象笔记,让记忆永存。下载印象笔记

Monday, September 30, 2013

jstorm从源码构建

 
前置条件:(linux下面安装见前面文档)
java
maven
1.将jstorm从github中clone出来:

2.修改pom.xml,以避免zookeeper的cdh3u0版本无法找 到:
       <repository>
          <id>central2</id>
          <name>libs-release</name>
          <url>https://repository.cloudera.com/artifactory/libs-release</url>
        </repository>
增加:utf8支持,避免本地编码的warning
   <properties>
        <powermock.version>1.4.11</powermock.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

3.然后根据deploy文件进行执行:mvn clean mvn package assembly:assembly

途中会有warning提示:
[WARNING] Assembly file: /home/xxxx/code/java/jstorm/target/jstorm-jstorm is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.
[WARNING] NOTE: Currently, inclusion of module dependencies may produce unpredictable results if a version conflict occurs.
[WARNING] The following patterns were never triggered in this artifact exclusion filter:
o  'com.alipay.dw:jstorm-client'
o  'com.alipay.dw:jstorm-client-extension'

[WARNING] The following patterns were never triggered in this artifact exclusion filter:
o  'com.alipay.dw:jstorm-client'
o  'com.alipay.dw:jstorm-client-extension'
应该没有什么问题,主要是目录警告和模块依赖警告,在mvn3和mvn2有些区别?

4.package完毕后,会在target目录中生成一个tgz文件: jstorm-jstorm.tar.gz,可以用于部署:

结构如下:
`-- jstorm
    |-- bin --运行路径
    |   `-- jstorm
    |-- conf --配置目录
    |   |-- jstorm.log4j.properties
    |   `-- storm.yaml
    |-- jstorm-client-0.7.1.jar --客户端jar
    |-- jstorm-client-extension-0.7.1.jar --客户端扩展
    |-- jstorm-server-0.7.1.jar --服务jar
    |-- jstorm-ui-0.7.1.war--可以部署在tomcat中用于管理jstorm的运行
    `-- lib--第三方依赖的jar包

构建完毕需要在jstorm的目录中touch RELEASE文件,否则bin/jstorm在执行的时候会报告错误:
******************************************
The jstorm client can only be run from within a release. You appear to be trying to run the client from a checkout of Storm's source code.

You can download a JStorm release 
******************************************

安装zmq和jzmq:
zmq:
tar -xzf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install
jzmq:
#install jzmq
git clone https://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
sudo make install

建议使用2.1.7,避免导致各种兼容问题。

refer: https://github.com/nathanmarz/storm/wiki/Installing-native-dependencies


本邮件及其附件含有"赶集网"的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!

This e-mail and its attachments contain confidential information from GanJi, which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction, or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by phone or email immediately and delete it!

Sunday, September 29, 2013

在centos中安装java

近期准 备将一些服务迁移到java环境中来,简单记录一些操作过程。

1.检查是否安装了openjdk,如果是的话,卸载重新安装oracle官方的jdk
java -version --查看java版本号
rpm -qa|grep java  查看rpm中安装的jdk版本信息
java-1.6.0-openjdk-1.6.0.0-1.40.1.11.11.el5_9
tzdata-java-2013c-1.el5
2.卸载默认安装的jdk信息,使用yum即可:
yum -y remove java-1.6.0-openjdk-1.6.0.0-1.40.1.11.11.el5_9
yum -y remove tzdata-java-2013c-1.el5
3.到oracle官方网站中下载jdk信息,通常使用tar.gz包进行安装:
可以通过uname -a查看自己的linux版本,可以下载32或者64位的jdk安装包
4.安装过程:
mkdir /usr/java
cp *.gz /usr/java
cd /usr/java
tar -xvzf jdk-7u13-linux-x64.gz
mv jdk1.7.0_13 jdk
          如果下载的是rpm包的话可以使用:rpm -ivh jdk-7u13-linux-x64.rpm 进行安装
5.修改profile:
vi /etc/profile 
加入:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME:$PATH
export CLASSPATH=.;$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

然后执行source /etc/profile,令其当前生效,输入java -version检查是否安装完毕


本邮件及其附件含有"赶集网"的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!

This e-mail and its attachments contain confidential information from GanJi, which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction, or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by phone or email immediately and delete it!

Thursday, April 04, 2013

北京的樱花开了,美图共赏

From Evernote:

北京的樱花开了,美图共赏

北京的春天终于姗姗来迟,在一场大雪以后,温度开始回暖。数值开始发芽,花儿含苞欲放,正是北京最漂亮的季节。


同时向大家报告一下生活状态:

  1. 上周一个人去了玉渊潭公园,顺手拍了几张照片,发给大家,希望能够给您带来简单的快乐。

  2. 近期钱包丢了,身份证,银行卡啥的都在里面,一顿证件补办,忙的不亦乐乎。破财免灾,不过向老婆交代上面出了点小问题:里面有结婚照仅存的一张照片,意义非凡,且钱包是她送的。不过所幸老婆大人宽宏大量,在答应一个月购物不受限的情况下,宽宏大量的原谅了我...

  3. 参加了几个投资公司的管理培训,才觉得,做人简单比较容易,但是管人还是蛮不简单的。之前没发现的问题,在被培训的时候才发现都是问题。不知道是培训师把管理搞太复杂,还是我把管理想象太简单了。且不管了,细心观察,仔细学习总有可能用得到。

  4. 看资治通鉴,有不少关于人才的论断还是不错,改天抄过来大家分享;

  5. 有新同学问我,怎么才能简单,从一个男人的角度抄书回复:

    "  

    要担当、要谦敬、要沉潜、要诚信,四者做人要言。

    不浅薄、不浮躁、不寡信、不自傲,四者处世要言。

    平凡平淡,持一平常心。
    简朴简约,持一简单道。
       

    "或者换言之,你开心不费劲就是简单了。对我个人来说,每天早上自己煎个鸡蛋吃,就很高兴,这就是我的简单。

照片来了:

chrome中的一些好的扩展用于代替opera

From Evernote:

chrome中的一些好的扩展用于代替opera

一直以来,我都使用着opera,主要因为有几点:
1.速度快,号称地球上面最快的浏览器,pestro引擎强大的js和css解析能力;
2.html5的支持能力;
3.高可定制性:如单键快捷键,内置支持的鼠标手势,支持rss阅读等,自定义搜索,自定义书别名等;
4.集成性:比如查看页面所有链接并打开,将当前页面部分内容copy note并可以进行管理;
5.opera turbo,当速度很慢的时候开启,速度会变得很快,同时自动做了代理服务器;
当然,还有一些其他的,如内存占用小,几乎从不崩溃等..

但是最近opera转向webkit,看得出来其发展方向摇摆不定,更重要是放在mobile上面。为了让移动浏览体验提升,不得不抛弃了自己开发的Pesto引擎,转而投向webkit的怀抱。而google则最近宣称,将弃用webkit,转而投入兵力开发自己的引擎。

于是,我在想,如果opera在某天以后不再适合我(10多年的opera忠实粉丝..),也需我需要一个其他可以代替opera工作的浏览器。我的眼光看向了chrome,于是今天上午"实地考察"了一下,记录如下。

从单独的chrome本身来说,并没有特别出彩的地方。打开速度与opera相差不大,在很多tab的情况下,略胜于opera。但是设置界面确实比opera简洁太多,且均云端存储,无论你换了哪个电脑,均能自动同步设置。这一点,opera并没有同步设置,只是同步了书签和搜索等功能。缺点:
1.默认没有鼠标手势;
2.快捷键少得可怜;
3.代理设置居然是和ie共享,想要翻墙不容易;

听说都可以使用extension来解决,于是装了这些插件,然后基本上可以代替opera工作了:
1.smooth guesture,用于鼠标手势,基本上与opera的鼠标手势相当,但仅能支持chrome的菜单内容,灵活性和全面性不如opera;
2.shortcuts manager,一个日本人开发的,用于管理快捷键,可以完成opera中的各种快捷键设置功能,包括单键;常用的如:1,2切换tab,r,t,c设置刷新,打开,关闭tab等;
3.hosts管理工具,对开发同学来说比较重要,可以方便的切换测试环境等;
4.adblock,方便屏蔽页面中的各种广告,包括facebook页面的,尝试了一下,比opera的屏蔽更方便,当然,前提是你没有自定义css和js来实现;
5.proxy switchySharp,代理切换。chrome默认的代理管理是与ie浏览器共享的,实在不方便,而且经常不生效(原因不明),于是安装了goagent和proxy swtichy,这两个组合起来,翻墙无敌。


其他的,如one numbertab exposeTweetshare 等都是增强型,也都还不错,居家必备。

整体来说,装了这些扩展以后,基本可以替换opera了,但是在书签别名(输入b打开百度,jr打开jira),自定义搜索上面还不能完全替换opera。因此,短期内还将继续使用opera,但同时关注chrome。chrome的插件功能还是蛮强大的,能够实现的事情太多了,相比起来opera的扩展简直就是玩具,很期待...

毕竟chrome的设计是按照操作系统来做的,不得不服啊..opera加油吧!

Thursday, February 28, 2013

测试近期流行技术

今天无 意中同之前的一个同事聊天,提到几个测试领域流行的几个技术,关注下哈:

1.云 测试:
http://baike.baidu.com/view/2810525.htm

很多互 联网产品需要在全国各地测试其压力和网络,所以有些厂商就提供了一个测试平台。让用户本地把自动测试脚本写好,上传到这个 平台上去,这 个平台自动执行测试脚本并返回结果给用户。可以模拟全国网络,模拟不同软硬件环境;比如可以模拟成千上万的用户,不同浏览器,同时访问 12306,哈哈...grin...


2.自 动测试/性能测试
这个都 了解了,不多说,watir用的蛮多的,Selenium也比较流行;性能测试还是winrunner,webload和 loadrunner等工具

3.众 测:
利用广 大互联网用户来帮助你发现问题和bug。百度和腾讯这块儿搞的比较好
http://test.baidu.com/crowdtest/default/index
http://task.qq.com
http://www.utest.com
其中 utest.com是行业老大,去年融资了不少,看起来概念不错。

4.敏 捷项目中的敏捷测试,如TDD/ATDD等概念


http://www.taobaotest.com/blogs   也很有料,淘宝测试的聚居地


Tuesday, February 26, 2013

烟花易冷

烟花易 冷

梦中轻叹。唯红颜易老。 

泪水在飘。唇边是空门。 

萧瑟秋风伴我半世流离。 

落叶入流水。停不了是千年的宿命。 

他乡酒。醉不倒流浪的游子。 

入愁肠。怀念那泥板路上斑驳的青霜。 

锁不住。红尘纷纷。 

故事里。多少断肠。 


诉不尽的情伤缠在草丛旁摇摇欲坠的花梗上。 

繁华落尽。转身离开。带着一身哀怨。 

那孤单的背影。道不尽太多无奈。 

熟悉而又陌生的是回荡在耳边的呢喃。 

人散尽。谁管是与非。 

转开身。便是这一生。 

再回首。却已辨不清当年模样。 

醒了又梦的故事。重复着重复着撕扯那不堪的灵魂。 

迷路的人儿再也找不到路边的木椅。 

可怜。 

一扇门。了断了前世的誓言。 

一扇门。注定了今生的无缘。


烟花易冷。

题元宵

2013-2-24,元宵,独过。


梦隔万千里关山,闲愁空对盏。把酒凭栏独寻欢,明月孤影无言,烟火冷,依稀音婉。

偶作三两长短句,不尽满怀绪。东风闲柳总不遇,又到一年元夕,满街灯,佳人何去?


Saturday, April 02, 2011

少年游-林清玄

断鸿声里

是如何的一种感觉?在小巷独步,偶然抬头,别人院墙里的凤凰花探出簇簇火红,而那种花是几年没见的,故乡生长的植物。

凤凰花这种植物喜欢展现自己的红色,仿佛他就是为离别而生的。年少时喜欢粘凤凰花成一只只蝶,登上高楼去随风散放,它旋转飘落的姿态曾经赢得许多童稚的笑声,往事就也像这些蝶一只只飘去,它们纵使旋落的姿态各不相同,终究都会消逝了。 

想起凤凰花,遂想起平生未尽的志事;想起凤凰花,遂想起非梧不栖的凤凰。凤凰花何以要取用"凤凰"的名?这样,老是教人在离绪充溢时,会幻想自己竟是高飞的凤凰,在黑夜将尽时即将展翼呢。

《诗经.大雅》说的:"凤凰鸣矣,于彼高岗;梧桐生矣,于彼朝阳。不经意就浮起一幕深浅分明的影像;一只神鸟翩翩然昂立高岗,振翅欲起;象征高洁的梧桐 树则在朝阳面前,展露挺挺然的面貌。一位少年,一向喜爱梧桐一向倾慕凤凰,蓦然一抬眼,望见凤凰花开离期将届,自己不禁想幻化成一株梧桐以便面对朝阳,或 是一只凤凰以便寒立高岗;或甚至以为自己竟已是一只凤凰,立于高岗的梧桐树上;或是呀!一只清灵的凤凰一展翼,就点破了天蓝!

可是远处若有若无时断时续的骊唱屡屡歌着,如同一首民谣的和声,那么清清玄玄的蜿蜒在主曲里,明明知道不重要,那一首唱过千余日的歌谣,若没有结尾的一小段唱合,也会黯然失色了。

于是凤凰花激起的不仅仅是童年成蝶化蝶的记忆,而是少年梦凤化凰的一段惜情。如火的花的印象配上轻唱的骊声,敲醒了少年的梦境,惊觉到自己既不是凤凰神鸟,也非朝阳梧桐。终于在碎梦中瞧见自己的面容,原来只是一个少年,原来只是一段惊梦。

若干年来死生以赴的求知生活竟然就要过去,没有丝毫痕迹,正如大鸿过处,啼声宛然在耳,纵是啼声已断,却留下来一片感人的凄楚。而个梦凤化凰的少年,也 只是像别人静静地等待分离,在日落前的山头站着,要把斜阳站成夜色,只有夜黑也只有夜黑,才能减去白日凤凰花余影的红艳吧!

 

英雄系马,壮士磨剑

夏天,天总是喜欢下雨,而我总是不爱撑伞,任身子淋得湿淋淋,也不喜欢擦拭,也许我独爱那种凉凉的贴切,也许,我是让它淋着心里的苦涩吧。  

从那条幽幽的长巷走回来,围墙里的建筑工人喜爱快乐地吹口哨,不成曲不成调舒泰 的吹着,在雨中竟吹成一路的凄迷,把夏的雨日也吹的象是深秋的样子,一丝丝穿雨而过。那原是流行着的低俗的曲子,却在高空尖锐地回着旋着,我抬眼望,只看 见他们模糊的身影正砌着一块一块的砖头,想望也望不清楚什么。     

有几次,我借靠路灯沿路走回家,那因为夜晚,只静寂的听见几种虫唱,唧唧 啾啾,唧唧啾啾。我竟怀念起白日听到的低俗口哨呢。于是我只有自己影单单的吹着厂夜色却把它割成零碎,任如何也想不起前一刻吹的是哪一曲―,所以我突然想 起童年妈妈教我唱过的一首儿歌一首很好听的调子,却怎么也唱不出声,倒是妈妈的影子来得清晰,伴我静静地走着夜路。

妈妈是最怕下雨了,她爱叮 咛我撑伞,我瞒着她将伞置在家里,跑到溪畔去玩水,看一条水涨成一片水,我们舞成许多水花。回家又喜欢撒谎,说是忘了带,说是出来时刚好没有下雨,甚至抱 怨那把纸伞已然那么破旧了,因此屁股上常是一片红云。如今每下雨被淋到,就想到那把破旧的油纸伞,在没有人逼着撑伞时,才深切觉到妈妈的爱。我知道家前那 道小小溪水一定还流,只是不知道有多少稚子还瞒妈妈到溪畔玩水,玩成一朵朵水花。

一直到妈妈不再叮咛下雨打把油纸伞,而是叮咛自己浪游应注意的琐务,才知道自己已然长大了。

今天雨下得很大,我走在没有人的街中巷内,突然想起一些旧事。夜深了,我就坐在阑干上仰望天际,月亮星星都钻出云来,星空夜静,余雨未息,我知道明天一 定天好,遂忆起往日爱唱的一首诗:一切都老了,一切都抹上风沙的锈,百年前英雄系马的地方,百年前壮士磨剑的地方,这儿我黯然地卸了鞍,历史的锁啊没有钥 匙,我的行囊也没有剑。要一个铿锵的梦吧,趁月色,我传下悲戚的《将军令》,自琴弦......这样我就轻轻地唱起这首歌来,心中只想到庄严和悲壮。一个 边地的"残堡",看不到英雄系马看不到壮士磨剑看不到笙歌樵唱,只有一轮将西的夕阳挥洒它的残红,而一个卸了鞍的游子目睹这种景象,哪怕是铁石心肠,恐怕 也要黯然吧。

近来读书,经常十分敏感,竟会不自觉就呆着,过后一想,当时眼里一定是迷茫一片,看不清自己的河源,也不知自己的前路,那份感觉 一直走入内里走入中间,等我回顾它即刻就泛滥了,就是不回顾,也知道它细细地流过我的内里我的中间,洗涤得一片清澈。知道自己花初叶嫩,总也经担不起那条 河流,一阵一阵地激荡。

或许我离开此地若干年后,还是喜欢淋雨,到那里那时,就连建筑工人唱的郑声,也会被想成雅乐吧。

 

江湖夜雨十年灯

江湖夜雨十年灯,传说中,古时候的侠士都是佩着一把剑行走江湖的。

又传说中有一种武士,他们虽然练剑,身上却不带剑。他们随时都可以以一根筷子一茎稻草代剑器,甚至可以伤人至死,因此一定要佩剑才能使剑的,已经沦入第二流了。

传说虽只是传说,终究是有所本、不无几分道理,因为剑术练到出神入化,剑气敛于胸中,举手投足间总有几多威力,闪闪逼人,也就是"化身入剑"的境界了。

一把吴钩剑一把七星剑一把龙凤剑都是许多少年梦寐以求的,仿佛是一剑在手就能锄奸去恶无往不利。我也是一个少年,也喜爱拥有一把剑,只要有一把小小的剑,就会引来千古常新的遐思。

或许有几分轻狂,终究是真切的,还有什么比手里拿一把剑更美妙的事?

有时候兀自在夜黑中行着,将大街走成一条细细的小巷,那种苍凉古朴的细致便猛然升起,于是想舞剑想舞成朵朵剑花,此样的感情一旦升起,就随着月下的独影 一直长到远方去,止也止不住,可是长夜将尽,发现囊中已经遗失了剑簇,任是豪气干云,在无人的空巷内在无声的凄寂里在黯淡的夜色中,即是呼风唤雨的手扬 起,最多也只是一种无效的手势吧。

有一回也是夜黑,还夹杂沉默的细雨,走着夜路仿佛走着自己的发自己的影子自己的情调,在自己的生命上舞跃 着,才知道自己那么剑侠那么李白那么无所不在"十五好剑术,偏千诸侯;三十成文章,历抵卿相;白虽身不满七尺,而心雄万夫,王公大臣许以义 气......"李白就这样说着他飘然的诗思也就在旷茫的气势里点化出来。如果说李白的诗歌有什么成就,他胸中那把剑所阐扬出来的气韵,应是最主要的原因 了。

当我回顾,十年,不断地胸中便有一把正气之剑,叶着自己的叶花自己的花结自己的果子,所坚执的也便是,生命成自己的生命。那种不知道藏拙的锋芒,是不是一种挥霍呢?

我真的不肯相信是一种痛苦,也许剑被磨钝了,也许我是一本摊开扉页的书,但是在苦读书中的文字篇章时我害怕,也惊喜,由于翻过的页中有太多的叹息才害怕,由于后来的篇章里显示着精彩的未知才惊喜。知道自己所走的路是一条不馁的路,微小的感触已然难以遮掩它们的不足道。

真的不怕我真的不怕将自己的历史以苍凉的姿态展现出来,或许那样可以成为瞩望将来,但永不忘记过去的人。可是我真怕中夜的偶然凝伫,因为我看到的不只是我自己,而是一叶鲜红的秋海棠,以及它五千年前的创痛。

当然有一天我会庆幸"这辈子总算没有白活",可是此时此刻多年来回忆的凄美,总教我轻轻朗诵自己喜爱自己填的词:想当年带剑江湖,气吞万里如虎;到如今十年夜雨,醉来时响空弦

 

 

一块里程碑

那块里程碑说着说着,它就来了。

分离的神伤若欲雨前的黑云无边无涯地罩下,努力地压抑艰苦地想忘却,它竟毫不留情的在静脉中静静地流着。或者已经等待了太多的夜晚,或者要考验情意的坚挚,离别的伤悲由你的眼底汩汩闪现,在无意蓝而自蓝的天色下,我由泪哭诉出我的爱,说不出心里层层叠叠的颤动。

喜爱荷花浅蓝的韵致,你兴奋地翻墙跑来告诉,山脚的小湖有满湖的荷,我们乃撑一把小小花伞冒着大雨匆匆在泥泞的田路上奔跑,为了看荷花只为了看荷,就激起共同的欢乐。   

站在小湖畔,是有荷却没有开花,我们都有失望。

"没有荷花,荷叶也漂亮,摘一片荷叶回去是一样的。"你说。就是嘴角那一抹轻浅笑意,使裤管溅满泥泞也丝毫不在意,回来后全身湿透,看手上的荷叶相顾大笑,久久不能止息。

有一次记得是黄昏,送你归家回来的路上,遥远处山中的教堂正敲出悠扬嘹亮的钟声,随后是一段浓得化不开重得往下沉的暮乐,低沉得似是由远天那头传来。我 深深被那像极中古世纪的乐音感动,竟坐在家前。阶梯倾听;思维被紧紧系着,一条线千里迢迢追随你的余影。后来好多次也是送你回家归来,也是同样一曲教堂乐 音,依依的心情却一层加深一层,呵,分离真叫人散魄,凌晨里教学也有音乐,却如何也比不上斜阳下暮曲所荡漾的情绪呀。

或然我这一去会到很远很远的地方,或然每一次秋季会暖暖地滑进来,或然我甚至去追寻一群北雁。我的每一个足音却都相信:只要有风有云,我们曾经一起拥有的不仅是回忆,而是延续;只要有声音的地方,你的声音将恒常响在耳际。     

我就即将远扬,在向你诉说时,得以有机会遥望自己生命的既往和来兹,那条坎坷的少年游途上,每一段都立着一块里程碑,里中最古老最完整最美丽最长久的一块,清晰分明地刻着你的名字,以及我不朽的爱。

Friday, May 08, 2009

Putty下面如何输入中文

目前几乎所有的Linux的缺省编码都是UTF-8,而Windows用的编码是GBK,putty是个Windows下的软件,用putty登录Linux系统时输入中文经常会碰到问题,好像在putty里面没法输入中文一样。

这个问题的解决方法是,在putty的选项里面选择:

Window -> appearance: Font Fixedsys 12 points
Window -> translation: select UTF-8 in the dropdown menu

另外我常去的其他putty选项是:

Window -> Lines of scrollback 20000
Connection -> seconds between keepalives 60
Connection -> SSH -> auth: Allow agent forwarding
Connection -> SSH -> auth: 选我的private key
----或者将putty字体设置成为gb2312兼容的,在translation选择user encoding也可以正常输入中文.

Monday, October 02, 2006

Something about career

Now,my job is project manager in a software developing company,I was a R&D engneer before.Before I became a this project manager I had participate in about 5 projects.

Days ago,I discussed the IT career with Makefire.We both agree that it is difficult in China to earn a life as IT engineer,especially as a R&D engineer.In China,there are few developers older than 30 years.The developers over 30 years change to other type of jobs.Such as maintenance,project management,or quiting IT industry.
Cause of the concept of many companies think that the developers over 30 years old should not just coding any more,and in fact there are not so much chances for older developers.Many companies are using the newest technology,the most popular programming languages and have no own products and solutions.So when the older developers come,they need to learn a lot about the new skills.I think this is hard to many old gays.
I was a developer before,I love coding and the feeling of creating by codes.But I chose to be a project manager,because I was afraid to be an old developer also.I was told that there are many engineers over 30,40 and 50 years old.Why CAN NOT in China ?

Management is a hard working ,you need to communicate with many people not only your staffs.You must keep the client relations well,you must keep the HR resource ,you must keep an eye on the progress each week archiving,you must give out many reports and schedules to your boss and clients.....meanwhile, developping is an eazy job.

Life is hard,work is hard,we must find out a simple solution for life and work.

Sunday, October 01, 2006

Bubbles behinds ZhongGuan Cun

Today is the National Day of China ,I went ZhongGuan Cun for buying some digital equipment.
There is a long time that I hadn't gone there. It changes a lot ,  there are so many new building standing . The old buildings such as Hilon, Taipingyang, Keshuo are still full with many young people. The sales rush out once there are customers arriving.

There are some buildings still in building,it seems that there will be many companies and halls.I found that many buildings are empty or not full.I wondered to know if there are really so many companies.The IT industry haven't grown up, and many companies dies or are in unfavorable conditions. Who will pay for these buildings ?

I discussed the IT industry with Makefire days before, we both think there are many problems in IT of China. What will we do if the bubbles burst ? 

English writing is a hard work,I will keep writing in English to improve my English. 

Saturday, September 30, 2006

Thinking

Recently,there are many things needing think about.Career,Projects,Requirements...and so on.
I decied to create a blog to record these things.

so,when there is one thing needing think,I will record it here and find out how to solute.

 

Archives