При отладке приложений с использованием http-клиента Guzzle возникает одно неудобство — отладчик не перехватывает сам запрос, а проходит мимо. Понять, что происходит в ходе запроса, порой проблематично.
Далее...Обновление SSH-ключа сервера в known_hosts
Однажды наш сисадмин обновил корпоративный gitlab, назовём его gitlab.mycorp.org, в результате чего возникли проблемы с подключением к этому серверу из-за смены открытого ключа во всех файлах known_hosts тех хостов, которые к нему ранее подключались.
Далее...Основы RBAC на одной странице
В статье на одной странице рассмотрены основные принципы разграничения доступа на основе ролей и разрешений (RBAC).
Далее...Лайфхаки по Git
В этой заметке складываются лайфхаки по работе с Git.
Далее...Рабочий хак для внедрения функций в HEREDOC-синтаксисе PHP
Всем известны ограничения синтаксиса строк HEREDOC, который является альтернативой двойным кавычкам. Эти ограничения состоят в невозможности вставки кусков PHP-кода, классов, функций и т.п.
Далее...Простой способ модифицирования enum-объектов в Postrges
Не так давно мне понадобилось модифицировать в Postgres ранее созданный перечислимый (Enum) тип данных, который я условно назову hepdesk.
Далее...О порядке обработки ошибок в PHP
Включение вывода ошибок уровня Notice, Deprecated или Strict, может спровоцировать дополнительные сообщения уровня Warning, а то и приводить к фатальным ошибкам от некоторых PHP библиотек или компонентов. К таким компонентам относится, например, популярный SapiEmitter из ZendFramework, который проверяет отправку заголовков с помощью директивы headers_sent(). Это нужно иметь в виду, если …
Далее...3 способа вызова callback-функций
Есть три основных способа вызова функций/методов в качестве callback
Далее...Распаковка массивов с помощью динамических переменных
Существует любопытный способ распаковки массива с помощью динамических переменных.
Далее...Ограничение типа integer в PHP на уровне системы в Windows
Совсем недавно столкнулся с неработоспособностью кода у себя на локальной машине для разработки при всём том, что на боевом сервере он работал как надо. В нём выполнялось деление некоего ID, приходящего извне, по модулю на 100, и нужно было передавать остаток от деления.
Далее...Русский язык для git в консоли Windows
В phpStorm есть встроенный терминал, в котором изредка приходится вводить команды git.
Далее...О регулярных выражениях с кириллицей в PHP
В PHP много функций для работы с регулярными выражениями, но если вы применяете их к кириллическим и любым другим символам за пределами ASCII в формате Unicode, это в обязательном порядке нужно указывать в ключах режима регулярного выражения.
Далее...Полезные функции и настройки phpStorm
Включение часового пояса для плагина PostgreSQL По умолчанию при работе с базами PostgreSQL через встроенный в phpStorm плагин даты отображаются в UTC несмотря на правильные настройки часового пояса PostgreSQL в VirtualBox. Также, для этого плагина не существует настройки временной зоны на вкладке «Advanced», как, например, для MySQL. Чтобы исправить ситуацию, …
Далее...Разграничение отладки с помощью xDebug по разным доменам в phpStorm
Я пользуюсь двумя основными схемами отладки в phpStorm с помощью xDebug.
Далее...Опасность вложенных include с директивами «../» в путях к файлам в PHP
Успешность подключения файла с помощью директивы include (require), который, в свою очередь, содержит подключение другого файла и так далее, зависит от того, как прописаны пути к подключаемым файлам.
Далее...Настройка проксирования конкретных скриптов в Openserver
Для выполнения проксирования конкретных динамических скриптов через Nginx на Apache в Openserver, необходимо в конфигурации конкретного vhost (например, Apache-2.4-x64+Nginx-1.14_vhostn.conf) убрать завершающий слэш из аргумента директивы proxy_pass:
Далее...Активация xDebug без браузерного хелпера
xDebug активируется в браузере автоматически без использования специального браузерного плагина, если в настройках указать строчку: xdebug.remote_autostart = 1
Далее...Настройка Postman для работы за прокси-сервером
При работе с Postman на компьютере на базе Windows за прокси-сервером Squid возникает проблема доступа к локальным ресурсам, например, к сайтам на локальном вебсервере (Openserver и т.п.). Для того, чтобы исправить проблему, необходимо очистить переменные http_proxy и https_proxy при запуске программы. Для этого создайте bat-файл: set HTTP_PROXY= set http_proxy= set HTTPS_PROXY= …
Далее...Прототипы и прототипное наследование в JavaScript
Подробный анализ теории и практики использования SSH-туннелей
В статье дан подробный анализ теории и практики построения SSH-туннелей на базе PuTTY. Информации по этому поводу в интернете очень много, однако она не носит систематического характера и зачастую представляет собой лишь разрозненный набор практических рецептов.
Далее...Виртуальные классы: облачный сервис для преподавания компьютерных дисциплин
В конце августа 2016 года мною запущен облачный сервис Виртуальные классы (viclass.ru), предназначенный для быстрого разворачивания и управления группами виртуальных машин. Я создавал его, главным образом, для облегчения преподавания компьютерных дисциплин, но применений ему можно найти множество и в других областях. Подробное описание сервиса находится по ссылке http://viclass.ru/description/.
Далее...Подготовка и установка deb-пакетов оффлайн
Рассмотрим задачу подготовки некоторого deb-пакета для установки в оффлайн режиме, например, на другой машине с той же версией операционной системы.
Далее...Скрипт динамического обновления зон DNS для работы через Яндекс API
Однажды возникла необходимость доступа из интернета через свой маршрутизатор к домашней сети. Пришлось вспомнить про динамический DNS, о котором я много слышал, но ни разу не применял на практике. Мои домены делегированы на Яндекс, поэтому всё предельно упрощается – нужно просто воспользоваться API Яндекса для обновления DNS-записи, привязанной к маршрутизатору. …
Далее...Конфигурирование и подгрузка модулей Perl в Linux
Данную заметку меня побудили написать определённые сложности при выполнении одиночного скрипта на языке Perl. Казалось бы, интерпретатор языка уже установлен – бери и пользуйся. Да не тут то было. Хочу избавить других от грабель, по которым я ходил целый вечер. Начну с того, что Perl построен по модульной архитектуре и …
Далее...Пример настройки Iptables с помощью TCP-флагов и модуля conntrack
В этой небольшой заметке я расскажу о принципах работы брандмауэра Iptables на примере фильтрации пакетов с помощью TCP-флагов и с помощью модуля определения состояний conntrack. Она рассчитана на тех, кто уже знаком с Iptables и желает глубже понять логику его функционирования. Разрешение WEB-трафика с помощью TCP-флагов Допустим, что на нашем …
Далее...Подробный анализ прав доступа к папкам и файлам в Linux
В Linux владелец и права на объекты файловой системы задаются и определяются рядом факторов, которые хорошо поддаются систематизации и не допускают неоднозначности толкования. Давайте по-порядку разберёмся с ними на конкретных примерах. Я думаю, что многие, прочитав эту статью, будут по крайней мере удивлены, что с правами в Linux всё обстоит …
Далее...SAMBA: организация доступа к подпапкам через единую точку входа
Задача: обеспечить такой общий доступ к файлам с помощью SAMBA, чтобы люди с других машин могли через специальную папку common заходить в только им разрешённые подпапки этой директории folderA и folderB, причём и у файлов и у папок требовалось обеспечить права по маске 770. То есть пользователи одной папки должны …
Далее...Вычисление прав по маске Umask
По канонам Unix вновь создаваемым файлам и папкам присваиваются права по умолчанию в зависимости от маски umask, которая назначается каждому пользователю в его конфигурационном файле bash_profile. Узнать текущее значение umask можно одноимённой командой: # umask 0022 Прежде чем переходить непосредственно к рассмотрению маски, отмечу, что максимально возможные права для файлов …
Далее...Расширение прав в Linux с помощью Posix ACL
Как известно, традиционный для Unix подход в организации прав доступа в виде User:Group:Others вкупе с тремя дополнительными битами SUID, GUID и Sticky Bit не дают той гибкости, которая часто бывает нужна для решения конкретных задач. Слава Богу, для более тонкой настройки прав уже давно существует решение под названием Posix ACL, …
Далее...Настройка утилиты screen в Linux
Создатели Screen называют утилиту менеджером (псевдо)терминалов. Идея в том, чтобы вместо нескольких терминалов, открытых для одновременной работы с разными пользовательскими программами например по ssh, обеспечить доступ к этим терминалам из одного единственного терминала, как если бы мы работали в «настоящем» TTY и переключались из одного в другой клавишами Alt-Fn.
Далее...Смена (забытого) пароля пользователя MySQL в командной строке Linux
Задача вполне ясна и десятки раз описана в других источниках, но я решил сделать руководство для себя на примере Ubuntu 14.04. Начну с наиболее сложного случая — смены забытого пароля root.
Далее...Скрипт локализации серверной Ubuntu
Если вам принципиально важен русский язык в консоли серверной Ubuntu, то систему необходимо локализовать, поскольку по умолчанию в Ubuntu установлен английский язык. Текущие языковые настройки консоли (так называемую «локаль») в любой момент можно определить с помощью команды locale:
Далее...Исправление доступности сайтов по HTTPS в ISPmanager 5
Я уже давно пользуюсь ISPmanager для администрирования своих сайтов и сайтов клиентов, однако некоторые «особенности» его работы до сих пор удивляют не на шутку.
Далее...Решение проблемы с несохранением вложенных меню в WordPress и настроек JCE в Joomla!
Не так давно один из клиентов моего хостинга пожаловался на невозможность сохранения вложенных меню на своём сайте WordPress. В качестве возможной причины он назвал слишком малое значение параметра max_input_vars в PHP. Проверка показала, что в настройках свежеустановленного PHP это значение по умолчанию равно 1000, тогда как для стабильной работы сайтов …
Далее...Команда «.» (точка) в Linux
Команда «.» (точка) часто используется в шелл-скриптах, однако не все знают, что это синоним команды source, встроенной в оболочку bash. Обычно говорят, что она используется для включения (подключения, «инклудинга») неких внешних файлов внутри скрипта. Рассмотрим в чём заключается суть такого подключения на примере файла .bash_profile:
Далее...Удаление ненужного ядра одной строкой в Ubuntu
Однажы после установки очередной серверной Ubuntu 14.04 я обновил ядро и решил удалить файлы старого ядра, которые занимали изрядно много места. Обычно в этом случае идут в каталог /boot, узнают версии файлов, прописывают их в командной строке, одним словом всё очень муторно и неудобно. Я задался целью минимизировать процедуру удаления …
Далее...Планировщики Cron и Anacron
В Linux (и в целом в Unix) предусмотрены два планировщика запуска скриптов по расписанию — Cron (синхронный) и Anacron (асинхронный или анахроничный). Если Cron предназначен для периодического запуска задач в заданный МОМЕНТ времени, то Anacron выполняет задачи в указанный ИНТЕРВАЛ времени.
Далее...