近期一些不错的文章

1. 对职业生涯感到迷茫时可以看看这本书

这个阶段主要是寻找到达目的地的人(导师/贵人)、技能(是否具备转型所需的技能)和机会。多与自己仰慕的人交流,听取他们的建议;做一些调查;填补技能短板;明确怎样的机会是自己最想要的;适当地加强社交圈,增加曝光度。

这个阶段多想想我能提供什么?有哪些需要被解决的问题?同时让自己处于可被发现的状态(就像蓝牙设备一样),通过写作、作品、分享扩大影响圈,这样才能让机会找到你。

在寻找项目的过程中,多想想为什么要做这个项目?想要达到什么目标?想要影响哪些人?应该做些什么才能最大化自己的价值?

发展自己的社群

这需要时间,但是值得。通过在 20% 的业余时间建立的良好口碑,离职后依然有人持续地来咨询。


尽可能地在工作之余抽出时间来经营自己的项目。验证过程中,多想想哪些是可行的,哪些不可行,需要做出哪些改变。




2. 使用邮件来进行信息管理,顺便介绍最近写的一个小 app - Mail Me




3.  Swift 的强大之处

<1> Optionals 让我们能够应对有可能存在也有可能不存在的值。

<2> Swift 不允许nil被传入。

<3> 使用 optionals 一段时间之后你会发现你只需要阅读类型而不用再去看文档了。

<4> 如果你有一个函数会因为一个明显的原因失败你可以返回一个 optional。

Enums

在函数式编程当中,在你想表示两件事情之间的选择时候你会经常用到Either类型。举个例子:如果你有一个函数返回一个整数或者一个错误,你就可以用Either。如果你想在一个字典中储存布尔值或者字符串,你就可以使用Either作为键。

拓展Currency遵循CurrencySymbol协议

类型安全

一个是optional,一个是struct




4. 结构体和值类型

结构体是值类型(复制)的,而类是引用类型(多所有者)的,这一行为上的细微区别造就了架构上的无限可能。




5. Swift 方法的多面性

方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法,类型方法与类型本身相关联。类型方法与 Objective-C 中的类方法(class methods)相似。

一句话:函数是独立的,而方法是函数封装在类,结构或者枚举中的函数。

Swift 和 Objective-C 之间其中一个巨大的差别就是当 Swift 函数被调用的时候参数工作方式。

`外部参数名称`


外部参数和内部参数相同

调用方法

方法的第一个参数名不被外部包含,最佳实践是在方法名里包含第一个参数名。添加`_ `来解决调用需要包含名称(慎用)。

实例方法

helloWithNameFunc是MyHelloWorldClass -> (String) -> String类型,这个函数接受我的类的实例并返回另一个函数。新函数接受一个字符串值,并返回一个字符串值。

初始化

初始化方法的第一个参数必须在实例时必须是外部的。最佳实践是添加一个不同的外部参数名。也可用`_`避免。

参数 

<1> 可选 -- optional - ?

<2> 默认值 -- 最佳实践 -- 放在参数列表的最后 

<3> 可变参数 -- name : String...  -- 可变参数必须是在函数列表的最后一个! 

<4> 输入输出参数 inout -- 经过引用来操纵外部变量

Swfit 中的错误处理 ? 

<5> 泛型参数类型 -- T

<6> 作为参数的函数 -- func + instance.method + typealias

Public + Internal + Private  --  // MARK: Private Helper Methods

返回类型 

<1> 可选 ?  --  拆包 \(someString)

<2> 多返回值  --  let range - \(range.min) - \(range.max)  +  let(min,max) - \(min) - \(max)

<3> 返回一个函数

<4> 嵌套函数  --  在函数中定义函数




6. Facebook、微信团队、Twitter、微软开源软件列表一览

网络模拟测试工具:ATC

Augmented Traffic Control(ATC)能够利用Wi-Fi网络模拟2G、2.5G(Edge)、3G以及LTE 4G移动网络环境,测试工程师们可以快速在各种不同的模拟网络环境中切换,从而实现对智能手机和App在不同国家地区和应用环境下的性能表现进行测试。ATC是Facebook内部团队在2013年的一次Hackathon活动上开发出来的工具,其原理实际是利用了Linux流量控制系统,通过纯Python的网络库pyroute2调用netlink的API控制,而开发其的目的是为了确保更多的用户获得最好的应用体验。

GitHub主页:https://github.com/facebook/augmented-traffic-control


代码审查工具:Phabricator

