掘金日报主打分享优质深度技术内容,技术内容分:前端、后端、Android、iOS、产品设计、工具资源和一些有趣的东西。
前端
比较与理解 React 的 Components,Elements 和 Instances
在翻译《React Components, Elements, and Instances》文章的基础上,主要专注阐述 React 的一个核心理念:用 Elements Tree 描述 UI。
如何用 JavaScript 实现一个数组惰性求值库
在编程语言理论中,惰性求值(英语:Lazy Evaluation),又译为惰性计算、懒惰求值,也称为传需求调用(call-by-need),是一个计算机编程中的一个概念,它的目的是要最小化计算机要做的工作。
redux 三重境 – 对 redux 最佳实践的思考和总结
- redux 基础知识和 react-redux
- redux 周边生态探索
- 有哪些功能?(粗略介绍)
- 有哪些很不错的第三方库?(详细介绍)
- 最佳实践介绍(dva)
后端
魅族推荐平台的架构演进之路
魅族整个产品线都有用到推荐,包括资讯、视频、应用中心、个性化中心、广告等业务,魅族的推荐平台在其中起到了关键的作用,下文将会全面分析从开始到现在的架构演进,以及其中涉及的技术难点分析,以期给读者带来更多的思考。
优先队列实现原理分析
优先队列是在实际工程中被广泛应用的一种数据结构,不管是在操作系统的进程调度中,还是在相关的图算法比如 Prim 算法和 Dijkstra 算法中,我们都可以看到优先队列的身影,本文我们就来分析一下优先队列的实现原理。
《Deep Learning》中文版电子书
这是《Deep Learning》的中文翻译,有 PDF 可以下载还可以阅读原版。这本书以后将由出版社进行发行但是译者选择将它开源,开源的原因文中也有介绍。
Android
深入理解 ServiceManager
ServiceManager 是安卓中一个重要的类,用于管理所有的系统服务,维护着系统服务和客户端的 binder 通信。 对此陌生的可以先看系统服务与 ServiceManager 来了解应用层是如何使用 ServiceManager 的。 我们可以通过 ServiceManager.getService(String name) 来获取服务,返回的是一个 Binder 对象,用于与系统做远程通信。
Android 底部导航栏 (底部 Tab) 最佳实践|掘金技术征文
当开始一个新项目的时候,有一个很重要的步骤就是确定我们的APP首页框架,也就是用户从桌面点击APP 图标,进入APP 首页的时候展示给用户的框架,比如微信,展示了有四个Tab,分别对应不同的板块(微信、通讯录、发现、我),现在市面出了少部分的Material Design 风格的除外,大部分都是这样的一个框架,称之为底部导航栏,分为3-5个Tab不等。前段时间开始了一个新项目,在搭建这样一个Tab 框架的时候遇到了一些坑,前后换了好几种方式来实现。因此,本文总结了通常实现这样一个底部导航栏的几种方式,以及它各自一些需要注意的地方。
[译] Android 如何实现气泡选择动画
从安卓 Nougat 的底部导航到分屏特性,两个平台间有了许多相同之处。对设计师而言,我们可以将主流功能设计成两个平台一致(过去需要单独设计)。对开发者而言,这是一个提高、改进开发技巧的好机会。所以我们决定开发一个安卓气泡选择的组件库 —— 灵感来自于苹果音乐的气泡选择。
iOS
可能是最全的iOS端HttpDns集成方案
DNS劫持会在我们正常浏览的网页链接里面被恶意插入一些奇怪的东西。不止是这些,DNS劫持还会对我们的个人信息安全造成很大的伤害,钓鱼网站之类的,也许我们所访问的网站根本不是我们需要的网站,或者根本打不开网页,有时还会消耗我们过多的流量。
掌握 Swift 的字符串细节
String 类型在任何编程语言中都是一个重要的组成部分。而用户从 iOS 应用的屏幕上能读取到最有效的信息也来自文本。为了触及更多的用户,iOS 应用必须国际化以支持大量现代语言。Unicode 标准解决了这个问题,不过这也给我们使用 string 类型带来了额外的挑战性。
Weex 事件传递的那些事儿
在前两篇文章里面分别谈了Weex如何在Native端初始化的和Weex是如何高效的渲染Native的原生UI的。Native这边还缺一块,那就是Native产生的一些事件,是怎么传回给JS的。这篇文章就详细分析这一部分。
产品设计
[译] 针对失败者的体验设计
你还记得 turntable.fm 吗?这个产品背后的理念是简单明确的:你和你的朋友或陌生人一起加入了一个虚拟的「房间」,轮流为对方进行打碟。像许多经历过早期流行性增长的产品一样,它采用了现实世界的行为-社交性倾听-并创建了一个数字代理,可以将人们跨越地理和文化的鸿沟即时连接起来。当 turntable.fm 启动时,我非常激动,不会感觉到孤单。
[译] 搜索结果页的最佳实践
搜索就像是用户和系统之间的一次对话:用户用一次查询来表达他们需要的信息,而系统用一组结果做为回应。搜索结果页恰恰是整个搜索体验中的一个关键部分:它提供了让用户参与对话的机会,来指导用户的信息需求。
面试时,如何阐释设计思路?
众所周知,作为设计师,面试的时候,面试官可能会让你拿出自己觉得比较满意的作品来讲讲设计思路,如果你没准备好,再加上一紧张,很容易导致思路混乱,最后连自己都不知道在说什么!
怎么解决这个问题呢?
答案其实很简单:那就是理清思路,做好充足的准备。
工具资源
持续集成是什么 ?
持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作代码,每个成员每天至少集成一次,也可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成BUG,并解决。
收集非常好用的 Mac 应用程序、软件以及工具
这个仓库主要是收集非常好用的 Mac 应用程序、软件以及工具,主要面向开发者和设计师。
贝赛尔曲线系统教程
贝赛尔曲线入门到高级系统教程,可以帮助你更好的理解贝赛尔曲线。
有趣的视频
皮克斯经典「Wall·E」番外:电焊工波力