Many Links 0612

1.
https://www.elastic.co/blog/this-week-in-elasticsearch-and-apache-lucene-2018-05-18
ElasticSearch 新进展:

在7.0.0中,新索引默认接收一个分片(而不是五个)。我们进行了这项更改以帮助解决当前默认值导致的常见问题:过度分解。许多用户最终拥有太多的分片,我们认为将默认设置降为1将有助于解决这种情况
高级REST客户端中的搜索模板支持
带有静态评分信号的更快的top-k查询…还有很多可以参考更新notes


2.
http://karpathy.github.io/2016/09/07/phd/
A Survival Guide to a PhD

3.
How a Kalman filter works, in pictures
http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/

大一学《机械制图》一门课时,囫囵吞枣地了解到卡尔曼滤波在测量上的作用,但如果去了解背后的思想,还是蛮惊叹的:

卡尔曼滤波(Kalman filtering)一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。
斯坦利·施密特(Stanley Schmidt)首次实现了卡尔曼滤波器。卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器。 关于这种滤波器的论文由Swerling (1958), Kalman (1960)与 Kalman and Bucy (1961)发表。
数据滤波是去除噪声还原真实数据的一种数据处理技术, Kalman滤波在测量方差已知的情况下能够从一系列存在测量噪声的数据中,估计动态系统的状态. 由于, 它便于计算机编程实现, 并能够对现场采集的数据进行实时的更新和处理, Kalman滤波是目前应用最为广泛的滤波方法, 在通信, 导航, 制导与控制等多领域得到了较好的应用.
卡尔曼滤波的局限性在于其只能拟合线性高斯系统。但其最大的优点在于计算量小,能够利用前一时刻的状态(和可能的测量值)来得到当前时刻下的状态的最优估计。


4.
Pinterest如何利用机器学习实现两亿月活跃用户,来自Infoq的分享
http://www.infoq.com/cn/presentations/pinterest-get-two-hundred-million-global-monthly-active-users

Pinterest主要业务:个性化主页,搜索,相关图片,广告,如今实现2亿月活用户离不开其可以让用户沉浸其中的推荐。
Pinterest推荐模型
线性推荐模型
上线过两个版本:逻辑回归(Logistic Regression)和支持向量机排序(SVM_Rank)
● 都使用的开源软件
○ LR: scikit-learn
○ SVM_rank: sofia-ml
● 为数不多的特征
○ 最初版本包含12个图片特征以及图片与用户交互信息的特征
例如:图片的近期点击率,用户是否曾与图片所在的图板产生过互动

2015年:
模型使用约有500个非稀疏特征
优点:用户活跃度显著提高 (新增20%活跃用户)
弊端:
1.线性模型不能很好利用高维度的复杂特征/需要手动添加交叉特征 (cross features)
2.单纯用户方面的特征(例如年龄,性别等)对线性模型无意义

2016年:
迭代决策树 Gradient Boosted Decision Trees (GBDT) 上线的迭代决策树模型
优点
1.非线性模型可以有效的探索和转化特征向量空间
2.对于单个特征值误差包容度较高
3.准确高效的特征重要性分析
缺点
1.模型参数数量按决策树深度几何级数增长
2.无法有效利用高维度的稀疏特征
3.对离散特征的概括性的总结利用不够充分
迭代决策树+Embedding特征
缺点
在迭代决策树里使用的一些离散特征只是单纯记忆(memorization) 而
非概括性的总结(generialization)
● 用户和图片的国家,语言等
● 一般只是用来作为比较用户和图片的相应特征是否相同 ● 未完全利用这些离散特征的潜在预测价值
例如
● 来自德国的用户和来自奥地利的用户可能有很多的共同喜好(啤酒,古典音乐…)
● 我们有很多德国用户的历史记录,而只有很少奥地利用户的历史记录
● 迭代决策树模型不能很好的利用基本的用户国家特征

2017年:基于TensorFlow平台的深度学习模型
● 迭代决策树对于特征交互利用的局限性
● 很多用户和图片的特征信息需要人为定义
● 深度学习在很多机器视觉项目和推荐系统中的成功应用

