Занимаюсь программированием 1С уже несколько лет, и тут посетила мысль — «А не пройти ли какой-нибудь обучающий курс, вдруг в знаниях есть какие-то пробелы, о которых раньше даже и не подозревал»? Сказано-сделано. Сижу, слушаю курс, дохожу до циклических операторов и тут вторая мысль (да, не часто они у меня появляются) — «А какой цикл быстрее»? Надо бы проверить.
Итак, я нашел пять способов, как можно организовать цикл средствами 1С.
Читать полностью »
Рубрика «ненормальное программирование» - 80
Какой цикл быстрее? Тестируем 1С
2014-12-12 в 10:13, admin, рубрики: 1С, высокая производительность, ненормальное программирование, Программирование, производительность, циклыКак растаращить class-файл
2014-12-12 в 1:55, admin, рубрики: class-файл, java, jvm, КодоБред, ненормальное программирование, пятницаОбычно при компиляции Java-файла получаются .class-файлы примерно того же размера, что и исходник. Меня заинтересовало, можно ли по небольшому исходнику сделать .class-файл, который больше, сильно больше исходника.
Можно поискать какие-то короткие конструкции языка, которые компилируются в длинные цепочки байткода, но линейный прирост меня не устраивал. Я сразу подумал про компиляцию finally-блоков: про неё уже писали на Хабре. Если вкратце, то для каждого finally-блока при непустом try-блоке создаётся минимум два варианта в байткоде: для случая нормального завершения try-блока и для случая завершения с исключением. В последнем случае исключение сохраняется в новую локальную переменную, выполняется код finally, затем исключение достаётся из локальной переменной и перебрасывается. А что если внутри finally снова разместить try-finally и так далее? Результат превзошёл все ожидания.
Читать полностью »
Простая система событий — нестандартный подход
2014-12-11 в 11:25, admin, рубрики: .net, Events, unity3d, ненормальное программирование Данная заметка является логическим продолжением поста «SMessage — Простая и предсказуемая система событий для Unity». Пользователь erlioniel описал два подхода к построению собственной системы сообщений: с использованием перечислений и классов-сообщений. В своей заметке я хочу рассказать о возможном пути смешения этих подходов и о велосипеде, который может из этого получиться.
Читать полностью »
Сервис мониторинга свободного места на Bash
2014-12-05 в 10:36, admin, рубрики: bash scripting, daemon, Настройка Linux, ненормальное программирование, ПрограммированиеДобрый день! Хотелось бы рассказать Вам об очередном велосипедостроении. Просматривая Хабр, я наткнулся на замечательную статью: Bash: запускаем демон с дочерними процессами. После прочтения возникла идея написать что-нибудь полезное, с преферансом и куртизантками, куда же без этого.
Вводная:
ОС: Astra Linux 1.2 (1.3)
Из вводной следуют два вывода:
- Нельзя устанавливать не сертифицированное ПО, иначе мы словим лютую попаболь с двух направлений (Заказчик и Руководство).
- Т.к. мы настоящие пионеры и не ищем легких путей, то вывод команды df нас не интересует.
Пишем прошивку для Arduino на С++ с REST управлением через последовательный порт и экранчиком
2014-12-04 в 19:45, admin, рубрики: api, arduino, c++, diy или сделай сам, rest, ненормальное программирование, робототехника
Это второй пост про Wi-Fi роботанк. В нем будет написано как не надо делать прошивки, если вы суровый программист микроконтроллеров и как можно сделать, если нужна максимальная наглядность и возможность рулить прошивкой почти как веб-приложением прямо с терминала.
То есть, например, отправив в последовательный порт что-то типа
battery?act=status
получим в ответ что-то типа
{ "status": "OK", "minValue": 600, "maxValue": 900, "value":750, "percent": 50 }
Для тех, кому лень читать статью, сразу ссылка на github и Яндекс-диск, у кого гитхаб залочен (спасибо MaximChistov).
Сериализация и С++11
2014-12-04 в 1:19, admin, рубрики: c++, c++11, ненормальное программирование, Программирование, сериализация
Уверен, что многим кто работает с С++ хотелось, чтобы в этом, дивном языке, была возможность сериализовать объекты так же просто, как скажем в С#. Вот и мне этого захотелось. И я подумал, а почему бы и нет, с помощью нового стандарта это должно быть несложно. Для начала стоит определиться с тем, как это должно выглядеть.
class Test : public Serializable
{
public:
int SomeInt = 666;
float SomeFloat = 42.2;
string SomeString = "Hello My Little Pony";
private:
serialize(SomeInt);
serialize(SomeFloat);
serialize(SomeString);
};
Такое мне вполне подходило, и я уже представлял себе решение.
Читать полностью »
Free для ленивых
2014-12-01 в 7:17, admin, рубрики: безопасность, ненормальное программирование, С++
(типичное утро понедельника)
Однажды, я решил сделать маленький костылик, чтобы не пичкать свой код free вызовами. Было решено написать аналог auto-release pool’a для чистого С (который может далее быть портирован куда угодно). Читать полностью »
Забавные баги
2014-11-28 в 22:56, admin, рубрики: android, microsoft, minecraft, sims, siri, баги, ит-инфраструктура, ненормальное программирование, синий экран смерти, Тестирование IT-системБаги — сленговое обозначение ошибки в системе или программе. Конечно, баг — это плохо. Искать баг — еще хуже. Они могут быть как безобидными (но назойливыми), так и весьма катастрофическими, последствия которых могут привести к финансовым потерям, очернению репутации и даже к трагическим случаям.
Однако не все баги такие. Есть и те, от которых Вы бы не стали пучками вырывать у себя на голове волосы или разбивать монитор компьютера подручными предметами. Они скорее заставят Вас посмеяться, ну или же хотя бы улыбнутся. Именно о таких багах и пойдет речь.
Фабричный метод без размещения в динамической памяти
2014-11-28 в 21:35, admin, рубрики: c++, c++11, ненормальное программирование, ооп, Проектирование и рефакторинг, фабричный метод У классической реализации фабричного метода на C++ есть один существенный недостаток — используемый при реализации этого шаблона динамический полиморфизм предполагает размещение объектов в динамической памяти. Если при этом размеры создаваемых фабричным методом объектов не велики, а создаются они часто, то это может негативно сказаться на производительности. Это связанно с тем, что во первых оператор new
не очень эффективен при выделении памяти малого размера, а во вторых с тем что частая деаллокация небольших блоков памяти сама по себе требует много ресурсов.
Для решения этой проблемы было бы хорошо сохранить динамический полиморфизм (без него реализовать шаблон не получится) и при этом выделять память на стеке.
Если вам интересно, как это у меня получилось, добро пожаловать под кат.
Код, которого нет
2014-11-28 в 13:36, admin, рубрики: javascript, Веб-разработка, КодоБред, магия, ненормальное программирование, обфускацияПривет, читатели!
Около года назад Хабр захлестнула волна постов на тему "%string% в N строчек на JavaScript". Уже и не вспомню, чем все закончилось, но началось все с Excel в 30 строк. Следом появилось много и других интересных вариаций на эту тему, даже игра в ноль строк на JS, но это уже совсем другая история…
Как я ни старался придумать что-то еще более компактное — ничего не выходило. Тогда было принято решение посмотреть на проблему под другим углом. Примерно в этот момент в голове промелькнул вопрос: а можно ли «сколлапсировать» код так, чтобы его не было вообще? И тут мне позвонил Дэвид Блейн.
Я попробовал добавить немного магии и вот что у меня получилось.