Pull to refresh
12
0.3
Oleg Kunitsyn @olku

User

Topics API — как персонализированная реклама может работать без cookie

Level of difficulty Medium
Reading time 7 min
Views 928

Отказ от third‑party кук уже не за горами. Однако в попытке уберечь пользователя от «слежки» браузеры рискуют по дороге отправить в могилу индустрию персонализированной рекламы (и не только, но сегодня про нее). Могу только представить, что испытывает Google, разрываясь между желанием сохранить лояльность пользователей Chrome и стремлением продолжить зарабатывать на рекламе сотни миллионов долларов ежедневно. В качестве решения проблемы, в рамках инициативы Privacy Sandbox, Google предлагает использовать Topics Api, как инструмент доступа к «интересам» пользователя без возможности его отслеживания.

Читать далее
Total votes 8: ↑8 and ↓0 +8
Comments 0

Производительность базового поиска в Ozon как культурный феномен

Level of difficulty Medium
Reading time 22 min
Views 17K

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

Читать далее
Total votes 75: ↑71 and ↓4 +67
Comments 77

Секрет Безоса: Amazon специально делает свой сайт хуже, чтобы получать больше прибыли

Reading time 7 min
Views 53K

Федеральная торговая комиссия США (ФТК) отвечает за защиту прав потребителей, в том числе за борьбу с монополиями. Недавно она предъявила Amazon официальную жалобу за «незаконное удержание монопольной власти» и «сознательное ущемление прав покупателей». Это очень серьезно и может поставить компанию на грань разделения активов. Новые разделы жалобы показывают, что руководители Amazon, включая бывшего гендиректора Джеффа Безоса, вносили в платформу изменения, которые увеличивали прибыль компании, одновременно нанося вред покупателям и продавцам, а также делая сайт менее удобным в использовании.

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

Читать далее
Total votes 57: ↑54 and ↓3 +51
Comments 103

Автономия разработчиков. Как устроены компании нового типа

Level of difficulty Easy
Reading time 7 min
Views 9.6K

Сигарная фабрика начала 20 века, фото: университет Южной Флориды

Традиционная практика физически встречаться для совместной работы в наше время иногда рассматривается как архаизм. Очевидно, она уходит корнями в аналоговое прошлое, когда для работы с техникой требовалось физическое присутствие персонала. Современные офисы появились по старой фабричной модели, как на фото.

Человек — социальное существо. Люди привыкли физически собираться вместе, чтобы действовать сообща. Но внезапно выяснилось, что для интеллектуального труда это не обязательно. Работники успешно выполняют задачи не выходя из дома… Для некоторых представителей управленческой элиты это стало шоком.
Читать дальше →
Total votes 66: ↑60 and ↓6 +54
Comments 55

«Человеческая» сторона ИТ. Распространённые проблемы разработки, связанные с людьми

Reading time 4 min
Views 2.8K

Недавно Аби Нода*, программист и генеральный директор платформы DeveloperExperience, ознакомился с исследованием The Human Side of Software Engineering Teams: An Investigation of Contemporary Challenges. В нём авторы обозначили наиболее важные «человеческие» проблемы, сопутствующие разработке ПО.

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

Подробнее о том, как человеческий фактор мешает работать программистам, читайте под катом.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Total votes 20: ↑17 and ↓3 +14
Comments 0

Типичный Swagger без гмо

Level of difficulty Medium
Reading time 6 min
Views 7K

Кто из нас не был одурманен сказками про свагер? Мол, добавь эту волшебную штуку — да заживешь! Но плата за магию — зеленое болото нотаций. А нельзя ли обойтись только типизацией самого php? (Спойлер: онжом)

Читать далее
Total votes 21: ↑21 and ↓0 +21
Comments 9

Мониторинг с Grafana. Best practices

Level of difficulty Medium
Reading time 11 min
Views 18K

Сборная солянка из существующих best practices по работе с Grafana и немного с Prometheus, проверенных мной лично. Можно просто положить в закладки — когда-нибудь да пригодится.

Будет полезно
Total votes 17: ↑17 and ↓0 +17
Comments 12

Трейсы в Spring Boot 3 с использованием Zipkin и Kafka в качестве транспорта

Level of difficulty Medium
Reading time 13 min
Views 4.6K

Рассмотрим вариант добавления трейсов в Spring Boot 3 приложение с использованием Kafka в качестве транспорта и Zipkin в качестве инструмента для трассировки.

Функциональность соберем в автоконфигурацию для подключения к Spring Boot приложениям.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 6

Индексирование полнотекстовых данных в PostgreSQL с использованием модуля pg_trgm

