• Какова механика работы метода bind?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    bind кэширует текущее значение своего this в момент своего вызова, т.е. он привязывает именно функцию, а не объект, в котором находится функция. Иначе нельзя было бы вызывать bind на просто функции по типу foo.bind(abc). В мануале, кстати, описано что именно она кэширует - там полный список есть: https://developer.mozilla.org/ru/docs/Web/JavaScri...

    Упрощенный пример реализации bind для понимания механизма:
    function binder(that) { 
        let targetFunction = this; // кэш целевой функции
        return function() { targetFunction.call(that) } // В возвращаемой функции используем кэш
    }
    
    let user = {
      name: "Tom",
      intro() {
        console.log("I am " + this.name);
      }
    }
    
    user.intro.binder = binder 
    let f = user.intro.binder(user);
    
    setTimeout(f, 1000);
    
    user.name = "Sid";
    user.intro = function() {
      console.log("Вообще другая функция. name: " + this.name);
    }
    Ответ написан
    1 комментарий
  • Какое различие между этими функциями?

    Alexandre888
    @Alexandre888
    Javascript-разработчик
    1. «Function expression» https://learn.javascript.ru/function-expressions
    2. «Function declaration» https://learn.javascript.ru/function-basics

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

    @galliard
    Есть у композера такая фишка https://getcomposer.org/doc/05-repositories.md#path

    То есть можно прописать в свой основном composer.json репозиторий типа "path" и прописать там путь к папке с твоей библиотекой. Таким образом комит, пуш, создание релиза и composer update на локальном делать не придется, изменения в библиотеке сразу будут и в основном проекте.
    Ответ написан
    Комментировать
  • Какие преимущества использования pinia/vuex в Vue3?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Автор Pinia вот в этом issue отвечал на вопрос, с тех пор ничего не изменилось :)
    Ответ написан
    Комментировать
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    @Vitsliputsli
    Абсолютно понимаю автора, он цитирует определение замыкания, а ему в ответ - определения не нужны, они лишь путают. Он спрашивает, а как тогда? Ему кто про мусорщик, кто про стек, и у него создается ощущение, что сами не могут договориться. Но кроме этого, автор прав, его функция - замыкание.
    Замыкания везде работают одинаково. Если функция содержит ссылки на переменные объявленные вне тела этой функции, и которые не являются ее параметрами - это и есть замыкание. Что значит фраза - все функции в javascript - замыкания? Дело в том, что в других языках область видимости может просто не позволить обращаться к внешним переменным, в таких языках функция не будет замыканием, но может быть возможность превратить функцию в замыкание через специальный синтаксис. В javascript таких манипуляций не нужно, поэтому в нем любая функция - замыкание.
    Т.е. замыкание это возможность в функции создать ссылки на внешние переменные. А здесь уже как следствие, работа мусорщика, если есть рабочая ссылка, то объект не уничтожается, а в приведенных примерах с 2 функциями она рабочая, так как можно получить доступ из корневого объекта, что удовлетворяет требованиям алгоритма mark-and-sweap. Но это следствие, а не принцип работы замыкания.
    Поэтому автор абсолютно прав - его функция это замыкание. Потому что ни в одном определении замыкания нет никаких упоминаний о мусорщике, а значит разницы нет на какие внешние данные ссылаться.
    Другое дело, все хотят видеть не замыкание, а его хитрое использование, а именно сохранение ссылки объявленной в замыкании при уничтожении ссылки во внешней функции. Не надо считать собеседующего бездарем, если бы вы ему объяснили свою точку зрения, он вполне мог бы и согласиться, хотя и не факт, многие собеседования проходят в виде допроса, что говорит о неадекватности или о слабой квалификации собеседующего, в такие конторы не стоит идти.
    Ответ написан
    1 комментарий
  • Кто-то уже окунался в разработку с Nuxt 3?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    Вы соберёте все проблемы и завалите все дедлайны. :)

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

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

    Да и вообще есть ощущение, что они слишком фанатично пытаются всё упростить и обвешать магией, ушли куда-то не туда.
    Всякий сахарок - это прикольно, но должно быть опционально и навешиваться поверх уже готовой, работающей системы, а там половина issue - это борьба с теми проблемами, которые они сами себе придумали в погоне за "хотим, чтобы тут одну строчку написать - и дальше оно всё само".
    Но альтернатив не видно, поэтому пока Nuxt 2, возможно Nuxt Bridge, но и то смотреть надо.

    Другой вопрос - а зачем вам SSR для CRM? Для морды можно и пререндер сделать, а всё что за авторизацией - кому вообще интересно, есть там серверный рендеринг или нет?
    Ответ написан
    4 комментария
  • Стоит ли заниматься программированием в моем возрасте?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Ну взрослый человек. Ну почему такие странные вопросы.
    Одно дело, когда пишут школьники, которые еще не понимают как это вообще - найти работу и устроиться работать, которые думают что профессиональные навыки можно получить в школе или в институте.
    И другое дело вы, уже поработавший, повидавший жизнь.

    Никто вам ничего полезного не скажет. Никто не знает на что вы способны, есть ли у вас достаточно времени, сил, желания и вообще возможности поменять текущую работу.
    Да, с точки зрения СНГ, программист может получать прилично. Но это опытный программист. Вы же вообще хотите начать с тестирования. 300-400 баксов в месяц для джуна. Если вы прямо сейчас, со свободным английским, зарабатываете 300-400 баксов, то может быть. Если же больше, насколько вы готовы на даунгрейд?
    И ведь неизвестно как у вас получится.
    Уходить насовсем в тестировщики?
    А программист-джуниор это будет посложнее и подольше, а учитывая конкуренцию...

    В общем нет смысла спрашивать философские вопросы на тостере.
    Ответ написан
    5 комментариев
  • Посоветуйте приложение для учета финансов

    @timsat
    Ответ написан
    Комментировать
  • Есть ли в Yii транслит по умолчанию?

    DmitryVoronkov
    @DmitryVoronkov
    Python Developer
    Ответ написан
    Комментировать
  • Как сделать в PHPStorm автоматический коллапс методов при открытии файла?

    @shell_execute Автор вопроса
    Решение найдено (File -> Settings -> Editor -> General -> Code Folding
    DHrLs.jpg
    Ответ написан
    Комментировать
  • Имеет ли смысл использовать git если вас работает 3 человека в команде?

    @Lolman
    Software Engineer
    Использовать систему контроля версий имеет смысл даже если разработчик всего один
    Ответ написан
    1 комментарий
  • Почему не переводится дата на русский язык в Yii2?

    Если мне память не изменяет нужно в конфигурации php.ini что то добавить.
    extension=php_intl.dll
    Ответ написан
    3 комментария
  • Как выводить дату как на тостере?

    miraage
    @miraage
    Старый прогер
    carbon.nesbot.com/docs/#api-humandiff

    Локализация в комплекте.
    Ответ написан
    Комментировать
  • Как вести себя, когда дают большой проект с недокументированным кодом?

    притвориться мёртвым
    Ответ написан
    Комментировать
  • Какие backend технологии сейчас популярны?

    @raiboon
    Go, erlang
    Ответ написан
    Комментировать
  • Что лучше табы или пробелы?

    Один таб, определенно. Лаконичнее, красивее и четче, чем засорять пространство пробельными символами (да и поставить 3 пробела вместо 4х гораздо легче, чем один таб вместо ни одного таба).
    Табы - для отступов, пробелы - для пробелов между словами. Семантика-с.

    А если табы воспринимаются не так, как кому-то хочется - вэлкам в настройки.

    P.S. А для соблюдения чьих-то стандартов достаточно установить правило замены таба на 4 пробела в сборщике проектов, и будет счастье.

    P.P.S. Сейчас, в 2к20, радикально изменил свое мнение - пробелы выигрывают по всем показателям. Скажу так, джуны любят табы, а сеньоры отдают должное пробелам.
    Ответ написан
    2 комментария
  • Как в Yii2 поменять /web на www?

    SamDark
    @SamDark
    Yii2 core team
    Можно просто папку переименовать.
    Ответ написан
    Комментировать
  • Как вычислить максимум из значений переменных PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    SELECT MAX(price) FROM goods

    ну или если все же хотите делать это в php то
    //php >= 5.3 < 5.5
    $maxPrice = max(array_map(function ($item) {
        return $item['price'];
    }, $goods));
    
    // php 5.5+
    $maxPrice = max(array_column($goods, 'price'));
    Ответ написан
    Комментировать
  • PhpStorm или IntelliJ IDEA+PHP Editor?

    serso
    @serso
    Скачайте пробную версию на месяц — и проверьте в чём отличие сами (потому как это всё довольно субъективно). Не понравится — никто не заставит вас её покупать =)
    Ответ написан
    Комментировать