Как стать автором
Обновить
21
Карма
0
Рейтинг
Vladimir Shipovalov @shipovalov

Software Engineer

RabbitMQ: терминология и базовые сущности

Блог компании Southbridge Высокая производительность *Системное администрирование *Программирование *IT-инфраструктура *

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

Алексей Барабанов, IT-директор «Хлебница» и спикер курса «RabbitMQ для админов и разработчиков», подготовил конспект, который поможет понять терминологию и базовые сущности RabbitMQ.

Читать далее
Всего голосов 41: ↑39 и ↓2 +37
Просмотры 20K
Комментарии 5

Паттерны для новичков: MVC vs MVP vs MVVM

.NET *C# *
Добрый день, уважаемые коллеги. В этой статье я бы хотел рассказать о своем аналитическом понимании различий паттернов MVC, MVP и MVVM. Написать эту статью меня побудило желание разобраться в современных подходах при разработке крупного программного обеспечения и соответствующих архитектурных особенностях. На текущем этапе своей карьерной лестницы я не являюсь непосредственным разработчиком, поэтому статья может содержать ошибки, неточности и недопонимание. Заинтригованы, как аналитики видят, что делают программисты и архитекторы? Тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 45: ↑40 и ↓5 +35
Просмотры 716K
Комментарии 36

Disruptor — новая парадигма многопоточного программирования

Высокая производительность *
На прошлой неделе компания LMAX, где я работаю, получила приз Java Duke's Choice Award 2011 за фреймворк Disruptor. Ранее об этой технологии писал Martin Fowler, известный многим читателям публикациями об объектном программировании.

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

Читать дальше →
Всего голосов 33: ↑26 и ↓7 +19
Просмотры 32K
Комментарии 25

Как я объяснил жене, что такое REST

Разработка веб-сайтов *
Перевод
Возможно, как и многим, мне не всегда удаётся простым языком объяснять сложные вещи, я становлюсь многословным, уделяю чрезмерное внимание деталям и невольно использую профессионализмы. Наверное, именно поэтому я обратил внимание на статью How I Explained REST to My Wife, в которой Ryan Tomayko вот так запросто рассказывает жене о REST и принципах работы HTTP. В заголовках статьи был перечень языков на которые переведена эта статья и этот список из 6 языков, во-первых, дал понять что я не одинок, во-вторых, показал что статья стоит того что бы добавить перевод на русском.
Читать дальше →
Всего голосов 133: ↑85 и ↓48 +37
Просмотры 28K
Комментарии 72

Архитектура приложения Angular. Используем NgModules

Разработка веб-сайтов *JavaScript *Angular *TypeScript *
Туториал
Перевод

Прим. перев.: для понимания данной статьи необходимо обладать начальными знаниями Angular: что такое компоненты, как создать простейшее SPA приложение и т.д. Если Вы не знакомы с данной темой, то рекомендую для начала ознакомиться с примером создания SPA приложения из оф. документации.


Об NgModules можно прочитать здесь.


image


Один год назад я уже публиковал статью об NgModules, где рассматриваются технические тонкости, когда импортировать модули, пространство имен и т.д. Рекомендуется для ознакомления (прим. перев.: статья по содержанию аналогична той, на которую я ссылаюсь вначале).

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 43K
Комментарии 4

Реализуем свой оператор в Entity Framework Core

.NET *C# *

Однажды пасмурным мартовским субботним утром я решил посмотреть, как обстоят дела у Майкрософта в благом деле по трансформированию мастодонта Entity Framework в Entity Framework Core. Ровно год назад, когда наша команда начинала новый проект и подбирала ORM, то руки чесались использовать все как можно более стильное и молодежное. Однако, присмотревшись к EFC, мы поняли, что он еще очень далек продакшна. Очень много проблем с N+1 запросами (сильно улучшили во 2й версии), кривые вложенные селекты (пофиксали в 2.1.0-preview1), нет поддержки Many-to-Many (все еще нет) и вишенка на торте — отсутствие поддержки DbGeometry, что в нашем проекте было очень критично. Примечательно, что последняя фича находится в road map проекта с 2015 года в списке высокоприоритетных. У нас в команде есть даже шутка на эту тему: "Эту задачу добавим в список высокоприоритетных". И вот прошел один год с последней ревизии EFC, вышла уже вторая версия данного продукта и я решил проверить, как обстоят дела.

