重新学习面向对象编程

使用PHP已经一年多了,这个过程中开发的项目大部分都是过程式开发。最近的一些事让我意识到我已经不熟悉面向对象编程了。 阅读一些文章,比如“Skinny Controller; Fat Model”、“Tell, Don’t Ask”等,发现自己的程序严重违反这些原则; 这两天在学习使用PHP的命名空间的特性,虽然知道命名空间的作用,但是使用起来感觉及其不习惯; 尝试使用面向对象的方法设计我最近在做的小程序,感觉很困难的说,不知道从何下手; …… 以上的种种迹象表明我已经忘记了如何进行面向对象编程了,看来是时候重新学习面向对象编程的说。

May 30, 2012

第二次iOS开发分享

今天是同事的第二次iOS开发分享。 起初迟疑要不要过去呢,因为去年的第一讲我几乎什么都没有听懂。但发现其他同事没什么响应,感觉这样太对不起分享的同事了,就权当过去充充人数吧。不过听完之后,还是很有收获的,这次白参与的说。 首先,回顾了下第一讲介绍的Object-C的语法,然后介绍了下Xcode,并开发了个入门程序——输入姓名,点击按钮,显示“Hello,XXX!”,其间穿插着介绍了iOS应用的基本模型。 这次做的比较近听的比较认真,感觉如下: Object-C的语法挺怪异的 Object-C没有命名空间 Object-C需要手动去控制内存分配 Xcode的语法提示太牛X了 iOS App开发入门不是很难 感觉开发好的App的难点主要应该在交互设计上(自我感觉) 以后iOS开发的分享,我要积极地参加的说(虽然现阶段我不会去学) PS:下半年或者2013年有时间可以学习一下iOS开发的说。

May 29, 2012

《正则表达式30分钟入门教程》学习笔记

最近业余时间在写的小说抓取程序需要进行内容解析,比如解析小说的章节信息、提取小说的正文内容、移除页面的水印,这个过程中要用到正则表达式。虽然用Google找到可以使用的正则表达式,但想要更加深入的学习一下,于是上周末找来网上推荐的《正则表达式30分钟入门教程》,以下是我的学习笔记。 正则表达式是什么? 正则表达式是描述一串文本特征的工具。 什么是文本的特征? 比如,中国电话号码的特征为:以0开头的3或4位数字(区号),然后是连字符(-),最后是7或8为数字(本地号码)。3位区号8位本地号码 或者 4位区号7位本地号码 组成的电话号码的正则表达式为 0\d{2}-\d{8}|0\d{3}-\d{7},使用该正则表达式你就可以查找一个文件中所有符合规则的电话号码了。 元字符(metacharacter) 元字符是正则表达式规定的具有特殊含义的字符。比如:\s 表示任意的空白符(包括空格、制表符Tab、换行符、中文全角空格等);\d 表示0-9之间的一位数字。 字符转义 字符转义就是让元字符表示它们自身,如:\s 就代表 \s,而不是空白符;. 就代表点(.),而不是除换行符以外的任意字符。使用反斜线(\)进行转义,代表字符 \s 的正则表达式为 \\s;代表点的正则表达式为 \.。 未完待续…

May 28, 2012

要不要玩滑板呢?

之前,忘记是什么时候了,曾考虑过这个问题。在了解了些滑板的基本信息后,对自己说先放一放,免得又因为自己一时脑热,买回来后不玩了。今天又想到了这个问题,找了张A4纸,画了个思维导图,得到了如下的结果: 方便(vs. 轮滑与11号) 长条形,不占用空间,比轮滑便携 不需要系鞋带之类的,踩着滑,落地走呗 比11号速度快 酷 极限运动,演化自冲浪运动 踩着滑板去上班,比较帅气(是不是也有点2呢?) 学习 场地,小区附近的公路比较空闲 时间,夏天到了,下班后还要很久才天黑,天黑了也有路灯的说 基础与技巧,可以逛社区、看视频来学习,购买滑板时也会有教程赠送 其他 消费不多,基本入门板,300元左右可以搞定 锻炼身体,有事做,自然不会老宅在家里 障碍 会不会在意路人的眼光呢?(与路面摩擦的声音还蛮大的) 我能够坚持多久? 结论是:可以玩滑板,接下来多了解些滑板的信息后再购买滑板。

May 27, 2012

假如今天是你的最后一天,你会做些什么?

