Евгений Козлов пишет про IT

Description
Руководитель платформенной команды в Т-Банке.

? Golang, Python, Ruby
? Backend, Databases, System Design
? Linux, DevOps, SRE
? Computer Science
? Личный опыт, Карьерные истории

Для связи: @ea_kozlov
Advertising
We recommend to visit
Roxman
Roxman
12,178,200 @roxman

Sharing my thoughts, discussing my projects, and traveling the world.

Contact: @borz

Last updated 3 days, 23 hours ago

HAYZON
HAYZON
6,631,082 @hayzonn

💼 How to create capital and increase it using cryptocurrency

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
⭐️ 𝐎𝐧𝐞 𝐋𝐨𝐯𝐞: @major
🍀 𝐌𝐲 𝐜𝐡𝐚𝐧𝐧𝐞𝐥𝐬: @kriptofo @tonfo
@geekstonmedia

Купить рекламу: https://telega.in/c/hayzonn

Last updated 22 hours ago

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

Last updated 1 month, 2 weeks ago

1 month ago

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

Дело в том что производительность это довольно сложно и складывается она из большого количества факторов. И для того чтобы грамотно бенчмаркать и профилировать очень полезно знать из чего же сложилась итоговая цифра.

К тому же, я посчитал важным показать внутренности на уровне ОС для того чтобы мы перейдя на уровень ЯП могли посмотреть во что именно превращаются красивые инструкции на языке Go / Python / Java или например Elixir / Rust. А учитывая то что мы рассмотрели на примере Linux - всё есть процессы. Нет никакой секретной магии в языках программирования делающей что-то быстрее или лучше. Всё везде одинаково так как языки для взаимодействия с ОС используют одни и теже примитивы - системные вызовы ?

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

Всем спасибо что читали, до встречи в новых постах!

1 month ago

CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 5. Потоки. Начало. Продолжаем разговор о конкурентности. Сегодня разбираемся с потоками. Начнем с основ и базовых определений. Пото́к выполне́ния (тред; от англ. thread — нить)…

1 month ago

CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 3. Процессы. Начало Сегодня поговорим о процессах операционной системы в контексте многозадачности. Процесс - это экземпляр компьютерной программы. Если компьютерная программа представляет…

4 months ago

Raft - Understandable Distributed Consensus

Последнее время я всё больше и больше погружаюсь в те самые Distributed Systems, которые уже несколько лет на хайпе, о которых говорят на каждом system design интервью и конференции.

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

Консенсус достигается с помощью софта реализующего конкретный протокол.

В качестве примеров такого софта можно привести:

Kafka + kraft
ClickHouse + CHKeeper (raft)
Kubernetes + etcd (raft protocol)
Cassandra + Paxos protocol

  • Отдельно стоит выделить Apache Zookeeper (протокол zab)

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

Как видите примеров много и используются они в довольно популярных технологиях.

Отличный материал для погружения в эту довольно обьёмную тему это Raft - Understandable Distributed Consensus - интерактивный гайд с анимациями, который шаг за шагом посвятит вас в основные этапы работы алгоритма на примерах.

https://thesecretlivesofdata.com/raft/

P.S. Расскажите о своем опыте работы с алгоритмами консенсуса? Неважно по работе или в пет проджектах?

4 months, 2 weeks ago

Ребята, это была жесть. В этом году меня в ШАДе не будет?

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

4 months, 3 weeks ago

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

Да, я знал со времен работы на Windows что есть магическая переменная PATH которая отвечает за поиск по набору директорий любой вводимой команды.
Да, я знал что например в домашней директории на Linux есть файлы занимающиеся настройкой переменных окружения.

Но вот в процессе создания плейбука я заметил что в некоторых случаях эти файлы остаются нетронутыми, но при этом всё работает, магия не правда ли?

Поэтому сегодня я поделюсь с вами заметкой в которой описаны все файлы участвующие при старте терминала помимо тех что лежат в домашней директории (bashrc, bash_profile)?

https://www.thegeekstuff.com/2008/10/execution-sequence-for-bash_profile-bashrc-bash_login-profile-and-bash_logout/

