Показаны сообщения с ярлыком Хабрахабр - Ненормальное программирование. Показать все сообщения
Показаны сообщения с ярлыком Хабрахабр - Ненормальное программирование. Показать все сообщения
суббота, 8 октября 2011 г.
Регистрация\Авторизация через картинку
Услышав недавно от знакомого, что в новой OS Windows будет авторизация по картинкам решил попробовать реализовать такую же систему но под Web интерфейс.
После 2х часов экспериментов получилась довольна быстрая регистрация, требующая только ввод имени пользователя(login).
суббота, 10 сентября 2011 г.
Задача о восьми Ферзях на Oracle SQL
Привет, Хабролюди!
В мае месяце в Москве прошла олимпиада IT-Планета, одной из номинаций которой было «Программирование СУБД Oracle». Задания были интересными и сложными, и хотелось бы поделиться решением некоторых из них.
Первая задача, о которой я расскажу — задача о восьми ферзях, решить ее было необходимо используя для этого только SQL и ничего более, сначала я эту задачу просто вычеркнул из списка тех, которые собираюсь решать, но в последний час все-таки ее решил, что принесло мне первое место и диплом из рук министра связи и массовых коммуникаций РФ.
понедельник, 22 августа 2011 г.
Нестандартное использование Get и Set в Javascript
Многие в курсе, что в Javascript есть так называемые Getter'ы и Setter'ы. Это конструкции для отслеживания изменения значений свойств объекта, а так же возвращения этих значений. «С изнанки» объекта они выглядят как обычные функции:
var obj = {
get value() {
return 0;
},
set value(s) {
alert ("Go screw yourself!")
}
}
* This source code was highlighted with Source Code Highlighter.Но раз это функции, их можно использовать как душе угодно!
пятница, 20 мая 2011 г.
[Перевод] Рекурсивный zip-архив
Многие хабрапользователи наверняка знакомы с квайнами — программами, выводящими собственный исходный код. Сегодня я хочу показать как сделать интересный вариант квайна — ZIP-архив, который распаковывается сам в себя.
среда, 11 мая 2011 г.
Кросс-языковое программирование
Читая статью в вики про Квайны вспомнил, что давно, очень много кликов тому назад — не помню уже ссылки, читал как один умелец описывал процесс создания исходного текста программы(скрипта) работающего в двух разных языках. Если мне не изменяет память, это был некий bat-ник, который успешно компилировался в turbo pascale-е.
Предлагаю в качестве разминки для ума скинуть в комментарии примеры (если таковые возможны).
Предлагаю в качестве разминки для ума скинуть в комментарии примеры (если таковые возможны).
воскресенье, 8 мая 2011 г.
[Перевод] Книга о мухах за $23,698,655.93
Несколько недель назад один доктор из моей лаборатории зашёл на Амазон чтобы купить копию книги Питера Лоуренса The Making of a Fly — классический труд по биологии развития, с которым мы — и другие биологи, работающие с дрозофилами — сверяемся регулярно. Книга, вышедшая в 1992 году, уже не переиздаётся. Но на Амазоне было в продаже 17 копий: 15 использованных от $35.54 и две новых, от $1,730,045.91 (+$3.99 за доставку).
понедельник, 14 марта 2011 г.
Пи в языках программирования
14 марта — всемирный день числа Пи. Придуманный в 1989 году и официально признанный в 2009, этот день отмечают многими способами, из которых самые популярные — поедание круглых пирогов и обсуждение вещей, связанных с числом Пи. Было бы странно, если бы не нашлось пары-тройки языков программирования, основанных на числе Пи или хотя бы названных в его честь. О них я и расскажу — надо же поддержать традицию :-)
У Brainfuck множество диалектов практически на все случаи жизни, диалект Pi среди них тоже есть. Команды языка записываются в число Пи в виде неправильных цифр в случайных разрядах следующим образом.
1. Pi — диалект Brainfuck
У Brainfuck множество диалектов практически на все случаи жизни, диалект Pi среди них тоже есть. Команды языка записываются в число Пи в виде неправильных цифр в случайных разрядах следующим образом.
среда, 9 марта 2011 г.
Гик приспособил Kinect для игры в Tetris
Понятно, что сам по себе тетрис уже мало кого интересует в качестве игры (хотя, это не совсем верное утвеждение, в тетрис играет множество людей, хотя бы на мобильном телефоне, стоя в очереди за
суббота, 26 февраля 2011 г.
SwimBrowser — браузер, который управляется посредством Kinect
В стремлении найти дополнительные области применения такого интересного устройства, как Kinect, разработчики придумывают много всякой всячины, буквально каждый день появляется что-то новое, имеющее отношение к Kinect. На этот раз появился целый браузер, заточенный под работу с Kinect, и получивший название SwimBrowser. Название браузера, по мнению разработчика, показывает его возможности — вы должны совершать движения руками для «плавания» по просторам Сети.
среда, 9 февраля 2011 г.
[Из песочницы] Интерпретатор Brainfuck на Brainfuck
После нахождения на Хабре ряда постов имеющих отношение к Brainfuck'у в том числе его интерпретации у меня возникло какое-то желание написать и свой интерпретатор Brainfuck'а. Но для удовлетворение тех необходимых ощущений, которые нам приносит сам язык нужно это было написать именно на Brainfuck. И у меня это частично получилось. Сразу оговорюсь о том чего нету: этот интерпритатор на данный момент не поддерживает циклы и ввод входных данных (в случае входных данных — нет откуда их считывать, так как на вход подается Brainfuck программа) — если кратко — то не работают комманды "[", "]" и ",".
пятница, 4 февраля 2011 г.
[Ссылка] Brainfuck на 33 языках
Попробую закрыть неделю интерпретаторов Brainfuck на Хабре и дам ссылку на задание "Execute Brain****" на сайте Rosetta Code. Представлены реализации на (пока что) 33 основных языках, при желании можно добавить свой интерпретатор. По-моему, исчерпывающе :-)
P.S. Ссылка сокращена, потому что символ * в ссылке парсер не одобрил.
Ссылка: http://habrahabr.ru/linker/go/113173/
Источник: Хабрахабр - Ненормальное программирование
Оригинальная страница: [Ссылка] Brainfuck на 33 языках
P.S. Ссылка сокращена, потому что символ * в ссылке парсер не одобрил.
Ссылка: http://habrahabr.ru/linker/go/113173/
Источник: Хабрахабр - Ненормальное программирование
Оригинальная страница: [Ссылка] Brainfuck на 33 языках
Параллелим Brainfuck
Не будем терять темпа. Поскольку неделя еще не закончилась, еще есть время для очередного топика про Brainfuck. Идея меня захватила, но реализаций интерпретаторов было уже такое количество, что захотелось какой-то изюминки. Поэтому в качестве цели эксперимента я выбрал Brainfork — многопоточную версию Brainfuck-а. А в качестве средства — Erlang, который прекрасно подходит для реализации параллельных процессов. Тем, кому эта тема до сих пор не осточертела, предлагаю заглянуть под кат.
среда, 2 февраля 2011 г.
Интерпретатор Brainfuck на Bash
В последнее время популярность эзотерического языка Brainfuck набирает обороты. Количество приложений, написанных на Brainfuck увеличивается не в арифметической, а даже в геометрической прогрессии. Очень похожая ситуация с Android.
Сегодня я решил запустить свой первый хелловорлд на этом языке. Я счастливый пользователь NetBSD на тостере, и у меня не получилось настроить интернет. Поэтому, я не смог воспользоваться уже готовыми решениями для запуска программ на Brainfuck'e.
Выход оставался один — написать интерпретатор самому. Из софта были только Bash и системные утилиты. Поэтому, пришлось писать на нем.
Источник: Хабрахабр - Ненормальное программирование
Оригинальная страница: Интерпретатор Brainfuck на Bash
Сегодня я решил запустить свой первый хелловорлд на этом языке. Я счастливый пользователь NetBSD на тостере, и у меня не получилось настроить интернет. Поэтому, я не смог воспользоваться уже готовыми решениями для запуска программ на Brainfuck'e.
Выход оставался один — написать интерпретатор самому. Из софта были только Bash и системные утилиты. Поэтому, пришлось писать на нем.
$ cat bf.sh
#!/bin/bash
C="s[0]=0; p=0;"
while read -n1 c; do case $c in
\+) C="$C s[\$p]=\$((\${s[\$p]}+1));";;
\-) C="$C s[\$p]=\$((\${s[\$p]}-1));";;
\>) C="$C p=\$((\$p+1));";;
\<) C="$C p=\$((\$p-1));";;
\.) C="$C printf \\\\\$(printf '%03o' \${s[\$p]});";;
\,) C="$C read -n1 c; s[\$p]=\`printf '%d' \"'\$c\"\`;";;
\[) C="$C while [[ \${s[\$p]} > 0 ]]; do ";;
\]) C="$C done;";;
esac; done < $1;
eval $C
$ cat hello.b
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.
$ ./bf.sh hello.b
Hello World!
Источник: Хабрахабр - Ненормальное программирование
Оригинальная страница: Интерпретатор Brainfuck на Bash
понедельник, 31 января 2011 г.
Числовые подписи
Меня всегда завораживала магия программирования — маленькие фокусы, в которых бессмысленный на первый взгляд код делает что-то интересное. Самые известные из них — «подписи», которые выводят на печать короткий текст (обычно имя автора). В прошлый раз я показала несколько таких фокусов, основанных на эзотерических языках программирования, и некоторым читателям они даже пригодились при подготовке новогоднего поздравления :-) Настоящая же магия — это создание таких вещиц на совершенно нормальном языке, который вы используете каждый день, например, на C++ или Java. В этой статье я покажу несколько способов вывести короткий текст с использованием в качестве исходных данных только числовых констант.
C++ спокойно относится к маргинальным манипуляциям с памятью и указателями, поэтому обфускации типа задания строки числом — почти обычное дело :-) Самый простой пример:
Disclaimer: большинство приведенных фокусов основаны на низкоуровневых действиях с памятью, поэтому результаты могут варьироваться в зависимости от архитектуры компьютера и используемого компилятора (я пользуюсь gcc).
C++ спокойно относится к маргинальным манипуляциям с памятью и указателями, поэтому обфускации типа задания строки числом — почти обычное дело :-) Самый простой пример:
пятница, 28 января 2011 г.
Просмотри видео на сканере штрихкодов
«Из всех искусств для нас важнейшими являются кино и цирк»
— В.И. Ленин
Просмотр видео — одно из любимых развлечений в современном мире, фильмы сейчас смотрят практически на всех устройствах, даже на холодильниках. К сожалению, рядом не оказалось подходящего холодильника, и я решил просмотреть фильм на сканере штрихкодов. Под рукой оказался сканер Cipher Lab 8001. Технические характеристики
- 16-битный CMOS процессор
- 1 Мб памяти для программ
- 1 Мб SRAM для данных
- FSTN дисплей с LED подсветкой разрешением 100×64
четверг, 27 января 2011 г.
[Из песочницы] Программируем в dc (desktop calculator)
Я часто люблю отдыхать, изучая новые языки или технологии. И не важно, что я их, возможно, никогда и не применю на практике. Занимаюсь я этим преимущественно из простого любопытства и желания узнать что-то новое.
Отчасти, по этой же причине, возникли эзотерические языки программирования. Brainfuck, Befunge и прочие весьма хорошо разгружают мозг после умственной работы, да и просто позволяют интересно и с пользой провести время. Да, именно с пользой, ведь они развивают нестандартное программистское мышление, ставя его в сложное положение жестких ограничений возможностей языка, операторов, и, как правило, ужасного нечитабельного синтаксиса. Да, они неприменимы в реальной практике, но, тем не менее, большинство из них обладают тьюринговской полнотой, следовательно, вполне могут считаться полноценными языками программирования.
Кстати, в ближайшее время планируется серия постов по некоторым эзотерическим языкам.
Отчасти, по этой же причине, возникли эзотерические языки программирования. Brainfuck, Befunge и прочие весьма хорошо разгружают мозг после умственной работы, да и просто позволяют интересно и с пользой провести время. Да, именно с пользой, ведь они развивают нестандартное программистское мышление, ставя его в сложное положение жестких ограничений возможностей языка, операторов, и, как правило, ужасного нечитабельного синтаксиса. Да, они неприменимы в реальной практике, но, тем не менее, большинство из них обладают тьюринговской полнотой, следовательно, вполне могут считаться полноценными языками программирования.
Кстати, в ближайшее время планируется серия постов по некоторым эзотерическим языкам.
воскресенье, 23 января 2011 г.
Закономерные случайности
Увлекаясь компьютерной графикой, заметил, что комбинация правил и случайности может давать неожиданно красивые результаты.
С одной стороны, глядя на такие изображения очевидно их компьютерное происхождение, с другой — фактор случайности делает их неповторимыми и непредсказуемыми.
Еще подметил, что многократное повторение даже неказистых форм создает гармоничные рисунки, если видеть их целиком.



