Как стать автором
Поиск
Написать публикацию
Обновить

Как стать автором

Реализация ГОСТ 32.12. Симметричный шифр Кузнечик

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

Доброго времени суток.

В качестве первой статьи решил выбрать разбор реализации отечественного шифра «кузнечик». Постараюсь объяснить сложные вещи простым языком.

В качестве рабочего примера моя реализация на C.

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

Yast Another Config Manipulation или зачем изобретать велосипед?

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

Привет Habr! Меня зовут Андрей, системный администратор в электрических сетях, со всеми вытекающими — сети, сервера, пользователи, программы. Как и у всех — какие то скрипты на python для сбора инфы с активки, ежедневного бэкапа конфигов, задач «а добавь вот этот IP в ACL на все устройства»

Везде использую свой модуль для работы с файлами конфигурации. Вы скажете OmegaConf, Dynaconf, да и PYAML никто не отменял. Не торопитесь. Я попросил AI сравнить и воодушевился — а вдруг мой велосипед будет кому то полезен?

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

Автоматическая регистрация по атрибутам для .net

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

Я сделал простейшую утилиту для регистрации реализаций в контейнере.

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

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

История исследования и анализа информации. Архитектура Data Mesh: концептуальные основы

Уровень сложностиСложный
Время на прочтение7 мин

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

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

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

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

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

Тем не менее, при внедрении таких аналитических инструментов компании всё ещё сталкивались с определёнными трудностями.

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

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

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

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

Подробный текст статьи
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Я знаю, что ты думал в прошлый дейлик

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

На входе — обычный push. На выходе — коммит, улучшенный с помощью LLM, сохранённый в векторной базе, доступный для поиска и семантического анализа. Пишем простой MCP-сервер для трекинга изменений ваших проектов.

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

Метрики, которые нас обманывают

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

Почему рост в аналитическом дашборде не всегда означает рост в продукте.

В своей работе я стараюсь смотреть на задачи не только через призму интерфейса, но и с точки зрения продукта в целом. Мне важно понимать, зачем это делается, что за этим стоит и как повлияет на пользователей и бизнес. За это время я увидел десятки A/B-тестов, дашбордов, метрик и графиков, которые обещали рост. И слишком часто — одну и ту же картину: цифры растут, а продукт — хуже. Пользователи злятся, но в компании все довольны. Это не крик «цифры — зло». Скорее, попытка разобраться, где проходит грань между аналитикой и самообманом

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

Недостатки Istio по сравнению с Cilium: подробное объяснение

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

В этой статье мы разберём основные недостатки Istio в сравнении с Cilium Service Mesh, чтобы даже начинающий разработчик мог понять, в чём разница и почему некоторые команды выбирают Cilium вместо Istio.

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

Архитектура игр в Unity с использованием Zenject

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

Всем привет!

Меня зовут Яков, не сказал бы, что я супер разработчик игр (в общей сумме у меня 20 тыс игроков со всех игр выложенных на Яндекс.Игры), но хотел бы поделиться опытом создания гибкой архитектуры игр в Unity с использованием DI-контейнера Zenject.

В статье не будет основ работы с Zenject, поэтому я надеюсь что вы уже знаете данный фреймворк.

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

Как я создал клон Pinterest с использованием Vue 3 и FastAPI

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

👋 Привет, Habr!

Вы когда-нибудь пытались найти качественный open-source клон Pinterest — с real-time функционалом, полноценной архитектурой, удобным UI и современной технологической основой? Я — да. И не нашёл. Поэтому решил создать свой.

Представляю вам Pinterest Clone — мой pet-проект, над которым я работал в одиночку 4 месяца, чтобы воссоздать не просто копию, а полнофункциональную платформу с реальным пользовательским опытом, максимально приближённым к оригиналу.

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

Легковесная система комбо-атаки

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

В этой статье Вы узнаете, как создать легковесную систему комбо-атаки для 2D и 3D проектов с использованием машины состояний в Unity. Статья включает примеры кода и ссылку на репозиторий с полным проектом, что делает её полезной как для новичков, так и для опытных разработчиков, стремящихся улучшить свои навыки в создании игровых систем.

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

Информационная безопасность до электричества: как защищали данные в XIV веке

Уровень сложностиСложный
Время на прочтение4 мин

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

Если вы думаете, что XIV век — это про рыцарей, чуму и башни без Wi-Fi, то вы, в целом, правы. Но даже тогда существовали конфиденциальные сообщения, шпионаж, защита данных и атаки, которые очень напоминают фишинг, перехват сообщений и даже внедрение в цепочку поставок (правда, поставляли не софт, а людей и письма). Эта статья — попытка взглянуть на ИБ до ИБ, когда информацию защищали не фаерволы, а воск, пергамент и личные головы гонцов.

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

FastOpenAPI: автодокументация OpenAPI для разных фреймворков на Python

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

Всем привет! Меня зовут Никита Рыженков, и я хочу поделиться опытом разработки библиотеки FastOpenAPI. Это инструмент, который приносит удобный стиль маршрутизации FastAPI и автоматическую документацию OpenAPI в целый ряд Python-фреймворков. Идея родилась из личной боли: в одном проекте приходилось поддерживать OpenAPI-документацию сразу в нескольких фреймворках, и я устал дублировать решения под каждый из них. Вдохновившись лаконичностью FastAPI, я решил создать унифицированный подход для Flask, AioHttp, Sanic, Falcon, Starlette, Quart, Tornado – назвал его FastOpenAPI​. В этой статье расскажу, какие проблемы решает FastOpenAPI, как он устроен внутри и как им пользоваться с примерами кода под каждый поддерживаемый фреймворк.

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

