Как стать автором
Обновить
1
0
Константин @DarkSunRise

Пользователь

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

Почему Event Sourcing — это антипаттерн для взаимодействия микросервисов

Время на прочтение5 мин
Количество просмотров39K
И снова здравствуйте. В марте OTUS запускает очередной поток курса «Архитектор ПО». В преддверии старта курса подготовили для вас перевод полезного материала.




Последнее время получают распространение событийно-ориентированные архитектуры (event-driven architectures) и, в частности, Event Sourcing (порождение событий). Эта вызвано стремлением к созданию устойчивых и масштабируемых модульных систем. В этом контексте довольно часто используется термин “микросервисы”. На мой взгляд, микросервисы — это всего лишь один из способов реализации “ограниченного контекста” (Bounded Context). Очень важно правильно определить границы модулей и в этом помогает стратегическое проектирование (Strategic Design), описанное Эриком Эвансом в Domain Driven Design. Оно помогает вам идентифицировать / обнаружить модули, границы (“ограниченный контекст”) и описать, как эти контексты связаны друг с другом (карта контекстов, ContextMap).
Читать дальше →
Всего голосов 16: ↑12 и ↓4+13
Комментарии20

Как перестать растрачивать время разработчиков на технический долг

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


Вы знаете, каково это. Впихнуть всё необходимое в спринт и так весьма непросто, а ведь ещё нужно где-то найти дополнительные 10–20% времени разработчиков на возврат технического долга. Если вы когда-либо отстаивали необходимость выкраивания времени на это, то вы знаете, что это походит на крестовый поход эпических масштабов.


Но сделать это можно, и в этом руководстве мы выясним, как именно.

Читать дальше →
Всего голосов 13: ↑11 и ↓2+14
Комментарии5

ShadowCloud — универсальный облачный клиент

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

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


Как-то так он выглядит:


image


Что умеет


  • Прямая загрузка (без использования локального диска) в Google Drive, Яндекс Диск (WebDAV), Облако Mail.Ru, Dropbox
  • Полное шифрование по умолчанию, большой выбор алгоритмов и настроек
  • Защищённая паролем база данных
  • Чексуммы и дедупликация
  • Убирает ограничение на размер файла
  • Репликация или разбиение файлов по разным хранилищам
  • Стриминг медиа без ограничений
  • Создаёт превью и извлекает метаданные и текст документов
  • Версионирование файлов и всей структуры директорий
  • Markdown заметки, подсветка кода
  • Быстрое сохранение веб-страниц со встроенными ресурсами
  • Кэширование файлов в памяти
  • Использование в виде локального диска с помощью FUSE (требуется winfsp)
  • Открытый исходный код, почти каждый аспект настраивается через shadowcloud.conf
Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии26

Может ли искусственный интеллект оставить букмекеров без работы?

Время на прочтение5 мин
Количество просмотров35K
«Победа искусственного интеллекта над футбольными экспертами» – таким мог стать заголовок этой статьи про результаты футбольного соревнования. Мог бы, но, увы, не стал.

Во время Чемпионата мира по футболу у нас в компании "НОРБИТ" проходил конкурс на лучший прогноз матчей по футболу. Я слишком поверхностно разбираюсь в футболе, чтобы на что-то претендовать, но желание принять участие в конкурсе все-таки победило мою лень. Под катом – история о том, как благодаря машинному обучению мне удалось добиться неплохих результатов среди знатоков футбольных команд. Правда, сорвать куш мне не удалось, зато открыл для себя новый увлекательный мир Data Science.

Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии60

Neurotic Bikes: генезис

Время на прочтение6 мин
Количество просмотров9.7K
На днях Youtube посчитал, что мне покажется интересным видео с названием «AI Learns to play Hill Climb Racing». Забавно, ведь за пару минут до этого я закоммитил очередные изменения в проект, где мы с коллегами в перерывах между работой и работой решаем именно эту задачу. Никакого «AI» в том видео, правда, не обнаружилось – автор поразвлекал публику баловством с Box2D и на том успокоился. Тем не менее, предлагаю считать этот факт убедительным доказательством актуальности темы и разобрать устройство нашей погремушки.

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



Агент, коснувшийся спиной трека или не демонстрирующий должного рвения в продвижении к цели, снимается с трассы.
Поехали
Всего голосов 34: ↑34 и ↓0+34
Комментарии9

Boot yourself, Spring is coming (Часть 1)

Время на прочтение32 мин
Количество просмотров46K
Евгений EvgenyBorisov Борисов (NAYA Technologies) и Кирилл tolkkv Толкачев (Циан.Финанс, Твиттер) рассказывают о самых важных и интересных моментах Spring Boot на примере стартера для воображаемого Железного банка.



В основе статьи — доклад Евгения и Кирилла с нашей конференции Joker 2017. Под катом — видео и текстовая расшифровка доклада.
Всего голосов 37: ↑34 и ↓3+31
Комментарии2

Generics + Spring: Да пребудет с вами сила

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

Однажды в одном далёком, далёком банке ...


Доброго времени суток, хабр. Сегодня наконец-то вновь дошли руки написать сюда. Но в отличие от предыдущих туториалов — статей сегодня хотелось бы поделиться своим опытом и показать мощь такого механизма как дженерики, который вместе с магией спринга становится ещё сильнее. Сразу хочу предупредить, что для понимания статьи нужно знать основы спринга и иметь представления о дженериках большие чем просто “Дженерики это, ну, то что в ArrayList в ковычках указываем”.

Эпизод 1:


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

Проблему с общими полями я решил просто — наследованием. Таким образом у меня появились классы:

public class Transfer {
    private TransferType transferType;
    ...
}
    
public enum TransferType {
      INTERNAL, SWIFT, ...;
}
    
public class InternalTransfer extends Transfer {
    ...
}
    
public class BaseRequest {
    ...
}
    
public class InternalRequest extends BaseRequest {
    ...
}    

...

Эпизод 2:


Дальше стояла проблема с контроллерами — у них у всех должны были быть одинаковые методы — checkTransfer, approveTransfer и тд. Вот тут то в первый, но не в последний раз мне пригодились дженерики: я сделал общий контроллер с нужными методами, и унаследовал от него остальные:
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии5

Разбираемся с partitions в PostgreSQL 9

Время на прочтение7 мин
Количество просмотров26K
PostgreSQL 10 был выпущен еще в начале октября 2017го, почти год назад.

Одна из наиболее интересных новых “фич” — это безусловно декларативное партиционирование. Но что, если вы не спешите апгрейдится до 10ки? Вот Amazon, к примеру, не торопится, и ввел поддержку PostgreSQL 10 только в последних числах февраля 2018-го.

Тогда на помощь приходит старое-доброе партиционирование через наследование. Я — software architect финансового отдела в компании занимающейся такси, так что все примеры будут так или иначе связаны с поездками (проблемы связанные с деньгами оставим на другой раз).

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

Изначальной причиной написания статьи стало то, что большинство примеров partitioning’а в PostgreSQL с которыми я сталкивался были очень базовыми. Вот таблица, вот одна колонка, на которую мы смотрим, и быть может даже заранее знаем, какие значения в ней лежат. Казалось бы, все просто. Но реальная жизнь вносит свои коррективы.
Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии7

Реализация Spring Framework API с нуля. Пошаговое руководство для начинающих. Часть 1

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


Spring Framework является одним из самых сложных фремворков для понимания и изучения. Большинство разработчиков изучают его медленно, через практические задачи и гугл. Этот подход не эффективен, так как не даёт полной картины и при этом требует больших затрат.

Я хотел бы предложить вам принципиально новый подход к изучению Спринга. Он заключается в том, что человек проходит через серию специально подготовленных туториалов и самостоятельно реализует функционал спринга. Особенность этого подхода в том, что он, помимо 100%-го понимания изучаемых аспектов Spring даёт ещё большой прирост в Java Core (Annotations, Reflection, Files, Generics).

Статья подарит вам незабываемые ощущения и позволит почувствовать себя разработчиком Pivotal. Шаг за шагом, вы сделаете ваши классы бинами и организуете их жизненный цикл (такой же, как и в реальном спринге). Классы, которые вы будете реализовывать — BeanFactory, Component, Service, BeanPostProcessor, BeanNameAware, BeanFactoryAware, InitializingBean, PostConstruct, PreDestroy, DisposableBean, ApplicationContext, ApplicationListener, ContextClosedEvent.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии17

Контейнеры для взрослых (Часть 03): 10 вещей, которые не надо делать с контейнерами

