RSSAmplifier

Blog

flapenguin.me

Bits and bicycles

flapenguin.meRSS feed ↗16 posts

Latest posts

ringbuffer даром

Кольцевой буфер (он же ring buffer ) – это структура данных #datastructure, которая позволяет тебе писать с одного конца ( write ) и читать с другого ( read ). Она классно подходит, когда тебе нужны FIFO очереди, потоки и всякие системы, где читатели с писателями работают отдельно друг от друга. more...

Почему ON CONFLICT DO NOTHING тебя ненавидит и конфликтует

В стандарте SQL есть такая конструкция INSERT ... ON CONFLICT (constraint) DO UPDATE , также известная как UPSERT . Нужна чтобы добавить или подобновить строку. на И есть её брат-близнец INSERT ... ON CONFLICT (constraint) DO NOTHING , которая просто превращается в no-op, если строка уже есть. more...

euid - от кого запустили sudo

Уже достаточно давно я разбирал как запускать всякое от root’а через setuid флажки. more...

scm_rights - посылаем дескрипторы почтой

Всё это время я тут задвигал про uid'ы и gid'ы . Это неплохая система доступов, позволяющая делать комплексные вещи. more...

groups – наш пользователь и человек, и пароход, и wheel

Я говорил, что gid у процесса очень похож на uid . Но на самом деле не совсем похож. more...

capabilities - root по кусочкам

Что-то мне подсказывает, uid 0 был выбран для суперпользователя по банальной причине: удобно писать if (uid && !allowed(uid, ...)) goto fail; . more...

init - запускаем голый exe на голом ядре

root тяжело найти , легко потерять и невозможно забыть . Осталось понять откуда он изначально берётся. more...

setuid - получаем root

Я рассказывал , что у процесса есть точно такие же числа uid/gid, как у файлов. И то, что когда процесс пытается получить доступ к файлу, эти числа сраниваются. more...

binfmt_misc – почти что реестр, но в linux

Пока мы обсуждали как можно писать свои реализации read / write через #vfs или #fuse, только отдавая информацию из чего-то похожего на привычные файловые хранилища, но всё ещё не делали ничего странного на write . И в эту субботу самое время. more...

fuse - монтируем в фс что угодно

Шок! read / write начинает ходить в user space, стоит только поставить один единственный пакет… more...

vfs - нет никаких файлов

Вчера я упомянул про #procfs. И это отличный повод поговорить про файловые системы. more...

Пользователь – user-space конструкт

Давай начнём с чего-нибудь лайтового в #linux'е, например, с айдишников пользователей, uid'ов. more...

Why Number.isNaN is not properly typed in TypeScript

Can't it just be typed to return true when argument is known to be NaN at compile time? more...

Parsing XML with Regular Expressions

Someone told me that I can't parse XML with regexes, and I just had to prove them wrong. more...

ELF: better symbol lookup via DT_GNU_HASH

DT_GNU_HASH is a better hash table for the ELF used by GNU systems in GNU-compatible software, i.e. in almost every program compiled with gcc or clang for almost any Linux distribution. more...

ELF: symbol lookup via DT_HASH

Several weeks ago I asked myself how dynamic linker finds printf in libc.so to apply relocations in my "Hello, world!" program. more...