todos — Backbone案例浅析

八月 3rd, 2011 § 3 comments § permalink

Backbone的官方例子中的第一个也是最简单的,便是这个todos

*<Backbone -- 一个可以在前端组织MVC架构的javascript框架 了解更多>

——–

从功能上来讲,todos就是个to do list(典型的GTD手段之一),我们可以把要做的事情一一罗列,完成后删去即可。这次的这个app完全是个webApp而且不涉及后端。虽然从原理来讲不涉及后端的主要原因是运用到了HTML5的Local Storage特性,直接将信息本地存储而不需要用后端语言来存储信息(DB etc.),但是当完整地看待这个app时,从来没有接触过webApp的同学(像我)还是会惊叹于app整个代码的架构形式,往往写过js的都大概体会过js代码的松散和全局规划的难度,像我这样的菜鸟,如果要做个app,肯定是无数个函数。。。(以下省略) 好吧,言归正传,既然是Backbone让一个WebApp组织得如此井井有条,那我们就不妨来看看,它到底是怎么做的。

——- —— ——– ——- —–*<todos源码>—— ——— —— ——- ——–

如果直接看源码的话,新手一下子看明白还是有一点点难度的吧(老鸟拜鄙视我),因为我们都压根不知道Backbone的基本形式啊。这里我就不去讲解Backbone了,要我说估计也不准确更不全面吧。。

附上个自己看过几遍的好文

1*<Backbone JS框架指南>

2*<从豆瓣说和Backbone.js说开去>

——–

—————-

这样一来,我们大概了解了Backbone了吧,下面开始正式的介绍,介绍完之后,我想大家对它的ModelCollection以及View这三个最基本的要素会有更深的印象。

 

