呼伦贝尔归来

2014.6.1-2014.6.3

很久之前就想去草原看一看,这次终于成行,可惜不是我之前计划的摩托车游,也不是骑马游,而是四个人一起包了一辆捷达,不过驾照还没拿到手,下次,下次一定亲自载着朋友们去草原上走一走。

行程单如下:

第一日:海拉尔-世界反法西斯战争海拉尔纪念园-达尔吉林寺-莫尔格勒河-拉布达林-根河湿地-白桦林-恩和

第二日:恩和-哈乌尔河-室韦-临江

第三日:临江-莫尔道嘎-德尔布尔-敖鲁古雅部落-海拉尔

学习笔记

出游归来,游记稍后进行整理,先整理一些技术方面的问题。

两周之前花了一点点时间研究了JS压缩工具 closure-compiler 和 YUI Compressor,主要用来压缩合并javascript代码和文件,YUI简单易用,closure稍微有点复杂,参数和用法也比较多,而且有很强大的解析引擎。

这两天看了《redis入门指南》,好多问题豁然开朗,有了Redis妈妈再也不用担心我的性能了,以下redis特性:

  • 数据类型:
  • 字符串
  • 散列(hash)
  • 列表(list)
  • 集合(set)
  • 有序集合(sorted set)
  • 事务
  • 生存时间&缓存
  • 排序:可以用过SORT命令来实现排序,分页,外链
  • 任务队列&优先级
  • 发布&订阅模式
  • 复制
  • 持久化
  • 脚本:使用lua语言自定义关键字及功能

PHP5.3和PHP5.4的有太多的新特性,还需要慢慢消化,最近关于PHP的一些内容:

  • 任何代码都可以放在函数内部,包括函数和类;
  • 5.3开始支持closures(匿名函数);
  • 5.4可以使用trait用来实现多重继承;
  • 5.3开始支持命名空间,手册中用目录来理解命名空间的的确非常通俗易懂。

学习笔记

今天花在学习上的时间不多,不过也要将做过的事情做一下总结。

写了一个进程监控的程序,可能不太标准,不过看上去已经可以正常工作了,要放到crontab里顶起执行,代码如下:

1
2
3
4
5
6
f='/var/run/maild2.pid' 
if [ ! -f $f ] || test $(ps --no-heading `cat $f` | wc -l) -eq 0
then
ruby /home/bobhero/project/smzdtx.com/www.smzdtx.com/script/maild2.rb&
echo $! > $f
fi

今天看到了PHP手册中关于流程控制语句的部分,把一些以前没有注意到的部分记录一下:

return可以放在全局环境中,会结束脚本,也可以在被include的时候返回值;

以下两个语句作用是一样的

1
2
foreach ($arr as $key => $value)
while (list($key, $value) = each($arr))

另外list()可以用来解开数组,foreach可以遍历对象的可见属性,并且可以通过Iterator 接口进行定制。

我之看了好多关于require和include之间区别的内容,原来手册里简单一句话就说明白了,原文是这样的“require 和 include 几乎完全一样,除了处理失败的方式不同之外。require 在出错时产生 E_COMPILE_ERROR 级别的错误。换句话说将导致脚本中止而 include 只产生警告(E_WARNING),脚本会继续运行。”

今天就到这,刚刚终于成功把训练强度增加了50%,尝试了好几天终于如愿以偿,继续坚持。

学习笔记

从今天开始写技术笔记,为了总结,记录和达成目标。

今天解决了几个棘手的问题,一个是什么值得监控(http://smzdtx.com PS:目前内测阶段)的ruby脚本在crontab下执行失效的问题,情况是用ruby编写的监控脚本手动执行成功,但是在crontab下执行失败并且没有错误提示,跟踪代码发现问题出现在加载了带有中文的邮件模板文件之后,调用gsub方法的时候程序终止,并且无错误信息,经过一番寻找发现问题出在编码上,将读取内容加上.force_encodeing(‘utf-8’)即可,并且在程序头标识了文件编码# -- encoding: utf-8 --;另一个问题是邮件进程异常终止,后来发现是邮件模板中存在字符\r,进行了删除和替换。

今天发现了crontab按秒执行的方法,以下是一个半分钟执行一次的例子:

1
2
*/1 * * * * command 
*/1 * * * * sleep 30 && command

把标准输出和标准错误从定向到指定文件的方法是:

1
command > filename 2>&1

另外今天还读了一些PHP手册的内容:

  • declare命令是一个从来没见过的指令,作用是指定编码或者每n行代码执行事件。
  • 了解了位操作符&与,|或,^异或,~非,<<,>>, 并且第一次发现我一直遗忘了一个xor(异或)的逻辑操作符,还有了解了E_ALL ^ E_NOTICE的位操作原理。
  • 使用反引号“"可以执行系统命令,这样就简单多了,不用总是exec,比如$output = dir`;
  • 字符也是可以进行自增操作的,今天也是第一次知道 ‘A’++// B
  • 之前在百度遇到的关于global的面试题也在手册里得到了解决,global是可以放在全局中的,是为了让该变量在function中被引用(include)时起到作用。
  • 另外一个在新浪面试遇到的问题是表达式的返回值问题,$a = 5; 涉及到3个值,一个是整数5, 另一个是$a的值,还有就是该表达式本身的值。

今天还下单了两本书《redis入门指南》和《银河系漫游指南》。

泰山 2014.5.2

这次匆匆离开家,也不知道自己是怎么了,感觉自己再也忍受不了那样的生活,再多一刻,便会疯掉。阴差阳错,一个人来到了泰山,下车的时候天已经黑了,也不知是哪根筋接错了,停留了没多久就踏上了去往泰山的公共汽车。

22:00到达红门,第二天11:30下山,一共历时13.5个小时,看日出耽误了两个小时,背着我那个二十斤的背包,还有这十几天都没好的感冒,下山之后感觉整个人要散架了,又渴又饿又累又困,腿软的不行,今天已经是下山之后的第四天了,才刚刚可以下楼梯。

五一出行太多不便,到处都是人,低头是人,抬头是人,左边是人,右边也是人,好想找个地方躲起来。