Pull to refresh
3
0
Send message

Что почитать игровому программисту?

Level of difficultyEasy
Reading time6 min
Views29K

Объём специфичных знаний, которые требуются рядовому программисту игр, даже если он только начал свою карьеру, вызывает у меня «лёгкую» тоску. Это одна из причин, почему большая часть людей, которые «горят делать игры», отсеивается на этапе технических собеседований (обычно их больше одного). Это нормально и грустно. Добавьте сюда, что нефундаментальные знания, вроде инструментов, библиотек и движков, приходится обновлять где‑то раз в 5–7 лет. Не вижу тут, что игрострой сильно отличается от других областей разработки. Если бы лет 15 назад «добрый я» скинул на почту список книг, которые придется прочитать и осмыслить, армия собранных граблей не была бы столь большой и разнообразной, и без ручек половинной длины. Осторожно, в конце статьи будет супердлинная картинка (взята с github отсюда, с разрешения автора).

У программиста нет цели, только путь.
Total votes 60: ↑60 and ↓0+60
Comments36

Когда программы были маленькими, а деревья пиксельными. Простота и минимализм TreePad

Reading time4 min
Views13K

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

Для меня таким старым надёжным другом стала программа TreePad Lite. Она со мной уже без малого 30 лет. Мне очень близок минимализм TreePad: простота интерфейса, отсутствие необходимости установки, нетребовательность к ресурсам, открытый формат файлов, отсутствие каких-либо зависимостей от сторонних библиотек и интернета.

Читать далее
Total votes 43: ↑42 and ↓1+53
Comments112

MITRE: последователи и антагонисты

Level of difficultyEasy
Reading time9 min
Views2K

Алексей Пешик, инженер-эксперт Security Vision

Михаил Пименов, аналитик Security Vision

В наши дни, когда благодаря интернету у каждого есть возможность высказаться, любое более-менее значимое событие, идея или продукт вызывают обсуждение с зачастую полярными точками зрения. Критики удается избежать только тем, кто ничего не делает (и то не всегда). Мнения разнятся даже относительно удобства и эффективности такого общепризнанного стандарта, как MITRE ATT&C, несмотря на то, что компания MITRE фактически создала целую область деятельности, в которой уже 10 лет удерживает лидирующие позиции. В этой статье мы представили критику, с которой сталкивались в процессе работы, и предлагаем порассуждать, насколько эта критика обоснованна и можно ли чем-то компенсировать слабые стороны фреймворка ATT&CK. С другой стороны, хотелось бы обратить внимание на альтернативные инструменты и методы решения задач.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments3

Идиоматическая обработка ошибок в Rust

Reading time7 min
Views4.7K

Вы забудете о необработанных исключениях, если научитесь обращаться с ошибками, как это принято в Rust


Обработка ошибок – важнейшая часть любого языка программирования, а в Rust предлагается для этого уникальный мощный подход. Rust, в отличие от многих других языков программирования, не предлагает исключений, а предоставляет перечисление Result. У разработчика нет иного выхода, кроме как обрабатывать все ошибки согласованно и предсказуемо. Поэтому ошибки становится проще идентифицировать и диагностировать.

Поскольку в Rust не предусмотрены исключения, любая функция обязана возвращать либо значение, либо "панику". Когда функция паникует, процесс сразу же завершается и предоставляет вызывающей стороне конкретную обратную связь. Чисто технически можно отлавливать случаи паники в Rust при помощи catch_unwind, но постоянно так делать не рекомендуется. Вместо этого в Rust предлагается перечисление Result; пользуясь им, разработчик вынужден обрабатывать все ошибки сам.

В этом посте будут рассмотрены применяемые в Rust идиоматические паттерны обработки ошибок, и вы в общих чертах поймёте, как это делается. Мы разберём перечисление Result, посмотрим, как с его помощью обрабатываются ошибки в программах Rust, и какие крейты чаще всего используются, чтобы упростить этот процесс.

image
Читать дальше →
Total votes 19: ↑16 and ↓3+17
Comments6

Собственный строковый тип на Rust

Level of difficultyMedium
Reading time14 min
Views7K

Писать компиляторы — моё хобби, ничего не могу с собой поделать. Поэтому я пишу и много парсеров. В программировании систем обычно лучше попытаться сделать память общей, чем использовать её многократно, поэтому мои типы AST обычно выглядят так.

pub enum Expr<'src> {
  Int(u32)
  Ident(&'src str),
  // ...
}