Level of difficulty Easy
Reading time 11 min
Views 6.3K

Привет, Хабр!

PostgreSQL, одна из самых мощных и гибких реляционных СУБД, предлагает нам свой модуль pg_trgm, чтобы решить сложную задачу полнотекстового поиска.

Когда речь идет о поиске, просто LIKE запросы больше не всегда могут удовлетворить технические требования. Полнотекстовый поиск подразумевает не только поиск точных соответствий, но и учет схожести слов, учет морфологии, а также поддержку более сложных запросов. PostgreSQL, конечно, предоставляет средства для выполнения таких задач, и модуль pg_trgm - один из инструментов, с помощью которого это можно сделать.

Итак, что такое pg_trgm? Этот модуль PostgreSQL предоставляет набор функций и операторов, которые позволяют работать с трехграммами (триграммами) - это последовательности из трех символов. Для понимания, давайте взглянем на пример...

Читать далее
Total votes 23: ↑21 and ↓2 +19
Comments 12

Распределённые транзакции

Level of difficulty Medium
Reading time 10 min
Views 21K

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

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

Я проработал статью и подготовил конспект простыми словами, местами дополнил информацией из других источников и полезными ссылками.

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

Читать далее
Total votes 26: ↑23 and ↓3 +20
Comments 1

Прививка от ошибки выбора: что спросить работодателя «на берегу»

Level of difficulty Easy
Reading time 13 min
Views 20K

Меня зовут Настя, я руководитель службы инструментов репозитория в Yandex Infrastructure. Больше 15 лет я проработала в IT-индустрии: сначала как разработчик, потом тимлид, техлид, менеджер проектов и руководитель службы. За это время несколько сотен человек рассказали мне о своём карьерном пути: кто-то собеседовался со мной как с нанимающим менеджером, кто-то приходил ко мне на менторинг, кто-то расширял свой нетворк, как теперь модно говорить. Из этих разговоров можно выделить причины недовольства работой, которые я вижу у людей чаще остальных. Одна из главных причин — ошибка выбора вакансии.  

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

Читать далее
Total votes 50: ↑47 and ↓3 +44
Comments 48

Хочите виртуальный macOS на своём PC? Их есть у меня

Level of difficulty Easy
Reading time 6 min
Views 30K

Статья о том как установить себе "macOS Monterey" в виртуальной машине на обычном PC без покупки для этой цели макбука или айМака.

По идее это просто туториал как получить у себя на обычном PC систему macOS и Xcode, но так как я тут нахожусь в состоянии "Отхабренный" я могу отправлять статьи только в "Профильные хабы". По этой статье больше бы подошло "Tutorial", но такого хаба я не нашёл и поэтому выбрал наиболее близкие хабы по теме статьи: "Настройка Linux" и "Разработка под iOS". И КДПВ тоже я выбрал идиотскую -- просто сделал скриншот со своего компа где продемонстировал версию macOS и версию установленного у меня Xcode.

Если интересно, то "Читать далее"
Total votes 60: ↑48 and ↓12 +36
Comments 60

Как добавить кастомный аутентификатор в KeyCloak и подружить его со сторонней системой

Reading time 15 min
Views 2.7K

Всем привет.

Сегодня мы покажем вам простой пример, как в Keycloak можно добавить кастомный аутентификатор.

Как вы все знаете, Keycloak – это система адаптивной аутентификации, позволяющая реализовать фактические любой процесс аутентификации (ограниченный только навыками разработки на Java) и выступать в качестве Identity Provider для клиентов по протоколам OIDC и SAML.

В стандартном наборе представлено много типовых аутентификаторов. Но что делать, когда стандартных аутентификаторов недостаточно и необходимо реализовать свою логику? Официальная документация дает ответ: разработать аутентификатор самому.

Что мы вместе с нашим системным инженером направления кибербезопасности К2Тех Егором Туркиным в итоге и сделали.

Читать далее
Total votes 9: ↑8 and ↓1 +7
Comments 2

Модель Такмана в переговорах

Level of difficulty Easy
Reading time 17 min
Views 6K

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

Читать далее
Total votes 13: ↑12 and ↓1 +11
Comments 5

Как работать с GPT-4 с помощью продвинутых промтов

Level of difficulty Medium
Reading time 5 min
Views 27K

ChatGPT – это один из сервисов на базе большой языковой модели GPT. Модель генерирует текст, похожий на созданный человеком, и отвечает на вопросы в разговорной манере. Чтобы профессионально использовать чат-бота, этому нужно учиться. Все мы знаем, что такое программа Excel, что там есть формулы и функции. Но немногие могут использовать все возможности в программе и быстро получать результат. Такая же ситуация с ChatGPT. 

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

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

