Как стать автором
Обновить
1103.66

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

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

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

VMmanager, управление инфраструктурой через VMmanager API и Ansible

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

Привет, Хабр! Статья будет посвящена любимому мной IaC. Чтобы ввести в курс дела, кратко расскажу про VMmanager и текущую реализацию продукта. Затронем варианты, как можно работать с VMmanager с подходом Infrastructure as Code, а основная часть — про развертывание платформы VMmanager и управление виртуальными машинами в ней с помощью Ansible.

Читать далее

Новости

Рекомендации Oracle по выбору между ArrayList и LinkedList

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

В Java существует две реализации интерфейса List: ArrayList и LinkedList. Какая из них лучше? Как выбрать подходящую для вашего приложения? В данной статье мы сравним их различия, производительность и потребление памяти, чтобы помочь вам определиться с выбором.

Читать далее

Слишком много открытых файлов

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

Недавно я работал над достаточно большим проектом на Rust. К моему удивлению, мне никак не удавалось заставить тесты работать правильно.

Команда cargo test запускала выполнение всех тестов в репозитории, но спустя пару миллисекунд все тесты завершались сбоями из-за не очень знакомой мне ошибки:

Io(Os { code: 24, kind: Other, message: "Too many open files" })

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

Читать далее

Классические языки программирования и IDE на пороге гибели, а новый рынок на миллиарды долларов пока свободен

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

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

Читать далее

Лаконичный макрос defer для C++17

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

Ручное управление ресурсами в низкоуровневом си-подобном коде на C++ — довольно хлопотное занятие. Создание достойных RAII-врапперов для каждого используемого сишного API не всегда практично, а использование подходов с goto cleanup или множеством вложенных if (success) вредит читаемости кода.

Макрос defer как никогда кстати! Отложенная лямбда будет выполнена при выходе из области видимости, независимо от того, будет ли выполнен return, брошено исключение, или даже выполнен goto наружу. Данный макрос по-настоящему zero-cost и не зависит от рантайма C или стандартной библиотеки, поэтому его можно использовать даже в разработке под ядро ОС.

Читать далее

Заметки о портировании UNIX Classic с помощью Cosmopolitan

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

Недавно я опубликовал версию 3.0 Status Line, проекта, который позволяет играть в Zork на Pico-8, на трёх основных операционных системах. После успешного развёртывания (есть ли эмодзи «тьфу‑тьфу‑тьфу»?) я занялся портированием исходного кода оригинальной UNIX z‑machine от Infocom с помощью Cosmopolitan. Примерно за шесть часов свободного воскресенья я портировал его на шесть основных ОС, включая Windows.

Вот история о том, как и почему я решил заняться этим проектом, и чему я научился в процессе.

Читать далее

Создание контрола Avalonia/WPF для двухцветных векторных Bootstrap Icons

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

В мире разработки приложений, будь то веб или десктоп, использование айконок является неотъемлемой частью пользовательского интерфейса. Векторные айконки предпочтительнее растровых, так как они масштабируются без потери качества. Одной из популярных коллекций векторных айконок является Bootstrap Icons, содержащая более 2000 готовых айконок. Хотя коллекция Bootstrap Icons доступна как npm-пакет bootstrap-icons и ориентирована на веб-разработку, её можно эффективно использовать в десктопных приложениях.

Создадим с нуля контрол BootstrapIcon для удобного использования двухцветных векторных айконок в приложениях на Avalonia/WPF. Сами изображения, в основном берем из SVG-файлов библиотеки bootstrap-icons, отсюда и название нашего контрола.

Туториал ориентирован на разработчиков, знакомых с Avalonia на базовом уровне. Основной упор в реализации контрола делается на Avalonia. Вариант для WPF, надеюсь, будет полезен для тех, кто переходит с WPF на Avalonia.

🔗 Полученные контролы BootstrapIcon для Avalonia и WPF с примерами использования размещены на GitHub.

👉 Продолжение следует...
Планируется публикация ещё пары туториалов, в которых будет пошаговое руководство для создания главного меню приложения и аналога ToolBar с использованием BootstrapIcon.

