Рубрика «Программирование» - 459

Перевод статьи Designing a Microservices Architecture for Failure.

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

В этой статье представлены самые распространённые методики и архитектурные шаблоны для построения и оперирования высокодоступной микросервисной системой.
Читать полностью »

В нашей статье Stream API & ForkJoinPool мы уже рассказывали про возможности изменять размер пула потоков, который мы можем использовать в параллельных обработчиках, использующих Stream API или Fork Join. Надеюсь эта информация вам пригодилась, когда находясь на должности Senior Java Developer, вы смогли увеличить производительность разработанной вами системы, изменив размер пула по умолчанию. Так как наши курсы, в целом, заточены на переход ступеньку выше от джуниора и миддла выше, то часть программы строится исходя из основных вопросов задаваемых на собеседованиях. Один из из которых звучит так: «У вас есть приложение. И есть задача использующая Stream API или Fork Join, которая поддается распараллеливанию. При каких условиях вы можете счесть разумным изменить размер пула потоков заданный по умолчанию? Какой размер вы предложите в этом случае?»

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

Чтобы теоретические рассуждения подкрепить настоящими цифрами предлагаем погонять небольшой бенчмарк для стандартного метода Arrays.parallelSort(), реализующего разновидность алгоритма merge sort, и исполняемого на ForkJoinPool.commonPool(). Запустим этот алгоритм на одном и том же большом массиве с различными размерами commonPool и проанализируем результаты.

Каков должен быть размер у Thread Pool? - 1
Читать полностью »

От переводчика:

Переводы статьи про неопределённое поведение в языке C от Криса Латтнера, одного из ведущих разработчиков проекта LLVM, вызвали большой интерес, и даже некоторое непонимание со стороны тех, кто не встречался с описываемыми явлениями на практике. В своей статье Крис даёт ссылку на блог Джона Реджера, и на его статью от 2010 года, посвящённую UB в C и C++. Но в блоге Реджера есть и гораздо более новые статьи на эту тему (что не отменяет ценность старых, однако).

Я хочу предложить вашему вниманию свежую статью «Undefined Behavior in 2017». Статья в оригинале имеет очень большой объём, и я разбил её на части.

В первой части речь пойдёт о разных инструментах поиска UB: ASan, UBSan, TSan и т.д.
ASan — Address Sanitizer от компании Google, разработанный на основе LLVM.
UBSan — Undefined Behavior Sanitizer, предназначен для обнаружения различных UB в программах на C и C++, доступен для Clang и GCC.
TSan — Thread Sanitizer, предназначен для обнаружения UB в многопоточных программах.
Если вам эта тема покажется далёкой от практики, я рекомендую дождаться продолжения, потому что в конце вас ждёт поистине огромный список UB языка С++ (их должно быть около 200!)
И я рекомендую прочитать также старые статьи Реджера, они не утратили актуальности.
Об авторе: Джон Реджер является профессором Computer Science в университете штата Юта в США.

Мы часто слышим, что некоторые люди утверждают, что проблемы, вытекающие из неопределённого поведения (UB) в C и C++ в основном решены путём широкого распространения инструментов динамической проверки, таких, как ASan, UBSan, MSan и TSan. Мы здесь покажем очевидное: несмотря на то, что в последние годы произошло множество прекрасных улучшений в этих инструментах, проблемы UB далеки от разрешения, и рассмотрим ситуацию в деталях.

UB-2017. Часть 1 - 1
Читать полностью »

Эта статья 一 перевод статьи Domain-Specific Languages for Business Applications — Modelling User Interfaces

Разработка бизнес-приложений связана с решением задач в различных предметных областях, таких как хранение данных, обработка бизнес-логики, проектирование интерфейса пользователя. Для прироста производительности и качества не хватит ни одного предметно-ориентированного языка (domain-specific language, DSL), ни нескольких, если они недостаточно интегрированы между собой. Значительные улучшения может принести лишь целостный подход, при котором согласованно применяются несколько DSL для моделирования решений в различных предметных областях.

В этой статье мы рассмотрим пример DSL, с помощью которого мы моделируем стандартизованные пользовательские интерфейсы для наших бизнес-приложений в modellwerkstatt.org. Логика, присущая DSL, позволяет визуализировать графы объектов полностью и в очень простом, декларативном виде. Мы покажем, насколько просто внедряется обычный код Java, с которым можно взаимодействовать, что обеспечивает дополнительную гибкость и безопасность, в частности типобезопасность. Указав на различие между внутренними и внешними DSL, мы перейдем к JetBrains MPS и сразу же рассмотрим наш DSL для интерфейсов пользователя. Наконец, мы приведем ряд общих соображений относительно взаимодействия DSL между собой и их расширения.
Читать полностью »

Анонс митапа ThinkPHP #15 в Харькове - 1
Приглашаем всех на уже пятнадцатую встречу ThinkPHP-сообщества! Актуальные темы, насыщенные доклады, оживленные кофе-брейки — идеальная атмосфера для того, чтобы поговорить о тенденциях современной веб-разработки и круто провести пятницу.
Читать полностью »

Выбираем подарок

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

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

Подумав немного, сын решил делать продвинутый кухонный таймер.Читать полностью »

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

Мета-взгляд на проблемы (не)образованной молодежи - 1

(Г. и А. Огородниковы)

Ну а некоторые причастны к образованию с другой стороны: кто-то преподает в школе, кто-то преподает в ВУЗе, кто-то просто учит своего ребенка читать и считать, кто-то делится своим опытом с молодым недавно пришедшим сотрудником и т.д. У меня очень скромный опыт преподавания, но он был удачным. Сейчас не преподаю и могу не знать современных тенденций. Но проблемами обучения интересуюсь еще и с точки зрения ИИ, разделяя мнение, что в обучении интеллекта искусственного во многом приходится копировать методы обучения интеллекта естественного, подобно тому, как копируют в ИИ свойства естественных нейронов. В соц.группу молодежи уже не вхожу. Однако, несмотря на это, волна Хабра-публикаций на тему «необразованной молодежи» меня, как и многих, заинтересовала настолько, что принял участие в обсуждениях. И наговорил столько, что решил сделать своеобразный дайджест из собственных автоповторов, добавив дополнительные пояснения и учитывая услышанные в обсуждениях возражения. Ниже предлагается этот взгляд стороннего наблюдателя. Думаю, что критики прозвучало уже предостаточно, поэтому сфокусируюсь на конструктивных идеях.
Читать полностью »

ARKit, Flutter, Core ML, анимации и многое другое на MBLTdev 2017 - 1

Привет! 27 октября состоялась 4-я Международная конференция мобильных разработчиков MBLTdev 2017.

25 спикеров из Google, Uber, Avito, Fyusion, Sharewire, Tinkoff, PSPDFKit, Agoda, Сбербанк и других компаний выступили с докладами о последних трендах мобильной разработки и поделились собственным опытом и практикой. Главными темами конференции стали скорость и поддержка работы приложений, AR-взаимодействия, Core ML, анимации, Audio Unit Extension, организация работы в команде и многое другое. Как это было — читай под катом.
Читать полностью »

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

Что у нас получилось — можно посмотреть здесь.

Вжух и готово — генерируем документацию из TypeScript кода с typedoc - 1Читать полностью »

23 сентября в Москве прошла конференция RailsClub. Под катом — много видео, немного фотографий, ссылки на презентации. Начнем с отчетного ролика — в нем коротко о том, как все было.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js