Как стать автором
Обновить
Сначала показывать

Книга «Гейм-дизайн: как создаются игры»

Время на прочтение9 мин
Количество просмотров12K
image Привет, Хаброжители!

Узнайте, как придумать и создать свою первую игру. Загляните за кулисы гейм-дизайна и глубоко погрузитесь в теорию и техническую сторону разработки видеоигр.

Книга затрагивает теорию гейм-дизайна, практические особенности реализации игр в различных жанрах, их внутренние механизмы и самые успешные проекты в конкурентном игровом мире. Майкл Киллик, получивший премию BAFTA за наставничество молодых дизайнеров видеоигр, познакомит вас с техническими аспектами разработки игр и поделится приемами, которые помогут сделать первые шаги на пути создания собственных проектов. Вы поймете особенности игровой индустрии и будете разбираться во всех этапах создания игрового продукта, от идеи до разработки и выпуска игры.
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии8

Использование фреймворков модульного тестирования для выявления уязвимостей

Время на прочтение6 мин
Количество просмотров1.7K
image

Формулировка проблемы


Поиск уязвимостей — сложный процесс, а еще сложнее пользоваться уязвимостями на нескольких целях в разных конфигурациях. Именно по этой причине существует множество фреймворков, таких как Metasploit, и различных сканеров уязвимостей, таких как nuclei. Так много фреймворков и инструментов, но эксплойты по-прежнему осуществляются при помощи простых скриптов, написанных на различных языках, таких как Python и Go. Почему так? Всё дело в гибкости.

Написание собственных скриптов — лучший выбор, и в наши дни исследователи безопасности с удовольствием пишут код на Python и Go. Однако есть несколько проблем с простыми скриптами. Например, когда у вас есть сотни скриптов, и вам нужно найти один конкретный скрипт для эксплуатации одной части, основанной на обнаружении. Для этого я видел, как исследователи безопасности писали свои собственные инструменты с простыми функциями, такими как обнаружение и методы эксплуатации, а затем запускали код в нескольких потоках. Думаю, вы уже пытались это сделать. Может быть, у вас уже есть такая конфигурация или вы используете Nuclei для достижения той же цели. Это просто, и работа действительно выполняется, но есть ли способ получше? Да, есть. Модульное тестирование.
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Книга «System Design. Машинное обучение. Подготовка к сложному интервью»

Время на прочтение10 мин
Количество просмотров11K
image Привет, Хаброжители!

Собеседования по проектированию систем машинного обучения — самые сложные. Если нужно подготовиться к такому, книга создана специально для вас.

Также она поможет всем, кто интересуется проектированием систем МО, будь то новички или опытные инженеры.

Что внутри?
  • О чем на самом деле спрашивают на собеседовании по System Design в МО и почему (инсайдерская информация!).
  • 7 основных шагов для решения любой задачи МО, предлагаемой на собеседовании.
  • 10 вопросов из реальных собеседований по System Design в МО с подробным разбором ответов.
  • 211 диаграмм, которые наглядно объясняют, как работают различные системы.
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии7

Как ответить на любой вопрос на собеседовании по проектированию систем машинного обучения

Время на прочтение7 мин
Количество просмотров7.7K
Шпаргалка для ответа на любой вопрос о проектировании систем машинного обучения на вашем следующем собеседовании.

Этот шаблон поможет вам ответить практически на любой вопрос о проектировании системы машинного обучения, который вы можете получить на собеседовании. Важно отметить, что этот шаблон намеренно типовой, так что, когда вы найдете новый вопрос по проектированию системы, вам будет легко заполнить каждый раздел.

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

image
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии0

Python без типов: таким он когда-то был

Время на прочтение5 мин
Количество просмотров8.9K
О типизации в Python сказано уже очень много. Если вам выпало сомнительное удовольствие поработать со мной, то вы, вероятно, в курсе, насколько скептически я отношусь к типизации в Python. Причины тому – сложность синтаксиса, mypy еле ползает, реализация языка в принципе переусложнена, а взаимодействовать с ним зачастую неудобно. Сегодня я не буду упирать на эти детали, а хочу пригласить вас в небольшое путешествие в прошлое и рассказать, каковы были мои первые впечатления от работы с Python. Почему? Потому что я думаю, что существует фундаментальный и глубокий конфликт между формообразующей философией Python и концепцией типизации. Причём, этот конфликт не нов.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии14

