Рубрики
Life

Капельный полив для вашей дачи

Всем привет! Редко получается написать что-то в блог, хотя блокнотик с идеями только растёт 🙂 Сегодня хочу рассказать вам про систему капельного полива, которую я собрал на даче. Всем, у кого есть дача с растениями или грядками — крайне рекомендуется к прочтению!

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

Рубрики
Life

Деревянный кабриолет мечты

Кабриолет

Салют!
Уже давно решил поделиться с вами одним своим увлечением, а именно, сборкой деревянных моделей. Это время пришло!

Те, кто знают меня или следят в инстаграме, уже видели некоторое время назад мои восхищения моделью паровоза. Но тогда написать про него руки не дошли. На этот раз я собирал модель автомашины-кабриолета. Это просто сказка!

Механические деревянные конструкторы от украинской компании Ugears отличаются точностью и проработкой, все детали очень чётко подходят друг к другу, многие аспекты модели механизированы: всё крутится, открывается, поднимается, переключается и даже само ездит! И всё это без применения клея!

“Ну да хватит слов, давай скорее фотки!” скажете вы, и будете правы! И не пропустите видео в конце! 😉

Фото модели кабриолета
Фото модели кабриолета
Рубрики
Разработка

Асинхронные стендапы

Всем привет!
Давно хочу написать про одну технику, которую, как мне кажется, мы успешно применяем у себя в команде разработки, а именно — асинхронные текстовые ежедневные стендапы.

Сейчас попробую раскрыть этот термин подробнее. Наверное многие, особенно из мира ИТ, слышали про Scram, Agile, Kanban, и прочие гибкие методологии — как же иначе! Так вот в рамках некоторых гибких методологий есть практика «Stand-up meeting», или для простоты стендапов. Это короткие, ограниченные по времени стоячие митинги, обсуждения, которые проводятся каждый день, обычно в начале рабочего дня, их иногда ещё называют «дейликами» (от англ. daily meetings). Цель этих обсуждений — синхронизация работы всех членов команды. Обычно, в рамках этих стендапов каждый участник отвечает коротко на 3 вопроса:

  • Что сделал за вчера?
  • Что планируешь сделать сегодня?
  • И какие есть или могут быть проблемы?
Рубрики
Life Разработка

Интервью для Хекслета

Всем привет!

Совсем недавно меня позвала в гости Наталья Мусина, комьюнити-менеджер Хекслета. Получилось очень душевно поболтать о разном: и о базах даных, и о саморазвитии, процессах и планировании, контроле времени и приоритетах, обучении и собеседованиях, конференциях и подкастах. В общем, айтишникам, да и не только, должно быть интересно! Предлагаю посмотреть и вам!

П.С. Интервью получилось аж на 2 часа, но для самых нетерпеливых в описании к видео на ютубе есть таймкоды! 😉

Рубрики
Life

Подкасты, которые я слушаю, v2019

Всем привет! Ох, как давно я не писал ничего в блоге! А тут вот и повод нашёлся. Как некоторые из вас знают, я уже примерно 6 лет записываю подкасты (SDCast & RadioJS), а слушаю их и того больше. У меня часто спрашивают, какие же подкасты я слушаю сам. Примерно 5 лет назад мой список выглядет вот так. Но с тех пор многое изменилось.

В этот раз я решил разбить подкасты на группы с некоторыми комментариями, вдруг они покажутся кому-то полезными.

Рубрики
Разработка

WAMP как основа композитных SOA-приложений и его имплементация на Lua

Всем привет! Ох и давно я ничего не писал в блог — надо это как-то исправлять! А вот тут и повод как раз есть 🙂
В этом году, я, неожиданно, выступил на конференции Highload++, которая проходила 7−8 ноября в Сколково. На конференции я рассказал про протокол WAMP и способы его применения.

WAMP расшифровывается как Web Application Messaging Protocol. Это открытый протокол, реализующий два паттерна в рамках одного протокола: RPC и Publish/Subscribe. Как мне кажется, это отличная платформа для сферы Internet of Things, Smart City и вообще бизнес-приложений с большим количеством различных компонентов и сервисов.

Как активный участник группы разработки самого протокола, а также автор нескольких реализаций на JavaScript (Wampy.js) и Lua (Wiola, Loowy), я рассказал про сам протокол WAMP, его основные концепции и парадигмы, возможные сферы применения, реальные примеры использования, а также про имплементацию WAMP-роутера на базе Nginx/Lua и клиента на чистом Lua, некоторые особенности реализации и публикации.

Рубрики
Разработка

Прозрачная авторизация сервисов в гетерогенной среде на базе Nginx/LUA

Я давно уже полюбил связку Nginx и LUA. И сегодня хочу рассказать про один вариант использования этих инструментов.

Суть задачи/проблемы:
Представьте, что в вашей информационной системе есть набор различных сервисов, с которыми могут взаимодействовать клиентские приложения. Конечно же, доступ к системе и к сервисам, в частности, разрешается после авторизации.
Все сервисы общаются с клиентами по разным протоколам (HTTP REST API, SOAP, XML-RPC, WebSocket, WAMP, GET/POST запросы и так далее) и даже написаны на разных языках.

Вопрос: как минимальными усилиями сделать, чтобы доступ к любым сервисам был возможен только авторизованным пользователям?

Рубрики
MacOS

Избавляемся от надоедливого сообщения «Accept incoming network connections» для приложений в Mac OS X

Периодически, после частичного обновления приложениями самих себя, или изменений со стороны пользователя, например, изменение иконки, при запуске приложения, которое работает с сетью, Mac OS X начинает каждый раз спрашивать о разрешении на входящие соединения, при этом не запоминая наш выбор. Связано это с тем, что после любого частичного изменения приложения, сигнатура кода, хранящегося в подписанном приложении, начинает отличаться от реального. И это вызывает беспокойство у операционки 🙂 У меня такое возникает, например, когда IntelliJ IDEA частично обновляется. Для того, чтобы избавиться от этого диалога, есть несколько решений:

  • Удалить измененное приложение, скачать и установить заново подписанное приложение от поставщика.
  • Самому подписать измененное приложение, чтобы сигнатура соответствовала реальным файлам.

Если с первым вариантом все понятно. То вот как делается второй:

kostik@GrayWolf: ~> sudo codesign --force --sign - /Applications/MyUntrustedApplication.app/

Для подписи можно использовать какой-либо сертификат, или же, в простейшем случае, подписать конкретный экземпляр приложения, указав «-» после параметра —sign.

Рубрики
Разработка

WAMP как основа композитных SOA-приложений

Как вы, возможно, заметили, мне настолько нравится протокол WAMP, что я даже написал пару его имплементаций на JS и LUA. Но сейчас мне хочется порассуждать на тему использования WAMP в качестве основы для информационных систем (далее ИС), построенных по принципу SOA.

Для начала, скажу пару слов про SOA для тех, кто не очень знаком с этим термином. Итак, SOA, Service Oriented Architecture, или же по-русски сервисно-ориентированная архитектура — это не фреймворк, не протокол, не приложение, а архитектурный подход к разработке программного обеспечения, который основывается на следующих принципах:

  • Сервисно-ориентированность. Основной единицей является сервис. Это логически обособленный программный модуль, который выполняет конкретную повторяющуюся бизнес-функцию из всего бизнес-процесса предприятия. Например, сервис отправки емейл-уведомлений.
  • Сервисные контракты (интерфейсы). Доступ к сервисам осуществляется через четко определенные интерфейсы, которые являются платформо и языково независимыми и используют открытые стандарты.
  • Слабое связывание компонентов. Сервисы могут быть связаны между собой только по средством интерфейсов, и все что сервисы знают про друг друга — это то, что они есть.
  • Абстракция. Сервисы для внешнего мира выглядят как черные ящики, то есть они скрывают свою внутреннюю реализацию и предоставляют только интерфейсы для обращений к себе из вне.
  • Автономность. Еще раз повторюсь, что каждый сервис — это логически завершенная единица, и каждый сервис выполняет заложенную в него бизнес-логику не прибегая к какой-либо помощи из вне. Это не исключает возможность обращения сервиса к другим сервисам, так как это может быть частью этой самой бизнес-логики.
  • Повторное использование. Нет смысла делать сервис, который выполняет одну маленькую бизнес-функцию, которая используется в каком-то одном конкретном месте. В сервисы имеет смысл выносить какие-то бизнес-функции, которые могут быть задействованы в разных бизнес-процессах. Тот же сервис оповещения по емейл может использоваться как для оповещения клиентов, так и менеджеров.
  • Statelessness. Сервисы не хранят состояния между вызовами.
  • Обнаружение сервисов. О каждом сервисе, входящем в состав ИС, известно его общедоступное месторасположение и интерфейс взаимодействия. Так же сюда стоит отнести возможность легкого динамического подключения сервисов во время работы ИС.
Рубрики
Life

Сравнение студийных микрофонов Shure, Rode, Октава

5 micsСалют! Некоторое время назад у меня сломался мой микрофон Behringer B-1. Починить его почти нереально и, что самое главное, экономически не выгодно, так что я принялся искать замену. В итоге, после долгих и мучительных изучений форумов, просмотра и прослушивания роликов, общения с знающими товарищами, выбор был сделан, но, пользуясь случаем, я потестировал еще несколько микрофонов. Так что представляю вашему вниманию небольшой любительский тест. Возможно кому-то это поможет в выборе.