Привет! Приближается день программиста, и я спешу поделиться своими ненормальными наработками.
Японский кроссворд — NP-полная задача, как и задача коммивояжёра, укладки рюкзака и др. Когда ее решает человек, следует последовательно определять гарантированно заполненные и пустые ячейки. Одну за другой вычеркивать колонки и строки, пока не сложится весь рисунок. Как же возможно запрограммировать решение подобной задачи на языке, который официально даже не является языком программирования, не содержит циклов и переменных? SQL — язык запросов, его главная задача — выбирать строки. Вот мы и будем генерировать множество всех возможных перестановок и, словно скульптор, отсекать все лишнее.
Рубрика «ненормальное программирование» - 101
Решение японских кроссвордов одним запросом SQL
2013-09-06 в 6:54, admin, рубрики: oracle, sql, ненормальное программирование, японский кроссворд, метки: oracle, sql, японский кроссвордИ снова закинул старик невод… (парсинг хабра, продолжение)
2013-09-05 в 11:47, admin, рубрики: python, ненормальное программирование, словари, хабрахабр, метки: словари, Хабрахабр Примерно месяц назад я опубликовал пост Вернулся невод с тиной морскою..., речь там шла о сравнении частотных словарей Википедии и Башорга. В комментах было много идей насчёт того, как это сделать правильно, а так же просьб распарсить другие сайты — Луркмор и конечно же Хабрахабр.
Читать полностью »
Как не надо делать проверку валидности email
2013-09-04 в 7:41, admin, рубрики: валидация, Веб-разработка, ненормальное программированиеПредставьте на минутку, что вы — недавно принятый на работу программист, которому предстоит работать с популярной системой управления обучением (LMS) Hot4Learning. Ваш предшественник когда-то поработал над добавлением к системе возможности отправки email — для того, чтобы любой пользователь в школе мог отправить другому пользователю электронное письмо с помощью веб-интерфейса. Но, увы, судьба оказалась к нему неблагосклонна — его сбил автобус, и он так никогда и не завершил свой magnum opus, свою лебединую песню. Ваша задача — довести его дело до конца, добавив функцию валидации введенного email — чтобы можно было уверенным, что письма отправляются только в том случае, когда в качестве адресата вводится правильный адрес, привязанный к школе.
Приведем конкретный пример: допустим, Боб — студент в Университете Макгилла, и он должен иметь возможность отправить письмо на любой валидный адрес @mail.mcgill.ca
или @mcgill.ca
. Если адрес его подружки Джейн выглядит как jane.smith@mail.mcgill.ca
, то тогда Боб имеет полное право отправлять на него письма. В другом случае — скажем, если ее адрес jane.smith@mail.ru
— он, понятное дело, права на это не имеет, как и на отсылку писем на адрес thisisnotavalidemail@mail.mcgill.ca
.
Итак, ваша задача — реализовать эту возможность; при этом предполагается, что у вас есть список валидных адресов почты для конкретного учебного заведения.
Читать полностью »
Умное ксерокопирование с помощью МФУ Kyocera FS-1135
2013-09-04 в 6:16, admin, рубрики: kyocera, копирование, ксерокс, ненормальное программирование, метки: kyocera, копирование, ксерокс Копируем чеыре разворота паспорта на один А4 без танцев, но с помощью МФУ Kyocera FS-1135
Читать полностью »
Самые смешные комментарии в исходном коде
2013-08-28 в 14:30, admin, рубрики: исходный код, комментарии, ненормальное программирование, Программирование, юморНа StackOverflow был отличный пост точно на эту тему, но какой-то сверхусердный модератор, который должен остаться неназванным, удалил его (судя по всему, сейчас восстановлено — прим. пер.).
К счастью, у меня сохранилась возможность просмотреть все удаленные комментарии. Вот некоторые из моих любимых.
//
// Дорогой мейнтейнер:
//
// Когда ты закончишь «оптимизировать» эту подпрограмму
// и поймешь, насколько большой ошибкой было делать это,
// пожалуйста, увеличь счетчик внизу как предупреждение
// для следующего парня:
//
// total_hours_wasted_here = 42
//
25 дней кода или проект Синий пони
2013-08-23 в 3:17, admin, рубрики: android, postgresql, ruby on rails, Геоинформационные сервисы, ненормальное программирование, Спортивное программирование, метки: android, postgresql, ruby on railsВы регулярно пользуетесь услугами такси?
Вы замечали, что с некоторыми таксистами ездить комфортнее, чем с другими? Это может выражаться в более чистом салоне, большей любви к машине или чем-то еще. Чаще всего такию люди не являются профессиональными таксистами, а лишь время от времени подрабатывают в дополнение к основной деятельности.
А ведь было бы не плохо иметь возможность добавлять таких таксистов в друзья и при следующей поездке посмотреть на карте, кто из них сейчас работает и где находится?
Читать полностью »
Шахматы на чистом sed
2013-08-22 в 9:45, admin, рубрики: bash, sed, ненормальное, ненормальное программирование, шахматы, метки: bash, sed, ненормальное, шахматыВ Линуксе и многих других системах существует утилита командной строки sed («сед») — это несложный редактор, которые преобразует текст, попадающий ему на вход при помощи несложных команд.
Его, в основном, используют для всяких мелких нужд в bash-скриптах — заменить одну строку на другую, что-то удалить и так далее. Если говорить терминами более привычных языков, в «седе» доступны две строковые переменные, в одной из которых можно что-нибудь проверять, заменять, а со второй только обмениваться данными из первой, метки, команды переходов на метки и группировка команд, плюс ещё несколько менее полезных.
Вот на этом безобразии я решился написать шахматы, причём такие, чтобы можно было бы играть с компьютером.
Читать полностью »
Создаём Zoomquilt
2013-08-21 в 11:42, admin, рубрики: python, автореферентность, анимация, Анимация и 3D графика, квайн, ненормальное программирование, метки: автореферентность, анимация, квайнЗахотелось продолжить серию постов о всяких интересных автореферентных штуковинах и решил я написать о жанре Zoomquilt. Сделал поиск, увидел, что один пост на Хабре уже есть. Подумал, подумал и решил, что пост я всё равно напишу, но он будет технический, о технологии создания Zoomquilt.
Для начала собственно о жанре. Тут проще показать чем рассказывать.
zoomquilt2.madmindworx.com/zoomquilt2.swf
www.deviantart.com/art/kopfsalat-digital-edition-30069104
Приближаемся к картинке и вместо того, чтобы в какой-то момент увидеть пиксели величиной с кулак, видим следующую картинку, повторяем процедуру многократно (на самом деле, выглядит это как один вполне себе плавный процесс и если художники хорошо поработали, то «стыков» мы вообще не увидим) и в итоге приходим к первоначальной картинке. В общем мультиквайны, только для художников.
А как такая штука делается? Конечно можно нарисовать это всё покадрово, более того, некоторые талантливые аниматоры вполне бы с этим справились. Но практически во всех существующих произведениях этого жанра указано, что это плоды коллективного творчества. Обычно есть коллектив художников, координатор проекта и программист, который собственно собирает это всё вместе и пишет интерфейс.
Дальше о технологии создания. Под катом много картинок.
Читать полностью »
Скрипт проверки наличия свободных дат в посольстве
2013-08-21 в 8:37, admin, рубрики: python, selenium-webdriver, автоматизация, КодоБред, ненормальное программирование, скрипт, метки: python, selenium-webdriver, автоматизация, скриптПредисловие:
В Беларуси стоит острая проблема с получением виз в Еврозону (т.е. Шенген). Все из-за того, что Польское посольство предоставляет так называемые мульти-визы за покупками (т.е. многократные). Регистрация производится на сайте посольства онлайн. Но вся проблема состоит в том, что свободных дат не словить. Единственный вариант — круглосуточно чекать страницу, и если появится дата — быстро «ловить» ее и заканчивать регистрацию. Т.к. свободного времени для круглосуточного чека нет, было принято решение об автоматизации данного процесса.
Сразу оговорюсь, что существуют различные скрипты, которые вылавливают свободные даты и за которые люди получают деньги. Мой скрипт не претендует на их место по быстроте, качеству и т.д. Данный скрипт был сделан только для себя, никакой коммерческой и иной выгоды я не преследовал.Читать полностью »
Парсер CSS для .NET, написанный на C# (зачёркнуто) регулярных выражениях
2013-08-20 в 8:20, admin, рубрики: .net, c++, css, Firefox, mozilla, мазохизм, ненормальное программирование, Программирование, метки: .net, c++, css, firefox, mozilla, мазохизм Понадобилось мне однажды распарсить CSS, чтобы вынуть @import
, url()
. Но для .NET были только разной степени кривоты поделки. Лучшей библиотекой была ExCSS, но она загибалась на таких тривиальных вещах, как медиа-запросы. Поэтому я решил заполнить пробел.
Были варианты: расковырять Chrome, расковырять Firefox, расковырять левую библиотеку. Нужно было гарантированное качество и регулярное обновление, поэтому последний вариант отпадал. В Chrome парсинг CSS и HTML генерировался на основе грамматик, и беглое изучение разнообразия инструментов для .NET повергло в уныние, что уж говорить о совместимости инструментов, поэтому Chrome отпал. Остался Firefox с вручную написанными парсерами.
И здесь начинается интересное: дабы сохранить хоть какую-то возможность обновлять код при выходе новых версий файрфокса, я решил не единожды переписать сорцы, а натравливать на плюсовые сорцы тонны регулярных выражений, и добиваться компилируемости плюсового кода только регулярками.
Я вижу косые взгляды. У кого-то уже тянется рука набирать 03…