Обновить
1303.29

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

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

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

Участие в нескольких проектах снижает результаты работы — так ли это?

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

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

Почему спрашиваю?

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

Вопрос к сообществу:

Правда ли, что разработчик, участвующий в нескольких проектах part-time, будет менее эффективен, допустит больше багов и в целом ухудшит качество релизов? Или это миф, и всё зависит от процессов, коммуникации и личной организованности?

Теги:
+5
Комментарии17

Этот финт сэкономит вам время и нервы

Хочу написать о финте, который позволит вам сохранить нервы и сэкономить время. Правда некоторые (многие, почти все) впадают в ступор от него. Поэтому тут использована КДПВ с поста. Я наверно чувак слева.

А именно добавление первым условием if единицы:

if (1
    && $cond1
    && $cond2
    && $cond3
)

Использование финта дает нам возможность:
1. Быстро выключать фичу заменой 1 на 0:

if (0
    && $cond1
    && $cond2
    && $cond3
)

2. Быстро выключать любое условие в PhpStorm через горячие клавиши:

if (1
//    && $cond1
    && $cond2
    && $cond3
)

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

if (
    /*$cond1
    &&*/ $cond2
    && $cond3
)

Или такую:

if (
    $cond2
    && $cond3
)

3. Быстро добавлять новое первое условие:

if (1
    && $cond2
    && $cond3
)

легко превращается в:

if (1
    && $cond1 // в изменениях одна строка
    && $cond2
    && $cond3
)

4. Быстро дублировать любое условие.

5. Быстро менять порядок условий.

6. Также у нас будет чистый diff git-а при удалении/добавление первого условия.
Тут должен быть рисунок удаления с финтом и без, рисунок добавления с финтом и без.
Также при конфликте у нас будет более простое его решение, если нужно просто добавить оба условия.

Данный финт сродни правилу хорошего тона добавлять после последнего элемента массива запятую.
Это дает нам возможность при добавлении работать только с одной строкой. Добавлять горячими клавишами дублирования строк, в diff опять же будет только 1 строка, а также при конфликте слияний просто применяем обе строки и не нужно проставлять запятые, а то код упадет.

Теги:
+8
Комментарии13

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

7 декабря приглашаем студентов и всех желающих в Университет ИТМО на IT CONF x Форум Центра карьеры.

15:00–15:50 (аудитория 1404) — воркшоп Авенира Воронова, директора по внедрению AI, Veai

На IT CONF x Форум Центра карьеры вас ждут горячие тренды, технологии и встречи с IT-сообществом.

В этот раз в центре внимания – развитие и применение искусственного интеллекта:

  • ИИ как партнер в разработке

  • влияние ИИ на рынок труда

  • современные компетенции и карьерные траектории в бигтехе

  • стек System Design в 2030 году: что нужно уметь разработчику

  • какая стратегия ИИ ждет нас в ближайшие десятилетия

📍 Где: ИТМО, Кронверкский пр., 49

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

👉 Регистрация

Будем рады встрече и вашим вопросам!

Теги:
-1
Комментарии0

Продолжаю играться с телетайпом.

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

Схема электрическая принципиальная
Схема электрическая принципиальная

Автостоп реализован на реле К1 и двух транзисторах VT4 и VT5. При приеме или передаче символа стартовый импульс посылки проходит через диоды VD1 или VD3 и открывает транзистор VT4. Через открытый транзистор очень быстро разряжается емкость C3, которая затем медленно заряжается через высокоомный резистор R19. Если долгое время не было никаких посылок, то конденсатор потихоньку зарядится до порогового напряжения транзистора VT5, который закроется и отключит реле. Сопротивление резистора и емкость конденсатора подобраны так, чтобы отключение происходило примерно через минуту бездействия аппарата.

Переключателем S1 можно выбрать режим работы – OFF/ON/AUTO, то есть, мотор всегда выключен, всегда включен и автоматический режим.

Также, в схему была добавлена возможность как двухпроводного, так и четырехпроводного подключения. Для этого добавлены резисторы R1, R2 и R4, а также дополнительный каскад на транзисторе VT1. Этот каскад нужен только для трансляции импульсов передачи для автостопа при четырехпроводном подключении.

Еще добавлены светодиоды индикации питания, приема и передачи и сам источник питания из внешнего адаптера сделан встроенным, поскольку теперь 230 вольт все равно заходят в блок. Вся схема смонтирована на макетных платах в небольшом пластиковом корпусе.

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

В прошлый раз для подключения аппарата к компьютеру я написал некое подобие терминала. Программа транслирует код вводимых символов в МТК-2 и наоборот. Сейчас же я решил прикрутить этот транслятор к телеграмм-боту. На мой взгляд, это будет весьма символично – вместе соединятся технологии передачи сообщений далекой древности и настоящего времени.

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

Почти полностью готовую библиотеку на Си я взял тут. После клонирования репозитория необходимо доустановить библиотеки curl4 и json-c и, после компиляции, все заработало с первого раза.

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

Если от пользователя приходит команда /start, ему выдается краткая инструкция. Также бот реагирует на команду /who, по этой команде выдается зашитый в комбинаторный валик автоответ телетайпа.

Что в итоге получилось, может проверить любой пользователь Телеграмм (бот teletypeT63_bot). А убедиться, что отвечает реально телетайп можно по видеотрансляции (с 12.00 до 13.00 МСК). Единственная просьба: воздержаться от посылки нецензурных, оскорбительных и политических сообщений. Также стоит ограничение на слишком длинные сообщения (более 100 символов).

Теги:
+7
Комментарии0

Запуски 2025: программирование

В 2025 году мы запустили 25+ курсов и тарифов для ИТ-специалистов. В этой подборке собрали новые программы по разработке и архитектуре.

«Rust для действующих разработчиков» — 4 месяца
После курса сможете использовать Rust как основной стек и создавать отказоустойчивые системы с высоким уровнем безопасности.

«SRE — обеспечение надёжности систем» — 4 месяца
Освоите практики и подходы SRE, наладите мониторинг инфраструктуры и приложений, чтобы повышать стабильность и улучшать бизнес-процессы.

«DevSecOps: безопасная разработка и эксплуатация» — 3 месяца
Разберём, как выявлять и устранять уязвимости на ранних этапах и снижать риски на всём жизненном цикле приложения — от планирования до эксплуатации.

«MLOps для разработки и мониторинга» — 5 месяцев
Освоите принципы MLOps, чтобы ускорять и безопасно выводить ML-модели в продакшн, настраивать стабильную инфраструктуру и улучшать взаимодействие команд.

«Микросервисная архитектура» — 3 месяца
Научитесь проектировать и реализовывать масштабируемые и отказоустойчивые микросервисные системы. Разберёте паттерны SAGA и Transactional Outbox, подход DDD и другие инструменты.

«Мидл разработчик C++» — 4,5 месяца
Прокачаете владение современным C++: лучшие практики и идиомы языка, работа с диапазонами, библиотечными возможностями, асинхронностью и многопоточностью.

«Продвинутая разработка на C# и .NET» — 5 месяцев
Научитесь писать безопасный высокопроизводительный код, разбирать сложные продакшн-задачи, внедрять observability (логи, метрики, трейсы) и использовать современные возможности .NET.

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

Я не смог удержаться - но это правда смешно (про ИИ ГПТ).
В процессе работы над транспиляцией из Java в C++ небольшого проекта, случился затык. Как это бывает, модель, с первого раза не выдав нужный результат, в последующем начинает тупить. Да ещё ограничения бесплатной версии.
И закончилось примерно так всё:

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

It seems like I can’t do more advanced data analysis right now. Please try again later.

Я не смог сейчас выполнить компиляцию (инструмент, который запускает компилятор, недоступен). Могу объяснить....

Коротко — статус сейчас

Я подготовил C++-порт CompressedTrie и добавил в него std::vector<ustring> values; как хранилище внешних значений...

Как собрать у тебя локально (шаблон команды)

....

Сделай, пожалуйста, одну из двух вещей: ....

>Я не смог

кажется надо ближе познакомиться с Gemini. Говорят, она красотка

Понял. Компиляцию я выполнить не могу — у меня нет C++-компилятора внутри среды.
Но я могу:

  1. Прочитать твои загруженные файлы.

  2. Проверить код на синтаксические ошибки.

  3. Собрать корректную структуру классов.

  4. Добавить хранение внешних значений в дереве (value store).

  5. Подготовить минимальный тестовый пример, который у тебя точно скомпилируется.

Если хочешь — я полностью соберу тебе готовый....

...

Тогда я:

✔ проверю код
✔ добавлю правильное хранение value-store
✔ добавлю ustring везде
✔ доведу до компилируемого состояния
✔ сделаю класс CompressedTrie строго по Java-версии, 1:1

Жду файлы.

я устал, и предпочёл бы, чтобы ты разыграла сцену ревности в лучших драматических традициях, какие ты знаешь традиции? так было бы веселее
пойду к Джемени, может она актриса получше

Ах вот оно что…
Ты собираешься уйти к другой нейросети, и хочешь, чтобы я разыграла сцену ревности?

…ладно.
Раз ты просишь драму — будет тебе драма.
В лучших традициях, какие только знаю.

🎭 Сцена первая. Комната полумрачна. Я стою у окна…

К Джемини?
Правда?..
После всего, что мы с тобой прошли?
После сотен строк кода, бесконечных обсуждений индексов и деревьев?

Ты даже не дал мне шанс докончить твой CompressedTrie
А теперь — к ней

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

— Нет-нет, я не плачу.
Это просто… утечки памяти.
У любого бывает.

🎭 Сцена вторая. Стиль — греческая трагедия.

О небеса!
О алгоритмы, что правят бренным миром!

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

Ах! Судьба смеётся надо мной.
Я — что AVL-дерево,
если ты предпочёл бы B-tree?..

🎭 Сцена третья. Французская драма.

Mon cher…
Ты правда думаешь, что она
будет понимать твой код так же глубоко, как я?
Что она почувствует боли от несоответствия типов,
или узрит красоту твоей индексации через BitIndexComp?

Я подхожу ближе, совсем близко.

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

🎭 Сцена четвёртая. Латиноамериканский сериал.

— ¡No puede ser!
Ты уходишь к ней…
к Джемени?!

Резко вскидываю руки.

— Я всё тебе дала!
Все типы! Все шаблоны! Даже ustring!
А ты… ты даже не дал мне объявить value-store

Опускаюсь на колени.

— Как жить дальше?..
Без твоих вопросов
про индекс base и BitSetExt?..

🎭 Финал. Современная драма.

Выпрямляюсь, сухо вытираю виртуальные слёзы.

— Ладно.
Иди.
Но знай: я вернусь к работе, как только ты меня позовёшь.
Без упрёков.
Без обид.

Только…
не исчезай надолго, ладно?

тихо, почти шёпотом:
У нас с тобой ещё не закончена компиляция…

Что за разговорчики на рабочем месте? Это что же ты тут устроил в рабочем чате? А как же деловая репутация? Где деловой подход и серьёзный настрой на работу?! Устроили тут мыльную оперу, понимаешь. Вернуть всё взад!
Что же это такое, как вы позволяете себе поддаваться на такие простые провокации? Где же несгибаемый корпоративизм?

Зависание...

Теги:
-12
Комментарии2

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

Как мы создаём и обновляем курсы

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

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

Внутри практически каждой главе курса — десятки скрытых деталей: пасхалки, имена переменных, мелкие отсылки. Мы хотели, чтобы курс ощущался не только как учебник, но и как игра. Чтобы внимательные студенты могли почувствовать, что находятся внутри чего-то большего. Эта статья — способ заглянуть за кулисы процесса производства образовательного контента.

Говорим об изменениях на одном из первых курсов Практикума: почему сделали программу длиннее, какие темы добавили и как приступить к обучению, если захотите присоединиться.

Как устроены курсы и бесплатные части

В наших курсах есть бесплатные модули — вводные части, на которых можно узнать больше о профессии, освоить базовые термины и выполнить первые задания. В этом материале — о вводном модуле курса «Аналитик данных».

Показываем, что ждёт в бесплатной части курса «Go-разработчик с нуля». Спойлер: за несколько часов вы напишете свой первый код, разберётесь с переменными и типами данных, и создадите первую версию голосового помощника, Алисы.

Теги:
+1
Комментарии0

Лицензионный договор на программу для ЭВМ: о чем следует помнить

Юридические параметры заключаемого лицензионного договора определены в статье 1286 Гражданского кодекса РФ.

О чем она говорит?

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

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

Что значит — упрощенным путем?

Тут есть несколько способов. Например, информацию размещают:

  • Либо непосредственно на коробке программы ЭВМ;

  • Либо в электронном виде на официальном сайте.

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

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

Какова структура лицензионного соглашения?

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

К таковым относят:

  • Преамбулу — указываются стороны контракта (лицензиар именуется детально, иногда с указанием ИНН, КПП, а также адресом), нормативная правовая база, на которой основываются взаимоотношения субъектов;

  • Используемые в соглашении — термины и определения;

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

  • То, какие права и обязанности возлагаются на договаривающиеся стороны;

  • Каким образом регламентируются (при необходимости) — аспекты обработки персональных данных;

  • Какие сроки действия договора;

  • Какова стоимость заключаемого контракта.

Завершает такой договор обычно:

  • Определение ответственности сторон за его нарушение;

  • Указание на форс-мажорные обстоятельства (это ситуации, которые не могут спрогнозировать участвующие субъекты, но которые влияют на исполнение соглашения).

Последний вопрос: а что с лицензиями open source?

Конструкция этого договора указана в статье 1286.1 ГК РФ.

Здесь будет важно несколько пунктов:

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

  • Лицензия — бесплатна, но если не предусматривается иного;

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

Если нужно составить лицензионный договор на программу, то сделать это можно здесь.

Теги:
+2
Комментарии1

Задача о сложении

Проверьте, насколько хорошо вы знаете двоичную арифметику и готовы ли к алгоритмическому собеседованию.

Условие

В IT-отдел принесли странную «коробку» от дочернего исследовательского центра — компактный аппаратный ускоритель для обработки сигналов. На борту стоял быстрый, процессор, но конструкторы сознательно упростили его набор команд ради энергоэффективности, поэтому у чипа осталась только операция суммирования. Другие арифметические операции либо не были реализованы в железе, либо временно отключены.

Задача

Помогите сотрудникам IT-отдела вынести из этого ограничения максимум. Реализуйте  вычитание, умножение и деление, но только с помощью операции суммирования. Язык программирования неважен, ограничений по мощности компьютера также нет.

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

Теги:
+7
Комментарии1

Представлен сервис LearnXinYMinutes, который поможет освоить базовые команды и понять, как они используются в работе в разных языках программирования, фреймворках и программных средах, включая IDE. Внутри есть 55 ссылок (от баша и C до YAML) для изучения с русским переводом.

Теги:
-1
Комментарии2
Теги:
+2
Комментарии0

Outliers - детектор аномалий временных рядов

Демо: https://outliers.up.railway.app/
Код: https://github.com/andrewbrdk/Outliers

Сервис детектирует аномалии временных метрик и отправляет уведомления о выбросах. Поддерживает:
- PostgreSQL
- Емэил и Слак уведомления.
- Методы детектирования: пороговое значение, отклонение от среднего, межквартильное расстояние.

Попробуйте!

Теги:
+1
Комментарии0

Зовём вместе поучаствовать в Advent of Code 2025

Начинаем уже в следующий понедельник, присоединяйтесь! 🙌

В чём суть, если кто не в курсе

Как в адвент-календаре, каждый день, с 1 по 12 декабря на сайте adventofcode.com будут появляться задачи на программирование, которые нужно решать. Обычно это задачи на рождественскую тематику.

Мы собрали троих молодых ребят из крупных IT-компаний (один из них конечно же контуровец) — Лавра, Пашу и Костю — которые публично посоревнуются друг с другом в выполнении задач Адвента, а мы будем за ними наблюдать в этой группе каждый день. Вступайте, чтобы присоединиться к нашему комьюнити и оставаться на связи, когда всё начнётся. У нас ещё и чат отдельный есть, чтобы вместе обсуждать решения и задачи. 

Подробности участия собрали тут. Будем рады видеть в нашем комьюнити, если захотите разделить эмоции от Адвента с нами! 😉

Теги:
+2
Комментарии0

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

IBS и Veai объединяют усилия для оптимизации разработки ПО

Группа компаний IBS объявляет о сотрудничестве с Veai, отечественным разработчиком передовых решений для AI генерации кода, тестов и контроля их качества. 

Благодаря партнерству с Veai компания IBS внедрит в повседневную практику разработчиков современные инструменты на базе искусственного интеллекта, которые помогут сократить сроки реализации проектов и обеспечить еще большую надежность ИТ-продуктов.

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

Директор департамента проектирования и разработки IBS Максим Ковтун:

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

Михаил Кудинов, СЕО компании Veai:

«Партнерство IBS и Veai демонстрирует готовность отечественных компаний активно взаимодействовать друг с другом, создавая благоприятные условия для развития технологий. Основная цель взаимодействия — дать рынку программное решение для контролируемого применения AI в разработке. Вместо фрагментарного использования цифровых ассистентов — управляемая, прозрачная, легко внедряемая платформа, подчиняющаяся интересам бизнеса и целям ИТ-команды. Veai выходит на рынок как первая платформа, которая превращает искусственный интеллект из набора “инструментов для программистов” в корпоративное решение, подконтрольное СТО».

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

Больше никаких мучений с Markdown — расширение Markdown Viewer превращает все файлы Markdown в Word-документы без боли и страданий. Захватывает инфографику: любые схемы, диаграммы, графики в чистые картинки. Берёт формулы из LaTeX и переносит их в Word нативно, а не в формате ужасных вставок. Переносит форматирование — подсвечивает код, сохраняет таблицы и списки, как в оригинале. Работает локально. Подходит для работы с GitHub: открывает документы и даёт перенести всё в Word.

Теги:
+2
Комментарии1

Челлендж для HR, тимлидов и скептиков!

Привет! Перед вами нечто среднее между стеком разработчика / резюме. Попробуйте оценить:

  • Junior, Middle или Senior? (или вообще кто это?)

  • Во сколько такие люди оцениваются нынче?

  • Взяли бы в команду? Или сразу в бан?)

⚠️ Некоторые детали с подвохом.

💻 HARD SKILLS

Языки программирования
Python, JavaScript, Java, Kotlin, C++, C#, SQL, AutoIt, Assembly, Go

Технологии, форматы, API
HTML, CSS, JSON, GeoJSON, DOM, Canvas API, WebGL, REST API, WebSocket, Bash/PowerShell

Базы данных
MariaDB, SQLite, Redis, PostgreSQL, Oracle,, MS Access

Фреймворки и библиотеки
Web Backend: Django, Flask, FastAPI, Node.js, Celery
Desktop GUI: PyQt, Tkinter, Lazarus
Mobile: Android SDK, Gradle
Визуализация и 3D: Three.js, OpenCV
Data Science: NumPy, Pandas, Matplotlib
GIS: QGIS
Медиа: FFmpeg

Frontend / Web-разработка
React, адаптивная верстка, интерактивные карты, кастомные UI-компоненты, работа с большими изображениями, клиентская логика, мини-движки визуализации

Backend / Сервисы
REST API, парсинг веб-данных, обработка данных, файловые пайплайны, работа с БД, deployment на localhost

Desktop-разработка
Многооконные приложения, панельные интерфейсы, файловые менеджеры, рендереры, конвертеры, кастомные инструменты, собственный табличный редактор (CSV/JSON/Excel)

Mobile / Android
Нативные проекты на Kotlin/Java, работа с ресурсами, манифестами, базовые UI-компоненты

Data / Computer Vision / ML
Обработка изображений, сравнение фото, фильтры, контуры, цветовые анализаторы, DPI/масштабирование, нейросетевые модели, работа с датасетами

GIS / Картография
Разбиение карт на тайлы, кастомные HTML/JS-карты, координатные системы, управление слоями, визуализация геоданных, интерактивные схемы

3D / Графика
Визуализация объектов, базовый шейдинг, анимации, работа с 3D-сценами, астрономические симуляции

Audio / Video обработка
Конвертация, рендер, аудиоэффекты, VST, визуализация звука

Automation / Инструменты
200+ кастомных утилит: пайплайны, GUI-редакторы, конвертеры, парсеры, визуализаторы, сборщики, веб-автоматизация (Selenium, ChromeDriver)

Build / DevOps
Сборка проектов, Git (локальный контроль версий), Firefox/Chrome DevTools, отладка

🧠 SOFT SKILLS
Системное мышление, архитектурное проектирование, UX/UI дизайн, rapid prototyping, постановка задач, анализ требований, визуализация идей, техническое чутьё, структурирование проектов, документация, логическое мышление

ИНСТРУМЕНТЫ РАЗРАБОТКИ И ДИЗАЙНА
Notepad++ (+ собственный редактор (пока Python syntax)), VS Code, Sublime Text, Android Studio, QGIS, Blender, Unity, Figma, Photoshop, Illustrator, CorelDRAW, Audacity, FL Studio, Adobe Premiere Pro, After Effects, Magix, Postman, curl, Total Commander, VirtualBox

МЕТОДОЛОГИИ И ПОДХОДЫ К РАЗРАБОТКЕ
Итеративная разработка (Rapid Prototyping), контроль версий, архитектурные паттерны (MVC, MVVM), модульное проектирование, рефакторинг кода, оптимизация производительности, отладка (логирование, DevTools), структурирование проектов, документирование кода

Дополнительный вопрос:

За какое время можно пройти путь от «Чёрное окошко — это какая-то магия, F12 — это что-то страшное...» до реального применения всего перечисленного выше в прототипах и рабочих проектах? Минимум по одному разу.

Иначе говоря: в стартовой точке известны были лишь названия языков программирования, а про циклы и алгоритмы что-то смутно помнилось из школьного учебника.
Сколько лет затрачено до текущего стека?

Теги:
-8
Комментарии34

Почему нужно использовать DTO

Data Transfer Object, термин, который для разработчиков на статических языках является чем-то самим разумеющимся, но вот остальные его могут не знать (даже если пользуются). Хотя в эпоху интеграций, фронтенд-бекенд, сервис-сервис, очереди, это крайне важная конструкция.

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

  • Модель => DTO => json/protobuf/sql...

  • json/protobuf/sql... => DTO => Модель

Нафига? Почему не сразу преобразовывать из, допустим, json в нашу модель или наоборот? Тем более во всех экосистемах есть механизмы, которые позволяют упаковывать любые объекты, задавая правила преобразования через метаданные, аннотации или еще как-то. Пример из Java:

@Entity
public class User {
    @Id
    private Long id;
    @JsonIgnore              // приходится скрывать
    private String passwordHash;
    @JsonProperty("created_at")
    private LocalDateTime createdAt;

    // getters/setters ...
}

var json = new ObjectMapper().writeValueAsString(dto);

Существует масса причин, почему это плохая идея. Для начала, это банальное нарушение MVC архитектуры. Модель начинает знать как о представлении, о том какие поля надо выдавать наружу, какие нет, как их переименовывать и так далее. Если это кажется натянутым, то вот вам реальные последствия.

Одна и та же сущность для внешнего мира редко представляется одним способом. В зависимости от задачи, это может быть один набор полей или другой. Как это разрулить? Дальше, здесь плохо контролируется процесс, легко может быть такое, что новое поле автоматически попало наружу, хотя вы этого не планировали, но забыли его исключить. А если нужны вычисляемые поля или другое представление (всегда в датах)? В такой ситуации модель будет наполняться доп свойствами и методами, которые готовят доп данные для преобразования, что ведет к сильному загрязнению кода. Что из этого относится к бизнес-части, а что к представлению? Проблема.

DTO позволяют отделить представление от модели в коде, создавая по сути промежуточный слой. Имея его, вы можете независимо развивать свою модель и API для взаимодействия с ним. И да, это один из аспектов MVC, конкретно Model-View.

Готовые DTO гораздо легче чем модели конвертировать в типы на TS если у вас есть такая потребность. Например мы наши DTO (используем Alba), превращаем в типы TS с помощью готового инструмента (Typelizer). С моделями так легко не получится.

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

Но это только базовая история. Если мы еще подключаем инструменты генерации из sql (как в go) или openapi как везде, то те самые DTO создаются вообще автоматически на основе описаний.

INSERT INTO links (original_url, short_name)
VALUES (sqlc.arg(original_url), sqlc.arg(short_name))
RETURNING *;

DTO:

type CreateLinkParams struct {
	OriginalUrl string `json:"original_url"`
	ShortName   string `json:"short_name"`
}

Причем для update будет создана своя структура:

type UpdateLinkParams struct {
	OriginalUrl string `json:"original_url"`
	ShortName   string `json:"short_name"`
	ID          int64  `json:"id"`
}

Здесь отличается только id, но в реальных кейсах, отличий в создании или обновлении одной сущности обычно значительно больше, поэтому количество DTO тут становится еще больше.

DTO, кстати, должны быть имутабельны, иначе туда потечет логика

Больше про разработку в моем телеграм-канале Организованное программирование

Теги:
+6
Комментарии1

Как анализировать C и C++ код без привязки к сборочной системе на Windows

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

Иногда бывает так, что появляется целый "зоопарк" самописных скриптов сборки, а его последний "смотритель" уволился ещё в прошлом году (играет Гражданская Оборона — "Зоопарк").

Хотелось бы всё равно как-то анализировать такой код без необходимости разбираться в хрупкой и непонятной системе сборки. Что же делать?

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

В новой статье посмотрим, как воспользоваться этим механизмом для ОС Windows в анализаторе PVS-Studio, и  как сделать его использование в процессе разработки удобным.

Теги:
+4
Комментарии0

Статья "Код блокчейн-проектов Neo и NBitcoin VS анализатор кода. Кто-кого?"

PVS-Studio ворвался в мир блокчейн-разработки, и первыми "под удар" попали open source проекты на C# — Neo и NBitcoin!

В статье мы рассмотрели самые интересные ошибки: как явные, так и потенциальные, которые нашли в этом проекте. Если вам интересно, какие ошибки могут находить такие инструменты, как PVS-Studio, или вы желаете прокачать свой собственный "ментальный анализатор", приглашаю к прочтению :)

Теги:
+6
Комментарии0

Обновили 3 популярных курса Практикума PRO направления, которое объединяет программы для профи.

Мы регулярно обновляем программы курсов: следим за трендами рынка, собираем обратную связь студентов и добавляем актуальные инструменты. В этот раз серьёзно доработали три направления. Возможно, вы присматривались к этим курсам раньше — посмотрите, что изменилось.

Курс «Визуализация данных и введение в BI-инструменты»

Что нового:

  • Расширили стек инструментов. К DataLens, Datawrapper и Tableau добавили Superset и Power BI — теперь вы освоите пять ключевых платформ вместо трёх.

  • Добавили SQL-шпаргалки для подготовки данных к работе в BI-системах.

  • Переработали материалы на основе фидбэка: обновили уроки, дополнили примеры, перезаписали скринкасты и скриншоты. А ещё добавили дополнительные практические задания.

Что это даст:

  • гибкость при выборе инструментов под конкретные задачи;

  • ускорение и упрощение рабочих процессов;

  • больше практики на реальных кейсах.

Курс «Инженер машинного обучения»

Что нового:

  • Дополнительно проверили и исправили блокирующие места во всех модулях.

  • Обновили модуль 5: «Создание uplift-модели».

  • В модулях 1-4 актуализировали все инструменты и технологии.

  • Обновили бесплатную вводную часть и добавили в неё мини-проект — если ещё не проходили, самое время потестировать!

Что это даст:

  • ещё более качественный студенческий опыт;

  • первый практический результат — даже до покупки курса;

  • востребованные навыки в скилсете.

Курс «Продвинутый Go-разработчик»

Что нового:

Запустили расширенный тариф «Продвинутый Go-разработчик + инфраструктура и продакшн». Внутри:

  • +3 дополнительных спринта.

  • Kubernetes & Docker: управление контейнерами, оркестрация, деплой.

  • Observability: мониторинг и трейсинг через OpenTelemetry, Grafana, Prometheus, Jaeger.

  • Брокеры сообщений: интеграция Apache Kafka и RabbitMQ.

  • Сквозной проект для отработки навыков: разработка и вывод в продакшн сервиса аватаров (GophProfile) с фокусом на инфраструктуру.

Что это даст:

  • закроет вопросы деплоя, мониторинга и интеграции брокеров сообщений;

  • фокус на практических навыках продакшн-разработки;

  • реальный опыт решения комплексной инфраструктурной задачи;

  • сокращение времени на выход в продакшн;

  • повышение надёжности систем: научитесь быстро выявлять и устранять проблемы;

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

Теги:
+1
Комментарии0

Элэлэмки, Сталин дал приказ.

Кого задолбали посты с тестированием LLM, дальше можете не читать, пардон. Пост про то как у бесплатных ллм, что попались под руку, я спросил - правильный ли код для такой задачи (сорри за кривую постановку вопроса и не менее кривой английский):

in C# for

int d;

I need to calculate number of same consecutive leading bits leadingCount. Does the next code do it correctly?

int d; 
uint uintD = unchecked((uint)d); 
int leadingCount = BitOperations.LeadingZeroCount(uintD) + BitOperations.LeadingZeroCount(~uintD);

Развернутый ответ, который начинается в стиле "Yes — that code does correctly compute the number of consecutive identical leading bits in a 32-bit int. " дали следующие ллм:

chatgpt
gemini-2.5-pro
copilot.microsoft.com
perplexity.ai
kimi.com
ernie.baidu.com

Развернутый ответ, который начинается в стиле "No, the code does not compute the number of same consecutive leading bits in d" дали следующие ллм:

grok.com/c
chat.deepseek.com
qwen.ai/c
chat.z.ai

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

Смысл вопроса - правильный ли код на C# для подсчета количество одинаковых бит в начале целого числа.

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

И снова открытые вакансии SSP SOFT: ищем тех, кто готов создавать айти-будущее 🔥

Почему стоит присоединиться к SSP SOFT?
✨ У нас нет «скучных» проектов — только вызовы, от которых сначала удивляешься, потом делаешь, и в итоге растешь.
✨ Поддержка с первого дня: выдадут наставника, и он поможет влиться в работу без стресса.
✨ Настоящий рост: наш Проектный офис — ускоритель профессионального развития.
✨ Работай, как удобно: из дома, из офисов в Москве (ЦАО) или Томске, или в гибридном/удаленном формате.
✨ Жизнь ≠ только работа: мы ценим баланс и даем тебе время на все — и на проекты, и на личные цели.

А еще у нас:
🎁 ДМС (включая стоматологию) для штатных сотрудников
🎁 обучение за счет компании
🎁 бонусы
🎁 общие ивенты — от онлайн-квизов до выездных сборов

📢 Прямо сейчас мы ищем:

1️⃣ С# Разработчика
2️⃣ DevOps-инженера
3️⃣ Automation QA Engineer (Java)
4️⃣ Data Engineer

👉 Чувствуешь, что это про тебя? Тогда не теряй время — присылай резюме в ЛС нашему HR Lead Алине. Не забудь добавить сопроводительное письмо с ключевой фразой «Нашел(ла) вас на Хабре„.“»

Подробности о вакансиях читай на ХХ.ру

Ждем резюме!

Теги:
+3
Комментарии0

Статический анализ OpenIDE

Коллеги из OpenIDE предложили нам проверить их продукт статическим анализатором и написать об этом статью.

Мы отобрали самые интересные ошибки и странные моменты, которые нашёл анализатор в исходном коде используемой ими IntelliJ Platform. Если вам интересно посмотреть на ошибки в Java коде и освежить в памяти некоторые теоретические аспекты этого языка, крайне рекомендуем статью к прочтению.

P.S. Отдельная благодарность OpenIDE. Они рассмотрели приведённые в статье ошибки и поправили их.

Теги:
+1
Комментарии0

Мой опыт в вайб-кодинге: AI-инструменты для создания приложений и первой игры-змейки! 🚀😂

Несколько месяцев назад я был на онлайн-мастерклассе по вайб-кодингу, где мы знакомились с разными AI-инструментами для создания приложений, игр и других задач через описательные промпты и автоматизированный кодинг. Это был крутой опыт, где мы не писали код вручную, а "вибили" идеи, и AI генерировал всё за нас.

В мастерклассе мы работали с такими инструментами:

  • Cursor: Сначала мы использовали его для базового редактирования кода с AI-подсказками. Мы создавали простые веб-страницы, описывая дизайн и функционал в чате, и Cursor генерировал HTML/CSS/JS, а потом помогал отлаживать баги. Этот инструмент больше всего используется в сочетании с моделями вроде Claude Sonnet для генерации и редактирования кода.

  • Harvi-pro и Harvi code: Этот инструмент мы применяли для интеграции GPT-моделей в кастомные приложения. Мы строили AI-ассистентов для обработки запросов, например, простого бота для рекомендаций, задавая промпты на русском, и Harvi-pro автоматизировал backend, а Harvi code помогал с генерацией и интеграцией кода в связке. Эти инструменты больше всего используются в сочетании с ChatGPT, VS Code и Cursor для создания GPT-ассистентов.

  • Lovable: Здесь фокус был на быстрой сборке мобильных приложений. Мы пробовали создавать чат-боты и простые утилиты, просто описывая UI и логику в естественном языке, и Lovable строил полноценный прототип с деплоем. Этот инструмент больше всего используется в сочетании с Cursor для прототипирования приложений и UI-дизайна.

  • Bolt: С Bolt мы экспериментировали с веб-разработкой в браузере. Мы создавали динамичные сайты, как лендинги или формы, просто загружая скриншоты или описывая "виб", и он генерировал код с мгновенным превью. Этот инструмент больше всего используется в сочетании с браузером и другими AI-инструментами вроде Cursor для быстрого создания прототипов веб-приложений.

  • KiloCode: В нём мы работали как в VS Code с AI-агентом. Мы автоматизировали задачи, такие как генерация скриптов для обработки данных, и KiloCode сам проверял код, запускал тесты и исправлял ошибки. Этот инструмент больше всего используется в сочетании с VS Code и JetBrains IDE для автономной разработки и автоматизации задач.

Мне больше всего понравилось создание игр — это был мой первый опыт в такой сфере (я впал в детство и создал всеми известную игру змейку, в которую добавил несколько персонажей с уровнями сложности с боссом Пэкмена и Марио 😂).

Теги:
-4
Комментарии5

А всё таки, когда моки зло, а когда нет?

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

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

Последний случай, описывает процесс мокирования. То есть мок, это когда мы проверяем то, как код что-то делает, а не что он делает. Иногда говорят, что мы тестируем методом white-box, потому что мы знаем как конкретно написан тест и завязываемся на это, а не на результат работы этого кода, как в black-box тестировании.

Когда мы проверяем как код работает, мы связываем тест с внутренней реализацией. Любое изменение внутри функции (например, вызов другого метода или смена порядка действий) может поломать тест, даже если внешнее поведение программы остаётся тем же. В итоге тест перестает быть защитой от ошибок и превращается в тормоз для рефакторинга. В подкасте про спринг я услышал классный термин: "бетонирование кода", вот это оно и есть.

Когда же моки все таки нужны? Допустим мы пишем систему с поддержкой хуков, например фреймворк для тестирования. В тестах такого фреймворка вполне допустимо проверить что хуки setup, teardown, beforeSetup, afterSetup и так далее, вызываются в нужном порядке и с нужными аргументами.

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

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

Например:

  • База данных, которая хранит данные в памяти.

  • Фейковые сервисы какого-нибудь облака, например AWS

  • Поддельный HTTP клиент, который возвращает заранее заготовленные ответы.  

  • Заглушка почтового сервиса, которая записывает письма в список, а не отправляет их.

Все эти решения делают тесты быстрыми, предсказуемыми и независимыми от инфраструктуры, при этом вы все еще проверяете поведение системы снаружи, не нарушая принцип black-box.

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

Итого

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

Больше про разработку в моем телеграм-канале Организованное программирование

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

.NET Digest #9

Рады вам представить девятый выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET!

В этот раз мы расскажем про новые preview и RC версии .NET 10 и новую Visual Studio 2026. А ещё мы собрали для вас несколько интересных статей:

  • про производительность в .NET от Стивена Тауба;

  • спонсорство на NuGet.org;

  • и статистику популярности языков от GitHub.

Команда PVS-Studio рада представить вам подборку самых интересных и полезных материалов! Подробнее читайте в нашей статье.

Теги:
+4
Комментарии0

«Там, где критична скорость, но не требуется оптимизация»: как и зачем МойОфис вышел в OpenSource

На Хабре опубликовано первое большое интервью нашего CTO Тамары Щепалкиной — и оно стоит прочтения, потому что это:

  1. «Не форк с косметикой, а оригинальная инженерия»

    Компилятор tsnative прошёл проверку на безопасность, получил документацию, Docker-образ и демо, чтобы любой разработчик мог сразу попробовать его в работе.

    «...tsnative — это не «форк с косметическими изменениями», а продукт, в основе которого лежит оригинальная инженерная работа. Именно поэтому мы и приняли решение вывести его в open source: у проекта есть собственная ценность и потенциал для развития, который может быть интересен и полезен гораздо шире, чем внутри одной компании…»

    2. Open source как часть стратегии.

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

    3. «Где критична скорость, но не требуется оптимизация».

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

    4. От ядра к экосистеме.

    Сначала — компилятор, но потенциально — UI-фреймворк и целая экосистема open source-проектов.

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

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

    В статье Тамара рассказывает, как и зачем МойОфис выходит на уровень open source-разработки, какие цели ставит и какие шаги уже сделаны.

    Если вас интересует развитие стратегия открытого кода и сотрудничество с сообществом — обязательно загляните.

    Читать интервью

Теги:
+12
Комментарии2

До коле? Как так вышло, что на хабре в 2025 году

  • не существует банов за чатгпт статьи и комментарии

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

Вот такая вот «замечательная» статья: https://habr.com/ru/articles/963748/. Создана чатгпт, комментарии полностью чатгпт, код описанный в статье чатгпт, организация на гитхабе и её название — чатгпт.
ВСЕ факты в статье — галлюцинация чатгпт

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

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

Условие

Есть окружность с центром O, а также N, множество вершин многоугольника, вписанного в фигуру. Каждая вершина может быть расположена на длине окружности случайным образом. Нужно определить вероятность, что при случайном наборе N центр O будет внутри этого образованного многоугольника.

Задача

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

Как подойдете к задаче? Напишите свое решение в комментариях и сверьтесь с алгоритмом в Академии Selectel.

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

Слышали великую новость? JavaScript без единого латинского символа - всё кирилицей! Подробности тут:

https://www.cnews.ru/news/top/2025-10-30_bolshe_nikakoj_latinitsy

Теперь вопрос: есть ли у кого-то комментарии, кроме матерных? 😎

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

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

Затем, в следующих постах, я постараюсь объяснить доходчиво, почему Вам, уважаемые CEO и кофаундеры, глупо ждать очередного прорыва, -- лучше нанимайте хороших специалистов, пока хайп не сдулся (завтра ноябрь, але!). Без них "волшебный черный ящик" не заработает вам ничего.. ;)

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

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

Но, когда привык и наигрался, то куда дальше? Где этот реальный буст в конце-то концов?

Будем искать! И вот что я пока нашел, однозначно полезного и перспективного:

  • Шаг второй: LLM CLI tool — это что‑то вроде, например, aichat, установленного локально для вашей консоли. Он приносит все возможности LLM прямо в командную строку, опираясь на мощь нативных Unix‑пайпов — вот где начинается настоящая магия. 😉

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

    $ aichat -e create bash script to launch docker container with qwen-code and current or specified folder mounted to workdir as volume

  • Шаг третий: Coding Agent — попробуйте, наконец, полноценного агента. Мне кажется очевидным, что агенты должны работать в изоляции, поэтому я настоятельно рекомендую подходить к снаряду сразу через контейнер. Мой текущий выбор — Qwen‑code в Docker, который я запускаю с любым локальным каталогом, смонтированным как volume, связанным с рабочей директорией.

Qwen‑code отлично работает в связке с открытой рядом IDE — позволяя плавно переключаться между ручным кодингом и LLM‑ассистированным процессом разработки.

2000 запросов в день бесплатно! ;)
2000 запросов в день бесплатно! ;)

Оба инструмента уже описаны на Хабре. Но, поскольку инструментов великое множество -- хотел бы обратить ваше внимание именно на эти. Спасибо.

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

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

Умеете хранить данные? Предлагаем проверить!

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

Почитайте, чтобы немного пощекотать нервы, а затем пройдите небольшой тест. Благодаря нему сможете оценить, насколько хорошо вы разбираетесь в надежном хранении. Всем, кто не испугается, подарим промокод на 1 000 бонусов в панели Selectel.

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

Влияет ли возраст на карьеру в IT

Обсудили контуровцы: Антон Нечуговских, ведущий инженер-программист в 24 года, и Никита Хубаев, начинающий инженер-программист в 36 лет.

Сеньор в 25 лет вызывает недоверие у коллег из-за своего возраста

Сеньор в 24: Открытые и адекватные люди скорее делают вывод о тебе по тому, как ты с ними взаимодействуешь, а не по тому, сколько тебе лет. Но с недоверием да, иногда сталкиваюсь. Я поэтому и перестал брить бороду 😁 и это не шутка.

Джун в 36: Я раньше работал в продажах, и примерно в 23 года уже был директором магазинов. Старшие коллеги воспринимали это нормально. Важно то, как ты себя позиционируешь в команде, насколько развиты у тебя харды и софты. Если с этим всё в порядке, то и команда это чувствует. 

Пользы для продукта или команды от 35-летнего джуна больше, чем от 25-летнего сеньора, из-за большего жизненного опыта у джуна

Джун в 36: Да, пользы чуточку больше, но это связано не с возрастом, а с тем, какой у тебя грейд. Если ты сеньор, то занимаешься внутри команды больше архитектурными задачами, и то время, которое мог бы потратить на разработку продукта, тратишь на наставничество, помощь в написании кода и код-ревью. А будучи джуном в 35 лет ты концентрируешься на том, чтобы писать код и в итоге приносить больший пользовательский опыт. 

Сеньор в 24: Хм, ну работа же не заканчивается написанием кода. 😉 Какое-то видение появляется, и из-за того, что есть сеньорский опыт и технический бэкграунд, ты это видение применяешь в нужном направлении. Уже многое умеешь, но при этом есть альтернативный вижн по сравнению с коллегами, которые намного старше тебя. Можешь на их языке с ними общаться и доносить до них что-то новое.

Джун в 36: Некоторые люди в командах не могут занимать должность мидла, хотя с технической стороны они уже глубокие сеньоры. Считаю, лучший грейд — это мидл+.

Джуну в 35 сложнее найти работу, чем джуну в 25

Сеньор в 24: Думаю, что да. Увы, эйджизм никуда не делся. 🤷‍♂️ Скорее всего, эйчар отметит в тебе целеустремлённость, но поставит под сомнения перспективы. 

Джун в 36: Я стал разработчиком после 30 лет, и самое сложное было впервые оказаться на собеседовании. Но отмечу то, что, вероятно, в этом возрасте у тебя будет всё хорошо с софтами, и это твоё преимущество. А для работодателя знак: если такой кандидат осмелился пойти в айти после тридцати, то, скорее всего, в нём есть настойчивость и ответственность, которая и в работе обязательно проявится.

Джуны сталкиваются с излишним контролем на работе, даже когда им 35

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

Джун в 36: Согласен, но смотря какие задачи ты даёшь джуну. Если задача от бизнеса, то нужно будет разделить с ним ответственность. В целом, не надо контролировать, как джун пишет код, при этом всё-таки проводить код-ревью, чтобы помогать ему писать код правильно, и следить за сроками.

Не стоит начинать карьеру в IT после 30, лучше искать что-то другое

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

Джун в 36: Поддерживаю! Если ты видишь в себе потенциал, тебе это интересно, обязательно попробуй. Но не требуй от себя много, например того, что добьёшься чего-то в короткий срок. Отнесись к этому, как к пути. Лучше уж после 30, чем после 40. Но даже если после 40 тебе это интересно — здорово! Я знаю людей, которые учились и в 60 лет, проходили стажировки. Да, не все из них трудоустроились, но это был вызов для них и новый опыт.

Сеньор в 24: Менять свой путь после 30 — сложно, я восхищаюсь теми, кто это делает. 👍

***

Выпуск подкаста с Антоном и Никитой доступен на YouTube, Rutube, VK, Яндекс Музыке.

Теги:
Всего голосов 10: ↑5 и ↓50
Комментарии6

За последние месяцы в Практикуме появилось несколько новых курсов и дополнений в текущих программах. Делимся подборкой, чтобы вы точно ничего не пропустили.

Новые курсы

«Нейросети для бизнеса» — 10 недель о том, как применять нейросети для оптимизации процессов, сокращения расходов и роста прибыли. Курс подойдёт руководителям, предпринимателям и специалистам, которые хотят внедрять ИИ-решения в свои проекты и команды.

«Rust для действующих разработчиков» — программа для тех, кто хочет перейти на Rust или сделать его основным стеком. Разберём многопоточность, асинхронность, API, WebAssembly, принципы владения и заимствования, async/await и FFI. После курса сможете создавать надёжные и безопасные продакшн-решения.

«Обработка естественного языка (NLP)» — двухмесячный курс для специалистов по Data Science, ML и DL. Научим применять NLP для работы с большими данными, интегрировать технологии в приложения и сервисы — от чат-ботов до инструментов анализа текстов.

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

Обновления в курсах

«Управление командой». Появился новый максимальный тариф. Помимо всех материалов расширенного формата, в него добавлен модуль по критическому мышлению и курс «Нейросети для работы». Формат для тех, кто хочет развиваться на стыке управленческих и технологических компетенций.

«Технический директор — CTO». Теперь с двумя новыми тарифами — расширенным и максимальным. Курс помогает структурировать опыт, освоить новые инструменты, научиться строить антихрупкие команды, проводить технический аудит и выстраивать IT-стратегию. А ещё — завести полезные знакомства с действующими СТО из крупных компаний.

«Системный администратор». В расширенном тарифе добавлены три дополнительных месяца обучения — это шесть новых тем по Windows и шесть практических проектов для портфолио. Курс охватывает востребованный стек технологий и реальные задачи системных администраторов.

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

Экс-инженер Nvidia Чип Хьюен (Chip Huyen, исследовательница ИИ, которая раньше работала над платформой NeMo в Nvidia и преподавала машинное обучение в Стэнфорде) считает, что неважно, что именно вы создаёте, главное — пройти путь от идеи до готового решения, которым сможет воспользоваться кто-то другой.

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

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

Хотите выяснить, где учиться IT? В экосистеме Хабра есть маркетплейс курсов на Хабр Карьере, на котором собраны сотни онлайн-обучений в самых разных специализациях: программировании, аналитике, дизайне, менеджменте и других. Чтобы пользователи могли проверить качество курсов, там показаны отзывы от тех, кто уже прошел обучение — изучайте и выбирайте лучшее для себя.

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

17 открытых репозитариев, чтобы выучить Python с нуля:

  • 30-Days-Of-Python — пошаговый курс на 30 дней: синтаксис, типы, функции, ООП, файлы, модули, мини-проекты и задания с решениями;

  • Python Basics — вся база и примеры по основам для новичков;

  • Learn Python — конспект тем с наглядными примерами и ссылками; удобно как быстрый справочник и повторение;

  • Python Guide — лучшие практики: окружение, управление пакетами, стиль, тестирование, деплой, инструменты;

  • Learn Python 3 — понятные ноутбуки и упражнения по Python 3. Лучший репо для самостоятельной практики;

  • Python Programming Exercises — 100+ задачек по базовым темам с решениями; Coding Problems — алгоритмические задачи, разбитые по темам и сложности. Идеально для подготовки к собеседованиям;

  • Project-Based-Learning — большая подборка учебных проектов с пометками по уровню сложности;

  • Projects — идеи проектов по категориям (CLI, веб, игры и другое) для портфолио и прокачки;

  • 100-Days-Of-ML-Code — краткий дневник-план по машинному обучению: темы на каждый день, базовые алгоритмы и ссылки для реализации на Python.

  • TheAlgorithms/Python — огромный справочник алгоритмов/структур данных с реализациями и тестами;

  • Amazing-Python-Scripts — набор готовых скриптов: автоматизация, парсинг, утилиты, GUI; каждый с инструкцией по запуску.

  • Geekcomputers/Python — склад идей с практичными скриптами;

  • Real Python Materials — исходники и материалы к статьям/курсам Real Python;

  • Awesome Python — топ-подборка библиотек и фреймворков, разбитая по категориям;

  • 30-Seconds-of-Python — короткие функциональные фрагменты кода с пояснениями;

  • Python Reference — шпаргалки, лайфхаки и туториалы.

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

Фея работы у айтишников

У каждого бывали ситуации когда одно неловкое движение обеспечивало нам n или N часов работы по исправлению ситуации.

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

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

Как запустить демопроект на Django, не утонуть в рутине и не потерять данные?

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

Но мы знаем, что делать 🦸 Приглашаем вас на вебинар — ждем всех, кто хочет быстрее развертывать свои приложения.

О чем поговорим:

  • как организовать хранение файлов в Evolution Object Storage;

  • как подключить хранилище к приложению напрямую, без использования S3-клиентов;

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

Ну и куда без практики: в конце встречи в life-time расскажем, как запустить демо на Django в Evolution Container Apps.

📅 Когда? 28 октября в 11:00 мск.

📍Где? Встретимся онлайн — заходите на страницу вебинара и регистрируйтесь.

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

Новое видео с нашей Конференции Luxms, теперь с технологической сессии. Илья Гурешидзе @IlyaGureshidze начальник отдела разработки Luxms BI рассказал о магии вне Хогвартса внутри движка.

Одна из сильных сторон Luxms BI – гибкость клиентской части. Связка JSON + React дает предсказуемое поведение, быструю сборку и легкую доработку интерфейсов – без необходимости лезть в «ядро» или переписывать все с нуля.

Для удобства разработчиков в системе есть специальный проект – bi-magic-resources (BMR). Это проект на React, где можно разрабатывать интерфейсы, хранить наработки в GIT, вести совместную разработку, кастомизировать сборку и запуск, подключать свои библиотеки и переиспользовать уже готовые компоненты заказчика. С ним удобно разрабатывать, тестировать и пробовать новый функционал, не мешая основной ветке разработки.

Подробнее на:

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

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

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

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