知乎上看到这么一句话“如果明天是世界末日,还会选择创业,这是一种人生态度。”,感觉很虚。 突然联想一句话“假如今天是你的最后一天,你会做些什么?”(我一直误以为是乔布斯2005年在斯坦福毕业典礼上演讲提及的。) 我多次问过自己,好像每次的答案都是“享受最后的生活”,细想一下,我会做的事情有: 给父母打个电话,平静的告诉他们这件事情 通知殡仪馆或者能够收尸的人 出去逛逛,用心看看这个世界 安静地睡上一觉 经过考证,乔布斯2005年在斯坦福毕业典礼上演讲的原话如下: If today were the last day of my life,would I want to do what I am about to do today? 如果今天是我生命中的最后一天,我会不会完成今天要做的事情呢? 其表达的意思是做自己真正想做的事情。对于这个问题,我应该还是一样的回答吧,除非这件事情对他人会有影响,而且必须完成。 另外一个原因是我还没有不甚明了自己到底想要什么,还在摸索中,“So keep looking. Don’t settle.”。 扩展一下吧 乔布斯的演讲听过好多遍,当年还尝试过背诵/模仿,目前只有零星的记忆——“Connecting the dots.”和“Stay hungry, stay foolish!”。 我最喜欢的是“Connecting the dots.”这句,我常用它来解释自己做的一些事情,来激励自己前行。 “Stay hungry, stay foolish!”我一直没有很好地理解,倒是看到一些比较新颖的解释。 讲稿中文 @ 福布斯中文 | 演讲视频 @ 优酷 刚刚快速回顾了一下演讲的内容,这次又有新的发现。 PS:这次我要把它背下来。

May 26, 2012

Weekly Digest #1

Weekly Digest是一个新的系列,分享一些我阅读的文章以及我的观点,每周五发布。 我所信奉的编程哲学 -by- 张砷镓 本文介绍了一些好的编码习惯,虽然我平时也比较注意编码习惯,但是还是有很多不足的地方,以下几条是我接下来一段时间需要加强的地方: Coding for Reading(我的一些代码逻辑需要调整) 用常量代替魔术数 ; 减少逻辑层次:对于复杂的表达式,通过提取中间变量来降低表达式的逻辑层次,保证每个表达式的逻辑层次不超过二层。对于多层条件判断,大多数情况可以用防御式编程将其简化成单层的条件判断,尽早return或者exit。(对于函数是尽早return还是推迟return,一直有些争论,我会在之后的某篇文章里进行探讨。) 请给它 5 分钟的时间 -by- 装傻充愣 我也有这样的坏毛病,尤其是在他人表达和我不一致的观点时候,我会立即进行反驳,并表现出强烈的“进攻性”,结果往往不是好的结果。看到这篇文章,我要反思一下,学习5分钟的技巧——『5 分钟』代表着『思考』,而不是作出回应。——在以后和他人的交流过程中获得更好的效果。 TEA上对该文章有不错的讨论,感觉superwa的第4条确实太“恶”了,不过不认同holy的心灵鸡汤的观点,『5分钟』只是个泛数,我们要让他们表达自己的观点(imwilsonxu),不倾听直接武断的下结论的方法不可取。另外心灵鸡汤对某类人还是很有用处的,比如我,疲惫的时候来点心灵鸡汤感觉很不错。 37Signals成员的工作空间? -by- 装傻充愣 工作空间的舒适与否直接影响工作的心情,我喜欢较大的桌面,较安静的空间。之前使用的桌子空间太小,感觉很不爽,上周末终于在淘宝上购买了新的桌椅,现在感觉好多了。 BattleStations @ Reddit 晒晒你的工作空间 @ V2EX Getting Real -by- 37Signals #book The smarter, faster, easier way to build a successful web application 现在Getting Real可以免费下载了,你还在等什么呢? 37Signals还有一本书:《Rework》,中文版《重来》。 PS:想注册一下TEA,发现需要邀请码,想了一下也就释然了——邀请机制是社区初期保证内容的质量和社区的氛围的好方法。我目前不是TEA的好用户,再等等吧。

May 25, 2012

不用密码进行SSH连接

开发测试或维护VPS时,我们会使用SSH远程连接服务器,登陆后进行相关的操作。 ssh hutushen222@192.168.200.137 为了保证账户的安全,一般我们会设置一个复杂的密码,这样导致每次连接时输入密码成为很不爽的事情,即使使用了KeePass之类的工具来管理密码。 其实有一种一劳永逸的方法来解决每次输入密码的痛苦——使用密钥进行安全验证,过程如下: $ ssh-keygen -t rsa # 选择加密方式 rsa/dsa Enter file in whitch to save the key (~/.ssh/id_rsa): vps_rsa # 输入保存密钥的文件名 Enter passphrase (empty for no passphrase): # 设置密钥密码,可以不设置 Enter same passphrase again: # 确认密钥密码 Your identification has been saved in vps_rsa. # 私钥 Your public key has been saved in vps_rsa.pub. # 公钥 The key fingerprint is: 10:e1:02:57:15:7a:b7:37:b3:f3:a7:de:78:6f:ec:ff hutushen222@Sailing ... $ ssh-copy-id -i ~/.ssh/vps_rsa.pub hutushen222@192.168.200.137 # 将公钥添加到远程服务器的authorized_keys文件中 经过上述的步骤后,再使用SSH远程连接时就可以不输入密码或者输入设置的简单的密钥密码完成登陆。...

