Jon

Jon

职场路书·不同行业的真实工作和真实声音

职场路书·不同行业的真实工作和真实声音

聚合自知乎日报同名专栏 一 审计:四大所薪资比国内所高,高到你咬牙切齿 二 医生 三 写手 四 互联网编辑 五 游戏行业 六 策展(美术馆展览管理、艺术品安装运输、艺术品展览保护、预算控制) 七 新药科研员 八 广告销售 九 音乐人 十 私募对冲基金 十一 程序员 十二 飞行员、机长 十三 广告人 十四 大酒店小财务 十五 物流 十六 金属 高精度铝板带加工工艺工程师 十七 金融
1 min read
一本小书:《病毒星球》

一本小书:《病毒星球》

疫情期间阅读量陡增,除了书架上陈封已久的技术书籍,还有一本“蹭热点”的小书:《病毒星球》。趁着还有记忆,记录一下阅读后的启发和感想。 Virus 这个词的双重含义 Virus 在拉丁文中同时具有蛇的毒液、人的精液两重意思。古罗马人让这个词同时具备了毁灭与创造的含义。 巧合的是,病毒学的研究表明,Virus 是 DNA 不断演化的动力,但同时也具有毁灭某些物种的破坏力,恰好与这个词的原本含义相响应。 关于病毒预防的成本与策略 此次疫情,精于商业计算的英国人在疫情早期提出的“群体免疫”,并不是毫无道理,只是当代价是上万人生命的时候,需要更仔细地掂量掂量,是不是所有代价都能用经济指标、用货币来衡量。 关于病毒/疾病的命名 书中提到1918年那场流感时,刻意避免了“西班牙流感”这一传统名称。这个细节体现了作者的严谨与体面,与2020年某些大国领导人形成了鲜明的对比。 进化的原动力 进化论有三个核心 1. 过度繁殖 2. 基因突变 3. 自然选择 但长久以来,基因突变的原因却没有令人信服的解释。读完这本书后,
2 min read
Java

使用 EntityManager 取消 JPA 一级缓存

