Skip to content

Instantly share code, notes, and snippets.

Linux Command Exercises with Python subprocess

Ten real-world exercises using ls, cat, grep, find, and awk, driven from Python with subprocess. Difficulty goes from easy to medium.

Rules for every exercise

  • Use the list form (["grep", "-c", "ERROR", path]), never shell=True.
  • Use text=True and capture_output=True unless the exercise says otherwise.
  • First try the command in the terminal, then write the Python version.
@tdpvg3193d
tdpvg3193d / insight-resource-digest-d39e170282.md
Created September 20, 2026 02:18
球友会 - qiuyou-space.com.cn

已经在本地跑过一个小项目,现在想把根文件系统里的改动规范化提交?从 init 到第一次 PR,这里走一遍。

先聊分支模型外的那几个开关

很多人熟了 git checkout -b 就停了。协作规范里真正容易扯皮的是几个不常动的配置。

  • git config --global pull.rebase true 能避免合并气泡污染 commit 列表
  • git config --global core.autocrlf input 预防跨平台换行符冲突
  • .gitattributes.gitignore 更需要进版本库,尤其团队同时有 Win/mac 时
@tdj0ckwtyq
tdj0ckwtyq / briefing-digest-95b517f9a3.md
Created September 20, 2026 02:18
赛事通体育 - db-live-saishitong.com.cn

做采集的同学大多踩过两个坑:请求头没带全被 403,翻页翻到一半 token 悄悄失效。这里的笔记把一次完整接口调用的字段、依赖和取舍记下来,目标是复制粘贴就能在本地跑通一条最小链路。

请求前先想清楚的三件事

限速是所有采集任务的底线。优先看响应头的 X-RateLimit-Remaining,按剩余配额动态 sleep,比写死固定间隔稳得多。并发超过个位数时,务必给每个 worker 单独持有锁重试计数,公共计数器在高并发下会算错退避时间。

鉴权 token 的刷新要和请求重试解耦。常见做法是单独开一个协程检查过期时间,早于 5 分钟就预先刷新,避免业务线程拿着过期凭证去试错。

响应体不要一律落盘。字段多、体积大的接口,先按业务键去重再序列化,能省下大量 IO。

@tcy39hgjse
tcy39hgjse / knowledge-resource-digest-d45feff2d8.md
Created September 20, 2026 02:18
易倍体育 - yibei-emc-sports.com.cn

从零实现表达式求值器:几种方案取舍

