Scott's Blog

明生写字的地方

单元测试的原则、最佳实践和模式

这是一篇书评,同时也是笔记。年初到现在,看了不少技术图书,但这本 Unit Testing 是最让我震撼的。作者开篇就提到 学习单元测试不应该仅仅停留在技术层面,比如你喜欢的测试框架,mocking 库等等,单元测试远远不止「写测试」这件事,你需要一直努力在单元测试中投入的时间回报最大化,尽量减少你在测试中投入的精力,并最大化测试提供的好处,实现这两点并不容易。 这说出了我们这些...

办公族自救指南

用工具改善你的坐姿

这是一篇很早就想写的文章,因为自己做程序员也有 4 年时间了。各种毛病积累了不少:键盘手,腰突,近视增长,肥胖,掉头发……,但是大部分这类问题在最近半年都得到了解决,所以记录一下我的解决方案,希望对其他人也有所帮助。 我们一天中大部分时间都是坐着度过的,做地铁或公交去公司,坐着上班,坐地铁或公交下班,回家坐着吃饭,坐着休息,然后躺着睡觉。而坐姿不对的话,容易导致各种各样的问题,拿我身边的朋...

关于 joi

一个用 Elixir 写成的验证库

背景 去年在公司做一个基于 CQRS 的项目时,需要用到验证库,因为 CQRS 强调读写分离,而且不是普通数据库层的读写分离,所以写那端显然不适合再继续使用 Ecto.Changeset 的那种验证了。 在探索和使用了 Vex,Skooma 等库后,发现他们都不能达成我的期望,Vex 是类 Rails ActiveModel Validations 型的验证,在自定义一些模块的时候,不够...

用 Absinthe 构建 GraphQL API

本文是上周 Tubi TV 在北京举办「Elixir Meetup 第二期」分享之 <从 Django 到 Phoenix + Absinthe> 的部分内容文字稿。 什么是 GraphQL A query language for your API 按照 GraphQL 官方的解释,它无非就是一种用于 api 的查询语言而已。 拿这个查询所有文章的 title ...

如何安装 Debian 9?

上周 GPU 服务器抽风,老是突然卡死。Ubuntu 总是充满了不稳定,而 Debian 则是稳定的代名词,于是趁周末时间+周一,把服务器重装为 Debian 9。特别感谢 ibrother,没有他的帮助,搞不定这么复杂的配置。 下载 Debian 发型版 建议准备两个 U 盘做启动盘,一个用于体验,一个用于安装系统。 制作 U 盘工具推荐 Rufus - Create bootabl...

Python 中的描述符

注:本文是个人阅读 《Fluent Python》 第 6 部分和 观看 Luciano Ramalho - Decorators and descriptors decoded - PyCon 2017 的笔记 假设有个销售散装有机食物的电商应用,客户可以按重量订购坚果、干果或杂粮,在这个系统中,每个订单中都有一系列商品,而每个商品都可以用下面类表示。 LineItem 01 版 &...

数据分析中的命令行工具(3)

成为创造者--快速创建命令行工具

前言 无论是数据分析还是其他,总有一行命令解决不了的事,这时,便需要把工作流程写成脚本,Shell 脚本太复杂,人生苦短,掌握一些 Python 命令行脚本技巧,你会感叹世界如此美好。入职几个月,针对日常高频工作写了几十个 Python 脚本,其中有些脚本几乎没有参数,如执行一段流程,类似一键导出数据库等,有些带有两三个参数,还有些脚本拥有复杂嵌套参数。作为一个命令行钟爱者,这些脚本借助的...

数据分析中的命令行工具(2)

做一个优雅的调包侠--擅用第三方包

本文不以具体工具为组块,而按数据处理流程介绍各类命令行工具的用法,看本文前,建议提前下载以下工具。 CSV 系列工具 dilshod/xlsx2csv: Convert xslx to csv, it is fast, and works for huge xlsx files getsheets csvkit 1.0.1 — csvki...

数据分析中的命令行工具(1)

Linux Shell 内置命令

自 16 年 9 月开始转岗「数据分析师」,已近 4 月,数据分析的前提是数据清洗和整理,在诸多重复性工作中,命令行无疑帮了大忙,多数任务用 Python 等编程语言得写小会代码,而命令行通常一两行就能解决,这篇文章是我最常用的系统内置命令介绍,Mac 系统可参考 这个答案 下载 GNU 工具。 head & tail 查看数据 head -n Number filename t...

Pandas 和 MySQL 搭配使用

背景 公司服务器托管在阿里云,系统为 CentOS,所有商品数据在其 MySQL 数据库中。 现在需要一个批量/自动化脚本能把采购经理整理的 Excel 数据一键上传到数据库。 解决方案 也许你会想「这个简单,把 Excel 转化为 SQL 语句不就好了」,且不说转化起来不容易,本身 Excel 的数据就不够干净,需先做数据处理与清洗。 最后,经过一番搜索,找到了 Python 的这个...