Советую посмотреть, особенно если при установке утилит ловите себя на мысли что не понимаете зачем просят что либо редактировать (в 99% это именно файлы из статьи)?

Ну и заодно можете пройтись по своей локальной машине и узнать сколько всего интересного делает ОС перед тем как показать заветный терминал.

P.S. Про переменную PATH https://www.ibm.com/docs/fi/aix/7.1?topic=accounts-path-environment-variable

6 months ago

The Deadlock Empire - интерактивный гайд по изучению конкурентности и примитивов синхронизации
Еще одна находка для тех кто постигает фундаментальные основы программирования.

Цикл задачек где пользователь это планировщик задач (runtime языка программирования) в распоряжении которого несколько потоков. Цель - находить ошибки и неопределенное поведение.

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

P.S. Сегодня с утреца немного залип и испытал огромное удовольствие?

deadlockempire.github.io

The Deadlock Empire

Slay dragons, learn concurrency! Play the cunning Scheduler, exploit flawed programs and defeat the armies of the Parallel Wizard.

**The Deadlock Empire - интерактивный гайд по изучению конкурентности и примитивов синхронизации**
6 months, 1 week ago

Классная статейка про то как вычитывать JSON из HTTP Body с помощью стандартной библиотеки Go c разбором возможных корнер кейсов и способами их обработки.
Ньюансов больше чем может показаться на первый взгляд.
Отличная материал для погружения вглубь в такой, казалось бы для многих очевидной теме?

Есть ли у вас в закладках избранные статьи на тему Go + JSON? Присылайте в комментарии)

www.alexedwards.net

How to Parse a JSON Request Body in Go - Alex Edwards

7 months, 1 week ago

Как я в первый раз попробовал покорить Big Tech

Продолжаю цикл о постов о моей карьере. Прошлый пост закончился на этапе как я уволился с позиции тимлида Ruby команды и решил покорять Big Tech. И получил приглашение пособеситься в Яндекс Такси на позицию Python разработчика. Расскажу "без купюр" о том как все происходило, запасайтесь попкорном?

? Скрининг с рекрутером
В назначенное время мы созвонились с рекрутером. Меня опрашивали по списку: стандартные вопросы о структурах данных и алгоритмах (какие знаю, какая сложность операций). По итогу получил положительный фидбэк. Далее требовалось согласовать даты следующих собесов. Их должно было быть 4. И все на решение задачек. Меня это не смутило, я это воспринял как вызов. Попросил назначить дату через 3 недели. Аргументировал это тем что мне нужен тайминг освежить знания и попрактиковаться.

? Подготовка к интервью
В условиях ограниченного времени я сфокусировался на самых распространенных темах и паттернах решения задач. В этом мне помогли подборки литкода:
Top Interview Questions - Easy CollectionTop Interview Questions - Medium Collection

? Цикл интервью

Примерно раз в неделю у меня были собеседования. На каждом нужно было решить 2 (а где-то даже 3 задачи). Всё шло хорошо. Но на последнем собесе я не смог решить последнюю задачу. Она была на динамическое программирование. Плюс интервьюер очень отличался от тех что были ранее, максимально отрешенный, отвечал односложно, подсказку вытянуть было нереально.

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

Настал час X, я пришел на собес, быстро нашел общий язык с интервьюером и мы решили все задачки. Я доволен, понимаю что это победа. Рекрутер написал в ЛС что всё круто, погнали выбирать команду.
? Фиты с командами

Первые фиты у меня были с командами непосредственно в Яндекс Такси. Обсуждали опыт, технологии и потенциальные условия сотрудничества. И на этих фитах я увидел первый красный флажочек. На каждом фите мне задавали 2 вопроса:
- Умею ли я круто писать на C++
- перееду ли я в Москву.

Я отвечал отрицательно на оба.

И во многом из за этих 2х пунктов команды меня отклоняли. Для справки: перед алгособесами я уточнял - ок что я буду писать на Python и работать из СПБ? Мне ответили - да.