Когда мы парсим идентификатор, то вместо копирования его названия в новую String мы заимствуем его из входной исходной строки. Это позволяет избежать дополнительных распределений, дополнительного копирования и экономит слово на представлении данных. Компиляторы могут быть очень требовательны к памяти, поэтому стоит выбирать краткое представление.
Читать дальше →
Total votes 48: ↑47 and ↓1+63
Comments6

Притворись моим покойным дедушкой, или Как пройти квест по взлому спутника

Level of difficultyEasy
Reading time13 min
Views17K
Череп снова в деле! Рассказываем, как прошёл самый крупный CTF (на этот раз космический) от RUVDS и Positive Technologies.


Реальная фотография нашего спутника

Если вдруг пропустили — наше космическое событие.
Читать дальше →
Total votes 56: ↑53 and ↓3+71
Comments21

Интероперабельность между С++ и Rust

Level of difficultyHard
Reading time13 min
Views8.3K
image

image

Этот пост основан на презентации, с которой автор выступил на конференции EuroRust 2022 в Берлине. Доступны слайды и видеозапись.

Автор, работающий в компании Slint, участвует в создании UI-инструментария, написанного на Rust. Этот UI-инструментарий может использоваться и с другими языками и экосистемами, кроме той, для которой был написан, поэтому в Slint предусмотрены API для C++ и даже для Javascript. Естественно, эти API должны восприниматься как совершенно нативные для разработчиков, имеющих дело с этими языками. Именно поэтому ребром стоит вопрос о том, как создать нативно воспринимаемые API к коду Rust для пользователей, привыкших работать с C++.

В Slint предусмотрена возможность пользоваться имеющимся кодом на C++ для дальнейшей его интеграции в другие экосистемы для разных операционных систем. Это касается таких тем, как оформление виджетов, обеспечение доступности и пр. Вот почему не менее важно открывать из мира Rust удобный доступ к коду, уже написанному на C++.

В этом посте хотелось бы исследовать оба направления интеграции между Rust и C++ и представить некоторые инструменты, используемые в Slint.
Читать дальше →
Total votes 30: ↑28 and ↓2+37
Comments1

Как Яндекс научился распознавать, что написано в рукописных архивах

Reading time11 min
Views34K

Привет, Хабр. Меня зовут Саша, в прошлый раз я рассказывал сообществу про поиск организаций в Яндексе. В этот раз мы вновь поговорим про поиск, но уже совершенно другого рода. Сегодня расскажем про «Поиск по архивам». Этот проект вырос из моего личного интереса к истокам семьи, но в итоге (хочется верить!) поможет тысячам других таких же пользователей чуть больше узнать о своих корнях.

Генеалогическое исследование — очень трудоёмкий процесс. Информация о родственниках разбросана по разным архивам, запросы на получение данных могут обрабатываться долго, а доступ даже в открытые архивы ограничен. Несмотря на то что оцифровка архивных документов ведётся уже более десяти лет, по ним не так-то просто искать — придётся отсматривать вручную множество сканов в надежде найти фамилию предка. 

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

Решению этой задачи мы и посвятим историю. А поможет мне с ней Таня @miryable из команды, которая уже много лет развивает в Яндексе технологию оптического распознавания символов (OCR).

Читать далее
Total votes 110: ↑109 and ↓1+143
Comments103

Мой поиск аналога Microsoft Visio

Level of difficultyEasy
Reading time5 min
Views60K

Доброго дня всем.

В сегодняшней статье хотел бы поделиться проведенным анализом приложений, потенциально способных заменить MS Visio для разного рода задач.

Читать далее
Total votes 31: ↑28 and ↓3+33
Comments64

Часть 3. Управление знаниями в Obsidian. Продвинутые техники. Excalibrain. Spaced repetition. Breadcrumbs. Longform

Level of difficultyMedium
Reading time17 min
Views49K

Эта статья завершает цикл "Управление знаниями в Obsidian". В ней будет предполагаться, что вы способны понять все техники и приемы из прошлой второй части про базовый рабочий процесс, т.к. здесь будут показаны продвинутые способы управления персональной базой знаний. В частности, статья затронет следующие темы:

• Ведение визуальной базы знаний (Excalidraw + Excalibrain)

• Создание системы для интервального повторения (Spaced repetition)

• Создание гибкой иерархии (Breadcrumbs + Excalibrain)

• Использование алгоритмов для поиска новых связей между заметками (Graph Analysis)

• Написание длинных текстов (Longform)

Я справлюсь
Total votes 15: ↑13 and ↓2+15
Comments15

Коллекционирую лучшие C++ практики

Reading time3 min
Views20K

Коллекционирую лучшие C++ практики


