不得不说我是一个比较慵懒的人,这本书我看了大概有1个月左右才看完。
整本书的的介绍什么我就不说了,网上一搜一大把。我只想说一下我看完这本书的感觉。
本书洋洋洒洒下去有几百页下去,看起来很厚实的一本书,翻起来却很快,让人有些欲罢不能的感觉。虽然作者已经很努力以案例的形式来介绍,但是正如作者所说,软件开发本来就是一个整体,所以很多章节还是有联系的(这点需要看到最后才能明白)。
即便如此,每章的内容也足以让我们反省半天,不仅仅是所说的问题以及方法,更加应该反问自己一句“如果我遇到这种情况,我会怎么处理?”或者“当时我们公司遇到这种情况,如果按照这种方法处理的话结局会是怎么样?”这本书真的非常适合这样子去看,边看边想,思考中不断假设如何处理。设身处地的思考一下你就会发现,原来这些土方法在中国这个国度还真的实用~!
看完整本书,你真的要我说一下到底有什么新鲜东西?嘿嘿,我还真不知道。因为所有的问题,我们或多或少都在开发或者工作中遇到过,所以在阿朱说这些问题的时候我们更加能感同身受,我们就更加渴望知道作者的处理方法。就像作者本人说的那样“有过相同经历的人才会互相信任”,其实我觉得更确切的应该是“遇到过相同问题的时候,两个人才能引起共鸣,才能更加渴望知道解决的办法。”
原先对技术有一些偏执或者执着,现在看了书之后,感觉有些觉醒的意思——是啊,书中也说了“我们不是研究所,我们是公司。我们的东西只需要满足我们的需求就好了。”我再多说一句“在满足需求的时候也不要忘记了做一定的技术储备才不会很快被竞争对手赶超或者抄袭!”
下面说几个我记忆比较深刻的话
- 你做事的出发点一定要是帮老板赚钱,否则永远不可能得到老板的支持!
- 公司里面总有自己的特殊情况、利益团队。老板或者职业经理人需要去平衡这种利益团队内部的争斗。这才是公司的发展。
- 需求分析的方法有很多,但是需要深入到公司内部各个部门的相互冲突和利益之下,才能很好的了解需求。
- 做事需要有资源的人支持你。在公司这个人一般都是老板!老板不首肯的事情,你永远做不成!!
- 项目或者产品不可能一次性完善,这一版需要收集用户的不满意的地方,在下一版中修正!所以不要一开始追求完美,否则会很累!
- 永远不要和老板争权!如果可以取得信任,会自动放权,否则都是扯淡!
- 抓住自己的核心竞争力
- 技术人员发展路线有很多,项目主管、CTO等,但是需要结合自身的能力来进行选择。
- 公司中,了解业务模型都是最重要的!
- 演示中不仅仅是PPT要注意,还需要注意自己的仪表、周围环境等因素对演讲或者演示的影响!
- 明白自己的价值,不要老是说自己的价值没有被老板发现!要明白自己到底创造了多少的价值!公司的业绩到底是你的产品核心竞争力来的还是老板的人际关系来的?这都要搞明白!
大概就这么多~最近准备用XMind整理一下这本书的相关重要点,到时候会放出源文件。
从四月份论文送审搞到现在,看着两个多月过去了,今天终于拿到了最终的结果。
4月30号知道第一次盲审结果——一个过了一个没错。结果就是需要对论文进行实质性的修改,而且要一个月后才能进行送审。
虽然当时骂娘骂了半天,但是在我自己修改的过程中我也慢慢认同了审稿老师的意见:论文确实没法再看,错别字一堆、表述混乱、文章结构一塌糊涂。要不是我是作者,我估计都不知道文章说的是什么。我自己看了都这么感觉的文章,我实在不知道如果是我在审稿我会怎么样?
于是,修改了一个月后,于6月2号再度送审——然后就展开了我的焦急等待的时间。
在一次次打开研究生院网站点击查看盲审结果后,今天终于看到了“盲审结果已返回,请速来学位办领取”。
看到那一瞬间,我的手都在抖!不是夸张,真的是在抖!一种恐怖、期待或者别的,很复杂的感情。手都不知道往什么地方放。
查了半天没有从网上找到学位办的电话,从移动的通话记录中找到了。
电话过去了,在那边邵老师查结果的时候,我的心基本上处于停跳状态——要是不过怎么办?要是有问题怎么办?天啦!!
听筒那边结果“二次送审通过了,你过来拿一下”。
那一瞬间,啊——不知道说什么了。
下午拿到结果后,一看,其实还不是“同意答辩”,而是“由导师审核”。
啊!不过也算是过了,到一楼去杨老师那边打印了答辩用的成绩单,跑去找院系秘书张老师准备交上去,结果她不在——囧。给老黄和小朱各打了一个电话,请他们有空去办公室看一下张老师在不在,在的话告诉我我去把成绩单送给她。
记流水帐一样的文章,貌似我的文笔越来越差。记录下来只是让我能够记住整个过程——真的很难熬!
自从论文送审之后,我的心情就一直处于绷紧状态,干什么都超级不对劲!!
上次论文送审,一位老师给的意见是“修改后送其他专家再审”,意味着我要修改论文,并且一个月之后才能再度送审。
6月2日,我把论文送了出去。我的忐忑不安的日子就开始了。
我问那个老师“如果这次再有问题怎么办?”老师说“那就要你们分委会讨论是否授予学位”。我的心瞬间冰凉。
就我个人而言,我真的不擅长写论文。按照阿菁宝宝的话来说“太口语化”。我也是这么认为,总是对她开玩笑说“我其实更加适合去说书”。但是论文还是要写,并且要盲审,并且这次如果有问题后果就非常严重。
就因为这个,我的心情焦燥也就开始了。
原来以为自己很洒脱,但是现在我发现我根本就不是这种人——我对这些东西看得还是比较重,那个证书和学位不仅仅是证书和学位,更是我三年来从医学生跳转到工科学生的见证。
又或者我害怕让父母失望,毕竟父亲最常说的话“我们没有什么文化,你需要读出书来,不要让住在同一个大院里面的老师看扁了。”
上述种种,压得我喘不过气来,让我感觉到了空前的压力。虽然表面上我还有说有笑,但是我的心中比谁都紧张——那真的是一种怕,一种发自内心的怕。可以说这么多年来,我从来没有这么怕过,哪怕是面对本科创下的弥天大祸我也没有这么怕过。但是这次,我真的怕了!是不是人越在乎的东西,就会越紧张,越紧张就会越害怕~
真的心情好乱!
最近一段时间忙着学习软件工程、设计模式方面的东西去了,PHP代码也就放下了。
昨天把原先写的一个Blog拿出来看了一下,惨不忍睹啊~拿过歪脖的yblog看了一下代码,觉得原先对TP的认识还是有些偏差。或者说TP也并不是我想象中的完美的框架。于是乎又将TP(1.5)代码翻出来看了一下,大概的扫了一下。没有认真看代码实现,仅仅是将流程看了一遍,理解了设计的原则。
也许是TP需要考虑很大的通用性还是啥,反正TP整个写的是非常的臃肿——估计想要通用这个是没办法了。考虑了太多的可能性之后就是代码复杂度直线上升——说个最简单的例子,对于路径的解析类dispatcher,里面考虑了所有TP提供的路径方法的解析(废话!!)对于通用框架确实是需要的,但是如果作为公司使用的话太臃肿了。
大概的画了一个想象中的理想框架,很简陋,估计实现起来也不会很麻烦。现在看来最麻烦的就是路径解析以及相关处理了。PATH_INFO可以通过定义好的格式来处理,但是对于单入口框架而言如何通过URL调用相应的功能函数才是最关键的。给出一些伪代码帮助理解。
- //路径处理部分。假设路径是这样子的index.php/Index/index/id/1?status=public
- $path = $_SERVER['PATH_INFO'];//这里获得了路径部分,这里是/Index/index/id/1
- $parmas=$_GET;//这样子就获得了其余GET部分的内容
- //获取了上面两个部分后就可以分析那个是Action,那个是function,还有所有的GET,本例中Action是Index,function是index,GET数据分别是id=1和status=public,然后再进行分发就可以了。
- //现在的问题是如何调用?
- class App{
- //先调用dispatcher获取相关路径信息。比如/Index/index/id/1?status=public分析
- $action="Index";
- $function="index";
- $params=array("id"=>1,"status"=>"public");
- //载入相关Action的类,因为之前有关Action类的路径是确定的,假设是ACTION_PATH
- require_once ACTION_PATH."/".$action."Action.class.php";
- $_action = new {$action}."Action"();//生成相关Action实例
- $_action->{$function}();//调用实例对应的方法
- }
大概就是这样子。这样就解决了我理想中的框架的最大问题——URL转换。
其余就是保持基本的MVC内容,最好能增加一些helper而不是铜鼓plugins来进行帮助操作,比如对输入进行过滤等。
我快要疯掉了!
用PHP学习《Head First设计模式》简直让我抓狂!
原本设计模式应该使用Java进行设计,但是因为放弃了Java和.net的学习,而Python的学习又没有深入,所以没法,只能用PHP。
说句实话,搞了我N久啊!
做的是第一个策略模式。所谓策略模式本身说法很简单——将固定的和可变的分开,针对接口编程、利用OOP的多态从而在继承类中重新定义相关内容。说起来容易,结果到了PHP中,由于PHP弱变量类型折腾的我那个痛苦啊! More …
曾经徘徊在J2EE和.net之间进行苦苦的选择。
最终两个都没有选择,还是选择Python
不仅仅因为Python可以通杀桌面和Web,而且Python的理念很好——关于于程序逻辑的实现而不是语言的本身~~
举个例子
- def average(values):
- return sum(values)/len(values)
- """下面是调用
- average((20,30,10))
- average([20,30,10])
- """
从程序以及调用来看的话,程序本身没有对参数进行严格的限制,不论是set还是lists都是应付自如啊~程序员可以将精力放在程序实现而不是说函数的定义、调用上面~
当然,这只是我看了一下Python官方的手册中tutorial之后的结果,其他还需要继续学习啊~
这个其实是上午因为某些事情(1506)遇到的一个东西。
我对PHP对于文件什么的操作向来很差,所以确实不知道如何做。回来Google了一下。找到了一个解决方案。
这个方案的是将该目录全部遍历,包括目录的子目录等等,将遍历到最下层的文件。我将代码进行了一定的修改,可以遍历到最下层也可以只遍历当前目录无视子目录。代码如下
if($handle = opendir($dir)){
while($file=readdir($handle)){
if($file!="." && $file != ".."){
$child_dir = "{$dir}/{$file}";
if(is_dir($child_dir)){
if($iterate){
echo "<h1>{$child_dir}</h1>";
outputDir($child_dir);
}
}
echo "<h3>{$file}</h3>";
}
}
closedir($handle);
}
}
//Example
$dir="/usr/";
outputDir($dir,1);
这个作用到底在什么地方?举个例子,Wordpress的插件机制,就是对相关的目录进行一层的扫描(这个不叫遍历),并且对相关文件进行读取,判断等等。
PS:后续应该会更新一些PHP对于文集读写方面的文章。