• Как быстро удалить большое количество строк в postgresql?

    x67
    @x67
    Вы каждый раз вызываете запрос на удаление одной строки? Тогда 90 запросов еще хороший результат, такими методами ни один вражеский дудос не страшен, своего хватит.
    Используйте другие условия (например формализуйте те условия, по которым вы получили ваш список удаляемых id) или создайте временную таблицу с нужными id, после чего используйте 1 запрос:
    DELETE FROM table WHERE id IN (select id from dellisttable)

    где dellisttable - временная таблица, в которой хранится список удаляемых id
    Ответ написан
    Комментировать
  • Как добавить видео с помощью 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 комментария
  • Какая отличия между @NotEmpty, @NotBlank и @NotNull?

    Chvalov
    @Chvalov Автор вопроса
    String name = null;
    NotNull = false
    NotEmpty = false
    NotBlank = false
    
    String nam = "";
    NotNull = true
    NotEmpty = false
    NotBlank = false
    
    String name = "  ";
    NotNull = true
    NotEmpty = true
    NotBlank = false
    
    String name = "zojian"
    NotNull = true
    NotEmpty = true
    NotBlank = true
    Ответ написан
    Комментировать
  • Как правильно писать на jsx?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Код надо транслировать в JS перед выполнением.
    babel-preset-react
    Ответ написан
    2 комментария
  • Как создать массив из объекта?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const arr = Object.entries(obj).map(([ k, v ]) => ({ id: +k, name: v.nameEn }));
    Ответ написан
    Комментировать
  • Вернуть значение из функции?

    rockon404
    @rockon404
    Frontend Developer
    async getDetails(id) {
      const response = await fetch();
      if (response.status !== 200) {
        console.log('Код ошибки : ', response.status);
        return;
      }
      try {
         const data = await response.json();
         return data;
      } catch (err) {
        console.log('Fetch Error :-S', err);
      }
    }


    Естественно вызывать надо так:
    this.getDetails(id).then(data => { });

    или в асинхронной функции:
    const data = await this.getDetails(id);
    Ответ написан
    Комментировать
  • Вернуть значение из функции?

    async getDetails(id) {
            let response = await fetch('...'),
                data     = await response.json();
    
            return data;
        }
    Ответ написан
    Комментировать
  • Как спровоцировать re-render дочернего компонента?

    0xD34F
    @0xD34F Куратор тега React
    Добавьте в LibraryContent:

    componentDidUpdate(prevProps) {
      if (prevProps.url !== this.props.url) {
        this.getData();
      }
    }
    Ответ написан
    Комментировать
  • Как спровоцировать re-render дочернего компонента?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    LibraryContent должен перерисовываться, так как вы обновляете state родителя, да и он еще до кучи получает новое значение. Просто обязан.

    Проверьте, что в нем нет shouldComponentUpdate, или чего-то, что может мешать обновлению (приложите код компонента).
    Ответ написан
    1 комментарий
  • Как с помощью JS заполнить поле (input) на чужом сайте?

    lamer350
    @lamer350
    กำลังสูงสุด
    У вашего input нет id="input"
    Обращение в jQuery по # - это обращение к ID элемента.
    Вам нужно обращаться к форме так: $('.cart-item-sum__input').val('123');
    При условии что class cart-item-sum__input не повторяется в документе
    Ответ написан
  • Почему не изменяется состояние компонента?

    sharpfellow
    @sharpfellow
    Front
    Вы используете this.setState в function ,
    response.json().then(function(data)
    у которой свой this, а не this класса LibraryContent.

    Надо заменить на стрелочную функцию, как выше
    .then(response => {

    console.log("Эта строка в консоль уже не выводится");

    Это не выполняется, так выше у this нет setState, следовательно должна была произойти ошибка
    this.setState is not a function
    Ответ написан
    3 комментария