• Когда нужен MVC, а когда API?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    API есть у любой программы. MVC это способ организации кода, наличия API он не исключает. Не стоит сравнивать тёплое с мягким.
    Ответ написан
    3 комментария
  • Парсинг https+post (http://iaai.com)?

    @vodniciarv
    проще не писать парсеры и их поддерживать, а использовать готовые API от внешних источников, их не так много, но есть несколько вариантов

    вот пример: https://import-motor.com/ru/api-copart-iaai
    Ответ написан
    Комментировать
  • Как добавить видео с помощью API VK?

    neluzhin
    @neluzhin
    Загружать видео можно только в том случае, если все запросы к VK API осуществляются с сервера. В документации написано, как загружать видео, но я расскажу поподробнее. Ход действий примерно такой:

    1. Загрузите видео на свой сервер.
    2. Вызовите метод video.save. Указывать какие-либо параметры не обязательно, но можете указать, например, ID группы, в которую будет добавлено видео, в параметре group_id и имя видеозаписи в параметре name.
    3. После того, как вы вызовете метод video.save, вы получите ссылку, куда надо будет загрузить вашу видеозапись. Выглядеть ответ от ВК будет примерно так:

      response: {
        upload_url: 'http://cs12129.vkontakte.ru/upload_video.php?act=add_video&mid=15748&oid=66748&vid=164322743&fid=0&tag=122517f2&hash=8bf2ea4bb66ca67d28fb&swfupload=1',
        vid: 164322743,
        owner_id: 66321,
        name: 'No name',
        description: '',
        access_key: 'e6822bfb86f90a149c'
      }

      По этому адресу методом POST отправьте видеозапись в поле video_file.

    4. В ответ на загрузку видеозаписи ВК вернёт вам ID видеозаписи:

      {
        "size":1234,
        "video_id":1234567
      }


    Это всё. Видеозапись должна будет появиться в указанном вами сообществе.

    Небольшой пример на PHP:

    <?php
    
    define('VK_ACCESS_TOKEN', '533bacf01e11f55b536a565b57531ac114461ae8736d6506a3');
    define('VK_API_VERSION', 5.53);
    
    // // //
    // Скачиваем видео с внешнего сервера на свой сервер
    // // //
    
    $ch = curl_init();
    				
    curl_setopt($ch, CURLOPT_URL, 'http://cache-spb07.cdn.yandex.net/kp.cdn.yandex.net/558075/kinopoisk.ru-L_odyss__233_e-311292.mp4');
    curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
    
    $curl_result = curl_exec($ch);
    
    curl_close($ch);
    
    // Кладем видео в папку со скриптом
    $fp = fopen('kinopoisk.ru-L_odyss__233_e-311292.mp4', 'x');
    fwrite($fp, $curl_result);
    fclose($fp);
    
    // // //
    // Получаем адрес ссылки, куда загружать видео
    // // //
    
    $ch = curl_init();
    $parameters = http_build_query([
        'access_token' => VK_ACCESS_TOKEN, // access_token / ключ доступа
        'v'            => VK_API_VERSION, // версия API
        'name'         => 'Имя видеозаписи',
        'description'  => 'Исчерпывающее описание нашей первой видеозаписи.',
        'group_id'     => 125004421, // ID группы
        'no_comments'  => 0 // разрешаем комментирование
    ]);
    
    curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/video.save?' . $parameters);
    curl_setopt($ch, CURLOPT_HTTPGET, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    
    $curl_result = json_decode(curl_exec($ch), TRUE); // превращаем JSON-массив, который нам вернул VK, в обычный PHP-массив
    
    curl_close($ch);
    
    // // //
    // Загружаем видео на серверы ВК
    // // //
    
    $ch = curl_init();
    $parameters = [
        'video_file' => new CURLFile('kinopoisk.ru-L_odyss__233_e-311292.mp4')  // PHP >= 5.5.0
        // 'video_file' => '@kinopoisk.ru-L_odyss__233_e-311292.mp4' // PHP < 5.5.0
    ];
    
    curl_setopt($ch, CURLOPT_URL, $curl_result['response']['upload_url']);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, TRUE); // если PHP < 5.5.0, то эту строку надо закомментировать
    
    $curl_result = json_decode(curl_exec($ch), TRUE);
    
    curl_close($ch);
    
    if (isset($curl_result['error'])) {
        exit('Строка ' . __LINE__ . ': Ошибка при загрузке видео на серверы ВК: ' . $curl_result['error'] . '.');
    }
    
    echo 'Видеозапись успешно загружена.';

    Кстати, параметр link метода video.save принимает только ссылки на популярные видеохостинги, вроде YouTube. О работе через этот параметр я писал в этом вопросе.
    Ответ написан
    4 комментария
  • Как правильно подключить YooMoney на сайт?

    @DimmmCom
    Для возврата на определённую страницу используется необязательный параметр
    successURL | string, URL path | URL-адрес для редиректа после совершения перевода.
    https://yoomoney.ru/docs/payment-buttons/using-api...
    Ответ написан
    Комментировать
  • Как правильно построить архитектуру?

    Sanes
    @Sanes
    Делайте, как вам удобно. Что-то куда-то выносить имеет смысл, если будете переиспользовать или не хотите видеть огромную портянку в коде.
    Простейший CRUD прекрасно живет в одном контроллере. Если много связей, то имеет смысл вынести их в Трейты.
    Отчеты, подсчёты и т.п. обычно делаются в фоновом режиме. Для этого в laravel придумали очереди и планировщик.
    Ответ написан
    2 комментария
  • Как отключить авторизацию от google?

    ramzis
    @ramzis
    FullStackOverflow
    Здесь Google Account

    6464684c83664928973466.png
    Ответ написан
    Комментировать
  • Почему это условие не работает?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Условие срабатывает как и положено.

    Писать что-то в массив $_POST не имеет смысла, он будет всегда создан новым при следующем запросе.
    Точно так же между запросами не сохраняются переменные. И получается, что вы каждый раз сбрасываете счетчик в ноль, а тут же увеличиваете его до единички.

    Данные между запросами можно хранить в сессии.

    session_start();
    $num = $_SESSION['num'] ?? 0;
    $num++;
    
    $_SESSION['num'] = $num;

    Или передавать через ту же форму

    $num = (int)($_POST['num'] ?? 0));
    $num++;
    
    <input type="hidden" name="num" value="<?=$num?>">
    Ответ написан
    Комментировать
  • Как сделать поиск который понимает суть запроса?

    @sunsexsurf
    IT & creative
    Вы решаете задачу, которую решает Гугл, в целом.
    в общем, путь, по которому можно пойти:

    1/ прикрутить к вашей поисковой строке расстояние Левенштейна и искать совпадения. Уже будет работать. Плоховато, но лучше, чем ничего.
    2/ Посчитать tf-idf на ваших документах и смотреть, что ввел пользователь. Будет работать значительно лучше
    3/ построить w2v: каждому слову будет дан эмбеддинг (векторное представление), косинусные расстояния между векторами будут обозначать похожесть слов (синонимическую)
    4/ Прикрутить Берт-подобные модели. Если сайт не какой-то специфический, можно даже не доучивать на вашем корпусе.
    4 итерация - это, по сути, "предгенеративный" шаг. Потом начинаются большие языковые модели (типа огромного Ялма) и всякие вопросно-ответные системы типа чатЖПТ.
    Ответ написан
    Комментировать
  • Как сделать поиск который понимает суть запроса?

    Для этого необходимо, чтобы анализатор мог производить разбор частей речи языка, как минимум.
    Тогда анализатор будет понимать смысл речи и извлекать нужные компоненты.
    Есть технология NER.
    Ответ написан
    Комментировать
  • Как разместить пост в группе Одноклассники через API, c помощью php?

    Метод для публикации топиков в группах в API Одноклассников, конечно же, есть.
    Вот он: https://apiok.ru/dev/methods/rest/mediatopic/media...
    Также вам наверняка потребуется метод по загрузке фото: https://apiok.ru/dev/methods/rest/photosV2/photosV...

    Примеров на php у нас в документации, к сожалению, нет, но много хороших людей уже всё сделали за нас и до нас.
    Например:
    shtyrlyaev.ru/all/skript-avtopostinga-v-gruppu-odn...
    https://dampi.ru/posting-v-gruppu-v-odnoklassnikah...

    В этих же примерах кратко описано, как создать приложение и какие вам нужны права. Об этом и в документации написано: https://apiok.ru/dev/app/create
    Ответ написан
    1 комментарий
  • Как убрать водяной знак с помощью PHP?

    @maksam07
    Через GD "фотошопь" изображение
    Ответ написан
    Комментировать
  • Как стать специалистом по информационной безопасности (кибербезопасность)?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    Внимание! Изменился адрес почты!
    Ить, да вас прорвало, что ли? Вроде не конец учебного года, чего все так кинулись в ИБ?

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

    И задачи у него могут быть ... специфические.

    Нет, там конечно много и обычной админской работы - прокси, файрволлы, VPN, права доступа, сертификаты, разрешение на установку ПО, туда не хади - сюда хади (СКУД и видеонаблюдение). Но я уже тут пальцы стер писать, что ИБ не только про компы. ИБ это еще и про людей, и вот это "про людей" может быть сильно неприятным - СМП, чтение почты, отсмотр чем человек занимался...

    Я уже неоднократно сравнивал ИБ-шника с гинекологом - те, кто не в теме - думают, что это прикольная работа - постоянно на голых баб смотреть :) те же, кто в теме - знают, что это просто работа и в ней очень много грязи и вони, потому что связана она с человеческим организмом и его метаболизмом...

    Ну и еще - желательно знание законодательной базы и умение писать документацию... На самом деле, романтики в ИБ - микроскопическое количество. Это просто работа, иногда скучная и нудная, иногда даже грязная и неприятная...
    Ответ написан
  • Как сделать склонение числительных на php?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Это называется плюрализацией.
    Можно поискать реализации по ключевому слову "plural" на packagist.
    Примеры:
    doctrine/inflector
    symfony/inflector
    mmucklo/inflect
    wapmorgan/morphos (специально под русский и английский языки).
    Ответ написан
    Комментировать
  • Как получить список публикаций в группе через Одноклассники API?

    Vjaka
    @Vjaka
    Платформа игр (Одноклассники)
    Надо запросить разрешение на GROUP_CONTENT у модераторов через api-support@ok.ru
    Ответ написан
    Комментировать
  • Как добить проект?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Квотировал не только с вопроса но и с ответов автора.
    когда я хочу показать его действия, то проект не работает, и так всегда.

    а как начел вносить изменений то появились проблемы, что не так просто текст поменять

    Судя по общему тону сообщений - есть некая проблема в стабилизации релиза.
    Тоесть он, будучи разработанным год назад, тем не менее не может гарантировать что
    не будет чего-то сломано. В этом есть проблема тестирования.

    Надо посмотреть покрыты ли основные бизнес-кейсы авто-тестами. Самый простой пример.
    Берете и ломаете свой исходник в одном месте. И тесты должны это заметить. Если не замечают
    - это проблема.
    Ответ написан
    Комментировать
  • Почему API wildberries возвращает пустой результат?

    @Combat7 Автор вопроса
    РЕШЕНИЕ!
    Через месяц молчания техподдержки просто само собой начало отдавать результат. Починили судя по всему.
    Ответ написан
    Комментировать
  • Как и на чем реализовать сервер для стриминга видео?

    @KoreanGuy
    лол. Написать video streaming платформу с нуля на вебсокетах. Без обид, но одно это предложение уже говорит о том, что вы не сможете этого сделать. Стриминг не делается на tcp никогда. Вообще мало кто сможет такое сделать, а уж в одного так и подавно. Есть простое правило: если стриминг видео является не основой вашего бизнеса (как, например, у твича, юдеми, и тп), а просто каким-то доп функционалом, ни в коем случае не пишите свой велосипед. Берите vimeo и не усложняйте себе жизнь в 1000 раз.
    Ответ написан
    3 комментария
  • Есть пример как оформить репозиторий для портфолио?

    vabka
    @vabka
    Токсичный шарпист
    1. Сделай в репе всё что можешь сделать. Тоесть например тесты, настроенный ci/cd, и прочее такое.
    Бейджики, что тесты прошли/не прошли
    2. Полностью опиши проект, что это такое, и как его у себя задеплоить. В идеале какой-нибудь автоматизированный скрипт (например через Docker)
    3. Добавь скрины и ссылку на демку, если это возможно.
    4. Если проект сложный, то напиши документацию о том, что и где там есть.
    5. Естественно, опиши в отдельном разделе все используемые технологии, и для чего они использовались.
    Ответ написан
    1 комментарий