代码审查方面,Facebook开源了可视化工具Phabricator。工程师可以在页面上非常方便的针对每一段(单行或者多行)代码进行交互讨论;负责审查的工程师可以接受代码改变,可以提出疑问要求原作者继续修改,可以提出自己不适合以推出该代码审查,等等。只有代码被明确接受之后才能被工程师提交到服务器端的代码库,这一点集成到提交工具中强制执行。

GitHub主页:https://github.com/phacility/phabricator


开源动画库:Pop

Pop是Facebook推出的一个可扩展的iOS 和OS X动画库,其新闻聚合阅读应用Paper背后的核心技术就是由Pop支持。除了增加基本的静态动画外,还支持Spring和衰变动态动画,可非常方便的构建现实的、基于物理的交互。Pop动画库的动画效果非常流畅,因为它使用了CADisplayLink来刷新画面(帧),一秒钟刷新帧数为60帧,接近于游戏开发引擎。Pop动画的自成体系,与系统的CoreAnimation有很大的区别,但使用上非常相似。

GitHub主页:https://github.com/facebook/pop


静态代码分析工具:Infer

Infer是Facebook的开发团队在代码提交内部评审时,用来执行增量分析的一款静态分析工具,在代码提交到代码库或者部署到用户的设备之前找出bug。由OCaml语言编写的Infer目前能检测出空指针访问、资源泄露以及内存泄露,可对C、Java或Objective-C代码进行检测。Facebook使用Infer自动验证iOS和安卓上的移动应用的代码,bug报告的正确率达80%。Infer通过捕获编译命令,把要被编译的文件转换为可用于分析潜在错误的中间语言格式。整个过程是增量进行的,意味着通常只有那些有修改过并提交编译的文件才会被Infer分析。Infer还集成了大量的构建或编译工具,包括Gradle、Maven、Buck、Xcodebuild、clang、make和javac。

GitHub主页:https://github.com/facebook/infer


JavaScript静态类型检查工具:Flow

Flow是Facebook出品的一个JavaScript代码的静态类型检查工具,该工具采用开放源码的OCaml(Objective Caml)语言开发,。Flow能够帮助开发人员查找出JavaScript代码中的类型错误,从而提高开发效率和代码质量。Flow已经能够捕获JavaScript代码中的常见问题,如静态类型转换不匹配、空指针引用等问题。同时,Flow还为JavaScript新增了类型语法,如类型别名。

GitHub主页:https://github.com/facebook/flow


Web应用架构:Flux

Facebook认为MVC无法满足他们的扩展需求,因此他们决定使用另一种模式:Flux。由于Facebook非常巨大的代码库和庞大的组织,所以MVC真的很快就变得非常复杂,于是他们得出结论,认为MVC不适合于大规模应用。

每次Facebook工程师努力增加一项新特性时,系统的复杂性成级数增长,代码变得“脆弱和不可预测”。对于刚接触某个代码库的开发人员来说,这正成为一个严重的问题。Flux是一个Facebook开发的、利用单向数据流实现的应用架构,用于 React。Flux应用有三个主要的部分组成:调度程序、存储和视图(React 组件)。

GitHub主页:https://github.com/facebook/flux


终端跨平台网络组件:Mars

Mars是微信官方的终端基础组件,是一个结合移动应用所设计的基于Socket层的解决方案,在网络调优方面有更好的可控性,采用C++开发。目前已接入微信 Android、iOS、Mac、Windows、WP 等客户端。

在微信中,任何网络实现的bug都可能导致重大事故。例如微信的容灾实现,如果因为版本的实现差异,导致某些版本上无法进行容灾恢复,将会严重的影响用户体验。微信研发了统一的跨平台的网络基础库Mars来满足发展的需要,一方面,基础组件可以提高研发效率,另外一方面,也可以提高系统的稳健性。

在设计上,Mars以跨平台、跨业务为前提,遵从高可用,高性能,负载均衡的设计原则。以网络的可用性为例,移动互联网有着丢包率高、带宽受限、延迟波动、第三方影响等特点,使得网络的可用性,尤其是弱网络下的可用性变得尤为关键。Mars 的STN组件作为基于 socket 层的网络解决方案,在很多细节设计上会充分考虑弱网络下的可用性。

GitHub地址:https://github.com/Tencent/mars


JavaScript库:Twemoji

Twemoji是Twitter于2014年开源的完整的Emoji表情图片,Twemoji包含872个表情,兼容最新的Unicode 7.0。Emoji,来自日本的小巧符号,通过图像表达感情,已经征服了移动互联网的信息世界。现在,你可以在虚拟世界中随处使用它们。开发者可以去GitHub下载完整的表情库,并把这些表情加入到自己的应用或网页中。

GitHub主页:https://github.com/twitter/twemoji

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容