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

Разработка

Сначала показывать
Порог рейтинга

ESP-IDF in CLion

Недавно вышла новость от JetBrains о том, что CLion становиться бесплатным для некоммерческой разработки, об этом уже писали на Хабре.

Ранее на Espressif dev portal blog вышел туториал, как настроить CLion для работы с ESP-IDF. Пост насыщен иллюстрациями и содержит пошаговое руководство.

CLion - среда разработки для языков программирования C и C++ с широким спектром функций и удобным пользовательским интерфейсом. Кто знаком с продуктами JetBrains, тому будет удобно работать в привычном окружении. Есть сторонний плагин ESP-IDF, он добавляет вкладку с меню задач IDF (build, flash, monitor и т.д.)

Преимущества CLion

  • Интеграция с CMake, Makefile, Gradle, Ninja.
    Поддержка не только CMake, но и других инструментов сборки через плагины.

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

  • Отладка и профилирование.
    Встроенный графический отладчик (на базе GDB или LLDB) с возможностью просмотра переменных, стеков вызовов и точек останова. Также поддержка профилировщиков (Valgrind, CPU профилирование).

  • Кросс-платформенность.
    Работает на Windows, macOS и Linux.

  • Интеграция с системами контроля версий.
    Git, SVN, Mercurial — прямо из интерфейса IDE.

К недостаткам субъективно можно отнести следующее

  • Бесплатная IDE только для некоммерческой разработки

  • На старом "Железе" может медленно работать, по сравнению с VScode, особенно во время запуска приложения

  • На момент написания CLion версии 2025.1.1 занимает 5.1 Gb места на диске, VScode в моем случае занимает 408 Mb.

  • Нет официального плагина ESP-IDF.

В заключение поста автор выражает признательность, если это руководство будет использоваться для проектов ESP-IDF, а в случае проблем пользователи могут сообщить об этом в issue tracker.

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

Приглашаем на вебинар, посвященный последним обновлениям IVA MCU — ведущей платформы видеоконференцсвязи на российском рынке*

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

Спикеры

  • Дмитрий Журавлев, директор по продукту IVA MCU

  • Дмитрий Чугунов, руководитель управления поддержки продаж

Что вас ждет

  • Обзор ключевых функций новой версии IVA MCU

  • Экскурс: как мы обеспечиваем безопасность платформы

  • Примеры успешного внедрения

  • Дорожная карта развития на 2025 год

  • Ответы на вопросы

Зарегистрироваться прямо сейчас.

 *По данным CNews Analytics: Крупнейшие поставщики решений для видеоконференцсвязи 2023.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Как начать практиковаться в тестировании без опыта

Если вы только что окончили курсы по тестированию, знаете теорию, но не имеете реальных кейсов — это нормально. Почти каждый начинающий QA-специалист сталкивается с вопросом: «Где набраться практики, если нет опыта?».

После тренировок в песочницах следующий шаг — попробовать себя в реальном проекте. Участие в open source — отличный способ получить настоящий опыт, поработать с командой и добавить первые кейсы в портфолио. Начать тестировать WordPress можно по простому и понятному алгоритму. Шаги для старта:

  1. Установите WordPress локально.
    Самый простой способ — приложение LocalWP. Также подойдут Docker или XAMPP.

  2. Разберитесь, как устроена работа.
    Загляните на make.wordpress.org — там есть разделы для разработчиков, дизайнеров, переводчиков и тестировщиков. Обратите внимание на Test Handbook — там подробно объясняется, как тестировать, искать баги и писать отчеты.

  3. Найдите первую задачу.
    В баг-трекере Trac ищите задачи с меткой good-first-bug — они идеально подходят для старта. Прочитайте описание, повторите шаги и проверьте, воспроизводится ли баг.

  4. Включайтесь в сообщество.
    Присоединяйтесь к чату #core-test в Slack (ссылка на подключение — в make.wordpress.org/test). Там обсуждают приоритетные задачи и проводят регулярные митинги. Новичкам всегда рады!

    Пример отчета в Make WordPress Core
    Пример отчета в Make WordPress Core

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

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

Задача о поиске флага в журналах системы

Несложная задача с CTF-турнира. Будет интересна всем, кто интересуется информационной безопасностью.

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

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

Задача
Найдите флаг — строку в формате slcctf{}. Чтобы выполнить задание, перейдите на страницу http://findme.slcctf.fun/.

Делитесь своим решением в комментариях. А правильный ответ можно посмотреть в Академии Selectel.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Утечка системного промпта Claude 3.5 Sonnet: что произошло

TL;DR: прозмоьла утечка системного промпта Claude 3.5 Sonnet.

Недавно в открытом доступе на GitHub появился файл с системным промптом модели Claude 3.5 Sonnet от Anthropic. В этой заметке мы подробно разберём, что именно было обнародовано, как устроен промпт и какие риски несёт его утечка.

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

  • Источник:

    https://raw.githubusercontent.com/asgeirtj/system_prompts_leaks/refs/heads/main/claude.txt
  • Содержимое:

    • Описания «артефактов» (artifacts) — самостоятельных блоков контента (отчёты, письма, презентации).

    • Правила запуска «структурированного мышления» в тегах <antthinking>.

    • Шаблоны и условия фильтрации: когда создавать артефакт и когда отвечать простым текстом.

    • Ограничения по объёму и форматированию, а также рекомендации по стилю.

Небольшой анализ этой утечки:

  1. Артефакты
    Системный промпт описывает «артефакты» — XML-подобные блоки (отчёты, письма), которые модель генерирует для структурированного редактирования.

  2. Структурированное мышление
    Перед формированием сложных ответов включаются теги <antthinking>, задающие пошаговый алгоритм анализа запроса и выбора формата вывода.

  3. Фильтрация и объём
    Короткие ответы (1–2 предложения) выдаются без артефактов; при этом заданы жёсткие лимиты на размер и глубину артефактов во избежание «раздувания» текста.

  4. Режимы и модерация
    Включены автоматические режимы генерации (быстрый ответ, развёрнутый отчёт) и встроенные фильтры для блокировки нежелательного контента и внутренней информации.

На всякий случай, файл с GitHub'a залил в облако и Web archive, чтобы точно не потерять :). Хотя сам, честно говоря, до сегодняшнего дня но разу не пользовался данной моделью, теперь есть повод поэкспериментировать.

PS. Это мой первый пост, друзья, так что, если найдёте какие-либо недочёты, пожалуйста, укажите на них!

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

5 книг, чтобы прокачать скиллы в SRE 📚

Со всеми, кто развивает инженерные практики, подборкой делится Антон Быстров — SRE-инженер Cloud․ru.

📖 SRE Table of Contents OT Google. Это своего рода «путеводитель» по принципам Site Reliability Engineering (SRE). Он объясняет, почему определенные методы и процессы должны использоваться в разработке и эксплуатации систем. Книги служат отличной базой для понимания философии и практических аспектов SRE, включая мониторинг, автоматизацию, управление инцидентами и многое другое.

📖 Проект «Феникс». Книга, которая рассказывает историю трансформации крупной компании через призму внедрения методов DevOps. Автор романа Брайан Дэрроу показывает, как команда разработчиков и операционных сотрудников объединяется для достижения общей цели — создания и запуска нового продукта. Хотя «Проект „Феникс“» — это прежде всего художественное произведение, оно содержит множество реальных примеров и идей, которые будут полезны как разработчикам, так и менеджерам, стремящимся внедрить современные подходы к управлению проектами и процессами.

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

📖 Запускаем Prometheus. Мониторинг инфраструктуры и приложений: Пивотто, Бразил. Одна из базовых книг по мониторингу. Она подробно описывает, как использовать Prometheus для сбора и анализа метрик, что является неотъемлемой частью работы SRE. Понимание экосистемы Prometheus значительно упростит вашу повседневную работу.

📖 Киф Моррис — Программирование инфраструктуры. Это руководство по подходу к инфраструктуре как к самостоятельному продукту. Оно охватывает как теорию, так и практику, помогая понять, как эффективно управлять инфраструктурой и обеспечивать ее надежность и масштабируемость.

Уже читали книги из списка? А какие готовы порекомендовать от себя? Делитесь в комментариях 👇

Теги:
Рейтинг0
Комментарии0

Приглашаем вас на бесплатный вебинар «Рабочие процессы с Camunda: опыт внедрения и реальные вызовы». Практический разбор внедрения Camunda в реальный проект: от настройки до интеграции и оптимизации процессов. Описание типичных ошибок и стратегии максимально эффективного использования платформы.

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

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

