Pull to refresh
5
0
Наиль Хунафин @nail777

User

Send message

Гайд по эвент-сорсингу

Level of difficultyMedium
Reading time19 min
Views12K

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

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

Читать
Total votes 29: ↑24 and ↓5+19
Comments104

Как правильно имитировать Agile?

Reading time15 min
Views35K

Подобная статья должна была появиться раньше, лет десять или пятнадцать назад, когда Agile только начинал внедряться в ИТ-компаниях. Сколько можно бы было избежать ошибок, проблем, конфликтов, , если бы менеджеры сразу подходили к вопросу правильно, не отвлекаясь на лишние действия …

Зато за это время накопился опыт "внедрений" Agile в разных условиях, в разных компаниях, который следует обобщить и повсеместно распространять.

Читать далее
Total votes 92: ↑89 and ↓3+86
Comments40

Практические рекомендации по работе с Docker для Python-разработчиков

Reading time28 min
Views94K

Прим. Wunder Fund: в этой длииинной статье вы найдете ряд полезных советов по работе с Docker, как общего характера, так и Python-специфичных. Хоть мы и давно используем Docker в работе, про некоторые советы мы подумали "а что, так можно было?". Советуем вначале пролистать статью, и отметить штуки, которые покажутся актуальными для вашей текущей ситуации.

Читать далее
Total votes 67: ↑66 and ↓1+65
Comments8

Интеллектуальная производительность без выгорания: 7 техник использования мозга. Часть 1

Reading time18 min
Views54K

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

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

Читать далее
Total votes 71: ↑66 and ↓5+61
Comments23

Классификатор методом BallTree поиска k-ближайших соседей на Python

Reading time18 min
Views8.6K

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

И как же написать его на Python?
Total votes 9: ↑9 and ↓0+9
Comments4

Техники обратной связи для тимлида: разбор с примерами

Reading time7 min
Views39K

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

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

Читать далее
Total votes 33: ↑32 and ↓1+31
Comments34

Ручное управление памятью в языке Go

Reading time12 min
Views12K
Привет, Хабр!

Наши читатели не могли не заметить нашего растущего интереса к языку Go. Наряду с книгой из предыдущего поста, у нас найдется на эту тему немало интересного. Сегодня мы хотим предложить вам перевод материала «для профи», в котором демонстрируются интересные аспекты ручного управления памятью на Go, а также одновременное выполнение операций над памятью на Go и C++.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments6

Обзор k9s — продвинутого терминального интерфейса для Kubernetes

Reading time6 min
Views44K


K9s предоставляет пользовательский интерфейс терминала для взаимодействия с кластерами Kubernetes. Цель этого Open Source-проекта — облегчить удобную навигацию по приложениям в K8s, наблюдение за ними и управление ими. K9s постоянно следит за изменениями в Kubernetes и предлагает быстрые команды для работы с наблюдаемыми ресурсами.

Проект написан на Go, существует уже более полутора лет: первый коммит был сделан 1 февраля 2019 года. На момент написания статьи насчитывается 9000+ звезд на GitHub и около 80 контрибьюторов. Посмотрим, что умеет k9s?
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments5

10 лет on-call. Чему мы научились? (обзор и видео доклада)

Reading time12 min
Views9.4K
Осенью прошлого года на конференции DevOops 2019 прозвучал доклад «10 лет on-call. Чему мы научились?». В нём рассказывается о том, почему мы отказались от внутреннего «акселератора» по развитию дежурных до DevOps-инженеров, как эволюционировала наша служба технической поддержки и система обработки инцидентов в целом.



Представляем видео с докладом (~63 минуты, гораздо информативнее статьи) и основную выжимку из него в текстовом виде. Поехали!
Total votes 41: ↑41 and ↓0+41
Comments18

Liveprof покажет, когда и почему менялась производительность вашего PHP-приложения

Reading time8 min
Views19K


Привет, Хабр! Меня зовут Тимур Шагиахметов, я PHP-разработчик в Badoo.

Производительность приложения — один из важнейших критериев качества работы программиста. В вопросах оптимизации PHP-приложений помощником является профайлер.

