• Как лучше защитить php код от доработок?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Если нужно именно "защитить от доработок", а не от копирования, то имхо достаточно подключить контроль версий, и будет видно, менялись ли какие-то файлы или нет. Часто приходится так делать, если впускаю на проект фрилансеров, которые сами не пользуются контролем версий (после их правок делаю git status и смотрю что именно было поправлено).
    Ответ написан
    Комментировать
  • Как начать использовать Git в созданном проекте PhpStorm?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Самый простой вариант такой:
    1. Есть локальные файлы проекта. Если настраивается deployment (ftp), то файлы при правках льются на веб-сервер с проектом.
    2. Есть репозиторий рядом с локальными файлами, в него делаются коммиты.

    Посложнее, можно использовать сервер для хранения репозиториев (на самом деле копий локального репозитория, remote). Например, как писали выше, bitbucket. Или github, или gitlab. В этой модели сервер по прежнему ничего не знает, что у него git.

    И самый продвинутый вариант, когда на боевой веб-сервер тоже устанавливается git, и поднимается локальный веб-сервер. На локальном ведутся работы, происходят коммиты. И когда делается push (или pull-request и дальнейший merge) на сервер с git репозиториями (bitbucket), там может автоматически срабатывать заранее настроенный обработчик события - hook, который дернет определенный скрипт на боевом веб-сервере, который в свою очередь делает git pull origin master.

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

    Если хочется резервную копию репозитория где-то вне машины (или работа ведется эпизодически на разных машинах), то можно подключить bitbucket и делать push\pull\fetch с ним.

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

    И третий вариант - самый сложный, обычно используем на техподдержке, когда есть "наша" копия сайта и "боевая". Т.е. на боевую копию не попадает ничего, без полного тестирования на нашей.
    Ответ написан
    Комментировать
  • Как в word 2007 сделать чтобы печатал без полей?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Мне кажется, нужно проверить размер бумаги у документа (на ленте "Разметка страницы" - "размер"). Должно совпадать с листом, на который будет производиться печать. (т.е. если это А4, то и А4 надо чтобы было выставлено).

    Но насколько я знаю, если размер менять у уже набранного и сверстанного документа, то верстка часто разъезжается, так что вариант с предварительной конвертацией в PDF не так уж и плох.
    Ответ написан
    1 комментарий
  • Как создать HTML-версию AJAX-страницы для индексирования поисковыми системами?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    По идее, нужно сначала делать noajax версию, классическую так сказать, а потом уже поверх нее прикручивать обработчики событий, которые будут подгружать результаты фильтра через ajax.

    Причем, если на js использовать объект history, то можно управлять и адресной строкой, т.е. для пользователя ajax становится приятным дополнением - страница загрузится быстрее, чем при полной перезагрузке; Но и полная перезагрузка остается полностью функциональной.

    Пример кода с использованием jquery:
    $('#filter_form').submit(function(){
            if (undefined != history)
            {
                var url = $(this).attr('action') + '?' + $(this).serialize();
                history.replaceState({}, '', url);
                $.get(
    				url,
    				{},
    				function(answ){
    					$('#content').html($(answ).find('#content').html());
    					afterAjax();
    				},
    				'html'
    			);
                return false;
            }
        });


    Посмотреть как работает можно здесь: aacase.ru/catalog
    Ответ написан
    Комментировать
  • Какую CMS выбрать?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Рекомендую 1C-Битрикс. Если возникнут вопросы по интеграции, обращайтесь, большой опыт.
    Ответ написан
  • Как сверстать 2 блока?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Вот здесь здорово описаны макеты такого рода: htmlbook.ru/content/rezinovyy-dizayn-dvukhkolonnyy...
    Вообще рекомендую к прочтению статьи с этого сайта, очень помогло в свое время научиться верстать.
    Ответ написан
  • Как передать куки вторым запросом в cUrl?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Старый код, логинимся и получаем куки в строку:
    // Отправка POST запроса с получением печенек:
    function send_post_get_cookie($URL='', $PostData=Array(), $cookie='')
    {
        // Отсекаем пустые вызовы:
        if (strlen($URL)<=0) return false;
        // Скопировал строку из FireBug:
        $ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
        // Инициализация объекта:
        $ch = curl_init($URL);
        // показывать заголовки (в них куки):
        curl_setopt($ch, CURLOPT_HEADER, 1); 
        // не показывать тело страницы (для экономии траффика):
        curl_setopt($ch, CURLOPT_NOBODY, 1); 
        // это чтобы прикинуться браузером:
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);
        // можно ставить еще вот это, если удаленный сервер проверяет:
        // curl_setopt($ch, CURLOPT_REFERER, $URL);
        curl_setopt($ch, CURLOPT_POST, 1);
        // включение полей POST в запрос:
        curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
        // если нужны печеньки, установим:
        if (strlen($cookie)>0)
            curl_setopt($ch, CURLOPT_COOKIE, $cookie);
        // тормозим стандартный вывод:
        ob_start();
        // запускаем запрос:
            curl_exec ($ch);
            curl_close ($ch);
            // получаем заголовки в массив:
            $headers = explode("\n", ob_get_contents());
        ob_end_clean();
        // выдираем строку печенек:
        for ($i=0, $cnt=count($headers); $i<$cnt; $i++) 
            if (strpos($headers[$i], 'Set-Cookie:') !== FALSE)
                $cookie .= substr($headers[$i], strpos($headers[$i], 'Set-Cookie:')+strlen('Set-Cookie:')); 
        // и возвращаем результат:
        return $cookie;
    }


    А потом используем ее в других запросах, к примеру загружаем файл после авторизации:
    // Сохранение файла с удаленного хостинга:
    function save_get_file($URL='', $cookie='')
    {
        if (strlen($URL)<=0) return false;
        $filename = $_SERVER['DOCUMENT_ROOT'].'/upload/tmp/'.date('YmdHis_').rand(99,9999999).'.tmp'; 
        $fp = fopen($filename, 'w');
        if (!$fp)
            return false;
        else
        {
            $ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
            $ch = curl_init($URL);
            curl_setopt($ch, CURLOPT_USERAGENT, $ua);
            curl_setopt($ch, CURLOPT_FILE, $fp); // чтобы выгрузить в файл;
            if (strlen($cookie)>0)
                curl_setopt($ch, CURLOPT_COOKIE, $cookie);
            curl_exec ($ch);
            curl_close ($ch);
            return $filename;
        }
    }
    Ответ написан
    Комментировать
  • Почему отображение страниц в Chrome происходит только после изменения размера окна?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Было такое. Полностью удалял и ставил заново, иначе исправить не удалось.
    Ответ написан
  • Как реализовать редирект субдомена в раздел сайта через .htaccess?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Делал так, в корне размещал правило:
    RewriteEngine on
        RewriteBase /
        RewriteCond %{HTTP_HOST} ^coffee.
        RewriteRule ^(.*)$ /projects/coffee/www/$1 [L]

    А в папке /projects/coffee/www/ положил правило:
    RewriteEngine on
    RewriteRule ^$                        index.php  [L]
    RewriteCond %{REQUEST_FILENAME}       !-f
    RewriteCond %{REQUEST_FILENAME}       !-d
    RewriteRule (.*)                      index.php?id=$1  [QSA,L]
    Ответ написан
    Комментировать
  • Как программно определить загрузку ЦП и памяти?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Не знаю, насколько актуальная информация, но вроде бы есть пример функции:
    www.rsdn.ru/forum/winapi/1282671.all
    Ответ написан
  • Как на PHP реализовать беспрерывное выполнение задачи?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    А такой вариант не подойдет?
    <?php
    set_time_limit(0);
    while (true) { ... }
    Ответ написан
  • Как добавить в DatePicker автосабмит после ввода дат в поля?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Вот этот плагин?
    https://github.com/dangrossman/bootstrap-daterange...

    В описании есть пример кода:
    $('#daterange').daterangepicker();
    $('#daterange').on('apply', function(ev, picker) {
    // Здесь делаем submit
    });


    И еще есть пример:
    $('input[name="daterange"]').daterangepicker(
      { 
        format: 'YYYY-MM-DD',
        startDate: '2013-01-01',
        endDate: '2013-12-31'
      },
      function(start, end) {
        alert('A date range was chosen: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD'));
    // Здесь тоже можем сделать submit
      }
    );
    Ответ написан
    Комментировать