Pull to refresh
1
0
Send message

«Hello, World!» от мира сжатия данных. Канонический алгоритм Хаффмана

Level of difficultyEasy
Reading time7 min
Views5.2K

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

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments18

Обзор новых Open Source LLM. Или как локально запустить аналог ChatGPT

Level of difficultyEasy
Reading time5 min
Views20K

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

Читать далее
Total votes 33: ↑32 and ↓1+36
Comments47

Туториал по Tokio. 2/2

Level of difficultyMedium
Reading time38 min
Views2.7K



Hello world!


Представляю вашему вниманию вторую часть туториала по Tokio.



Tokio — это асинхронная среда выполнения (runtime) кода Rust. Она предоставляет строительные блоки, необходимые для разработки сетевых приложений любого размера.

Читать дальше →
Total votes 19: ↑19 and ↓0+26
Comments0

Пакетная обработка данных на современных GPU

Level of difficultyMedium
Reading time7 min
Views3.2K

По большому счёту, самая первая и самая важная оптимизация, которую можно применить к любой современной системе машинного обучения, заключается в том, чтобы реализовать в этой системе пакетную обработку данных (batching). Для того чтобы получить результат работы системы (inference, инференс) в пакетном режиме — ей, вместо одного элемента входных данных, отправляют N таких элементов. Чаще всего никаких дополнительных нагрузок на систему это не создаёт. Формирование инференса для каждого из элементов, входящих в пакет размера N, занимает в точности столько же времени, сколько нужно для обработки одного элемента входных данных. Почему это так? На первый взгляд может показаться, что обработка пакета данных не может обойтись без некоторых накладных затрат ресурсов. В конце концов — оборудованию приходится выполнять в N раз больше действий.

Если прибегнуть к простейшей модели работы нейронной сети, то получится, что некоторая дополнительная нагрузка на систему, всё же, создаётся. Для выполнения пакетных вычислений нужно выполнить в N раз больше операций. И, на самом деле, если попробовать это на CPU, то окажется, что так оно и есть (среднее время формирования вывода для ResNet-50, Colab).

Читать далее
Total votes 4: ↑4 and ↓0+12
Comments2

Structured concurrency в языке Go

Reading time5 min
Views4.2K

Горутины виснут непонятно почему, случайная запись в закрытый канал вызывает panic, нормально протестировать приложение вообще невозможно.


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


Чтобы не запутаться, люди придумали концепцию structured concurrency, которую можно применять и в Go.

Читай или страдай
Total votes 16: ↑13 and ↓3+13
Comments17

Интеграция PostgreSQL и Hadoop

Reading time5 min
Views2.1K

Представим некое перепутье, где с одной стороны — мощные возможности PostgreSQL, а с другой — необъятные просторы Hadoop. Выбор кажется сложным, но зачем выбирать одно, если можно соединить их и получить лучшее из обоих?

Объединяя их можно создать мощную систему, способную обрабатывать и анализировать огромные объемы данных.

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

Три основных способа оптимизировать ваши запросы в PostgreSQL

Reading time5 min
Views13K

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

Представьте себе, вы приходите домой после долгого рабочего дня, и вас встречает пушистый котик. Вы знаете, что он ждет вас, чтобы вы рассказали ему о своих подвигах на работе. И вот, вы начинаете свой рассказ, а он, этот милый мурлыка, вдруг спрашивает: "А как там у тебя с оптимизацией запросов в PostgreSQL?"

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

Читать далее
Total votes 28: ↑14 and ↓14+4
Comments15

Финансовая арифметика в PostgreSQL

Level of difficultyEasy
Reading time5 min
Views9.8K

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

Читать далее
Total votes 30: ↑26 and ↓4+28
Comments52

Опрос для оценки индекса лояльности сотрудников

Reading time11 min
Views2.8K

В этой статье мы рассмотрим важность проведения опросов для оценки индекса лояльности сотрудников и предложим практические рекомендации по их реализации. Индекс лояльности сотрудников (Employee Loyalty Index, ELI) является ключевым показателем, который помогает понять, насколько сотрудники преданы своей компании и насколько они готовы оставаться в ней надолго. Оценка индекса лояльности позволяет выявить потенциальные проблемы в коллективе, улучшить условия труда и повысить общую эффективность работы организации.

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

Читать далее
Total votes 20: ↑11 and ↓9+2
Comments6

Как протестировать логику консьюмеров и продюсеров и не сгореть? Spring Boot 3, Spring Kafka

Level of difficultyEasy
Reading time11 min
Views5.4K

Всем привет. Решил поделиться опытом тестирования логики консьюмеров и продюсеров в стандартном Spring Boot приложении. Я несколько раз подходил к этой задаче с различными вариантами и находил разные подводные камни, которые стимулировали меня искать дальше - более лучшее решение. И вот, в очередной раз прошерстив накопленный опыт человечества (stackoverflow), я реализовал очередной вариант, в котором пока не нашел минусов предыдущих реализаций. В любом случае, поделюсь с вами как я к этому пришел и почему для моих кейсов не сработали другие варианты (или показались хуже последнего).