📅 Дата: 15.05.2025

Время: 16:00-17:00 (Мск)

👨‍🎓 Спикер: Акманова Елизавета — эксперт по системному и бизнес-анализу.

✍️ Записаться на вебинар

Теги:
Рейтинг0
Комментарии0

Привет, зачастую после тыкания в какой-нибудь стручок (pod) приходится подниматься на уровень выше в деплой, стейтфулсет или даемонсет. Для этого в kui надо было сначала посмотреть чем контролируется стручок, сделав describe, потом сменить тип объекта, найти нужный... Хватить теребонькать эти стручки! Добавил для стручков команду Controlled by, она сразу тыкает kui в нужное место!

controlled by
controlled by

Творите, выдумывайте, пробуйте!)

Теги:
Рейтинг0
Комментарии0

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

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

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии1

Свой класс события для плагинов Joomla. Продолжение.

Продолжение потому, что начало уже было в статье Виталия Некрасова на Хабре.

Кратко.

В Joomla 5+ для событий аргументы упаковываются в собственные классы событий: ContentPrepareEvent, AfterSaveEvent и т.д. Данные из них мы получаем в виде $event->getArgument('argument_name') или [$var, $var2] = array_values($event->getArguments());. Также для разных типов событий могут быть специфичные методы типа $article = $event->getItem(); в ContentPrepareEvent и т.д. И в статье Виталия как раз об этом рассказывается.

А так же рассказывается о методах onGet и onSet. В ядре Joomla в классе \Joomla\CMS\Event\AbstractEvent сказано:

/**
   * Add argument to event.
   * It will use a pre-processing method if one exists. The method has the signature:
   *
   * onSet($value): mixed
   *
   * where:
   *
   * $value  is the value being set by the user
   * It returns the value to return to set in the $arguments array of the event.
   *
   * @param   string  $name   Argument name.
   * @param   mixed   $value  Value.
   *
   * @return  $this
   *
   * @since   4.0.0
   */

Добрался я тоже до своего класса события для плагинов, порылся в ядре и подумал, что onSet... и onGet... методы не обязательно делать (хотя в статье по ссылке об этом не упоминается). Это методы для "предварительных проверок и манипуляций" с данными перед тем, как они будут отданы через getArgument() или get<ArgumentName>. Метод getData() отдаст данные, которые предварительно будут обработаны методом onGetData(). Но обработаны они будут только в том случае, если метод реализован. Если нет, то ничего страшного. Ошибки не будет.😎

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

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Nintendo показала работу контроллера Joy-Con 2 в режиме мышки на главном экране Switch 2. Сам Joy-Con 2 перейдёт в режим мышки, если поставить его на бок, а курсор появится после движений против часовой стрелки. В режиме мышки игроки смогут использовать до десяти кнопок включительно. Стик контроллера Joy-Con 2 служит колесом мышки — это позволяет «скроллить» различные меню в ОС.

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

Дели код на слои - первый принцип. Полный список принципов здесь

Я еще не знаю задачу, но уже знаю, что в коде будет 3 слоя: приложение, инфраструктура, контроллеры. Отдельно конфигурация.

Этого достаточно, ведь у меня даже нет задачи. Я начну думать о моделях, адаптерах, объекта‑значениях, когда приступлю обдумыванию бизнес логики и реализации.

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

На фронте слой содержит код, который хранит и управляет состоянием независимо от отображения: сохраняет состояние между переходами по страницам, дает доступ к состоянию из разных шаблонов и т. п.

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

— как модель, которые хранят состояние пока запрос обрабатывается;

— сервис без состояния

— функция с валидации целостности

Контроллеры — это все, что касается ввода и вывода.

Этот слой обязан знать, что нужно слою приложения, обязан это предоставить в нужном формате. Он не может ничего требовать от слоя приложения, обязан работать с тем, что отдал слой приложения.

На фронте в этот слой попадает всё, что касается взаимодействия с пользователем и обработки событий:

— шаблоны, стили, функции, которые готовят данные для отображения и обрабатывают ввод пользователя

— обработчики событий

— обработчики роутов, потому что роутинг — это интерфейс ввода данных.

