Обновить
151.79

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

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

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

Dropbox Chat

Время на прочтение1 мин
Количество просмотров5.7K

Лирическое вступление


Как это обычно бывает в воскресное утро, а тем более когда на улице опять неважная погода, начинаешь искать себе интересное занятие. И как-то бросилось мне в глаза, что Dropbox опять синхронизирует какие-то файлы, и очень быстро. На столько быстро, что можно сделать не что иное, как… чат!
Довольно странная идея, но раз захотелось — нужно сделать.
Читать дальше →

Мониторинг сайта с помощью Google Docs

Время на прочтение2 мин
Количество просмотров13K


Автор блога Digital Inspirations Амид Агарвал (Amit Agarwal) опубликовал скрипт для Google Docs, который опрашивает статус сайта и заносит ответ в ячейку таблицы. Таким образом, можно сделать сервис мониторинга своими руками. Google Docs позволяет запускать скрипт с минутным интервалом и получать уведомления на email.
Читать дальше →

Поддержка камеры и распознавание цифр в браузере «Опера»

Время на прочтение3 мин
Количество просмотров6.7K
Я вчера заморочился на отличненько. Мне показалось скучным и грустным вводить цифры счёта за квартиру в окошко «Госуслуг» и решил сделать автоматическую распознавалку чисел, попутно изучив работу с камерой из браузера.
Читать дальше →

Школьные забавы или мультиплеерная игра без сокетов и p2p

Время на прочтение4 мин
Количество просмотров4K
Здравствуйте, дорогие Хабражители!

Сразу хочу оговориться, что эта статья создана just for fun, и не претендует на какое-либо обучающее свойство.

В нашей школе информатику преподают с 6 класса, но ничему практически не научили, ибо мы так дружно и старательно форматировали тексты в Word'e, что закончили его изучать только к 9 классу. Было несколько уныло, и я занялся программированием. Помню, как копипастил «Hello, World!» из книжки по С++, потом первый калькулятор, потом еще калькулятор, затем познал ActionScript, сделал пару жутких игр, ну а потом обленился.
После очередного скучного задания по Excel, мы с другом решили воплотить нашу давнюю идею — сделать мультиплеерную игру. На школьных компьютерах стоял еще Macromedia Flash 8, Borland Delphi 7, и в другом конце класса на мониторе блестела эмблема Windows Server 2003.
Читать дальше →

Автоматизированное копирование 3.5" дискет на основе Arduino

Время на прочтение1 мин
Количество просмотров5.1K


Наверное, на Хабре есть еще несколько человек, которым приходится иметь дело с дискетами, хотя бы иногда. Большинство из нас забыли эти носители информации, как страшный сон, перейдя на современные, более емкие и надежные флешки, компакт-диски, облачные хранилища данных. Но есть люди, у которых до сих пор хранятся какие-либо ценные данные на дискетах (на днях найдены исходники «Принца Персии» на дискетах, ага).

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

Цзяньшицзы и tcl

Время на прочтение4 мин
Количество просмотров5.2K
Есть такой редкий малоизвестный язык программирования tcl. В википедии он расписан хорошо, но при написании программы возникнут вопросы.
Цзяньшицзы — это такая китайская(судя по названию) игра, переводится как «выбирание камней», интересна сама по себе: есть две кучки камней с любым количеством камней, играют двое. Каждый игрок может взять любое число камней из любой кучи, а также равное количество сразу из обоих. Побеждает тот, кто возьмет последний камень. Более подробное описание тут. Игра на сохранение баланса: с одной стороны, нужно чтобы числа в кучах различались, с другой, чтобы различие было не слишком большим. Начнем с того, что игра имеет выигрышную стратегию, происхождение которой мы рассматривать не будем. Возьмем лишь краткое описание. Существуют сочетания размеров куч, при которых игрок, который будет делать следующий ход, проигрывает.




Квадратные скобки обозначают взятие целой части. Нет, первая формула — это не числа Фибоначчи, хотя коэффициент тот же, но тут арифметическая прогрессия, а не геометрическая. Сразу заметим, что разница между числами пары составляет n.

Ранее на хабре были Реверси на TCL в 64 строки и Пятнашки на TCL в 10 строк, в которых был компактный и красивый код, здесь вы такого не увидите. Также он, возможно, далек от правил хорошего тона. Вобщем, если вам что-то покажется говнокодом, скорее всего так оно и есть. С другой стороны, это даже хорошо, потому что будет что улучшать в дальнейшем. Отчасти из-за того, что язык для меня новый, отчасти чтобы было удобнее делать пояснения. Также отсутствуют необязательные проверки.
Далее будут идти куски программы. Она далеко не оптимальна, но показывает особенности языка и работает.
Читать дальше →

Bitbucket анонсировали парное программирование — Spooning

Время на прочтение1 мин
Количество просмотров5K