Время на прочтение4 мин
Количество просмотров31K
Вы, наконец, сдались на милость контейнеров и обнаружили, что они решают массу проблем и имеет массу преимуществ:

  1. Контейнеры незыблемы: ОС, библиотеки, папки и приложения – поскольку все это хранится прямо в контейнере, вы на 100 % уверены, что в продакшн всегда пойдет именно тот образ, который тестировался в QA. И работать он при этом будет абсолютно аналогично.
  2. Контейнеры легковесны: Контейнер не ест память впустую. Вместо сотен мегабайт и гигабайт контейнеру нужна память лишь под основной процесс.
  3. Контейнеры быстрые: Контейнер запускается так же быстро, как и обычный Linux-процесс. Не минуты, а буквально считанные секунд.



Однако, многие до сих пор считают, что контейнеры – это виртуальные машины, и забывают про важнейшее их свойство…
Читать дальше: 10 вещей, которые не надо делать с контейнерами
Всего голосов 38: ↑35 и ↓3+32
Комментарии194

Ученые нашли способ обратить процесс старения клеток

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


Многие люди мечтают, что при их жизни найдут способ остановить старение. Теперь можно перестать мечтать. Реальная жизнь переплюнула научную фантастику. Исследователи смогли не только остановить, но и обратить процесс старения – вернув человеческие клетки обратно к их «молодому» состоянию. Правда, пока что только в лаборатории. Ученые рассчитывают, что скоро их открытие позволит создавать лекарства против естественной дегенерации тканей. И указывают на то, какие продукты нам нужно употреблять, чтобы достичь похожего эффекта в своём организме.

Читать дальше →
Всего голосов 56: ↑49 и ↓7+42
Комментарии170

Git happens! 6 типичных ошибок Git и как их исправить

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


Прим. перев.: На днях в блоге для инженеров любимого нами проекта GitLab появилась небольшая, но весьма полезная заметка с инструкциями, которые помогают сохранить время и нервы в случае различных проблем, случающихся по мере работы с Git. Вряд ли они будут новы для опытных пользователей, но обязательно найдутся и те, кому они пригодятся. А в конец этого материала мы добавили небольшой бонус от себя. Хорошей всем пятницы!

Все мы делаем ошибки, особенно при работе с такими сложными системами, как Git. Но помните: Git happens!
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии62

Перформанс: что в имени тебе моём? — Алексей Шипилёв об оптимизации в крупных проектах

Время на прочтение26 мин
Количество просмотров33K
Оптимизация производительности издавна не даёт покоя разработчикам, представляясь своеобразным «золотым ключиком» к интересным решениям и хорошему послужном списку. Большую обзорную экскурсию по ключевым вехам оптимизации больших проектов  – от общих принципов до ловушек и противоречий —  на прошедшем JPoint 2017 провёл Алексей Шипилёв, эксперт по производительности.



Под катом — расшифровка его доклада.
Всего голосов 76: ↑73 и ↓3+70
Комментарии10

11 лучших шрифтов для программирования

Время на прочтение3 мин
Количество просмотров269K
Много статей и сайтов сравнивают шрифты для программирования — всё это отличные ресурсы. Так зачем я опять поднимаю эту тему? Потому что сам всегда терялся в десятках шрифтов и не мог понять, какой лучше. Так что я опробовал много шрифтов и выбрал следующие для вас. Они довольно популярны и их легко получить. И самое главное, все эти шрифты бесплатны!

Я ранжировал шрифты по следующим показателям:

  • Насколько различимы схожие символы, такие как 0O, 1lI.
  • Легко ли читается шрифт (ширина строк, ширина/высота символов).
  • И мои личные предпочтения!

Все скриншоты сделаны в VSCode на одном фрагменте кода. Если не обозначено иное, то везде установлен размер "editor.fontSize": 14.
Читать дальше →
Всего голосов 56: ↑54 и ↓2+52
Комментарии117

Самая сложная программа

Время на прочтение5 мин
Количество просмотров129K
От переводчика: я нашел на Quora вопрос: Какую программу или код можно назвать самыми сложными из когда-либо написанных? Ответ одного из учасников был настолько хорош, что вполне тянет на статью.

Пристегни ремни.

Самая сложная программа в истории была написана командой людей, имена которых нам неизвестны.

Это программа – компьютерный червь. Червь был написан, судя по всему, между 2005 и 2010 годами. Поскольку этот червь является таким сложным, я могу дать лишь общее описание того, что он делает.
Читать дальше →
Всего голосов 174: ↑158 и ↓16+142
Комментарии272

Pritunl — VPN-сервер для себя и друзей за 10 минут

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


В связи с последними событиями в России хочу рассказать вам о классном self-hosted VPN-сервере. После простой установки, без особого труда и углубленных знаний вы сможете создавать пользователей, генерировать VPN-профили и смотреть графики использования сети.


