Pull to refresh
3
0
Marat Amerov @amerov

Веб-разработчик

Send message

Событийный автомат на страже жизненного цикла

Reading time10 min
Views6.7K
Дисклеймер: Эта статья описывает неочевидное решение неочевидной проблемы. Прежде чем бросаться яйцами применять его на практике, рекомендую дочитать статью до конца и дважды подумать.

but_why


Всем привет! При работе с кодом, нам часто приходится иметь дело с состоянием. Один из таких случаев — жизненный цикл объектов. Управление объектом с несколькими возможными состояниями может быть весьма нетривиальной задачей. Добавьте сюда асинхронное исполнение и задача усложняется на порядок. Есть эффективное и естественное решение. В этой статье я расскажу о событийном автомате и как его реализовать в Go.

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments0

Технология единого входа: как работает SSO

Level of difficultyEasy
Reading time15 min
Views15K

Привет, Хабр!

Казалось бы, что может быть проще, чем один вход для всех сервисов? Но за этой кажущейся простотой скрываются сложные технические детали.

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

Первые идеи SSO зародились в конце 1990-х, когда корпоративные сети стали более сложными, и потребность в централизованном управлении доступом стала очевидной. Это был период, когда организации начали искать способы упростить управление учетными записями для своих сотрудников.
В начале 2000-х было активное развитие технологий SSO. Организации начали внедрять SSO для упрощения доступа к корпоративным приложениям и ресурсам. Это также был период появления стандартов, таких как Kerberos, который лег в основу многих ранних реализаций SSO.
С развитием облачных технологий и мобильных устройств SSO начало получать ещё большее распространение. Возникли такие стандарты, как OAuth и OpenID, которые позволили SSO выйти за пределы корпоративных сетей и обеспечить интеграцию с обширным спектром внешних онлайн-сервисов и приложений.

Преимущества SSO очевидны: удобство использования, уменьшение количества паролей, которые нужно запоминать, и, как следствие, снижение риска их забывания или утечки. Но, как и у любой технологии, у SSO есть и свои темные стороны и одна из них - безопасность.
SSO – это процесс, позволяющий пользователям использовать одни учетные данные для доступа к нескольким приложениям или сервисам. Это не только удобно, но и повышает безопасность, уменьшая количество паролей, которые нужно запомнить и вводить.

Читать далее
Total votes 23: ↑18 and ↓5+13
Comments7

Nomad: проблемы и решения

Reading time9 min
Views35K

Первый сервис в Nomad я запустил в сентябре 2016 года. На данный момент пользуюсь как программист и занимаюсь поддержкой как администратор двух Nomad кластеров — один "домашний" для своих личных проектов (6 микро-виртуалок в Hetzner Cloud и ArubaCloud в 5 разных датацентрах Европы) и второй рабочий (порядка 40 приватных виртуальных и физических серверов в двух датацентрах).


За прошедшее время накопился довольно большой опыт работы с Nomad окружением, в статье опишу встреченные проблемы Nomad и как с ними можно справиться.



Ямальский кочевник делает Continous Delivery инстанса вашего ПО © National Geographic Россия

Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments6

Использование Ansible, Terraform, Docker, Consul, Nomad в облаках (Алексей Вахов, Учи.ру)

Reading time10 min
Views14K

Эта статья расшифровка видеодоклада Алексея Вахова из Учи.ру «Облака в облаках»


Учи.ру — онлайн-платформа для школьного образования, более 2 миллионов школьников, регулярно решают у нас интерактивные занятия. Все наши проекты хостятся полностью в публичных облаках, 100% приложений работают в контейнерах, начиная от самых маленьких, для внутреннего пользования, и заканчивая крупными продакшенами на 1k+ запросов в секунду. Так получилось, что у нас 15 изолированных докер-кластеров (не Kubernetes, sic!) в пяти облачных провайдерах. Полторы сотни пользовательских приложений, количество которых постоянно растет.


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


В процессе доклада мы обсудим:


  • Мотивацию выбора технологий и особенности бизнеса
  • Инструменты: Ansible, Terraform, Docker, Github Flow, Consul, Nomad, Prometheus, Shaman — web-интерфейс для Nomad.
  • Использовании федерации кластеров для управления распределенной инфраструктурой
  • NoOps выкатки, тестовые окружения, схемы приложения (практически все изменения девелоперы делают самостоятельно)
  • Занимательные истории из практики


Кому интересно, прошу под кат.

Total votes 18: ↑17 and ↓1+16
Comments3

Циркуль и линейка. Часть 1

Level of difficultyEasy
Reading time22 min
Views11K

Всем привет!

Как-то раз мне захотелось сделать анимацию построения фигуры циркулем и линейкой. Погуглив достаточное время, обнаружил, что на английском compass это ещё и циркуль, и что подходящего готового решения нет.

Всё дальнейшей вылилось в эту статью.

Читать далее
Total votes 46: ↑46 and ↓0+46
Comments13

Теория типов

Level of difficultyMedium
Reading time43 min
Views29K

Мы так привыкли к типам, что редко задаёмся вопросом, что же они такое на самом деле? А главное - почему возникла необходимость в их использовании? Этот поверхностный обзор сделан для того, чтобы продемонстрировать, как типы и другие связанные абстракции являются следствием из обобщения условий различных задач.

Что можно узнать из этой статьи?
Total votes 75: ↑75 and ↓0+75
Comments70

Agile-методы: light-версии требований

Reading time7 min
Views3.8K

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

Как ответ на это родились Agile-методы, которые организовывают разработку принципиально иным образом: короткими итерациями, с регулярным получением обратной связи от заказчика и пользователей, для чего необходимо им представлять работоспособную версию продукта, которую они смогут оценить.

Естественно, изменение организации проекта принципиально изменило работу с требованиями и проектирование системы. Если мы признаем высокую неопределенность проекта, влекущую активное изменение требований, тщательная работа с ними теряет смысл, превращается в лишнюю работу. И были предложены легкие форматы описания систем, а также форматы коммуникаций, которые позволили их создавать.

Читать далее →
Total votes 8: ↑5 and ↓3+2
Comments5

Что такое «инженерия» с точки зрения программиста?

Reading time5 min
Views5.3K
imageМне никогда не приходило в голову считать себя инженером-программистом, так как я не занимался ничем, что считал бы связанным с «инженерией».

Например, я поражён, каких успехов добилась компания SpaceX в разработке корабля StarShip: это полноценный многоразовый космический корабль, предназначенный в конечном итоге для того, чтобы позволить людям жить на других планетах. Эти наполеоновские планы наконец-то позволяют попытаться сконструировать достаточно мощные двигатели, крепкие и при этом достаточно лёгкие структуры, а также компьютерные системы управления, имеющие должную эффективность. Я уже не говорю об инфраструктуре, процессах, новых уровнях логистики и всём прочем, что необходимо для представления о такой масштабной задаче.

Самое интересное, что сегодня можно наблюдать вживую – на YouTube – как люди всему этому учатся. В самом деле, это конструкторский экшен: эксперименты, исследования, провалы и успехи. Большинство инженеров даже не рассчитывает, что дело будет с первого раза сделано верно. Если вы с самого первого раза всё делаете правильно – то не учитесь, а просто сразу осуществляете задуманное.
Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments1

Чем лингвистика похожа на программирование

Level of difficultyEasy
Reading time3 min
Views3.1K

Небольшое рассуждение лингвистки Гретхен МакКаллох о том, чем похожи её сфера деятельности и программирование.

Читать далее
Total votes 22: ↑18 and ↓4+14
Comments4

Как принять сигнал мобильной связи на приёмник цифрового телевидения: теория и практика

Level of difficultyMedium
Reading time20 min
Views25K
image

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

  • ноутбук,
  • DVB-Т-приёмник в виде USB-брелока,
  • свободный флеш-накопитель для записи дистрибутива Linux на него.

Чтобы лучше разобраться в работе GSМ, нужно два мобильных телефона или телефон и GSM-модем.

Если вас заинтересовала эта тема, и вы хотите расширить свои знания, добро пожаловать под кат.
Читать дальше →
Total votes 124: ↑124 and ↓0+124
Comments22

Взгляд на современные паттерны интеграции: Enterprise Design Thinking и Event Driven Architecture

Reading time10 min
Views3K

Привет Хабр! Меня зовут Рустем, IBM Senior DevOps Engineer & Integration Architect.

