Pull to refresh
51
0.2
Дмитрий @bogolt

User

Send message

Пара тупых ответов про эволюцию

Reading time9 min
Views49K


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

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

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

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

Ну или вот хвост павлина. Как можно развить такую длинную бесполезную штуку, которая люто нравится хищникам? Разве не должны были выжившие павлины стать ловкими и короткохвостыми?

Свои ответы я получил уже довольно поздно, но помню, как был рад их услышать. И наблюдая за идущим сейчас холиваром про теорию Дарвина, вижу много людей, которые задают те же самые вопросы.
Читать дальше →
Total votes 269: ↑266 and ↓3+326
Comments592

Дорогая, я уменьшил {fmt}: уменьшил размер до 14kB и избавился от рантайма C++

Level of difficultyMedium
Reading time11 min
Views13K

Библиотека форматирования {fmt} известна своим небольшим влиянием на размер бинарников. Чаще всего её код в несколько раз меньше по сравнению с такими библиотеками, как IOStreams, Boost Format или, что иронично, tinyformat.

Давайте разберем, как можно уменьшить размер бинарников еще больше!

Читать далее
Total votes 40: ↑38 and ↓2+47
Comments25

find + mkdir полны по Тьюрингу

Level of difficultyMedium
Reading time5 min
Views9.7K

Введение

Мы покажем, что система, имеющая лишь команды GNU find и mkdir, полна по Тьюрингу.

Хорошо известно, что команды sed и awk сами по себе полны по Тьюрингу, но мне не удалось найти информации о Тьюринг-полноте find + mkdir.

Доказательство основано на реализации таг-системы.

Мы по порядку рассмотрим реализацию цикла, FizzBuzz и таг-системы.

Читать далее
Total votes 52: ↑52 and ↓0+75
Comments21

Lionheart: Legacy of the Crusader – Fallout в средневековой Европе

Level of difficultyEasy
Reading time8 min
Views3.7K

Любой фанат Fallout в начале нулевых был бы без ума от счастья, услышав, что под крылом компании, подарившей ему любимое RPG-приключение на постапокалиптической пустоши, разрабатывается новая ролевая игра! Вы только взгляните на это глазами поклонника Fallout тех лет: проект с той же механикой, но события разворачиваются в средневековье на стыке фэнтези и исторической реальности! Но дело в том, что непосредственного участия Black Isle Studios в разработке новой игры, которую назвали Lionheart: Legacy of the Crusader, не принимала, ограничиваясь лишь консультированием. Создание проекта было доверено студии Reflexive Entertainment, которая может быть известна олдфагам по культовой (в своё время) игре Crimsonland. Однако одно дело – небольшая, как бы сейчас сказали, инди-игра, и совсем другое – масштабный и продуманный ролевой проект, который для молодой американской студии был вызовом. Все это осложнялось тяжелой финансовой ситуацией как в самой компании, так и у издателя Interplay Entertainment, который, услышав обещание сделать качественно и за малые деньги, согласился доверить столь крупный проект людям почти без опыта. Но даже при таком подходе денег у Interplay не хватало, что не могло не сказаться на итоговом продукте.

Итоговый проект, безусловно, не дотягивает до высот Fallout или Planescape: Torment, но всё же по-своему хорош и до сих пор любим многими. Так как же играется Lionheart в 2024 году, и стоит ли она потраченного времени? Об этом я постараюсь поведать в сегодняшнем обзоре.

Читать далее
Total votes 21: ↑20 and ↓1+25
Comments2

Опасность устарела: несколько важных нюансов в новых стандартах C++

Reading time16 min
Views16K
Undefined behavior (UB) — боль, знакомая каждому разработчику со стажем; эдакий «код Шредингера», когда не знаешь, правильно тот работает или нет. К счастью, стандарты языка С++20/23/26 привнесли относительно неопределенного поведения кое-что новое. И довольно важное, если вы — архитектор ПО, а «плюсы» — ключевой стек вашей компании (подробнее о том, как и почему мы в «Лаборатории Касперского» много используем С++, читайте здесь).

В этой статье я со своих позиций Senior Software Architect и Security Champion в микроядерной операционной системе KasperskyOS рассмотрю кейсы-ловушки, в которые можно попасть практически в любом из стандартов, и покажу, что меняется в С++20/23/26, — уменьшается ли количество кейсов с неопределенным поведением, и становится ли С++ безопаснее.


Читать дальше →
Total votes 58: ↑56 and ↓2+60
Comments76

Когда проснулся и узнал, что существуют PWA

Level of difficultyEasy
Reading time8 min
Views14K

Всем привет. Меня зовут Антон, я фронтендер в Сбере. Если вы ещё не осваивали технологию PWA, но хотели бы — или вдруг срочно понадобилось, — то я вам помогу и объясню, что это и как начать с ней работать. 

Читать далее
Total votes 30: ↑27 and ↓3+32
Comments14

Клонируем ноутбук при помощи NVME over TCP

Level of difficultyEasy
Reading time3 min
Views14K

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

Читать далее
Total votes 18: ↑17 and ↓1+25
Comments25

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

Reading time18 min
Views28K

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

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

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

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

Level of difficultyEasy
Reading time7 min
Views50K

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

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

Читать далее
Total votes 151: ↑150 and ↓1+183
Comments13

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

Level of difficultyEasy
Reading time7 min
Views34K

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

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

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

Level of difficultyEasy
Reading time7 min
Views29K

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

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

Level of difficultyEasy
Reading time6 min
Views19K

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

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

? Устанавливать все игры! ?
Total votes 36: ↑35 and ↓1+47
Comments48

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

Level of difficultyMedium
Reading time9 min
Views4.5K

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

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

Level of difficultyEasy
Reading time4 min
Views20K

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

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

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

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

Reading time8 min
Views6.3K

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

Читать далее
Total votes 18: ↑17 and ↓1+17
Comments2

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

Level of difficultyEasy
Reading time8 min
Views201K

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

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

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

Читать далее
Total votes 156: ↑149 and ↓7+177
Comments178

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

Level of difficultyMedium
Reading time7 min
Views13K

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

RSS

Level of difficultyEasy
Reading time2 min
Views6.8K

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

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

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

Читать далее
Total votes 26: ↑21 and ↓5+22
Comments28

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

Level of difficultyEasy
Reading time5 min
Views58K

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

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

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

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

Reading time5 min
Views106K

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

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

Разрешите объясниться.
Total votes 326: ↑271 and ↓55+269
Comments361
1
23 ...

Information

Rating
2,435-th
Registered
Activity