Получение всех строковых переменных из Javascript файла

To get all the strings from a Javascript file, you’ll need to parse the file to get a syntax tree (AST), then walk it.

You can do this trivially with the ESPrima library (for parsing) and Estraverse (for walking the AST).

Читать далее «Получение всех строковых переменных из Javascript файла»

Очистка от лишних образов docker

Удаление контейнеров

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

Удаление образов

docker images -a | grep none | awk '{ print $3; }' | xargs docker rmi

According to the doc, the following command will delete images older than 48 hours.

docker image prune --all --filter until=48h

Зеркало для docker

Альтернативное зеркало для docker

"https://dockerhub.timeweb.cloud/"

В файл etc/docker/daemon.json добавляем:

"registry-mirrors": [
    "https://mirror.gcr.io/",
    "https://dockerhub.timeweb.cloud/"
  ]

Чтобы сохранить образы в собственный репозиторий можно воспользоваться:

docker pull ubuntu:20.04
docker tag ubuntu:20.04 my-registry/ubuntu:20.04
docker push my-registry/ubuntu:20.04

В этом примере показана возможность сохранить образ ubuntu:20.04 в собственном репозитории

Настройка окружения для Linux

Запустите терминал.

Подключите репозиторий deadsnakes со всеми версиями Python.

sudo add-apt-repository ppa:deadsnakes/ppa

Установите Python 3.9:

sudo apt-get install python3.9
Читать далее «Настройка окружения для Linux»

Виртуальное окружение Python (venv)

Для создания виртуального окружения, перейдите в директорию своего проекта и выполните:

python -m venv venv

-m — флаг для запуска venv как исполняемого модуля.

venv — название виртуального окружения (где будут храниться ваши библиотеки).

В результате будет создан каталог venv/ содержащий копию интерпретатора Python, стандартную библиотеку и другие вспомогательные файлы. Все новые пакеты будут устанавливаться в venv/lib/python3.x/site-packages/.

Активация

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

  • venv\Scripts\activate.bat — для Windows;
  • source venv/bin/activate — для Linux и MacOS.

source выполняет bash-скрипт без запуска дополнительного bash-процесса.

Проверить успешность активации можно по приглашению оболочки. Она будет выглядеть так:

(venv) root@server:/var/test#

Также новый путь до библиотек можно увидеть выполнив команду:

python -c "import site; print(site.getsitepackages())"

Автоматическая активация

В некоторых случаях, процесс активации виртуального окружения может показаться неудобным (про него можно банально забыть 🤷‍♀️).

На практике, для автоматической активации перед запуском скрипта, создают скрипт-обертку на bash:

#!/usr/bin/env bash

source $BASEDIR/venv/bin/activate
python $BASEDIR/my_app.py

Теперь можно установить права на исполнение и запустить нашу обертку:

chmod +x myapp/run.sh
./myapp/run.sh

Деактивация

Закончив работу в виртуальной среде, вы можете отключить ее, выполнив консольную команду:

deactivate

Оригинал статьи: https://pythonchik.ru/okruzhenie-i-pakety/virtualnoe-okruzhenie-python-venv

Создание команды INSERT в PostgreSQL для таблиц

Данный способ позволяет создать скрипт INSERT для наполнения таблицы PostgreSQL.

pg_dump -a -U postgres -t table_name -f output_name.sql --inserts --column-inserts --on-conflict-do-nothing database_name

Описание параметров:

  • a — Выгружаются только данные, а не схема (определения данных). Выгружаются табличные данные, большие объекты и значения последовательности. Этот параметр аналогичен, но по историческим причинам не идентичен параметру, определяющему --section=data.
  • U — Имя пользователя для подключения как.
  • t — Дамп только таблиц с совпадающими именами
  • f — Отправляйте выходные данные в указанный файл. Этот параметр можно опустить для файловых форматов вывода, в этом случае используется стандартный вывод. Однако он должен быть указан для формата вывода каталога, где указывается целевой каталог, а не файл. В этом случае каталог создан pg_dump и не должен существовать ранее.
  • inserts — Дамп данных в виде INSERT команд (а не COPY). Это сильно замедлит восстановление; в основном это полезно для создания дампов, которые можно загружать в базы данных, отличные от PostgreSQL. Любая ошибка во время восстановления приведет к потере только строк, которые являются частью проблемной таблицы, INSERT а не всего содержимого таблицы. Обратите внимание, что восстановление может завершиться полным сбоем, если вы изменили порядок столбцов. Опция --column-inserts защищает от изменений порядка столбцов, хотя и работает еще медленнее.
  • column-inserts — Дамп данных в виде INSERT команд с явными именами столбцов (INSERT INTO table (column, ...) VALUES ...). Это сильно замедлит восстановление; в основном это полезно для создания дампов, которые можно загружать в базы данных, отличные от PostgreSQL. Любая ошибка во время восстановления приведет к потере только строк, которые являются частью проблемной таблицы INSERT, а не всего содержимого таблицы.
  • on-conflict-do-nothing — Добавить команды ON CONFLICT DO NOTHING в INSERT. Этот параметр недопустим, если также не указано --inserts--column-inserts или --rows-per-insert.

Пример:

pg_dump -a -U postgres -t dbo.cs_point_types -f cs_point_types.sql --inserts --column-inserts --on-conflict-do-nothing skr-dev-db

https://www.postgresql.org/docs/current/app-pgdump.html

Подтянуть изменения из основного проекта Git

Ситуация:

Был сделан fork из проекта https://github.com/datalens-tech/datalens. Через некоторое время были внесены изменения, как в исходном проекте, так и в fork-project

Решение:

На локальном компьютере в проекте выполняем команду:

git remote add datalens-tech https://github.com/datalens-tech/datalens

Где datalens-tech — это произвольное имя.

Далее выполняем

git fetch datalens-tech
git merge datalens-tech/main

Исправляем конфликты, если они есть.

git push

Сохраняем результат