Search
Write a publication
Pull to refresh
3
0

Руковожу разработкой всякого разного

Send message

Рынок соискателя или работодателя VS возрастная дискриминация

Reading time5 min
Views33K
image


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

  • чей же рынок нынче, кто правит балом – работодатель или соискатель;
  • пресловутый возрастной ценз 45+, так ли всё плохо и безнадёжно.

Собственно, про эти вещи и пойдёт дальнейший разговор. Устраивайтесь поудобнее, будет много инсайда.

Две вышеуказанных темы очень близки друг другу и постоянно пересекаются в быту. Одно порождает другое.
Читать дальше →

Пишем веб сервис на Python с помощью FastAPI

Reading time17 min
Views129K
image

Знаю, знаю, наверное вы сейчас думаете «что, опять?!».

Да, на Хабре уже неоднократно писали о фреймворке FastAPI. Но я предлагаю рассмотреть этот инструмент немного подробнее и написать API своего собственного мини Хабра без кармы и рейтингов, зато с блэкджеком и с тестами, аутентификацией, миграциями и асинхронной работой с БД.
Читать дальше →

Go-swagger как основа взаимодействия микросервисов

Reading time9 min
Views26K


Здравствуй, NickName! Если ты программист и работаешь с микросервисной архитектурой, то представь, что тебе нужно настроить взаимодействие твоего сервиса А с каким-то новым и ещё неизвестным тебе сервисом Б. Что ты будешь делать в первую очередь?

Если задать такой вопрос 100 программистам из разных компаний, скорее всего, мы получим 100 разных ответов. Кто-то описывает контракты в swagger, кто-то в gRPC просто делает клиенты к своим сервисам без описания контракта. А кто-то и вовсе хранит JSON в гуглодоке :D. В большинстве компаний складывается свой подход к межсервисному взаимодействию на основании каких-либо исторических факторов, компетенций, стека технологий и прочего. Я хочу рассказать, как сервисы в Delivery Club общаются друг с другом и почему мы сделали именно такой выбор. И главное — как мы обеспечиваем актуальность документации с течением времени. Будет много кода!
Читать дальше →

Регрессионная спираль смерти

Reading time11 min
Views7.4K

Перевод статьи подготовлен в преддверии старта курса «Автоматизация тестирования на JavaScript»





История, которая может показаться вам до боли знакомой:


Вы работаете QA в небольшой команде разработчиков; сегодня утро четверга второй недели вашего двухнедельного спринта. У вашей команды еще несколько историй (story) в разработке, которые должны быть утверждены к утру пятницы, чтобы быть готовыми к демонстрации днем. Ваши планы на вечер четверга начинают таять на ваших глазах.

Читать дальше →

Изучаем mutmut — инструмент для мутационного тестирования на Python

Reading time3 min
Views8.3K
Мутационное тестирование позволяет выявить баги, которые не покрыты обычными тестами.

У вас есть тесты на все случаи жизни? Или может быть, в репозитории вашего проекта даже лежит справка «О 100-процентном тестовом покрытии»? Но разве в реальной жизни всё так просто и достижимо?


Читать дальше →

10 контринтуитивных выводов после 10 лет проведения DevOpsDays

Reading time8 min
Views4.6K
image

Ветеран DevOps Крис Байтаерт, стоявший у истоков DevOpsDays, делится своим опытом, и его выводы вас удивят.

Десять лет назад мы внезапно отправились в путешествие. Мы собрали нескольких наших хороших друзей в Генте (Бельгия), чтобы обсудить Agile, open-source и первый опыт работы с облачными технологиями. В 2009 году Джон Оллспоу и Пол Хаммонд выступили на Velocity с докладом «10+ развертываний в день: сотрудничество dev и ops в Flickr» (и запись этого доклада стоит посмотреть). Увидев это выступление, Патрик Дебуа решил основать DevOpsDays.

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

1. Нет такого понятия, как DevOps-инженер

Читать дальше →

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон, часть 2