Книга «Канбан Метод. Базовая практика»

Время на прочтение10 мин
Количество просмотров7.8K
image Привет, Хаброжители!

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

  • его изобрели на Тойоте;
  • в нем есть доски и стикеры;
  • там ограничивают количество незавершенной работы.
Книга покажет вам, что современный канбан не имеет никакого отношения к Тойоте, и это скорее инструмент управления изменениями, и там далеко не про доски и стикеры, а про работу с рисками, статистикой и про управление работой.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии4

Кастомизация бессерверных функций без применения промежуточного ПО

Время на прочтение10 мин
Количество просмотров987
Когда пишешь код для серверного API, часто требуется проделывать схожие шаги: аутентифицировать пользователей, уточнять их роли и выставленные флаги функций, т.д. В большинстве фреймворков для бэкенда безупречно организовано взаимодействие с обработчиками запросов. Часто такой софт называют «промежуточное ПО» (middleware), поскольку он находится между кодом приложений и кодом системы. В этой статье я аргументирую, почему стоит обходиться как можно меньшим объёмом промежуточного ПО, и рассказываю, как при этом не сойти с ума.

Зачем он нам вообще может понадобиться?


На первом этапе работы можно заметить, что каждая функция у вас начинается с множества повторяющихся строк, например:
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Книга «Roblox: играй, программируй и создавай свои миры. 2-е изд»

Время на прочтение1 мин
Количество просмотров3.1K
image Что такое Roblox? Это красочная компьютерная платформа для создания и публикации своих игр. Мир Roblox изо дня в день становится все популярней, и ты можешь стать его частью! Если ты мечтаешь стать геймдизайнером и создать свою игру, но не знаешь, с чего начать, эта книга поможет тебе!
— Не требуется предварительных знаний — ты можешь начать делать игру сразу!
— Мир Roblox интуитивно понятен и очень нравится детям и взрослым.
— В книге даны очень подробные пошаговые инструкции по установке и работе с Roblox.
— Есть введение в программирование и язык Lua.
— Наглядные инструкции по созданию игровых объектов (каждое действие иллюстрируется скриншотом).
— Интересные задания для самостоятельной работы.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии4

Фильтр Блума для эффективной синхронизации хеш-графов

Время на прочтение8 мин
Количество просмотров3.4K
В одном из совместных исследований нам с Хайди требовалось решить такую задачу. Допустим, нам требуется синхронизировать между двумя узлами хеш-граф, например, как в репозитории Git. В Git каждый коммит идентифицируется через соответствующий ему хеш, причём, в коммит могут включаться хеши коммитов-предшественников (то есть, конкретный коммит может содержать более одного хеша, если он получен слиянием). Мы хотели получить минимальное множество таких коммитов, которыми должны обменяться два узла, чтобы их графы получились одинаковыми.

Вы могли бы спросить: «а разве эта задача ещё не решена»? Git приходится выполнять такую операцию всякий раз, когда вы направляете ему команду git pull или git push! Да, так и есть, и некоторые случаи довольно просты, но другие гораздо сложнее. Более того, тот алгоритм, что используется в Git, не слишком хорошо документирован – в общем, мы полагали, что у нас может получиться лучше.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Детализированные стратегии кэширования динамических запросов

Время на прочтение7 мин
Количество просмотров4K
Сегодня я хотел бы поговорить о стратегиях кэширования для совокупных запросов к часто обновляемым данным, основанным на времени. На предыдущем месте работы я провел немало «мозговых циклов» и с удовольствием поделюсь некоторыми своими находками.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

Увлекательный лексический анализ языка Rust

Время на прочтение7 мин
Количество просмотров6.4K

