Логирование системы(что делать, если сервер упал вчера)

Опубликовано 2016.05.16 в разделе Разное.

Для Ubuntu
  1. sudo apt-get install atop
После этого atop будет складывать в var/log/atop снимки системы каждые 10 секунд. И если ваш сервер упадет ночью, то вы сможете утром спокойно выполнить
  1. atop -r /var/log/atop/atop_log_filename
и клавишами t и Shift+t покрутить историю. Если падение продолжалось более 10 секунд - то вы обязательно увидите что выжрало все ресурсы сервера и хотя бы станет понятнее в какую сторону копать дальше. Например я увидел, что у меня занят весь swap и дисковые операции занимают 100% ресурсов.

Забанить бота bingbot

Опубликовано 2016.03.24 в разделе Разное.

Забанить эту сволоту можно в к конфиге Nginx. В директории server добавьте следующий код.
  1. if ($http_user_agent ~ bingbot) {
  2. return 503;
  3. }
После этого вашему серверу полегчает. Да, не забываем сделать :
  1. service nginx reload
Потом вы можете легко проверить, работает ли данное правило.
  1. $opts = array(
  2. 'http' => array('user_agent' => 'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)')
  3. );
  4. $context = stream_context_create($opts);
  5. $res = file_get_contents("your site url", false, $context);

Разбить строку по последнему пробелу

Опубликовано 2016.03.09 в разделе Php.

Допустим у нас есть строка
  1. $content = 'В CMS Drupal есть много типов материалов, которые можно расширить полями различных типов.';
И стоит задача разбить строку на две подстроки по последнему пробелу. Сразу напрашивается следующий код, но он не работает:
  1. $content = preg_split("/[\s]{1}/", $content);
По идее он должен разбить строку по первому пробелу, но разбивает он её по всем пробелам. Придётся пойти более сложным путём, а именно:
  1. //развернем строку задом наперед(реверс)

Views добавить group by для одного поля

Опубликовано 2016.01.11 в разделе Drupal.

В админке вьюсов группировка(называется агрегацией) отвратительная. Группирует все поля, а толку ноль. Уникализация выборки тоже не работает. Классическая ситуация. Вывод нескольких материалов(например блог) и одного приаттаченного материала к каждому блогу(через entity reference). И если к блогу привязано например 3 материала - то благодаря join в запросе это блог будет выведен трижды. Чтобы это побороть - нужно поальтерить запрос: /** * Implements hook_query_alter(). */ function mymodule_query_alter(QueryAlterableInterface $query) {

Селектор по атрибуту с [] в значении

Опубликовано 2015.12.03 в разделе JavaScript.

Допустим у вас есть такая вёрстка:
  1. <input type="hidden" name="field_main_image[und][0][fid]" value="152" />
И вам нужно ява скриптом обратиться к этому инпуту по имени и забрать значение атрибута value. Делается это так.
  1. var input_value = $('[name=field_main_image\\[und\\]\\[0\\]\\[fid\\]]').attr('value')
Всё элементарно, но надо знать, что скобки экранируются двумя слэшами, а не одним.

Почему не срабатывает drupal_add_js

Опубликовано 2015.12.03 в разделе Drupal.

Периодически Друпал не подключает js файл, хотя вы корректно его подключили, файл физически существует и у него выставлены правильные права. Гугл вам не скажет почему у вас не работает, а только 10 раз покажет одни и те же способы подключения js к форме, странице или блоку. Приведу простой пример. Допустим модуль best_form подключает js и css файлы к форме редактирования материала, путем альтера формы: function best_form_form_node_form_alter(&$form, &$form_state) { $form['#attached']['css'] = array(drupal_get_path('module', 'best_form') . '/theme/best.css');

Событие наведения и снятия курсора на jQuery

Опубликовано 2015.12.03 в разделе JavaScript.

Всё достаточно просто. Не забывайте подключать саму библиотеку jQuery
  1. $(document).ready(function() {
  2. $('#element').hover(
  3. function(){
  4. // навели курсор на объект
  5. console.log('hover');
  6. },function(){
  7. // отвели курсор с объекта
  8. console.log('no hover');
  9. });
  10. });

Продвижение в одноклассниках по 7.4.22

Опубликовано 2015.11.29 в разделе SEO.

Продвигать группу в одноклассниках достаточно несложно. Легко приглашать людей, добавлять контент и так далее. Однако в любой момент вас могут заблокировать ни за что. Такого не бывает, скажете вы. Если вы не спамили, не размещали контент противоречащий законодательству или запрещённый правилами социальной сети, не нарушали ничьих авторских прав, никого не оскорбляли то вас не забанят? В нормальном мире да, а в одноклассниках нет.

Убрать все GET параметры

Опубликовано 2015.11.28 в разделе JavaScript.

Если вам нужно очистить URL от всех GET параметров, то обычно используют код:
  1. window.location = 'my-url';
Он в принципе работает, но остаётся знак вопроса в конце урла. Если заменять window.location.href - ситуация такая же. Есть магический способ. Он делает тоже самое, но знак вопроса пропадает О_о Выглядит он так:
  1. window.location.href=window.location.href.split('?')[0]
Я не понимаю почему это работает)) Может кто-то сможет толково объяснить?

Продвижение сайта

Опубликовано 2015.10.17 в разделе SEO.

Продвижение играет важную роль в жизни фактически каждого сайта. Без правильной раскрутки о вашем ресурсе будут знать меньшее количество людей и как следствие - вы потеряете часть своей потенциальной аудитории. Продвигать сайт можно по-разному, но обычно используется сразу несколько способов. Эти способы можно поделить на внешние и внутренние, скажем так. Под внутренними следует понимать такие моменты, как проставление мета тэгов на страницах, таких как заголовок, описание и ключевые слова. Так же на странице должен быть один заголовок в тэге h1 и возможно подзаголовки h2, h3 и т.д.