Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

Дайте мне 15 минут, и я изменю ваш взгляд на GDB

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров13K

Материал подготовлен на основе выступления с CppCon 2015 "Greg Law: Give me 15 minutes & I'll change your view of GDB" (доступно по ссылке ). Многие моменты я изменял и корректировал, поэтому учтите, что перевод достаточно вольный.

И да, вынесем за скобки вопрос о том, насколько GDB в целом удобная или неудобная программа, и что в принципе лучше использовать для дебаггинга: в данной статье будет рассматриваться именно работа с GDB.

В статье будет рассматриваться отладка кода на C в ОС Linux.

Читать далее
Всего голосов 47: ↑45 и ↓2+63
Комментарии16

Децентрализованное доверие. 1. Гипотеза

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.4K

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

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

Задача 1.

Вы потеряли ключ от ваших личных данных - кошелька, хранилища информации, мессенджера, аккаунтов соцсетей и т.д.

Необходимо вернуть доступ к данным.

Задача 2.

Технология Deepfake достигла совершенства, и вам надо отличить реального человека от мошенников или ботов для собственной безопасности.

Читать далее
Всего голосов 6: ↑5 и ↓1+7
Комментарии24

Сохранение древовидной структуры в Visual Studio с CMake или создание папок в проекте

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5K

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

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии3

Исследуем внутренности Linux версии 0.01

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров34K

Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.

Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.

Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.

Читать далее
Всего голосов 112: ↑112 и ↓0+112
Комментарии18

Куда посылает игроков Гусь-матерщинник из Atomic Heart? Краткий путеводитель по мемам и отсылкам

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров33K

Отдельное удовольствие в компьютерных играх составляет наблюдать, как персонажи выходят за рамки своего сеттинга и становятся по-настоящему меметичными. В Atomic Heart это произошло минимум с четырьмя барышнями: робо-балеринами Левой и Правой, «пошлым холодильником» Элеонорой и суровой бабой Зиной с «калашниковым». Однако гусь из нового DLC «Инстинкт истребления» буквально сломал схему мемного персонажа.

За неполных две недели он не просто успел стать самым меметичным персонажем DLC, несмотря на присутствие всех полюбившихся героев первой части; он оказался буквально энциклопедией мемов, ходячим Лурком на лапках! Даже самому терпеливому игроку начинает хотеться пришибить назойливое пернатое уже после пары-тройки фраз. Для истории геймдева это не только свежо, но и в каком-то смысле уникально. Попробуем же разобраться: куда именно посылает и отсылает игроков Мемный Гусь?
Читать дальше →
Всего голосов 70: ↑51 и ↓19+55
Комментарии21

Как ID Software удалось выжать невозможное из EGA-карт

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров16K

Я прочитал превосходную книгу Doom Guy Джона Ромеро, которую крайне рекомендую. В девятой главе Джон рассказывает о том, как его поразила увиденная им технология Adaptive Tile Refresh (ATR). Благодаря этому я понял, что пока не анализировал очень важную методику, лежавшую в основе серии игр Commander Keen (CK).

В процессе исследований я выяснил, что ATR использовалась только в первой трилогии CK. Во второй разработчики начали использовать нечто гораздо лучшее.
Читать дальше →
Всего голосов 90: ↑90 и ↓0+90
Комментарии24

3 книги об истории игр: Donkey Kong, Zelda, Final Fantasy, Mario, Sid Meier’s Pirates!, Civilization и других

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.6K
В заметке обзор 3 книг, которые прочитаны мной за последние пару месяцев. Они не только об играх и личных историях разработчиков, но и о среде, в которой были предпосылки к развитию игростроения, взлетам и падениям компаний, карьеры талантливых программистов.

За это время я прочитал гораздо больше, но намеренно не брал для обзора книги об относительно новых играх (Minecraft, Ведьмак и других). Мне гораздо интереснее читать о том, “как все начиналось”. Как и многие “ветераны” Хабра, я тоже пробовал себя на поприще разработок игр лет 25 назад, и хорошо понимаю, как непросто было идти по нехоженному пути. А в этом посте я опубликовал обзоры еще 6 книг и список из 15 изданий об истории компьютерных игр.

