Обновить
180.59

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

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

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

Entropy — Неточный язык программирования

Время на прочтение2 мин
Охват и читатели5K
В комментариях к недавнему посту про неточный процессор, хабраюзер lol2Fast4U привел ссылку на интересный язык программирования — Entropy.

Суть этого языка в том, что в нем отсутствует детерминированность.

Каждый раз, когда мы обращаемся к каким-либо данным, они искажаются все больше и больше.

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

Сами понимаете, что подход к программированию в такой среде должен быть принципиально иным.
Читать дальше →

Мод для Minecraft, добавляющий микропроцессор

Время на прочтение1 мин
Охват и читатели7.8K


RedPower 2 PR5 теперь доступен.

Новый мод позволяет добавить в Minecraft микропроцессор (6502).
Читать дальше →

Пишем и оптимизируем Жизнь Конуэя на JS

Время на прочтение5 мин
Охват и читатели6.7K
Обновляя недавно дизайн своего хомяка, подумал – а не сделать ли мне какую-нибудь необычную страницу с 404-й ошибкой? Поскольку в детстве я был впечатлен Жизнью Конуэя (как возможно и многие из читателей), решил её на JS и реализовать.

Казалось бы, что сложного в Жизни: если у занятой клетки 2 или 3 соседа – она остается, если у пустой ровно 3 – рождается? В этой статье я расскажу о своей оптимизации алгоритма и отрисовки на canvas-е, некоторых не очевидных моментах целочисленной/бинарной арифметики в JavaScript.

Забегая вперед, конечный результат можно увидеть тут, исходники видны там же (да еще и по лицензии CC BY).
Читать дальше →

Ассемблер: прячем несколько команд в команде

Время на прочтение3 мин
Охват и читатели8.8K
image
Речь пойдёт о том, как можно спрятать «лишние» ассемблерные команды в обычном коде. Данный метод полезен для усложнения дизассемблирования кода, особенно, если генерацию «скрытых» команд автоматизировать.
Инструментарий: отладчик OllyDbg.

Странный странный код


Взглянем на следующий код, в котором скрыто намного больше команд, чем видно на первый згляд:
MOV EAX,1EBC031
MOV EBX,90DB3190
CMP EAX,EBX
JNE SHORT 0000009E
NOP
Читать дальше →

Графический «велосипед» по мотивам Turbo Vision (дела давно минувших дней)

Время на прочтение4 мин
Охват и читатели13K
Относительно недавно, прочитав местную статью "Демо, которых никто никогда не видел", решил, что тоже стоит пролить свет на некоторые плоды своей программистской молодости.

Начиналось с этого:
image

Под 'катом' 500Кб картинок!!!

Использование синтезатора в качестве компьютерной клавиатуры

Время на прочтение5 мин
Охват и читатели14K
Недавно мне в голову пришла мысль: а нельзя ли, подключив синтезатор к компьютеру, набирать на нем текст? Я попробовал реализовать это, и у меня получилось. Моя программа считывает нажатия клавиш синтезатора и эмулирует нажатия клавиш обычной клавиатуры. В этой статье я расскажу, как это реализовать. Писать будем под Linux на C++ с использованием Qt.



Читать дальше →

Бестиповое лямбда-исчисление, комбинаторы, Unlambda и числа Фибоначчи

Время на прочтение11 мин
Охват и читатели6.8K
Далее пойдет рассказ о самом, на мой взгляд, хардкорном способе программирования.
Предмет поста непростой, путь будет долгим, а в качестве печеньки в конце я расскажу, как считать числа Фибоначчи на языке Unlambda.
Читать дальше →

Создание 1k/4k intro для Linux, часть 2

Время на прочтение23 мин
Охват и читатели8.5K
Не прошло и полгода! Как вы можете, поднапрягшись, вспомнить, в прошлый раз мы остановились на унынии и обещании нырнуть в ассемблер.
Ну что же, пацан сказал — пацан сделал. Из этого аляповатого нагромождения букв вы узнаете, как можно инициализировать OpenGL-контекст в GNU/Linux в какие-то 450 байт, высвободив ещё больше места для разворачивания таланта.

Под катом вы узнаете, как в один килобайт нарисовать что-нибудь такое:


Заинтересованные пристёгиваются и вдавливают педаль в пол, а глаз — в экран.
Читать дальше →

Minecraft в Minecraft'e

Время на прочтение2 мин
Охват и читатели76K
Думаю, никому не нужно объяснять, что такое Minecraft. Простая, на первый взгляд, игра таит в себе огромные возможности. Особенно преуспели фанаты игры в строительстве различных механизмов. Был собран и калькулятор, и даже полноценный программируемый компьютер. Обсуждение таких машин непременно сопровождается комментариями вида:
Теперь надо собрать эмулятор PC в майнкрафте
И в нём запустить майнкрафт
Ждем когда в minecraft реализуют сам minecraft

Поздравляю, господа, дождались! В майнкрафте реализовали сам майнкрафт.

Читать дальше →

Летняя молодежная школа — стажировка в Intel 0x7DC

Время на прочтение5 мин
Охват и читатели13K
Привет всем хабра-студентам, магистрантам и аспирантам! image

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

В июле – августе 2012 года в центрах разработки п.о. компании Intel – Нижнем Новгороде и Новосибирске пройдут Летние Школы-Стажировки (ЛШ). Более 50 участников смогут поупражняться в своих программистских навыках и получить бесценный опыт работы в реальных проектах компании.
Задачи, над которыми предлагается работать участникам ЛШ в этом, 0x7DC, году, интересны настолько, что даже если вы каким-то причинам не сможете принять участие в ЛШ (жаль-жаль), то с ними стоит познакомиться поближе.

Что? Где? Когда? и, главное, Как?

Xscreensaver из часов на Esquire.ru

Время на прочтение2 мин
Охват и читатели4.7K
Мне, жуть, как понравились вот эти часы, очень захотел на скринсэйвер. Сказано — сделано.

Dev Tools Chromium'а дал понять, что урл видео-файла, проигрываемого плеером выглядит примерно следующим образом:
http://176.9.156.38/clock/big_<часы>-<минуты, округлённые вниз до делителя 5>.mp4?start=<смещение в секундах относительно округлённого времени>
Читать дальше →

Acceler8 2011 — Accelerate 2012 — и так далее

Время на прочтение5 мин
Охват и читатели3.6K

Вы участвовали в конкурсе параллельного программирования Acceler8 2011? Тогда этот пост — про вас.
Вы участвуете в проходящем сейчас конкурсе Аccelerate-2012? Тогда этот пост — для вас.
Вы принимали участие или только планируете участвовать в любом конкурсе спортивного программирования? А может, собираетесь начать свой первый самостоятельный проект? Тогда Вас, Штирлиц, я попрошу остаться с нами.

Этот пост — «разбор полетов» прошлогоднего конкурса Intel — Acceler8 2011, выполненный одним из членов жюри. Он прокомментировал ключевые конкурсные моменты, а также дал банальные и очевидные, но до сих пор актуальные советы по участию в подобных соревнованиях и по ведению проектов.

Итак,
поехали!

Итоги 20-го международного конкурса непонятного кода на C

Время на прочтение2 мин
Охват и читатели16K
Организаторы IOCCC (Международный конкурс на самый непонятный код C) нажали кнопку «турбо». Если результаты прошлого конкурса опубликовали спустя четыре года после проведения, теперь прошло всего два месяца — и вот они.

Участвовать в конкурсе могут готовые программы размером меньше 4096 байт, при этом количество значимых символов, без учёта пробелов, знаков табуляции и знаков ; ( ), не должно превышать 2048. Задачей конкурса является «проверять компиляторы на стресс, демонстрировать тонкости языка программирования Си и важность соблюдения стиля программирования (делая обратное)».
Читать дальше →

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

Сотрудник по фамилии Нуль обрушил корпоративное ПО

Время на прочтение1 мин
Охват и читатели21K
Больше года назад на сайте QA по программированию StackOverflow один пользователь попросил помощи по такому вопросу. У них на фирме есть сотрудник по фамилии Нуль (Null). Проблема в том, что из-за него падает корпоративное поисковое приложение, если фамилию сотрудника использовать как поисковый запрос (что в последнее время происходит очень часто). Ошибка:

<soapenv:Fault>
   <faultcode>soapenv:Server.userException</faultcode>
   <faultstring>coldfusion.xml.rpc.CFCInvocationException: [coldfusion.runtime.MissingArgumentException : The SEARCHSTRING parameter to the getFacultyNames function is required but was not passed in.]</faultstring>

