H-1B Visa: а я обладаю "специальными" навыками ❓
Справедливый вопрос: какие навыки считаются “специальными” для IT?
В контексте H-1B, под специальными навыками понимаются те, которые сложно заменить без специальных знаний и обучения. Далее несколько направлений, которые подходят под H-1B, но "уникальность" таких знаний для меня под вопросом.
1. Программирование и разработка ПО — владение языками программирования, такими как Java, Python, C++, JavaScript, Go и другие, часто требуется для разработчиков ПО, мобильных приложений, веб-разработчиков и архитекторов систем. Ну ок.
2. Работа с облачными технологиями — навыки работы с AWS, Microsoft Azure, Google Cloud и другими облачными платформами востребованы для инженеров DevOps, архитекторов облачных решений, специалистов по виртуализации и автоматизации инфраструктуры. Ну да, каждый день я уникален.
3. Инженерия данных и аналитика — включает умения работать с Big Data платформами (например, Hadoop, Apache Spark), а также знание языков SQL, R и Python. Эти навыки требуются для data engineers, data scientists, аналитиков больших данных и специалистов по BI (бизнес-аналитика). Ну таких тоже пруд-пруди.
4. Кибербезопасность — специалисты по информационной безопасности должны обладать знанием сетевой безопасности, управлением рисками, и часто сертификациями, такими как CISSP или CEH, чтобы защищать корпоративные данные и инфраструктуру. Тут могу согласиться, стек серьезный.
5. Машинное обучение и искусственный интеллект — знание алгоритмов, математических методов и таких технологий, как TensorFlow, PyTorch, применяется в роли ML-инженеров, специалистов по ИИ и data scientists. Навык хороший, довольно уникален.
6. Разработка и администрирование баз данных — опыт работы с реляционными и NoSQL базами данных, такими как Oracle, MySQL, MongoDB, востребован для администраторов баз данных и backend-разработчиков. Это спрашивают на базовых джуниор интервью.
Так, H-1B в IT-сфере - в чем подвох?
Для получения H-1B визы, работодатель должен подтвердить ☑️, что должность требует специфических технических знаний. На практике это означает, что компания должна обосновать, что вакансия предназначена для высококвалифицированного специалиста с конкретными навыками. Например, позиции DevOps, разработчиков на Java или аналитиков данных должны попадать под эту категорию, так как их функции требуют детальных технических знаний, понимания инструментов и платформ, а также опыта работы с конкретными языками программирования или технологиями.
Каждый из этих вариантов найма и виз предлагает свою степень гибкости, сроков и условий. Например, если вы хотите на долгий срок обосноваться в США, стоит задуматься о процессе получения грин-карты. Если же вам важна свобода выбора проектов, то C2C — отличное решение, но требует финансовой самостоятельности (или грамотного бухгалтера).
—
Дальше будет про C2C.
Справедливый вопрос: какие навыки считаются “специальными” для IT?
В контексте H-1B, под специальными навыками понимаются те, которые сложно заменить без специальных знаний и обучения. Далее несколько направлений, которые подходят под H-1B, но "уникальность" таких знаний для меня под вопросом.
1. Программирование и разработка ПО — владение языками программирования, такими как Java, Python, C++, JavaScript, Go и другие, часто требуется для разработчиков ПО, мобильных приложений, веб-разработчиков и архитекторов систем. Ну ок.
2. Работа с облачными технологиями — навыки работы с AWS, Microsoft Azure, Google Cloud и другими облачными платформами востребованы для инженеров DevOps, архитекторов облачных решений, специалистов по виртуализации и автоматизации инфраструктуры. Ну да, каждый день я уникален.
3. Инженерия данных и аналитика — включает умения работать с Big Data платформами (например, Hadoop, Apache Spark), а также знание языков SQL, R и Python. Эти навыки требуются для data engineers, data scientists, аналитиков больших данных и специалистов по BI (бизнес-аналитика). Ну таких тоже пруд-пруди.
4. Кибербезопасность — специалисты по информационной безопасности должны обладать знанием сетевой безопасности, управлением рисками, и часто сертификациями, такими как CISSP или CEH, чтобы защищать корпоративные данные и инфраструктуру. Тут могу согласиться, стек серьезный.
5. Машинное обучение и искусственный интеллект — знание алгоритмов, математических методов и таких технологий, как TensorFlow, PyTorch, применяется в роли ML-инженеров, специалистов по ИИ и data scientists. Навык хороший, довольно уникален.
6. Разработка и администрирование баз данных — опыт работы с реляционными и NoSQL базами данных, такими как Oracle, MySQL, MongoDB, востребован для администраторов баз данных и backend-разработчиков. Это спрашивают на базовых джуниор интервью.
Так, H-1B в IT-сфере - в чем подвох?
Для получения H-1B визы, работодатель должен подтвердить ☑️, что должность требует специфических технических знаний. На практике это означает, что компания должна обосновать, что вакансия предназначена для высококвалифицированного специалиста с конкретными навыками. Например, позиции DevOps, разработчиков на Java или аналитиков данных должны попадать под эту категорию, так как их функции требуют детальных технических знаний, понимания инструментов и платформ, а также опыта работы с конкретными языками программирования или технологиями.
Каждый из этих вариантов найма и виз предлагает свою степень гибкости, сроков и условий. Например, если вы хотите на долгий срок обосноваться в США, стоит задуматься о процессе получения грин-карты. Если же вам важна свобода выбора проектов, то C2C — отличное решение, но требует финансовой самостоятельности (или грамотного бухгалтера).
—
Дальше будет про C2C.
Работать по Corp-to-Corp (C2C) в США 👔
Интересный вариант, как мнеи другим cold-plunger'ам показался. Выглядит как реальный и гибкий вариант для IT-специалистов, особенно если вы планируете работать как независимый консультант или фрилансер на проекты.
C2C контракт заключается между двумя юридическими лицами. Обычно это означает, что у вас есть зарегистрированная компания (например, LLC в Канаде), и вы заключаете договор с американской компанией на выполнение услуг через ваше юридическое лицо, а не как индивидуальный подрядчик.
Основные преимущества C2C
1. Финансовая гибкость 💸: можно получать более высокий доход, так как у вас нет налогов на заработную плату, и вы сами управляете налоговыми обязательствами своей компании.
2. Контроль над проектами и графиком 🛂: C2C контракты предполагают большую независимость в проектной деятельности, и вы можете работать одновременно с несколькими клиентами.
3. Простота доступа к проектам в США 🗽: Поскольку в C2C вы работаете как компания, а не как физическое лицо, американские компании нередко охотнее заключают такие контракты с международными специалистами.
Как подготовиться к работе по C2C
1. Зарегистрировать компанию (LLC) как отдельное юридическое лицо. Это может быть простая корпорация или LLC в Канаде, которая будет выступать стороной договора с клиентом из США. Регистрация корпорации в Канаде достаточно проста и можно ее сделать онлайн.
2. Открыть банковский счет для бизнеса (после регистрации LLC) - это корпоративный счет в банке, чтобы принимать платежи по контракту, избегая смешивания личных и деловых финансов.
3. Оформить договор с американской компанией: После выбора проекта американская компания оформляет контракт с вашей корпорацией. В контракте указываются все условия, включая сроки проекта, оплату и конкретные обязанности вашей компании.
4. Рассмотрите необходимость рабочей визы или поездок в США: Если проект требует регулярных поездок в США, может понадобиться виза TN или B-1 (Business Visitor). Однако, если работа полностью удаленная, виза может не потребоваться, поскольку все операции осуществляются через вашу канадскую компанию.
C2C налоги и финансовые аспекты
- Налоговые обязательства в Канаде 🏦: Вы платите налоги как канадское юридическое лицо и можете вычитать бизнес-расходы (оборудование, программное обеспечение, аренда офиса и т.д.).
- Отчеты для IRS (США) 📝: Так как вы будете eработать с американскими клиентами, возможно, вам потребуется оформить форму W-8BEN-E для подтверждения статуса иностранного юридического лица. Эта форма помогает избежать двойного налогообложения в США, так как Канада и США имеют налоговое соглашение.
Пример
Представим, что вы DevOps инженер в Канаде с собственной компанией. Американская компания предлагает вам контракт на разработку и поддержку CI/CD процессов в своих проектах. Вы заключаете C2C контракт через свою LLC, работаете удаленно, самостоятельно выписываете инвойсы, получаете оплату на корпоративный счет и оплачиваете налоги по канадскому законодательству.
—-
Подытожим
Каждый из этих вариантов найма и виз предлагает свою степень гибкости, сроков и условий. Например, если вы хотите на долгий срок обосноваться в США, стоит задуматься о процессе получения грин-карты. Если же вам важна свобода выбора проектов, то C2C — отличное решение, но требует финансовой самостоятельности.
Интересный вариант, как мне
C2C контракт заключается между двумя юридическими лицами. Обычно это означает, что у вас есть зарегистрированная компания (например, LLC в Канаде), и вы заключаете договор с американской компанией на выполнение услуг через ваше юридическое лицо, а не как индивидуальный подрядчик.
Основные преимущества C2C
1. Финансовая гибкость 💸: можно получать более высокий доход, так как у вас нет налогов на заработную плату, и вы сами управляете налоговыми обязательствами своей компании.
2. Контроль над проектами и графиком 🛂: C2C контракты предполагают большую независимость в проектной деятельности, и вы можете работать одновременно с несколькими клиентами.
3. Простота доступа к проектам в США 🗽: Поскольку в C2C вы работаете как компания, а не как физическое лицо, американские компании нередко охотнее заключают такие контракты с международными специалистами.
Как подготовиться к работе по C2C
1. Зарегистрировать компанию (LLC) как отдельное юридическое лицо. Это может быть простая корпорация или LLC в Канаде, которая будет выступать стороной договора с клиентом из США. Регистрация корпорации в Канаде достаточно проста и можно ее сделать онлайн.
2. Открыть банковский счет для бизнеса (после регистрации LLC) - это корпоративный счет в банке, чтобы принимать платежи по контракту, избегая смешивания личных и деловых финансов.
3. Оформить договор с американской компанией: После выбора проекта американская компания оформляет контракт с вашей корпорацией. В контракте указываются все условия, включая сроки проекта, оплату и конкретные обязанности вашей компании.
4. Рассмотрите необходимость рабочей визы или поездок в США: Если проект требует регулярных поездок в США, может понадобиться виза TN или B-1 (Business Visitor). Однако, если работа полностью удаленная, виза может не потребоваться, поскольку все операции осуществляются через вашу канадскую компанию.
C2C налоги и финансовые аспекты
- Налоговые обязательства в Канаде 🏦: Вы платите налоги как канадское юридическое лицо и можете вычитать бизнес-расходы (оборудование, программное обеспечение, аренда офиса и т.д.).
- Отчеты для IRS (США) 📝: Так как вы будете eработать с американскими клиентами, возможно, вам потребуется оформить форму W-8BEN-E для подтверждения статуса иностранного юридического лица. Эта форма помогает избежать двойного налогообложения в США, так как Канада и США имеют налоговое соглашение.
Пример
Представим, что вы DevOps инженер в Канаде с собственной компанией. Американская компания предлагает вам контракт на разработку и поддержку CI/CD процессов в своих проектах. Вы заключаете C2C контракт через свою LLC, работаете удаленно, самостоятельно выписываете инвойсы, получаете оплату на корпоративный счет и оплачиваете налоги по канадскому законодательству.
—-
Подытожим
Каждый из этих вариантов найма и виз предлагает свою степень гибкости, сроков и условий. Например, если вы хотите на долгий срок обосноваться в США, стоит задуматься о процессе получения грин-карты. Если же вам важна свобода выбора проектов, то C2C — отличное решение, но требует финансовой самостоятельности.
Persistent Volumes и Persistent Volume Claims в Kubernetes: что к чему? 📦
Начиная работать с Kubernetes нечасто сразу начинаешь думать о storage layer. В продакшене же, работа с датой да еще и в ключе чтобы она "выживала" после рестарта пода — одна из важнейших задач. Сами контейнеры считаются эфемерными: они могут внезапно удаляться и пересоздаваться, и как только это происходит, данные пропадают. Сейчас расскажу про Persistent Volumes (PV) и Persistent Volume Claims (PVC): чем они отличаются и как использовать их эффективно.
Persistent Volume (PV): Хранилище на уровне кластера
PV — это абстракция в Kubernetes, представляющая собой выделенный участок памяти на уровне кластера, который может быть доступен для вашихhello-worldприложений. Чтобы лучше понять, представьте PV как выделенный диск на сервере. Это не просто “пространство”, а управляемый ресурс, который может существовать независимо от подов. PV описываем в манифесте и он может находиться на локальных или внешних хранилищах, таких как NFS, AWS EBS (или любой другой аналог из соседних облаков💭), или даже сетевые диски.
PV — это, по сути, глобально доступный storage, который можно подключать к подам, когда это нужно. Он может быть read-only (чтобы например хранить шаблоны HTML для веб-приложения или ML-модель которая используется разными подами для инференса) или read-write (тут примеры не нужны).
Persistent Volume Claim (PVC): Запрос на хранение данных
Теперь представьте, что ваше приложение — это под, который хочет получить доступ к данным. Вот тут и нужен PVC. Это запрос, который создается на уровне приложения и связывается с PV, если тот соответствует требованиям (размеру, доступности и т.д.). PVC работает как “запрос на доступ к данным” и позволяет подам подключаться к PV, получая таким образом нужное пространство.
PVC как бы говорит: «Эй, Kubernetes, мне нужно столько-то гигабайт пространства, чтобы хранить мои данные, и вот мои требования к доступу». Kubernetes затем связывает этот запрос с подходящим PV, если таковой доступен.
Как это работает вместе? 🤝
Когда приложение нуждается в persistent хранилище, оно создает PVC, а Kubernetes автоматически подбирает подходящий PV или создаёт новый (если используется Dynamic Provisioning). К примеру, если у вас есть Postgres или MySQL под, которому требуется хранение для баз данных, вы создаете PVC на нужное количество гигабайт, и Kubernetes позаботится о том, чтобы связать его с PV, который соответствует запросу. Это делает систему более гибкой - не нужно вручную добавлять диски для каждого нового пода. PVC позволяет разделять заботы об инфраструктуре (создание PV) и приложения (использование PVC).
Вот пример того, как выглядят PV и PVC в Kubernetes YAML-файлах:
В этом примере мы сначала создаём PV на 10ГБ и указываем, что его можно использовать только с одним подом (ReadWriteOnce). Далее создается PVC, который «просит» доступ к 10ГБ с такими же параметрами доступа, и Kubernetes связывает их автоматически.
Начиная работать с Kubernetes нечасто сразу начинаешь думать о storage layer. В продакшене же, работа с датой да еще и в ключе чтобы она "выживала" после рестарта пода — одна из важнейших задач. Сами контейнеры считаются эфемерными: они могут внезапно удаляться и пересоздаваться, и как только это происходит, данные пропадают. Сейчас расскажу про Persistent Volumes (PV) и Persistent Volume Claims (PVC): чем они отличаются и как использовать их эффективно.
Persistent Volume (PV): Хранилище на уровне кластера
PV — это абстракция в Kubernetes, представляющая собой выделенный участок памяти на уровне кластера, который может быть доступен для ваших
PV — это, по сути, глобально доступный storage, который можно подключать к подам, когда это нужно. Он может быть read-only (чтобы например хранить шаблоны HTML для веб-приложения или ML-модель которая используется разными подами для инференса) или read-write (тут примеры не нужны).
Persistent Volume Claim (PVC): Запрос на хранение данных
Теперь представьте, что ваше приложение — это под, который хочет получить доступ к данным. Вот тут и нужен PVC. Это запрос, который создается на уровне приложения и связывается с PV, если тот соответствует требованиям (размеру, доступности и т.д.). PVC работает как “запрос на доступ к данным” и позволяет подам подключаться к PV, получая таким образом нужное пространство.
PVC как бы говорит: «Эй, Kubernetes, мне нужно столько-то гигабайт пространства, чтобы хранить мои данные, и вот мои требования к доступу». Kubernetes затем связывает этот запрос с подходящим PV, если таковой доступен.
Как это работает вместе? 🤝
Когда приложение нуждается в persistent хранилище, оно создает PVC, а Kubernetes автоматически подбирает подходящий PV или создаёт новый (если используется Dynamic Provisioning). К примеру, если у вас есть Postgres или MySQL под, которому требуется хранение для баз данных, вы создаете PVC на нужное количество гигабайт, и Kubernetes позаботится о том, чтобы связать его с PV, который соответствует запросу. Это делает систему более гибкой - не нужно вручную добавлять диски для каждого нового пода. PVC позволяет разделять заботы об инфраструктуре (создание PV) и приложения (использование PVC).
Вот пример того, как выглядят PV и PVC в Kubernetes YAML-файлах:
# Persistent Volume
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/data/example-pv"
# Persistent Volume Claim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
В этом примере мы сначала создаём PV на 10ГБ и указываем, что его можно использовать только с одним подом (ReadWriteOnce). Далее создается PVC, который «просит» доступ к 10ГБ с такими же параметрами доступа, и Kubernetes связывает их автоматически.
Зачем надо понимать низкоуровневые детали хранения данных в Kubernetes?
Некоторыетаксистыспрашивают зачем нужно разбираться в таких вещах, как Persistent Volumes и их конфигурация. Неужели вам, как разработчику, нужно понимать все нюансы инфраструктуры, чтобы просто создать pod, или же это можно оставить на усмотрение DevOps/infrastructure engineer? 🔧
На первый взгляд, кажется, что концепция Kubernetes противоречит самой себе, типа Kubernetes стремится абстрагировать инфраструктуру и предоставить единый интерфейс для разработки и управления приложениями. Но в реальности, многие детали инфраструктуры, такие как NFS-сервер, параметры PV, и тому подобные вещи, приходится указывать прямо в манифесте пода. Это делает под зависимым от конкретной инфраструктуры и снижает его переносимость 🤸. Например, если указать в манифесте пода hostname NFS-сервера, этот под не сможет быть развернут без изменений в другом кластере с другой конфигурацией.
К счастью, Kubernetes предлагает способ, который позволяет разделить ответственность за настройку и использование внешних хранилищ между администраторами и разработчиками. Существуют два ключевых уровня:
1. Низкоуровневая настройка хранилища ▿ это область ответственности администраторов кластера. Они настраивают и управляют конкретными PV, решая, как и где будет храниться информация. В этом случае администраторы создают PV и указывают все необходимые параметры (например, конкретный NFS-сервер или параметры для динамического выделения места).
2. Высокоуровневое определение требований △ то, что делают разработчики. Они не указывают точные настройки хранилища, а лишь описывают, какой объем данных требуется их приложению, и какие условия доступа необходимы. С помощью PVC разработчик может просто запросить хранилище нужного размера, с необходимыми правами доступа, а Kubernetes самостоятельно выберет подходящий PV, связав запрос с доступным ресурсом.
Таким образом, разработчику нет необходимости напрямую взаимодействовать с низкоуровневыми аспектами хранения. Он может просто создать PVC, описав свои нужды, а Kubernetes обеспечит, чтобы хранилище было предоставлено согласно требованиям. Вместо указания конкретных параметров хранилища в каждом манифесте, разработчик задает общие требования в PVC. Это позволяет легко перенести приложение между кластерами, так как манифест не содержит привязок к конкретной инфраструктуре.
Kubernetes таким образом действительно абстрагирует инфраструктуру, но в то же время предоставляет гибкость, необходимую для настройки сложных, устойчивых к отказам приложений.
Подытожим
• PV — это физическое или виртуальное хранилище на уровне кластера, созданное администратором.
• PVC — это запрос на доступ к хранилищу от приложений.
• Автоматизация: благодаря Dynamic Provisioning Kubernetes может автоматически создавать PV на основе PVC, что сильно упрощает управление хранилищем в масштабах.
Некоторые
На первый взгляд, кажется, что концепция Kubernetes противоречит самой себе, типа Kubernetes стремится абстрагировать инфраструктуру и предоставить единый интерфейс для разработки и управления приложениями. Но в реальности, многие детали инфраструктуры, такие как NFS-сервер, параметры PV, и тому подобные вещи, приходится указывать прямо в манифесте пода. Это делает под зависимым от конкретной инфраструктуры и снижает его переносимость 🤸. Например, если указать в манифесте пода hostname NFS-сервера, этот под не сможет быть развернут без изменений в другом кластере с другой конфигурацией.
...
volumes:
- name: remote-data
nfs:
server: 1.2.3.4
path: /some/path
...
К счастью, Kubernetes предлагает способ, который позволяет разделить ответственность за настройку и использование внешних хранилищ между администраторами и разработчиками. Существуют два ключевых уровня:
1. Низкоуровневая настройка хранилища ▿ это область ответственности администраторов кластера. Они настраивают и управляют конкретными PV, решая, как и где будет храниться информация. В этом случае администраторы создают PV и указывают все необходимые параметры (например, конкретный NFS-сервер или параметры для динамического выделения места).
2. Высокоуровневое определение требований △ то, что делают разработчики. Они не указывают точные настройки хранилища, а лишь описывают, какой объем данных требуется их приложению, и какие условия доступа необходимы. С помощью PVC разработчик может просто запросить хранилище нужного размера, с необходимыми правами доступа, а Kubernetes самостоятельно выберет подходящий PV, связав запрос с доступным ресурсом.
Таким образом, разработчику нет необходимости напрямую взаимодействовать с низкоуровневыми аспектами хранения. Он может просто создать PVC, описав свои нужды, а Kubernetes обеспечит, чтобы хранилище было предоставлено согласно требованиям. Вместо указания конкретных параметров хранилища в каждом манифесте, разработчик задает общие требования в PVC. Это позволяет легко перенести приложение между кластерами, так как манифест не содержит привязок к конкретной инфраструктуре.
Kubernetes таким образом действительно абстрагирует инфраструктуру, но в то же время предоставляет гибкость, необходимую для настройки сложных, устойчивых к отказам приложений.
Подытожим
• PV — это физическое или виртуальное хранилище на уровне кластера, созданное администратором.
• PVC — это запрос на доступ к хранилищу от приложений.
• Автоматизация: благодаря Dynamic Provisioning Kubernetes может автоматически создавать PV на основе PVC, что сильно упрощает управление хранилищем в масштабах.
GitHub репозиторий: Project Based Learning
👾 Сегодня наткнулся на отличный GitHub репозиторий - Project Based Learning. Это целая куча учебных материалов, ориентированных на изучение программирования через проекты. Как по мне, это самый продуктивный подход: сразу работать над реальными задачами и не застревать на скучной теории (которая забывается с вероятностью 101% если ее не подкреплять практикой).
В этом репозитории есть проекты для самых разных языков программирования, и раздел для Python меня особенно зацепил. Для всех, кто хочет прокачать свои навыки в Python, тут найдется масса интересных и полезных проектов — от парсинга данных и создания веб-приложений до сложных задач по машинному обучению и работе с нейронными сетями.
Вот несколько разделов и проектов, которые мне показались интересными:
- Web Scraping 🔧: от простых парсеров сайтов с BeautifulSoup до продвинутых решений с Selenium и Scrapy.
- Web Applications 🌐: проекты по созданию блогов и чатов с Flask и Django, а также микросервисов и API.
- Data Science и Machine Learning 🤖: тут можно погрузиться в анализ данных, написать линейную регрессию с нуля или построить рекомендации.
- OpenCV 👀: для тех, кто хочет освоить обработку изображений, есть проекты для сканирования документов, распознавания лиц и даже детектирования фальшивых новостей.
- Deep Learning 🧠: много примеров работы с нейронными сетями — от построения простых CNN до детекторов объектов и масок.
- Miscellaneous 🔮: тут тоже очень много интересного, например, создание интерпретатора, игры «Жизнь», терминальных игр типа «Змейка», и даже построение блокчейна!
Особо хочу выделить проект для начинающих, который сразу привлек мое внимание: Programming Projects for Advanced Beginners #3a: Tic-Tac-Toe AI (ссылка). Это пошаговое руководство по созданию ИИ для крестиков-ноликов, где объясняется не только код, но и логика создания базового ИИ. Прекрасный проект для прокачки навыков и понимания того, как работает алгоритм принятия решений.
Этот репозиторий — просто находка для тех, кто хочет учиться через практику. Советую всем взглянуть, если хотите прокачать навыки программирования! 🚀
👾 Сегодня наткнулся на отличный GitHub репозиторий - Project Based Learning. Это целая куча учебных материалов, ориентированных на изучение программирования через проекты. Как по мне, это самый продуктивный подход: сразу работать над реальными задачами и не застревать на скучной теории (которая забывается с вероятностью 101% если ее не подкреплять практикой).
В этом репозитории есть проекты для самых разных языков программирования, и раздел для Python меня особенно зацепил. Для всех, кто хочет прокачать свои навыки в Python, тут найдется масса интересных и полезных проектов — от парсинга данных и создания веб-приложений до сложных задач по машинному обучению и работе с нейронными сетями.
Вот несколько разделов и проектов, которые мне показались интересными:
- Web Scraping 🔧: от простых парсеров сайтов с BeautifulSoup до продвинутых решений с Selenium и Scrapy.
- Web Applications 🌐: проекты по созданию блогов и чатов с Flask и Django, а также микросервисов и API.
- Data Science и Machine Learning 🤖: тут можно погрузиться в анализ данных, написать линейную регрессию с нуля или построить рекомендации.
- OpenCV 👀: для тех, кто хочет освоить обработку изображений, есть проекты для сканирования документов, распознавания лиц и даже детектирования фальшивых новостей.
- Deep Learning 🧠: много примеров работы с нейронными сетями — от построения простых CNN до детекторов объектов и масок.
- Miscellaneous 🔮: тут тоже очень много интересного, например, создание интерпретатора, игры «Жизнь», терминальных игр типа «Змейка», и даже построение блокчейна!
Особо хочу выделить проект для начинающих, который сразу привлек мое внимание: Programming Projects for Advanced Beginners #3a: Tic-Tac-Toe AI (ссылка). Это пошаговое руководство по созданию ИИ для крестиков-ноликов, где объясняется не только код, но и логика создания базового ИИ. Прекрасный проект для прокачки навыков и понимания того, как работает алгоритм принятия решений.
Этот репозиторий — просто находка для тех, кто хочет учиться через практику. Советую всем взглянуть, если хотите прокачать навыки программирования! 🚀
GitHub
GitHub - practical-tutorials/project-based-learning: Curated list of project-based tutorials
Curated list of project-based tutorials. Contribute to practical-tutorials/project-based-learning development by creating an account on GitHub.
Основные новинки GitHub с конференции Universe 2024: что полезно для DevOps.
GitHub Copilot X выходит на новый уровень 🆙
Те, кто уже поработал с GitHub Copilot, могут ждать нечто большее, чем просто автодополнение. Новые функции Copilot X делают его настоящим «умным помощником». Он теперь поддерживает ChatGPT-стиль общения, может анализировать кодовые базы, отвечать на вопросы по репозиторию и даже генерировать pull request’ы. Теперь не нужно прыгать между документацией и кодом, Copilot X может подсказать решения и поможет разобраться с сложными участками кода. Ускоряем разработку и уменьшаем когнитивную нагрузку (trends).
GitHub Code Search — быстрая навигация по коду 🔎
Новая система поиска в коде на GitHub значительно улучшена, позволяя быстрее находить и ключевые файлы, и определенные функции или методы. Code Search теперь может использовать AI-поддержку для выдачи более релевантных результатов, и это облегчает поиск нужных частей в огромных кодовых базах. Для DevOps это означает ускорение работы с многослойными проектами и, конечно, уменьшение времени на понимание кода.
Actions Importer — миграция на GitHub Actions становится проще 📥
Представили инструмент Actions Importer, который упрощает процесс миграции на GitHub Actions. В одном из сових проектов мы используем GitHub Actions, хорошо что переезжать никуда не надо (полгода назад кстати мигрировали из жиры). Теперь, если у вас были пайплайны на других CI/CD системах, вы можете импортировать их в GitHub практически без боли и адаптации. Actions Importer анализирует конфигурации и предлагает оптимизированные варианты миграции. Ок.
Private Repositories для GitHub Pages📄
Добавили возможность использовать приватные репозитории для GitHub Pages. Это даст возможность командам и организациям размещать документацию, ресурсы и прочий контент только для внутреннего пользования. Я сам лично не пользовался этой фичой но знаю кто плотно на ней сидит. Теперь можно создавать и тестировать конфиденциальные проекты, не опасаясь, что информация станет общедоступной. Отличная новость для тех, кто хочет поддерживать свою внутреннюю документацию и ресурсы в безопасности.
GitHub Enterprise расширяет возможности командной работы 🏦
GitHub Enterprise получил несколько обновлений, направленных на улучшение командной работы. Улучшены инструменты аналитики, безопасности и управления пользователями. Нам не сильно важно.
GitHub в 2024 году продолжает развиваться в сторону умного и автоматизированного инструмента, который понимает разработчика и помогает ему на всех этапах работы с кодом. С такими улучшениями работа становится не только эффективнее, но и, как минимум, интереснее.
GitHub Copilot X выходит на новый уровень 🆙
Те, кто уже поработал с GitHub Copilot, могут ждать нечто большее, чем просто автодополнение. Новые функции Copilot X делают его настоящим «умным помощником». Он теперь поддерживает ChatGPT-стиль общения, может анализировать кодовые базы, отвечать на вопросы по репозиторию и даже генерировать pull request’ы. Теперь не нужно прыгать между документацией и кодом, Copilot X может подсказать решения и поможет разобраться с сложными участками кода. Ускоряем разработку и уменьшаем когнитивную нагрузку (trends).
GitHub Code Search — быстрая навигация по коду 🔎
Новая система поиска в коде на GitHub значительно улучшена, позволяя быстрее находить и ключевые файлы, и определенные функции или методы. Code Search теперь может использовать AI-поддержку для выдачи более релевантных результатов, и это облегчает поиск нужных частей в огромных кодовых базах. Для DevOps это означает ускорение работы с многослойными проектами и, конечно, уменьшение времени на понимание кода.
Actions Importer — миграция на GitHub Actions становится проще 📥
Представили инструмент Actions Importer, который упрощает процесс миграции на GitHub Actions. В одном из сових проектов мы используем GitHub Actions, хорошо что переезжать никуда не надо (полгода назад кстати мигрировали из жиры). Теперь, если у вас были пайплайны на других CI/CD системах, вы можете импортировать их в GitHub практически без боли и адаптации. Actions Importer анализирует конфигурации и предлагает оптимизированные варианты миграции. Ок.
Private Repositories для GitHub Pages📄
Добавили возможность использовать приватные репозитории для GitHub Pages. Это даст возможность командам и организациям размещать документацию, ресурсы и прочий контент только для внутреннего пользования. Я сам лично не пользовался этой фичой но знаю кто плотно на ней сидит. Теперь можно создавать и тестировать конфиденциальные проекты, не опасаясь, что информация станет общедоступной. Отличная новость для тех, кто хочет поддерживать свою внутреннюю документацию и ресурсы в безопасности.
GitHub Enterprise расширяет возможности командной работы 🏦
GitHub Enterprise получил несколько обновлений, направленных на улучшение командной работы. Улучшены инструменты аналитики, безопасности и управления пользователями. Нам не сильно важно.
GitHub в 2024 году продолжает развиваться в сторону умного и автоматизированного инструмента, который понимает разработчика и помогает ему на всех этапах работы с кодом. С такими улучшениями работа становится не только эффективнее, но и, как минимум, интереснее.
Деплоил Grafana через Helm: история о том, как yaml формат почти победил меня (но нет) 🛠
Задача была задеплоить Grafana в Kubernetes с использованием Helm. Казалось бы, задача простая: есть готовый чарт, пара строк в values.yaml, и всё должно взлететь. Но сложности начались сразу после того, как я открыл документацию. Давайте погрузимся в моё путешествие от полного хаоса (несколько дней упорного пересобирания образов и чартов) к долгожданному успеху.
Первая попытка: «Сейчас я с корешом GPT все за 5 минут сделаю»
Начал я уверенно: создал values.yaml, прописал ключевые параметры — админские креды, persistence, ingress и так далее:
🚀 helm install, и я уже готов был праздновать победу. Но не тут-то было. В логах kubectl я вижу
Оказывается, Grafana даже не успела нормально стартовать, а логин с admin:admin_password просто не работал.
Разбор полётов: где мои ENV?
Посмотрев на ENV переменные, я понял, что мои adminUser и adminPassword вообще не применились:
WTF?! Почему вместо моего пароля используется какой-то рандомный? 🙃
Вторая попытка: давайте всёначнем сначала исправим
Решил пересмотреть документацию. Скопировал пример values.yaml, добавил existingSecret:
Создал секрет:
Снова helm upgrade, снова фиаско. Grafana всё ещё брала дефолтный секрет, а мои изменения не применялись. Оказалось, что Helm генерирует свой секрет при деплое, и даже с existingSecret он продолжал перезаписывать мои ENV.
Третья попытка: битва с values.yaml
После долгих часов дебага (и нескольких перезапусков контейнера) я наконец понял корень проблемы: параметры не должны были быть в секции grafana:, их нужно было выносить в корень values.yaml. Вот правильная структура:
Финал: всё заработало! 🎉
После правки структуры и ещё одного перезапуска с корректным values.yaml Grafana наконец-то зажила. Логин заработал, readiness-пробы прошли успешно, а я почувствовал себя настоящим победителем.
Выводы:
1. Внимательно следи за структурой values.yaml! Если параметры не в том месте — Helm их просто игнорирует.
2. Доверяй, но проверяй: после каждого деплоя проверяйте ENV и манифесты.
3. Helm — мощный инструмент, но с ним легко запутаться.
Если бы я сразу всё сделал правильно, сэкономил бы часы на деплой. Но зато теперь у меня есть история, как я поборол Helm и Grafana, а также ещё один кейс для блога 😅
Задача была задеплоить Grafana в Kubernetes с использованием Helm. Казалось бы, задача простая: есть готовый чарт, пара строк в values.yaml, и всё должно взлететь. Но сложности начались сразу после того, как я открыл документацию. Давайте погрузимся в моё путешествие от полного хаоса (несколько дней упорного пересобирания образов и чартов) к долгожданному успеху.
Первая попытка: «Сейчас я с корешом GPT все за 5 минут сделаю»
Начал я уверенно: создал values.yaml, прописал ключевые параметры — админские креды, persistence, ingress и так далее:
grafana:
enabled: true
adminUser: admin
adminPassword: admin_password
ingress:
enabled: true
hosts:
- grafana.example.com
🚀 helm install, и я уже готов был праздновать победу. Но не тут-то было. В логах kubectl я вижу
• Readiness probe failed: connection refused
• Invalid username or password
Оказывается, Grafana даже не успела нормально стартовать, а логин с admin:admin_password просто не работал.
Разбор полётов: где мои ENV?
Посмотрев на ENV переменные, я понял, что мои adminUser и adminPassword вообще не применились:
kubectl exec -it <grafana-pod> -- env | grep GF_SECURITY_ADMIN
GF_SECURITY_ADMIN_USER=admin
GF_SECURITY_ADMIN_PASSWORD=random_generated_password
WTF?! Почему вместо моего пароля используется какой-то рандомный? 🙃
Вторая попытка: давайте всё
Решил пересмотреть документацию. Скопировал пример values.yaml, добавил existingSecret:
grafana:
admin:
existingSecret: grafana-admin
userKey: admin-user
passwordKey: admin-password
Создал секрет:
kubectl create secret generic grafana-admin \
--from-literal=admin-user=admin \
--from-literal=admin-password=admin_password
Снова helm upgrade, снова фиаско. Grafana всё ещё брала дефолтный секрет, а мои изменения не применялись. Оказалось, что Helm генерирует свой секрет при деплое, и даже с existingSecret он продолжал перезаписывать мои ENV.
Третья попытка: битва с values.yaml
После долгих часов дебага (и нескольких перезапусков контейнера) я наконец понял корень проблемы: параметры не должны были быть в секции grafana:, их нужно было выносить в корень values.yaml. Вот правильная структура:
enabled: true
adminUser: admin
adminPassword: admin_password
persistence:
enabled: true
size: 10Gi
ingress:
enabled: true
hosts:
- grafana.example.com
Финал: всё заработало! 🎉
После правки структуры и ещё одного перезапуска с корректным values.yaml Grafana наконец-то зажила. Логин заработал, readiness-пробы прошли успешно, а я почувствовал себя настоящим победителем.
Выводы:
1. Внимательно следи за структурой values.yaml! Если параметры не в том месте — Helm их просто игнорирует.
2. Доверяй, но проверяй: после каждого деплоя проверяйте ENV и манифесты.
3. Helm — мощный инструмент, но с ним легко запутаться.
Если бы я сразу всё сделал правильно, сэкономил бы часы на деплой. Но зато теперь у меня есть история, как я поборол Helm и Grafana, а также ещё один кейс для блога 😅
👍1
ConfigMaps: как отвязать конфигурацию от подов
В Kubernetes одна из ключевых практик — это отделение конфигурации от приложений. Представьте, что у вас есть под, который нужно деплоить в разных окружениях: dev, staging и production. Если в каждой манифесте прописывать уникальные переменные, это превращается в настоящий кошмар. В таких случаях на помощь приходит ConfigMap.
Что такое ConfigMap?
ConfigMap — это объект API Kubernetes, который позволяет хранить пары ключ/значение. Сюда можно поместить строки, файлы или даже целые блоки конфигурации. Поды могут ссылаться на ConfigMap и получать значения переменных, что позволяет одному и тому же поду работать с разными конфигурациями.
Зачем это нужно?
Вы можете использовать один и тот же манифест пода во всех окружениях, подключая к нему разные ConfigMaps. Так конфигурация остается гибкой и централизованной. Подключить ConfigMap можно двумя способами:
• Через переменные окружения, которые подхватывает контейнер.
• Через volume, когда данные из ConfigMap монтируются как файлы.
Создание ConfigMap
ConfigMap можно создать несколькими способами:
1. Из манифеста YAML:
Применяем файл:
2. Через команду kubectl:
3. С использованием файлов:
Если у вас есть конфигурационный файл myconfig.txt, его можно подключить с помощью --from-file:
Команды для работы с ConfigMap
Чтобы посмотреть список всех ConfigMaps, достаточно выполнить:
А чтобы увидеть содержимое конкретного ConfigMap в формате YAML:
Совет: Если нужно вывести только данные, используйте jq:
Применение ConfigMap в разных окружениях
Суть в том, что ConfigMap позволяет избежать копипаста манифестов. Вы можете использовать один под-манифест и разные ConfigMaps в dev, staging и production окружениях. Под подключается к конфигурации по имени ConfigMap, и на каждом этапе окружение получает свои уникальные значения.
Итог: меньше ошибок, больше контроля над конфигурацией и чистые манифесты. А главное — DevOps становится чуть более удобным!
В Kubernetes одна из ключевых практик — это отделение конфигурации от приложений. Представьте, что у вас есть под, который нужно деплоить в разных окружениях: dev, staging и production. Если в каждой манифесте прописывать уникальные переменные, это превращается в настоящий кошмар. В таких случаях на помощь приходит ConfigMap.
Что такое ConfigMap?
ConfigMap — это объект API Kubernetes, который позволяет хранить пары ключ/значение. Сюда можно поместить строки, файлы или даже целые блоки конфигурации. Поды могут ссылаться на ConfigMap и получать значения переменных, что позволяет одному и тому же поду работать с разными конфигурациями.
Зачем это нужно?
Вы можете использовать один и тот же манифест пода во всех окружениях, подключая к нему разные ConfigMaps. Так конфигурация остается гибкой и централизованной. Подключить ConfigMap можно двумя способами:
• Через переменные окружения, которые подхватывает контейнер.
• Через volume, когда данные из ConfigMap монтируются как файлы.
Создание ConfigMap
ConfigMap можно создать несколькими способами:
1. Из манифеста YAML:
apiVersion: v1
kind: ConfigMap
metadata:
name: kiada-config
data:
status-message: This status message is set in the kiada-config config map Применяем файл:
kubectl apply -f cm.kiada-config.yaml2. Через команду kubectl:
kubectl create configmap kiada-config --from-literal=status-message="This status message is set in the kiada-config config map"3. С использованием файлов:
Если у вас есть конфигурационный файл myconfig.txt, его можно подключить с помощью --from-file:
kubectl create configmap my-config --from-file=myconfig.txtКоманды для работы с ConfigMap
Чтобы посмотреть список всех ConfigMaps, достаточно выполнить:
kubectl get cmА чтобы увидеть содержимое конкретного ConfigMap в формате YAML:
kubectl get cm kiada-config -o yamlСовет: Если нужно вывести только данные, используйте jq:
kubectl get cm kiada-config -o json | jq .dataПрименение ConfigMap в разных окружениях
Суть в том, что ConfigMap позволяет избежать копипаста манифестов. Вы можете использовать один под-манифест и разные ConfigMaps в dev, staging и production окружениях. Под подключается к конфигурации по имени ConfigMap, и на каждом этапе окружение получает свои уникальные значения.
Итог: меньше ошибок, больше контроля над конфигурацией и чистые манифесты. А главное — DevOps становится чуть более удобным!
👍1
Azure Data Studio: Инструмент для работы с данными в стиле DevOps 🤖
В работе с данными на backend кластерах Kusto и SQL для меня было важно выбрать инструмент, который не только позволяет эффективно взаимодействовать с удалёнными серверами, но и упрощает визуализацию и анализ. Для этого я использую Azure Data Studio — и сегодня хочу рассказать, чем он хорош и где его приходится терпеть.
Что нравится? 👍
1. Jupyter-подобные ноутбуки 🪐
Люблю ноутбуки в стиле Jupyter, и Azure Data Studio в этом плане не разочаровывает. Можно удобно комбинировать код, результаты запросов и визуализацию прямо в одном документе. Это особенно полезно, когда нужно быстро протестировать гипотезы или поделиться результатами с командой. Смотрим скриншоты в коментах.
2. Визуализация данных 💡
Иногда сухие цифры говорят меньше, чем хорошо построенный график. ADS предлагает встроенные инструменты визуализации, что позволяет быстро преобразовывать результаты запросов в наглядные диаграммы. Не надо прыгать в Excel или какие-то внешние тулзы.
3. Подключение к удалённым серверам 🌍
Azure Data Studio отлично работает с удалёнными Kusto и SQL серверами. Настроил соединение — и работай без необходимости вручную переключаться между разными инструментами. Это особенно ценно, если вы в DevOps контексте, где оперативный доступ к данным играет ключевую роль.
Что раздражает? 😠
1. Работа с файлами 📁
Вот тут всё довольно странно. Workflow с файлами в ADS оставляет желать лучшего: сохранение и организация документов кажутся неудобными и недостаточно гибкими. У меня каждый раз ощущение, что это могло быть проще, но почему-то приходится мириться с этим “специфическим” подходом.
2. Интеграция с системой контроля версий (CSV) 🔄
Версии и отслеживание изменений в данных — основа современной разработки. ADS поддерживает интеграцию с Git, но всё это реализовано не самым удобным образом. Например, отсутствуют многие привычные мелочи, которые можно встретить в более зрелых IDE. Это замедляет работу, особенно если приходится часто переключаться между ветками или разбираться с конфликтами.
Итог 📝
Несмотря на мелкие недочёты, Azure Data Studio остаётся одним из моих любимых инструментов для работы с данными. Он делает много вещей правильно: от поддержки ноутбуков до удобного подключения к удалённым серверам. Если вы работаете с большими данными в DevOps или просто хотите упростить анализ информации, рекомендую попробовать. А что вы думаете об Azure Data Studio?
В работе с данными на backend кластерах Kusto и SQL для меня было важно выбрать инструмент, который не только позволяет эффективно взаимодействовать с удалёнными серверами, но и упрощает визуализацию и анализ. Для этого я использую Azure Data Studio — и сегодня хочу рассказать, чем он хорош и где его приходится терпеть.
Что нравится? 👍
1. Jupyter-подобные ноутбуки 🪐
Люблю ноутбуки в стиле Jupyter, и Azure Data Studio в этом плане не разочаровывает. Можно удобно комбинировать код, результаты запросов и визуализацию прямо в одном документе. Это особенно полезно, когда нужно быстро протестировать гипотезы или поделиться результатами с командой. Смотрим скриншоты в коментах.
2. Визуализация данных 💡
Иногда сухие цифры говорят меньше, чем хорошо построенный график. ADS предлагает встроенные инструменты визуализации, что позволяет быстро преобразовывать результаты запросов в наглядные диаграммы. Не надо прыгать в Excel или какие-то внешние тулзы.
3. Подключение к удалённым серверам 🌍
Azure Data Studio отлично работает с удалёнными Kusto и SQL серверами. Настроил соединение — и работай без необходимости вручную переключаться между разными инструментами. Это особенно ценно, если вы в DevOps контексте, где оперативный доступ к данным играет ключевую роль.
Что раздражает? 😠
1. Работа с файлами 📁
Вот тут всё довольно странно. Workflow с файлами в ADS оставляет желать лучшего: сохранение и организация документов кажутся неудобными и недостаточно гибкими. У меня каждый раз ощущение, что это могло быть проще, но почему-то приходится мириться с этим “специфическим” подходом.
2. Интеграция с системой контроля версий (CSV) 🔄
Версии и отслеживание изменений в данных — основа современной разработки. ADS поддерживает интеграцию с Git, но всё это реализовано не самым удобным образом. Например, отсутствуют многие привычные мелочи, которые можно встретить в более зрелых IDE. Это замедляет работу, особенно если приходится часто переключаться между ветками или разбираться с конфликтами.
Итог 📝
Несмотря на мелкие недочёты, Azure Data Studio остаётся одним из моих любимых инструментов для работы с данными. Он делает много вещей правильно: от поддержки ноутбуков до удобного подключения к удалённым серверам. Если вы работаете с большими данными в DevOps или просто хотите упростить анализ информации, рекомендую попробовать. А что вы думаете об Azure Data Studio?
❤🔥1
Secrets vs ConfigMaps в Kubernetes: когда что использовать?
В мире Kubernetes, где каждый элемент кластера нацелен на безопасность и масштабируемость, хранение чувствительных данных — отдельный челлендж. Сейчас разберёмся в различиях между ConfigMap и Secret, а также когда лучше использовать каждый из них.
Общие черты ConfigMap и Secret
На первый взгляд, ConfigMap и Secret кажутся схожими: оба ресурса Kubernetes хранят пары ключ-значение, которые можно монтировать в контейнеры или использовать как переменные окружения. Тем не менее, они имеют разные цели и особенности.
Основные различия
• ConfigMap используется для хранения некритичной конфигурации, например, параметров приложения или переменных окружения.
• Secret предназначен для хранения чувствительных данных: паролей, токенов и сертификатов. Эти данные кодируются в формате Base64, что помогает минимизировать риски случайно слить этот секрет.
Ключевые различия можно представить так:
Свойство ConfigMap Secret
data Строковые данные Base64-данные
stringData Нет Есть
immutable Поддерживается Поддерживается
type Нет Может быть указан (например, Opaque)
Типы Secret
Secrets поддерживают несколько встроенных типов, которые оптимизированы под определённые задачи:
• Opaque — универсальный тип для любых данных.
• bootstrap.kubernetes.io/token — токены для начальной настройки кластера.
• kubernetes.io/tls — хранение TLS-сертификатов.
• kubernetes.io/service-account-token — токены для сервисных аккаунтов.
Эти типы помогают Kubernetes понимать, как именно использовать секрет.
Когда что использовать?
• Используйте ConfigMap для конфигурационных данных, которые не содержат критичной информации. Например файл .ENV где хранятся параметры вашего питон аппа.
• Используйте Secret для любого чувствительного контента. Даже если данные кажутся безобидными, лучше перестраховаться и хранить их в Secret.
Как всегда, «простые решения для сложных задач» — ваш путь к мастерству в DevOps!
В мире Kubernetes, где каждый элемент кластера нацелен на безопасность и масштабируемость, хранение чувствительных данных — отдельный челлендж. Сейчас разберёмся в различиях между ConfigMap и Secret, а также когда лучше использовать каждый из них.
Общие черты ConfigMap и Secret
На первый взгляд, ConfigMap и Secret кажутся схожими: оба ресурса Kubernetes хранят пары ключ-значение, которые можно монтировать в контейнеры или использовать как переменные окружения. Тем не менее, они имеют разные цели и особенности.
Основные различия
• ConfigMap используется для хранения некритичной конфигурации, например, параметров приложения или переменных окружения.
• Secret предназначен для хранения чувствительных данных: паролей, токенов и сертификатов. Эти данные кодируются в формате Base64, что помогает минимизировать риски случайно слить этот секрет.
Ключевые различия можно представить так:
Свойство ConfigMap Secret
data Строковые данные Base64-данные
stringData Нет Есть
immutable Поддерживается Поддерживается
type Нет Может быть указан (например, Opaque)
Типы Secret
Secrets поддерживают несколько встроенных типов, которые оптимизированы под определённые задачи:
• Opaque — универсальный тип для любых данных.
• bootstrap.kubernetes.io/token — токены для начальной настройки кластера.
• kubernetes.io/tls — хранение TLS-сертификатов.
• kubernetes.io/service-account-token — токены для сервисных аккаунтов.
Эти типы помогают Kubernetes понимать, как именно использовать секрет.
Когда что использовать?
• Используйте ConfigMap для конфигурационных данных, которые не содержат критичной информации. Например файл .ENV где хранятся параметры вашего питон аппа.
• Используйте Secret для любого чувствительного контента. Даже если данные кажутся безобидными, лучше перестраховаться и хранить их в Secret.
Как всегда, «простые решения для сложных задач» — ваш путь к мастерству в DevOps!
👏2
Зарплаты IT-директоров: сколько стоит управлять технологиями? 💸
На днях наткнулся на исследование о зарплатах московских IT-директоров, и цифры, мягко говоря, впечатляют. Говорим о цифрах от 800 тысяч до 2 миллионов рублей в месяц. Да, в месяц. Для сравнения, средний DevOps-инженер получает 200–400 тысяч рублей, а тут уровень космоса. Разбираемся, почему так дорого.
Почему IT-директора получают миллионы? 🍋
1. Ответственность уровня C-level. 🔑
IT-директор — это не просто технарь с навыками управления. Это стратег, который определяет, куда пойдут технологии компании. Один неверный шаг — и ваш бизнес может отстать на годы. От них требуют не только знания Kubernetes и облаков, но и понимание финансов, маркетинга и корпоративных процессов.
2. Конкуренция за таланты. 🎭
Сегодня IT-директоры нужны всем: от банков до ретейла. Те, кто может одновременно держать в голове стратегию цифровой трансформации, управлять командой и понимать, что такое финтех, стоят на вес золота.
3. Рост технологической сложности. 💻
Управлять IT-инфраструктурой в 2024 году — это уже не про «сервер работает, всё в порядке». Компании переходят на гибридные облака, внедряют AI, работают с миллионами запросов в секунду. И кто-то должен этим всем руководить.
Какие навыки ценят? 🤹
В топе требований:
• Технологическая экспертиза. Микросервисы, облака, безопасность, DevSecOps — всё это обязательно.
• Управление командой. Найти подход к каждому, не забывая про дедлайны и бюджеты.
• Бизнес-ориентированность. IT-директор должен говорить с генеральным директором на одном языке.
Куда катится рынок? 💹
Миллионные зарплаты IT-директоров — это индикатор роста важности технологий в бизнесе. Если раньше IT был вспомогательной функцией, то теперь он — двигатель бизнеса. Без грамотного IT-руководства компания теряет не только деньги, но и место на рынке.
Вывод? Растите навыки и смотрите в сторону менеджмента, если хотите войти в этот элитный клуб. А пока — продолжайте изучать Kubernetes и Terraform. Кто знает, возможно, в будущем кто-то из нас станет тем самым IT-директором с зарплатой в 2 миллиона.
Что думаете? Сильно ли нас переоценили или, наоборот, заслужили? Делитесь мыслями в комментариях! 💬
На днях наткнулся на исследование о зарплатах московских IT-директоров, и цифры, мягко говоря, впечатляют. Говорим о цифрах от 800 тысяч до 2 миллионов рублей в месяц. Да, в месяц. Для сравнения, средний DevOps-инженер получает 200–400 тысяч рублей, а тут уровень космоса. Разбираемся, почему так дорого.
Почему IT-директора получают миллионы? 🍋
1. Ответственность уровня C-level. 🔑
IT-директор — это не просто технарь с навыками управления. Это стратег, который определяет, куда пойдут технологии компании. Один неверный шаг — и ваш бизнес может отстать на годы. От них требуют не только знания Kubernetes и облаков, но и понимание финансов, маркетинга и корпоративных процессов.
2. Конкуренция за таланты. 🎭
Сегодня IT-директоры нужны всем: от банков до ретейла. Те, кто может одновременно держать в голове стратегию цифровой трансформации, управлять командой и понимать, что такое финтех, стоят на вес золота.
3. Рост технологической сложности. 💻
Управлять IT-инфраструктурой в 2024 году — это уже не про «сервер работает, всё в порядке». Компании переходят на гибридные облака, внедряют AI, работают с миллионами запросов в секунду. И кто-то должен этим всем руководить.
Какие навыки ценят? 🤹
В топе требований:
• Технологическая экспертиза. Микросервисы, облака, безопасность, DevSecOps — всё это обязательно.
• Управление командой. Найти подход к каждому, не забывая про дедлайны и бюджеты.
• Бизнес-ориентированность. IT-директор должен говорить с генеральным директором на одном языке.
Куда катится рынок? 💹
Миллионные зарплаты IT-директоров — это индикатор роста важности технологий в бизнесе. Если раньше IT был вспомогательной функцией, то теперь он — двигатель бизнеса. Без грамотного IT-руководства компания теряет не только деньги, но и место на рынке.
Вывод? Растите навыки и смотрите в сторону менеджмента, если хотите войти в этот элитный клуб. А пока — продолжайте изучать Kubernetes и Terraform. Кто знает, возможно, в будущем кто-то из нас станет тем самым IT-директором с зарплатой в 2 миллиона.
Что думаете? Сильно ли нас переоценили или, наоборот, заслужили? Делитесь мыслями в комментариях! 💬
👍1
Какой-то очень прорывной момент в смежной отрасли https://youtube.com/shorts/AYX-qJ8CJ5E?si=_2UQp3xz33Z86Jh_
YouTube
Adobe just revolutionized 2D to 3D art! #fyp #adobe #adobeillustrator #digitalart
🍾2
Debugging в Python: так делают только крутые пограммисты 👨💻
Когда я работаю с данными в Python, особенно с ответами от API, постоянно возникает ситуация когда print(response) выводит что-то вроде <Response [200]>. Это, конечно, подтверждает, что запрос был успешным, но я остаюсь в полном неведении что внутри полученного ответа. Вот почему дебагинг в Python — это суперсила, которая позволяет вам увидеть больше, копнуть глубже и контролировать процесс.
Пример из реальной жизни 🌿
На скриншоте (в комменте) я работал с объектом response от библиотеки requests. При вызове print(response) я увидел <Response [200]>. Но это ничего не говорит о содержимом. Чтобы разобраться, что там на самом деле, я использовал дебаггер.
Дебаггер позволяет: 🔍
1. Залезть внутрь объекта: Посмотреть, что лежит в response.content, response.json(), или даже response.headers. Вы не просто видите данные, но можете исследовать их структуру.
2. Исполнять методы во время исполнения программы: Например, я могу выполнить response.json() прямо внутри дебаггера, и он покажет мне содержимое JSON в читаемом формате. Это удобнее, чем разбирать строки руками.
3. Навигация по объектам: Вы можете буквально “прогуляться” по ключам и атрибутам объекта, чтобы найти именно то поле, которое вам нужно.
Почему дебагинг — это must have?
- Экономия времени: Вместо того чтобы гадать, что внутри объекта, вы сразу видите его содержимое.
- Интерактивность: Во время исполнения программы вы можете пробовать различные методы или манипуляции с данными.
- Контекст: Вы видите не только то, что хранится в объекте, но и откуда эти данные пришли, как они были обработаны и что с ними можно сделать дальше.
Вот пример, как я использую дебаггер для работы с response:
1. Включаем дебаггер: Например, в PyCharm, я могу установить точку останова на строке, где получаю response.
2. Открываем объект response:
- Поле content показывает байты.
- Поле json() показывает парсированный объект JSON.
3. Извлечение нужных данных: Например, мне нужно
Вообщем, это не только инструмент для поиска ошибок, но и способ понять, как ваша программа работает. Он помогает экономить время, дает уверенность в том, что вы правильно понимаете данные, и позволяет тестировать гипотезы на ходу. Незаменимая вещь, как по мне!
Когда я работаю с данными в Python, особенно с ответами от API, постоянно возникает ситуация когда print(response) выводит что-то вроде <Response [200]>. Это, конечно, подтверждает, что запрос был успешным, но я остаюсь в полном неведении что внутри полученного ответа. Вот почему дебагинг в Python — это суперсила, которая позволяет вам увидеть больше, копнуть глубже и контролировать процесс.
Пример из реальной жизни 🌿
На скриншоте (в комменте) я работал с объектом response от библиотеки requests. При вызове print(response) я увидел <Response [200]>. Но это ничего не говорит о содержимом. Чтобы разобраться, что там на самом деле, я использовал дебаггер.
Дебаггер позволяет: 🔍
1. Залезть внутрь объекта: Посмотреть, что лежит в response.content, response.json(), или даже response.headers. Вы не просто видите данные, но можете исследовать их структуру.
2. Исполнять методы во время исполнения программы: Например, я могу выполнить response.json() прямо внутри дебаггера, и он покажет мне содержимое JSON в читаемом формате. Это удобнее, чем разбирать строки руками.
3. Навигация по объектам: Вы можете буквально “прогуляться” по ключам и атрибутам объекта, чтобы найти именно то поле, которое вам нужно.
Почему дебагинг — это must have?
- Экономия времени: Вместо того чтобы гадать, что внутри объекта, вы сразу видите его содержимое.
- Интерактивность: Во время исполнения программы вы можете пробовать различные методы или манипуляции с данными.
- Контекст: Вы видите не только то, что хранится в объекте, но и откуда эти данные пришли, как они были обработаны и что с ними можно сделать дальше.
Вот пример, как я использую дебаггер для работы с response:
1. Включаем дебаггер: Например, в PyCharm, я могу установить точку останова на строке, где получаю response.
2. Открываем объект response:
- Поле content показывает байты.
- Поле json() показывает парсированный объект JSON.
3. Извлечение нужных данных: Например, мне нужно
response['choices'][0]['message']['content']. Вместо написания кучи print()-ов я просто залез в объект через дебаггер и нашел путь к этому полю.Вообщем, это не только инструмент для поиска ошибок, но и способ понять, как ваша программа работает. Он помогает экономить время, дает уверенность в том, что вы правильно понимаете данные, и позволяет тестировать гипотезы на ходу. Незаменимая вещь, как по мне!
🔥2
Почему labels в Kubernetes так важны (но это не сразу очевидно) 🏷
Если вы начинаете знакомство с Kubernetes, то наверняка заметили: в большинстве туториалов уже на первых этапах появляются labels. Чуть ли не сразу после запуска пода или деплоя, авторы рекомендуют добавить к нему пару лейблов, например,
Зачем вообще нужны лейблы? 🤔
В Kubernetes labels — это способ добавлять метаданные к объектам, такие как поды, ноды или сервисы. Это своего рода “сопроводительные записки”, которые вы можете клеить на свои ресурсы, чтобы потом проще с ними взаимодействовать. Лейблы не влияют напрямую на поведение объектов, но их сила проявляется, когда вы начинаете работать с selectors. А это важно в следующих случаях:
1. Разделение ресурсов: Например, у вас есть ноды, которые обрабатывают запросы фронтенда, и те, что заняты бекендом. Вы добавляете к ним лейблы:
•
•
Теперь вы можете настроить поды так, чтобы фронтенд запускался только на нодах с
2. Мониторинг и масштабирование: Лейблы помогают создавать удобные группы объектов для мониторинга и автоматического масштабирования. Например, вы можете группировать поды по
3. Упрощение управления: Когда кластер растет, вам нужно как-то отличать ресурсы друг от друга. Лейблы вроде
А теперь про новичков
Вот в чем проблема: лейблы полезны только тогда, когда вы понимаете, как ими пользоваться. Если вы только начали изучать Kubernetes, то, скорее всего, ваш первый кластер состоит из пары нод, нескольких подов и одного-двух сервисов. Добавлять лейблы здесь — это как ставить GPS-метки на деревья в собственном саду: вроде можно, но зачем?
На первых этапах вы не будете управлять сотнями подов, не будете строить сложные селекторы и, скорее всего, будете запускать приложения вручную. Это нормально. Так зачем тогда утяжелять обучение, заставляя использовать лейблы, когда можно спокойно пропустить этот шаг?
Пример из жизни
Вот ситуация. У вас есть два деплоя: фронтенд и бекенд. Вы создаете поды, ноды, и вроде все работает. Через пару недель кто-то просит вас ограничить запуск фронтенда на определенные ноды. Если у вас заранее не было лейблов на этих нодах, придется вручную их добавлять, а затем менять конфигурацию. Это неудобно. Если бы вы заранее проставили лейблы, работа заняла бы пару минут.
Мой совет: если вы новичок, не зацикливайтесь на лейблах с самого начала. Узнайте, как они работают, и держите их в голове, но не тратьте время на внедрение, пока не начнете видеть необходимость в их использовании. Лейблы — это не про «обязательные теги», это инструмент для удобства и масштабирования, который становится действительно ценным с ростом вашей инфраструктуры.
Как говорится, не наклеивайте ярлыки, пока не поймете, зачем это нужно. 😉
Если вы начинаете знакомство с Kubernetes, то наверняка заметили: в большинстве туториалов уже на первых этапах появляются labels. Чуть ли не сразу после запуска пода или деплоя, авторы рекомендуют добавить к нему пару лейблов, например,
app=frontend или tier=backend. Хотя честно, если вы новичок, вряд ли вы сразу поймете, зачем вам это нужно.Зачем вообще нужны лейблы? 🤔
В Kubernetes labels — это способ добавлять метаданные к объектам, такие как поды, ноды или сервисы. Это своего рода “сопроводительные записки”, которые вы можете клеить на свои ресурсы, чтобы потом проще с ними взаимодействовать. Лейблы не влияют напрямую на поведение объектов, но их сила проявляется, когда вы начинаете работать с selectors. А это важно в следующих случаях:
1. Разделение ресурсов: Например, у вас есть ноды, которые обрабатывают запросы фронтенда, и те, что заняты бекендом. Вы добавляете к ним лейблы:
•
role=frontend•
role=backendТеперь вы можете настроить поды так, чтобы фронтенд запускался только на нодах с
role=frontend, а бекенд — на role=backend. Это обеспечивается с помощью Node Affinity или Node Selector.2. Мониторинг и масштабирование: Лейблы помогают создавать удобные группы объектов для мониторинга и автоматического масштабирования. Например, вы можете группировать поды по
app=payments и отслеживать, как нагружается ваша платежная система.3. Упрощение управления: Когда кластер растет, вам нужно как-то отличать ресурсы друг от друга. Лейблы вроде
environment=prod или environment=dev помогают изолировать окружения.А теперь про новичков
Вот в чем проблема: лейблы полезны только тогда, когда вы понимаете, как ими пользоваться. Если вы только начали изучать Kubernetes, то, скорее всего, ваш первый кластер состоит из пары нод, нескольких подов и одного-двух сервисов. Добавлять лейблы здесь — это как ставить GPS-метки на деревья в собственном саду: вроде можно, но зачем?
На первых этапах вы не будете управлять сотнями подов, не будете строить сложные селекторы и, скорее всего, будете запускать приложения вручную. Это нормально. Так зачем тогда утяжелять обучение, заставляя использовать лейблы, когда можно спокойно пропустить этот шаг?
Пример из жизни
Вот ситуация. У вас есть два деплоя: фронтенд и бекенд. Вы создаете поды, ноды, и вроде все работает. Через пару недель кто-то просит вас ограничить запуск фронтенда на определенные ноды. Если у вас заранее не было лейблов на этих нодах, придется вручную их добавлять, а затем менять конфигурацию. Это неудобно. Если бы вы заранее проставили лейблы, работа заняла бы пару минут.
apiVersion: v1
kind: Node
metadata:
name: node1
labels:
role: frontend
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
template:
spec:
nodeSelector:
role: frontend
Мой совет: если вы новичок, не зацикливайтесь на лейблах с самого начала. Узнайте, как они работают, и держите их в голове, но не тратьте время на внедрение, пока не начнете видеть необходимость в их использовании. Лейблы — это не про «обязательные теги», это инструмент для удобства и масштабирования, который становится действительно ценным с ростом вашей инфраструктуры.
Как говорится, не наклеивайте ярлыки, пока не поймете, зачем это нужно. 😉
👍1
Слежка за сотрудниками: скотское отношение или новые реалии? 🐑
Наткнулся на обсуждение на Reddit о системах мониторинга сотрудников. Ребята обсуждают как инструменты, созданные для контроля, превращаются в настоящие механизмы подавления. Я знаю, о чем говорю — у меня есть личный опыт работы в условиях подобного тотального контроля.
Современные системы мониторинга: что они делают? 🔍
Сейчас системы слежки за сотрудниками — это уже не просто учет времени, проведенного в системе. Вот некоторые возможности, которые предлагают современные инструменты:
• Отслеживание активности: анализ кликов мыши, ударов по клавиатуре и времени бездействия.
• Скриншоты экрана: снимки рабочего стола в случайный момент времени.
• Приложения и продуктивность: автоматическая классификация приложений как «полезных» или «неполезных».
• Видеонаблюдение: включение веб-камеры для селфи сотрудников (да, да - страшно?).
Эти технологии уже не просто фиксируют факты. Они начинают вмешиваться в то, как мы работаем, превращая сотрудников в участников реалити-шоу под названием «Делай вид, что ты продуктивен».
Мой опыт: WorkSmart в компании Crossover 🧑🔧
Семь лет назад я работал больше двух лет в Crossover — на тот момент одной из самых высокооплачиваемых IT-компаний, предоставлявшей полный remote-формат (что в те времена было настоящей редкостью). Но удаленка приходила с ценой: строгий контроль.
Как это работало?
1. Таймкарты каждые 10 минут
WorkSmart фиксировала вашу активность, создавая таймкарты. Каждая таймкарта включала:
• Клики и нажатия клавиш.
• Список активных приложений с их классификацией на «полезные» (IDE, браузеры с нужными вкладками) и «неполезные».
• Скриншот рабочего экрана в случайное время.
• Селфи через веб-камеру, чтобы убедиться, что вы действительно сидите перед монитором.
2. Оценка продуктивности
Если система считала, что вы выполняли слишком много «неполезных» действий или ваша активность была низкой, таймкарта аннулировалась. А это значит, что время, потраченное на работу, не засчитывалось.
3. Последствия ошибок
Накопление нескольких аннулированных таймкарт грозило вам увольнением. Сначала выдавали предупреждение, но если ситуация не менялась, компания могла расторгнуть контракт.
Больше об этом можно почитать в любой открытой вакансии, например https://www.crossover.com/jobs/4728/ignitetech/ai-first-site-reliability-engineer - Frequently asked questions - How will my productivity be monitored?
Общая проблема: контроль ради контроля
Из Reddit поста, обсуждающие делают вывод что проблема мониторинга выходит за рамки одной компании. Сегодня многие инструменты предлагают работодателям не просто контроль, а тотальное наблюдение за каждым действием сотрудника. Но что важнее: видеть каждую мелочь или получать качественные результаты?
Часто внедрение таких систем говорит не о проблеме с сотрудниками, а о недостатке доверия или плохо выстроенных процессах внутри компании. Если руководитель не умеет ставить задачи и мотивировать команду, никакая система мониторинга не спасет ситуацию.
Мой опыт
Однажды меня почти уволили из-за того, что система неправильно классифицировала приложения, с которыми я работал. Я тратил время на полезные задачи, но WorkSmart решил иначе. Пришлось объясняться, разбираться и доказывать свою правоту. Это было стрессово и отвлекало от реальной работы.
Мой опыт работы с WorkSmart научил меня важной вещи: продуктивность — это не про скриншоты, клики и селфи. Это про доверие, четкие цели и результаты. Технологии мониторинга могут быть полезными, но только если они помогают, а не подавляют. С другой стороны, как профессиональный "троешник" - меня всегда забавляло обходить эту систему. Очевидно, что она было не без багов. С "ностальгией" вспоминаю свои таймкарты на 12 часов с 20 минутами перерыва. Были времена.
Наткнулся на обсуждение на Reddit о системах мониторинга сотрудников. Ребята обсуждают как инструменты, созданные для контроля, превращаются в настоящие механизмы подавления. Я знаю, о чем говорю — у меня есть личный опыт работы в условиях подобного тотального контроля.
Современные системы мониторинга: что они делают? 🔍
Сейчас системы слежки за сотрудниками — это уже не просто учет времени, проведенного в системе. Вот некоторые возможности, которые предлагают современные инструменты:
• Отслеживание активности: анализ кликов мыши, ударов по клавиатуре и времени бездействия.
• Скриншоты экрана: снимки рабочего стола в случайный момент времени.
• Приложения и продуктивность: автоматическая классификация приложений как «полезных» или «неполезных».
• Видеонаблюдение: включение веб-камеры для селфи сотрудников (да, да - страшно?).
Эти технологии уже не просто фиксируют факты. Они начинают вмешиваться в то, как мы работаем, превращая сотрудников в участников реалити-шоу под названием «Делай вид, что ты продуктивен».
Мой опыт: WorkSmart в компании Crossover 🧑🔧
Семь лет назад я работал больше двух лет в Crossover — на тот момент одной из самых высокооплачиваемых IT-компаний, предоставлявшей полный remote-формат (что в те времена было настоящей редкостью). Но удаленка приходила с ценой: строгий контроль.
Как это работало?
1. Таймкарты каждые 10 минут
WorkSmart фиксировала вашу активность, создавая таймкарты. Каждая таймкарта включала:
• Клики и нажатия клавиш.
• Список активных приложений с их классификацией на «полезные» (IDE, браузеры с нужными вкладками) и «неполезные».
• Скриншот рабочего экрана в случайное время.
• Селфи через веб-камеру, чтобы убедиться, что вы действительно сидите перед монитором.
2. Оценка продуктивности
Если система считала, что вы выполняли слишком много «неполезных» действий или ваша активность была низкой, таймкарта аннулировалась. А это значит, что время, потраченное на работу, не засчитывалось.
3. Последствия ошибок
Накопление нескольких аннулированных таймкарт грозило вам увольнением. Сначала выдавали предупреждение, но если ситуация не менялась, компания могла расторгнуть контракт.
Больше об этом можно почитать в любой открытой вакансии, например https://www.crossover.com/jobs/4728/ignitetech/ai-first-site-reliability-engineer - Frequently asked questions - How will my productivity be monitored?
Общая проблема: контроль ради контроля
Из Reddit поста, обсуждающие делают вывод что проблема мониторинга выходит за рамки одной компании. Сегодня многие инструменты предлагают работодателям не просто контроль, а тотальное наблюдение за каждым действием сотрудника. Но что важнее: видеть каждую мелочь или получать качественные результаты?
Часто внедрение таких систем говорит не о проблеме с сотрудниками, а о недостатке доверия или плохо выстроенных процессах внутри компании. Если руководитель не умеет ставить задачи и мотивировать команду, никакая система мониторинга не спасет ситуацию.
Мой опыт
Однажды меня почти уволили из-за того, что система неправильно классифицировала приложения, с которыми я работал. Я тратил время на полезные задачи, но WorkSmart решил иначе. Пришлось объясняться, разбираться и доказывать свою правоту. Это было стрессово и отвлекало от реальной работы.
Мой опыт работы с WorkSmart научил меня важной вещи: продуктивность — это не про скриншоты, клики и селфи. Это про доверие, четкие цели и результаты. Технологии мониторинга могут быть полезными, но только если они помогают, а не подавляют. С другой стороны, как профессиональный "троешник" - меня всегда забавляло обходить эту систему. Очевидно, что она было не без багов. С "ностальгией" вспоминаю свои таймкарты на 12 часов с 20 минутами перерыва. Были времена.
Reddit
[deleted by user] : r/sysadmin
6.8K votes, 1.1K comments. 989K subscribers in the sysadmin community. A reddit dedicated to the profession of Computer System Administration.
Observability в Kubernetes и как не потеряться в абстракциях 👓
Чем больше слоев абстракции, тем сложнее понять, что на самом деле происходит в системе. Kubernetes — это как раз такой случай: всё кажется простым, пока не нужно разобраться, почему какой-то под вдруг стал тормозить или сервис перестал отвечать. Именно поэтому концепция observability (наблюдаемости) становится критически важной.
Для тех, кто только знакомится с этим понятием, observability — это про «видимость» того, что происходит внутри системы. Это не просто графики и логи, а возможность связать их с реальными проблемами и быстро находить ответы на вопросы: «Что пошло не так? Почему это произошло?».
Недавно наткнулся на интересную статью (https://itnext.io/observability-is-not-equal-observability-in-kubernetes-1b79c4b8dc4c), где автор предлагает разбить observability на три уровня. Вот как это выглядит:
🍭 1. Внешний уровень: User Experience
Это то, что непосредственно видит пользователь:
• Время отклика приложения.
• Доступность сервисов.
• Общая производительность системы.
Инструменты, которые помогают на этом уровне:
• New Relic, Datadog, Google Analytics — для мониторинга пользовательского опыта.
• Synthetics Testing — для эмуляции поведения пользователей.
Кому полезно?
Разработчикам, менеджерам продуктов, командам UX/UI — всем, кто отвечает за впечатления клиентов.
🍭 2. Внутренний уровень: Метрики и логи
Это уже то, что видят инженеры:
• Системные метрики (CPU, RAM, Network).
• Логи приложений (Stack Traces, события).
Здесь мы начинаем углубляться в детали работы системы. Kubernetes отлично генерирует такие данные, но важно правильно их собирать и визуализировать.
Полезные инструменты:
• Prometheus + Grafana для мониторинга метрик.
• ELK Stack (Elasticsearch, Logstash, Kibana) для логов.
• Loki — легкий аналог ELK, если не хочется тащить тяжеловесный стек.
Кому полезно?
Platform-инженерам, SRE, разработчикам — тем, кто хочет видеть, что происходит в системе.
🍭 3. Глубокий уровень: Операционная система
Здесь мы копаем ещё глубже:
• Отслеживаем системные вызовы (System Calls).
• Анализируем взаимодействие с ядром ОС.
• Следим за ресурсами на уровне контейнеров.
Для Kubernetes этот уровень может быть особенно сложным, так как он прячет многое за своими абстракциями.
Инструменты:
• eBPF — мощный инструмент для анализа ядра Linux и сетевой активности.
• Sysdig — для мониторинга контейнеров и системных вызовов.
• Falco — для детектирования угроз на уровне ОС.
Кому полезно?
SRE, системным администраторам, инженерам безопасности.
Наблюдаемость через роли 🔧
Что ещё интересно в этой статье, так это то, что каждый уровень рассматривается с точки зрения разных ролей:
• Клиенты: Ожидают, что всё будет работать быстро и стабильно.
• Разработчики: Нуждаются в логах и метриках, чтобы дебажить код.
• Platform-инженеры: Заботятся о том, чтобы весь стек работал как часы.
• SRE: Отвечают за стабильность и масштабируемость всей системы.
Эта многослойная модель помогает понять, что observability — это не просто инструменты, а целый подход, затрагивающий интересы всех участников процесса.
Выводы 💪
Observability — это must have, если вы хотите эффективно управлять приложениями в Kubernetes. Без неё кластер превращается в чёрный ящик, где неполадки можно найти разве что по наитию. Но как только вы разбиваете наблюдаемость на уровни и подключаете нужные инструменты, система становится прозрачной.
Если вы хотите углубиться в тему, рекомендую начать с описанных инструментов и подходов, а дальше уже адаптировать их под ваши потребности. И помните: чем раньше вы начинаете думать об observability, тем меньше шансов потеряться в дебрях Kubernetes.
Чем больше слоев абстракции, тем сложнее понять, что на самом деле происходит в системе. Kubernetes — это как раз такой случай: всё кажется простым, пока не нужно разобраться, почему какой-то под вдруг стал тормозить или сервис перестал отвечать. Именно поэтому концепция observability (наблюдаемости) становится критически важной.
Для тех, кто только знакомится с этим понятием, observability — это про «видимость» того, что происходит внутри системы. Это не просто графики и логи, а возможность связать их с реальными проблемами и быстро находить ответы на вопросы: «Что пошло не так? Почему это произошло?».
Недавно наткнулся на интересную статью (https://itnext.io/observability-is-not-equal-observability-in-kubernetes-1b79c4b8dc4c), где автор предлагает разбить observability на три уровня. Вот как это выглядит:
🍭 1. Внешний уровень: User Experience
Это то, что непосредственно видит пользователь:
• Время отклика приложения.
• Доступность сервисов.
• Общая производительность системы.
Инструменты, которые помогают на этом уровне:
• New Relic, Datadog, Google Analytics — для мониторинга пользовательского опыта.
• Synthetics Testing — для эмуляции поведения пользователей.
Кому полезно?
Разработчикам, менеджерам продуктов, командам UX/UI — всем, кто отвечает за впечатления клиентов.
🍭 2. Внутренний уровень: Метрики и логи
Это уже то, что видят инженеры:
• Системные метрики (CPU, RAM, Network).
• Логи приложений (Stack Traces, события).
Здесь мы начинаем углубляться в детали работы системы. Kubernetes отлично генерирует такие данные, но важно правильно их собирать и визуализировать.
Полезные инструменты:
• Prometheus + Grafana для мониторинга метрик.
• ELK Stack (Elasticsearch, Logstash, Kibana) для логов.
• Loki — легкий аналог ELK, если не хочется тащить тяжеловесный стек.
Кому полезно?
Platform-инженерам, SRE, разработчикам — тем, кто хочет видеть, что происходит в системе.
🍭 3. Глубокий уровень: Операционная система
Здесь мы копаем ещё глубже:
• Отслеживаем системные вызовы (System Calls).
• Анализируем взаимодействие с ядром ОС.
• Следим за ресурсами на уровне контейнеров.
Для Kubernetes этот уровень может быть особенно сложным, так как он прячет многое за своими абстракциями.
Инструменты:
• eBPF — мощный инструмент для анализа ядра Linux и сетевой активности.
• Sysdig — для мониторинга контейнеров и системных вызовов.
• Falco — для детектирования угроз на уровне ОС.
Кому полезно?
SRE, системным администраторам, инженерам безопасности.
Наблюдаемость через роли 🔧
Что ещё интересно в этой статье, так это то, что каждый уровень рассматривается с точки зрения разных ролей:
• Клиенты: Ожидают, что всё будет работать быстро и стабильно.
• Разработчики: Нуждаются в логах и метриках, чтобы дебажить код.
• Platform-инженеры: Заботятся о том, чтобы весь стек работал как часы.
• SRE: Отвечают за стабильность и масштабируемость всей системы.
Эта многослойная модель помогает понять, что observability — это не просто инструменты, а целый подход, затрагивающий интересы всех участников процесса.
Выводы 💪
Observability — это must have, если вы хотите эффективно управлять приложениями в Kubernetes. Без неё кластер превращается в чёрный ящик, где неполадки можно найти разве что по наитию. Но как только вы разбиваете наблюдаемость на уровни и подключаете нужные инструменты, система становится прозрачной.
Если вы хотите углубиться в тему, рекомендую начать с описанных инструментов и подходов, а дальше уже адаптировать их под ваши потребности. И помните: чем раньше вы начинаете думать об observability, тем меньше шансов потеряться в дебрях Kubernetes.
Medium
Black Box vs White Box Observability in Kubernetes
Understanding Multi-layer Observability in Kubernetes
Начинаем новую рубрику "ТехноВторник".
Буду постить свои обзоры и мысли на гаджеты и девайсы. Начну сразу с двух постов - первый обзор на все (да, их несколько) мои "инвестиции" в девайсы на kickstarter, второй пост будет о находке которую мне показал друг - TP-Link AV1000 Powerline Ethernet Adapter(TL-PA7017P KIT) - простое решение насущной проблемы.
Буду постить свои обзоры и мысли на гаджеты и девайсы. Начну сразу с двух постов - первый обзор на все (да, их несколько) мои "инвестиции" в девайсы на kickstarter, второй пост будет о находке которую мне показал друг - TP-Link AV1000 Powerline Ethernet Adapter(TL-PA7017P KIT) - простое решение насущной проблемы.
Обзор на мои kickstarter вбросы. 🚀
🤏 Deeper Connect Pico: https://www.kickstarter.com/projects/deepernetworkpico/deeper-connect-pico/description
Моя первая инвестиция в Kickstarter — Deeper Connect Pico, компактный гаджет, который обещал быть решением для всех моих кибербезопасных нужд. VPN без подписки? Да! Блокировка рекламы и фаервол уровня “enterprise”? Конечно! И даже какой-то майнинг в придачу. Всё это за $250.
Как только я получил девайс, радость быстро сменилось разочарованием. Оказалось, что он не поддерживает Ethernet, а я как-то пропустил эту “мелочь” в описании (кто читает описание да?). Кароче девайс ушел в комод сразу по приходу. С тех пор не втыкал. P.S. Кстати, его проприетарная кибервалюта крайне быстро рухнула. Об этом интереснее даже почитать в инете, чем о самом девайсе.
Дальше два девайса которые еще не пришли (и может не придут - привет кикстартеру).
💨 JetKVM — какой-то крутой KVM over IP: https://www.kickstarter.com/projects/jetkvm/jetkvm
Девайс обещает стать мечтой любого гика. Это open-source решение для удалённого управления компьютерами. Ультранизкая задержка, видеопоток в 1080p/60fps, и даже возможность настраивать BIOS удалённо. И всё это за сравнительно небольшую сумму.
Меня купила идея протестировать этот девайс в экстремальных условиях. Придёт — уеду с ним куда-нибудь в Мексику или на Кубу, чтобы по-настоящему проверить, сможет ли он стать полноценным помощником для удалённого управления в сложных сетевых условиях. Посмотрел пару ютуб обзор - все довольны.
🔮 Последний, это CyberAxon D3: 13-in-1 Multifunctional Stream Control Dock: https://www.kickstarter.com/projects/raycue/cyberaxon-d3-13-in-1-multifunctional-stream-control-dock. Это вообще какая-то футуристическая пушка за че-то около 300 баксов. Так же это продукт компульсивного шопинга, более известного как ониомания.
CyberAxon D3 выглядит как мини-командный центр для стримеров и мультизадачников. Устройство объединяет в себе 13 функций, включая сенсорный экран и 12 настраиваемых клавиш. Похоже больше show-off фигня для друзей нердов которые приходят в гости. Только дело все в том, что нерды не ходят в гости. Они сидят дока в своих комплюктерах.
🤏 Deeper Connect Pico: https://www.kickstarter.com/projects/deepernetworkpico/deeper-connect-pico/description
Моя первая инвестиция в Kickstarter — Deeper Connect Pico, компактный гаджет, который обещал быть решением для всех моих кибербезопасных нужд. VPN без подписки? Да! Блокировка рекламы и фаервол уровня “enterprise”? Конечно! И даже какой-то майнинг в придачу. Всё это за $250.
Как только я получил девайс, радость быстро сменилось разочарованием. Оказалось, что он не поддерживает Ethernet, а я как-то пропустил эту “мелочь” в описании (кто читает описание да?). Кароче девайс ушел в комод сразу по приходу. С тех пор не втыкал. P.S. Кстати, его проприетарная кибервалюта крайне быстро рухнула. Об этом интереснее даже почитать в инете, чем о самом девайсе.
Дальше два девайса которые еще не пришли (и может не придут - привет кикстартеру).
💨 JetKVM — какой-то крутой KVM over IP: https://www.kickstarter.com/projects/jetkvm/jetkvm
Девайс обещает стать мечтой любого гика. Это open-source решение для удалённого управления компьютерами. Ультранизкая задержка, видеопоток в 1080p/60fps, и даже возможность настраивать BIOS удалённо. И всё это за сравнительно небольшую сумму.
Меня купила идея протестировать этот девайс в экстремальных условиях. Придёт — уеду с ним куда-нибудь в Мексику или на Кубу, чтобы по-настоящему проверить, сможет ли он стать полноценным помощником для удалённого управления в сложных сетевых условиях. Посмотрел пару ютуб обзор - все довольны.
🔮 Последний, это CyberAxon D3: 13-in-1 Multifunctional Stream Control Dock: https://www.kickstarter.com/projects/raycue/cyberaxon-d3-13-in-1-multifunctional-stream-control-dock. Это вообще какая-то футуристическая пушка за че-то около 300 баксов. Так же это продукт компульсивного шопинга, более известного как ониомания.
CyberAxon D3 выглядит как мини-командный центр для стримеров и мультизадачников. Устройство объединяет в себе 13 функций, включая сенсорный экран и 12 настраиваемых клавиш. Похоже больше show-off фигня для друзей нердов которые приходят в гости. Только дело все в том, что нерды не ходят в гости. Они сидят дока в своих комплюктерах.
Kickstarter
Deeper Connect Pico
The World's One and Only Decentralized VPN (DPN) & Secure Gateway Hardware - For Life!
🔌 Интернет через розетку с TP-Link AV1000
Мой юзкейс был очень простым - до компа достреливает вайфай и по Ethernet можно подключиться без проблем. Скорость неплохая. Только проблемы начинаются если ... неожидано зайти в гараж чтобы посмотреть там что-то интересное на проекторе (через HDMI от компа). Так вот гаражи делают наверное армированные, так что сигнал туда не заходит никаким образом. 🪖
Товарищ подсказал решение: TP-Link AV1000 Powerline Ethernet Adapter (TL-PA7017P KIT), которое использует домашнюю электросеть для передачи интернета.
Этот адаптер поддерживает скорость до 1000 Мбит/с благодаря технологии HomePlug AV2, что делает его отличным решением для 4K-стриминга, онлайн-игр и любых задач с высоким трафиком. Гигабитный Ethernet-порт обеспечивает надёжное подключение для устройств, требующих стабильного интернета, таких как проекторы, консоли или смарт-ТВ.
Особенность устройства — встроенная проходная розетка. Вы не теряете возможность подключать другие устройства, а встроенный шумовой фильтр минимизирует электромагнитные помехи, что сохраняет производительность сети на высоком уровне. И, что немаловажно, адаптер экономит до 85% энергии в режиме ожидания благодаря автоматическому энергосбережению. ♻️
Установка настолько проста, что с ней справится даже ребёнок: подключаете один адаптер к роутеру, второй — в нужной комнате, соединяете Ethernet-кабелем, и всё готово. Я даже в такое поверить не мог, а через 2 дня я уже смотрел финал BLAST SLAM 2024 в HD и мог даже мотать видео без единой задержки.
Мой юзкейс был очень простым - до компа достреливает вайфай и по Ethernet можно подключиться без проблем. Скорость неплохая. Только проблемы начинаются если ... неожидано зайти в гараж чтобы посмотреть там что-то интересное на проекторе (через HDMI от компа). Так вот гаражи делают наверное армированные, так что сигнал туда не заходит никаким образом. 🪖
Товарищ подсказал решение: TP-Link AV1000 Powerline Ethernet Adapter (TL-PA7017P KIT), которое использует домашнюю электросеть для передачи интернета.
Этот адаптер поддерживает скорость до 1000 Мбит/с благодаря технологии HomePlug AV2, что делает его отличным решением для 4K-стриминга, онлайн-игр и любых задач с высоким трафиком. Гигабитный Ethernet-порт обеспечивает надёжное подключение для устройств, требующих стабильного интернета, таких как проекторы, консоли или смарт-ТВ.
Особенность устройства — встроенная проходная розетка. Вы не теряете возможность подключать другие устройства, а встроенный шумовой фильтр минимизирует электромагнитные помехи, что сохраняет производительность сети на высоком уровне. И, что немаловажно, адаптер экономит до 85% энергии в режиме ожидания благодаря автоматическому энергосбережению. ♻️
Установка настолько проста, что с ней справится даже ребёнок: подключаете один адаптер к роутеру, второй — в нужной комнате, соединяете Ethernet-кабелем, и всё готово. Я даже в такое поверить не мог, а через 2 дня я уже смотрел финал BLAST SLAM 2024 в HD и мог даже мотать видео без единой задержки.
Amazon
TP-Link AV1000 Powerline Ethernet Adapter(TL-PA7017P KIT) - Gigabit Port, Plug and Play, Extra Power Socket for Additional Devices…
HomePlug AV2 Standard: High-speed data transfer rates of up to 1000 Mbps, supporting all your online needs Gigabit Port: Provides secure wired networks for desktops, smart TVs or games consoles Plug and Play: Allows setup of your powerline network in minutes…
CNCF Kubestronaut bundle? 🚀
На этой неделе многие из нас получили письмо от Cloud Native Computing Foundation (CNCF), где предлагались скидки на курсы на Black Friday. Мое отношение к курсам менялось несколько раз от категоричного "это не нужно" до нескольких часов в месяц долбежки для получения нового беджика.
Наткнулся на интересный bundle, с как мне кажется прикольным названием Kubestronaut (вот так вот работает маркетинг - по названию могут зацепить курс за 1,5к): https://training.linuxfoundation.org/certification/kubestronaut-bundle/.
Что такое Kubestronaut Bundle? 🌌
Этот бандл создан для тех, кто хочет глубже нырнуть в мир Kubernetes и не просто научиться работать с ним, но и реально понимать, как всё устроено. Вот из чего состоит пакет:
🌟 Курсы и сертификации:
1. Kubernetes Fundamentals (LFS258)
Это база, от которой стоит оттолкнуться, если вы только начинаете свой путь. Разбираетесь с основами: что такое кластеры, поды, деплойменты. Без этого курса вы, скорее всего, будете как астронавт без подготовки — посмотрели на звезды и не поняли, как до них долететь.
2. Certified Kubernetes Administrator (CKA)
Уже классика для тех, кто хочет не просто управлять кластерами, но делать это уверенно и с осознанием всех внутренних механизмов. Здесь вы погрузитесь в тему: как работает планировщик, как разруливать сетевые проблемы и как оптимизировать систему.
3. Certified Kubernetes Application Developer (CKAD)
Если вы больше разработчик, чем администратор, этот курс для вас. Узнаете, как правильно паковать приложения в контейнеры, деплоить их и обеспечивать стабильную работу.
4. KCNA - эта сертификация не требует глубокого опыта, но поможет создать базу, на которой потом можно будет строить более сложные знания.
5. Certified Kubernetes Security Specialist (CKS). Для тех, кто уже освоил основы Kubernetes (и желательно прошел CKA), есть следующий уровень — Certified Kubernetes Security Specialist (CKS). Эта сертификация посвящена тому, чтобы вы научились защищать свои кластеры и быть готовыми к современным угрозам.
🚀 Почему это может быть полезно?
• Если вы хотите структурировать знания. Да, можно научиться Kubernetes, просто читая документацию и гугля ошибки. Но курсы помогают выстроить систему и охватить темы, которые вы, возможно, упустили.
• Для тех, кто хочет прокачать резюме. Бейджики и сертификаты — это, конечно, не цель сама по себе, но они действительно могут выделить вас среди кандидатов.
• Для тех, кто любит чек-листы и системный подход. Пошаговый разбор с упражнениями точно поможет освоить сложные темы.
Мое отношение к бандлу 💭
С одной стороны, 1500 долларов — это не шутка. С другой, если прикинуть, сколько времени и нервов уходит на самообучение через «метод научного тыка», возможно, эта сумма начинает выглядеть более оправданно. Особенно если вы, как и я, цените структурированный подход и иногда готовы немного инвестировать в свое развитие.
А название Kubestronaut всё-таки греет душу. 😅
Выводы и рекомендации ✨
Если вы давно откладывали знакомство с Kubernetes или хотите повысить уровень, этот бандл может стать отличным вариантом для старта. Главное, не забывайте про практику — без неё даже самый классный курс превращается просто в потраченные деньги.
И помните, курсы — это не волшебная таблетка. Они помогут ускорить процесс, но учиться всё равно придется самому. Так что, если решитесь отправиться в полёт как Kubestronaut, готовьтесь к регулярным тренировкам. 🚀
Полетели? 😉
На этой неделе многие из нас получили письмо от Cloud Native Computing Foundation (CNCF), где предлагались скидки на курсы на Black Friday. Мое отношение к курсам менялось несколько раз от категоричного "это не нужно" до нескольких часов в месяц долбежки для получения нового беджика.
Наткнулся на интересный bundle, с как мне кажется прикольным названием Kubestronaut (вот так вот работает маркетинг - по названию могут зацепить курс за 1,5к): https://training.linuxfoundation.org/certification/kubestronaut-bundle/.
Что такое Kubestronaut Bundle? 🌌
Этот бандл создан для тех, кто хочет глубже нырнуть в мир Kubernetes и не просто научиться работать с ним, но и реально понимать, как всё устроено. Вот из чего состоит пакет:
🌟 Курсы и сертификации:
1. Kubernetes Fundamentals (LFS258)
Это база, от которой стоит оттолкнуться, если вы только начинаете свой путь. Разбираетесь с основами: что такое кластеры, поды, деплойменты. Без этого курса вы, скорее всего, будете как астронавт без подготовки — посмотрели на звезды и не поняли, как до них долететь.
2. Certified Kubernetes Administrator (CKA)
Уже классика для тех, кто хочет не просто управлять кластерами, но делать это уверенно и с осознанием всех внутренних механизмов. Здесь вы погрузитесь в тему: как работает планировщик, как разруливать сетевые проблемы и как оптимизировать систему.
3. Certified Kubernetes Application Developer (CKAD)
Если вы больше разработчик, чем администратор, этот курс для вас. Узнаете, как правильно паковать приложения в контейнеры, деплоить их и обеспечивать стабильную работу.
4. KCNA - эта сертификация не требует глубокого опыта, но поможет создать базу, на которой потом можно будет строить более сложные знания.
5. Certified Kubernetes Security Specialist (CKS). Для тех, кто уже освоил основы Kubernetes (и желательно прошел CKA), есть следующий уровень — Certified Kubernetes Security Specialist (CKS). Эта сертификация посвящена тому, чтобы вы научились защищать свои кластеры и быть готовыми к современным угрозам.
🚀 Почему это может быть полезно?
• Если вы хотите структурировать знания. Да, можно научиться Kubernetes, просто читая документацию и гугля ошибки. Но курсы помогают выстроить систему и охватить темы, которые вы, возможно, упустили.
• Для тех, кто хочет прокачать резюме. Бейджики и сертификаты — это, конечно, не цель сама по себе, но они действительно могут выделить вас среди кандидатов.
• Для тех, кто любит чек-листы и системный подход. Пошаговый разбор с упражнениями точно поможет освоить сложные темы.
Мое отношение к бандлу 💭
С одной стороны, 1500 долларов — это не шутка. С другой, если прикинуть, сколько времени и нервов уходит на самообучение через «метод научного тыка», возможно, эта сумма начинает выглядеть более оправданно. Особенно если вы, как и я, цените структурированный подход и иногда готовы немного инвестировать в свое развитие.
А название Kubestronaut всё-таки греет душу. 😅
Выводы и рекомендации ✨
Если вы давно откладывали знакомство с Kubernetes или хотите повысить уровень, этот бандл может стать отличным вариантом для старта. Главное, не забывайте про практику — без неё даже самый классный курс превращается просто в потраченные деньги.
И помните, курсы — это не волшебная таблетка. Они помогут ускорить процесс, но учиться всё равно придется самому. Так что, если решитесь отправиться в полёт как Kubestronaut, готовьтесь к регулярным тренировкам. 🚀
Полетели? 😉
Linux Foundation - Education
Kubestronaut Bundle (KCNA + KCSA + CKA + CKAD + CKS)
Become a Kubestronaut today! Bundle all 5 of the required certification exams and save!
HackSussex Coders’ Cup 2024: программирование на адреналине ⚡️
YT подкинул интересное видео - HackSussex Coders’ Cup 2024. Мне всегда было интересно как это выглядит. Знаю что русские студенты и школьники часто выигрывают подобные чемпы. Именно этот чемпионат, это где соревнуются команды программистов, стремясь решить сложные задачи за ограниченное время. Вдохновляет не только сам масштаб события, но и атмосфера: часы кодинга под давлением, мозговой штурм и адреналин, когда каждая секунда на счету.
Задумался о том, почему такие мероприятия так важны. Исследования показывают, что стрессовые ситуации – в разумных дозах – способствуют формированию долгосрочных нейронных связей. Другими словами, мы не только учимся быстрее, но и запоминаем лучше. Именно поэтому такие соревнования — это не просто возможность блеснуть знаниями, но и отличный способ вырасти профессионально.
Почему бы не испытать себя в таком формате? Hackathons, вроде HackSussex, – это отличная возможность выйти из зоны комфорта, и научиться справляться с задачами. Тут по большей мере средний LeetCode.
Если интересно, вот ссылка на их видео: HackSussex Coders’ Cup 2024. Рекомендую посмотреть, чтобы вдохновиться открыть любимую IDE и погузится в питончик.
YT подкинул интересное видео - HackSussex Coders’ Cup 2024. Мне всегда было интересно как это выглядит. Знаю что русские студенты и школьники часто выигрывают подобные чемпы. Именно этот чемпионат, это где соревнуются команды программистов, стремясь решить сложные задачи за ограниченное время. Вдохновляет не только сам масштаб события, но и атмосфера: часы кодинга под давлением, мозговой штурм и адреналин, когда каждая секунда на счету.
Задумался о том, почему такие мероприятия так важны. Исследования показывают, что стрессовые ситуации – в разумных дозах – способствуют формированию долгосрочных нейронных связей. Другими словами, мы не только учимся быстрее, но и запоминаем лучше. Именно поэтому такие соревнования — это не просто возможность блеснуть знаниями, но и отличный способ вырасти профессионально.
Почему бы не испытать себя в таком формате? Hackathons, вроде HackSussex, – это отличная возможность выйти из зоны комфорта, и научиться справляться с задачами. Тут по большей мере средний LeetCode.
Если интересно, вот ссылка на их видео: HackSussex Coders’ Cup 2024. Рекомендую посмотреть, чтобы вдохновиться открыть любимую IDE и погузится в питончик.
YouTube
HackSussex Coders' Cup!
Want to join the discussion? Join our discord: https://discord.gg/4QXvTsE2mz
Want to attend our hackathons or other events? Follow our socials: https://www.instagram.com/hacksussex/
The Coders Cup is HackSussex's algorithmic coding competition for students!…
Want to attend our hackathons or other events? Follow our socials: https://www.instagram.com/hacksussex/
The Coders Cup is HackSussex's algorithmic coding competition for students!…
👍1