Pull to refresh
3
0
Send message

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

Level of difficultyMedium
Reading time6 min
Views15K

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

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

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

Читать далее
Total votes 47: ↑45 and ↓2+63
Comments16

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

Level of difficultyEasy
Reading time5 min
Views1.5K

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

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

Задача 1.

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

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

Задача 2.

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

Читать далее
Total votes 6: ↑5 and ↓1+7
Comments24

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

Level of difficultyEasy
Reading time7 min
Views5.6K

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

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

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

Level of difficultyMedium
Reading time7 min
Views35K

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

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

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

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

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

Level of difficultyEasy
Reading time11 min
Views35K

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

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

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

Level of difficultyMedium
Reading time9 min
Views16K

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

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

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

Level of difficultyEasy
Reading time5 min
Views3.6K
В заметке обзор 3 книг, которые прочитаны мной за последние пару месяцев. Они не только об играх и личных историях разработчиков, но и о среде, в которой были предпосылки к развитию игростроения, взлетам и падениям компаний, карьеры талантливых программистов.

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

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

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

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

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

Level of difficultyMedium
Reading time13 min
Views11K

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

Ресурсы


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

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

Зачем?


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

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

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

Level of difficultyHard
Reading time10 min
Views15K

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

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

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

Так началось моё долгое приключение.
Читать дальше →
Total votes 43: ↑40 and ↓3+54
Comments29

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

Reading time4 min
Views28K
Это псевдорасшифровка моей презентации на !!Con 2019.

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

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

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

Level of difficultyEasy
Reading time7 min
Views3.5K

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

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments43

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

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

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

Читать дальше →
Total votes 44: ↑44 and ↓0+44
Comments87

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

Reading time20 min
Views3.5K

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

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

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

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

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

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

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

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

Reading time5 min
Views51K

Привет всем!

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

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

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

Level of difficultyMedium
Reading time7 min
Views15K

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

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

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

Внутри есть гифки и картинки!
Total votes 67: ↑67 and ↓0+67
Comments16

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

Reading time5 min
Views17K

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

Читать далее
Total votes 10: ↑7 and ↓3+7
Comments18

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

Reading time15 min
Views110K

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

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

Читать далее
Total votes 251: ↑225 and ↓26+238
Comments720

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

Reading time6 min
Views1.8K

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

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

Что это и как это работает?
Total votes 2: ↑2 and ↓0+2
Comments6

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

Reading time6 min
Views28K

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

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

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

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

Reading time1 min
Views5.6K

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

Читать далее
Total votes 14: ↑8 and ↓6+2
Comments11
1
23 ...

Information

Rating
Does not participate
Registered
Activity