chunefe蓝筹股是什么意思思,多谢多谢

我要多谢!!!! liuyj88@_回龙观社区网
《购房专栏》显示文章详细内容:
我要多谢!!!!
&&此文章已经被查看971次 &&
&相关文章:
-&(阅读:704次&跟贴:0
-&(阅读:1122次& 10:23)
-&(阅读:640次& 10:23)
-&(66字节&阅读:362次& 10:23)
-&(阅读:266次& 10:24)
-&(66字节&阅读:364次& 20:53)
-&(阅读:601次& 10:24)
-&(阅读:758次& 14:26)
-&(阅读:440次& 10:24)
-&(14字节&阅读:285次& 10:24)
-&(阅读:347次& 10:24)
-&(60字节&阅读:413次& 10:25)
-&(阅读:257次& 11:41)
-&(阅读:246次& 10:26)
-&(阅读:202次& 10:28)
-&(78字节&阅读:261次& 10:34)
-&(阅读:360次& 11:00)
-&(阅读:288次& 10:43)
-&(阅读:258次& 10:27)
-&(阅读:284次& 10:28)
-&(阅读:272次& 10:29)
-&(阅读:290次& 10:30)
-&(阅读:274次& 10:30)
-&(25字节&阅读:275次& 10:30)
-&(阅读:2473次& 10:31)
-&(阅读:285次& 10:32)
-&(阅读:387次& 10:32)
-&(阅读:304次& 10:34)
-&(阅读:450次& 10:35)
-&(阅读:2591次& 10:37)
-&(阅读:453次& 10:38)
-&(阅读:310次& 10:43)
-&(阅读:402次& 10:44)
-&(阅读:238次& 10:44)
-&(阅读:1712次& 10:45)
-&(阅读:258次& 10:46)
-&(阅读:342次& 10:47)
-&(阅读:313次& 11:04)
-&(阅读:396次& 11:20)
-&(阅读:540次& 10:59)
-&(阅读:284次& 10:59)
-&(阅读:236次& 11:00)
-&(阅读:293次& 11:00)
-&(阅读:232次& 11:02)
-&(阅读:285次& 11:02)
-&(阅读:1117次& 11:02)
-&(阅读:309次& 11:04)
-&(阅读:462次& 11:07)
-&(阅读:348次& 11:16)
-&(阅读:362次& 11:17)
-&(阅读:1185次& 11:23)
-&(阅读:270次& 11:26)
-&(阅读:297次& 11:27)
-&(阅读:287次& 11:28)
-&(阅读:323次& 11:31)
-&(阅读:300次& 11:32)
-&(阅读:291次& 11:32)
-&(阅读:223次& 11:36)
-&(阅读:354次& 11:37)
-&(阅读:284次& 11:39)
-&(阅读:2645次& 11:41)
-&(阅读:374次& 11:44)
-&(阅读:254次& 11:44)
-&(阅读:362次& 11:45)
-&(阅读:286次& 11:47)
-&(阅读:439次& 11:47)
-&(阅读:404次& 11:47)
-&(阅读:270次& 11:49)
-&(阅读:294次& 11:49)
-&(阅读:323次& 11:51)
-&(阅读:267次& 11:51)
-&(阅读:397次& 11:53)
-&(阅读:443次& 11:59)
-&(阅读:243次& 12:20)
-&(阅读:278次&跟贴:1& 23:06)
-&(阅读:247次& 23:33)
-&(阅读:381次& 11:52)
-&(阅读:222次& 11:54)
-&(阅读:354次& 11:54)
-&(阅读:275次& 11:55)
-&(阅读:971次& 11:57)
-&(阅读:292次& 12:01)
-&(阅读:280次& 12:06)
-&(阅读:1069次& 12:10)
-&(阅读:255次& 12:13)
-&(阅读:584次& 12:13)
-&(阅读:807次& 12:18)
-&(阅读:280次& 12:22)
-&(阅读:325次& 12:35)
-&(阅读:732次& 12:48)
-&(阅读:453次& 13:11)
-&(阅读:362次& 13:14)
-&(阅读:252次& 13:16)
-&(阅读:298次& 13:27)
-&(阅读:307次& 13:45)
-&(阅读:258次& 13:48)
-&(阅读:301次& 13:50)
-&(阅读:359次& 13:52)
-&(阅读:403次& 13:55)
-&(阅读:284次& 13:59)
-&(阅读:454次& 14:00)
-&(阅读:175次& 14:02)
-&(66字节&阅读:295次& 14:04)
-&(阅读:374次& 14:04)
-&(阅读:283次& 14:07)
-&(阅读:354次& 14:09)
-&(阅读:291次& 14:18)
-&(阅读:301次& 14:16)
-&(阅读:513次& 14:17)
-&(阅读:294次& 14:30)
-&(阅读:248次& 14:31)
-&(阅读:293次& 14:34)
-&(63字节&阅读:263次& 14:36)
-&(阅读:389次& 14:37)
-&(阅读:789次& 14:48)
-&(阅读:445次& 14:49)
-&(阅读:338次& 15:14)
-&(阅读:234次& 15:15)
-&(阅读:448次& 15:36)
-&(阅读:299次& 15:52)
-&(阅读:343次& 16:22)
-&(阅读:429次& 16:23)
-&(阅读:608次& 16:29)
-&(阅读:773次& 16:51)
-&(阅读:283次& 16:56)
-&(阅读:268次& 16:56)
-&(阅读:312次& 17:15)
-&(阅读:227次& 17:53)
-&(阅读:694次& 17:55)
-&(阅读:577次& 18:06)
-&(阅读:964次& 18:17)
-&(24字节&阅读:333次& 18:19)
-&(阅读:207次& 19:17)
-&(阅读:330次& 19:53)
-&(阅读:308次& 20:48)
-&(阅读:378次& 21:03)
-&(阅读:211次& 21:06)
-&(100字节&阅读:237次& 21:07)
-&(阅读:414次& 21:31)
-&(阅读:232次&跟贴:2& 21:33)
-&(阅读:241次& 21:40)
-&(阅读:327次&跟贴:1& 21:42)
-&(阅读:270次&跟贴:1& 21:45)
-&(阅读:573次&跟贴:1& 21:53)
-&(阅读:399次& 22:58)
-&(阅读:394次& 21:53)
-&(阅读:362次& 22:22)
-&(阅读:234次&跟贴:1& 08:22)
-&(阅读:347次& 08:22)
您必须登录论坛才可以发表文章:
记住密码:
京ICP证040069号 昌公网安备号 法律顾问:来自子话题:
泻药。&br&&br&其实我们的前端架构还远未成熟,可以说正在传统前端架构到现代前端架构的转变中,这个转变以引入构建系统为标志(虽然之前mobile版已经引入了stylus),从去年(2014)年初开始,预计可能持续2到3年时间达到一个我心目中理想的较稳定架构。&br&&br&之所以预期如此长的时间,是因为总体上,对于前端构建、模块化、组件方案等非常基础和牵一发动全身的设施,我采取宁缺毋滥,看不清楚就先不上的保守策略——是不是看上去似乎和我在社区老是讲新技术的形象不太相符?^_^&br&&br&这种策略有三个原因。&br&&br&第一是百姓网的性质是以信息流为主、面向所有网民的、平台级的互联网服务。凡此种性质的网站,技术选型的策略总是偏向保守的。相对来说,以体验为主、面向相对小众群体、限定于特定领域的应用,可以更快的采用新技术。像我们的内部系统就会更多采用新技术。&br&&br&第二,也是更本质的原因是,架构不是光决定用个什么系统就行的,而是牵涉方法论、工具、流程乃至组织结构等诸多层面,是需要整个团队共同理解、实施、维护和不断改进的。团队前进,架构前进。这需要耐心。&br&&br&第三,百姓网的前端团队在建立之后很长时间里包括我只有3个人,主要精力都在业务上。(当然我们许多后端工程师甚至PM都附带前端开发技能——别以为我在讲段子以下绝壁是真的之我们的CEO三年前就自己玩&a class=& wrap external& href=&/& target=&_blank& rel=&nofollow noreferrer&&Meteor&i class=&icon-external&&&/i&&/a&并去硅谷见投资人时顺便去参加nodejs的workshop还带着财务总监&我们财务总监当场只完成了helloworld表示不服回来后买了犀牛书问我学JS是不是看这本就好之看你们以后谁敢在我面前自称技术型公司。)期间虽然有尝试改变主站的一些开发方式,但是因为各种原因而无疾而终。去年我们的前端工程师终于超过了10个人,不过和快速增长的业务相比还是远远不够。因此虽然从去年第二季度开始成立了前端架构组,但我并不急于引入各种新设施,
因为我认为对于我们这样规模的团队,资源的冗余度是很低的,走弯路的代价比较高。我要确保每项引入的设施都是正确的。(BAT这样规模的公司就好一些,可以有多个团队同时实施几种不同架构方案。我就指着他们帮我们这些中小型公司探路了,所以我见到他们的人就鼓吹他们快上新技术,呵呵。)&br&&br&无论如何,今年会有几项重要的前端架构的实施,比如我预期今年要上ES6!大家可以注意到我去年12月的C4(&a class=& external& href=&//BBKpY8uq3& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&//BB&/span&&span class=&invisible&&KpY8uq3&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)和今年1月的FEDAY上讲的内容(&a href=&/hax/es6-in-action& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hax/es6-in-action · GitHub&i class=&icon-external&&&/i&&/a&)就是ES6。这回是要玩真的哦。总之,希望能稳健的前进,到明年这个时候再来看吧。&br&&br&&br&针对具体问题回答如下:&br&&br&Q: 百姓网是否使用了 sass / stylus / less 这类预处理工具 ?&br&A: 百姓网mobile版用了stylus。最新一版重构是基于 &a data-title=&@CSS魔法& data-editable=&true& class=&member_mention& href=&///people/fd3fdaf3cd2& data-hash=&fd3fdaf3cd2& data-tip=&p$b$fd3fdaf3cd2&&@CSS魔法 &/a&开发和维护的&a href=&/CMUI/CMUI& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CMUI/CMUI · GitHub&i class=&icon-external&&&/i&&/a&。桌面版因为开发历史比较悠久,一直没有引入预处理工具,短期也不会改。但长期来说最终应该会引入的。&br&&br&Q: 百姓网 js 模块化开发是如何组织的,是否使用了什么模块化工具、框架?&br&A: 与大家预期可能不一样,这块我们仍然停留在刀耕火种阶段。百姓网历史上,页面中脚本一直用得不多,虽然很早以前 &a class=&member_mention& href=&///people/d1f62e3ceb9aad870f18a& data-hash=&d1f62e3ceb9aad870f18a& data-tip=&p$b$d1f62e3ceb9aad870f18a&&@sofish&/a& 就考虑过引入如seajs的可能性,但是实践上,粗放的脚本合并和一个简陋的按需加载(&a class=& external& href=&http://s.baixing.net/js/global/defer.js& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&s.baixing.net/js/global&/span&&span class=&invisible&&/defer.js&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&)也就够用了。不过随着开发规模的增长,当然早晚是要走向更成熟的模块化方案。所以去年年初就开始评估和试验各种方案,比如新开发的某些独立性较高的功能组件是基于commonjs+browserify的。总体上,因为我预期所有模块化方案最终要统一到ES6的module/loader上去,所以基本上想直接上基于遵循ES6语义和API的loader的方案。但是ES6的module部分定案和实现比预期的慢,loader规范也被postpone到独立spec中。估计今年第二季度之后会引入模块化方案。需要注意的是,模块化主要是为提升代码的可维护性,侧重开发阶段。而侧重部署的模块加载或一般化的资源加载相关领域其实还有大量的可能性要探索,仅制定中的标准草案就有HTML Imports、ServiceWorker、&a class=& wrap external& href=&http://w3ctag.github.io/packaging-on-the-web/& target=&_blank& rel=&nofollow noreferrer&&Packaging on the Web&i class=&icon-external&&&/i&&/a&、HTTP2等,我们需要在架构上厘清这些不同的组件是如何协作并构成整个体系的,这对于未来Web网站和应用的整体性能提升会有极大价值,也是个长期任务。&br&&br&Q: 具有完整的 html css js 代码片段的 component,是如何 include 到各个页面里的,include 时对 html css js 分别进行了哪些处理?如果这其中的 js 又依赖于某更基础的 js 模块,这个依赖是如何处理的?&br&A:
和上一个问题类似,由于历史上百姓网的结构比较简单,所以一直没有引入任何一种确定的组件方案。除了需求不是特别大之外,相比模块系统已经明确会统一到ES6,组件系统目前仍是完全不明朗的情况。从维护角度说,模块系统其实转换成本并不太高,组件系统就复杂多了,要从某种
组件系统切换到另一个组件系统听上去就很恐怖。此外,目前业界流行的MV*组件框架绝大多数是纯浏览器端方案,在百姓网主站这样以信息流为主、SEO必需、有较高浏览器兼容性要求的网站来说,无法直接使用。目前业界缺乏能很好的统一浏览器端和服务器端的方案,这是类似百姓网这样的中大型互联网网站少有直接引入类似MV*组件框架的原因。尽管目前没有确定的计划,但在内部系统和不涉及主站的新项目中会鼓励团队成员尝试新技术和方案,目前有少数内部项目已经尝试了Angular。大型Web应用中,组件化的需求是不可避免的(如 &a class=& wrap external& href=&/baixing/jedi/issues/38& target=&_blank& rel=&nofollow noreferrer&&block 和 include 协作问题 · Issue #38 · baixing/jedi · GitHub&i class=&icon-external&&&/i&&/a&),只是最终的答案可能要再过一段时间才会浮现出来。&br&&br&Q: 开发环境的代码在发布上线过程中做了哪些处理?&br&A:
我们有一套PHP写的deploy系统,前端资源的编译、压缩、版本化、替换路径等步骤都是该系统执行的。从去年年初开始我们引入了gulp来进行mobile版的前端构建,会逐步将前述步骤移回到gulp工具链中,并增加更多的处理,比如图片优化和模块打包。desktop版今年应该也会引入。&br&&br&Q: nodejs 在百姓网技术栈中承担了哪些任务?&br&A:
前端构建阶段的整条工具链是完全基于nodejs平台,这个自不用说。在线上服务中,部分日志系统是基于nodejs,并且计划会进一步将更多涉及前端的日志系统迁移至nodejs。另外我们使用的第三方服务如LeanCloud的消息服务估计是基于nodejs平台的(虽然与我们无关,但是因为这个服务我们是首先吃螃蟹的用户,它本还没有js sdk,我只好亲自搞了一个&a href=&/hax/avos-chat& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&hax/avos-chat · GitHub&i class=&icon-external&&&/i&&/a&,所以顺便说说)。我们的后端是基于PHP的,但我们并不排斥其他平台,如我们的新业务线也有采用基于python的系统。内部系统也有许多基于nodejs平台,并可能采用新的app框架如Koa。主站系统部分(特别是表现层)迁移到nodejs平台从架构层面来说也一直是可选项。目前的障碍更多的是在较缺乏有nodejs运维经验的工程师,有兴趣的同学欢迎投递简历。&br&&br&以上。
泻药。其实我们的前端架构还远未成熟,可以说正在传统前端架构到现代前端架构的转变中,这个转变以引入构建系统为标志(虽然之前mobile版已经引入了stylus),从去年(2014)年初开始,预计可能持续2到3年时间达到一个我心目中理想的较稳定架构。之所以预期…
来自子话题:
sublime text,有在使用的朋友赞同我一下
sublime text,有在使用的朋友赞同我一下
来自子话题:
python强调程序员的生产力,让你把精力集中在逻辑上而不是语言本身上。&br&你能想象用一下午时间实现从0开始一个简单的搜索引擎吗?C++显然是不行的。。你的大部分时间都将花在实现基本数据结构和调试语言错误上。。而用python,你要做的就是真正理解搜索算法,之后的实现真的很简单。。&br&&br&我觉得用python很适合算法研究,不仅仅是数据挖掘。快速开发能让你迅速验证你的想法,而不是把时间浪费在程序本身上(想象一下你写了一星期的c++,调了一大堆指针错误,最后发现想法本身就有错误。。)当你知道你已经有了一个正确的算法,要使他运行速度提高只需用c++等重写性能瓶颈并嵌入就行了。。
python强调程序员的生产力,让你把精力集中在逻辑上而不是语言本身上。你能想象用一下午时间实现从0开始一个简单的搜索引擎吗?C++显然是不行的。。你的大部分时间都将花在实现基本数据结构和调试语言错误上。。而用python,你要做的就是真正理解搜索算法,…
来自子话题:
&img src=&///0af096f07b5d5bb18a0bb4bdbf9ac5a6_b.jpg& data-rawwidth=&1396& data-rawheight=&3268& class=&origin_image zh-lightbox-thumb& width=&1396& data-original=&///0af096f07b5d5bb18a0bb4bdbf9ac5a6_r.jpg&&&br&&br&&br&基础的都了解全面了,了解透彻了,再加上经验就是市高手了。
基础的都了解全面了,了解透彻了,再加上经验就是市高手了。
来自子话题:
从我收到的反馈来看,有 10+ 通过这条路子找到了工作(当然不是说只有这几个人,还有很多人不爱联系我,人之常情),当然这也是意料之中的事情,我没有必要在这种事情上信口开河,当时给出那样的意见也绝非随口说说,我可是很认真的。&br&&br&只是我没想到的是他们动作都挺快的,很多人一个月就搞出来换工作了。。。&br&&br&由于不少人是从嵌入式跳坑出来的,我感觉我挽救了很多生命,应该可以攒下不少积分,以后上天的时候兑个 VIP 座应该不成问题
从我收到的反馈来看,有 10+ 通过这条路子找到了工作(当然不是说只有这几个人,还有很多人不爱联系我,人之常情),当然这也是意料之中的事情,我没有必要在这种事情上信口开河,当时给出那样的意见也绝非随口说说,我可是很认真的。只是我没想到的是他们…
来自子话题:
php说.net老掉牙????&br&羊年第一个把我逗笑的笑话。
php说.net老掉牙????羊年第一个把我逗笑的笑话。
来自子话题:
我只是搬运&a href=&& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&上的答案,原作者是&a class=& wrap external& href=&/users/11224/silvia& target=&_blank& rel=&nofollow noreferrer&&Silvia&i class=&icon-external&&&/i&&/a& (&a data-title=&@Silvia& data-editable=&true& class=&member_mention& href=&///people/5f362644bdc91edf37ac64e90e315b4e& data-hash=&5f362644bdc91edf37ac64e90e315b4e& data-tip=&p$b$5f362644bdc91edf37ac64e90e315b4e&&@Silvia&/a& ),用的是Mathematica。&br&&div class=&highlight&&&pre&&code class=&language-text&&PD = .5;
s[t_, f_] := t^.6 - f
dt[cl_, ps_, sg_, hf_, dp_, f_, flag_] :=
Module[{sv, basePt},
{PointSize[ps],
sv = s[t, f];
Hue[cl (1 + Sin[.02 t])/2, 1, .3 + sg .3 Sin[hf sv]],
basePt = {-sg s[t, f] Sin[sv], -sg s[t, f] Cos[sv], dp + sv};
Point[basePt],
{Hue[cl (1 + Sin[.1 t])/2, 1, .6 + sg .4 Sin[hf sv]], PointSize[RandomReal[.01]],
Point[basePt + 1/2 RotationTransform[20 sv, {-Cos[sv], Sin[sv], 0}][{Sin[sv], Cos[sv], 0}]]},
frames = ParallelTable[
Graphics3D[Table[{
dt[1, .01, -1, 1, 0, f, True], dt[.45, .01, 1, 1, 0, f, True],
dt[1, .005, -1, 4, .2, f, False], dt[.45, .005, 1, 4, .2, f, False]},
{t, 0, 200, PD}],
ViewPoint -& Left, BoxRatios -& {1, 1, 1.3},
ViewVertical -& {0, 0, -1},
ViewCenter -& {{0.5, 0.5, 0.5}, {0.5, 0.55}}, Boxed -& False,
PlotRange -& {{-20, 20}, {-20, 20}, {0, 20}}, Background -& Black],
{f, 0, 1, .01}];
Export[&tree.gif&, frames]
&/code&&/pre&&/div&&br&&img data-rawheight=&432& data-rawwidth=&332& src=&///df201a62e9a_b.jpg& class=&content_image& width=&332&&(原图是动图,传上知乎后不能动了)&br&&br&原出处:&a href=&/questions/15860/make-a-scalable-christmas-tree/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&popularity contest&i class=&icon-external&&&/i&&/a&
我只是搬运上的答案,原作者是 ( ),用的是Mathematica。PD = .5;
s[t_, f_] := t^.6 - f
dt[cl_, ps_, sg_, hf_, dp_, f_, flag_] :=
Module[{sv, basePt},
{PointSize[ps],
sv = s[t, f];
Hue[cl (1 + Sin[.02 t])…
来自子话题:
Meteor的官网( &a href=&/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Meteor&i class=&icon-external&&&/i&&/a& )这样介绍这个框架:&br&&blockquote&Meteor is an open-source platform for building top-quality web apps in a fraction of the time, whether you're an expert developer or just getting started.&/blockquote&&strong&top-quality web apps&/strong& 我们放下不表,&strong&fraction of the time&/strong& 的提法很新颖,看来这个框架的目标是解放程序猿,少花时间多办事。虽然具体的演化路径我不得而知,但从网络上的各种蛛丝马迹来看,Meteor吸收了google wave, asana等平台背后的开发工具的精髓,逐渐演进出了目前的版本。Meteor的幕后团队相当强悍:他们大多毕业于MIT,是成功的创业家,也是一流的工程师,其中一个开发者还是神器 &a href=&http://etherpad.net/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&etherpad&i class=&icon-external&&&/i&&/a& 的作者。&br&&br&METEOR究竟有什么NB的地方?&br&&br&首先,Meteor构架与nodejs之上。这使得 &strong&One Language&/strong& 成为可能,同时可依托nodejs上诸如&a href=&http://soket.io& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&http://socket.io&i class=&icon-external&&&/i&&/a&这样强大的类库内置 &strong&realtime&/strong&,&strong&Date on the Wire&/strong& 等特性。&br&&br&在一种语言的基础上,Meteor统一了服务器端和客户端的数据访问,提出 &strong&Database Everywhere&/strong&,一套DB API大大减轻了开发负担,不用再做server data JSON client data的转换(想想你的django 或者rails app,在这上面花了多少功夫?)。&br&&br&为了让app达到最佳的用户体验,Meteor还提供了 &strong&Latency Compensation&/strong&,客户端对数据的更新即时反应到UI,如果更新被服务器reject,再rollback。大多数情况下,用户会得到极佳的类似本地数据库的体验。&br&&br&Meteor最让人叫绝的是其 &strong&Full Stack Reactivity&/strong&。关于reactivity programming的详细介绍,请参考&a href=&http://en.wikipedia.org/wiki/Reactive_programming& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Reactivity Programming&i class=&icon-external&&&/i&&/a&,这里不展开。简言之,当数据发生改变的时候,所有依赖该数据的地方自动发生相应的改变。&br&&br&用过backbone的同学都知道,当model发生改变的时候,我们需要通过注册相应的事件,显式更新对应的DOM,如果数据在页面中多处被渲染,则每处对应的DOM需挨个更新。&br&&br&ember在backbone的思想上更近了一大步,通过内置的data binding API,让数据和DOM能够双向绑定,程序猿不用再花心思去考虑DOM的更新。然而,蹩脚的API调用(所有对binding的数据的访问需要通过getter和setter,你懂的)和DOM中无处不在的script垃圾让ember既不简约也不优雅。&br&而Meteor则另辟蹊跷,通过reactivity context和dependency巧妙地支持了reactivity(据作者说核心代码就几十行),使用者几乎感受不到代码的变化。&br&&br&Meteor另一个很贴心的点是零部署。开发web app有点小头疼的点是打包和部署。比如说,把less转成css,coffee转成javascript,然后混淆,压缩,虽然有些自动化的工具可以简化这部分工作,可还免不了相应的配置和一些脚本工作。在开发环境下,meteor会自动替你加载js/css,如果你使用了coffee/less (sass),只要add了相应的smart package,meteor会自动帮你处理;开发完毕后要部署,只需要运行meteor bundle,系统自动会将相关的资源打包,只要目标系统上有相应版本的nodejs,meteor和mongodb,就能运行一个标准的production版本。&br&&br&以下是meteor官网上的介绍,当你真正使用meteor后,会发现还真不是吹牛。&blockquote&SEVEN PRINCIPLES OF METEOR&ol&&li&&br&Data on the Wire. Don't send HTML over the network. Send data and let the client decide how to render it.&br&&/li&&li&&br&One Language. Write both the client and the server parts of your interface in JavaScript.&br&&/li&&li&&br&Database Everywhere. Use the same transparent API to access your database from the client or the server.&br&&/li&&li&&br&Latency Compensation. On the client, use prefetching and model simulation to make it look like you have a zero-latency connection to the database.&br&&/li&&li&&br&Full Stack Reactivity. Make realtime the default. All layers, from database to template, should make an event-driven interface available.&br&&/li&&li&&br&Embrace the Ecosystem. Meteor is open source and integrates, rather than replaces, existing open source tools and frameworks. Simplicity Equals Productivity. The best way to make something seem simple is to have it actually be simple. Accomplish this through clean, classically beautiful APIs.&br&&/li&&/ol&&/blockquote&&br&以上内容摘自我的博客文章:&a href=&http://tchen.me/posts/-why-meteor.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&为什么是Meteor&i class=&icon-external&&&/i&&/a&&br&&br&[补充] 下一代的web app是什么?&br&我们看看几代计算机体系的发展。web/cloud时代是不是重复者mainframe/CS时代走过的路?那么,我们是不是有理由相信,meteor在此做的尝试是一个正确的方向?&img src=&///e87aefeb15c6a6fc_b.jpg& data-rawwidth=&1816& data-rawheight=&1330& class=&origin_image zh-lightbox-thumb& width=&1816& data-original=&///e87aefeb15c6a6fc_r.jpg&&
Meteor的官网(
)这样介绍这个框架:Meteor is an open-source platform for building top-quality web apps in a fraction of the time, whether you're an expert developer or just getting started.top-quality web apps 我们放下不表,fraction …
来自子话题:
&b&Disclaimer: 以下对比可能有强烈的个人色彩&/b&&br&&br&Node.js & Python 的地方&br&&ol&&li&快:这个快有两方面,第一是V8引擎快,在V8引擎背后操刀的是&b&Lars Bak&/b&大神,他创造过高性能SmallTalk引擎和Java Hotspot引擎(现在Java的默认VM),他带领下的V8引擎让Javascript速度达到了一个新的阶段。第二是异步执行,Node.js功能上是一个基于V8引擎的异步网络和IO Library,和Python的Twisted很像,不同的是Node.js的event loop是很底层的深入在语言中的,可以想象成整个文件在执行的时候就在一个很大的event loop里。&/li&&li&npm:npm可以说是用起来最顺手的package management了,npm作为Node.js的官方package management,汇集了整个社区最集中的资源。不像Python经历过easy_install和pip,还有2to3的问题。&/li&&li&Windows支持:Node.js有微软的加持,Windows基本被视为一等公民来支持,libuv已经可以很好的做到统一跨平台的API;而Python虽然也对Windows有官方的支持,但是总感觉是二等公民,时不时出些问题。&/li&&/ol&Python & Node.js 的地方&br&&ol&&li&语言:就单纯从语言的角度来说,Python写起来要比Javascript舒服很多。Javascript设计本身有许多缺陷,毕竟当时设计的时候只是作为在浏览器中做一些简单任务的script,所以代码一旦庞大,维护还是有困难(不过Node.js的module很大的改善了这个问题)。不过用Coffeescript可以很大的改善Javascript,几乎可以和Python等同。&/li&&li&成熟:成熟包括语言本身已经成熟,还有Framework和ecosystem也很庞大。Node.js的绝大多数framework都很新,有的API一直在变,有的感觉已经不在维护,总之没有一个像Django那种百足之虫感觉的framework。Python的主流ORM SQLalchemy也很成熟。&/li&&/ol&Python 和 Node.js 很难分高下的地方&br&&ol&&li&异步Style:Node.js的异步Style是CPS,也就是层层callback,基于event,和浏览器中的Javascript很像。CPS好处是让熟悉浏览器Javascript的人能很快上手,学习难度也不大。缺点是逻辑一复杂,就变得很难维护,基本上需要通过async.js这种library,或者用promise。Python的异步除了和Node.js很像的Twisted之外,也有基于coroutine的gevent,coroutine让异步代码维护起来更容易,不过学习曲线陡。&/li&&li&应用场景:如果是一个CRUD的app,那么想都不想直接是Python,Node.js本身不擅长CRUD的app(绝大多数Node.js都是直接裸在外面的,而不是有一个Nginx在前面,否则websocket就不能用了,不过新版nginx开始支持websocket),代码又不好维护,而Python的WSGI很适合,成熟的stack也有很多。如果更偏向于real-time,比如一个chat room,那么Node.js实现更容易。这两个应用场景还是有差别的。&/li&&/ol&
Disclaimer: 以下对比可能有强烈的个人色彩Node.js & Python 的地方快:这个快有两方面,第一是V8引擎快,在V8引擎背后操刀的是Lars Bak大神,他创造过高性能SmallTalk引擎和Java Hotspot引擎(现在Java的默认VM),他带领下的V8引擎让Javascript速度达到了一…
来自子话题:
至少有两种大牛。&br&&br&一种是像李开复这种,疯狂燃烧生命,以睡觉少干活多为追求。当你在慢悠悠陪朋友吃饭时,他在吃泡面。当你在看「花千骨」时,他在写书。当你在百无聊赖不知干点什么好时,他在信心满满斗志昂扬…… 最后,当你还活着,他开始感慨为什么自己要濒临死亡。&br&&br&还有一种大牛,他们把工作当乐趣,而不是去应付。题主第一句话中的「应付工作」,就是题主与这些不应付工作大牛的最大区别。这类大牛,发现自己在应付工作时,会想为何自己还要待在这个公司?他们不会苦苦等待下班,而是会非常高效兴奋的把一天的工作迅速做完,然后就有时间写书、演讲、看书、出作品了。这些看似与工作无关的事情,在这些大牛心中,和工作也是息息相关的,否则就不会去做。君不见冯大辉的每一篇公众号文章里,都流露着对丁香园的爱吗?还有风趣雅致的卖桃君,你看的是他在写博客消遣时间,我看到的是池大哥在每个句点的追求里领悟锤子完美与工匠精神的精髓。&br&&br&世间有舍与得,真正舍去你不想的,就会有大把大把时间去做那些仅剩无存的几个想做的事情。若你依旧觉得时间不够,只在于你不愿舍弃太多。&br&&br&因此世间其实只有一种大牛。像李开复这类大牛,是舍弃了家庭与健康,也是一种个人选择,值得尊重但不值得追随。更多大牛不像李开复,这是他们身材好的原因。
至少有两种大牛。一种是像李开复这种,疯狂燃烧生命,以睡觉少干活多为追求。当你在慢悠悠陪朋友吃饭时,他在吃泡面。当你在看「花千骨」时,他在写书。当你在百无聊赖不知干点什么好时,他在信心满满斗志昂扬…… 最后,当你还活着,他开始感慨为什么自己…
来自子话题:
题主想的“逐行解释”与“整体解释”的差异的思路是对的,不过细节不太对。下面讲点细节。&br&跟Sublime、IDLE啥的没关系。&br&&br&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&err&&$&/span& &span class=&n&&python&/span&
&span class=&n&&Python&/span& &span class=&mf&&2.7&/span&&span class=&o&&.&/span&&span class=&mi&&5&/span& &span class=&p&&(&/span&&span class=&n&&default&/span&&span class=&p&&,&/span& &span class=&n&&Mar&/span&
&span class=&mi&&9&/span& &span class=&mi&&2014&/span&&span class=&p&&,&/span& &span class=&mi&&22&/span&&span class=&p&&:&/span&&span class=&mi&&15&/span&&span class=&p&&:&/span&&span class=&mo&&05&/span&&span class=&p&&)&/span&
&span class=&p&&[&/span&&span class=&n&&GCC&/span& &span class=&mf&&4.2&/span&&span class=&o&&.&/span&&span class=&mi&&1&/span& &span class=&n&&Compatible&/span& &span class=&n&&Apple&/span& &span class=&n&&LLVM&/span& &span class=&mf&&5.0&/span& &span class=&p&&(&/span&&span class=&n&&clang&/span&&span class=&o&&-&/span&&span class=&mf&&500.0&/span&&span class=&o&&.&/span&&span class=&mi&&68&/span&&span class=&p&&)]&/span& &span class=&n&&on&/span& &span class=&n&&darwin&/span&
&span class=&n&&Type&/span& &span class=&s&&&help&&/span&&span class=&p&&,&/span& &span class=&s&&&copyright&&/span&&span class=&p&&,&/span& &span class=&s&&&credits&&/span& &span class=&ow&&or&/span& &span class=&s&&&license&&/span& &span class=&k&&for&/span& &span class=&n&&more&/span& &span class=&n&&information&/span&&span class=&o&&.&/span&
&span class=&o&&&&&&/span& &span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mf&&10.1&/span&
&span class=&o&&&&&&/span& &span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&mf&&10.1&/span&
&span class=&o&&&&&&/span& &span class=&n&&a&/span& &span class=&ow&&is&/span& &span class=&n&&b&/span&
&span class=&bp&&False&/span&
&span class=&o&&&&&&/span& &span class=&nb&&id&/span&&span class=&p&&(&/span&&span class=&n&&a&/span&&span class=&p&&)&/span&
&span class=&mi&&760&/span&
&span class=&o&&&&&&/span& &span class=&nb&&id&/span&&span class=&p&&(&/span&&span class=&n&&b&/span&&span class=&p&&)&/span&
&span class=&mi&&736&/span&
&span class=&o&&&&&&/span& &span class=&p&&(&/span&&span class=&mf&&10.1&/span&&span class=&p&&)&/span& &span class=&ow&&is&/span& &span class=&p&&(&/span&&span class=&mf&&10.1&/span&&span class=&p&&)&/span&
&span class=&bp&&True&/span&
&span class=&o&&&&&&/span& &span class=&k&&def&/span& &span class=&nf&&foo&/span&&span class=&p&&():&/span&
&span class=&o&&...&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mf&&10.1&/span&
&span class=&o&&...&/span&
&span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&mf&&10.1&/span&
&span class=&o&&...&/span&
&span class=&k&&return&/span& &span class=&n&&a&/span& &span class=&ow&&is&/span& &span class=&n&&b&/span&
&span class=&o&&...&/span&
&span class=&o&&&&&&/span& &span class=&n&&foo&/span&&span class=&p&&()&/span&
&span class=&bp&&True&/span&
&/code&&/pre&&/div&&br&题主可以试试在所有题主用的CPython环境里执行下面的代码:&br&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&k&&def&/span& &span class=&nf&&foo&/span&&span class=&p&&():&/span&
&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mf&&10.1&/span&
&span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&mf&&10.1&/span&
&span class=&k&&return&/span& &span class=&n&&a&/span& &span class=&ow&&is&/span& &span class=&n&&b&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&foo&/span&&span class=&p&&())&/span&
&/code&&/pre&&/div&而结果总是True。&br&&br&然后再试试:&br&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&k&&def&/span& &span class=&nf&&bar&/span&&span class=&p&&():&/span&
&span class=&k&&return&/span& &span class=&mf&&10.1&/span&
&span class=&k&&def&/span& &span class=&nf&&quux&/span&&span class=&p&&():&/span&
&span class=&k&&return&/span& &span class=&mf&&10.1&/span&
&span class=&k&&print&/span&&span class=&p&&(&/span&&span class=&n&&bar&/span&&span class=&p&&()&/span& &span class=&ow&&is&/span& &span class=&n&&quux&/span&&span class=&p&&())&/span&
&/code&&/pre&&/div&而结果总是False。&br&&br&&- 看看是否如此?&br&&br&这是跟CPython的编译单元以及常量池处理有关的。&br&&br&================================================&br&&br&&b&背景知识&/b&&br&&br&CPython的代码的“编译单元”是函数——每个函数单独编译,得到的结果是一个PyFunctionObject对象,其中带有字节码、常量池等各种信息。Python的顶层代码也被看作一个函数。&br&函数之间有嵌套时,外层函数的代码并不包含内层函数的代码,而只是包含创建出内层函数的函数对象(PyFunctionObject)的逻辑。&br&&br&让我们看看上面的foo()函数的字节码(通过dis.dis(foo)获取):&br&&div class=&highlight&&&pre&&code class=&language-text&&&&& dis.dis(foo)
0 LOAD_CONST
3 STORE_FAST
6 LOAD_CONST
9 STORE_FAST
12 LOAD_FAST
15 LOAD_FAST
18 COMPARE_OP
21 RETURN_VALUE
&/code&&/pre&&/div&可见a和b的赋值都是由同一个常量池项获得的:LOAD_CONST 1&br&这条字节码指令的意思是:从当前PyFunctionObject的co_const字段所指向的常量池里,取出下标为1的项,压到操作数栈的栈顶。&br&&br&每个PyFunctionObject有一个独立的常量池;换句话说,每个PyFunctionObject的co_const字段都指向自己专有的一个常量池对象,而里面的常量池项也是自己专有的。&br&&br&在同一个编译单元(PyFunctionObject)里出现的值相同的常量,只会在常量池里出现一份,一定会对应到运行时的同一个对象。所以在foo()的例子里,a和b都从同一个常量池项获取值;&br&在不同的编译单元里,值相同的常量&b&不一定&/b&会对应到运行时的同一个对象,要看具体的类型是否自带了某种interning / caching机制(例如Python 2.x系的PyInt / Python 3.x系的PyLong的小整数缓存机制)。&br&&br&PyFloatObject没有“小数字缓存”机制,所以每次“创建”一个对象(例如PyFloat_FromString() / PyFloat_FromDouble())都一定会得到一个新的对象——id不同、is运算符比较为False。&br&&br&================================================&br&&br&&b&“逐行解释”?&/b&&br&&br&其实在CPython的交互式解释器(例如python命令不指定参数时)里,每输入一行可以立即执行的代码,Python就会把它当作一个编译单元来编译到字节码并解释执行;如果输入的代码尚未构成一个完整的单元,例如函数声明或者类声明,则等到获得了完整单元的输入后再当作一个编译单元来处理。&br&&br&所以当我们在CPython的交互式解释器中分别输入&a = 10.1&、&b = 10.1&这两行时,它们分别被当作一个编译单元处理,其中的常量池没有共享,常量池项也都是各自新创建的,所以会得到a is b为False的结果。&br&而在同一环境里输入&(10.1) is (10.1)&时,这一行被看作一个编译单元,其中两次对10.1这个常量的使用都变成了对同一对象的引用,因而is的结果为True。&br&&br&当使用python命令去整体解释一个Python源码文件时,其中位于顶层的&br&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&n&&a&/span& &span class=&o&&=&/span& &span class=&mf&&10.1&/span&
&span class=&n&&b&/span& &span class=&o&&=&/span& &span class=&mf&&10.1&/span&
&/code&&/pre&&/div&两行代码就会处于同一个编译单元中,因而共享常量池,因而a is b就会是True。&br&&br&就这样嗯。本来对这种应该是值语义的对象就不应该关注其identity,不然“乐趣多多”…
题主想的“逐行解释”与“整体解释”的差异的思路是对的,不过细节不太对。下面讲点细节。跟Sublime、IDLE啥的没关系。$ python
Python 2.7.5 (default, Mar 9 :05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
来自子话题:
&a data-hash=&e601b710948cfff36cf3fc35418fd79d& href=&///people/e601b710948cfff36cf3fc35418fd79d& class=&member_mention& data-editable=&true& data-title=&@董超& data-tip=&p$b$e601b710948cfff36cf3fc35418fd79d&&@董超&/a& 给出的链接只是很基础的javascript语法考察(当然题目的确出得很棒),刷完一本《javascript高级程序设计》的入门者都可以秒答。&br&仅仅从语法上来考察javascript水平是不合适的,因为javascript和其他语言不一样的最重要一点就是依赖于宿主,光会语法什么都写不出,所以必须考察一些其他的要点。&br&&br&以下是我为了准备14年9月面试阿里所做的笔记节选:(&b&仅仅是考察点&/b&,具体题目和扩展再设计,因为有时候我是想到了才记下来,所以这些问题会不断更新)&br&&b&基础&/b&&br&1,什么是命名空间,变量污染,变量声明提升,预编译?如何检查一段代码执行后是否声明了全局变量?&br&2,隐式转换的种种规则&br&3,关于对象,对象的属性可能有哪些特性(attribute)?什么是原型链?如何检测某一属性是在对象中还是原型链中?如何检测是否是普通对象或空对象?写一个工厂模式?(工厂模式也有很多细节,具体可以参考《javascript模式》一书,&b&不是&/b&《javascript设计模式》)&br&4,变量类型检测、特性检测以及异常避免&br&5,setTimeout的特性&br&6,数组几个API的手工实现&br&7,事件&br&8,正则表达式,至少要明白$1和\1的意思和几个API的用法。&br&9,javascript如何获得随机unicode字符?&br&10,JSON.parse的参数传一个什么对象的时候不能处理?(可以试试JSON.parse(window))&br&11,fn.apply的第一个参数是context(函数运行的上下文),那么这个参数传一个数组会怎么处理?&br&&b&DOM操作&/b&&br&1,实现一些API如getElementsByClass(有很多细节,参见司徒正美的博客)&br&2,各种宽度高度(clientHeight之类)的含义及各浏览器之间的差异性&br&3,实现一个带回调函数的插入DOM节点API(须考虑script标签、documentFragment)&br&&b&CSS操作&/b&&br&1,如何操作CSS的伪类和伪元素?&br&2,如何检测改浏览器是否支持某个CSS3的特性? &br&&b&ajax操作&/b&&br&1,get和post的区别及使用要点&br&2,http协议,包括格式、状态码,cookie操作&br&3,跨域&br&4,转换JSON的几种方式,JSON.stringfy有什么使用限制?&br&&br&&b&性能&/b&&br&1,javascript有哪些性能优化的措施?可看《高性能javascript》 &br&&br&&b&综合&/b&:各种插件的设计思路&br&&br&其他的html5相关和NodeJS相关暂略
给出的链接只是很基础的javascript语法考察(当然题目的确出得很棒),刷完一本《javascript高级程序设计》的入门者都可以秒答。仅仅从语法上来考察javascript水平是不合适的,因为javascript和其他语言不一样的最重要一点就是依赖于宿主,光会语法什…
来自子话题:
可以试一下我的avalon。文档齐全,示例上百,入手容易,体积少,已经有几个成功案例了&br&现在边锋,搜狐,百度无线,去哪边网,金山都在用了&br&&br&&ul&&li&&a href=&/a/item?docid=4474290&pre=web_am_se&f=web_alad@next&qq-pf-to=pcqq.group& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&移动应用:读酷&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/webstore/detail/prefix/gjpcbbbopajjjnkbkeaflldnocoppcpc& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&chrome插件:饭否客户端&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/login?redirectUrl=https%3A%2F%%2Fweb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&为知笔记&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/zhangchunlin/avalon-uliweb-examples& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&基于python的网面示例&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/loginview.aspx?ReturnUrl=/default.aspx& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&企业级应用:超博CRM客户关系管理系统&i class=&icon-external&&&/i&&/a&(帐号:&b&crm_ceo&/b& 密码:&b&nncb_ceo)&/b&&/li&&li&&a href=&/darkbluegood/domain& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&avalon+jQuery实现域名注册查询&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&/avalon/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&路由器示例&i class=&icon-external&&&/i&&/a&&/li&&/ul&=====================================&br&&ul&&li&使用简单,在HTML中添加绑定,在JS中用avalon.define定义ViewModel,再调用avalon.scan方法,它就能动了!&/li&&li&兼容到IE6(其他mvvm框架, knockoutjs IE6, angularjs IE8, emberjs IE8, winJS IE9 ),另有avalon.mobile,它可以更高效地运行于IE10等新版本浏览器中&/li&&li&没有任何依赖,不到4000行,压缩后不到50KB&/li&&li&支持管道符风格的过滤函数,方便格式化输出&/li&&li&局部刷新的颗粒度已细化到一个文本节点,特性节点&/li&&li&要操作的节点,在第一次扫描就与视图刷新函数相绑定,并缓存起来,因此没有选择器出场的余地。&/li&&li&让DOM操作的代码近乎绝迹&/li&&li&使用类似CSS的重叠覆盖机制,让各个ViewModel分区交替地渲染页面&/li&&li&节点移除时,智能卸载对应的视图刷新函数,节约内存&/li&&li&操作数据即操作DOM,对ViewModel的操作都会同步到View与Model去。&/li&&li&自带AMD模块加载器,省得与其他加载器进行整合。&/li&&li&强大的UI库,有专业的拿高薪的团队在维护与升级 &a href=&/oniui/home.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&oniui&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&相关学习教程:&a href=&/rubylouvre/p/3181291.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《入门教程》&i class=&icon-external&&&/i&&/a&→&a href=&http://avalonjs.github.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&迷你易用的MVVM框架&i class=&icon-external&&&/i&&/a&→ &a href=&/s/aMO9PyIQCnLOF/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HTML5交流会有关avalon的PPT&i class=&icon-external&&&/i&&/a&→&a href=&/rubylouvre/p/3385373.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《avalon最佳实践》&i class=&icon-external&&&/i&&/a&&/p&
可以试一下我的avalon。文档齐全,示例上百,入手容易,体积少,已经有几个成功案例了现在边锋,搜狐,百度无线,去哪边网,金山都在用了(帐号:crm_ceo …
来自子话题:
小白的零基础Python入门教程,中文,免费,零起点,完整示例,基于最新的Python 3版本:&br&&br&&a href=&/wiki/958fa6d3a2e542c000& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python教程 - 廖雪峰的官方网站&i class=&icon-external&&&/i&&/a&
小白的零基础Python入门教程,中文,免费,零起点,完整示例,基于最新的Python 3版本:
来自子话题:
作为一个月薪30k+的前端的太太(文科女),我来说一下我先生的生活状态:&br&&br&1、白天上班(有点废话),呵呵&br&2、晚上参加公司的分享和交流活动&br&3、通常10:30以后到家,略吃点东西,看技术论坛、书、知乎、code他说他想做的东西;期间微信不断跟同事或技术伙伴交流&br&4、2点后可能会上床睡觉(最高纪录是5:30)&br&5、周末会睡到早上11点,起床后继续捧着电脑、书,或code。难得会出去吃个饭、看个电影什么的&br&6、更多的周末是带着他手下的人跑各地参加技术论坛,做分享或听分享;如果仅周六的会,那周日会放松一下再回;如果两天的会,那就没放松&br&&br&他从不说他精通什么,一直不断在学习,他说:这个行业,不学习就马上被淘汰。我很高兴他能做他喜欢的职业,并能为之努力!&br&&br&LZ,你的工作生活又是怎样的呢?
作为一个月薪30k+的前端的太太(文科女),我来说一下我先生的生活状态:1、白天上班(有点废话),呵呵2、晚上参加公司的分享和交流活动3、通常10:30以后到家,略吃点东西,看技术论坛、书、知乎、code他说他想做的东西;期间微信不断跟同事或技术伙伴交流…
来自子话题:
我自己简单尝试了一下写HTML5版本。地址在这里:&br&&a href=&http://ben7th.github.io/flappy-html5-bird/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ben7th.github.io/flappy&/span&&span class=&invisible&&-html5-bird/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&源代码可以从github上拿。&br&&a href=&/ben7th/flappy-html5-bird& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/ben7th/flapp&/span&&span class=&invisible&&y-html5-bird&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&&b&比较了一圈,相比于其他高手的实现,我写的和IOS原始版的相似度尽力做到比较高,从界面元素的切换到分数数字等细节,都很接近原作了。&/b&&br&&b&&br&缺点在于没使用任何框架,所以对于一般意义上的游戏开发而言,参考性不强。&br&&/b&&br&只用jQuery,用coffeescript来写。&br&除此之外没用其他框架或者库。完成结果是&b&500行左右的js-coffee&/b&。注释和调试语句都没删,结构上也还有很大的优化余地。&br&图片是从IOS原始版里扒的。边做别的事情边写,零零散散用了&b&一天半左右&/b&的时间。&br&如果包括画图部分,思路确定的情况下,&b&三天时间&/b&是合理的。&br&&br&总体来说我觉得相对简单。游戏中用到的可动角色以及判定运算并不多。&br&基本上,搞定了小鸟的跳起下落的重力计算就OK,套用加速度公式而已,没有什么太难的。&br&&br&小鸟和管子的碰撞判定十分容易做。因为小鸟的x坐标是不变的,变化的只是y坐标。小鸟和管子都可以看成矩形,矩形的碰撞计算很简单。无需用到任何游戏引擎都可以手写。&br&&br&&b&基本上前端基础稍强的,有一些面向对象编程思路的程序员,都应该可以写出来。&/b&&br&大部分人下意识里觉得难写的原因可能是不敢试。&br&&br&&img src=&///2c7f97ce5effb73cc56f6de2fa6907a3_b.jpg& data-rawwidth=&392& data-rawheight=&520& class=&content_image& width=&392&&&br&&img src=&///27112cfd1df657bdb050ad5b27cc4849_b.jpg& data-rawwidth=&392& data-rawheight=&520& class=&content_image& width=&392&&&br&&img src=&///56d0c87ae32bd8af16e377a_b.jpg& data-rawwidth=&392& data-rawheight=&520& class=&content_image& width=&392&&&br&&br&更细节的东西这里还贴吗?好像没什么必要。。&br&因为想看的朋友自然会看源码的吧。
我自己简单尝试了一下写HTML5版本。地址在这里:源代码可以从github上拿。比较了一圈,相比于其他高手的实现,我写的和IOS原始版的相似度尽力做到比较高,从界面元素的切换到分数数字等细节,都很接近原作了。缺点…
来自子话题:
试着答题。&br&首先,不晚。&br&我与你同岁,真正开始学起前端是今年二月份。&br&这期间走了许多弯路,一会java,一会php的。浪费不少时间。&br&后来经过在知乎的浸泡,最终找到学习的根本所在:&br&前端:HTML+CSS+Javascript
这三驾马车 一定要彻底掌握。&br&在网上随意看到一个特效,动画,交互,你要能够在心中用这三种基础语言给出自己的解决方案。&br&这算是一个能不能找到工作的门槛。&br&&br&下面为学习过程(刷到第3步就可以尝试做出自己的作品出去找工作了。):&br&1;把&a href=&& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&上的web前端培训计划刷一遍。(html+css+js+JQuery基础)&br&2;把w3cschool的html css javascript 教程刷一遍。&br&3;看书,自己目前看的《DOM编程艺术》《Javascript权威指南》《Javascript高级程序设计》《锋利的JQuery》&br&4:然后建议重点攻读《Javascript高级程序设计》中写的一些JS的核心;闭包,继承,基本类型,对象等(目前我也在这一步。)&br&5:这个时候基本上你算是比较清楚的了解前端到底是个什么样的东西了。然后按你的兴趣去发展,想作为一个工具使用者?按就去刷各种库和框架。想成为一个前端问题解决者?那就在刷各种框架和库的同时,把JS和CSS彻底吃透彻。&br&&br&&br&&br&望,以上废言能够不会误导你。;)
试着答题。首先,不晚。我与你同岁,真正开始学起前端是今年二月份。这期间走了许多弯路,一会java,一会php的。浪费不少时间。后来经过在知乎的浸泡,最终找到学习的根本所在:前端:HTML+CSS+Javascript 这三驾马车 一定要彻底掌握。在网上随意看到一个特…
来自子话题:
JS当然不算是『严格意义』的编程语言&br&因为它除了if/else/for还var/for/in&br&不仅var还var x = function&br&它不class但object&br&它不仅new还.prototype&br&它不new不class照样{}&br&它不new ArrayList&String&但[]&br&它不doSth(&fnPtr),但它doSth(fn)&br&它不* function但它lambda&br&它不static但closure&br&它不范型但它*.*&br&是的,它不gcc也不dbg,更不make,不过它debugger;它console.&br&它不QT,GTK,但DOM,html5/css3&br&它不boost但asm&br&它不STL但jQuery,_,Backbone&br&它不Thread但Promise&br&它是编程语言&br&只不过它没你要的『严格意义』&br&只不过我说的是『是』&br&而你要的是『算』
JS当然不算是『严格意义』的编程语言因为它除了if/else/for还var/for/in不仅var还var x = function它不class但object它不仅new还.prototype它不new不class照样{}它不new ArrayList&String&但[]它不doSth(&fnPtr),但它doSth(fn)它不* function但它lambda它…
来自子话题:
在一个充分竞争的领域是不存在低投入高收益的东西的。&br&码农就是个充分竞争的领域。学得快又有前途的东西是不存在的,即使偶尔存在,那么很快会有大批人涌入,因为学得快啊,所以很快就会竞争惨烈。&br&&br&想找个学的快前途好的方向,其实是个危险的想法,这种想法会导致短视、跟风,竞争激烈时这些人就会退缩,总是容易第一批被淘汰。
在一个充分竞争的领域是不存在低投入高收益的东西的。码农就是个充分竞争的领域。学得快又有前途的东西是不存在的,即使偶尔存在,那么很快会有大批人涌入,因为学得快啊,所以很快就会竞争惨烈。想找个学的快前途好的方向,其实是个危险的想法,这种想法会…
来自子话题:
早上看到贺老出马,也忍不住写了一篇来谈一下苏宁这样的公司对这方面的考虑。&br&&br&
近两年来,我一直在思考如何改进前端体系的开发模式,这里面最基础的一点就是前后端的分离。谈到前后端分离,也有一个误区,认为仅仅是以浏览器作分界,把这两部分的代码分离出来。但其实是,做这件事情的本意,是要解决开发模式的问题,也就是要分离前后端开发人员的职责。&br&&br&
针对不同类型的Web产品,这个分离方式是有所不同的。对于Web应用,因为它跟服务端的交互基本就是AJAX或者WebSocket接口,所以这个分离是天然的,整个前端基本都是静态HTML模板,JavaScript模块,以及CSS和相关静态资源,但是对于网购产品这样的形态,它的做法就不一样。&br&&br&## 展示占主要部分的产品&br&&br&
网购产品的展示需求很重要,图片等资源载入非常多,但相对的操作却很少,基本只有搜索商品,加购物车,结算这样的环节。传统这样的产品,多半是这么个工作流程:&br&&br&
交互出高保真图,前端去切图,生成静态HTML加展示效果,然后,注意,他不是自己接着往下做,而是交给另外一群开发人员,把它转换成服务端模板,比如freemarker或者velocity之类,或者是smarty,为什么要这么做呢?因为这类产品讲究一个首屏优化,是首屏而不是首页,这就意味着对于首屏来说,经过的环节应当尽可能少,比如说,就不能先载入客户端模板,再AJAX一个数据,然后去渲染一下。这么做的性能肯定是不如服务端把HTML生成好,然后一次请求加载的。&br&&br&
这个过程肯定是有一些问题的,比如说,如果开发人员B在套模板的过程中,发现原先的静态HTML部分有问题,应该怎么办?大家知道,一个对HTML和CSS都很熟悉,同时又可以写业务逻辑的前端开发人员是很稀缺的,所以,多数情况下,这两边的技能是不同的,如果是简单的页面问题,这个开发人员可能自己也就解决了,如果他解决不了,怎么办?&br&&br&
如果B自己不改,把他已经搞成服务端模板的代码返回给前端人员A,A也没法下手,因为已经是服务端模板,A手里没有环境,改了之后不知道对不对,不能预览。那么,B把问题告诉A,A修改他的原始版本,然后再拿给B又怎样呢?这时候B又麻烦了,他要对比两次修改的部分,把自己前一阵的修改合并进去。&br&&br&
所以,不管怎么搞,这里面都很折腾。&br&&br&
Midway这个产品,他想要解决什么问题呢?既然说前端人员没法预览模板的原因是,后端在使用服务端模板,那么,我能不能找一种两边都可用的模板,你能在服务端渲染,我也能在客户端预览?服务端跟浏览器端同时都能运行的语言是什么?只有JavaScript。&br&&br&
所以,大家就往nodejs里面去发掘了,一个普通的JavaScript模板库,它在浏览器端也可以渲染,在nodejs端也可以输出成HTML,这时候,那些原来负责整合模板和逻辑的人员改用nodejs,是不是就解决这问题了?&br&&br&
想象一下这个场景多么美好:前端来决定某个模板是服务端渲染还是客户端渲染,当首屏的时候,就在nodejs里面生成HTML,不是首屏的时候,就AJAX过来在浏览器端渲染展示。&br&&br&
从技术方案上看,这么做很好了,工程上又带来另外一些问题,那就是对熟练JavaScript开发人员的需求量大增。对阿里这样的公司来说,前端有大几百人,别的公司只能仰望,所以他当然可以放手一搞,但对我们苏宁这样,前端人数不大的,就麻烦了。如果我们也引入这样的方案,就面临把很大一部分Java开发人员转化成JavaScript开发人员这么一个问题,这个事情短期内肯定是无法解决的,所以反过来会增加前端这边的压力。所以暂时还用不了阿里这样的方案,只能努力先提高人员水平再看情况。&br&&br&
服务端引入nodejs还有别的优势,比如说请求合并等等,这个也可以用其他方式变通解决,比如加一个专门的跟现有后端同构的Web服务器,在那边干这些事。&br&&br&## 展示和业务逻辑较均衡的产品&br&&br&
对于另外一些场景,也有类似的问题,比如支付产品,展示相对没那么重,但是又算不上Web应用,它面临另外一种情况的前后端分离。这种场景下,前端的出静态HTML和DOM操作类的JavaScript,业务开发人员负责写后端,还有另外一部分业务逻辑的JS。&br&&br&
这里的问题是什么呢?是jQuery式代码造成的协作问题。比如说:&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&$(&.okBtn&).click(function() {
$.ajax(url, data)
.success(function(result) {
$(&someArea&).html(_.template(&tpl&, result));
&/code&&/pre&&/div&&br&
因为前端人员的稀缺,所以他不可能帮你把业务逻辑写出来,所以说,这里面$.ajax往里的部分,要业务人员自己写。然后,数据得到之后,又要去处理界面部分。&br&&br&
很多场景下,处理界面远不是这么搞个模板放上去就完事的,所以业务开发人员感到很烦闷,为了这么一点小问题,反复去找前端的人来搞,很麻烦,自己搞又特别花时间,所以都很苦闷。&br&&br&
这同样是一种前后端的分离,只是这个分界线不在浏览器,而在于:是否写业务逻辑。对付这种场景,解决办法就是加强JavaScript代码的规划。现在流行那么多在前端做MV*的框架,不考虑Angular这类太重量级的,来看看Backbone这样的,它到底解决了什么问题?&br&&br&
很多人说,Backbone虽然小,但根本不解决问题。这句话有一定道理,但前提条件是你自己的JavaScript代码分层已经做得很好了。如果做得不好,它就可以协助你解决分层的问题。&br&&br&
刚才那段代码,它的问题在哪里呢,在于职责不清晰。一个函数只能做一件事,这是共识,但由于回调等方式,所以不经意就破坏了函数的单一性、完整性。我们试试来拆开它。&br&&br&
对于一个后端开发人员来说,他为什么常常害怕写前端代码?是因为JavaScript语言吗?其实不是,我们用来写业务逻辑的时候,只会使用JavaScript一个很小的子集,对于这个子集来说,它并不存在多大的学习困难,最麻烦的地方在于DOM、BOM等东西,对于一个后端开发人员来说,如果要求他在掌握服务端代码编写的同时,还要去学这些,那真是有些不容易,所以,我们来给他省点事。&br&&br&
现在我们的出发点是,把这段代码拆给两个不同的人写,一个人操作DOM,另外一个人只写逻辑,绝对不操作DOM。前面这个代码拆给前端维护,后面这个拆给业务开发人员。&br&&br&
最老圡的方式:&br&&br&
a.js&br&&div class=&highlight&&&pre&&code class=&language-text&&$(&.okBtn&).click(function() {
function a1(result) {
$(&someArea&).html(_.template(&tpl&, result));
&/code&&/pre&&/div&&br&
b.js&br&&div class=&highlight&&&pre&&code class=&language-text&&function b1(data) {
$.ajax(url, data)
.success(a1);
&/code&&/pre&&/div&&br&
现在大家是不是相安无事了?&br&&br&
如果这么做的话,AB双方要做很多约定,也就是说,这个过程仍然是一个螺旋链。比如说,A先写点击事件的绑定,然后想起来这里要调用一个请求,就去找B写b1方法。B在写b1的时候,又想到他要调用一个界面展示方法a1,然后又来找A写,来回也挺折腾。&br&&br&
况且,有这么一天,A在另外一个地方也想调用b1了,但是由于b1的回调已经写死了,比较蠢的办法就是在a1里面再判断,这是什么东西点击造成的,然后分别调用不同的回调。如果情况复杂,那这个代码写出来真是没法看。&br&&br&
如下:&br&&br&
a.js&br&&div class=&highlight&&&pre&&code class=&language-text&&var type = 0;
$(&.okBtn&).click(function() {
$(&.okBtn1&).click(function() {
function a1(result) {
if (type1) {
$(&someArea&).html(_.template(&tpl&, result));
else if (type2) {
&/code&&/pre&&/div&&br&
b.js&br&&div class=&highlight&&&pre&&code class=&language-text&&function b1(data) {
$.ajax(url, data)
.success(a1);
&/code&&/pre&&/div&&br&
稍微好一些的办法是,在b1中,直接返回这个请求的promise,这样可以由调用方决定到底该干什么。&br&&br&
如下:&br&
a.js&br&&div class=&highlight&&&pre&&code class=&language-text&&$(&.okBtn&).click(function() {
b1(data).success(function(result) {
$(&someArea&).html(_.template(&tpl&, result));
$(&.okBtn1&).click(function() {
b1(data).success(function(result) {
&/code&&/pre&&/div&&br&
b.js&br&&div class=&highlight&&&pre&&code class=&language-text&&function b1(data) {
$.ajax(url, data);
&/code&&/pre&&/div&&br&
如果要对返回数据作统一处理,也可以很容易地在b1中,用promise重新封装了返回出来,只不过这样在a.js里面,直接调用的就不是success,而是then了。&br&&br&
注意到这样的代码还有问题,比如说大量的全局函数,不模块化,容易冲突。此外,没有一个地方可以缓存一些共享数据,比如说这么一个场景:&br&&br&
界面上两个块M和N,其中,M初始载入并加载数据,N在初始的时候不载入,而是在某个按钮点击的时候载入,而M和N中各有一个列表,数据来源于同一个服务端请求。&br&&br&
现在就有个问题,当N载入的时候,它的数据怎么来?比较老土的方式,肯定是载入N的时候,同时也再去请求一下数据,然后渲染到N上。&br&&br&
从一个角度看,如果说不重新请求,N的这个数据应当从哪里来?从另外一个角度看,如果重新请求了,发现数据跟之前的产生了变更,是否要同步给M,怎么同步给它?&br&&br&
我们看看类似Backbone这样的框架,它能提供怎样的机制呢?或者如果我们不用它,怎么自己把这个分层封装得更好一些?&br&&br&
首先,是建立一个数据模型,在它上面添加数据的缓存:&br&&div class=&highlight&&&pre&&code class=&language-text&&define(&model&, [], function() {
var Model = {
data: null,
queryData : function(param, fromCache) {
var defer = q.defer();
if (fromCache || this.data) {
defer.resolve(this.data);
var self =
this.ajax(url, param).success(function(result){
self.data =
defer.resolve(result);
return defer.
&/code&&/pre&&/div&&br&
这么一来,我们在模型上作了数据的缓存,如果调用的时候加fromCache参数,就从缓存读取,否则就请求新的。为了在两种情况下,调用方接口能保持一致,把整个函数封装成promise,以便接着调用。这里的模型定义成单例了,假定是全局唯一的,可以根据需要调整成可实例化的。&br&&br&
这个时候,视图层就要封装DOM和事件的关联关系:&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&define(&view&, [&model&], function(Model) {
function View(element) {
this.element =
this.element.selector(&.okBtn&).click(function() {
var self =
var fromCache =
Model.queryData({}, false).then(function(result) {
self.renderData(result);
View.prototype = {
renderData: function(data) {
this.element.selector(&someArea&).html(_.template(&tpl&, result));
&/code&&/pre&&/div&&br&&br&
这个时候,多个视图实例的情况下,数据也能够较好地利用。&br&&br&这样,前端写这个View,后端写Model,可以作这么个分工。&br&&br&
这个只是很简陋的方式,在复杂场景下还有很多不足,在这里先不展开了。更复杂的场景也就是类似Web应用那种方式,稍后专门写一篇来展开。&br&&br&## 小结&br&&br&
我们再来回顾前后端分离所要解决的问题,是分离前端和业务开发人员的职责,这个方案怎么定,是应当随着团队状况来确定的。比如阿里前端厉害,人多势众,他的前端就要往后推,去占领中间层。我们苏宁这样的公司,前端比较薄弱,只能在很多场景下,让出中间层,否则战线铺太广只能处处被动。&br&&br&
同一个中途岛,在不同的形势下,占还是不占,是很考验前端架构师的一个问题。&br&&br&对阿里的这种实践,我们会持续围观,寻找并创造合适的出手时机。
早上看到贺老出马,也忍不住写了一篇来谈一下苏宁这样的公司对这方面的考虑。
近两年来,我一直在思考如何改进前端体系的开发模式,这里面最基础的一点就是前后端的分离。谈到前后端分离,也有一个误区,认为仅仅是以浏览器作分界,把这两部分的代码分离出…
来知乎,参与讨论}

我要回帖

更多关于 xd股票是什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信