• Как в Ubuntu в OpenVPN решить проблему с cipher 'AES-256-CBC' in --data-ciphers?

    @domanskiy Автор вопроса
    На ПК и ноуте обновил Ubuntu до 24.10
    Накатил все обновления.
    На ПК OpenVPN поднимает соединение с сервером, но ноуте всё так же не хочет (
    Ответ написан
    Комментировать
  • Как из Rust Tauri поменять $scope (angularjs)?

    @domanskiy Автор вопроса
    Собственно ответ нашёл
    Нужно использовать систему событий
    The event system allows you to emit events to the backend and listen to events from it. Система событий позволяет вам отправлять события в серверную часть и прослушивать события из нее.


    Ну и в js повесить слушателя который будет в скоуп передавать данные из эвента.

    Было бы конечно проще, имей таури общий с фронтендом и бекендом объект скоупа
    Ответ написан
  • Как вывести строку из Rust в HTML элемент с помощью JS?

    @domanskiy
    Я новичок в Tauri, но разве не требуется зарегистрировать в Rust в tauri::Builder в invoke_handler функцию раста, что бы затем её из js дёргать?
    Например через window.__TAURI__.invoke("имя_функции_раста")
    или
    await invoke("имя_функции_раста", {
    /////
    })
    Ответ написан
    Комментировать
  • Почему нет нормального комьюнити ODOO?

    @domanskiy
    Odoo на Python построена. WSGI синхронный, хотя уже идет речь о возможности переделать под ASGI типа FastApi (starlet).
    Используют самые известные библиотеки. Гляньте requirements.txt. Переделать под себя не составит труда.

    Что на PHP, что на Python программиста найти не проблема.
    Есть аналог ERPNext. От индусов. На пайтоне. Но там в коде сложнее разобраться.

    https://github.com/odoo/odoo
    https://github.com/frappe/erpnext
    Ответ написан
  • Как создать из списка подсписки и посчитать частоту повторения?

    @domanskiy
    Нужно использовать модуль collections
    from collections import Counter

    c = Counter(mylist)
    Ответ написан
    Комментировать
  • Asus ubuntu 20.04 нету wifi?

    @domanskiy
    У бука нет порта изернет. Не получится проводом интернет подключить
    Я подключал интернет от мобилы (на андроиде). Сделал его USB модемом, и подключил через стандартный USB провод.

    wifi карта работает только после хардресета. Если простой ресет или поверофф, после запуска, убунта карту не видит.
    Блютуз работает.
    секьюрити в биосе отключен.
    Ядро линукса обновил до 5.16
    Ответ написан
    Комментировать
  • Пригоден ли ноутбук для фотошопа?

    @domanskiy
    Всё зависит от направления работы в ФШ.
    Если вам ФШ нужен что бы иконки рисовать, сайты - подойдёт любой "калькулятор".
    Поверьте. Я когда начинал работа, сидел за целероном 466.
    Ставьте фотошоп 7, и вам 256Мб ОЗУ хватит )))

    Я на старом ноуте сидел (Асус r5119), пока работал c этикетками и коробочками.
    Как только пошли заказы на билборды, пришлось купить ПК.
    К примеру, присылают вам макет в 0.7-1,5Гб PSD файл. Внутри 100500 слоёв и эффектов.
    Только на открытие его, ноуту нужно 10+Гб кеша на диске (в системном трее можно включить показ сколько места занимает). По мере работы, изза "истории", кешь разростается до 30-40Гб.
    Это место на винте, но нужны приличный запас мощности CPU и объем ОЗУ что бы этим все ворочить.
    Да, открывались файлы на ноуте по 30+ минут
    Сохранялось по 60+ минут.
    После такого, быстро побежишь стационарник покупать.
    Ответ написан
    Комментировать
  • Ноутбук или компьютер для программирования?

    @domanskiy
    Тот же вопрос волнует. На дворе 2022год
    Есть ПК с 2мю мониторами. Ему уже лет 10. На i3 и 16Г ОЗУ. Всё остальное - SSD, HDD и тд

    Сменил профиль. С полиграфического дизайна на программирование. Стало не хватать мобильности.
    Что нужно от ноута:
    Для разработки на Python и Go, нужен Docker. Под него выделяется прилично ОЗУ
    Любая IDE - кушает прилично ОЗУ. Если не хватает, используйте блокнот или редакторы vim/vsc

    Дискретная графика в принципе не требуется.
    Второй монитор можно подключить.

    Насколько удобно кодить на ноуте с монитором 15,6-16` ?
    Хватит ли 16Г ОЗУ? Почти все интересные ноуты с распаянной оперативкой :(
    Если ли проблемы с разработкой на AMD?
    Ответ написан
    Комментировать
  • Какую операционную систему использовать для разработки на Python?

    @domanskiy
    Есть драйвер по работе с БД для Python - psycopg2
    Под линуксом (можете попробовать в докере) ставится сразу и без костылей.
    Под виндой, требует библиотеки С++. И для этого приходится ставить IDE ВизуалСтудию (не путать с VSC) на пару Гигов.

    У меня 3 системы на ПК стоит Хакинтош/Винда/Линукс. Каждый на своём SSD.
    И нет проблем )

    Если вас беспокоят требования по Linux в вакансиях, присмотритесь к требованиям - знание Docker.
    А Docker под линуксом работает намного быстрее, т.к. он "родной" для него и не требует промежуточных "прокладок" как в случае с Umix/MacOS и Win
    Ответ написан
    Комментировать
  • Celery не видит модуль. Как подключить celery к FastApi?

    @domanskiy Автор вопроса
    В итоге, рабочее решение:
    61b0510541964306152675.png
    Мне не совсем понятно как celery находит именно этот task.py
    Но всё работает.
    !!!Внимание
    celery==4.4.7
    flower==0.9.7
    Для 5й версии celery, код запуска другой. Смотри документацию
    Ответ написан
    Комментировать
  • Как нажимать на менюшки в selenium?

    @domanskiy
    селениум не "управляет мышкой".
    Смотришь код меню. Потом в коде пишешь какой элемент нужно найти (обычно через xpath) и что с ним делать
    Ответ написан
  • Как установить psycopg2?

    @domanskiy
    Windows.
    Была та-же беда.
    Удалил всю папку venv и заново всё поставил. Только начал с psycopg2 затем алхимия и остальные пакеты проекта
    Ответ написан
    Комментировать
  • Как импортировать товары по API woocommerce?

    @domanskiy
    Как то так.
    from woocommerce import API
    import json
    
    wcapi = API(
        url=u"https://streetclimate.ru",
        consumer_key="ck_",
        consumer_secret="cs_",
        wp_api=True,
        version="wc/v2",
        query_string_auth=True  # Force Basic Authentication as query string true and using under HTTPS
    )
    
    def read_test(id):
        r = wcapi.get(f"products/{id}").json()
        print(r, '\n')


    Только consumer_key и consumer_secret свои подставить нужно
    Ответ написан
    Комментировать
  • Как задать тип поля mixed в pydantic?

    @domanskiy Автор вопроса
    Решил через

    from typing import List, Optional, Any
    
    value: Any = Field(..., description='.....')
    Ответ написан
    Комментировать
  • Как автоматом декодировать json с текстом в разных кодировках?

    @domanskiy Автор вопроса
    Код запроса
    r: list[object] = wcapi.get("products", params={'per_page': 1, 'status': 'publish'}).json()

    Если вывести, то value некоторых ключей, выглядит: "name":"\\u041c\\u0443\\u043b\\u044c\\u0442\\u0438\\u0437\\u043e\\u043d\\u0430\\u043b\\u044c\\u043d\\u044b\\u0435
    Проверял, кодировка windows-1251
    но только некоторых.
    Большинство значений в кирилице нормально отображается.
    Т.е. часть текста в utf8, а другая в windows-1251
    Перебором будет очень затратно (
    Ответ написан
  • Как прописать в docker-compose для VUEJS авторестарт при изменении файлов?

    @domanskiy Автор вопроса
    Нашел решение. 3 дня потратил
    источник
    и еще
    environment:
          - CHOKIDAR_USEPOLLING=true

    в папке pprint_vue есть файл
    .dockerignore
    .gitignore
    .git
    .idea
    node_modules


    В итоге выглядит следующим образом.
    Dockerfile
    FROM node:lts-alpine as build
    
    ARG APP_DIR=app
    WORKDIR /${APP_DIR}
    ENV PATH /app/node_modules/.bin:$PATH
    
    COPY package.json ./
    RUN npm install npm@latest
    RUN npm install   --no-progress --ignore-optional
    RUN npm install @vue/cli -g
    
    EXPOSE 5000
    
    CMD ["npm", "run", "serve"]


    docker-compose.yml

    version: '3.9'
    
    #настройка сети между контейнерами.
    networks:
      static-network:
        ipam:
          driver: default
          config:
            - subnet: 10.5.0.0/16
        
    services:
    
      database:
        image: postgres:13 # имя контейнера
        container_name: "postgres_cont"
        ports:
          - "6532:5432"
        env_file:
          - pg-env.env # configure env postgres
        volumes:
          - E:\docker\volumes\postgres:/var/lib/postgresql/data
        restart: unless-stopped #рестарт если контейнер "вылетает"
        logging: #отключаем логирование в консоли
          driver: none
        networks:
          static-network:
            ipv4_address: 10.5.0.5
    
      pgAdmin:
        image: dpage/pgadmin4 #имя контейнера
        container_name: "pgAdmin_cont"
        ports:
          - "5555:80"
        env_file:
          - pgadmin-env.env # configure pgAdmin
        depends_on:
          - database
        volumes:
          - E:\docker\volumes\pgAdmin:/var/lib/pgadmin
        restart: unless-stopped #рестарт если контейнер "вылетает"
        logging: #отключаем логирование в консоли
          driver: none
        networks:
          static-network:
            ipv4_address: 10.5.0.8
    
      app_fastapi:
        # image: python:3.8
        container_name: "app_FastAPI" #имя контейнера
        build:
           context: ./FastAPI
           dockerfile: Dockerfile
        volumes:
          - ./FastAPI:/app_fastapi
        ports:
          - 8000:8000
        depends_on:
          - database
        entrypoint: ["python", "main.py"]
        restart: unless-stopped #рестарт если контейнер "вылетает"
        networks: #принудительно задаём IP
          static-network:
            ipv4_address: 10.5.0.6
    
    
      vue_frontend:
        container_name: vue_ui
        build: 
          context: ./pprint_vue
          dockerfile: Dockerfile
        stdin_open: true
        tty: true
        environment:
          - CHOKIDAR_USEPOLLING=true
        volumes:
          - ./pprint_vue:/app
          - /app/node_modules
        ports:
          - "5000:5000"
        restart: unless-stopped #рестарт если контейнер "вылетает"
        depends_on:
          - app_fastapi
        networks: #принудительно задаём IP
          static-network:
            ipv4_address: 10.5.0.10
    
    volumes:
    
      pprint_vue:
        name: pprint_vue
    
      FastAPI:
        name: FastAPI



    Т.к. поменял стандартный порт для VUE. package.json немного изменён
    package.json

    "scripts": {
            "serve": "vue-cli-service serve --port 5000",
            "build": "vue-cli-service build"
        },

    Ответ написан
    4 комментария
  • Как в SVG нагисовать дугу, зная один радиус и точки начала и конца?

    @domanskiy Автор вопроса
    Чтото я стормозил. Это простая задача на поиск гипотенузы по координатам.
    Ответ написан
  • Как сделать редирект VueJS & Flask?

    @domanskiy
    У самого сейчас проект учебный RestAPI на Flask + Vue

    Тебе нужно в ретурне отдавать JSON и код 200 если всё ОК
    В JSON пихнуть токен, юзернаме, роль юзера, и т.д.

    Токен, используя Vuex запихнуть в стайт и использовать в запросах
    Я использую Vuex. Советую

    Про редирект.
    <script>
        import {mapGetters, mapActions} from 'vuex'
    
        export default {
            name: 'login',
            data() {
                return {
                    form: {
                        email: null,
                        password: null,
                    }
                }
            },
            // computed: mapGetters(['user/USER_AUTH']),
            methods: {
                ...mapActions({
                    loginUser: 'user/LOGIN_USER'
                }),
                submit() {
                    this.loginUser(this.form)
                        .then(() => this.$router.push('/'))
                        .catch(err => console.log(err))
                }
            }
        }
    </script>


    Т.е. метод отправляет в экшен данные формы.
    Экшен Vuex отправляет данные на сервер через API, и т.д.
    actions: {
            async LOGIN_USER({ commit }, form) {
                const response = await axios.post('api/v1/login', form)
    
                const user = await response.data
                commit('UPDATE_USER_AUTH', user)
            },


    Может не самый оптимальный код. Но пока так. Рефакторинг потом устрою.
    Запись в локалсторе, что бы не терять данные при перезагрузке страницы.
    Мутация:
    mutations: {
            UPDATE_USER_AUTH(state, user) {
                localStorage.token = user.token
                localStorage.email = user.email
                localStorage.name = user.name
                localStorage.role = user.role
                state.token = user.token
                state.email = user.email
                state.name = user.name
                state.role = user.role
            }
    Ответ написан
    Комментировать
  • Как оформить запрос к связанным таблицам O2M через ORM sqlalchemy?

    @domanskiy Автор вопроса
    Разобрался.
    Модели у меня были ошибочно сделаны M2M
    Ответ написан
    Комментировать
  • Как в docker для Windows изменить папку хранения images?

    @domanskiy Автор вопроса
    сам докер 20.10.0, build 7287ab3
    Ответ написан
    Комментировать