Для параметра указан строковый тип данных. Используется WSDL (SOAP). Flex 3.5 Actionscript 3 ColdFusion 8.
Читать дальше →

Американский музыкант положил на музыку математическую константу Тау

Время на прочтение1 мин
Охват и читатели6.1K
Американский музыкант положил на музыку математическую константу под названием Тау. О необычном подходе к числам пишет New Scientist.
Число Тау в два раза больше числа Пи и приближенно равно 6,283185. Майкл Блейк присвоил нотам от «До» одной октавы до ноты «До» следующей октавы номера от 1 до 8. Затем Блейк взял запись числа Тау с точностью до 126 знака после запятой и проиграл ее в соответствии с выбранной кодировкой нот. Далее музыкант аранжировал получившуюся мелодию.
Как сообщалось ранее, Блейк положил на музыку само число Пи. Однако, по мнению композитора, Тау звучит более гармонично.
Под катом — видео
Читать дальше →

Тетрис для DCPU-16

Время на прочтение7 мин
Охват и читатели6.8K
Как уже писали на Хабре, разработчик широко известного в узких кругах MinecraftМаркус «Notch» Перссон в данный момент занят разработкой новой игры, действие которой будет происходить в космосе в 281 474 976 712 644 году.

Как и Майнкрафт, игра будет нестандартной: главная «фишка» — полностью эмулируемый процессор, под управлением которого космические корабли и будут бороздить просторы Большого… э, Вселенной. Поскольку персонажи игры в год 0x10C (игра, собственно, так и называется) попали прямиком из 1980 года, то и процессор DCPU-16 по своим характеристикам примерно соответствует той эпохе: 128 килобайт оперативной памяти, 100 килогерц, нехитрый набор команд.

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

(и сразу дисклеймер: музыка в ролике наложена отдельно для художественной, так сказать, выразительности; DCPU пока выводить звук, увы, не позволяет)

Читать дальше →

Самый правильный безопасный printf

Время на прочтение8 мин
Охват и читатели12K
Под катом Вас ждет увлекательная история о том, как я сильно расстроился, познакомившись поближе с пользовательскими литералами (с нового стандарта), но при этом в последствии все же реализовал вышеупомянутую функцию, а также разобрался с constexpr, а позже еще и реабилитировал те самые литералы.
Читать дальше →

Клуб анонимных PHP'ешников

Время на прочтение1 мин
Охват и читатели29K
Здравствуйте. Меня зовут Вячеслав, мне 22 года и я пхп программист. Я сижу на пхп с 18 лет.
Читать дальше →

«Конкурс параллельного программирования Accelerate 2012» или «6 ультрабуков и 10 SSD хватит всем!»

Время на прочтение3 мин
Охват и читатели14K

Всем привет!
Последняя неделя на Хабре ознаменовалась серией хакерских постов — взламывали как VoIP, так и онлайн-пробки.
Предлагаю продолжить неделю более созидательно — решить задачу мирового масштаба по генетике по параллельному программированию.
Сделать за месяц надо всего ничего: найти в двух строках, состоящих из нуклеотидов символов A, T, G и C, максимально длинную общую подстроку.
Призы по сравнению с предыдущим разом подросли и окрепли — сегодня на кону 6 ультрабуков Asus Zenbook UX31E и 10 SSD-дисков суммарной емкостью 800 гигов.
Заманчиво?
Добро пожаловать под кат.

DeepClone на javascript, который можно твитнуть

Время на прочтение3 мин
Охват и читатели7.4K
Добрый день!

Не знаю, будет ли кому интересно, но соорудил сегодня такое чудо: DeepClone, упихивающийся в 140 байт.
Если кто-то такое уже делал и постил, ткните, пожалуйста, носом. Я в формате твитов нашёл только неглубокие копирования. Ну и не исключаю, что какой-нибудь применённый хак находится в списке запрещённых препаратов приёмов, а за его использование полагаются страшные кары :)

Из недостатков — всё то же, что и у клонирования с помощью функции extend из jQuery: не ест стандартные объекты типов Boolean, String, Date, игнорирует prototype и constructor и зависает на кольцах.
Достоинство одно и, по-большей части, чисто эстетическое — размер.

Тестировал в Firefox, Chromium, Opera, IE8 и в умолчальном андроидном браузере.

Под катом — код и небольшой рассказ о том, как это работает.

Читать дальше →

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