Reading time17 min
Views71K

Я продолжаю выразительно пересказывать документацию Ансибла и разбирать последствия её незнания (ссылка на предыдущую часть).


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


Мы будем разбирать каждый элемент инвентори (кроме host_group_vars plugin) и обсуждать зачем он, как его использовать правильно, и как неправильно.


Оглавление:


  • Что такое хост? (и немного про транспорты)
  • Доступ IP vs FQDN; inventory_hostname vs ansible_host
  • ansible_user — писать или не писать?
  • Группы
  • Переменные: в инвентори или в плейбуку?
  • Классификация инвентори по происхождению.
Читать дальше →

Логирование в Kubernetes: EFK против PLG

Reading time6 min
Views28K


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


Эти же инструменты должны быть эффективными и производительными. В этой статье мы рассмотрим два популярных стека технологий: EFK (Elasticsearch) и PLG (Loki) и разберём их архитектуры и различия.

Читать дальше →

Борьба с нагрузкой в PostgreSQL, помогает ли репликация в этом. Андрей Сальников (Data Egret)

Reading time22 min
Views11K


Что делать, когда мастер сервер PostgreSQL погибает под нагрузкой?


Довольно часто встречается ситуация, когда база данных не тянет существующую нагрузку и вертикальное масштабирование железа не помогает. Менять PostgreSQL на другую базу данных или переделывать архитектуру приложения и отказываться от СУБД?

Читать дальше →

Устройство CPython. Доклад Яндекса

Reading time21 min
Views38K
Мы публикуем конспект вступительной лекции видеокурса «Бэкенд-разработка на Python». В ней Егор Овчаренко egorovcharenko, тимлид в Яндекс.Такси, рассказал о внутреннем устройстве интерпретатора CPython.


— Если кратко, какой у нас будет план? Сначала мы поговорим о том, почему будем изучать именно Python. Затем посмотрим, как работает интерпретатор CPython более глубоко, как он управляет памятью, как устроена система типов в Python, на словари, генераторы и исключения. Я думаю, это займет примерно час.
Читать дальше →

Советы руководителю от руководителя

Reading time11 min
Views120K
Привет, Хабр! Я управляю командами разработки уже 10 лет.

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

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

Поэтому выключаю тумблер «не будь выскочкой» и делюсь «секретами».



Тут не будет стандартных «делегируй», «налаживай процесс», «стой в правильной позе на стендапе» — об этом написано уже достаточно. Будет о другом.
Читать дальше →

Почему стоит начать использовать FastAPI прямо сейчас

Reading time5 min
Views17K
Привет, Хабровчане! В преддверии старта занятий в группах базового и продвинутого курсов «Разработчик Python», мы подготовили для вас еще один полезный перевод.






Python всегда был популярен для разработки легковесных веб-приложений благодаря потрясающим фреймворкам, таким как Flask, Django, Falcon и многим другим. Из-за лидирующей позиции Python как языка для машинного обучения, он особенно удобен для упаковки моделей и предоставления их в качестве сервиса.

В течение многих лет Flask был основным инструментом для таких задач, но, если вы еще не слышали, на его место появился новый претендент. FastAPI – это относительно новый фреймворк на Python, создание которого было вдохновлено его предшественниками. Он совершенствует их функционал и исправляет множество недостатков. FastAPI был построен на базе Starlette, и несет в себе кучу потрясающих функций.

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

Создаем конечный автомат в Elixir и Ecto

Reading time6 min
Views2.9K
Существует много полезных шаблонов проектирования и концепция конечного автомата входит в число полезных шаблонов проектирования.

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

В этой публикации вы узнаете, как реализовать этот шаблон с помощью Elixir и Ecto.
Читать дальше →

Бесплатные образовательные курсы: тестирование

Reading time5 min
Views291K
image

