Рубрики
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. Починить его почти нереально и, что самое главное, экономически не выгодно, так что я принялся искать замену. В итоге, после долгих и мучительных изучений форумов, просмотра и прослушивания роликов, общения с знающими товарищами, выбор был сделан, но, пользуясь случаем, я потестировал еще несколько микрофонов. Так что представляю вашему вниманию небольшой любительский тест. Возможно кому-то это поможет в выборе.
Рубрики
Разработка

Философское: from __future__ import web.framework.* или где искать идеальный фреймворк?

JS_FrameworksВ последнее время обсуждали с ребятами текущее положение дел в веб-разработке, современные фреймворки и, конечно же, что будет в будущем. Поэтому решил оформить свои рассуждения на эту тему в виде поста. А спустя сколько-нибудь лет посмотрим, как оно будет на самом деле.