Pull to refresh
6
0
Send message

Рекурсивная генерация подземелий на Godot 4.1

Level of difficultyMedium
Reading time8 min
Views3.4K

В данной статье рассмотрим способ процедурной генерации подземелий, с помощью рекурсивную функцию на Godot 4.1.

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

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

Пиррова победа Domain-Driven Design

Level of difficultyHard
Reading time7 min
Views10K

TL;DR: DDD неизбежно ведёт к избыточному (на порядки больше минимально необходимого) количеству саг в проекте, которые, в свою очередь, неизбежно ведут к нарушению целостности данных в БД.

DDD вполне успешно решает поставленную задачу: дать разработчикам инструменты, которые позволят им справиться (корректно реализовать и поддерживать) со сложной предметной областью. Но эта победа оказалась пирровой: инструменты, обеспечивающие корректность данных в памяти, оказались неспособны гарантировать корректность данных в БД. А что толку от изначально корректных данных в памяти, если со временем (после их сохранения в БД и последующего чтения) они перестают быть корректными? По сути, у DDD есть фатальный недостаток: DDD неизбежно приводит к нарушению целостности данных (инварианта бизнес-логики) в БД.

Читать далее
Total votes 37: ↑34 and ↓3+31
Comments98

Краткий обзор развития лямбда-выражений в C++11, C++14, C++17 и C++20

Level of difficultyEasy
Reading time4 min
Views12K

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

Сегодня рассмотрим лямбда-выражения в C++ и их эволюцию с момента появления в стандарте C++11 и до последних обновлений в C++20.

Лямбда-выражения в C++ — это анонимные функции, которые позволяют писать инлайн-выражения прямо там, где они используются. С их помощью можно легко определять функции обратного вызова, передавать их в функции высшего порядка или использовать для инициализации функциональных объектов.

Читать далее
Total votes 27: ↑20 and ↓7+13
Comments201

Не пора ли валить с gnu libc на что‑то другое?

Level of difficultyMedium
Reading time3 min
Views20K

Пользуюсь открытым ПО значительное время. Сижу на Линуксе.

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

Последний эпизод коснулся совсем уж системного кода - стандартной библиотеки libc от GNU. Системнее может быть только ядро.

История такая. Собрал Хромиум (не быстро). Когда наконец сборка завершилась с попутным решением проблем, думал: ну вот наконец щас запущу, посмотрю как работают интересующие меня вещи. И тут произошёл облом. Хром падал почти в самом начале запуска с ошибкой доступа к памяти. Довольно быстро удалось выяснить, что падение происходит из-за ошибки обращения по нулевому указателю. И происходит оно в динамическом загрузчике, то бишь в libdl, при загрузке библиотеки через dlopen. libdl.so является одной из компонент пакета стандартной библиотеки и понятно, самой системной библиотекой в ОС. Подробности всей ситуации я описал в вопросе на stackoverflow.

Вкратце: при загрузке библиотеки libXcursor.so подтягиваются непонятно откуда взявшиеся зависимости, не имеющие никакого отношения к упомянутой библиотеке. И зависимости эти не инициализированы корректно. Откуда и происходит обращение по нулевому указателю. Впоследствии выяснилось, что проблема начинается с несовпадающих версий библиотек libQt5Core, в результате чего libdl делает полный отбой с попыткой отката всех изменений.

Но, видимо, этот откат реализован из рук вон плохо, поскольку после него начинают происходить весьма странные вещи. И загрузка неинициализированной зависимости с нулевыми указателями лишь одна из них. Я ещё сделал пробник в виде простого приложения, которое пытается воспроизвести ситуацию. И в этом пробнике также происходил сбой, но уже при инициализации (вызов init или конструктор в их терминологии) либы libpthread.so (тоже очень системная) - потерян адрес глобального на процесс хранилища либ.

Читать далее
Total votes 57: ↑44 and ↓13+31
Comments162

GoFunc: новая конференция по Go

Reading time6 min
Views2.3K

Разработка на Go — особый мир. Этот язык не так популярен, как Python или JavaScript, но благодаря этому и дурацкой шумихи вокруг него меньше. Популярность приманивает «случайно проходивших мимо» и вызывает много глупых холиваров. А тем временем Go собирает людей, которые хорошо понимают, зачем они здесь, и хотят эффективно решать реальные задачи. 

В этом могут помочь конференции. Для многих других разработчиков мы уже давно их проводим (вроде HolyJS или С++ Russia). А в марте впервые проведём новую конференцию GoFunc. Главное, что нужно о ней знать:

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

А подробнее — в полном тексте:

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

В поиске оптимального подхода к миграциям в Go

Level of difficultyEasy
Reading time9 min
Views10K

