• Как в docker связать новый контейнер с существующими?

    У docker exec и docker run есть опция --link соответствeнно в композе есть links:
    Ответ написан
    Комментировать
  • Bash scripts где смотреть исходники для практики?

    Advanced Bash-Scripting Guide
    https://tldp.org/LDP/abs/html/
    An in-depth exploration of the art of shell scripting
    Ответ написан
    Комментировать
  • Вывод в переменную прогресса архивации папки?

    модуль py7zr
    https://pypi.org/project/py7zr/ архивирует шифруя заголовки и позволяет узнать прогресс
    Ответ написан
    Комментировать
  • Как получит элемент XPATH по его topInTab?

    какое вам дали необычное задание...
    internetka.in.ua/xpath-start-part3
    https://www.w3schools.com/xml/xpath_operators.asp
    если помогло - отметьте решением
    Ответ написан
    Комментировать
  • Как сделать DTO с валидацией данных в Java Spring?

    у вас импорт неправильный был вместо
    import javax.validation.Valid;
    @RestController
    public class MainController
    {
        @PostMapping("/proxy/add")
        public void saveProxy(@Valid @RequestBody ProxyDto dto) {

    надо

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.validation.annotation.Validated;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestBody;
    @RestController
    @RequestMapping("/proxy")
    
    public class MainController
    {
    	@RequestMapping(value = "add", method = RequestMethod.POST)
    	public Map<String, Object> addBook(@Validated @RequestBody ProxyDto dto ) {
    ....
    и
    import javax.validation.constraints.NotNull;
    public class ProxyDto {
    
    	@NotNull(message = "idbn is missing")
    	@NotEmpty(message = "idbn is empty")
    
    
     private String proxy;


    в зависимости от версии фрамеворка скажкт типа

    {
      "timestamp": 1612029070201,
      "status": 400,
      "error": "Bad Request",
      "exception": "org.springframework.web.bind.MethodArgumentNotValidException",
      "errors": [
        {
          "codes": [
            "NotNull.book.isbn",
            "NotNull.isbn",
            "NotNull.java.lang.String",
            "NotNull"
          ],
          "arguments": [
            {
              "codes": [
                "book.isbn",
                "isbn"
              ],
              "arguments": null,
              "defaultMessage": "isbn",
              "code": "isbn"
            }
          ],
          "defaultMessage": "idbn is missing",
          "objectName": "book",
          "field": "isbn",
          "rejectedValue": null,
          "bindingFailure": false,
          "code": "NotNull"
        },
        {
          "codes": [
            "NotEmpty.book.isbn",
            "NotEmpty.isbn",
            "NotEmpty.java.lang.String",
            "NotEmpty"
          ],
          "arguments": [
            {
              "codes": [
                "book.isbn",
                "isbn"
              ],
              "arguments": null,
              "defaultMessage": "isbn",
              "code": "isbn"
            }
          ],
          "defaultMessage": "idbn is empty",
          "objectName": "book",
          "field": "isbn",
          "rejectedValue": null,
          "bindingFailure": false,
          "code": "NotEmpty"
        }
      ],
      "message": "Validation failed for object='book'. Error count: 2",
      "path": "/book/add"
    }
    Ответ написан
    Комментировать
  • Как указать нужную версию бокса в Vagrantfile?

    cool_sniper98 - проверил у меня все работает

    вот

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    require 'yaml'
    require 'pp'
    
    basedir = ENV.fetch('USERPROFILE', '')
    basedir = ENV.fetch('HOME', '') if basedir == ''
    basedir = basedir.gsub('\\', '/')
    
    dir = File.expand_path(File.dirname(__FILE__))
    
    box_hostname = ENV.fetch('BOX_HOSTNAME', 'alpine')
    box_name = ENV.fetch('BOX_NAME', 'generic/alpine38')
    box_version = ENV.fetch('BOX_VERSION', '3.1.20' ) # 3.1.22
    VAGRANTFILE_API_VERSION = '2'
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
     
      config.vm.box = box_name # box_hostname
      config.vm.hostname = box_hostname
      config.vm.box_version = box_version # v3.1.20
    
      config.ssh.forward_agent = true
      config.vm.boot_timeout = 600
      config.vm.synced_folder './', '/vagrant'
      
      if ! Vagrant.has_plugin?('vagrant-alpine')
        # TODO: raise an error
      end
      if Vagrant.has_plugin?('vagrant-vbguest')
        config.vbguest.auto_update = false
      end
    
       config.vm.provision "shell", inline: <<-SHELL
         apk update && apk upgrade
       SHELL
    end

    вот проверка

    vagrant up
    пишет на консоле
    #  default: Downloading: https://vagrantcloud.com/generic/boxes/alpine38/versions/3.1.20/providers/virtualbox.box


    меняем

    export BOX_VERSION=3.1.18
     vagrant stop ; vagrant destroy -f ; vagrant up

    пишет на консоле
    #  default: Downloading: https://vagrantcloud.com/generic/boxes/alpine38/versions/3.1.18/providers/virtualbox.box


    чтоб узнать какие есть закажите несуществкующую
    export BOX_VERSION=3.1.99
    vagrant up


    пишет на консоле
    The box you're attempting to add has no available version that
    matches the constraints you requested. Please double-check your
    settings. Also verify that if you specified version constraints,
    that the provider you wish to use is available for these constraints.
    
    Box: generic/alpine38
    Address: https://vagrantcloud.com/generic/alpine38
    Constraints: 3.1.99
    Available versions: 1.6.24, 1.6.26, 1.8.0, 1.8.1, 1.8.2, 1.8.4, 1.8.7, 1.8.8, 1.8.9, 1.8.12, 1.8.13, 1.8.14, 1.8.24, 1.8.26, 1.8.27, 1.8.28, 1.8.32, 1.8.38, 1.8.40, 1.8.48, 1.8.50, 1.8.52, 1.8.54, 1.8.56, 1.8.58, 1.8.60, 1.9.2, 1.9.4, 1.9.6, 1.9.8, 1.9.10, 1.9.12, 1.9.14, 1.9.16, 1.9.18, 1.9.19, 1.9.20, 1.9.22, 1.9.24, 1.9.26, 1.9.28, 1.9.30, 1.9.32, 1.9.34, 1.9.36, 1.9.38, 1.9.40, 2.0.0, 2.0.2, 2.0.4, 2.0.6, 3.0.0, 3.0.1, 3.0.2, 3.0.4, 3.0.6, 3.0.8, 3.0.10, 3.0.12, 3.0.14, 3.0.16, 3.0.18, 3.0.20, 3.0.22, 3.0.24, 3.0.26, 3.0.28, 3.0.30, 3.0.32, 3.0.34, 3.0.36, 3.0.38, 3


    чтоб узнать что есть и удалить лишнее

    vagrant box list

    generic/alpine38 (virtualbox, 3.1.18)
    generic/alpine38 (virtualbox, 3.1.20)


    vagrant box remove generic/alpine38 --box-version 3.1.20
    Ответ написан
    Комментировать
  • Как управлять мышкой и клавиатуры на c#?

    mIka01,
    вместо рыбы вот вам удочка
    читайте статью описывающую это
    https://www.codeproject.com/Articles/5264831/How-t...

    показано как можно делать c# - кстати и из java можно написать нечто похожее и работаюшее через jna (если надо могу дать линк на мой гитхаб
    Ответ написан
    Комментировать
  • Как отследить запуск процессов в Linux?

    Makefile для make (так же как build.xml для ant
    pom.xmlдля maven build.gradle для gradle и т.д.)
    как раз и описывает какие именно утилиты и компиляторы запускаются и с какими параметрами - это его основное предназначение

    догадываюсь что синтаксис Make вам не вполне знаком ...

    чтобы make вам сам напечатал шаги для сбрки проекта выполните его с опциями
    make -i -k -n | tee /tmp/a.log

    из man make:
    -i, --ignore-errors
                Ignore all errors in commands executed to remake files.
    
     -k, --keep-going
                Continue  as  much  as  possible after an error. 
       -n, --just-print, --dry-run, --recon
                Print the commands that would be executed, but do not execute them
                (except in certain circumstances).


    кстати книга по Make написана самим R. M. S и переведена
    rus-linux.net/nlib.php?name=/MyLDP/algol/gnu_make/...
    Ответ написан
    Комментировать
  • Почему супервизор не показывает stdout от скрипта питона?

    вот работающий пример: ( ... правда с переменой пользователя не заморачивался ) :

    Dockerfile
    # supervisor docker example
    FROM jfloff/alpine-python
    RUN apk add --no-cache supervisor && rm -rf /var/lib/apt/lists/*
    RUN sed -i 's/^\(\[supervisord\]\)$/\1\nnodaemon=true/' /etc/supervisord.conf
    RUN mkdir -p /etc/supervisor.d/
    COPY server.py server.py
    COPY agent.conf etc/supervisor.d/agent.ini
    # for server.py
    ARG SERVICE_PORT=8080
    ENV SERVICE_PORT=$SERVICE_PORT
    EXPOSE $SERVICE_PORT
    # NOTE: not ENTRYPOINT
    CMD ["supervisord", "-c", "/etc/supervisord.conf"]

    agent.conf
    [program:server]
    autostart = true
    autorestart = true
    user = root
    environment = PYTHONUNBUFFERED=1
    directory = /
    command = python server.py
    stderr_logfile=/var/log/server.err
    stdout_logfile=/var/log/server.out
    команды

    docker build -t example -f Dockerfile .
    docker rm example_container
    docker run -it --name example_container example

    2020-12-19 18:00:54,578 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
    2020-12-19 18:00:54,578 INFO Included extra file "/etc/supervisor.d/agent.ini" during parsing
    2020-12-19 18:00:54,588 INFO RPC interface 'supervisor' initialized
    2020-12-19 18:00:54,588 CRIT Server 'unix_http_server' running without any HTTP authentication checking
    2020-12-19 18:00:54,589 INFO supervisord started with pid 6
    2020-12-19 18:00:55,594 INFO spawned: 'server' with pid 8
    2020-12-19 18:00:56,597 INFO success: server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)


    docker exec -it example_container supervisorctl status server


    server                           RUNNING   pid 8, uptime 0:00:14


    docker exec -it example_container sh

    ls /var/log/
    server.err       server.out       supervisord.log
    
     ps ax |  grep pytho[n]
        6 root      0:00 {supervisord} /usr/bin/python3 /usr/bin/supervisord -c /etc/supervisord.conf
        8 root      0:00 python server.py
    Ответ написан
    Комментировать
  • Как установить утилиту hargo для командной строки?

    в докере соберется судя по
    https://github.com/mrichman/hargo/blob/master/Dock...

    RUN go build -ldflags "-s -w -X main.Version=$VERSION -X main.CommitHash=$HASH -X 'main.CompileDate=$DATE'" -o hargo ./cmd/hargo


    если помогло - отметьте решением
    Ответ написан
  • Могут ли макросы Excel подгрузить информацию в документ из сети?

    технически существует Selenium для VBA
    https://www.guru99.com/excel-vba-selenium.html
    (эту страницу перевели:
    https://coderlessons.com/tutorials/kachestvo-progr...
    - но по моему гораздо проще использовать Selenium c Powershell и при помощи повершела создавать документ эксель
    Ответ написан
  • Как увидеть всю строку вывода команды в терминале по горизонтали?

    повторите обрезаемую команду c
    |& tee /tmp/a 
    vi !$


    если в /tmp/a все есть то это терминфо если не все то это ps

    у ps
    можно изменить опции напр

    ps -ax -ocomm,pid,args
    ps -axwww


    5fd6349621a54517769274.jpeg
    Ответ написан
    Комментировать
  • Почему условия поиска забирает выводимый результат?

    потому что каждый вызов find()перемещает его с текущего на следующее совпадение :
    find the first, and then for each subsequent call to find() it will move to the next match.
    поэтому findдля while а в if обычто используется matches()
    Ответ написан
    Комментировать
  • Как сделать проверку по дате +1 день при удаление старых файлов?

    Bohdan Zadorozhniy вам надо выполнить похожую команду чтоб узнать были ли свежие файлы
    FORFILES /p . /s /m *.* /d !"сегодня минус 3 дня"! /c "cmd /c echo @FILE"
    IF errorlevel 1 ECHO Skip Purge && GOTO :EOF
    ...
    а для этого вычислить
    дату "сегодня минус 3 дня"
    - это традиционно делаетеся через какой нибудь получше язык чем cmd
    например jscsipt

    пример - если помогло - отметьте решением

    check.cmd
    @echo OFF
    REM https://qna.habr.com/q/898855
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET delta=%1
    IF "%delta%"=="" SET delta=-3
    FOR /f %%. IN ('cscript.exe /nologo add_days.js !delta!') DO SET CHECK_DATE=%%.
    ECHO FORFILES /p . /s /m *.* /d !CHECK_DATE! /c "cmd /c echo @FILE"
    FORFILES /p . /s /m *.* /d !CHECK_DATE! /c "cmd /c echo @FILE" 2>NUL 1>NUL
    IF errorlevel 1 ECHO Skip Purge && GOTO :EOF
    echo Call purge
    
    GOTO :EOF


    add_date.js
    var days=parseInt(WScript.Arguments.Item(0));
    
    Date.prototype.addDays = function(days) { var date = new Date(this.valueOf()); date.setDate(date.getDate() + days); return date; }
    
    var o = (new Date()).addDays(days);
    
    WScript.Echo((1 + o.getMonth()) + '/' + o.getDate() + '/' + o.getFullYear());
    Ответ написан
  • Как остановить tomcat?

    Des_Tes в дефолтной конфигурации томкат можно остановть послав на его порт комманду
    указынные в конфигурации в %CATALINA_HOME%\conf
    C:\java\apache-tomcat-8.5.45\conf\server.xml
    <?xml version="1.0" encoding="UTF-8"?>
    
    <Server port="8005" shutdown="SHUTDOWN">
    ...

    https://tomcat.apache.org/tomcat-9.0-doc/config/se...

    там же в binесть команды shutdown.bat и shutdown.sh
    5fbaf85d3caca376820459.png

    Directory of C:\java\apache-tomcat-8.5.45\bin
    
    09/01/2019  01:38 PM             2,020 shutdown.bat
    09/01/2019  01:38 PM             1,902 shutdown.sh


    если помогло - отметьте решением
    Ответ написан
    Комментировать
  • Почему docker maven не видит папку?

    мавен справедливо ругается на отсутствие pom.xml в директории в которой вы его запускаете - на скриншоте видно что pom.xml там нет. создайте и заработает
    Ответ написан
    Комментировать
  • CMD Команда для создания папки для каждого файла и перемещения файла в папку?

    dir
    
     Directory of C:\Users\Serguei\AppData\Local\Temp\xxx
    
    11/18/2020  09:46 AM    <DIR>          .
    11/18/2020  09:46 AM    <DIR>          ..
    11/18/2020  09:46 AM                 0 BCJ-042102_1.jpg
    11/18/2020  09:46 AM                 0 BCJ-042102_2.jpg
    11/18/2020  09:46 AM                 0 BCJ-042102_3.jpg
    11/18/2020  09:46 AM                 0 BLN-021301_2.jpg
    11/18/2020  09:46 AM                 0 BLN-021301_3.jpg
    11/18/2020  09:46 AM                 0 DZPB-049001_1.jpg
    11/18/2020  09:46 AM                 0 DZPB-049001_2.jpg
    11/18/2020  09:46 AM                 0 DZPB-049001_4.jpg
                  8 File(s)              0 bytes

    команда
    for /F %. in ('dir /b *.*') ; do mkdir %~n. && move /y %. %~n.

    результат
    dir
    
    Directory of C:\Users\Serguei\AppData\Local\Temp\xxx
    
    1/18/2020  09:47 AM    <DIR>          .
    1/18/2020  09:47 AM    <DIR>          ..
    1/18/2020  09:47 AM    <DIR>          BCJ-042102_1
    1/18/2020  09:47 AM    <DIR>          BCJ-042102_2
    1/18/2020  09:47 AM    <DIR>          BCJ-042102_3
    1/18/2020  09:47 AM    <DIR>          BLN-021301_2
    1/18/2020  09:47 AM    <DIR>          BLN-021301_3
    1/18/2020  09:47 AM    <DIR>          DZPB-049001_1
    1/18/2020  09:47 AM    <DIR>          DZPB-049001_2
    1/18/2020  09:47 AM    <DIR>          DZPB-049001_4
                  0 File(s)              0 bytes
    C:\Users\Serguei\AppData\Local\Temp\xxx\BCJ-042102_1\BCJ-042102_1.jpg
    C:\Users\Serguei\AppData\Local\Temp\xxx\BCJ-042102_2\BCJ-042102_2.jpg
    C:\Users\Serguei\AppData\Local\Temp\xxx\BCJ-042102_3\BCJ-042102_3.jpg
    C:\Users\Serguei\AppData\Local\Temp\xxx\BLN-021301_2\BLN-021301_2.jpg
    C:\Users\Serguei\AppData\Local\Temp\xxx\BLN-021301_3\BLN-021301_3.jpg
    C:\Users\Serguei\AppData\Local\Temp\xxx\DZPB-049001_1\DZPB-049001_1.jpg
    C:\Users\Serguei\AppData\Local\Temp\xxx\DZPB-049001_2\DZPB-049001_2.jpg
    C:\Users\Serguei\AppData\Local\Temp\xxx\DZPB-049001_4\DZPB-049001_4.jpg
    Ответ написан
  • Selenium - Не запускается chromedriver без headless?

    еще можно установить xvnc https://habr.com/ru/post/76343/
    или xvfb https://habr.com/ru/sandbox/20989/
    Ответ написан
    Комментировать
  • Как правильно заменить пути в именах файлов?

    Senseich
    вот ваш пример с испрваленными ошибками
    единственное что я не стал разбирать - локализованные названия директорий..
    русский в пути уберите - назовите английскими буквами

    #!/bin/bash
    
    FILE="/tmp/file2.txt"
    B='var arrIm = ['
    L=$(cat $FILE | sed -e "s/\\(..*\\)/'\\1'/g" | sed -e 's|C:\\Users\\SEN\\Desktop\\777\\|https://ohiyo.ru/uploads/posts/|g')
    E="
    ];"
    
    echo "$B$L$E"


    cat $FILE
    C:\Users\SEN\Desktop\777\XXX.TXT


    ./a.sh
    var arrIm = ['https://ohiyo.ru/uploads/posts/XXX.TXT'
    ];
    Ответ написан
    Комментировать