Ошибки и баги могут возникнуть в любых программах, поэтому тестировщиков нанимают многие крупные компании, которые разрабатывают программное обеспечение. А еще — небольшие фирмы, которые предоставляют услуги тестирования на аутсорс. Сегодня мы публикуем подборку из 14 бесплатных курсов по тестированию из нашего раздела Образование. Да, они, скорее, помогут вам получить базовые знания или освежить то, что вы уже и так знали, чем прокачаться до уровня синьора или лида. Но это не умаляет их полезности! Если вы видели что-то интересное, чего нет в этом выпуске — делитесь ссылками в комментариях.
Читать дальше →

На что ещё способны шаговые моторы? — Забивать голы в настольном хоккее

Reading time5 min
Views19K
Создавая своего первого робота (Робот для настольного хоккея), а именно механическую часть, узнал много интересного для себя, чем и хочу поделиться.

Механика робота для настольного хоккея

Примерно половину знаний я «нагуглил» или подсмотрел на Youtube, а вторую половину получил на практике, методом проб и ошибок в многочисленных экспериментах.

Расскажу про 4 момента, на мой взгляд заслуживающих особого внимания:

  1. Разгон шагового мотора до максимальных оборотов.
  2. Одновременная работа массива из шаговых моторов через один контроллер.
  3. Охлаждение шаговых моторов и драйверов.
  4. Как избавиться от писка шаговых моторов.

В настольном хоккее Stiga Play-Off с каждой стороны по 6 игроков (вратарь и 5 на поле). У моего робота для настольного хоккея, в соответствии с количеством игроков — 6 роборук, по одной руке для каждого игрока, и каждую руку приводят в движение 2 мотора. Первый мотор перемещает игрока вперёд и назад, а второй мотор вращает клюшку. Итого задействовано 12 шаговых моторов.

Почему именно шаговые моторы? Мне понадобилась точность и аккуратность, а шаговый мотор как раз и обладает способностью вращать вал строго на заданное количество градусов/шагов. Но, кроме точности, понадобилась скорость, и тут начались проблемы и поиск решения.
Читать дальше →

Сколько софта нужно купить для компании

Reading time15 min
Views9.9K
Мне пришлось поработать в разных по размеру компаниях – от маленькой конторы из 15 человек, снимающей пару комнат на чердаке, до международных компаний с офисами в разных странах и дорогущими корпоративами. И почти в каждой компании меня удивлял зоопарк используемого софта и жадность (или наоборот, расточительность) при выборе очередного инструмента.

В этой статье хотелось бы поделиться мыслями, какой софт и когда имеет смысл покупать для IT компании.

image
Читать дальше →

Программист с помойки

Reading time28 min
Views87K


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

Решение рассказать свою историю и пройти процедуру “каминг-аута” является определенным долгом перед Богом, людьми, которых уже нет, и теми, кто ещё пытается тянуть свою лямку. Я многому научился, читая дневники больных и ушедших, благодаря этому не сделал много ошибок, и смог нащупать путь, не превратившись в героя картины Климта “Жизнь и Смерть”.
Читать дальше →

Code review — улучшаем процесс

Reading time7 min
Views17K
image

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

Как этого можно избежать?
Читать дальше →

Spring: в поисках контекста

Reading time9 min
Views46K

Пару месяцев назад в моем профиле был опубликован подробный пост по загрузке классов на JVM. После этого доклада мои коллеги задались хорошим вопросом: а какой механизм использует Spring для разбора конфигураций и как он загружает классы из контекста?


Читать дальше →

Микросервисы со Spring Boot. Часть 5. Использование сервера имен Eureka

Reading time4 min
Views22K
В этой заключительной части нашей серии архитектур микросервисов мы научимся включать сервер имен Eureka и позволять микросервисам взаимодействовать с ним.

Это статья входит в серию статей «Микросервисы со Spring Boot»:


В этой серии статей вы познакомитесь с концепцией микросервисов и узнаете, как создавать микросервисы с помощью Spring Boot и Spring Cloud.

Это руководство поможет вам изучить основы микросервисных архитектур. Мы также начнем рассматривать базовую реализацию микросервиса со Spring Boot.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity