Как стать автором
Обновить
2
0.1

Пользователь

Отправить сообщение

Как искать уязвимости в проекте на Go: обзор популярных анализаторов кода и их возможностей

Время на прочтение8 мин
Количество просмотров9.2K

Статья заряжена на повышение безопасности вашего кода :) Расскажем о трёх популярных анализаторах, какие типы уязвимостей они способны обнаружить и покажем результаты проверки реальных проектов.

Читать далее
Всего голосов 19: ↑18 и ↓1+18
Комментарии5

[HTTP API & REST] Организация HTTP API согласно принципам REST

Уровень сложностиСложный
Время на прочтение10 мин
Количество просмотров7.8K

Это глава 37 раздела «HTTP API & REST» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

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

Эти принципы мы должны применить к протоколу HTTP, соблюдая дух и букву стандарта: URL операции должен идентифицировать ресурс, к которому применяется действие, и быть ключом кэширования для GET и ключом идемпотентности — для PUT и DELETE; HTTP‑глаголы должны использоваться в соответствии с их семантикой; свойства операции (безопасность, кэшируемость, идемпотентность, а также симметрия GET / PUT / DELETE‑методов), заголовки запросов и ответов, статус‑коды ответов должны соответствовать спецификации.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии18

Эволюция облачной системы авторизации

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров5K

Краткий обзор истории развития принципов авторизации — начиная с локального использования идентификаторов и паролей, заканчивая современными предложениями облачных сервисов. В статье разбираются основные переходные этапы на этом пути, а также приводятся примеры передовых решений, реализованных крупнейшими платформами интернета.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+42
Комментарии29

Даже Amazon не может разобраться в serverless и микросервисах

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров38K

Эта заметка является переводом поста в блоге Дэвида Ханссона под заголовком «Even Amazon can't make sense of serverless or microservices». Здесь минимум редактуры для сохранения оригинальной авторской подачи.

Команда Prime Video из Amazon опубликовала довольно примечательное тематическое исследование, посвящённое их решению отказаться от своей микросервисной serverless-архитектуры и заменить её монолитом. Этот шаг сэкономил им ошеломляющие 90% (!!) эксплуатационных расходов, а также упростил систему. Какая победа!

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

Читать далее
Всего голосов 70: ↑44 и ↓26+27
Комментарии94

Шаблон backend сервера на Golang — часть 5 — оптимизация Worker pool

Уровень сложностиСредний
Время на прочтение32 мин
Количество просмотров7.5K

# Шаблон backend сервера на Golang — часть 5 — оптимизация Worker pool


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Представленный Worker pool поддерживает работу с двумя типами задач


  • "Короткие" — не контролируется предельный timeout выполнения и их нельзя прервать
  • "Длинные" — контролируется предельный timeout выполнения и их можно прервать

Накладные расходы Worker pool на добавление в очередь, контроль очереди, запуск обработки task, контроль времени выполнения task:


  • Для "коротких" task — от 300 ns/op, 0 B/op, 0 allocs/op
  • Для "длинных" task — от 1400 ns/op, 16 B/op, 1 allocs/op

Для task, которые должны выполняться быстрее 200 ns/op представленный Worker pool использовать не эффективно


Собираются следующие метрики prometheus:


  • wp_worker_process_count_vec — количество worker в работе
  • wp_task_process_duration_ms_by_name — гистограмма длительности выполнения task в ms с группировкой по task.name
  • wp_task_queue_buffer_len_vec — текущая длина канала-очереди task — показывает заполненность канала
  • wp_add_task_wait_count_vec — количество задач, ожидающих попадания в очередь

Ссылка на репозиторий проекта.


Шаблон goapp в репозитории полностью готов к развертыванию в Docker, Docker Compose, Kubernetes (kustomize), Kubernetes (helm).