Готовимся к фандрайзингу

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

И вот это заветное слово «Fundraising» случается в нашей жизни, и мы готовимся поднять много денег. Но прежде, чем это случится, а мы начнем инвестировать в все наши «хотелки» и улучшать продукт, будет Due Diligence. То, на чем можно посыпаться и попасть на демпинг цены, бремя post‑M&A/Fundraising рисков и в целом лишиться проекта.

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

Будни вайбкодинга: лайфхаки при работе с LLM

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

Современные LLM давно уже вышли за предел «галлюционнирующей генерации» и дают устойчивую точную генерацию практически на всех популярных языках, фреймворках и библиотеках... При наличии правильного контекста. В большинстве случаев контекст, который вы скармливаете LLM имеет высокую избыточность и низкую концентрацию полезной информации. При нехватке контекстного окна вы практически гарантированно получите низкокачественную галлюцинацию. Что можно сделать в таком случае: обрезается весь ненужный контекст, добавляется весь необходимый. Как это выглядит: вы подготавливаете свой проект в IDE, убирая всё лишнее, и оставляете только самое необходимое, что бы LLM получила весь необходимый контекст и не байтом больше, то есть контекст должен на 100% состоять из полезной информационной нагрузки.

Если есть объёмная база данных — оставьте в ней всего несколько значений для примера. Неиспользуемые в данной конкретной ситуации зависимости так же удаляете из контекста. Если речь о текстовой работе с LLM — то делаете тоже самое в форме промпта или загружаемого текстового файла‑инструкции, подготавливая всё необходимое, т. е., в промпте должно быть описание кодовой базы и окружения, файловая структура, используемый стек, назначение кодовой базы, весь необходимый код всех задействованных файлов, выдаваемые ошибки и прочее. То есть вы должны своими руками построить 100% удобный для работы LLM контекст. Фактически, при данном подходе, вероятность генерации неправильно ответа — околонулевая. Простыми словами — воспринимайте контекстное окно как бутылочное горлышко, через которое необходимо достать информацию из бутылки, то есть из модели.

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

VoxShare — LAN-аудиочат с Push-to-Talk и мультикастом, без серверов и аккаунтов

Время на прочтение2 мин

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

Хочу поделиться своим open-source проектом — VoxShare. Это настольное приложение для голосовой связи по локальной сети, построенное на UDP Multicast и кодеке Opus. Без серверов, аккаунтов и привязки к Интернету — только вы и ваши коллеги в одной сети.

Проект актуален для:

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

Локализация Flutter приложения на сервере

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

g11n, i18n, l10n... или один из множества вариантов локализации приложения. Привет, меня зовут Константин Комков и я надеюсь данный пример и последовательность шагов сэкономят Вам время при разработке!

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

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

C# Как работает async/await? Асинхронное программирование

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

Разбираемся с async/await без магии и скуки. Зачем вообще нужна асинхронность? Как устроена асинхронность в .NET внутри? Как работают await, Task, ValueTask, и многое другое?

Читать далее
Всего голосов 25: ↑16 и ↓9+7
Комментарии15

Восстановление раритетного аналогового синтезатора Alpha Juno-1 фирмы Roland

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

Одно время  на прогулках по блошиным рынкам я увлеченно высматривал винтажные музыкальные инструменты, особенно синтезаторы 70x-80x годов. Я нахожу их звуки очень красочными и разнообразными, а так же эти устройства интересны с точки зрения схемотехники.

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

И это оказалась не «пиликалка» с пластиковым звуком и не кондовый электроорган, - а очень даже продвинутый для середины 80ых и актуальный по сей день аналоговый полифонический синтезатор с цифровым управлением, выпущенный компанией Roland.

После приобретения музыкальный инструмент не подавал ни каких признаков жизни кроме подсветки дисплея. Вскрытие и сверка со схемой из документации показали то, что хоть разработчики и использовали Poka Yoke для предотвращения неправильного подключения межплатных кабелей, но или не досмотрели или ассортимента не хватило и установили на главной плате два разъёма с одинаковым количеством контактов и невнимательный настройщик который обслуживал синтезатор перепутал местами те единственные два кабеля в которых можно было ошибиться. В таком вот состоянии инструмент мне и достался. Уcтранив ошибку сначала я очень обрадовался, - основные функции заработали, но к сожалению вышли из строя два входа микросхемы IC7 “Gate Array“, которая выполняет роль IO интерфейса для CPU, в частности для функций клавиатуры. Из Рис. 1 и Рис. 3-4 видно как происходит обработка нажатия клавиш.

Прочесть
Всего голосов 14: ↑14 и ↓0+18
Комментарии5

Bad USB — сильнее чем кажется на первый взгляд

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

Сегодня разберемся с довольно старым но очень даже актуальным методом инфицирования системы, рассмотрим нестандартные приемы Bad USB о которых почему-то мало пишут но и тайной они не являются (такие как: ALT-коды, запуск от имени администратора, обход Windows Defender и зачистка следов).

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

Как отправить много страниц сайт на переиндексацию в Google Indexing API и автоматизировать процесс

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

Переиндексация URL в Google — важный инструмент в руках SEO-специалиста и маркетолога. Если вы внесли изменения на сайте, добавили новые страницы или изменили структуру — сообщить об этом Google можно руками в интерфейсе. Примерно вот так:

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