
News → Замеры на будущее, 2-я часть
Ну вот это самое будущее и наступило, даже существенно раньше, чем предполагал :) Показатели на свежевыложенной новой версии. Хоть инструменты для измерений и претерпели изменения и сравнивать напрямую нельзя, но приблизительно оценивать можно. Стало хуже, но впереди будут оптимизации, пока было не до них, нужно было публиковать уже то, что есть, а то, что есть, активно доделывается и обрастает новыми задачами и задумками. Главное, чтобы не отпустило, а то неизвестно на сколько меня ещё хватит, опять заброшу этот блог.
GTmetrix и аудит Lighthouse из гугл-хрома:
слиплись картинки


News → Замеры на будущее
Работы над новым бложиком идут полным ходом. Позавчера вот первый запрос к БД выполнил, например 😏. Такими темпами до конца семилетнего карантина движок и будет как раз закончен. Ну а пока оставлю тут пару скриншотов пиписькомеров, чтобы было куда равняться, потому как показатели новой версии должны быть, как минимум, не хуже.
GTmetrix раз:
И аудит из Chrome DevTools два:
Всё зелёненькое и хорошо. На этом пока всё.
Git → Синхронизация форкнутого репозитория с оригинальным
Очередная заметка для самого себя, чтобы не искать. Вроде бы всё до ужаса элементарно, но не запомню, пока не напишу об этом :)
Первым делом добавляем remote-репозиторий, ссылающийся на оригинальный, назовём его, к примеру upstream1. Список удалённых репозиториев можно посмотреть командой git remote -v, чтобы убедиться, что всё верно.
После вытягиваем все изменения, произошедшие в репозитории upstream2 и сливаем их со своим репозиторием3.
1 2 3 4 5 6 7 8 9 10 11 12 | # шаг 1
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
# шаг 2
git fetch upstream
# шаг 3
git checkout master
git merge upstream/master
|

PHP → активация PHP-расширений
Поднимая проект на Laravel столкнулся с неожиданной проблемой. А именно, с невозможностью установки вендорских библиотек композером. Неожиданность тут в том, что расширение php5-mcrypt было у меня установлено. Однако composer не обманешь.
Небольшое исследование показало, что необходимое расширение хоть и присутствует, но не подключено. Если же расширение не установлено, то делается это так (в Ubuntu и Debian):
1 | sudo apt-get install php5-mcrypt
|
Но вернёмся к активации установленных расширений...

Git → git diff и FreeBSD
В общеобразовательных целях решил поиграться с FreeBSD и, естественно, установил туда Git. Настроил, как положено, вывод цветов в консоль, т.е.:
1 | git config --global color.ui true
|
И, вроде бы, всё хорошо, однако при использовании команды git diff вывалилась такая печалька на экран.
Решение нагуглилось секунд за 30. Нужно всего лишь установить в конфигурации Git-а правильный пейджер.
1 | git config --global core.pager 'less -R'
|
Вот, собственно, и всё. Можно было и не писать этого всего, но должны же быть тут какие-то заметки :)
Linux → Монтирование диска медиаплеера в линуксах
Напишу тут пару команд для того, чтобы примонтировать диски двух медиаплееров, которые использовал или использую.
Первый пациент, это Popcorn Hour A-300, про него я когда-то писал тут. Аппарат был хороший, но сильно долго не прожил по моей вине - глюкнул винт, а я, находясь под воздействием пива, разобрал и собрал плеер, вывихнув при этом разъём SATA из платы. Ну да ладно, то другая история, а сейчас монтирование. По NFS.
1 | sudo mount -t nfs -o vers=3 192.168.1.169:/share ~/path/to/A300
|
Причём без этой опции vers=3 не получалось, вечер провозился точно, пока где-то не нагуглил.
Второй медиаплеер Dune HD TV-303D. Пришёл на смену первому и работает по сей день. NFS в нём я не обнаружил, примонтировал используя Samba
1 | sudo mount -t cifs -o guest,rw,uid=morontt,gid=morontt //192.168.1.171/dunehdd ~/path/to/DuneHD
|
Пользователя и группу желательно указать свои, как и сетевой адрес устройства, и точки монтирования :)
Возможно, что каждый раз выполнять команду или запускать скрипт с ней внутри будет неудобно, но если устройства никуда не собираются перемещаться друг относительно друга, то можно прописать подключение в /etc/fstab, а нужную строку подсмотреть в /etc/mtab, когда устройство примонтировано. Что-то вроде такой строки (может, ещё опции придётся подкорректировать):
1 | //192.168.1.171/dunehdd /home/morontt/path/to/DuneHD cifs rw,uid=morontt,gid=morontt 0 0
|
P.S. Монтирование по протоколу samba может не удаться сходу и будет ругаться на неизвестную файловую систему. В таком случае поможет установка пакета cifs-utils, т.е.:
1 | sudo apt-get install cifs-utils
|
Ubuntu → Установка последних версий Node.js и npm
Просто памятка. Надоело уже искать по интернету.
Делаем раз:
1 2 3 4 5 6 7 8 | # ниже по ситуации, в зависимости от дистрибутива,
# если нет команды apt-add-repository
#
# sudo apt-get install python-software-properties
# sudo apt-get install software-properties-common
sudo apt-add-repository ppa:chris-lea/node.js
sudo apt-get update
|
Делаем два:
1 | sudo apt-get install nodejs
|
И готово. Проверено на Ubuntu 14.04 LTS и 12.04 LTS :) Если не ошибаюсь, то npm установится автоматически с nodejs. Ежели не установился, то ещё одна строчка в консоли:
1 | sudo apt-get install npm
|

