Как стать автором
Обновить
6
0.1

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

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

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

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

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

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

Читать далее
Всего голосов 37: ↑34 и ↓3+31
Комментарии98

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

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

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

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

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

Читать далее
Всего голосов 27: ↑20 и ↓7+13
Комментарии201

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 57: ↑44 и ↓13+31
Комментарии162

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение15 мин
Количество просмотров447K
Всем привет!

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


Читать дальше →
Всего голосов 139: ↑137 и ↓2+135
Комментарии54

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

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

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

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

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

Читать далее
Всего голосов 14: ↑12 и ↓2+10
Комментарии11

GitFlow процесс

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

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

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

Читать далее
Всего голосов 25: ↑14 и ↓11+3
Комментарии36

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 160: ↑159 и ↓1+158
Комментарии162

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 94: ↑57 и ↓37+20
Комментарии289

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 31: ↑30 и ↓1+29
Комментарии8

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

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


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

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

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

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

Читать далее
Всего голосов 383: ↑235 и ↓148+87
Комментарии859

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

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

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

Читать далее
Всего голосов 339: ↑300 и ↓39+261
Комментарии612

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

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

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

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

Читать далее
Всего голосов 38: ↑35 и ↓3+32
Комментарии12

YAML из Ада

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

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

Данный пост является нытьём и он более субъективен, чем мои обычные статьи.
Читать дальше →
Всего голосов 221: ↑218 и ↓3+215
Комментарии186

Лучшие Стратегии 2022 на пк (ТОП-15 игр)

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

Я подготовил для Вас ТОП-15 лучших Стратегий за 2022 год. Надеюсь, что Вы найдете для себя что-то интересное.

Читать далее
Всего голосов 49: ↑14 и ↓35-21
Комментарии26
1
23 ...

Информация

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