Как стать автором
Обновить
9
0

Product Manager

Отправить сообщение

Плюсы микросервисной архитектуры

Время на прочтение3 мин
Количество просмотров38K
Знакомство с микросервисной архитектурой серьезно изменило мой подход к разработке. В этой публикации я расскажу о различных аспектах использования микросервисов. Для иллюстрации некоторых из них буду использовать архитектуру проекта по аренде недвижимости.

Подопытное приложение
Клиент просматривает список доступных квартир и бронирует их, также он может размещать на сервисе свои квартиры.

При классическом подходе для построения чаще всего выбирается фреймворк и внутри него реализуются компоненты. В случае с микросервисами для каждого компонента строится отдельное приложение и подбирается свой набор инструментов. Компоненты чаще всего взаимодействуют через REST API.
image
Компоненты: C — данные по квартирам (ядро), 1 — бронирование, 2 — оплата, 3 — логирование броней, 4 — размещение квартир, 5 — администрирование контента.

Обратите внимание, что перед созданием микросервисного приложения придется как следует продумать бизнес-логику и разбить приложение на самодостаточные компоненты. А теперь поговорим о том, почему микросервисы это круто.
Читать дальше →
Всего голосов 33: ↑21 и ↓12+9
Комментарии41

Сборка Кубика Рубика генетическим алгоритмом online без смс

Время на прочтение9 мин
Количество просмотров53K


В то время пока я собирался на ланч, мой ко-воркер Дейв окликнул меня: «Хэй, Алекс, а ты не хочешь заниматься улучшениями навыков своего программирования?». Я задумался. Это было интересное предложение, но я склонялся ответить отказом: «Сейчас я занимаюсь развитем навыков говорения на языках, дружище!». Ладно, шучу. Утро началось с того, что я добрался до почты и заполучил в руки копеечный китайский Кубик, случайно заказанный на али. К обеду я проштудировал мануал сборки и обновил мышечную память, а к вечеру пришло осознание, что я наигрался. Будущее кубика было ясным: он будет пылиться на полке, раз или два в неделю может быть я буду его собирать, чтобы привести мысли в порядок или отвлечься, но не более того. Соревнование в механической скорости сборки? Non merci, уж лучше скворечники делать…

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

Итак, я постепенно формировал для себя задачу. В итоге, формулируется она так: за кратчайшее реальное время необходимо написать решалку для Кубика Рубика.

Что мы знаем о Кубике? Число его состояний описывается как
(8! × 3^7) × (12! × 2^11)/2 = 43 252 003 274 489 856 000
.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии14

Разбор задач 2-го квалификационного раунда Russian Code Cup 2015

Время на прочтение5 мин
Количество просмотров13K


В субботу 25 апреля прошел второй квалификационный раунд Russian Code Cup 2015. 3516 программистов решали задачи в течение двух часов, из них хотя бы одно правильное решение прислали 458 участников.

Первым за 4 минуты и 9 секунд решил задачу A (Турникеты в метро) Машарабов Александр (map). Задачу B (Игра) за 8:48 решил Дубленных Денис (Stigius), задачу C (Палочки и шарниры) за 18:08 решил Нигматуллин Нияз (niyaz.nigmatullin). Задачу D (Числа Фибоначчи) за 1 час 5 минут и 21 секунду решил Лунев Антон (Anton_Lunyov). А последнюю задачу E (Телепорты) за 1 час 44 минуты и 55 секунд решил Кунявский Павел (PavelKunyavskiy), который занял 1 место в рейтинге по итогам раунда. Последняя успешная попытка совершена Альбертом Саакяном за 4 секунды до конца соревнования. Все пять задач сдал только Павел Куявский.

Всего участники отправили на проверку 4287 решений, на С++ их было 3145, на Java — 613. Отметим, что из 2166 решений, сданных на GNU C++, 1218 решений использует С++ 11 стандарта, а остальные все еще не применяют новые возможности языка. Правильных решений на этот раз всего 913, из них на С++ — 726, на Java — 141.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии11

Управление API и SOA

Время на прочтение9 мин
Количество просмотров17K
Достижение начального успеха для Сервис-ориентированной Архитектуры (Service Oriented Architecture, SOA) определяется:
  • созданием слабосвязанных соединений «потребитель-поставщик»,
  • соблюдение принципа разделения ответственностей между потребителем и поставщиком,
  • публикация набора повторно используемых, общих сервисов
  • и обеспечение того, чтобы потребители приняли и стали использовать сервис.

