• Web Worker Wars

      Web Worker Wars это разработанная мною игра для программистов JavaScript написанная, конечно же, на JavaScript.
      Разновидность игр Бой в памяти. Чем-то похожая на Google AI Challenge или HabraWars.

      Web Worker Wars

      Особенности и правила


      1. Игра представляет собой пошаговую стратегию для 2х и более ботов
      2. Каждый игрок пишет свой Web Worker, который принимает особые команды от движка игры и может возвращать действие
      3. На каждый ход бот имеет 4 очка действия и может распределять их на свои действия.
      4. Бот имеет ограниченное поле зрения (пример подсвечен синим на логотипе).
      — Все объекты, попавшие в поле зрения, передаются в callback действия и могут быть использованы в расчетах
      5. Пока бот может выполнять 2 действия:
      — передвижение на 1 клетку влево, вправо, вверх, вниз, стоимостью 1 ОД
      — прицельный выстрел(бьёт по клетке) на расстояние до 5 клеток, стоимостью 2 ОД, снимает 2 очка жизни или щита у врага или себя

      Далее подробные правила, пример воркера и демка.
      Читать дальше →
    • Решение японских кроссвордов в Wolfram Mathematica



      Японский кроссворд — это известная головоломка, ответом которой является рисунок. Что это такое и как это решать, можно почитать на Википедии. Я хочу показать, как можно написать программу, которая будет решать японский кроссворд в системе Wolfram Mathematica путем перебора.
      Читать дальше →
    • Решение японских кроссвордов одним запросом SQL

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

        Японский кроссворд — NP-полная задача, как и задача коммивояжёра, укладки рюкзака и др. Когда ее решает человек, следует последовательно определять гарантированно заполненные и пустые ячейки. Одну за другой вычеркивать колонки и строки, пока не сложится весь рисунок. Как же возможно запрограммировать решение подобной задачи на языке, который официально даже не является языком программирования, не содержит циклов и переменных? SQL — язык запросов, его главная задача — выбирать строки. Вот мы и будем генерировать множество всех возможных перестановок и, словно скульптор, отсекать все лишнее.

        укусить себя за пятку
      • Petrovich просклоняет русские имена

          Вам часто приходится иметь дело со склонением имён пользователей на русском языке? При рассылке писем, при отображении страниц и упоминаний, при генерации рекламных объявлений? Скорее всего, приходится изворачиваться и писать все сообщения в именительном падеже — Иванов Пётр Сергеевич.

          Это не всегда удобно, не всегда красиво, не всегда уместно. Русский язык одарён богатой морфологией, которая несколько затрудняет его автоматическую обработку. Всем известно, что антропонимы, как полагается именам существительным, подчиняются всем правилам словообразования.

          Для решения этой проблемы при использовании Ruby существует Petrovich — удобная легковесная библиотека для автомагического склонения русскоязычных имён, фамилий и отчеств.


          Склоняй меня полностью!
        • Эпопея о WD My Book Live, или «девайс-конфетка» с «печеньками»

          image

          Привет %username%! В начале этого года мне наконец-то исполнился четвертак. Поняв, что я стал взрослым ребёнком и нуждаюсь во взрослых игрушках, купил себе WD My Book Live на 3Tb ёмкости, который в нашем счастливом семействе убил сразу N зайцев. Счастью моему не было предела. Девайс подкупил своей ценой, железом и наличием полноценного Linux на борту. Однако, как оказалось позже, Linux Debian оказался не очень уж и полноценным, достаточно кастрированным и, судя по отзывам рядовых владельцев, любителем окирпичиться. Однако, благодаря инженерам из WD, девайс достаточно легко поднимается из состояния кирпича до состояния работоспособного устройства (пруф1 и пруф2). Но согласитесь, времена хард ресета с пассатижами из хозмага за углом давно миновали. Всё-таки эпоха нано-полимеров и инноваций. А значит и девайс хочется более не убиваемым.

          Я никак не являюсь линуксоидом и для меня Linux, по своей сути, тёмный лес! Поэтому, для начала, долго изучая интернеты, я запилил себе только mc и transmission, чего для первого раза мне хватило за глаза. А ещё я был поражён, как мне – человеку, впервые запустившему SSH — легко это удалось! Прошло полгода, я почитал форумы, посвящённые девайсу. Настал день “Д” и я, засучив рукава, принялся делать из своего девайса “конфетку”. И не простую, а “конфетку” с “печеньками”
          Подробнее под катом...
        • Как не переплачивать за Arduino и модули к нему

          image

          Честно говоря, меня всегда удручают посты, связанные с поделками на основе Arduino, а вернее, та их часть, где обсуждается, где приобрести сами платы Arduino и различные компоненты к ним — датчики, шилды, и прочие девайсы. Цена на Arduino UNO в российских интернет-магазинах (я не буду здесь их называть, если вы интересуетесь Arduino, то многие из них вы уже знаете) составляет в среднем $36, но вы удивитесь, что можно её купить за $12. Мелкие датчики, которые продают по $10..$15, можно купить за $1..$5. Где же такая «халява»? Ответ простой: eBay.
          Читать дальше →
        • Определение расстояния между географическими точками в MySQL

          При разработке современного сайта часто возникает необходимость реализовать функционал вывода близлежащих географических точек. Самым оптимальным способом решения этой задачи является перекладывание работы по реализации определения точек на плечи MySQL. Если конкретней, то нам будут нужны возможности пространственных расширений MySQL (до версии 5.0.16 эти расширения были доступны только для MyISAM, более поздние версии MySQL поддерживают работу пространственных расширений с InnoDB, NDB, BDB и ARCHIVE).

          Расстояние между точками будет вычисляться по формуле гаверсинусов. Формула позволяет получать расстояние между точками с очень низкой погрешностью (величина погрешности прямо пропорциональна расстоянию между точками, и не превышает 10-20 километров при вычислении очень больших расстояний, например между штаб-квартирой Google в Калифорнии (37.422045, -122.084347) и оперным театром в Сиднее, Австралия (-33.856553, 151.214696)).

          Читать дальше →
        • Вышел плагин jQuery Color версии 2 бета 1

          • Translation
          • Tutorial
          Ранее, в 2007 году, мы выпустили jQuery Color Plugin, и той поры он обеспечивал для вас возможности анимации цвета. Сейчас мы подготавливаем вторую версию этого плагина, в которой добавится API, RGBA, HSLA и ряд других возможностей. Настало время бета-версии! Репозиторий этого плагина находится по адресу github.com/jquery/jquery-color. А на code.jquery.com также доступны две версии плагина — несжатая и сжатая минификатором.

          Обзор новых возможностей

          RGBA


          Теперь мы поддерживаем формат RGBA у значений цвета. В тех браузерах, которые RGBA не поддерживают, ближайшее к элементу значение backgroundColor станет использоваться при вычислении промежуточной аппроксимации цвета. Хотя это не «настоящая» альфа-прозрачность, этот способ, по меньшей мере, обеспечит иллюзию альфы при взаимодействии с одноцветным фоном. Вот как выглядят браузеры Opera 10, Chrome 10, Firefox 3.6 и IE 6, когда в них запущен вон тот демонстрационный пример альфа-наложения:

          [Opera 10, Chrome 10, Firefox 3.6 и IE 6 демонстрируют альфа-наложение]

          HSLA


          Также мы теперь поддерживаем указание HSLA-значений цвета во всех браузерах, за исключением альфы, в поддержке которой применяем вышеописанные техники.

          API, удобный в употреблении


          Вместо простой группы приватных методов-утилит теперь используется вызов $.Color(), создающий новый объект Color. Новый объект Color можно проинициализировать несколькими различными способами: именем цвета, шестнадцатиричным кодом цвета, CSS-подобным значением RGBA или HSLA, массивом RGBA-значений или объектом с цветовым компонентом. Теперь есть и методы-помощники для каждого из цветовых компонентов, наподобие .red() и .hue(), позволяющие считать или задать его значение. В сочетании с функциями-помощниками (например, .toRgbString(), .transition() и .is()), объект $.Color отныне способен обеспечить все ваши цветовые нужды. Глядите README по адресу github.com/jquery/jquery-color там обзор всех вновь появившихся функций. Теперь jQuery.Color пригоден не только для анимации простых цветов: его API вы можете отныне использовать для сложных цветовых вычислений и анимаций!

          Немедленные примеры:
          Читать дальше →
        • PHP + Word

            image

            Что делать, если нужно создавать много Word файлов одинакового вида, но разного содержания? Например заполнять бланки, квитанции.

            Есть 3 варианта:
            1) использовать одну из библиотек для работы с Word документами
            2) сохранить документ в формате docx, открыть архиватором и внутри мы увидим "\word\document.xml" — чистый xml, с которым можно работать через str_replace (спасибо Enuriru за подсказку)
            3) использовать сторонний сервис, который сделает за меня большую часть работы

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

            Второй варинт хорош и прост, когда мы работаем с word документами в формате .docx, но к сожалению он не поддерживает формат .doc

            В процессе проработки третьего варианта, наткнулся на интересное решение LiveDocx

            Преимущества:
            — файл шаблона можно создать привычным способом через Word
            — представление документа в форматах doc, docx, rtf, pdf
            — не нужно заморачиваться с представлением Word документа через html или XML
            — простота подключения
            — надежность — сервис существует давно и под него даже есть готовая библиотека от Zend
            Недостатки:
            — в бесплатной версии ограничение на 250 генерируемых документов в сутки
            — шаблон нельзя менять (например нельзя сгенерировать таблицу с кол-вом строк, равным количеству элементов в базе)

            Читать дальше →
          • Техники сжатия кода

            • Translation
            Джед Шмидт, Томас Фухс и Дастин Диаз — достаточно известные в JavaScript-коммьюнити ребята в последнее время нашли себе новую развлекуху — писать полезные штуки размером не больше одного твита, то есть 140 байт. Даже домен зарегали — 140byt.es, куда приглашаются все желающие попробовать свои силы в написании супер-компактных функций.

            Естественно, в ход идут все самые изощренные способы и техники уменьшения размера исходника. У них есть вики-страничка с советами, которую я и решил перевести.

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

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