Latest

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

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

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

By Jon
一本小书:《病毒星球》

一本小书:《病毒星球》

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

By Jon
使用 EntityManager 取消 JPA 一级缓存

使用 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

By Jon

《浪潮之巅》读书笔记

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

By Jon

关于格调

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

By Jon

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

By Jon
最寒冷的冬天

Reading

最寒冷的冬天

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

By Jon

使用 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

By Jon

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": "

By Jon

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",

By Jon

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 已经用上了,效率有巨大提升)文件复制瞬间完成

By Jon