5.
如何看待技术?(指的是系统)
曾流传“技术无罪”,很多人信以为真,或者奉为圭臬,但是本talk里,不这么认为,举了一些例子,如hack,crack,系统故障,以及本为方便考虑却被人作漏洞使用。
喜欢这句:
” Bad software ruins people’s lives.“
我相信随着软件逐渐渗透每个人的日常生活,或者要成为个体的一部分,软件就要考虑这类问题,甚至这些会成为一个门槛,届时对coder的要求会更高,
而不仅仅是现在这样,给一个需求,开发功能就ok了的。

在一个后真相的世界里,软件并不一定要恶意才会有危险。例如,在2016年,Facebook用一种算法取代了它的(人工)新闻编辑。几天之内,阴谋论便成为了热门话题,并以“新闻”的形式出现。’
在本讲座中,我们将讨论在一个看起来更像是《黑镜》中每一周都在上演的情节的世界中构建软件的伦理考虑。没有软件存在于真空中。作为开发人员,我们必须了解软件的社会含义,以帮助我们对我们所涉及的内容以及如何构建软件做出道德决策。当我们认为事情可能出错时,我们必须勇敢的说出来。而且,如果别人说出来,要愿意听。
简而言之:我们必须谦虚,我们必须警惕,我们必须确保我们做出的决定意味着我们可以在晚上睡觉。


这里推荐几个链接,关于技术的定位。
https://www.youtube.com/watch?v=A5umy4lUOOY
不过技术干货不多,甚至最后总结的三个方法过于抽象,可以直接看pdf
https://files.gotocon.com/uploads/slides/conference_7/286/original/so-you-can-sleep-at-night-goto-berlin-4.key.pdf

https://github.com/swissmobidevs/appbuilders18/tree/master/slides
6.
布隆过滤器:Google Guava类库源码分析及基于Redis Bitmaps的重构
https://segmentfault.com/a/1190000012620152
BloomFilter,大家应该都熟悉,简单来说 “布隆过滤器是用来判断一个元素是否出现在给定集合中的重要工具,具有快速,比哈希表更节省空间等优点,而缺点在于有一定的误识别率(false-positive,假阳性)”
那么你了解“那么到底需要多少个哈希函数,以及创建长度为多少的bit数组比较合适”吗, 文章作者简要分析 Guava的BloomFilter代码实现,并引出了Redis的Bitmaps的“数据结构”来实现。

7.
Amazon CTO的未来,以来的未来的技术畅想
The workplace of the future
https://www.allthingsdistributed.com/2018/05/workplace-of-the-future.html
作者关于未来的工作场所的思考,多读几遍,才体会到,是不是空洞的不重要,未来确是在路上。

We already have an idea of how digitalization, and above all new technologies like machine learning, big-data analytics or IoT, will change companies’ business models — and are already changing them on a wide scale. So now’s the time to examine more closely how different facets of the workplace will look and the role humans will have.

In fact, the future is already here – but it’s still not evenly distributed. Science fiction author William Gibson said that nearly 20 years ago. We can observe a gap between the haves and the have-nots: namely between those who are already using future technologies and those who are not. The consequences of this are particularly visible on the labor market many people still don’t know which skills will be required in the future or how to learn them.


8.
来自The Daily WTF的技术 WTF分享,都比较有趣
https://thedailywtf.com/articles/perfectly-technical-difficulties
9.
Gates Notes 2018夏季读书推荐
https://www.gatesnotes.com/About-Bill-Gates/Summer-Books-2018

Leonardo da Vinci, by Walter Isaacson.
Everything Happens for a Reason and Other Lies I’ve Loved, by Kate Bowler.
Lincoln in the Bardo, by George Saunders.
Origin Story: A Big History of Everything, by David Christian.
Factfulness, by Hans Rosling, with Ola Rosling and Anna Rosling Ronnlund.


10.
Netflix-zuul2 正式开源了,这个一些国内知名网站模仿的微服务网关组件
https://medium.com/netflix-techblog/open-sourcing-zuul-2-82ea476cb2b3
infoq的翻译
http://www.infoq.com/cn/news/2018/05/netflix-zuul2
11.
Java的序列化特性将要退出历史舞台了
http://www.infoq.com/cn/news/2018/05/oracle-plans-to-dump-java-serial

