Light, casual, posted anytime. 26 entries, piling up slowly like sticky notes.
The legal and regulatory basis carriers use to suspend residential broadband lines running PCDN: the “Notice of the Ministry of Industry and Information Technology on Cleaning Up and Regulating the Internet Network Access Service Market” (MIIT Xin Guan Han [2017] No. 32).
When users run PCDN devices on non-commercial broadband, it constitutes the de facto act of “enterprises or individuals operating CDN business without qualifications,” violating the red line that “enterprises and individuals without the corresponding telecom business operating licenses shall not operate IDC, ISP, CDN, or similar businesses.” It also breaches the service agreement clause that “residential broadband must not be used for commercial purposes.” The PCDN hardware and software companies do hold CDN/IDC operating licenses — but only they may strike commercial agreements with carriers to purchase commercial bandwidth. Using residential broadband resources for PCDN uploads is explicitly not protected by law.C114 (communications industry forum) reports that all three major Chinese carriers are implementing or discussing broadband upload caps: China Mobile has finished the rollout and launched it in some regions — 1 TB monthly upload per broadband line, throttled after that. China Telecom has finished the work but hasn’t launched anywhere yet. China Unicom hasn’t started; it’s still in discussions.
Annual rewrite, done. This time I rebuilt the frontend with React and optimized everything that could be optimized, fully separating frontend and backend. The cost: each incoming request now fans out to multiple backend APIs through the node server, amplifying the request count — and node burns so much CPU it can barely handle the concurrency anymore. Repository and artifact management has fully migrated to GitLab; several new tools added to the toolbox; some toolbox tools were rewritten in Go.
A bloodbath caused by a single space: on insert I validated the format, so spaces couldn’t hurt me there — but the query path didn’t handle spaces. That led to infinite recursion: if the person couldn’t be found, insert a new record; then the lookup still failed, so insert again — recursing until the stack filled up and overflowed.
