Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)
Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.
Sypex Geo на Ruby on Rails
- Aleksej
- Автор темы
- Не в сети
- Модератор
Отметил ряд несоответствий при использовании одной и той же базы Sypex Geo через различные адаптеры - PHP и Rails, посредством которых на одинаковый запрос БД возвращает различные значения. Списался с разработчиком гема, информация следующая: при портировании алгоритма с PHP был "зацеплен" баг с бинарным поиском, в дальнейшем баг был пофиксен одним из пользователей GitHub. На rubygems этого фикса нет, поэтому устанавливать гем оптимально именно с github (редактируем Gemfile):
Если в мастере ситуация повторится - нужно будет дебажить поиск по индексу ( github.com/kolesnikovde/sypex_geo/blob/m...geo/database.rb#L105 ), сверяясь с PHP библиотекой.
Да, ещё один момент - код ruby библиотеки соответствует SypexGeo 2.2.3 (единственная публичная, которую можно найти на сайте), и я не уверен, что она актуальна.
К сожалению, по моим наблюдениям, кардинальных улучшений это не дает. Например, старый gem определяет координаты proxy следующим образом:
ревизия с гитхаба позволяет чуть приблизиться к реальному геотаргетингу:
, и только php API дает правильный результат, причем во всех трех случаях использовалась одна и та же база данных Sypex Geo:
Использовать, таким образом, gem 'sypex_geo' на продакшне не представляется возможным, просьба отнестись к представленному в блоге материалу сугубо как к учебному пособию, и не более. Впрочем, есть вариант юзать на rails при определении геотаргетинга REST API Sypex Geo.
For example, убираем из Gemfile - gem 'sypex_geo' - и делаем контроллер похожим на следующие строчки кода:
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
- Автор темы
- Не в сети
- Модератор
JSON.parse("null") # nil , а обязана выдавать всегда Hash, соответственно, можно попробовать что-то вроде:
Code:def response_body reload: false, reraise: false return @_response_body if !reload && @_response_body @_response_body = JSON.parse(response.body) || {} rescue => e reraise ? raise(e) : {} end
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.