JavaScript → typeahead.js - Автокомплитер и Twitter Bootstrap.
Прикручивал автодополнение к полям формы на сайте, использующем Twitter Bootsrap, выбрал по инерции знакомый и привычный jQuery UI и тут же столкнулся с проблемой. Поля, использующие bootstrap-datepicker.js разнесло до полной неузнаваемости. Для начала просто отключил стили, необходимые для автокомплитера из jQuery UI, предполагая, что проблема именно в них, да и просто из любопытства, однако это не помогло - внешний вид улучшился, но до исходного варианта было ещё далеко :)
Морочить себе голову не стал, пытаясь соединить несовместимое, просто вбил в поисковик "twitter bootstrap autocomplete". И сразу наткнулся на то, что надо, т.е. на typeahead.js. Тут официальная страница с примерами, хорошая документация на GitHub. Добавить нечего. Просто брать и использовать. Внешний вид хорошо вписывается в общий стиль, не выглядит чужеродным :)
Apache → Настройка HTTPS в Apache
Нового здесь ничего не будет, всё это миллионы раз описано в документации и подобных записях по блогам. Так что оставлю здесь эту заметку для себя, чтобы не искать каждый раз, когда это потребуется.
В двух словах - что такое HTTPS и с чем его едят.
HTTPS - это расширение протокола HTTP, поддерживающий шифрование. Данные, передаваемые подобным образом, шифруются с использованием SSL или TLS.
В данной заметке будет создаваться самоподписанный сертификат и хотя браузеры начнут ругаться, что такой сертификат не является доверенным, но свою задачу выполнять он всё таки будет, т.е. если и не исключит возможность прослушивания при помощи тех же снифферов, например, но, по меньшей мере, сильно затруднит жизнь некоторых хацкеров. И что немаловажно - такой сертификат не будет стоить ни копейки, в отличии от сертификатов, подписанных компаниями-сертификаторами :)

Контроль версий → Composer TransportException, проблемы с загрузкой пакетов.
Иногда так бывает, что composer не может стянуть вендорские файлы. Тут даже и сам композер совершенно не при чём, может валяться github, например, или другой ресурс, где необходимый пакет размещается.
Собственно, вылазит ошибка вида:
1 2 | [Composer\Downloader\TransportException]
The "https://api.github.com/repos/bla-bla-bla/zipball/v6.6.6" file could not be downloaded (HTTP/1.1 404 Not Found)
|
До сегодняшнего дня я просто выжидал, пока очнётся ресурс, откуда должен скачаться пакет, однако на этот раз мне не повезло, поскольку два вечера подряд я наблюдал одно и то же сообщение (хотя утром в другом проекте библиотеки скачались как по маслу, просто забыл под шумок стянуть и других вендоров, повисших в неопределённости). Пришлось лезть в гугл и искать. И оно того стоило, поскольку первая же ссылка указала решение.
1 | php composer.phar install --prefer-source
|
Данная опция указывает composer-у, что необходимые файлы должны извлекаться непосредственно из исходников в репозитории системы управления контроля версиями, а не из подготовленного пакета (по умолчанию для стабильных версий). Собственно, всё. Больше информации здесь