Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
24 Март 2023

MailHog — отладка почтового функционала в среде разработки. Установка и настройка на CentOs Bitrix_env.

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

Один из вариантов решений — mailhog

Сервис настраивается вместо smtp почтового сервера и всё — он ловит всю исходящую почту, для просмотра есть веб мордочка.

Для установки и настройки MailHog

Берём отсюда
https://gist.github.com/Caffe1neAdd1ct/ea28bb49baaea86c203407629b442681
установочный скрипт — запускаем.

Далее с этой же страницы берём сам скрипт запуска (я взял тот, что без авторизации — пониже который) и заменяем /etc/init.d/mailhog
Всё сервис должен работать.

Далее настраиваем веб мордочку.
Берём тут конфиг https://gist.github.com/blakethepatton/7928abb131593fd192606b681ee47b2b и вставляем в nginx (я предварительно создал сайт mailhog.mysite.loc и там уже подменил)

Всё — веб мордочка тоже должна заработать.

Далее нужно в самой системе установить mhsendmail и в конфиге php.ini указать, что при отправке почты использовать именно его.

Я ставил так


yum install go
go install github.com/mailhog/mhsendmail@latest
ln ~/go/bin/mhsendmail /usr/bin/mhsendmail
mhsendmail -h

далее идём в /etc/php.d/bitrixenv.ini
и правим
sendmail_path = mhsendmail

ребутим аппач — должно работать

у меня сразу не взлетело т.к. в настройках сайта sendmail_path был переопределён — так что если что смотрите конфиги nginx и httpd на предмет sendmail_path

после того как в php.ini добавили sendmail_path = mhsendmail можно проверить отправку письма с командной строки https://github.com/mailhog/mhsendmail


> mhsendmail test@mailhog.local <
To: Test
Subject: Test message

Some content!
EOF

рубрики: Полезности, Программирование | Комментарии (0)

22 Март 2023

Nuxt host url undefined — некорректная ссылка. Как работает «Поделиться» в браузере мобильного.

Так и не придумал нормальный заголовок — фиг с ним, пусть так будет… кривой и непонятный, зато я со своей проблемой нашел бы статейку и быстро всё пофиксил.
А так — только зря ковырялся часа 3 в проекте.

Проблемный кейс — захожу на сайт, перехожу по любой ссылке, возвращаюсь нажимаю «поделиться» — в сервис куда поделились «улетает» заголовок и ссылка https://site.ru/undefined/
При прямом заходе по ссылке всё нормально.

Начну с того, что в браузере этот механизм использует информацию из open-graph meta тэгов.
В онлайн режиме повторяем кейс и смотрим DOM —

Попался!

Далее уже специфика конкретного проекта на NUXT

Установка мета тегов
/layouts/default/default.ts

head () {
return {
title: this.seo?.title || TITLE,
meta: [
{ hid: 'keywords', name: 'keywords', content: this.seo?.keywords || '' },
{ hid: 'description', name: 'description', content: this.seo?.description || DESCRIPTION },
{ hid: 'title', name: 'title', content: this.seo?.title || TITLE },
{ hid: 'og:title', property: 'og:title', content: this.seo?.title || TITLE },
{ hid: 'og:description', property: 'og:description', content: this.seo?.description || DESCRIPTION },
{ hid: 'og:url', property: 'og:url', content: ${process.env.PROXY_BASE}${this.$route.fullPath} },
],

Переменная окружения process.env.PROXY_BASE не срабатывала как полагается.
Для того, чтобы всё работало добавляем proxyBase в publicRuntimeConfig

/.configs.nuxt/runtime-config.js

export default {
publicRuntimeConfig: {
proxyBase: process.env.PROXY_BASE,

После чего в шаблоне вместо process.env.PROXY_BASE используем this.$config.proxyBase

Вуаля

рубрики: Nuxt | Комментарии (0)

12 Март 2023

BITRIX — убираем атрибуты type в теге script и лишние закрывающие слешы

При проверке на валидность страницы сайта на CMS Битрикс валидатор ругается на присутствие type в теге script (устаревший атрибут)

Warning: The type attribute is unnecessary for JavaScript resources.

а так же на лишний закрывающий тег в одиночных тегах (тоже устаревшая запись)

Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.

решение — вешаем обработчик на OnEndBufferContent и вырезаем из сформированного буфера

PS
в регулярке почему то конструкция [link|metainput] не «взлетела», разбираться пока не стал — если кто подскажет почему, подкорректирую.

рубрики: Bitrix, Полезности | Комментарии (0)

8 Март 2023

Виртуалка VMWare с CentOs не получает IP адрес — Connection ‘ens33’ is not available on device ens33 because device is strictly unmanaged

Хост машина с Ubuntu 22.04 на ней VMWare Player
после зависона VMWare Player из за переполнения винта — guest CentOs ни в какую не видит сетевой интерфейс
#ifconfig
показывает только lo
#ip a
слава богу видит ens33 но с пометкой unmanaged

нарыл в сети утилитку по настройке — nmtui
вроде всё автоматом поставил, пытаюсь активировать — получаю ошибку

Could not activate connection: Connection ‘ens33’ is not available on device ens33 because device is strictly unmanaged

2 часа мучений и спасительные 3 команды
nmcli n off
nmcli n on
nmcli

вуаля — всё работает!
ребут — всё работат!

вот такая херня на ровном месте

рубрики: VM, Администрирование, Полезности | Комментарии (0)

26 Февраль 2023

Особенности настройки GitLab CI CD для работы с Bitrix

Чтобы не «париться» с настройкой прав для пользователя gitlab_runner на сервере с bitrix env очень удобно чтобы раннер работал под юзером bitrix в его домашней папке изначально.

Решение

источник

рубрики: Bitrix | Комментарии (0)

21 Февраль 2023

mysql-bin забивает диск

Сегодня пришло сообщение о недоступности сайта клиента.
Начал разбираться — всё свободное место забито /var/lib/mysql, а точнее файлами mysql-bin.001 … и т.д.
Оказалось включена репликация, причём о slave сервере никто не в курсе, и судя по логам синхронизации не было уже несколько лет, а лимит хранения не был настроен.
Решение — отключаем синхронизацию
Удаляю файл /etc/mysql/conf/bx_replica.cnf (у вас возможно просто удалить строки настройки из основного конф.файла) — содержание bx_replica.cnf

Далее в mysql (по идее достаточно только RESET MASTER, но я все выполнил на всякий пожарный)
mysql> STOP SLAVE;
mysql> RESET SLAVE ALL;
mysql> PURGE MASTER LOGS BEFORE ‘2023-02-21 00:00:00’; (тут текущую дату поставьте)
mysql> RESET MASTER;

после чего рестартим сервис
# service mysqld restart

проверяем — файлов не должно остаться
если остались — вроде как можно убить вручную и рестартануть сервис, но у меня убились командами мускула

так же для пущей уверенности можно произвести какую нить операцию в БД в админке сайта и убедиться что bin файл не появился

рубрики: MYSQL | Комментарии (0)

20 Февраль 2023

VMware не запускается на Ubuntu 22.04 LTS — ошибка Unable To Install All Modules

При попытке запустить VMware предлагает установить модули vmnet vmmon, соглашаюсь — получаю ошибку «Unable To Install All Modules» с отсылкой в логи, где нех.я непонятно почему не работает

Спасло такое решение с отсылкой сюда

Т.к. информация носит для меня супер ценный характер, перекину себе для сохранности

рубрики: VM, Полезности | Комментарии (0)

16 Февраль 2023

Linux как освободить порт 3000

Частенько при повторном запуске ноды проект запускается на порте отличном от 3000 (вывалилась по ошибке или ещё что).
Это подбешивает если честно, т.к. все ссылки заточены на 3000

вот такой командой можно освободить порт
fuser -k -n tcp 3000

а так создать альяс, чтоб в следующий раз с ком.строки вызывать kill3000
alias kill3000=»fuser -k -n tcp 3000″

рубрики: NIX, Лайфхак | Комментарии (0)

3 Февраль 2023

Битрикс портал — правка ошибки MySQL query error! Got a packet bigger than ‘max_allowed_packet’ bytes

Кейс от клиента:

При авторизации на портале Битрикс 24 (коробка) ошибка
MySQL query error! Got a packet bigger than ‘max_allowed_packet’ bytes
(весь текст не буду выкладывать — смысл понятен)

Если решать в лоб и быстро, то поможет

/etc/my.cnf
max_allowed_packet = 32M
service mysqld restart

решил разобраться, в чём собственно дело

видно, что на update в таблицу b_option идёт очень большое «тело»

нашел эту запись, посмотрел содержимое — массив с НЕУНИКАЛЬНЫМИ записями

небольшим скритом фиксим это дело прямо в php консоли

из 90к записей остаётся 147

далее в исходниках Битрика нашел интересное место в файле

www/bitrix/modules/socialnetwork/lib/item/workgroup.php

получили массив, добавили значение (но не посмотрели, вдруг оно уже присутствует) — фактически получаем постоянно раздуваемый массив

пришлось кастомизировать исходник Битрикса (а что делать?) — в Битрикс тоже отписал о этом «косяке»

сам фикс

По идее такие огрехи при Code Review другим программистом должны «вылавливаться».

рубрики: Bitrix | Комментарии (0)

11 Январь 2023

VUE как отменить ввод в input radio

Кейс — есть радио инпут, нам нужно спросить у юзера реально ли он хочет переключить значение? если нет — не переключаем
В моём случае радио инпут реализован в виде отдельного компонента.

Первое — v-model = item.value заменяем на биндинг значения :value = item.value и событие смены @change = changeValue(item, $event)) с передачей в него значения и непосредственно события $event

далее в методе changeValue(item, event) я сохраняю текущее и новое значения (конечно предварительно добавляем currentItem и eventItem в data)
this.currentItem = item (в this.currentItem ссылка на item)
this.eventItem = event (в this.eventItem ссылка на event)

и уже по результатам выбора пользователем в модальном окне либо изменяю значение
this.currentItem.value = this.eventItem

либо оставляю тоже самое
this.currentItem.value = JSON.parse(JSON.stringify(this.currentItem.value))

ВНИМАНИЕ!
тут небольшой лайфхак в виде переприсвоения самому себе такого же значения, но с обновлением ссылки!
this.currentItem.value = JSON.parse(JSON.stringify(this.currentItem.value))
иначе Vue не понимает, что у свойства изменилось значение и компонент радио инпута нужно отрендерить заново

рубрики: VUE JS | Комментарии (0)