window.Todo = Backbone.Model.extend({

window.TodoList = Backbone.Collection.extend({

window.TodoView = Backbone.View.extend({

window.AppView = Backbone.View.extend({

上面这4个声明,便是源码的全貌了,也就是说,这个App,一共包括了1个Model,1个Collection和2个View。为什么是2个View?其实稍微仔细看就会明白,第一个view是list里的每个item的view,而第二个view,是整个app的view,如果要合并,并非不可以,只是这样,整体来说更为清晰,代码的的目的性更强,更规整。

 

那么,我们首先来看这个Model

(Models 用来创建数据,校验数据,存储数据到服务器端;Models 还可以绑定事件。比如用户动作变化触发 models 的 change 事件,所有展示此model 数据的 views 都会接收到 这个 change 事件,进行重绘。)

代码相对教少,我就都贴过来好了。我们发现,它有一个defaults对象,用来存默认的数据,即每个item的内容和是否完成。然后是初始化函数initialize(),检测如果内容为空,填上默认content。下面还有两个函数,由于是在Model下的,而每个todo list的item都对应一个Model,所以Model里的对象和函数,都只针对自己这个item生效。例如这个toggle变化函数,便是在用户点击某个item的勾选框时,才发动的。clear函数如是。

 

然后是Collection » Read the rest of this entry «

说解脱的话还是挺过分

七月 26th, 2011 § 2 comments § permalink

晚上天还下着雨,忽大忽小的。慵懒地写几行代码怎么也调不出来,间歇地刷刷人人和G+。

看似拖沓的进度让自己很郁闷,可刷sns的轻松毕竟比条代码轻松多了。。还是往下翻,突然看到些似乎互相有牵连的状态,“走好”?“来世”? 瞬时便意识到是发生了事。但是我没有联想到他,也不敢想。继续刷新,越来越多,也全是高中那块的。我开始聚精会神起来,猛地便看到了名字。

好友发了条状态,我回复接受不了。可是事实便是如此。越来越多的转发,悼念,我明白这不是做梦。

确实,人走了。

 

看很多人的状态,甚至是照片,那份音容笑貌。。寒假去见他的时候,在隔离间,没有头发,蓝白竖条纹的病人的标准打扮,却还是那么不羁和洒脱,让人看到不会有那么多该有的担忧。不知道详情的每个人都会很安心地探病完后离开,想着什么时候出来了再一起聚聚。

也确实很遗憾,把花递给伯父之后,很快我便离开了。我们说实话不算非常熟,可能是打球认识的?可能是太常见面了,没有过什么剖心置腹,但也绝非是只知道对方是谁。

也确实是生疏,记得最清楚的竟然是回家路上彼此遇见的情景。当时确实是觉得你拉风啦。整个高中阶段,你是个存在。

 

我们没有到称兄道弟的地步,打个招呼,扯淡几句作罢,可是我还是接受不了。

前段时间传你急缺血小板,我不知道自己的血型,甚至我现在还在学校与你相隔千里,我觉得特别可惜。我仅仅只是听过白血病,我也知道它就在你身上,但我一直认为,身边的人,即便是这种病,也会化险为夷的。但是我似乎太天真了。

昨天动车事故不知道带走了多少人,我真的开始意识到人的脆弱。一个个鲜活的生命真的如此的不堪一击,时至今日我才试图去接受这个现实。就像你的离去一般。

 

不要怪我,我无法像其他你的兄弟姐妹们一般痛心疾首地大哭一场,也许是我们还不够哥们?

我只是希望,接下去的路,你且可以慢慢地走了。我不想说什么解脱,那是伪善,我们活着的时候,即便再恶劣的环境,我们毕竟还是活着。就因为说想要逃避这些苦难而放弃生的希望,我觉得实在是很恶心的说法。

但是事到如今,上路了,我想说,很多事情你可以不用再费心考虑了,很多苦可以不用再尝。

 

只希望快乐,你还可以拥有。

一路,走好。

PHP内容发布

七月 12th, 2011 § 0 comments § permalink

这几天接了个小网站的后台的编写工作,有一块是新闻发布,由于是非常小众长时间不会怎么发布新闻的站点,我想着就不用数据库而直接文件读写好了(其实也是为了图省事)。由此,网站的目录结构大多是我创建的用来存储数据的文件夹(文件目录多起来原来超麻烦。。)

然后做新闻发布的时候,后台添加的新闻,必定得按照发布时间的先后来排序的,最新发布的必须排在最前面,但是我们如果不作处理,php默认是按照文件名来排序(win和Linux下都是,你直接改文件夹的排序方式是没有用的),当然,如果是用数据库的话,完全没有问题,但是我的文件操作,要考虑。。。

于是很简单,几下他们的发布时间,存个变量,再排序输出就可以了。。但问题是,每次展示页面的时候都得排次序,很耗时,如果有永久的办法,就好了。。

 <?php
    $count = 0;
    if ($dir = opendir('added_news')){

	    while (false !== ($file = readdir($dir)))
	    {
	    	$count ++;
	    	if($file != "." && $file != ".."){
	        //echo "$file\n";
	        $title[$count] = $file;
	        $title[$count] = array('text'=>$file, 'updatetime'=>date('YmdHi', filectime("added_news/".$file)));
	    	}
	    }

    closedir($dir);
    }

    //时间:$title[$i]['updatetime'];
    $c = $count;

    	for($i = 0; $i < $c; $i ++)
    		for($j = 0; $j < $c-$i-1; $j ++)
    			if($title[$j + 3]['updatetime'] < $title[$j + 4]['updatetime'])
    			{
    				$tmp = $title[$j + 3];
    				$title[$j + 3] = $title[$j + 4];
    				$title[$j + 4] = $tmp;
    			}

    //timesort($title);//时间排序
    //$count = $count - 2;

      for($i = 3; $i <= $count; $i ++){
      echo '<li class="contentItem">
        <div class="contentItemMain">
          <img class="contentItemMainImg fl" src="upload_imgs/news/'.$title[$i]['text'].'/icon/'.$title[$i]['text'].'.jpg"></img>
          <div class="contentItemMainShow fl">
            <div class="contentItemMainTop">
              <div class="contentItemMainTitle fl">'.$title[$i]['text'].'</div>
              <div class="contentItemMainDate fl">'.date('j F Y',filectime("added_news/".$title[$i]['text'])).'</div>
            </div>

            <div class="contentItemMainDescription">'.nl2br(file_get_contents("added_news/".$title[$i]['text'])).'</div>
          </div>
        </div>
        <div class="contentItemShadow"></div>
      </li>';}
      ?>

没好意思地贴了代码。。。是直接输出的html,你没看错。。。  木有mvc,一点都木有。。。  原谅我吧。。。  赶时间啊啊。。。

忏悔下。。。   假期如果有时间得用mvc练练手,传说的重构。。

哈哈 :)

小记

七月 12th, 2011 § 5 comments § permalink

小学期大半过去了,但刚刚接了个腾讯的工作人员的电话,顿时感到很是愧疚。

记得腾讯校园之星的比赛我们是在5月份报的名?报完名后貌似经历了一次数模、GeeBox项目、期末考试(还有事情,但是不记得了)这几件事后,一下拖到了小学期,期间有一个多月吧,匆匆设计上传了方案ppt后告知进入复赛,我们都觉得很幸运了,即便我觉得自己的这个idea真的很不错。然后小学期开了javaEE课,于是乎我们准备是用java写后台,但是我很不明智地接了一个院里老师的小项目,而课(有个网络实验)又不是很轻松,所以我们的cstar又不得不继续延后。

穿着腾讯寄来的T,也许只有刚穿的时候才感到开心,剩下都是愧疚。

最终自然是没有完成了。工作人员问我是否放弃?我只能坦白,没有写完,真的是差好多呢。。觉得还是自己太贪婪,分不清主次,很多小东西该丢一丢的,既然2个月前就决定做的事情,到头来竟然没什么作为,实在是过意不去。。

 

分清楚什么是重要,什么是不重要,才比较重要吧。。。(好绕口)

也罢,也可能是带着份功利的心态去做一件事,就做不好了吧。。明年的cstar不一定会做,因为那时候差不多都结束实习应聘了吧,时间不一定允许,再说。

 

这几天就把javaEE的大作业做完,然后研究下前端的东西,为牛哥达哥童哥哥出分力,还有就是马桶哥的那个。。我真的一点没有执行力。。

努力。

今天外一则

六月 22nd, 2011 § 2 comments § permalink

记得不久前咨询过一个业界的前辈(light前辈推荐),他做过互联网,现在貌似是在传统行业了(不过也是码代码的吧)他的经验,让我明白了些东西。这也是为什么,对与Py,我又有的些许向往。

虽然前辈是以java为主,但他推荐技术派学习Python或者Ruby,做产品或者前端的,学习PHP。

现在就互联网行业来讲,一般刚起步的,都用Py或者Ruby敏捷开发了(身边就有例子),大的企业,很少用他们(豆瓣除外),都用PHP做web。但是web不纯粹是web,后台还得C/C++没或者干脆都是Java架构(这些都是大体上来讲,细节太多)。这个意味的是,PHP被单独拿来独当一面的,很少,一般都用来作为表现层(不当之处还请前辈指出)。

所以,虽然语言并不是十分苛求的东西,但是大方向还是要的。前辈说的,可以吧PHP学好了,再转Py,一样的。

所以目标依旧,把PHP基础打好,把oop和mvc练熟~C/C++同样,把数据结构和算法多修炼~

(小学期的javaEE必修课让我很无语,但是这么多学分,不选又浪费。。。)

加油喽~ :)

 

学习,是缓慢积累的过程,但也要有方法

六月 22nd, 2011 § 2 comments § permalink

昨晚突然想来码字的时候发现博客404了,不知道为何,然后联系客服,今天给修复了,不过没有说原因,机房还挺多事的。。

——————————————————————————————————-

今天是22号了,期末考试是从13号开始的2天(昨天又一门,周五还有最后一门),很多考试都延后是因为十年的院庆,总之特别隆重。。。那天晃荡了很久,虽然传说中的全国985高校软院的院长们都来了我也因为不认识而不知道有们有看到。。。总之再之后就是舒服地过了几天什么都不做的日子,不可谓颓废,因为放松总是要的嘛。。。

然后开始小学期,同时准备剩下的考试,等成绩。就这么糊里糊涂的到今天了。。。成绩还是没出全,不过知道的那些自己还是不满意的。。类似于计算机网络和操作系统这样传统意义上很重要的专业课,也考得不好。。虽然可以把其中一门用系数提到90+,但是始终还是没考好。。

就这两门而言,大部分还是纯粹的概念,而且一开始会让人觉得很凌乱,知识点非常松散,但确实是必须掌握的一些东西。有一种观念是,成绩可以不好,但是专业课必须好。。那持有该观念的我拿到那样的成绩,怨念自然不必说了。。。T T

虽然考试不能反应很多东西,但没有考好,说明确实掌握的不够好,不够全。就我记得的是,计算机网络的卷子有类似考网络地址是什么的,考当今因特网中的域间选路协议的标准是什么,我都不是很清楚。。这些很纯粹的概念我漏掉了只有自认倒霉,只怪知识梳理不够缜密,但关于TCP的3次握手的一些细节我觉得答得不好,那就确实是自己的问题了。这里就体现了自己对于知识的刨根问底不够,深入不够。而操作系统,最明显的是一道磁盘寻道的此,因为对柱面和磁道理解的偏差,导致整道大题全失。这是一,再是,很多零散的知识点有些部分都是大概是那样,没有把握。这也算是问题所在。

现在归结下来,大体可以总结为:大容量的知识不懂的梳理归类,不能把书读薄;
                          关键知识点不能有效掌握,不够牢固,准确和深入;
                          因为没有实践,枯燥的知识很难吸收;
                          突击不适合自己,也不能学到真正的东西。 » Read the rest of this entry «

月末,未央

五月 31st, 2011 § 0 comments § permalink

一晃已是入暑良久,没有回来耕草近半月余。

呼,好不容易憋了两句假的很的句子,累shi的同时感慨自己的墨水枯竭的速度之快 T T 言归正传。

话说这个月确实只码过一篇日志,究其原因,说来话长啊。。。

院庆,中心整体搬到了C区(一幢新的教学楼),什么实验室啊机房啊都搬了过来,于是乎组织也跟着过来了。而事先和马桶哥说好的做点东西,所以又去了C105安顿。

 

然后期间有个数模,磨了好几天。。。回来专心弄web客户端,结果是花了好几天做了主页(静态),后台希望专业些,就打算好好看看。现实Fsat-cgi(PHP),看了张宴前辈的博客,果断配不好,对我这种初学者来说,自己编译所有的东西太累了,一天没了。。。然后按Ubuntu论坛的办法,5分钟(虽然不完善,但是我要的就是能用。。。)

 

继续研究PHP,才真正明白了点MVC的味道。。。包括牛哥他们用的pylons以及LiGht前辈的前辈SUN指点的一些东西和推荐的rails之类,大都是很美妙的MVC(web不适合MVC,oh不,我是初学者,谢谢)请求给C(controllers),然后C让M(model)去和DB交互,返回的数据叫个V(view)处理,返回给用户友好的页面。这就是大致的最直白的MVC了吧(确实自己没写过,不敢乱说)

 

所以我感觉是当前的这个项目哪怕我用很多的源码我也要试试MVC,所以至昨天开始期末复习,后台几乎没怎么写。。果断要实践

自己实现个MVC的框架,也许,PHP就相对熟悉了吧~

这个是目标哦。。。马桶哥的项目我绝对不能怠慢了。

 

对了,还有望牛办的学院第一届AI编程赛,我帮写了几个静态的宣传页面,有用到PHPmailer来提供转发提交的代码的部分,结果不知道我更新了什么,垮了。。。期望能顺顺利利的吧。。。(自己不给力啊。。。唯一的功能都做不好。。。)

 

 

然后今天中午回来得知浙大得了World Final Champion哦!!!!!  本人虽然太水不做ACM但对于大牛我还是很崇敬仰慕的,寝室的ACM牛竟然没我激动,哈哈哈哈,还是默默地刷些水题吧。。归结下来,大一的时间,多做题

 

逃毛概,去开发区看了加勒比海盗4!!!!!!  很是幸福的说。人鱼(阿斯特丽德·伯格斯·弗瑞斯贝)好让我心动啊,特别是那双眼睛,标准的楚楚动人惹人怜!!啊有木有!!!  回来到现在脑海里还都是她啊有木有啊!!!

 

 

幸福了记得复习,2周过了2天了,操作系统网络编译3个大头要好好看看哦~ 小学期的事情再说了,下回吧~

所以,加油吧~~:)

top

no sidebar