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

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

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

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

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

Введение

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 21: ↑20 и ↓1+25
Комментарии2

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

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

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


Читать дальше →
Всего голосов 58: ↑56 и ↓2+60
Комментарии76

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

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

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

Читать далее
Всего голосов 30: ↑27 и ↓3+32
Комментарии14

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RSS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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

Информация

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