Как стать автором
Обновить
320.5
KTS
Создаем цифровые продукты для бизнеса
Сначала показывать

Зачем мы сделали собственный контроллер для копирования секретов в Kubernetes

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

Меня зовут Игорь Латкин, я системный архитектор в компании KTS.

Делимся нашей внутренней разработкой — Kubernetes-контроллером mirrors. Мы создали его внутри нашего DevOps-отдела для копирования Kubernetes-секретов между неймспейсами кластера. В итоге mirrors превратился в универсальный инструмент синхронизации данных из разных источников.

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

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

Подключение OAuth в iOS за полчаса

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

Привет! Меня зовут Лена, я занимаюсь iOS-разработкой в KTS.

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

В мобильных приложениях используется Authorization Code Flow with Proof Key for Code Exchange (PKCE). Подробнее о выборе flow читайте в нашей предыдущей статье. Эта статья является продолжением.

Сегодня мы рассмотрим вариант реализации OAuth-авторизации с помощью библиотеки AppAuth-iOS. Она одна из самых популярных и довольна проста в использовании. Весь код из статьи доступен в Github.

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

Как стажёр оптимизировал запросы и нашел баг в Django

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

Привет! Меня зовут Иван, я бэкенд-разработчик-стажёр в KTS.

Недавно я нашел баг в Django, создал тикет с исправлением и его приняли.

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

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

Курс начинающего бэкендера в Metaclass: интервью со студентом 7-го потока

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

8 августа начинается новый, девятый поток нашей школы Metaclass по курсам frontend и backend для начинающих.

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

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии1

Как работают браузеры. Часть 2: парсинг и выполнение JS

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

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

В прошлой статье мы обсудили навигацию и получение данных. Сегодня поговорим о HTML- и CSS-парсинге и выполнении JavaScript.

Содержание:

1. HTML-парсинг:
— Парсинг
— Браузерные движки
— Токенизация
— Построение DOM
— Предварительные загрузчики и ускорение страницы

2. CSS-парсинг:
— Токенизация и построение CSSOM

3. Выполнение JavaScript:
— Движки JavaScript
— Компиляция
— Интерпретация
— Комплияция Just-In-Time
— Как обрабатывается код JavaScript

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

Почему спустя 5 лет код-ревью на Upsource мы перешли на GitLab

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

Привет! Меня зовут Максим, я руковожу мобильной разработкой в KTS.

Наша команда мобильной разработки использовала Upsource с 2017 года: на тот момент он был одним из самых удобных инструментов для просмотра кода, комментирования и изучения правок. Мы использовали selfhosted-вариант сервиса. 

Однако через некоторое время, по мере роста команды и изменения процессов, мы начали сталкиваться с рядом проблем, которые подтолкнули нас к пересмотру сервиса для код-ревью.

Рассказываю о нашем опыте работы с системами код-ревью, и почему через 5 лет работы на Upsource мы переехали на GitLab.

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

Комплексный системный подход к разработке программного обеспечения

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

Разработка программного обеспечения — решение бизнес-задач через построение сложных программных систем. Это такая же система, как и в Теории систем — состоящая из многих подсистем, взаимодействующая с другими системами и окружающей средой.

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

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

boop! Необычные эффекты по ховеру или введение в React-Spring

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

Анимация при наведении – прекрасный способ сделать приложение динамичным и отзывчивым. Это мелочь, но именно такие детали в итоге могут сделать продукт классным.

По результатам неофициального опроса в Twitter poll было решено назвать этот эффект «boop». В этом уроке для intermediate-пользователей React мы разберём, как его реализовать.

Boop!
Всего голосов 8: ↑8 и ↓0+8
Комментарии1

Как работают браузеры. Часть 1: навигация и получение данных

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

Браузеры — это программное обеспечение, установленное у нас на устройствах и позволяющее получать доступ к Интернету. Как они работают, и что происходит от момента ввода адреса до тех пор, пока нужная страница не отобразится на экране?

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

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

Сегодня — навигация и получение данных.

Статья предназначена для начинающих разработчиков и интересующихся разработкой. Здесь нет глубоких технических деталей.

Читать далее
Всего голосов 11: ↑9 и ↓2+9
Комментарии6

Теперь Dockerfiles поддерживает Multiple Build Contexts

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

Новые релизы Dockerfile 1.4 и Buildx v0.8+ дают возможность определения нескольких контекстов сборки. Теперь в качестве сборки вы можете использовать файлы из разных локальных директорий. Давайте посмотрим, какая от этого польза и как это внедрить в ваши процессы.

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

Structured concurrency в Swift

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

Примечание переводчиков: В Swift 5.5 появилась новая концепция языка async/await. Мы решили опубликовать перевод статьи, чтобы разобраться с structured concurrency.

