• Как увеличить длину провода наушников?

    kawabanga
    @kawabanga
    1) На 5-10 метров - удлинитель jack->jack.
    2) AUX BT5 удлинитель. У меня свисток xiaomi уже больше 5 лет норм работает. А сейчас качество звука еще лучше. Но телевизор должен уметь передавать звук на bt наушники. Возможны проблемы с задержкой, если на телевизоре или приставке - старые версии BT.
    3) Хитрый и не совсем дешевый вариант: Оптический кабель от телевизора ( даже 25 метровые кабеля работают без помех). Далее оптический кабель либо в усилитель с поддержкой оптики (бывают маленькие), либо в ресивер.
    Плюс подобного варианта с ресивером - при необходимости у вас будет полноценный 5.1 звук качественный на колонках. Из минусов. я не знаю как ресивер красиво поставить возле дивана. Он гармоничней смотрится около телевизора. https://www.ozon.ru/product/konverter-zvuka-v-5-1-...
    Ответ написан
    Комментировать
  • Как вычленить из текста ФИО на python, при том что конкретных шаблонов нет?

    kawabanga
    @kawabanga
    Я бы апи дернул, к примеру у дадаты - 15коп за запрос стандартизации.
    Ответ написан
    1 комментарий
  • Есть ли более компактный способ сделать выборку из БД?

    kawabanga
    @kawabanga
    Для той постановки задачи что вы задали

    function generateTFilter($numT) {
        $filter = "";
        for ($i = 1; $i <= $numT; $i++) {
            $filter .= " OR t{$i} > 0";
        }
        return ltrim($filter, " OR");
    }
    
    $numT = 17; // Укажите нужное количество переменных t
    
    $sql = "SELECT * FROM products WHERE category = ? AND (" . generateTFilter($numT) . ")";


    Но, представьте, что магазинов станет 50 или 100? А как вы будете считать приход и списание со складов? А товары в пути? Вам бы продумать архитектуру хорошенько.
    Ответ написан
    3 комментария
  • Как замедлить время выполнения?

    kawabanga
    @kawabanga
    for ($i = 0; $i < $count; $i++) {
        sleep(5); // Я бы тут поигрался с sleep.
    
        // $html = curl_get($silka[$i]); // Ссылка на сериал
        // А вот тут я бы проверял, что запрос дошел. Можно кастомизировать, но в простом случае
        $stopAsking = false;
        $countRequests = 0;
    
        while (!$stopAsking) {
            try {
                $html = curl_get($silka[$i]); // Здесь в функции выбрасывайте исключение и ловите его с помощью https://www.php.net/manual/en/function.curl-error.php
                $stopAsking = true;
            } catch (Exception $e) {
                sleep(1); // Подвязать логику слипа на количество запросов
                $countRequests++;
    
                if ($countRequests > 5) {
                    $stopAsking = true; // И прерывать действие части скрипта, которая делает запрос на сервер.
                }
            }
        }
    
        if ($countRequests > 5) {
            continue;
        }
    
        $dom = str_get_html($html); // Парсить страницу
    
        $finds = $dom->find('.added-info');
    
        foreach ($finds as $find) {
            $tfind = trim($find->plaintext);
            if ($series[$i] === $tfind) {
                echo $id[$i];
                sleep(5); // У вас это запускается только в случае, если будет finds. В принципе, sleep тут не нужен уже, так как выработаете с готовой страницей. Но, например, если $finds = $dom->find('.added-info'); - не будет, то следующий запрос будет моментален.
            } else {
                $sql = "UPDATE `seria` SET `series` = '$tfind' WHERE `seria`.`id` = $id[$i]";
                $mysql->query($sql);
                message_to_telegram("Вышла новая серия" . $series[$i] . $silka[$i]);
                echo $id[$i];
            }
        }
    }
    Ответ написан
    Комментировать
  • Как организовать хранение гостевых данных в интернет-магазине?

    kawabanga
    @kawabanga
    А почему по простому не решаете? (допустим, если у вас не высокие нагрузки на базу).

    Записываете уник сессию гостя в базу (это дает еще много прикольных штук).
    Записываете в таблицы, типа guest_cart, guest_favorites и любые другие таблицы.
    По необходимости мигрируете из этих таблиц данные в основную запись пользователя, если он зарегистрируется.
    Записываете last_action_ts в сессию бд. И стираете раз в день данные, если last_action_ts уже старше чем 2 месяца.
    Ответ написан
    2 комментария
  • Почему не работает POST изи postman в yii2?

    kawabanga
    @kawabanga
    1) Постман вроде как не умеет в сессии. Т.е. толка от этой строки нет -
    Yii::$app->session->setFlash('success', 'Операция выполнена успешно!');


    2) У вас отправка raw данных в постамане через json, а в контроллере вы пытаетесь получить POST.
    В постмане надо переключить на form-data .
    Ответ написан
    Комментировать
  • Почему в этом коде при проверке слов с помощью оператора in в скобках он работает как надо, а без скобок по другому?

    kawabanga
    @kawabanga
    Чему равно данное выражение в Питоне?
    ("хорошо" or "прекрасно" or "отлично" or "пойдет")


    Я думаю оно равно true.

    А ваш синтаксис, должен быть около таким -

    otvet in [ "хорошо", "прекрасно" , "отлично", "пойдет"]
    Ответ написан
    1 комментарий
  • Как сохранить массив в базу данных?

    kawabanga
    @kawabanga
    Google:
    1) load Model from Array yii2
    $model = new JobOrderDetail();
    $model->load($arrayData, ''); // '' = formname or empty string


    2) Валидация модели
    https://github.com/yiisoft/yii2/blob/master/docs/g...
    if ($model->validate()) {
        // все данные корректны
    } else {
        // данные не корректны: $errors - массив содержащий сообщения об ошибках
        $errors = $model->errors;
    }


    Модель при этом должна у вас быть от ActiveRecord.

    3) Проверить, сохранилась ли модель через if ($model->save());

    В чем конкретно у вас возникли сложности?
    Да даже в лоб костылем через foreach
    $model = new Model;
    foreach ($array as $key => $value) {
     $model->$key = $value; // правда надо проверить на существование property в модели.
    }
    Ответ написан
    Комментировать
  • Как повысить уровень создания проектов на чистом php?

    kawabanga
    @kawabanga
    Тем не менее сейчас я столкнулся с тем, что на собеседованиях начинают спрашивать что серьезного доводилось делать на чистом php - без фреймворков и мои ответы на их вопросы касательно парсеров, скиптов для обмена данными остаются неубедительными. Даже дальше кадровиков иногда дело не уходит.


    Вы неубедительны. Парировать надо. Ну найдите разраба, который в угоду своему ЭГО, будет писать проект на чистом php, который в будущем сможет поддерживать только он.

    Еще спрашивюат какие патерные проектирования используешь, придерживаешься ли принципов Solid?

    Вы недостаточно сильны в этом вопросе, SOLID опять же не про фреймворки.

    А сейчас я не только ради прохождения собеседований, но и ради повышения скилла хотел бы углублённо погрузиться в написание кода без фреймворков. Но как к этому подойти? Не писать .же бложег или интернет-магазин на чистом php?

    Зачем вам это? Изучать как работает PHP и смежные вещи - одно. Писать пет проекты чтобы закинуть их в ящик - другое.

    Может начать с изучения PSR

    Нужно, сразу после того, как вы начнете понимать php.

    от него начать писат простой psr фреймворк как это делал Дмитрий Елисеев?

    А что это вам даст?

    Или просто взять симфони и начать писать на ней чтоб понять суть вещей глубже и потом козырять своими скиллами на собеседованиях, что, мол, ,я тут на Симфони пишу, а вы мне тут вопросы для школьников задаёте?

    А при чем тут симфони и вопросы школьников?

    Короче расскажите мне про роудмеп погружения в php. Теорию я и так знаю - книги по php читал.

    Сначала начните с того, как искать в гугле. Полезный навык, помогает.
    https://github.com/thecodeholic/php-developer-roadmap
    Ответ написан
    3 комментария
  • Как массово редактировать товары Вконтакте через API?

    kawabanga
    @kawabanga
    А почему он останавливается через 30 минут?
    Возможно нужно CLI использовать? Ну или обновить настройки сервера?
    Ответ написан
  • Как поменять url в yii2 при использование goBack()?

    kawabanga
    @kawabanga
    Я думаю, у вас goBack() ведет на страницу выбора языка с последующим редиректом на my-site.localhost/branch/2. Вы можете проверить это по Debug.

    Т.е. как это работает логически.
    Вы открыли страница1.
    Там вы выбрали редирект1, который ведет на страница2.
    У вас открыта страница2 и вы делаете goback() на редирект1, который ведет на страница2.

    В вашем случае, я бы порекомендовал избавиться от goback(), и использовать другой способ запоминания страницы. Или немного переписать компонент сессии.
    Ответ написан
  • Как перевести curl запрос на php с передачей сертификатов (api Сбербанка)?

    kawabanga
    @kawabanga
    ChatGPT:

    Для отправки этого cURL запроса в Guzzle PHP, вам потребуется установить Guzzle HTTP клиент, если он еще не установлен. Выполните следующие шаги:

    Установите Guzzle через Composer (если вы этого еще не сделали):
    composer require guzzlehttp/guzzle


    В вашем PHP-скрипте используйте следующий код для отправки запроса:
    <?php
    
    require 'vendor/autoload.php'; // Путь к файлу autoload.php из установленного Guzzle через Composer
    
    use GuzzleHttp\Client;
    
    $baseUrl = 'https://mc.api.sberbank.ru/prod/tokens/v3/oauth';
    $rqUID = '25Ec70328e2CE4DF39e828E1dF75EFa0';
    $authorization = 'Basic MTgwYmYzNTItNDlhZC00MGVhLTgyYmItMDcwMTRiMjdjODQ5OjUwM2NhNmUwLWE5OWEtNDYzZC05OTIzLWJlZWUzYjVhYzYzNA==';
    $scope = 'https://api.sberbank.ru/qr/order.create';
    $certPath = '/absolute/path/to/certif.p12';
    $certPassword = 'RiKZcN3Z';
    $cacertPath = '/absolute/path/to/russian-trusted-cacert.pem';
    
    $client = new Client();
    
    $response = $client->request('POST', $baseUrl, [
        'headers' => [
            'RqUID' => $rqUID,
            'Authorization' => $authorization,
            'Content-Type' => 'application/x-www-form-urlencoded',
        ],
        'form_params' => [
            'grant_type' => 'client_credentials',
            'scope' => $scope,
        ],
        'cert' => [$certPath, $certPassword],
        'verify' => $cacertPath,
    ]);
    
    // Выводим результат запроса
    echo $response->getBody()->getContents();


    Пожалуйста, замените /absolute/path/to/certif.p12 и /absolute/path/to/russian-trusted-cacert.pem на абсолютные пути к вашим сертификатам. Также убедитесь, что у вас есть правильные данные для RqUID и Authorization заголовков.

    Этот код отправит POST запрос с указанными данными и получит ответ от сервера Sberbank.
    Ответ написан
    2 комментария
  • Разработка своего плеера для стримов с чатом на JS, как работает это?

    kawabanga
    @kawabanga
    Вы разбили задачи на более мелкие. и что конкретно у вас вызывает сложность?

    WP не вижу тут как технологию, точнее проще будет взять фреймворк (Laravel ок и он может взять все остальные задачи). Но если вдруг WP обязателен, то можно настроить сквозную авторизацию.

    разработка собственного плеера

    Плееры уже есть, зачем париться?

    для онлайн трансляций с чатом в реальном времени.
    Там должны быть реализованы лайки, дизлайки, реакции ( эмодзи )

    сокеты, модификации базы для работы с эмодзи, редактор. Кстати редактор был любопытный, его раньше пикабу использовали, забыл название. В любом случае, искать по слову - WYSIWYG.

    Также там система НМО: Пользователь подтверждает свое присутствия путем нажатия на кнопку “Подтвердить” в попап окне, которое отображается регулярно на протяжении установленного интервала времени.

    Сокет (да даже обычный js запрос) + бд с синхронизацией времени кликов на конкретный евент.

    Главная проблема у вас будет в поиска плеера, который отдает видео с CDN с смещением, якобы онлайн.
    Ответ написан
  • Почему у php недостаточно прав на перезапись файлов?

    kawabanga
    @kawabanga
    1) Добавляете пользователя нового, например admin, с привилегией sudo. Добавляете его в группу www-data
    2) Загружаете файлы от имени этого пользователя в дальнейшем.
    3) Выставляете необходимые права при необходимости. К примеру вот - владелец admin, и группа www-data у файла
    -rwxrwxr-x 1 admin www-data 3958 Jul 1 10:38 README.md

    В вашем конкретном случае, проще всего написать что-то типа

    sudo chown -R www-data:www-data /webdirectory
    sudo chmod -R 0755 /webdirectory
    Ответ написан
  • Как сгенерировать уникальный номер заказа примерно как у Бургер кинга?

    kawabanga
    @kawabanga
    На уровне таблицы заказа:
    обычный ид
    филиал ид (Возможно буквенный)
    тип заказа ид (возможно буквенный)
    ид добавочный (вторая часть примера вашего)
    дата заказа
    По необходимости - сохраняете полный "Ya-50", если необходимости нет - создаете геттер на модели.

    На уровне алгоритма -
    Запрашиваете последнюю строку (или максимальный ид сразу) по дате, и добавляете плюс 1. Так вы получите Ид этого дня.

    Учтите часовые поясы.

    Самое смешное, что это правда простейшая задача, и ее нужно просто словесно решить.
    Ответ написан
  • Macbook pro 16 M1 или Macbook pro M2?

    kawabanga
    @kawabanga
    1) Как вам говорили, вы сравниваете два разных размера экрана.
    Я как то целый час стоял перед витриной, сомневаясь, 14 или 16 м1 про взять. Просто не мог сделать выбор.
    В итоге взял 16. Привыкал некоторое время к размеру, как раз в Азию на полгода улетал, и знал что мне нужен ноут, у которого не будет необходимости с внешним экраном.
    К слову, именно 16" как раз имеет экран, где комфортно работать без монитора. (Скучал по этому 2 года, когда пересел с 15" на 13" m1).
    Ну и по прошествию 10 месяцев владением 16" - я понял что ноут идеален для меня. Поиграть в кс и гта5 можно на нем, но я бы приставку взял или стационарник.

    2)
    Blender, FCP, Photoshop - все работает отлично и быстро. Adobe premiere не пробовал на этом маке, но как то весь монтаж ушел в сторону именно FCP. (В прошлом профессионально монтировал видео и работал с фотошопом).

    3) Маленький лайфхак - Для меня зарядка базовая немного неудобная. Да, быстрая, 140W, но сам блок здоровенный и макбуку нет необходимости в таких мощностях. Поэтому у меня для девайсов свой блок 165W GaN с отдачей по USB-C 100W.

    4) Для работы - мак - идеальный вариант.

    5) M1 или M2 - по сути не такая большая у них разница, возможно интересней будет с 32ГБ купить M1 PRO. Но это догадки только.
    Ответ написан
    Комментировать
  • Как результат foreach поместить в переменную?

    kawabanga
    @kawabanga
    $itemstest[] = [
                    'item_sku' => $product->get_sku(),
                    'item_title' => $product->get_name(),
                    'item_quantity' =>  $item_data['quantity'],
                    'item_price' => $product->get_price()
                ];
    Ответ написан
    2 комментария
  • Какой 21 или 24 дюймовый монитор вы посоветуете (цветопередача как у Apple display)?

    kawabanga
    @kawabanga
    Даже apple советуют LG 5K, но стоит дорого.

    Вот тут посмотрите таблицу, очень полезная статья.
    https://mews.biggeek.ru/kak-vybrat-idealnyj-monito...

    Из тех какими мониторами я пользовался -
    samsung 590d - не нравятся углы, не умеет вертикально работать, в целом за 10-15к на б.у. рынке интересный монитор. Но, после того, как полгода пользовался xiaomi 34", работать в 1080p HiDPI - неудобно, сейчас выставил 2.5К, и вроде даже не особо заметно что пиксели смываются немного. В 4К будет все мелко просто.

    xiaomi 34" - сложно настроить на работу с маком, грубо говоря будет все мелко. Из плюсов - 144 грц. Изогнутость - нейтрально. Из плюсов - можно работать в две программы на одном мониторе.

    Если бы я оставался дома, я бы смотрел или на LG 5K, либо на вариант 144грц 4k монитора, но с условием того, что он будет удобен в HiDPI.
    Ответ написан
    6 комментариев
  • Как работать с FFMPEG без ссылок на файлы?

    kawabanga
    @kawabanga
    Если условие что в 2 секунды любое аудио декодируется и вам нужно лишь правильно отправлять все через ajax, то formdata js в помощь

    ~JS
    var formData = new FormData();
    formData.append('file', fileInput.files[0]);
    
    $.ajax({
      url: 'upload.php',
      method: 'POST',
      data: formData,
      contentType: false,
      processData: false,
      success: function(response) {
        console.log('File uploaded successfully');
      },
      error: function(jqXHR, textStatus, errorMessage) {
        console.log('File upload failed: ' + errorMessage);
      }
    });


    ~PHP
    require_once '/public_html/vendor/autoload.php'; 
    $ffmpeg = FFMpeg\FFMpeg::create();
    $mp3Format = new FFMpeg\Format\Audio\Mp3(); 
    $videoFolderPath='/public_html';
    
    if(!isset($_FILES['file'])) {
      return 'no file';
    }
    
    $tempName = $_FILES['file']['tmp_name'];
    
    
    $audioObj = $ffmpeg->open($tempName);    
    $audioObj->save($mp3Format, $videoFolderPath.'/myfile.mp3');
    Ответ написан
    1 комментарий