Задать вопрос
  • Почему массив не модифицируется по ссылке?

    @MishaXXL Автор вопроса
    Aetae, спасибо!
    В гигантских массивах нужно уже через цикл с push, верно?

    Если интересно, откуда взялся вопрос
    Там в промежутке 15 сек почему-то доказывалось, что должен был сработать concat
    https://youtu.be/mORNlADs_P4?t=2965
    Вроде тим лид сам же задал этот вопрос и странно, что тогда так на него сам ответил при разьяснении
    Или я может чего не понял
    Написано
  • Как после остановки одного контейнера в Docker Compose поднять обновленный?

    @MishaXXL Автор вопроса
    Александр Карабанов, встретил такую строку => => naming to docker.io/library/rest-api-client при попытке собрать, только не понял, откуда она взялась )

    docker compose up -d --build client
    [+] Building 0.3s (10/10) FINISHED                                                                                                                                                                         docker:default
     => [client internal] load .dockerignore                                                                                                                                                                             0.0s
     => => transferring context: 52B                                                                                                                                                                                     0.0s
     => [client internal] load build definition from dockerfile                                                                                                                                                          0.0s
     => => transferring dockerfile: 134B                                                                                                                                                                                 0.0s
     => [client internal] load metadata for docker.io/library/node:20                                                                                                                                                    0.0s
     => [client 1/5] FROM docker.io/library/node:20                                                                                                                                                                      0.0s
     => [client internal] load build context                                                                                                                                                                             0.0s
     => => transferring context: 17.09kB                                                                                                                                                                                 0.0s
     => CACHED [client 2/5] WORKDIR /app                                                                                                                                                                                 0.0s
     => CACHED [client 3/5] COPY package*.json .                                                                                                                                                                         0.0s
     => CACHED [client 4/5] RUN npm install                                                                                                                                                                              0.0s
     => [client 5/5] COPY . .                                                                                                                                                                                            0.1s
     => [client] exporting to image                                                                                                                                                                                      0.1s
     => => exporting layers                                                                                                                                                                                              0.1s
     => => writing image sha256:100c7a6d01ad8c7de5b26c722f7f3196fd818c974ef31f21d9acf5d8a70b0c5a                                                                                                                         0.0s
     => => naming to docker.io/library/rest-api-client                                                                                                                                                                   0.0s
    [+] Running 1/1
     ✔ Container client_container  Started
    Написано
  • Как после остановки одного контейнера в Docker Compose поднять обновленный?

    @MishaXXL Автор вопроса
    Александр Карабанов, да, с обращениемserverи clientзаработало, спасибо!
    docker-compose.yml
    version: '3.5'
    
    services:
      postgres:
        container_name: postgres_container
        image: postgres
        environment:
          POSTGRES_DB: ${POSTGRES_DB}
          POSTGRES_USER: ${POSTGRES_USER}
          POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
          PGDATA: /data/postgres
        volumes:
          - ./postgres/init.sql:/docker-entrypoint-initdb.d/init.sql
          - ./postgres/setup.sql:/docker-entrypoint-initdb.d/setup.sql
          - postgres:/data/postgres
        ports:
          - ${POSTGRES_PORT}:${POSTGRES_PORT}
        healthcheck:
          test: ["CMD", "pg_isready", "-U", "postgres"]
          interval: 1s
          timeout: 1s
          retries: 60
        networks:
          - ${NETWORK}
        restart: always
      
      pgadmin:
        container_name: pgadmin_container
        image: dpage/pgadmin4
        environment:
          PGADMIN_DEFAULT_EMAIL: admin@mail.ru
          PGADMIN_DEFAULT_PASSWORD: password
          PGADMIN_CONFIG_SERVER_MODE: 'False'
        volumes:
          - pgadmin:/var/lib/pgadmin
        ports:
          - 5480:80
        networks:
          - ${NETWORK}
        restart: unless-stopped
    
      nginx:
        container_name: nginx_container
        image: nginx
        ports:
          - 80:80
          - 443:443
        networks:
          - private
          - public
        restart: always
        volumes:
          - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
          - ./nginx/conf.d/:/etc/nginx/conf.d/:ro
          - ./nginx/templates/:/etc/nginx/templates/:ro
    
    
      server:
        container_name: server_container
        build:
          context: ./server
        # image: rest-api-server
        ports:
          - 3000:3000
        networks:
          - ${NETWORK}
        restart: unless-stopped
    
      client:
        container_name: client_container
        build:
          context: ./client
        ports:
          - 5173:5173
        networks:
          - ${NETWORK}
        restart: unless-stopped
    
    networks:
      private:
        driver: bridge
        internal: true
      public:
        driver: bridge
    
    volumes:
        postgres:
        pgadmin:


    client dockerfile
    FROM node:20
    
    WORKDIR /app
    
    COPY package*.json .
    
    RUN npm install
    
    COPY . .
    
    CMD ["npm", "start"]


    server dockerfile
    FROM node:20
    
    WORKDIR /app
    
    COPY package*.json .
    
    RUN npm install
    
    COPY . .
    
    RUN npm run build
    
    CMD ["npm", "start"]


    Правда команды
    docker compose stop client
    docker compose start client

    так же запускают кэшированный образ, если я в промежутке между ними сделал изменения

    Я так понял нужно заменить команду
    docker compose start client
    на
    docker compose up --force-recreate --build client
    верно?
    Просто он у меня ее пересобрал и запустил, хотя по инструкции предполагалось, что он только соберет, а дальше я уже сам должен руками запустить через docker compose start client

    И в чем разница
    docker compose up -d --build client
    и
    docker compose up --force-recreate --build client
    К чему в примерах пишут еще форсе рекриейт, когда и твой работает так же?

    Твой пример с docker compose up -d --build client так же запускает сразу контейнер
    Не скажу, что это как-то мешает, но думал твой только соберет в фоном режиме контейнер
    Написано
  • Почему массив не модифицируется по ссылке?

    @MishaXXL Автор вопроса
    0xD34F, т.е. данная задача по оптимизации работы по памяти решается только через push в цикле?
    Написано
  • Почему массив не модифицируется по ссылке?

    @MishaXXL Автор вопроса
    0xD34F, да что-то взял пример не проверив )
    Но всё же, как мы в данном случае можем мутировать наш изначальный массив, чтобы у нас именно в него добавилось еще 5 значений?
    Написано
  • Почему массив не модифицируется по ссылке?

    @MishaXXL Автор вопроса
    Как в данном случае мутировать изначальный массив в такой вид?
    Суть задачи было в том, чтобы у нас по памяти вышло всего 10 значений (изначальный массив в котороый добавили значений), а не 15, где создали еще один новый массив
    Написано
  • Как после остановки одного контейнера в Docker Compose поднять обновленный?

    @MishaXXL Автор вопроса
    Александр Карабанов, выполнил команду docker compose down --volumes --remove-orphansи docker system prune -af
    Но всё равно возвращаются те же названия при docker ps
    И команда docker compose stop rest-api-client не останавливает клиентский контейнер
    Подскажи пожалуйста, как мне его остановить?

    CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS                    PORTS                                                                      NAMES
    fb2e8368488d   dpage/pgadmin4    "/entrypoint.sh"         27 seconds ago   Up 26 seconds             443/tcp, 0.0.0.0:5480->80/tcp, :::5480->80/tcp                             pgadmin_container
    4a0fa57e7f3b   postgres          "docker-entrypoint.s…"   27 seconds ago   Up 26 seconds (healthy)   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp                                  postgres_container
    afc343ce1223   nginx             "/docker-entrypoint.…"   27 seconds ago   Up 25 seconds             0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx_container
    8acf7ef5c239   rest-api-server   "docker-entrypoint.s…"   27 seconds ago   Up 26 seconds             0.0.0.0:3000->3000/tcp, :::3000->3000/tcp                                  server_container
    4ca71c3dfa68   rest-api-client   "docker-entrypoint.s…"   27 seconds ago   Up 26 seconds             0.0.0.0:5173->5173/tcp, :::5173->5173/tcp                                  client_container
    Написано
  • Как после остановки одного контейнера в Docker Compose поднять обновленный?

    @MishaXXL Автор вопроса
    Подскажи пожалуйста, нужно еще указывать какие-нибудь важные свойства при билде образа из докер файла?
    В разных примерах куча свойств пихают, а у меня вроде и просто с контекстом все заработало
    services:
      server:
        container_name: server_container
        build:
          context: ./server
        ports:
          - 3000:3000
        networks:
          - ${NETWORK}
        restart: unless-stopped


    Почему у меня такая сборка не сработала?
    build:
          context: .
          dockerfile: ./server/dockerfile

    Есть ли вообще разница с тем, как я выше запускаю и тем, как находил в примерах
    Просто странно, что у меня оно ошибку выдает при попытке собраться

    И теперь невозможно остановить один из контейнеров
    docker compose stop rest-api-client
    no such service: rest-api-client


    Я правда не понял откуда он решил, что образ теперь надо так называть rest-api-client, когда такое название больше нигде не фигурирует
    Но по названию образа, имени контейнера и айдишнику он не хочет останавливать
    65e222bbd8271017310245.png
    Написано
  • Почему объект выдает ошибку Type 'any' is not assignable to type 'never'. при попытке добавить значение свойству?

    @MishaXXL Автор вопроса
    Alexandroppolus, но вместо одной строчки
    const {name, surename} = formFields
    Получается n-количество строк же
    const name = data.get('name')
    const surename = data.get('surename')
    Написано
  • Почему объект выдает ошибку Type 'any' is not assignable to type 'never'. при попытке добавить значение свойству?

    @MishaXXL Автор вопроса
    Alexandroppolus, formDataэто просто название, я не имел в виду объект FormData)

    А как правильней работать?
    У нас есть реф на форму
    const form = useRef<HTMLFormElement | null>(null)

    Есть сама форма
    return(
        <>
            <form ref={form} className={style.form} onSubmit={handleSubmit}>
                <input name="name" type="text" />
                <input name="surename" type="text" />
                <input type="submit" value="Add user" />
            </form>
        </>
    )


    И в обработке формы хотим получить наши поля
    const {name, surename} = formFields
    Но без типизации он нам не позволяет их получить
    И пришел к решению
    const {name, surename} = formFields as unknown as Form


    function handleSubmit(event: FormEvent) {
        event.preventDefault()
        const formFields = form.current
        if(!formData) return
        const {name, surename} = formFields 
        console.log(name.value, surename.value)
    }


    Подскажи, как правильней это сделать?

    Потому что пока мое лучше решение в плане деструктуризации это привести все к такой форме через as unknown as Form
    interface Form {
        name: HTMLInputElement,
        surename: HTMLInputElement,
    }
    
    const {name, surename} = formData as unknown as Form


    Возможно как-то динамический получить имена всех полей из нашего рефа?
    const form = useRef<HTMLFormElement | null>(null)

    Что бы не описывать руками интерфейс
    interface Form {
        name: HTMLInputElement,
        surename: HTMLInputElement,
    }
    Написано
  • Почему объект выдает ошибку Type 'any' is not assignable to type 'never'. при попытке добавить значение свойству?

    @MishaXXL Автор вопроса
    Alexandroppolus, подскажи пожалуйста, если использовать такую конструкцию
    Как можно добавить типизацию в const {name, surename} = formData?
    Где после предполагается работа с
    console.log(name.value, surename.value)
    Property 'value' does not exist on type 'string'. Did you mean 'valueOf'?

    Как я понял, мне нужно как-то TS привести к тому, что у меня там не строки, а HTMLInputElement или сделать предварительную проверку, но я пока не смог найти на что

    const {name, surename}: {name: HTMLInputElement, surename: HTMLInputElement} = formData

    Здесь он тоже ругается
    Property 'surename' is missing in type 'HTMLFormElement' but required in type '{ name: HTMLInputElement; surename: HTMLInputElement; }'.


    const form = useRef<HTMLFormElement | null>(null)
    
    function handleSubmit(event: FormEvent) {
        event.preventDefault()
        const formData = form.current
        if(!formData) return
        const {name, surename} = formData
        console.log(name.value, surename.value)
    }
    
    return(
        <>
            <form ref={form} className={style.form} onSubmit={handleSubmit}>
                <input name="name" type="text" />
                <input name="surename" type="text" />
                <input type="submit" value="Add user" />
            </form>
        </>
    )


    Получилось только так
    const {name, surename} = formData as any
    Но есть подозрения, что это не хорошо )

    Есть еще такая версия
    На сколько это нормально использовать as unknown as Form?
    interface Form {
        name: HTMLInputElement,
        surename: HTMLInputElement,
    }
    
    const {name, surename} = formData as unknown as Form
    Написано
  • Откуда React берет объект для инициализации хуков без пути к нему?

    @MishaXXL Автор вопроса
    Михаил Р., я там и искал, там же файл ReactHooks.js и находится
    Из отдельных файлов есть только memoи createRef, но куда они экспортируются и где находится сам useRefтот же, не смог найти
    Подскажи, по какой логике они разбросаны и как найти те же useStateи useCallback?
    Написано
  • Откуда React берет объект для инициализации хуков без пути к нему?

    @MishaXXL Автор вопроса
    Реализация хуков находится в исходном коде реакта.

    Подскажи, какими путями выйти на этот файл? )
    Данный код я брал из файла, отсюда reactимпортирует хуки
    react/packages/react/src/ReactHooks.js
    А вот файл с их реализацией не смог найти, т.к. импорты закончились
    Написано
  • Почему объект выдает ошибку Type 'any' is not assignable to type 'never'. при попытке добавить значение свойству?

    @MishaXXL Автор вопроса
    Aetae, подскажи пожалуйста, как называется тема в TS про этот случай?
    data[input] - string или boolean(string & boolean = never), а присваивать never ничего нельзя, даже any

    Когда читал про never, думал он служит только для того, чтобы описать функцию, которая вернет ошибку throw new Error() и по этому она neverбудет
    Здесь тоже получается never, но в описании про него не нашел или не заметил подобный случай его использования
    И почему string | boolean это never?
    Вроде есть четкий список типов на выбор и типизацию мы явно указали
    Написано
  • По какому принципу работает набор индексов в одной таблице?

    @MishaXXL Автор вопроса
    Melkij, я про то, что есть ли смысл создания 4 таких индексов, чтобы БД делала поиск по подходящему или они так не работают?
    Написано
  • По какому принципу работает набор индексов в одной таблице?

    @MishaXXL Автор вопроса
    Melkij, а в плане создание 2 и более индексов, в таком подходе есть смысл или обычно создается один усредненно универсальный индекс?
    Например, создать 3 отдельных индекса на name, brand, price и 4-ый, где будут все три сразу name, brand, price
    Написано
  • По какому принципу работает набор индексов в одной таблице?

    @MishaXXL Автор вопроса
    Everything_is_bad, там было 2 страницы про индексы )
    При создании индекса, что они создают для таблицы, что помогает после в ней делать ускоренную выборку?
    И при выборке БД сама подберет нужную индексацию из тех, что мы создали под нее учитывая по каким полям мы поставили условие?
    Написано
  • По какому принципу работает набор индексов в одной таблице?

    @MishaXXL Автор вопроса
    Индекс создает свою мини таблицу или что-то подобное, что у себя отсортировало все записи на ссылки к ним?
    Т.е. при создании очередного индекса, при выборке будет проанализировано условие WHEREи если там только поле name="user", то он будет производит поиск с учетом созданного индекса, где мы реализовали
    CREATE INDEX name_idx ON products (name), а если у нас в условиях поиск по (name, brand, price), то уже будет использовать
    CREATE INDEX prod_idx ON products (name, brand, price)
    , верно?
    Написано
  • По какому принципу работает набор индексов в одной таблице?

    @MishaXXL Автор вопроса
    В книге как раз и приводился пример с order by, что представьте его )
    Написано