JPA 默认开启一级缓存(底层实现是在 EntityManager 层)。 当不同的查询结果映射到同样的 entity 时,一级缓存可能会导致返回数据不符合预期(只查询了一次,后续查询直接返回第一次查询的结果)。 一个例子 一个展示系统的后台,需要分别查询不同指标的月度趋势,查询结果复用同一个 Entity。 @Entity public class MonthlyTrendEntity implements Serializable { private long id; // @Id private Integer year; private Integer month; private Integer value; // ... } 某数据接口中,先后查询了两个不同数据指标的月度趋势。 // ... // 流动资产趋势 List<MonthlyTrendEntity> assetLiquidTrend = financialService.selectAssetLiquid
2 min read

《浪潮之巅》读书笔记

内容基于《浪潮之巅》第二版 AT&T 兴:领先的电话通信技术。进入道琼斯指数。贝尔实验室,充足的研发投入,保持在通信领域的先进地位。 衰 1. 因为反垄断法而拆分(不是衰落的根本原因。此时的拆分没有伤筋动骨)。 2. 管理层、股东追求经济利益而进一步拆分。(内因。拆分后的子公司缺乏研发能力,最终导致衰败。个别高管意识到了这个问题,但是在拆分与否上没有决定权。) 3. 互联网对传统电信行业的冲击(外因。互联网的兴起导致贝尔实验室最强的语音技术失去了价值,文本、图片的处理技术开始兴起)。 亡:朗讯(分拆出来的子公司)被阿尔卡收购。AT&T 被 SBC 以小并大收购,新合并的公司已经不再是原来的 AT&T。 问题:为什么拆分后短期内股价上涨,长期却往往会下跌(失去技术优势?)?满足什么样的条件,
12 min read

关于格调

2018年4月,“内涵段子” App 因为没有格调,被广电强制下架。想起了王小波的一篇旧文。 最近我出版了一本小说《黄金时代》,有人说它格调不高,引起了我对格调问题的兴趣。各种作品、各种人,尤其是各种事件,既然有高有低,就有了尺度问题。众所周知,一般人都希望自己格调高,但总免不了要干些格调低的事。这就使得格调问题带有了一定的复杂性。 当年有人问孟子,既然男女授受不亲,嫂子掉到水里,要不要伸手去拉。这涉及了一个带根本性的问题,假如“礼”是那么重要,人命就不要了吗?孟子的回答是:用手去拉嫂子是非礼,不去救嫂子则“是豺狼也”,所以只好从权,宁愿非礼而不做豺狼。必须指出,在非礼和豺狼之中做一选择是痛苦的,但这要怪嫂子干吗要掉进水里。这个答案有不能令人满意的地方,但不是最坏,因为他没有说戴上了手套再去拉嫂子,或者拉过了以后再把手臂剁下来。他也没有回答假如落水的不是嫂子而是别的女人,是不是该去救。但是你不能对孟子说,在生活里,人命是最重要的,犯不着为了些虚礼牺牲它——说了孟夫子准要和你翻脸。另一个例子是舜曾经不通知父亲就结了婚。孟子认为,
11 min read
iOS

TableHeaderView 使用 AutoLayout 自适应高度

在 viewDidLayoutSubViews() 中设定 headerView 的高度 override func viewDidLoad() { self.headerView = (Bundle.main.loadNibNamed("CreateOrderTableHeaderView", owner: self, options: nil)![0] as? CreateOrderTableHeaderView) } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() sizeHeaderToFit() } func sizeHeaderToFit() { if let headerView = tableView.tableHeaderView { headerView.setNeedsLayout() headerView.layoutIfNeeded() let h
Reading

最寒冷的冬天

最近秋风四起,恰好朝鲜又新闻不断,一副凛冬将至的架势。于是翻出书架上这本尘封已久的老书——《最寒冷的冬天》,看看美国人眼中的朝鲜战争。 牢不可破的朝中友谊? 朝鲜、中国、苏联因为历史原因,并不是牢固的盟友,反而相互猜忌、提防。 在战前筹备的过程中,中国的外交人员,以及政府里的“亲中派”,都被刻意排斥在外,通知中国外交官的消息,也只是一些连公共广播里都有的内容。最终,朝鲜正式出兵开战后,才通知中国方面。 麦克阿瑟:伟大的恶人 年少成名,却活在自己营造的小世界中,被奉承了五十年。 表演型人格。 和《高卢战纪》中的凯撒大帝一样,麦克阿瑟喜欢用第三人称指代自己,比如他自己会这样说:“麦克阿瑟已经决定要到现场指挥疏散行动”。 自诩精通东方心理的麦克阿瑟,在实战中却一再误判。二战时,麦克阿瑟将军认为日本绝无可能主动发起进攻。日本偷袭珍珠港后,也没有能力及时应对,导致九小时后日本再次偷袭复活节岛得手,美军战略轰炸机部队被消灭在停机坪上。 朝鲜战争中,麦克阿瑟再次作出了严重的误差,认为中国不可能出兵参战。 不过,由于在日本战后建设过程中的卓越贡献,麦克
3 min read

使用 Docker 快速搭建 Tomcat 测试环境

1 需求 碰到一个项目,要维护历史代码,运行环境是 Tomcat7、Java6。需要在现有的测试服务器上部署版本比较老旧的 Tomcat 环境。 2 思路 部署测试环境,有两个方法, 1. 用 Docker 起一个容器; 2. 下载 Tomcat 7、JDK 1.6,手动部署。 下面大概设想一下分别使用这两个方法的过程。 2.1 用 Docker 起一个容器的步骤 * 找到合适的镜像和启动参数 * 打开 bash * docker run 过程大约5分钟,之后泡杯咖啡,坐等镜像下载即可。 2.2 手动部署的步骤 * 找到 Tomcat 7 的下载地址 * 下载 Tomcat 7
3 min read
iOS

React Native RCTValueAnimatedNode.h file not found 问题修复

原因 官方代码库里 RCTNativeAnimatedNodesManager.h中 import 了错误的头文件。 GitHub 上相关的 issue 日期是2017年3月,截止本文写作时的2017年9月27日,该问题仍未解决。 * GitHub issue:[iOS][cocoapods] 'RCTAnimation/RCTValueAnimatedNode.h' file not found #13198 * 本文使用的 React Native 版本:0.48.3 解决方法 解决方法是在 package.json 中添加一个指令,修复 ReactNative 源代码中的错误: { "name": "YourProject", "version": "
1 min read
OpenLayers 3

OpenLayers 3 动态更新 VectorLayer 中的数据

通过一个小例子,展示如何改变 VectorLayer 中的要素,并刷新地图。 源代码:qianyanseu/openlayers3-vectorlayer-source-update 关键代码 在 OpenLayers 3 中,更新矢量图层中的内容,可通过修改该图层的 DataSource 来实现。 下面这段代码实现了每5秒更新一次数据。更新时,首先将现有的要素集清空,再批量将获取到的要素集添加到图层中。对 addFeatures() 的调用会自动触发 changed 事件,导致图层重绘,因次不需要再专门调用地图重绘的方法。 var refreshInteval = 5000; // refresh every 5 seconds setTimeout(updateFeaturesForVectorLayer, refreshInteval); function updateFeaturesForVectorLayer(){ $.ajax({ type : "POST",
1 min read

WWDC 2017

开篇 “老公,WeChat 不工作了!” 这广告耗资不少 开篇励志:最年轻和最年长的开发者   tvOS、watchOS 略过。其实做得都很好,只是 tvOS 和国内用户关系不大,Apple Watch 短时间内还没有机会亲身体验(在 Apple Store 把玩不算)。 新版 macOS High Sierra,macOS 版本名可真好起啊! Refinements * Safari * autoplay blocking * Intelligent tracking prevention(对国内这些流氓管用吗?) * Photos 倒是不错,可是硬盘吃紧,注定无法成为主力照片处理工具。Photos 自带曲线(手机上有吗?)! Tech * 文件系统 APFS (iOS 10 已经用上了,效率有巨大提升)文件复制瞬间完成
1 min read