06 2012 档案
摘要:最近在做一个网盘的项目,得到了很多经验和教训。总结了一些常见的问题,于是写了下面这样一个小东西来解决。问题项目中为了追求速度和性能,数据库的表设计往往不是满足范式的。这就可能导致在改一个表中项目实体的元信息时,需要同时修改其他表中的信息。比方说:我有一个一张表来表示虚拟的文件(每一行记录表示一个文件),另一个张表用来记录已经发布的文件和生成的外链信息。可能为了少进行一次查表,我们会把文件的一些基本信息,如(文件名,发布人的名字)记录在外链的表中。当修改了文件表中的元信息时,外链表中的信息也需要修改。常见的方法是使用ORM,但如果我还需要“根据具体情况再决定要修改其他表中的元信息”这种情况时,O
阅读全文
摘要:1.软件的前期准备分为“需求准备”和“构建准备”,两者都有系统的规范。code complete中对这两者都提出了详细的确认方法。这里的确认方法并非戒律,而更像备忘。2.在构建活动中的设计部分,书中提出了几大范围,我个人觉得划分得非常详细。在具体的实践过程中,设计应该是一层一层往里迭代的,每一次都应该适当把这些范围考虑一遍。3.在设计一节中,提到了我认为最有价值一个观点,就是“任何技术为题都没有 管理复杂度 重要,软件设计的首要问题是管理复杂度。”4.写代码对程序员来说是一种诱惑,要学会控制。5.对于不熟悉的问题,设计详细到无法再设计了,才是足够了。6.我认为的比较适合web开发前期准备工作应
阅读全文
摘要:不了解jquery deferred对象的先google一下“javascript promise模式”和“jquery deferred对象”。搜到的几篇都讲得比较详细了。一下只列出常见的用途。1.我有两个异步操作f1和f2,f2需要依赖f1异步返回的结果,不写成回调,如何做?先考虑我希望写成的样子://f3用来确定f2返回的结果f1().pipe(f2).then(f3); 再看f1和f2实现就很简单了:var f1 = function(){ var _i = $.Deferred(); setTimeout(function(){ _...
阅读全文
摘要:这两天在做的项目中需要对用户输入的日期进行匹配,匹配的格式范围 包括:2001.4.3六月五号七月十五一一年四月三日二零一三年五月六日01年3月7日2011年3月31日今天、明天、下周一、周六使用的是正则来处理,值得注意的是再utf8编码下,正则使用\u选项就能在表达式中直接输入中文。一下贴出代码: 1 //时间标识%6.5% 2 private function analyze_time( $content ){ 3 $time = false; 4 5 if( preg_match( '/%.*?%/', $content, $m...
阅读全文
摘要:最近又受了了蛊惑开始看ember.js。还是MVC还是事件驱动。用来用去发现也并没有帮助我一看代码就能很快明白其中逻辑。总觉得少了点什么。我开始从头审视我究竟希望代码是什么样的。于是有了以下几点。1.MVC带来的好处是数据与视图的绑定。相当于声明了一个数据变化与视图变化的关系,这一点在代码上也能很清楚地提现出来,需要继续利用。2.使用MVC时比较烦人的情况是视图间相互的关联。子视图之间应该是相互不可知的,这样才能尽量解耦。因此需要一个全局事件来进行通信。3.不要再期望直接看懂代码!!!编程中实际缺少的页面效果和代码设计的关联图。我要努力尝试一下,怎么样画一下这个图。
阅读全文
摘要:1.underscore源码最外层使用 "(function(){}).call(this)" 的形式包装,如果指定了非window的this对象,则underscore对象会注册到这个对象中。2.“_”一开始被定义为一个返回新实例的函数。结合另一些操作让“_”对象不仅能当对象用,还能当函数用。3.为什么undersocre在循环里要用 "result[result.length] = value" 这种方式来保存结果,而不用数组的push???4.backbone代码使用(function( factory ){ if (typeof define =
阅读全文
摘要:1."[]"称为字符集合,表示的是括号内的任意字符,注意是多选一。2。"a-z"这种形式叫做字符区间,只要是再ASCII中的字符就可以用。如果首字符再表中的出现的地方晚于为尾字符出现的地方,则模式失效。3.十六进制前缀"\x"和八进制前缀"\0"返回的是ASCII中的对应位数的字符。4.字符集和中的"."或者"+"会自动转义,可以不加"\"。5."*"、"{}"和"+"贪婪型的,会从头匹配尽量多的
阅读全文
摘要:这两天在用appcan做手机应用,非常纠结。就原因做一下总结和备忘:1.产品设计足够了,技术设计还不够。中途换了一次框架,没有考虑到换框架的兼容性。2.过于依赖调试工具,设计和写代码时的大局观不够。3.时间管理做得不够,又陷入了埋头编程的陷阱。关于appcan,以下记录几点:1.使用它的ui不如使用jquery mobile。它的基本上是抄袭的jquery mobile,还抄得很烂。甚至可以考虑自己写,毕竟是使用html5,只要对页面编程够熟就行。2.它的数据库操作是异步的,但是回调函数都注册到同一个全局对象中,导致两个查询同时执行时后一个回调会覆盖之前的,因此只能人工地将所有查询串行的。3.
阅读全文
摘要:以下只能说是我的个人开发的感悟。从做网站到现在做WEB端的应用,我度过了三个时期:一、使用框架来搭建自己需要的系统。一开始是大框架如drupal(这里我更倾向于称drupal是框架而不是cms),后来觉得过于笨重。于是改用codeignitor等小框架。二、不再完全使用框架的MVC。而是用框架做服务端数据接口,只提供纯数据,由前端进行逻辑处理和渲染。三、前端从简单的“分模块,渲染与逻辑混合”,到“分模块,面向页面元素的MVC”,再到“分模块,事件驱动的,面向切面的MVC”(稍后详述)。为什么会有这三个时期的转变,实际上很大程度是由我对开发过程的希望驱使的。这些希望是这样的:当需求确定好以后,首
阅读全文
浙公网安备 33010602011771号