— слушатели сокет соединений

На бэке это код, который принимает входящие запросы и отдает ответ, фоновые контроллеры:

— контроллеры gRPC, HTTP,

— слушатели очередей,

— конструкторы ответа, мапперы данных в нужный формат и т. п.

— описание протоколов.

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

Инфраструктура

— обязана работать с тем, что отдает слой приложения

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

Здесь лежат:

— клиенты к хранилищам, другим сервисам, кэшам, очередям и т. п.

— конструкторы запросов к БД, очередям или другим сервисам

— мапперы данных слоя приложения в нужный формат и обратно

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

Это может быть конфигурация di‑контейнера, место ручного создания компонен. Конфигурация может присутствовать как дополнительные нотации в UI компонентах. Фреймворки и языки имеют разные методы конфигурирования, поэтому конфигурация не является слоем или может быть не явной.

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

На фронте слой контроллеров может часто меняться, контракт с бэком более стабилен — инфраструктура главная.

На бэке формат хранения может измениться после MVP, а контракт описан и стабилен — слой контроллеров главный.

Слои зависят друг от друга. Правила организации кода и внедрения зависимостей будут в отдельном посте.

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

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

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

Принципы сформированы на основе практического применения информации из книг:

В оригиналах некоторые вещи трактуются объемно и широко.

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

Погнали:

  1. Дели код на слои

  2. Дели код на области (scope)

  3. Формируй структуру папок согласно делению на модули и слои

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

Ближайшие события

Запустили Evolution ML Inference — сервис для развертывания ML- и DL-моделей в облаке 🤖

❓ Что за инструмент? С помощью Evolution ML Inference можно запускать и развертывать ML-модели из библиотеки Hugging Face на облачных мощностях с GPU, в том числе в пользовательских Docker-образах. А для более эффективного инференса также можно использовать среды исполнения vLLM, TGI, Ollama, Diffusers и Transformers.

🖥 Особенности и преимущества. Благодаря технологии Shared GPU ML-модели могут совместно использовать ресурсы графического ускорителя — это экономит ресурсы облака и повышает производительность. Масштабирование происходит динамически — если число запросов превышено, дополнительные мощности выделяются автоматически. Или наоборот, один GPU можно использовать для инференса сразу нескольких моделей. Оплата за использование — по модели pay-as-you-go.

👨‍💻 Кому будет полезно. Сервис найдет применение во всех сферах, где актуально машинное обучение. Evolution ML Inference можно использовать при создании ML- и DL-моделей для бизнеса, медицинских и образовательных учреждений, ретейла, кибербезопасности, производства и других областей.

✍️ Где, как и для чего использовать. Сервис подойдет для инференса LLM и TGI, диффузионных моделей и моделей-трансформеров, а также аудит-логирования. Какие задачи помогают решать модели:

  • распознавание объектов и речи;

  • прогнозирование поведения клиентов;

  • составление логистических маршрутов;

  • генерация текстов;

  • перевод, суммаризация и другие операции с текстом.

А больше об Evolution ML Inference можно узнать из доклада конференции GoCloud 2025 «Эволюция запуска ML-моделей» 😉.

Теги:
Рейтинг0
Комментарии0

Опубликовали программу infra.conf'25 — конференции про работу с высоконагруженными системами и инфраструктурой

Итоговая программа ежегодной infra.conf'25 объединит доклады про платформенную разработку, применение больших языковых моделей, решения с открытым исходным кодом, обеспечение безопасности, инфраструктуру для машинного обучения и мобильной разработки.

Спикерами infra.conf'25 станут ведущие инженеры и разработчики Яндекса, Купера, MTS Web Services, Positive Technologies, AvitoTech, Sber AI и других компаний. Организаторы мероприятия — команда Yandex Infrastructure, которая создаёт и предоставляет внутреннюю инфраструктуру Яндекса.

Конференцию откроет главный доклад от Андрея Година, руководителя Yandex Infrastructure, и Александра Чубинского, руководителя Yandex Platform Engineering.
Также среди спикеров infra.conf'25:

  • Александр Николаичев и Николай Гриценко из Yandex Infrastructure — «Все дороги ведут в Internal Development Platform (IDP)».

  • Роза Морозенкова из Купера — «ML‑платформа: зачем она нужна вам, нам и ML‑инженерам».

  • Кирилл Сюзев из команды платформы для разработчиков SourceCraft — «Облачный CI/CD — 5-звёздочный отель для особо опасных любимых пользователей».

  • Валерий Евдокимов из ecom.tech (ex. Samokat.tech) — «Превозмогая opensource: опыт внедрения OpenTelemetry, Qryn и Coroot для выстраивания системы наблюдаемости».

  • Виталий Шишкин из Positive Technologies — «Tetragon: лучшие практики и нюансы разработки Tracing Policy».

  • Эдуард Оболенский из Yandex Infrastructure — «Опыт построения инфраструктуры вокруг мобильной разработки».

Также гости мероприятия смогут посетить воркшоп по Surface Mount Device‑пайке — это процесс пайки электронных компонентов поверхностного монтажа к печатным платам.

infra.conf'25 пройдёт 5 июня в Москве в Loft Hall #8. Также доклады можно посмотреть онлайн на сайте конференции. Для участия нужно зарегистрироваться на сайте и получить приглашение.

Теги:
Всего голосов 9: ↑9 и ↓0+10
Комментарии0

Утечка системного промпта Claude 3.5 Sonnet: что произошло

TL;DR: произошла утечка системного промпта Claude 3.5 Sonnet.

Недавно в открытом доступе на GitHub появился файл с системным промптом модели Claude 3.5 Sonnet от Anthropic. В этой заметке мы подробно разберём, что именно было обнародовано, как устроен промпт и какие риски несёт его утечка.

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

  • Оригинальный файл:

    https://raw.githubusercontent.com/asgeirtj/system_prompts_leaks/refs/heads/main/claude.txt
  • Содержимое:

    • Описания «артефактов» (artifacts) — самостоятельных блоков контента (отчёты, письма, презентации).

    • Правила запуска «структурированного мышления» в тегах <antthinking>.

    • Шаблоны и условия фильтрации: когда создавать артефакт и когда отвечать простым текстом.

    • Ограничения по объёму и форматированию, а также рекомендации по стилю.

Небольшой анализ этой утечки:

  1. Артефакты
    Системный промпт описывает «артефакты» — XML-подобные блоки (отчёты, письма), которые модель генерирует для структурированного редактирования.

  2. Структурированное мышление
    Перед формированием сложных ответов включаются теги <antthinking>, задающие пошаговый алгоритм анализа запроса и выбора формата вывода.

  3. Фильтрация и объём
    Короткие ответы (1–2 предложения) выдаются без артефактов; при этом заданы жёсткие лимиты на размер и глубину артефактов во избежание «раздувания» текста.

  4. Режимы и модерация
    Включены автоматические режимы генерации (быстрый ответ, развёрнутый отчёт) и встроенные фильтры для блокировки нежелательного контента и внутренней информации.

На всякий случай, файл с GitHub'a залил в облакo [ Upd: администрация Telebox, как выяснилось, имеет доступ ко всем файлам, даже беспарольным архивам, и уже дважды удалила файл] и Web archive [здесь файл жив и здоров], чтобы у каждого была возможность покопаться в недрах этого конфига. Честно говоря, до сегодняшнего дня ни разу не пользовался данной моделью от Anthropic, теперь есть повод поэкспериментировать :).

PS. Это мой первый пост, друзья, так что, если найдёте какие-либо недочёты, пожалуйста, укажите на них!

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

Новый тайпчекер для Python от авторов ruff и uv, написанный на Rust

Вышло видео про новый тайпчекер и lsp: ty (старое название red-knot) от авторов ruff и uv. Пока по первым впечатлениям – бомба! Не смотря на версию 0.0.0a8 🌚

Из плюсов:

  • Быстрый

  • На расте

  • Куча новых фичей для типов

  • Полная спецификация

  • Интеграция с ruff и IDEшками

Из минусов:

  • Пока есть баги (но их поправят, конечно же)

  • Нет плагинов (и скорее всего никогда не будет)

  • Софт от молодой и маленькой компании

  • Как сделать поддержку ty и mypy вместе? А если использовались ty_extensions?

Обсуждение: а как вам проект? Успели попробовать?

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

GIN индексы в PostgreSQL

Сегодня хочу рассказать о GIN индексах в PostgreSQL. Это один из мощных инструментов, которые есть в БД PostgreSQL. Но почему-то очень многие незаслуженно обходят его стороной.

Что такое GIN индекс

GIN (Generalized Inverted Index) – это инвертированный индекс, который предназначен для ускорения поиска в структурах данных, содержащих составные типы. Он имеет встроенную оптимизацию, позволяющую искать по элементам внутри сложных структур. По своей сути, это обратный индекс, где для каждого уникального элемента хранится список указателей на записи, в которых он встречается. Это дает возможность быстро находить записи, соответствующие запросу.

Для каких типов данных используется GIN индексы

GIN-индексы особенно эффективны для следующих типов данных:

  • Массивы

    • Хранение списков значений

    • Быстрый поиск по элементам массива

    • Пример: теги, категории, списки ID

  • JSONB

    • Хранение полуструктурированных данных

    • Быстрый поиск по ключам и значениям

    • Поддержка сложных запросов к JSON-документам

  • Полнотекстовый поиск

    • Индексация текстовых полей

    • Быстрый поиск по словам и фразам

    • Поддержка различных языков

Преимущества GIN индексов

  • Эффективность поиска по структурам данных: Хорошо подходит для обработки массивов и структурированных данных типа JSONB. Позволяет быстро находить нужные строки даже среди миллионов записей. Хранит только уникальные элементы и их местоположение, вследствии этого более экономный по сравнению с полным сканированием.

  • Поддержка различных типов данных: Работает с различными типами - строки, числа, массивы, объекты JSONB и даже геопространственные данные.

  • Подходит для оптимизации полнотекстового поиска: Улучшает производительность запросов с использованием операторов @@ и функций вроде to_tsvector() и to_tsquery(). Особенно полезен там, где требуются операции пересечения (&&), включения (@>), проверки существования элементов массива (?, ?&) и другие специфические условия.

Недостатки GIN индексов

  • Обновление: Каждый раз, когда изменяется запись, содержащая поля, входящих в GIN индекс, индекс обновляется целиком. Это увеличивает нагрузку на систему при частых изменениях данных.

  • Больший размер: GIN индекс занимает больше места на диске по сравнению с традиционными B-tree индексами, так как хранит список всех значений, содержащихся в колонке.

  • Низкая производительность на малых объемах данных: При небольших объемах данных GIN индекс может быть менее эффективным.

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

Заключение

При работе с массивами, JSONB полями и полнотекстовым поиском стоит рассмотреть использование GIN индексов для данных полей. Это позволит повысить эффективность и производительность БД PostgreSQL. Но, в то же время, стоит учитывать особенности его обслуживания и требования к системе. Очень аккуратно применять к часто изменяемым данным.
Очень хорошая статья о GIN индексах https://habr.com/ru/companies/postgrespro/articles/340978/

Более подробно с примерами у меня в телеграмм

Спасибо за внимание!

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии3

Как оформить карточки в Телеграм с обложкой

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

Но можно сделать красиво, чтобы одна из карточек была как бы обложкой. Если сделать её правильным размером, то ничего (почти) обрезаться не будет.

Я не нашёл информации по размерам, поэтому немного посидел, поизучал, поэксперементировал. Принёс вам правильные размеры.

Для трёх карточек: 

••• Верхняя 1280х720.

••• Нижние 1280х766

Для четырёх или семи карточек:

••• Верхняя 1280х720. Можно сделать 720х1280, тогда будет вертикальная обложка.

••• Нижние 1080х1080

Для пяти, шести, восьми и девяти изображений делайте квадратные карточки — 1080 на 1080. Тогда ничего не обрежется.

ВАЖНО: я не дизайнер, поэтому делал всё на глазок. На телефонах заглавная карточка может чуть обрезаться, поэтому старайтесь не разносить элементы прям по углам.

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

Ну и мой канал про контент, вдруг кому интересно будет.

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

Узнаем содержимое любого GitHub-репозитория за один клик с помощью универсального бесплатного ИИ-помощника Git-Friend.

Решение:

  • создаёт подробные и структурированные README-файлы для ваших проектов — это поможет сэкономить часы работы и сделать ваши труды более узнаваемыми.

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

  • отвечает на вопросы, если вы застряли при анализе проекта или установке нового фреймворка.

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

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0