甲骨文公司Java平台部门首席架构师Mark Reinhold表示,去除序列化机制是一项长期目标,亦是其专注于面向Java语言功能生产力强化目标的Amber项目的重要组成部分。
为了替换现有序列化技术,甲骨文方面将在相关记录(即Java版本的数据类)获得支持之后,向Java平台中添加一套小型序列化框架。该框架能够支持记录图,而开发人员亦可接入自己选择的序列化引擎、支持JSON或XML等格式,并以安全方式实现记录序列化功能。不过Reinhold目前还无法确定记录功能将正式登陆Java的哪个版本。
根据Reinhold的说法,序列化功能堪称诞生于1997年的一个“可怕错误”。他估计,至少有三分之一甚至是半数Java安全漏洞都与序列化机制有关。序列化总体而言存在巨大安全风险,但Reinhold表示其在简单用例当中的出色易用性仍具有一定吸引力。
最近,Java刚刚迎来了过滤功能,因此如果开发者必须在网络之上使用序列化功能且愿意接受不可信序列化数据流,则可借此选择需要过滤掉的类以实现针对序列化安全弱点的防御机制。Reinhold指出,甲骨文公司目前收到大量运行在网络之上的应用服务器的报告,并发现其中相当一部分在未受保护的端口上使用序列化流。正是为了解决这一问题,过滤功能才应运而生。


12.
顺便回忆下另外一个关于Java Fastjson的序列化漏洞
Fastjson 1.2.24 反序列化分析
https://www.secpulse.com/archives/72391.html
13.
Centrifuge: a reliable system for delivering billions of events per day
https://segment.com/blog/introducing-centrifuge/
14.
Another DI 框架
http://www.baeldung.com/dagger-2
https://segmentfault.com/a/1190000008016507

起初Square公司受到Guice的启发而开发了Dagger,但是Dagger这种半静态半运行时的框架还是有些性能问题(虽说依赖注入是完全静态的,但是其有向无环图(Directed Acyclic Graph)还是基于反射来生成的,这无论在大型的服务端应用还是在Android应用上都不是最优方案)。因此Google工程师Fork了Dagger项目,对它进行了改造。于是变演变出了今天我们要讨论的Dagger2,所以说Dagger2其实就是高配版的Dagger。


15.
https://www.cnet.com/news/inside-an-amazon-warehouse-that-ships-your-supersized-purchases
Why would Amazon even care to offer a Yeti statue for sale? After all, it’s expensive to ship that big guy. Well, that’s likely because the company is keen on building up our muscle memory, so for whatever we can dream of wanting, we’ll go to Amazon first.
为什么亚马逊甚至会提供一个雪人雕像出售?毕竟,运送这个大个子很贵。那可能是因为公司热衷于增强肌肉记忆力,所以无论我们想要什么,我们都会先去亚马逊。

16.
JEP社区一个有趣的帖子的总结。Shebang Coming to Java?
https://www.javacodegeeks.com/2018/05/shebang-coming-java.html
这样想法类似

A Jonathan Giles message in this discussion spells out “various reasons to not want to change JLS or javac“, points out that “shebang scripts are an executable format defined on some, but not all, platforms,” points out that “creating a shebang script is typically more than just adding an initial first line to a file,” and articulates the concept of differentiating explicitly between traditional Java source code and JEP 330 executable Java scripts:
Another interesting side note from this discussion is Brian Goetz’s “retrace” of how JEP 330 got to its current state. He talks about the “countless hours listening to people’s concerns about Java” that led to this realization, “A general theme that people have expressed concern over is ‘activation energy’; that doing simple things in Java requires too much fixed work.” Goetz points out that JShell and JEP 330 are two of many possible ways of addressing this and that these two approaches were selected from among the many after making “subjective choices about which had the best impact” with consideration of “cost (in multiple dimensions) and benefit (or our subjective estimates of the benefits) when making these choices.”


17.
福特汽车零件,都要生产线分类,并配备不同工种的工人专门负责一个环节,很难相信Netflix还有整条生产线工人: Full Cycle Developers at Netflix — Operate What You Build
https://medium.com/netflix-techblog/full-cycle-developers-at-netflix-a08c31f83249
18.
深入Spring Boot:实现对Fat Jar jsp的支持
http://hengyunabc.github.io/spring-boot-fat-jar-jsp-sample/
19.
来自 碼天狗週刊 第 130 期 分享
https://vinta.ws/code/vinta-on-codetengu-weekly-issue-130-programming-code-review-scrum-mongodb-nosql-ipfs.html
20
Hystrix官方工作原理wiki的翻译
http://atbug.com/how-hystrix-works/
21
Made with ♥ by a group of nerds on Earth!
http://www.discoverdev.io/archive/2018-05-22.html
不错的网站,每天分享6-10个链接,我看了很久,Ruanyifeng老师也推荐的
22
如何长时间高效学习? - Andrew Xu的回答 - 知乎
https://www.zhihu.com/question/28358499/answer/43002343
23
经常熬夜的人身体损失了什么? - 格伦的回答 - 知乎
https://www.zhihu.com/question/57235424/answer/244881132
24.
6 months off
一位google go++工程师@rakyll的离开open source(github) 6个月 的理由
https://medium.com/@rakyll/6-months-off-5a6ef304cd02
https://twitter.com/rakyll
https://github.com/rakyll
这算是这期的福利
25.
一个关于 目测是关于河马生鲜的有趣故事,我也只能呵呵了
http://highscalability.com/blog/2018/6/8/stuff-the-internet-says-on-scalability-for-june-8th-2018.html

Harrison Jacobs: The joke used to be that Chinese people like to live near good public schools, Liyan Chen, the manager of international corporate affairs at Alibaba, told Business Insider. “The joke now in China is that they want to live where the Hemas are, because then they can get everything delivered to them really easily.”…The technological advancements Alibaba has brought to Hema — easy in-app ordering, ultrafast delivery, price matching, facial-recognition payment, tailored stocking based on spending habits, etc. — Amazon could easily bring to Whole Foods. And in my opinion, given Amazon’s obsession with efficiency, it’s a matter of not if, but when.


26.
对程序员说的正能量
@Nick_Craver: If you’re an engineer, programmer, whatever or hoping to be one. Don’t listen to these claims. Large projects always have tons of mistakes in them. Minimize them. Learn from them. Try not to repeat them. Move on. Remember to laugh at them later. It’s part of life. Don’t sweat it.
27.
80/90分别有着自己的语言,但是程序员其实也有,比如:
https://twitter.com/Stephan007/status/1004987356338884609
28。
为什么说GPDR不会长久?
@jim_dowling: Counter example. 5 years ago your facebook landing page was built by select …group by. Now that same page load causes up to 9m machine learning model inferences per second…. You’re welcome.
实际上,网站已开始只有最简单的功能,但是随着公司规模的扩张,公司想要更好的的理解用户,需要新功能的开发,这就导致,同样简单请求,做的事情可能越来越多。
29.
从一笔交易说起,如何处理好数据的一致性问题
http://www.iigrowing.cn/cong_yi_bi_jiao_yi_shuo_qi_ru_he_chu_li_hao_shu_ju_de_yi_zhi_xing_wen_ti.html
一直记不住这些,所以最怕别人问到这些,反正记住的大多不求甚解,真正遇到问题时考虑不到这点。而遇到问题能自然的敏感到有这么个理论存在,才是真正的掌握。就像Einstein只记得光速是c而不记得具体数字值。

事务隔离级别
Read Uncommitted: 允许脏读,不可重复读,存在幻读
Read Committed: 没有脏读脏读,不可重复读(提交后可读),存在幻读
Repeatable Read: 没有有脏读,可重复度,存在幻读
Serializable: 没有脏读,可重复度,不存在幻读

Serializable串行执行,效率太低。一般使用Repeatable Read,这类隔离级别可重复读,保证一个事物内数据处理的一致性,避免了脏读也防止了事务回滚造成的脏数据,更大程度上保证了事务的一致性,至于幻读,如果我们处理好具有竞争关系的数据库资源,则可以很好的避免数据不一致的问题


30.
你的电子设备一年耗电多少?
http://www.chip.cn/article-175-1.html
31.
收藏几个网友智慧的链接:
mac程序员必备以及常用app
https://www.zhihu.com/question/20036899
https://www.zhihu.com/question/19550256
https://leohxj.gitbooks.io/a-programmer-prepares/software/mac/software-list.html