Ссылки на предыдущие части:


  • Первая часть шаблона была посвящена HTTP серверу.
  • Вторая часть шаблона была посвящена прототипированию REST API.
  • Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).
  • Четвертая часть будет посвящена развертыванию в Kubernetes с Helm chart и настройке Horizontal Autoscaler.
Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии4

Шаблон backend сервера на Golang — часть 3 (Docker, Docker Compose, Kubernetes (kustomize)

Уровень сложностиСложный
Время на прочтение27 мин
Количество просмотров9K

Шаблон backend сервера на Golang — часть 3 (Docker, Docker Compose, Kubernetes (kustomize)


Схема развертывания в Kubernetes


Первая часть шаблона посвящена HTTP серверу.


Вторая часть шаблона посвящена прототипированию REST API.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Четвертая часть будет посвящена развертыванию в Kubernetes с Helm chart и настройке Horizontal Autoscaler.


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Для корректного развертывания в Kubernetes, в шаблон пришлось внести изменения:


  • способа конфигурирования — YAML, ENV, Kustomize
  • подхода к логированию — переход на zap
  • способа развертывания схемы БД — переход на liquibase
  • добавление метрик prometheus

Ссылка на новый репозиторий.


Шаблон goapp в репозитории полностью готов к развертыванию в Docker, Docker Compose, Kubernetes (kustomize), Kubernetes (helm).


Настоящая статья не содержит детального описание используемых технологий


Содержание


  1. Изменение подхода к конфигурированию
  2. Добавление метрик prometheus
  3. Изменение подхода к логированию
  4. Развертывание схемы БД
  5. Сборка Docker image
  6. Сборка Docker-Compose
  7. Схема развертывания в Kubernetes
  8. Подготовка YAML для Kubernetes
  9. Kustomization YAML для Kubernetes
  10. Тестирование Kubernetes с kustomize
Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Как я веду Zettelkasten в Notion уже год: стартовый набор и полезные трюки

Время на прочтение8 мин
Количество просмотров173K

Zettelkasten — крутой метод хранения идей и знаний — сейчас на слуху, его уже обсуждали на Хабре. Я веду такой в Notion уже год, потому что Notion лучше всех воплощает три главных принципа Zettelkasten: взаимосвязанность, категоризацию, актуальность. Метод улучшил качество моего обучения и исследований, и без него как-то уже не так. 

Я почитал русскоязычные и англоязычные ресурсы и не нашел ни нормального шаблона для Notion, ни объяснения как реализовать главные преимущества метода Zettelkasten. Под катом и то, и другое. 

UPD: На текущий момент, статья безбожно устарела, потому что за еще один год я набрался опыта, помогая другим людям организовать их Цеттели и наблюдая за чужим опытом. А еще Notion выпустил несколько фич, заточенных именно под Цеттель. И теперь мне совестно, как новички страдают, разбираясь в теме после меня.

Эту статью можно почитать для понимания основ, но актуальные источники информации тут:

  • У меня в Психотронке можно следить за подготовкой обновленной версии, ну и написать мне за помощью. А можете не следить: версия 2.0 выйдет на Хабре.
  • В русскоязычном сообществе Zettelkasten в Телеграме сидят люди, которые хорошо разбираются в теме. Мы обожаем помогать новичкам.

Дисклеймер: ни Notion, ни автор метода мне за статью не платили.
Читать дальше →
Всего голосов 49: ↑49 и ↓0+49
Комментарии88

Воспитай свой второй мозг. Увеличь продуктивность

Время на прочтение9 мин
Количество просмотров73K

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

Хотели бы вы иметь второй мозг? Мозг, способный запомнить всё. Мозг, в котором содержится вся полезная информация из книг, статей, видео, полученная вами?

Звучит прекрасно, не так ли? Может, когда‑то и казалось сказками, однако не сейчас.

Хочу всё знать!
Всего голосов 62: ↑55 и ↓7+56
Комментарии111

Пять примечательных функций Postman, которые мы используем в тестировании банковских систем

Время на прочтение10 мин
Количество просмотров20K

Есть у Postman несколько полезных функций, которые помогают нам экономить десятки, а в некоторых случаях и сотни человеко-часов в месяц. Тут нет каких-то больших секретов или магии, но рассказ про них может для кого-то послужить началом долгого и продуктивного использования.

В этом посте я пробегусь по пяти функциям и приемам для Postman, которые мы используем для тестирования систем, связанных с банковскими операциями в сегменте C2B – теми самыми, которые весь мир ежедневно проводит через всевозможные кассовые аппараты, банкоматы, терминалы и QR-коды.

Читать далее
Всего голосов 14: ↑13 и ↓1+15
Комментарии12

Практический кейс: как быстро развернуть Testcontainer PostgreSQL для Spring Boot API

Время на прочтение7 мин
Количество просмотров13K

Тема с testcontainer-ами относительно не новая, первые статьи на англоязычных ресурсах встречаются с 2016 года, но не смотря на это, до сих пор на просторах веба крайне мало гайдов для их развертывания из коробки. В большинстве своем это туториалы, где собрана солянка из зависимостей и аннотаций, которые мало того, что не нужны, но еще и могут запутать разработчика, решившего  с ними познакомиться. В этой статье я опишу свой практический кейс по развертыванию тестовых контейнеров для базы данных PostgreSQL. Основная задача их использования - быстрый deploy нужного сервиса в контейнере за небольшое время. В дополнении для наглядности запустим туда FlyWay миграции.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии6

Типовое использование RabbitMQ

Время на прочтение4 мин
Количество просмотров34K

Алексей Барабанов, IT-директор «Хлебница» и спикер курса «RabbitMQ для админов и разработчиков», подготовил конспект о типовых архитектурных паттернах RabbitMQ. Из него вы узнаете, как настроить пайплайны обработки и реализовать очереди повторных попыток (в том числе, через механизм dead letter exchange). 

Читать далее
Всего голосов 35: ↑33 и ↓2+37
Комментарии4

Пятьдесят лет на стезе программирования. Часть VI. Грустный конец или злато правит миром. 1992-1997 г.г

Время на прочтение14 мин
Количество просмотров16K
Новый 1992 год мы встречали в новой стране. Если в прошлом 1991 году мы жили в Союзе Советских Социалистических Республик и строили развитой социализм, то теперь мы стали жить в Российской Федерации, в России, да ещё в условиях рыночной экономики, дикого капитализма. Наступали «лихие 90-ые». Мы ещё этого не осознавали, мы приступили к опытной эксплуатации стенда имитационного моделирования технических обликов перспективных ракетных комплексов и их подсистем, действий соединений и частей ракетных войск в различных условиях военно-стратегической обстановки и совместного боевого применения группировок РВСН, МСЯС, РКО и ВКС в операции СЯС, сокращённо просто СИМ, нашей вычислительной сети. Самым продвинутым сегментом этой сети была локальная вычислительная сеть нашего отдела:
Читать дальше →
Всего голосов 82: ↑73 и ↓9+82
Комментарии233

Тестирование PHP проектов на примере Symfony

Время на прочтение14 мин
Количество просмотров8.7K

Хочу описать свои наработки и устоявшиеся подходы к тестированию PHP проектов. Последние годы я работаю с Symfony и здесь будет достаточно моментов специфичных для этого фреймворка. Так же в этой статье термин функциональные тесты (functional) является синонимом End-to-End тестов. Статья рассчитана на разработчиков уже знакомых с PHPUnit и Symfony, структурой composer файла. Врочем, здесь есть и общеизвестные моменты, чтобы облегчить понимание тем, кто только начинает писать тесты. Статья призвана упорядочить знания и показать какие-то удобные подходы. Формат статьи не позволяет раскрыть все нюансы. Тем не менее, я постараюсь озвучить все основные моменты, применяемые в работе и которые лично мне помогают на практике. 

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии5

Как я делал хардварный чат — а получился всё равно софтварный ¯\_(ツ)_/¯

Время на прочтение9 мин
Количество просмотров7.2K
Картинка rawpixel.com, Freepik

— Пациент, мучают ли вас навязчивые странные идеи?
— Почему мучают, доктор, я ими наслаждаюсь!


Ввиду того, что я достаточно часто работаю с протоколом mqtt, мне периодически приходят в голову своеобразные мысли, одна из которых меня и посетила недавно: а что если сделать свой чат на этом протоколе?

Именно этим мы и займёмся в нашей статье.
Читать дальше →
Всего голосов 30: ↑24 и ↓6+31
Комментарии18

Scratch — это уже не игрушки

Время на прочтение4 мин
Количество просмотров45K
Незаметно для нас Scratch из языка программирования для детей превратился в огромное онлайн-сообщество самоучек-программистов. За время пандемии количество пользователей этого языка удвоилось, и он начинает обгонять в рейтингах популярности «реальные» языки программирования (наподобие Typescript и Rust).

Scratch — это уже не игрушки.

Скорее всего, вы знаете, что Scratch — это язык программирования для детей, в котором используются визуальные блоки:


Как и многие родители в пандемию, я недавно познакомил с ним моих детей. Он постепенно начал их захватывать, и я осознал, что под его поверхностью скрывается нечто большее. Я решил присмотреться, и вот что обнаружил.
Читать дальше →
Всего голосов 44: ↑43 и ↓1+53
Комментарии99

С чего начинается Elasticsearch

Время на прочтение14 мин
Количество просмотров233K

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


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

Читать дальше →
Всего голосов 39: ↑38 и ↓1+49
Комментарии44

Как я несколько лет боролся с прокрастинацией и победил: полное практическое руководство

Время на прочтение8 мин
Количество просмотров294K

Постоянно откладываешь дела на потом и не видишь в этом проблемы? Мне это знакомо. Расскажу как не повторить моих ошибок и почему пора это прекращать. Не откладывай эту статью на потом!

Начать читать
Всего голосов 125: ↑100 и ↓25+95
Комментарии174

API для Инвестиций, или Как написать торгового робота

Время на прочтение6 мин
Количество просмотров19K

На связи команда Тинькофф Инвестиций. В этой статье разберем, как клиенты с минимальными навыками программирования создают торговых роботов. Базой будет API брокера Тинькофф Инвестиций — Tinkoff Invest API. Добро пожаловать на борт!

Читать далее
Всего голосов 16: ↑14 и ↓2+13
Комментарии4

Управление доступом к операционным системам на серверах. Как и какие проблемы решает RBAC

Время на прочтение4 мин
Количество просмотров6.7K

Всем привет!

Про принципы работы Role Based Access Control (он же RBAC) слышали многие. Но реальное применение встречается довольно редко. Меня зовут Корняков Дмитрий, более 6 лет занимаюсь поддержкой инфраструктуры в команде Мир Plat.Form (НСПК). В статье расскажу про предпосылки создания, практическую реализацию и профит, который мы получили от ролевого доступа к ОС на инфраструктуре из 5000+ серверов в десятке доменов в разных ЦОД под управлением FreeIPA и Active Directory.

"Да что тут рассказывать – ещё на начальных курсах по админству про ролевую модель предоставления доступа рассказывают, и все всё знают."(с) Аноним

Под кат
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

«Уехал, и что дальше?» — подборка для планирования жизни за границей

Время на прочтение3 мин
Количество просмотров128K

Внезапно уехавшие могут пребывать в паническом шоке. А дальше что? Уехал, и? А что если затянется на года? Даже если есть деньги, в какой стране можно остаться надолго?

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

Читать скорее!
Всего голосов 77: ↑65 и ↓12+79
Комментарии234

Информация

В рейтинге
3 127-й
Зарегистрирован
Активность