Несколько лет назад я разрабатывал для одного большого телекома новую информационную систему. Нам приходилось взаимодействовать со всё нарастающим количеством веб-сервисов, открываемых более старыми системами или бизнес-партнёрами. Как вы понимаете, мы получили добрую порцию SOAP-ада. Заумные WSDL, несовместимые библиотеки, странные баги… Где только возможно мы старались продвинуть — и использовать — простые RPC-протоколы: XMLRPC или JSONRPC.
User
Поняв Docker
Если вы еще никогда не поддерживали чужие приложения, или пусть даже свои, но таких размеров, что уже не помещаются в одной голове, то прошу вас расслабиться, откинуться на спинку кресла и воспринимать прочитанное как поучительную сказку с надуманными проблемами, забавным сюжетом и очевидным счастливым концом. В противном случае, если реальный боевой опыт у вас имеется, добро пожаловать в ад, но с IDDQD и IDKFA.
К вашему сведению! В этой статье мы рассматриваем само явление docker-контейнеров, а не составляем список микросервисов, которые гнездятся внутри. Этим мы займемся в следующей серии, во имя справедливости!
UPDATE: пришлось заменить «докер» на «docker», иначе статья не ищется. Заранее прошу прощения за все «docker'ы» в тексте. Селяви.
Что мы имеем сегодня
- Зоопарк дубовых VPS-хостингов.
- Дорогие IaaS и PaaS с гарантированным vendor lock in.
- Уникальные сервера-снежинки.
- Ворох устаревших зависимостей на неподдерживаемой операционке.
- Скрытые связи частей приложения.
- Незаменимый админ полубог на скейтборде.
- Радуга окружений: development, testing, integration, staging, production.
- Генерация конфигов для системы управления конфигами.
- Feature flagging.
Реализация Single Sign On в Symfony2 приложении
Что такое Single Sign On?
Single Sign On — это технология, с помощью которой пользователь, будучи аутентифицированным на удостоверяющем центре (далее Identity Provider, IdP), будет автоматически аутентифицирован на другом сервисе (далее Service Provider, SP или Consumer[1-N]) этой компании.
Механизм Single Sign On используют такие сайты, как ХабраХабр, Yandex, Google. Приемущества такого подхода к аутентификации пользователей очевидны:
- Пользователь вводит пароль только 1 раз
- Или вовсе не вводит пароль на IdP, если там был использован вход через социальную сеть или с использованием OpenID
- Автоматически аутентифицируется на всех проектах компании
- Данные пользователя могут плавать между сервисами от IdP до SP прозрачно для пользователя
PostgreSQL vs MySQL
В преддверии своего доклада на конференции PGCONF.RUSSIA 2015 я поделюсь некоторыми наблюдениями о важных различиях между СУБД MySQL и PostgreSQL. Этот материал будет полезен всем тем, кого уже не устраивают возможности и особенности MySQL, а также тем, кто делает первые шаги в Postgres. Конечно, не стоит рассматривать этот пост как исчерпывающий список различий, но для принятия решения в пользу той или иной СУБД его будет вполне достаточно.
Обзор курьерских служб для интернет-магазина — 2
Для написания первой статьи я посещал сайты компаний и собирал информацию оттуда. В этот раз я решил пойти другим путем и дать самим компаниям возможность рассказать о себе. К сожалению, попытка провалилась — ответило только 4 компании из 15. Честь им и хвала — Навигатор-Курьер, Аксиомус, О-Курьер, ЮниЭкспресс .
Восстановление данных. Квалификация и компании
осторожны! От ваших действий может зависеть их судьба.
В настоящее время на рынке существует огромное количество компаний, так или
иначе занимающихся восстановлением информации. Человек, который впервые
столкнулся с проблемой потери данных, зачастую просто не знает, что ему делать
дальше и к кому обратиться. Кто-то о компании узнает из рекламы, кто-то
обращается по совету знакомых, кто-то просто идет в ближайшей сервис или
относит знакомому компьютерщику. Чтобы не ошибиться в выборе, и не потерять
свои данные навсегда, необходимо удостовериться, что выбранная вами компания
может оказать квалифицированную помощь, и отвечает за качество своей работы.
Особенности и критерии оценки качества услуг, которые должен знать каждый:
Разработка привлекательных реалистичных пользовательских интерфейсов
Как не стать спамером со своей уютной рассылочкой
Пользователь когда-то подписался на рассылку, но уже забыл когда, и главное зачем. Теперь ежедневно к нему падает спам, а по собственному опыту он знает, для того чтобы отписаться нужно зайти по ссылке свой профиль, найти и снять там какую-то галку а главное, помнить свой логин и пароль на давно забытом им сайте.
Его действия? «В спам!»
А по другую сторону баррикад находитесь Вы с вашей уютненькой подписочкой, полезной информацией и очень удобной системой отписки, о которой пользователь так никогда и не узнает.
И вот, с десяток таких «отписок» и гугл будет удобно отсортировывать ваши рассылки в папочку Спам (584), у ВСЕХ ваших подписчиков.
Однако многие из нас уже успели заметить: некоторые письма в Gmail при попытке отметить их «В спам!» САМИ предлагают отписаться от рассылки в один клик.
Эта фича была введена google более года назад, но лишь единицы рассылок научились ей пользоваться. И не удивительно. В рекомендациях по осуществлению массовых рассылок, лишь косвенно упоминается о том, что Вам нужно сделать.
А сделать нужно не многое.
2 года с Nintendo Wii
Люди, у которых есть друзья, покупают Nintendo Wii,
у которых есть друзья в интернете — XBox 360,
а остальные выбирают PlayStation 3.
(из интернетов)
В далеком 2008-ом году я стал счастливым обладателем игровой консоли Nintendo Wii. Играть я уже тогда не играл (на компьютере), с геймпадом перед телевизором тем более не вариант — заботы не те, а вот помахать иногда пультом стало интересно. Купил приставку, несколько игр, дополнительный пульт с нунчакой и несколько аксессуаров. Периодами играл в запой, периодами наоборот — приставка пылилась; несколько раз гастролировала — играли в компании друзей, пару раз обращался в сервис, докупал и получал в подарок игры и аксессуары, недавно наконец-то вышел в интернет. Короче говоря, после долгих размышлений я решил, что мне есть что рассказать о реальном положении дел.
Курьерские службы с кассовым обслуживанием
Так как в планах открытие своего интернет-магазина с не особо габаритными товарами, решился озадачить себя поиском курьерской службы (КС) с кассовым обслуживанием.
Многие знают что такое открыть интернет-магазин и как заставит весь этот механизм как следует работать. Давайте рассмотрим один из компонентов успешно работающего небольшого интернет-магазина, владелец которого уже не справляется самостоятельно с развозом заказов, но и не готов на создание собственной курьерской службы.
В этой статье мы рассмотрим плюсы и минусы курьерских служб, а также пробежимся по их тарифам и условиям работы.
VLC: Стрим и Стрим-Сервер #2
В этой части мы рассмотрим «Простой Стриминг» через GUI для домохозяек, а для примера нам послужат ситуации:
1. Когда мы выступаем в роли локального транслятора, для людей с лимитированным интернетом, с отключенным интернетом, или для тех, кто считается с вашим вкусом и хочет смотреть то, что вы им порекомендуете.
3. Если вы захотите передавать видео со своей вебкамеры, просто цифровой камеры и любых других подобных устройств, через DirectShow.
Краткий обзор лучших средств для построения графиков и диаграмм.
Open Flash Chart – FLASH компонент для построения диаграмм. Он имеет много настроек и легко взаемодействует с PHP, Perl, Python, Java, Ruby on Rails, and .Net. Также может читать данные с .txt файлов.
Заменяем стандартный элемент input file
Пишем Magic 8-Ball для Android
По мотивам поста Шарик, отвечающий на вопросы
В данной статье мы напишем локализованный Magic 8-Ball для Android, которому можно будет задать вопрос, потрясти и получить ответ. Небольшая вибрация оповестит нас о том, что тряски достаточно.
Статья рассчитана на тех, кто уже написал хелловорлд под Android и собирается идти дальше в этом направлении. Полная версия исходного кода лежит на google code. Там же можно попробовать файл magic-8-ball 1.1.apk во вкладке download.
Для успешной работы нам будут нужны установленные jdk, android sdk, eclipse и ADT плагин. Как это сделать, доступно написано здесь.
Простой RSS-клиент на Android
Android – операционная система для мобильных устройств от Google.
Система очень перспективная и динамично развивается. Базовые навыки разработки будут совсем не лишними.
Осторожно много скриншотов!
Ускоряем PHP (с ReactPHP)
Реализация REST API на Symfony2: правильный путь
Создание REST API это нелегкая задача. Нет, серьезно! Если вы хотите написать API правильно, вам придется о многом подумать, решить, быть прагматиком, или API маньяком. REST это не только GET, POST, PUT и Delete. На практике, у вас могут быть взаимодействия между ресурсами, нужно перемещать ресурсы куда-то еще (к примеру внутри дерева), или вы захотите получить конкретное значение ресурса.
В данной статье собрано все, чему я научился реализуя различные API сервисы, используя для этих целей Symfony2, FOSRestBundle, NelmioApiDocBundle и Propel. К примеру сделаем API для работы с пользователями.
Руководство по использованию Dependency Injection в Symfony2
Для упрощения статьи сократим число страниц сайта до двух:
- Добавление нового поста (/add)
- Отображение списка всех постов (/list)
Финальная архитектура приложения будет выглядеть следующим образом:
Использование аннотаций в PHP 5.4 для АОП и не только
Для PHP существует несколько реализаций этой парадигмы программирования. К сожалению, среди них мне не удалось найти решение, которое бы можно было легко внедрить в уже существующий большой проект и удовлетворяющее эстетическим требованиям к коду.
Технологии реализации AOP в PHP
Волшебные методы
Самое простое решение — использование «волшебных методов» __call и __callStatic. Эти методы вызываются (если они определены в классе) при обращении к несуществующему методу класса. В качестве аргументов они получают имя несуществующего метода и переданные ему параметры.
В данном случае, приложение строится таким образом, что реальные методы имеют имя отличное от имени указанном в вызывающих их конструкциях. Сквозной функционал реализуется в «волшебных методах», которые, при необходимости, передают управление реальным методам классов.
Плюсы:
- Легко начать использовать;
- Реализация не требует дополнительных модулей (нативный PHP).
Минусы:
- Не удобно использовать при большом количестве сквозного функционала;
- Т.к. имена методов в определении и в вызовах различаются, создаются трудности при использовании автодополнения кода в IDE.
Предварительный разбор кода
Этот способ подразумевает наличие посредника, позволяющего использовать «синтаксический сахар». Необходимый функционал описывается вспомогательным синтаксисом (xml/json конфигурация, дополнительные php-классы или аннотации в коде), который разбирается посредником. На основе разбора генерируется результирующий код, который содержит вставки сквозного функционала в необходимые места.
Плюсы:
- Работает быстро, т.к. на выходе это обычный PHP-код, просто сгенерированный за Вас автоматически.
Минусы:
- Сложно внедрить в большой проект;
- Требуется разбор кода после каждого изменения, для внесения корректировок в результирующий код.
Замена кода приложения во время выполнения
Переезд проекта с SVN на Git
Много лет подряд в качестве системы контроля версий для большого количества проектов использовали только SVN. Но наступил момент, когда количество разработчиков на одном из проектов заметно увеличилось, проект уже запущен в работу, и нужно как активно разрабатывать параллельно несколько фич, так и фиксить уже имеющиеся баги в оперативном режиме. Единый trunk в SVN не позволяет этого делать, а организация бранчей в нем же превращает жизнь разработчиков в ад. Поэтому было принято решение о переезде этого проекта с SVN на Git.
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity