摘要: windows下无法装mrt(Meteor的包管理工具)。不过还好smart package本身也就只是一个文件夹而已,不需要在Meteor中注册什么东西。所以直接把smart package扔到meteor 下的packages文件夹下就行了。记得最好把文件夹的名字改得和smart package中的smart.json文件中描述的名字一样。 阅读全文
posted @ 2013-07-19 09:27 侯振宇 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 为了更好地描述Meteor和AngularJS为什么值得一谈,我先从个人角度来回顾一下这三年来WEB开发的变化:三年前,我已经开始尝试前后端分离,后端使用php的轻量业务逻辑框架。但当时前端还没有成熟且广泛流行的业务逻辑框架。所以在做产品开发时我仍然选用drupal等整体开发框架。开发时常常需要在javascript和php间切换,同时还要自己搞定数据库。此时的开发模型图是这样(红色箭头和红色块都表示工作重灾区):随着对用户体验的追求,我开始把业务逻辑往前端推移,于是马上遇到了前端数据与页面展示绑定的问题,业务逻辑简单时还能用jquery搞定。越来越复杂后,开始尝试使用backbone等前.. 阅读全文
posted @ 2013-07-18 11:49 侯振宇 阅读(16896) 评论(23) 推荐(17) 编辑
摘要: 基于AngularJS的前端架构(上)模块化怎么分模块AngularJS自己有模块的概念,但只是为controller、direcitive、service等提供一个集合的概念,并没有文件调度的功能。官方推荐的模块分类方法是:angular.module('app',['app.direcitve','app.controller','app.service'])简单应用的话,这样分很方便。但是当controller、direcitive等都多了,并且互相有关联的时候(比如某个direcitive需要自己的controller), 阅读全文
posted @ 2013-05-22 23:21 侯振宇 阅读(4750) 评论(1) 推荐(0) 编辑
摘要: 标题党了。其实这篇文章是为了记录一个我对AngularJS compile过程的一个问题。基础:directive有个重要特性是transclude。这个特性主要用途是:当页面的dom元素要进行复杂变化时,将原本的dom暴露给用户以供变形时或变形后使用。例如我有个选项卡directive,写法是:<div tabs> <div tab title="title1">content1</div> <div tab title="title2">content2</div></div>这 阅读全文
posted @ 2013-05-15 15:54 侯振宇 阅读(1932) 评论(1) 推荐(0) 编辑
摘要: 这几天在看松下幸之助的书,他认为经营者对自己的顾客态度应该向亲家一样,尊重、客气、荣辱一家。对消费者来说,买你的东西不只是东西而已,他同时期望的是周到、热情的服务,被认真对待、被尊重的感觉。而在互联网领域里,大部分人是不懂也不重视这些的。工程师因为对技术的长久追求,潜意识里常常认为只要技术足够领先,总会有无数人来追着求着用,觉得只要我做的东西其他人都没有或者比其他人都好,那不好用一点也是可以理解的。可惜互联网用户是世界上最没有耐心也最挑剔的用户。三点来说明,第一点是互联网用户觉得如果这个东西不是好到我一天不用就朝思暮想,我是不会付钱的。第二点是互联网用户在使用过程中一旦发生几次不符合预期或者习 阅读全文
posted @ 2013-04-25 21:39 侯振宇 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 我在数据层的抽象上走了一段比较长的弯路。简单总结一下:刚开始做简单的项目时,用简单的ActiveRecord就已经很合适了,比如CodeIgniter自带的。但是项目变大之后,特别是业务实体之间的关联变多之后马上就出现了问题,为了降低各个实体间的耦合,你需要将各种操作再抽象出一层。举个例子:你做了一个简单的用户系统,对用户的增删改查只需要对“用户类”调用相应的操作就行了。后来你增加了一个文件类,每个用户可以拥有多个文件,删除用户时需要同时删除相应的文件。为了能使删除的用户的这个操作复用,同时防止其他操作删除用户时没有删除相应文件夹,于是你不得不再对用户的删除做一层封装。我曾经试图让各种实体在构 阅读全文
posted @ 2013-03-12 16:18 侯振宇 阅读(1409) 评论(0) 推荐(0) 编辑
摘要: 在学习Django模板之前我以为也和很多php模板引擎一样,是通过缓存文件输出,执行模板中的python代码来实现的。读完发现居然和前端模板相似,用了正则。为了更好的体会设计的哲学,我同时参考了tornato、drupal、codeigniter、aceTemplate、underscore中的模板设计。Django模板特点1.不支持python代码,使用自己的标签关键字。 Django的模板设计时有个重要的假设是:“写模板的不懂python”。因此你只要搞告诉他基本的逻辑结构(判断、循环、输出变量等)的写法就行了。同时也避免了程序员将业务逻辑写道模板里。解析模板的时候和前端模板非常类似,也. 阅读全文
posted @ 2013-03-08 15:45 侯振宇 阅读(2158) 评论(0) 推荐(0) 编辑
摘要: 这篇是总目录。记录下学习python的过程是为了强制自己执行新的学习方法,以及验证自己对于“学习”本身的新领悟。真正强大的人在于成长有个加速度。这个加速度体现在对自己思维方式的改造上,远不只是经验积累。这个改造的方式来自于日常学习中。普通人学习的误区在与于只是收获解决某类问题的经验,即使你学的是一种思路。对真正的学习来说,这只是第一步,我称之为通览。第二步是研究所学的东西的形成过程和发展趋势,对于其中疑惑的地方单独拿出来再学习,这一步才是学习的本质。第三步是在所学的东西上发挥灵感,再创造。这个想法得益于之前看到的一篇文章《如何在一年内修完斯坦福四年的课程》。就是我学习的详细记录:计划1 学习p 阅读全文
posted @ 2013-03-08 10:22 侯振宇 阅读(600) 评论(1) 推荐(0) 编辑
摘要: 最近在做网站打点(对站点元素的点击进行统计)的一些工作。打点方式主要分为以下两种。前端打点:前端工程师手动在页面中嵌入自定义属性、class等标记,再通过JS上报点击记录。后端打点:不在前端进行任何标记,JS自动上报所有元素点击信息(XPath,id,多级class等),后端通过还原元素来进行统计。这两种方式有各自的优缺点。前端打点最大的缺点在于打点过多或者多人参与开发的时候容易出现操作失误产生的丢失。优点在于无论dom如何变化。打点信息始终正确,不需要复杂的还原操作。后端打点最大有点在于自动化。最大缺点在于对于dom变化多的页面,难以实现完整的还原。XPath和多级class都不能解决这个问 阅读全文
posted @ 2012-12-13 22:59 侯振宇 阅读(1129) 评论(0) 推荐(0) 编辑
摘要: 梯度下降算法的思维过程:x为训练数据输入值。y为训练数据输出值。θ 为 x的系数,也就是要求的。1.预测公式 h(x) = ∑θixi。“使 θ尽可能的准确”,可以理解为理想情况下对每一组样本都有 ( h(x(i)) - y(i) )2= 0 ,非理想情况下希望 J(θ) =∑( ( h(x(i)) - y(i))2 /2)尽可能小。2.梯度下降的思路是: 先取一组随机的 θ 值,代入样本数据,通过求导等计算算出能进一步减小J(θ) 的 θ 值。重新 对θ 赋值,再不断进行这个步骤,直到 J(θ) 达到局部最小。3.这个对 θ 重新赋值的算法是“ θi:= θi - ( aJ(θ) / aθi 阅读全文
posted @ 2012-11-26 16:27 侯振宇 阅读(932) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示