Множество команд разработчиков создают и используют сервисы, но до сих пор идет мучительный подбор архитектуры, при которой сервисы будут широко использованы, с потенциалом для повторного использования внутренними командами разработки. Вместо создания согласованной сервисной архитектуры и демонстрации множественного использования одних и тех же сервисов, разработчики вновь и вновь не нарочно создают «Просто Набор Веб Сервисов» (Just a Bunch of Web Services (JBOWS)) или «Просто Набор REST Сервисов» (Just a Bunch of REST Services (JBORS)).

Простое приложение чаще всего работает с неким сервисом и спагетти-сетью конечных точек, поставщиков данных этого сервиса, которые переплетены связями один-к-одному. Многие команды в этом случае сходятся во мнении что фокус на SOA и REST не то чтобы помогал в решении вопросов гибкости решений. Скорее просто происходит подмена набора IT инструментов, форматов сообщений и протоколов.

Управление SOA, API, и приложением может стать мостом между этими концепциями и улучшить архитектурную согласованность всего решения.

Сервисы, API и архитектура


Когда вы будете решать, что использовать как лучшие практики для сервис-ориентированной архитектуры, определять дизайн RESTful сервисов, когда будете формировать план по управлению ими, четко определите, как ваши сервисы и API вместе будут укладываться в общую архитектурную картину.
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии2

Категория: суть композиции

Время на прочтение7 мин
Количество просмотров61K
Это вторая статья в цикле «Теория категорий для программистов».

Категория — очень простая концепция.

Категория состоит из объектов и стрелок, которые направлены между ними. Поэтому, категории так легко представить графически. Объект можно нарисовать в виде круга или точки, а стрелки — просто стрелки между ними. (Просто для разнообразия, я буду время от времени рисовать объекты, как поросят а стрелки, как фейерверки.) Но суть категории — композиция. Или, если вам больше нравится, суть композиции — категория. Стрелки компонуются так, что если у вас есть стрелка от объекта А к объекту B, и еще одна стрелка из объекта B в C, то должна быть стрелка, — их композиция, — от А до С.

image
Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии128

Категория Hask

Время на прочтение7 мин
Количество просмотров16K

Вступление


В этой небольшой статье я расскажу о теории категорий в контексте системы типов языка Haskell. Никакой зауми, никаких уловок – постараюсь объяснять всё наглядно. Я хочу показать тесную связь языка программирования с математикой, чтобы спровоцировать у читателя осознание одного, через другое и наоборот.

Не хотелось бы повторять перевод на эту тему, который уже был на хабре: Монады с точки зрения теории категорий, но для целостности статьи, я всё же буду давать основные определения. При этом, в отличие от той статьи, я не хочу делать основной упор на математику.

Эта статья во многом повторяет (в том числе заимствует иллюстрации) раздел из английской Haskell Wikibook, но тем не менее не является непосредственным переводом.

Что такое категория?



Примеры


Для наглядности рассмотрим сначала пару картинок изображающих простые категории. На них есть красные кружочки и стрелки:

Красные кружочки изображают «объекты», а стрелки – «морфизмы».

Я хочу привести один наглядный пример из реальной жизни, который даст какое-то интуитивное представление о природе объектов и морфизмов:

Можно считать города «объектами», а перемещения между городами – «морфизмами». Например, можно представить себе карту авиарейсов (как-то не нашёл я удачную картинку) или карту железных дорог – они будут похожи на картинки выше, только сложнее. Следует обратить внимание на два момента, которые кажутся в реальности само собой разумеющимися, но для дальнейшего имеют важное значение:
  • Бывает, что из одного города в другой никак не попасть поездом или самолётом – между этими городами нет морфизмов.
  • Если мы перемещаемся в пределах одного и того же города, то это тоже морфизм – мы как бы путешествуем из города в него же.
  • Если из Санкт-Петербурга есть поезд до Москвы, а из Москвы есть авиарейс в Амстердам, то мы можем купить билет на поезд и билет на самолёт, “скомбинировать” их и таким образом попасть из Санкт-Петербурга в Амстердам – то есть можно на нашей карте нарисовать стрелку от Санкт-Петербурга до Амстердама изображающую этот скомбинированный морфизм.