Читать дальше →
Всего голосов 36: ↑36 и ↓0 +36
Просмотры 14K
Комментарии 23

Бинарные деревья поиска и рекурсия – это просто

Программирование *C++ *Алгоритмы *
Из песочницы
Существует множество книг и статей по данной теме. В этой статье я попробую понятно рассказать самое основное.

Бинарное дерево — это иерархическая структура данных, в которой каждый узел имеет значение (оно же является в данном случае и ключом) и ссылки на левого и правого потомка. Узел, находящийся на самом верхнем уровне (не являющийся чьим либо потомком) называется корнем. Узлы, не имеющие потомков (оба потомка которых равны NULL) называются листьями.

image
Рис. 1 Бинарное дерево
Читать дальше →
Всего голосов 43: ↑32 и ↓11 +21
Просмотры 495K
Комментарии 9

Ускоряем время сборки и доставки java web приложения

Java *Gradle *
Из песочницы

TLTD


  1. удалил jar из сборки проекта
  2. заменил его таском, который быстрее в 7 раз


Детали и результат под катом.

Читать дальше →
Всего голосов 24: ↑19 и ↓5 +14
Просмотры 5.9K
Комментарии 9

Трассировка JS ↔ DOM, или Туда и обратно

Блог компании JUG Ru Group JavaScript *Google Chrome
Перевод

Поиск утечек памяти в Chrome 66 стал гораздо удобней. DevTools теперь могут проводить трассировку, делать снапшоты DOM-объектов из C++, отображать все доступные DOM-объекты из JavaScript вместе со ссылками на них. Появление этих возможностей стало следствием нового механизма трассировки C++ в сборщике мусора V8.


Напомню, что стабильный Chrome сейчас (20.03.2018) имеет версию 65, поэтому чтобы подивиться на фичу, придётся установить одну из нестабильных сборок (например, Beta имеет версию 66, а Dev и Canary — 67).

Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Просмотры 6.2K
Комментарии 0

Optional: Кот Шрёдингера в Java 8

Программирование *Java *
Туториал
Представим, что в коробке находятся кот, радиоактивное вещество и колба с синильной кислотой. Вещества так мало, что в течение часа может распасться только один атом. Если в течение часа он распадётся, считыватель разрядится, сработает реле, которое приведёт в действие молоток, который разобьёт колбу, и коту настанет карачун. Поскольку атом может распасться, а может и не распасться, мы не знаем, жив ли кот или уже нет, поэтому он одновременно и жив, и мёртв. Таков мысленный эксперимент, именуемый «Кот Шрёдингера».



Класс Optional обладает схожими свойствами — при написании кода разработчик часто не может знать — будет ли существовать нужный объект на момент исполнения программы или нет, и в таких случаях приходится делать проверки на null. Если такими проверками пренебречь, то рано или поздно (обычно рано) Ваша программа рухнет с NullPointerException.
Читать дальше →
Всего голосов 28: ↑20 и ↓8 +12
Просмотры 203K
Комментарии 51

Как я писал telegram-бота и заливал его на удаленный сервер

Настройка Linux *Python *API *SQLite *
Из песочницы

Вступление


Как только на территории РФ вступил в силу запрет на анонимность в мессенджерах, у меня дошли руки написать пост про telegram-бота. По ходу создания бота столкнулся с большим количеством проблем, которые пришлось решать по отдельности, и буквально выцеживать крупинки информации со всего интернета. И вот после нескольких месяцев страданий и мучений (кодинг – не основное моё занятие) я наконец-то закончил с ботом, разобрался со всеми проблемами и готов поведать свою историю Вам.


Читать дальше →
Всего голосов 32: ↑17 и ↓15 +2
Просмотры 176K
Комментарии 20

Общение между компьютером и Android-устройством через Processing