May 23, 2012

PHP: json_encode()

开发过程中经常使用到的API大部分使用JSON作为数据交换的格式,PHP使用json_encode()将PHP的不同类型的变量转换为对应的JSON字符串。虽然经常使用,但直到今天我才注意到原来json_encode()还支持第二个参数options。 函数原型 string json_encode(mixed $value [, int $options = 0]) 参数说明 value value可以为非resource类型的任意PHP变量。 options 目前我本地的PHP版本为5.3.2,因此只试验了5.3.0引入的常量,所有可用的常量以及它们含义可以在JSON Constant页面查看。每一个常量的字面意思表达的都很清楚,不过对于它们的使用场景我还有些疑惑,比如:可不可以混搭使用? PHP 5.3.0 JSON_HEX_QUOT: 将所有的双引号(”)转换为\u0022。 // 实例代码: $data = '"'; echo json_encode($data); // "\"" echo json_encode($data, JSON_HEX_QUOT); // "\u0022" JSON_HEX_TAG: 将所有的大于号(>)转换为\u003E,将所有的小于号(<)转换为 \u003C。 JSON_HEX_AMP: 将所有的与号(&)转换为 \u0026。 JSON_HEX_APOS: 将所有的单引号(’)转换为\u0027。 JSON_FORCE_OBJECT: 当value为非关联数组时强制输出结果为JSON对象。在接收者要求数据为对象且value为空数组时使用。 // 实例代码: $data = array(); echo json_encode($data); // [] echo json_encode($data, JSON_FORCE_OBJECT); // {} PHP 5.3.3 JSON_NUMERIC_CHECK: Encodes numeric strings as numbers. PHP 5.4.0 JSON_BIGINT_AS_STRING: Encodes large integers as their original string value....

May 22, 2012

时间管理 #1

我一直在时断时续地进行着时间管理,不过从来没有做好,也没有养成好的习惯。 工作上还好,每周会提交大致的计划,另外由于这段时间的工作任务也比较明确,每天感觉还不错,比较充实。不过,业余时间的生活则惨不忍睹,由于自己注意力涣散、不够专注的恶习,东摸摸,西碰碰,几乎是一事无成。感觉自己的生活越来越混乱,上周我决定重新拾起GTD,来理清自己的生活,调整做事的节奏。 时间管理最常见的误区有哪些? 今天知乎上看到了这个问答,粗略的看下发现我的误区还真不少,比如: 我一直以为GTD就是时间管理,如果我能够严格按照起流程进行实践,我应该能够怎么怎么样,没有做好只是以为自己没有严格地去实践; 我的时间管理的目标就是为了做更多的事情,结果好像都没有做好; …… 接下来的一段时间,我将结合GTD、误区列表和实践重新走上时间管理的道路上,这个时间管理系列用来记录这个过程中我的一些思考。 PS:知乎是一个高质量的问答社区,上线以来已经积累了不少有深度的内容。不过为了维持内容的质量,知乎一直采用邀请机制来注册用户,如果你感兴趣,我这里还有些邀请码。 PPS:这篇文章好像还是谈及自己的碎碎念,干货呢?我先适应一下每天更新的习惯,技术类的文章我接下来也会逐步写起来。

May 21, 2012

Learn to Write

What I should be worried about is, “Have I written something worthy of your attention?” – Please Learn to Write via Rands In Repose 很久没有打开自己的博客了,虽然一直叫嚣着要坚持发布,但行动与口号一直背道而驰,只是偶尔在本地记录些笔记和零碎的念想,却不曾发布出来。 浏览了下GA上的统计,访问量很少,其中最受欢迎的是几篇关于工具介绍的文章。浏览下自己的文章,感觉水准很低的说,大部分文章都是自己碎碎念,对他人无甚益处。此前曾有同事对我说过,让我写些“干货”,怎奈干货太少,也不知从何写起。 其实只是自己太纠结,太过关注于外物,忘记了本质,如:捣腾的乱七八糟的分类,现在连我自己都不知道它们代表着什么意思了。与此同时,人心浮躁,不能够安静下来专注地学习,贪求太多,最终却什么都没有做好。 写其实不是很难,关键是如何写好,吸引到读者。现在我也不知道,就先从写开始,一步一步来吧。 Now… go. PS:读Rands In Repose感觉很吃力,英语得练的说。

May 20, 2012