Шпаргалки Просто Программиста
Введение в фреймворк Kriswallsmith Assetic
Пожалуй, одной из самых мощных библиотек для управления статическими файлами (стилями, джава-скриптами, изображениями) через PHP-скрипты является Assetic. Тем не менее, начать с ходу использовать Assetic под силу далеко не каждому профессионалу. Не говоря уже о новичках, для которых серьезным барьером является и английский язык.
Библиотека решает такие задачи, как:
- Публикация статических фалов, находящихся в модулях за пределами директории веб-сервера
- Объединение мелких файлов скриптов или стилей в один для ускорения загрузки
- Встраивание мелких изображений в файлы стилей в кодировке base64 для ускорения загрузки
- Обработка и компиляция стилей и скриптов из различных языков, таких как less или coffeescript в нативные css и javascript
- Сжатие стилей и скриптов средствами различных оптимайзеров по вкусу
- Оптимизация изображений PNG и Jpeg без потери качества
Данный перевод из официальной документации является введением в Kriswallsmith Assetic
Assetic
Assetic - это фреймворк для управления статическими активами для PHP-приложений.
<?php
use Assetic\Asset\AssetCollection;
use Assetic\Asset\FileAsset;
use Assetic\Asset\GlobAsset;
$js = new AssetCollection(array(
new GlobAsset('/path/to/js/*'),
new FileAsset('/path/to/another.js'),
));
// код объединяет файлы при выгрузке
echo $js->dump();
Перегрев процессора из-за 100% загрузки gvfsd-metadata
На улице наконец установились теплые деньки... так же, как и у моего ноутбука vaio. При чем до такой степени, что печатать что-либо стало не возможно, т.к. руки постоянно потели.
Запустив в консоли команду top
, увидел, что почти все ресурсы процессора съедает программа gvfsd-metadata
:
~$ top
top - 19:10:37 up 1:22, 2 users, load average: 1,83, 1,89, 1,91
Tasks: 234 total, 2 running, 232 sleeping, 0 stopped, 0 zombie
%Cpu(s): 29,6 us, 4,0 sy, 0,0 ni, 61,6 id, 4,3 wa, 0,0 hi, 0,5 si, 0,0 st
КиБ Mem: 8157760 total, 5089708 used, 3068052 free, 328028 buffers
КиБ Swap: 8368124 total, 0 used, 8368124 free, 1725240 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3299 username 20 0 120m 5032 2856 R 77,1 0,1 32:44.84 gvfsd-metadata
3681 username 20 0 1858m 734m 54m S 17,0 9,2 14:10.69 firefox
1715 root 20 0 207m 74m 40m S 7,0 0,9 4:04.32 Xorg
3310 username 20 0 738m 21m 13m S 6,3 0,3 3:53.82 unity-panel-ser
3312 username 20 0 342m 5448 3588 S 4,7 0,1 2:59.51 hud-service
3107 username 20 0 1607m 128m 56m S 4,3 1,6 1:46.43 compiz
Загуглив этот процесс, увидел, что проблема достаточно распространенная. Нашел решение на ubuntu-форумах. Предлагается всего лишь почистить директорию с данными этого процесса:
~$ rm -rf ~/.local/share/gvfs-metadata
После выполнения команды становится значительно легче работать, а кулер уже шумит не так громко. Не знаю, на сколько это решение окончательное, буду мониторить в ближайшие дни, и если проблема всплывет вновь, придется искать другое решение.
Отслеживаем реферальные ссылки
Во многих случаях маркетологу, при получении заявки с сайта, интересно знать, откуда пришел посетитель? Также для отслеживания объявлений используются специальные utm метки.
Рассмотрим пример, при котором пользователь приходит на одностраничный сайт и заполняет на нем форму.
<form method="POST">
<input type="text" name="name" placeholder="Ваше имя"><br>
<input type="text" name="phone" placeholder="Ваш телефон"><br>
<button type="submit">Отправить</button>
</form>
А обрабатывается форма скриптом на языке PHP:
<?php
if (isset($_POST['name']) && isset($_POST['phone'])) {
$to = '[email protected]';
$subject = 'Запрос с сайта';
$message = "Имя: {$_POST['name']}\nТелефон: {$_POST['phone']}";
$headers = "From: {$to}\r\n" . "Reply-To: {$to}\r\n" . 'X-Mailer: PHP' . phpversion();
mail($to, $subject, $message, $headers);
}
?>
Отслеживаем конверсию без перезагрузки страницы
Обычно, при отправки формы советуют редиректить пользователя на некий целевой URL, переход по которому будет означать конверсию цели.
Однако, в наш век Rich Internet Application, такой метод общения с пользователем кажется способом забиванием гвоздей камнями. Гораздо приятнее, когда форма проверяется и отправляются данные из нее прямо на той же странице, где находится пользователь. Тут же выводится и сообщение об успешной отправке. Например, как на этом лендинге по созданию целевых страниц.
Как же тогда отметить в Метрике достижение цели? Оказывается, разработчики метрики уже подумали об этом и предоставляют нам способ обозначить достижение цели через клиентский код.
А также показывают пример кода, который позволяет достигать целей конверсии без перезагрузки страницы: Можно ли задать в качестве цели нажатие посетителем на какую-либо ссылку или кнопку?
А чтобы сделать наше приложение максимально гибким, я разработал следующий код:
(function($, w, d){
$(w).on('load', function(){
$(d).on('yandex.reachGoal', function (e, params) {
var target = params.target;
params = params.params || null;
target && w.yaCounterXXXXXX && w.yaCounterXXXXXX.reachGoal(target, params);
});
});
})(jQuery, window, document);
Коду для работы требуется установленный на странице код Я.Метрики и jQuery. Здесь мы подвешиваем на документ обработчики событий, которые будут отправлять данные в Яндекс. Это нужно прежде всего для того, чтобы не передавать идентификатор счетчика в метрике по всему коду. Чтобы воспользоваться этим кодом, достаточно в коде обработки формы при успешной отправке возбуждать соответствующее событие.
$(document).trigger('yandex.reachGoal', {target:'REQUEST_SENT'});
Не забудьте добавить эту цель в интерфейсе метрики. Удачи.
Препараты с идентичным составом, но ОЧЕНЬ разной ценой
- Нурофен (120руб) и Ибупрофен (10руб)
- Мезим (300руб) и Панкреатин (30руб)
- Но-шпа (150руб) и Дротаверина гидрохлорид (30руб)
- Панадол(50руб) и Парацетамол (5руб)
- Белосалик (380руб) и Акридерм СК (40руб)
- Бепантен (250руб) и Декспантенол (100руб)
- Бетасерк(600руб) и Бетагистин (250руб)
- Быструмгель (180руб) и Кетопрофен (60руб)
Снимаем блокировку с /var/lib/dpkg/
Если во время установки или обновления программ через apt-get
процесс был прерван нажатием Ctrl+Z, то при следующей попытке запуска apt-get
получим ошибку:
E: Не удалось получить доступ к файлу блокировки /var/lib/dpkg/lock - open (11: Ресурс временно недоступен)
E: Не удалось выполнить блокировку управляющего каталога (/var/lib/dpkg/); он уже используется другим процессом?
Хорошо, что можно разблокировать каталог всего одной командой. А избавиться от этой проблемы просто, достаточно выполнить команду:
sudo fuser -vki /var/lib/dpkg/lock
Должно получиться примерно так:
ПОЛЬЗ-ЛЬ PID ДОСТУП КОМАНДА
/var/lib/dpkg/lock: root 4581 F.... dpkg
Завершить процесс 4581? (y/N) Y
Нажимаем «Y» и наслаждаемся нормальной работой apt-get
. Я думаю многие пользователи знали об этой команде, но некоторые новички единственным выходом считали — sudo reboot
.
Конвертация сертификата cer в pem
Бывает, что предоставляют разработчику ssl-сертификат в виде *.cer файла, а использовать его надо в виде *.pem файла.
Сконвертировать файл в ubuntu поможет команда:
openssl x509 -in certnewb.cer -inform DER -out certnewb.pem -outform PEM
Записки миллионера. Туалетная мотивация.
Самый целеустремлённый человек — это тот, который очень хочет в туалет. Все препятствия кажутся для тебя несущественными. Ведь ты готов сделать все что угодно, лишь бы достичь своей цели! Твой мозг незамедлительно генерит миллион идей, а к действиям ты приступаешь немедленно.
Я описался, потому что:
не было времени сходить в туалет..
я был слишком уставший…
потерял надежду… Я не верил, что смогу добежать.
ну конечно. Он то – добежал. У него ноги вон какие длинные…
я слишком глуп, чтобы это сделать…
Файл запуска в SiteForeverCMS
Запуск системы стартует при обращении к скрипту index.php
.
По умолчанию скрипт работает с маршрутом index, который указывает на страницу по-умолчанию.
Для того, чтобы послать запрос на работу с другим маршрутом, нужно необходимый маршрут после index.php. Т.е., чтобы обратиться к странице about
, нужно выполнить запрос index.php/about
. Для страницы about/contacts
необходимо выполнить запрос index.php/about/contacts
. Чтобы сделать запросы более понятными человеку, можно воспользоваться настройками mod_rewrite, входящего в состав сервера apache, либо другим механизмом, выполняющим аналогичные действия у других веб-серверов.
Настройка VDS на Hetzner с дистрибутивом Ubuntu 12.04. Памятка.
В этой памятке собраны основные этапы настройки VDS от провайдера Hetzner. Не смотря на то, что о нем принято отзываться не очень лестно, меня вполне устраивают его тарифы на VDS и качество предоставляемых услуг.
Сразу после установки получаем работающего пользователя root, из под которого управляем системой без использования su. И получаем к нему доступ сразу по ssh после ввода пароля.
Любой админ знает, что это очень опасно. Т.к. если злоумышленнику удастся скомпрометировать ваш пароль, он получит доступ ко всей системе.
- « Previous
- 1
- 2
- 3
- Next »