Обновить
26

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

17
Подписчики
Отправить сообщение

Реальный Windows. Пишем realtime под окошками

Время на прочтение11 мин
Охват и читатели17K

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

Читать далее

30 лучших Python-проектов на GitHub на начало 2022 года

Время на прочтение9 мин
Охват и читатели70K

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

UPD: добавили ссылки.

Читать далее

Мониторинг высоконагруженных систем

Время на прочтение9 мин
Охват и читатели17K


Мониторинг IT-систем – это то, в чем рано или поздно (и в этом случае чем раньше, тем лучше) возникает острая необходимость для понимания того, а что, собственно, с нашей системой происходит? И зачастую такая необходимость идет рука об руку с другими вопросами, такими как: как это внедрить? Что мониторить? Как это развивать и поддерживать? Более того, на них становится все сложнее ответить с увеличением масштаба IT-системы.

В этой статье описан один из вариантов реализации решения такого мониторинга с использованием open-source продуктов на основе опыта внедрения его в промышленную эксплуатацию для потока событий в высоконагруженной IT-системе с микросервисной архитектурой. Под потоком событий подразумеваются, например, звонки в контактный центр, выпуск деталей, заказы на доставку еды или в общем запросы, поступающие на «вход» IT-системы.
Читать дальше →

PostgreSQL Antipatterns: делаем группировку быстрее от 0.1 до 5 раз

Время на прочтение2 мин
Охват и читатели14K

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

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

Читать далее

Высокопроизводительные микросервисы на Kotlin с использованием gRPC. Долгий путь к DSL

Время на прочтение10 мин
Охват и читатели12K

Очень часто при проектировании высоконагруженных систем, основанных на микросервисной архитектуре, обнаруживается что «узким» местом, ограничивающим производительность системы и возможности ее масштабирования, становится передача сообщений и временные затраты на сериализацию-десериализацию сообщений и дополнительные расходы на установку соединения и начальные согласования. Решением может стать использование протокола gRPC с кодированием сообщений с применением Protocol Buffers (protobuf).

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

Читать далее

Как мы отказались от JPEG, JSON, TCP и ускорили ВКонтакте в два раза

Время на прочтение24 мин
Охват и читатели177K

На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют. 

Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать. 

Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.

Читать далее

Сборка 90% механической клавиатуры XD96

Время на прочтение5 мин
Охват и читатели27K

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

Собирать мы будем 90% механическую клавиатуру XD96 на плате от KPREPUBLIC.

Читать далее

Пакеты Flutter, которые я использую в каждом проекте

Время на прочтение4 мин
Охват и читатели17K

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

Читать далее

k-means in Clickhouse

Время на прочтение5 мин
Охват и читатели9.9K

Реализация алгоритма k-средних на диалекте SQL без питонов и дополнительных библиотек.

Читать далее

О дебаге Kotlin-корутин

Время на прочтение5 мин
Охват и читатели7.6K

Привет, Хабр. Хочу поделиться своим решением одной из проблем использования корутин в Kotlin.

Корутины в Kotlin - одна из значимых фич языка, которая позволяет писать асинхронных код в синхронном стиле. Корутины прекрасны во всём, до тех пор пока не возникает необходимость их дебажить.

Читать далее

GPT для чайников: от токенизации до файнтюнинга

Время на прочтение13 мин
Охват и читатели151K

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

Читать далее

Как мы избавились от 80% своего кода, повысив скорость разработки и уменьшив количество ошибок

Время на прочтение12 мин
Охват и читатели66K


Оптимизация кода и развитие микросервисной архитектуры занимает значительную часть жизни команды разработчиков МВидео-Эльдорадо. Тем любопытней изучить опыт коллег за рубежом. Предлагаем вашему вниманию очередной пост на тему: «А как там у них».
Читать дальше →

Делаем Telegram бота с Админ-панелью и многими другими плюшками. Часть 2

Время на прочтение5 мин
Охват и читатели72K

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

Давайте продолжим?

Я всегда с собой беру…

