⌨️Парадигмы программирования — [13:54]
Из видео вы узнаете, что такое функциональное, объектно-ориентированное, императивное, процедурное и декларативное программирование.
Знание всех этих парадигм — основа основ для любого уважающего себя программиста.
Перейти к просмотру
#видео#программирование
Apple выпустили свой Docker
Он будет бесплатный и опенсорный, вот репо https://github.com/apple/container
Он написан на Swift, безопаснее (каждый в своем sandbox), быстрее и экономит батарею, нативный.
Поддерживает OCI(Open Container Initiative), стандарт описывающий слои, манифест и конфиг.
Docker-образы хранятся в том же формате (Docker = OCI + пару своих расширений), поэтому любой docker pull alpine — уже OCI-image.
Apple Containerization работает через CLI, берёт обычный OCI-образ и через Containerization разворачивает его в микро-ВМ Virtualization.framework; старт ≈ 100 мс, изоляция аппаратная (EL2).
👉На что я еще лично ещеобратил внимание,
это тот, кто его представил, некий Michael Crosby, но LinkedIn у него нет, что для человека который работает в США странно,
и больно он уже похож на AI аватар, либо он себе создал его потому что так легче было создать ролик, либо Apple уже генерирует AI аватары чтобы представлять продукты и сервисы))
Можно посмотреть видео и проверить мою теорию здесь https://developer.apple.com/videos/play/wwdc2025/346
#программирование | @andreyposnov
Еще немного про секреты (сервисов)
У меня сейчас CI/CD такой, что код своих микросервисов я комичу в гитхаб, в гитхабе на actions собирается docker image и отправляется в мой docker hub.
На моем kubernetes, поднят ArgoCD (такой опенсорс тул для GitOps*), в него добавлены репозитории микросервисов, он видит что код изменился, и скачивает новый docker image что поднять его Pod в кубернетесе
Как можете видеть взаимодействует много сторонних сервисов, все они приватные, везде свои ключи, которые по безопасности еще должны меняться раз в какое то определенное время
*GitOps - это способ управления инфраструктурой и приложениями с помощью Git как единственного источника правды. Это касается не только микросервисов, но и всей моей Infrastructure as Code (терраформ и ансибл).
В итоге в кубернетес у меня создано 3 сервис аккаунта
Platform
Integration
Workload (Сервисы и приложения)
Это как паспорта, кубернетес выдает jwt token каждому поду, и token подтверждает личность пода.
👉Получается примерно такой воркфлоу, при запросе секрета.
Под говорит Vault: "Я workload-secrets-sa, вот мой токен"
Vault спрашивает у Kubernetes: "Этот токен правда от workload-secrets-sa?"
Kubernetes отвечает: "Да, токен валидный"
Vault выдает доступ: "OK, можешь читать только secret/workload/*"
Пример моей структуры
secret/platform/
-database/postgres
-database/dynamodb
-monitoring/grafana
-monitoring/prometheus
-infra/argocd
-infra/kubernetes-dashboard
secret/integration/
-registry/dockerhub
-cloud/aws-s3
-api/github
-payment/stripe
-notification/tg
secret/workload/
- backend-api/config
-telegram-bot/tokens
-backup-script/keys
-frontend/env
И здесь указаны далеко не все сервисы и компоненты моего проекта, и у каждого есть секреты (ключи), я просто не представляю уже как я раньше все это хранил без Hashicorp Vault, а уж как поддерживать нужный уровень безопасности с постоянной сменой секретов, без автоматизированного инструмента невозможно
Теперь мои сервисы и CI/CD получают секреты из Vault, чудеса
Другие посты на эту тему
1. Terraform (создание серверной инфрастуктуры)
2. Ansible (конфигурация серверов)
3. Как хранить секреты? для сервисов и не только
🍏ps. Презентация Apple WWDC сегодня уже через 10 часов 🤓в 19:00 по Барселоне
#программирование | @andreyposnov
Как хранить секреты? для сервисов и не только
Продолжаю рубрику “девопс штучки”.
1. Terraform (создание серверной инфрастуктуры)
2. Ansible (конфигурация серверов)
Мое открытие на сегодня Hashicorp Vault.
Токены, логины, пароли хранить в заметках или confluence, это конечно замечательно я это видел и в стартапах и корпорациях
Следующий этап это в .env или секретах облака (типа GitHub), тоже норм, но все еще не идеально.
После того как я ознакомился что такое Терраформ и Ansible, пока я экспериментировал с переустановками
да они быстрые, но меняются секреты, а сервисов даже на моей части проекта уже много, типа токены от dashboard kubernetes, grafana, prometheus, PostgreSQL, vpn tunnel, ArgoCD, API токены, а сколько еще будет…
Я это кидал в заметки просто а потом рылся, но решил разобраться наверняка есть у КлаудИнженеров и на это решение
И действительно нашлось, это пипец, чудеса, Hashicorp Vault это централизованное хранилище секретов, помимо хранения всех токенов, ведется история их изменений, ведется лог аудит кто когда и зачем обращался к токену (у Vault есть API, по которому токены доставать в приложениях или CI/CD), выдавать доступ по ролям и политикам! (Типа одной команде такие, а этой другие), автоматически менять пароли/обновлять токены (по политике безопасности), даже выдавать SSL серты внутренним сервисам.
И еще веб интерфейс есть, чтобы те кто работают не по API, или не всегда по API, имели доступ к нужным секретам, например как мне к веб мордам выше перечисленных сервисов, но думаю интегрировать и дальше 👍
ps. в командах от 7 человек, можно создать целое братство кольца как во Властелине Колец, root пароль к Vault, раздать 7 сотрудникам, и доступ будет только если они все соберутся вместе, такая вот защита) я слышал практикуют в финтехе
#программирование | @andreyposnov
Observability. С чего начать?
У моей команды много официального овнершипа разных компонентов системы, и все “должно быть” быть обложено мониторингом, алертами и метриками. Но как обычно бывает, между “должно быть” и “есть” лежит прод есть большая разница)
+ Я делаю свой проект в котором тоже должен быть хороший Observability, чтобы понимать что происходит с проектом, что там делают пользователи, и как я узнаю если что-то пошло не так, помимо их прямого обращения ко мне/в поддержку.
С чего начать было непонятно, но с чего-то я начал и вот что я определил.
Оказалось это может работать и для моей команды в корпоративной среде, и для моего проекта где я пока что один.
Я решил что надо трекать
1️⃣Ошибки
2️⃣Использование
3️⃣Основной workflow/path (проходят ли пользователи от начала - до конца, так как задумано)
Метрики которые я начал собирать, или которые уже собирались но я их собрал в дашборд
👉Кол-во вызовов / посещений (по endpoint, по action, по типу)
👉Время отклика (p50, p95 API response time, page load time, function duration)
👉Кол-во ошибок (по типу HTTP 4xx/5xx, Клиент ошибки типа от JavaScript, backend эксепшены)
👉Конверсия / завершённость ключевых действий (типа 100% пользователей начали что-то, а дошли до конца 60%, что случилось с 40%)
Алерты (на основе метрик)
👉Кол-во ошибок резко выросло
👉Время ответа стало медленнее
👉Никто не вызывает endpoint последние X минут (если это подозрительно)
👉Конверсия падает - кто-то не доходит до конца сценария
Я только начал это выстраивать, но уже вижу первые результаты) вообще не представляю как раньше было без этого
А еще я сегодня шел по офису и у меня пробежала мысль, что я работаю в Барселоне, пришел с обеда в кафе у моря, в международной компании, где все говорят по английски или испански - прикольно, но всегда хочется быстрее выше сильнее))
#программирование | @andreyposnov
pgAdmin - всё. Microsoft добавили плагин для работы с PostgreSQL прямо в VSCode
тут блог пост от MS
а это ссылочка в маркетплейсе vscode
а это видео презентация на ютубе
У меня на проекте PostgreSQL основная бд, где я выполняю всякие сложные запросы с разными связями фильтрами и сортировками, а готовый результат уже сохраняю в DynamoDB для более быстрого доступа.
И pgAdmin был неплохо, но выглядил как из нулевых.
А тут Microsoft выкатили прямо в VSCode, и конечно же работает и в Cursor (так как это форк VSCode), + полностью поддерживаемый AI, который и SQL запросы напишет и схему спроектирует (кстати ERD визуализации отношений тоже есть) и импортирует файлы и тд., можно будет писать «не отходят от кассы», хочу сделать такое то, какие поля и связи порекомендуешь?) сделай (пожалуйста)
Единственное они используют в видео презентации агента специального для PostgreSQL Copilot (который уже модели chatgpt использует) у меня пока в VSCode нет ни такой кнопочки ни к агенту нельзя обратится в чате, может попозже появится так как штука новая
буду тестировать🤓
#программирование | @andreyposnov
Microsoft создали роль SDET, а потом удалили ее
Software Development Engineer in Test (SDET) – роль впервые создали в Microsoft, в началае 2000-х, , чтобы объединить навыки разработчиков и тестировщиков.
Идея заключалась в том, чтобы повысить качество ПО, написав автоматические тесты с тем же вниманием как и основной код.
То есть SDET это разработчик, но с фокусом на тестируемость, надежность и автоматизацию.
а как же QA?
QA больше про процессы, бизнес (BDD), документацию, ручное тестирование, сейчас уже есть AQA (automation quality assurance engineer).
🙌В 2014 роль SDET в Microsoft была упразднена
Убрали чёткое разделение между SDE (Software Development Engineer) и SDET. Все инженеры стали называться просто Software Engineer.
От всех начали ожидать ответственности за качество продукта, а не только от выделенных тест-инженеров. Вместо передачи "готового" кода тестерам, начали внедрять инженерную ответственность за всё: от проектирования до продакшн-мониторинга.
Роль SDET как отдельная может и исчезла в Microsoft, но концепция продолжила жить. В других компаниях (например, Amazon, Google) SDET по-прежнему существует, особенно в командах, где нужен сильный фокус на автоматизацию, performance, test tooling и infrastructure.
В чем разница между AQA (Automation QA) и SDET (Software Development Engineer in Test) ?
🤓AQA
Основной фокус - написание автоматических тестов для UI, API, реже - интеграционных.
Основные задачи:
• Пишет автоматические тесты (чаще всего end-to-end).
• Использует инструменты: Selenium, Cypress, Playwright, Postman, JMeter и т.п.
• Работает в рамках готового тестового фреймворка.
• Больше вовлечён в тестирование продукта, чем в разработку его архитектуры.
Типичный стек:
JavaScript/TypeScript, Python, Java + тестовые фреймворки.
Сильные стороны:
• Хорошо понимает процессы QA.
• Может покрыть автотестами весь UI/API.
• Помогает команде выявлять регрессии.
🤓SDET
Разработчик с фокусом на тестирование. Пишет код, чтобы обеспечить тестируемость, надёжность и масштабируемость продукта.
Основные задачи:
• Разрабатывает тестовые фреймворки и библиотеки.
• Пишет юнит-, интеграционные и контрактные тесты.
• Создаёт инструменты для тестирования и CI/CD-инфраструктуру.
• Участвует в архитектурных обсуждениях - делает систему тестируемой с самого начала.
Типичный стек:
То же, что и у обычных разработчиков: Java, C#, Go, Python, TypeScript, плюс Jenkins, Docker, Kubernetes и т.п.
Сильные стороны:
• Может писать production-код при необходимости.
• Понимает внутреннюю архитектуру системы.
• Строит инфраструктуру для качества (включая performance/load testing, fault injection и т.д.).
В реальности, AQA может развиться в SDET, а иногда "SDET" на деле — просто AQA с модным названием.
Но те кто создали роль SDET, в итоги от нее отказались, возможно это что-то значит.
У вас в компании есть SDET?
👍 - да
❤️ - нет, но есть AQA
🔥 - нет и AQA нет
😋 - я не понимаю о чем речь
#программирование | @andreyposnov
⚡️Microsoft перенесли Typescript на Golang
Теперь работает в 10 раз быстрее 👍
это означает более быструю сборку, лучшую работу с большими проектами, оптимизацию памяти, быстрее проверку типов, проверку опечаток, рефакторинг, быстрее юнит тесты, быстрее автодополнение и лучшую работу с AI 🤓
Ссылка на блог Майкрасофта с видео - https://devblogs.microsoft.com/typescript/typescript-native-port/
Ссылка на ютуб видео https://youtu.be/pNlq-EVld70
Кстати тут мой обзор на фильм про Typescript тут
ps.
Странно что не на собственный «лоу левел» си шарп
#программирование | @andreyposnov
10 зеттабайт (ZB) примерно занимает весь интернет (публичный: веб-сайты, соцсети, статьи, видео и файлы)
В 2024 году общий объем данных в мире уже превышала 120 зеттабайт (ZB) и продолжает расти. (эта цифра охватывает все данные, включая как публичные, так и частные, корпоративные и другие закрытые источники.)
📐Единицы измерения:
Байт (B) – 1 символ в текстовом файле
Килобайт (KB) – Одна небольшая текстовая страница
Мегабайт (MB) - Одна фотография
Гигабайт (GB) - Одна серия сериала в 1080p
Терабайт (TB) - Жесткий диск для архивного хранения данных например
Петабайт (PB) - Архив фильмов в 4K качестве (около 500 000 фильмов или 1 000 000 часов видео), или база данных крупной корпорации с десятками тысяч сотрудников.
Экзабайт (EB) – Весь глобальный интернет-трафик за 1 день, или примерно 300 миллионов скачанных игр AAA-класса (например, Worlf Of Warcraft ~100 ГБ).
Зеттабайт (ZB) - Около 10% всего публичного интернета (например, копия всего YouTube всех видео, скопированные 200 раз)
Йоттабайт (YB) - Пока не используется
Роннабайт (RB) - Пока не используется (теоретический)
Кветтабайт (QB) - Пока не используется (теоретический)
👉Пока работал над своим проектом, посмотрел сколько S3 хранилище вообще может данных хранить, оказалось до экзабайтов)) короче безлимитно.
Еще интересно что Durablity данных 99.999999999% (11 девяток), то есть вероятность что данные пропадут мягкоговоря очень мала. И Availability 99.99% то есть всегда доступно. И по цене недорого, вообще чудеса)
А может сделать стрим и рассказать что я использую для своего SaaS сервиса и как это работает? Могурассказать про AWS, про сервисы: Lightsail, DynamoDB, SQS, CloudWatch, IAM, Amplify, API Gateway, Route53, Cloudfront, S3, Lambda и немного 3rd party (вне AWS)
Но для этого надо огонечки, сами понимаете - 🔥
#программирование | @andreyposnov
Разные поколения разработчиков
Подхожу на неделе к разработчику с менеджерским вопросом “ну что там”?
Смотрю а у него открыт браузер, где просто 500 000 тыс вкладок, в IDE 10 проектов, и он Postman (где тоже мильон коллекций и вкладок) проходит “flow” бекенда, чтобы потом интегрировать в UI, и вот каждый степ этого флоу, для бекенда с большими пейлоадами, занимает у него проверить несколько десятков секунд (потому что все конечно же все жестко лагает)
я ему говори ты бы удалил все коллекции, и закрыл бы IDE и вкладки в браузере которые тебе не нужны прямо сейчас для твоей задачи и будет быстрее работать, а он смотрит на меня и говорит “почему быстрее будет”?
У меня перед глазами после этого вопроса пронеслось проста вся эволюция компуктеров с которыми я работал, конечно же включая тот виндовс 95и98 где просто каждые 5 секунд надо было сохраняться, закрывать большинство вкладок, и перезагружать ctrl+alt+del периодически
Ну и убедился еще раз что Mac управляет памятью намного лучше 🤓
#программирование | @andreyposnov
Картошкой дебажат мои коллеги испанцы
а я вот уже несколько лет пишу в дебагах "allo", "allo, nu ti gde?", "allo,nu che ti gde?"
#программирование | @andreyposnov
Состояние потока: магия в программировании и беге 💻🏃♂️✨
Наверняка вы когда-то погружались в работу или тренировку, что всё вокруг исчезало, ваши мысли растворялись, время переставало существовать, а вы словно переходили на другой уровень бытия.
🙌Это состояние называют потоком (flow).
Это момент, когда вы полностью теряете связь с реальностью. Вы как будто выходите за пределы привычного пространства и попадаете в другой слой, где нет ни времени, ни границ.
💻Поток в программировании:
Когда ты пишешь код, ты словно паришь в космосе. Вокруг пустота, а перед тобой — задача, над которой ты работаешь. Но есть и обратная сторона: в этом состоянии время летит быстрее скорости света. Только сел за клавиатуру, а уже вечер.
🏃♂️Поток в спорте:
Во время пробежки ты будто выходишь за пределы физического мира. Каждый шаг — это импульс, который синхронизирует тебя с ритмом времени. Это не просто бег — это путешествие, где ты движешься в бесконечности.
🎶 Моя музыка для потока:
Лично мне помогает войти в поток транс Armin van Buuren.
🔑Как попасть в поток?
1. Создайте “пустое пространство” вокруг себя: уберите отвлекающие факторы.
2. Найдите задачу, которая вызывает интерес и требует усилий/времени для завершения.
3. Включите музыку, которая помогает сосредоточиться и настроиться.
4. Позвольте себе полностью погрузиться в процесс.
Поток — это не состояние где надо думать, это состояние когда уже все придумано, осталось сделать.
Бывали ли в этом состоянии?
🎅 - да, могу легко входить в поток
🎄- да, но войти в него не просто, должно много что совпасть
☃️- не понимаю о чем речь
#программирование | @andreyposnov
Вайб кодинг — не оправдание для некачественной работы
Интересная статья с размышлениями на тему пользы ИИ для кодинга и реально ли что 2 инженера смогут создать тех. долг за 50 разработчиков
🔗 Оригинал статьи
#программирование#ии