听说每一个程序员的酷炫桌面都有几件酷炫的装备···

为了让大家都能够成为全栈程序员,现在全栈程序员的定义已经从原来的“每一样都做的跟专家一样好”,退化到了“每一样都能够跑得起来”了。当然一年就能搞定。
为了让大家都能够成为全栈程序员,现在全栈程序员的定义已经从原来的“每一样都做的跟专家一样好”,退化到了“每一样都能够跑得起来”了。当然一年就能搞定。
同样是设计师,同样男朋友是程序员,同样刚给男朋友送了礼物,来分享一下体验。&br&&br&&b&不要送键盘,不要送键盘,不要送键盘!&/b&——设计师程序员都是整天上班对着电脑和键盘的物种,工作方式已经够单调了,为啥还要送个键盘方便玩电脑呢?&br&送礼物嘛,就是为了让送礼物和收礼物的都开心,关键是一种体验,而不是这个东西具体价值或者功能。&br&&br&前一阵男朋友过生日,我就送了一辆保时捷911 GT3,如下图:&br&&img src=&/v2-a3de132f56e64b4aeeccbbb_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-a3de132f56e64b4aeeccbbb_r.jpg&&其实是一个乐高玩具啦:&br&&img src=&/v2-c633b5fc77e5b8eae670031bac448b18_b.jpg& data-rawwidth=&1942& data-rawheight=&2444& class=&origin_image zh-lightbox-thumb& width=&1942& data-original=&/v2-c633b5fc77e5b8eae670031bac448b18_r.jpg&&美国售价299美元,含税也不超过3千人民币,在你的预算之内(可以考虑海淘)。作为一个玩具,不便宜,但是带给两个人的体验远超所值!而且车这种东西,绝大多数男人都喜欢。买不起真车,过个模型瘾也行呀!&br&两个人一起拼,既增进了感情,训练了想象力和手眼协调能力,又放松了紧张的大脑和疲劳的双眼,一举多得!&br&总之,是好玩呀!我们俩都是第一次玩这么复杂的乐高,但都觉得很有意思。作为曾经的工业设计师,我好多次被这个玩具所震惊,设计得非常巧妙,做工相当精细。很多部件都可以活动,几乎是完全模拟出这辆车的运行方式,可以换挡,打方向,气缸还会动……除了不能真的开,其他的全齐了。&br&再上几张开箱图和过程图,目前只拼好了一半。&br&一共分成4个部分,零件分批组装:&br&&img src=&/v2-41ae64bb773bacddb1e2144_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-41ae64bb773bacddb1e2144_r.jpg&&说明书,超级厚:&br&&img src=&/v2-3d440fc7cf1_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-3d440fc7cf1_r.jpg&&&br&&img src=&/v2-8514ef10efaa8fc8eadc_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-8514ef10efaa8fc8eadc_r.jpg&&这个是拼好了2/4盒零件的样子:&br&&img src=&/v2-a9af5d960f0e4a4d2e411c30aa5c4037_b.jpg& data-rawwidth=&3264& data-rawheight=&1907& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-a9af5d960f0e4a4d2e411c30aa5c4037_r.jpg&&接下来是一些细节图,齿轮是真的用来传动的,可以完全模拟出换挡后的车轮运动方式:&br&&img src=&/v2-ae1eed0d9d23fa8fb8d1aef_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-ae1eed0d9d23fa8fb8d1aef_r.jpg&&&img src=&/v2-2d7a7ec2afeee5f_b.jpg& data-rawwidth=&2438& data-rawheight=&2843& class=&origin_image zh-lightbox-thumb& width=&2438& data-original=&/v2-2d7a7ec2afeee5f_r.jpg&&&b&------又拼了一些,加几张图-----&/b&&br&&img src=&/v2-f31eb6b1cf2ae597fc3ea35e3ebf9452_b.jpg& data-rawwidth=&1761& data-rawheight=&3133& class=&origin_image zh-lightbox-thumb& width=&1761& data-original=&/v2-f31eb6b1cf2ae597fc3ea35e3ebf9452_r.jpg&&&img src=&/v2-152daaedc1dddc12fe77_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-152daaedc1dddc12fe77_r.jpg&&&img src=&/v2-b927b8c2ddf8afaa9e67_b.jpg& data-rawwidth=&3264& data-rawheight=&2319& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-b927b8c2ddf8afaa9e67_r.jpg&&&img src=&/v2-f82e5d0fa4cb362fc9acc_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-f82e5d0fa4cb362fc9acc_r.jpg&&&img src=&/v2-ce53e0bdfdb_b.jpg& data-rawwidth=&2448& data-rawheight=&3264& class=&origin_image zh-lightbox-thumb& width=&2448& data-original=&/v2-ce53e0bdfdb_r.jpg&&&img src=&/v2-3e8afa1b9faccae8c41588_b.jpg& data-rawwidth=&1787& data-rawheight=&2971& class=&origin_image zh-lightbox-thumb& width=&1787& data-original=&/v2-3e8afa1b9faccae8c41588_r.jpg&&&img src=&/v2-eb98f613bd3d80b0e8df24_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-eb98f613bd3d80b0e8df24_r.jpg&&&img src=&/v2-2fba3483aeab_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-2fba3483aeab_r.jpg&&&br&&b&-----拼好了------&/b&&br&以4.7寸大小的iPhone作为参考系:&br&&img src=&/v2-b7dc19711eedce76b6f4e_b.jpg& data-rawwidth=&3137& data-rawheight=&2014& class=&origin_image zh-lightbox-thumb& width=&3137& data-original=&/v2-b7dc19711eedce76b6f4e_r.jpg&&&img src=&/v2-9d86b1f763d5ed8b448f9af87add2779_b.jpg& data-rawwidth=&2448& data-rawheight=&3264& class=&origin_image zh-lightbox-thumb& width=&2448& data-original=&/v2-9d86b1f763d5ed8b448f9af87add2779_r.jpg&&&br&驾驶室长这样,没玻璃的,御风而行
:&br&&img src=&/v2-71bd36b7d4fffabf2dd89a_b.jpg& data-rawwidth=&3264& data-rawheight=&2448& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-71bd36b7d4fffabf2dd89a_r.jpg&&引擎罩打开长这样,还有一个迷你工具箱:&br&&img src=&/v2-d19cef676d8adcb2e654_b.jpg& data-rawwidth=&2448& data-rawheight=&2653& class=&origin_image zh-lightbox-thumb& width=&2448& data-original=&/v2-d19cef676d8adcb2e654_r.jpg&&&br&后备箱打开长这样:&br&&img src=&/v2-678dc6de765b42_b.jpg& data-rawwidth=&2448& data-rawheight=&2614& class=&origin_image zh-lightbox-thumb& width=&2448& data-original=&/v2-678dc6de765b42_r.jpg&&总之,我的程序员男朋友对这个礼物表示很开心,我也觉得这个玩具买得很值。希望对你有点启发![]~( ̄▽ ̄)~*&br&&br&&b&----一点私货----&/b&&br&题主,鉴于咱们都是设计师,你可能对我在&a href=&/lizchen& class=&internal&&知乎专栏&/a&写的一些用户体验、交互设计类文章感兴趣,比如:&br&&ul&&li&&a href=&/p/& class=&internal&&在软件公司里为工程师画漫画&/a&&/li&&li&&a href=&/p/& class=&internal&&浅谈设计师的职业道路——以frog为例&/a&&br&&/li&&/ul&以及一些翻译:&br&&ul&&li&&a href=&/p/& class=&internal&&设计批评的四种经典方法&/a&&br&&/li&&li&&a href=&/p/& class=&internal&&如何成为能言善辩的设计师&/a&&/li&&/ul&还有各位程序开发者,如果你对&b&container&/b&技术 (docker/k8s等) 还有&b&开发者工具的用户体验&/b&感兴趣,咱们可以互相关注啊!&br&-----(没错,植入了一段丧心病狂的广告)---&br&&br&还有,题目“如何正确理性的送程序员男票礼物”中“的”应该改成“地”。
同样是设计师,同样男朋友是程序员,同样刚给男朋友送了礼物,来分享一下体验。 不要送键盘,不要送键盘,不要送键盘!——设计师程序员都是整天上班对着电脑和键盘的物种,工作方式已经够单调了,为啥还要送个键盘方便玩电脑呢? 送礼物嘛,就是为了让送礼…
其实Behance的Discover-People下有官方推荐的设计师,你只要选自己感兴趣的领域就好了。但就我观察UI/UX这个分类下的官方推荐很多时候质量都属于大众口味这个分类,创新性不够。&br&&br&来贴一个时效性强针对界面设计的答案好了。毕竟界面设计这几年大换血,前两年拟物风格画的好上天的设计师这两年作品都扭得很吃力。&br&&br&&b&我认为的Behance十大值得关注的界面设计师&/b&&br&&b&&br&1.&a href=&///?target=https%3A//www.behance.net/vanschneider& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tobias van Schneider&i class=&icon-external&&&/i&&/a&
&/b&&b&多领域&/b&&b&连续创业者+Spotify首席设计师&/b&&br&&img src=&/92a673d531a1ca3e57b57_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/92a673d531a1ca3e57b57_r.png&&&br&此人算是界面设计这两年最火的网红之一,如果你关注国外的设计动向,你几乎可以在任何一个平台上看到他的身影。哥们是德国人,现生活在纽约。小时候很苦逼属于外国蓝翔出来自学成才的设计师,之前是Spotify的首席设计师和艺术指导,拿过很多奖,开过自己的工作室。&br&&br&Tobias非常有折腾精神,要知道混到这个地步只要没事发发水水的Medium总结文,写写什么顶级设计师该做的十件事把自己的title写大点各处混导师当就好了,恩其实Tobias这样做了,但除此之外他非常实干,是个设计商业方向的连续创业者,而且和『成为创始人就开始指挥别人干活的这类创始人』不同的是,他大部分作品都有实打实有自己上手做,一一来看。&br&&br&&ul&&li&之前很火爆的&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Authentic Weather&i class=&icon-external&&&/i&&/a&就出自他之手。而且是他13年2月份的作品。这个App现在看来都简单粗暴很有点,一句话告诉你外面天气什么尿性,一美元你值得拥有。&br&&/li&&/ul&&img src=&/a37fcb3e9af61dfd17f7c_b.png& data-rawwidth=&668& data-rawheight=&688& class=&origin_image zh-lightbox-thumb& width=&668& data-original=&/a37fcb3e9af61dfd17f7c_r.png&&&br&&br&&ul&&li&&a href=&///?target=http%3A//aquatilis.tv/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AQUATILIS EXPEDITION&i class=&icon-external&&&/i&&/a&&br&&/li&&/ul&这是我2014年看到最美的网站,是和一个海洋学家合作的一个项目,这个项目也拿了Awwwads的Honorable Mention和Site Of The Day。&br&&img src=&/e51ddcb533eb6f0d9bcba12_b.png& data-rawwidth=&1277& data-rawheight=&667& class=&origin_image zh-lightbox-thumb& width=&1277& data-original=&/e51ddcb533eb6f0d9bcba12_r.png&&&br&&ul&&li&&b&&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Semplice&i class=&icon-external&&&/i&&/a&&/b&&br&&/li&&/ul&第三个项目也是我极力安利给身边设计师的Semplice,是基于Wordpress之上的一个提供设计师高质量作品集网站搭建模板的一个平台。&br&相比Themeforest这种传统Wordpress平台,Semplice核心竞争力在于:&br&&ul&&li&便宜 /个人版只要89刀一次性付费(一般Themeforest上都是一年50刀这样子,之后就不再提供更新和支持服务了&/li&&li&可自定义任何一个模块(传统都是别人设计好的模板半自定义下&/li&&li&颜值高(给了设计师自由发挥的空间,如下图&/li&&/ul&&img src=&/dfafca4ee1ade93be6ebe8_b.png& data-rawwidth=&1211& data-rawheight=&836& class=&origin_image zh-lightbox-thumb& width=&1211& data-original=&/dfafca4ee1ade93be6ebe8_r.png&&&br&除了设计师的身份之外,Tobias也是个很有意思的洗脑小能手,经常写点文章和故事,比如&a href=&///?target=https%3A///desk-of-van-schneider/how-to-beard-6e1aa75ec379%23.jina6nv7u& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&我有胡子我最吊&i class=&icon-external&&&/i&&/a&,&a href=&///?target=https%3A///desk-of-van-schneider/no-alcohol-no-coffee-for-15-months-this-is-what-happened-1a2d052be9e7%23.cqrbpfggz& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&不喝咖啡我骄傲&i class=&icon-external&&&/i&&/a&,&a href=&///?target=https%3A///desk-of-van-schneider/the-real-story-of-how-to-become-a-designer-dc%23.uktx9xy6y& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&我的艰苦卓绝奋斗史&i class=&icon-external&&&/i&&/a&等等。他自己的&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&网站&i class=&icon-external&&&/i&&/a&也是用Semplice做的。&br&&br&Tobias是我觉得界面设计/设计创业领域无出其右的人物,基本功扎实,非常有想法,勤奋高产,创业家,实践者。最难得是,无论在哪个方向上他都非常高产,他每周都会写邮件文章(有时候一周还写两篇),而且Semplice的更新一直很猛。而且他作品范围也很广,不只有界面设计,也一直把一些新的想法做出来。(其实我是想吐槽那些成为leader之后电脑里再没打开过PS/Sketch的『设计师们』)&br&&img src=&/6b45f837c86cd38c99c82dcecbf6a57a_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/6b45f837c86cd38c99c82dcecbf6a57a_r.png&&&br&&br&&br&&br&&b&2.&a href=&///?target=https%3A//www.behance.net/altavizta& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ghani Pradita&i class=&icon-external&&&/i&&/a&
靠作品赢得口碑 &/b&&br&&img src=&/e7ff5a8fdcecb37_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/e7ff5a8fdcecb37_r.png&&&br&Ghani是一位来自印尼的界面设计师。他并没有傲人的工作背景支持,也没有做过PR,推荐是因为他的界面作品细腻又干净,很多小细节都非常出彩,属于实打实靠高质高产的作品赢得口碑的设计师。&br&他其实在Behance上更新的不多,好多都是以前的作品现在看起来蛮挫的,最新作品大多数都在&a href=&///?target=https%3A///altavizta& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dribbble&i class=&icon-external&&&/i&&/a&,前两年作品还比较普通,今年作品已经形成了很强的个人风格,要知道在扁平化趋势下能做出有风格的作品是很难的,大多数设计师都在精致这个级别止步了。&br&&ul&&li&比如这个Dashboard的设计,配色和字体的选择都非常棒,仔细看Icon的半填色的呈现方式也令人惊喜。&br&&/li&&/ul&&img src=&/52b34b6d4af155dcf4fa67a_b.png& data-rawwidth=&400& data-rawheight=&300& class=&content_image& width=&400&&&br&&ul&&li&整体个人风格很统一&br&&/li&&/ul&&img src=&/92a1e2bced936e6be01b31_b.png& data-rawwidth=&1537& data-rawheight=&906& class=&origin_image zh-lightbox-thumb& width=&1537& data-original=&/92a1e2bced936e6be01b31_r.png&&&br&&br& 有一个风格和Ghani风格很像的设计师Anton Chandra,但他没有Behance,放个&a href=&///?target=https%3A///anton_chandra& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dribbble&i class=&icon-external&&&/i&&/a&地址好惹,也是清新干净的风格(印尼小清新异军突起?)。&br&&img src=&/144d3ad0df2c98509dbc2a4c_b.png& data-rawwidth=&1531& data-rawheight=&894& class=&origin_image zh-lightbox-thumb& width=&1531& data-original=&/144d3ad0df2c98509dbc2a4c_r.png&&&br&&ul&&li&我尤其喜欢这个Gallery的设计&br&&/li&&/ul&&img src=&/f6aadd9f26cda4df82a51_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/f6aadd9f26cda4df82a51_r.png&&&br&&br&&br&&b&3.&a class=& wrap external& href=&///?target=https%3A//www.behance.net/aureliensalomon& target=&_blank& rel=&nofollow noreferrer&&Aurélien Salomon&i class=&icon-external&&&/i&&/a&
华丽转身的前Dev&/b&&br&&img src=&/2ca22ff1b07c7b9c81d94d1f_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/2ca22ff1b07c7b9c81d94d1f_r.png&&&br&Salomon之前是学工业工程,做过iOS开发,后来转做的UI/UX。他经常会做redesign,而且包含很多UX的内容。他的Redesign项目范围非常广,从Mac app,到Material design,以及OS X的concept都有涉猎,每一个都做得可圈可点。作为一个全栈设计师,他的Wireframe也做得很棒。&br&&img src=&/2d9f4e010795cba56094_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/2d9f4e010795cba56094_r.png&&&br&&b&4.&a href=&///?target=https%3A//www.behance.net/taragraphy& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Artyom Tarasov&i class=&icon-external&&&/i&&/a&
风格现代简洁的高颜值设计师&/b&&br&&img src=&/268a48615cdef0_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/268a48615cdef0_r.png&&&br&Tarasov是俄罗斯一家叫&a href=&///?target=https%3A//www.behance.net/greatsimple& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Great Simple&i class=&icon-external&&&/i&&/a&的设计工作室的设计师,他们出了几个UI kit,质量都很高价格也不贵,经常会放出Free sample。设计风格如他们自己形容的:简洁,现代,实用。&br&Tarasov对于复杂元素的掌握非常娴熟,这个要比把极简做好了更难得,而且很多细节也突破常规又不失精致。&img src=&/346b4dffca11f4e4defa24f_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/346b4dffca11f4e4defa24f_r.png&&&br&&img src=&/acb60bca52ffec0c6ba16e_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/acb60bca52ffec0c6ba16e_r.png&&&br&&b&5.&a class=& wrap external& href=&///?target=https%3A//www.behance.net/kubo& target=&_blank& rel=&nofollow noreferrer&&Jakub Antalík&i class=&icon-external&&&/i&&/a&
Taaky的创始人 &/b&&br&&br&Jakub做了一个叫Taasky的app,他的作品很精致而且超级爱用渐变的紫色+毛玻璃,因此有了很强的个人风格(不失为一种营造个人风格的鸡贼手段_(:з」∠)_)&br&&img src=&/425f324e55d1b18d963b_b.png& data-rawwidth=&1400& data-rawheight=&1157& class=&origin_image zh-lightbox-thumb& width=&1400& data-original=&/425f324e55d1b18d963b_r.png&&&br&&br&&b&6.&a href=&///?target=https%3A//www.behance.net/barthelemychalvet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Barthelemy Chalvet&i class=&icon-external&&&/i&&/a&
一个人扛起外包公司&/b&&br&&img src=&/821fc37e8ad0884ffadfbec3a7a6dc97_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/821fc37e8ad0884ffadfbec3a7a6dc97_r.png&&&br&Chavelt来自法国,是设计咨询AgenceMe的创始人。这个公司只有三个人,另外两个一个是Dev一个是设计助理,所以Chavelt几乎是一个人撑起的,这就要求你是全栈设计师(莫吐槽)。&br&所以他的作品特点是精细完整成熟,而且作品的展示都非常棒。很多作品都包含动效和交互细节,尤其是擅长深色系的产品,缺点在于字体方面差点火候,再就是在于不是特别具有创新性,毕竟是设计咨询公司的产物。&img src=&/48bd82ccf3c7e39c6f92a_b.png& data-rawwidth=&600& data-rawheight=&897& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/48bd82ccf3c7e39c6f92a_r.png&&&br&&br&&br&&b&7.&a class=& wrap external& href=&///?target=https%3A//www.behance.net/gregoirevella& target=&_blank& rel=&nofollow noreferrer&&Grégoire Vella&i class=&icon-external&&&/i&&/a&
擅长Dashboard的英国设计师&/b&&br&&b&&img src=&/92dfd07b14edd_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/92dfd07b14edd_r.png&&&br&Vella是学商科出身的,他是靠自学成为一名设计师,他的作品有很强的英国风格:干净,极简,精致。他非常擅长Dashboard的设计,尤其喜欢各种蓝色。他的字体选择很典型的英国系,如果你想学习界面设计细节考究的风格,研究他就对了。&/b&&br&&b&&img src=&/5caf35ec6ed85c1628bfc_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/5caf35ec6ed85c1628bfc_r.png&&&br&8.&a class=& wrap external& href=&///?target=https%3A//www.behance.net/fatihocak& target=&_blank& rel=&nofollow noreferrer&&Fatih Ocak&i class=&icon-external&&&/i&&/a&
黑白风的自由设计师&/b&&br&&img src=&/61a625ed68fd3c1f53b216_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/61a625ed68fd3c1f53b216_r.png&&&br& 名字很奇怪的Ocak是来自土耳其的自由设计师(可约),他的作品里黑白对比很强烈,所以非常擅长电影/电商这种多图片的设计,一般多图片的UI很容易有种花哨的杂乱感,但是Ocak用黑色去铺一种高级的氛围,白色上凸显内容和细节,仔细看他的作品里都是有很多考究的细节,不是那种随便为了骗赞只画一个极简的按钮类型。&br&&img src=&/f2a37e19a55b53cb521ff46_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/f2a37e19a55b53cb521ff46_r.png&&&img src=&/ab1e803dee2f8da_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/ab1e803dee2f8da_r.png&&&img src=&/4fd95dda5_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/4fd95dda5_r.png&&&br&&b&9.&a href=&///?target=https%3A//www.behance.net/JonathanQuintin& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&StudioJQ&i class=&icon-external&&&/i&&/a&
创意十足的品牌工作室
&/b&&br&&img src=&/37c617dc6c255ebecd69f_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/37c617dc6c255ebecd69f_r.png&&&br&&br&&br&StudioJQ是一家非常有活力的设计工作室。JonathanQuintin是这家工作室的核心设计师(目测又是一人扛起大旗的类型)。JQ的作品都非常有想法,做的品牌项目比较多,UI类型做的不多但有几个非常有名的作品。&br&&ul&&li&比如这个巨型腕表的FUI&br&&/li&&/ul&&img src=&/5698edf3c439f27c01ea8_b.png& data-rawwidth=&800& data-rawheight=&1250& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/5698edf3c439f27c01ea8_r.png&&&ul&&li&以及这个Weather Dashboard&/li&&/ul&&img src=&/c299a7f5a66b460c5dcd53b_b.png& data-rawwidth=&800& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/c299a7f5a66b460c5dcd53b_r.png&&&br&比起专业向的UI设计师,JQ可能少了深入而实用的细节,但是对于品牌和界面的交叉做的很有新意,提供了另一种方法和视角。另外JQ经常会有WIP的项目,会时时更新进展也很值得研究,而且更新非常快很高产。&br&&br&&b&10.&a href=&///?target=https%3A//www.behance.net/alesnesetril& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Ales Nesetril&i class=&icon-external&&&/i&&/a&
完整的设计过程展示&/b&&br&&br&&br&&img src=&/7f4bf3cea4a2ece9b79ba5463bb1aac7_b.png& data-rawwidth=&711& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/7f4bf3cea4a2ece9b79ba5463bb1aac7_r.png&&&br&Ales就职于一家叫STRV的设计工作室,他们的作品都很完整成熟,好多项目都会把UX的过程到UI细节以及动效都放出来。一个完整项目会是很棒的研究案例,要知道好多作者都会只放最好看的那几张图,有时候甚至是带透视的展示图,虽然很好看但没法仔细去看细节。他们的项目有时还会专门写文章介绍这个项目的点点滴滴,比如这个&a href=&///?target=https%3A///%40alesnesetril/partying-gamificated-baf%23.ca3za5tlb& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&邀请朋友参加Party&i class=&icon-external&&&/i&&/a&,里面详细的介绍了这个项目的几乎所有细节,简直令人泪目。&br&&br&&img src=&/510e9cdc698bed5e722ff3d7c596ded6_b.png& data-rawwidth=&1080& data-rawheight=&571& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&/510e9cdc698bed5e722ff3d7c596ded6_r.png&&&img src=&/a8ff3deadab1dd0e6cbe35_b.png& data-rawwidth=&1800& data-rawheight=&1012& class=&origin_image zh-lightbox-thumb& width=&1800& data-original=&/a8ff3deadab1dd0e6cbe35_r.png&&&br&&br&--------------------------------------------依旧是八卦的分割线---------------------------------------&br&&br&1.这个名单纯粹是我个人口味,没有按照粉丝的数量排序。私以为不论哪个平台,粉丝数量和作品质量并非正相关的关系。&br&2.我的口味是:设计功底+创新程度+实践程度。&br&3.其实我不太建议单一的在Behance上去获取关于界面设计的资讯。Behance是全领域的平台,而且一般发作品要求完整度和展示度非常高,这和UI设计师的工作方式有很大关系,大多数设计师在公司里只负责产品的某一部分,很难整体性的去展示。而在Behance上比较火的UI作品大多数都是展示做的非常好,但仔细看少了很多实用的细节。&br&相比Dribbble就非常适合UI设计师了,兴致来了做个飞机稿放上,或者自己工作负责的一个页面。而且Drbbble和互联网公司的链接做的很好,像&a href=&///?target=https%3A///DesigningUber& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Uber&i class=&icon-external&&&/i&&/a&,&a href=&///?target=https%3A///facebook& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Facebook&i class=&icon-external&&&/i&&/a&,&a href=&///?target=https%3A///dropbox& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dropbox&i class=&icon-external&&&/i&&/a&等公司都有自己的主页。很多UI设计师是不用behance的,特别是在大公司工作的,但大多设计师都有Dribbble账号。唔,下次再来答dribbble上值得fo的UI设计师好啦。&br&4.UI设计师使用Behance和Dribbble的关系是:用Behance的设计师99%用Dribbble,用Dribbble的设计师50%用Behance( 未经统计验证,大致关系)。&br&&br&&br&最后凑表脸的放下自己的好啦~大家一起来玩&br&&a href=&///?target=https%3A//www.behance.net/mi-zou& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MizouOnBehance&i class=&icon-external&&&/i&&/a&
其实Behance的Discover-People下有官方推荐的设计师,你只要选自己感兴趣的领域就好了。但就我观察UI/UX这个分类下的官方推荐很多时候质量都属于大众口味这个分类,创新性不够。 来贴一个时效性强针对界面设计的答案好了。毕竟界面设计这几年大换血,前两年…
看不懂不来问看不懂的地方,却来问自己笨不笨,看起来是的。&br&================&br&有人说题主是来求鼓励的,在我看来,求鼓励第一不符合知乎提问规范中对于问题能引发深入探讨的约定,第二不能解决题主遇到的问题
看不懂不来问看不懂的地方,却来问自己笨不笨,看起来是的。 ================ 有人说题主是来求鼓励的,在我看来,求鼓励第一不符合知乎提问规范中对于问题能引发深入探讨的约定,第二不能解决题主遇到的问题
平均薪资还不错,但低于北京、(近期的)杭州。&br&&br&作为 &a href=&///?target=https%3A///join/zhihu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&100offer&i class=&icon-external&&&/i&&/a& 的员工,我的重要工作之一是对 100offer 上用户跳槽的数据进行分析。这两周在研究上海的情况,正好用这张新出炉的 infographic 回答题主的问题。&br&&br&100offer 服务的用户是有2年以上工作经验的资深互联网人,其中85%是程序员,与阿里 P6(2-5年,年薪20-35W)、P7(5-8年,年薪30-50W)同等级别的工程师是绝对主力。他们的平均薪资情况应该能够解答题主的疑问。&br&&br&&img src=&/v2-e6b20c65bfe1fb3c4c437_b.jpg& data-rawwidth=&900& data-rawheight=&11620& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-e6b20c65bfe1fb3c4c437_r.jpg&&&br&如果有用,就给个赞呗&br&&br&------&br&&br&另,最近在写上海互联网,这些 blog 文章可以作为相关阅读:&br&&br&&a href=&///?target=https%3A///blog/posts/184& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&2016年,上海的互联网企业是否值得加入?&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=https%3A///blog/posts/186& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&在上海巨头互联网公司工作,能拿多少薪资?&i class=&icon-external&&&/i&&/a&
平均薪资还不错,但低于北京、(近期的)杭州。 作为
的员工,我的重要工作之一是对 100offer 上用户跳槽的数据进行分析。这两周在研究上海的情况,正好用这张新出炉的 infographic 回答题主的问题。 100offer 服务的用户是有2年以上工作经验的资…
个人体验,感觉在新西兰当程序员可以得到很好的 work life balance,也可以很好的照顾到家庭。在新西兰,程序员是一个可以做到退休的职业。&br&&br&== 加班 ==&br&要求加班而不给1.5倍 pay 是不合法的。&br&员工不愿意而强制员工加班,是不合法的。&br&&br&所以,从不加班。扣除喝咖啡,吃早饭,刷知乎,蹲大号的时间,每天可能工作时间不到6小时……&br&所以,干活的时候很专注。&br&&br&== 工作量 ==&br&可能现在每周的工作量只相当于之前在国内的两天吧。显著的不同是,讨论问题、分解任务的时间比较多,几乎是做下去不会错了才会开工做。如果是真的有疑问,会有专门的任务来调查和分析这个需求。&br&&br&== 工资 ==&br&整体而言,比社会平均水平高,但是也高不了多少。而高出的部分很多落在了要交 30%+ 所得税的区间,就更加高不了多少了。&br&&br&== 福利 ==&br&每年20天带薪年假。是20个工作日,差不多就是1个月。还可以提前预支10个工作日。这些假,一般是用来请假回国看我的娘亲,顺便路上旅游什么的。&br&每年10天带薪病假。法定是5天,公司给10天。没睡好什么的都可以请病假,老婆孩子不舒服也可以请病假。&br&Superannuation 公司给 4%,自己交 4%。离职或者退休的时候可以取出来,相当于每个月储蓄 8%。也可以选择 KiwiSaver,但 KiwiSaver 一定要退休的时候才可以取出来,所以对于自带高储蓄技能的华人,KiwiSaver 并没有什么卵用。貌似 Superannuation 也不是每个公司都有。&br&公司全额买医疗保险,可以 cover 很多基本医疗之外的费用。比如看家庭医生的费用等等。自己比较用得到的是每年 $750 牙医,$500 的眼镜。这个保险 cover 全家,也就是说,我、我老婆、我女儿3个人,每个人都有 每年 $750 牙医,$500 的眼镜的报销额度。还有一些手术和大病的费用也可以报销很大一部分。当然,貌似这个医疗保险不是每个公司都有。&br&&br&== 涨薪 ==&br&我们公司每年涨1次,每次3%左右……&br&不跳槽薪水长得慢大概是全人类的现状吧。。&br&&br&== 年终奖 ==&br&有一次发了$1200,几乎等于没有。&br&&br&== 敏捷开发 ==&br&我了解到的基督城几个软件公司,无论规模,几乎都是要求要 Scrum,Agile &br&Manager 们眼里,先进管理方法貌似很重要。所以几个 leader 都是很不错的 Scrum Master&br&&br&== 通勤 ==&br&我在基督城,比起奥克兰那种国际大都市来说,没那么堵。&br&我上班的地方离家1.5公里,每天走路上班,15~20分钟,感觉很舒服。中午还可以走路回家吃饭,感觉也是很舒服。&br&基督城地势平坦,所以很多人骑自行车通勤,既环保又健身。&br&&br&== 家庭 ==&br&虽然收入一般,不过足够老婆在家全职带孩子,感觉鸭梨也不会很大。个人觉得自己带大的孩子感觉很聪明~哈哈&br&&br&&img src=&/95899dd49dbbeeba055fdcc_b.jpg& data-rawwidth=&825& data-rawheight=&469& class=&origin_image zh-lightbox-thumb& width=&825& data-original=&/95899dd49dbbeeba055fdcc_r.jpg&&&img src=&/35ba2cac47bccd525e2d3b6fdf675d33_b.jpg& data-rawwidth=&827& data-rawheight=&466& class=&origin_image zh-lightbox-thumb& width=&827& data-original=&/35ba2cac47bccd525e2d3b6fdf675d33_r.jpg&&&img src=&/4e51e26c1c574dbaabf814_b.jpg& data-rawwidth=&537& data-rawheight=&954& class=&origin_image zh-lightbox-thumb& width=&537& data-original=&/4e51e26c1c574dbaabf814_r.jpg&&&br&就先写这么多先。&br&&br&---- update ----&br&不少朋友问我怎么才能够去新西兰工作……这一时半会还真说不清楚,不如另开一个话题?&br&有兴趣技术移民的可以去搜搜相关网站&br&个人推荐 &a href=&///?target=http%3A//www./& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Jack Liu博客&i class=&icon-external&&&/i&&/a& ,这个网站给了我很多帮助&br&还有我的个人博客 &a href=&///?target=http%3A//logwith.me/coder-in-nz/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&去向新西兰的码农&i class=&icon-external&&&/i&&/a&&br&&br&---- update 2 ----&br&上个月作为新移民,参加的“从微笑开始 – 基督城”(Start with a Smile Chch)的宣传活动,现在已经发布啦!&br&&br&这个活动是用微笑作为切入点,宣传新移民在基督城融入本地社会的情况,以此让基督城看起来更加友好,更加欢迎新移民。 我的照片不错,是所有几组里主办方最喜欢的。除了在基督城有两个大广告牌以外,还被主办方放到他们的Facebook上作为背景和主宣传画。各位亲可以在基督城街上和网站上看到我啦!&br&&br&虽然离可以代表亚洲还很远,但是已经很满足啦很幸福啦~周末去找我的广告牌,全家去拍真人合影!&br&&br&Facebook链接: &a href=&///?target=https%3A///startwithasmilechch/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/startwitha&/span&&span class=&invisible&&smilechch/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&img src=&/424b4a86c62_b.jpg& data-rawwidth=&1271& data-rawheight=&597& class=&origin_image zh-lightbox-thumb& width=&1271& data-original=&/424b4a86c62_r.jpg&&&img src=&/e17e53d5aeb3ded0c148c46c_b.jpg& data-rawwidth=&1028& data-rawheight=&889& class=&origin_image zh-lightbox-thumb& width=&1028& data-original=&/e17e53d5aeb3ded0c148c46c_r.jpg&&更多图片请见: &a href=&///?target=http%3A//logwith.me/start-with-a-smile-christchurch/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&融入,微笑中的移民生活&i class=&icon-external&&&/i&&/a&&br&&br&&br&---- update 3 on
----&br&上个月买了第二套房子,通勤那部分已经从步行15分钟变成了开车20分钟。。幸福感都没了~&br&另外,我家二女儿下个月就出生了,以后我们家3个女人,就我一个男的了。我同事告诉我,他也是两个女儿,所以 don't argue with them&br&&br&&br&---- 谢绝非授权转载 ----&br&某些公众号请不要在没有授权的情况下转载。&br&没有授权而转载的请先自行撤回,谢谢~&br&&br&&br&---- update on
----&br&没有授权而强行转载,交涉后不撤回内容的,不管在哪个平台,都会被投诉的哦~&br&谢谢~
个人体验,感觉在新西兰当程序员可以得到很好的 work life balance,也可以很好的照顾到家庭。在新西兰,程序员是一个可以做到退休的职业。 == 加班 == 要求加班而不给1.5倍 pay 是不合法的。 员工不愿意而强制员工加班,是不合法的。 所以,从不加班。扣除…
&b&多说无益,怒以身犯险,亲身示范!&/b&&br&
无基础文科生入门iOS的3个月(以第一个app上线作为入门标准)&br&&br&
这个经历主要是分享给一些像我这样,对互联网想法多多,按耐不住非得亲自上阵的楞头青。这里以上线一个app为目标(不奢望做出啥高级算法,90%的app也不会涉及算法),当第一个app完成,基本上就不会再对开发有恐惧,之后尽情学习,享受创造规则的快感吧!&br&
也有其他大牛们说上网搜索自己学入门超快的,我觉得身为一个无背景的文科生,还是有点吃力的。脑子里没有知识的框架,学到个知识点都不知道往哪里整。所以还是推荐从书或者公开课入门。有个老师带入门总是容易理解些的。&br&&br&&b&第一步:编程入门课&/b&&br&时间预计:4个星期&br& 推荐看公开课,Udacity也行,网易公开课也行,自己找一个面对对象语言(一般是JAVA,
Python)的课。我是在网易公开课看的斯坦福的CS106A,学的JAVA。&br&如果你纯粹学iOS开发,不推荐看哈佛CS50,CS50是给CS系的学生介绍整个计算机世界的框架,讲的内容比较多,进度比较快,对iOS开发其实有点累赘了。(臣妾有点跟不上啊!!)&br& 计划安排是一天一课,看课程要求的书(至少看完一本)及大部分作业。这一阶段重点不是语法,而是以下3个目标。&br&目标:&br&1.
让自己对编程这件事感到适应。&br& 写hello
world。&br& 怎么写function,
怎么调用function。&br& 全局变量,局部变量这类基本知识点。&br& 都是基本的东西。看看书,写多两个程序就欧啦。&br&&br&2.
掌握编程语言的基本要素。&br& 编程语言4个要素:&br& a.
基本的数据类型:整数,实数,character,
string, boolean&br& b.
基本的运算符号:+-×/&&++--那啥的&br& c.
怎样输入输出&br& d.
怎样控制程序:sequence,selection,loop&br&&br&3.
了解编程范式&br& 面对过程编程。&br& 面向对象编程。&br&&br&&b&第二步:上手iOS!&/b&&br&时间预计:2星期&br& 强烈推荐CS193P,老头子讲的超级好!我的很多东西(对象思维啥的)是在这里跟着做练习的时候才真正明白的(好啦,也可能是上一堂课练习做得少的原因)。如果等到9月应该itunes
U上会开始教iOS
7了。网易公开课的是2010年iOS
5版的,前10堂课,也行。(iTunes U上有完整的课)&br& CS193P说有prerequisite,一开始被吓到,事实证明还是可以学下去的。头两节课一头雾水,没关系,把itunes
U上的课件下载下来,把所有代码打出来,然后一个个元素对应之前学的语言匹配,再不懂先放着,继续学后边的,过几天打多点代码就懂了。&br& 感觉学5、6堂课,一个星期左右就可以开始进入下一阶段自己做东西了。之后用啥学啥,每堂课都有主题的。速度慢点的同学们,这阶段跟我一样准备两个星期吧!&br&&br&&b&第三步:开发app!&/b&&br&时间预计:2星期(本人...1个半月,实在不好意思说出口)&br& 这个时间就可长可短啦,还包括美工,交互啥的。坚持要用啥学啥的原则,其实就是知道iOS
SDK都有什么组件,每个组件有什么function而已。stackoverflow,
Github, apple sample code多上,搜索引擎多用。如果有个师傅,这个阶段真的是进步神速。&br&&br& 好的!不出意外,你的第一个app就这么新鲜出炉了!从今天开始,成为一个冷艳逼格高尚的iOS开发者吧!&br&&br&======================================================================&br& 这种学习开发方法弊端是基础不牢,后期提高需要自己重新補上C知识,毕竟Objective是基于C的语言。&br& 但优势也是相当明显的,就是快速消除文科生对编程的恐惧!对于常规的,C
→ C++ →Objective
C这样扎扎实实,动辄半年熟练掌握一个语言的缓慢进程,一想到就悲从中来,让想学习开发的大部分人第一步都不敢迈出。
&br& 经验纯粹由一个刚入门可能还全身bug的菜鸟分享给连门都还没入的菜鸟们,有错误的地方,请各位高手指正,让更多人能学会编程,享受创造产品的乐趣!
多说无益,怒以身犯险,亲身示范!
无基础文科生入门iOS的3个月(以第一个app上线作为入门标准)
这个经历主要是分享给一些像我这样,对互联网想法多多,按耐不住非得亲自上阵的楞头青。这里以上线一个app为目标(不奢望做出啥高级算法,90%的app也不会涉…
鉴于越来越多的人看到了答案,我觉得现在有必要更正一些用词错误和概念错误,非常感谢杨周的建议和斧正。&br&&br&---------------------------------------------------------------------------------------------------------------&br&&b&增加内容:&/b&关于楼主背景,很多人问我关于我的背景问题,在此统一作答,楼主目前大学本科三年级,在美国上学,专业为ECE和数学,所以找实习的机会比较多,找到的概率也比国内同胞们大一些,我高中同班同学有两个人大二的时候就找到google实习的。本人学习成绩略渣,这个不是谦虚,是正儿八经的渣,GPA全系中位数,另:谁给我发私信,说大神膜拜什么的,会让我浑身不舒服,我认为高斯欧拉傅里叶可以称作大神,普通人嘛,就安安分分做普通人吧。&br&&br&很多大一大二的朋友私信问我怎么从基础学习,为了更加符合这些同学的基础,增加了最基础的知识内容,方便大家学习。&br&&br&另,在最后增加了所有提到的书籍的全名,方便大家查找,有pdf链接的我会放上pdf的链接。如侵害了版权,请告知我。&br&&br&&b&删减内容:&/b&我把关于关于linux使用和运维的内容删去了,因为这本不是我擅长的内容,放在这里未免误人子弟,尤其是在杨周的提醒之下,才知道对运维的理解是错误的,所以觉得瞎写的话不免有悖知乎的精神,我想有更多人会有更好的答案。&br&&br&---------------------------------------------------------------------------------------------------------------&br&&br&说说我的学习经历吧。因为我对这方面也非常感兴趣,而且年龄和背景和题主十分相似。&br&我觉得要深入学习linux,有三个方面是要全面了解的。(下面有些东西会写成英文,因为有些东西的中文翻译我真的不太清楚,所以为了最大程度的避免误人子弟,我还是尽量用词准确,见谅)&br&1. 最重要的linux的内核工作方式:包括但是不限于:&br&&ul&&li&内存分页&/li&&li&进程切换&/li&&li&interrupt 和 exception,以及system call&/li&&li&lock&/li&&li&进程管理&/li&&li&内存管理和分配&/li&&li&signal&/li&&li&文件系统(ext2, ext3)&/li&&li&输入输出设备&/li&&li&缓存&/li&&/ul&
书可以看《Understanding the Linux Kernel, Third Edition [Daniel P. Bovet, Marco Cesati]》,《IA-32 Intel(R) Architecture Software Developer’s Manual Volume 3: System Programming Guide》&br&
这个是理解linux的基础的基础,对于理解操作系统有莫大的好处。而且无论对于high level还是low level的编程都是相通的,很多东西在学完操作系统之后,你对他们的理解就完全不一样了。就像学好缓存在对于提高大运算上面的效率是很有帮助的。&br&
一边看书一边可以写一个简单的linux自己玩,时长一个学期比较合适。因为课程要求,所以我写过一个可以多任务运行的linux,附带一个声卡driver。当时演示的时候放的是凤凰传奇,教授整个人斯巴达了。但是不得不说这是一个非常大的工作量。&br&
但是无论是要做内核开发还是驱动开发,我觉得这些都是基础中的基础,是要扎扎实实掌握的,不得有半点马虎。&br&&br&2. CPU架构/汇编&br&
操作系统跟CPU的架构是离不开的,我个人觉得是相辅相成的。很明显的能看到Intel为了和操作系统配合起来,实现了很多硬件功能。最明显的就是虚拟内存已经可以在硬件层面上直接换算,不需要通过软件了。不懂x86或者arm的架构,会一定程度上造成理解linux内核的困难。比如为什么要以某种特定的方式分页,为什么内存管理的时候需要不同的算法,interrupt,system call的意义何在?等等等等的问题都需要精通CPU的架构。&br&
当时就是因为对TLB的理解不够深入,不够仔细,造成我的系统每次切换任务的时候,会page fault。&br&
重点在于interrupt的处理,缓存的概念和内存相关结构的设计。至于乱序执行,pipeline之类的都是次要的,对于linux不是特别的重要。&br&
x86的汇编是基础,有助于debug和理解linux源代码。我写系统的时候大段写过x86代码来实现低层操作。不知道真正的linux是不是这样实现的。&br&&br&3. high level编程&br&
系统毕竟是为了应用程序而服务的,就像有需求才有生产一样。没有应用程序的需求,就不会设计相关的系统功能。了解high level的编程一定程度上可以融会贯通。&br&&br&---------------------------------------------------------------------------------------------------------------&br&&br&学习过程:以下均是为大一大二的朋友们写的,有更好建议的朋友请留言指正。&br&&br&1. 逻辑电路,数字电路,简单处理器,汇编,C语言,参考书籍《Yale N. Patt and Sanjay J. Patel, &em&Introduction to Computing Systems: from bits and gates to C and beyond&/em&, 2nd Edition, McGraw-Hill, 2003.》我强烈建议这本书,这也是学校的教科书。原因是有同学反映即使是计算机系的学生看底层的书仍然看不懂,这本书从最基本的逻辑电路讲起,再上升到汇编和机器语言,最后很自然的过渡到了C语言,所有这些内容都建立在一个简单的LC-3处理器的基础上,我相信即使是工作多年的朋友看这本书仍然会说“原来如此”。时长:一个学期,对于有基础的同学,半个学期。&br&&br&附录中,有LC-3处理器的所有细节,包括电路,对处理器没有任何概念的同学是非常好的补充材料。&br&&br&2.数据结构,OOP,参考网站:. &a href=&///?target=http%3A//ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ocw.mit.edu/courses/ele&/span&&span class=&invisible&&ctrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&时长:一学期&br&&br&3.x86汇编,&a href=&///?target=http%3A//en.wikibooks.org/wiki/X86_Assembly& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&x86 Assembly&i class=&icon-external&&&/i&&/a&&br&
从LC-3到x86&a href=&///?target=https%3A//courses.engr.illinois.edu/ece391/references/patt-and-patel-appendix-B.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&courses.engr.illinois.edu&/span&&span class=&invisible&&/ece391/references/patt-and-patel-appendix-B.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&4.操作系统:参考最上。&br&&br&《Understanding the Linux Kernel, Third Edition [Daniel P. Bovet, Marco Cesati]》&a href=&///?target=http%3A//idak.gop.edu.tr/esmeray/UnderStandingKernel.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&idak.gop.edu.tr/esmeray&/span&&span class=&invisible&&/UnderStandingKernel.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&《Yale N. Patt and Sanjay J. Patel, &em&Introduction to Computing Systems: from bits and gates to C and beyond&/em&, 2nd Edition, McGraw-Hill, 2003.》链接没有,自己买吧&br&&a href=&///?target=http%3A///content/www/us/en/processors/architectures-software-developer-manuals.html%3Fiid%3Dtech_vt_tech%2B64-32_manuals& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Intel速 64 and IA-32 Architectures Software Developer Manuals&i class=&icon-external&&&/i&&/a&
鉴于越来越多的人看到了答案,我觉得现在有必要更正一些用词错误和概念错误,非常感谢杨周的建议和斧正。 --------------------------------------------------------------------------------------------------------------- 增加内容:关于楼主背景,很…
作为leetcode已通关的少年,我见识过许多优秀的解法,有效地提高了自己的姿势水平。&br&这些解法,典型特征就是精简,很多到了“减无可减”的地步。即使是没学过cs的同学,或许都能感受到,那种简洁洗练的魅力。&br&个人认为,有些太优秀的解法,不用想别的,直接背下来吧,没有比这更好的方法了。&br&Talk is cheap. 下面分知识点,来看看“别人家的代码”:&br&&br&&b&一. 树&/b&&br&&br&&br&1)求二叉树的高度(Maximum Depth of Binary Tree)&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&c1&&// LeetCode, Maximum Depth of Binary Tree&/span&
&span class=&c1&&// 时间复杂度O(n),空间复杂度O(logn)&/span&
&span class=&k&&class&/span& &span class=&nc&&Solution&/span& &span class=&p&&{&/span&
&span class=&k&&public&/span&&span class=&o&&:&/span&
&span class=&kt&&int&/span& &span class=&n&&maxDepth&/span&&span class=&p&&(&/span&&span class=&n&&TreeNode&/span& &span class=&o&&*&/span&&span class=&n&&root&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&root&/span& &span class=&o&&==&/span& &span class=&k&&nullptr&/span&&span class=&p&&)&/span& &span class=&k&&return&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&k&&return&/span& &span class=&n&&max&/span&&span class=&p&&(&/span&&span class=&n&&maxDepth&/span&&span class=&p&&(&/span&&span class=&n&&root&/span&&span class=&o&&-&&/span&&span class=&n&&left&/span&&span class=&p&&),&/span& &span class=&n&&maxDepth&/span&&span class=&p&&(&/span&&span class=&n&&root&/span&&span class=&o&&-&&/span&&span class=&n&&right&/span&&span class=&p&&))&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&};&/span&
&/code&&/pre&&/div&&br&2)判断二叉树是否对称(Symmetric Tree)&br&&div class=&highlight&&&pre&&code class=&language-text&&// LeetCode, Symmetric Tree
// 递归版,时间复杂度O(n),空间复杂度O(logn)
class Solution {
bool isSymmetric(TreeNode *root) {
return root ? isSymmetric(root-&left, root-&right) :
bool isSymmetric(TreeNode *left, TreeNode *right) {
if (!left && !right) // 终止条件
if (!left || !right) // 终止条件
return left-&val == right-&val // 三方合并
&& isSymmetric(left-&left, right-&right)
&& isSymmetric(left-&right, right-&left);
&/code&&/pre&&/div&&br&3)二叉树-& 链表(Flatten Binary Tree to Linked List)&br&&div class=&highlight&&&pre&&code class=&language-text&&// LeetCode, Flatten Binary Tree to Linked List
// 递归版2
// @author 王顺达(/u/)
// 时间复杂度O(n),空间复杂度O(logn)
class Solution {
void flatten(TreeNode *root) {
flatten(root, NULL);
// 把root 所代表树变成链表后,tail 跟在该链表后面
TreeNode *flatten(TreeNode *root, TreeNode *tail) {
if (NULL == root)
root-&right = flatten(root-&left, flatten(root-&right, tail));
root-&left = NULL;
&/code&&/pre&&/div&&br&&br&&b&二. 字符串&/b&&br&&br&1)最长无重复字符子串(Longest Substring Without Repeating Characters)&br&&div class=&highlight&&&pre&&code class=&language-text&&class Solution {
int lengthOfLongestSubstring(string s) {
int ans = 0;
int dic[256];
memset(dic,-1,sizeof(dic));
int len = s.size();
int idx = -1;
for (int i=0;i&i++)
char c = s[i];
if (dic[c]&idx)
idx = dic[c];
ans = max(ans,i-idx);
&/code&&/pre&&/div&&br&&br&&b&三. 数组&/b&&br&&br&&br&1)数组中所有数字出现两次,只有一个出现一次,求出它(Single Number)&br&&div class=&highlight&&&pre&&code class=&language-text&&// LeetCode, Single Number
// 时间复杂度O(n),空间复杂度O(1)
class Solution {
int singleNumber(int A[], int n) {
int x = 0;
for (size_t i = 0; i & ++i)
x ^= A[i];
&/code&&/pre&&/div&&br&2)顺时针旋转二维数组90度(Rotate Image)&br&&div class=&highlight&&&pre&&code class=&language-text&&// LeetCode, Rotate Image
// 思路1,时间复杂度O(n^2),空间复杂度O(1)
class Solution {
void rotate(vector&vector&int&&& matrix) {
const int n = matrix.size();
for (int i = 0; i & ++i) // 沿着副对角线反转
for (int j = 0; j & n - ++j)
swap(matrix[i][j], matrix[n - 1 - j][n - 1 - i]);
for (int i = 0; i & n / 2; ++i) // 沿着水平中线反转
for (int j = 0; j & ++j)
swap(matrix[i][j], matrix[n - 1 - i][j]);
&/code&&/pre&&/div&&br&&br&3)排序数组去重(Remove Duplicates from Sorted Array)&br&&div class=&highlight&&&pre&&code class=&language-text&&// LeetCode, Remove Duplicates from Sorted Array
// 时间复杂度O(n),空间复杂度O(1)
class Solution {
int removeDuplicates(int A[], int n) {
if (n == 0) return 0;
int index = 0;
for (int i = 1; i & i++) {
if (A[index] != A[i])
A[++index] = A[i];
return index + 1;
&/code&&/pre&&/div&&br&4)两个排序数组,求中位数(Median of Two Sorted Arrays)&br&&div class=&highlight&&&pre&&code class=&language-text&&// LeetCode, Median of Two Sorted Arrays
// 时间复杂度O(log(m+n)),空间复杂度O(log(m+n))
class Solution {
double findMedianSortedArrays(int A[], int m, int B[], int n) {
int total = m +
if (total & 0x1)
return find_kth(A, m, B, n, total / 2 + 1);
return (find_kth(A, m, B, n, total / 2)
+ find_kth(A, m, B, n, total / 2 + 1)) / 2.0;
static int find_kth(int A[], int m, int B[], int n, int k) {
//always assume that m is equal or smaller than n
if (m & n) return find_kth(B, n, A, m, k);
if (m == 0) return B[k - 1];
if (k == 1) return min(A[0], B[0]);
//divide k into two parts
int ia = min(k / 2, m), ib = k -
if (A[ia - 1] & B[ib - 1])
return find_kth(A + ia, m - ia, B, n, k - ia);
else if (A[ia - 1] & B[ib - 1])
return find_kth(A, m, B + ib, n - ib, k - ib);
return A[ia - 1];
&/code&&/pre&&/div&&br&&br&这些解法,真的是“减无可减”了。&b&(咳咳, 感谢&a data-hash=&d11f4c8b85d8b8e66b5cae& href=&///people/d11f4c8b85d8b8e66b5cae& class=&member_mention& data-editable=&true& data-title=&@宋方睿& data-hovercard=&p$b$d11f4c8b85d8b8e66b5cae&&@宋方睿&/a& 同学给出了一些改进意见,详情见评论。他提到的&a href=&///?target=https%3A///MaskRay/LeetCode/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MaskRay/LeetCode · GitHub&i class=&icon-external&&&/i&&/a&,请大家和我之后要提到的&a href=&///?target=https%3A///soulmachine/leetcode& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&soulmachine/leetcode · GitHub&i class=&icon-external&&&/i&&/a&进行交叉参考,谢谢~)&/b&多说无益,大家可以对比一下自己的实现。假如觉得有更好的方法,也可以提。&br&至于链表、动态规划、深搜广搜、贪心那些题的解法,可以说道道都有门道。漂亮的解法,就是代码最简单,效率最高。&br&&br&那么——我是从哪儿找到这些解法的?&br&哈哈哈,当然是我深居简出、闭关十年、冥思苦想、绞尽脑汁、两行三年得、一吟双泪流、究天人之际、通古今之变……突然一日醍醐灌顶,打开全球最大的某同性交友网站,找到的啦:&br&&a href=&///?target=https%3A///soulmachine/leetcode& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&soulmachine/leetcode · GitHub&i class=&icon-external&&&/i&&/a&&br&欢迎大家一起来膜拜soulmachine的代码!&br&这份题解,曾经给了我很多帮助,这里推荐给大家,希望更多的同学能得到帮助。同时,大家要记得感谢原作者soulmachine同学的辛勤付出哦~&br&&br&&br&&br&我的其他关于leetcode的回答:&br&&a href=&/question//answer/& class=&internal&&Leetcode刷完了第一次,用了一个半月,完全人肉debug,接受率不到20%,第二次该如何刷? - Zack 的回答&/a&
作为leetcode已通关的少年,我见识过许多优秀的解法,有效地提高了自己的姿势水平。 这些解法,典型特征就是精简,很多到了“减无可减”的地步。即使是没学过cs的同学,或许都能感受到,那种简洁洗练的魅力。 个人认为,有些太优秀的解法,不用想别的,直接…
&p& 更新&/p&&p&-------------------&/p&&p&现在还处于过渡时期,但趋势很明朗了,Swift 必然会替代 Objective-C,并且比想象中来得快。现在就应该做好准备了。假如之前已经掌握了 Objective-C,切换到 Swift 也不难。Swift 中很多概念在 Objective-C 中已经存在。推荐网站 &a href=&///?target=https%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Swiftify | Objective-C to Swift Converter&i class=&icon-external&&&/i&&/a& ,辅助将旧的 Objective-C 代码转成 Swift。&/p&&br&&p&那是不是 Objective-C 就不需要学习呢?并非如此。Swift 还没有很好地解决好跟 C 和 C++ 混编的问题。很多项目底层核心库会采用 C/C++,界面和大部分逻辑采用 Swift 编写,需要 Objective-C 作为粘合层。另外还存留很多库是用 Objective-C 编写的,使用这些库需要一定 Objective-C 知识。&/p&&br&&p&随着时间推移,Swift 在整个 iOS/Mac 工程中占的代码比例会越来越多,而 Objective-C 作为粘合层还是会存在。Objective-C 的语法很独特,就算跟 C++ 写在同一文件,也不会搞混,Objective-C 跟 C++ 混编是很容易的。Swift 调用 C 代码还勉强可以(还不够方便),但直接调用 C++ 没有什么可能。&/p&&br&&p&或者有些人会觉得小小的一个 App,还需要跟 C/C++ 混编?你是小看了 App 了,App 会越做越复杂的。应该当成跟 PC 平台相同的地位看待,PC 平台的软件可以达到什么规模,App 就会达到什么规模。在需要高性能,跨平台的场合,C/C++ 还是绕不开的。&/p&&br&&p&很多人现在还没有学习 Swift, 觉得它没有什么优点,只是一个语言大杂烩。只是等你真正使用 Swift 编写一两个项目,就回不了头。Swift 有些简便快速的写法,在 Objective-C 中是没有办法做到的。并且 Swift 的一些语言特性避免了很多 Objective-C 的坑。使用 Swift 编写的任何功能,使用 Objective-C 也可以做到,但是会麻烦得多。而假如太麻烦的话,明知道是好的,也不会去做。&/p&&br&&p&很多事情,你还没有见识过的时候,会觉得不需要。但等你真正接触过了,就难以忍受再次失去了。我翻看整理 3、4 年前的项目,那时项目还没有采用 ARC。现在看来假如没有 ARC,代码写起来太麻烦了,那时还没有更先进的写法,根本不会有这样的感觉。Swift 比 Objective-C 先进。&/p&&br&&p&现在 Swift 还不稳定,语言、库、相关工具将会快速变动,而这恰好说明它在发展。&/p&&br&&p&很多大公司为求稳,会仍然采用 Objective-C。而个人开发者和小团队,新项目应该直接采用 Swift 编写,旧项目的新模块也应该使用 Swift 编写。这样慢慢将整个语言重心从 Objective-C 切换到 Swift。Swift 的代码更简洁,开发效率更高。原有 Objective-C 项目,已经使用 Objective-C 编写的比较稳定的库,不需要也不建议要用 Swift 重新编写,直接混编,让它慢慢过渡就行了。&/p&&br&&p&大公司倾向于不犯错,求稳。 个人开发者和小团队,求稳一定不能跟大公司竞争的,更应该求好求变。
&/p&&br&&p&另外还是会有人说,现在很多公司的项目是规定一定需要使用 Objective-C,那怎么办,我不能选择啊。假如只满足于当前工作,那公司需要什么就去学什么,但从个人发展的角度来说,iOS 开发中,两种语言都需要学习的。其实 iOS 开发中,语言的学习从来就不是难点。&/p&&br&&p& 原回答&/p&&p&----------------&/p&&p&更详细的评论可以再看看这篇文章。&a href=&///?target=http%3A//www.csdn.net/article//2820568& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&从 Objective-C 到 Swift&i class=&icon-external&&&/i&&/a&&/p&&br&&p&主要从技术的角度评价 Swift 语言。商业的角度,吸引开发者,共同维护苹果生态圈的繁荣等之类就不说了。&/p&&br&&p&Swift 这门语言还是比较有意思的,很多概念在 Objective-C 中已存在,但打扮过,比原来的模样漂亮。个人感觉,苹果还真的想用它取代 Objective-C 呢。&/p&&p&------------------&/p&&p&&b&Swift 跟 Objective-C 共用同一套的运行时环境&/b&&/p&&p&Swift 的类型,可以桥接到 Objective-C 的类型,反之亦然。如 string 对应原来 Objective-C 的NSString, closures 对应 Objective-C 的 block,等等。 Objective-C 积累下来的大量库,代码不用改写,Swift 就直接可以使用。看两个 API 的声明,对比一下&/p&&p&Objective-C
&/p&&div class=&highlight&&&pre&&code class=&language-swift&&&span class=&n&&void&/span&
&span class=&n&&dispatch_apply&/span&&span class=&p&&(&/span&&span class=&n&&size_t&/span& &span class=&n&&iterations&/span&&span class=&p&&,&/span& &span class=&n&&dispatch_queue_t&/span& &span class=&n&&queue&/span&&span class=&p&&,&/span&
&span class=&n&&void&/span& &span class=&p&&(&/span&&span class=&o&&^&/span&&span class=&n&&block&/span&&span class=&p&&)(&/span&&span class=&n&&size_t&/span&&span class=&p&&));&/span&
&span class=&o&&-&/span& &span class=&p&&(&/span&&span class=&n&&void&/span&&span class=&p&&)&/span&&span class=&n&&touchesBegan&/span&&span class=&p&&:(&/span&&span class=&bp&&NSSet&/span& &span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&n&&touches&/span& &span class=&n&&withEvent&/span&&span class=&p&&:(&/span&&span class=&bp&&UIEvent&/span& &span class=&o&&*&/span&&span class=&p&&)&/span&&span class=&n&&event&/span&&span class=&p&&;&/span&
&/code&&/pre&&/div&&p&Swift
&/p&&div class=&highlight&&&pre&&code class=&language-swift&&&span class=&kd&&func&/span& &span class=&nf&&dispatch_apply&/span&&span class=&p&&(&/span&&span class=&n&&iterations&/span&&span class=&p&&:&/span& &span class=&nb&&UInt&/span&&span class=&p&&,&/span& &span class=&n&&queue&/span&&span class=&p&&:&/span& &span class=&n&&dispatch_queue_t&/span&&span class=&p&&!,&/span& &span class=&n&&block&/span&&span class=&p&&:&/span& &span class=&p&&((&/span&&span class=&nb&&UInt&/span&&span class=&p&&)&/span& &span class=&p&&-&&/span& &span class=&nb&&Void&/span&&span class=&p&&)&/span&&span class=&o&&!&/span&&span class=&p&&)&/span&
&span class=&kd&&func&/span& &span class=&nf&&touchesBegan&/span&&span class=&p&&(&/span&&span class=&n&&touches&/span&&span class=&p&&:&/span& &span class=&bp&&NSSet&/span&&span class=&p&&!,&/span& &span class=&n&&withEvent&/span& &span class=&n&&event&/span&&span class=&p&&:&/span& &span class=&bp&&UIEvent&/span&&span class=&p&&!)&/span&
&/code&&/pre&&/div&&p&我怀疑,Swift 中的接口文件,是利用原来 Objective-C,C 中的接口文件自动程序生成的。&/p&&br&&p&&b&同一个工程,可以同时使用 Swift, Objective-C, C, C++ 四种编译语言(额外嵌入的脚本语言另算)&/b&&/p&&br&&p&原来的 iOS/Mac 工程,已经可以同时使用 Objective-C, c, C++三种语言。现在支持第四种。Objective-C, C, C++ 三种语言的结合很容易,Objective-C 跟 C 原本就兼容,Objective-C 跟 C++ 混编只要将文件名改成.mm。而 Swift 跟其它语言的结合,需要另外的文件进行桥接,其实也挺方便的。&/p&&br&&p&这里的桥接很容易,Apple自家的各种 C 库移植过来了。比如Core Image/Audio,直接包含&/p&&div class=&highlight&&&pre&&code class=&language-swift&&&span class=&kd&&import&/span& &span class=&nc&&CoreAudio&/span&
&span class=&kd&&import&/span& &span class=&nc&&CoreImage&/span&
&/code&&/pre&&/div&&p&就可以使用了。&/p&&br&&p&现在 Swift 完全可以跟 Objective-C 并存,原来的工程不建议重写,也不用重写。顺其自然,慢慢让它进化就是了。&/p&&br&&p&&b&Swift 写法看起来像脚本语言,但它是真正的编译语言&/b&&/p&&br&&p&初学者,看它使用了&/p&&div class=&highlight&&&pre&&code class=&language-swift&&&span class=&kd&&let&/span& &span class=&nv&&a&/span& &span class=&p&&=&/span& &span class=&mi&&4&/span&
&span class=&kd&&var&/span& &span class=&nv&&b&/span& &span class=&p&&=&/span& &span class=&s&&&hello&&/span&
&/code&&/pre&&/div&&p&没有类型定义,就想当然的觉得它是脚本语言,解释执行,这是不对的。上面两行语句是用了类型推导,类似 C++ 里面的 auto。Swift 跟 Objective-C 的运行时环境一样,写的程序跑起来不会比Objective-C 慢。Swift 区分了struct 和 class, 分别使用传值跟传引用。另外类中的函数可以直接调用,而不像 Objective-C 那样需要发送消息,运行速度要比 Objective-C 快一些。&/p&&br&&p&&b&Swift 吸收了很多其它语言的语法,写起来比 Objective-C 简洁得多,不过它的很多概念,跟原来 Objective-C 差不多&/b&&/p&&br&&p&编程语言的语法重要,但是语法背后的概念更重要。比如面向对象,常用概念无非是,继承,多态,封装,信息隐藏等。继承又可能分成多重继承,接口继承,实现继承。或者还会有些嵌套类,嵌套函数等等。&/p&&br&&p&当明白语法背后的概念,知道为什么需要有这些东西。之后从一门语言切换到另一门有着相同概念的语言,其实很容易。&/p&&br&&p&而语法会影响表达,理论上每门语言都可以表达任何概念。不过当某种概念在某门语言中,很难表达出来,就会倾向于不这样使用它,这种概念在那门语言的社区就难以被人熟知。&/p&&br&&p&感觉上,Swift 有着
Objective-C, C++, Ruby 的影子。&/p&&br&&p&暂时,我自己最喜欢的3个特性有&/p&&ul&&li&tuple,终于可以返回多个数值了。一行交换两个值。C++ 里面的 tie+tuple 也可以实现类似功能,不过使用库,显得噪音太多。&/li&&li&closure,喜欢它的简写,还有在函数最后一参数,可以写在()外面。这些特性,用来写函数式风格的程序,会很好看。而原来 Objective-C 的block, 还有 C++ 的function, 就太啰嗦了。&/li&&li&switch,case 里面的条件匹配。&/li&&/ul&&p&这些语法,编译最后还是会映射成原来 Objective-C 的运行模型。原来 Objective-C 的概念,引用记数,ARC, 属性,协议,接口,初始化,扩展类,匿名函数等等,继续有效。&/p&&br&&p&有个大块头的东西,是原来 Objective-C 没有的,就是泛型。Swift中 将那种操作写一次,就可以作用多个类型的语法叫做generics(泛型)。&/p&&br&&p&总的说来,Swift 涵盖了现在流行的编程方式,结构化,面向对象,泛型,函数式。&/p&&br&&p&&b&Swift 的新语法,可以很好地支持内部 DSL&/b&&/p&&br&&p&有一种编程风格,不太好归类。就是将程序拆分成,描述+解释。解释部分写一次,其它地方使用描述式的语句,而不是命令式的语句。&/p&&br&&p&内部DSL,通常利用主语言的语法特性,创出一套写法,来写一些描述性的语句。这些语句组合起来,就像一门新语言似得。这个比较难理解。举个例子(从ruby那里借过来的),假如计算,几小时之后的秒数。C 语言中,大概会写成&/p&&div class=&highlight&&&pre&&code class=&language-swift&&&span class=&n&&getHourSeconds&/span&&span class=&p&&(&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&而现在 Swift中,只要定义了扩展&/p&&div class=&highlight&&&pre&&code class=&language-swift&&&span class=&kd&&extension&/span& &span class=&nc&&Int&/span&
&span class=&p&&{&/span&
&span class=&kd&&var&/span& &span class=&nv&&hours&/span&&span class=&p&&:&/span&&span class=&nb&&Int&/span&
&span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&kc&&self&/span& &span class=&o&&*&/span& &span class=&mi&&3600&/span&
&span class=&p&&}&/span&
&span class=&kd&&var&/span& &span class=&nv&&ago&/span&&span class=&p&&:&/span&&span class=&nb&&Int&/span&
&span class=&p&&{&/span&
&span class=&k&&return&/span& &span class=&o&&-&/span&&span class=&kc&&self&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&就可以写成&/p&&div class=&highlight&&&pre&&code class=&language-swift&&&span class=&mf&&3.&/span&&span class=&n&&hours&/span&
&span class=&mf&&3.&/span&&span class=&n&&hours&/span&&span class=&p&&.&/span&&span class=&n&&ago&/span&
&/code&&/pre&&/div&&p&分别是 3 小时后的秒数,3 小时前的秒数。&/p&&br&&p&同理,也可以写成&/p&&div class=&highlight&&&pre&&code class=&language-swift&&&span class=&mf&&10.&/span&&span class=&n&&days&/span&
&span class=&mf&&10.&/span&&span class=&n&&days&/span&&span class=&p&&.&/span&&span class=&n&&ago&/span&
&/code&&/pre&&/div&&p&这种写法,看起来跟原来的命令式写法完全不同。这些程序是描述性的。原来的 Objective-C, 从语法上做不到这样自然。 我估计 Swift 以后会冒出大量这样风格的库。&/p&&br&&p&这种风格,到底好不好,要看情况。比较方便定义内部 DSL 的语言, 我自己知道的有 C++, Ruby, Lisp。现在多了 Swift。&/p&&br&&p&&b&认为所有人都是0基础的,是错误的&/b&&/p&&br&&p&有些人学得特别快,因为之前的基础好。语言的语法只是表面,表面的东西总是变动得比较快的。底下的东西重要得多,而看不见。水面一块冰,有些人是冰山露出一角,有些人是无根的浮冰。看起来差不多,其实差别十分之大。&/p&&br&&p&我相信有些人,在两个小时之内就可以使用这门新语言。之前已经掌握 Objective-C 了,切换到 Swift 中其实也容易。&/p&&br&&p&&b&提提那个Playground&/b&&/p&&br&&p&苹果前员工 Bret Victor 有个视频 &a href=&///?target=http%3A///v_show/id_XMzUyOTIyNzg0.html%3Ffrom%3Ds1.8-1-1.2& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Bret Victor - Inventing on Principle&i class=&icon-external&&&/i&&/a&,提到这种可视化编程。当我们每一步操作,都得到实时地反馈,我们的做法会有很多不同,做出的东西也会不同。这个Playground 用来学习Swift 的特性很好用,但还不能跟实际工程结合起来使用。&/p&
更新-------------------现在还处于过渡时期,但趋势很明朗了,Swift 必然会替代 Objective-C,并且比想象中来得快。现在就应该做好准备了。假如之前已经掌握了 Objective-C,切换到 Swift 也不难。Swift 中很多概念在 Objective-C 中已经存在。…
我比较同意 @李楠 的看法。&br&&br&&&1、木讷、没礼貌。&br&做技术需要踏踏实实沉下心来做事情,久而久之就会养成相对内敛一点的性格。如果你碰到一个满口甜言蜜语的技术人员的话,你真的要小心了,这种技术人员往往会给你惹出很大的麻烦,比方说谎报工作成果,在团队内搞风搞雨,搬弄是非,挑拨离间,这是我招人的血泪教训啊。&br&&br&&&2、合作做事情不喜欢汇报进度,比如正在做你的东西,忽然停下不知道干别的什么去了,不等你催他都不跟你讲。&br&如果是“合作”关系的话,用“汇报”这个字眼显得很有问题。他既然和你是平级的合作关系,凭什么要向你汇报他的工作? 要汇报也是只有义务向自己的领导汇报吧。&br&&br&比方说我手下带的研发团队、产品团队和运营团队共同合作做一个项目。研发工程师没有任何义务向产品人员或者运营人员汇报进度,研发团队只有义务向我汇报工作。那么团队之间怎么加强沟通呢?我采用的办法是:&br&&br&各个团队把进度汇报到我这里来,我让产品人员每周出一个项目进度周报,邮件群发给所有人,让每个人了解项目的进度。另外,在项目上线前30天开始倒计时,每天下班前,我把项目组所有人召集起来进行一个快速的每日进度的review沟通会。&br&&br&我采用这种项目管理方式屡试不爽,产品,研发和运营团队协作的效率很高。所以说,出现你说的那种情况在我看来就是领导的失职,产品人员没有权限直接指挥和自己平级的研发人员。是上一级的领导放弃了自己的职责。&br&&br&&&3、不回QQ,回的话就重现第1点。&br&我工作的时候不喜欢开QQ,开QQ也是免打扰模式。有事给我发邮件说,这是我灌输给整个团队的理念。&br&&br&再多说两句,程序员这个职业的专业性非常强,不要说和外行人交流,就是做不同领域的开发,几乎都无法交流,比方说做Web项目的、做嵌入式开发的,做游戏引擎的,他们的知识体系都很少重叠,几乎无法在专业领域进行有效的交流,更不要说和非技术人员交流了,那肯定是很容易出现障碍的。&br&&br&我打个比方,医生这个职业的专业性也很强,所以你会感觉医生也很难交流,通常很不愿意和患者进行深入的交流,这和程序员是一个道理,知识体系差异太大,除非交流能力特别强的人,否则很难建立有效交流。&br&&br&最后补充一句哈:检查程序员的工作进度对技术出身的经理来说,并不是什么难事,其实就算程序员不向我汇报,我也照样知道他们的工作进度。道理很简单,我有公司内部git源代码服务器的最高权限,我会定期pull各个项目的源代码出来,看看最近谁提交了哪些commit,呵呵。
我比较同意 @李楠 的看法。 &&1、木讷、没礼貌。 做技术需要踏踏实实沉下心来做事情,久而久之就会养成相对内敛一点的性格。如果你碰到一个满口甜言蜜语的技术人员的话,你真的要小心了,这种技术人员往往会给你惹出很大的麻烦,比方说谎报工作成果,在团队…
就是热了脱衣服写代码,冷了开暖气脱衣服写代码!不过估计大多数人还是追求性感外的知性吧!&br&&br&&img src=&/14b862e007f91edccde32e04_b.jpg& data-rawwidth=&600& data-rawheight=&392& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&/14b862e007f91edccde32e04_r.jpg&&图片来自豆瓣:&a href=&///?target=http%3A///people/pei830/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pei&i class=&icon-external&&&/i&&/a& 的 &a href=&///?target=http%3A///note//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&装修“脚本”&i class=&icon-external&&&/i&&/a&
就是热了脱衣服写代码,冷了开暖气脱衣服写代码!不过估计大多数人还是追求性感外的知性吧! 图片来自豆瓣: 的
不管你在公司经历了什么,因为什么原因离职,用专业的方式离开是你唯一不会后悔的决定,如果因为任何不恰当的方式造成与公司的矛盾,公司完全有能力让你今后的道路非常坎坷。&br&&br&纸质或邮件方式的正式离职信是有法律效力的,按照劳动法,你有权在正式提出离职的一个月后走人,公司当然也有权在你提出离职的一个月内不放你走。&br&&br&如果你担心公司不放你,请提前做好交接计划、打消公司的疑虑,并且让公司知道你的离职决定是慎重的,正式的。关于离职的原因,离职报告上只需要写个人原因,如果公司领导问你为什么离职,相信我,他是想听你说真心话,你完全可以坦诚的讲。&br&&br&另外要注意的是除非你有十足的把握,不要利用离职与公司讨价还价,也不要因为公司口头答应你的条件选择留下,否则你后面不管是走还是留都会非常被动。&br&&br&回归正题,离职时跟领导怎么说,可以参考下面这份:&br&&br&进入xx已经x年多了,承蒙各位领导错爱,让我能在xx这个平台上学习、成长、结识了很多同事、朋友并见证了xx发展最快的这几年。&br&&br&经过一段时间的思想斗争和慎重考量,我正式因个人原因提出离职,并希望能在xxxx完成各项工作交接。&br&&br&与此同时,我愿就以下事项向各位领导进行说明:&br&&br&1. 离职前,全力完成本职任务、并做好交接工作,离开公司后,继续协助做好公司外部沟通事项的导引工作。&br&2. 不以任何方式散布和发表对公司不利的评论。&br&3. 不以任何方式散布和传播包含公司商业秘密的代码及文档。&br&4. 不主动招聘和挖角公司在职人员。&br&&br&祝愿xx发展越来越好,祝愿各位领导、同事工作顺利,家庭美满!&br&&br&&b&更新一下,&/b&更多人都觉得公司这么黑、伤我伤的这么重,为什么离开的时候不能狠狠出口气过把瘾呢? &br&有句话叫:&b&不是对方做了什么来伤害了我们,往往是我们所选择的回应伤害了我们。最好的方式就是&/b&&b&选择最能反应我们价值观的回应。&/b&
不管你在公司经历了什么,因为什么原因离职,用专业的方式离开是你唯一不会后悔的决定,如果因为任何不恰当的方式造成与公司的矛盾,公司完全有能力让你今后的道路非常坎坷。 纸质或邮件方式的正式离职信是有法律效力的,按照劳动法,你有权在正式提出离职…
只好搬出我们班的法国人了……&br&这真是程序员。&br&&br&被人截图传到微博上了,删图。大家开开心心的在知乎点点赞看看帅哥多好,何必要传到微博呢
只好搬出我们班的法国人了…… 这真是程序员。 被人截图传到微博上了,删图。大家开开心心的在知乎点点赞看看帅哥多好,何必要传到微博呢
&b& 大幅修改,将命令分类,并更新了参考书籍。严禁任何人转载!!!&br& 添加总原则,以及部分书籍的中文版链接。&br& 添加两个 sort 排序实例。&/b&&br&&b& 添加 autojump 和 一个 mkdir 实例。&br&-----------------------------------------------------------------------------------&br&总原则:&br&1)Type less, accomplish more 少打多做&br&2)DRY, Don't Repeat Yourself 不要重复&br&3)Care about your tool 关心你的工具&br&------------------------------------------------------------------------------------&br&抛弃Bash,投入zsh的怀抱&/b&&b&&b&
sudo apt-get install zsh zsh-doc&/b&&br&&/b&如何将 zsh 设置为默认的 shell&br&chsh -s /bin/zsh,然后输入你的用户密码。注意,不要使

我要回帖

更多关于 一个程序员的酷炫桌面 的文章

 

随机推荐