Привет! Меня зовут Нина, и я Golang разработчик.

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

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

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

Операционные усилители: 10 схем на (почти) все случаи жизни

Reading time15 min
Views452K
Всем привет!

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


Читать дальше →
Total votes 139: ↑137 and ↓2+135
Comments54

Улучшенная маршрутизация HTTP-серверов в Go 1.22

Level of difficultyEasy
Reading time5 min
Views7.9K

В Go 1.22 ожидается появление интересного предложения - расширение возможностей по поиску шаблонов (pattern-matching) в мультиплексоре, используемом по умолчанию для обслуживания HTTP в пакете net/http.

Существующий мультиплексор (http.ServeMux) обеспечивает рудиментарное сопоставление путей, но не более того. Это привело к появлению целой индустрии сторонних библиотек для реализации более мощных возможностей. Я рассматривал эти возможности в серии статей "REST-серверы на Go", в частях 1 и 2.

Новый мультиплексор в версии 1.22 позволит значительно сократить отставание от пакетов сторонних разработчиков, обеспечив расширенное согласование. В этой небольшой заметке я кратко расскажу о новом мультиплексоре (mux). Я также вернусь к примеру из серии "REST-серверы на Go" и сравню, как новый stdlib mux справляется с gorilla/mux.

Читать далее
Total votes 14: ↑12 and ↓2+10
Comments11

GitFlow процесс

Level of difficultyEasy
Reading time6 min
Views38K

В этой статье я хотел бы затронуть тему хранения кода в Git, контроля версий, релизов и в целом как этим всем управлять в команде.

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

Читать далее
Total votes 25: ↑14 and ↓11+3
Comments36

Физики смогли увидеть «ненаблюдаемый» квантовый переход

Reading time15 min
Views10K

В 1935 году Альберт Эйнштейн и Эрвин Шрёдингер, два самых выдающихся физика того времени, вступили в спор о природе реальности.

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

Когда две частицы становятся запутанными (что может произойти, например, при их столкновении), их судьбы оказываются связанными. Измерьте, например, ориентацию спина одной частицы, и вы можете узнать, что её запутанный партнёр (если и когда он будет измерен) указывает в противоположном направлении, независимо от его местонахождения. Таким образом, измерение в Пекине может мгновенно повлиять на эксперимент в Бруклине, что, очевидно, нарушает эйнштейновский закон о том, что никакое воздействие не может распространяться быстрее света.

Читать далее
Total votes 15: ↑12 and ↓3+9
Comments54

Полный релиз бесплатного интерактивного 700-страничного учебника по тестированию

Level of difficultyEasy
Reading time12 min
Views101K

Гуд ньюз эвриван! Спустя полтора года работы восьми айтишников с суммарным опытом в IT 130 лет достигнут результат в виде учебника по тестированию, которого еще никто и никогда не делал.

Читать далее
Total votes 160: ↑159 and ↓1+158
Comments162

Самый роскошный радиоконструктор с Али

Level of difficultyEasy
Reading time10 min
Views59K


Вы бы хотели собрать своими руками девятидиапазонный супергетеродинный радиоприёмник с верньером, в прочном красивом корпусе с решёткой громкоговорителя из перфолиста, с отсеками для пальчиковых батареек AA и литиевого аккумулятора BL-5C и даже с функцией неплохого светодиодного фонарика?

Если вы имеете минимальный опыт пайки электронных компонентов поверхностного монтажа, то этот радиоконструктор на основе легендарной микросхемы 2003 вас очень порадует.

Вы спросите, разве на усилителе мощности звуковой частоты TDA2003 или UTC2003 можно построить серьёзный радиоприёмник? Или, может быть, на ULN2003, которую многие привыкли называть «драйвером шагового двигателя», тогда как на самом деле это сборка из семи дарлингтоновых пар?

Сегодня пойдёт речь и о них, и о CD2003 (TA2003) — одной из самых удачных аналоговых микросхем для АМ/ЧМ радио.
Читать дальше →
Total votes 41: ↑38 and ↓3+35
Comments53

Мы живем в компьютерной симуляции. Мнение программиста (2024)

Level of difficultyMedium
Reading time22 min
Views38K

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

В этой статье:

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

Обсудим квантовую запутанность (оптимизация вычислений).

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

Обсудим возможность существования мультивселенной и параллельных миров.

Также поговорим про эффект Манделы и Ложные воспоминания, что поговорит о том, что прошлое можно менять при определенных условиях.

Читать далее
Total votes 94: ↑57 and ↓37+20
Comments289

Seastar как платформа для опорной сети 5G и краткое сравнение с Boost.Asio, userver и другими

Level of difficultyHard
Reading time14 min
Views4.2K