Сегодня я хотел бы взглянуть на современные паттерны интеграции: Enterprise Design Thinking и Event Driven Architecture.

Читать далее
Total votes 12: ↑6 and ↓60
Comments1

Парадокс Соломона. Легко давать советы другим, но не себе

Reading time5 min
Views15K

Как же мы иногда любим раздавать ценные советы, когда нас об этом просят и особенно — когда не просят! При этом сами почему-то с завидным постоянством принимаем неверные решения и попадаем в глупейшие ситуации.

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

Раз уж мы так любим раздавать ценные советы другим, почему бы этим не воспользоваться? Попробуем представить, что проблема, которую нам нужно решить, не наша собственная, а чья-то ещё.

Читать далее
Total votes 49: ↑42 and ↓7+35
Comments24

Мини-справочник и руководство по Scrum

Reading time8 min
Views117K
Данная статья – это мини-справочник и руководство по методу Scrum, созданные в результате прочтения книги Сазерленда, статей из интернета и применения на практике.

Надо различать Agile и Scrum. Agile – это методология (наука), а Scrum – это метод достижения цели.

Применяя Scrum важно иметь настоящую команду профессионалов, соблюдать условия прозрачности, открытости и доверия.

Члены команды должны быть довольны своей деятельностью, быть счастливыми в своей работе. Состояние счастья приводит людей к превосходным результатам.
Счастливые люди успешнее на 50%. А значит они на 50% более продуктивные, если счастливы и находят смысл в своей работе. При этом они на 88% более лояльны, потому что понимают, что работают не зря, посвящая половину своего времени развитию этого бизнеса
— доктор Корри Блок, эксперт по стратегии бизнеса в области оценки счастья.

Мини-справочник Scrum


Scrum (скрам) – схватка, гибкий метод управления проектами. Термин пришел из игры рэгби.
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments23

Программы-клиенты для протоколов недетектируемого обхода блокировок сайтов: V2Ray/XRay, Clash, Sing-Box, и другие

Level of difficultyMedium
Reading time16 min
Views176K

В предыдущей статье “Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria и все-все-все” я рассказывал про прокси-протоколы. Теперь настало время рассказать про клиенты: консольные, GUI для десктопа и для мобильных платформ. 

Надеюсь, что эта статья вам окажется полезной, потому что, как выяснилось, найти хороший клиент даже для тех же V2Ray/XRay в наше время не так-то просто. Потому что большая часть того, что находится при поиске в интернете “в лоб” и даже в списках типа Awesome V2Ray - или уже неподдерживаемое, или довольно кривое, или не умеющее в актуальные версии и фичи (например, XTLS и uTLS), а самые жемчужины прячутся где-нибудь в глубинах Github’а и сторов.

Читать далее
Total votes 58: ↑57 and ↓1+56
Comments52

Закон Бенфорда и распределения под него попадающие

Reading time6 min
Views51K

В теории вероятностей и статистике правило первой цифры, или закон Бенфорда, показывает любопытное проявления частот первой цифры данных из реальной жизни. Для школьников и домохозяек этот закон можно вольно сформулировать так: есть наборы данных, у которых первая цифра будет единицей примерно в 6 раз чаще, чем девятка и это соотношение не изменится при масштабировании исходного набора. Более строго можно сформулировать так: набор чисел удовлетворяет закону Бенфорда, если первая цифра d появляется с вероятностью


Здесь N – основание системы счисления, должно быть больше 2, далее будем рассматривать 10.
Для строгих математиков это правило формулируется так: существуют такие случайные величины, для которых распределение вероятностей дробной части логарифма по любому основанию большему 1 сходится к равномерному на отрезке [0; 1] распределению. Далее я постараюсь писать как можно популярнее и подробнее, укажу примеры, ограничения, применение и случайные величины, для которых закон применим.
Подробности
Total votes 63: ↑58 and ↓5+53
Comments34

Событийная онтология vs объектная

Reading time14 min
Views5.3K