А обеспечив VPN-подключением себя и ваших близких, вы можете попробовать разделить траты за виртуальный сервер с вашими друзьями и знакомыми.


В результате чего пятидоллоравая VPS'ка может превратится в мощный инструмент обхода блокировок

Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии95

Диабет, деменция и даже мигрени. Кетогенная диета оказывается эффективнее лекарств

Время на прочтение15 мин
Количество просмотров40K
Чарли, сын американского кинопродюсера Джима Абрахамса, страдал тяжелой формой резистентной эпилепсии. Количество ежедневных припадков измерялось десятками и даже сотнями, и лекарства почти не помогали. Хуже того, если без лекарств Чарли мог между припадками побыть нормальным ребенком, то с ними он превращался в «зомби, живущего на кресле машины».

Чарли спасла диета, придуманная в 1920-х годах, но ушедшая в забытие после широкого распространения антиконвульсанта фенитоина в конце 30-х. Уже через два дня припадки, не дававшие ему жить и развиваться целый год, полностью прекратились. Почти мгновенно Чарли превратился в обычного ребенка. Приступы больше не возвращались — даже после прекращения диеты через 5 лет.

Это было в начале 1990-х. С тех пор его отец основал фонд, снял фильм, и даже Малышева рассказала об этом по первому каналу. Но эпилепсию, как и другие болезни, почти всегда начинают лечить с медикаментов.
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии69

Безопасный SOCKS5 прокси для Telegram за 1 Евро и 10 минут

Время на прочтение3 мин
Количество просмотров134K
Не все прокси одинаково полезны. На волне новостей о блокировке мессенджера Телеграмм стало актуально поднимать свой SOCKS5 прокси, так как чужой использовать не безопасно — неизвестно, кому принадлежат серверы, какое ПО на них используется, и какие в нем присутствуют уязвимости. Кроме того, публичные прокси часто очень медленные, поскольку большое число клиентов одновременно «пытаются» его использовать, перегружая ресурсы сервера. Под катом инструкция по быстрой настройке приватного SOCKS5 прокси с аутентификацией за 1 евро и 10 минут времени и возможностью в дальнейшем расширить защиту сервера при помощи усиленной аутентификации.
Читать дальше →
Всего голосов 71: ↑45 и ↓26+19
Комментарии142

PowerShell Empire: продвинутая пост-эксплуатация Windows систем

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

PowerShell Empire — это уникальный пост-эксплуатационный PowerShell агент, построенный на базе крипто-надежных соединений и гибкой архитектуры. Empire предоставляет возможность запускать PowerShell агенты без необходимости использования powershell.exe, с быстрым запуском пост-эксплутационных модулей, которые варьируются от кейлоггеров до Mimikatz, и позволяет успешно избегать сетевое обнаружение, при этом весь этот функционал собран в одном удобном и гибком фреймворке.
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии1

Новогодние подарки, часть вторая: Spectre

Время на прочтение11 мин
Количество просмотров73K
Часть первая: Meltdown.

Несмотря на всю мощь уязвимости Meltdown, принесённое этим Новым годом счастье не было бы полным, если бы не вторая часть открытия, не ограничивающаяся процессорами Intel — Spectre.

Если говорить очень-очень коротко, то Spectre — принципиально схожая с Meltdown уязвимость процессоров в том смысле, что она тоже представляет собой аппаратную особенность и эксплуатирует непрямые каналы утечки данных. Spectre сложнее в практической реализации, но зато она не ограничивается процессорами Intel, а распространяется — хоть и с нюансами — на все современные процессоры, имеющие кэш и механизм предсказания переходов. То есть, на все современные процессоры.

Строго говоря, Spectre не является одной уязвимостью — уже на старте заявлены два различных механизма (CVE-2017-5753 и CVE-2017-5715), а авторы отмечают, что может быть ещё и много менее очевидных вариантов.

В основе своей Spectre похожа на Meltdown, так как также базируется на том факте, что в ходе спекулятивного выполнения кода процессор может выполнить инструкции, которые он не стал бы выполнять при условии строго последовательного (неспекулятивного) вычисления, и, хотя в дальнейшем результат их выполнения отбрасывается, его отпечаток остаётся в процессорном кэше и может быть использован.
Читать дальше →
Всего голосов 148: ↑147 и ↓1+146
Комментарии140
1
23 ...

Информация

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