Надеюсь, с этим примером всё понятно. А теперь немного формализма для чёткости.
Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии101

N+4 полезных книг

Время на прочтение5 мин
Количество просмотров81K


Привет! В посте блиц-обзор книг, которые будут полезны IT-специалистам, бизнесменам и тем, кто просто любит читать интересные технические вещи. Рядом с каждой – пояснения, чем оно может быть нужно. Этот обзор, в отличие от других ежегодных, более технически-прикладной.

Начнём со «Справочника по инженерной психологии» Вудсона и Коновера.

«Справочник по инженерной психологии» — Вудсон, Коновер


Книга о том, какие бывают кнопки и рычаги, как на них нажимают люди. И как проектировать так, чтобы люди работали с системой эффективно. Радует тем, что рассматривает пользователя как базовую систему ввода-вывода, замеряя его среднюю скорость передачи информации (около 20 бит в секунду на кнопочные интерфейсы), скорости ввода и вывода.
Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии8

Плати авторам, а не копирастам

Время на прочтение2 мин
Количество просмотров2.5K
Чтобы победить неповоротливых копирастических динозавров, недостаточно акций протеста вроде недавней забастовки англоязычной Википедии, направленной против законопректов SOPA и PIPA. Необходимо создавать и поддерживать бизнес-модели, способные обеспечить достойное вознаграждение авторам даже при свободном распространении их произведений. Можно долго спорить о том, как должна выглядеть идеальная модель. А можно взять, и прямо сейчас начать использовать одну из схем, позволяющих платить непосредственно авторам. Может быть, она не идеальна, но она уже работает, и будет работать тем лучше, чем больше людей ею воспользуются. Я говорю о системе социальных микроплатежей Flattr. О ней уже пару раз писали на Хабре. Её основал один из создателей The Pirate Bay Петер Сунде
Читать дальше →
Всего голосов 156: ↑133 и ↓23+110
Комментарии77

Великая речь великого человека

Время на прочтение1 мин
Количество просмотров6K
Это был его первый звуковой фильм. Его личный протест, никто не соглашался дать ему денег на картину, разоблачающую Гитлера как сумасшедшего тирана. Гитлер по мнению журнала «The Times», был Человеком года и великим политиком.
Тогда Чаплин снял фильм «Великий Диктатор» на свои личные средства.
Фильм, послужившей одной из причин его изгнаия из США.
Фильм, который посмотрел Гитлер и объявил Чаплина своим личным врагом.

И речь, которая остается актуальной и по сей день, не смотря на то, что уже прошло больше 70-ти лет.
3.809.000 — просмотров у оригинального ролика, который уже перевели на 22 различных языка.
Вот русские субтитры к этому ролику:


Почему этот ролик на хабре? Это первое, что пришло к вам в голову после просмотра?
Upd. Огромное спасибо всем, кто гадит мне в карму и угрожает в личке.
Upd2. Это первый случай на хабре, пост не по it? Нет.
*пруф1 freetonik Doug 'QualiaSoup' Непредубежденность
*пруф2 муравьи зомби
Читать дальше →
Всего голосов 173: ↑95 и ↓78+17
Комментарии135

Первый 5MB диск

Время на прочтение1 мин
Количество просмотров33K
Вот как выглядел первый жесткий диск размером 5 мегабайт 50 лет тому назад. Без автопогрузчика его было не поднять:

5 MB HDD

Читать дальше →
Всего голосов 89: ↑82 и ↓7+75
Комментарии143

Карманный роутер Sapido RB-1632

Время на прочтение2 мин
Количество просмотров30K


Не могу не поделиться восторгом от недавно купленного устройства.

Роутер, несмотря на свои размеры, имеет множество функций. Помимо стандартных Ethernet -> Wi-Fi, может выступать wifi-клиентом, имеет USB-хост для подключения модема и смартфонов, может одновременно создавать несколько Wi-Fi сетей с разными настройками и прочее. Питается при помощи USB либо от адаптера.
Читать дальше →
Всего голосов 91: ↑82 и ↓9+73
Комментарии45

Диагностика неисправностей блока питания с помощью мультиметра

Время на прочтение4 мин
Количество просмотров344K
Недавно понадобилось произвести диагностику питания, для того чтобы понять по какой причине не запускается машина. К сожалению, в интернете оказалось мало годных статей на эту тему, поэтому пришлось самому лезть в даташиты.
Эта статья является выжимкой из моих изысканий и надеюсь поможет кому-нибудь, когда им придется заниматься тем же самым.

