• Как написать функцию, которая возвращает строку без удалённого символа?

    politon
    @politon
    HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
    <?php
    $t1 = str_replace("l", "", "Hello World");
    echo $t1;
    Ответ написан
    Комментировать
  • Как проявляется удобство использования деструктуризации?

    sinneren
    @sinneren
    Вместо Number.parseInt(count, 10) писали бы Number.parseInt(args.count, 10)
    Ну и удобство как бы само собой вытекающее из этого.
    При этом, будь у нас это импорт какой-нибудь, то мы бы вытаскивали только нужное, типа того: { count, etc } from args, а не тянули весь огромный объект
    Ответ написан
    Комментировать
  • Как создать среду выполнения OCI (docker-compose up)?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Переведи с английского сообщения. Станет понятно, в чём дело.
    Чтобы решить проблему выполни:
    docker stop $(docker ps -aq)
    docker rm $(docker ps -aq)
    docker-compose up -d
    Ответ написан
    7 комментариев
  • Как правильно импортировать nanoid?

    Так как вы компилируете ваш код (в частности модуль user.model.ts) в формат модуля CommonJS, то в JS-выхлопе после компиляции будут вызовы require. Судя по чейнджлогу для версии 4.0 Ситник выпилил нафиг поддержку CommonJS в 4-й версии, однако она остаётся в версии 3 и будет некоторое время поддерживаться. Вы не можете взять и из CommonJS-модуля сделать require ES-модуля (а в пакете версии 4 только ES-модули и остались).

    Следовательно, в зависимости от того, что у вас в проекте и насколько он большой:
    • вы можете задуматься о переходе в своём проекте на использование ES-модулей. Для этого нужно поменять опцию module в tsconfig.json на es2015/es2020/es2022. Это самый предподчтительный вариант, но все остальные ваши инструменты и библиотеки должны быть готовы работать с ES-модулями
    • вы можете откатиться на nanoid третьей версии
    • вы можете использовать динамический импорт, как вам и предлагают, но мне кажется вам проще взять версию 3
    Ответ написан
    Комментировать
  • Как исправить избыточный атрибут alt?

    Aetae
    @Aetae
    Тлен
    Place image -> Place

    Ну или отрубить это тупое eslint правило.
    Ответ написан
    3 комментария
  • Как прописать связи в схеме базы данных?

    @mletov
    Если многие ко многим, то должна быть еще таблица-связка usersToReviews.
    Но вообще это очень странно.... 10 пользователей коллективно написали 1 отзыв... Серьезно?)

    Если все-таки один ко многим, что, как я подозреваю, вы и имели ввиду, то:
    - Зачем вам поле `reviews` в пользователях? Оно не нужно, удалите.
    - Как удалите, проблема решится сама собой: сначала создаете users, а уже потом reviews со ссылкой на users
    Ответ написан
    2 комментария
  • Как запустить yii2 приложение?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброй ночи.
    В консоли надо указать путь к document root проекта.
    php yii serve --docroot="path/to/docroot"
    Например:
    php yii serve --docroot="frontend/web"
    Только непонятно, зачем именно так Вам надо запускать проект?
    Ответ написан
    Комментировать
  • Как загрузить изображение на сайт wordpress?

    @psycho-coder
    Eternal student
    Для корректной загрузки файлов необходимо дать доступ на запись в папку ./wp-content/uploads
    На локальной машине достаточно выполнить chmod
    chmod -R 777 ./wp-content/uploads
    Ответ написан
    Комментировать
  • Как перевести код vue CLI 3 в vue CLI 4?

    @Azperin
    Дилетант
    Почитать изменения и внести соответствующие правки https://cli.vuejs.org/migrating-from-v3/

    Для установки определенной версии, пиши ее просто через собаку npm install -g vue-cli@3.5.5, наверное старую нужно будет сначала удалить, но тут я хз
    Ответ написан
    Комментировать
  • Как правильно откоментировать этот код?

    # import xml.etree.ElementTree as XmlElementTree
    # import httplib2
    # import uuid
    # # импорт нативных библиотек 
    # from config import ** *
    # # импорт конфига
    # 
    # ** *_HOST = '***'
    # ** *_PATH = '/***_xml'
    # CHUNK_SIZE = 1024 ** 2
    # 
    # 
    # # ?
    # 
    # def speech_to_text(filename=None, bytes=None, request_id=uuid.uuid4().hex, topic='notes', lang='ru-RU',
    #                    key=** * _API_KEY):
    #     if filename:
    #         with open(filename, 'br') as file:
    #             bytes = file.read()
    #     if not bytes:
    #         raise Exception('Neither file name nor bytes provided.')
    # 
    #     bytes = convert_to_pcm16b16000r(in_bytes=bytes)
    # 
    #     url = ** *_PATH + '?uuid=%s&key=%s&topic=%s&lang=%s' % (
    #         request_id,
    #         key,
    #         topic,
    #         lang
    #     )
    #     # метод обработки файла
    # 
    #     chunks = read_chunks(CHUNK_SIZE, bytes)
    # 
    #     connection = httplib2.HTTPConnectionWithTimeout(***_HOST)
    #     # подключение к страницы для передачи заголовка
    #     connection.connect()
    #     connection.putrequest('POST', url)
    #     connection.putheader('Transfer-Encoding', 'chunked')
    #     connection.putheader('Content-Type', 'audio/x-pcm;bit=16;rate=16000')
    #     connection.endheaders()
    # 
    #     for chunk in chunks:
    #         connection.send(('%s\r\n' % hex(len(chunk))[2:]).encode())
    #         connection.send(chunk)
    #         connection.send('\r\n'.encode())
    # 
    #     connection.send('0\r\n\r\n'.encode())
    #     response = connection.getresponse()
    #     # отправка и получение ответа
    # 
    #     if response.code == 200:
    #         response_text = response.read()
    #         xml = XmlElementTree.fromstring(response_text)
    #         # ?
    #         if int(xml.attrib['success']) == 1:
    #             max_confidence = - float("inf")
    #             text = ''
    # 
    #             for child in xml:
    #                 if float(child.attrib['confidence']) > max_confidence:
    #                     text = child.text
    #                     max_confidence = float(child.attrib['confidence'])
    # 
    #             if max_confidence != - float("inf"):
    #                 return text
    #             else:
    # 
    #                 raise SpeechException('No text found.\n\nResponse:\n%s' % (response_text))
    #         else:
    #             raise SpeechException('No text found.\n\nResponse:\n%s' % (response_text))
    #     else:
    #         raise SpeechException('Unknown error.\nCode: %s\n\n%s' % (response.code, response.read()))
    # 
    # 
    # сlass
    # SpeechException(Exception):
    #     pass
    Ответ написан
    1 комментарий
  • В ответ на входящий вебхук приложение должно сделать несколько запросов в БД, пару запросов к стороннему API, как решить?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Отдаете 200, далее выполняете что вам нужно далее, в идеале просто запускаете консольную команду. Если не охота возиться с консольными приложениями - вот тут (на самом деле не первый ответ, а ниже - Complete version: )описано как отдать контент, закрыть соединение и продолжить выполнение скрипта. Коротко - посылаем заголовок окончания сеанса и продолжаем свои грязные делишки уже без оглядки на клиента.

    PS: Увидел тег питон, но думаю смысл остается такой же, в питоне под веб не в зуб ногой, но думаю он не хуже пхп справится с задачей отдачи заголовков.
    Ответ написан
    Комментировать
  • Достоверно известно, что некоторый API периодически отваливается по таймауту или с 5хх ошибкой, как решить?

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    обработать ответ 500 ,подождать несколько секунд и попробовать снова, итак N попыток
    Ответ написан
    Комментировать
  • Достоверно известно, что некоторый API периодически отваливается по таймауту или с 5хх ошибкой, как решить?

    Если критически важная служба недоступна, то остаётся ещё вариант использовать fallback-службу. Или же брать закэшированные данные (возможно, устаревшие), как указал d-sem.
    Вот тут про шаблоны:
    https://docs.microsoft.com/ru-ru/azure/architectur...
    Ответ написан
    Комментировать
  • Достоверно известно, что некоторый API периодически отваливается по таймауту или с 5хх ошибкой, как решить?

    @d-sem
    1) Кешировать на стороне приложения, что возможно. Тут все сильно зависит от того какое это API и характер работы с ним. В вопросе это не указано.

    2) При обращении к API учитывать таймаут или 500 ошибку. Повторять до успеха или признания поражения. Если на API много бекендов можно попробовать слать параллельные запросы в стиле промисов.
    Ответ написан
    Комментировать
  • Как перенять объектно-ориентированное мышление?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Т.е. сложно понимаю, что "засунуть" в один объект, что в другой, что должно быть статическим методом, что приватным и тд.


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

    То есть по сути наше приложение - один объект. У него внутри вообще все. У этого объекта есть один метод - обработай запрос. Когда внешний мир его вызывает, меняются значения каких-то переменных, вызываются какие-то внутренние "приватные" для внешнего мира функции, и делается работа.

    Теперь задумаемся о декомпозиции всего этого хаоса. Мы находим какую-то задачу, которую выполняет наш код (например какую функцию вызвать для обработки каждого конкретного запроса) и выносим это в отдельный объект. Отправка email-ов - отдельный объект. Весь SQL зашиваем в отдельный объект. Соединение с базой - объект. Пользователи - объекты. Все - объекты.

    И главное, у каждого объекта есть своя область ответственности. UNIX way. Каждый объект делает что-то одно и делает это хорошо. Бывает так что ну... нужно сделать так что бы один объект делал две вещи. НЕ вопрос, мы можем его попросить сделать что-то сложное, а он будет как хороший менеджер тупо делегировать работу другим объектом. То есть он и сложную штуку сделает, и сам не будет знать как она делается.

    А все безхозные функции, которые не пренадлежат никаким объектам (например функции порождающие объекты) можно вынести в статические методы. Главное что бы статичесих переменных у нас небыло (ибо это те же глобальные переменные). И поменьше публичного ибо черт его знает что эти разработчики будут использовать. Причем "те разработчики" это вы завтра.

    Вообщем писав всё время на процедурке, сложно перейти на ооп.


    Просто не думайте что это что-то "принципиально другое". Это та же самая процедурка, просто благодаря классам и объектам, вы можете порезать систему на маленькие модули. Данные будут лежать рядом с процедурами и у вас будет больше контроля за происходящим.

    Вы можете начать погружаться в ООП с того, что разобраться "почему глобальные переменные это плохо", почему "состояние порождает сложность" и что такое эта "сложность" (многие почему-то думают что сложность выражается в написании кода а не в его чтении или поддержке), почему "изоляция" (и как следствие инкапсуляция) - это хорошо. Как это все соотносится с декомпозицией. Что такое "ответственность", что такое зависимости, связанности

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


    Фреймворки универсальны, а значит чистого ООП там быть не может. Во всяком случае нет ни одного фреймворка на котором стоит учиться ООП.

    Есть хорошие упражнения на развитие понимания объектно-ориентированного проектирования. Например вот: https://habrahabr.ru/post/206802/

    Сразу хочу отметить что это крайности. Упражнения же. Они должны ограничивать вас что бы заставлять думать и задавать правильные вопросы.

    Или может подскажите книгу/сайт где пошагово в ооп написан какой-то проект, чтобы быстрее пришло понимание.


    Так вы научитесь делать один конкретный проект а на втором вы уже проиграете. Так дела не делаются. Надо разобраться с причинами появления идеи ООП. Ну то есть что было до. Можно еще с функциональным программированием попробовать разобраться. В PHP оно слабо применимо, но основные идеи очень тесно переплетаются с ООП и познав немного функциональщины ваше ООП будет лучше. Да и если про ООП вы можете найти много булшита, про функциональщину врут мало.
    Ответ написан
    3 комментария
  • Как правильно оформить элемент toggle?

    Chefranov
    @Chefranov
    Новичок
    .slider::after {
        position: relative;
        right: -40px;
        width: 210px;
        content: "Получать спецпредложения";
        display: inline-block;
    }
    Ответ написан
    Комментировать
  • Сайты как pythonanywhere, есть ли они?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Ответ написан
    Комментировать