Релиз Ruxe Engine 1.9

slow

В то время, пока все ждут хоть каких-то вестей об альфе второй версии… Сообщаем о релизе Ruxe Engine 1.9!

Ruxe Engine 1.9 задумывался как работа по шлифовке «классического» Ruxe Engine и доведение его до состояния завершённости, чтобы мы приступили к разработке второй версии Ruxe Engine с чистым разумом, открытым для новых идей.

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

Ссылка за скачивание Ruxe Engine 1.9: http://ruxe-engine.ru/download/
Инструкция по обновлению: http://ruxe-engine.ru/upgrade/
Мобильное приложение: http://ruxe-engine.ru/mobile/

Полный список изменений на нашем форуме: http://ruxe-engine.ru/forum/viewtopic.php?f=10&t=268&p=3696#p3696

Работа форума Ruxe Engine восстановлена

php7

На сервере обновил PHP 5.5 до PHP 7.0 и выяснилось, что форумный движок на текущей стабильной версии PHP ведёт себя некорректно. Увы, но поддержка PHP 7 заявлена только в следующем релизе форумного движка, и на сегодня релиз до сих пор не состоялся. Поэтому заапдейтил до предрелизной версии, ибо ждать больше нет сил. Тем не менее, при беглом осмотре ошибок больше замечено не было. Не обессудьте за медленную реакцию, большой завал дел. Если ещё не утихло желание общаться на форуме, возвращайтесь, на Ruxe Engine 2 ещё есть планы и заморожен — не значит отменён.

Ссылочка на форум для ЛЛ: http://ruxe-engine.ru/forum/

Суперскоростной Symfony с помощью nginx

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

Фреймворки, такие как Symfony, потенциально позволяют создавать суперскоростные приложения. Мы уже видели один способ как добиться этого (путём превращения приложения в HTTP сервер), другой способ заключается в установке обратного прокси перед ним.

В данной статье мы возьмём Symfony приложение и увидим, как увеличить его производительность в 140 раз с помощью nginx.

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

Генератор запоминающихся паролей теперь и на Android!

google-play-badge Screenshot_2016-06-01-16-01-42 Screenshot_2016-06-01-16-03-11 

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

Тогда я написал свой генератор паролей с «играми и девицами», который генерирует легко запоминаемые пароли — ahrameev.ru/password.

Встречайте его мобильную версию! Сгенерированный пароль вы можете скопировать в буфер обмена нажатием кнопки «Копировать» и вставить в любое приложение.

Почему PHP-разработчики думают, что MVC – это архитектура приложения?

Ранее я указывал на то, что Model-View-Controller представляет собой паттерн пользовательского интерфейса, а не архитектуру приложения. Но откуда у PHP-разработчиков возникла идея, что MVC – это в первую очередь архитектура? (Это можно сказать обо всех разработчиках серверной части, не только о PHP)

Я одно время думал, что MVC — это архитектура. Даже после прочтения «Каталога шаблонов корпоративных приложений» Фаулера и, несмотря на то, что MVC предназначался для пользовательского интерфейса, я полагал, что всё правильно понял и делаю «приложение пользовательского интерфейса». Но это было не совсем так; правильнее было бы сказать, что я смешивал проблемы пользовательского интерфейса с основой ядра приложения.

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

Никогда не используйте NULL

Когда мы вместе с клиентами проводим код-ревью, регулярно наблюдаем одну и ту же картину, которую я считаю проблематичной во многих отношениях – использование null в качестве допустимого свойства или возвращаемого значения. Можно же сделать лучше.

Давайте сперва посмотрим общие сценарии использования, а затем обсудим, как можно улучшить код, чтобы сделать его более устойчивым к ошибкам и простым в использовании. Большинство отмеченных проблем становятся особенно заметными, когда ваши исходники использует кто-то ещё.

Для чего это используется

Примером частого сценария использования может быть внедрение дополнительных зависимостей через метод класса:

class SomeLoggingService {
    private $logger = null;

    public function setLogger(Logger $logger) {
        $this->logger = $logger;
    }
}

 

В большинстве случаев logger будет установлен, но кто-то забудет об этом при использовании вашего сервиса. На сцену выходит второй разработчик и пишет новый метод в этом классе, используя свойство $logger. Во время разработки свойство всегда устанавливается и тестируется по соответствующим сценариям использования, так что разработчики забывают проверять на null – очевидно, это станет проблемой при других обстоятельствах. Вы полагаетесь на то, что методы будут вызваны в определённом порядке, который сложно документировать. Метод getLogger(), создающий нулевой логгер по умолчанию, мог бы решить эту проблему, но не гарантировано, поскольку второй разработчик может не знать об этом методе и просто использовать свойство.

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

Как сделать HTTPS на сайте и защититься от SSL-атак

Обычной установки SSL сертификата может быть недостаточно, поскольку нужно также обеспечить защиту от атак, направленных на сам SSL. В данной заметке пошагово рассказывается как сделать HTTPS на сайте, работающем под Apache и защититься от известных SSL-атак. Для проверки будет использован популярный сервис тестирования HTTPS:

summary-a

 

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

Асинхронные контроллеры в Symfony

Асинхронное программирование в последние годы стало синонимом высокой производительности в веб-приложениях со стороны сервера. Во многом это связано с возрастающей популярностью изначально асинхронных JavaScript и Node.js.

Как и многие другие вещи, асинхронное программирование не является чем-то новым. Вы можете использовать этот стиль программирования во многих средах, начиная с Python и заканчивая .NET.

В браузере отдельные события, такие как клик мыши, помещаются в цикл обработки событий (см. What the heck is the event loop anyway?, Филип Робертс), а затем события обрабатываются асинхронно без определённой очерёдности: нельзя точно узнать, когда событие клика мыши выполнится.

Ключевое место в асинхронности занимает I/O. В браузерах данное понятие включено начиная с Internet Explorer 5.0 и популяризировано Gmail в 2004 году. Придуманный метод, AJAX, позволил браузерам выполнять запросы к серверу после первоначальной загрузки страницы.

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

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

Асинхронный PHP

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