Дисклеймер. Я сторонник интеграционных тестов при запуске сборки проекта с тестами. То есть это когда для unit-тестов поднимается контекст Spring со всеми плюсами (окружение, максимально похожее на боевое) и минусами (это ДОЛГО запускается и ДОЛГО описывается).

Часть 1. А разве это проблема вообще?

Коротко: ...

Читать далее
Total votes 10: ↑8 and ↓2+7
Comments8

Основы безопасности в Kubernetes

Level of difficultyMedium
Reading time15 min
Views4.4K

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

Мы сосредоточимся на двух ключевых элементах безопасности в Kubernetes: Role-Based Access Control (RBAC) и Pod Security Admission. Эти механизмы играют важную роль не только в обеспечении безопасности приложений и данных в кластере, но и в управлении доступом и сетевыми взаимодействиями.

Элементы безопасности, такие как RBAC и Pod Security Admission, играют ключевую роль в обеспечении стабильности и эффективности работы приложений в Kubernetes, особенно при обработке больших объёмов данных и высокой нагрузке. Например, в ситуации с масштабируемым веб-приложением, которое управляет значительными объёмами пользовательских данных и транзакций, настройка этих механизмов может существенно улучшить управление доступом и сетевую безопасность. Это, в свою очередь, помогает предотвратить потенциальные угрозы и атаки, что критически важно для поддержания производительности и доступности данных. Таким образом, эффективно настроенные компоненты безопасности обеспечивают надёжный доступ к данным и минимизируют риски, связанные с увеличением нагрузки на приложение, улучшая общий пользовательский опыт.

Теперь давайте рассмотрим каждый из этих элементов более подробно.

Читать далее
Total votes 13: ↑13 and ↓0+14
Comments2

Generic Concurrency в Go

Level of difficultyMedium
Reading time22 min
Views4.4K

Привет, гоферы!

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

Читать далее
Total votes 15: ↑14 and ↓1+15
Comments1

Основные инструменты для локальной разработки на Kubernetes

Level of difficultyEasy
Reading time4 min
Views4.7K

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

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

В статье рассмотрим пять основных инструментов.

Читать далее
Total votes 10: ↑7 and ↓3+8
Comments1

Слежка через пуш-уведомления на смартфонах

Reading time4 min
Views31K


Недавно стало известно о новом виде слежки за пользователями смартфонов: через пуш-уведомления в iOS и Android. Газета Washington Post написала, в частности, что эту тактику начало использовать ФБР (кэш статьи).

Довольно интересно, как работает такой метод выслеживания.

Согласно расследованию, для идентификации пользователей ФБР запрашивает у компаний Apple и Google данные пуш-уведомлений, так называемые «пуш-токены» (push token). Эти данные можно запрашивать без предъявления ордера. С помощью пуш-токенов можно идентифицировать конкретный смартфон, а потом запросить у компании данные о его владельце.
Читать дальше →
Total votes 38: ↑37 and ↓1+52
Comments66

Паттерн Poison Pill в Java

Reading time5 min
Views5K

Сегодня поговорим о паттерне Poison Pill и его реализацию в Java.

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

Читать далее
Total votes 8: ↑7 and ↓1+10
Comments9

PostgreSQL 16. Организация данных. Часть 1

Level of difficultyMedium
Reading time14 min
Views16K

PostgreSQL очень популярная СУБД. Её используют во многих проектах, как новички, так и профессионалы. Однако не все понимают, как именно работает данная система и какое у неё внутренне устройство.

Давайте разберемся вместе на основе книги «PostgreSQL 16 изнутри» и официальной документации!

Читать далее
Total votes 32: ↑31 and ↓1+35
Comments5

Шардирование баз данных и проектирование систем

Reading time6 min
Views7.7K
image

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

Такой подход позволяет избежать проблем с производительностью, возникающих, когда одна из машин работает в условиях перегрузки, и обеспечивает более экономичное и грамотное масштабирование. По мере увеличения объема данных и трафика все чаще возникает необходимость горизонтального масштабирования путем добавления новых машин, а не вертикального путем модернизации одного большого сервера.
Читать дальше →
Total votes 11: ↑10 and ↓1+15
Comments3

Как пользоваться Claude: знакомство с главным конкурентом ChatGPT и базовые правила его использования

Level of difficultyEasy
Reading time14 min
Views18K

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

Однако ChatGPT - далеко не единственный продвинутый чат-бот, доступный сегодня. Не так давно компания Anthropic представила миру Claude v.3 Opus - ИИ-ассистента нового поколения, который во многом превосходит возможности ChatGPT и имеет ряд значимых отличий. И хотя на первый взгляд Claude может показаться похожим на своего более известного "коллегу", при ближайшем рассмотрении становятся видны существенные различия в архитектуре, возможностях и особенностях взаимодействия с пользователем.

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

Приятного прочтения!:)

Читать далее
Total votes 16: ↑14 and ↓2+15
Comments18

OpenGrok

Reading time2 min
Views2.3K

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

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

Information

Rating
Does not participate
Registered
Activity