Все потоки
Поиск
Написать публикацию
Обновить
1019.47

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

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

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

Кубистая планета — делаем шарообразный мир в стиле Minecraft

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

Вооружившись игровым движком Unity, я написал техническое демо, в котором пытаюсь наложить кубические воксели Minecraft на шарообразное тело (планету). Планета генерируется процедурно, и её можно полностью разрушить. Игроки могут расставлять или убирать разные блоки, которых насчитывается более 20 типов.

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

Читать далее

Как мы в Java-проекте UDT для PostgreSQL поддерживали

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

PostgreSQL позволяет создавать хранимые функции и процедуры. И если при их вызове с простыми данными проблем не возникает, то сложные иерархические структуры могут вызвать трудности.

В статье мы разберёмся, как передавать и получать вложенные объекты в процедурах и функциях PostgreSQL с помощью JDBC.

Читать далее

Бесконечные циклы. Всё, что может пойти не так — пойдёт не так

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

Конструкции типа while(true) или for(;;) довольно опасные. Когда люди их пишут, то всегда надеются на то, что сработает условие выхода из цикла. Однако, на самом деле, как бы мы ни были уверены, такие конструкции лучше избегать.

В любом программном продукте есть баги, и те инварианты, на которые идёт расчёт, могут просто не сработать. Решение? Читайте в переводе от команды Spring АйО, где автор указывает примеры того, как с этими конструкциями поступили в Jooq и как с ними работает один из департаментов University of California.

Читать далее

Что с Python? Меньше производительности, никакого сахара и больше багов

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

Python продолжает меняться, но не всегда так, как ждёт сообщество. Новый синтаксический сахар отклоняют, прирост производительности оказывается скромнее обещанного, а очередные депрекации в setuptools ломают проекты. При этом экосистема получает долгожданный стандартный lock-файл и поддержку uv в Dependabot. В статье разбираем, что это значит на практике и почему начинающим Python-разработчикам важно следить за этими изменениями.

Читать далее

Чудесная история Генри Шугара

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

Это фильм. «Чудесная история Генри Шугара». В 2023 года. Я сделал красочные цвета. Вот что получилось. Ну что? Что вы думаете? «Кислотные телепузики»? :-)

Фильм получил премию «Оскар» в 2024 года. Вот полной ffmpeg:

Читать далее

Как превратить SQL в API на Go?

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

Команда Go for Devs подготовила перевод статьи о том, как превратить SQL в полноценный API прямо в Go. Автор показывает, как можно безопасно принимать WHERE-условия в виде SQL-подзапросов, валидировать их и использовать для запросов к базе. Просто, элегантно и почти без лишнего кода.

Читать далее

Как мы Best Practices в Java анализатор внедряли

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

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

Читать далее

How I Learned to Stop Worrying and Love the… BDSM

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

Это публикация‑опрос. Поэтому и такой заголовок :-) Отсылку поймут не только лишь все, но главная цель — привлечь внимание народа к опросу.

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

Буду благодарен всем, кто поучаствует в голосовании.

Читать далее

Пентест: когда компании просят «хакеров» их взломать

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

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

Поехали...

PCW — новая метрика продуктивности разработчиков с ИИ

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

Команда AI for Devs подготовила перевод статьи о метрике Percentage of Code Written (PCW) от Windsurf. Эта метрика показывает, какой процент кода в проекте реально пришёл от ИИ. Авторы утверждают: PCW надёжнее привычных показателей вроде acceptance rate и отражает, насколько продукт действительно помогает разработчикам. А как вы думаете — можно ли измерить ценность ИИ в цифрах?

Читать далее

Не доверяй и проверяй, или как я валидировал ссылку в JavaScript

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

Всем привет! На связи Сергей, ведущий фронтенд-разработчик в команде привлечения Центрального университета. Расскажу историю, как валидировал ссылку и попал впросак. Я использовал браузерный URL API для своих целей и думал, что знаю, как он работает. И прежде чем кидать в меня помидоры, как в разработчика, который не читает документацию, дайте шанс рассказать свою историю.

Читать далее

«Архитектура бэкенда», или как я написал мою первую техническую книгу

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

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

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

Читать далее

Недооценённые фичи SQL: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные индексы

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

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

В этой статье, основанной на личных экспериментах и наблюдениях, мы рассмотрим три таких инструмента: PIVOT/UNPIVOT, CROSS APPLY/LATERAL и частичные (filtered) индексы.

Читать далее

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

Python и множества: генераторы, которые делают код чище

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

Команда Python for Devs подготовила перевод статьи о генераторах множеств в Python. С их помощью можно создавать, преобразовывать и фильтровать множества одной строкой кода. Разбираем примеры, практические приёмы и ошибки, которых стоит избегать.

Читать далее

Создание Системы генерации ответов на истории тикетов поддержки (часть 1)

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

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

Меня зовут Анатолий, занимаюсь диалоговыми системами, автоматизацией бизнес-процессов, применением Искусственного Интеллекта в бизнесе.

Кейсовая задача - создать ассистента оператора службы поддержки, используя существующую историю тикетов.

Читать далее

Кратко о вариантности с примерами на TypeScript

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

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

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

Читать далее

AsmX G3 v29: Эволюция компилятора — от стабильности к упаковке Linux приложений. упаковка для Debian-based систем, AUR

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

AsmX G3 v29-rev1.0 меняет игру: компилятор, который не только генерирует код, но и пакует его в .deb для Debian/Ubuntu и живёт в AUR с asmx-g3-git, asmx-stable, asmx-official. Проект даёт разработчикам контроль над низкоуровневым кодом и упрощает дистрибуцию приложений. Мощный TAPI и стабильность — всё, чтобы ваш код стал приложением быстрее, чем вы скажете yay -S или paru -S!

Читать полностью

EVMPack — Управление жизненным циклом блокчейн-проектов

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

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

В мире блокчейна, разработка под экосистему ethereum очень сильно развита, много смарт контрактов "готовых", которые прошли аудит, много разных инструментов таких как SlitherFoundryHardhat и т.д., с ними комфортно писать контракты и тестировать.

Что делать со всем этим дальше? Нет инструментов которые бы меня устроили, или я не нашел, все идет на откуп команды разработчиков, то как они построят процесс обновления смарт контрактов, аудит, безопасность и т.д.

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

Давайте вспомним что должна делать операционная система для классической ЭВМ:

Читать далее

LSP API теперь доступен всем пользователям IntelliJ IDEA и разработчикам плагинов

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

Команда Spring АйО перевела статью от JetBrains, в которой рассказано про избавление одного из главных барьеров на пути к массовому внедрению Language Server Protocol (LSP) в своей экосистеме.

С версии IntelliJ IDEA Ultimate 2025.2 пользователи смогут использовать LSP даже после окончания подписки, а с 2025.3 — LSP станет доступным во всех редакциях IDE благодаря переходу на единый дистрибутив.

Читать далее

Искусство проектирования URL: Роутинг, Query и Hash параметры

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

Плохой URL путает пользователей, хороший — работает как швейцарский нож. Разбираем анатомию, правила построения иерархичных путей, мощь Query-параметров и истинное назначение Hash. Практика на JavaScript и чеклист готовых решений.

Читать далее

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