Я исследовал некоторые open-source фреймворки — кандидаты на платформу для опорной сети пятого поколения операторского уровня, и хочу поделиться своими выводами. Под катом я сравню Seastar, mTCP, Boost.Asio, userver и ACE, расскажу, почему примитивы синхронизации — это плохо, а затем погружу вас в глубины Seastar.

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

Обработка ошибок в go в 2023 г

Level of difficultyMedium
Reading time6 min
Views12K

В go нет исключений. Разработчики, начинающие знакомиться с go, часто не знают как лучше всего обработать ошибку, как её отобразить в логах и что с ней делать дальше.

Рассмотрим все варианты, которые можно встретить в проектах на golang в 2023 году.

Читать далее
Total votes 19: ↑17 and ↓2+15
Comments24

Теоретики предположили, что тёмная материя может взаимодействовать с обычной нелокально

Level of difficultyMedium
Reading time5 min
Views6.1K

Согласно теории всемирного тяготения сэра Исаака Ньютона, гравитация — это удалённое взаимодействие, при котором один объект ощущает влияние другого независимо от расстояния между ними. Это понятие стало главной особенностью классической ньютоновской физики, которая оставалась общепринятым каноном на протяжении более двухсот лет. В XX веке Эйнштейн начал переосмысливать гравитацию с помощью своей теории общей теории относительности, в которой гравитация изменяет кривизну локального пространства-времени. Из этого мы получаем принцип локальности, который гласит, что на объект непосредственно влияет его окружение, а удалённые объекты не могут мгновенно взаимодействовать друг с другом.

Однако рождение квантовой механики породило ещё один принцип: физики обнаружили, что нелокальные явления не только существуют, но и фундаментальны для реальности, какой мы её знаем. К ним относится квантовая запутанность, когда в зависимости от свойств одной частицы мгновенно и независимо от расстояния между частицами меняются свойства другой частицы. В новом исследовании Международной школы передовых исследований (SISSA) в Триесте, Италия, группа исследователей предполагает, что тёмная материя может взаимодействовать с гравитацией нелокальным образом.

Читать далее
Total votes 31: ↑30 and ↓1+29
Comments8

Что будет дальше

Reading time15 min
Views97K


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

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

Когда живёшь в Иванове, ты не чуствуешь пульс индустрии, страны и мира так, как должен чувствовать. Город, в котором я родился, вырос, построил жизнь и карьеру, их которого я учил всех жить, хоть и находится довольно близко к дефолтному — всё ещё редкое захолустье. Размеренный, спокойный, отдаленный. В городе Иваново легко делать вид, что ты не бежишь ни над какой пропастью, легко не смотреть вниз. Даже если ты известный человек, с огромным количеством друзей и знакомых по всему миру, даже если ты ведешь один из самых популярных индустриальных подкастов, и даже если вся твоя работа подразумевает глубочайшее погружение во всё значимое, что происходит в мире, в регионе, и в твоей индустрии.

Я читал все новости, я до последнего рокового утра был уверен, что ничего страшного не будет, а когда оно настало, не верил, что оно продлится долго, хотя и пропускал через себя абсолютно всё. Всё, все сводки, все фотографии, все новости, все прогнозы и мнения.

Читать далее
Total votes 383: ↑235 and ↓148+87
Comments859

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

Level of difficultyEasy
Reading time19 min
Views233K

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

Читать далее
Total votes 339: ↑300 and ↓39+261
Comments612

Полезные, смешные, нелепые: репозитории GitHub, которые вас удивят

Level of difficultyEasy
Reading time5 min
Views20K

На GitHub есть немало репозиториев, в которых будет интересно поковыряться даже не профессионалу. Сегодня мы подготовили для вас небольшую статью-компиляцию сразу из двух источников (раз и два), отобрали самое интересное.

Пустой «дзен-репозиторий», хранилище самых глупых требований к паролю и скриптовый язык на основе Python в стиле Дональда Трампа (а также многие другие интересные и даже полезные штуки) ждут вас под катом.

Читать далее
Total votes 38: ↑35 and ↓3+32
Comments12

YAML из Ада

Reading time9 min
Views61K

Формат данных YAML чрезвычайно усложнён. Он задумывался как удобный для человека, но в стремлении к этой цели сложность настолько увеличилась, что, по моему мнению, его разработчики достигли противоположного результата. В YAML есть куча возможностей выстрелить себе в ногу, а его дружелюбие обманчиво. В этом посте я хочу продемонстрировать это на примере.

Данный пост является нытьём и он более субъективен, чем мои обычные статьи.
Читать дальше →
Total votes 221: ↑218 and ↓3+215
Comments186
1
23 ...

Information

Rating
Does not participate
Registered
Activity