刚入坑魔兽世界之小白往事,纯小白求带

推荐一篇非常不错的文章:&br&《1天搞懂深度学习》,300多页的ppt,一个台湾人写的,非常棒。&br&不夸张地说,是我看过最系统,也最通俗易懂的,关于深度学习的文章。&br&&br&这是slideshare的链接:&br&&a href=&//link.zhihu.com/?target=http%3A//www.slideshare.net/tw_dsconf/ss-Fqid%3D108adce3-2c3d-d0a57e46bc%26v%3D%26b%3D%26from_search%3D3& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&slideshare.net/tw_dscon&/span&&span class=&invisible&&f/ss-?qid=108adce3-2c3d-d0a57e46bc&v=&b=&from_search=3&/span&&span class=&ellipsis&&&/span&&/a&&br&&br&没梯子的同学,可以从我的网盘下:&br&链接:&a href=&//link.zhihu.com/?target=http%3A//pan.baidu.com/s/1nv54p9R& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&pan.baidu.com/s/1nv54p9&/span&&span class=&invisible&&R&/span&&span class=&ellipsis&&&/span&&/a& 密码:3mty&br&&br&需要做哪些准备?个人感觉,把求偏导,sigmoid函数之类的数学基础准备一下即可。其他部分,如有不懂的地方,比如SGD, mini batch epoch之类的概念,网上查一下即可,应该问题不大。&br&&br&----------------------------------------------------------------&br&有朋友留言,希望提供更为详细的信息。关于如何入门,请参考我在另一个类似问题中的回答:&br&&a href=&http://www.zhihu.com/question//answer/& class=&internal&&&span class=&invisible&&http://www.&/span&&span class=&visible&&zhihu.com/question/2600&/span&&span class=&invisible&&6703/answer/&/span&&span class=&ellipsis&&&/span&&/a&&br&----------------------------------------------------------------&br&&br&祝学习顺利!
推荐一篇非常不错的文章: 《1天搞懂深度学习》,300多页的ppt,一个台湾人写的,非常棒。 不夸张地说,是我看过最系统,也最通俗易懂的,关于深度学习的文章。 这是slideshare的链接:
树莓派基金会的愿景——“找回失落的技术,重燃人们对计算机的兴趣”。&br&&br&今天在图书馆看到一本不错的书《树莓派学习指南》(基于linux)&br&&a href=&//link.zhihu.com/?target=http%3A//book.douban.com/subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&树莓派学习指南 (豆瓣)&/a&&br&&figure&&img src=&https://pic2.zhimg.com/9ed10a6665aaede14d75b23be8848b29_b.jpg& data-rawwidth=&324& data-rawheight=&408& class=&content_image& width=&324&&&/figure&&br&&br&-----------------------------------------------------分割线----------------------------------------------------------&br&之前在看雪论坛见过一篇不错的文章&br&链 接:
&a href=&//link.zhihu.com/?target=http%3A//bbs.pediy.com/showthread.php%3Ft%3D182874& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&【原创】树莓派上手小记&/a&&br&作 者: 小Biy&br&&br&引用其中的几张图片小窥一下,原文更精彩,链接在上面了~&br&1、树莓派飞行器&br&&figure&&img src=&https://pic2.zhimg.com/98b2620baa5d63a815cafd_b.jpg& data-rawheight=&395& data-rawwidth=&586& class=&origin_image zh-lightbox-thumb& width=&586& data-original=&https://pic2.zhimg.com/98b2620baa5d63a815cafd_r.jpg&&&/figure&&br&2、树莓派机器人&br&&figure&&img src=&https://pic1.zhimg.com/d8ad043cd3ae9bc4bfa9b90_b.jpg& data-rawheight=&338& data-rawwidth=&600& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/d8ad043cd3ae9bc4bfa9b90_r.jpg&&&/figure&&br&3、微型遥控坦克&br&&figure&&img src=&https://pic2.zhimg.com/bffae198d551_b.jpg& data-rawheight=&331& data-rawwidth=&590& class=&origin_image zh-lightbox-thumb& width=&590& data-original=&https://pic2.zhimg.com/bffae198d551_r.jpg&&&/figure&
树莓派基金会的愿景——“找回失落的技术,重燃人们对计算机的兴趣”。 今天在图书馆看到一本不错的书《树莓派学习指南》(基于linux)
-----------------------------------------------------分割线------------------------------…
&figure&&img src=&https://pic4.zhimg.com/v2-0b8c367c5f2b7cf8e5dca3a4df430b2b_b.jpg& data-rawwidth=&1280& data-rawheight=&853& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic4.zhimg.com/v2-0b8c367c5f2b7cf8e5dca3a4df430b2b_r.jpg&&&/figure&先剧透给太长不看的读者,答案是&br&&blockquote&pip install tushare&br&&/blockquote&&h2&&b&准备工作&/b&&/h2&&p&tushare 是一个国人开发的 Python 爬虫库,囊括股票、期货、宏观经济、电影票房(???)等数据。&/p&&p&在比较了一些同类库后,我选择了它。&/p&&h2&tushare 的使用对象&/h2&&ul&&li&量化投资分析师(Quant)&/li&&li&对金融市场进行大数据分析的企业和个人&/li&&li&开发以证券为基础的金融类产品和解决方案的公司&/li&&li&正在学习利用python进行数据分析的人&/li&&/ul&&p&&figure&&img src=&https://pic4.zhimg.com/v2-1e4a260a2cc171effe20b_b.png& data-rawwidth=&820& data-rawheight=&451& class=&origin_image zh-lightbox-thumb& width=&820& data-original=&https://pic4.zhimg.com/v2-1e4a260a2cc171effe20b_r.jpg&&&/figure&从零开始的完整版安装指南&/p&&p&1. 安装 Python,可以从 &a href=&http://link.zhihu.com/?target=http%3A//www.python.org& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&python.org&/span&&span class=&invisible&&&/span&&/a& 下载。&/p&&p&1.1 初学者建议安装 Anaconda,是一个 Python 大礼包,包含各种可能的库。&/p&&p&2. 安装完成后,进命令行界面,依次输入&/p&&blockquote&&p&pip install lxml&/p&&p&pip install pandas&/p&&p&pip install matplotlib&/p&&p&pip install tushare&/p&&/blockquote&&p&3. 安装完成&/p&&h2&&b&代码实战&/b&&/h2&&p&查看海康威视(002415)的历史股价&/p&&blockquote&&&& import tushare&br&&&& tushare.get_hist_data('002415', start='',end='')&br&&p&date open
price_change
&/p&&br&&br&&p&
turnover&/p&&p&
&/blockquote&&br&几列数据的含义如下&br&&ul&&li&&strong&date&/strong&:日期&/li&&li&&strong&open&/strong&:开盘价&/li&&li&&strong&high&/strong&:最高价&/li&&li&&strong&close&/strong&:收盘价&/li&&li&&strong&low&/strong&:最低价&/li&&li&&strong&volume&/strong&:成交量&/li&&li&&strong&price_change&/strong&:价格变动&/li&&li&&strong&p_change&/strong&:涨跌幅&/li&&li&&strong&ma5&/strong&:5日均价&/li&&li&&strong&ma10&/strong&:10日均价&/li&&li&&strong&ma20&/strong&:20日均价&/li&&li&&strong&v_ma5&/strong&:5日均量&/li&&li&&strong&v_ma10&/strong&:10日均量&/li&&li&&strong&v_ma20&/strong&:20日均量&/li&&li&&strong&turnover&/strong&:换手率&/li&&/ul&&p&也可以查看大盘的指数&/p&&blockquote&&&& tushare.get_index()&br&&p&
&/p&&/blockquote&&p&历史数据都有啦,下一节课教大家画蜡烛图和均线。&/p&&i&转载请保留作者名、注明源自微信公众号“黑客与画家”(HackerAndPainter),关注计算机视觉、图形学、机器学习、人工智能。&/i&&br&&figure&&img src=&https://pic4.zhimg.com/66fbb11fa47e9ecb4739cf_b.jpg& data-rawwidth=&258& data-rawheight=&258& class=&content_image& width=&258&&&/figure&
先剧透给太长不看的读者,答案是 pip install tushare 准备工作tushare 是一个国人开发的 Python 爬虫库,囊括股票、期货、宏观经济、电影票房(???)等数据。在比较了一些同类库后,我选择了它。tushare 的使用对象量化投资分析师(Quant)对金融市场进…
&blockquote&知乎管理员
:您好,根据用户举报,您在问题 &a href=&http://www.zhihu.com/question//answer/& class=&internal&&360 云盘继新浪微盘关闭后宣布转型,大容量个人云储存前景如何?&/a&
中的回答已被建议修改,原因是「政治敏感」。回答被建议修改期间,其他用户暂时无法查看原文内容,同时回答会暂时出现在折叠区。请您及时按照规范修改或删
除回答中的违规内容并再次提交,回答即会自动进入评估状态,评估通过后您的回答会重新显示恢复正常。具体规范烦请查看 &a href=&http://www.zhihu.com/question//answer/& class=&internal&&知乎社区管理规定&/a& 。如果您对本次处理结果有异议,请回复本条私信,我们会及时复查。&a href=&http://www.zhihu.com/community/reported& class=&internal&&查看详情&/a&&br&&br&
今天 05:21
&/blockquote&Antwort: &a href=&//link.zhihu.com/?target=http%3A//tur.tsetien.com/ud/Antwort.rar& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&tur.tsetien.com/ud/Antw&/span&&span class=&invisible&&ort.rar&/span&&span class=&ellipsis&&&/span&&/a&
知乎管理员
:您好,根据用户举报,您在问题
中的回答已被建议修改,原因是「政治敏感」。回答被建议修改期间,其他用户暂时无法查看原文内容,同时回答会暂时出现在折叠区。请您及时按照…
&figure&&img src=&https://pic4.zhimg.com/v2-a15f1faf9c43d1a393c595_b.jpg& data-rawwidth=&1428& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1428& data-original=&https://pic4.zhimg.com/v2-a15f1faf9c43d1a393c595_r.jpg&&&/figure&&p&据 TechCrunch 报道:NBA 最近在纽约曼哈顿举办了一项邀请活动:&b&编程马拉松&/b&(&b&Hackathon&/b&)。 他们打算建立一种新的视角来看待比赛数据。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-fc93642abfd378d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-fc93642abfd378d_r.jpg&&&/figure&&p&美国人很钟情于运动,棒球是其中之一。MLB(职棒大联盟)是使用统计分析和预测的先行者:打击、防守、投球、失误等。与此同时,NBA 近年来一直致力于提高评论员、教练和球员的统计分析能力--这次首届编程马拉松就是最新的尝试。&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-f85f5276caee3dc2454d43_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-f85f5276caee3dc2454d43_r.jpg&&&/figure&&p&此次活动邀请的参赛人员包括本科生、研究生和博士生,&b&200个程序员&/b&被分为三个等级,面对不同的挑战。&/p&&p&比赛规则很简单:每个团队对 NBA 提供的数据进行统计分析,数据本身不允许篡改,否则将被取消资格。时间&b&从上午9点开始,到下午5:15结束,历时8小时15分钟&/b&。&/p&&p&这并不是件容易的任务:原始数据超过&b& 5GB&/b&,包括投篮数据、回合数据、精确至1/25秒的球员追踪数据等。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-6bf83ece5d7cff7495cb10_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-6bf83ece5d7cff7495cb10_r.jpg&&&/figure&&p&最终,由哥伦比亚大学研究生 Alex Wainger、Zac Robertson、纽约大学本科生 Ella Kuzmenko 和佩斯大学本科生 William Robbins 组成的团队赢得了比赛冠军。&/p&&p&他们夺冠项目名为“&b&关于英雄球&/b&”。&/p&&p&在分析数据库时,他们放弃了一些已有的可行建议,比如创建一个防御的效率公式或者分析如何能让投篮更准,而是选择将运动员在常规赛和季后赛中的运动趋势做一个对比。他们假设在常规赛中,运动员的打球方式更以团队为中心,而在季后赛中,他们更倾向于人们所谓的“英雄球”式的打法。最终他们用 &b&python&/b& 处理了 5g 的数据库,抽丝剥茧取出了有用数据,建立一个 &b&d3&/b& 的应用(&b&d3.js&/b&,一个 &b&JavaScript&/b& 库)挂载在 &b&github&/b& 的网页上。一个坐标轴上显示常规赛的统计信息,另一个坐标轴上显示季后赛的统计信息,还有一个45度的直线表示在两种情况下的相同行为方式,可以选择一个数据并以交互的方式在图标上看团队的数据移动。数据表明最终在季后赛的队伍,相比常规赛,运动趋势数据中多了 15% 的运球,10% 站立,少了 4% 的传球和 4% 的持球得分。也就是说,球员在季后赛往往会更自私地打球。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-0b5eb58c6c17cd38c6a39d7cf4c815f2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-0b5eb58c6c17cd38c6a39d7cf4c815f2_r.jpg&&&/figure&&p&问起他们为什么参加 NBA 编程马拉松,其中一名队员表示,他看到了在这里的学习机会。作为一个NBA的数据控,他对比赛背后的教练方法和数据分析非常感兴趣,通过这个活动可以认识更多在数据分析领域中杰出的人。&/p&&p&项目在线演示地址:&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//alexwainger.github.io/NBAHackathonViz/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NBA Hackathon Visualization&/a& &/p&&p&另外他们的 Github 上还发布了另一个关于场上换人模式的分析项目:&br&&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/alexwainger/NBASubstitutionPatterns& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - alexwainger/NBASubstitutionPatterns: Visualizing substitution patterns across teams and time&/a&&/p&&p&如今像篮球这样的运动都已经开始大量地依赖计算机程序做数据分析,可想而知,还有什么领域可以置身事外。如果现在还觉得,不是程序员,不是搞理工科的,是否懂计算机懂编程都无所谓,那这恐怕是个很危险的想法。不要再只顾着抱怨别人用脚本抢走你的月饼了,或许不久后的某一天,计算机就会抢走你的饭碗……&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&附英文报道:&a href=&http://link.zhihu.com/?target=https%3A//techcrunch.com//the-nbas-first-hackathon-how-is-the-future-coming-for-the-league/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The NBA’s first hackathon: How is the future coming for the league?&/a&&/p&&p&&br&&/p&&p&&br&&/p&&p&&u&其他文章及回答:&/u&&/p&&p&&br&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&爆款游戏《贪吃蛇大作战》的 Python 实现 - Crossin的编程教室 - 知乎专栏&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Python 与 Excel 不得不说的事 - Crossin的编程教室 - 知乎专栏&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&想用 Python 做数据分析?先玩玩这个再说 - Crossin的文章 - 知乎专栏&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&用 Python 实现你的量化交易策略 - Crossin的文章 - 知乎专栏&/a&&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&学习编程的过程中可能会走哪些弯路,有哪些经验可以参考? - Crossin 的回答&/a&&/p&&p&&a href=&https://www.zhihu.com/question//answer/& class=&internal&&你是如何自学 Python 的? - Crossin 的回答&/a&&/p&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&Python 抓取网页乱码原因分析 - Crossin的编程教室 - 知乎专栏&/a&&/p&&p&&b&Crossin的编程教室&/b& &/p&&p&&br&&/p&&p&微信ID:crossincode&/p&&p&论坛:&a href=&http://link.zhihu.com/?target=http%3A//bbs.crossincode.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Crossin的编程教室&/a&&/p&&figure&&img src=&https://pic4.zhimg.com/5b58c0ecafdc5d85c857_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&258& data-rawheight=&258& class=&content_image& width=&258&&&/figure&&p&&/p&
据 TechCrunch 报道:NBA 最近在纽约曼哈顿举办了一项邀请活动:编程马拉松(Hackathon)。 他们打算建立一种新的视角来看待比赛数据。美国人很钟情于运动,棒球是其中之一。MLB(职棒大联盟)是使用统计分析和预测的先行者:打击、防守、投球、失误等。与…
&figure&&img src=&https://pic2.zhimg.com/v2-6f589df1_b.jpg& data-rawwidth=&1140& data-rawheight=&440& class=&origin_image zh-lightbox-thumb& width=&1140& data-original=&https://pic2.zhimg.com/v2-6f589df1_r.jpg&&&/figure&&p&本文由我和&a href=&https://www.zhihu.com/people/li-yi-ying-73& class=&internal&&李艺颖&/a&共同撰写。&/p&&h2&1 前言&/h2&&p&前几天也就是号,Google Research Blog上发表了最新的Blog,介绍他们在机器人上的工作:&a href=&https://link.zhihu.com/?target=https%3A//research.googleblog.com/2016/10/how-robots-can-acquire-new-skills-from.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&research.googleblog.com&/span&&span class=&invisible&&/2016/10/how-robots-can-acquire-new-skills-from.html&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&figure&&img src=&https://pic2.zhimg.com/v2-6bbe8af2dbc2e7e7036c00aac03a5917_b.jpg& data-rawwidth=&1898& data-rawheight=&1228& class=&origin_image zh-lightbox-thumb& width=&1898& data-original=&https://pic2.zhimg.com/v2-6bbe8af2dbc2e7e7036c00aac03a5917_r.jpg&&&/figure&现在Google们都喜欢发文章+写博客的套路,似乎不太需要我们做面向大众的解读了。因此,本文决定不介绍他们基本的工作了,我们来研究一下他们的具体工作,来点干货。&/p&&p&这次Google联合了Google Brain和DeepMind一起搞,一次发了四篇文章(够狠,链接转自官方博客):&/p&&p&【1】&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Deep Reinforcement Learning for Robotic Manipulation&/a&. &i&Shixiang Gu, Ethan Holly, Timothy Lillicrap, Sergey Levine.&/i& [&a href=&https://link.zhihu.com/?target=https%3A//sites.google.com/site/deeproboticmanipulation/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&video&/a&]&br&&br&【2】&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Deep Visual Foresight for Planning Robot Motion&/a&. &i&Chelsea Finn, Sergey Levine.&/i& [&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DCKRWJEVSXMI& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&video&/a&] [&a href=&https://link.zhihu.com/?target=https%3A//sites.google.com/site/brainrobotdata/home& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&data&/a&]&br&&br&【3】&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Collective Robot Reinforcement Learning with Distributed Asynchronous Guided Policy Search&/a&. &br&&i&Ali Yahya, Adrian Li, Mrinal Kalakrishnan, Yevgen Chebotar, Sergey Levine.&/i&
[&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/ZBFwe1gF0FU& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&video&/a&]&br&&br&【4】&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Path Integral Guided Policy Search&/a&. &i&Yevgen Chebotar, Mrinal Kalakrishnan, Ali Yahya, Adrian Li, Stefan Schaal, Sergey Levine. &/i&[&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3Dncp1kY5JV90& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&video&/a&]&br&&/p&&p&所以,今天我们来以快速的分析一下这四篇文章。&/p&&h2&2 Deep Reinforcement Learning for Robotic Manipulation &/h2&&figure&&img src=&https://pic3.zhimg.com/v2-4a8ecedc83c7b64c450db_b.jpg& data-rawwidth=&1234& data-rawheight=&660& class=&origin_image zh-lightbox-thumb& width=&1234& data-original=&https://pic3.zhimg.com/v2-4a8ecedc83c7b64c450db_r.jpg&&&/figure&&p&这篇文章的题目弄得很大,用深度增强学习来解决机器人的操纵问题。具体一点就是让机器人从零开始学会开门。&/p&&p&文章中表示实现让机械臂自己学会开门就是他们的贡献,他们是第一个做出这个demonstration的。当然,这么说也是ok的。&/p&&p&对于理论上的创新,他们表示他们拓展了NAF算法,变成异步NAF。我表示异步的思想早就有了,而且他们的异步NAF的实现方式实在是太太太简单了。就是&/p&&blockquote&&b&用多个线程收集不同机器人的数据,然后用一个线程去训练,并且训练线程在服务器上,训练后不断把最新的神经网络参数传递给每一个机器人用于新的采样&/b&。&/blockquote&&p&可能让机器人自己开门这个任务在我看来是本来就能实现的,所以其实并没有太多震撼的地方。而且,在这篇文章中,并&b&不使用视觉输入!&/b&&/p&&blockquote&&b&不使用视觉输入,声称能让机器人学会开门有多大意义呢?&br&&/b&&/blockquote&&p&从文章中可以看到,对于开门这个任务,门把手的位置的给定的:&/p&&blockquote&&p&In addition, we append a target position to the
state, which depends on the task: for the door
opening, this is the handle position when the door is closed and the quaternion measurement of the sensor attached to
the door frame.&/p&&/blockquote&&p&大家看到了吧,不但门把手的位置,连门的姿态也就是四元数quaternion也是有传感器来测量的。那么,这样号称做了一个很屌的Demonstration真的有意思吗?比较&b&质疑这篇文章的贡献&/b&。这里使用的神经网络也只是两个200的全连接神经网络。某种程度上讲,其实这个任务的状态输入是低维而不是高维的。我觉得如果这篇文章能够完全使用图像输入来实现端到端自学习的话,那么就很厉害!虽然该团队之前有&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一篇文章&/a&就是用视觉输入,但是用了十几台机器人,并且训练几个月来收集数据。现在这个任务只要几小时,不过没有视觉,意义不够大。&/p&&p&关于NAF算法,可以参考本专栏的:&a href=&https://zhuanlan.zhihu.com/p/?refer=intelligentunit& class=&internal&&DQN从入门到放弃7
连续控制DQN算法-NAF - 智能单元 - 知乎专栏&/a&&/p&&p&关于DDPG算法,可以参考本人的CSDN blog:&a href=&https://link.zhihu.com/?target=http%3A//blog.csdn.net/songrotek/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Paper Reading 3:Continuous control with Deep Reinforcement Learning&/a&&/p&&p&关于DDPG的源码复现,可以参考本人的github:&a href=&https://link.zhihu.com/?target=https%3A//github.com/songrotek/DDPG& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - songrotek/DDPG: Reimplementation of DDPG(Continuous Control with Deep Reinforcement Learning) based on OpenAI Gym + Tensorflow&/a&&/p&&h2&3 Deep Visual Foresight for Planning Robot Motion&/h2&&p&&figure&&img src=&https://pic4.zhimg.com/v2-644e1a2ea1c79ff44eb5a_b.jpg& data-rawwidth=&1052& data-rawheight=&744& class=&origin_image zh-lightbox-thumb& width=&1052& data-original=&https://pic4.zhimg.com/v2-644e1a2ea1c79ff44eb5a_r.jpg&&&/figure&这篇文章和深度增强学习没有直接关系,完全另外一个思路。为什么研究这个,我们先来说说&b&机器人学习之难难在哪?&/b&&/p&&blockquote&&b&机器人学习之难难在环境不完全可见,难在没有Model!&br&&/b&&/blockquote&&p&在控制领域,有一种任务相对比较好做,比如火箭发射!(当然也是很难的大工程),但是火箭发射上个世纪就解决了,人类甚至可以发射探测器到很远的地方,火星探测器也上了好几次了。Elon Musk前不久才提出他的火星登陆计划:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-df90f1f33f9d9a4f733e_b.jpg& data-rawwidth=&2428& data-rawheight=&1078& class=&origin_image zh-lightbox-thumb& width=&2428& data-original=&https://pic3.zhimg.com/v2-df90f1f33f9d9a4f733e_r.jpg&&&/figure&&blockquote&&b&为什么人类早早就能把探测器发送到那么远的地方,却连“简单”的让机器人开个门都那么难?&br&&/b&&/blockquote&&p&因为对于航天工程,我们可以精确的计算探测器,火箭的运动模型(运动方程),我们可以精确的计算出火箭在怎样的推力下会达到的轨迹,因此我们可以精确的控制。我们有足够的人力,足够的资源来进行数学计算,我们也就能够实现很好的控制。但是&b&对于机器人开门这种事,我们没法算&/b&。&/p&&p&为什么?&/p&&ol&&li&每个门都可能不一样,门把手也不一样&/li&&li&机器人的位置不固定,门的位置也不固定。&/li&&/ol&&p&我们可以针对某个特定的门精确计算来实现控制,但是我们不可能遍历所有的门,更何况对于一个新的门怎么办?大家看到了,这里没有所谓的Model模型,我们无法建立模型,特别是如果我们只使用摄像头,类似人的第一视角,那么我们得到的信息更是有限。每时每刻的控制都将不一样。这就是机器人学习难的原因。&/p&&p&所以,深度增强学习的很多方式都是所谓的Model-Free的方法,也就是不需要模型,通过trial-and-error来学会整个过程。&/p&&p&可是,人类并不仅仅是通过trial-and-error来学习的。我们人类其实在大脑里能够构建一些基本的模型的,也就是比如门把手的位置,很多东西的位置,在我们大脑中是有概念的,我们也能够预测他们的位移。特别是足球的守门员,就需要掌握一项技能,那就是预判球的位置。&/p&&p&所以,问题就这么来了:我们能不能来预测一下物体的位置,从而帮助机器人抓取物品?&/p&&p&这篇文章也就做了这个事,弄了一个物体预测模型来预测物体的位置。本质上是未来研究model-based的方法。&/p&&p&个人看法:model-based和model-free方法结合起来用能使机器人学习发挥出更大威力。&/p&&p&关于预测模型,其实这篇文章也不新鲜了,之前就有文章研究预测atari游戏的画面的,也有文章预测汽车的运行轨迹的。只是这篇文章比较具体,面向机器人控制的具体问题,把预测模型和机器人控制MPC直接结合在一起,从而形成了一个确实的demo。&/p&&p&所以,重复一下,&b&这篇文章的关键不是弄成一个预测模型,而是真正把模型给用在机器人控制上。在文章中,作者也是说的很明确,没有夸大的成分:&/b&&/p&&blockquote&&p&The primary contribution of our paper is to demonstrate
that deep predictive models of video can be used by real
physical robotic systems to manipulate previously unseen
objects.&/p&&/blockquote&&p&我们稍微来说一下这个深度预测模型:&/p&&p&&figure&&img src=&https://pic3.zhimg.com/v2-a61c2f5dd46954bdd64d884fa7c1753a_b.jpg& data-rawwidth=&2378& data-rawheight=&842& class=&origin_image zh-lightbox-thumb& width=&2378& data-original=&https://pic3.zhimg.com/v2-a61c2f5dd46954bdd64d884fa7c1753a_r.jpg&&&/figure&结构上搞的比较复杂。先说输入输出。输入有三个,一个是当前帧,当前的状态state和动作action,然后输出下一帧图像(预测)。&/p&&p&中间的结构大致可以分成三部分:&/p&&ol&&li&CNN+LSTM部分,用于提取图像特征信息,不过这里的输出很特别,并没有使用反卷积直接生成图像,而是输出一个图像的mask蒙版。这个蒙版可以认为是计算出里面的物体的移动流也就是pixel flow。&/li&&li&状态和动作输入部分,将状态和动作从卷积层的中间插入。&/li&&li&图像生成部分。首先是利用中间的卷积层抽取多个卷积核然后与原始图像做卷积,得到变化后的图像transformed images,然后和mask一起生成pixel flow map F,然后F与原始图像一起生成下一帧的图像。&/li&&/ol&&p&所以这个神经网络本质上是要学习出物体移动的像素流pixel flow,类似光流,从而计算出下一帧的图像。作者虽然限定了神经网络的结构,但是在学习训练时只使用视频,动作,状态数据做监督学习,也就是端到端的学习,中间的mask蒙版和像素流并没有单独的监督学习。&b&然而文章中并没有对mask和flow的具体表现形式做分析,是否就是产生出对物体运动的捕捉我比较怀疑。&/b&只能说通过训练,神经网络确实学习了捕捉物体的运动并能够根据输入加以预测。&/p&&p&接下来是这篇文章的区别其他文章的工作,直接使用这个预测模型与经典的MPC控制结合,来实现机械臂的控制。基本是思路就是利用预测模型预测不同动作未来的移动情况,从而选择最优的移动方式。这种方式取得成功说明利用预测模型进行机器人控制的可行性。&b&下一步进一步拓展深度预测模型将成为可能,&/b&这也是这篇文章最大的意义。&/p&&h2&4 Path Integral Guided Policy Search&/h2&&figure&&img src=&https://pic2.zhimg.com/v2-81ffccb38f7e3c8ca417bdb6949f3adc_b.jpg& data-rawwidth=&1164& data-rawheight=&488& class=&origin_image zh-lightbox-thumb& width=&1164& data-original=&https://pic2.zhimg.com/v2-81ffccb38f7e3c8ca417bdb6949f3adc_r.jpg&&&/figure&&p&这篇文章以及下一篇文章是对Sergey Levine提出的GPS算法的拓展和改进。关于GPS(Guided Policy Search)这个算法,我一直觉得不是一个好的算法,至少未来这个算法我认为没有必要(为什么之后说),但是这个算法展示性比深度增强学习算法强,能够直接应用到真实的机器人上。先说一下深度增强学习应用到机器人上最大的困难,就是&b&采样!&/b&我们可以在仿真环境中千百万次的训练机器人,但是我们没办法在真实环境中这么做。时间不允许,机器人也不允许。以此同时,完全的高维输入,高维输出做机器人控制目前仍是困难很大的。&/p&&p&&b&那么GPS是什么呢?&/b&&/p&&p&它的想法非常简单,就是把问题先分解成不同的初始条件,比如开门,有的是这个角度,有的是那个角度。然后,针对不同的条件单独训练一个局部策略Local Policy。那么这个训练方式他这里&b&不管了!!!也就是你想用什么传统的控制算法都可以!&/b&然后有了这些可以用的策略之后,就利用策略采集样本,只是把输入变了,比如变成视觉输入,然后利用样本训练一个网络来代替这些局部策略,也就是模仿学习Imitation Learning,通过这种方式实现视觉伺服。我表示&b&GPS很没意思。&/b&&/p&&p&&b&为什么没意思?&/b&&/p&&p&就说机器人开门这件事吧。我们要实现视觉控制,也就是让机器人看着打开门,和人一样。我们希望即使门放在不同的角度位置机器人也可以开。按照深度增强学习做法,那必须是End-to-End啊,输入视觉信息,输出控制,然后训练。从Deep Reinforcement Learning for Robot Manipulation这篇我们大概可以猜测出,这样做失败了,所以那篇文章并没有使用视觉输入。但我现在就要视觉输入这么办?&/p&&p&&b&Imitation Learning!模仿学习&/b&&/p&&p&神经网络啥都能学习,因此只要我们能够收集到好的输入输出样本,我们就可以训练。模仿学习就是这么干。我们可以利用人类获取样本。比如人拿着机械臂做几百次开门动作,然后记录这些动作作为样本进行训练。但是只是用人比较麻烦,不用人就用机器人控制的算法,比如LQR,我们就有model怎么啦。我们先利用机械臂的model信息和门的精确信息来优化出一条最优轨迹,然后这不就是样本了吗?为了实现神经网络的通用性,我们面对不同的门的角度位置弄多条对应的最优轨迹,然后收集所有样本进行训练。在拓展一下,就是反过来利用训练的神经网络生成样本,然后反过来让控制算法进行优化。&/p&&p&&b&所以,虽然GPS能够实现视觉伺服控制,但是其中间过程一点也不单纯。使用了太多额外的信息来做训练。&/b&&/p&&p&在我看来,训练时也只使用视觉信息,不使用额外信息才是有用的算法。GPS最致命的地方也在这里,这个开门可以精确建模,可以有额外数据,但是很多其他任务可没有那么多额外数据可以弄。&b&GPS本质上不具备自学习能力,而只是传统方法的神经网络化。&/b&监督学习无法使机器人超越传统方法。&/p&&p&那么这篇文章又做了什么事呢?将LQR用一个model free的RL算法替代。PI2这个算法之前不是很了解,看了文章感觉就是一种进化算法。基本思想就是采用多种路径,然后让路径概率向着损失较小的方向靠。和CEM(交叉熵方法)也差不多。就是对于Cost,采样概率还有参数更新方式不一样。&/p&&p&有了PI2算法,GPS就可以做到model free了。但是训练过程还是一样。PI2算法的使用过程中并不使用视觉信息。只是因此采用的方法不一样(比起LQR),能够通过训练来解决开门这种间断连续控制问题(要先让机械臂移动到门把手那里,然后抓住,旋转,打开)。在我看来,直接用深度增强学习算法比如DDPG甚至REINFORCE来训练local policy不就完了,最后再综合所有样本监督学习一个,效果肯定好。&/p&&p&总的来说,GPS看似有用,实则鸡肋,改进它意义不大,还不如研究如何实现少样本学习。&/p&&h2&5 Collective Robot Reinforcement Learning with Distributed Asynchronous Guided Policy Search&/h2&&p&&figure&&img src=&https://pic3.zhimg.com/v2-a6e509a94a369ad86dc97e_b.jpg& data-rawwidth=&1654& data-rawheight=&534& class=&origin_image zh-lightbox-thumb& width=&1654& data-original=&https://pic3.zhimg.com/v2-a6e509a94a369ad86dc97e_r.jpg&&&/figure&这篇文章其实和Deep Reinforcement Learning for Robot Manipulation很类似,只是针对的算法不一样,说白了就将Guided Policy Search拓展成并行异步的版本,从而可以实现多机器人协同训练。&/p&&p&----------------------&/p&&p&下面的分析来自&a href=&https://www.zhihu.com/people/li-yi-ying-73& class=&internal&&李艺颖&/a&:&/p&&p&从架构方面,这十分契合云机器人的主旨,机器人可以将它们各自的经验通过网络传递给其它机器人。斯坦福人工智能百年报告之《人工智能与2030年的生活》中也指出以家用机器人为例,多机器人协同能够使机器人“共享更多家庭内收集的数据集,反过来能提供给云端进行机器学习,进一步改进已经部署的机器人。”本文就是鉴于考虑到真实世界中环境具有多样性和复杂性,所以想到让机器人将自身经历传递给彼此,使它们在环境中相互配合来学习技能,同时机器人也基于自身任务的特定样本改进局部的策略。实验采用4个机器人,任务是基于视觉学习开门,4个机器人对应的门的姿态和外观也都有所不同,采用的算法是GPS,在它们反复尝试和共享经历中不断提高任务执行水平。多机器人提高了样本的多样性,提高了学习的泛化能力和可使用能力。&/p&&br&-----------------------&br&&p&算法的做法依然是很简单。一句话就可以概括。就是几个机器人分别有一个local policy来优化,每个机器人面对的场景都不一样。然后训练,将样本上传服务器,在服务器上监督学习一个神经网络,然后用这个神经网络Global Policy来辅助采样优化local policy。&/p&&p&只能说多机器人协助必然能够提升学习训练速度,但是这种idea非常简单,算法的改进也是非常简单。当然,我们也不得不承认,Google的整个实验难度很大,要训练好很难,甚至这个训练用的机械臂都是Google自己造的(话说Google高层不让卖)。&/p&&h2&6 小结&/h2&&p&Google似乎想惊艳一下大家,一次发四篇文章说他们的机器人进展。但是很可惜,从具体文章的内容和贡献来看,并没有太多惊艳的思想和效果。多机器人协作是必然,核心还在于算法的改进。当然,我们也必须承认,Google能够实现让机器人完全使用视觉来开门是一个不错的Demo,只是这个Demo是在当前算法框架下必然可以实现的,不过也只有土豪的Google能这么做。&/p&&p&最后,大家也看到了,&b&让机器人学会开门竟然是21世纪的今天人类最前沿科技都还没很好解决的问题&/b&,可见人类的文明程度是有多低。但,这也就是我们研究机器人实现机器人革命的机会!&/p&&h2&声明:本文为原创文章,未经允许不得转载。另外本文的图片都来自于本文介绍的四篇paper和网络。&/h2&
本文由我和共同撰写。1 前言前几天也就是号,Google Research Blog上发表了最新的Blog,介绍他们在机器人上的工作:现在Google们都喜欢发文章+写博客的套路,似乎不太需要我们做面向大众的解读了。因此,本文决定不介…
&p&3.28&/p&&p&这破回答居然有 4k 赞,知乎药丸。&/p&&p&----------&/p&&p&7.2 更新&/p&&p&被私敲的烦了,私信不回,要问问题可以去值乎付费提问。&/p&&p&对于绝大部分零基础转行的同学来说,你要做的不是想着怎么快速入门前端,而是应该补回计算机基础知识,拥有最基本的专业素养。可以直接拉到答案的最后了……&/p&&p&统一更新下前端现状:&/p&&p&文本编辑器:VS Code + 一系列插件&/p&&p&包管理工具:npm&/p&&p&JS:紧跟每年更新的ES标准,强烈推荐上TypeScript&/p&&p&CSS:多了个PostCSS,以及CSS Modules等一系列模块化方案……&/p&&p&框架:React全家桶,Vue全家桶,本身就是全家桶的Angular(至少擅长其一)&/p&&p&构建工具:webpack&/p&&p&流程工具:npm script足够了,实在不够再用gulp&/p&&p&额外值得强烈推荐的:函数式编程,响应式编程(RxJS)&/p&&p&----------&/p&&p&3.5 更新&/p&&p&大家还是别点赞了吧,这个答案似乎给了很多人前端入坑很简单的错觉,十分惶恐…&/p&&p&----------&/p&&p&11.25 更新&br&至今 1570 赞,3452 收藏,有点被吓到了。&br&其实这个回答主观性很强,不适合大多数人,所以收藏的意义不大。&br&----------&br&原答案:&/p&&p&五角场文秘职业技术学院,大三狗一枚。&br&刚刷完IFE最终任务之一,来分享下自己过去三个月的前端学习经历。&br&我的提交 &a href=&//link.zhihu.com/?target=http%3A//ife.baidu.com/review/detail%3FworkId%3D11105& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&百度前端技术学院&/a&&/p&&p&前端是干什么的我就不赘述了,推荐看这个答案:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么? - 张秋怡的回答&/a&&br&直接进入正题。前端入门是一个螺旋上升的过程,既要反复看书,也必须抓紧时间实践。&/p&&p&IFE是一个绝佳的练习平台,题目都是开源的。15年的学习资料比较多,而16年的题目题量较大,难度也稍大,新手很容易在task1-6丧失信心,那个任务实在是太麻烦了。所以我个人建议先刷15年的task1和task2,都是很基础的题目了,不会做也可以参考别人的代码。&/p&&ul&&li&IFE2015:&a href=&//link.zhihu.com/?target=https%3A//github.com/baidu-ife/ife/tree/master/2015_spring/task& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ife/2015_spring/task at master · baidu-ife/ife · GitHub&/a& &/li&&li&IFE2016:&a href=&//link.zhihu.com/?target=http%3A//ife.baidu.com/task/all& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&百度前端技术学院&/a&&/li&&/ul&&p&我把这三个月大致分为三个阶段。&/p&&p&&b&1. HTML + CSS&/b&&br&前端的入门门槛极低,体现在HTML和CSS上。运行环境就是浏览器,推荐Chrome。你需要的只是一个文本编辑器,推荐Sublime Text 3,有不少好插件比如Emmet,谷歌搜一下很容易了解到的。当然你非要用记事本的话,也不是不行的。刚入门查阅资料可以用 &a href=&//link.zhihu.com/?target=http%3A//www.w3school.com.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&w3school&/a& 或者 &a href=&//link.zhihu.com/?target=https%3A//developer.mozilla.org/zh-CN/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MDN&/a& 。&/p&&p&HTML和CSS不是编程语言,前者只是结构标签,后者则是样式配置,入门是非常简单的。网上资料也有很多,推荐慕课网 &a href=&//link.zhihu.com/?target=http%3A//www.imooc.com/view/9& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HTML+CSS基础课程&/a&。&br&我当时是看了一本书 &i&Head First HTML and CSS&/i&,讲得浅显易懂,不过价格比较感人,也是只翻一遍的书,没有必要买了。&br&迅速刷一遍慕课网,对HTML和CSS有个大致印象就好。想巩固HTML标签可以去看看16年的task1-1。&br&HTML5的API可以先放一放,回头再看。&/p&&p&接下来就是深入学习CSS了。推荐:&/p&&ul&&li&《CSS权威指南(第3版)》。很枯燥的一本书,但我确实不知道哪本书更适合了。花两三天硬啃下来就好了。属性细节不必记忆,以后用到肯定要再查的。着重点放在大局上,比如盒模型,浮动和定位这些,抓住重点快速过一遍。&/li&&li&《CSS3 专业网页开发指南》。CSS3也是需要掌握的内容。但这里还是以了解为主,知道CSS3有什么内容就好,记忆属性是枯燥且毫无意义的。&/li&&/ul&&p&&br&&/p&&p&以上内容用时5天左右,下面是实践。&br&学了几天HTML和CSS了,应该也有点成果了。打开IFE2015 task1,写个静态页面吧。&/p&&p&我X,完全写不出来。&/p&&p&这是正常的。去看下别人的代码吧,看一小部分就开窍了。忘掉的属性就查书或者w3c,多尝试,不断踩坑才有进步。&/p&&p&画完第一张图后,别着急往下写。你的代码肯定会有如下问题:&/p&&ul&&li&胡乱的代码缩进&/li&&li&毫无章法的属性顺序&/li&&li&满页的div&/li&&li&不停地写id和class&/li&&/ul&&p&重写吧,是的。重写之前先看一份代码规范 &a href=&//link.zhihu.com/?target=https%3A//github.com/ecomfe/spec& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - ecomfe/spec: This repository contains the specifications.&/a&。当然代码规范不是唯一的,我最早看的是这一份,所以代码风格也一直维持到现在。&br&再去看一下别人提交的代码,多看几份。当然自己也要判断,不能听风就是雨啊,人家写得不好你再去重写一次,等于你也有责任对不对。&br&开始重写了,会发现功力大增,写代码速度也快了很多的。&br&写到第三张页面的时候,应该比较熟练了。如果看到布局就大概知道应该怎么写了,那就可以进入JavaScript的学习了。&br&以上内容用时10天左右。&/p&&p&进阶部分可以回头再看:&/p&&ul&&li&掌握预处理工具Sass,自动化工具Gulp。&/li&&li&阅读Bootstrap源码。&br&&/li&&li&《CSS揭秘》,极其惊艳的一本书,涵盖了CSS3的很多奇技淫巧,虽说有些地方不太实用,但让人眼前一亮,很值得看。&/li&&/ul&&p&&br&&/p&&p&&b&2. JavaScript&/b&&/p&&p&这是至关重要的阶段。&/p&&ul&&li&强烈推荐《JavaScript高级程序设计(第3版)》,俗称红宝书。前七章是重中之重,必须反复阅读,直至完全理解,期间可配合其他书一起读。DOM,事件流,表单,JSON,Ajax与最后几章也相当重要。其余章节可以略读或跳过(比如浏览器嗅探,XML以及那些列举大量API的章节,完全可以用到再查)&/li&&li&推荐《JavaScript语言精粹》,俗称蝴蝶书。超薄的一本,半天就可以看完。JavaScript是一门有很多坑的语言,我个人是喜欢把这些坑点全部搞清楚的,但这本书却避而不谈了,剩下的也就是所谓的“精粹”了。但清晰地过一遍知识点总是好的。&/li&&li&强烈推荐《你不知道的JS》。精彩至极的一本书,将JavaScript的坑一网打尽。之前搞不懂的问题,比如闭包,this之类的都可以在这里找到答案。&/li&&li&ES6也是必学的内容,推荐阮一峰老师的《ES6 标准入门》。但这本书以API居多,所以还是留个大概印象,以后写到类似的地方,查一查有没有ES6更简洁的写法就好,不必死记硬背。以及需要学会Webpack的使用,Babel和模块化就靠Webpack了。&/li&&li&不太推荐《JavaScript权威指南》,也就是犀牛书。那就是一本字典……&/li&&/ul&&p&&br&&/p&&p&进阶:&/p&&ul&&li&《JavaScript设计模式与开发实践》,设计模式是必须了解的内容,这本是写得不错的。&br&&/li&&li&《高性能JavaScript》,红宝书作者的另一力作,讲了一些优化技巧与性能瓶颈问题,值得一读。&/li&&/ul&&p&&br&&/p&&p&以上内容用时1个月左右,中途可穿插IFE2015 task2的题,比2016年的要简单。&br&这些书全部刷完的话,应该可以跟人谈笑风生了。&br&开始实践,IFE2016阶段二的题,想怎么刷就怎么刷吧。如果有编程经验的话,应该没什么压力了。&/p&&p&&b&3. JavaScript框架&/b&&br&这部分就比较自由了,每个人点的技能树都不一样的。前端的发展是爆炸式的,换工具比翻书还快,所以还是以看文档为主了。&br&目前主流框架经常被提及的是React,Angular,Vue。知乎搜一搜就有相当多的优秀答案了。不过这个答案也有时效性,说不定过两年这些框架全都被淘汰了呢【逃&br&学习至少一种框架,把IFE2016刷通关吧。耗时1个半月左右。&/p&&p&进阶:看各种源代码。这也是我最近打算做的事情,但是好像期末考要到了TAT&/p&&p&最后补充一下,计算机基础知识是很重要的。由于本人有OI的经验所以稍微占点优势。再推荐几本书,抽空还是要看看的:&/p&&ul&&li&《深入理解计算机系统》,CSAPP,也是我们专业这学期的课程(但是我的专业明明是EE啊)。&br&&/li&&li&《计算机网络 自顶向下方法》,看名字就知道必读了吧。&br&&/li&&li&操作系统好书挺多的,推荐一本 &i&Operating Systems: Three Easy Pieces &/i&,英文不够好就《现代操作系统》吧。&br&&/li&&li&算法和数据结构,推荐两本:《算法导论》《数据结构与算法分析》。似乎算法和数据结构与前端关系不大,但作为一个码农,不要求你写红黑树,至少快速排序和二分查找这种要会写的吧。&/li&&/ul&&p&话说这几本中文的,都是机械工业出版社的啊……&/p&&p&后记:其实学的内容越多,就越感到自己知识面的匮乏。这个答案本应还有4,5,6甚至更多的,但由于本人只学了三个月,水平有限,目前只能达到这个程度了。写得不对的地方,望大牛们指正,轻拍。谢谢大家~&/p&&p&------------&/p&&p&惊人的点赞收藏比……只收藏不点赞的都是坏银QAQ&/p&
3.28这破回答居然有 4k 赞,知乎药丸。----------7.2 更新被私敲的烦了,私信不回,要问问题可以去值乎付费提问。对于绝大部分零基础转行的同学来说,你要做的不是想着怎么快速入门前端,而是应该补回计算机基础知识,拥有最基本的专业素养。可以直接拉到答…
&p&&b&以下内容写于 2015 年 3,4 月份。&/b& &b&如今行业不景气,如果不是真的对这行感兴趣或者学习能力很强的人,不再建议转换行了,坑多。&/b&&/p&&p&我来回答一下。&br&两个月前,我在知乎上的签名还不敢加上Andorid开发的,而现在,则有了这份底气。&/p&&p&首先说个人背景,大四学生,专业机械类,学校只教了C语言基础,其他编程知识均为自学。&br&大二时准备学Android开发,看了一点java基础的语法知识,然后不了了之。&br&大三因为自己参加的项目,接触C++,用MFC写了个简单的桌面软件。&br&大四开始找工作,由于之前在机械公司的实习经历,感觉自己不喜欢机械类的工作,也不适合,开始改简历,投一些计算机类的公司,可惜并不是很理想,期间面了一家Android开发的实习生,人家提问,好多不懂,面试完感觉自己好渣。那是去年12月份左右。&/p&&p&面试失败回来后,不再海投简历,觉得与其抱着侥幸的心理去让别人给你一个机会,不如练好技术,给自己更多的选择机会。&/p&&p&12月份到2月初放寒假那段时间,每天白天去另外一家公司实习,回来就背着电脑去图书馆,看书,敲代码,直到图书馆熄灯。每天坚持,周末更是泡在图书馆。啃完郭霖大神的那本《第一行代码》,开始对一些大致的概念有所理解,Android的基础知识也掌握了一些。&br&看完书前面一大半的时候,我花了几天时间,写了一个拨号软件,Google原生的拨号不带T9拨号,我就自己写了一个,现在看来很简单,界面也很粗糙,不过那时还是成就感满满的。在这个问题&a href=&http://www.zhihu.com/question/& class=&internal&&如何评价《第一行代码》一书? - Android&/a&下可以看到,第一名的匿名答案就是。&/p&&p&后来就是放寒假了,寒假之前开始写一个软件,『在读』,就是记录你阅读纸质书进度的一个软件,由于觉得功能不实用,已经停止开发了。下面是一些简单的截图。&/p&&figure&&img src=&https://pic1.zhimg.com/ba1bb4ccc0cdf07faf578_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&720& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&https://pic1.zhimg.com/ba1bb4ccc0cdf07faf578_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/2dcf120aa254af1159338_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&720& data-rawheight=&1280& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&https://pic1.zhimg.com/2dcf120aa254af1159338_r.jpg&&&/figure&&p&&br&&/p&&p&功能很简单,就是记录一本书的阅读进度,高级一点的就是加入调用豆瓣的API,可以根据关键字联网查询一些书的信息,如上图所示,点击进去可以看到书籍的大致信息。&/p&&p&寒假在家写这个软件,并开始看《Java编程思想》,开始系统地理解一些Java的知识。&br&寒假过得很充实,每天看书,做笔记,有时连着好几天晚上敲代码敲到凌晨2点,可是不觉得累,因为喜欢这种感觉,看着自己写的软件在手机上跑起来,特别开心,这也是我为什么转行做程序猿的原因吧。&/p&&p&凭着这段时间的学习,今年开学初,投了几个Android开发的实习生职位,基本上都获得了面试机会,技术面问的那些问题,自己在写上面这个软件时都多多少少遇到过,所以基本上都没问题,然后陆陆续续拿到一些offer。现在在其中一家公司实习,职位就是Android开发。&/p&&p&最近自己写的一个习惯养成的App上线了,满满的成就感。&/p&&p&虽然功能简单,界面也简洁,但是看着自己写的一行行代码,一点点改进界面,最后得到一个自己满意的结果,还是很开心的。 : )&/p&&p&贴图一张吧:&/p&&figure&&img src=&https://pic2.zhimg.com/cfae3b24b86dbc58f939e5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1690& data-rawheight=&2857& class=&origin_image zh-lightbox-thumb& width=&1690& data-original=&https://pic2.zhimg.com/cfae3b24b86dbc58f939e5_r.jpg&&&/figure&&p&(目前只上线了应用宝,&a href=&//link.zhihu.com/?target=http%3A//android.myapp.com/myapp/detail.htm%3FapkName%3Dcom.jaeger.justdo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&去做 &/a&
不过应用宝的下载链接有点问题,可以访问&a href=&//link.zhihu.com/?target=http%3A//a.app.qq.com/o/simple.jsp%3Fpkgname%3Dcom.jaeger.justdo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&去做 下载&/a& 下载)&br&(4月7日 豌豆荚上线:&a href=&//link.zhihu.com/?target=http%3A//www.wandoujia.com/apps/com.jaeger.justdo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&「去做」安卓版免费下载&/a&)&br&【不是广告,就是一个个人的作品,如果觉得还行,可以下载试用下哈~】&/p&&p&以上罗嗦了这么多,讲了本人从只有一点编程基础到找到Android开发工作的经历,没有大牛那么厉害,只是一番很平常的经历,希望题主你可以得到一些你想要的经验。&/p&&p&&b&回答题主的问题:&/b&&/p&&ol&&li&&b&觉得自己有毅力,有信心的话,同时学习能力比较强,那就自学,不差钱的话就报班吧,找个靠谱的。&br&&/b&&/li&&li&&b&第二个问题我已经回答了。&/b&&/li&&li&&b&第三个问题,我觉得起码郭霖的《第一行代码》上那些知识点要掌握的吧。&/b&&/li&&/ol&&p&&br&&/p&&p&如果题主自学的话,以下是建议:&/p&&ol&&li&&b&推荐书籍,郭霖的《第一行代码》,很好的Android入门书。&/b&&/li&&li&&b&Java的话,一开始不推荐《Java编程思想》,没有编程基础的有点难懂,你可以看看网上教程之类的。&br&&/b&&/li&&li&&b&多敲代码。书上的例子,不要看着觉得会,就不去敲了,很多时候你自己敲一遍,才发现存在很多问题,试着去解决这些问题,你会学到很多。&/b&&/li&&li&&b&在有一定基础上,可以想着写一些个人的项目,思考要添加什么功能,怎么实现,不懂的就Google。&br&&/b&&/li&&li&&b&学习网站的话,Android开发的官网不翻墙是打不开的,可以考虑买个vpn或者别的途径,翻墙去看,反正我是习惯了Google,vpn一直挂着。贴一个我自己的书签。&a href=&//link.zhihu.com/?target=http%3A//www.importnew.com/8229.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&安卓开发者必备的42个链接&/a&&/b&&/li&&li&&b&推荐stormzhang 的Android学习之路博文。&a href=&//link.zhihu.com/?target=http%3A//stormzhang.com/android//learn-android-from-rookie/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Android学习之路&/a&,很赞,一些Android初学者资源都很赞,仔细看完这篇,你会学习到很多。&/b&&/li&&li&&b&开发工具下载,同样是墙的问题,这里有不需要翻墙的资源。&a href=&//link.zhihu.com/?target=http%3A//www.androiddevtools.cn/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AndroidDevTools&/a& 配置中遇到的问题自己多搜索。&/b&&/li&&li&&b&最后再说一下,推荐Android Studio,真心好用。 = =&/b&&/li&&/ol&&p&&b&最后最重要的就是,要有兴趣,有坚持的决心,不要轻易放弃,遇到问题多看看文档,多搜搜,不要失去信心,慢慢成长起来,不要急功近利。&/b&&/p&&p&&br&&/p&&p&&b&加油!&/b&&/p&&p&以上内容写与 2015 年 3,4 月份。&/p&&p&&b&最新开辟了专栏:&a href=&http://zhuanlan.zhihu.com/code-monkey/& class=&internal&&Android开发学习指南 - 写代码的猴子 - 知乎专栏&/a&&/b&&/p&&p&##################&/p&&p&Android学习QQ群:(加群请正确回答问题)&/p&&p&#################&/p&
以下内容写于 2015 年 3,4 月份。 如今行业不景气,如果不是真的对这行感兴趣或者学习能力很强的人,不再建议转换行了,坑多。我来回答一下。 两个月前,我在知乎上的签名还不敢加上Andorid开发的,而现在,则有了这份底气。首先说个人背景,大四学生,专…
&b&这是个很长的故事,讲述的是一名电竞玩家转行文字编辑后的程序历程与开发感悟。&/b&&br&&br&&b&&b&-----------------&/b&&/b&&br&&b&目录&/b&&br&&b&-----------------&br&&/b&&ul&&li&&b&序&/b&&/li&&li&&b&引言(一)&/b&&/li&&li&&b&引言(二)&/b&&/li&&li&&b&一,奇葩的转行&/b&&/li&&li&&b&二,第1个电商项目&/b&&/li&&li&&b&三,一个阶段小结&/b&&/li&&li&&b&四,第2个电商项目。&/b&&/li&&li&&b&五,第3个电商项目(上)&/b&&/li&&li&&b&六,第3个电商项目(下)&/b&&/li&&li&&b&七,第4个电商项目&/b&&/li&&li&&b&八,前端开发者快速升级通关的一些个人经验总结&/b&&/li&&li&&b&九,谈谈互联网项目环境对于前端开发者向高阶晋级的影响&/b&&/li&&li&&b&十,个人职业发展的超级野路子——准职业选手转编辑再转php开发再转前端开发&/b&&/li&&li&&b&十一,个人素养与coding(一)——我是如何反复“打怪”强化“代码素养”的&/b&&/li&&li&&b&十二,个人素养与coding(二)——电竞/编辑经历对开发基本功素养的影响&/b&&/li&&li&&b&十三,个人素养与coding(三)——开发者的战术素养和程序的正与邪,开发者的道不同不相为谋&/b&&/li&&li&&b&十四,个人素养与coding(四)——开发者的战略素养对职场嗅觉的影响&/b&&/li&&li&&b&&b&后记:第4个电商项目——分裂,生存,可能还有崛起。&/b&&br&&/b&&/li&&/ul&&br&&b&&b&======================&/b&&br&这里是序。&br&&/b&&b&&b&======================&/b&&/b&&br&&br&&b&这是一篇长文。&/b&&br&&b&&br&任何一篇长文或专题,都是应该有一个序。&/b&&b&这是做为一个合格的媒体编辑/记者非常重要的技能点,要反反复复地训练。我曾经训练过很多次,但时间已然有些久远,已经好久没有动笔写这样的序,借这个机会,&/b&&b&让我再次尝试做好一名编辑该做的事情。&/b&&br&&br&这篇文章主要是对我个人这两三年从事前端开发以来的“升级打怪”经历的回顾和总结,进而来回复题主对于“&b&前端开发工程师&/b&”这一职业存在怎样的发展空间,而它进入高阶之后需要具备怎样的能力以及这些技能或知识可以从哪些地方、项目或企业中获取得到的,等前端coder职业发展上存在疑惑的问题,来发表一些我的个人见解。&br&&br&然而,我是没权力也没有义务告诉任何一个人Ta未来的路该怎么走,但却可以告诉你我是如何走的,而且我的路子是很野的,真的很野,对于很多大咖来说,绝对不能说是成功的,但对于没有机会进入一流互联网项目历练的大多数程序开发从业者而言,或许我的经历会有那么一点点借鉴的意义。&br&&br&其实我曾想过,是不是要把自己这个跳跃性如此之大的从业经历写下来,是持有怀疑态度的。曾经某猎头在把我推荐给BAT某家时,建议我不要把媒体编辑的经历做太详细的描述或直接去掉,而我确实也用一些编辑手段弱化了那段经历,还是将它放在简历里面。我觉得,这不是什么问题,写文字一直是我的兴趣,并且曾经是我的谋生手段,而且还做得不算太差,只是和程序开发的关联性少了一些。&br&&br&当然了,是获得了电话面试的机会,但第一轮就被KO了,那只是1年多以前事情,但3个月等于1年的电商开发节奏,现在我已经忘记了当时的情形,只记得那个电话来到的时候我刚刚通宵完成一个项目的公关,那会儿脑子是一塌糊涂的。&br&&br&当然,那时我的能力应该达不到人家的要求,但如果现在还有从来一次的机会,我觉得自己应该有能力拿下这样的offer,但暂时没有这个必要。&br&&br&请别误会,并不是说BAT级别的offer对我没有吸引力,而是对于现阶段的我而言,暂时不能为了这样的机会离开现有的项目和团队,而且现在的项目可以让我做擅长的和感兴趣的事情,并基本都能够按照自己的意志去落实下去,而大公司一般只能是做螺丝钉,不能有太多个人意志的,而且好的机会已然被老人们占据了,只是为了去镀金而去当别人的打手或救火队员,这显然是不理性的。&br&&br&另一方面,我其实发现了程序开发者要想快速成长,不一定非要进入BAT或一线的互联网企业中进行历练,创业项目一样可以快速成长,只要你把握好机遇和机会。请相信我,这是绝对是可行的,这就是我想把自己的经历写下来的原因。&br&&br&ok,在开始之前,我觉得预先告诉各位看客,作为一个由平面媒体编辑/记者转行做互联网开发的Coder,本人的码字功底还是不错的,因此篇幅会很长,很长,很长。&br&&br&如果你确实不感兴趣,建议不用浪费时间,聊技术或开发理念终归是有些枯燥的,也可能存在我写得不够清楚而让你看不明白的地方。不过,如果你真的对一名先是由编辑大跨行转php开发,再由php转前端切图,然后是如何用2年时间从月薪8K涨到月薪35K的职业经历感兴趣的话,那就一直往下看。&br&&br&此外,如果这篇文章有幸被某个单位相中,想转载的话,那么该给这篇文章起一个怎样的标题,我就不再代劳了,标题党的功力已经退化得差不多了。还有,我是知道有不少错别字的,但已经逃离媒体行业很久,好不容易不再为错别字太多而担心稿费被扣,那么我真的不想再为这个问题而烦恼&b&。&/b&这不再是我的职责,而是你的。不砸别人的饭碗,这是做人的本分,不是吗?&br&&br&当然,我的版权意识是比较浓的,毕竟咱也做了好多年的写手、编辑、记者。我的意思——转载可以,但记得署名,只要署名(知乎的名字就可以了),永久免费。但对于不署名的,我保留追究的权利,并至少按1000字/千元(RMB)的稿费标准收取稿费。不要觉得贵,这是我当年做写手的后期可以拿到的最高稿费标准,也就是我认为我的文字值这个价,请按此执行,不谢。&br&&br&&b&再劝一次,篇幅真的很长。&/b&&br&&br&&br&=======&b&引言1&/b&=======&br&&br&一夜之间来了这么多赞,倍感欣慰。&br&&br&正好今天我们部门要搬家,正好没有发版需求和特紧急的开发任务。我打算偷懒让人帮我打理桌面,哈哈,我好抽时间,继续补充一些关于前端开发或程序开发方面的想法,希望把这个话题扩大,让更多人来关注和讨论,期待真正的前端大牛来分享职业发展的经历,会有人需要的。&br&&br&顺便说一声,我还是想求赞的。这不违法吧?&br&&br&嗯,先让我回想一下,为啥这个题目会让我愿意投入这么多精力来码字,愿意出来现身说法?&br&&br&我觉得,这肯定是一个好问题。题主想要在职业选择迷茫期获得前辈提供的经验,而决定是否要继续走前端开发这条路线。事实上,这个问题具有普遍性意义。不管是在校学生,还是工作了,但依然对前端这个工种到底有啥可玩的,它能发展到哪个位置,前端能出技术总监或CTO吗?&br&&br&男怕入错行,女怕嫁错郎。因此,任何的回复都会对题主或关注这个话题的人的职业决策带来影响。因此,我才会对意识流的高票答案用了一些刻薄的语言来回复,并不想卖弄文字技巧,先说声抱歉,但我是故意。&br&&br&职业路径选择,是一个严肃的话题。&br&&br&补充在最后,是关于个人对程序修养的看法或理解。为啥说这个?这和前端开发或各种程序员的职业发展有啥niao关系吗?我认为是有关系的,而且很大,约往高处,关系越明显。可以这么说,个人的修养好坏在很大程度上会决定一个人的职业发展高度,写代码也是一样的。这似乎很哲理化,但我的观念就是这样的。&br&&br&当然,也是个人的观点,你可以不用同意,甚至觉得我在扮高调,放屁。但我希望你回得有理有据,咱们用文字约战。&br&&br&==========引言2===========&br&&br&暂时没有看到让人满意的回复,忍不住回复。&br&&br&先对题主说:这个问题其实有很多类似的提问了,这里有一个集合前端开发知识的整理文章,&a href=&http://www.zhihu.com/question/& class=&internal&&知乎上,前端开发领域有哪些值得推荐的问答? - JavaScript&/a&,在里面可以找到很多你赶兴趣的问题与答案。&br&&br&开始之前,我要对于目前的高票答案进行吐槽。&br&&br&高票答案说的确实是有点点道理的,但对于从事前端并陷入迷茫的提问人来说,绝对是然并mei啥卵yong的。不知为何大家给高票,如果只是因为答主用了一个新鲜的说辞,而大家觉得有点意思就顺手点了个赞,那么,我认为这对于知乎的严肃性是一种伤害,当然对于知乎的娱乐化则是一种推动。也可能,大家更喜欢意识流的答案,抑或是,我太严肃了。&br&&br&好吧。我尝试用严肃又有点轻松文字表达方式来回答题主的疑惑。到底前端的路可以怎么走?&br&&br&&b&纯属个人路线,仅供参考。如有雷同,请勿代入。&/b&&br&&br&&b&==========================&/b&&br&&b&一,奇葩的转行。&/b&&br&&b&==========================&/b&&br&先var身份。&br&&br&首先,前端一枚。30++++了,算是老猿吧,年纪不小了。至今没啥拿的出手成绩,就喜欢coding,不谈天荒地老,只希望能写到写不动。&br&&br&其实,我也不知道自己的水平在什么段位,年初拿到了两个一线互联网的offer,被定位在相当于阿里P6/P7样子,也不知道怎么评的,自己觉得最多P5的水准,自感能力有限和性格不适合大公司,主要是被现在领导忽悠说那些大公司政治斗争非常厉害的,我又特担心自己EQ值太低,经不起考验被扫地出门而颜面无存也就放弃了,所以还是一起做电商创业项目比较实在,薪水别太离谱,有感兴趣的活干,说话分量也有那么一点,关键是上班能自由一点点,其实也挺好的。&br&&br&当然,不是本人逼格有多高,有些大企业还是比较向往,比如企鹅厂比如狼厂,但是人家看到我这种奇葩的半路出家的野路子和尚,就连HR初期的筛选都过不了,更别说去面谈做题什么的了。哎,说起来全是泪,伤心得一塌糊涂。不说这个,还是说开发经历吧。&br&&br&在开发人员里面,我的经历应该算是比较奇葩的。怎么个奇葩法呢?&br&&br&首先,做过几年的媒体编辑,对的,是平煤(对文字要求严格,错别字个数有严格限制的),客串过记者(采访过不少上市公司的总裁,如果说互联网的话,最牛逼的是现在京东的4个总裁之一,辛弃疾的后裔,如果他还记得我的话...),曾经写过不少IT媒体的专栏,比如电脑报、电脑商情报、电脑爱好者之类的媒体,后来看到IT媒体日薄西山,就半路出家。当然,不是去少林寺做和尚,只是转行做了另一种和尚——程序猿。&br&&br&嗯,跳跃似乎有点大,好多以前的同事不忍直视,其实自我感觉还好,因为业余就爱好博客,经常玩弄各种php开源博客系统,纯属自娱自乐,虽然没有参加过任何技术培训班(其实是因为写稿的真没几个钱可以用来交学费,都挺贵的),不过不管怎样,经过一通自我学习和努力,总算混进程序开发这一行当。&br&&br&现在每天就是T恤+牛仔+拖鞋+电脑背包,非常标准的coder。所以说,曾经是个文艺青年的我,在coder这个队伍里面,自我感觉文字控制能力还算是不错的,也不知道算不算个开发技能点?&br&&br&&b&==========================&/b&&br&&b&二,第1个电商项目。&/b&&br&&b&==========================&/b&&br&当然,奇葩的转型,那么开发的经历也就比较崎岖了。&br&&br&先干了一段时间的php+前端混合开发的外包,就是那种用开源项目套页面做简单功能的二次开发类型项目,触摸最多的如wordpress、phpcms、discuz!,drupal之类的,框架也玩弄了thinkphp、CI,不过做外包的开发累死累活也没几个钱,技术也不会有太明显提高。&br&&br&后来机缘巧合吧,前前前东家要做个电商交易平台,一时半会找到合适的负责人,感觉我还看得过去就被赶鸭子上轿转做了项目主管,负责整个项目基础设施建设,其实就是招人和分配任务等,不过干得最出色就是切图和切图,虽然当时开发方式还属于未开化的刀耕火种,于是乎将自己定位成前端是比较靠谱,而php的活就兼顾一点是一点。&br&&br&还好,虽然技术比较烂,但是那个项目发展得比较顺利,拿到了A轮(号称3000W美金,水分可能比较大,不过那也是两三年前的事情了,按互联网的3个月=1年的节奏,感觉真的好遥远),有钱之后引入了一批更牛逼的开发人员(主要是前端和php),虽然是我的手下,但那波人能力在当时来看绝对是很强,我也从来没敢把人当手下,甚至很多问题都得向人家请教,技术不行就要虚心请教,这没什么好害羞的。&br&&br&人家确实也比较牛逼,带来一些先进的前端开发理念,比如前端构建,前端MVVM,纯静态html+restful api构建web网站的开发方式。这些前端开发理念在2012年-13年那会儿绝对算是非常先进的玩意,那时nodejs还未成熟,而grunt也才出来不久,fis可能还在萌芽阶段,而各大互联网公司对于nodejs也只是内部尝试探索。&br&&br&后来,随着项目发展,前端的需求越来越复杂,需要尝试MVVM、SPA的前端开发技术了,而我作为当时项目的前端负责人,也需要对前端代码做了重构才能适应项目的发展要求,就是做类似这样的事情—— &br&&br&&a href=&http://www.zhihu.com/question/& class=&internal&&如何将一个已经上线的项目前端部分平滑过渡至组件化和工程化? - 前端开发&/a&&br&&br&这是我做的第一个的大规模的前端项目重构,当时的技术总监评估给到我的时间是10天,但我拖到了20天才基本完成,基本天天9-10的节奏。从现在的角度看,绝对是一次失败的重构经历。但是,个人从其中获得了很多有价值的经验,让我有机会尝试了许多新的前端技术,包括:&br&&br&1,构建工具使用gulp,那时才刚出来不久,之所以选择它也就是图个新鲜,这是前端开发的通病吧;&br&2,基于less预编译的css模块化,watch监控自动编译;&br&3,基于gulp.spritesmith的雪碧图自动构建,根据watch监控雪碧图目录,自动按目录生成sp图和一份less,less保存到CSS的模块中,进而自动触发less的自动编译;&br&4,js模块化是AMD方案,模块加载是用requireJS。我们只做了一点点小改进,那就是通过gulp自动生成require.config(开发和生产各一份),第三方js模块的路径根据一定规则自动构建,而不是手工配置。&br&&br&js模块按目录的方式打包,打包后的文件带上MD5戳,非覆盖式发布,解决AB版迭代和缓存问题。现在看来那种按目录整体打包方式是相当粗暴的,代码冗余非常严重,但无奈当时的水平也就这样而已。不过呢,将需要重复手工配置的有规律的前端资源调度实现自动化,其实就是前端工程化的雏形,至少是给我打开了前端工程化探索的大门。&br&&br&事实上,这种开发思维不是当时的我所能想到的,而是项目所引入的前端人才提供的开发思维。非常感谢这位同事,虽然一起共事的时间只有短短3个月,而我们也只是点头之交,甚至你现在还可能鄙视那时技术那么烂的我,但却还当着你的领导。不管怎样,感谢你让我看到了前端开发往深入发展的另一种可能。&br&&br&应该说在很多大公司的互联网公司里面,前端开发在很多年前已经有成套的而且相当成熟的前端工程化开发体系,但对我个人或那个项目的而言,这种方式在当时绝对是非常非常新鲜的,以至于我们那个团队的人逐步离开后(那波人中的前端现在基本也是前端领域的能手了,有在YY的有在VIP也有在UC的),接手的前端无力接管这种不太一样的开发模式,而又只好用原始的方式来生产新版的前端静态资源。当然,绝对不是我留了什么后手,而是交接了一个月多,也找不到能够很好理解的前端。&br&&br&大家别笑话,现在还有很多创业型项目的前端开发模式还依然停留在刀耕火种的开发模式下,包括很多已经名声在外的电商。在中国,电商从来都不是以技术为第一生产力的,技术很重要,但却没技术人想的那样重要,大家一开始都是以实现业务逻辑为前提,先把业务跑起来,领导管你用神马开发模式,老是不能按时出货就得滚蛋。&br&&br&有兴趣,大家不妨研究一下一些知名电商的前端代码,没有模块化的知名项目还不少(包括上市的项目),而甚至还有各种裸奔的代码在线上跑的,当然这些其实是创业期发展过快的后遗症,发展太快就可能没有很好的契机做基础设施建设,那么现有的业务代码过于复杂,后来的人只能在原来的基础上改改改成能满足业务需求就万事大吉了。这其实是国情决定的,业务需求的实现大于一切,电商业务发展就像高速的列车,一旦开动起来就很难停下来。&br&&br&这种情况下前端代码模块化和重构难度就非常非常大了,你见过哪个师傅敢说给一辆高速跑的列车换零件的吗?这种坑不是一般人有信心往里面挑的,谁碰谁倒霉。另一边却是代码生产和发布效率的日渐低下,可能只是改一段静态说明文字抑或是修正一个小bug,发布流程都要跑上个把星期才敢放上线,但是大家不也活的有滋有味的嘛。从业务的角度,技术真没那么重要了。&br&&br&&b&==========================&/b&&br&&b&三,一个阶段小结。&/b&&br&&b&==========================&/b&&br&扯太远了,回一下神。回归主题。前端的路该怎么走——&br&&br&我个人认为初中级前端要想快速进步,最好的方式:&br&&br&&b&①一定要在一个有多人协作的前端团队呆过。通俗地说,要和比你牛逼的人一起干过活,见过牛人长啥模样。&/b&&br&&b&②一定要找到一个在业务上对前端有较高要求的公司或项目,特别是各种奇葩甚至恶心的需求,对于技术人来说其实是快速进步的机会。&/b&&br&&br&第二点很重要。重要的事情要念3遍,不去外包公司,不去外包公司,不去外包公司。当然,第一点更加重要。但是,有牛人愿意带,在很多时候这属于小概率事件。即便有机会进入这样的项目,你也千万别期待别人会手把手教你什么。我只能告诉你,耳濡目染的能量还是非常强大的。&br&&br&因此,从两个角度看,楼主现在项目既对技术要求不高,也似乎没看到牛人,是时候换一家公司了。还是那个意思,技术的进步一定来自于业务的不停变化,当要求你必须实现各种奇葩需求,而你又把人家的需求给实现了,那么就意味着进步。&br&&br&当然,如果天赋异禀,而且非常自律自学能力也牛逼,就当我没说。至于能否偶遇牛人,这就得看个人造化了。如果你发现某项目的确有大牛存在的,薪资要求甚至可以降低以求获得快速进步的机会。技术人要明白,你能拿多少,在一定水位之前,基本和技术能力成正比关系的。&br&&br&&b&==========================&/b&&br&&b&四,第2个电商项目。&/b&&br&&b&==========================&/b&&br&似乎又跑题了。咱们继续聊程序人生。&br&&br&我的第一个电商项目的经历很不成功,但是可能由于公司管理和文化方面的原因,导致了那一拨我认为非常不错的技术开发人才来到项目后,均不到半年都另谋高就出走了。而我认为自己需要进一步提升,也就选择了离开。&br&&br&说得直白点,就是技术能力/经验都涨了,薪水还是万年不变(本来就够低的,不知道有没有人听说过给技术经理级别的薪水定位是月薪税前8K的电商项目呢?(TM)的我白痴痴的还一干就干了整整2年,虽然自己能力可能就值这么多而已,要么干脆点把我换掉要么给点点和岗位匹配的薪酬,对吧?),又没有更牛逼的人供你参考膜拜,离开是唯一的选择。你懂的。&br&&br&这个时候时间来到了2014初了,我跳槽到了一家做在线教育的电商创业项目,月薪Double,title是前端项目经理(这叫法有点点怪怪的),做的事情其实就是前端那一块的事情,我在这个项目前后只呆了半年的样子,加入这家公司只是为了看看自己到底值多少钱,其实项目并不是很感兴趣,只是给我Double的薪资,也就加入了。&br&&br&这个项目的总负责人其实是电信那边出来的,职业的资历可能比较牛逼,但对技术其实一概不通的,而我的直接上司是技术总监但感觉也不怎么懂技术,更像是个项目经理,只会催进度,而技术的细节怎么去实现,或者前后端分工协作的模式该如何界定,他并没有任何腹案。&br&&br&也正因为他们对此没有概念,而我从上一个项目重构经历得出了一些前后端分离的经验,给他们分享了一些最新的前端开发模式的信息,告诉他们前端这一块必须尽早进行模块化构建,而那时项目才刚刚开始,我正好有机会从头做起。对我来说是很好的实验机会。&br&&br&和上一版本相比,构建的流程没有太多变化,模块化只有css和js模块化,我只是对规范和文档要求严格一些,改善了一些构建工具的监控开发体验问题,比如gulp.watch监控文件编译,如果发生语法错误就自动跳出watch问题。&br&&br&如果要说一个比较大的改变,实际是项目需求带来的变化,该项目由于需要移动端开发,而移动端需要用到前端模板引擎(artTemplate),我们在维护模板引擎的时候需要反复地维护类似这样的代码:&br&&div class=&highlight&&&pre&&code class=&language-text&&&script type=&text/html& id=&adv_list&&
&div class=&adv_list&&
&div class=&swipe-wrap&&
&% for (var i in item) { %&
&div class=&item&&
&a href=&&%= item[i].url %&&&
&img src=&&%= item[i].image %&& alt=&&&
&script type=&text/html& id=&home1&&
&div class=&index_block home1&&
&% if (title) { %&
&div class=&title&&&%= title %&&/div&
&div class=&content&&
&div class=&item&&
&a href=&&%= url %&&&
&img src=&&%= image %&& alt=&&&
&/code&&/pre&&/div&html包裹在script内部,编辑器看起来不是很好看,而且多人一起搞容易冲突。于是,我就改进了前端mvc模板维护的机制,弄成这样子:&br&&figure&&img src=&https://pic3.zhimg.com/83d71e3f839e0bfc4a8f92c_b.png& data-rawwidth=&1047& data-rawheight=&797& class=&origin_image zh-lightbox-thumb& width=&1047& data-original=&https://pic3.zhimg.com/83d71e3f839e0bfc4a8f92c_r.jpg&&&/figure&&br&开发人员维护一份html,通过构建工具自动将html编译成AMD规范封装的js模块,模块id自动编译,比如tpl_index_flash就是tpl/index/_flash.html文件(加下划线就被编译封装在script标签内,如果不加下划线命名html文件,就直接转化为js对象),而这个文件会被编译保存在js/tpl/index.js模块中。操作模板就使用AMD模块的实例对象,但开发人维护的html比直接放在html结构中要简单多了,代码冲突也几乎没有了,而且这份模板放在js里面可以借助js压缩优化,也可以方便地实现异步调用模板,做加载上的优化。&br&&figure&&img src=&https://pic1.zhimg.com/a897fefedfd248e59a00914_b.png& data-rawwidth=&1355& data-rawheight=&796& class=&origin_image zh-lightbox-thumb& width=&1355& data-original=&https://pic1.zhimg.com/a897fefedfd248e59a00914_r.jpg&&&/figure&&br&&br&在这个项目中,我最大的进步就是项目需要前端mvc模式开发,使得我有机会进一步改善前端自动构建的htm模板维护机制(html模板编译js化),优化Watch即编译的前端开发体验问题。但是这时候,由于我的家庭原因,需要请长假(还少1个月),经过考虑后我办理了离职,但给这个项目的前端留下的前端工具和模式基本沿用了下来。&br&&br&&b&==========================&/b&&br&&b&五,第3个电商项目(上)。&/b&&br&&b&==========================&/b&&br&家里的事情解决后,我又得重新找工作。当然,技术和经验又涨了一点点,同时一些互联网求职的经验也涨不少(主要是在线教育这个项目有个UC出来的产品经理在这方面沟通比较多,偷师了一些经验),不再向以前那样白痴痴地不调研市场行情就傻乎乎地投简历。我学会了通过内推或猎头的方式找项目,至少行情比自己投简历要好很多。大家别笑话,可能还有很多人木有意识到这点,特别是像我这种半路出家没有在很像样的互联网公司呆过的同学,这方面的意识是比较滞后的,往往会落得同工不同酬的悲惨结局。&br&&br&2014年6月底,经过猎头推荐来到了一家化妆品起家的互联网电商。这个公司的业务规模很大,我进入的是一个会包含PC、H5、APP(安卓和IOS)等多端并行开发的海淘项目,进去的时候是以其前端开发主管的身份进去的。咱们是现实的屌丝一名,在薪水的提升面前,其实title没那么重要啦,对吧?&br&&br&这个项目在一个很高大上的,反正是和屌丝身份格格不入的地方办公。创始人是化妆品电商行业比较牛逼的,而且一直做的是电商,所以这家公司的互联网氛围还是比较浓厚,但也意味着快速开发迭代的节奏。我进入的时候项目的第一期已经上线,并且已经获得了千万美金级别的风投。&br&&br&进去那天,上午是超级简单的入职培训,下午熟悉项目,第2天上午就来了一个紧急需求——3个专题活动页面需要快速上线,隔天就得见到东西,因为项目投放了一个演唱会地推,线上必须在演唱会开始之前见到相应的推广活动页面。&br&&br&当时我所负责的组员有3个(其中1个,家人出事请假了),也就是能干活的包括我,就三个人。好吧,那时我其实还叫不全两名组员的名字就大伙分工,一人一个页面,用原始的方式切切切,把东西弄出来。那天,我们三个前端、两个php以及一个测试的妹子(可能是姐姐)搞到了凌晨3点多。&br&&br&这是我第2天上班的节奏,现在还记忆犹新。其实,真的有点被吓到了。那时候(其实才是去年,但电商的节奏让我感觉已经很久很久以前的事情了),项目的后台系统很不完善,没有啥可供运营使用的东西,专题快速部署的系统当然也不会有的,那么前端的工作就被限制在一些生效效率极度低下的专题页面的开发上,而且没啥大多没啥技术含量,就只能靠人力维持。&br&&br&随着项目的发展和投入的逐步加大,活动页面需求越来越多,人力维持是不太现实的,我们需要一个专题快速生产的系统。经过项目和产品需求分析后,务必要控制在2个星期内完成,而实际给到开发的时间其实只有1周}

我要回帖

更多关于 江小白是纯粮酒吗 的文章

更多推荐

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

点击添加站长微信