Design
The System Design Differences Between Operations and Business
· β˜• 4 min read
1. Choosing a Communication Protocol Ops systems are better suited to HTTP than to gRPC. More ops and R&D engineers are familiar with HTTP than with other protocols. Once you know the HTTP protocol, learning a RESTful-style HTTP API is quick. Being familiar to more people and easier to learn means better communication and lower handover cost, because they share more common domain background.

How to Decouple Modules with Django Signal
· β˜• 5 min read
Recently I was responsible for developing a backend-heavy application. The data flow in this application is complex, and the processing logic has piled up in a redundant mess. The project’s tech stack is Django + Vuejs. The frontend is bundled with Webpack, managed in modules, and mainly displays data. The backend involves many modules, many processing rules, and many data tables, so every time I had to modify an earlier feature I spent a lot of time reviewing the code.

Django Model and E-R Diagram
· β˜• 6 min read
As requirements are gradually confirmed, the system’s DB model is gradually confirmed as well. Sometimes you use a tool like MySQL Workbench to draw an E-R diagram and then generate MySQL database tables, and at that point you need to reverse-generate Django Models; other times you write the Django Models directly, but then you need to look at the E-R diagram.

Operations Tracking and Solution Design
· β˜• 3 min read
1. Terminology xpath: There are two approaches, the exact path and the approximate path. Exact path: body>div[0]>div[3]>ul>li[5]>a[0], walking up from the clicked element all the way to the root node and recording every node along the way. Approximate path: body>div.header>div.nav>a[23], which on top of the former omits from the upward path any node that is not on the whitelist.

Haystack Full-Text Search
· β˜• 3 min read
A quick word on the project requirements: the team needed to publish documentation externally. The documents are written in Markdown and need to be published as HTML. At first we used an Nginx + Jekyll solution. As the documentation grew, the document system developed a strong need for search. I