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

Почему иногда надо бить себя по рукам? Доброго дня. Меня зовут Илья и я — перфекционист.

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

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

Месяц назад наша команда, состоящая из полутора дизайнеров и полутора кодеров взяла первое место на региональном чемпионате по скоростной разработке игр. На разработку давалось всего 48 часов. Двое суток, целиком состоящих из кофе и нервов дали итогом самый завершённый из проектов конкурса. Я расскажу вам, что мне пришлось сделать с собой и своим желанием написать идеальный код, который не страшно будет показать людям.
Читать полностью »

Верите или нет, rar архивы могут содержать простой, похожий на x86, байткод для виртуальной машины RarVM. Это сделано для того, чтобы была возможность внедрять в архив фильтры (препроцессоры) для двустороннего преобразования входных данных с целью увеличения избыточности и повышения степени сжатия.
Например, есть фильтр «Intel E8 preprocessing», начала которого, вероятно, идут с LZX, который призван повысить избыточность в x86 коде.Читать полностью »

Все мы знаем что такое ярлык.
А что будет если сделать ссылку ярлыка самого на себя?
Создание ярлыка на ярлык приводит к его копированию.
Но что будет если принудительно создать по байтово такой ярлык?

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

Зайти в такую папку обычными файловыми менеджерами будет невозможно.
Создаем рекурсивные ярлыки в Windows
Но тут не обошлось без ярлыка и я расскажу как это сделать и для чего можно использовать.
Читать полностью »

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

Впрочем, вероятнее всего, это проблема многих языков программирования. Многие, думаю, помнят известный ролик WAT, посвященный проблемам некоторых «очевидностей» языков JavaScript и Ruby. Логика привычного мира выходит покурить тогда, когда появляются пограничные области — те, в которые нормальные люди не лазят.

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

Я даже не собираюсь спорить с тем, должны ли они компилироваться и работать. Я просто еще раз в очередной раз напомню, что все то, что для нас «логично и понятно» на самом деле может быть совершенно нелогично и непонятно.

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

В предыдущей публикации был рассмотрен алгоритм решения задачи коммивояжёра на плоскости рекурсивным полным перебором. Результат получился любопытным, но итоговый маршрут содержал очевидные неоптимальные участки. В предлагаемой заметке рассмотрен улучшенный алгоритм, который я назвал «рекурсивным жадным алгоритмом». Признаюсь сразу, итоговый маршрут в сравнении с рекурсивным полным перебором получается лучше, в среднем, на 8%.
Читать полностью »

Считаем скобочки на Oracle SQL
Все началось с того, что на сайте codeforces.ru в очередном Codeforces Round я увидел интересную задачку “Скобочная последовательность” и решать ее “неинтересным способом” никак не хотелось.

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

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

image
Посты — ссылки пропали, а запись достойна внимания. Приятного чтения:

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

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

Когда собирался писать свой топик, ломал голову куда же его писать? С одной стороны часть сайта написана на MODx, с другой стороны другая часть написана на LiveStreet, а с третьей стороны это такие костыли, что в пору в Ненормальное программирование писать. Оказалось, что Хабр готовился к такому повороту событий и сделал возможность писать сразу в несколько блогов, за что ему отдельный респект! :-)

Ну а теперь собственно к основному вопросу: В свое время я написал и запустил купонный сервис, само собой написанный на MODx Revolution (само собой, потому что я ярый любитель этого движка и что бы ни писал, всегда пишу именно на этом фреймворке).
Так вот, проект рос, развивался, много функционала было написано (благо MODx позволяет решить любую задачу), да вот только замыслилось мне на сайте еще и социалку-блог а-ля Хабрахабр запустить, да чтобы все наши пользователи там были, да чтобы отзывы по акциям туда же попадали, да чтобы отзывы были и в акциях, и в социалке, и чтобы и там и там их можно было комментировать и читать их в отдельной ветке все до кучи, и еще много-много чего… И когда я думал, сколько же мне понадобится времени, чтобы напрограммировать это все самому, я делался очень грусным...

Но вспомнил я про LiveStreet, о котором слышал давно-давно, и то, что он позиционируется как легкий и быстрый клон Хабра. И вот решил я отдельно социалку поднять на LS и увязать его с моим основным сайтом на MODx. LiveStreet установил и запустил за пару часов (это мое первое знакомство с этим движком).Читать полностью »

Всем доброго времени суток.

Придумано и написоно под влиянием некоторых публикаций Страуструпа на тему концептов в C++.
Захотелось мне однажды необычного — сделать так, чтобы нешаблонные функции/методы на C++ могли принимать в качестве аргумента любой объект, имеющий определенный набор методов, примерно так:

void fn(VectorWrapper<int> x)
{
    for (size_t i = 0; i < x.size(); ++i)
    {
        doSomething(x[i]);
    }
}

::std::vector<int> sv;
QList<int> qv;
OtherSuperVector<int> ov;

fn(sv);
fn(qv);
fn(ov);

Причем сделать это не используя наследование от базового класса.
Как это можно сделать, читайте под катом.
Читать полностью »

Резюме

Перед вами весьма вольный и стилистически неоднородный перевод статьи о модуле для Perl под названием Lingua::Romana::Perligata, который позволяет писать программы на латыни. Автор статьи обещает предоставить ниже правдоподобное обоснование для подобного извращения, а переводчик постарается облечь это в форму, мотивирующую к смежным с темой статьи упражнениям. Также автор предлагает всесторонний обзор синтаксиса и семантики латинизированного Perl и объяснение специальных техник фильтрования и разбора исходных кодов, необходимых для эффективного интерпретирования языка программирования с (почти) вольным порядком слов.
Читать полностью »


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