Разработка под Android *Processing *
Туториал
Есть определённая категория людей, которая хотела бы писать программы, но боится серьёзных языков программирования. К ним можно отнести детей, гуманитариев, любителей мастерить, людей старшего поколения и т.д. Кто-то пробует использовать «детские» языки типа Scratch или другие упрощённые конструкторы.

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

Processing — это простенькая среда разработки с языком Java с ограниченным числом классов. Здесь есть переменные, циклы, объекты. В первую очередь Processing расчитан на работу с графикой, анимацией, вычислениями. То, что так нравится детям. Всё наглядно и красиво.
Если у пользователя появится желание перейти на новый уровень и начать использовать полноценный язык Java, то все наработки не пропадут даром. Большая часть кода не потребует переработки и можно свободно копировать больше участки кода.
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 11K
Комментарии 3

VMware Dispatch: новый фреймворк для работы с serverless-приложениями

Блог компании 1cloud.ru Системное администрирование *Виртуализация *Серверное администрирование *DevOps *
2017-й стал годом расцвета Kubernetes. Как отметили в RightScale, процент компаний, работающих с Kubernetes, за прошлый год увеличился с 7 до 14%. Kubernetes вошел в пятерку самых популярных DevOps-инструментов, которые «приняли на вооружение» в 2017 году, и стал вторым среди планируемых к внедрению.

Kubernetes стали чаще использовать средние и малые компании. Кроме того, фреймворк уже внедрили и крупные организации — Google, Red Hat, IBM, Microsoft и другие.

Одна из причин популярности платформы — богатый набор инструментов, разрабатываемых на её основе. Одним из таких релизов стал проект VMware Dispatch — фреймворк для создания и работы с serverless-приложениями. В этой статье рассмотрим новый продукт, а также расскажем о его особенностях и возможностях.

Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 4.2K
Комментарии 1

CoffeeMiner: взлом WiFi для внедрения криптомайнера в HTML-страницы

Информационная безопасность *Open source *Python *Разработка под Linux *
Перевод
Предупреждение: эта статья и проект имеют исключительно образовательные цели.

Несколько недель назад я прочитал об этом случае Starbucks, где хакеры взламывали ноутбуки в сети WiFi, чтобы майнить на них криптовалюту. И я подумал, что может быть интересно провести атаку иным способом.

Цель этой статьи — объяснить, как провести атаку MITM (человек посередине) для внедрения определённого JavaScript-кода в страницы HTML, чтобы заставить все устройства, подключённые к WiFi, майнить криптовалюту для злоумышленника.

Задача состоит в создании скрипта, который проводит автономную атаку в сети WiFi. Это то, что мы назвали CoffeeMiner, поскольку атаки такого типа можно проводить в кафе.
Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Просмотры 29K
Комментарии 15

Малюсенький CI вашего Symfony проекта за 2 минуты

PHP *Symfony *
Без воды о том, как за 10 минут сделать:

  1. Проверяем ваш composer.json на серьезные и несерьезные ошибки, вроде неоптимального autoload
  2. Проверяем ваш composer.lock на security уязвимости в пакетах
  3. Проверяем вашу базу данных, что ничего не забыли
  4. Проверяем ваши YAML файлы
  5. Проверяем Coding Style по Symfony
Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Просмотры 10K
Комментарии 7

Vibrant.kt — быстрое прототипирование и разработка распределенных приложений (DApps) на JVM

Криптография *Программирование *Java *Kotlin *

Нихао!


Введение


Я долго ничего не писал, потому что ЕГЭ само себя не сдаст, но к Балтийскому конкурсу я не мог не написать чего-нибудь классное. Хороших идей из ниоткуда я выдавить не мог, поэтому решил окунуться в абсолютно незнакомую мне на тот момент(пол месяца назад) тему, в мир блокчейна, криптовалют, смарт контрактов и других умных английских слов. На уроках утыкался в телефон, читая множество текстов про блокчейн, peer2peer сети и все такое, постепенно разбираясь. Все пошло легче, когда я начал писать простые прототипы на Javascript'e: в очередной раз убеждаюсь, что в коде все понятнее, нежели на тексте. В итоге, когда я вроде разобрался, я определился с темой работы, которую видно в заголовке статьи.

Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Просмотры 3.2K
Комментарии 0

JavaScript и ужасы мутаций

Блог компании RUVDS.com Разработка веб-сайтов *JavaScript *
Перевод
Мутация — это изменение. Изменение формы или изменение сути. То, что подвержено мутациям, может меняться. Для того чтобы лучше осознать природу мутации — подумайте о героях фильма «Люди Икс». Они могли внезапно получать потрясающие возможности. Однако проблема заключается в том, что неизвестно, когда именно эти возможности проявятся. Представьте себе, что ваш товарищ ни с того ни с сего посинел и оброс шерстью. Страшновато, правда? В JavaScript существуют те же проблемы. Если ваш код подвержен мутациям, это значит, что вы можете, совершенно неожиданно, что-то изменить и поломать.


Читать дальше →
Всего голосов 31: ↑23 и ↓8 +15
Просмотры 33K
Комментарии 54

Опыт построения логов на Postgres

Блог компании Тензор Высокая производительность *PostgreSQL *Программирование *
Мы разработали свою систему логирования на PostgreSQL… Да я знаю, что есть надстройки над ElasticSearch (GrayLog2, Logstash), и что есть другие похожие инструменты, и есть те, про которые не знаю. Тем не менее, наш инструмент на текущий момент построен на PostgreSQL, и он работает.

Во время рабочей недели со всех сервисов СБИС в облаке к нам поступает в сутки более 11 млрд записей, хранятся они 3 дня, общий объем занимаемого при этом места не превышает 32 Тб. Все это обрабатывает 8 серверов с PostgreSQL 9.6. Каждый сервер имеет 24 ядра, RAM 16Гб и 4 SSD диска по 1Тб.


Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 13K
Комментарии 20

Javascript — решение асинхронной проблемы?

Разработка веб-сайтов *JavaScript *Программирование *
Из песочницы

В этой статье, я хочу рассказать про свое решение проблемы с асинхронной функциональностью javascript, по средствам введения полностью асинхронной модели вычислений. Будет описана сама концепция, и дана ссылка на реализацию. Заинтересовавшихся прошу под кат.

Читать дальше →
Всего голосов 22: ↑10 и ↓12 -2
Просмотры 8.1K
Комментарии 9

Лабораторная работа: введение в Docker с нуля. Ваш первый микросервис

Настройка Linux *Системное администрирование *Серверное администрирование *Управление разработкой *DevOps *
Туториал
Привет, хабрапользователь! Сегодня я попробую представить тебе очередную статью о докере. Зачем я это делаю, если таких статей уже множество? Ответов здесь несколько. Во-первых не все они описывают то, что мне самому бы очень пригодилось в самом начале моего пути изучения докера. Во-вторых хотелось бы дать людям к теории немного практики прямо по этой теории. Одна из немаловажных причин — уложить весь накопленный за этот недолгий период изучения докера опыт (я работаю с ним чуть более полугода) в какой-то сформированный формат, до конца разложив для себя все по-полочкам. Ну и в конце-концов излить душу, описывая некоторые грабли на которые я уже наступил (дать советы о них) и вилы, решение которых в докере просто не предусмотрено из коробки и о проблемах которых стоило бы задуматься на этапе когда вас распирает от острого желания перевести весь мир вокруг себя в контейнеры до осознавания что не для всех вещей эта технология годна.

Что мы будем рассматривать в данной статье?

В Части 0 (теоретической) я расскажу вам о контейнерах, что это и с чем едят
В Частях 1-5 будет теория и практическое задание, где мы напишем микросервис на python, работающий с очередью rabbitmq.
В Части 6 — послесловие
Читать дальше →
Всего голосов 108: ↑107 и ↓1 +106
Просмотры 312K
Комментарии 36

Информация

В рейтинге
Не участвует
Откуда
Kraków, Malopolskie, Польша
Дата рождения
Зарегистрирован
Активность