Типичный программист
78.3K subscribers
3.75K photos
1.16K videos
14 files
8.38K links
Всё самое интересное по программированию

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

VK: vk.com/tproger

Регистрация в перечне РКН: https://tprg.ru/mJwo
Download Telegram
Как инженер радиосвязи перенёс опыт в тестирование

Инженер Алексей десять лет работал с радиосетями: ездил по городу с измерительным комплексом, строил карты покрытия, проектировал связь на стадионах и после монтажа возвращался с рюкзаком телефонов, чтобы сравнить расчёты с реальной сетью.

Когда он стал тестировщиком телеком-оборудования, рабочий цикл сохранился: собрать данные, проверить качество, найти причину сбоя и повторить тест после исправления. Добавились Python, тест-планы и спецификации связи. Сейчас Алексей тестирует базовую станцию YADRO, которую компания разрабатывала с нуля.

В статье на Tproger Алексей рассказывает про этот переход и советует искать следующую роль на пересечении прежней специализации с разработкой. Если думаете о переходе в IT, разложите прежнюю работу на конкретные навыки и найдите задачи, где они уже нужны.
19👍9💊5👌4🌚4💯4🔥3🤷‍♂1👎1🌭1😭1
Космический хакатон. Санкт-Петербург, Красноярск или онлайн из любой точки страны.

Старт 18 сентября.

Для разных городов разные задачи, а за выходные участники должны представить рабочие решения.

Санкт-Петербург. К 2035 году над Землёй должен работать топливный узел, у которого заправляются корабли, и откуда он будет получать топливо — с Земли, с Луны или из резерва — пока не решил никто. Команде предстоит собрать схему поставок, посчитать резервы и решить, во что вкладываться сразу. Призовой фонд 1,2 млн ₽.

Красноярск. Спутник видит горящий лес раньше любого наземного поста, но вместе с пожаром ловит нагретые крыши, факелы на месторождениях и блики на воде. Команде предстоит научить сервис отличать настоящий очаг от шума, обвести гарь и выдать площадь в гектарах. Призовой фонд 600 тыс. ₽.

Лучшие забирают приз на площадке и билет в финал в Москве, 25–27 сентября, где разыграют ещё 2,4 млн рублей.

Команда 3–5 человек, недостающих можно найти на платформе.

Регистрация по ссылкекосмохакатон.рф
17🎉6🤔5💯5🔥4🤣2🍌1🤨1👀1🎄1🤪1
Как конечные автоматы индексируют миллиарды строк

Обстоятельный разбор Эндрю Галланта показывает, как конечные автоматы хранят упорядоченные множества и словари. Строка становится последовательностью переходов, а общие состояния используются повторно. Проверка ключа требует не больше шагов, чем в нём символов, независимо от размера набора.

Далее библиотека fst на Rust и опыты. Индекс 16 млн заголовков Wikipedia объёмом 384 МБ построился за 18,3 секунды и занял 157 МБ. Поиск по регулярному выражению занял 0,023 секунды, нечёткий поиск с двумя правками: 0,094 секунды. Финал: более 1,6 млрд URL из Common Crawl объёмом 134 ГБ.

В лонгриде Эндрю Галланта разобраны границы: нужен быстрый доступ к произвольному участку файла, а структура не универсальна. Читать разработчикам поиска и словарей, чтобы оценить вариант индекса.
17🤔5💯5🦄4🌭3🤷‍♂2🤓2🎄2👻1🎃1🤷1
От исходного кода до процессора: разберись, как работает программа 💻

Стартует практический курс YADRO «Системное программирование с использованием языка С» для тех, кто уже знаком с синтаксисом C и хочет разобраться, как программа работает изнутри.

Формат: курс пройдет онлайн с октября 2026 по май 2027 года. Занятия — раз в неделю, где 80% времени будет посвящено практике.

Этот курс для тебя, если ты:

🔵 учишься в вузе;
🔵 уверенно владеешь базовыми конструкциями C;
🔵 понимаешь, как работают указатели, структуры данных и динамическая память;
🔵 знаешь основные алгоритмы и структуры данных.

*️⃣ Будет плюсом опыт разработки под Linux.

Материалы для подготовки и форму регистрации можно найти по ссылке 🔗

18 сентября — приходи на онлайн-трансляцию, где мы расскажем подробнее о практических курсах и ответим на все вопросы. После вебинара пройдет обзорная лекция про системное программирование и роль языка С. Регистрация — здесь.
110👍9👎3😭3🥰2👌2💯2👀2🤣1🤗1🗿1
Как Cloudflare освободила 100 ТБ памяти в DNS-кеше 1.1.1.1

Big Pineapple за сервисом 1.1.1.1 хранит больше 250 млрд записей кеша. В таком масштабе лишний байт обходится серверам более чем в 250 ГБ памяти. Пять изменений сократили запись больше чем вдвое и освободили около 100 ТБ. Пропускная способность вставки выросла на 43%, задержка поиска снизилась на 19%.

