• Как скачать видео, начинающееся с blob?

    @TheSima
    Гуглится именно эта страница, но нормального ответа так и нет(не у всех Chrome), решил дополнить от себя.
    Решение(отсюда) для видео HLS такое(для других случаев пока что не нашёл решение):
    1) Определить m3u8 список для того видео которое Вы хотите скачать. Обычно это делается так:
    - Включаем режим разработчика в браузере и открываем(в этом режиме) вкладку сеть.
    - Открываем страницу с видео
    - В появившихся строчках ищем "что-то".m3u8 Например:
    http://example.com/video_url.m3u8
    Это и будет нужная ссылка на "список"
    2) Скачать ffmpeg и скачать с его помощью видео:
    - Под Windows можно здесь(ссылка устарела) здесьскачать из Assets файл ...-full_build.zip или 7z по вкусу, распаковать. Открыть папку bin, зажать Shift и кликнуть правой кнопкой в пустое место в окне папки bin, нажать "Открыть окно команд".
    Под линуксы я думаю, ребята разберуться ;)
    - И ввести следующую команду, заменив ссылку из примера на ссылку из пункта 1:
    ffmpeg -i "http://example.com/video_url.m3u8" -c copy -bsf:a aac_adtstoasc "output.mp4"

    output.mp4 - будет ваше видео) имя файла в команде можно менять ;)
    Ответ написан
    2 комментария
  • Как обновить свой Fork репозитарий до последней редакции основного репазитария используя GitHub for Windows?

    CAXAline
    @CAXAline
    Перейти на вкладку Pull Requests
    Создаем новый реквест New pull request
    Пишет, что нечего сравнивать, но не расстраиваемся и жмем switching the base
    Появились отличия родительского и форкнутого проектов. Жмем Create pull request и даем ему название
    Автоматически оказываемся в этом пул реквесте и жмем Merge pull request
    И напоследок Confirm merge
    PROFIT
    Ответ написан
    2 комментария
  • Что вы используете для минификации и конкантенации CSS и JS файлов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    gulp + gulp-concat + gulp-sourcemap (для разработки) + gulp-strip-debug + gulp-uglify (последние два только для релиза).

    Для разработки настраиваю ватчеры которые ребилдят все по изменениям. Можно добавить livereload по вкусу.

    p.s. все то же самое есть под grunt просто мне gulp больше импонирует (конфиги гранта разрастаются как чума, они довольно тупые, приходится создавать промежуточные файлы, все все делают как хотят... короче не вижу смысла уже им пользоваться).

    p.p.s. использую этот стэк для сборки и разработки фронтэнда как в отдельных js проектах так и в контексте разработки под symfony (выкинул ассетик ибо бесит).
    Ответ написан
  • Как можно парсить записи групп ВК?

    Nidora
    @Nidora
    Бонус 200 руб всем новым клиентам! VDS - 149 руб
    Текст
    $wall = file_get_contents("http://api.vk.com/method/wall.get?v=5.3&filter=others&domain=chertanovo_center&count=5"); // Отправляем запрос
      $wall = json_decode($wall, true); // Преобразуем JSON-строку в массив
    $i=0;
    foreach($wall as $item){
          echo "<p><b>".($i ++)."</b>. <i>".$item['text']."</i><span>".date("Y-m-d H:i:s", $item['date'])."</span></p>"; // Выводим записи
      }
    Ответ написан
    2 комментария
  • Как генерировать скидочный купон на PHP?

    @zdiii
    Сделал как хотели)
    Вид купона:JFCA-4304790701739
    И так, generate.php создает купон.
    <!doctype html>
    <html lang="ru">
    <head>
        <meta charset="UTF-8">
        <title>Проверка купона</title>
    </head>
    <body>
        <form action="generate.php" method="post">
            Купон до:
            <input type="number" max="31" style="width:5%;" placeholder="31" name="d">        <input type="number" max="12" style="width:5%;" placeholder="06" name="m">
            <input type="submit" value="Создать">
        </form>
        <br><br><br>
        <?php
    if (!isset($_POST['m'])){
        } else {
                    $kupon = $_POST['m'].$_POST['d'];
                    $dr = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
                    $drr   = array( "A", "B", "C", "D", "E", "F", "G", "H", "I", "J");
                    $data = str_replace($dr, $drr, $kupon);
                    $kupon2 = $kupon * 79 * 89 * 99 * 99 * 99;
                    $kupon2 = "$data-$kupon2";
                    echo "Ваш купон: \"<b>$kupon2</b>\"";
    };
    ?>
    </body>
    </html>

    сохраняете код в виде generate.php .

    Далее, proverka.php проверяет купон на действительность.
    <!doctype html>
    <html lang="ru">
    <head>
        <meta charset="UTF-8">
        <title>Проверка купона</title>
    </head>
    <body>
        <form action="proverka.php" method="post">
            Введите купон:
            <input type="text" style="width:50%;" placeholder="88e3e18656d274a70518ecdcaf01aec5" name="kupon">
            <input type="submit" value="Проверить">
        </form>
        <br><br><br>
        <?php;
    if (!isset($_POST['kupon'])){
        } else {
                  $kupon = substr($_POST['kupon'], 0, 4);
                  $date = date("md");
                  $dr = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
                    $drr   = array( "A", "B", "C", "D", "E", "F", "G", "H", "I", "J");
                    $data = str_replace($drr, $dr, $kupon);
                    
                  $kupon2 = $data * 79 * 89 * 99 * 99 * 99;
                  $kupon2 = "$kupon-$kupon2";
                  if ($_POST['kupon'] == $kupon2) {
                            if($data>=$date){
                                                  echo "<h1>Действительный купон!</h1>";
                                                  } else {
                                                  echo "<h1>Недействительный купон!</h1>";
                            };
                  } else {
                  echo "<h1>Недействительный купон!</h1>";
                  }
    };
    ?>
    </body>
    </html>

    сохраняете код в виде proverka.php .
    Заливаете на сервер два файла.
    Юзайте) Вопросы задавайте, отвечу)))
    Могу модифицировать как пожелаете))) Конечно, за небольшую яндекс.деньги)
    mail: marketing-kg@yandex.com
    Ответ написан
  • Событие при появлении объекта в зоне видимости?

    @devstudent
    frontend-developer
    надо измерять высоту окна, расстояние от верха окна до вашего элемента, путь пройденый скроллом , и если позиция вашего элемента + небольшой зазор (иначе срабатывать будет как только первый пиксель элемента появится из-под нижнего края окна браузера и анимации не будет заметно, она произойдет внизу ) в пикселях меньше чем расстояние пройденное скроллом + высота окна, то значит он видим на экране, можно с ним делать анимацию или еще что там
    $(document).ready(function(){
    			$(document).bind("scroll",function(){
    				$(".scroll-appear").each(function(){
    					var position = $(this).offset().top;
    					var classToBeAdded = "visible";
    					
    					if (position+150 < $(window).scrollTop() + $(window).height()){
    						$(this).addClass(classToBeAdded);
    					}
    					
    					
    					if (position+$(this).height()+600 < $(window).scrollTop() + $(window).height()){
    								$(this).removeClass(classToBeAdded);
    					}
    						
    					
    				});
    			});
    		});
    Ответ написан
    Комментировать
  • Webp vs Safari как подружить?

    @koekaverna
    1. Нужен скрипт который будет конвертировать png и jpg в webp и складывать с тем же именем и постфиксом .webp
    2. При запросе файла .*\.(png|jpe?g)$ проверить заголовки Accept: image/webp, если нет отдать оригинал картинки. Иначе идём дальше.
    3. Пробовать отдать сначало $uri.webp
    4. Если файла нет то выполнять скрипт с параметром $uri
    5. Скрипт создает .webp и выводит его

    Смотреть в сторону https://github.com/rosell-dk/webp-on-demand

    Пример конфига для nginx:
    location ~* ^/?wp-content/.*\.(png|jpe?g)$ {
      add_header Vary Accept;
      expires 365d;
      if ($http_accept !~* "webp"){
        break;
      }
      try_files
        $uri.webp
        /webp-on-demand.php?xsource=x$request_filename
        ;
    }
    Ответ написан
    2 комментария
  • PSR-0 или PSR-4, и как правильно построить структуру проекта?

    delphinpro
    @delphinpro
    frontend developer
    /path/to/project/ это путь к проекту и данный путь нигде не фигурирует, это та директория из которой запускается основной index.php

    Нет. Этот корневая директория проекта. Из нее запускается композер. В ней же обычно лежит DOCUMENT_ROOT каталог, в котором уже и находится точка входа index.php. Также здесь лежат директории vendor (для сторонних пакетов) какой нибудь application/ для ваших файлов.

    Давайте попробую объяснить на примере.

    Пусть будет такая структура, например.

    60926735302a7422195552.png

    в vendor - вам ничего самому писать не нужно. Этот папка для композера.
    public_html - в ней только index.php и все ваши css, images, js. Это папка на которую указывает DOCUMENT__ROOT в настройках домена вашего сервера. Только эти файлы доступны "по интернету".
    application - здесь все ваши самописные php файлы.
    (На остальные каталоги не обращаем внимания, в корне проекта можно располагать все что вам удобно, это не будет доступно из web)

    Под такую структуру написан подобный composer.sjon
    {
      "require": {
        "php": ">=5.5.9",
        "slim/slim": "2.*",
        "twig/twig": "~1.18",
        "slim/views": "^0.1.3",
        "robmorgan/phinx": "^0.4.4",
        "illuminate/database": "^5.1"
      },
      "minimum-stability": "stable",
      "autoload": {
        "psr-4": {
          "MyName\\MyProject\\": "application"
        }
      }
    }

    Тут вроде бы все просто. В require перечислены используемые пакеты. Поясню только autoload. Автозагрузка по стандарту PSR-4. Указано пространство имен ваших файлов и папка в которой они лежат.
    Если ваш класс MyClass лежит в папке application - то у него должно быть пространство имен \MyName\MyProject (полное имя класса получается \MyName\MyProject\MyClass). Если ваш класс MyController лежит в папке application/Mvc/Controllers, то, соответственно \MyName\MyProject\Mvc\Controllers\MyController.

    При этом вам не нужно заморачиваться и писать автозагрузчик. Просто выполните команду php composer.phar install (или php composer.phar dumpautoload для пересборки аавтозагрузчика) и подключите файл автозагрузчика в index.php
    include '../vendor/autoload.php';

    Не использовать композер не имеет смысла, т.к. это очень просто. Просто скачайте файл https://getcomposer.org/composer.phar в корень проекта и пользуйтесь (см выше).
    Ответ написан
    5 комментариев
  • Simplacms Не загружаются картинки в товар по https?

    @kycher Автор вопроса
    zetwin zetwin - Правильное решение!

    В api/Image.php

    ...
    // Если вайл удаленный (http://), зальем его себе
    if (preg_match("~^https?://~", $source_file)) {
    ...

    В api/Design.php

    ...
    if (preg_match("~^https?://~", $resized_filename_encoded)) {
    $resized_filename_encoded = rawurlencode($resized_filename_encoded);
    }
    ...


    Плюс
    Файл simpla\simpla_source\simpla\ProductAdmin.php

    Меняем строку
    if(!empty($url) && $url != 'http://' && strstr($url,'/')!==false)

    на
    if(!empty($url) && $url != 'http://' && $url != 'https://' && strstr($url,'/')!==false)
    Ответ написан
    Комментировать
  • Simplacms Не загружаются картинки в товар по https?

    zetwin
    @zetwin
    В api/Image.php
    ...
            // Если вайл удаленный (http://), зальем его себе
            if (preg_match("~^https?://~", $source_file)) {
    ...

    В api/Design.php
    ...
    			if (preg_match("~^https?://~", $resized_filename_encoded)) {
                $resized_filename_encoded = rawurlencode($resized_filename_encoded);
            }
    ...
    Ответ написан
    Комментировать