Pull to refresh
-1
0
Send message

Bug Bounty: разведка превыше всего

Level of difficultyEasy
Reading time6 min
Views4.9K

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

Читать далее

Настройка авторизации через ssl сертификат на уровне nginx

Level of difficultyMedium
Reading time5 min
Views16K

Привет уважаемые, хабровчане!

Иногда возникает потребность выдать доступ пользователям только к одному веб ресурсу в компании. Самый очевидный вариант сделать это через урезанный VPN, но тут возникают препятствия в виде девайсов, с которых подключаются пользователи, и качество интернета, которым они пользуются. OpenVPN, который мы пробовали использовать для этих целей, не дал желаемого результата, подключение было медленным и нестабильным. Поэтому было найдено альтернативное решение.

Читать далее

Как писать про свой DIY-проект, чтобы его полюбили тысячи?

Level of difficultyEasy
Reading time3 min
Views5K

Что относится к DIY? Любой завершённый проект, при создании которого использованы лучшие ресурсы человека: руки и мозг, фантазия и изобретательность, инженерная мысль и рабочий дизайн. Это может быть что угодно: от бумажной настолки с необычной логикой до самодельного автомобиля. Проект может реализовать самоучка или топовый инженер, программист или просто очень хороший родитель — важно, что такие проекты реализуются для целей обучения, развлечения, реализации своих способностей и для пользы людей (а как показывает Хабр, ещё и котов). 

Но, к сожалению, не каждый изобретатель готов рассказать о своём проекте — нередко причина кроется в страхе сесть и начать писать, непонимании, как это — говорить буквами о технике (хотя, по нашему опыту, все с этим отлично справляются). Мы подготовили для вас крошечный гайд, почти план — как писать о DIY-проекте на Хабр.

Читать далее

Как построить систему, способную выдерживать нагрузку в 5 млн rps

Level of difficultyMedium
Reading time12 min
Views57K

Всем привет! 

Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о том, как мы строили линейно масштабируемую gRPC-прокси перед Kafka, способную обслуживать миллионы запросов в секунду, используя Go.

Читать далее

Метафоры подходов к созданию IT-продуктов

Reading time6 min
Views7.3K

Я уже много лет занимаюсь созданием IT-продуктов. Всё это время для себя и коллег собираю метафоры, которые позволяют наглядно показать, как нужно и как ненужно выстраивать работу по созданию ПО.

По мере работы над IT-продуктом мы узнаем что-то новое о рынке и пользователях и за счет этих знаний продукт перестраиваем. В физическом мире довольно сложно постоянно перестраивать, а в IT – это повседневная задача. По мере перестройки системы мы получаем результат, который все лучше и точнее попадает в запросы клиентов, что и приводит нас к прибыли.

Я рассмотрю 5 моих любимых метафор, которые помогают сонастраивать общее видение процесса для команды разработки и заказчика:

Читать далее

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

Reading time8 min
Views11K

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

Читать далее

Пробел в самооценке: иллюзии экспертности и красная таблетка

Reading time14 min
Views5.8K

Американское выражение fake it till you make it, взятое на вооружение нашим коллективным сознательным, похоже, сыграло с нами злую шутку. Мы, как водится, расслышали это только наполовину, и в обиход взяли только первую его часть. Fake it. По итогу наша уже почти целиком виртуальная реальность выглядит так: мы попросту транслируем и внутрь, и наружу себя то, чем мы не являемся, в конечном итоге просто начиная верить в это сами.

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

Является ли человек на самом деле отличным маркетологом, вы не проверяли, — что тут проверять и портить ему настроение недоверием — сказал, маркетолог, значит так и есть. Более того, очевидно, что человек ни разу не врет — он на самом деле уверен в эксклюзивности своих профессиональных скилов. Он уверен, что он — маркетолог. Не уверены в этом только вы и огромная гора его криво реализованных задач.

Это — самая примитивная иллюстрация явления, которое порождено выражением accountability gap. В данном случае в него попали и вы, и самоназванный маркетолог. И про выражение это позвольте поговорить подробно отдельно.

Читать далее

Хранилище для Почты

Reading time14 min
Views3.7K

Какие могут возникнуть технические сложности при разработке своего почтового хранилища? Зачастую они связаны с хранением индексов и ускорением записи. Чтобы решить все потенциальные проблемы, важно владеть определёнными приёмами.

Про них нам расскажет Могилин Виктор, руководитель группы разработки стораджей в Почте Mail.ru (компания VK). Он опишет, что такое объектный сторадж в деталях, а также поделится своим опытом в реализации такого хранилища.

Читать далее

MVP: как получить «минимально жизнеспособный», а не «минимально полезный» продукт

Reading time8 min
Views5.7K

MVP –  это minimum VIABLE product: минимально жизнеспособный продукт. Но почему зачастую происходит так, что вместо minimum VIABLE получается minimum VALUABLE — минимально полезный? 

Рассказываем, что такое MVP, почему не всегда удается сделать именно минимально жизнеспособный продукт и на что стоит обратить внимание если проект едет в сторону minimum VALUABLE.

