Java убьет ваш стартап. PHP — спасет его.
PHP, Теория

Спокойно! Это не очередная статья про сравнение двух языков с позиции предпочтений автора. На самом деле речь пойдет об enterprise технологиях и как они могут убить ваш web стартап – малый или средний бизнес в Интернете. А так же о том, как самые «обычные» технологии, такие как PHP (или Ruby, Python, Perl и т.д.) могут […]

PHP 7.2 — баг в системе Opcache.
PHP

В одном из своих проектов обнаружил странную ошибку: could not obtain parameters for parsing in Unknown on line 0 Как выяснилось позже, это баг в системе Opcache, который оставался незамеченным на протяжении аж 12-ти релизов PHP 7.2.0 — 7.2.11. О чем был отправлен bug report, ошибку тут же пофиксили, начиная с версии 7.2.12 ее уже […]

Linux. Цветовая схема терминала на продакшн сервере.

Всем привет! Если вы часто работаете с несколькими SSH терминалами в них очень легко запутаться и случайно запустить команду там, где она совершенно не нужна. Особенно неприятно когда такое по ошибке происходит на продакшн сервере. Предлагаю некоторым образом защитить себя от подобных недоразумений путем раскрашивания терминала и Midnight Commander в необычные броские цвета. Терминал своего […]

Проставить на фотографии дату и время
Photo

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

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

Самоподписанный ssl сертификат

Самоподписанный ssl сертификат может пригодиться в случае, когда у вас отсутствует доменное имя, но обеспечить защищенное соединение все же необходимо. Конечно же браузер по умолчанию не будет доверять такому сертификату, но его можно добавить в исключения. В Google Chrome такой сертификат добавить чуть сложнее чем в FireFox, кроме того он требует обязательного наличия поля subjectAltName. […]

Linux. Полезные утилиты для работы с файлами.

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

Говорим про утилиты rsync и про использование find для удаления старых файлов и пустых директорий.

Linux. Туннель по требованию, или автосоединение VPN.

Совершенно не всегда рационально постоянно держать VPN в подключенном состоянии. В данной статье поговорим о том, как автоматически «поднимать» туннель только когда в нем есть необходимость, а именно, чтобы тот «активировался» только при попытке отправки трафика через tun/tap. Для реализации такого решения был создан сервис (демон) под Linux — tuninetd.

Linux. Определить включен ли компьютер (через сеть).

Сегодня напишем простой скрипт на языке shell, который будет определять включен ли компьютер, находящийся в сети. Например, нужно, чтобы туннель на роутере поднимался только, когда клиентская машина включена и разрушался, при ее выключении. Вот такая у нас будет схемка, в качестве VPN сервера может выступать маршрутизатор филиала фирмы. Или, может быть, вы захотите, чтобы туннель […]

OpenCart. Создаем расширение для установки через админку.
PHP

В прошлый раз мы учились создавать форму «обратный звонок» вручную, путем прямого исправления и добавления необходимых файлов для OpenCart 2. Хотя этот метод хорош для понимания структуры CMS и относительно прост, — он достаточно варварский. И, строго говоря, так действовать крайне нежелательно, ввиду отсутствия какого-либо контроля из админки и сложностей с обратимостью изменений. Скачать готовое […]

OpenCart. Плавающая форма обратной связи через AJAX.
JavaScript, PHP, Разное

Небольшой, но подробный туториал для начинающих разработчиков. Возникла потребность в плавающей, выдвигающейся сбоку форме обратной связи (обратный звонок). К сожалению, готового решения я так и не нашел, кроме громоздкого, через модуль vqmod. Его суть заключается в перезаписи файлов OpenCart на лету, этакий своеобразный прокси-компонент, или декоратор, если угодно. Идея, конечно, интересная, но не об этом […]

Node.js простой логгер HTTP заголовков
JavaScript

Временами полезно знать, какие именно заголовки отправляет HTTP клиент серверу, особенно во время отладки. Приведенный ниже пример, позволяет простым способом решить данную задачу, с помощью встроенных модулей Node.js. Ровно тот случай, когда проще (и даже интереснее) написать элементарный «http сервер» самому, чем разбираться с готовыми продуктами — настраивать логи, устанавливать wireshark и тому подобное. Тем […]

Symfony. Компонент EventDispatcher (диспетчер событий).
Symfony

Вольный перевод официальной документации. EventDispatcher предоставляет инструменты, которые позволяют компонентам вашего приложения взаимодействовать друг с другом, путем генерирования событий и их обработки. Предисловие Объектно-ориентированный подход проделал большой путь, ради удобства расширения кода. Создавая классы с четко определенными «обязанностями», ваш код становится более гибким. Другие разработчики могут легко расширять его, через подклассы (наследование), чтобы модифицировать поведение […]

Symfony. Routing — компонент маршрутизации.
Symfony

Вольный перевод официальной документации. Компонент маршрутизации связывает HTTP запрос с набором заранее сконфигурированных данных. Установка Вы можете установить компонент двумя способами: Через Composer (symfony/routing – проект packagist.org) Используя официальный Git репозиторий (https://github.com/symfony/routing) Затем, подключить автозагрузчик vendor/autoload.php, который предоставляет Composer. Иначе, ваше приложение не сможет найти необходимые для компонента классы. Использование Для развертывания системы маршрутизации, вам […]

Symfony. Компонент HttpFoundation.
Symfony

Вольный перевод официальной документации. Компонент HttpFoundation, позволяет взаимодействовать с HTTP через объектно-ориентированный подход. В PHP, запрос представлен, как совокупность глобальных переменных ($_GET, $_POST, $_FILES, $_COOKIE, $_SESSION, …), а ответ формируется с помощью некоторых функций (echo, header(), setcookie(), …) Компонент Symfony – HttpFoundation – заменяет упомянутые глобальные переменные и функции, предоставляя объектно-ориентированный слой. Установка Вы можете […]

Symfony. Компонент HttpKernel.
Symfony

Вольный перевод официальной документации. Компонент HttpKernel обеспечивает структурированный процесс, в результате которого объект Request преобразуется в Response, при помощи компонента EventDispatcher. HttpKernel достаточно гибок, чтобы на его базе создавать полнофункциональные фреймворки (Symfony), микро-фреймвори (Silex) или мощные CMS системы (Drupal). Установка Вы можете установить компонент двумя разными способами: Через Composer (symphony/http-kernel – проект packagist.org) Официальный Git […]

Отправляем почту, чтобы она не попадала в спам

Для того, чтобы грамотно обеспечивать рассылки посетителям Вашего сайта, необходимо принять ряд мер. Кроме правильного содержания письма, в котором нежелательны ссылки на внешние ресурсы и прикрепленные файлы (в том числе изображения), следует побеспокоиться о грамотной настройке SPF и DKIM. Тем более, за их отсутствие принимающий почтовый сервер очень сильно «штрафует». Об этом и поговорим. Настройка […]

SSH. Разбираем процесс соединения и шифрования.

SSH, или secure shell, — это наиболее распространенный способ безопасного удаленного администрирования серверов. Используя некоторые технологии шифрования, SSH предоставляет механизм для организации безопасного соединения, между двумя машинами. В этой статье мы рассмотрим, какие именно подходы применяются в SSH. Для безопасной передачи данных, SSH использует поочередно различные технологии, которые включают в себя симметричное, ассиметричное шифрование и […]

Linux. Маршрутизация некоторых сайтов через VPN.

Уровень сложности материала — средний. Иногда, возникает необходимость перенаправлять трафик к некоторым сайтам через другой сетевой интерфейс. Простой пример: сотрудники филиала большой компании, должны работать со служебными разделами корпоративного портала через VPN. Из сети Интернет, доступ к данным разделам закрыт, в связи с требованиями безопасности. У нас есть Linux сервер, который, помимо прочего, функционирует в […]

Linux. Строим туннель (VPN), с помощью OpenSSH

Не все знают, что с помощью обычного OpenSSH сервера и клиента, можно пробрасывать порт через туннельное соединение. Но о том, что есть возможность строить полноценные туннели с маршрутизацией и вовсе единицы. Сегодня расскажу, как это сделать, на простом примере со следующей схемой: Первое (и очевидное), на клиенте и сервере должен быть установлен пакет OpenSSH. Кстати, […]