В каждом обзоре вы найдете:

  • Название книги;
  • Имя автора;
  • Год издания в России и наименование издательства;
  • Список игр, которые упоминаются в книге;
  • Цитату из книги;
  • Мой субъективный отзыв.

Эти истории, в первую очередь, о творчестве и об открытиях, которые порождают все новые и новые изобретения. Особенно это чувствуется в ранних играх, когда разработчик был и программистом, и художником, и музыкантом, и даже продюсером в одном лице. Но и о бизнесе компаний-разработчиков игр в текстах найдется тоже немало интересных фактов и решений.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+16
Комментарии13

Выбор структур данных для самописного текстового редактора

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров11K

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

Ресурсы


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

  • Build Your Own Text Editor — наверно, самый фундаментальный пост о создании текстового редактора с нуля, который я видел. Это превосходный туториал на случай, если вы хотите начать писать собственный текстовый редактор. Стоит заметить, что в редакторе из этого туториала в качестве внутренней структуры для текста используется, по сути, вектор строк.
  • Text Editor: Data Structures — отличный обзор множества структур данных, которые можно использовать при реализации текстового редактора. (Спойлер: как минимум одна из них будет рассмотрена в моём посте)
  • Плейлист Ded (Text Editor) на YouTube — это потрясающая серия, в которой @tscoding фиксирует процесс создания с нуля текстового редактора. Эти видео стали для меня источником вдохновения.

Зачем?


Если в сети есть так много хороших ресурсов о создании собственного текстового редактора (не говоря уже о том, что уже существует множество феноменальных текстовых редакторов), то зачем я это пишу? На то есть несколько причин:

  1. Я хотел заняться проектом, непохожим ни на один свой прошлый.
  2. Я хотел создать инструмент, которым смогу пользоваться.
  3. Мне всегда хотелось глубже разобраться с созданием собственных структур данных.
Читать дальше →
Всего голосов 47: ↑46 и ↓1+58
Комментарии18

Реализуем с нуля функцию косинуса на языке C

Уровень сложностиСложный
Время на прочтение10 мин
Количество просмотров14K

Я изучил, как реализовать функцию косинуса при помощи нескольких разных подходов. Одна из реализаций почти в три раза быстрее, чем math.h, но придётся смириться с точностью до четырёх знаков после запятой.

Задавались ли вы когда-нибудь вопросом, как в математической библиотеке вашего любимого языка программирования реализованы тригонометрические функции, например, косинус? Это настолько популярная функция, что её можно встретить в каждой математической библиотеке, поэтому реализация должна быть довольно простой, ведь так? Ну уж нет. Почти совершенно точно, что это не так.

Моё исследование началось с того, что мой друг и коллега Стивен Марц работал над ядром операционной системы и я предложил, чтобы он отрисовал на экране функцию косинуса. Я часто использую косинус в качестве «hello, world» для графических приложений. Возникла проблема: его ядро не задействовало стандартную библиотеку C (а значит, прощай math.h!), а целевой платформой являлась архитектура RISC-V (а значит, никаких подобий команды fcos Intel!).

Так началось моё долгое приключение.
Читать дальше →
Всего голосов 43: ↑40 и ↓3+54
Комментарии29

Как используется странная инструкция popcount в современных процессорах

Время на прочтение4 мин
Количество просмотров27K
Это псевдорасшифровка моей презентации на !!Con 2019.

В большинстве используемых сегодня процессорных архитектур есть инструкция под названием popcount, сокращённо от 'population count'. Она делает следующее: подсчитывает количество установленных битов в машинном слове. Например (возьмём 8-битные слова для простоты), popcount(00100110) равно 3, а popcount(01100000) равно 2.

Вас это может сильно удивить, как и меня, но это всё, что она делает! Кажется не очень полезным, правда?
Читать дальше →
Всего голосов 67: ↑67 и ↓0+67
Комментарии22

Фритуплейное донкихотство: почему в 2023 году я до сих пор придерживаюсь монетизационного пуризма

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.5K

Очень долгое время я всё откладывал и откладывал момент написания на Хабр чего-либо, связанного с геймдевом. Отчасти - из-за своих, весьма ортодоксальных взглядов. Отчасти - понимая, что тема максимально субъективная и нервная, что чревато широким спектром "обратной связи". Однако, очередная соломинка переломила-таки верблюду спину, а следовательно, встречайте - монетизационный пурист и апологет подписки приближается с лопатой, полной конфетти, к вентилятору.

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии43

