Обновить
969.95

Программирование *

Искусство создания компьютерных программ

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

Есть для альтернатива Delphi в 2025 году для простых кроссплатформенных приложений?

Навеяно обсуждением статьи про Дельфи в 2025.

Q1: Если сейчас есть задача по-быстрому сбацать что то с формами под винду - какая есть альтернатива дельфи?

Q2: А если так же быстро накидать, только кроссплатформенное приложение и без зависимостей?

И мой ответ

A: Не находишь, что 3000$ за кроссплатформенный дизайнер форм слишком дорого? Даже за хороший.

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

Все может использоваться бесплатно и без особых претензий на функциональность. Единственное, иногда бывает нужно еще нарисовать какой то чарт/график и загрузить/записать данные в БД/XML/JSON - с этим могут быть нюансы с конкретным вариантом.

С чем то я работал, с чем то нет, актуальные версии вживую не проверял.

  1. GNOME Builder (ex.Anjuta). GTK multilang IDE

  2. Cambalache (ex.Glade) - GTK form builder

  3. Qt Creator

  4. FLUID for FLTK

  5. wxFormBuilder for wxWidgets 

  6. Projucer for JUCE

  7. Ultimate++ 

  8. NetBeans GUI design tool for Java Swing 

  9. TKproE (TCL/TK Programming Environment)

  10. Lazarus

  11. MSEide+MSEgui Pascal

  12. GTK# Visual Designer MonoDevelop (retired)

  13. Xamarin.Forms GTK Backend (discontinued for NET MAUI)

  14. JavaFX Scene Builder

  15. Pygubu Tkinter a GUI for Python

    Может еще что и забыл, либо не попалось на глаза.

Теги:
Всего голосов 8: ↑4 и ↓40
Комментарии15

За более чем 30 лет работы в IT я зарабатывал на жизнь программированием на языках Assembler, Basic, C, C++, Fortran, Lisp, Pascal, PL/I, Python, REXX, Scheme (в алфавитном порядке), а также руководством подобными процессами. Занимался я преимущественно системным программированием, то есть, так сказать, производством средств производства; но не только.

Вот какой получился рейтинг языков программирования в моей жизни:

– больше всего строк кода я написал на ассемблере, причём в основном бесплатно, в процессе обучения;
– больше всего по продолжительности я программировал на Паскале (не то чтобы это было свойство самого Паскаля, а просто время такое было);
– больше всего удовольствия я получал от использования PL/I;
– самой дорогой в перерасчёте на строчку кода была моя программа на REXX (так сказать, антипод ассемблера в моей карьере);
– самый сложный код я писал на Scheme.

Выводов делать не буду.

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

Последовательность Фибоначчи может конвертировать мили в километры с небольшой погрешностью

5 миль ≈ 8 км (5 и 8 - числа Фибоначчи). Реальность: 5 миль = 8.04672 км.

Почему?
1 миля = 1.609344 километра (точное значение).
Золотое сечение (φ) ≈ 1.618034

Погрешность возникает потому что отношение Fₙ₊₁ / Fₙ стремится к φ ≈ 1.618034, а точное соотношение миля/км = 1.609344.

Относительная погрешность: (1.618034 - 1.609344) / 1.609344 * 100% ≈ 0.54%.

Решил по фану реализовать конвертор милей в километры на C. Ссылка тут.

Advanced distance converter: miles to kilometers
Usage: ./bin/fib_miles2km [OPTIONS] [distance]

Options:
  -h, --help                     Show help information
  -f, --fib=ARG                  Convert miles to km using basic Fibonacci
  -b, --basic=ARG                Convert miles to km using standard formula
  -i, --fib-interp=ARG           Convert using Fibonacci interpolation
  -c, --fib-cache=ARG            Convert using cached Fibonacci
  -g, --fib-golden=ARG           Convert using golden ratio

Не знаю зачем, но прикольно :)

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

Представлен открытый репозиторий с коллекцией гайдов по почти всем стекам технологий — от операционных систем и языков программирования до паттернов проектирования и принципов дизайна. Все гайды сжаты и структурированы, включая популярные языки программирования — Python, Java, Go, JS, Rust, всё об инструментах, редакторах кода и IDE, а также шпаргалки по горячим клавишам, библиотеки и фреймворки для работы.

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