В этой статье я расскажу о 16 наиболее распространенных промтах, которые применяют в промт-инжиниринге. Все примеры были протестированы в версии ChatGPT, доступной в России без VPN. В качестве такой русифицированной версии я использовал MashaGPT, которая работает с оригинальной GPT-4 через API.

Читать далее
Total votes 22: ↑14 and ↓8 +6
Comments 6

Готовим микрофронтенды на чистом JS без фреймворков

Level of difficulty Medium
Reading time 15 min
Views 6.7K

Привет, Хабр! Меня зовут Евгений Лабутин, я разработчик в МТС Digital. Сегодня я расскажу вам о своем рецепте приготовления микрофронтендов без использования каких либо фреймворков. Ведь такие фреймворки как Webpack Module Federation, Single-SPA, SystemJS и подобные вам просто не нужны для написания микрофронтендов, ровно так же как вам не нужен jQuery для написания современных фронтендов. Ведь все необходимое для разработки и работы Микрофронтендов уже встроено во все современные браузеры. Интересно? Добро пожаловать в статью.

Читать далее
Total votes 24: ↑18 and ↓6 +12
Comments 21

Настраиваем отказоустойчивый Keycloak с Infinispan в Kubernetes

Reading time 11 min
Views 17K

В этой статье мы поделимся опытом развертывания в кластере Kubernetes устойчивой и масштабируемой инсталляции популярного решения для обеспечения «единого входа» (SSO) — Keycloak в связке с Infinispan (для кэширования пользовательских метаданных).

Читать далее
Total votes 27: ↑27 and ↓0 +27
Comments 7

Поднимаем кластер PostgreSQL в Docker и Testcontainers

Level of difficulty Medium
Reading time 8 min
Views 14K

Ранее я рассказывал о том, как запустить PostgreSQL в Docker. Тогда речь шла об использовании «ванильных» образов Postgres и поднятии одного хоста. В большинстве случаев этого достаточно как для тестов, так и для экспериментов, но нужно понимать, что в промышленной эксплуатации чаще всего используются высокодоступные (отказоустойчивые, кластеризованные) конфигурации PostgreSQL.

Сегодня я покажу, как запустить уже целый кластер PostgreSQL в Docker, а также в тестах через Testcontainers, и как вручную инициировать смену мастер-хоста.

Читать далее
Total votes 17: ↑17 and ↓0 +17
Comments 1

Разворачиваем веб-приложение в Kubernetes с нуля

Level of difficulty Easy
Reading time 31 min
Views 24K

Современные веб-приложения, даже простые на вид, часто подразумевают нетривиальную архитектуру, состоящую из многих компонент. В статье «Делаем современное веб-приложение с нуля» я рассказал, как она может выглядеть, и собрал для демонстрации простейшую реализацию на стеке из нескольких популярных технологий. В неё вошёл бэкенд, фронтенд, воркер для асинхронных задач и аж два хранилища данных — MongoDB как основная база и Redis как очередь задач. В «Делаем поиск в веб-приложении с нуля» я показал, как можно добавить полнотекстовый поиск, и подключил третье хранилище — Elasticsearch.

Всё это время для простоты разработки и отладки компоненты приложения запускались локально через Docker Compose. Но как развернуть такое приложение в настоящем продакшн-окружении? Как обеспечить горизонтальное масштабирование? Как раскатывать новые релизы без простоя? 

В этой статье мы разберёмся, как разворачивать многокомпонентное веб-приложение в кластере Kubernetes на примере его локальной реализации — minikube. Мы поднимем виртуальный кластер прямо на рабочем ноутбуке, разберёмся с основными сущностями Kubernetes, запустим и соединим между собой компоненты демо-приложения и обсудим, какие ещё возможности Kubernetes пригодятся нам в суровом энтерпрайзе. Если вы занимаетесь разработкой и слышали о Kubernetes, но ещё не имели возможности пощупать его руками — добро пожаловать под кат!

Скорее к YAML-инженерии
Total votes 38: ↑38 and ↓0 +38
Comments 9

Keycloak — больно не будет

Level of difficulty Hard
Reading time 17 min
Views 18K

Привет! Меня зовут Алексей, я DevOps-инженер компании Nixys. «Как правильно и своевременно предоставлять и отнимать доступ у различных сотрудников?» — этот вопрос беспокоит всех. Особую важность эта задача приобретает, когда продукт начинает быстро расти — если ваш штат регулярно меняется, вопросы безопасности данных и работоспособности системы должны стоять на особом контроле.

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

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 5

Information

Rating
1,668-th
Location
Berlin, Berlin, Германия
Registered
Activity