PurpleSchool
Иконка канала PurpleSchool

PurpleSchool

511 подписчиков

118просмотров

IDE, Git, сборка и file watcher могут резко замедлиться, если проект лежит на Windows-диске, а инструменты работают внутри WSL или Linux-контейнера. Каждая файловая операция пересекает границу Windows и Linux. На одном файле это почти незаметно, но на node_modules или большом монорепозитории тысячи таких обращений складываются в заметные задержки. Разбираемся, почему для Linux-инструментов репозиторий лучше держать внутри файловой системы WSL, например в /home/..., а не в /mnt/c. #WSL #Docker #Linux #DevTools #Performance #Frontend #Backend #windows #ide

98просмотров

Срочный hotfix прилетел посреди работы над фичей? Не обязательно делать stash и постоянно переключаться между ветками. git worktree позволяет открыть другую ветку в отдельной рабочей директории. У worktree будут отдельные рабочие файлы, зависимости и результаты сборки, но история и база объектов Git останутся общими. Разбираемся, как использовать worktree для параллельной работы над несколькими задачами. #Git #GitWorktree #DevTools #Programming #webdev #coding #гит

81просмотр

Как debugger выполняет вызов функции целиком, но не останавливается внутри неё? При Step Over отладчик использует отладочную информацию, текущий stack frame и разные механизмы продолжения выполнения — от single-step и range stepping до временных breakpoint. Разбираемся, почему Step Over не означает атомарное выполнение строки и почему иногда debugger может остановиться совсем не там, где ожидаешь. #Debugger #Debugging #StepOver #Programming #webdev #coding #programming

101просмотр

Hot Reload позволяет увидеть изменения в приложении без полного перезапуска — но как это работает внутри? После сохранения файла dev-сервер находит изменившийся модуль и отправляет обновление в браузер. HMR-клиент проходит по графу импортов, ищет подходящую границу обновления и применяет новый код только там, где это безопасно. Разбираемся, как работает HMR, почему состояние иногда сохраняется и в каких случаях приложение всё-таки приходится перезагружать полностью. #HotReload #HMR #Frontend #JavaScript #WebDev #Programming #js #coding

76просмотров

Зачем использовать Orca, если уже есть терминал и привычная IDE? Orca объединяет работу с AI-агентами, браузер, просмотр файлов, code review, интеграцию с issues и pull requests, а также поддержку нескольких проектов и агентов. Разбираемся, кому такой подход действительно будет удобнее терминала или обычной IDE. Полный обзор Orca — по ссылке под шортсом. #ade #ide #orca #aiagents #aisetup #cli #devtools #terminal #codeeditor #ai

116просмотров

Что происходит внутри программы, когда ты ставишь breakpoint в IDE На x86 software breakpoint обычно реализуется через инструкцию INT3 с opcode 0xCC. Debugger временно изменяет машинный код, процессор генерирует исключение, а после остановки debugger восстанавливает исходную инструкцию и позволяет продолжить выполнение. Разбираемся, как работают software breakpoints и чем от них отличаются hardware breakpoints. #Debugger #Breakpoint #Debugging #Assembly #x86 #Programming #ide #coding

93просмотра

Copy-on-Write позволяет создать отдельное адресное пространство процесса, не копируя сразу всю его память. После fork() родитель и потомок могут ссылаться на одни и те же физические страницы. Копия создаётся только тогда, когда один из процессов пытается изменить страницу — поэтому вместо гигабайта данных иногда достаточно скопировать всего несколько килобайт. Разбираемся, как работает Copy-on-Write, при чём здесь page fault и почему этот механизм не избавляет от копирования полностью. #CopyOnWrite #Linux #Memory #OperatingSystems #Fork #Backend #COW #backendinterview

97просмотров

Добавляешь | grep — и программа внезапно начинает выводить строки с задержкой или большими порциями. Но проблема обычно не в скорости grep. Когда stdout подключён к терминалу, программа может использовать построчную буферизацию. После подключения к pipe стандартная библиотека может переключиться на блочную — и данные начинают накапливаться в буфере. Разбираемся, почему pipe меняет поведение вывода и когда может помочь stdbuf -oL. #Linux #Grep #Bash #Terminal #CLI #Stdout #Backend #pipe #grepcommand

146просмотров

В Orca можно запускать несколько AI-агентов и работать с ними в рамках одного проекта. В шортсе запускаем Claude, Pi и OpenCode, смотрим их статус и показываем, как Orca организует работу с агентами отдельно для каждого проекта. Полный обзор Orca — по ссылке под шортсом. #ade #ide #orca #aiagents #aisetup #cli #devtools #terminal #codeeditor #ai

9просмотров

Как устроена Orca изнутри и где искать всё необходимое для работы? Показываем проекты и вкладки, настройки задач и автоматизаций, Orca Mobile, подключённых AI-агентов и их лимиты. А также привычную IDE-часть: файлы проекта, интеграцию с Git, Agent History и проверки по PR. Полный обзор Orca — по ссылке под шортсом. #ade #ide #orca #aiagents #aisetup #cli #devtools #terminal #codeeditor #ai

150просмотров

Orca — бесплатная IDE, созданная для работы с AI-агентами. В одном интерфейсе можно работать с кодом, терминалом и AI-агентами, не собирая рабочий процесс из нескольких отдельных инструментов. В шортсе быстро разбираемся, что такое Orca и чем она отличается от привычной среды разработки. Полный обзор Orca — по ссылке под шортсом. #ade #ide #orca #aiagents #aisetup #cli #devtools #terminal #codeeditor #ai

8просмотров

Bloom Filter может гарантировать, что элемента нет, но наличие определяет только с некоторой вероятностью. Вместо хранения всех ключей он использует битовый массив и несколько хэш-функций. Это экономит память и позволяет быстро отсекать обращения к медленному хранилищу, но создаёт возможность false positive. Разбираемся, откуда берутся ложноположительные срабатывания, почему классический Bloom Filter не даёт false negative и зачем его ставят перед основным хранилищем. #BloomFilter #DataStructures #Algorithms #Backend #SystemDesign #Database #Performance #Программирование

104просмотра

Что произойдёт, если producer стабильно отправляет данные быстрее, чем consumer успевает их обрабатывать? Очередь лишь откладывает проблему: растут lag и задержка, а буфер или хранилище рано или поздно заканчиваются. Здесь нужен backpressure — механизм, который ограничивает поток данных и не даёт перегрузке расти бесконтрольно. Разбираемся, как backpressure работает в Reactive Streams и bounded-очередях и почему consumer lag в Kafka сам по себе producer не замедляет. #Backpressure #Kafka #ReactiveStreams #DistributedSystems #Backend #SystemDesign

7просмотров

Два потока работают с разными переменными, но всё равно могут тормозить друг друга. Причина — false sharing. Если часто изменяемые данные попадают в одну cache line, ядрам приходится постоянно синхронизировать состояние этой линии, даже если сами переменные не пересекаются. Разбираемся, почему это происходит и как alignment или padding помогают разнести данные по разным cache lines. #FalseSharing #Multithreading #CPU #Concurrency #Performance #SystemsProgramming #Backend #Программирование

197просмотров

Сравнить один URL с шаблоном несложно. Но когда такая логика нужна для роутинга, всё становится интереснее. URL Pattern API позволяет декларативно описывать шаблоны URL, проверять совпадения и получать отдельные части маршрута без самописного парсинга. Разбираемся, как работает URLPattern и зачем он нужен в браузере. #URLPattern #urlpatternapi #api #url #JavaScript #WebAPI #Frontend #Routing #Regex #js

196просмотров

Создал индекс, запускаешь EXPLAIN ANALYZE — а PostgreSQL всё равно выбирает Seq Scan? Это не обязательно ошибка. Планировщик может отказаться от индекса, если запрос возвращает слишком много строк, условие не совпадает с индексом или составной индекс не подходит по левому краю. Разбираемся, почему индекс для PostgreSQL — не команда, а всего лишь один из возможных путей выполнения запроса. #PostgreSQL #Postgres #SQL #Database #Indexes #ExplainAnalyze #Backend #Программирование

79просмотров

Вставить новую строку — просто. Обновить существующую — тоже. Но что, если нужно сделать это одной SQL-конструкцией? В PostgreSQL для этого есть MERGE: он позволяет сопоставить данные и выполнить нужное действие в зависимости от результата — например, INSERT или UPDATE. Разбираемся, как MERGE упрощает такую логику в SQL. #PostgreSQL #Postgres #SQL #Merge #Database #Backend #Databases #Программирование

233просмотра

Exactly Once звучит как гарантия: каждое сообщение будет обработано ровно один раз. Но что произойдёт, если внешний API уже принял платёж, а процесс упал до commit offset? Retry создаёт риск повторного эффекта, отказ от retry — риск потерять команду. Kafka Transactions помогают внутри Kafka, но не делают атомарными HTTP-вызовы, чужие базы и другие внешние эффекты. Разбираемся, где заканчивается Exactly Once и зачем нужны идемпотентность, дедупликация, Inbox и Outbox. #ExactlyOnce #Kafka #DistributedSystems #Backend #Idempotency #Outbox #SystemDesign #Программирование

75просмотров

В HTTP/2 потеря одного TCP-пакета может заставить ждать данные сразу нескольких потоков. В HTTP/3 эту проблему решает QUIC: он работает поверх UDP и позволяет потокам быть независимыми на транспортном уровне. Потеря данных в одном потоке больше не блокирует остальные. Разбираемся, зачем HTTP/3 понадобился QUIC и что изменилось по сравнению с HTTP/2. #http #HTTP3 #QUIC #HTTP2 #TCP #UDP #Networking #Backend #WebDev #Программирование

132просмотра

Одно слово осталось на второй строке заголовка? Раньше такие переносы часто приходилось исправлять вручную. Теперь в CSS есть text-wrap: balance: браузер сам распределяет текст между строками более равномерно. У свойства есть ограничения по количеству строк, зато оно уже входит в Baseline и поддерживается актуальными Chrome, Firefox и Safari. #css #textwrap #textwrapbalance #typography #frontend #webdev #html #frontenddev