TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #131 · 4.01

Инструмент, которым мы делаем работу, очень важен. Да, хороший мастер плохим инструментом сделает лучше, чем плохой — хорошим. Но если речь об эмоциях и удовольствии от работы, здесь удобный и приятный в использовании инструмент значит очень многое. Я ненавидел сверлить стены, пока не купил аккумуляторный перфоратор. Обычным проводным это было мучение: каждый раз искать или розетку рядом или доставать и разматывать удлинитель. А ещё следить за тем, где там провод, и чтобы он не запутался в ногах, тем более когда ты на лестнице. Теперь же я только и ищу, чего б такого просверлить. Аккумуляторный перфоратор — 12/10, стоит каждого рубля. Подобного много. Собирать мебель приятнее шуруповертом с нужной битой, нежели шестигранником, который кладут в комплект. Делать прямые распилы приятнее циркуляркой, а не лобзиком. Класть плитку приятнее с лазерным уровнем и системой выравнивания. И так далее. В программировании аналогично. Я очень высоко ценю удобство языка, на котором пишу. Возьмём к примеру сверлильный станок: он тяжелее, сложнее и занимает больше места, чем дрель. А ещё не везде его можно применить. Но там, где можно, станок позволяет вам выдерживать угол. По сути вся его роль в том, чтобы взять на себя вес дрели и помешать вам сделать ошибку. Мешать делать ошибки — важное свойство инструмента. Именно поэтому я предпочитаю языки с типами. Да, хороший мастер и обычной дрелью просверлит не хуже. Но, напомню, речь идёт об удовольствии, об эмоциях, а не только о результате. Система, которая не даёт сделать ошибку, не только более надёжна сама по себе, но и много приятнее в плане эмоций. Когда ты сложил весь пазл, и последний кусочек идеально вошёл в своё место — это чувство удовлетворения сравнимо с тем, как ты вставляешь новую строчку в программу, и она без ошибок подходит по типам, а из списка подсказок IDE можно брать самые верхние пункты. #life#dev

Hashtags

Резултати

Намерени 3 подобни публикации

Търсене: #ifdef

当前筛选 #ifdef清除筛选
Welcome to the Black Parade

@TheB1ackParade · Post #506 · 05.03.2024 г., 03:58

莫名其妙忙起来了,随便记点免得忘了: 1. tproxy / bpf_sk_assign 对 established tcp 的性能影响是负的,因为设置上 skb->sk 会让 ip_rcv_core 里的 tcp_early_demux 检测失败,从而必须进路由系统。所以正确使用方法是只对 tcp syn 使用 tproxy/sk_assign。 2. 能不能优化 bpf_sk_assign,让它对 listening socket 的 assign 也能像 tcp_early_demux 一样?不能,因为 listening tcp socket 的 sk->sk_rx_dst 是 null,只有 established sk 才有这个 dst。 3. tcpdump ip6 and tcp 生成的 cbpf 是“错的”。它没考虑 ip6 extension。但是 tcpdump (libpcap) 有个对 v6 特别的过滤器: ip6 protochain 6 , 就迭代了 ip6 extension,四次,但是对大部分场景也够用。 4. 晦涩的逻辑。icmp6_host_handle 这个函数名看起来没啥,但是要是我告诉你它实际语义是:只需要在 ( ingress 方向) 或者 (防火墙启动时候的双向) 执行它,如果在 ingress 方向执行的时候不要反弹 icmp6,如果要反弹 icmp6 的话不要反弹 NS for node IP,但是也不要直接返回给内核栈而是继续执行剩余的 nodeport lb。我看着这个原本简单的函数从两个参数变成现在的五个,里外的 #ifdef 嵌套层层恐惧,真是美好的软件。

Hashtags

KernelSU Next

@ksunext · Post #815 · 20.07.2025 г., 20:11

kernel: guard syscall hook types - for kernel syscall hooks we need to pass additional guards for ksun (#ifdef CONFIG_KSU -> #if defined(CONFIG_KSU) && !defined(CONFIG_KSU_KPROBES_HOOK)) or else it will fail to build because of undefined symbol - reference https://github.com/KernelSU-Next/kernel_patches/blob/main/syscall_hook/min_scope_syscall_hooks_v1.4.patch https://github.com/KernelSU-Next/KernelSU-Next/commit/45ad73e9dd86a0ff04a02e73a8fc2dbc3160ee6c

Hashtags