Pull to refresh
4
0.3
Виталий Качан @MANAB

.Net Developer

Send message

Реализация циклической генерации подземелий «изнутри»: да что тут сложного?

Level of difficultyEasy
Reading time14 min
Views9K

Вам нравятся старые Legend of Zelda времён SNES и GBA? Может быть, вам пришлась по вкусу Dark Souls? А, возможно, вы ещё и фанат Quake? Но что объединяет все эти игры? Для меня это в первую очередь дизайн уровней. Головоломки, удобные шорткаты и нелинейность исследования - вот то, что делает карту игры частью общего игрового процесса и вдыхает жизнь в процесс исследования мира.

В наше время расцвета жанра rogue-lite вопрос генерации игровых уровней актуален как никогда. Однако по-настоящему интересные уровни в жанре - большая редкость, я бы даже сказал, феноменальная. Чаще всего уровни представляют собой просто наборы заранее заготовленных комнат-коробок, случайным образом приставленных друг к другу, без какой-либо логичной высокоуровневой картины. Но, всё же, я знаю одну игру, которая взяла принципиально другой подход: Unexplored. На мой взгляд, она пересмотрела устоявшийся стереотип об ограничениях левелдизайна в рогаликах. Всё, что для этого понадобилось - циклическая генерация подземелий (Cyclic dungeon generation).

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

Каких же?
Total votes 28: ↑28 and ↓0+34
Comments15

Не всё так просто с луддитами, как кажется

Level of difficultyEasy
Reading time24 min
Views16K

Как пишут в энциклопедиях и статьях, луддиты — это некие ретрограды 19 века, противящиеся технологиям, что путем стихийных бунтов с погромами протестовали против прогресса и машин, которые отбирали у них работу в ходе промышленной революции в Англии. Сейчас этот термин используется в качестве уничижительного ярлыка для технофобов.

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

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

Читать далее
Total votes 140: ↑131 and ↓9+146
Comments132

16-битная операционная система на коленках

Level of difficultyMedium
Reading time15 min
Views17K

В мире компьютерных наук мало что может сравниться с созданием собственной операционной системы. В этой статье мы погрузимся в увлекательный мир разработки операционных систем, создав 16-битную ОС с помощью языка ассемблера NASM под архитектуру процессоров Intel x86-64. Мы рассмотрим каждый этап разработки, начиная с основ и заканчивая реализацией ключевых компонентов.

Заменит Windows?
Total votes 47: ↑47 and ↓0+54
Comments34

А в чем проблема работать с файлами?

Level of difficultyMedium
Reading time53 min
Views29K

Данные - это важный компонент системы. Приложение может хранить их где угодно, но в результате все сводится к файлам. Файлы - это хорошая абстракция, но она протекает: если не знать того, как работают ОС или гарантии файловой системы, то легко выстрелить себе в ногу.

Меня увлекла тема отказоустойчивости, а конкретно - отказоустойчивой работы с файлами. В этой статье я попытался соединить все полученные знания:

Кто участвует в процессе записи

Ошибки, которые могут произойти

Что от нас зависит, а что нет

И самое главное - как это этого защититься

Читать далее
Total votes 141: ↑140 and ↓1+169
Comments23

Правда ли, что в Европе везде отсталые сервисы, медленные платежи и плохие онлайн-услуги?

Level of difficultyEasy
Reading time36 min
Views142K

На Хабре неоднократно в комментариях звучало мнение, что Россия впереди планеты всей по онлайн‑сервисам. Мол, у нас и госуслуги, и финтех, и такси, и доставки — все на высочайшем уровне, а в остальных странах, а особенно в отсталой Европе бедные бюргеры до сих пор стоят в многочасовых очередях, заполняют вручную тонны бумажек и ждут в очередях на кассах чтобы сделать банковский перевод, а курьер не привезет им ночью смузи в течении получаса после заказа. Давайте разбираться, так это или нет.

Читать далее
Total votes 246: ↑208 and ↓38+209
Comments1138

Почтовый сервер с нуля. Часть первая

Level of difficultyMedium
Reading time17 min
Views29K

Очень часто на этапе стажировки новых сотрудников мы в нашей компании сталкиваемся с типичными простыми ошибками, непониманием работы DNS и почты. При этом обучение новых сотрудников по этой теме — достаточно длительный и сложный процесс, так как сами вопросы требуют построения сложных логических цепочек в голове у начинающего инженера. В один момент мы составили свою вики и схемы для обучения и решили поделиться этим опытом на Хабре в виде серии статей, чтобы людям, которые решили связать свою жизнь с IT вообще и администрированием в частности, стало проще. Материалы этой серии предназначены для начинающих администраторов.

В этом материале будет представлена связка полноценного почтового сервера в виде Exim4+Dovecot+PostfixAdmin+RainLoop.

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments27

Жидкостное (водяное) охлаждение для ноутбука своими руками

Level of difficultyEasy
Reading time4 min
Views9.2K

Всем привет!

На создание данного колхоза изобретения меня вдохновила эта старая статья на Пикабу. Идея родилась примерно за полгода до создания этой СЖО, навязчивой она стала примерно за месяц до, реализовал я её за неделю-две.

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

Фотографий, к сожалению, будет немного, т.к. мысль написать об этом проекте статью пришла уже по его завершению.

Итак, что у меня было.

Читать далее
Total votes 23: ↑22 and ↓1+28
Comments39

Ускоряем анализ данных в 170 000 раз с помощью Python

Level of difficultyMedium
Reading time15 min
Views19K

В статье «Ускоряем анализ данных в 180 000 раз с помощью Rust» показано, как неоптимизированный код на Python, после переписывания и оптимизации на Rust, ускоряется в 180 000 раз. Автор отмечает: «есть множество способов сделать код на Python быстрее, но смысл этого поста не в том, чтобы сравнить высокооптимизированный Python с высокооптимизированным Rust. Смысл в том, чтобы сравнить "стандартный-Jupyter-notebook" Python с высокооптимизированным Rust».

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

Под катом разработчик Сидни Рэдклифф* проходит путь профилирования и итеративного ускорения кода на Python, чтобы выяснить это.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Total votes 51: ↑50 and ↓1+56
Comments3

Майами глазами айтишника

Reading time7 min
Views19K

После того, как я написал свое мнение о жизни в Сан-Франциско, многие стали присылать мне вопросы о других городах. "Я неисправимый романтик", - сообщает один читатель, - "и верю что где-то на земле всё-таки есть рай. А как насчет Майами? Я играл в GTA Vice City в детстве, и там все выглядело весьма неплохо".

Если хотите узнать мое полностью предвзятое мнение - читайте дальше.

Читать далее
Total votes 65: ↑63 and ↓2+75
Comments42

С новым годом: GPT в 500 строках на SQL

Reading time42 min
Views38K

В минувшем году все только и говорили об ИИ и о том, как он может всё за вас сделать.

Мне нравится, когда кто-то или что-то работает за меня. Поэтому решил: попрошу-ка ChatGPT написать за меня новогодний пост:

«Эй, ChatGPT. А ты можешь реализовать большую языковую модель на SQL?»
«Нет, SQL не подходит для реализации больших языковых моделей. Язык SQL предназначен для выполнения запросов к данным, хранящимся в РСУБД и для управления этими запросами. Для реализации большой языковой модели требуются сложные алгоритмы, обширные датасеты, а зачастую — и фреймворки для глубокого обучения. SQL всеми этими возможностями не обладает.»

Что ж, лишний раз убеждаешься, что, если хочешь что‑то сделать хорошо – сделай это сам.

Давайте же воодушевимся этим оптимистическим планом и реализуем большую языковую модель на языке SQL.

Читать далее
Total votes 181: ↑177 and ↓4+207
Comments21

Взламываем простой смарт-контракт в блокчейне TON

Reading time12 min
Views7.5K

В данной статье мы разберем взлом простейшего смарт-контракта в сети TON. Не переживайте, если вы не знаете, что такое TON или как писать смарт-контракты, в данной статье будет и краткий разбор для "профи блокчейн разработки", так и подробный разбор для новичков.

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

Величайшая ошибка Эйнштейна

Level of difficultyMedium
Reading time9 min
Views73K


В своей книге: «Оптика: трактат об отражениях, преломлениях, изгибаниях и цветах света», опубликованной на английском языке в 1704 году, Исаак Ньютон анализирует фундаментальную природу света на примере преломления света призмами и линзами, дифракции света близко расположенными листами стекла и поведения цветовых смесей с помощью спектральных ламп или пигментных порошков. Книга «Оптика» стала вторым крупным трудом Ньютона по физическим наукам и считается одной из трёх основных работ по оптике периода научной революции. В конце книги Ньютон приводит список «вопросов» — нерешённых на тот момент физических задач. В частности, он пишет:

«И для отрицания такой среды мы имеем авторитет тех древнейших и знаменитейших философов древней Греции и Финикии, которые сделали вакуум, атомы и тяготение атомов первыми принципами своей философии, молчаливо приписывая тяготение какой-то иной причине, чем плотная материя. Позднейшие философы отбрасывают рассмотрение такой причины… придумывая [вместо неё] гипотезы для механического объяснения всего сущего [Но] главное дело натурфилософии — без притворных гипотез доказывать явления, выводить причины из следствий, пока мы не придём к самой первой причине, которая, конечно, не механическая.»