Время на прочтение9 мин
Охват и читатели60K

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

LJV: Чему нас может научить визуализация структур данных в Java

Время на прочтение26 мин
Охват и читатели32K

Эта статья является пересказом моего доклада на Java-конференции SnowOne 2021 года. LJV — проект, созданный в 2004 году как инструмент для преподавания языка Java студентам. Он позволяет визуализировать внутреннее устройство структур данных. В этом докладе я запускаю LJV на разных структурах (от String до ConcurrentSkipListMap) в разных версиях Java и разбираю, что там внутри, как оно менялось от версии к версии, и как это всё работает.


image

Читать дальше →

Паразит, превращающий хозяина в зомби, одержимого желанием секса

Время на прочтение3 мин
Охват и читатели81K

Автор: Лысый Камрад (@LKamrad)

Паразит, превращающий хозяина в зомби, одержимого желанием секса, пичкающий его галлюциногенами и "амфетамином", в то время как сам хозяин (носитель паразита) разлагается заживо, не замечая этого.

Как вам такое, правда похоже на сюжет фантастического фильма ужасов? Но это не выдумка сценаристов, а реальность. Просто жертвами паразита становятся не люди, а...

Читать далее

Повышаем производительность файлового I/O в JVM на Linux

Время на прочтение19 мин
Охват и читатели8.3K

Все кто хоть раз касался разработки I/O интенсивных приложений, наверное, задумывался о повышении их производительности. Особенно когда у проекта много внешних хранилищ и они находятся по всему миру. Давайте разберем какие есть инструменты с их плюсами и минусами и как их лучше использовать на примере конкретного проекта, в котором принимал участие Дмитрий Бундин, старший Big Data-разработчик в Grid Dynamics.

Читать далее

Создание и тестирование неблокирующих веб-приложений с помощью Spring WebFlux, Kotlin и Coroutines

Время на прочтение14 мин
Охват и читатели13K

Когда поступает HTTP-запрос, «обычное» веб-приложение сопоставляет запрос с конкретным потоком из пула потоков. Этот назначенный поток остается с запросом до тех пор, пока ответ не будет возвращен в сокет запроса. Попутно нам может потребоваться получить данные из некоторой веб-службы или базы данных, прочитать или записать в файл или выполнить другие вызовы ввода-вывода, во время которых поток блокируется и должен ждать, пока не получит ответ. Для приложений с высокой частотой запросов пул потоков может в какой-то момент исчерпаться, и тогда новые запросы больше не будут обрабатываться.

Здесь нам может помочь реактивное программирование. Вместо того, чтобы иметь большой пул потоков и модель «поток на запрос», реактивное приложение имеет только один поток на каждое ядро ​​ЦП, которое продолжает работать, и если оно попадает в операцию ввода-вывода, оно разгружает эту операцию и работает над чем-то еще до тех пор, пока IO завершено. Мы говорим, что такое приложение неблокирующее. 

Подход появился, когда группа компаний объединилась в инициативе Reactive Streams, чтобы определить ключевые принципы и четыре интерфейса JVM. После этого они практически каждый пошли своим путем, чтобы создать реактивную библиотеку на основе этих соглашений. Одна из этих библиотек, Project Reactor, является основой, на которой Spring построил свою реактивную веб-платформу Spring WebFlux. 

Этот реактивный стек позволяет нам создавать неблокирующие веб-приложения в структуре, которая выглядит знакомой с точки зрения классов, методов и аннотаций, если вы работали с Spring MVC, но фактическая реализация методов может быть с довольно сложной кривой обучения. 

Читать далее

Разработка приложения на Flutter с нуля до релиза: Идея + Базовая инфраструктура

Время на прочтение11 мин
Охват и читатели44K

Привет! В данном цикле статей я хотел бы показать, как может происходить создание приложений с использованием Flutter. У меня есть несколько Open Source решений, которые будут использованы в данном приложении. Что из этого получится - увидим в скором будущем.

Если долго мучаться...

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность