Happy Birthday, Mac

1984年1月24日,第一台 mac 诞生,而我才刚刚百天。托老八的福,06年有了自己第一台 mac,小白,虽然经历过坎坷,但最终还是得以再续前缘。之后09年的 MBP,12年的 MBPR,谢谢苹果,谢谢乔大爷,让我摆脱了 windows 的低级趣味,摆脱了天天升级打补丁的生活方式,摆脱了升级操作系统还要付费的噩梦……

值此新春之际,我谨代表我个人,祝麦金塔30岁生日快乐!之前的30年,我们刚刚熟络,之后的30年,我们将携手揽腕,一起走过~

苹果官方纪念网站:http://www.apple.com/30-years/

官方视频

补充:1984年乔大爷的 demo 视频,珍贵的视频,青涩的乔大爷啊~

致即将逝去的2013

2013即将过去,刚从公司到家,有些疲惫。过去一年的关键词,累,但是踏实,没有太多无所事事的愧疚。收获,很多。成就,公司的,团队的,自己的。余下的,爸妈身都还不错,老头子退休了 但还在发挥余热,还学会了用微信,老娘也有时会qq视频。身边的朋友慢慢都有了自己的家庭和娃,有了自己的生活,虽然渐渐聚少离多,但大家都还没变,每次相聚总像回到了大学的时光,虽然都已然一个一个前赴后继地迈上了奔四的征程。 过去的一年,有了新的酒友,新的烟友,新的球友,新的歌友,谢谢身边的你们,过去的一年因所有的“你们”而精彩!过去的一年,有时会迷失,有时会挫折,有时会退缩,有时会孤立无援,有时会low,有时会down,有时直接宕机。有时会狂笑,有时想大哭,有时累到亢奋,有时但求一醉。但不管怎样,我都无悔,所有的所有,只是这一生中的那一瞬,不论否泰,至少我拼得毫无保留。新的一年已临近,不求任何“马上”,但信厚积薄发,水到渠成,得与不得,不在那三分的天注定,而在六分的靠自己与一分的朋友相助,毕竟天上不会掉馅儿饼,醋,蒜,小二… 

牛刀小试:bash编程

今天晚上照着bash文档写了个方便maven build的bash脚本,在此分享

m.sh
核心脚本,可以用在任何服务器上,调用方式:

m.sh -icpn <maven dir>

其中:

-i:install
-c:clean
-p:package
-n:-Dmaven.test.skip=true

 Bash |  copy code |? 
  1. #!/bin/bash
  2. TEMP=`getopt -o npic -- "$@"`
  3. M_ARG=""
  4. eval set -- "$TEMP"
  5. while true ; do
  6.         case "$1" in
  7.                 -n)
  8.                         M_ARG="$M_ARG -Dmaven.test.skip=true"
  9.                         shift
  10.                         ;;
  11.                 -p)
  12.                         M_ARG="$M_ARG package"
  13.                         shift
  14.                         ;;
  15.                 -c)
  16.                         M_ARG="$M_ARG clean"
  17.                         shift
  18.                         ;;
  19.                 -i)
  20.                         M_ARG="$M_ARG install"
  21.                         shift
  22.                         ;;
  23.                 --)
  24.                         shift
  25.                         break
  26.                         ;;
  27.         esac
  28. done
  29. DIR="$1"
  30. if [[ -z $DIR ]]
  31.         then echo "Usage: m.sh [-nipc] <dir>";exit 1;
  32. fi
  33. if [[ ! -d $DIR ]]
  34.         then echo "dir <$DIR> not exists";exit 1;
  35. fi
  36. pushd $DIR
  37. mvn $M_ARG
  38. popd

有关AMQ的DLQ

昨天发现系统的一些业务异常,查日志发现是出现了死锁,且在那段时间导致自动支付的jms listener中也抛了锁超时异常。今天尝试解决此问题,第一个想到的是将目前我们使用的acknowlege mode从auto改为manual,然后在代码中手动触发acknowlege,但是此方法代码修改量较大。经过一番google,在AMQ中找到了这么一个特殊的队列:DLQ(http://activemq.apache.org/redelivery-policy.html),默认1秒间隔,重发6次。经过尝试,只要将acknowledge mode改为“transacted”即可,简单科学,另外重发间隔、次数均可在spring中进行配置,代码稍后提交

另外值得注意的是,并不是所有的消息队列都需要重发,而应该根据具体的业务需求。比如我们的短信发送已自己通过数据库实现了重发,在jms中就不该再使用。当然,如果之前就知道DLQ那我们完全不必自己实现,此为一处败笔,有时间会使用DLQ对短信发送机制进行简化

p.s. DLQ配置后在AMQ控制台中可看到:

AMQ DLQ

p.s.2 在SOF上补充了一个相关问题:http://stackoverflow.com/a/20374297/365041,配置大致如下:

 XML |  copy code |? 
  1. <amq:connectionFactory brokerURL="..." id="connectionFactory">
  2.     <amq:redeliveryPolicyMap>
  3.         <amq:redeliveryPolicyMap><!-- Don't know why a double nesting -->
  4.             <amq:defaultEntry>
  5.                 <!-- default policy, 5 times with 10s delay each -->
  6.                 <amq:redeliveryPolicy maximumRedeliveries="5" initialRedeliveryDelay="10000" />
  7.             </amq:defaultEntry>
  8.             <amq:redeliveryPolicyEntries>
  9.                 <!-- three times with exponential back-off, that is, 1s, 2s, 4s, 8s. "queue" references to the "physicalName" defined in amq:queue -->
  10.                 <amq:redeliveryPolicy queue="queue.thread.autopay" maximumRedeliveries="3" initialRedeliveryDelay="1000" backOffMultiplier="2" useExponentialBackOff="true" />
  11.                 <!-- another policy mapping -->
  12.                 <amq:redeliveryPolicy queue="queue.thread.doc" maximumRedeliveries="2" initialRedeliveryDelay="4000" />
  13.             </amq:redeliveryPolicyEntries>
  14.         </amq:redeliveryPolicyMap>
  15.     </amq:redeliveryPolicyMap>
  16. </amq:connectionFactory>

在Apache mpm-worker下跑PHP

worker相比较prefork的优势就不多说了,只说在ubuntu下通过fastcgi跑PHP的配置方案

先安装相关mod并启用

sudo apt-get install php5-cgi php5-cli fcgid

sudo a2enmod fcgid

然后修改需启用PHP的virtualhost相关配置文件

 Apache configuration |  copy code |? 
  1. Options +ExecCGI
  2. AddHandler fcgid-script .php
  3. FCGIWrapper /usr/lib/cgi-bin/php5 .php

reload Apache

晶 · 彦