• Космические рейнджеры: Революция

      Здравствуйте. Уже прошло 2.5 месяца с выхода долгожданного обновления легендарной игры, и я удивлен, что такая новость обошла хабр стороной, особенно учитывая количество поклонников. Мод, под названием «Революция», был создан командой, состоящей из разработчиков и фанатов. Мод не является официальным, из за проблем с лицензией, но придает игре новое дыхание. Добавлены куча вещей, квестов, планетарных боев, скриптовых ситуаций, новая музыка, балансировка сил ИИ и многое другое.
      О конкретных изменениях можно прочитать под катом.
      Читать дальше →
    • 71 фотография из жизни Альберта Эйнштейна

        imageВ твиттере популярного ученого физика-теоретика Митио Каку, который, кстати, специализируется на Теории струн (Привет Шелдон!), проскочил твит о его подборке фотографий, рукописей и писем Альберта Эйнштейна. Предлагаю и Вам ознакомится с этой подборкой из 58 (+ 13 фото я добавил из других источников) фото, которые я выложу под катом, или же Вы сможете посмотреть их прямо в альбоме Митио на Facebook.
        Читать дальше →
      • Грамотная настройка сервера отправки почты для скриптов PHP, настройка функции mail()

          В этом топике вы узнаете, как грамотно настроить, сервер исходящей почты и в частности функцию mail() в PHP. Сам являюсь жутким педантом. Люблю, что бы везде было все на своих местах, не терплю халтуры. Увидев один раз полную чушь в заголовках письма со своего сервера я разобрался с этим кардинально и безоговорочно. Под грамотной настройкой я подразумеваю такую, которая удовлетворяет потребности спам фильтров крупных почтовых систем, и просто выглядело красиво и осмысленно.

          Как известно протокол SMTP не подразумевает никаких средств защиты от спама и аутентификации пользователя, поэтому крупными и не очень компаниями были придуманы «фиксы» безопасности протокола.
          Если вы устанавливаете выделенный сервер с доменом размещенным на нем, очень рекомендуется выполнить данные настройки, что бы все было как надо.

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

          Название заголовка выбрал именно такое, так как вначале своего пути я искал что-то вроде этого. Настраивать будем postfix, php, dns (ptr, spf), и другое.

          Эта статья будет интересная людям, настраивающим выделеные сервера, но не менее интересна для обычных программистов.
          К слову данную инструкцию я использую для своих проектов. Системы автоматизированного получения приглашений и получения виз в страны Шенгена: https://goingrus.com/ru, весь софт крутится на виртуальной машине.

          Подробности под катом
          Читать дальше →
        • Флаги 254 стран одним спрайтом

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

            Вполне возможно, что однажды этот набор сохранит кому-нибудь много времени при работе над сайтом.

            И был бы этот топик топиком-ссылкой, да по необъяснимым причинам не разрешает Хабр в топиках-ссылках указывать авторов, заслуживающих похвал. Так что вот они ссылки:
            Описание: artpolikarpov.ru/projects/flags
            Архив с флагами: artpolikarpov.ru/projects/flags/flags.zip
          • Создание объектов в Javascript

            Гибкость Javascript позволяет создавать объекты множеством способов. Но как это нередко случается, разнообразие таит в себе множество подводных камней. Из этой статьи Вы узнаете о том, как разглядеть и обогнуть эти опасные рифы.
            Читать дальше →
          • Текстурирование спрайтов с помощью (dis)placement map


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

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

              Суть в том, что в изучаемой мной игре есть большое количество анимированных спрайтов человечков (как я изначально считал — заранее отрендеренных). Человечки разные (по-разному одетые, разных цветов и т.п.).
              Читать дальше →
            • Обзор бесплатных библиотек для Flash/Actionscript 3.0 разработчиков

                Появление в 2006 году третьей версии языка ActionScript заметно повлияло на развитие рынка флэш-приложений. Смещение акцента с создания дизайнерами небольших флэш-приложений в сторону разработки более сложных программных продуктов потребовало привлечения в отрасль все большего числа профессиональных программистов. Поддержка ООП, пакетов, пространства имен и другие нововведения породили создание различных универсальных и узконаправленных библиотек, которые служат основой для многих проектов.
                Данная статья представляет собой обзор наиболее популярных и полезных библиотек, которые могут стать отправной точкой для начинающих флэш-разработчиков, а также оказаться полезными для профессионалов.
                Читать дальше →
              • Трехмерный движок для Флеша — Papervision3D. Как и с чем его едят



                  Papervision3D — это библиотека классов для ActionScript 3.0, которая позволяет создавать полноценные 3D флеш-ролики.
                  Таким образом пользователю не требуется качать какие-то альтернативные плагины (как это было с VRML, например), кроме собственно Flash Player'a.

                  Итак, что же повзоляет нам Papervision3D:

                  — Добавлять во флеш-ролик встроенные примитивы: Plane, Sphere, Cylinder, Cone, Cube, Paperplane, Arrow
                  — Импортировать модели созданные в 3D-редакторах, вместе с анимацией.
                  — Накладывать на объекты в качестве материалов однородные цвета, битмапы, мувиклипы и даже потоковое видео
                  — Использовать источники света
                  — Накладывать встроенные во флеш фильтры (Blur, Glow и т.п.) на 3D объекты
                  — Управлять отдельными вершинами и фейсами объектов. Пример
                  — Назначать на 3D объекты и материалы обработчики событий (клик, наведение мышки и т.п.)

                  Не стоит забывать, что Papervision3D требователен к ресурсам пользователя, так что не стоит загружать ролик большим количеством моделей и придерживаться максимального количества фейсов 3000

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

                  Читать дальше →
                • О Робокассе наглядно

                    Вчера вечером добавил интерфейс взаимодействия с Робокассой в свою CMS.

                    Кратко о платежной системе


                    Робокасса — интегратор платежных систем. Она позволяет организовать прием платежей в пользу магазина через множество известных электронных валют (Webmoney, ВКонтакте, ЯндексДеньги, Деньги@Mail.Ru, RBK Money и другие), через терминалы оплаты ЭлексНет, и, самое главное — через SMS.

                    Доступно два варианта подключения — для юридических лиц и ИП, с выводом денег из системы на расчетный счет и для физических лиц с возможностью вывода в электронные валюты.
                    Читать дальше →
                  • Установка SVN практически на любой хостинг (static svn)

                      0. Интро

                      Практически всегда хостинг не предусматривает поддержку svn для конечного пользователя или эта возможность идет в качестве дополнительной платной опции, а обновлять проект с большим количеством файлов — занятие не из легких. Тем более, когда изменения затронули много связанных между собой файлов. Старый вариант через фтп или закачка архива с последующей его распаковкой не особо подходит, так как влечет за собой вероятность возникновения ошибок. Будь-то недокачка какого-то файла (ftp) либо неверные права на папки\файлы (архивом). Все это для примера. Но есть более удобный способ решить эту проблему. Установить svn на хостинг.
                      Читать дальше →
                    • syncTranslit плагин

                        Во многих веб проектах используются friendly urls. Например, вместо id статьи в url испольуется его текстовый идентификатор (slug). Обычно slug генерируется автоматически на серверной стороне при создании статьи. Но если вы хотите иметь возможность задавать slug самостоятельно (через форму) — можете использовать мой плагин syncTranslit.

                        syncTranslit plugin
                        Читать дальше →
                      • Квантификаторы в регулярных выражениях

                        • Tutorial
                        imageРегулярные выражения — это арифметика для алгоритмов. Они доступны во многих языках программирования, редакторах и настройках приложений. Как и сложение с умножением они просты в использовании.
                        Но для правильного и эффективного использования regexp-ов нужно понимание того, как они работают. Я постараюсь описать принцип работы регулярных выражений, покажу в каких случаях бывают проблемы и как их решать.

                        В продолжение общих советов.
                        Читать дальше →
                      • MySQL Profiler: простой и удобный инструмент профилирования запросов

                          Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL. ;-)

                          Хочу представить вашему вниманию фичу MySQL — профайлинг.
                          Появилась она начиная с версии 5.0.37.

                          Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов)
                          и почему она тормозит.

                          И раньше подобный функционал был доступен, но пользоваться журналом запросов не в пример сложнее.

                          Итак, как пользоваться:


                          Читать дальше →
                        • Список полезных инструментов для php разработчика

                          • Перевод
                          PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
                          Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
                          Читать дальше →
                        • Слушаем вызовы функций в Javascript

                            Многие знают о механизме Event-Dispatcher-Listener'ов, реализованному во многих языках программирования. Я же создам подобный механизм не для Event'ов, а для любого метода объекта JavaScript — Object.
                            Я не претендую на оригинальность, нет. Основная цель статьи — рассмотреть интересные механизмы прототипирования в JavaScript, создание декораторов и, собственно, постараться хоть немного раскрыть мощь и гибкость это чудесного языка, который так часто обижают и недооценивают.

                            UPD1: краткое содержание:
                            1. Создание декоратора на JavaScript
                            2. Создание механизма Function call listener с помощью декораторов

                            UPD2: от 09.06.2009
                            В конце статьи я добавил раздел Update: Decorator Mark II. В нём — исправления и улучшения (я не перекраивал всю статью из-за этого)

                            Итак, первый (и, надеюсь, не последний) рецепт в моей поваренной книге JavaScript.
                            Перейти к рецепту
                          • Сверхжадные квантификаторы

                              В статье Regexp — это «язык программирования». Основы была поставлена задача: написать регулярное выражение, находящее в цепочке символов текст в двойных кавычках, причем внутри кавычек "..." могут быть и сами символы ", если они экранированы обратным слэшем, например:
                              one two "foo:=\"quux\"; print" three "four"
                              Здесь наш регекс должен найти соответствие цепочке
                              "foo:=\"quux\"; print"
                              Автором (той статьи) было предложено такое решение:
                              / " ( \\" | [^"] )* " /x
                              (здесь и далее синтаксис Perl; ключ /x означает, что пробелы в регексе не учитываются, мы добавили их лишь для наглядности, чтобы части регекса не слились в единый «модемный шум»).
                              Этот регекс работает в том случае, когда есть совпадение (текст в кавычках). Проблема же в том, что он находит текст в кавычках даже тогда, когда текста в кавычках (согласно нашим правилам экранирования обратным слэшем) просто нет. Например, в цепочке "\" регекс находит соответствие (равное всей строке "\" ), хотя его быть не должно: кавычка открыта, экранированная кавычка… а вот закрывающей-то кавычки нет.
                              Ситуацию легко исправить, исходную задачу решить несложно, внеся несколько простых изменений в регекс… но речь не об этом, а о том, что если у вас в руках современный инструмент, т. е. движок регексов (свежая версия Perl, Java или PHP с PCRE), то вы можете «исправить» описанный регекс, добавив в него всего лишь 1 символ. Какой? Куда? Почему? Если знаете ответы, то читать дальше вам не стОит ;-)
                              Читать дальше →
                            • Regexp — это «язык программирования». Основы

                                Несколько лет назад я думал, что regexp осуществляет линейный поиск по тексту, но какое моё удивление было, когда я понял, что это не так. Тогда я убедился на собственном опыте, что от простой смены местами а и b в схеме (...a...)|(...b...) поменялся полностью результат.

                                Поэтому сейчас я расскажу, как на самом деле работает regexp.
                                Поняв эти простые принципы и как оно работает, вы сможете писать любые запросы.
                                Для примера, я разберу сложную при первом приближении, но на самом деле простейшую задачу – выявление всех строк в кавычках.
                                Читать дальше →
                              • Плагин загрузки картинок для TinyMCE

                                  Несколько дней назад я писал о выходе новой версии своего плагина для TinyMCE, многие уже успели его потестировать, за что им огромное спасибо, все критические баги были исправлены.
                                  Читать дальше →
                                • 7 простых способов протестировать кроссбраузерную совместимость

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

                                  Всего лишь год назад, хороших средств для тестирования кроссбраузерной совместимости сайтов практически не было. Инструменты, как правило, обладали серьезными недостатками – высокой ценой, скромными возможностями или затрачиваемым временем. Однако, в последнее время, в мире тестирования браузеров появилось много новичков, и некоторые из них являются прекрасными сервисами.

                                  В этой статье, мы рассмотрим 7 простых инструментов для тестирования кроссбраузерной совместимости; инструментов, которые справляются со своей задачей очень легко, и к тому же, каждый из этих инструментов можно использовать бесплатно.
                                  Читать дальше →