С одной стороны, глядя на такие изображения очевидно их компьютерное происхождение, с другой — фактор случайности делает их неповторимыми и непредсказуемыми.
Еще подметил, что многократное повторение даже неказистых форм создает гармоничные рисунки, если видеть их целиком.
пятница, 7 января 2011 г.
[Из песочницы] Нормальный алгоритм Маркова для деления чисел
Добрый день. Хотелось бы поделиться с Вами очень интересным вариантом ненормального прграммирования — составлением нормальных алгоритмов Маркова. Этот вариант программирования может служить великолепным умственным отдыхом от привычных языков и сред программирования.
Студенты, которых я имею возможность учить, кричат криком, что это сложно, но только до первого собственными руками сделанного рабочего алгоритма, потом это перетекает в очень интересные алгоритмические задачки.
Собственно, к теме этого поста: наша задача написать нормальный алгоритм Маркова для деления двух целых чисел с точностью 4 знака после запятой(для задания чисел пользуемся унарной системой исчисления). Например, вход: |/||||, выход: 0.25.
При этом у нас есть только одна операция — замена одной подстроки в исходной строке на другую. Кому интересно что это такое и как это работает — добро пожаловать под кат.
Студенты, которых я имею возможность учить, кричат криком, что это сложно, но только до первого собственными руками сделанного рабочего алгоритма, потом это перетекает в очень интересные алгоритмические задачки.
Собственно, к теме этого поста: наша задача написать нормальный алгоритм Маркова для деления двух целых чисел с точностью 4 знака после запятой(для задания чисел пользуемся унарной системой исчисления). Например, вход: |/||||, выход: 0.25.
При этом у нас есть только одна операция — замена одной подстроки в исходной строке на другую. Кому интересно что это такое и как это работает — добро пожаловать под кат.
вторник, 21 декабря 2010 г.
[Ссылка] Рождественская 3D елка в 1кб на javascript
Новый год (для кого-то рождество) и условия конкурса в 1 кб делают поистине чудеса.
Испанскому коллеге это вполне удалось Román Cortés.
В IE, как пишет автор, сие чудо не показывает.
Демо http://js1k.com/2010-xmas/demo/856
Исходник http://js1k.com/2010-xmas/source/856
Ссылка: http://habrahabr.ru/linker/go/110400/
Источник: Хабрахабр - Ненормальное программирование
Оригинальная страница: [Ссылка] Рождественская 3D елка в 1кб на javascript
Испанскому коллеге это вполне удалось Román Cortés.
В IE, как пишет автор, сие чудо не показывает.
Демо http://js1k.com/2010-xmas/demo/856
Исходник http://js1k.com/2010-xmas/source/856
Ссылка: http://habrahabr.ru/linker/go/110400/
Источник: Хабрахабр - Ненормальное программирование
Оригинальная страница: [Ссылка] Рождественская 3D елка в 1кб на javascript
вторник, 30 ноября 2010 г.
Обфускация HTML в один байт?
Задача:
- Открыть в Chrome или Opera страницу selectme.html (216 байт чистого HTML)
- Открыть исходник (Ctrl+U)
- Попытаться скопировать весь исходник и вставить в блокнот, например.
Подписаться на:
Сообщения (Atom)