Читать далее

QAk-QAk мы запускали подкаст

Level of difficultyEasy
Reading time13 min
Views2K

Привет от QA-комьюнити Тинькофф! В нашем профессиональном сообществе непрерывно обсуждаются вопросы обеспечения качества. Встречи QA-инженеров, общение в чатах, работа над новыми проектами — все это помогает нам развивать качество продукта. А любовь к работе, непрерывное обучение и нетворкинг помогают развивать QA-сообщество.

Сейчас популярность набирают новые форматы — социальные сети и подкасты. В Тинькофф мы ведем несколько подкастов и сегодня расскажем про один из них — «QAk-QAk — и в продакшен».

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

Читать QAk-QAk это было

Поколение оскорблённых: защита прав или дискриминация инакомыслия?

Reading time10 min
Views9.4K

Начать хотелось бы с простого вопроса - а вам не кажется, что люди стали слишком часто обижаться? На всё подряд. Религия, рацион, мировоззрение, традиции, язык, цвет кожи, сексуальная ориентация, гендерная идентичность, длина волос, национальные костюмы... на всё подряд. Оскорблённость сейчас словно является непременным атрибутом высокоморального человека. Хороший человек просто обязан быть на кого-то обиженным и требовать контрибуций и репараций в пользу своей социальной группы, иначе его признают пассивным и непросветленным, а то и вообще запишут в ранг "угнетателей" с последующими попытками весьма агрессивного переубеждения.

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

Читать с риском обидеться

Джентельменский набор для фандрайзинга: Pitch Deck, Data Room, Updates

Level of difficultyEasy
Reading time8 min
Views3.1K

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

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

Читать далее

Как Discord хранит триллионы сообщений

Level of difficultyEasy
Reading time10 min
Views30K

В 2017 году мы написали пост о том, как храним миллиарды сообщений [перевод на Хабре]. В нём мы рассказали о том, как начали с использования MongoDB, но потом выполнили миграцию данных в Cassandra, потому что искали надёжную, устойчивую к сбоям базу данных, имеющую относительно низкую стоимость обслуживания. Мы знали, что будем расти, так и произошло!

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

Спустя почти шесть лет мы многое изменили; изменился и способ хранения сообщений.
Читать дальше →

А как у них? Культурные различия IT-гигантов: МЯСО vs FAANG

Reading time8 min
Views24K

Фраза “Мы живем в удивительные времена” стала грустноватым клише. И некоторое время назад многие работники IT-сферы серьезно задумались о миграции (утверждение, написанное в мае 2022, сейчас звучит еще наивнее).

Сам миграционный топик довольно серьезно исследован на хабре - можно найти массу прекрасных историй об успешных (и не очень) переездах, о компаниях и странах. Мое личное мнение состоит в том, что миграция - сложное решение с длинным списком плюсов и минусов. Думаю, многие согласятся: даже при смене компании есть множество подводных камней и рисков. Если же к этому добавить смену страны/культуры, то все становится еще более веселым. Но чего же, все-таки, стоит ожидать? В этой статье я попробую дать комментарии по разным аспектам рабочих процессов “у нас” и “у них”.

Читать далее

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

Level of difficultyMedium
Reading time32 min
Views10K

# Шаблон 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.
Читать дальше →

Тайные каналы связи или как централизованные сервисы способны разлагаться изнутри

Level of difficultyHard
Reading time17 min
Views5.4K

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

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

Читать далее

9 советов по повышению производительности Vue

Reading time8 min
Views36K
В этой статье собрано девять советов о том как повысить производительность вашего приложения на Vue, увеличить скорость отображения и уменьшить размер бандла.
Читать дальше →

Оптимизация доступа к элементам слайса в Go

Level of difficultyMedium
Reading time4 min
Views7K

Привет Хабр!

В своей предыдущей статье про разбор кода победившего в VK Cup'22/23 я описывал как мне удалось ускорить копирование одной картинки в другую в 30 раз с помощью чёрной магии unsafe. Однако я не переставал задаваться вопросом, можно ли увеличить скорость еще больше. Я даже привлёк OpenAI в поисках решения, но он мне помог только с картинкой для обложки статьи. В итоге я нашел способ улучшить код еще в 2 раза. Чем и хочу поделиться.

Читать далее

Выпускайте Кракена: опыт использования KrakenD

Reading time12 min
Views19K

Привет, Хабр! Меня зовут Владимир Калугин, я руковожу бэкенд-разработкой в МТС Travel. Сегодня расскажу про KrakenD, готовое решение, которое мы используем для реализации API-шлюза, важной штуки для продуктов с микросервисной архитектурой. Уверен, наш опыт может пригодиться разработчикам из других сервисов.

Читать далее

Как эффективно делиться результатами своей работы? О «хвастовстве» здорового человека

Reading time6 min
Views26K

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

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

Возможно, вам знаком такой сценарий. Чтобы не быть Сашей, важно научиться правильно презентовать результаты своей работы. Как это делать эффективно — рассказываем на примере сотрудника техподдержки.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity