随笔分类 - 技术
1
摘要:1 导读 web 基础研发体系指的是, web 研发中一线工程师所直接操作的技术、工具,以及所属组织架构的总和。在过去提升企业研发效能的讨论中,围绕的主题基本都是——”通过云计算、云存储等方式将底层核心技术封装成基础设施“。而我们在实践中发现,在 互联网渗入到各行各业,业务爆发 企业竞争白热化,对速
阅读全文
摘要:这篇文章最早发在我团队的文档中。我的团队鼓励每个同学都在业余时间多做算法题,特别是新人。个人认为在编程能力的提升上比做 side project 更有用,对职业发展也是如此。当然出于兴趣做的 side project 另当别论。转到这里,希望对各位读者有用。 如何有效地写算法题 目的 持续做算法题的
阅读全文
摘要:这篇文章只打算描述我加入支付宝之后,在设计稿生成代码这个方向上自己做的尝试和看到的团队中的尝试。不谈行业历史,不争论方向。文章以现状的形成和我的想法演进为主脉络,文末会提到我所看到的新契机。所以读者如果对现状和推演没兴趣可以直接翻到后面《投石》一章。 立足 三年前刚开始做 Sketch 生成代码插件
阅读全文
摘要:通天塔之石——企业级前端组件库方案 组件库是前端大规模开发中提升效率的重要一环,同时也是可视化页面搭建、自动化测试等上层建筑的基石。因此设计时要考虑的问题涵盖面非常广。要设计好非常难,但是设计好之后从上层建筑带来的回报会超过你的想象。 这篇文章中我们先一起来关注和探讨组件库要解决的问题,最后会推导出
阅读全文
摘要:引言 我有个非常犀利的朋友,在得知我要去做可视化的页面搭建工具时问了我一个问题: “你自己会用这样的工具吗?” 同时带着意味深长的笑。 然而这个问题并没有如他所愿改变我的想法。早在 jquery ui、bootstrap 盛行的时代,就有过无数这样的工具,我没有用过,也不会去用。原因有一万个: 业务
阅读全文
摘要:背景在过去对框架的设计中,我收到过的最有用的建议是:“不要一开始就根据现有的技术去整合和改进。而是先搞清楚你觉得最理想的框架应该是怎样的,再根据现在的技术去评估,的确实现不了时再妥协。这样才能做出真正有意义的框架。”在这篇文章里,就让我们按照这样一条建议来探索一下现在的 web 框架最终可以进化成的...
阅读全文
摘要:这篇文章将从 AngularJS ReactJS Polymer 这几个流行的框架入手,分析前端框架在这几年发展中的关键技术点,作为2015前端技术选型的参考。摘要:初体验技术特点组件化应用架构总结1. 初体验拿TODO来作为引子好了. Angular 的实现React的实现(非flux架构)...
阅读全文
摘要:目前完成4篇源码分析文章:MVVM大比拼之knockout.js源码精析MVVM大比拼之avalon.js源码精析MVVM大比拼之vue.js源码精析MVVM大比拼之AngularJS源码精析分析所关注的点集中在 :双工绑定的实现机制、视图编译等几个关键点。建议读者从knockout开始按顺序阅读。...
阅读全文
摘要:MVVM大比拼之AngularJS源码精析简介AngularJS的学习资源已经非常非常多了,AngularJS基础请直接看官网文档。这里推荐几个深度学习的资料:AngularJS学习笔记 作者:邹业盛 。这个笔记非常细致,记录了作者对于AngularJS各个方面的思考,其中也不乏源码级的分析。构建自...
阅读全文
摘要:VUE 源码分析简介Vue是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google。vue 如作者自己所说,在api设计上受到了很多来自knockout、angularjs等大牌框架影响,但作者相信 vue 在性能、易用性方面是有优势。同时也自己做了和其它框架的性能对比,在这...
阅读全文
摘要:简介本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档。knockout.js(以下简称ko)是最早将 MVVM 引入到前端的重要功臣之一。目前版本已更新到 3 。相比同类主要有特点有:双工绑定基于 observe 模式,性能高。插件和扩展机制非常完善,无论在数据层还是展现层都能满足各种...
阅读全文
摘要:这个最佳实践是我目前人在做的一个站点,主要功能:oauth登录发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”。支持自定义排版、插图、建立相册。多个片段可以组织在一起,形成"事件"。任意事件、片段都可以互相标记因果关系。可以follow事件或者他人。事件和片段模糊搜索。我对目前前端框架的观点已在另一篇文章中讲过,这里只介绍一下目前实践的情况。使用requirejs做模块化,上线时用r.js打包。使用avalon做数据与视图渲染框架。用page.js来管理路由。用harp来做静态资源服务器。harp支持less、coff
阅读全文
摘要:打给比方,如果说angularJS是剑,那么avalon就是匕首。匕首比剑更易学,更快,更适合快速作战...我们还是直接来实际的吧:目前项目开发中有以下几个通用需求:有前端路由系统,用来划分逻辑模块。有异步模块载入,如requireJS或者seaJS。数据与视图自动绑定,并且性能出众。框架学习曲线不要太陡,并且让我的代码越少越好。路由AngularJS不能无缝与第三方路由整合,只能用它自己的模块,如”ui-status“。原因是AngularJS的数据模型是包裹在它的“controller”作用域里面的。当然你可以把这些数据模型抛到全局作用域里,但即便如此,你对这些数据模型操作以后还是要手动调
阅读全文
摘要:有复杂的地方我再开贴记录,这里只记录容易解决的坑。1. windows下手工增加smart package。直接将下载下来的包扔到meteor package中。记得将文件夹名字改得和smart.js文件中一样。2. meteor不能实现在document中存“DBref”。所以有时候要用类“多表连接”的实现。github上有现成的smart package。https://github.com/erundook/meteor-publish-with-relations3. 使用nodejs的收信和解析包时,node-mail和mailparser优点坑,看这里http://www.cnbl
阅读全文
摘要:版本信息:Meteor:windows MIS安装 0.6.4node-imap:npm指定的0.8.0版,不是默认的0.7.x版。mailparser:npm安装0.3.6以下是记录踩到的坑:1. 使用meteor的email来发送邮件时,设置process.env.MAIL_URL要注意,如果你的gmail账号是自己设置了domain的,如“xxx@unitedstack.com”。那么process.env.MAIL_URL的写法应该是:“smtp://xxx%40unitedstack.com:YOUR_PASSWORD@smtp.googlemail.com:465”。一定注意第一个
阅读全文
摘要:标题党了。其实这篇文章是为了记录一个我对AngularJS compile过程的一个问题。基础:directive有个重要特性是transclude。这个特性主要用途是:当页面的dom元素要进行复杂变化时,将原本的dom暴露给用户以供变形时或变形后使用。例如我有个选项卡directive,写法是:<div tabs> <div tab title="title1">content1</div> <div tab title="title2">content2</div></div>这
阅读全文
摘要:我在数据层的抽象上走了一段比较长的弯路。简单总结一下:刚开始做简单的项目时,用简单的ActiveRecord就已经很合适了,比如CodeIgniter自带的。但是项目变大之后,特别是业务实体之间的关联变多之后马上就出现了问题,为了降低各个实体间的耦合,你需要将各种操作再抽象出一层。举个例子:你做了一个简单的用户系统,对用户的增删改查只需要对“用户类”调用相应的操作就行了。后来你增加了一个文件类,每个用户可以拥有多个文件,删除用户时需要同时删除相应的文件。为了能使删除的用户的这个操作复用,同时防止其他操作删除用户时没有删除相应文件夹,于是你不得不再对用户的删除做一层封装。我曾经试图让各种实体在构
阅读全文
摘要:在学习Django模板之前我以为也和很多php模板引擎一样,是通过缓存文件输出,执行模板中的python代码来实现的。读完发现居然和前端模板相似,用了正则。为了更好的体会设计的哲学,我同时参考了tornato、drupal、codeigniter、aceTemplate、underscore中的模板设计。Django模板特点1.不支持python代码,使用自己的标签关键字。 Django的模板设计时有个重要的假设是:“写模板的不懂python”。因此你只要搞告诉他基本的逻辑结构(判断、循环、输出变量等)的写法就行了。同时也避免了程序员将业务逻辑写道模板里。解析模板的时候和前端模板非常类似,也.
阅读全文
摘要:这篇是总目录。记录下学习python的过程是为了强制自己执行新的学习方法,以及验证自己对于“学习”本身的新领悟。真正强大的人在于成长有个加速度。这个加速度体现在对自己思维方式的改造上,远不只是经验积累。这个改造的方式来自于日常学习中。普通人学习的误区在与于只是收获解决某类问题的经验,即使你学的是一种思路。对真正的学习来说,这只是第一步,我称之为通览。第二步是研究所学的东西的形成过程和发展趋势,对于其中疑惑的地方单独拿出来再学习,这一步才是学习的本质。第三步是在所学的东西上发挥灵感,再创造。这个想法得益于之前看到的一篇文章《如何在一年内修完斯坦福四年的课程》。就是我学习的详细记录:计划1 学习p
阅读全文
摘要:climbPHP是一个基于CodeIginter的框架,下面记录的是我开发的整个思路。【初衷】我终于决定好好写一篇东西来总结一下climbPHP,之前总是觉得没开发完,还不是时候。现在觉得可能永远都是处于没开发完的阶段。最早写climbPHP时的动因很简单,就是想把前端常用的事件类和模块间通过事件类来通信这种模式模式移植到后端来。说白了就是一个全局的观察者模式。写着写着我发现自己的思路得到了新的启发,主要有两点:第一,将系统的任何操作都看作是对外界刺激的反射的话(看《失控》学到的东西),使用事件的方式比起抵用接口来说更容易理解,也更容易表述业务逻辑。第二,引导模块使用事件来通信能它们能更加松耦
阅读全文
1