Дисклеймер номер раз: Данная статья относится только к обычным блокам питания стандарта ATX, она не относится к проприетарным стандартам блоков (например как у старыx рабочиx станциях DELL или SUN), использующим другую распиновку ATX-коннектора. Внимательно сверьтесь со схемой и убедитесь в том, что ваш блок питания является стандартным прежде чем проводить диагностику, во избежании причинения вреда вашему компьютеру.

Дисклеймер номер два: Вы должны понимать что вы делаете и соблюдать технику безопасности, в том числе электростатической (в т.ч. работать в антистатическом браслете). Автор не несет ответственности за порчу оборудования или вред здоровью вследствие несоблюдения или незнания техники безопасности и принципов работы устройства.


Перейдем к теории:

Стандарт ATX имеет 2 версии — 1.X и 2.X, имеющие 20 и 24-пиновые коннекторы соответственною, вторая версия имеет 24-x 4 дополнительных пина, удлиняя тем самым стандартный коннектор на 2 секции таким образом:
image

Прежде чем мы начнем, расскажу про “правила большого пальца” по отношению к неисправностям:
1) Проблемную материнскую плату легче заменить чем починить, это крайне сложная и многослойная схема, в которой разве что можно заменить пару конденсаторов, а обычно это проблемы не решает.
2) Если вы не уверены в том что вы делаете, то не делайте этого.

Читать дальше →
Всего голосов 135: ↑130 и ↓5+125
Комментарии58

Чеклист при подготовке презентации

Время на прочтение3 мин
Количество просмотров7.1K
В последнее время я наблюдал несколько десятков презентаций, которые начинались вот так:

— Мы делаем систему управления электронным обучением…

— Мы провели исследование поведения посетителей на нашем сайте…

— Наша компания была основана более ста лет назад…

Это просто удивительно как люди любят так поступать. Они с первых секунд садятся на уши аудитории рассказом про себя:

— Мы предлагаем SAAS-решение…

— Наши технологии…

И мое любимое:

— Начну рассказ с того, кто мы такие…

Почему все так уверены, что именно это в первую очередь интересует слушателей? Единственное что выступающий гарантированно получит в таком выступлении — это претензии к себе лично и своей компании.

Я видел как один из директоров Microsoft схлопотал громкое улюлюканье, а представитель Ростелекома — едкий троллинг из зала только потому, что выступили по этому шаблону.

Почему каждый раз это происходит?

Читать дальше →
Всего голосов 75: ↑68 и ↓7+61
Комментарии36

Универсальная читалка электронных книг с монитора компьютера и с мобильных устройств

Время на прочтение1 мин
Количество просмотров20K
Коллеги, доброго дня!
Представляю на Ваш суд финальную версию сервиса чтения и хранения электронных книг enreader.com.

Суть сервиса простая:
1. Грузите книгу на сервер (поддерживаем EPUB | MOBI | LIT | FB2 | DJVU | RTF | DOC | TXT | PDF;
2. Читаете книгу на десктопе, на айфоне-айпаде-айподе, на андроид устройстве, на Blackberry или на любом другом телефоне если на нем есть Opera Mini.

Где бы Вы ни читали книгу, она всегда откроется там где закрывалась в последний раз (в т.ч. на другом устройстве). Закладки тоже одинаковые на всех устройствах.

Со времени последнего поста о нашем сервисе изменилось вот что:
Читать дальше →
Всего голосов 98: ↑94 и ↓4+90
Комментарии100

Шоколадные наушники

Время на прочтение3 мин
Количество просмотров8.7K
Всё хорошее в жизни заканчивается. Но, моё знакомство с наушниками Fischer Audio — приятное исключение из этого правила.



На этот раз мне в руки попали приятные для глаза и уха наушники FA-004 Brown (Знающие люди говорят, что есть ещё модель чёрного цвета, но мне больше нравится такая).
Надеюсь, они понравятся не только мне.
Читать дальше →
Всего голосов 53: ↑35 и ↓18+17
Комментарии48

Незаметная смерть распознавания речи

Время на прочтение3 мин
Количество просмотров31K
Предполагалось, что когда компьютер научится понимать человеческую речь, мы быстро сможем создать искусственный интеллект. Но точность систем распознавания речи достигла своего пика в 1999 году и с тех пор застыла на месте. Академические тесты 2006 года констатируют факт: системы общего профиля так и не преодолели уровень 80%, тогда как у человека этот показатель составляет 96-98%.

Профессор Роберт Фортнер из Media Research Institute считает, что создатели систем распознавания речи окончательно зашли в тупик. Программисты сделали всё что смогли, и у них не получилось. Спустя несколько десятилетий они поняли, что человеческая речь — не просто набор звуков. Акустический сигнал не несёт достаточно информации для распознавания текста.
Читать дальше →
Всего голосов 190: ↑166 и ↓24+142
Комментарии313

Генная инженерия от A до Z

Время на прочтение6 мин
Количество просмотров39K
Приветствую уважаемое сообщество!

Итак, это мой первый пост на хабре :)
Посвящен он будет серьезной теме, в которой, волею судеб, я неплохо разбираюсь. А именно, генной инженерии.