АГЕНТЫ И АГЕНТНАЯ ЭКОНОМИКА. 17.07.25.

Микро-дайджест недели.

=> Если мы будем следить за ходом их мысли (рассуждениями ИИ-агентов), то мы сможем лучше их понимать и управлять ими. Этот манифест за безопасность Chain of Thought Monitorability подписали вчера ведущие исследователи индустрии.

Но по факту весь ризонинг, демонстрируемый пользователю, может оказаться внешней декорацией, а решение LLM может принимать исходя из совершенно другой логики и других связей, то есть не тех, которые они демонстрируют в цепочках рассуждений. Другое дело с мультиагентными системами, там есть возможность сохранить прозрачность, даже в случае деградации "честного" Chain-of-Thought у отдельных моделей.

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

=> Не любите вайб дебаггинг также как и я? На подходе инженер Azimov, и его ключевое отличие от текущих код-генераторов в том, что он не только генерит код, по словам разработчика он его будет "понимать".

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

=> Деньги любят тишину. Я попробовал угадать, что за продукт выкатит бывшая CTO Open AI Мира Мурати, которая недавно подняла еще 2 млрд $ на seed-раунде при оценке 12 млрд $, при этом никто не знает, а чем собственно занимается ее стартап Thinking Machines Lab AI. Читайте в новой статье

=> Open Deep Research это агент для глубоких исследований с открытым исходным кодом, созданный на основе LangGraph и совместимый с вашими источниками данных, LLM и MCP-серверами. Подробно в блоге

И краткий обзор на YT демонстрирующий архитектуру такого агента и принципы разработки, как запустить агента локально с помощью LangGraph Studio и как быстро протестировать его с помощью Open Agent Platform.

=> AWS стремится стать универсальным центром для ИИ-агентов от Anthropic, IBM, Perplexity и других. Amazon Bedrock AgentCore - ожидаемый релиз комплексного подхода AWS для создания и развертывания различных ИИ-агентов. Одно место, любые агенты, все под рукой. Иначе бизнес начинает сходить с ума от разнообразия выбора, в котором он в общей массе не очень то пока разбирается.

AWS представил комплексный набор сервисов корпоративного уровня, которые помогают разработчикам быстро и безопасно развертывать и эксплуатировать ИИ-агенты в любом масштабе, используя любую платформу и модель, размещенную на Amazon Bedrock или в другом месте. Здесь все подробности. А здесь коротко в видео на YT.

=> Хотите собирать низко висящие фрукты лиды? Есть такое решение Orange Slice. Они собирают разные рыночные сигналы по вашим ICP и определяют тех, кто заинтересуется вашим продуктом, а затем преподносят вам их словно "на блюдечке", с различными нюансами и деталями, так что остается только продать 😉

=> Посмотрите на Runway Act-Two - я впечатлен, модель захвата движения нового поколения с существенным улучшением качества и поддержкой отслеживания головы, лица, тела и рук. Для Act-Two требуется только видеозапись движения и референсный персонаж.

Lionsgate и AMC Networks уже участвуют в проекте, изучая модель будущих производственных процессов для Голливуда.

=> И напоследок, вот такой фреймворк, эмулирующий функциональность Grok Heavy с помощью мультиагентной оркестровки. И никаких $300

***

Предыдущие материалы и выпуски дайджеста, там до сих пор много интересных инсайтов. Более 50% из них имеют длинный горизонт актуальности. О новых бизнес-моделях и ИИ-стартапах: Айвентор и Фред

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

За создание аниме-аватаров для чат-бота Grok в xAI платят до $440 тыс. в год. Разработчику нужно создавать реалистичных ИИ-аватаров, вовсю тестировать геймплей во всех ситуациях и работать с голосовыми командами. Требования — Python, Rust, WebSocket, WebRTC и опыт работы iOS.

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

Откровения евангелистов БЯМ (LLM) для целей софтостроения генерируются публикуются с высокой скоростью. Не только на хабре, LinkedIn заполнен ими "под завязку". Прочитывать всё невозможно, да и не нужно, но некоторый тренд в изложении присутствует.

К сожалению, авторы много пишут о процессе, забывая собственно цели. Упоминание о функциональной сложности программы, как правило, отсутствует. Длина описаний процесса может создать ложное впечатление о развесистой функциональности, хотя большинство примеров находятся на уровне "записная книжка". В этом нет ничего плохого, просто не забываем, что 30 лет назад RAD типа Delphi умели создавать такие же "книжки" без написания кода вообще: достаточно было "накидать" компонентов на форму, настроить, связать их, и нажать "Run".

Накидали, и что дальше?

За словами "писать на близком к естественному языку", скрывается постепенное создание быстро растущего "промпта" - детальной спецификации, местами - псевдокода. Как следствие, необходимо иметь версии таких "исходников", как и раньше для кода (об этом практически не пишут). Для сторонних пакетов, API служб и прочих зависимостей не забываем указывать версии. По сравнению с таким "псевдокодом" техзадание может показаться увлекательной беллетристикой. Речь идет по сути о конечных спецификациях, ведь программирование - не столько кодирование (от силы 20% времени), сколько детальное проектирование и стабилизация.

Размер спецификаций псевдокода вкупе с описаниями контекста среды могут превзойти собственно размеры генерируемого кода, написанного программистом на формальном ЯВУ. Спецификации придется так же хранить в Git, и нервно просматривать, что же изменилось в сценариях, почему, ***, вместо слова "опять" кто-то написал "снова".

Для детерминированности процесса желательно, чтобы моделька была в том же состоянии, что и на предыдущем этапе генерации, но для внешних БЯМ-сервисов это недостижимо. Напомню, что компиляторы и классические генераторы кода (CASE, MDD) - детерминированные.

На первый план выходят тесты, их нужно писать "больше и лучше", потому что под капотом теперь только "черный ящик", "белого" больше нет. Тесты нужно постоянно обновлять в зависимости от объема изменений. Если ваши новые спецификации меняют 20% существующей кодовой базы, то тестов придется менять вдвое больше, принимая 2:1 за стандартное соотношение тестов к коду. Для языков без статической типизации тестирование еще более усложняется.

В реальных проектах написание сотен строк в день - это режим стартапа, причем на "нулевом цикле". Достаточно быстро программист приходит к естественной норме десятков строк в день, остальное время занимает понимание текущего потока проблем, поиск ошибок, интеграция и стабилизация. Хороший программист минимизирует объем порождаемого кода. Нужно ли включать БЯМ для написания 50 строк в день - вопрос.

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

Напоследок накину немного философского. Евангелисты любят упоминать, что человеческий мозг и БЯМы работают на одних и тех же принципах. Часто выясняется, что курса "Аналоговые ЭВМ" на их потоке уже не было, что несколько удручает. Еще более простой вопрос на примере несуществующей (пока?) телепортации: "Человек на входе телепортера и на выходе - это одна и та же личность?"

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

По мнению специалиста по этике моделей в OpenAI Шона Гроува, в будущем наиболее ценными программистами станут те, кто умеет чётко формулировать мысли, а не просто писать код.

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

Гроув называет код лишь «потерянной проекцией» (lossy projection) изначального замысла и ценностей. С развитием ИИ систем, по его мнению, главное умение программиста смещается от написания кода к созданию точных спецификаций и промптов, способных передать намерение максимально полно.

«Тот, кто пишет спецификацию — будь то менеджер, инженер, маркетолог или законодатель — и есть новый программист», — пояснил Гроув. По сути, будущее разработки смещается от технического исполнения к смысловому моделированию: важно не столько, как вы пишете код, сколько, что вы хотите выразить. ИИ берет на себя синтаксис, а человеку остаётся формулировать мысль — ясно, логично и недвусмысленно, полагает Гроув.

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

Чек-лист: твой проект скоро развалится, если…

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

  • Весь проект держится на одном человеке
    И он — не документация. Ушёл в отпуск — проект замер.

  • Задачи ставятся в личке, на встрече или в голове
    "Я же в телеге писал задачу". Без трекинга всё разваливается.

  • Никто не может объяснить, что по приоритету
    Всё срочно, всё горит, всё одновременно. Ну вы поняли.

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

  • Тестов нет, баги ловим по фидбеку
    Багрепорт от клиента — это не QA.

  • Архитектура — это слово из чужого лексикона
    Потому что “нам и так норм”. До первой перегрузки.

  • Вопросы “а как это работает?” решаются методом тыка
    Потому что комментировать код — западло.

  • Бэкапы где-то есть… но никто не проверял
    Олег говорил, что сохранял себе дамп локально

  • Ушёл один человек — и половина знаний ушла с ним
    Значит, их не было в проекте — только в его голове.

Если вы загнули 3–4 пальца — значит пора встать и осмотреться.
Пока “всё работает” — это ещё не стабильность, это просто везение.

Некоторые проблемы уже рассмотрел подробнее в своих статьях

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

Хорошо ли вы разбираетесь в Python?

В Академии Selectel есть небольшой тест на владение синтаксисом Python. Он позволит оценить свои знания и отыскать пробелы. Вопросы подобраны для тех, кто уже не пугается None, но продолжает разбираться, что происходит «под капотом». Бонусом — подборка полезных материалов для изучения Python!

Пройти тест →

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

Фича ради фичи

Как легко потерять смысл разработки, добавляя “полезности”

  • Сделаем ещё кнопку, она “точно нужна”

  • Добавим фильтр, и сортировку, и модалку, ну мало ли

  • Вот бы выгрузку в Excel, и график, и пуши!

…Проект набирает скорость. Только куда?

В чём проблема?
Когда цель — просто сделать больше фичей, а не решить конкретную задачу, продукт начинает разваливаться: интерфейс пухнет, команда тонет в «хотелках», релизы идут в спешке, а люди - даже не замечают большинство этих «удобств»

Парадокс: чем больше фич, тем хуже продукт

Потому что он уже не про ценность, а про “галочки” и “давайте сделаем ещё”.

У фичи должен быть KPI, надо ставить вопрос «а что изменится от нее?». Также их надо подчищать, если старые не используются: «больше ≠ лучше»

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

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

Я пишу о таких штуках в Telegram-канале Техдир на пальцах — без кода и заумных слов. Только реальные кейсы, честные мысли и решения, которые работают.

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

Evolution free tier — ежемесячный объем облачных ресурсов, за которые не нужно платить 🙌 

❓ Что за инструмент? Evolution free tier позволяет бесплатно использовать ресурсы платформы Cloud.ru Evolution. С free tier доступны виртуальные машины, объектное хранилище S3 и ресурсы для запуска контейнеров.

🖥 Особенности и преимущества. Во free tier вам доступны три сервиса:

  1. Evolution Compute — виртуальная машина в следующей конфигурации: 2 vCPU (Intel Gold 6248R, 3 ГГц), 4 ГБ RAM (DDR4), 30 ГБ дискового пространства (SSD NVMe) и безлимитный исходящий трафик.

  2. Evolution Object Storage — объектное хранилище S3 с ежемесячным объемом бесплатных ресурсов: 15 ГБ хранилища, 100 000 операций PUT, POST, LIST, миллион операций GET, HEAD и 10 ТБ исходящего трафика.

  3. Evolution Container Apps — сервис для разработки и запуска контейнеров. В месяц доступны: 120 vCPU × час и 480 ГБ RAM × час.

Чтобы начать работу, достаточно выбрать готовый образ и приобрести публичный IP.

✍️ Где, как и для чего использовать. Evolution free tier подойдет для тестирования облачных сервисов и разработки небольших проектов: менеджера паролей, telegram-бота, сайта для личного блога или портфолио. Еще можно развернуть облачное хранилище для фото, видео и документов. Или развернуть собственный игровой сервер в Minecraft ⛏️

А чтобы быстрее запустить проект, используйте нашего нового AI-помощника Клаудию. Он подберет конфигурацию виртуальной машины, развернет ее, создаст SSH и виджеты мониторинга, настроит алертинг за вас.

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

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

Человек-комбайн

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

Это «человек-комбайн». Его любят, на него надеются, он незаменим. До тех пор, пока всё не рухнет.

Первый этап

Команда обращается за всем именно к нему: помощь, проверка, советы. Он — живая документация и мозг проекта.

Для бизнеса всё выглядит отлично: «три в одном, да ещё и без лишних затрат».

Второй этап

Постепенно «комбайн» устаёт: таски неинтересные, общения слишком много, помощи просят постоянно.

Он начинает раздражаться, отказывать, “зависимые” замыкаются. Процессы начинают проседать — но пока это незаметно сверху.

Третий этап

Бизнес не замечает проблему, а специалист уже морально ушёл. Проходит немного времени, и вот он увольняется. И…

Судный день

Без него — никто не знает, как деплоить, где что лежит, как починить баг.

Документации нет, у разработчиков паника.

Прод падает. Клиенты жалуются. Команда — в ступоре.

Восстановление занимает недели. А иногда — проект просто не поднимается.

Как не угодить в ловушку?

Раздавайте ответственность. Не сливайте всё на одного “самого умного”. Растите дублирующих специалистов. Пишите документацию. Один супермен — это риск, а не преимущество.

Коромысло с одним ведром — всегда перевесит в одну сторону.

Я пишу о таких штуках в Telegram-канале Техдир на пальцах — без кода и заумных слов. Только реальные кейсы, честные мысли и решения, которые работают.

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

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

Repeater - планировщик для анализа данных, упрощенный Apache Airflow.

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

Пример задачи - запуск скриптов wiki_stats.py и wiki_pageviews.py импорта верхнеуровневой статистики Википедии в локальную базу.

title = "wiki"
cron = "0 55 * * * *"

[[tasks]]
name = "wiki_stats"
cmd = "python3 ./examples/wiki_stats.py"   

[[tasks]]
name = "wiki_pageviews"
cmd = "python3 ./examples/wiki_pageviews.py --end_date={{.scheduled_dt}}"

Бэкэнд написан на Go. Команды ниже запустят Докер-контейнер с сервисом и окружение для примеров:
- Repeater http://localhost:8080 - планировщик
- ClickHouse http://localhost:8123 и http://localhost:9000 - база данных
- ch-ui http://localhost:8001 - веб-интерфейс к базе данных
- Streamlit http://localhost:8002 - дашборды

git clone https://github.com/andrewbrdk/Repeater
cd Repeater
docker compose up --build

В примерах импорт количества просмотров страниц Википедии, курса биткоина, статистики репозитория Линукса на Гитхабе. Графики в Streamlit http://localhost:8002 .

Интересны применения проекта. Попробуйте! Впечатления пишите в комментариях. Спасибо!

Репозиторий: https://github.com/andrewbrdk/Repeater

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

Привет, Хабр. Подготовили подборку бесплатных открытых уроков от Otus, которые пройдут на этой неделе по вечерам. Опытные практики проводят вебинары в живом формате, что позволит не только освоить новые знания, но и задать вопросы экспертам. Регистрируйтесь и присоединяйтесь!

7 июля, понедельник:

8 июля, вторник:

9 июля, среда:

10 июля, четверг:

14 июля, понедельник:

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

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

Запускайте контейнерные приложения в облаке с Evolution Container Apps 💭

❓ Что за сервис? Evolution Container Apps позволяет запускать контейнерные приложения в облаке, причем для этого не нужно разбираться в Kubernetes или развертывать виртуальные машины. Запуск проиcходит на базе Docker-образов.

🖥 Особенности и преимущества. Возможности сервиса применимы для любого стека — контейнеры могут использовать любую среду выполнения и любой язык программирования. В зависимости от нагрузки экземпляры контейнеров создаются или удаляются автоматически. Не нужно настраивать кластеры Kubernetes: достаточно загрузить Docker-образы в реестр и создать контейнеры в личном кабинете. А еще у Evolution Container Apps есть free tier: ежемесячный объем бесплатных ресурсов — 480 ГБ RAM и 120 vCPU, запускать небольшие приложения можно без оплаты.

👨‍💻 Кому будет полезно. Всем, кто использует Docker и хочет облегчить развертывание и масштабирование:

  • Разработчикам и DevOps-инженерам, чтобы быстро тестировать и запускать приложения.

  • Небольшим компаниям и стартапам, которые хотят сэкономить на инфраструктуре и попробовать бесплатные возможности Evolution Container Apps.

  • Большим проектам с микросервисной архитектурой, чтобы облегчить оркестрацию, развертывание сложных приложений за счет контейнеров sidecar и init.

Хотите узнать больше о сервисе? Смотрите запись доклада с GoCloud 2025, где мы рассказали, как сохранить данные в S3 при работе с Evolution Container Apps. А еще сохраняйте пошаговый туториал, как запустить облачное приложение с Evolution Container Apps, без Kubernetes и развертывания ВМ.

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

Хотите стать мастером регулярных выражений?

Тогда новый бесплатный курс — для вас!

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

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

После изучения материалов вы сможете:

  • моментально извлекать данные из гигабайтов текста;

  • валидировать формы любой сложности;

  • правильно обрабатывать тексты на русском (никаких сломанных \b);

  • решать сложные задачи с помощью lookarounds и именованных групп;

  • повысить свой уровень в работе со скриптами и редакторами.

Все материалы бесплатные. Не требуется даже регистрация.

Начать обучение в Академии Selectel →

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

Совершенный assert() для всех языков программирования

...как ни смешно, но пострадали стоматологи: стало меньше зубовного скрежета!

Когда C/C++ разработчики переключаются на другие языки, им очень не хватает привычного механизма assert()/NDEBUG. Он, в некотором смысле, позволяет получить "идеальный" метод управления Debug/Release конфигурациями:

Как вы правильно поняли, в Release конфигурации строки кода между #ifndef NDEBUG и #endif полностью исчезают, и мы получаем идеальный билд. Но идентичного результата можно добиться и с помощью комментариев... (здесь должна была быть картинка, но вставить не получается)

Гмм.. Значит будет лишь краткий конспект статьи.

ОК, как ни странно, но это правда: я создал утилиту DebRel, полезную ВСЕМ языкам программирования! Комментарии специального вида (D0 - D9 и R0 - R9) позволяют минимальными усилиями добиться "идеального" управления Debug/Release конфигурациями:

  • Debug конфигурация дает нам всю необходимую диагностику! С различной глубиной.

  • В Release конфигурации нет никаких следов Debug-а! Ни байта.

А именно:

  • Конфигурация RN отменяет все остальные. Релиз -- эгоист!

  • Конфигурация DN оставляет лишь строки от D0 до DN. Вы задаете глубину отладки.

В общем, сразу читайте https://ders.by/arch/debrel/debrel.html Там есть подробности, исходники и сам debrel.exe.

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

Доступен репозиторий Project Ideas and Resources с десятками пет-проектов для реализации, где разработчики собрали огромное пошаговое руководство к наработке железных навыков программирования. Ресурс предоставляет бесплатный доступ к проектам разного уровня сложности: от простого шахматного приложения до полноценного клона Airbnb. Есть пошаговое руководство для реализации каждого проекта на самых популярных языках программирования: Java, Python, JS, C#, а также ссылки на теоретические выкладки, книги и видео по различным темам программирования.

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

🔺Пример MCP для Gemini CLI

Ковыряюсь с Gemini CLI, консольным кодовым агентом, который на днях вышел. Накидал пример, как расширить его функционал при помощи MCP сервера.

my_mcp.py

from openai import OpenAI
from mcp.server.fastmcp import FastMCP
import base64
import os


client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
mcp = FastMCP("openai-image-generator")

@mcp.tool(description="Generate an image with OpenAI Images API")
def generate_image(
    prompt: str,
    size: str = "1024x1024",   # "1024x1536", "1536x1024", "1024x1024"
    quality: str = "high",     # 'low', 'medium', 'high'
    background: str = "transparent"
) -> str:
    """Return a file path to the generated image."""
    response = client.images.generate(
            model="gpt-image-1",
            prompt=prompt,
            size=size,
            quality=quality,
            output_format="png",
            user="test_user",
            moderation="low",
            background=background,
            n=1)
        
    image_base64 = response.data[0].b64_json
    image_bytes = base64.b64decode(image_base64)

    file_name = f"gen_image.png"
    file_path = os.path.join(os.getcwd(), file_name)

    with open(file_path, "wb") as f:
        f.write(image_bytes)
        
    return file_path

if __name__ == "__main__":
    mcp.run()

Тут вызывается API для генерации изображения, ключ берется из переменных окружения, картинка сохраняется на диск. И прописываем путь до файлика в settings.json Gemini:

{
  "mcpServers": {
    "openai-image-generator": {
      "command": "python",
      "args": [
        "/path/to/my_mcp.py"
      ],
      "env": 
        "OPENAI_API_KEY": "${OPENAI_API_KEY}"
      }
    }
  }
}

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

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

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

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

Вклад авторов