Читать далее

AI в помощь системному аналитику: от скепсиса к практике

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

Друзья, привет! Меня зовут Ларионов Александр. Я работаю системным аналитиком. Совместно с Лабораторией инноваций Московской биржи мы изучали вопрос применения AI в системном анализе.

Когда я впервые столкнулся с задачей внедрения AI-ассистентов в процессы работы системного аналитика, то отреагировал скептически. Поводов было немало: большинство материалов на эту тему представляли собой восторженные отзывы вроде «AI автоматизирует рутину» или «machine learning улучшает принятие решений». Однако, при ближайшем рассмотрении, эти фразы распадались на абстрактные утверждения. Попытки уточнить у авторов конкретные кейсы или сценарии применения их инструментов для системного анализа сводились к общим фразам: «Обучите модель на ваших данных — и она всё поймёт».

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

Как же убедиться, что AI полезен для нашей профессии, когда в поиске реальных кейсов находишь информационный вакуум? Я решил переосмыслить подход и начать экспериментировать самостоятельно. За основу я взял самые распространённые задачи, с которыми сталкиваются системные аналитики, в том числе и мы в Лаборатории инноваций Московской биржи.

Читать далее

Детальный обзор полей Галуа

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

"Попросите Якоби или Гаусса публично высказать своё мнение — не о истинности, а о важности этих теорем. Позже, я надеюсь, найдутся люди, которым будет выгодно разобраться во всём этом хаосе."

Этими словами заканчивалось письмо Эвариста Галуа, написанное для своего друга Огюста Шевалье за два дня до его смерти от полученных на дуэли ран на 21 году жизни. Ни Якоби, ни Гаусс в его теоремах не разобрались, зато спустя 15 лет разобрался Жозеф Лиувилль и опубликовал работы Галуа, ставшие впоследствии фундаментом современной алгебры, известные сейчас как теория Галуа. В статье расскажу про одну из частей этой теории - поля Галуа, получившая настолько повсеместное применение в криптографии и избыточном кодировании, что Intel и AMD выпустили набор процессорных расширений для эффективной реализации операций над этими полями.

Заметка! Если вам довелось использовать/реализовывать поля Галуа, то большая часть статьи для вас скорее всего будет не интересна, но возможно в последних разделах будет что-то для вас новое.

Читать далее

Что будет, если заинлайнить всё

Время на прочтение25 мин
Количество просмотров8.3K

Усаживайтесь поудобнее, ребята! Сегодня мы с вами разберём следующий увлекательный вопрос: что будет, если заинлайнить вообще всё?

Если вы пока не знакомы с техникой встраивания (inlining) то примите к сведению, что в сообществе специалистов по разработке компиляторов многие, в том числе очень авторитетные фигуры (например, Чендлер Каррут) считают этот приём наиважнейшим при оптимизации компиляторов. Подробнее о том, как устроено встраивание, рассказано здесь — мы беззастенчиво хвалимся той презентацией, с которой выступили перед участниками конференции LLVM Developers' Meeting по межпроцедурной оптимизации. Я рассказывал о встраивании и очень рекомендую вам посмотреть хотя бы первые 6 минут. В этом видео я рассказываю, почему встраивание — очень простое преобразование, а вот тут вашему вниманию предлагается реализация встраивания, предложенная великим Крисом Латтнером уже около 20 лет назад — в ней всего около 200 строк кода. К сожалению, сегодня даже само преобразование пропорционально выросло: в качестве примера взгляните хотя бы на InlineFunction.cpp.

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

Читать далее

Netbeans 26 C++ (clang/clangd) + build system

Время на прочтение2 мин
Количество просмотров2.4K

Всем привет. Стал нужен IDE минимальный, и я вспомнил, что есть Нетбинс. Скачал мне он очень понравился - удобный, но чего-то не хватает.

Как сделать рабочим Нетбинс 26(с++, clangd), когда какой-то модуль, который раньше в плагинах работал теперь не работает. Давайте рассмотрим этот нюанс.

Читать далее

От идеи до платформы: полгода разработки собственного AI радио

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

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

Читать далее

Коротко объясняем, что такое поток, буфер, дуплекс и канал

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

Поток — это последовательность элементов данных, предоставляемых за некоторое время. Концепция потока (stream) позволяет обрабатывать или передавать данные поэлементно, а не как одно целое. Потоки особенно полезны в сценариях, когда приходится работать с большими множествами данных, непрерывными данными или данными реального времени.

Читать далее

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

Не пузырьком единым. Поговорим об алгоритмах сортировки

Время на прочтение10 мин
Количество просмотров2.7K

Если спросить любого, хоть немного знакомого с ИТ человека, какие алгоритмы сортировки он знает, то самым популярным ответом будет, конечно, сортировка методом пузырька. Однако в реальности это, конечно, не единственный способ сортировки. В этой статье мы поговорим о том, какие алгоритмы сортировки бывают и как их можно реализовать на Python.

Читать далее

WAF (гав-гав): гибкая настройка пользовательских правил PT AF PRO

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

Разберёмся, как грамотно (хотелось бы так) настраивать пользовательские правила в Positive Technologies Application Firewall, чтобы при виде атаки ваша защита не превратилась в уязвимую "истеричку". Расскажем про ключевые директивы, покажем примеры из реальной практики и обоснуем каждый шаг.

Читать далее

Краткая история JavaScript

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



В этом году JavaScript исполняется 30 лет.


За три десятилетия он прошел путь от забавного и непритязательного скриптового языка, созданного за 10 дней, до самого популярного языка программирования в мире. Ниже — ключевые моменты истории JavaScript, которые помогут понять, как он менялся и куда идет.

Читать дальше →

Шардирование баз данных: проблемы, альтернативы, практические рекомендации

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

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

Читать далее

От конфигурации к динамике. Новый API по созданию бинов в Spring

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

В Spring Framework 7 появился новый API — BeanRegistry, который упрощает и расширяет возможности по динамической регистрации бинов. Это особенно актуально, когда невозможно заранее предсказать, сколько компонентов потребуется, как в случае со Spring Data. В новой статье от эксперта сообщества Spring АйОМихаила Поливахи, вы узнаете:

– Как Spring Data справлялась с динамической регистрацией раньше;

– Какие подходы регистрации существовали до BeanRegistrar, как они работали;

– Как новый API связан со Spring AOT.

Читать далее

Плоские контейнеры в C++23

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

Новый стандарт C++, C++23, впервые с C++11 расширил всем привычную линейку контейнеров: помимо знакомых array, vector, (unordered_)set, (unordered_)map и прочим в нее теперь входят непонятные flat_set, flat_map, flat_multiset и flat_multimap. Ответим на вопросы, что это за контейнеры, когда они могут быть полезны, сравним дизайн стандартизированных «плоских» контейнеров с дизайном плоских контейнеров из Boost и ETL и, конечно, произведём замеры и сравним производительность flat_ и не flat_ контейнеров.

Читать далее

Absolute Zero Reasoner: ИИ научился программированию без входных данных — и это может поменять всё

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

Возможно я был недостаточно внимателен, но мне попалось на Хабре буквально одно, очень краткое упоминание крайне интересного исследования от команды из Университета Цинхуа и партнерских институтов нескольких стран: Absolute Zero Reasoner (AZR) — новую систему машинного обучения, которая развивает принципы self-play и способна обучаться без каких-либо внешних данных. В отличие от традиционных подходов, требующих тысячи размеченных примеров, AZR использует принцип самообучения через создание и решение собственных задач программирования. Система играет две роли одновременно: составителя задач (Proposer) и решателя (Solver), используя исполнитель кода как объективного судью для получения обратной связи. AZR продемонстрировал state-of-the-art результаты в программировании и математических рассуждениях, превзошедший модели, обученные на десятках тысяч человеческих примеров, при этом показав впечатляющий кросс-доменный перенос знаний между различными областями знаний.

Читать далее