Исследование принципов Domain-driven Design (DDD) на примере кейса "Аутсорсинг"
Статья демонстрирует эволюцию от простой анемичной доменной модели к сложному решению в стиле DDD, охватывая ключевые концепции, такие как единый язык, ограниченный контекст, агрегаты и доменные события.
Читать далееКак любовь к играм и американским хоррорам привела меня к созданию визуальной новеллы.
Речь пойдет о предыстории разработки «Розового шума» — визуальной новеллы в формате интерактивного кино с проработанными анимациями, нелинейностью и духом старых добрых американских ужастиков.
Читать далееИз пары коробок и загадочного Предсказателя строится парадокс Ньюкома, имеющий важное значение для философии науки. Если представить, что в роли испытуемого выступает ИИ, то данный парадокс можно попробовать превратить в задачу, измеряющую степень того, насколько ИИ «понимает», что он — симуляция.
Читать далееВ данной статье хочу поделиться собственным опытом по настройке всем хорошо известных технологий для маршрутизации трафика до всяких разных ресурсов. Тут не будет подробного описания принципов их работы, на просторах Хабра есть масса статей на эту тематику. Я черпал вдохновение именно оттуда, от себя лично добавить ничего не могу.
Сегодня же хочется сосредоточиться больше на практической реализации с добавлением некоторых фич, которые помогут немного упростить процесс деплоя и переноса сервера, распространения конфигурации на клиенты, минимизируя ручной труд.
Небольшой дисклеймер: В статье нет настройки клиентов под Linux и Android, ибо не пользуюсь. Вот здесь есть хорошие примеры, да и подписка, о которой я расскажу, здорово унифицирует этот процесс. Да и для iOS ограничусь лишь самым базовым.
Лично я познакомился с новым поколением прокси‑серверов из материалов многоуважаемого пользователя MiraclePtr. Например, эта статья послужит отличной иллюстрацией, что такое XTLS и Shadowsocks, о которых пойдет речь ниже.
Читать далееРазбираемся как упаковывать данные в диаграмму Sankey, от этапа проектирования до сборки финальных кортежей.
Читать далееПри разработке современных приложений важнейшую роль играет качество клиент‑серверного взаимодействия. Для достижения стабильной связи между мобильными и веб приложениями и серверной частью необходимо стремиться к созданию надежного и эффективного механизма обмена данными. Это подразумевает создание устойчивого API, которое трудно сломать даже при изменениях в архитектуре сервера, а также легкость интеграции новых клиентов.
Кроме того, одним из ключевых приоритетов становится повышение продуктивности команд разработчиков. Важно сократить цикл разработки новых функций и обновлений, позволив разработчикам быстро вносить изменения и выпускать обновления, ускоряя процесс итераций.
Читать далееВ 2018 году беспилотник Uber в Аризоне насмерть сбил женщину — система не распознала пешехода. В 2020-м алгоритм распознавания лиц в США стал причиной ареста невиновного — модель ошиблась с идентификацией. Это не сюжет антиутопии, а реальные ошибки искусственного интеллекта, которые уже стоили людям свободы, жизни и дохода.
Разбираемся, почему ИИ может ошибаться, кто в этом виноват и что с этим делать. В статье — комментарии двух экспертов: инженера по прикладному ИИ и кандидата юридических наук — исследователя в сфере AI governance.
Читать далееGoogle sheets with C++
Привет, пишу тг бота на C++. Недавно мне требовалось подключить выгрузку данных из бд в гугл таблицы, но годного гайда как это сделать я не нашел. Поэтому будет простенький гайд. Расписываю как читать и записывать данные в гугл таблицы. Использовал библиотеки rapidjson, libcurl и jwt-cpp.
Читать далееСколько разных значений вы можете ввести нажатием одной клавиши? Так, на клавиатуре 33 клавиши в буквенном блоке, 13 в цифровом ряду, получается 46. А двумя нажатиями? Выходит 46×46, и ещё 46 – те же клавиши с Shift. Всего чуть больше двух тысяч, и это просто случайные сочетания букв, цифр и пунктуации.
Что если правильные ответы – сотни для одного нажатия, и десятки тысяч для двух? Это далеко не предел. И эти значения – не случайные пары символов, а кнопка "мой рабочий емейл" или "текущая дата", символы осо́бой пунктуации, специфичные языковые символы, кнопка для перевода с транслита, исправления регистра, и даже "включить музыку через 20 минут". И для этого вам не нужно учить наизусть таблицу юникод или хитрые сочетания. Вы сами определяете, что и где будет находиться, никак не меняя базовую функциональность.
Нет, это не клавиатура с тысячью кнопок, и даже не прошиваемая механика. Самая обычная клавиатура, которая сейчас у вас под рукой. Как это возможно? Обо всём по порядку.
В прошлой части я рассказал о ванночке, защитной плёнке, методе восстановления просроченных полимеров (убрать усадки и повысить физические свойства полимеров), способе калибровки датчиков давления платформы, и ещё что-то... В этой статье я постараюсь добавить ещё информации для рассуждения. Все модели, представленные в материалах, сделаны мной и никто не пострадал от нарушения авторских прав (почти).
Ванночку (грань, где плёнка натягивается на основание) нужно выполировывать и удалять слой краски, но самой важной частью будет выставление зазора между плёнкой и экраном. Оно должно быть 0.2-0.3 мм. Дело в том, что отрицательное давление при подъёме платформы (особенно на первых слоях) создаётся в промежутке между ними. И при малейшей течи в плёнке туда будет засасывать смолу (у меня подозрение что даже в виде аэрозоля), на фото видны микро следы от затянутого в щели полимера по краю защитной плёнки. Экран был в идеале, несколько капель на периферии ванны (там где натягивается плёнка) не могли такого сделать. Поэтому любители печатать максимально близко к экрану (без защитной плёнки) сильно рискуют, без каких-либо выгод. У меня платформа надавив на такие артефакты выбила несколько линий в экране.
Читать далееВот уже несколько десятилетий корпорации вкладывают миллиарды в разработку квантовых процессоров, обещая радикально изменить будущее вычислений. Мы слышим громкие заявления о рекордах: достижении «квантового превосходства» или прорывных алгоритмах, способных положить конец современной криптографии.
Но за яркими заголовками часто скрывается куда менее оптимистичная реальность. «Революционные» заявления не выдерживают проверку временем и учеными умами: в методиках находят изъяны, а практическое применение технологий постоянно откладывается. Мы в beeline cloud решили взглянуть на эту тему и подробнее изучить вопрос о том, где же заканчивается «квантовый» маркетинг.
Читать далееСвою первую работу программистом на языке PHP я нашёл в далёком 2011 году, имел опыт с разными версиями языка от 5.0 до 8.1 в коммерческих разработках. C тех пор иногда приходилось выходить в смежные области: Python, NodeJS, 1С, VBA и вот наконец Go. Для любого опытного профессионала не станет откровением, что одну и ту же вещь можно сделать разными средствами, и что для каждой задачи есть свой наиболее подходящий инструмент. В середине 2010-х особое распространение начинают получать такие направления, как High Load, микросервисная архитектура, и конечно модное тогда распиливание монолитов. Многие из проектов-монолитов были написаны на языке PHP, и из тех, кто стал делать первые шаги в Go в то время стали в том числе те самые программисты, которые с блеском в глазах могли, как мантру повторять «распилить монолит» и мечтать написать микросервис на Go под каждую задачу, требующей всего того, на что привычный PHP был не способен: неэффективный расход памяти, отсутствие асинхронности.
И в принципе, до выхода версии 7.4 с ее возможностью FFI (Foreign Function Interface) решить озвученные выше проблемы мог совсем не каждый программист, занимающийся разработкой "коробочной" CMS (WordPress, Drupal, Joomla! или Битрикс). В конце концов, мало кому хотелось, вспоминать полузабытый после университета язык C, браться за разработку собственного расширения для PHP (pecl).
Сказанное выше является моим субъективным мнением, единственным выводом из которых хотелось выделить одну простую мысль - есть некая аудитория программистов, которые знают и Go, и PHP. Если вы набрели на эту статью, вбив в поисковике слова "PHP FFI Go", то эта статья для вас, тех кто ищет нетривиальные пути, тех кто пытается взять лучшее от каждой из технологий.
Читать далееВ строительстве принято работать долго на одном месте, а искать сотрудников — по знакомству. Я пришёл с другим бэкграундом: консалтинг, управление IT-командами, структурные подходы. И понял, что можно взять лучшие практики из этих сфер и применить их к найму в строительстве. Что, если подойти к подбору как к бизнес-задаче — с гипотезами, итерациями и ретроспективами? Попробовал. Получился процесс, в котором всё можно оценить по времени и результату. Найм из случайности превратился в управляемый процесс.
Читать далееПривет всем хейтерам и благодетелям! Вновь я пишу статью для «саморекламы» специально для «диванных экспертов».
Как и всегда, в этой статью я поделюсь своим опытом и мнением за 6 лет скитания в игровой индустрии.
Не нажимай на эту кнопкуMES-системы — интерфейсы от которых зависит эффективность производственного процесса. Основная задача — обеспечить управление, ускорить принятие решений и снизить ошиби на всех этапах.
Разбираем как проектировать MES-систему, чтобы она была удобной в эксплуатации.
Читать далееА вообще что такое перфекционизм? Это когда человек стремится к некоему идеальному, безупречному результату. Ну, вы поняли — вот такой «супергерой» трудоголик, который в погоне за совершенством забывает про отдых и здравый смысл.
Читать далееЧасть 1: элементы памяти и убеждения
Часть 2: события
Часть 3: инстинкты
В этой части будет продолжено рассмотрение инстинктов.
Также появятся два новых типа элементов памяти: «позитив» и «негатив». Эти типы оказывают большое влияние на поведение человека и отвечают за влечения, желания, зависимости, фобии, влюбленности и сексуальную ориентацию.
Читать далее