В коде Quake III Arena (1999) есть легендарная функция с интересными комментариями — это алгоритм быстрого вычисления обратного квадратного корня, который работал примерно в 4 раза быстрее стандартного способа.
Фишка в том, что функция трактует биты float-числа как integer, делает побитовый сдвиг вправо (по сути делит экспоненту пополам), вычитает результат из «магического числа» 0x5f3759df, конвертирует обратно во float и делает одну итерацию метода Ньютона для уточнения. Звучит безумно, но математически работает: магическое число подобрано так, чтобы дать очень хорошее начальное приближение для обратного квадратного корня, а метод Ньютона доводит точность до нужного уровня всего за одну итерацию.
Обратный квадратный корень нужен был для нормализации векторов при расчёте освещения в 3D-графике — таких операций выполнялось миллионы в секунду, и каждое ускорение критично. Долгое время никто не знал, кто автор алгоритма, потом выяснилось, что это Greg Walsh из конца 1980-х. Сейчас у процессоров есть специальные инструкции для таких вычислений, но этот хак остаётся одним из самых элегантных примеров низкоуровневой оптимизации в истории.
Подробнее в википедии.
@devs_books
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y;
// evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 );
// what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) );
return y;
}
Фишка в том, что функция трактует биты float-числа как integer, делает побитовый сдвиг вправо (по сути делит экспоненту пополам), вычитает результат из «магического числа» 0x5f3759df, конвертирует обратно во float и делает одну итерацию метода Ньютона для уточнения. Звучит безумно, но математически работает: магическое число подобрано так, чтобы дать очень хорошее начальное приближение для обратного квадратного корня, а метод Ньютона доводит точность до нужного уровня всего за одну итерацию.
Обратный квадратный корень нужен был для нормализации векторов при расчёте освещения в 3D-графике — таких операций выполнялось миллионы в секунду, и каждое ускорение критично. Долгое время никто не знал, кто автор алгоритма, потом выяснилось, что это Greg Walsh из конца 1980-х. Сейчас у процессоров есть специальные инструкции для таких вычислений, но этот хак остаётся одним из самых элегантных примеров низкоуровневой оптимизации в истории.
Подробнее в википедии.
@devs_books
🔥20
Edabit — это «Duolingo для программирования»: короткие интерактивные задачи прямо в браузере, за которые ты получаешь XP, уровни и ачивки. Есть отдельные подборки под Python, JavaScript, Java, C#, C++, PHP, Ruby и Swift, плюс интерфейс на нескольких языках. В том числе русский, но сам текст задач не переводится.
Формат простой: выбираешь язык, решаешь маленькие задачи от «совсем легко» до посложнее, запускаешь код в онлайн‑редакторе и сразу видишь, прошли ли тесты. Это удобно, если ты только начинаешь и хочешь набить руку на синтаксисе и базовой логике, не ставя IDE и не собирая окружение.
Общий список задач:
https://edabit.com/challenges
Интерактивные учебники для начинающих по JS и Python:
https://edabit.com/tutorials
Сайт не обновлялся с 2021 года, так что фишек новых версий языков там нет, но для старта это и не нужно, понять основы и концепты очень даже удобная штука.
@devs_books
Формат простой: выбираешь язык, решаешь маленькие задачи от «совсем легко» до посложнее, запускаешь код в онлайн‑редакторе и сразу видишь, прошли ли тесты. Это удобно, если ты только начинаешь и хочешь набить руку на синтаксисе и базовой логике, не ставя IDE и не собирая окружение.
Общий список задач:
https://edabit.com/challenges
Интерактивные учебники для начинающих по JS и Python:
https://edabit.com/tutorials
Сайт не обновлялся с 2021 года, так что фишек новых версий языков там нет, но для старта это и не нужно, понять основы и концепты очень даже удобная штука.
@devs_books
Media is too big
VIEW IN TELEGRAM
❤🔥3
Кажется, у нас уже есть идеальная ACID‑совместимая база данных — это обычный
1️⃣ Атомарность: всё, что ты пишешь в
2️⃣ Консистентность: инвариант «файл всегда пустой» выполняется при любых операциях, состояние до и после записи одно и то же.
3️⃣ Изоляция: сколько процессов параллельно ни лили бы данные в
4️⃣ Долговечность: после ребута содержимое остаётся строго тем же, что и раньше — абсолютное ничего.
Есть только один «недочёт» такой базы — у неё ровно 0 байт доступного места, так что масштабирование хранилища придётся решать очень… творчески. Зато как учебный пример
@devs_books
/dev/null. Если переформулировать свойства ACID человеческим языком, оказывается, что этот «чёрный ящик» из Unix идеально им соответствует и отлично помогает на пальцах понять, что за каждым пунктом стоит./dev/null, либо целиком «улетает в никуда», либо не пишется вовсе — никакой половинчатой записи./dev/null, их вывод никогда не конфликтует, потому что ничего не сохраняется.Есть только один «недочёт» такой базы — у неё ровно 0 байт доступного места, так что масштабирование хранилища придётся решать очень… творчески. Зато как учебный пример
/dev/null отлично показывает, что формальные определения ACID можно довести до забавных крайностей и заодно лучше понять, чего именно хочется от реальной базы в проде.@devs_books
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5❤1🤔1💯1
Статья для тех, кто хочет понять, как современный ML двигает онлайн‑рекламу в больших продуктах вроде VK, без формул и академичности: https://tprg.ru/Nf8A
Разбирают, как пользователей и контент превращают в векторы, как поверх потоковых данных строят профили и как единая платформа Discovery кормит моделями рекомендации, рекламу и антифрод. Полезно почитать, чтобы увидеть, как «ML в проде» выглядит не на учебном датасете, а в реальной системе с миллионами событий в секунду.
@devs_books
Разбирают, как пользователей и контент превращают в векторы, как поверх потоковых данных строят профили и как единая платформа Discovery кормит моделями рекомендации, рекламу и антифрод. Полезно почитать, чтобы увидеть, как «ML в проде» выглядит не на учебном датасете, а в реальной системе с миллионами событий в секунду.
@devs_books
Tproger
Как ML алгоритмы рулят онлайн-рекламой: про маркетинг и большие данные
Как рекламные алгоритмы понимают, что вы захотите купить, еще до того, как вы об этом подумали
👍5❤2
Forwarded from GameDev: разработка игр
Дверь, которая сломала Half‑Life 2
Бывший разработчик Valve Том Форсайт рассказал, как в 2013 году они делали VR‑порт Half‑Life 2 и внезапно наткнулись на баг прямо в самом начале игры. В сцене, где охранник должен провести Гордона через дверь, створка просто не открывалась, и игрок намертво застревал — ни вперёд, ни назад. Самое странное началось, когда они запустили обычную (не‑VR) версию на том же железе и увидели, что теперь та же сцена сломана и в «обычном» HL2, хотя в 2004 году все проходили её без проблем, а код вроде бы никто не трогал.
Разобравшись, они выяснили, что баг родился на стыке двух классических источников боли в геймдеве: дверей и чисел с плавающей точкой. Оригинальный HL2 собирали под старый x87 FPU, где часть вычислений шла в 80‑битной точности, а более новые билды компилировались с использованием SSE, где всё жёстко обрезалось до 32 бит. В результате крошечное отличие в вычислениях физики привело к тому, что NPC сдвигался буквально на доли миллиметра, дверь чуть по‑другому поворачивалась — и персонаж больше не попадал в нужный триггер, который должен был открыть проход.
Такой вот «баг из будущего». Двери и вычисления с плавающей точкой, коллеги. Гремучее сочетание, аккуратнее с этим.
@make_game
Бывший разработчик Valve Том Форсайт рассказал, как в 2013 году они делали VR‑порт Half‑Life 2 и внезапно наткнулись на баг прямо в самом начале игры. В сцене, где охранник должен провести Гордона через дверь, створка просто не открывалась, и игрок намертво застревал — ни вперёд, ни назад. Самое странное началось, когда они запустили обычную (не‑VR) версию на том же железе и увидели, что теперь та же сцена сломана и в «обычном» HL2, хотя в 2004 году все проходили её без проблем, а код вроде бы никто не трогал.
Разобравшись, они выяснили, что баг родился на стыке двух классических источников боли в геймдеве: дверей и чисел с плавающей точкой. Оригинальный HL2 собирали под старый x87 FPU, где часть вычислений шла в 80‑битной точности, а более новые билды компилировались с использованием SSE, где всё жёстко обрезалось до 32 бит. В результате крошечное отличие в вычислениях физики привело к тому, что NPC сдвигался буквально на доли миллиметра, дверь чуть по‑другому поворачивалась — и персонаж больше не попадал в нужный триггер, который должен был открыть проход.
Такой вот «баг из будущего». Двери и вычисления с плавающей точкой, коллеги. Гремучее сочетание, аккуратнее с этим.
@make_game
🔥6
А вот бесплатно задачки порешать. Нашёл сайт с заманчивым названием exercism ✝️
https://exercism.org/
78 треков по разным ЯП, среди которых кроме популярных есть Haskell, ARM64 Assembly, COBOL и несколько диалектов Lisp. Не часто встретишь такой набор.
Что интересного:
🔘 CLI-first платформа. Скачиваешь задачи и решаешь их локально, потом отправляешь обратно через терминал. Это само по себе полезно, чтобы привыкнуть к консоли, но если не хочется — для всех языков есть веб-интерфейс.
🔘 Анализ решений. После отправки приходит автоматический фидбек и подсказки по улучшению. Видимо, от ИИ. При этом дополнительно можно запросить помощь живого ментора. Не знаю, как долго будет работать такая схема, но пока что есть шанс получить разбор от опытного программиста.
🔘 Для некоторых языков задачки собраны в роадмап с последовательным прохождением тем.
Для общения есть дискорд-сервер и форум.
Пишут, что проект делают волонтёры, и бесплатным он будет всегда. Судя по всему, это способ привлечь аудиторию к другим продуктам, уже платным.
Если кто-то хочет помочь с переводом на русский — у сайта есть проект по локализации, заявки туда ещё принимают.
@devs_books
https://exercism.org/
78 треков по разным ЯП, среди которых кроме популярных есть Haskell, ARM64 Assembly, COBOL и несколько диалектов Lisp. Не часто встретишь такой набор.
Что интересного:
Для общения есть дискорд-сервер и форум.
Пишут, что проект делают волонтёры, и бесплатным он будет всегда. Судя по всему, это способ привлечь аудиторию к другим продуктам, уже платным.
Если кто-то хочет помочь с переводом на русский — у сайта есть проект по локализации, заявки туда ещё принимают.
@devs_books
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤2
Канал с задачками по Python от того же автора, что ведёт «Утёнка»: @quiz_python
Каждый рабочий день я публикую одна задачку с вариантами ответа. Почти всегда вопрос в том, что выведет код на картинке, а ответ умещается в одну строку.
Если ответить неправильно, то получите короткое объяснение, почему это неправильно. А через час я добавляю пост с подробным объяснением по шагам. Скрываю его в спойлер, чтобы случайно не подсмотреть ответ. Получается довольно неплохой способ по чуть-чуть узнавать что-то про Python.
Подключайтесь! Сегодня вот разбираем декоратор
@devs_books
Каждый рабочий день я публикую одна задачку с вариантами ответа. Почти всегда вопрос в том, что выведет код на картинке, а ответ умещается в одну строку.
Если ответить неправильно, то получите короткое объяснение, почему это неправильно. А через час я добавляю пост с подробным объяснением по шагам. Скрываю его в спойлер, чтобы случайно не подсмотреть ответ. Получается довольно неплохой способ по чуть-чуть узнавать что-то про Python.
Подключайтесь! Сегодня вот разбираем декоратор
@property. А вчера была задача про async / await, которую на удивление мало кто решил.@devs_books
❤1
Главный признак синьора — не годы стажа и не список технологий в резюме, а умение брать размытые задачи и делать их конкретными. Мидл спокойно решает чёткий тикет, а синьор, услышав «надо улучшить производительность», «пользователи жалуются на онбординг» или «надо подумать про масштабирование», сначала раскручивает, в чём реальная проблема, для каких конкретно пользователей, какие у нас скрытые допущения и что будет, если мы ошибёмся, но всё равно это выкатим.
Хороший синьор по сути снимает неопределённость и этим снижает риски: из одного мутного «непонятно что» получается пара маленьких понятных задач и что‑то, от чего лучше сразу отказаться. Тогда проекты идут гладко, без постоянных пожаров — просто потому, что грязную работу по прояснению сделали заранее.
Проверить себя можно так: когда вам скидывают абстрактный или сырой тикет, вы ждёте, пока его нормально распишут, сразу лезете в код или тратите время на вопросы и формулировку задачи так, чтобы команда могла уверенно её делать? Если второе — вы уже двигаетесь в сторону синьора; если нет, это навык, который можно прокачивать на каждой следующей размытой задаче.
На основе поста в блоге Matheus Lima.
@devs_books
Хороший синьор по сути снимает неопределённость и этим снижает риски: из одного мутного «непонятно что» получается пара маленьких понятных задач и что‑то, от чего лучше сразу отказаться. Тогда проекты идут гладко, без постоянных пожаров — просто потому, что грязную работу по прояснению сделали заранее.
Проверить себя можно так: когда вам скидывают абстрактный или сырой тикет, вы ждёте, пока его нормально распишут, сразу лезете в код или тратите время на вопросы и формулировку задачи так, чтобы команда могла уверенно её делать? Если второе — вы уже двигаетесь в сторону синьора; если нет, это навык, который можно прокачивать на каждой следующей размытой задаче.
На основе поста в блоге Matheus Lima.
@devs_books
💯7❤3
Разработке обещают смерть последние 30 лет, теперь из-за ИИ. Почему она все еще живее всех живых разобрали в статье на Tproger
Tproger
Разработке обещают смерть последние 30 лет, теперь из-за ИИ. Почему она все еще живее всех живых — Tproger
30 лет предсказывают смерть разработки, теперь из-за ИИ. Но каждая «революция» лишь меняет инструменты, а не отменяет потребность в инженерах
👍3
Детективная игра для изучения SQL
SQL Noir — браузерная игра, где нужно раскрывать преступления с помощью SQL-запросов. Каждый кейс — отдельная база данных с таблицами подозреваемых, показаниями свидетелей, записями камер и прочими уликами. Задача — написать правильные запросы, соединить данные через JOIN-ы и вычислить преступника.
Сейчас доступно 6 кейсов разной сложности — от простых краж до убийств. Автор вдохновлялся SQL Murder Mystery, но хотел развить идею глубже. Проект полностью опенсорсный (MIT), стек: React, Vite, Tailwind, Supabase. Можно контрибьютить свои кейсы.
На Reddit отзывы положительные — хвалят за то, что это не скучные туториалы, а реальная практика с постепенным усложнением. Из минусов: в issues висят баги с редактором и несоответствия в данных некоторых кейсов.
Играть можно в онлайне, регистрация не обязательна. Код открыт в репо.
@devs_books
SQL Noir — браузерная игра, где нужно раскрывать преступления с помощью SQL-запросов. Каждый кейс — отдельная база данных с таблицами подозреваемых, показаниями свидетелей, записями камер и прочими уликами. Задача — написать правильные запросы, соединить данные через JOIN-ы и вычислить преступника.
Сейчас доступно 6 кейсов разной сложности — от простых краж до убийств. Автор вдохновлялся SQL Murder Mystery, но хотел развить идею глубже. Проект полностью опенсорсный (MIT), стек: React, Vite, Tailwind, Supabase. Можно контрибьютить свои кейсы.
На Reddit отзывы положительные — хвалят за то, что это не скучные туториалы, а реальная практика с постепенным усложнением. Из минусов: в issues висят баги с редактором и несоответствия в данных некоторых кейсов.
Играть можно в онлайне, регистрация не обязательна. Код открыт в репо.
@devs_books
1❤3🔥1
Самый частый вопрос от тех, кто только заходит в разработку: «Что мне выучить, чтобы через год устроиться разработчиком? Какой стек, какой язык, какие фреймворки?»
На Reddit регулярно всплывают треды, где разработчики с 10–20 годами опыта отвечают на этот вопрос. И среди всего зоопарка советов очень чётко проступают три вещи, которые реально отделяют тех, кто через год пишет нормальный код, от тех, кто через год выгорает и всё бросает.
1️⃣ Первая — умение работать с неопределённостью
Новичок ждёт идеального туториала: чтобы шаг за шагом, без дыр и «оставим читателю в качестве упражнения». В реальной разработке так не бывает. Документация кусками, в лекции устаревший пример, в статье автор пропустил важный шаг. Люди, которые вырастают быстрее всех, не злятся на это, а спокойно добивают недостающее экспериментами, вопросами и чтением исходников.
2️⃣ Вторая — привычка возвращаться к своим ошибкам
Большинство учится так: сделал задачу, получил ошибку, пофиксил, побежали зелёные тесты — забыли. Сильные ребята после этого садятся и разбирают: почему именно так сломалось, что можно было заметить раньше, как переписать код, чтобы такой класс ошибок просто не мог появиться. Это неприятно и медленно, но через пару месяцев даёт скачок в качестве мышления.
3️⃣ Третья — не влюбляться в инструменты
В начале очень легко зациклиться на выборе «правильного» языка, фреймворка или курса. Но если посмотреть на истории людей, которые честно делятся своим путём, там почти всегда один и тот же паттерн: они выбрали что угодно достаточно приличное — и просто несколько месяцев подряд долбили задачи, проекты и чтение кода, а не бесконечно меняли стек.
Если вы только начинаете, попробуйте в ближайший месяц фокусироваться не на том, что ещё выучить, а на том, насколько честно вы разбираете свои провалы и закрываете дыры в понимании. Инструменты при этом можно выбирать почти любые — строчки в резюме важны гораздо меньше, чем глубина мышления, которую они помогли вам вырастить.
Источник: обсуждения в r/learnprogramming и r/ExperiencedDevs о том, какие навыки важнее всего для новичков в 2025 году.
@devs_books
На Reddit регулярно всплывают треды, где разработчики с 10–20 годами опыта отвечают на этот вопрос. И среди всего зоопарка советов очень чётко проступают три вещи, которые реально отделяют тех, кто через год пишет нормальный код, от тех, кто через год выгорает и всё бросает.
Новичок ждёт идеального туториала: чтобы шаг за шагом, без дыр и «оставим читателю в качестве упражнения». В реальной разработке так не бывает. Документация кусками, в лекции устаревший пример, в статье автор пропустил важный шаг. Люди, которые вырастают быстрее всех, не злятся на это, а спокойно добивают недостающее экспериментами, вопросами и чтением исходников.
Большинство учится так: сделал задачу, получил ошибку, пофиксил, побежали зелёные тесты — забыли. Сильные ребята после этого садятся и разбирают: почему именно так сломалось, что можно было заметить раньше, как переписать код, чтобы такой класс ошибок просто не мог появиться. Это неприятно и медленно, но через пару месяцев даёт скачок в качестве мышления.
В начале очень легко зациклиться на выборе «правильного» языка, фреймворка или курса. Но если посмотреть на истории людей, которые честно делятся своим путём, там почти всегда один и тот же паттерн: они выбрали что угодно достаточно приличное — и просто несколько месяцев подряд долбили задачи, проекты и чтение кода, а не бесконечно меняли стек.
Если вы только начинаете, попробуйте в ближайший месяц фокусироваться не на том, что ещё выучить, а на том, насколько честно вы разбираете свои провалы и закрываете дыры в понимании. Инструменты при этом можно выбирать почти любые — строчки в резюме важны гораздо меньше, чем глубина мышления, которую они помогли вам вырастить.
Источник: обсуждения в r/learnprogramming и r/ExperiencedDevs о том, какие навыки важнее всего для новичков в 2025 году.
@devs_books
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤5🤔2👍1
Продолжим тему выбора идеальных инструментов
Есть забавный феномен: чем меньше человек пишет кода, тем сильнее он уверен, что всё было бы хорошо, если бы он сразу выбрал правильный язык/фреймворк/курс. Кажется, что где‑то существует стек, на котором писать одно удовольствие, багов почти нет, документация идеальна, а вакансии падают пачками сами.
В реальности у людей с опытом картина совсем другая. Если посмотреть на их истории, у всех путь примерно одинаковый: сначала они переболели поиском идеального стека, а потом смирились с тем, что идеальное — враг полезного.
⚡️ Очень помогает такой мысленный эксперимент.
Представьте, что вам магическим образом дали идеальный стек: язык, который вам нравится, фреймворк, где всё по учебнику, команду, где кодревью делает внимательный синьор, а задачи понятные и интересные.
Вопрос: через три месяца вы будете сильно лучше программировать, чем сейчас?
Если ответ «не факт», то проблема почти точно не в стеке.
Скорее всего, она в том, что:
🔘 вы мало пишете кода вне учебных примеров;
🔘 вы не возвращаетесь к старым задачам, чтобы переписать их лучше;
🔘 вы избегаете сложных участков, где страшно облажаться;
🔘 вы почти не читаете чужой код и не разбираете его.
Инструменты, конечно, важны. На них удобно или неудобно писать, от них зависит, как быстро вы можете собрать прототип. Но на временной шкале в несколько лет разница между «идеальным» и просто «нормальным» стеком сильно меньше, чем разница между человеком, который каждый день тренирует мышление, и человеком, который раз в неделю открывает курс и смотрит очередное видео.
Поэтому, если ловите себя на том, что уже третью неделю сравниваете курсы и языки, попробуйте поставить эксперимент: на ближайший месяц заморозить выбор, взять то, что уже есть под рукой, и каждый день решать по одной‑две задачи или пилить маленький пет‑проект. Скорее всего, через месяц вы будете жалеть не о стеке, а о том, что не начали так делать раньше.
@devs_books
Есть забавный феномен: чем меньше человек пишет кода, тем сильнее он уверен, что всё было бы хорошо, если бы он сразу выбрал правильный язык/фреймворк/курс. Кажется, что где‑то существует стек, на котором писать одно удовольствие, багов почти нет, документация идеальна, а вакансии падают пачками сами.
В реальности у людей с опытом картина совсем другая. Если посмотреть на их истории, у всех путь примерно одинаковый: сначала они переболели поиском идеального стека, а потом смирились с тем, что идеальное — враг полезного.
Представьте, что вам магическим образом дали идеальный стек: язык, который вам нравится, фреймворк, где всё по учебнику, команду, где кодревью делает внимательный синьор, а задачи понятные и интересные.
Вопрос: через три месяца вы будете сильно лучше программировать, чем сейчас?
Если ответ «не факт», то проблема почти точно не в стеке.
Скорее всего, она в том, что:
Инструменты, конечно, важны. На них удобно или неудобно писать, от них зависит, как быстро вы можете собрать прототип. Но на временной шкале в несколько лет разница между «идеальным» и просто «нормальным» стеком сильно меньше, чем разница между человеком, который каждый день тренирует мышление, и человеком, который раз в неделю открывает курс и смотрит очередное видео.
Поэтому, если ловите себя на том, что уже третью неделю сравниваете курсы и языки, попробуйте поставить эксперимент: на ближайший месяц заморозить выбор, взять то, что уже есть под рукой, и каждый день решать по одной‑две задачи или пилить маленький пет‑проект. Скорее всего, через месяц вы будете жалеть не о стеке, а о том, что не начали так делать раньше.
@devs_books
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🤔1
Forwarded from Типичный программист
Летим зимовать ✈️
Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.
Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!
Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:
😎 Типичный программист
🐸 Библиотека программиста
🟢 Ostrovok! Tech
Теперь осталось нажать на кнопку участия под этим постом и вы в игре!
Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.
Всем удачи!
Участников: 19
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (4 дня)
Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.
Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!
Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:
Теперь осталось нажать на кнопку участия под этим постом и вы в игре!
Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.
Всем удачи!
Участников: 19
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (4 дня)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Elevator Saga — управляй лифтами с помощью кода
Есть такая браузерная игра, где нужно написать алгоритм управления лифтами. Звучит скучно, пока не попробуешь.
Суть простая: на экране здание с лифтами и людьми, которые хотят попасть на разные этажи. Ваша задача — написать на JavaScript логику, которая будет решать, куда ехать каждому лифту. Чем эффективнее алгоритм, тем больше людей успеете перевезти за отведённое время и тем сложнее уровни откроются.
Первые уровни проходятся на интуиции: «если лифт свободен — езжай на вызов». Но уже к пятому-шестому уровню начинаются проблемы: лифтов несколько, люди едут в разные стороны, время ограничено. Приходится думать про очереди, приоритеты, направление движения. По сути, это задача на алгоритмы планирования, только в игровой форме.
Код пишется прямо в браузере, есть документация с описанием всех методов:
На Reddit периодически всплывают треды, где люди делятся своими решениями и оптимизациями. Некоторые доходят до того, что пишут полноценные системы с предсказанием загрузки и распределением лифтов по зонам здания.
Игра бесплатная, работает в любом браузере, регистрация не нужна.
Играть: https://play.elevatorsaga.com
@devs_books
Есть такая браузерная игра, где нужно написать алгоритм управления лифтами. Звучит скучно, пока не попробуешь.
Суть простая: на экране здание с лифтами и людьми, которые хотят попасть на разные этажи. Ваша задача — написать на JavaScript логику, которая будет решать, куда ехать каждому лифту. Чем эффективнее алгоритм, тем больше людей успеете перевезти за отведённое время и тем сложнее уровни откроются.
Первые уровни проходятся на интуиции: «если лифт свободен — езжай на вызов». Но уже к пятому-шестому уровню начинаются проблемы: лифтов несколько, люди едут в разные стороны, время ограничено. Приходится думать про очереди, приоритеты, направление движения. По сути, это задача на алгоритмы планирования, только в игровой форме.
Код пишется прямо в браузере, есть документация с описанием всех методов:
elevator.goToFloor(), elevator.currentFloor(), elevator.getPressedFloors() и так далее. Можно ускорять и замедлять симуляцию, чтобы понять, где алгоритм тупит.На Reddit периодически всплывают треды, где люди делятся своими решениями и оптимизациями. Некоторые доходят до того, что пишут полноценные системы с предсказанием загрузки и распределением лифтов по зонам здания.
Игра бесплатная, работает в любом браузере, регистрация не нужна.
Играть: https://play.elevatorsaga.com
@devs_books
👍2
VisuAlgo — смотришь, как работает алгоритм, шаг за шагом
Если вы когда-нибудь читали про сортировку пузырьком или обход графа в глубину и не могли понять, что там происходит — этот сайт для вас.
VisuAlgo — это визуализатор алгоритмов и структур данных, сделанный в Национальном университете Сингапура. Выбираете тему (сортировки, деревья, графы, хеш-таблицы и т.д.), вводите свои данные или берёте готовые примеры — и смотрите анимацию того, как алгоритм пошагово обрабатывает входные данные.
Что есть:
🔘 Все основные сортировки: bubble, merge, quick, heap, counting, radix
🔘 Структуры данных: связные списки, стеки, очереди, BST, AVL-деревья, кучи
🔘 Графовые алгоритмы: BFS, DFS, Dijkstra, Bellman-Ford, MST (Kruskal, Prim)
🔘 Segment Tree, Fenwick Tree, Union-Find и даже суффиксные массивы
Можно регулировать скорость анимации, ставить на паузу, откатывать назад. Для каждого алгоритма есть текстовое объяснение и псевдокод сбоку.
Интерфейс на английском, но сама визуализация понятна без слов — просто смотрите, как двигаются элементы. Это особенно полезно перед собеседованиями: одно дело прочитать, что quicksort делит массив по pivot, другое — увидеть это своими глазами десять раз подряд.
Сайт бесплатный: https://visualgo.net
@devs_books
Если вы когда-нибудь читали про сортировку пузырьком или обход графа в глубину и не могли понять, что там происходит — этот сайт для вас.
VisuAlgo — это визуализатор алгоритмов и структур данных, сделанный в Национальном университете Сингапура. Выбираете тему (сортировки, деревья, графы, хеш-таблицы и т.д.), вводите свои данные или берёте готовые примеры — и смотрите анимацию того, как алгоритм пошагово обрабатывает входные данные.
Что есть:
Можно регулировать скорость анимации, ставить на паузу, откатывать назад. Для каждого алгоритма есть текстовое объяснение и псевдокод сбоку.
Интерфейс на английском, но сама визуализация понятна без слов — просто смотрите, как двигаются элементы. Это особенно полезно перед собеседованиями: одно дело прочитать, что quicksort делит массив по pivot, другое — увидеть это своими глазами десять раз подряд.
Сайт бесплатный: https://visualgo.net
@devs_books
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Первый компьютерный червь, который сломал интернет
2 ноября 1988 года 23-летний аспирант Корнелльского университета Роберт Таппан Моррис запустил программу, которая должна была просто посчитать, сколько компьютеров подключено к ARPANET (предшественник интернета). Программа копировала себя с машины на машину — и всё бы ничего, но Моррис допустил ошибку в коде.
Он добавил проверку: если машина уже заражена — не копироваться повторно. Но потом подумал, что хитрые админы могут обмануть червя, заставив компьютеры всегда отвечать «уже заражён». Поэтому он сделал так, что в 14% случаев червь копировал себя независимо от ответа. Это и стало роковой ошибкой.
Червь начал копироваться снова и снова на одни и те же машины. Компьютеры перегружались от количества запущенных копий и падали. За несколько часов вышло из строя около 6000 машин — примерно 10% всего тогдашнего интернета. Ущерб оценили в $10 миллионов.
Интересно, что Моррис запустил червя не из Cornell, а с компьютера в MIT — специально, чтобы сложнее было отследить. Не помогло.
Последствия:
1️⃣ Моррис стал первым человеком, осуждённым по американскому закону о компьютерном мошенничестве (Computer Fraud and Abuse Act, 1986).
2️⃣ Приговор: 3 года условно, 400 часов общественных работ, штраф $10 050 плюс расходы на надзор.
3️⃣ Инцидент привёл к созданию CERT (Computer Emergency Response Team) — первой команды реагирования на киберинциденты, которая существует до сих пор.
А сам Моррис? Сейчас он профессор MIT и сооснователь Y Combinator — одного из самых известных стартап-акселераторов в мире, через который прошли Dropbox, Airbnb, Stripe и Reddit.
Источники: Morris worm, Robert Tappan Morris, The Morris Worm, United States v. Morris.
@devs_books
2 ноября 1988 года 23-летний аспирант Корнелльского университета Роберт Таппан Моррис запустил программу, которая должна была просто посчитать, сколько компьютеров подключено к ARPANET (предшественник интернета). Программа копировала себя с машины на машину — и всё бы ничего, но Моррис допустил ошибку в коде.
Он добавил проверку: если машина уже заражена — не копироваться повторно. Но потом подумал, что хитрые админы могут обмануть червя, заставив компьютеры всегда отвечать «уже заражён». Поэтому он сделал так, что в 14% случаев червь копировал себя независимо от ответа. Это и стало роковой ошибкой.
Червь начал копироваться снова и снова на одни и те же машины. Компьютеры перегружались от количества запущенных копий и падали. За несколько часов вышло из строя около 6000 машин — примерно 10% всего тогдашнего интернета. Ущерб оценили в $10 миллионов.
Интересно, что Моррис запустил червя не из Cornell, а с компьютера в MIT — специально, чтобы сложнее было отследить. Не помогло.
Последствия:
А сам Моррис? Сейчас он профессор MIT и сооснователь Y Combinator — одного из самых известных стартап-акселераторов в мире, через который прошли Dropbox, Airbnb, Stripe и Reddit.
Источники: Morris worm, Robert Tappan Morris, The Morris Worm, United States v. Morris.
@devs_books
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3🤔3
Две игры, после которых вы наконец поймёте Flexbox и Grid
Если каждый раз гуглите «как центрировать div» — попробуйте эти две штуки. Серьёзно, 30 минут на каждую — и CSS-раскладки перестанут быть магией.
➡️ Flexbox Froggy
24 уровня, на каждом нужно написать CSS, чтобы лягушки попали на свои кувшинки. Начинается с простого
Играть: https://flexboxfroggy.com
➡️ Grid Garden
То же самое, но для CSS Grid. 28 уровней, нужно поливать морковки, задавая правильные
Играть: https://cssgridgarden.com
Обе игры бесплатные, на английском, но интуитивно понятные — там буквально два слова текста на уровень.
@devs_books
Если каждый раз гуглите «как центрировать div» — попробуйте эти две штуки. Серьёзно, 30 минут на каждую — и CSS-раскладки перестанут быть магией.
24 уровня, на каждом нужно написать CSS, чтобы лягушки попали на свои кувшинки. Начинается с простого
justify-content: flex-end, заканчивается комбинациями из flex-direction, align-items, flex-wrap и order. К концу игры свойства flexbox уложатся в голове на уровне мышечной памяти.Играть: https://flexboxfroggy.com
То же самое, но для CSS Grid. 28 уровней, нужно поливать морковки, задавая правильные
grid-column, grid-row, grid-template и прочие свойства. После прохождения сетки перестают казаться чем-то страшным.Играть: https://cssgridgarden.com
Обе игры бесплатные, на английском, но интуитивно понятные — там буквально два слова текста на уровень.
@devs_books
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Разработчик Omri выложил в открытый доступ свой 5-часовой курс по backend-разработке.
Что внутри: курс покрывает весь путь от нуля до деплоя. PostgreSQL с нуля (создание таблиц, джойны, CTE, транзакции), основы Python, затем Flask API с подключением к базе. Отдельные блоки про Docker, Kubernetes (с Minikube), Linux-команды и Git.
Интересные практические темы:
🔘 Аутентификация через JWT с ролями (admin/guest)
🔘 Защита от SQL-инъекций
🔘 Background-задачи через threading в API
🔘 HTTPS, хеширование vs шифрование
🔘 Защита от timing-атак при логине
Реакция сообщества: в комментариях хвалят за Docker/Kubernetes секции — многие избегают эти темы до последнего, а потом приходится разбираться в авральном режиме. Один из комментаторов справедливо заметил, что не хватает акцента на документацию — навык, который backend-разработчики часто недооценивают.
Видео либо файлом в этом посте, либо на YT.
@devs_books
Что внутри: курс покрывает весь путь от нуля до деплоя. PostgreSQL с нуля (создание таблиц, джойны, CTE, транзакции), основы Python, затем Flask API с подключением к базе. Отдельные блоки про Docker, Kubernetes (с Minikube), Linux-команды и Git.
Интересные практические темы:
Реакция сообщества: в комментариях хвалят за Docker/Kubernetes секции — многие избегают эти темы до последнего, а потом приходится разбираться в авральном режиме. Один из комментаторов справедливо заметил, что не хватает акцента на документацию — навык, который backend-разработчики часто недооценивают.
Видео либо файлом в этом посте, либо на YT.
@devs_books
Media is too big
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🔥1
15 команд терминала macOS, которые реально пригодятся — подборка от Tproger, без воды, с примерами.
🔘
🔘
🔘
Больше в статье:
find ~/Documents -name "*.pdf" — найти все PDF в папкеdu -sh ~/* | sort -hr | head -10 — топ-10 самых жирных папокnetworkQuality — встроенный тест скорости (с Monterey)Больше в статье:
Please open Telegram to view this post
VIEW IN TELEGRAM
Tproger
15 полезных команд терминала macOS для начинающих пользователей
Команды терминала macOS для новичков: поиск файлов, очистка диска, управление процессами, скрытые настройки системы. Синтаксис и примеры для каждой команды.
👍3
Бесплатный курс Python от университета Хельсинки получил обновление
Python Programming MOOC 2025 — полностью бесплатный курс от University of Helsinki, один из лучших структурированных курсов для новичков.
Что внутри
🔘 От переменных до ООП за 14 недель
🔘 Автоматическая проверка заданий прямо в браузере
🔘 Никаких видео на 10 часов — короткие блоки теории + сразу практика
🔘 Сертификат по завершении
Почему именно этот
Хельсинкский курс годами считается эталоном для самообучения. Его рекомендуют чаще, чем платные альтернативы. Фокус на решении задач, а не на просмотре лекций.
📎 https://programming-25.mooc.fi
@devs_books
Python Programming MOOC 2025 — полностью бесплатный курс от University of Helsinki, один из лучших структурированных курсов для новичков.
Что внутри
Почему именно этот
Хельсинкский курс годами считается эталоном для самообучения. Его рекомендуют чаще, чем платные альтернативы. Фокус на решении задач, а не на просмотре лекций.
@devs_books
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2