Новый аналог Punto Switcher для linux: xswitcher

Время на прочтение3 мин
Количество просмотров55K
Прекращение поддержки xneur вызвало у меня определённые страдания в последние полгода (с появлением OpenSUSE 15.1 на моих десктопах: при включённом xneur окна теряют фокус и забавно мерцают в такт ввода с клавиатуры).

«А, блин, опять не в той раскладке начал набирать» — в моей работе встречается до неприличия часто. И позитива не добавляет.

Читать дальше →
Всего голосов 44: ↑44 и ↓0+44
Комментарии87

Приёмы высокоуровневой векторизации на примере Card Raytracer

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

Хочу рассказать о том, как занимался оптимизацией card raytracer - минимального рейтрейсера, код которого умещается на визитке.

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

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

Тем не менее, это хороший пример того, как можно "заточить" код под векторизацию, с сохранением читабельности и умеренным ростом объёма и сложности. Я расскажу, какие есть варианты векторизации, как перестроить код и данные, и наконец, как переложить на компилятор черновую работу по кодогенерации - используется автовекторизация, векторные расширения и совсем немного интринсики.

Наверное, статья в большей степени полезна новичкам, но и опытные разработчики (по привычке с 2000-го года пишущие SIMD-код интринсиками) могут найти что-то новое.

Компилятор - в основном Clang, можно GCC, в конечном итоге я адаптировал и под MSVC.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии6

Как писать конспекты на компьютере быстрее, чем от руки, при помощи VS Code

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

Привет всем!

В этой статье говорится о том, как я конспектирую на компьютере, а точнее описываются способы ускорения набора LaTeX-овского текста.

Читать далее
Всего голосов 42: ↑42 и ↓0+42
Комментарии50

Имитация трёхмерных зданий в 2D-игре

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров15K

Создаём объём при помощи света и теней.

Игра двухмерная, разрабатывается на Game Maker Studio 2 и во время работы я столкнулся с множеством задач а-ля «должно быть красиво». Где-то пришлось придумать свой велосипед, где-то повезло наткнуться на описание решения похожих задач.

В свое время меня очень вдохновила статья про рендер в Graveyard Keeper - это очень классный материал для разработчика 2D игр, в сети подобного довольно мало. Поэтому надеюсь, что моя статья тоже послужит для кого-то источником вдохновения.

Внутри есть гифки и картинки!
Всего голосов 67: ↑67 и ↓0+67
Комментарии16

Лауреаты фантастических премий 2022

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

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

Читать далее
Всего голосов 10: ↑7 и ↓3+7
Комментарии18

Почему некоторым так сложно учиться программированию?

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

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

Однако с этим я согласиться никак не могу. Программирование по содержанию ничуть не сложней многих других отраслей знаний, а в чем-то даже и легче, особенно когда касается прикладных задач. Наткнулся на заметку человека, который высказал весьма небанальную мысль: при обучении программированию "с нуля" этот "ноль" для всех сильно разный. И у меня есть стойкое убеждение, что сложность освоения четко зависит от значения этого нуля. А вот почему он разный и что на него влияет- мне и хотелось бы поразмышлять.

Читать далее
Всего голосов 251: ↑225 и ↓26+238
Комментарии720

Brave представляет STAR: k-анонимная система сбора телеметрии

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

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

STAR находится в открытом доступе на Rust, и будет использоваться для защиты конфиденциальности пользователей во многих нынешних и будущих продуктах Brave. 

Что это и как это работает?
Всего голосов 2: ↑2 и ↓0+2
Комментарии6

Игры для обучения программированию

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

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

Профессионалов мало. Но их можно обучать с нуля. Теоретически, при неограниченном времени любого человека можно обучить чему угодно, если у него бесконечное желание и любопытство. Кажется, любопытство даже важнее, чем способности.

Соответствующие способности можно развить, а интеллект — повысить в рамках генетически заданного широкого коридора. Это возможно в любом возрасте. Лучше всего с детства, хотя и взрослым ничто не мешает… Проще всего начинать с игр.
Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии24

Умная консоль для WoW 3.3.5a

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

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

Читать далее
Всего голосов 14: ↑8 и ↓6+2
Комментарии11
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность