Перейти к содержимому

Последние записи

1
Мар

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

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

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

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

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

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

3
Фев

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

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

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

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

ПодробнееRead more

2
Фев

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

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

ПодробнееRead more

24
Окт

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

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

23
Сен

Как я сдавал экзамен на OCP/OCE. Часть следующая: Oracle Real Application Clusters 11g and Grid Infrastructure Administrator Certified Expert

Oracle Real Application Cluster 11g Grid Infrastructure Admin Что-то давно не писал я заметок про сдачу оракловых экзаменов. А меж тем, совсем недавно я получил очередную сертификацию. И, пока свежы ощущения и воспоминания, надо написать о том, как это было. Поехали!

В этот раз, я решил сдать экзамен по администрированию оракловых кластеров 11g, потому как тема интересная, да и у меня уже имелся некоторый опыт в этой области (несколько боевых кластеров в продакшне). Что ж, цель поставлена.
ПодробнееRead more

16
Сен

Пара слов про WAMP

wamp-slides-logo Ох, что-то давно я не писал ничего в блог… Надо это исправлять! Так вот, летом, 17 июля, я выступал на 13-й встрече разработчиков «MoscowJS» с докладом «Пара слов про WAMP». К сожалению с видео возникли некоторые накладки, и пока нет времени попытаться все исправить, чтобы его можно было посмотреть. Поэтому решил выложить хотя бы слайды с доклада. Возможно кому-то пригодится и станет что-то яснее и понятнее относительно протокола WAMP.
ПодробнееRead more

12
Авг

RadioJS — подкаст о веб-разработке, фронтенде и client-side

radiojs Что-то давно я ничего не писал в блог. А ведь меж тем, мы вместе с Мишей Башкировым и Андреем Саломатиным запустили новый подкаст «RadioJS». Он посвящен разным аспектам веб-разработки, таким как технологии, протоколы, фреймворки, инструменты и библиотеки. В каждом выпуске мы обсуждаем самые интересные на наш взгляд новости последнего времени. Периодически приглашаем гостей поделиться опытом.

У подкаста есть свой дом: radioJS.ru. Там можно прочитать описания всех выпусков, послушать их, а при желании и скачать, а так же высказать свое мнение в комментариях. Подкаст, конечно же, доступен как в виде RSS, так и в iTunes.

ПодробнееRead more

25
Июн

Вы все еще пишете ТЗ в Word? — Тогда мы идем к Вам!

По долгу службы, с некоторых пор, пришлось заняться написанием ТЗ на разработку. Когда передо мной только встала такая задача, как оказалось, все делали это в MS Word. Я по началу тоже попробовал писать ТЗ в доке, но не выдержал и недели. Уж не знаю, или Word — это зло, или я просто не умею его готовить, но факт остается фактом, бОльшую часть времени я, в силу своей аккуратности и щепетильности, занимался форматированием: то отступы в списках разъедутся, то межстрочные интервалы в разных местах разные, а уж про разрешение конфликтов совместного редактирования — я вообще молчу! Да и ТЗ предназначались для разработчиков, которые любят простой текст, системы контроля версий и сидят на разных операционных системах. И я озадачился поиском более подходящих инструментов. И вот что у меня получилось.

ПодробнееRead more

8
Апр

Wiola — реализация WAMP на Lua

В продолжение темы про Wampy.js, мою JS-библиотечку, реализующую клиент WAMP, я подумал, что неплохо бы написать и серверную реализацию WAMP, потому как сейчас единственная реализация роутера WAMP — это AutobahnPython. Так появилась на свет Wiola — реализация WAMP-роутера на Lua на базе nginx/openresty и модулей к ним для работы с Lua.
ПодробнееRead more

11
Фев

Wampy.js. Simple WebSocket Application Messaging Protocol Javascript client-side implementation

В одном из своих проектов мне нужно было реализовать клиент-серверное общение через веб-сокеты. Придумывать свой формат JSON-сообщений как-то не хотелось, поэтому я решил заюзать WAMP. WAMP расшифровывается как WebSocket Application Messaging Protocol, не путать с Windows/Apache/MySQL/PHP :-). Это уже готовая спецификация, в рамках которой описано использование RPC и Publish/Subscribe. На сайте описана первая версия этого протокола. Но уже в ближайшем будущем появится вторая, в которой много интересных плюшек. Более того, уже есть некоторое количество реализаций как серверной, так и клиентской стороны. Но, что-то, единственная реализация браузерной клиентской части на JavaScript, а именно AutobahnJS, меня как-то не зацепила. Поэтому я, не долго думая, решил написать свой велосипед. В результате на свет появилась Wampy.js.

ПодробнееRead more