RSSAmplifier

Blog

Cyanide

blog.mapotofu.orgRSS feed ↗54 posts

Latest posts

洛阳游记

五月中旬,北方已经经历过 39 度的高温,再加上洛阳的牡丹差不多谢了,实在没什么特别的理由,只能说“顺路”去洛阳转一圈吧。 坐在高铁上,看着华北平原的雾霾,以及尚未褪去的沙尘,实在是有些压抑。好在接近洛阳之后空气慢慢变好,下车后发现湿度也还不错,起码不至于每天流鼻血了。 洛阳的地铁只有纵横两条线,能辐射的范围有限,出门基本靠打车,或者趁着清晨和傍晚的凉爽骑共享单车。 把行李放到酒店之后就中午了,酒店前台推荐了一家游客常去的餐厅,人实在是太多了,但我也懒得再顶着烈日找别的。打开菜单确实没太多想法,一个河南人进了一家河南餐馆,实在是不知道点什么,果然出门在外还是得靠 KFC 和麦当劳。 因为博物馆的门票只有第二天的,下午安排了最期待的龙门石窟,还想着顺便去白马寺看看热闹,就只好先忍着高温直奔白马寺了。…

Improve an algorithm performance step by step

Recently, I've been working on a new approximate nearest neighbor search algorithm called RaBitQ . The author has already provided a C++ implementation that runs quite fast. I tried to rewrite it in Rust (yet another RiiR). But I found that my implementation is much slower than the original one. Here is how I improve the performance step by step.

My journey with envd

envd is a frontend of BuildKit . Just like the Dockerfile. It has been more than a year since I started working on this project. Since the features are relatively stable, I'd like to write a blog about my journey with envd .

PyChon China 2022 - envd

Develop machine learning applications inside the containers

Why not multiprocessing

Be careful to use multiprocessing in production.

CI/CD for data science

Lots of people are talking about MLOps recently. Continuous Integration (CI) and Continuous Delivery/Deployment (CD) are the basic requirements for MLOps. This post will focus on some details about CI/CD for data science.

Long Time No See

Why haven't you post any blogs for the past half year? In short, I'm too lazy.

Note for Resilient Distributed Datasets

Resilient Distributed Datasets: A Fault-Tolerant Abstraction forIn-Memory Cluster Computing

Note for MapReduce

MapReduce: Simplified Data Processing on Large Clusters

Deep Learning Serving Framework

Yet another deep learning serving framework that is easy to use.

Deep Learning Serving Benchmark

There is no black magic, everything follows the rules.

Rate Limiter Implementation

Rate limiter is used to constrain the request for a certain period, which can reduce the pressure of servers, prevent malicious attacks, offer more stable services.

Python Descriptor Short Note

Define : a descriptor is an object attribute with "binding behavior", one whose attribute access has been overridden by methods in the descriptor protocal.

SpecTree

SpecTree: Yet another tool to generate OpenAPI document and validate request & response with Python annotations.

2019 回顾

划水摸鱼又一年。

Kubernetes in action note

k8s is really complex...

systemd command cheatsheet

useful command for systemd

写了两个 Python service API doc&verify 工具

最近在看一些 API 规范化的资料,鉴于没有很合适的,就自己写了两个 Python 的包,顺便记录下感想。

NGINX Cookbook note

NGINX Plus looks great :)

极简流浪生活

Less(poor) is more(hard).

极客的爱情

我并非故意要标榜极客是多么另类的群体,只不过当两个极客相遇并惺惺相惜,他们之间法生的很多事情确实有趣的很,至少对其他极客来讲。而这样的事情,放在普通人身上或许只会让人觉得奇怪吧。嗯,看起来还是比较另类的。

Ansible tutorial for human

We need documents for human, not for robots.

996ICU

那个 996.icu 的项目也快一个月了,现在 star 增长不多了,估计不会突破 250k。我早就觉得有写点什么的必要了。

意难平

巫炤,他惩罚别人,也惩罚自己。他只是意难平。

The worst practice for software engineering

People will suffer a lot from bad design or bad code in software engineering. Today I'd like to share a number of the worst practices.

Note for Vimtutor

Just type vimtutor in your terminal to learn the basic usage of Vim. Although I usually use VSCode for coding, sometimes you have to edit files in the server. Mastering the basic of Vim is necessary.

自杀式单身

自杀式单身:形容一直单身又不主动扩展社交范围去认识新朋友,却每天幻想着能拥有爱情的行为。

2018 回顾

很快就到年末了,对比之前的 2018 年的目标,来总结一下吧。

填坑一个 Java 项目

重构是不可能重构的,这辈子都不可能重构的…… 好吧,我自己写的垃圾代码我自己重构…… 什么!?你要我去修改别人的垃圾代码?!

NLP with Deep Learning

Notes of CS224n: Natural Language Processing with Deep Learning

Recommendation System Checklist

Notes of "36 strokes of recommended system"

