Архив рубрики: Памятки

Git: извлечение первого и последнего коммита по автору

В силу определённых обстоятельств – периодически стал возникать вопрос, в каких временных рамках я занимался тем или иным проектом. И готового ответа на него у меня не было – как-то не приходило в голову фиксировать подобную информацию.

Но есть же git – ведь он поможет? Ведь поможет, да?

Читать далее Git: извлечение первого и последнего коммита по автору

GitLab: склонировать список репозиториев

Решил слегка “причесать” и обобщить свой опыт по этому вопросу. Чтобы удобней было пользоваться, как этакой краткой инструкцией, а не искать разрозненные ответы на SO и т.п.

Задача проста – сделать удобно 🙂

  1. Взять GitLab (много где используется, как self-hosted) и выкачать с него все репозитории проекта. Чтобы можно было локально работать с ними, не загружая каждый отдельно.
  2. Обновлять эти репозитории одной командой
Читать далее GitLab: склонировать список репозиториев

Git config с разделением по проектам

Возникла потребность настраивать по-разному конфиги гита для разных проектов (email контактный поменять, хотя бы, или хук на прогон тестов повесить).

Ну и понятно, что как-то эти конфиги подкладывать туда-сюда – не слишком увлекательно. К счастью, в свежих версиях гита – есть инклюды. В том числе – по условию – includeIf. Вот ими и стоит воспользоваться.

Читать далее Git config с разделением по проектам

CloudFlare WARP + WireGuard на роутере Keenetic

По аналогии с настройкой доступа к Cloudflare WARP через WireGuard в Linux – решил, заодно уж, поднять VPN и на роутере.

В наличии – Keenetic Omni KN-1410 с KeeneticOS версии 3.7.4 (WireGuard есть и в более ранних версиях). Насколько я понимаю, политика Keenetic такова, что функциональность прошивок у них идентична для разных моделей роутеров (не зависит от “класса” устройства). Так что – должно работать не только на Omni.

Читать далее CloudFlare WARP + WireGuard на роутере Keenetic

CloudFlare WARP + WireGuard = простой способ разблокировки сайтов

Долгое время пользовался ssh-туннелем для “разблокировки” некоторых сетевых ресурсов, доступ к которым был ограничен для IP Российского диапазона (ну, драйверы там скачать с сайта производителя, и т.п.).

Но – всему приходит конец. Моему терпению – тоже. Надоело постоянно переключать потребителей на работу через прокси (privoxy), чтобы завернуть трафик в socks-прокси туннеля. TOR стали прикручивать, что привело к очень долгому поиску мостов. И лень моя победила (в очередной раз).

Очевидно – нужен был способ попроще, да ещё – без особых затрат. Ставить VPN сервер (в том или ином виде) на VPS – хотелось ещё меньше, чем кидать туннель. Всякие платные прокси (типа Mullvad) – они удобны, позволяют выбрать “точку выхода”, но – надо изыскивать возможность их оплатить. Бесплатные – обычно, работают так себе.

Читать далее CloudFlare WARP + WireGuard = простой способ разблокировки сайтов

Midnight Commander

Решил собрать в одном месте (для памяти и удобства использования) некоторые нужные настройки и возможности MC, ранее валявшиеся разрозненно по разным заметкам.

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

Читать далее Midnight Commander

Hybris: поиск Solr по составному полю

Понадобилось как-то в SAP Hybris настроить поиск по составному полю (состоящему из нескольких атрибутов продукта). Так, чтобы при запросе вида “желтый ботинок” в листинге товаров сначала выдавались не просто товары желтого цвета, а именно желтые ботинки (а затем – остальные ботинки). Решить это регулировкой коэффициентов усиления поиска по отдельным свойствам (boost) не удалось, пришлось городить огород с созданием и индексацией составного поля.

Модель товара ProductModel

Итак, в предлагаемом примере товар (Product) имеет два атрибута (помимо прочих), по которым надо искать в связке:

  • Name – название товара
  • Color – его цвет
Читать далее Hybris: поиск Solr по составному полю

Ограничение на минимальную цену в Hybris

Понадобилось добавить ограничение цены для товара в SAP Commerce (Hybris) – десятичная цена должна быть больше или равна нулю.
В принципе – это не сложно сделать через Backoffice (Система - Проверка - Ограничения), но тогда, при переиницаиализации платформы, внесённые изменения будут удалены. Поэтому – лучше создать файл impex, который автоматически накатится при обновлении или инициализации Hybris.
Чтобы не забыть – сохраню себе на память содержимое такого файла. Проверить работоспособность можно вручную – в HAC (Console - ImpEx Import), после чего надо перезагрузить механизм ограничений в Backoffice.
Что даёт это ограничение – при попытке задать товару нулевую или отрицательную цену – будет выскакивать соответствующее сообщение об ошибке (содержимое message[lang=en] или message[lang=ru], в зависимости от текущей локали).


INSERT_UPDATE DecimalMinConstraint;id[unique=true];severity(code,itemtype(code));active;annotation;descriptor(enclosingType(code),qualifier);message[lang=en];message[lang=ru];value;inclusive
;PriceMustBeGreaterThanZero;ERROR:Severity;true;javax.validation.constraints.DecimalMin;PriceRow:price;Price must be greater than zero;Цена должна быть больше нуля;0,00000000;false

VCSH – спасение настроек в $HOME

Как ни странно, я только недавно познакомился с VCHS – надстройкой над Git, призванной облегчить резервирование конфигурационных файлов, расположенных в домашней директории (Version control system for $HOME – один из вариантов расшифровки аббревиатуры). Очень жаль, что этого не произошло раньше, и бэкап конфигов делался нерегулярно, кое-как, с изобретением различных костылей. Но, всё это в прошлом! Итак, что же представляет собой VCSH и как ей пользоваться?
Читать далее VCSH – спасение настроек в $HOME

Небольшое ускорение Chromium

Для Chromium (ну и Chrome до кучи, и иные производные), оказывается, тоже работает метод небольшого ускорения путем очистки баз sqlite от данных, помеченных для удаления (но не удаленных), что и для Firefox (Firefox еще и настройками можно слегка оптимизировать). Всякие настройки, куки, история переходов и т.п. дребедень, что накапливается в процессе использования браузера.
Метод, в общем, тот же, что и для Firefox (и его производных) – пересобрать БД, используемые браузером, с действительным удалением ненужных данных, путем примения к ним команды sqlite3 файл_БД 'VACUUM'.
Применительно Chromium я сделал это следующим образом:

dimio@ibm $ ls -lh ~/.config/chromium/Default/
...
итого 17M
dimio@ibm $ find "/home/dimio/.config/chromium/Default/" -maxdepth 1 -type f -print -exec sqlite3 {} 'VACUUM' \;
...
dimio@ibm $ ls -lh ~/.config/chromium/Default/
...
итого 13M

Настройки Chrome обычно лежат в ~/.config/google-chrome/Default/.
На моем древнем Pentium M 1,2 ГГц с 1 Гб ОЗУ некоторое ускорения запуска браузера и уменьшение времени отклика стало заметно, а на более-менее современном железе подобная процедура, пожалуй, не будет имееть смысла.