Давайте поговорим о лексическом анализе. Сначала я собирался назвать этот пост «Реализуем токенайзер», но ветер переменился, времена изменились… и, чтобы не утонуть в потоке комментариев вида «фыр, а где мой BPE-токенизатор LLama, который вы мне обещали», ограничимся пока лексическим анализом.

Эта статья ориентирована на читателей, только начинающих пробовать свои силы в лексическом анализе Rust. Поэтому, пожалуйста, помните о целевой аудитории, прежде, чем сетовать: «хм, да я тут на коленке набросал поиск в таблице, и он работает в десять раз лучше, чем это недоразумение» и «с такими временами жизни я сам до завершения программы не доживу».

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

Длинновато для вводного дисклеймера. Надеюсь, дочитав до этого места, вы уже хотя бы разок вздрогнули.

Довольно слов, приступим.

Читать далее
Всего голосов 18: ↑16 и ↓2+14
Комментарии6

Об изучении компиляторов и создании языков программирования

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров7.3K
Когда я только начинал изучать компиляторы, я не понимал одного важного момента: Разработка языка программирования и написание компилятора — это два почти совершенно разных навыка. Конечно, между ними есть некоторое пересечение, но меньшее, чем может показаться на первый взгляд!

Я думаю, что это важно знать, потому что обе эти задачи очень сложны! Легче овладеть этими навыками, если решать их по очереди. Ваше первое решение сложной задачи, скорее всего, будет… ну, не таким хорошим, как десятое! Однако довольно часто разработчики создают игрушечный язык, когда пишут свой первый компилятор, а это значит, что они совершают ошибки и учатся сразу на двух сложных проблемах. Хуже того, эти две проблемы взаимосвязаны: Ошибка в одной из них усложняет жизнь в другой. Кроме того, как мы увидим, хотя компиляторы и сложны на первых порах, они, по сути, являются решенной проблемой, в то время как разработка языка программирования — это, скажем так, область продолжающихся исследований.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии5

Книга «C++ для начинающих. 2-е изд."

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров11K
image Привет, Хаброжители!

Книга Герберта Шилдта начиная с таких базовых понятий языка, как типы данных, массивы, строки, указатели и функции, книга охватывает также важнейшие элементы объектно-ориентированного программирования — классы и объекты, наследование, виртуальные функции, потоки ввода-вывода, исключения и шаблоны. Каждый раздел сопровождается простыми и наглядными примерами, позволяющими получить практические навыки программирования. Книга предназначена для приступающих к изучению языка С++ — одного из самых универсальных и распространенных на сегодня языков программирования.
Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии6

Как я пишу на C по состоянию на конец 2023 года

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров27K
Этот год выдался переломным для моих навыков по программированию на C. Можно сказать, что я пережил слом парадигмы, что побудило меня пересмотреть привычки и весь стиль программирования. Это была крупнейшая метаморфоза моего личного профессионального стиля за долгие годы, так что я решил написать этот пост в качестве «мгновенного снимка» моих нынешних суждений и профессионального существования. Эти перемены во многом пошли на пользу моей продуктивности и организованности, поэтому, при всей субъективности того, что я скажу, в посте наверняка будут описаны и вполне объективные вещи. Я не утверждаю, что на С нужно писать именно так, как рассказано ниже, а я сам, выступая контрибьютором некоторого проекта, придерживаюсь того стиля, который там заведен. Но описанные ниже приёмы, как оказалось, очень пригодились мне при работе.
Читать дальше →
Всего голосов 49: ↑37 и ↓12+25
Комментарии91

Черная пятница в издательстве «Питер»

Время на прочтение1 мин
Количество просмотров12K
image

Добрый день, Хаброжители!

Настало время больших скидок, подробности внутри…
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии7

Книга «BPF: профессиональная оценка производительности»

Время на прочтение19 мин
Количество просмотров2.3K
image Привет, Хаброжители!

Инструменты оценки производительности на основе BPF дают беспрецедентную возможность анализа систем и приложений. Вы сможете улучшить производительность, устранить проблемы в коде, повысить безопасность и сократить расходы. Книга «BPF: профессиональная оценка производительности» — ваш незаменимый гайд по применению этих инструментов.