Помнится, тут пробегал пост в котором говорилось о геннотехнологической лаборатории “на коленке”. Оказалось, что тема интересна аудитории, поэтому я решил заняться ее развитием с просветительскими целями.

Я буду давать наглядные и понятные обычным людям примеры для описания сложных процессов. Если кто-то посчитает нужным меня поправить – не стесняйтесь. Я буду сознательно упускать многие вещи, но если вам кажется, что без них страдает логика изложения – так же поправляйте.
Читать дальше →
Всего голосов 174: ↑159 и ↓15+144
Комментарии156

Честная и защищенная от фальсификаций система голосования — ThreeBallot. Вдруг дождемся?

Время на прочтение3 мин
Количество просмотров4.6K
Поскольку у нас впереди выборы, расскажу-ка я о разных технологиях голосования. Конечно, слабо верится, что какие-то из светлых идей могут быть взяты на вооружение в такой демократичной стране, как наша, но лишним, как говорится, не будет.

Сегодня я расскажу об интересной системе голосования, «изобретенной» пять лет назад одним из авторов криптоалгоритма RSA, шифров RC4/RC5 и хэш-функции MD5, Рональдом Ривестом. Называется она Three Ballot Voting System, оригинал публикации на английском можно найти на сайте университета, где трудится Ривест. Чем же она так примечательна?

А тем, что с использованием этой системы избиратель может удостовериться, что его голос учтен, при этом сохраняя полную конфиденциальность. То есть, голосование выходит, с одной стороны, тайным, с другой — проверяемым на учет своего голоса самим избирателем.
Читать дальше →
Всего голосов 89: ↑81 и ↓8+73
Комментарии249

Как набраться смелости и открыть магазин

Время на прочтение8 мин
Количество просмотров49K
Не нашел на хабре статьи из песочницы, благодаря которой получил инвайт, поэтому решил внести ее в персональный блог.

Сколько себя помню, был помешан на компьютерах. И программирование так прочно вошло в мою жизнь, что несколько лет я и думать не мог о том, чтобы зарабатывать чем-то, кроме кодинга. Казалось, брось я программирование, деньги кончатся.
Последние лет пять я кодил. Кодил ночами, кодил круглосуточно. Устал. Надежды на отдых не было совсем. Каждый новый день начинался с того, что я представлял себе: что нужно сделать, что я должен сделать. Озверение пришло неожиданно и пришло в тот момент, когда я все-таки смог вырваться в отпуск.
Я сидел в беседке в одном из поселков близ Джубги и страдал бессонницей. Горы смыкались над головой, в голове бродила усталость. В ту ночь я в полной мере ощутил, что так дальше жить нельзя, что моя любовь — путешествия.
И именно в ту ночь внезапно пришло озарение: надо открыть интернет-магазин.
Но как открыть магазин, когда за душой нет ни гроша?
Читать дальше →
Всего голосов 289: ↑268 и ↓21+247
Комментарии191

Дания: страна победившего здравого смысла

Время на прочтение5 мин
Количество просмотров129K
Вот уже полгода, как я живу в Копенгагене, столице Дании. В этой статье я хочу показать, почему я считаю эту страну королевством адеквата.

«Доверяй, но проверяй» — это про Данию.
Читать дальше →
Всего голосов 237: ↑206 и ↓31+175
Комментарии805

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность