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

Да, именно так и никаких уловок. Эта идея мою голову посетила около двух месяцев назад в процессе обдумывания статьи об Алгоритмах и решениях. Типы .NET в том движке использовать легко, а можно ли наоборот…
Читать полностью »

Простите за мат в заголовке, это намёк на развлечение, начало которому дал язык «Брейнфак» — написать на каком-либо языке код, выполняющий что-то разумное, не используя букв и цифр. Мы уже видели JSFuck, PHPFuck, теперь я вам хочу представить Bashfuck:

__=${_##*/};____=<(:);___=${__#???};_____=$((${#___}<<${#___}))
__=${__::-${#___}}${____:$_____:${#___}}
__=$__$((${#__}|$_____))$((${#__}));___=$___${__:${#___}:${#___}};____=$($__<<<$_____|$__)
_____=${____:$((${#__}-${#___})):${#?}};___=$___$_____$_____;____=$($__<<<$____|$__|$__)
___=$___${____:$((${#?}+${#__})):${#?}};___=$___' '${____:$((${#___}+${#___})):${#?}}
___=$___${__:$((${#____}/${#___}-${#?})):${#?}};___=$___${____:$((${#____}#$_____-${#___})):${#?}}
___=$___ ${____:$((${#__}+${#?})):${#?}}${__:$((${#__}>>${#?})):${#?}}${__:${#_____}:${#?}}
___=$___${____:$((${#___}-${#?}-${#?})):${#?}};___=${___,,}
____=${____:$((${#___}+${#__}-${#?})):$((${#?}+${#?}))}
____=${____::${#?}}${__:${#_____}:${#?}}${____:${#?}};${____,,}<<<${___^}

Для запуска потребуется «Баш» четвёртой версии. Ничего вредоносного скрипт не делает смело запускайте из-под «рута», просто выведет надпись «Happy new year». Исходник надо скопировать в файл и запустить.
Читать полностью »

Давно гуляла в голове идея света, плавно регулируемого, еще и дистанционно.

В то время светодиоды были непопулярны, дороги, а на лампах накаливания делать не хотелось, ибо напряжение и потребление.
И вот настал день…

Недавно закончил альфа-версию интеллектуальной люстры, какая только может получиться, если сисадмин берет в руки паяльник и С++.

Прежде чем немного поделюсь технологией, расскажу, что она умеет, и чего мне не удалось добиться.

— При включении, люстра включается на максимум (как не удивительно), т.е. ее можно использовать как обыкновенную люстру с физической коммутацией;
— Люстра так же управляется дистанционно с пульта управления (четырехканальный для Arduino);
— Яркость света можно регулировать плавно (относительно) назад-вперед при помощи двух кнопок. При этом регулировка цикличная, т.е. если сделать ярче максимума — свет потухнет (сбросится на 0), а если сделать меньше минимума — включится на максимум (таким образом одним нажатием кнопки на пульте, люстру можно включать и выключать)
— Спустя полчаса после включения, люстра немного сбрасывает яркость. Яркий свет нужен не всегда, а этот костыль немного охладит систему. После сброса яркости, ее можно заново выставить на максимум, и опять на полчаса.
— У люстры есть неизбежный таймер отключения. По умолчанию он составляет один час. При помощи пульта (нажатия одной из кнопок) может устанавливаться на полчаса, два часа, либо обратно на час. Но это не тупой таймер, потому что:
— У люстры есть датчик движения, соответственно таймер считает время после последнего замеченного движения;
— В ночное время суток, при обнаружении движения, люстра включается на очень маленькую яркость на протяжении одной минуты. В дневное время суток это не работает, поскольку в люстре стоит датчик света. Движений нужно несколько (секунд 5), чтобы люстра не включалась, когда я переворачиваюсь в кровати;
— Фича включения люстры в ночное время суток отключается при помощи кнопки на пульте, поскольку понятие «ночное время суток» для датчика света и для человека немного различается;
— При достижении таймаута отключения — свет плавно начинает гаситься, и если в это время произойдет движение — свет вернется на свое старое значение;
— Люстра умеет индицировать свое состояние при помощи светодиодика, а то и самой люстры.

Есть желание читать дальше? Тогда вперед.
Читать полностью »


Графика видеоигры Quake 1 на экране Hitachi V-422

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

Рисование на осциллографе происходит в режиме XY, в котором напряжения определяют координаты точек на экране. Их достаточно варьировать как функцию времени, чтобы рисовать линии. При этом скорость изменения нужно оставлять примерно одинаковой, иначе будут получаться линии с различной яркостью. Согласно отличному руководству от Джеда Марголина, особой точности в определении длины линии не нужно. Чтобы нарисовать не связанный с предыдущим сегмент, луч нужно быстро сдвинуть, не оставляя видимой линии.
Читать полностью »

В заголовке порядок слов не перепутан.
Assembler в 30 строк на Excel - 1
Живет в Венгрии юный программист Адам Кисс. Он участвует в чем-то типа онлайн-олимпиады KöMaL. Для решения заданий по информатике предлагается использовать несколько обычных языков программирования: С, С++, Python и некоторые другие. В одном из заданий требовалось написать Сапер и бота для игры в него. Такая задача очень легко решается средствами табличного процессора — того же Excel, например, и пачки макросов. Однако же, макросы использовать нельзя. Адам выкрутился необычным способом: реализовал в книге Excel простенький виртуальный компьютер, который программируется на Ассемблере — Excembler. Читать полностью »

Мясо на любителя. Встреча .Net сообщества на CLRium #2. Москва, Питер, online - 1 Я не люблю заезженное слово «конференция». Это — встреча разработчиков с общими интересами, которые хотят послушать о трюках, которые позволяют обходить правила, установленные в.Net Framework, которым интересна тема использования меняющих и создающих языки, тулов. А также, что можно получить если знаешь как компилировать и декомпилировать приложение. Об этом не говорят. Потому что разговор на эту тему слишком долгий чтобы уместить в формат одного часа стандартного выступления на конференциях. Я пробовал выступать на .NEXT, и помимо положительных отзывов были «галопом по Европам». Согласен, за час не уложиться. Добро пожаловать в полный формат!

Я надеюсь, в вашей памяти теплится еще прошлый CLRium и сейчас никто не отчаивается и яро смотрит на технологии и все с удовольствием готовы их поглощать. Я помню и время от времени поглядываю на ваши многочисленные отзывы, которые греют мое желание провести все еще раз. Причем на этот раз — с хорошей и полезной практикой.

Теперь у нас целых два дня. Причем вы можете купить билет как на один, так и на оба дня. Первый день — как в прошлый раз: много хардкора, не практичного, но очень интересного… Позволяющего еще лучше понять как все работает и как этим можно воспользоваться… Тем со временем еще немного накидаю. Много мяса на любителя. И второй — практика. Второй длиннее первого. На час =). Во второй день будет очень много Roslyn, JetBrains Nitra (он же N2, он же Nemerle2)? RyuJIT, .Net Framework open sourced. Вот честно, я бы сам сходил

Почитать и зарегистрироваться

Мясо на любителя. Встреча .Net сообщества на CLRium #2. Москва, Питер, online - 2

cool Примеры статей и полный список тем выступлений — под катом
Читать полностью »

Аукционы используются для торгов практически любых товаров — рыбы и цветов, лицензий на 3G-cвязь, государственных ценных бумаг, акций частных компаний, рекламных объявлений на Яндексе. Базовые правила некоторых аукционов остаются неизменными на протяжении столетий. При этом аукционы — динамично развивающаяся область современной экономической теории. Это в первую очередь вызвано их практической важностью, а также наличием данных и возможностью формально проанализировать аукционы как игры, чьи правила совпадают с практикой. За исследование аукционов и в целом экономических механизмов было присуждено несколько Нобелевских премий.

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

Доброго времени суток, хабрачитатели!

Появился у меня уже относительно давно роутер, ASUS RT-N10U. Всем он мне нравился, и захотелось мне с ним поиграться. Прошил его dd-wrt-шкой, понастраивал там все, как мне хотелось. И решил поднять на нем веб-сервер, так как имел полтора десятка книг в HTML-е и планшет, с которого их достаточно удобно читать (как оказалось в последствии). И тут я столкнулся с не очень приятной штукой. Заливать книжки на роутер в общем-то не сложно: закинул по ftp, переместил куда надо — и все тут. А вот добираться до них из браузера потом своеобразно.

Сначала у меня был index.html (с ссылками на все, что там у меня есть), который я честно правил руками. Поначалу мне этого хватало, но потом, когда книжки начали добавляться интенсивнее, решил, что надо что-то менять в жизни. Ставить PHP на роутер или кучу добра для кросскомпиляции на десктоп, из-за одной веб-страницы мне не хотелось, и я решил написать CGI-ку shell-скриптом.
Читать полностью »

Оптимизация кода под Pebble - 1На Хабре уже было несколько статей об общих принципах написания кода под Pebble. Для программирования используется язык C, а сам процесс разработки происходит в браузере, при этом компиляция происходит на удаленных серверах, и изменить ее параметры нет возможности, разве что установить Ubuntu и инсталлировать необходимые инструменты для офлайн-компиляции. Но даже такой ход не избавит основного ограничения – на устройстве доступно только 24 Кб оперативной памяти, которая используется и для скомпилированного кода, то есть действительно динамической памяти остается 5-10 Кб. И если для простых программ, которые используются как тонкие клиенты или дополнительные датчики для телефона, этого с головой достаточно, то для написания самодостаточной более или менее сложной игры, которой не нужен смартфон, этого откровенно мало. Вот здесь и понадобится оптимизация кода под размер.
Свои шишки я уже набила, и поэтому предлагаю поучиться на моих ошибках, которые я объединила в 16 советов. Некоторые из них могут показаться капитанскими, от некоторых избавит хороший компилятор с правильными флагами компиляции, но, надеюсь, некоторые из них кому-нибудь да и будут полезными.
Читать полностью »

Занимаюсь программированием 1С уже несколько лет, и тут посетила мысль — «А не пройти ли какой-нибудь обучающий курс, вдруг в знаниях есть какие-то пробелы, о которых раньше даже и не подозревал»? Сказано-сделано. Сижу, слушаю курс, дохожу до циклических операторов и тут вторая мысль (да, не часто они у меня появляются)«А какой цикл быстрее»? Надо бы проверить.
Итак, я нашел пять способов, как можно организовать цикл средствами 1С.
Читать полностью »


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