Брендан Грегг — эксперт и пионер проекта BPF — представляет более 150 готовых инструментов анализа и отладки, рекомендации по их применению, а также пошаговые инструкции по разработке ваших собственных инструментов. Вы узнаете, как анализировать процессоры, память, дисковый ввод/вывод, файловую систему, сети, языки программирования, приложения, контейнеры, гипервизоры, безопасность и ядро. Вы сможете выработать глубокое понимание того, как улучшить буквально любую Linux-систему или приложение.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Книга «Настоящий CTO: думай как технический директор»

Время на прочтение20 мин
Количество просмотров5.5K
image Привет, Хаброжители!

Технический директор (CTO) находит баланс между потребностями бизнеса и постоянно развивающимся миром технологий. Развейте навыки и мышление, необходимые, чтобы взять на себя эту важную роль и стать успешным лидером. Автор приводит мнения отраслевых экспертов и опытных CTO и делится практическими стратегиями навигации в мире технологического лидерства, где ставки чрезвычайно высоки.

Книга на примерах из реальной практики показывает, как преуспеть в быстро меняющейся роли технического директора. Прочитав ее, вы научитесь создавать успешные технологические платформы и формировать эффективные команды, грамотно выбирать и внедрять программные продукты, проводить собеседования и перформанс ревью в беспристрастной манере, а также сможете по праву занять место за столом топ-менеджмента. Вы оцените деловые советы, идеи и истории из практики от наставника CTO Алана Уильямсона.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии7

Издательство Питер. Колонка редактора

Время на прочтение4 мин
Количество просмотров5K
image

Привет, Хаброжители!
Предлагаем ознакомиться с краткими обзорами новинок, отправленных в типографию.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии3

Регулярные выражения — это не трудно

Время на прочтение6 мин
Количество просмотров25K
image

Регулярные выражения имеют дурную славу из-за присущей им сложности. Это справедливо, но я также считаю, что если сосредоточиться на определенном ключевом подмножестве регулярных выражений, то это не так уж и сложно. Большая часть трудностей возникает из-за различных «шорткатов», которые трудно запомнить. Если не обращать на них внимания, то сам язык достаточно мал и хорошо переносится из одного языка программирования в другой.

Знать regex стоит потому, что с его помощью можно добиться очень многого, используя очень мало кода. Если я пытаюсь с помощью обычного процедурного кода воспроизвести то, что делает моё выражение, то код часто получается очень пространным, полным багов и тормознутым. Могут потребоваться часы или дни, чтобы найти альтернативное решение, а ведь можно было за пару минут написать regex.
Читать дальше →
Всего голосов 18: ↑14 и ↓4+10
Комментарии21

Конкурентный отказ

Время на прочтение11 мин
Количество просмотров3.9K
Любая задача может быть завершена несколькими способами:
  1. Нормальное завершение, после которого мы получаем результат (например, Ничего/Единица).
  2. Сообщение об ошибке.
  3. Принудительное завершение, после которого программа может остаться в неопределённом состоянии.

В корутинах Python есть известные точки для безопасной приостановки выполнения. Пользуясь ими, можно автоматически подводить программу к результатам #1 и #2. Поскольку приостановка потоков происходит по принципу вытеснения, именно программист, реализующий потоки, отвечает за достижение результатов #1 и #2. При работе с потоками всегда сохраняется вероятность исхода #3 – поток может быть уничтожен извне, а задача этого даже не заметит, и не получит ни одного шанса осуществить очистку после выполнения и аккуратно завершиться. С потоками существуют две фундаментальные проблемы: (A) невозможно узнать, когда их работа может быть прервана из-за переключения контекста в операционной системе и (B) никогда не угадаешь, когда поток может быть принудительно завершён. Поэтому при работе с потоками принято писать код так, чтобы A и B не имели значения. При конкурентной обработке это неприемлемо, поэтому, если речь идёт о конкурентности, то вариант #3 мы должны полностью исключить.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии3

Информация

Сайт
piter.com
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия