Обновить
1145.32

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

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

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

VK (видео)

📦 API for Any(thing) 2

☝️Возможно ли создать интерфейс для получения любого объекта одинаковым способом? 

Библиотека работает на продакшене в приложениях:
Энергия
NFC Tool
КубГТУ

Во второй части доклада практическая реализация 💡

Хабр
Medium
GitHub

El-Machine.com Apps 🤖

Теория:
Часть 1

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

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

В октябре на конференции Joker мы представили EAP версию Explyt Test, плагина для IntelliJ IDEA Community, который умеет генерировать тесты на базе AI и формальных методов. Мы получили много интересных и, временами, неожиданных комментариев от участников о том, что они ждут от автоматической генерации тестов и способен ли им в этом помочь AI.

Общение с живыми людьми и обратная связь повлияли на то, какая функциональность в итоге была добавлена в первый публичный релиз Explyt Test 2.0:

  • поддержана совместимость с IntelliJ IDEA 2024.3 и K2 для IntelliJ IDEA 2024.2+

  • добавлен AI ассистент Explyt Chat, который умеет объяснять код, находить в нем ошибки, поддерживает вложения и отвечает на любые вопросы пользователя

  • добавлена возможность применять Explyt фиксы не только для сгенерированного Explyt кода, но и для чужого кода

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

  • добавлен анализ эффективности Ollama моделей: модели низкого качества помечаются как нерекомендуемые (not recommended)

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

  • поддержана совместимость с Android Studio Koala и Android Studio Ladybug (часть функциональности)

Генерация тестов:

  1. Генерация Gherkin сценариев и тестов по исходному коду

  2. Генерация дополнительных тестов с учётом существующего покрытия

  3. Исправление тестов: обеспечиваем их компилируемость и корректное выполнение

  4. Управление генерацией: выбор примеров и задание дополнительных инструкций для языковой модели, редактирование сгенерированных сценариев и создание собственных 

  5. Подготовка проекта к генерации тестов: поиск используемых тестовых фреймворков, установка дополнительных зависимостей при необходимости

AI ассистент Explyt Chat:

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

  2. Объяснение работы кода и нюансов его использования. Action: Explain Code

  3. Анализ кода на предмет потенциальных ошибок в реализации. Action: Analyze for Bugs

Пользователи могут обращаться к языковым моделям как через серверы Explyt, так и с использованием собственных API-ключей. Поддерживаются модели от различных провайдеров (OpenAI, DeepSeek и др.), а также возможно использование локальных моделей Ollama.

Скачать плагин можно на сайте, для багрепортов и фичреквестов – GitHub Issues, для новостей и общения – телеграм.

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

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

Подключайтесь к вебинару «Как быстро разместить сайт в облаке и не потратить лишнего».

📅 Когда: 5 декабря в 11:00 мск

📍 Где: онлайн

Узнайте все нюансы облачной платформы Cloud.ru Evolution: в прямом эфире подробно расскажем про сетевые и вспомогательные сервисы, поддержание безопасности и работу с виртуальными машинами. В формате демо покажем, как развернуть сайт на WordPress в облаке.

Cloud.ru Evolution — публичное облако, построенное на собственных разработках и свободно распространяемых компонентах, которое отлично подойдет для тестирования и разработки на виртуальных машинах, создания cloud native приложений и безопасной публикации в интернете.

Программа встречи:

  • обзор основных облачных сервисов Cloud.ru Evolution;

  • обзор облачных сервисов, которые скоро появятся на платформе;

  • как выглядит базовая архитектура для миграции сайта или интернет-магазина в облако;

  • как перенести сайт и стабильно работать в любой период;

  • ответы на вопросы участников.

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

👉 Зарегистрироваться

Если у вас есть вопросы по теме, оставляйте их в комментариях под этим постом. Архитектор решений Илья Смирнов ответит на них в прямом эфире.

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

Доклад Особенности фреймворка $mol (+ слайды) с PiterJS #72.

О фичах $mol, которых нет в других фреймворках, и о том, зачем они нужны.

Автор - Станислав Яременко. Герой Hyper Dev, Синьор $mol-разработчик.

Писал на Vue, Svelte. Пробовал и другие фреймворки. Как-то раз я загуглил "лучший ui фреймворк", и на первом месте в выдаче оказался $mol. Конечно, я не поверил и начал разбираться...

Теги:
Всего голосов 12: ↑5 и ↓70
Комментарии14

Изучаем дифракцию Фраунгофера с помощью Wolfram Language и WLJS Notebook

Дифракционная картинка света и тени, получаема на большом расстоянии от силуэта объекта, находящегося перед источником света, — математически пропорциональна двумерному преобразованию Фурье

Из основ оптики: дифракция — это явление, которое возникает, когда свет (или другая волна) проходит через препятствие или отверстие и отклоняется от "очевидного" прямолинейного пути. Дифракция Фраунгофера относится к особому случаю, когда наблюдение осуществляется на большом расстоянии от объекта (или с использованием линз).

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

Ниже приведен код, который можно вставить в блокнот и попробовать порисовать самому. Это ни что иное, как лишь двумерное фурье-преобразование силуэта в реальном времени

amplidute2D[data_] := Module[{d, fw, nRow, nCol},
  {nRow, nCol} = Dimensions[data];
  d = data;
  d = d (-1)^Table[i + j, {i, nRow}, {j, nCol}];
  fw = Fourier[d, FourierParameters -> {1, 1}];

  (* Используем логарифмическую шкалу для удобства *)
  
  Log[1 + Abs@fw]
]

(* сам виджет *)

LeakyModule[{
  buffer = ImageData[ConstantImage[0, {300,300}], "Real32"],
  shape = InputRaster[ImageSize->{300,300}, "AllowUpdateWhileDrawing"->True]
},

  EventHandler[shape, Function[new, 
    With[{array = ImageData[RemoveAlphaChannel[new, White] // Binarize // ColorNegate, "Real32"]},
      With[{amp = amplidute2D[array]},
        buffer = amp / Max[amp];
      ];
    ]
  ]];
  
  {
    shape,
    Image[buffer // Offload, "Real32"]
  } // Row
]

Ссылки

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

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

Ответы на эти и другие вопросы дадут наши эксперты во время бесплатного вебинара «Карьерный маршрут: от мидла до архитектора ПО»

Вы узнаете:

— как стать архитектором ПО;

— чего ждут работодатели;

— какие скилы будут полезны, даже если вы ещё не работали с архитектурой ПО;

— как себя чувствуют такие специалисты на рынке труда.

Спикеры ↓

Дмитрий Бардин
Ведущий разработчик в Кинопоиске

Артём Попов
Корпоративный архитектор, «Газпромбанк»

Иван Харкевич
Корпоративный архитектор, «Райффайзен Банк»

Ждём вас 29 ноября в 18:00 мск.

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

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

Раз в год-два мне приходится вспоминать, что Python — не C++.

В этот раз я наткнулся на случай, когда отформатировать и склеить колонки результата запроса на стороне PostgreSQL и распарсить Python-ом оказалось эффективнее, чем запрашивать колонки как отдельные значения.

Конкретнее, при переходе от этого запроса:

SELECT * FROM o_relations ORDER BY id DESC LIMIT %(limit)s

к этому:

SELECT CONCAT(entry_id::text, '|', tag_id::text) AS ids FROM o_relations ORDER BY id DESC LIMIT %(limit)s

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

Причиной тому тяжёлая конвертация данных из формата С в формат Python внутри Psycopg.

За подробностями можно сходить ко мне в блог: https://tiendil.org/ru/posts/fun-case-of-speeding-up-data-retrieval-with-psycopg

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

Итоги облачного IT-турнира от Cloud.ru и Хабр🏆

18 ноября завершился наш облачный IT-турнир — интеллектуальное IT-соревнование для профи по направлениям DevOps, Go и кибербезопасность. 

Напомним, что участники соревнования должны были решить все задания за 50 минут и набрать как можно больше баллов. Турнирная таблица обновлялась в режиме реального времени — мы с интересом следили за тем, как IT-специалисты устанавливают новые рекорды. 

Свои навыки решили проверить 892 участника, а 537 из них стойко дошли до самого конца и выполнили все задания 🦾. В итоге в лидеры вырвались:

В лиге DevOps:

🥇1 место  — @evgeniy_fyodorov, 1437 очков. 

🥈2 место — @Kciod, 1290 очков. 

🥉3 место — @dimadragon, 1219 очков.

В лиге Go:

🥇1 место  — @smetanin, 2843 очков. 

🥈2 место — @melpnz, 2778 очков.

🥉3 место — @itas, 2745 очков.

В лиге кибербезопасности:

🥇1 место  — @T_Frost, 1868 очков. 

🥈2 место — @KiraCoder, 1814 очков.

🥉3 место — @georgybelyakov, 1787 очков.

Поздравляем! Они получат ачивку победителя и карьерную консультация от Марины Ломадзе — руководителя рекрутмента в Cloud․ru. Мы уже начали связываться с победителями, чтобы рассказать, как получить заслуженные призы😊.

А у всех хабраюзеров, которые верно решили более половины заданий турнира, появятся ачивки IT-Лиги в профиле на Хабре.

Хотите узнать правильные ответы на задания IT-турнира? Ставьте плюс в комментариях, а также указывайте номер или название задания. Если наберется много желающих, позже мы сделаем небольшой обзор с решениями.

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

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

Программист. Учился в универе, работал три года. Хорошо программирует на PHP. Прилежно выучил все стандартные фреймворки, знает best practices, понимает как правильно деплоить проекты и докером, и композером. Знает как чистить репы, исправно ведёт коммиты, и пушит всё хорошо и вовремя. Получает зарплату, чуть выше средней, и рад жизни.

Давайте подойдём к этому программисту и скажем “РНР мёртв, мальчик! Тебе надо учить Раст!” И теперь, программист, который последние шесть лет учился программировать начинает думать “Хмм, возможно я не умею программировать”. О, нет, мальчик. Программировать-то ты как раз и умеешь. Ты в состоянии выполнять задания, следить за архитектурой и кодом, делать правильные коммиты и работать в команде. На каком языке ты это делаешь - я плевал с высокой колокольни.

Если бы мне платили по пять центов за каждый раз, когда я слышал о том, что PHP - мертв. Я слушал это в 2004 году, я слушаю это в 2024. Что не мешает некоторым людям деплоить Вордпрессы. (При том, что я не в восторге от PHP, но я отдаю себе отчёт в том, что в 2021 году 80% всех сайтов в интернете написаны на РНР)

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

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

Ежемесячный дайджест: главные новости за октябрь☂️

🦾 Провели хардкорную IT-конференцию про внутрянку облачных решений и русского AI — GoCloud Tech. Как это было и что говорили участники читайте в статье и смотрите доклады в записи.

🌾 Развернули IT-инфраструктуру в полях… в нашем новом ролике! Как широки просторы для ваших идей в Сloud.ru смотрите на YouTube, на RuTube или в VK.

🔥 Предлагаем Evolution Managed Kubernetes по специальной цене — подключите сервис до 30 ноября 2024 года и используйте со скидкой 60% до конца 2025 года.

⚙️ Увеличили бесплатный объем хранилища Evolution Object Storage — его хватит, чтобы загрузить медиафайлы, бэкапы или архивы. А про опыт тех, кто уже запустил проект в облаке с помощью бесплатных ресурсов Evolution free tier, читайте в статье.

📺 Приглашаем на вебинары:

🔎 Поделились обновлениями наших облачных платформ в дайджесте на сайте. Анонсировали сервисы Evolution Bare Metal, Evolution Artifact Registry, Evolution Managed PostgreSQL и не только — заглядывайте.

🎓 На вебинаре рассказали про новые бесплатные курсы по основам облачных технологий и сертификацию. Обсудили, зачем изучать облачные сервисы, как устроено обучение на курсах Cloud.ru, что дает электронный бейдж и как может помочь в построении карьеры. 

До встречи в декабре!

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

Это не IDE, а neIDE - простое графическое приложение для быстрого запуска небольших программ на C++. Может пригодиться когда появилась идея или что-то прочитал и хочется быстро протестировать, но нет времени на запуск тяжеловесных IDE типа Visual Studio или открывать в браузере 1001-ю вкладку чтобы протестировать в godbolt.org. Нужно лишь назначить комбинацию клавиш на запуск или создать ярлык в доке. Можно конечно по-быстрому запустить vim, набрать код и ручками напечатать "g++ main.cpp && ./a.out", но мне надоело так постоянно делать, поэтому написал программу, которая все это делает сама. Ближайший аналог - geany - мощный блокнот, где можно прописать свои команды, но она мне показалась слишком перегруженной функционалом.

В общем, представляю neIDE, где есть только кнопка "Run", поле для ввода кода и поле вывода результатов/ошибок. При запуске загружает код-заготовку. Работает только с тем кодом, что в окне ввода. Нет возможности подгружать внешние файлы. Написана на wxWidgets. Компилирует код под с++17, но можно легко скорректировать под нужный стандарт. Заточена на Linux, но при некотором упорстве можно скомпилировать на Windows. Минимум строк кода, можно форкнуть и быстро доработать под свои хотелки.

neIDE
neIDE

Ссылки на репозиторий github и gitflic.

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

Всё чаще слышно про подключение ИИ к процессу код-ревью. Звучит круто, но есть нюансы.

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

Кроме того, AI смотрит только на код в текущем PR, не понимая ни архитектуры проекта, ни бизнес-требований. В итоге выдает технически правильные, но часто бесполезные рекомендации. Особенно это заметно в крупных проектах, где каждое изменение влияет на кучу связанных компонентов. Где есть "исторически сложившееся"

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

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

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

Приглашаю всех подписаться на мой канал https://t.me/crossjoin

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

Для тех, кто рассматривает TypeScript как инструмент (язык) для борьбы с ошибками: склонность к ошибкам и время их исправления в TypeScript оказались не значительно ниже, чем в JavaScript. Среднее отношение коммитов с исправлениями ошибок в проектах на TypeScript было более чем на 60% выше (0.126 против 0.206), и в среднем проектам на TypeScript требовалось более чем на один день больше для исправления ошибок (31,86 против 33,04 дней).

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

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

Более высокий уровень опыта в парном программировании не способствовал получению высокого балла в викторине по программированию на Java. Уверенность в своих силах была единственным значимым фактором, влияющим на итоговые результаты обучения, тогда как опыт парного программирования и взаимодействие уверенности с опытом парного программирования не имели значительного влияния на конечные результаты обучения.

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

Типизация на основе вывода типов — популярная функция в Kotlin, и её использование не зависит от характеристик проекта, таких как размер, популярность или количество разработчиков. Например, в тестовом коде вывод типов чаще применяется в объявлениях полей и возвращаемых значениях функций, чем в других местах.

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

Генеративный ИИ может предсказывать действительные проблемы с удобством использования в исходном коде, которые легко просмотреть и исправить до выпуска приложения, избегая неудовлетворенности пользователей и ухудшения их опыта. Однако важные проблемы, выявленные экспертами по удобству использования, были упущены UX-LLM.

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

Полезные ресурсы для начинающего TypeScript-разработчика

Начнём с базы: Что такое TypeScript и чем он отличается от JavaScript

Бесплатные курсы

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

TypeScript Tutorial — учебник для освоения языка с практическими заданиями.

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

Фулстек-разработчик — курс с бесплатной частью, в которой можно изучить основы HTML, CSS и JavaScript.

YouTube

Элементы TypeScript — двухчасовая лекция для продвинутых от разработчика Владимира Минина.

Frontend Channel — записи с конференций по разным направлениям и инструментам для создания веб-проектов.

Yandex for Frontend — лекции от экспертов Яндекса. Есть видео про инструменты программиста и IT-карьеру.

Плейлист по TypeScript — уроки из курса ItGid на канале «WebDev с нуля».

13 уроков TypeScript — основы и возможности TypeScript, курс видеолекций на канале WebDev.

Книги

«TypeScript быстро» — синтаксис, инструменты и связь с JavaScript. Теория с примерами: в книге разбирают реальные задачи разработчиков.

«Эффективный TypeScript: 62 способа улучшить код» — для разработчиков, которые знают JavaScript. Научит использовать TypeScript для повышения качества и уровня безопасности кода.

«Профессиональный TypeScript» — поможет в разработке масштабируемых JavaScript-приложений. Лучше совмещать чтение с практическими заданиями или курсами.

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

Бесплатный бот Спич для расшифровки голосовых и кружочков

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

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

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

Ссылка на бот: https://t.me/speech_me_bot
Подробнее о боте в старой статье > https://habr.com/ru/articles/779 644/

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

Только добра.

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

YouTube (видео)

📦 API for Any(thing) 

☝️Возможно ли создать интерфейс для получения любого объекта одинаковым способом? 

Продолжаю развивать свою идею архитектуры для 100% инкасуляции, разбития на модули и тестирования всего слоя Model

Хабр
Medium
GitHub

Первая часть доклада теоретическая. В поисках API для любого (Any) объекта

Во второй части доклада практическая реализация 💡

Поделитесь мыслями:
Что думаете про декларативны подход? Описываю результат и получаю нужный объект

Часть 2

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

Подключайтесь к вебинару «Как мигрировать IT-инфраструктуру в облако с минимальными рисками: опыт Cloud.ru и ALP ITSM».

📅 Когда: 21 ноября в 11:00 мск

📍 Где: онлайн

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

На вебинаре эксперты из Cloud.ru и ALP ITSM поделятся практическим опытом переноса IT-инфраструктуры в облако и расскажут, как избежать ошибок и минимизировать риски миграции.

Вы узнаете:

  • в чем преимущества перехода в облако для бизнеса;

  • как не ошибиться при выборе облака;

  • как минимизировать риски и простои в ходе миграции;

  • какие современные инструменты и сервисы помогут упростить миграцию;

  • как избежать ошибок при переходе в облако.

В результате вы будете знать, из каких этапов состоит процесс миграции и как разработать оптимальную стратегию переноса IT-инфраструктуры в облако. А еще получите чек-лист для подготовки к миграции и выгодные предложения от Cloud.ru и ALP ITSM, чтобы провести перенос максимально эффективно 🔥.

Будет полезно IT-директорам и руководителям отделов инфраструктуры, CEO компаний, системным администраторам, а также всем, кто планирует миграцию из облака в облако.

👉 Зарегистрироваться

Если у вас есть вопросы, их можно задать на самом вебинаре или в комментариях под постом. Эксперты Алексей Ри — менеджер по работе с клиентами в Cloud.ru и Алексей Горюнов — руководитель проектного офиса в ALP ITS, ответят на них в прямом эфире.

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

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