Способ проверки, включено ли gzip сжатие на сайте

Проверить, использует ли сайт сжатие gzip, можно с помощью следующей команды:

curl -H "Accept-Encoding: gzip" -I https://ya.ru

Выдаст:

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 02 May 2015 15:00:09 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 20
Connection: keep-alive
Cache-Control: max-age=2592000
Expires: Mon, 01 Jun 2015 15:00:08 GMT
Vary: User-Agent,Accept-Encoding
Content-Encoding: gzip

[MySQL] Проверка правильности конфигурации my.cnf

Для проверки синтаксиса файла конфигурации MySQL без фактического перезапуска базы данных можно использовать следующую команду:

/usr/sbin/mysqld --help --verbose --skip-networking 1>/dev/null

Если в файле конфигурации my.cnf есть какие-либо синтаксические ошибки, то информация об этом будет выведана на экран терминала.

Рекурсивное удаление файлов .DS_Store

Файлы .DS_Store создаются автоматически в операционной системе Mac OS и служат для хранения пользовательских параметров директории. По умолчанию файлы, начинающиеся на «точку», не отображаются в проводнике, поэтому они  могут быть незаметно для пользователя скопированы в другие места (к примеру, при копировании на удаленный сервер, где им там точно не место).

Чтобы рекурсивно подчистить директории от файлов .DS_Store, нужно выполнить следующую команду:

find . "-name" ".DS_Store" -exec rm {} \;

Выполнение команд от имени другого пользователя

Если имеется доступ к sudo, то можно выполнять команды от имени другого пользователя через опцию -u.

Пример выполнения команды от имени www-data:

sudo -u www-data echo "hello world!"

Удаление истории команд в Bash

Чтобы полностью удалить историю выполнения команд в терминале, достаточно выполнить:

history -cw

[Apache] Разрешить доступ по User-Agent

Чтобы разрешить доступ на сервер только для устройств с определенным User-Agent, можно создать соответствующее правило в файле .htaccess.

Пример ниже разрешает доступ только для LG Smart TV, которые в строке User-Agent имеют слова LGE, NetCast или LG Browser:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !(LG\%20Browser|LGE|NetCast) [NC]
RewriteRule ^ - [F,L]

Для всех остальных устройств будет отображена ошибка «403 Forbidden».

[Apache] Обработка html-файлов как PHP

Если необходимо обрабатывать файлы с расширением *.html через PHP, то для этого достаточно прописать в .htaccess следующую строчку:

AddType application/x-httpd-php .php .htm .html

[CMD] Изменение рабочей директории по умолчанию

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

Пример с изменением пути на корень диска «C»:

reg add "HKEY_CURRENT_USER\Software\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "cd /D C:\"

К чему может привести замена сертификата на сервере

В последнее время мы ведем разработку клиент-серверного приложения для Smart TV (LG и Samsung), которое взаимодействует с удаленным сервером через HTTPS-соединение.

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

Проблема была в том, что на удаленном сервере был изменен сертификат безопасности, который больше не поддерживает протокол SSL 3.0 в связи с найденной ранее уязвимостью POODLE (CVE-2014-3566). И все бы ничего, но старые модели Samsung не поддерживают протоколы TSL, только SSL до версии 3.0.

К сожалению, официально доступная спецификация по ТВ не дает информации о поддерживаемых протоколах шифрования. Поэтому, для того, чтобы выяснить, какие все же протоколы шифрования поддерживает телевизор, на котором не работало наше приложения, я использовал сервис howsmyssl.com (просто открыл данный сайт в браузере ТВ и он вывел информацию, что TSL не поддерживается).

А для того, чтобы узнать, какие протоколы шифрования поддерживает сертификат, установленный на удаленном сервере, я воспользовался еще одним сервисом — https://sslcheck.globalsign.com, который вывел очень подробную информацию по уровню безопасности сервера.

Таким вот образом и была выявлена причина проблемы.

Samsung уже пообещал в самое ближайшее время выпустить обновление прошивки для тех устройств, которые не поддерживают TSL.

Миграция с GitHub на GitLab

На днях пришлось полностью переносить все проекты с GitHub на GitLab. Большую часть проектов компании мы перенесли на локально развернутый GitLab, который доступен только внутри корпоративной сети, что для вне офиса не так уж и удобно (а VPN для Mac’ов у нас так толком и не настроили). Кстати, большой плюс у GitLab заключается в том, что он позволяет легко импортировать проекты с GitHub, для этого достаточно лишь указать ссылку для выкачивания. А вот оставшуюся небольшую часть проектов я развернул уже на GitLab.com, потому что доступ к ним нам нужен постоянно из любых мест.

Вот небольшие действия, которые мне пришлось совершить для миграция проектов с GitHub на GitLab:

1. Через веб-интерфейс GitLab импортировать существующий проект с GitHub

2. Склонировать репозиторий к себе на компьютер (уже с GitLab):

git clone https://gitlab.com/phereo/project_name.git

3. Создать локальную ветку и закрепить ее за удаленной (чтобы можно было делать pull / push):

git checkout --track -b branch_name origin/branch_name

Вот, собственно, и все 🙂