За время подготовки перевода оригинал успели переписать, и в статье ниже мы совместили обе версии: сначала идет развернутая версия, а в конце — краткие чек-листы с избранной информацией.

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

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

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

Websocket-сервер для геолокации на asyncio

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

Привет!

Меня зовут Артем, я занимаюсь бэкенд-разработкой в отделе спецпроектов KTS и веду курс по асинхронному программированию в школе Metaclass. 

11-го апреля у нас стартует 3-й поток курса. Чтобы показать, чему учатся наши студенты, мы провели live-code-вебинар по вебсокетам, на котором написали сервис, в котором пользователи могут делиться своей геопозицией в режиме реального времени. Хотите узнать, как создавать такие сервисы?

Хочу
Всего голосов 12: ↑12 и ↓0+12
Комментарии4

OAuth в мобильных приложениях

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

Привет! Меня зовут Максим, я занимаюсь мобильной разработкой в KTS.

Ни один сервис не обходится без логина. Часто в мобильных приложениях требуется интегрировать вход через сторонние соцсети — например, зайти через Google или VK. А при обучении мобильной разработке используются открытые API, где для авторизации используется OAuth.

Поэтому разработчикам мобильных приложений приходится работать с OAuth. В сети по этой теме есть разрозненные материалы. 

Этой статьей я попробую закрыть нюансы OAuth в мобильных приложениях: на какие моменты стоит обратить внимание, какие способы реализации выбрать. А также поделюсь опытом настройки OAuth в Android-приложении с использованием библиотеки AppAuth.

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

Пишем асинхронного Телеграм-бота

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

Привет! Меня зовут Александр, я руководитель бэкенд-разработки в KTS.

Сегодня я покажу, как написать своего Телеграм-бота на основе asyncio и aiohttp.

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

Статья предназначена для начинающих асинхронных программистов.

Читать далее
Всего голосов 27: ↑25 и ↓2+28
Комментарии10

Подробно о том, как работают React Server Components

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

React Server Components (RSC) — интересная новая фича в React.

Есть вероятность, что в ближайшем будущем она сильно повлияет на скорость загрузки страниц, размер бандлов и то, как мы будем писать приложения на React. Мы в Plasmic (место работы автора) делаем визуальный конструктор для React и очень заботимся о производительности. Многие из наших клиентов используют Plasmic для создания маркетинговых сайтов и сайтов электронной коммерции, и производительность там критически важна. Так что хотя RSC — пока что ранняя экспериментальная функция React 18, мы разобрались, как она работает под капотом. Об этом и расскажем в статье.

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

React Drag & Drop: «Игра в бутылки»

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

Меня зовут Сергей, я фронтенд-разработчик отдела спецпроектов KTS. Наш отдел занимается разработкой веб-приложений для промокампаний. 

Помните, как в 1-й книге о Гарри Поттере Гермиона разгадывала логическую загадку с бутылочаками волшебных зелий? Сегодня расскажу, как мы создавали именно такую игру. 

У нас есть 5 бутылок и 2 полки. При старте игры на одной полке произвольно устанавливаются бутылки и их необходимо установить в правильном порядке на второй полке.

Мы воспользуемся react-dndstyled-componentsmobx и createPortal.

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

Автоматический подсчет показателей бизнес-юнитов

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

Привет! Меня зовут Сергей, я управляющий партнер в KTS

В нашей компании есть несколько юнитов, которые занимаются разными направлениями.

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

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

Удаление GIL из Python: заметки со встречи Python Core и Сэма Гросса

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

Во время ежегодного спринта разработчиков ядра Python мы встретились с Сэмом Гроссом, автором nogil — fork в Python 3.9, который удаляет GIL. В статье — итоги встречи.

Среди вопросов, на которые ответил Сэм:

— Какова вероятность того, что nogil в итоге окажется нежизнеспособным для включения в CPython?
— Как вы планируете синхронизировать свою работу с main? Есть ли какие-то советы по порядку коммитов?
— Включение nogil во время запуска — это долгосрочная опция, или только на переходное время?
— В финале предполагается исключительно nogil, без вариантов вернуть GIL обратно?
— Что вы думаете о параллельном запуске нескольких интерпретаторов Python с одним GIL для каждого?

И многие другие. Полный список приведен в начале статьи.

Посмотреть полное содержание встречи
Всего голосов 24: ↑23 и ↓1+24
Комментарии22

Курс начинающего бэкендера в Metaclass: интервью со студентом

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

Привет!

31-го января начинается новый поток нашей школы Метакласс по курсам начинающего бэкендера и фронтендера.

Мы поймали одного из наших стажеров, который проходил курс «Начинающий Backend-разработчик» и подробно расспросили: с какими знаниями пришел на курс, что было сложно, и какая главная польза была от обучения?

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

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

«Галера»

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

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

Читать
Всего голосов 63: ↑32 и ↓31+7
Комментарии121

Информация

Сайт
kts.tech
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия