IT技术博客大学习 共学习 共进步
首页 / Becomin' Charles
IT 2012-12-07 13:58:53 / 累计浏览 5,020

VIM常用小窍门收集

这篇讲的是VIM中那些非常实用、却总让人想不起来怎么用的“小窍门”。作者从实际工作体验出发,指出在Linux服务器环境下,VIM是无法回避的编辑工具,但一些高效操作(如批量注释)却因不常用而容易遗忘。文章聚焦于解决这个痛点,具体展示了如何利用VIM的“range”(如:2,12s/^/#/g)和重复次数(如命令后的11)来实现简洁的列编辑,并预告了后续会解析替换命令的细节。此外,还提及了使用f和t进行快速删除的技巧。对于想在VIM中提升效率、又苦于记不住复杂命令的开发者来说,这篇文章提供了一个清晰的备忘清单和具体示例。

IT 2012-12-07 13:58:01 / 累计浏览 3,760

Yii框架base包代码分析

这篇讲的是作者对Yii框架base包的源码深度剖析。作者从一次周日的源码学习出发,借助Visual Paradigm工具,绘制出了该版本框架核心类的UML结构图。 通过类图的面积分布,作者指出整个框架的基石是CComponent、CModule、CApplication和CModel这四个类。尽管在上层开发中几乎直接接触不到它们,但它们如同“水面之下的引擎”,支撑着整个框架的运行。 文章重点剖析了CComponent这个“元老”类。作者梳理发现,其方法主要围绕魔术方法、Behavior(行为)和Event(事件)三类展开,这恰好揭示了Yii组件模型的三大支柱:通过魔术方法实现的属性成员、事件驱动机制以及可扩展的行为注入。这些底层设计,正是Yii框架灵活性与扩展性的源头。

IT 2012-12-06 13:45:07 / 累计浏览 3,000

Yii框架的Log系统的分析

这篇讲的是 Yii 框架中日志(Log)系统的内部实现。作者从 logging 目录下的源代码出发,梳理了这个灵活且强大的日志模块是如何工作的。 文章的核心在于剖析其解耦设计:负责“打日志”的 CLogger 和负责“记录日志”的 CLogRouter 是两个独立的对象。CLogger 充当生产者,通过单例模式提供全局调用接口,并将日志信息存入一个内存缓冲区。当缓冲区满时,它会触发一个 onFlush 事件,而不是直接处理。 真正的处理逻辑由订阅了这个事件的 CLogRouter 等路由类来完成,它们作为消费者,在事件中将日志分派给不同的目标,比如文件、邮件或数据库。这种基于事件的发布-订阅模式,将日志的收集与分发完美解耦。文章还展示了如何通过 category 参数对日志进行灵活过滤,确保只处理需要关注的信息。 作者通过阅读源码,不仅展示了如何简单地调用 `Yii::getLogger()->log()`,更揭示了框架在简单接口背后,如何通过精巧的架构实现高性能和高扩展性的日志管理。

IT 2012-12-04 00:02:10 / 累计浏览 4,120

关于《代码大全2e》

这篇讲的是一位普通程序员与《代码大全2e》长达两年的“纠葛”。作者坦言,自己是从“著名程序员”的推荐中买下了这本砖头,期望它能照亮“码农”迷茫的职业道路。然而,这本书他读了两年仍未读完,甚至直接用了“难看”来形容阅读体验。 所谓“难看”,一方面在于开篇就用三十多页探讨软件构建的重要性和隐喻,被作者戏称为“前戏过长”,足以消磨大部分读者的兴趣。另一方面,书中关于“程序=算法+数据结构”、管理复杂性等论述,在他看来又“太合乎常识”,读来仿佛不断在印证自己的既有认知,缺乏新奇感。 那么这本书到底值不值得看?作者给出了非常个人化且纠结的结论:对于那些知道正确方法却总找借口不用的人,看书是浪费时间;对于已经践行的读者,看书可能只是不断获得共鸣却收获有限。他最终坦承,自己坚持读下去的理由略显“可悲”——不甘心浪费买书的钱,以及一种要批评或称赞都得先读完的自尊。 在他看来,《代码大全》系统性地阐述了编码实践,这一点在众多编程书中绝无仅有,但它大概不会成为你书架上的经典。如果非要推荐一本编程书,它或许也不是首选。这篇文章的价值,恰在于这种来自一线码农的、毫不掩饰的真实阅读反馈。

IT 2012-12-04 00:00:55 / 累计浏览 5,440

PHP中return的用法

这篇讲的是PHP中`return`语句一个常被忽略的实用技巧。作者在研究Yii框架的配置文件时,注意到一个直接在脚本文件顶层返回数组的写法,这让他重新查阅了PHP官方文档。 原来,`return`不仅可以终止函数执行,当在全局作用域(即脚本文件的顶层)调用时,它能立即终止整个脚本文件的执行。更重要的是,如果该脚本是被`include`或`require`引入的,`return`后面的值会直接作为引入语句的返回值。 这个特性带来了一种更清晰、更直接的配置管理模式。对比传统的写法——在配置文件中定义一个全局数组变量,然后在其他地方通过`global`关键字去访问——新方式只需一行`$config = require('./config.php');`,就能直接获得配置数组。 这种做法避免了全局变量的污染,让数据的流向在引入那一刻就变得明确无误,代码也更为整洁。对于需要集中管理配置项的应用来说,这无疑是一个值得借鉴的实践。