Что-то наши публикации всё больше о плохом, чем о хорошем. Здесь баг, тут код с запахом, это антипаттерн, вот так писать не надо. Помогите увидеть светлую сторону программирования на С++. Оставляйте комментарии.

Читать дальше →
Total votes 28: ↑27 and ↓1+36
Comments9

Как работает Wine

Reading time10 min
Views76K


Wine — это свободное программное обеспечение для запуска Windows-приложений на нескольких POSIX-совместимых операционных системах, включая Linux, macOS и BSD.

Если вы любите Linux, то наверняка когда-то запускали Wine. Возможно, для какой-то «важной» программы Windows, у которой нет аналога под Линуксом, или поиграться. Забавный факт: даже Steam Deck от Valve запускает игры через оболочку на основе Wine (она называется Proton).

За последний год я намучился с отладчиком, который позволяет одновременно дебажить и Wine, и Windows-приложение в нём. Разобраться во кишочках Wine оказалось очень интересно! Я-то раньше много им пользовался, но никогда не понимал механику целиком. Можно взять файл Windows — и просто запустить его в Linux без каких-либо изменений. Если вы хотите знать, как это сделано, добро пожаловать под кат.
Читать дальше →
Total votes 188: ↑187 and ↓1+230
Comments48

Профильная литература — книги про сети, алгоритмы и разработку

Reading time3 min
Views9.7K

Один из резидентов Hacker News предложил резидентам площадки поделиться профильной литературой, которую можно назвать «алмазом» в своей области знаний. Участники дискуссии обсудили книги по стандартизации систем и продуктов, управлении персоналом и даже нейробиологии. Мы выделим несколько избранных материалов о сетях, алгоритмах, разработке и системном администрировании.

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments4

Обзор метрик обнаружения аномалий (плюс много дополнительной информации)

Reading time10 min
Views10K

Привет, Хабр! На связи снова Юрий Кацер, эксперт по ML и анализу данных в промышленности, а также руководитель направления предиктивной аналитики в компании «Цифрум» Госкорпорации “Росатом”.

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

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments3

Как избежать «подводных камней» машинного обучения: руководство для академических исследователей

Reading time47 min
Views18K

Этот лонг-рид является сильно переработанным и расширенным переводом статьи How to avoid machine learning pitfalls: a guide for academic researchers (Lones, 2021).

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

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments3

Самые интересные блоги и сайты для C++ программистов

Reading time4 min
Views17K

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

Читать дальше →
Total votes 20: ↑17 and ↓3+20
Comments2

Аналитика: книги для неаналитиков, которые научат понимать, систематизировать и представлять данные

Reading time6 min
Views36K

Принято считать, что аналитика, статистика и вообще всё, что связано с цифрами — это сложно и недоступно для понимания обычным людям. Тем не менее мы каждый день сталкиваемся с данными и принимаем решения на их основании. 

Например, пандемия Covid-19 заставила нас всех анализировать данные о заболеваемости, разбираться в показателях эффективности вакцин и разъяснять свои выводы окружающим: родителям, друзьям, коллегам. 

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

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments6

Большая подборка полезных ресурсов от экспертов Positive Technologies: от лаб и подкастов до блогеров и сообществ

Reading time10 min
Views24K

Хотите быть в курсе всего интересного, что происходит в практической информационной безопасности? Знать, за чьими твитами стоит следить, где можно подружиться с коллегами по цеху, что в первую очередь читать и смотреть, чтобы почерпнуть фундаментальные штуки? На каких площадках можно прокачать скилы, например, в пентесте или обнаружении зловредов, да еще и бесплатно?

Сдаем все явки и пароли: делимся полезными ссылками на курсы и лабы, книги и подкасты, Telegram- и YouTube-каналы, форумы и блоги, которые наши крутые эксперты читают сами и рекомендуют тем, кто хочет держать руку на пульсе кибербеза и постоянно повышать свою ценность как профессионала. А может, наши подборки пригодятся вам при подготовке к собеседованию и помогут получить более высокую должность — кто знает ?

Сегодня предлагаем погрузиться в тестирование на проникновение и проверку приложений на прочность, обнаружение и реверс вредоносных программ, киберразведку и расследование сложных инцидентов. Рассказываем, в какие методички заглядывают «белые шляпы», что помогает выйти на след APT-группировок и раскрутить цепочки хакерских атак, где первыми узнавать о новых подходах и техниках, используемых злоумышленниками. Добро пожаловать под кат!

Смотреть подборку
Total votes 12: ↑10 and ↓2+8
Comments1

Information

Rating
Does not participate
Registered
Activity