Подробности можно узнать тут.
Spooning происходит от англ spoon(ложка) по аналогии с forking — fork(вилка)
Читать дальше →

Конспект монографии по λ-исчислению

Время на прочтение7 мин
Количество просмотров5.9K
Данный текст представляет собой чрезвычайно сжатый конспект классической монографии по λ-исчислению (Х. Барендрегт, «Ламбда-исчисление. Его синтаксис и семантика», перевод с английского Г. Е. Минца под редакцией А. С. Кузичева, Москва, «Мир», 1985). Он может оказаться интересен всем тем, кто планировал взяться за систематическое изучение данной темы, уже в общих чертах ознакомившись с ней, но откладывал из-за сложной структуры основной монографии, определения и основные результаты в которой довольно разрозненны. Здесь мы попытаемся сделать изложение, напротив, абсолютно линейным, и, конечно, несравнимо более коротким, избегая лишних определений и примеров, а сосредоточившись на необходимых терминологии, обозначениях и утверждениях, которые, в свою очередь, изложены близко к оригинальному тексту. Мы начнем от определения системы λβη, то есть классического бестипового экстенсионального λ-исчисления. Затем перейдем к комбинаторной логике, теореме о неподвижной точке и синтаксическому сахару. Наконец, заключительная часть конспекта — построение топологии на выражениях этой системы, призванной объяснить кажущееся противоречие: отображения множества выражений в себя содержатся в самом этом множестве при его счетности. На самом же деле, множество наделяется надлежащей топологией, в которой выражения представляют собой непрерывные отображения.
Читать дальше →

Исследование платформ для сервера minecraft. Создание собственного сервера Minecraft

Время на прочтение13 мин
Количество просмотров37K

Содержание


1. Содержание
2. Цели и задачи
3. Выбор платформы для сервера
4. Описание проекта
5. Выводы и перспективы
6. Инструкция для пользователей
7. Список литературы

Цели и задачи


Цель
Создать популярный игровой сервер для игровой программы minecraft.
Читать дальше →

Будущее информационного развития. Утопия или конец света?

Время на прочтение5 мин
Количество просмотров6.4K
image
Думаю каждый, хотя бы раз задумывался на тему — к чему же приведет развитие информационных технологий, и как это повлияет на нашу с вами жизнь. Хочу вам представить, по моему мнения, очень вероятный ход событий, не такого уж и далёкого будущего.

Очень часто человеческий мозг сравнивают со своего рода компьютером — устройством, которое способно считывать, запоминать, хранить, обрабатывать, воспроизводить информацию. Но как устроен этот человеческий компьютер, до сих пор является загадкой. До конца не известны принципы его работы. Хотя уже сформировалось представление, как информация хранится и обрабатывается, какие области существуют и за что отвечают, но, к сожалению, мозг все еще остается черным ящиком.

А теперь давайте представим себе
что же будет дальше

Условия if...else

Время на прочтение3 мин
Количество просмотров5K
image
Доброго времени суток Хабралюди!

Сегодня для меня великий день.
В вопросах я писал о краткой справке для новичков и профессионалов, думалось мне что я сейчас быстро окунусь в язык, сделаю всем добро и пойду дальше изучать свой Perl.
Но как всегда всё пошло не так...
Читать дальше →

Рекурсивные функции — создание собственной математики (Scala)

Время на прочтение10 мин
Количество просмотров17K
Добрый день, Хабр!

Столь претензионным заголовком я хочу начать статью про одну из многих моделей исчисления (Computational model) — рекурсивные функции. В первой части этого поста мы разберем (в кратце, ибо подробно все расписано на Википедии) теоретическую составляющую этой модели (примитивная рекурсия), во второй же половине мы попробуем претворить данную модель в жизнь (частично) с помощью языка Scala.

1. Рекурсивные функции — что это?


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

Изучение английского и старый добрый CMD

Время на прочтение7 мин
Количество просмотров4.9K
Сенсация! Сенсация! Батники позволят вам выучить английский за 10 дней Этот пост посвящен написанию скрипта для достижения крохотной личной и сугубо прикладной цели, но, как и всегда при взаимодействии с cmd, сама цель гораздо менее интересна тех странных способов и удивительных путей (какой приятный эвфемизм для так и напрашивающегося выражения), которыми она достигается.

Итак, пост для извращенцев-некрофилов, изредка развлекающихся воскрешением медленно разлагающихся bat-файлов ради удовлетворения своих странных потребностей

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

Сетевое обращение к библиотекам и рантайм-формирование вызовов функций

Время на прочтение5 мин
Количество просмотров1.4K
Хочу поделиться историей из профессиональной деятельности, которую можно заслуженно поместить в блог с именем crazydev :) Это рассказ о необычных решениях (тех, что я попытался описать в двух словах в заголовке), к которым меня вынудили прийти еще более необычные ограничения и требования.


