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

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

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

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

Хватит страдать: Выбросьте ООП и ECS. Есть путь проще

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

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

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

Читать далее

Новости

Создаем свой пакет на PHP

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

Хочу поделиться с вами своим опытом, с которым столкнулся, и предоставить шаблон, который написал для пакетов/проектов:
https://github.com/deniskorbakov/skeleton-php-docker

Буду очень рад звёздочке на GitHub и обратной связи после прочтения статьи!

Читать далее

Как мы создали приложение для тестирования клетки Фарадея и превратили его в инструмент продаж

Время на прочтение5 мин
Количество просмотров859

Хочу поделиться историей создания нишевого мобильного приложения для тестирования клетки Фарадея, которое (внезапно) стало популярным в западном сегменте App Store и Google Play, а также переросло в канал международных продаж для наших продуктов. 

Читать далее

Конфигурация Spring Security на пальцах

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

В новом переводе от команды Spring АйО мы рассмотрим решение для регистрации и аутентификации пользователя через клиентское JavaScript-приложение с использованием инфраструктуры Spring Security, а также access и refresh токенов.

Существует множество базовых примеров работы со Spring Security, поэтому цель данной статьи — более подробно описать возможный процесс с помощью блок-схем.

Читать далее

ChatGPT 5 вышел! Что нового, бенчмарки и как получить доступ из России

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

В четверг, 7 августа, в 20:00 по мск состоялось долгожданное событие в мире ИИ — OpenAI представила ChatGPT 5. В этой статье я собрал всю важную информацию из прошедшей демонстрации — это поможет понять, что же нового случилось в GPT 5 и чего ожидать от этой нейросети.

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

Читать далее

Меньше багов — больше FPS: как статический анализ помогает проектам на Unreal Engine

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

Всё больше проектов появляется на Unreal Engine — от великого "Ведьмака" до не менее великой "The Day Before". И чем больше проект, тем выше цена одной незамеченной ошибки. Когда число строк кода переваливает за несколько тысяч, даже самый внимательный разработчик может не заметить неочевидный баг. И тут на помощь приходит он — PVS Studio, который помогает снизить риск попадания багов в ваши UE-проекты.

Читать далее

Сетевой чат в Unity: Часть 3 — Звуки и продвинутые функции

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

Третья часть из серии статей на тему создания сетевого чата в Unity с использованием Netcode for GameObjects. Добавляем звуковые уведомления, приватные сообщения и продвинутые функции.

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

Читать далее

GIMP Script-Fu ООП. Небольшой рефакторинг объектной системы. Изюминка всего проекта

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

Библиотека функций к Script-fu

В принципе реализация представленная в файле obj4.scm и описанная ранее, меня вполне устраивала. Я реализовал там всё что хотел от объектной системы: определения классов и обобщённых функций, множественное наследование, статические поля класса. Но вот какое-то маленькое зёрнышко сомнения, мешало мене оставить этот проект. А всё ли я сделал для ускорения работы системы? И дело даже не в том, что какие то нехорошие люди из проекта GIMPа обрезали возможность для Script-fu загружать расширения, что не даёт возможности быстро рассчитать хеш-код символов(а то и вовсе заменить хеш-таблицы сишной реализацией). Нет. Для себя я спокойно перекомпилирую Script-fu и буду пользоваться всеми преимуществами предоставляемыми настоящей tinyscheme. Но что же можно сделать ещё, чтобы улучшить скорость работы ОО системы? А может и не только скорость.

Читать далее

APL: математика на стероидах, о которой никто не говорит

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

В 1957 году, когда компьютеры программировались на машинных кодах и ассемблере, канадский учёный Кеннет Айверсон задумался: как сделать описание алгоритмов столь же строгим, как математические формулы, но при этом ещё и сделать интерактивном исполняемым? Да-да, интерактивный язык в 60-х, задолго до пайтона, перла и тикля.

Так родился APL — сначала как академический инструмент для описания алгоритмов в книгах (например, в его работе "A Programming Language" 1962 г.), постепенно эволюционировавший в исполняемый язык.

Но причём здесь 2025-й год спросите вы?

Data Science: APL опередил NumPy/Pandas на 40 лет — матричные операции здесь вшиты в ядро.

Обучение: Лучший способ понять SVD или преобразование Фурье — записать их в APL.

Прототипирование: Проверить идею можно быстрее, чем ChatGPT сгенерирует ответ.

Почему об этом мало говорят? 

Читать далее

Автоматизируем печать документов с помощью Python

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

Меня зовут, Дмитрий, просто Дима.

Каждый день, я готовлю однообразные документы, в которых нужно печатать страницы - одинаково (однообразно):
1 (ую) и 2 (ую) страницы, двойной печатью по длинному краю;
3 (ью) и 4 (ую) по короткому краю (эти листы горизонтальные);
5 (ую) страницу отдельно (только 1 лист).

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

Спойлер - мне удалось. Но пришлось поискать информацию. А информации на русском не очень много, поэтому искал преимущественно в английских источниках. Что и вдохновило на написание это статьи.

Узнать правду о печати с помощью Python!!!

Построение REST API на Go с использованием Gorilla Mux и MongoDB

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

Введение

В данной статье будет рассмотрена практическая интеграция MongoDB с веб-приложением на Go, построенным на базе маршрутизатора Gorilla Mux. Цель — получить минимальный, но функциональный REST API с поддержкой CRUD-операций над сущностью Book, при этом соблюдая лучшие практики структурирования кода.

Материал рассчитан на разработчиков, знакомых с Go, HTTP API и основами работы с базами данных.

Выбор стека

Go — компилируемый язык с лаконичным синтаксисом, встроенной поддержкой параллелизма и богатой стандартной библиотекой для работы с сетью. Эти качества делают его удобным выбором для разработки API-сервисов.

Читать далее

Когда if-else не нужен: знакомство с тернарным оператором и switch в JS

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

Привет! Я — Александр Дудукало, автор базового курса по JavaScript. Если вы читаете эту статью, значит, вероятно, уже знакомы с одной из основных логических конструкций в JavaScript — if-else. Если нет, рекомендую сначала прочитать предыдущий материал, где я подробно разобрал эту тему.

В этой же статье мы поговорим о других способах управления логикой в коде — тернарном операторе и конструкции switch. Да, звучит сложно и, возможно, пугающе. Но я уверяю, все очень просто. В итоге вы узнаете, когда их стоит использовать и чем они могут быть полезнее привычного if-else. Поехали?

Поехали!

RUG — малоизвестный, но фундаментальный принцип Clean Code

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

Многие разработчики при обсуждении основ Clean Code называют одни и те же принципы — чаще всего упоминаются DRY, KISS и YAGNI. Эти концепции прочно закрепились в профессиональном сообществе и воспринимаются как обязательная часть хорошего кода.

Принцип RUG упоминается значительно реже. Чаще всего о нём узнают с опытом, а многие применяют его интуитивно, даже не подозревая, что для этого подхода существует отдельное название и формулировка.

Сегодня я хочу поговорить о принципе RUG и о том, какие рекомендации он даёт по написанию программного обеспечения.

RUG (Repeat Until Good) — это принцип, который говорит: можно повторять один и тот же код, пока это разумно.

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

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

Я буду использовать TypeScript, так как этот язык знаком большинству разработчиков. 😁

Читать далее

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

Java Digest # 27

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

Всем привет! 👋👋👋👋👋 Мы Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

Лето в разгаре, а Java-мир не останавливается ни на день. Пока кто-то разъезжается в отпуска, инженеры Oracle и энтузиасты экосистемы выкатывают один апдейт за другим. В этом выпуске вас ждут: JEPs для JDK 25 и 26 — от стабильного JFR до удаления Applet API, милестоны Project Reactor и Spring Framework 7, обновления от Micronaut, Apache Camel и GraalVM, день рождения Kotlin и революционные новости от JetBrain, пачка интересных видео с Java One’25 и Inside Java, обзоры книг, туториалов и просто полезные статьи на каждый день. А еще 30 августа нас ждет встреча на JVM Day в Москве!

Заваривайте кофе и читайте — от инженерных мелочей до изменений, которые могут повлиять на архитектуру ваших приложений. Поехали! 🚀

Читать выпуск №27

Kafka умеет синхронно. В Spring Boot

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

Apache Kafka — король асинхронного взаимодействия в микросервисных архитектурах. Но что если нужно получить ответ сразу?

Перевод от команды Spring АйО шаг за шагом покажет, как превратить Kafka в инструмент синхронной коммуникации — с настройкой ReplyingKafkaTemplate, топиками для ответа и тайм-аутами.

Читать далее

Реестры программ для ЭВМ: зачем регистрировать ПО в Роспатенте и Минцифры

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

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

Читать далее

GIMP Script-Fu ООП. Dot синтаксис и другой синтаксический сахар

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

Библиотека функций к Script-fu

После написания объектной системы для Script‑fu я задумался над примерами, на которых хорошо бы было проверить эту систему. Я прошерстил уйму литературы, но хороших примеров использующих все возможности ООП в литературе встречается крайне мало. Ну что толку реализовывать класс List в Лиспе? А класс Stack? Примерами подобных классов пестрят книжки по Си++. Всё было не интересно, но вот я встретил книжку «Теория вычислений для программистов» Тома Стюарта, и вот примеры из неё, написанные на Ruby, показались мне интересными. Да в Ruby нет множественного наследования, но есть возможность создавать миксины, что несколько сглаживает этот недостаток. И вот делая примеры из этой, безусловно замечательной(с точки зрения теории вычислений), книжки я заметил, что мой код получается более длинный чем код Ruby. И это происходит не только из за наличия операторов в Руби. Сами определения классов и методов в Руби получаются компактнее, и требуют меньше кода. Сможем ли мы что нибудь сделать, чтобы «догнать» Руби в «краткости» кода?!

Читать далее

Базовый Dart (Часть №1)

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

Итак, йоу, юзеры!

Я Hilrein, 18-летний разработчик мобильных и веб-приложений. В этой статье я расскажу вам про базовый Dart - язык программирования, лежащий в основе Flutter. Он отлично подходит как для новичков, так и для тех, кто хочет перейти в кроссплатформенную мобильную разработку.

Эта статья рассчитана на начинающих и охватывает всё, что нужно знать до перехода к объектно-ориентированному программированию (ООП).

Читать далее

Строка из чисел

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

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

Читать далее

Действительно ли ИИ умеет программировать?

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

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

Последние достижения, казалось бы, приблизили нас к этому будущему, но новая работа исследователей из MIT Computer Science and Artificial Intelligence Laboratory (CSAIL) и нескольких партнерских институтов утверждает, что эта потенциальная реальность требует трезвого взгляда на современные вызовы.

Читать далее

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