Как стать автором
Обновить
53
0.4
Дмитрий @bogolt

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

Про́клятый огонь, или магия препроцессора C

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

Задавались ли вы когда-нибудь вопросом, можно ли полноценно программировать при помощи директивы #define в языке C? Полнота по Тьюрингу шаблонов C++ известна весьма широко, например, люди пишут трассировщики лучей, делающие все вычисления во время компиляции (вместо времени исполнения). А как обстоят дела с препроцессором C? Вопрос оказался сильно нетривиальнее, и эта история является, на мой вкус, отличным анекдотом для курса лекций по теории компиляторов, что я готовлю в данный момент. В частности, для лучшего понимания происходящего здесь, рекомендую ознакомиться со второй статьёй, которую я опубликовал параллельно этой: лексер и парсер.

Чтобы не было обманутых впечатлений, предупрежу сразу, что рейтрейсера не будет, но про́клятый код будет очень даже! Итак, поехали. Для начала, почему я вообще задался этим вопросом? Если обычный код компьютерной графики вам скучен, следующий раздел можно пропустить, перематывайте до последней картинки.

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

Почему B-деревья быстрые?

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

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее
Всего голосов 185: ↑184 и ↓1 +183
Комментарии 13

Полосы прокрутки становятся проблемой

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

Полосы прокрутки. Слышали когда-нибудь о них? Довольно крутая штука. Достаточно зажать и перетаскивать полосу прокрутки, чтобы перемещаться по контенту панели со скроллингом. Я это просто обожаю. Ежедневно целыми днями сижу за компьютером и тягаю полосу прокрутки. Но полосы прокрутки становятся мельче, и это оказывается всё более серьёзной проблемой. В статье я покажу скриншоты, но они настолько малы, что даже делать их было сложно. А разработчики продолжают делать их всё мельче, как будто не хотят, чтобы вы скроллили! Они говорят: «для этого ведь колесо прокрутки и существует». Друг мой, не у каждого есть колесо прокрутки и не каждый может свайпать по сенсорному экрану. И даже я, счастливый обладатель колеса прокрутки, хотел бы перемещаться по контенту быстро.

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

Sovietwave и Sovietpunk: как романтика несбывшегося переплавила ностальгию по СССР в новый жанр? Часть 1

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

Выход «Atomic Heart» не просто стал громким событием в истории российского геймдева — он наиболее отчётливо отразил любопытную культурную тенденцию последней дюжины лет. С начала 2010-х футуристические образы и сюжеты в подчёркнуто советском стиле стали всё чаще встречаться в Рунете в самых разных формах. Особенно ярко это стало проявляться ближе к концу десятилетия с массовым распространением музыки в стиле ретровейва — российским ответвлением которого стал стилизованный под мелодии и ритмы советской эстрады Sovietwave. Ну а сейчас советский ретрофутуризм уже можно назвать мейнстримом, даже не особенно прибегая к совам и глобусам. Он выражает ностальгию по положительным чертам и характерным деталям советской эпохи, но с начала 90-х годов эта ностальгия успела сильно измениться. Что же с ней случилось?
Читать дальше →
Всего голосов 168: ↑159 и ↓9 +150
Комментарии 223

Как запускать старые игры в 2023 — VmWare/Wrapper/GoG… Или PCeMv17

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

Ещё один способ играть в старые игры на современном железе. Шок от первого использования PCeM v17. И то, как он вернул радостные ощущения от игры с настоящим «Voodoo» без NGlide Wrapper.

Как и всегда, полно дилетантства, непрофессионализма и прочей ереси.

🤪 Устанавливать все игры! 🤪
Всего голосов 49: ↑48 и ↓1 +47
Комментарии 48

Когда парсеры URL-адресов расходятся (CVE-2023-38633)

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

Обнаружение и разбор уязвимости CVE-2023-38633 в librsvg, заключающейся в ситуации, когда две реализации URL-парсера (Rust и Glib) расходятся в парсинге схемы файла, создавая уязвимость к атаке обхода каталога.
Читать дальше →
Всего голосов 51: ↑51 и ↓0 +51
Комментарии 2

Итак, вы установили fzf. Что дальше?

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