DNS-ответ в кеше уже не меняется, но Vec хранит ёмкость для роста. Замена восьми векторов и строк на контейнеры фиксированного размера сэкономила 64 байта на запись. Ещё 28 байт убрали, объединив три раздела ответа в один список со смещениями.

В разборе Cloudflare есть остальные шаги. Одних тестов мало: память процесса зависит от трафика, заполнения кеша и состояния распределителя памяти, поэтому её сверяли при внедрении.
1🔥25🤨7💔4👌3🤩2👀2😴1👻1🤝1💘1😘1
В Суздаль за DevOps

Недавно мы съездили на «Без предела: Исходный код ритейла» от MAGNIT TECH в Суздаль. Разговор о технологиях начинался с купеческих рядов, продолжился на Demo Day на ГЭС на Нерли, а затем перешёл к самовару. Мы кайфанули от формата.

У Владимира Дроздецкого, например, зацепил заход через первый рабочий день инженера. По мере знакомства с инфраструктурой за привычными сборками и выкладками обнаруживается хозяйство на тысячи ядер. Через такую историю масштаб ощущается лучше, чем через цифры сами по себе: можно примерить на себя работу человека, которому всё это поддерживать. Ради этого взгляда изнутри советуем открыть презентацию. И наставление от Владимира не забудьте:

Не важно, сколько раз ты упал – важно, сколько раз ты поднялся. Главное — поднимайся с правильным IP-адресом
17🔥7🎉4🌭4😁3💯3👀3😨3🥰2👨‍💻2🤷2
Почему тип указателя не гарантирует безопасность памяти

Указатель сохраняет тип, даже когда байты по его адресу уже означают другое. В примере на Zig структура с меткой сначала хранит срез байтов. Код берёт указатель на это поле, записывает в ту же структуру 128-битное число, а затем разыменовывает старый указатель. Адрес и тип указателя прежние, но внутри уже число: возникает путаница типов.

Автор называет этот случай самым трудным контрпримером для безопасности памяти. Он не зависит от кучи и деструкторов; похожий сценарий ломает и Ada. Практическую опасность автор не преувеличивает: насколько такой баг пригоден для эксплуатации, неясно. Куда более распространённое переполнение буфера компилятор может закрыть проверкой границ.

В разборе Memory Safety’s Hardest Problem есть код, вывод программы и аргумент, почему встроенные границы массивов в C могли предотвратить немало проблем.
1🎉5👌4🤩2🌚2🎃2🤝2👍1😢1🙏1🎄1🦄1
Вопрос на разогрев: что из этого появилось раньше — ICQ, MySpace или Nokia 3310?

Если задумались хотя бы на секунду, анкета к 25-летию SpaceWeb вам понравится. Там внутри вся хронология рунета, а заодно вопросы про любимый спорт, лучшего друга и обои на рабочий стол.
2😁5🎄5👏4👍3🤯2🤣2🦄2❤‍🔥1🗿1😘1💊1
Forwarded from Data Analysis / Big Data
Мы вернулись из Суздаля с новым взглядом на магазин у дома

Были на tech-туре MAGNIT TECH «Без предела: Исходный код ритейла» и нам понравилось, как сошлись место и тема. Сначала купеческие ряды Суздаля, затем разговор о технологиях современной торговли на ГЭС на Нерли. В программе были и воздушный шар, и общение с инженерами у самовара. Получилась поездка, в которой было время и Суздалем полюбоваться, и познакомиться с людьми, стоящими за проектами.

Из выступлений особенно запомнился доклад Максима Покусенко о прогнозировании спроса. 17 млрд прогнозов ежедневно впечатляют, когда понимаешь связь с совершенно обыденной, казалось бы, вещью: приходишь в магазин, а нужный товар лежит на полке. Доклад помог увидеть, сколько расчётов стоит за этим привычным удобством.

Презентацию советуем посмотреть и тем, кто не работает с ритейлом. На одном понятном примере здесь можно проследить, как результат ML-модели становится решением о поставке.
🔥3😢2💯2💘2🤷‍♀1👏1😁1🎉1🕊1🫡1🎅1
Как повторное использование ReverseProxy ускорило прокси на Go в 3,8 раза

Автор нагрузил свой обратный прокси и обнаружил хвост медленных запросов. Причина оказалась в обработчике: тот создавал новый httputil.ReverseProxy для каждого запроса.

Вместе с прокси заново создавался http.Transport. Соединения с целевым сервером не переиспользовались, поэтому каждый запрос платил за новое подключение. Исправление: хранить по одному ReverseProxy на каждый целевой сервер в sync.Map.

В тесте пропускная способность выросла с 1710 до 6541 запроса в секунду, а средняя задержка упала примерно с 58 до 7,6 мс. Если строите сервис на ReverseProxy, http.Client или http.Transport, создавайте объект один раз для каждого адреса и не пересобирайте его внутри обработчика.
👍4👀4🏆2🔥1👌1💯1🙉1👾1