## Podman, Podman-compose

Недоступен в SberUserSoft, скачиваем с [официального сайта](https://podman.io/) (вообще это нелегальный путь, Подман могут снести через некоторое время на Маке, легальный путь лежит в этом гайде: <https://mapp.sberbank.ru/app/mapp/9240485374/> Однако по нему словишь множество ошибок)

После окончания загрузки запустится установщик, который сделает всё необходимое, просто жмём далее и так до конца

Проверяем в консоли

```bash
podman -v
podman-compose -v
```

Затем нам надо запустить виртуальную машину Подмана для его работы

```bash
podman machine init

podman machine start
```

Просмотр информации о машине:

```bash
podman machine info
```

В машину можно ssh-иться:

```bash
podman machine ssh
```


Затем у меня была проблема при pull, что podman тянул с неверного внешнего источника образы, которых нет на локалке (postgres:11.18-alpine)

И во вторых, он никак не мог взять у меня подходящий сертификат.


Первое, что предпринял - это заполнение файла внутри машинки Подман /etc/containers/policy.json

```json
{
    "default": [
        {
            "type": "reject"
        }
    ],
    "transports": {
        "docker": {
            "sberosc.sigma.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "registry-ci.sigma.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "docker-dev.registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "docker-release.registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "docker-internal.registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "docker-cache.registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "helm-dev.registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
             "helm-release.registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "base.registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "redhat.registry-ci.delta.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ],
            "base.registry-ci.sigma.sbrf.ru": [
                {
                    "type": "insecureAcceptAnything"
                }
            ]
        }
    }
}
```

Однако Подман так и не захотел смотреть на данный файл, он его как будто не замечал. Возможное решение данной ситуации: <https://projectatomic.io/blog/2018/05/podman-tls/> 


Также  пытался изменить файл auth.json, который расположен уже на ноуте /.config/containers/auth.json:

```json
{
  "auths": {
    "registry-ci.delta.sbrf.ru": {
      "auth": "<login>:<password>"
    }
  }
}
```

Скорее всего это тоже не повлияло, но попытка не пытка


Также стоит авторизоваться на <https://registry-ci.delta.sbrf.ru>, на котором и лежит наш [образ постгреса](https://registry-ci.delta.sbrf.ru/#browse/browse:base:v2%2Fbase%2Fdocker.io%2Fpostgres%2Ftags%2F11.18-alpine):

```bash
podman login registry-ci.delta.sbrf.ru
```

Затем, раз Подман не знает, куда надо идти за образом, укажем ему сами путь:

```bash
podman pull registry-ci.delta.sbrf.ru/base/docker.io/postgres:11.18-alpine
```

Однако ему всё ещё не хватало сертов, поэтому ставим флаг `tls-verify=false:`

```bash
podman pull registry-ci.delta.sbrf.ru/base/docker.io/postgres:11.18-alpine --tls-verify=false
```

И ура, Подман смог подтянуть образ, можно проверить через команду `podman images`

```javascript
docker pull base/docker.io/golang:1.20.3-alpine3.17
```


Поднимаем наконец наш контейнер в директории, где расположен docker-compose.yml:

```powershell
services:
  db:
    image: postgres:11.18-alpine
    restart: always
    environment:
      POSTRGES_USER: "map"
      POSTGRES_PASSWORD: "mapp"
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    ports:
      - "54320:5432"
```

Команда:

```bash
podman-compose up
```


Если команда не найдена, то можно запустить через подман:

```bash
podman run -d
--name db
-e POSTGRES_USER=mapp
-e POSTGRES_PASSWORD=mapp
-v "$(pwd)/pgdata:/var/lib/postgresql/data"   
-p 54320:5432
--restart always
postgres:11.18-alpine
```


```bash
podman run -d --name db -e POSTGRES_USER=mapp -e POSTGRES_PASSWORD=mapp -v "$(pwd)/pgdata:/var/lib/postgresql/data" -p 54320:5432 --restart always postgres:11.18-alpine
```

Всё, контейнер поднят и бегает) Осталось прокинуть туда миграции


## Получение удалённого сервер для докер контейнера

Ярик сказал, что это какой то докер-контекст. Какая проблема с прошлым решением? Каждый раз сносят подман машину, надо запускать (после каждого обновления и тд)

[Инструкция, как получить сервер](https://mapp.sberbank.ru/app/page/31299)

Если вдруг не будет доступов до ДИ (пока не знаю, что это такое), но оформляем заявку

Если вообще не могу войти или [тут пусто](https://cs.cloud.sberbank.ru/cloud/services/stands?page=1&perPage=50&sort=order_created_at&sortDirection=descend), то надо просить доступ у наших девопсеров (тот же Бойко Даниил, Богдан)


Не уверен в правоте материала, сам не проходил, это чисто слова Олега


## Локальная проверка новой версии mapp-tiptap в mapp-front

1. `npm run build` в mapp-tiptap
2. Создаются новые 2 папки: commonjs, dist
3. Берём их и идём в mapp-front node_modules
4. Удаляем папку .cache
5. Идём в папку node_modules/@sber-mapp/tiptap/
6. Удаляем там 2 вышесказанные папки и вставляем недавно сгенерированные
7. npm run start mapp-front


Вуаля, теперь мы можем проверить, как новые изменения в типтапе работают в мапп фронте)


## Связка mapp-front-cms & mapp-tiptap

1) useContentEditor: определяем новые переменные, которые передаёт в типтап из мапп-фронт

2) прокидываем необходимые типы из типтапа в мапп-фронт. Для этого в tiptap:src/index.ts прописываем экспортируемые типы, билдим проект, пихаем в мапп-фронт нод модули и билдим там проект. И затем уже импортируем типы в нужном месте

3) edit mode находится в src/containers/space-content-page/edit/page-form/ContentEditor/index.tsx

4) view mode - src/containers/content-viewer/index.tsx


## Обновление сгенерированной  api в mapp-front-cms

1) Пуллим мапп-фронт, xray-backend

2) Запускаем xray-backend

3) В мапп-фронт запускаем команду npm run api-codegen

Готово!


## Кликстрим

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

2) Теперь мы создаём 1 экземпляр класса для всего проекта, вызываем init и используем это (паттер Singleton). В обработке клика просто вызываем функцию клика какой либо области или страницы


## Feature flags, свойства портала

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

Для этого в коде есть хук `usePortalPropeties`, который получает все свойства и флаги из админки и может их передать в любое место кода.

Все свойства и фичи флаги перечислены на [странице в конфе](https://confluence.sberbank.ru/pages/viewpage.action?pageId=18331193839). При добавлении очередного свойства/фичи флага мы обязаны добавить его туда с подробным описанием, для чего он

На локальном стенде может возникнуть проблема, что кнопка Добавить свойство не работает. Тогда надо идти в локальный сваггер по ссылке (ну у меня такая): <http://localhost:3305/xray/api/v1/docs>

Там есть ручка `/xray/api/v1/portal-config/property-list/set-property`

Через неё добавляем новое свойство и теперь кнопка в админке Добавить свойство будет работать. Добавляем наше, проверяем локально, что всё пашет


## Usage of BASH

- Control + A - начало строки
- Control + E - конец строки
- Option + Arrow Left/Arrow Right - сдвиг по слову влево\\вправо


## Важное

Ссылка на обход ограничения просмотра небезопасных сайтов в Хроме, Яндексе

<https://habr.com/ru/articles/532740/>


```bash
nohup /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --ignore-certificate-errors \
  --ignore-urlfetcher-cert-requests \
  &> /dev/null &
```


```bash
nohup /Applications/SberBrowser.app/Contents/MacOS/Sberbrowser
 --ignore-certificate-errors   --ignore-urlfetcher-cert-requests   &> /dev/null &
```



mapp-front-cms

В проекте работает модульная система. Каждый компонент как единый и независимый модуль, его легко можно вынести и он будет работать независимо. То есть компоненты друг от друга никак не зависят

Useful tickets

```javascript
git push --force-with-lease
```

```bash
lsof -i :PORT_NUMBER
kill -9 PID_ID
```


asdfу