Обновить
150.54

Ненормальное программирование *

Извращения с кодом

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

Код-гольф в Яндексе: как нерды развлекаются

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

Что такое код-гольф? Это соревнование, в котором надо решить задачу по программированию (как правило, несложную), используя наименьшее количество символов. Соревнование довольно известное. Можно поиграть, например, на одноимённом сайте, есть целая секция на CodinGame, иногда такие соревнования публикует kaggle, была такая секция на HackerRank (сейчас её я не нашёл).

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

Временами мы развлекаемся таким форматом. В какой-то момент на внутренних ивентах подняли свою платформу для соревнований, а потом она протекла и на внешние конференции.

Эта статья — смесь разбора задач и истории появления соревнования по код-гольфу на конференциях Яндекса.

Про нас и кодгольф

Новости

Ликбез о плавающей точке: сложение, катастрофическое сокращение и бабушка Кэхена

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

Давайте продолжим обсуждение самой неоптимизированной в мире 32-битной библиотеки для работы с плавающей запятой TinyFloat. Библиотека написана на C++ и намеренно избегает встроенных типов плавающей запятой, полагаясь исключительно на 32-битные целые числа. Цель состоит в том, чтобы сделать код максимально читабельным — без бит-хаков и хитроумных уловок.

Библиотека пишется в рамках борьбы с неграмотностью населения, поэтому, я хочу иметь подробную документацию о том, что происходит «под капотом». Оказалось, что лучший способ документировать код C++ — это полностью переписать его на Python :-)

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

Читать далее

Всегда короткий Python-код

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

Не так давно довелось спонтанно поучаствовать в активности от T‑банка. Кроме всяких «интересных» заданий, там были задачки и на кодинг. Критерием победы в задачах «Стековки» были не O(n), не микросекунды, а краткость кода, твёрдо измеренная в символах, что тоже по своему интересно. «Как написать решение используя минимальное число символов?».

С одной стороны это были задания на компактный алгоритм, с другой стороны — на знания возможностей языка. Я к такому родам задачам не готовился, но по ходу дела мне показалось, что приёмы, которые можно придуматьприменить при таких метриках, вполне стоило бы обобщить, структурировать, и применять уже с меньшими когнитивными нагрузками. Заинтересовало? Добро пожаловать за странными конструкциями и хацкер-бонусом.

Разжать статью

Простой и быстрый инструмент для сбора графиков из Grafana

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

Привет, друг. Я тут решил поделиться с тобой простым инструментом, который не требует особых навыков и больших затрат времени для развёртывания или даже использования. По большому счёту при его использовании и чаще всего всё делается один раз и забывается. Что за инструмент? На кой он нужен и чем лучше других?

Давай обо всём по порядку.

Самые необычные серверы Minecraft: от умной лампочки до микроконтроллера. Как это работает?

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

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

Читать далее

Программист & LLM: как написать эмулятор ретро-компьютера за четыре вечера. Часть 1, вводная

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

Тон данной публикации задал товарищ @kiltum в своих статьях, начатых с этой. В самом начале был задан вопрос

может ли ИИ заменить программиста?

А действительно? Сколько вокруг этой темы хайпа, нет ни дня чтобы здесь на ресурсе не появилось 100 500 статей на тему нейросетей, LLM, ML и прочего. Пишут много и всякое. Возникло желание проверить лично, насколько решения, предлагаемые ИИ могут быть воплощены в жизнь.

Системы ИИ прочно вошли в нашу жизнь, и да, я тоже ими регулярно пользуюсь. Но мысли программировать с их помощью особо не возникало. Но что если попробовать, поставив при этом задачу из предметной области в которой ты не особо разбираешься? Похожий вопрос ставит и @kiltum, но я хочу попросить автора не ругаться на мою невольную попытку «пообезьянничать». Своей публикацией я лишь хочу подкрепить уже высказанные тезисы, на примере личного опыта. К тому же, старое железо — это всегда интересно, не правда ли? Если так, то добро пожаловать под кат.

Читать далее

Repository Pattern в управлении базами данных: пример интеграции NocoDB в Django

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

Классический сценарий: есть база данных и приложение на бэкенде. Для подключения достаточно знать адрес, порт, имя пользователя, пароль — и прямой доступ перед вами. Но что делать, если необходимо подключить no-code базу данных, которой можно управлять только через REST API? Есть ли способ интегрировать такие подключения в логику «красиво», не поломав архитектуру?

Привет, Хабр! Меня зовут Влад, в свободное время я занимаюсь разработкой. В этой статье расскажу, как мне удалось относительно нативно интегрировать работу с платформой NocoDB на бэкенде, какие можно использовать паттерны и зачем мне понадобилось разработать собственный Python-модуль. Подробности под катом!

Читать далее

GPT как основа low‑code‑платформ: разработка без программистов

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

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

Меня зовут Никита, я ML-разработчик в «Инфосистемы Джет». В этой статье хочу поделиться практическим опытом: как GPT + low-code помогает запускать прототипы и автоматизировать процессы без долгих циклов классической разработки.

Если вам нужно быстро проверить гипотезу, запустить внутренний инструмент или собрать простой прототип, длинные спринты и ожидание, пока IT‑отдел возьмет задачу, могут убить всю инициативу. Современные низкокодовые (low‑code) платформы в связке с генеративными моделями GPT позволяют собрать рабочий MVP буквально за выходные. Достаточно описать задачу обычным языком — и платформа генерирует бизнес-логику, сценарии интеграции и рабочие процессы.

Ниже разберёмся, как это устроено, на что действительно способен подход GPT + low-code и какие ограничения важно учитывать на старте. Статья пригодится техническим продукт‑менеджерам, аналитикам и разработчикам.

Читать далее

Парсим XML и JSON на ассемблере

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

Отобрал для вас несколько крайне интересных, но малоизвестных проектов, реализующих работу с XML и JSON. Кроссплатформенных и без зависимостей. На чистом С и ассемблере.

Читать далее

Эмуляция «тетриса» Apollo из 90-х и запуск кода на оригинальном железе

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

В этой статье я расскажу о микроконтроллерах Sunplus с ядром 6502 которые использовались в популярных в 90-е «тетрисах» Apollo, а также об их эмуляции. Отдельно опишу способ запуска своего кода на этих играх и в частности проигрыватель «Bad Apple!!», крупнопиксельный кадр из которого показан на КПДВ.

Читать далее

Делаем мыши Asus ROG полезными

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

Итак, вы потратили много денег на красивую, удобную игровую мышь. Мышь действительно хорошо сидит в руке, приятно светится, имеет целых 6 дополнительных кнопок, гибко настраивается... Стоп, гибко? Вы хотели забиндить на одну из них, скажем, F13? Разработчики ASUS против такого! Но мы не сдаёмся просто так!

Погружайтесь под кат, нам предстоит узнать все ужасы софта для игровых девайсов, познакомиться с HID сканкодами, узнать сколько на самом деле у клавиатуры клавиш и написать драйвер на python.

Читать далее

Давайте писать на Rust для DOS

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

В этой статье я покажу как получить работающую под DOS программу, написанную на Rust.

Начинаем с установки Rust. Даже если он есть системный из пакетов, его недостаточно, так как мы будем (вынужденно) использовать nightly версию. Итак, идём на https://rustup.rs/, копируем предлагаемую строку и запускаем её в терминале. Чтобы команда заработала возможно потребуется доустановить curl. Имеет смысл выбрать в качестве ветки по-умолчанию nightly. Если вы выбрали не nightly, то нужно будет доустановить nightly тулчейн:

Читать далее

С go на C++ за две недели. Переписываю эмулятор ZX Spectrum

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

В общем-то и целом, мой предыдущий эмулятор ZX Spectrum, написанный на go, работал. Показывал нужное (или очень близко к нужному) и давал чувство приближенности к программистам. Однако у него были очень фундаментальные проблемы, связанные исключительно с языком разработки. Ну по крайней мере я сейчас так думаю.

Другим движущим фактором все-таки была бесплатность БЯМок от cloud.ru (не реклама, да и бесплатности больше нет). Ну где еще можно на халяву пожечь сотни миллионов токенов и получить хоть что-то работающее?

В общем, я принял волевое решение переписать все на С++. Под катом дневник "переписчика", в котором я последовательно описываю все боли и страдания начинающего писателя эмуляторов. Желающим сразу посмотреть на конечный результат можно сходить на https://github.com/kiltum/zxcpp

Читать далее

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

Хакаем самую дешёвую консоль с Ozon

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

Помните статью про самую дешёвую консоль с Ozon — Sup GameBox? Тогда я рассказал вам о том, что у этого чуда инженерной мысли находится «под капотом» и почему эта консоль не так проста, как кажется на первый взгляд.

После статьи я решил написать письмо производителю процессора этой консоли. И что самое интересно — мне ответили! Даже Спустя 40 лет после релиза оригинальной NES, тайваньская компания V.R.T продолжает развивать архитектуру оригинальной NES. Мне больше ничего не оставалось, кроме как включить фен, достать программатор и хакнуть этот девайс...

Читать далее

Как «жыбий рыр» кейс делал

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

В этой статье я расскажу вам, как наша команда — «жыбий рыр» участвовала в хакатоне от DDOS‑GUARD

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

Читать далее

С появлением ИИ работа опытного программиста стала намного сложнее

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

Взгляд на интеграцию ИИ в программирование от опытного программиста (миллион строк кода я, наверное, написал за всю жизнь). Текст писал я сам, это не мусор от GPT, ИИ здесь только исправил ошибки.
Если дать этот текст ИИ на фактчек, то он может как полностью подтвердить мою статью кучей проверенных фактов, так и полностью опровергнуть, и тоже с кучей фактов, т.е. по сути будет заниматься черри-пикингом - всё зависит от формулировки вопроса. И где же тогда правда? Правда, я думаю, у тех, кто в этой среде годами работает и получает много опыта как разработки с ИИ, так и без него. Т.е. имеет хоть какие-то экспертные знания. В этой статье мнение одного из таких людей. Мнения одного человека, конечно, мало, нужно обобщать опыт сотен людей из разных сфер программирования. Я вношу в это обобщение свой небольшой вклад.

Читать далее

Еще один самодельный компьютер. Coolsystem — Часть 1

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

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

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

Читать далее

Команда «жыбий рыр»: Войти в IT через хакатоны

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

Всем привет! Меня зовут Михаил — я студент и backend‑разработчик из Ростова‑на‑Дону. С 2021 года я хожу на хакатоны и уже принял участие в 16-ти, многие из которых были выиграны нашей командой. Этой статьей я хочу на собственном примере показать почему хакатоны — это классно и зачем в них участвовать начинающим специалистам.

Читать далее

Эксперимент: генерация веб-форм для 1С по текстовому описанию

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

Привет, хабр! В прошлой статье мы говорили о применении языков разметки для описания графических артефактов, идее языка разметки для аналитиков и приложении для генерации макетов UI и BPMN схем.

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

Читать далее

Хакатоны: не пора ли их переизобрести?

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

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

Но эта статья — о том, как хакатоны можно изменить и переосмыслить. Нужно, конечно, оставить всё веселье. Также, нужно добавить свободы участникам: когда хакатоны проводят компании, они обычно делают это со своими конкретными целями. И третье — нужно сделать их более длительными. Я предлагаю делать хакатоны длительностью где‑то в спринт (2 недели), но так, чтобы время активной работы было по‑прежнему около нескольких суток. Другими словами, нужен хакатон, доступный работающему и, возможно, семейному человеку. Возможно ли это? Нужно ваше мнение.

Читать далее
1
23 ...

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