Rose debug info
---------------

Wolf Blog

Блог обычного парня о разработке и вообще

Установка postgres postgis

Случай, надо установить postgis для работы с геоданными.
Сервер CentOS 8.
Вроде просто модуль, но какая то фигня выходила.
Чтобы поставить его, надо либу gdal, а к ней еще другие.

Все что находил — нужен репо PowerTool, во всех источниках писали установить epel-release или  dnf-plugins-core, а потом просто включить этот репо. Но он не появлялся.

В итоге, что сделал.
Конешно же добавляем репы постгреса

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

GithubGist — взял файл с урл этого репа.
На всякий тут сохраню

# CentOS-PowerTools.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[PowerTools]
name=CentOS-$releasever - PowerTools
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=PowerTools&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/PowerTools/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

Ключ для него.

И госпади, оно установилось. Все пакеты нашлись.

До этого я еще пробовал сборку gdal через make сделать, но она крутилась 40-50 минут.
А что еще надо бы сделать — страшно представить /О\

Поэтому вот вывел для себя простые шаги.
Потому что надо было установить это на 4х серверах.
Счастью нет предела.

 76   2021   postgres

php отдает http 200, но приходит 500

Столкнулся с тем, что при отправки формы в ответ приходит валидный json, но http status — 500.
Причем происходит только с большими картинками.
К форме можно приложить макс 5 картинок по 10 мб макс.

Проверил — пхп 100% отдает 200.
С помощью функции http_response_code можно узнать последний код ответа — сделал логирование в конце index.php — выводил 200.
Но в логах nginx смотришь — 500.
Между пхп и nginx что-то происходит.

Сервис на Yii2.
Оказалось, что yii2-debug, после отдачи ответа и всех заголовков, пытается сериализовать запроса для лога. А загрузку картинки сделали не в виде файла, а в виде base64. 5 картинок по 10мб в base64. И все это пытается сериализоваться. И падает по лимиту памяти. Поэтому ответ догоняется статусом 500.
Все это перемешивается — статус и корректное тело ответа — и отдается клиенту.

Раньше ошибочно думал, что после отправки заголовков и echo — все уходит клиенту и можно заниматься своими делаем.
Но чтобы отправить все клиенту, нужно выполнить fastcgi_finish_request, которая как раз отправляет все клиенту и завершает соединение, но продолжает выполнение скрипта.
Либо, с помощью буферизации отдать контент и отправить заголовок об окончании соединения

header('Connection: close');

Пример закрытия соединения взят с этого поста.

 87   2021   http   yii2

Размышление об SphinxSearch

Копаюсь в нем дальше.

Попалось выступление Андрея Аксенова, это как раз таки разработчик сфинкса.
И есть целый плейлист с его выступелниями.
Несколько видосиков пересмотрел — классный чувак. Половину ничерта не понял, но интересно :D

Дак вот. В одном выступлении 2017 года он говорит, что сфинкс малоизвестный поисковый движок.
И я не могу понять эту магию — вроде бы много где он используется, но информации по нему мало и он «малоизвестный».

Узнал еще, что как раз в этом 2017 сделали форк сфинкса — Manticore Search.
Я его установил и он корректно работает с MariaDB. И даже SUGGEST работает. Что выглядит лучше, чем сфинкс 2.
У них есть отчет за три года, в нем указывают, что сфинкс 3 выглядит не так хорошо и там много вопросом и большой баг-лист.
В свете этих фактов проще думаю использовать мантикору.

Нашел такую таблицу рейтинга поисковых движков. Мантикора тут низковата, а сфинкс сдает позиции

 79   2021   sphinxsearch

Добавление пользователей в Sentry Self-Host

Разворачивал Sentry на своем сервере.
И на текущий момент, почему то нельзя просто добавить пользователя.
Можно только отправить приглашение по почте или пользователи сами указывают свою почту и ты ее принимаешь.

Поэтому надо указать какие-то настройки почты.
Окей, указываем в config.yml

mail.backend: 'smtp'  # Use dummy if you want to disable email entirely
mail.host: 'smtp.yandex.ru'
mail.port: 587
mail.username: 'username@yandex.ru'
mail.password: '*******'
mail.use-tls: true
# The email address to send on behalf of
mail.from: 'username@yandex.ru'

Ну ок, указал.
Перезагружаю сервис — а он не запускается.
Ошибок не нашел. Попробовал по одиночке добавлять настройки.
И проблема в use-tls. Не хотел он это есть. Если его вообще убрать, то сообщение не идет, т. к. этот smtp это не принимает.

В примере указано false, ну и обратное это true, что тут сложного.
Пробовал «1» — тоже не работало.
Не нашел причины. Везде так же пишут конфиг, никакой разницы.

И тут приходит мысль «Часть сервиса работает на питоне. Или весь на питоне».
А у питона же булевые значения через с большой буквы.
Ну я написал

mail.use-tls: True

И О ЧУДО. ЗАРАБОТАЛО.
Мне показалось это странным, что в YML файле я должен указывать булевые значения в строгом соответствии с языком.

 217   2021   Configuration   Python   Sentry

Знакомство с SphinxSearch

До этого несколько раз сталкивался с ним на разных проектов, но сам еще не готовил.
Решил попробовать для своего петпроекта.
На данный момент у меня Ubunta 20, php7.4 и mardiadb Ver 15.1 Distrib 10.3.25.

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

sql_query: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 (DSN=mysql://wolf:***@127.0.0.1:3306/dbname).

И дальше, либо гуглом не умею пользоваться, либо что — но решение проблемы я не нашел.
Ладно, поставим прошлую версию — 2ую.
Но по дефолту в репо только 2.2. пробуем ее — запускается!
Но в ней еще нет функций SUGGEST, поэтому хотелось бы 2.3.
И репо, которое указано в доках не добавляется

sudo add-apt-repository ppa:builds/sphinxsearch-rel23

Но даже если поставить его из архива, то он от 2016 года! Это старость! И 2.3 в статусе бета.
Уже давно назревало, но может выбросить эту марию и использовать постгре?

Ладно, пробую ставить версию 2.3 — отвечает, что нужен libmysqlclient20, а у меня стоит libmysqlclient21. Откуда же я возьму 20ую?
Крч не стал с этим ковыряться.

Дошел до того, что перенес все в постгре, благо бд не такая большая. Ну и запустил, и заработало!
Не сразу врубился, что для работы suggest нужно указать в конфиге параметр min_infix_len = 3.
Но когда указал — и он начал работать.
Успех.

Redis LOLWUT

Забавная функция есть у редиса.

lolwut

Создает арт сгенерированный компьютером.
Чтобы мы не забывали об, что в программирование есть нечто большее, чем просто написание кода х)

Одно из свойств команды — она должна быть совершенно бесполезна.

Документация по команде
Описание разработчика

 89   2021   Redis

Начало

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

Устаешь каждый раз писать всем одно и тоже.
Интересно попробовать формат — написать раз тут и потом всем ссылку давать на это.

Пока, думаю писать только об вещах в разработке и около ее.
Потом, может быть, буду затрагивать другие темы.
Поживем — увидим.

 61   2021   общее