В общем случае (вне и до информационных технологий), произнося слово «семантика», предлагают обсудить смысловой уровень языка – значения знаков и структур знаков (текстов). При этом семантика противопоставляется синтаксису, то есть формальным правилам соединения знаков в текст. Когда же речь о семантике заводится в сфере IT, то имеют в виду особые технологии, архитектуры приложений и языки описания данных, ориентированные на знаковое представление объектов и их свойств в компьютерных моделях предметных областей. В качестве основной цели семантического подхода видится «научение» компьютера распознавать смысл данных, описывающих деятельность и ее элементы, то есть реализовать переход от оперирования безликими данными к работе со значениями и знаниями. Предполагается, что широкое использование семантического подхода к моделированию предметных областей позволит унифицировать обмен информацией между независимыми поставщиками данных и приложениями, а также обеспечит возможность модифицировать структуру данных и бизнес-логику приложений не путем переписывания кода, а только через преобразование семантически определенных данных. К основным методам семантического подхода следует отнести: унификацию формата записи, уникальную идентификацию записей, включение метаданных в данные, стандартизацию словарей.

Традиционно семантическое описание предметной области называют онтологией этой области.  При этом выражения «онтологическое описание», «онтологическая модель», «онтология предметной области» используют как синонимы. Онтология или онтологическая модель предметной области – это, по сути, структура из сущностей (концептов, понятий, типов объектов), их свойств и правил установления отношений между ними. Обычно онтологию представляют в виде графа, вершинами которого являются объекты, а ребрами – свойства. Часто такую структуру из объектов и значений их свойств, построенную для определенной предметной области, называют графом знаний (Knowledge Graph).

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments14

Anemic Domain Model [Перевод]

Reading time4 min
Views37K
На фоне своего увлеченного изучения DDD, я прочел статью Мартина Фаулера от 25 Ноября 2003 года Anemic Domain Model. Иногда для лучшего понимания материала я перевожу его на русский язык. Вот я и решил поделиться переводом.
Перевод авторский и местами очень смысловой.

Ссылка на оригинал.

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



Бледная Доменная Модель

Это один из тех анти-паттернов который долгое время окружал нас, а сейчас проявляется еще активнее. Я говорил о этом с Эриком Эвансом и мы оба отметили что он становится все популярнее. И я как сторонник правильной Доменной Модели, считаю что это не есть хорошо.

Узнать немного о DDD
Total votes 13: ↑9 and ↓4+5
Comments3

Domain Driven Design: модели вместо требований

Reading time6 min
Views7.2K

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

Решение — подход DDD, Domain Driven Design, было предложено Эриком Эвансом в 2003. Но прежде, чем о нем говорить, необходимо немного углубиться в историю развития разработки софта как такового.

Читать далее →
Total votes 10: ↑7 and ↓3+4
Comments36

Что меняется во фреймах Ethernet при передаче информации от роутера к роутеру?

Level of difficultyMedium
Reading time7 min
Views16K

Давайте обсудим как выглядят фреймы на каждом этапе передачи от клиента к коммутатору, к роутеру, к межсетевому экрану и к серверу и какие поля при этом там меняются.

Что меняется при передаче: MAC или IP?
Total votes 13: ↑12 and ↓1+11
Comments23

Как математический анализ помогает в сравнении ИБ-решений

Reading time9 min
Views3.3K

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

Но как подступиться к этой задаче? Ведь нужно сравнить слишком много критериев: провести функциональное и нагрузочное тестирование, проанализировать архитектуру, не упустить из виду экономические показатели и много чего еще. К тому же критерии могут иметь разную важность, в зависимости от конкретной задачи и внутренних требований компании. Даже если у компаний из одной отрасли со схожим профилем бизнеса будет одна цель — выбрать систему межсетевого экранирования, результаты могут оказаться кардинально разными.

В статье я не буду рассуждать о том, какие системы лучше, а какие хуже. Вместо этого поделюсь методикой сравнения продуктов, которую мы в «Solar Интеграция» часто применяем на практике. Эта методика позволяет не только детально оценить десятки критериев, но и учесть значимость каждого критерия по сравнению с другими, что очень важно для итогового анализа сравнения.

Разобраться в хитросплетениях методики
Total votes 13: ↑13 and ↓0+13
Comments1
1
23 ...

Information

Rating
Does not participate
Location
Джизак, Джизакская обл., Узбекистан
Date of birth
Registered
Activity

Specialization

Specialist
Linux
PostgreSQL
Software development
Git
Ruby