«И не только для того, чтобы раскрыть механизм мира, но и главным образом для того, чтобы разрешить такие вопросы, как «Что находится в местах, пустых от материи?» и «Почему солнце и планеты тяготеют друг к другу без плотной материи между ними? Почему природа ничего не делает напрасно? И откуда берётся весь тот порядок и красота, которые мы видим в мире? Для чего существуют кометы? И почему планеты движутся все одним и тем же путём в концентрических орбитах, а кометы — разными путями в очень эксцентрических орбитах? И что мешает неподвижным звёздам падать друг на друга?»
Читать дальше →
Total votes 58: ↑48 and ↓10+59
Comments84

Стохастический язык программирования на основе алгоритмов Маркова

Reading time13 min
Views26K

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →
Total votes 139: ↑139 and ↓0+139
Comments24

Разработка высоконагруженного игрового WebSocket сервера на Java, Netty с поддержкой BattleRoyale/Matchmaking

Level of difficultyHard
Reading time18 min
Views12K

Всем доброго времени суток. В предыдущей статье я затронул тему клиентской разработки браузерной игры. В этой же публикации попробую пролить свет на детали разработки мультиплеера, а именно - разработки игрового websocket-tcp сервера на Netty.
Разберем технические особенности реализации такого сервера, способы улучшения производительности, игровую логику и т.д.

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

Парадокс Белла для релятивистcкого паровозика

Level of difficultyMedium
Reading time6 min
Views18K

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

Но есть еще один парадокс, парадокс Белла (того самого, чьим именем названо неравенство квантовой механики). Он интересен тремя моментами:

Читать далее
Total votes 40: ↑39 and ↓1+52
Comments271

Ищем скам токены с помощью пузырчатых диаграмм в блокчейне TON Часть 1

Reading time6 min
Views4K

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

Можно услышать Do Your Own Research – проводите исследования, но обычный человек, а не венчурная фирма, имеющая штат аналитиков, не может тратить столько времени на анализ.

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

Ката программиста — путь к недостижимому идеалу. Или как я упал с велосипеда этим летом

Reading time8 min
Views16K

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

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

А что же программисты?...

Читать далее
Total votes 31: ↑29 and ↓2+35
Comments26

10 интересных научно-фантастических книг 2023 года

Reading time9 min
Views79K

К 1 сентября мы подготовили подборку из 10 НФ произведений, вышедших или планирующихся к выходу в этом году в России и которые, как нам кажется, будут интересны любителям жанра. Ведь не только же перечитывать старых добрых Брэдбери, Херберта, Стругацких или Лукьяненко? (спойлер — он тоже есть в подборке).

Сразу оговоримся — никакие рейтинги присваиваться не будут.  
1. В подборке представлены не только зарубежные, но и отечественные авторы, некоторые из них пока мало кому известны.
2. Некоторые книги могли быть написаны раньше, но в список они попали, потому что были изданы в 2023 году на русском языке (!) — это очень важный критерий. 
3. В подборку вошли только научно-фантастические книги — про классное фэнтези сделаем отдельную статью, если вам понравится формат.
4. Мы не одобряем пиратства, за исключением самиздата, если автор сам распространяет книгу бесплатно. Поэтому приводим ссылки на фрагменты книг для ознакомления, чтобы вы могли решить, нравится ли стиль автора и завязка сюжета.

Читать далее
Total votes 28: ↑25 and ↓3+28
Comments17

А давайте убьем все фреймворки?

Level of difficultyMedium
Reading time15 min
Views50K

Общая тенденция развития технологий характеризуется рывками и спадами. Рассмотрим, например, массовое перемещение человеческих тел. Изначально применялись лошади и повозки, которые постепенно стали сложными, и эта технология превратилась в отдельную индустрию. Затем внезапно появились поезда. Про лошадей быстро забыли, и фокус сместился на новое направление. Пар стал объектом исследований и превратился в сложную науку. Параллельно развивались дизель и электричество. В определенный момент паровые двигатели ушли в прошлое, и все перешли на дизель и электричество. Аналогично сейчас происходит переход на электромашины, требующие значительно меньшего количества жидкостей.

Технологии эволюционируют и функционируют, а новые технологии их полностью заменяют. Считаю, что сейчас наступает эпоха, когда технологии фреймворков и Электрона могут быть вытеснены генеративными AI. Рассмотрим несколько примеров.

Нажимайте вот эту вот кнопотуленку
Total votes 115: ↑89 and ↓26+82
Comments274

Как воспитать в своей семье юного инженера и не разориться?

Level of difficultyEasy
Reading time8 min
Views19K

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

Короче, слушайте
Total votes 52: ↑50 and ↓2+60
Comments32
1
23 ...

Information

Rating
2,025-th
Location
Фамагуста, Turkish controlled area, Кипр
Date of birth
Registered
Activity

Specialization

Backend Developer, Game Developer
Lead
From 10,000 $
C#
.NET
Git
SQL
English
REST
ASP.Net
ASP Classic
.NET Core
Unity3d