• Битрикс: «Ошибка удаления. Возможно есть ссылающиеся объекты.» при попытке удалить инфоблок

    Ситуация: при настройке в 1С и тестах обменов в Битрикс выгружается номенклатура. На сайте создались несколько ненужных каталогов товаров и предложений. Содержимое этих ИБ не использовалось в работе сайта (не создавались заказы и пр.).

    Проблема: при попытке удалить любой из этих ИБ возникает ошибка: «Ошибка удаления. Возможно есть ссылающиеся объекты.»

    Задача: таки удалить бесполезные инфоблоки, появившиеся врезультате тестов.

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

    Решение
  • Смена кодировки git-репозитория с CP-1251 на UTF-8

    Ситуация: изначально все файлы в репозитории были в кодировке cp-1251 (aka win-1251), но в какой-то момент было решено перейти на utf-8. Разработка ведётся на Windows.

    Проблема: некорректное отображение кириллицы в оболочке git bash при выполнении команд git log, git diff, git show, etc; белиберда в сообщениях коммитов.

    Задача: исправить отображение кириллицы.

    Бонус: кириллица будет верно отображаться в GitLab.

    Решение
  • Laravel 5.8: как скопировать значения из старой колонки в новую во время миграции?

    Ситуация: во время разработки проекта на Laravel возникла необходимость заменить один столбец другим. Для этого нужно написать миграцию.

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

    Решение: очень простое и очевидное — изменить схему, записать значения, изменить схему. Далее привожу пример готовой заготовки миграции:

    Посмотреть миграцию
  • Fancybox 1.3.4 не работает с jQuery 1.9.0 и выше. Как исправить?

    Ситуация: В проекте использовался jQuery 1.8.3 и Fancybox 1.3.4.

    Проблема: Fancybox перестал работать после апдейта jQuery до версии 1.12.4. В консоли браузера была ошибка:

    fancybox() is not a function  
    Решение
  • PhpStorm 2017+: некорректные цвета файлов на панели Project

    Ситуация: в IDE была установлена тема Material Theme. После первого взгляда стало понятно, что с ней будет трудно жить, поэтому тема была удалена.

    Проблема: цвета файлов на панели Project остались некорректными (теми, что были установлены при настройке темы).

    Решение
  • Битрикс: как разлогинить любого заблокированного пользователя. 100% рабочий метод.

    Быстрая заметка.

    Гуглил сабж — все великие умы сообщества в каком-то диком ступоре, агонии, ужасе, не понимают как быть. Есть ещё какой-то нахер ненужный модуль. Вроде бы такой функционал из коробки не завезли до сих пор.

    Ситуация: в битриксе работает агент, который периодически блокирует пользователей по определённым критериям.

    Задача: заблокированные пользователи, если они были авторизованы в момент блокировки, должны быть сразу разлогинены.

    Решение: проверять флаг активности текущего пользователя и перенаправлять на адрес логаута в публичной части.

    Описание: (далее…)

  • Как настроить удалённую отладку xDebug + phpStorm

    Привет.

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

    Посему решено опубликовать заметку здессь, чтобы потом точно знать где её искать. Тут просто выжимка самой сути, а не пошаговая инструкция. Но ссылки на таковые я оставлю в конце. (далее…)

  • Phalcon + Volt: вставить GET-параметр в ссылку на именованный маршрут через link_to()

    Имеем маршрут:

    $adminRouteGroup
    ->add('/files/delete?id=:int', [
        'controller' => 'files',
        'action' => 'delete',
        'id' => 1,
    ])
    ->setName('file_delete');

    Хотим в Volt-шаблоне получить ссылку типа такой:

    http://example.com/files/delete?id=123

    Для этого в шаблоне пишем:

    {{ link_to(['for':'file_delete', 'id':123], 'Удалить', 'class':'btn btn-danger btn-sm', 'id':'del_btn') }}

    Разберём пример:

    [
      'for':'file_delete' — для этого маршрута
      'id':123 — имя GET-параметра, объявленного в маршруте, и его значение
    ]
    'Удалить' — текст на ссылке
    'class':'btn btn-danger btn-sm' — html-атрибут class
    'id':'del_btn' — html-атрибут id

    Когда встала такая задача, быстро наткнулся на эту ветку: stackoverflow.com. На деле всё оказалось сильно проще.

    Phalcon 3.4.1

  • Шпаргалка: Master-slave репликация MySQL 5.7

    Шпаргалка: Master-slave репликация MySQL 5.7

    Введение

    Это мой рецепт, который я использую на проектах. В сети можно найти разные другие инструкции. Но они различаются только командами, которые по сути своей выполняют одно и то же. Например, чтобы заблокировать запись в БД, можно использовать как эти команды:

    SET GLOBAL read_only = ON;  # вкл только чтение
    SET GLOBAL read_only = OFF; # выкл только чтение

    так и эти:

    FLUSH TABLES WITH READ LOCK; # вкл только чтение
    UNLOCK TABLES; # выкл только чтение

    Либо импортирование БД из дампа на слейве можно выполнить и так:

    $ mysql -u root -p
    > USE mydb;
    > SOURCE ~/mydb.sql

    и эдак:

    $ mysql -u root -p mydb < mydb.sql

    Я считаю так. Чтобы выполнить задачу по сабжу, особо можешь не заморачиваться — главное понимать что происходит в целом. Но фундаментальное понимание сути этих команд будет только в плюс.
    Здесь же я собрал универсальный рецепт как поднять и восстановить репликацию. Поехали.

    (далее…)
  • Мои алиасы git

    Мои алиасы git

    Привет.

    В своей работе и pet-проектах я всегда использую git. За годы работы с ним у меня накопился некоторый список частых команд, которые я использую чаще всего. Позже я оформил их в алиасы и теперь представляю здесь. Их довольно много, они большей части он просты, и тем круты. Авось тебе тоже чего полезного пригодится.

    В сети есть много материалов по этой теме и многие разработчики показывают список алиасов и команд, которые им приходится использовать. Из наиболее интересных — вот эти три. При составлении конкретно этоого списка использовался собственный опыт и прочие чужие материалы, включая эти три статьи. Скопируй себе и обращайся к git aliases в качестве подсказки.

    Посмотреть алиасы