Разработчики ПО — если не единственные, то практически единственные, кому очень просто создавать инструменты для улучшения своей профессиональной работы; однако со временем это усложняет жизнь людям, постоянно переключающимся между разными инструментами и не вкладывающим время в глубокое изучение своего инструментария. Имея глубокое уважение к негласным знаниям людей лучше меня, я всё же считаю, что отличная эвристика 80/20 заключается в том, чтобы изучать старые добрые инструменты Unix cat, ls, cd, grep и cut. (а если вам повезло устроиться на должность настоящего современного сисадмина, то ещё и sed с awk.)

Однако существуют инструменты, выгода от использования которых настолько мгновенна и ценность от применения настолько уникальна, что эвристика 80/20 полностью к ним неприменима. Один из них — это fzf. И меня очень печалит то, что многие скачивают его, запускают в командной строке «как есть», а потом просто мотают головой и произносят: «Я не понимаю».

Мне хотелось бы изменить ситуацию. Предположим, что вы работаете на более-менее стандартной машине с Ubuntu. Вы только что установили fzf при помощи стандартного скрипта установки. Что же дальше?
Читать дальше →
Всего голосов 54: ↑54 и ↓0 +54
Комментарии 25

Сравниваем скорость и оверхеды библиотек Deep Copy для Go

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

Егор Гартман, бэкендер Авито, рассказал, как протестировал несколько библиотек Deep Copy, а потом сделал свою — быстрее и эффективнее.

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 2

Шпаргалка по SQL (postgres), которая выручает меня на собесах

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

Привет, Хабр!

Я решил посвятить свою первую статью SQL. Вопросы, рассмотренные ниже мне задавали на собеседованиях на позицию python-разработчика. Естественно отвечать правильно получалось не всегда, а если точнее то чаще не правильно, однако проведя N часов в рефлексии я составил перечень ответов, которыми пользуюсь до сих пор.

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

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

История одной уязвимости

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

Всем привет. Сегодня я поведаю о дыре в безопасности одного открытого проекта — от выявления до устранения, а также как решая заявку с багом, невольно стал исследователем уязвимостей.
Читать дальше →
Всего голосов 63: ↑63 и ↓0 +63
Комментарии 11

RSS

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

Давным‑давно, где‑то в 1995 у инженеров apple появилась идея сделать спецификацию для описания структуры и содержимого сайта. Назвали её Meta Content Framework. Хотели сделать на основе этой штуки мощную 3D навигацию по сайту как в киберпанке. Идея не взлетела, но один из авторов ушел в Netscape и развил её там в Resource Description Framework (RDF), первая R из которого это по совместительству первая буква в RSS.

У RSS есть три разных расшифровки, но суть одна. Это механизм получения статей с сайтов. Можно подписаться на интересные новости, бложики и статьи, и читать их в специальном приложении. В золотые годы RSS, давать ссылку на фид было хорошим тоном для любой платформы и издания. Читалки выпускали отдельными приложениями, встраивали в браузеры, а у google был целый Google Reader. Пик популярности у формата был где‑то в 2005.

А потом мир сдвинулся с места, пришел фейсбук с алгоритмической лентой, издатели решили что бесплатно делиться контентом им не нравится. Веб стал централизованным. Популярность RSS пошла на спад. Когда в 2013 году google закрыл свой reader, форматом пользовались только фанаты.

Читать далее
Всего голосов 32: ↑27 и ↓5 +22
Комментарии 28

Локальные нейросети (генерация картинок, локальный chatGPT). Запуск Stable Diffusion на AMD видеокартах

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

Многие слышали про Midjourney, но про то, что есть локальная Stable Diffusion, которая может даже больше, знает уже куда меньше людей, или они не знают, что она локальная. И если они пробовали её онлайн, то быстро приходили к выводу, что она сильно хуже чем Midjourney и не стоит обращать на неё более внимания. И да, SD появился раньше Midjourney. Для запуска хватит и cpu или 4гб видеопамяти.

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

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

Прекращайте оправдываться

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

Привет, человек, %хабраюзер%, %юзернейм%, программист.

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

Разрешите объясниться.
Всего голосов 379: ↑324 и ↓55 +269
Комментарии 361

Зачем тебе, бабка, тестовое

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

Это не было работой мечты - просто приличный вариант, где обещали развитие. И я откликнулась в полной уверенности, что подхожу по навыкам под требования вакансии процентов на 90. Я позвонила даже - поговорили, и Александр спросил, готова ли я выполнить тестовое. Я очень нехотя уточнила, что тестовое я посмотрю, ну а потом как выйдет. Тестовые как раз обсуждались в моей предыдущей статье, я там дискуссию перечитывала раз десять.

Но. Я рассматривала только эти варианты: мне присылают тестовое, и я решу его выполнить - или решу не выполнить.

Читать далее
Всего голосов 164: ↑150 и ↓14 +136
Комментарии 389

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

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


Дизайн систем быстро выявляет ошибки в восприятии закономерностей функционирования мира. Те правила, которые кажутся непреложными истинами, могут ими не оказаться.

Списки подобных заблуждений составлялись про имена или телефонные номера. Настало время карт и систем навигации.

Заблуждение 1. Форма Земли — это просто


Шар — множество точек в пространстве, удалённых от центра на расстояние не выше радиуса. Однако хотя бы из-за суточного вращения форма нашей планеты отличается от идеального шара. Планета сплюснута у полюсов и утолщена на экваторе, а также обладает рельефом и испытывает циклы приливов и отливов.
Читать дальше →
Всего голосов 314: ↑310 и ↓4 +306
Комментарии 114

О бедненьком NULLе замолвите слово

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

Есть вещи, которые не нравятся, есть вещи, которые бесят, есть вызывающие жгучий гнев, и есть ситуация с NULL в SQL.

Давайте немножко похоливарим по этому поводу.

Читать далее
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 152

Разработчик с мозгом груга

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

Введение


это сборник мыслей о разработке программ собранный разработчиком с мозгом груга

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

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

разработчиков с большим мозгом много, некоторым страница не понравится, скривят кислая рожа

Ещё больше-больше ДУМАЮТ, что они разработчики с большим мозгом и им она тоже не понравится

(груг раньше думал груг с большим мозгом, но потом всё понял)

это ладно!

груг надеется, что тебе понравится читать и может ты научишься на много-много ошибка груг совершил за длинную жизнь программиста
Читать дальше →
Всего голосов 261: ↑235 и ↓26 +209
Комментарии 81

Баллада о долгоживущем софте

Время на прочтение 11 мин
Количество просмотров 50K
Увлекаясь коллекционированием старого хлама винтажной электроники, я научился ценить долгоиграющие проекты. Конечно, в моей коллекции часто попадаются экспонаты противоположного типа. Вот клавиатурный коммуникатор Nokia, аналогов которого больше нет. Вот минидисковый плеер, проигрыватель музыки с мертвого формата. А вот телевизор с трубкой: таких больше не делают! Все рано или поздно заканчивается, и с возрастом иногда хочется остановить, эм, неумолимую поступь прогресса.



С железками это сделать трудно, зато можно с программами. Уже более четверти века я занимаюсь развлечением под условным названием «переустановка Windows». В последнее время чаще я устанавливаю ОС либо на новый ПК, либо на один из своих ретроэкспонатов. Как у многих из вас, у меня есть список софта, который при каждой такой операции устанавливается в первую очередь. Некоторые из этих программ я регулярно устанавливаю, и пользуюсь ими лет 15 или даже больше. Все это время создатели обновляют и развивают их, это не заброшенные проекты. В этой статье я хочу отдать должное этим разработчикам-долгожителям в субъективном хит-параде древнего, но актуального софта.
Читать дальше →
Всего голосов 161: ↑160 и ↓1 +159
Комментарии 432

Что есть sshto?

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

Многие, если не все, кому приходится подключаться по ssh к серверам начинают использовать ssh aliases(конфиг файлы), когда этих серверов становится больше одного. А если их больше двух наступает время автоматизации. Так появился sshto.

Узнать sshto это
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 13

Вымышленные языки как способ построения мира игры

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

Каждый серьёзный разработчик игр знает, что построение мира — неотъемлемая часть процесса, создающая геймплей с истинным погружением. Для его реализации есть множество разных техник: от изложения предыстория игрока стеной текста, до продуманных трюков с дизайном уровней, называемых environmental storytelling («повествование через окружение»). Второй вариант часто предпочтительнее. Распутывание лора мира по нескольким намёкам, разбросанным по уровням, де факто является игрой внутри игры. И хотя большинство игроков может их игнорировать, прочие смогут получить большое удовольствие от разгадывания этой мета-головоломки.

Игры наподобие Dark Souls известны своим богатым и довольно загадочным лором, который можно воссоздать благодаря продуманному environmental storytelling и различным подсказкам, скрытым в описаниях предметов. Некоторые другие игры заходят ещё дальше и создают для своих выдуманных цивилизаций совершенно новые языки.
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 7

Информация

В рейтинге
1 557-й
Зарегистрирован
Активность