文本分类

文本分类是最经典的机器学习问题之一,像 anti-spam,情感分析,语义相似等,都是以文本分类为核心建立起来的。当我们能处理好文本分类问题的时候,往往都能很好解决这些问题。

写个博客那么多事儿

各种工具、平台、格式泛滥成灾,每个打算动手写博客的人都要在上面浪费不少时间。是否要自己搭建?该选什么主题?要买什么域名?鉴于我已经在上面浪费了不少时间,就简单总结一下吧。

项目文档管理

没文档或者文档太烂的项目是可怕的,完善易懂的文档是一个好项目的标配。 如何管理项目文档对于维护一个靠谱的项目是至关重要的。

T 型路线

做一个 T 型人才,或者说博学且有专长,这类说法在很多地方都能看到,我印象中最深刻的是在 Valve 的员工手册中,大概是因为一直都期待能有一家企业回应这种说法吧。

拼音输入法引擎

最近在做 query rewriting 的时候,需要做一个拼音转中文的功能,做着做着,就差不多快做成一个拼音输入法引擎了。

拼写检查器

跟拼写检查器还是有点渊源的。想当初做数学建模的时候,就遇到过一次类似的问题,于是去网上搜到 Peter Norvig 的教程,写的非常好,当时看到短短二十行代码就能很好解决这个问题,实在是惊艳。而我也是从那个时候开始学习 Python 的。当然,以我初学者的水平要想一时间完全看懂他的代码是不太可能的,不过还是能理解大体的流程,做了一定修改后留作自用。

Relevance: from TFIDF to BM25

在信息检索系统中,TFIDF 和 BM25 函数都可以用来计算文档的相关度并进行排序。其中,TFIDF 也经常被用在自然语言处理中,BM25 则可以看做是 TFIDF 的进一步演化。在处理搜索字符串的时候,它们采用的都是 Bag-of-Word 方式,也就是说会忽略掉词的出现顺序,只考虑词出现与否和词频。

Python Package

偶尔手痒了会撸一个 Python 的项目打包发布到 PyPI 上,方便以后安装使用。即使不是打算发布的,如果考虑把文档写在代码的注释里然后用 Sphinx 生成的,通常也是打包安装到本地,然后在一个地方集中生成文档,方便管理。

Python 编码

毫不客气地说,编码真的是 Python 使用者遇到的最多的问题之一。新手看了会崩溃,老手遇到会流泪(感叹以前踩过的坑)。

面具

面具戴太久,就会长到脸上,再想揭下来,除非伤筋动骨扒皮。 ——鲁迅 这里的面具虽然指的不是游坦之的面具,不过这确实是个很符合上面这句话意思的例子。游坦之的面具是阿紫给他的枷锁,即使他后来忍痛揭下来,还会有无形的枷锁和满脸的伤疤。

Deep Learning Applications

Deep Learning Applications in NLP, CV and RL etc.

PyTorch 踩到的坑

目前的深度学习框架实在太多了,初学者难免不知道选哪个才好,是追求曝光率最高的 TensorFlow ,还是最 Geek 的 MXNet ,又或是最易用的 Keras ,又或者是最贴近 Python 编程思维的 Pytorch ?

GitHub 骗星星指南

Star 对 GitHuber 来说还是很重要的,以至于淘宝都有代刷的业务了,就是不知道有没有发生过刷太多上了 Trending 的。 找人代刷毕竟太 low 了,我们还是要走别的路线,这样显得好像也是个正规军。

通向财富自由之路

我们活着是为了什么? 这个哲学问题太难了,换个简单一点的。 怎么活着比较爽啊?

2018 做点什么

这篇当然不是 2018 第一天写的,毕竟这一年已经懒了太多了。写这篇的目的,无非就是总结一下自己的 2017,然后展望下自己的 2018 。

Rust 略详细的介绍

Rust 是一门编译型系统编程语言。官方给出的定义是: Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety. 可以看出这是一门主打效率,安全和并发的语言。

大学这四年

时光飞逝,还没来得及好好享受,就已经大学毕业了。 回想这四年的时光,虽然多是无聊的日子,但多少也有一些值得怀念的记忆。

Flask 规范化

说到 Flask ,这是我接触的第一个后端架构,也基本是目前唯一一个比较熟悉的。 对于规范化,这当然是很有必要的,特别是你的项目越做越复杂,不断增加新功能的时候,就会发现如果一开始结构很差,基本就需要大规模重构了。而重构,又通常是说说而已,真正动手完全重构什么的是不存在的,这么丑的代码,就算是我自己写得,我也不想再看了。 所以呢,一开始就尽可能做得规范一点,这样以后看起来就很舒服了,进行修改也会变得相对简单,别人要接手也不会看吐了。

Docker 常用命令

Docker 这几年非常火,只不过对于我这种基本不接触业务的人而言,平时很少会用到 Docker,自己写项目愿意用 Python 的 virtualenv 就不错了。