Недавно мы рассказывали о том, какими инструментами пользуемся для профилирования. Напомню: одним из инструментов для анализа производительности, когда непонятно, какие части кода повлияли больше всего на увеличение времени формирования ответа, является XHProf. Это расширение для PHP, которое позволяет профилировать код на боевом сервере и впоследствии  улучшать его.

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

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

В этой статье я расскажу о деталях реализации и особенностях использования этого инструмента.
Читать дальше →
Total votes 84: ↑84 and ↓0+84
Comments7

Задержка EMS-отправления. Как получить компенсацию от «Почты России». Инструкция

Reading time8 min
Views47K
Предыстория
История началось с того, что содержимое отправленной посылки – электросамокат доставили с повреждением контролера питания. Проверить такое технически сложное устройство оперативно невозможно. Курьер не будет ждать 4 часа. По регламенту у них на всё до 20 минут. Поэтому получатель подписал акт, что претензий не имеет. Видимых повреждений-то не было. Когда спустя 4 часа самокат не зарядился, затем в другом помещении от другой розетки не зарядился тоже, стало ясно, что устройство повредили во время доставки. Ремонт в сервисном центре оказался не гарантийным, т.е. платным.

В компенсации Почта отказала, т.к. «вы подписали акт, значит претензий не имеете». В суде я бы не смог документально доказать, что на момент отправки устройство было исправным. Честное слово, как известно, к делу не пришьёшь. Самокат, разумеется, изначально был рабочим. Поскольку мне не возместили ремонт, я решил вернуть деньги на другом основании. Из принципа. За нарушение сроков доставки. Подробная история в мотивированном решении суда. На основе полученного опыта пошагово рассказываю, как действовать грамотно, если попадёте в схожую ситуацию.

Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments52

Имитируем сетевые проблемы в Linux

Reading time15 min
Views31K
Всем привет, меня зовут Саша, я руковожу тестированием бэкенда. У нас, как и у многих, реализована сервис-ориентированная архитектура. С одной стороны, это упрощает работу, т.к. каждый сервис проще тестировать по отдельности, но с другой — появляется необходимость тестировать взаимодействие сервисов между собой, которое часто происходит по сети.

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


Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments17

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

Reading time8 min
Views6.9K

Это перевод обзора статьи «MemC3: Compact and Concurrent MemCache with Dumber Caching and Smarter Hashing» Fan et al. в Proceedings of the 10th USENIX Symposium on Networked Systems Design and Implementation (NSDI’13), pdf тут


Чуваки (бывший гугловец, чувак из университета Карнеги Меллон и еще один из Интел лабс) сделали улучшенный Memcached-совместимый кеш (по факту просто допилили мемкеш), и у них классные результаты производительности. Мне очень понравился обзор этой статьи в блоге "The morning paper" — описание алгоритмов и прочее.


Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments4

Обучаемся самостоятельно: подборка видеокурсов по Computer Science

Reading time11 min
Views127K
image

Содержание


  1. Введение в Computer Science
  2. Структуры данных и Алгоритмы
  3. Системное программирование
  4. Распределенные системы
  5. Базы данных
  6. Объектно-ориентированный дизайн и разработка софта
  7. Искусственный интеллект
  8. Машинное обучение
  9. Веб-разработка и интернет-технологии
  10. Concurrency
  11. Компьютерные сети
  12. Разработка мобильных приложений
  13. Математика для программистов
  14. Теория информатики и языки программирования
  15. Архитектура компьютера
  16. Безопасность
  17. Компьютерная графика
  18. Работа с изображениями и компьютерное зрение
  19. Интерфейс Человек-Компьютер
  20. Вычислительная биология
  21. Прочее

Total votes 78: ↑64 and ↓14+50
Comments23

Лучшие практики Go, шесть лет в деле

Reading time18 min
Views59K
В 2014 году я выступил на открытии конференции GopherCon с докладом под названием «Go: Best Practices for Production Environments». В SoundCloud мы были одними из первых пользователей Go и к тому времени уже два года писали на нём и поддерживали Go в бою в той или иной форме. За это время мы кое-чему научились, и я попытался поделиться частью этого опыта.

С тех пор я продолжал программировать на Go в течение всего рабочего дня, сначала в командах SoundCloud, отвечающих за операционную деятельность и инфраструктуру, а теперь работаю в компании Weaveworks над Weave Scope и Weave Mesh. Также я усердно трудился над Go kit, набором инструментов для микросервисов с открытым исходным кодом. И всё это время я принимал активное участие в развитии сообщества Go-программистов, встречался со многими разработчиками на митапах и конференциях по всей Европе и в США, коллекционируя их истории успехов и провалов.

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

Ключевые положения я выделил в тексте в виде Top Tips — лучших советов.

А вот и cодержание:

  1. Среда разработки
  2. Структура репозитория
  3. Форматирование и стиль
  4. Конфигурация
  5. Разработка программы
  6. Логирование и метрики
  7. Тестирование
  8. Управление зависимостями
  9. Сборка и развёртывание
  10. Заключение
Читать дальше →
Total votes 68: ↑63 and ↓5+58
Comments19

Пишите код, который легко удалять, а не дополнять

Reading time14 min
Views52K
image«Всякая строка кода рождается без причины, продолжается в слабости и удаляется случайно», — Жан-Поль Сартр программирует на ANSI C.

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

Чем больше у вашего API пользователей, тем больше кода приходится переписывать для введения новых изменений. Верно и обратное: чем больше вы полагаетесь на сторонний API, тем больше проблем испытываете когда он изменяется. Упорядочивание взаимодействия и взаимосвязей разных частей кода является серьезной проблемой в больших системах. И по мере развития проекта, растет и масштаб этой проблемы.

Перевод статьи на русский язык подготовлен компанией PayOnline, провайдером платежных решений для вашего онлайн-бизнеса.
Читать дальше →
Total votes 61: ↑48 and ↓13+35
Comments25

Светодиодные лампы из магазина Ашан

Reading time4 min
Views67K
Большинство светодиодных ламп, которые я тестирую и о которых пишу, можно купить только в специализированных интернет-магазинах, однако обычные покупатели как правило покупают лампы в гипермаркетах. Я съездил в магазины Ашан и Леруа Мерлен, купил там 48 моделей светодиодных ламп и протестировал их. Лампы вернул обратно в магазины, так как там есть возможность возврата. О лампах из Леруа Мерлен расскажу в следующий раз, сегодня — 22 лампы из Ашана.


Читать дальше →
Total votes 107: ↑105 and ↓2+103
Comments82

Подборка бесплатных инструментов для разработчиков

Reading time28 min
Views186K
Сегодня мы представляем вашему вниманию адаптированную подборку инструментов (в том числе облачных) для разработчиков, которые позволяют создавать по-настоящему качественные проекты. Здесь представлены исключительно SaaS, PaaS и IaaS сервисы, предоставляющие бесплатные пакеты для разработчиков инфраструктурного ПО.

Читать дальше →
Total votes 96: ↑89 and ↓7+82
Comments38

Заметки об объектной системе языка Python ч.1

Reading time8 min
Views62K
Несколько заметок об объектной системе python'a. Рассчитаны на тех, кто уже умеет программировать на python. Речь идет только о новых классах (new-style classes) в python 2.3 и выше. В этой статье рассказывается, что такое объекты и как происходит поиск атрибутов.

Читать дальше →
Total votes 107: ↑100 and ↓7+93
Comments35

Классификация карт памяти

Reading time3 min
Views57K
Привет, Гиктаймс! Благодаря рекламе мы знаем, “что не все йогурты одинаково полезны”. Справедливо сказать то же самое о картах памяти. Слегка странные фотографы, операторы и любители экстрима зачем-то ищут высокоскоростные карточки, хотя казалось бы в чем разница? Под катом — классификация карт памяти и “рекомендации лучших собаководов” по выбору класса карты.


Читать дальше →
Total votes 31: ↑23 and ↓8+15
Comments29
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Specialist
Git
Golang
Kubernetes
Docker