В общем пройдя несколько фит секций я слегка опешил, рассказал рекрутеру об этой ситуации. Она буквально мне сказала следующее - Выбирай любую вакансию на Python с сайта Яндекса я устрою собес.

И тут Остапа понесло :). Я собеседовался в инфру, самодвижующиеся машины, в супер сложные направления типа RnD. И понял что просто слабоват для таких направлений. Но мне было очень интересно.

? OFFERПо итогу я получил оффер от Яндекс. Маркета на позицию Data Engineer. И он был на 30% ниже суммы которую я обозначил перед собеседованиями. С учетом того что я довольно сильно ужал свои финансовые аппетиты ради смены стэка и не претендовал на горы денег увидев такие цифры в оффере я опешил и понял что из принципа не приму его.
Торговаться со мной не стали, лишь пару раз попытались переубедить словами в стиле "Это же Яндекс, ты многое потеряешь, такого опыта как у нас нигде не получить". И в этот момент остатки пелены спали с моих глаз.

? Итоги

Несмотря на то что я так и не устроился работать в Яндекс, я не жалею о том что согласился на такой долгий процесс собеседований. Это был опыт который никакими курсами и книгами я бы не смог получить. Благодаря ему с меня спали розовые очки и я стал более прагматичен и стал лучше понимать чего же мне хочется, стал более осознанным чтоли. Без этого неудачного опыта были бы невозможны будущие успехи при собеседованиях в другие топ компании РФ и зарубежом.

Спасибо что читали, надеюсь что было интересно! Расскажите в комментариях о своем опыте интервью в Big tech?

8 months ago

? Изучение Python. Часть #3. Concurrency

Продолжаю цикл постов о том как изучал Python. Сегодняшний лот - конкурентность(многопоточность / мультипроцессинг / асинхронщина).

Основы по этой теме я изучил в университете, а практиковался уже когда работал на Ruby (в Купибилете бэкэнд был написан поверх асинхронной библиотеки).
При изучении аналогичной темы в Python мне было достаточно лишь грамотно провести параллели между абстракциями. И помогли мне в этом великолепные бесплатные статьи с сайта superfastpython

https://superfastpython.com/learning-paths/

Будучи ментором заметил что у начинающих специалистов возникает довольно много вопросов по этой теме, несмотря на обилие ресурсов в сети.
И написал на Хабр супер короткую заметку Практический гайд по процессам и потокам (и не только) в Python. Теперь перед любыми консультациями скидываю её ученикам, и мы созванивались только при условии что даже она не смогла помочь.

Bonus: В прошлом году у меня была мысль сделать цикл постов в виде задачек и решать их вместе с вами. В итоге я придумал задачку на многопоточность и нашел неочевидное поведение Python. Так я получил полноценную учетку на хабре? И в дополнение от учеников получал отзывы, что мои статьи на хабре читали даже их интервьюеры☺️

Расскажите в комментариях о вашем опыте работы с Concurrency, мне будет очень интересно ознакомиться)

Super Fast Python

Start Here - Super Fast Python

Python concurrency learning paths that you can use to get started and get really good at threading, multiprocessing, and asyncio.

***?*** **Изучение Python. Часть #3. Concurrency**
We recommend to visit
Roxman
Roxman
12,178,200 @roxman

Sharing my thoughts, discussing my projects, and traveling the world.

Contact: @borz

Last updated 3 days, 23 hours ago

HAYZON
HAYZON
6,631,082 @hayzonn

💼 How to create capital and increase it using cryptocurrency

👤 𝐅𝐨𝐮𝐧𝐝𝐞𝐫: @Tg_Syprion
🗓 ᴀᴅᴠᴇʀᴛɪsɪɴɢ: @SEO_Fam
⭐️ 𝐎𝐧𝐞 𝐋𝐨𝐯𝐞: @major
🍀 𝐌𝐲 𝐜𝐡𝐚𝐧𝐧𝐞𝐥𝐬: @kriptofo @tonfo
@geekstonmedia

Купить рекламу: https://telega.in/c/hayzonn

Last updated 22 hours ago

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

Last updated 1 month, 2 weeks ago