@supports (font-variant-ligatures: normal) {
  .tokenizer-panel {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.5rem;
    /* 调试用:给每个 token 块加左侧色条以便肉眼追踪流 */
 border-left: 3px solid var(--token-kind, #94a3b8);
@lvhao7896
lvhao7896 / fa_lowp_recip_Sq128_Skv8192_X1_Y1.elf.b64
Created September 20, 2026 02:17
[gfrun][NA] fa_lowp_recip B.ASSEMBLE generation-slot reproducer (ELF base64 + DISS)
f0VMRgIBAQAAAAAAAAAAAAIA6QABAAAAzBIBAAAAAABAAAAAAAAAAOgnAQAAAAAAAAAAAEAAOAAIAEAADQALAAYAAAAEAAAAQAAAAAAAAABAAAEAAAAAAEAAAQAAAAAAwAEAAAAAAADAAQAAAAAAAAgAAAAAAAAAAQAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAADMAgAAAAAAAMwCAAAAAAAAABAAAAAAAAABAAAABQAAAMwCAAAAAAAAzBIBAAAAAADMEgEAAAAAAIwMAQAAAAAAjAwBAAAAAAAAEAAAAAAAAAEAAAAGAAAAWA8BAAAAAABYLwIAAAAAAFgvAgAAAAAAaAAAAAAAAABoAAAAAAAAAAAQAAAAAAAAAQAAAAYAAADADwEAAAAAAMA/AgAAAAAAwD8CAAAAAAAAAAAAAAAAAECjEgAAAAAAABAAAAAAAABS5XRkBAAAAFgPAQAAAAAAWC8CAAAAAABYLwIAAAAAAGgAAAAAAAAAqAAAAAAAAAABAAAAAAAAAFDldGQEAAAATAIAAAAAAABMAgEAAAAAAEwCAQAAAAAAHAAAAAAAAAAcAAAAAAAAAAQAAAAAAAAAUeV0ZAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVuc3VwcG9ydGVkTGF5b3V0AAAAAAAAAFJvd01ham9yAAAAAAAAAABDb2xNYWpvcgAAAAAAAAAAa05vbmVCb3gAAAAAARsDOxgAAAACAAAAxhAAADQAAABUEwAATAAAABQAAAAAAAAAAXpSAAF4CgEbDAEAAAAAABQAAAAcAAAAihAAAHIAAAAARA6AAooBACwAAAA0AAAAABMAALgJAQAARA6ABIsBjAKNA44EjwWQBpEHkgiTCQAAAAAAAAAAAAAAAAAyAlZQAAiVCuAFKzAQAAAA1ACH8f//lvhlYCwAogCHLwEAlR8sNAkxLBgACBWRYQ0AOJwC
@tcqjkdgsip
tcqjkdgsip / growth-brief-8f0a021aa5.md
Created September 20, 2026 02:17
米兰娱乐 - milan-oasis.com.cn
; nuclei 模板中常见的 requests 块结构,用于对比 HTTP 探测类工具的 DSL 设计
[id: cve-2021-41773-apache-path-traversal]

[http]
  method = GET
  path = ["/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd"]
  headers = { User-Agent = "nuclei-custom-scan" }
  matchers-condition = and
 matchers = [
@tca59qfpy3
tca59qfpy3 / web-memo-937ef57c81.md
Created September 20, 2026 02:17
火博体育 - club-archive-huobo.com.cn

一次 CI 流水线构建缓存的优化记录

结论先说:把依赖下载环节的整体缓存策略改为内容寻址与分片复用后,构建耗时从原先的波动区间收敛到一个更稳定的范围,且失败重试率明显下降。下面按步骤拆解这次优化的动机、做法和踩到的坑。

定位常见的错误与排查路径

  1. 先量化再动手。我一开始误以为是打镜像慢,连续盯着 docker build 的输出,注意卡住的时间其实发生在 mvn dependency:resolve 阶段。
  2. 从日志里找重复行为。开启 CI 的 debug 后,能看到每次构建都从远端仓库重新拉同样的依赖,缓存目录压根没命中。
  3. 验证假设。手动把本地 ~/.m2/repository 挂进构建环境,耗时立刻下降,证明问题确实在依赖缓存的失效逻辑上。
  4. 别急着改缓存 key。坑点在于:仅调整 key 而不解决内容寻址问题,远程存储会持续膨胀,缓存查找反而变慢。
@Monfraal
Monfraal / log-🛒・comprar・utdguefjwg4fhshrbvbdtsnf.html
Created September 20, 2026 02:17
Log - Ticket #🛒・comprar・utdguefjwg4fhshrbvbdtsnf
<html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="icon" type="image/png" href="https://cdn.discordapp.com/icons/1396184864709017641/639008d1098d050b040f6f06920ee01f.png?size=16"/><title>🛒・comprar・utdguefjwg4fhshrbvbdtsnf</title><script>document.addEventListener("click",t=>{let e=t.target;if(!e)return;let o=e?.getAttribute("data-goto");if(o){let r=document.getElementById(`m-${o}`);r?(r.scrollIntoView({behavior:"smooth",block:"center"}),r.style.backgroundColor="rgba(148, 156, 247, 0.1)",r.style.transition="background-color 0.5s ease",setTimeout(()=>{r.style.backgroundColor="transparent"},1e3)):console.warn("Message ${goto} not found.")}});</script><script>window.$discordMessage={profiles:{"1470786642502750258":{"author":"Nezuko","avatar":"https://cdn.discordapp.com/avatars/1470786642502750258/34b8cf64842df124002a62a357008584.webp?size=64","roleColor":"#4cadd0","roleIcon":"https://cdn.discordapp.com/role-icons/1481043678599577652/d1110323433c23536e
@tc3ufs1frz
tc3ufs1frz / strategy-resource-digest-e255ec8f86.md
Created September 20, 2026 02:16
乐动体育 - 77qipai-ledong.com.cn

本文适合已经理解 HTTP 基础、正打算把「拦截器」从零散中间件抽象为可复用组件的开发者。

用责任链模式重构请求安全校验:一次 API 网关的改造记录

先把请求跑起来,再谈模式

改造前我们用一个 200 行的 handler 函数串联签名校验、时间戳防重放、IP 黑名单三件事。调用链一乱,curl 都看不出哪层拒绝的。于是我先写了一个最小的复现脚本,让每次拒绝都返回确定性响应:

# 模拟网关对网关上游的签名校验请求
/* = CONSULTAS DE SQL: SELECT, WHERE & ORDER BY
Base de datos: Northwind = */
/*1.Consulta de prueba inicial*/
SELECT * FROM Products;
/*2. Proyección de columnas específicas*/
SELECT productname, unitprice FROM Products
/*3.Filtrado básico por texto*/
SELECT companyname, contactname, city
FROM customers
WHERE City = 'London';