Рубрика «ненормальное программирование» - 39

Привет habr.

Тема «магических квадратов» достаточно интересна, т.к. с одной стороны, они известны еще с древности, с другой стороны, вычисление «магического квадрата» даже сегодня представляет собой весьма непростую вычислительную задачу. Напомним, чтобы построить «магический квадрат» NxN, нужно вписать числа 1..N*N так, чтобы сумма его горизонталей, вертикалей и диагоналей была равна одному и тому же числу. Если просто перебрать число всех вариантов расстановки цифр для квадрата 4х4, то получим 16! = 20 922 789 888 000 вариантов.

Подумаем, как это можно сделать более эффективно.
Вычисляем «магические квадраты» с помощью GPU - 1
Читать полностью »

Всем привет. В этот раз продолжаем смеяться над нормальным вызовом методов. Предлагаю ознакомится с вызовом метода с параметрами без передачи параметров. Также попробуем преобразовать ссылочный тип в число — его адрес, без использования указателей и unsafe кода.

Пропихиваем параметры в небезопасные операции в безопасном коде - 1

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

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

Автор — Сальваторе Санфилиппо aka antirez, один из основных разработчиков БД Redis, сотрудник Redis Labs. Статья опубликована 12 сентября 2018 года

Последние несколько дней оказались весьма напряжёнными. Одним из аргументов в споре о замене или не замене слов, используемых в коде репликации Redis, было следующее: стоит ли делать работу, которая не даёт никакого технологического результата? [Речь о замене терминов «хозяин/раб» при репликации — прим. пер.]

В процессе чистки исходников Redis от определённого слова, где это возможно, я подумал, что мне нравится писать код даже без измеримых технологических эффектов. Замена слов — слишком рутинная работа, она просто раздражает, даже если по ходу встречаются достойные технологические проблемы. Но есть другой вид кода с особым качеством, которое я бы назвал “hack value”. Он может не решать никакой проблемы, но всё равно это достойная задача. Здесь несколько причин. Иногда процесс написания кода полезен сам по себе. Иногда для решения не самой важной проблемы используются технически продвинутые идеи. А иногда код пишется просто из эстетических соображений.
Читать полностью »

Поздравляю всех с днем программиста! Желаю больше ярких "коммитов", принятых "пулл-реквестов", меньше незапланированных "мержей" и чтобы ваши ветви жизни оставались актуальными как можно дольше. В качестве идейного подарка предлагаю реализацию генеалогического древа средствами системы контроля версий Git. Ну что же… звучит как план!

Kochurkins

Для тех, кто сразу все понял, выкладываю исходники генератора: GenealogyTreeInGit и сами генеалогические древа — мое и президентов США.

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

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

Поздравляем с днём программиста. Мы решили сделать для вас несколько открыток и подошли к этому согласно специфике даты.
Под катом пять учёных и программистов, код на whitespace, интерпретатор и как итог — портреты в стиле ASCII art.

И снова 256-й день года - 1Читать полностью »

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

По разумению автора настоящего текста нормальный ленификатор должен:

  1. Сохранять вычисления между вызовами программы.
  2. Отслеживать изменения в дереве вычисления.
  3. Иметь в меру прозрачный синтаксис.

Ленивое Дерево

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

Хотел сегодня поспать, но опять не удалось. В Телеграме появилось сообщение, что у кого-то не собирается Java… и мы очнулись только через пару часов, уставшие и довольные.

О сборке JDK 8 на Ubuntu, качестве кода Hotspot и почему всё валят на C++ - 1

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

Проблемы три:

  • Не собирается (уровень первый)
    Очень скучная часть, которую можно пропустить. Нужна только для тех, кто хочет полностью восстановить историю событий;
  • Не собирается (уровень второй)
    Интересней, потому что там есть пара типичных ошибок, некромантия, некрофилия, в чём BSD лучше GNU/Linux и почему стоит переходить на новые версии JDK.
  • Даже если собирается, падает в корку
    Более интересно. Йахууу, JVM упала в корку, давайте пинать её ногами!

Под катом показан подробный ход решения проблем, с разными побочными мыслями о жизни.

Будет много C++, кода на Java не будет вообще. Любой джавист в конце концов начинает писать только на C++…

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

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

Добрый день, читатели !

С чего всё началось

Захотел я чтоб воровства стало меньше, и давай с ним бороться! Но вручную это было очень утомительно, долго и малоэффективно, тогда и пришла мысль как-то это дело автоматизировать.

О котором из «воровств» я? О том, где мы, гуляя по интернету, нажимаем на кнопочку «смотреть видео»,  грузится какая-то страница, видео почему-то не проигрывается, мы уходим и гуляем дальше, а на самом деле мы «добровольно» подключили себе услугу получать что-то, что никто никогда не видел за символическую плату 30 рублей в день со счёта своего мобильного. У людей это называется wap-click или мобильные подписки, а сотовые операторы придумывают разнообразные красивые названия. Ещё бы, не включать же в список услуг «воровство по видеокнопке».
Читать полностью »

Всем привет. Меня зовут Валентин.

10 июля я прочел на Хабре пост Оли Ollisteka про платформу codingame.com и решил попробовать свои силы в логических задачах, а так же в конкурсе Legends of Сode and Magic.

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

image

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

Legends of Code and Magic

Контест, который проходит с 25 июля по 24 августа. Игра в некотором смысле похожа на Hearthstone, однако часть вещей улучшена в сторону баланса между игроками.

Игра проходит между двумя игроками, и это пошаговая игра. Каждый игрок имеет свою колоду карт, выбранную из доступных вариантов во время фазы Draft перед фазой Battle.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js