Channel created
На одном из проектов возобновилась работа. Текущая задача:

Сделать API для нового фронтенда на React.

В проекте уже есть старый API построенный на связке Symfony 2 + FOSRestBundle, но такое себе нестандартизированное г-но. К тому же устаревшее.

Поэтому взялся на изучение вопроса и нашел пример использования стандарта PSR-13.

Вот кто знает, что это за стандарт и для чего используется? А я теперь знаю!

#api #jsonapi #psr #psr13 #hypermedialink #php #standarts
WSL Troubleshooting

Если вдруг локальная разработка переползла на Windows, но ох как хочется *nix - выход есть: Windows Subsystem Linux.

Простыми словами: это некоторая урезанная виртуальная машина Hyper-V, в которой установлен Linux, и произведена некоторая бесшовная интеграция в окружение Windows.

Технология, сама по себе, мне нравится, но глюками своими меня периодически просто бесит. Одни из последних проблем:

- Нехватка ресурсов
- vSysCall

#wsl #wsl2 #docker #linuxinwindows #windows #windows10 #troubleshooting
Нехватка ресурсов

Проект на PHP. Используется Composer для разрешения зависимостей. Добавляю новый пакет. Composer долго думает и выдает Killed. После двухдневного гугления оказалось, что для Docker-а в Linux доступны все аппаратные ресурсы операционной системы, а для WSL - только то, что задано в настройках файл конфигурации %userprofile%\.wslconfig. То есть на сервере с Ubuntu всё работает хорошо, локально на Windows с Ubuntu через WSL - не работает.

Увеличиваю ресурсы:

  [wsl2]
memory=8GB
processors=2

и мониторю с помощью docker stats - composer съедает около 4Gb оперативной памяти. И работа composer завершается корректно.

#wsl #wsl2 #windows #windows10 #linuxonwindows #compser #composerkilled #composererror #troubleshooting
Sphinx 2.2.10 на CentOS 6

В проекте использую образ leodido/sphinxsearch:2.2.10. Контейнер стартует удачно, а вот sphinx внутри постоянно падает, причем без особых ошибок в логе, только записи в вида

  watchdog … kill … SIG …

Вот и пойми, из-за чего не стартует приложение. Меняю прямую команду запуска приложения в контейнере на shell-скрипт и контейнер завершает работу с кодом 139. Гугление - натыкаюсь на issue в github. По рекомендации вставляю в конфиг WSL строку:

  kernelCommandLine = vsyscall=emulate

Перезагружаюсь. И вуаля - sphinx стартует без проблем. А все почему? Потому что в WSL нет поддержки vsyscall , и эмуляция отключена по умолчанию, потому что технология устаревшая и в современных дистрибутивах не применяется. А в контейнере используется CentOS 6, в которой эта технология используется. Ещё -2 дня. Бл..ть!!!

#wsl #wsl2 #windows #windows10 #linuxonwindows #vsyscall #troubleshooting
Вечно измененные файлы

Проблемы в основном касаются работы в Windows. И последних проблем: файлы фреймворков или бинарные файлы библиотек - git ругается, что файлы изменены, различий в содержимом нет. Но, сюрприз-сюрприз, права отличаются: кто их меняет и в какой момент - пока что тайна. Ещё бывает окончания строк с *nix меняются на win. Временное избавление - отключить слежение за параметрами

git config core.filemode false


git config core.autocrlf false


Проблемные файлы перестают мешать. Главное не забыть потом поменять значения обратно.

 git config core.filemode true


git config core.autocrlf true

#git #windows #troubleshooting
Перестал работать GitLab CI/CD. Попытался зайти на сайт и посмотреть статус docker-сервисов:

docker-compose ps


В ответ: "Не удалось создать временный файл".

Посмотрел место на диске:

df -h


Оказалось, корневой раздел забит под завязку, но чем - непонятно. Помогла команда:

du -a /home | sort -n -r | head -n 5


Выводит 5 самых больших файлов и подкаталогов в заданном каталоге. Так, каталог за каталогом нашел самого большого потребителя места. Оказалось, monolog забил логами почти 200Гб и для докера не осталось места.

Удалил логи, удалил лишние хвосты у докера, перезагрузил сервер - всё заработало.

Кто молодец? Я молодец! И немного сайт
blog.sedicomm.com

#troubleshooting #linux #diskspace #utilitty
Как добавить прав на группу?

Есть файлы и каталоги. Владелец ftn:ftn.
Текущий пользователь user. Надо разрешить текущему пользователю и программам, запущенным под текущим пользователям, использовать файлы и каталоги (чтение/запись).

1. Добавить user в группу ftn



2. Добавить объектам в каталоге права на чтение/запись для группы

sudo chmod -R ug+rw .

где:
u - user
g - group

+ - добавить права

r - read - чтение
w - write - запись

-R - рекурсивно (на всё, что внутри)

#linux
Центр приложений в Ubuntu 22.04

Начиная с версии Ubuntu 20.04 для управления приложениями вместо gnome-software используется snap-store. Периодически при запуске Ubuntu Software не отображается информация о приложениях и висит постоянная загрузка.

Как исправить?

Убиваем все процессы и снова запускаем приложение:

sudo killall snap-store

Более радикальный вариант - удалить и заново установить Ubuntu Software:

sudo snap remove snap-store

sudo snap install snap-store

#linux #snap #ubuntu #bug
Серия публикаций от OTUS, которая написана специально к старту нового потока курса «Software Architect» (2020).
- Выбор архитектурного стиля. Часть 1
- Выбор архитектурного стиля. Часть 2
- Выбор архитектурного стиля. Часть 3

#СписокНаПочитать