• Личный кабинет. На Yii или Laravel? Что выбрать?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    фреймворки это вам не CMS. В целом без разницы. Судя по всему ни тот ни другой фреймворк вы не знаете.
    Ответ написан
  • Почему не работает сайт, после смены PHP с 5.2 на 5.3?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Без ошибки остается только гадать. Посмотрите логи.

    Можно конечно вооружиться гайдом по апгрейду и проверять все варианты но это долго нудно и лучше найти сообщения об ошибках.

    php.net/manual/ru/migration53.php
    Ответ написан
    1 комментарий
  • Как работает MySQL с диском? Когда происходит синхронизация и как?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    которая идеально подходит под мои требования.

    Любопытно чем вам существующие реализации не угодили. Я бы порекомандовал вам просто сдаться и использовать существующие решений.

    www.tocker.ca/2013/05/06/when-does-mysql-perform-i...
    Ответ написан
    Комментировать
  • Как портировать игру на js-движке на мобильные платформы?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    руками
    Ответ написан
    Комментировать
  • Можно ли синхронизировать GitHub с текстовым редактором Atom?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    вы видимо не понимаете как работает git
    Ответ написан
    1 комментарий
  • Как дать блокам класс, через интервал времени?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    $('div span').each(function(el){
        var $el = $(el);
        setTimeout(function(){
            $el.addClass('test');
        },1000);
    });
    Ответ написан
    Комментировать
  • Как найти координаты точек пересечения 2-ух прямых ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    X можно найти из равенства - k1 * x + b1 = k2 * x + b2
    Ответ написан
    Комментировать
  • Как правильно считать время выполнения многопоточного алгоритма?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ну вы же не думаете что все 4 процесса работают постоянно? Если вы запустите ваше приложение с повышенным приоритетом процессора теоритически разница будет уже чуть меньше. Но все упирается в то сколько ядер процессора вам доступно. Так же не забывайте - не вы один на всем компьютере занимаете процессорное время.
    Ответ написан
    Комментировать
  • На чем можно быстро делать Landing Page?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Piecrust, Phrozn

    Контент в yml, собираются шаблоны и дампится в html.
    Ответ написан
    Комментировать
  • Как ЛУЧШЕ организовать workflow для небольшой команды?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Docker Docker Docker. Базы в отдельных контейнерах, можно в будущем вынести на отдельный сервер.
    Ответ написан
  • Как повторить неудачно выполненный javascript promise?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    что вызывать в этом таймере?


    resolve или reject в зависимости от результата. Можно сделать так:

    function getAddressLocation (address, repeat) {
        repeat = repeat !== false;
        
        return new Promise(function(resolve, reject) {
            geocoder.geocode({
                address: address
            }, function(results, status) {
    
                if (status === google.maps.GeocoderStatus.OK) {
                    resolve({
                        results: results,
                        business: address
                    });
    
                } else if (status === google.maps.GeocoderStatus.OVER_QUERY_LIMIT && repeat) {
                    setTimeout(function() {
                        getLocationAddress(address, false).then(resolve, reject);
                    }, 1000);
    
                } else {
                    reject(status)
                }
            });
        })
    }


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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    php.net/manual/en/function.imagecreatefromstring.php и берем содержимое php://input
    Ответ написан
    Комментировать
  • Оптимизация jpegoptim большой список, как?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    for f in *.jpg; do jpegoptim "$f" -m85 --strip-all; done
    Ответ написан
  • Doctrine 2 и Twig как получить доступ к объекту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если у вас такие специфичные вещи, типа репорты и т.д. имеет смысл завернуть результат в DTO с простым интерфейсом и передавать в шаблон его.
    Ответ написан
    Комментировать
  • Как в yii2 restful в ответе сервера выбрать сразу все значения без пагинации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Просто объясните разработчикам API что для REST лучше делать так:
    /games?start_from=2&limit=20 + заголовок все X-Pagination-* заголовки отдавать... ну вроме разве что Page-Count и Current-Page

    Таким образом если на клиенте придется поменять количество айтемов на страницу, не придется пинать разработчиков API.

    Далее по вашей проблеме. 7 запросов это глупо. Если вам нужно сделать механизм кеширования данных например, то тогда да, тогда забираем все данных (хотя опять же можно делать это постепенно, все очень зависит от целей которые вы приследуете) и храним их у себя периодически проводя инвалидацию кеша.

    В целом же это может быть и один запрос получающий первую порцию данных и подгружающий новую порцию по мере необходимости. Например если у вас реализована пагинация и вы хотите что бы все работало максимально быстро, можно при скроле скрина, если пользователь приближается к пагинации, сразу делать запрос за следующей пачкой данных, что бы пока пользователь тыкнул на кнопку next даные уже подгрузились бы. Ну или делать бесконечный скрол. Как уже говорилось - все зависит от вашего юзкейса. Но рекомендации относительно API все же передайте, ибо будут проблемы.
    Ответ написан
    Комментировать
  • Чем куки отличаются от сессии в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нууу давайте разбираться.

    Для начала почитайте про HTTP на той же вики. Досканально знать не нужно, но стоит минимально понимать структуру запросов/ответов, понимать что у запроса и ответа есть заголовки и тело (тела может и не быть, зависит от типа запроса/ответа).

    Так вот. Куки. Куки живут на стороне браузера. Они передаются HTTP заголовком на каждый запрос на сервер (даже если вы за картинками полезли). Есть просто куки, есть http-only куки. Куки могут быть разграничены по хосту и пути. Все это дает нам гибкость и помогает с секьюрностью. В PHP содержимое $_COOKIE предоставляет нам SAPI. Когда PHP получает на обработку запрос, SAPI используемое (php-fpm, cgi, mod_php имеют свои реализации SAPI) в данный момент берет заголовки и тело запроса, парсит их и заполняет все эти суперглобальные массивы типа $_SERVER, $_GET и в том числе и $_COOKIE. Все что прислал нам клиент (что-то что делает запросы это клиент, что-то что их обрабатывает - сервер), а куки шлет нам браузер только те что можно исходя из того куда шлется запрос. Устанавливаются куки заголовком Set-Cookie в ответе, то есть тут больше нужно читать в принципе про HTTP а не про PHP. PHP просто позволяет вам работать с этим добром. Вы можете сэтить куки напрямую работая с заголовками ответа при помощи функции header. Более того, если выставить время жизни куки в 0, то как раз таки они а не сессия будет сбрасываться при закрытии браузера так как тот будет забывать все такие куки.

    Вот... сессии... В PHP сессия обычно это файл. Просто какой-то файл с рандомным именем. Если скажем в php.ini указано session.autostart или делается вызов session_start то создается файл под сессию пользователя (можно переместить в рэдис или мемкэш, свое хранилище и т.д в зависимости от нужд. Так же данные можно шифровать, что по умолчанию и происходит). Этот файл имеет ID, просто какая-то рандомная строка. И если при обработке запроса не нашлась сессия с предыдущего запроса - создается новая.

    И вот мы подошли к самому интересному - как PHP связывает сессию с предыдущего запроса с текущей. И тут все довольно просто - куки. Когда пользователю присваивается сессия, автоматически сэтится http-only (что бы нехорошие люди не могли из js увести нашу сессию) кука, в которую записан идентификатор сессии. В дебагере браузера можете посмотреть есть ли у вас кука PHPSESSID (название можно менять в настройках, да и вообще сессии можно не только через куки связывать, но это уже загоны по секьюрности) когда будете эксперементировать с сессиями.

    Когда запрос обрабатывается SAPI, при наличии session.autostart, перед тем как начинать создавать новую сессию, пых все же смотрит а есть ли у нас кука с идентификатором сессии, проверяет есть ли у него такая, и если есть успокаивается и не создает новую. Поскольку сессия привязывается через куки, то можно выставить время жизни этой самой куки (в php.ini) и таким образом регулировать время жизни сессии.

    Вот... когда использовать куки а когда сессии? Желательно понимать, что чем больше данных в куках (а у них есть лимит к слову) - тем больше данных мы передаем на каждый запрос. То есть это не круто когда что бы получить 1 килобайт данных мы должны в заголовках передать пару килобайт кук. Люди, повернутые на оптимизации, даже картинки хранят на отдельных cookie-less доменах что бы уменьшить количество трафика и пакетов (обычно простенький HTTP запрос влазит в размеры одного TCP пакета). Если вам нужно работать с этими данными из JS на любой странице, например локаль выбранноую пользователем для того что бы применять переводы еще и в JS, то стоит использовать куки. Для всео остального лучше конечно же использовать сессии. Во всяком случае на начальных этапах когда что-то сильно сложное вам делать не придется.
    Ответ написан
    2 комментария
  • Как настроить совместную работу sublime text 3, github и bitbucket?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    пишите код в саблайме, работаете с гитом в консольке. Вот и все.
    Ответ написан
    Комментировать
  • Какую cms вы бы использовали под Node.js?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    -_- Защищают php и т.п...

    Да ладно, пых защищают... Просто зачем? CMS на ноде уже существует огромное множество. Некоторые даже интересны. Меня вот лично не прельщает идея использовать какие-то CMS не узкоспециализированные ни на node.js ни на php ни на любом другом языке.

    Ну а если мечтать... хочу CMS на модулях, с DI и без извращений с менеджерами плагинов, кастылями и прочим, с кешированием всего и вся при деплое или при запуске команды из CLI к примеру или любой другой механизм кеширования имеющий вармап. Никаких wysiwyg, только маркдаун и редакторы по типу sir-trevor (вообще хотелось бы видеть этот самый sir-trevor написанный нормально а не тот ужас который сейчас есть). А еще было бы неплохо что бы эта CMS была просто модулей управления контентом, который можно просто интегрировать в своей проект. То есть не коробочное решение а набор компонентов + одно собранное приложение для тех кому нужно только странички статические и ничего больше.
    Ответ написан
  • Авто нажатие на кнопку в php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Это вам на клиенте разруливать надо, php тут не причем.
    Ответ написан
    Комментировать