И вот как-то так, через хитро закрученную ***у, оно и работает ©
Читать дальше →

Вебсервер nginx + fastcgi-wrapper + matlab

Время на прочтение2 мин
Количество просмотров6.3K

Сегодня я не в первый раз задался вопросами: какие языки программирования пригодны для веба, и имеет ли смысл решать какую-то узкую задачу способом, который на первый взгляд для этого не подходит? Мне захотелось попрактиковаться, сделав что-нибудь обычное необычным способом.


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

Автоматическое добавление keywords к файлам в TortoiseSVN под Windows

Время на прочтение3 мин
Количество просмотров2.4K
В Subversion существует функциональность автоматической подстановки встроенных ключевых слов. Данная возможность позволяет добавить в файл, например, такую информацию как последний пользователь редактировавший файл, ревизию и дату модификации.
В данный момент эта функциональность сильно ограничена, но тем не менее может быть весьма полезной. Одно из основных ограничений – необходимость добавлять обработку ключевых слов для каждого нового файла. Это же относится к переименованным и перемещенным файлам (SVN обрабатывает их как новые).
Подробности

Вам не страшно открывать редактор?

Время на прочтение13 мин
Количество просмотров3.2K
В какой-то момент я стал замечать, что пишу более качественный: оптимальный, логичный и читаемый код, но пишу его медленно. По крайней мере, куда медленнее, чем лет 15 назад. Да, на старый код без слёз не взглянешь: всё можно сделать оптимальнее и, по крайней мере, читабельнее. Но код был написан быстро.

Проблема в контроле. Я стал жестче и глубже контролировать код и… стал тратить на этот контроль слишком много ресурсов.

Основной принцип прост. Если контролю подлежит 10-20% случаев, то на контроль надо тратить… 0% ресурсов. Баги и переписывания всё равно будут. Но лучше разделить кодирование и отладку и на время кодирования об ошибках вообще забыть.
Читать дальше →

Виртуальные функции в C

Время на прочтение4 мин
Количество просмотров29K
Недавно мне задали вопрос: как бы я реализовал механизм виртуальных функций на языке C?

Поначалу я понятия не имел, как это можно сделать: ведь C не является языком объектно-ориентированного программирования, и здесь нет такого понятия, как наследование. Но поскольку у меня уже было немного опыта с C, и я знал, как работают виртуальные функции, я подумал, что должен быть способ сымитировать поведение виртуальных функций, используя структуры (struct).

Краткое пояснение для тех, кто не знает, что такое виртуальные функции:
Виртуальная функция — это функция, которая может быть переопределена классом-наследником, для того чтобы тот имел свою, отличающуюся, реализацию. В языке C++ используется такой механизм, как таблица виртуальных функций
(кратко vtable) для того, чтобы поддерживать связывание на этапе выполнения программы. Виртуальная таблица — статический массив, который хранит для каждой виртуальной функции указатель на ближайшую в иерархии наследования реализацию этой функции. Ближайшая в иерархии реализация определяется во время выполнения посредством извлечения адреса функции из таблицы методов объекта.


Давайте теперь посмотрим на простой пример использования виртуальных функций в C++
Читать дальше →

Использование bat файлов для создания «Заданий по расписанию»

Время на прочтение3 мин
Количество просмотров46K
Продолжаю тему создания нетривиальных bat-файлов для тривиальных задач, начатую здесь.

Наверняка многие сталкивались с задачей, когда для каких-либо целей в ОС Windows необходимо создать задание, выполняемое по расписанию (scheduled task).
Для этих целей имеется простой графический интерфейс. Однако как поступить, если задание должно создаваться автоматически?
Попробуем решить эту задачу с использованием примитивного bat-скрипта, который будет выполняться в практически любой версии Windows.
Читать дальше →

Консольный проигрыватель .wav для pc-speaker в Linux

Время на прочтение9 мин
Количество просмотров8.4K
Давно хотел написать проигрыватель для pc-speaker и чтобы не только ноты и монофонические мелодии. Но в то время когда это было актуально (DOS — навсегда!) у меня не было ни знаний, ни способностей, ни помыслов. Позже я не смог пробиться к нему сквозь Windows DDK и продолжал тихо пищать в стиле QBASIC SOUND. Да и актуальность pc-speaker как звукового устройства стала нулевой, гордый speaker превратился в beeper и buzzer. Однако он никуда не исчез из ПК (попутно пережив все дисководы) по прежнему давая о себе знать при включении и сообщая об ошибках. Так можно ли в современном программно-аппаратном user-space окружении проиграть полифоническую мелодию или голос на pc-speaker? Конечно можно — Си и Linux нам в этом помогут.
Посвящается, мужику в шляпе и очках, посылающему всех в известном направлении (неизвестного мне автора, всё хорошо работает в DOSBox).
Читать дальше →

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