Category: blog
[翻译]发明原则(inventing on principle)
找到并遵循你自己的原则。
持续地去解决工作生活中违背这些原则的事情,优秀的工具或者产品,不过是这个过程的副作用。
背景
该演讲最初由Bret Victor在CUSEC(Canadian University Software Engineering Conference) 2012上发表1。
至今我们仍未得知那些平行宇宙里的小白鼠们是否懂得信息论
问题
假设现在有1000瓶药水,其中一瓶是毒药,服用后一小时发作身亡。毒药可以无限稀释,那么给定一小时你需要至少几只小白鼠来找到毒药?
一直以来,小白鼠们为生物医学科研和制药行业贡献太多。
REST 以及 RESTful 辨析
从REST
概念提出到现在已经20年了,业界的主流实践采纳借鉴了其部分原则,但与其最核心的架构设计渐行渐远。
实际上那个去中心化的、面向全世界开放的万维网时代正在落幕,构建在其基础之上的REST
架构思想,也无可避免地被冷落或者被误解。
让我们聊一聊Rust的所有权系统
所有权(ownership)系统是 Rust 最与众不同的特性,让Rust实现了既要保障内存安全又要无GC,运行时高性能的目标。
adsf-vm
官方给出的定义是:
Manage multiple runtime versions with a single CLI tool
大家在日常开发时,经常遇到需要对同一个编程语言/框架安装不同版本的情况,比如 python 2/3 ,ruby 1.8/1.9,scala 2.11/2.12/... ,gradle 4.x/5.x 等等。虽然已经有pyenv,rvm,sdkman 等等针对这些语言进行多版本的管理,方便不同版本的环境切换,但是:
Git协议代理配置
Git
使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议。
为了能够顺畅使用GitHub
,我们需要为 HTTPS
SSH
配置代理。
一致性模型
基本概念
正确性(Correctness)
一个系统是由一个状态和一些转换该状态的操作组成的。当系统运行时,它通过一些操作记录从一个状态转换到另一个状态。
OpenStack 管理
kolla-ansible 部署 all-in-one 模式 OpenStack stein版
Rust mio库源码情景分析
mio 是 Metal IO,Rust语言生态比较底层的I/O库,官网的介绍:
Mio is a lightweight I/O library for Rust with a focus on adding as little overhead as possible over the OS abstractions.
mio目前已经发布了v0.6.19版本,这次分析代码版本选择 master
分支,commit id
14f37f283576040c8763f45de6c2b2bbcb82436d
我们从官方自带的example进行源码跟踪分析。
如何放大你的个人能力(一)
问题
一个普通人如何具有强大的能力,做到某些他原本无法做到的事情呢?
最简单的内网导航网站
随着业务系统的增长,运维工具的增多,我们经常需要访问监控页面、ssh登录机器,需要记住很多常用信息,但是这些信息不值得占用宝贵的大脑资源,只需要存储下来用的时候访问即可。 我们需要一个超简单的导航网站。
如何最简单地实现一个静态的网站?不要任何多余的东西。
最好几行代码实现服务,向外提供一个html文件访问服务。新增内容时候,只需要添加到html文件即可。
服务端架构演进
Consul+Registrator+Nginx方案的部署
详细介绍Consul+Registrator+Nginx方案的部署细节。
更新配置自动化工具
使用Gradle 构建SpringBoot应用的Docker镜像
《从0到1》读书笔记
市面上大把的书教你如何变得优秀:如何成为优秀的人,如何创立优秀的公司。
这本书谈的是卓越。
优秀是大众看得到的,显而易见的好,但卓越一开始是反直觉的,而且很难,直到最后的结果太强大,大家不得不接受。
如果你照搬他们(比尔盖茨,拉奇佩里,扎克伯格)的成果,你就不是在向他们学习。
画家齐白石也有过类似的话:
学我者生,似我者死。
模仿大师的产品,是没有前途的。要模仿学习的的是他们的思考方式。
高性能OLAP调研
业界有没有面向亿级数据多维度组合查询能够亚秒级响应的系统?
到底是谁的All In
3周了,朋友圈还是陆续有创业者转发这篇文章。
https://mp.weixin.qq.com/s/-PZ-NtXAfg2jNEmvKN5OBQ
很可惜这篇文章出现了严重的定位错误。
如果文章名字叫《不能All in 的人别去创业》讲给创业CEO听的,倒是贴切。
但讲给创业公司的所有员工听,那只能说是认识上犯了很大的错误。
软件工程的手工艺时代
目前的软件设计/软件架构非常依赖个人经验。
基本上是从个人经验出发定义问题,分析问题抽象模型然后做决策,不具备普适性更不能形式化证明,不能流程化,没有坚实的系统化的理论指导。
很多人喜欢谈架构,在架构设计上争高低,但大部分都是谈论基于自己经验的认知甚至都没有对当前问题做统一定义。
HanLP vs LTP 对比
两个NLP库对比
HanLP https://github.com/hankcs/HanLP 自然语言处理库。
LTP https://github.com/HIT-SCIR/ltp 哈工大 语言技术平台(Language Technology Platform,LTP)。
一加3T Root
预备
安装adb,直接安装 android sdk 即可。配置adb所在目录到环境变量
下载TWRP的 recoveryhttps://dl.twrp.me/oneplus3t/twrp-3.1.1-2-oneplus3t.img.html 保存为 twrp-oneplus3.img
下载SuperSU https://download.chainfire.eu/1021/SuperSU/SR3-SuperSU-v2.79-SR3-20170114223742.zip 保存为 sr3-superSU.zip
进入到 twrp-oneplus3.img sr3-superSU.zip 所在目录,方便执行命令。
Genymotion模拟器安装 Xposed
Android项目持续集成环境
Android工程构建
数据抽象
SICP在第二章(构造数据抽象)中提出了一个问题:
数据究竟意味着什么?
书中的答案是:数据是一组适当的选择函数和构造函数。
(这里的适当的是指那些能够刻画数据本质特征的)
也即是:数据是函数。
业务模块无耦合通信协议的设计
定义
模块:独立提供特定业务功能的完整体,这里并不指代无业务的基础组件
主客户端:接入各个模块的容器App
通信解释器:实现了本文定义的通信协议的组件
问题
虽然目前我们已经在代码组织形式上拆分了出了各个module,避免了代码级别的到处复制,在主客户端组合了每一个业务模块,但是目前的模块化依然存在诸多问题:
不规范的HTTP 204 响应格式
dexopt的源码跟踪
其实你不知道MultiDex到底有多坑
愉快地写着Android代码的总悟君往工程里引入了一个默默无闻的jar然后Run了一下, 经过漫长的等待AndroidStudio构建失败了。