• Почему b == number?

    potapchino
    @potapchino
    потому что на самом деле ваш код выглядит вот так:
    var b;
    
    if(true) {
      let a = b = 200;
    }
    
    console.log( typeof a ); // undefined
    console.log( typeof b ); // number


    чтобы было как вы ожидаете, нужно сделать вот так:
    if(true) {
      let b;
      let a = b = 200;
    }
    
    console.log( typeof a ); // undefined
    console.log( typeof b ); // undefined
    Ответ написан
    Комментировать
  • Как парсить HTTP Запросы/Ответы на уровне байтов?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Низкоуровневый код и должен быть большим.
    Ответ написан
    5 комментариев
  • Как обработать исключения в xUnit.net?

    ch1sel
    @ch1sel
    probability is extremely small
    [Fact]
            public void Test2()
            {
                Assert.Throws<ShapeException>(() =>
                    {
                        var rect = new Rectangle
                        {
                            Height = -5,
                            Width = 3
                        };
                        rect.Area = rect.Height * rect.Width;
                    }
                );
            }
    Ответ написан
    2 комментария
  • Как сейчас лучше делать - один файл css и js или много мелких файлов?

    dom1n1k
    @dom1n1k
    Искать баланс. Обе крайности не очень хороши.
    Всё россыпью - слишком много запросов (про http/2 слышали, но в реальной жизни небольших/средних проектов че-то пока не встречали).
    Объединять всё - риск получить огромный бандл, который тащит кучу лишнего и потому замедляет первичную загрузку.
    Обычно имеет смысл CSS разбивать на небольшое количество бандлов по областям применения. Условный пример: глобальные стили, стили для главной и для внутренних - чтобы на главной не тянуть лишнее, но закэшировать нужное в дальнейшем. Со скриптами что-то похожее. В спрайт совать только иконки.
    Ещё распространенная практика - если у вас есть критичные стили и/или скрипты, которые должны быть загружены максимально быстро, то их инклюдят прямо в тело страницы (не более нескольких КБ).
    Ответ написан
    Комментировать
  • Что за единица?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Сокращенный тег <?= не просто выполняет код внутри него, но и выводит результат.
    То же, что <?php echo

    Минимальная редакция – убрать знак равенства, заменить <?= require_once... на <? require_once... Но такой короткий тег <? не всегда поддерживается и не рекомендуется.

    Лучше всё в один PHP-тег:
    <?php
    
    require_once APP . '/views/App/inc/header.php';
    echo $content;
    require_once APP . '/views/App/inc/footer.php';
    
    ?>
    Ответ написан
    4 комментария
  • Что позволяет записывать в функции статические методы?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Воспользуюсь спорным штампом и отвечу: так происходит, потому что "в JS всё - объект". Соответственно, как объектам, мы можем назначать свойства.
    С примитивами всё несколько сложнее. Мы вроде бы тоже можем назначить им свойство, но это иллюзия. Когда мы делаем подобное с примитивами, например строкой, то вызывается её конструктор String(), а когда операция "под капотом" завершается, то мы снова получаем примитив, таким образом, ошибки назначения свойства не возникает, но и свойство недоступно.

    Это если сжато.
    Подробно объяснять не быстро. Скорее всего Вам тут посоветуют почитать документацию, спецификацию. Я предложу почитать серию книг You Dont Know JS. Можно нагуглить перевод многих глав из этой серии книг.
    Ответ написан
    Комментировать
  • Почему JQuery формирует такой запрос?

    hzzzzl
    @hzzzzl
    OPTIONS всегда делается перед запросом к серверу, это вопрос "эй сервер, ты примешь post-запрос от меня или нет?"

    https://developer.mozilla.org/ru/docs/Web/HTTP/Met...
    https://developer.mozilla.org/en-US/docs/Glossary/...

    Если запрос может оказать влияние на пользовательские данные, то простого запроса недостаточно. Вместо этого, предполентый CORS запрос отправляется в перед отправкой необходимого запроса, чтобы гарантировать безопасность отправки запроса. Предполетные запросы необходимы в тех случаях, когда любой HTTP метод, отличный от GET, POST, HEAD или если тип содержимого POST запроса отличен от application/x-www-form-urlencoded, multipart/form-data или text/plain. Также, если запрос содержит любые собственные заголовки, то необходим предполетный запрос.

    https://spring-projects.ru/understanding/cors/
    Ответ написан
    6 комментариев
  • Как стать Junior верстальщиком?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Я все починил, теперь ваша карьера и ориентация в порядке!
    Не благодарите.
    5de34eb3a4d87370303583.png
    Ответ написан
    10 комментариев
  • Когда стоит разделять приложения?

    sarapinit
    @sarapinit
    Точу водой камень
    1 кейс.
    У вас есть запросы на которые нужно отвечать быстро (текущее состояние) и какой-то сервис с отчетами. Когда пользователи запрашивают большой отчет скорость ответа текущего состояния начинает проседать. Тогда вы делаете отдельный сервис для отчетов, выносите его в отдельное приложение и на отдельную виртуалку. Таким образом вы изолируете потребляемые ресурсы и устраняете влияние сервисов друг на друга. Плюс получаете возможность отдельно масштабировать сервис отчетов во времена наибольшей нагрузки.

    2 кейс.
    У вас есть сервис авторизации для которого нужно учесть множество разных требований и стандартов по безопасности. Вы привлекаете отдельную команду для его разработки с определенными навыками. В этом случае вы изолируете ресурс "навыки разработки безопасных сервисов" чтобы команда не тратила свое время на другие фичи.

    3 кейс.
    Вы делаете несколько сложных сервисов и решаете распаралелить разработку на несколько команд. Одна команда делает "Кинопоиск", другая "Афишу". Все они обращаются к серверу авторизации из кейса 2 и бекендам из кейса 1.

    Итог.
    Разделение на несколько приложений - это либо логическое разделение, когда приложения делают разные и несвязанные вещи. В этом случае удобно думать о разных задачах как о разных приложениях. Отдельно их разрабатывать, деплоить и т.д.
    Либо это управление вычислительными мощностями. Когда разные части системы требуют разделения ресурсов, нелинейного масштабирования или имеют совсем разный режим работы (например АПИ для загрузки фоток и асинхронный воркер который делает превьюшки для этих фоток)
    Либо это управление на уровне человеческих ресурсов, когда приходится вводить в разработку несколько команд.
    Ответ написан
  • Стоит ли создавать учебный и самый минимальный PHP-код для создания простого блога?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Кто ж вам запретит.
    Проектов чего-то с минимальным функционалом для обучения навалом.
    Для целей обучения главное не проект, главное что вокруг него построено - курс, документация, туториал, лично вы как куратор обучаете и т.п. Без этого всего это будет еще один кусок лежащего в интернете кода.

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

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

    glaphire
    @glaphire
    PHP developer
    Если данные запушены в репу - они уже скомпрометированы, нужно поменять реальные логин, пароль и токен.

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

    Moskus
    @Moskus
    Это нельзя назвать ни одним из предложенных способов.
    Потому что:
    - не только сам пользователь отмечает ответы решениями,
    - сами вопросы пользователя могут быть таковы, что никакой ответ не является решением,
    - пользователь может, наоборот, отмечать решениями всё подряд.
    Так что это просто "доля (процент) отмеченных решений", чтобы не вводить ложную интерпретацию статистики.
    Ответ написан
    9 комментариев
  • Будет ли Golang замещать PHP?

    @zhainar
    Гуглю за вас
    Если вопрос нужно ли учить го, то да, это полезный скилл. Если вопрос будут ли проекты переписываться на го, то отчасти. Если вопрос умрет ли рнр, то нет.
    Ответ написан
    Комментировать
  • Надо ли применять вежливость на проектах Хабра?

    Moskus
    @Moskus
    На Тостере - точно не нужно, это часть правил.
    Интересно, где вы на Хабре это писать собрались, в комментариях?

    Такое правило существует не потому что тут кто-то "против вежливости". Есть несколько причин, почему такие формы вежливости здесь теряют смысл.
    - Они всё равно теряются на фоне основного смысла вопроса, когда читаешь несколько десятков вопросов.
    - Их чтение точно также отнимает время, как чтение бессмысленных вводных фраз вроде "у меня возник вопрос" или заключений вроде "помогите, кто сможет" - умножьте это на десяток-другой, и получите украденное у отвечающих время.
    - Не секрет, что многие авторы вопросов с огромным трудом могут выдать внятное описание проблемы и что они действительно хотят. Если они ещё и над приветствиями думать должны будут, то растратят последние остатки сил.
    - Вежливость, не формальная, а настоящая - не в том, чтобы повторить слова, которые все знают, а в том, чтобы понятно и конкретно описать то, что автор вопроса хочет узнать. Чтобы отвечающим не надо было гадать, переспрашивать, тянуть детали клещами. Также - в том, чтобы на уточняющие вопросы отвечать то, что спрашивают, или "я не знаю", а не копипастить вопрос. И в том, чтобы быть готовым воспринимать ответ, как оно есть в реальности, даже если факт, на который вам указывают, вам неприятен. И не вести себя, как идиот, который ничего не знает, пришёл с проблемой, а получив бескорыстную помощь - фыркает, что будто ему все должны сделать всё за него.

    Вот это всё - вежливость, настоящая. А написать "добрый день" может любой дурак.
    Ответ написан
    2 комментария
  • Зачем frontend девелоперу такой большой опыт?

    @bozuriciyu
    Зашел значит на hh.ru вбил


    И я на секундочку задумался о смене направления, не из за того что мне интересно, а просто зп очень большие в моем возрасте


    React Redux javascript все эти Вебпаки и тд это нереально простые вещи не требующие так много опыта


    Если человеку понадобилось столько лет для освоения всего этого он очень глуп и бездарен, развивается медленно.


    Я просто посмотрел доки и понимаю насколько это просто. За неделю можно написать 1-2 проекта максимально использующие все что было изучено, чтобы закрепить знания. Потом почитать на стеке и в других местах основные проблемы которые возникают у других разработчиков, популярные практики и многое другое. И все!


    Так в чем проблема? Вперед, иди разрывай их всех. Или, дай угадаю, ты первым делом сюда прибежал, еще НИЧЕГО не попробовав?

    5d7584d95e90a804618712.png

    Ну не странная ли ситуация? Вместо того чтобы ГЕНИЮ, который за неделю может освоить реакт, всю экосистему, вебпак и тд на уровне исходников и рубить БАБЛО, он бежит на Тостер высмеивать макак-фронтендеров? Это много говорит о нашем герое. Жаль я не смогу проследить ваш процесс "вкатывания"))

    Я не понимаю почему этот вопрос вообще жив. Это не вопрос, это набрасывание говна на вентилятор.
    Ответ написан
    Комментировать
  • Зачем frontend девелоперу такой большой опыт?

    Maksclub
    @Maksclub Куратор тега Карьера в IT
    maksfedorov.ru
    Ну как бы человек просто глупеет с возрастом. Мозг хуже работает информация хуже усваивается.

    При всем уважении, я освоил программирование в 27 лет :) Мне сейчас 29, не чувствую отсталости ума :):) Вы можете сказать, что меня уделаете, но я могу утверждать, что вы меня и 19 летнего бы уделали с большей скоростью :)

    Его дело книжки писать бесполезные.
    Наверно ушатаю. Его школьник олимпиданик ушатает 200% на им же созданном языке )

    Вы же довольно умный, зачем вы соревнуетесь с остальными, а не с собой, улучшайте себя!
    Устройтесь в Гугл, напишите новую опен-сорс библиотеку, заработайте через год больше, чем сейчас, кого вы обогнать хотите? Есть куча людей, которые зарабатывают БОЛЕЕ несправедливые деньги БОЛЕЕ несправедливым способом и которые при этом БОЛЕЕ глупее, почему вы выбрали относительно честных и работающих людей в цели для уничижения?!

    Зачем frontend девелоперу такой большой опыт?

    я бы не отказался поработать пол годика с такой зп


    Кроме того, все олимпиадники или в ВК, или в Jetbrains или в Google, точно не без работы, и их всего лишь десятки. А в между прочим вакансий за 2 недели по одной только Java около 3000 штук только на одну Москву. И то в рынке HR воют, что нет инженеров.

    UPD:
    Проглядывается не просто максимализм, а некий снобизм, некая ненависть к тем,
    кто ПО ВАШЕМУ взгляду бездарь. Зря вы так.
    Ответ написан
    21 комментарий
  • Как вы оцениваете предложения от неизвестных компаний?

    DevMan
    @DevMan
    а зачем? что изменится от знания того, что это стартап или бюрократия?
    в компании любого типа может быть радость и веселье, а может быть бюрократия и уныние.
    в крупных компаниях от бюрократии не избавится, всё зависит лишь от её размера и гибкости/пробиваемости.

    у меня алгоритм простой: если офер интересен, я устраиваюсь и беру месяц для ознакомления (хотя достаточно и пары недель), если что-то пошло не так через месяц прощаюсь.
    Ответ написан
    Комментировать
  • Как присвоить объект по значению, а не по ссылке?

    It depends
    Если все свойства твоего объекта - простые, то const newObj = { ...sourceObj };
    Если свойства объекта могут быть объектами и тебе нужно их тоже скопировать, то нужно копировать рекурсивно
    можешь подсмотреть тут
    https://github.com/mateusmaso/underscore.deepclone...
    Ответ написан
    Комментировать
  • Что приходит в браузер?

    deepblack
    @deepblack
    Вот пример того, что возвращает веб сервер:
    HTTP/1.1 200 OK
    Date: Sun, 18 Oct 2009 08:56:53 GMT
    Server: Apache/2.2.14 (Win32)
    Last-Modified: Sat, 20 Nov 2004 07:16:26 GMT
    ETag: "10000000565a5-2c-3e94b66c2e680"
    Accept-Ranges: bytes
    Content-Length: 44
    Connection: close
    Content-Type: text/html
    X-Pad: avoid browser bug
      
    <html><body><h1>It works!</h1></body></html>


    Прямо так, в текстовом виде.
    Можете проверить воспользовавшись telnet (только без использования https), в зависимости от сервера будут отличаться заголовки.

    Вот тут немного подробнее.

    + ознакомьтесь с RFC 2616
    и в догонку Resources and specifications
    Ответ написан
    3 комментария
  • Почему в конструкторе не могу написать так?

    e-vyushin
    @e-vyushin
    Frontend engineer
    Думаю основная причина почему кажется что это должно работать — это непонимание разницы между функцией в JS и методом объекта. Это не одно и то же, несмотря на то что оба варианта можно вызвать подписав скобочки () в конце :) Да, вызывать можно и функцию и метод объекта, а вот создавать экземпляры методов нельзя.

    В указанном Вами примере внутри функции Man вызывается new this.Man. Это означает, что создаётся экземпляр Man, а значит сам Man должен иметь конструктор (грубо говоря быть классом).

    Функции в JS имеют конструктор, а методы объектов не имеют. Функции и методы объектов это не одно и то же. Рассмотрим такой пример:

    const obj = {
       Man() {}
    }

    в данном случае Man() это просто метод объекта. У него нет своего конструктора. Т. е. нельзя создать его экземпляры через new. Но можно его вызвать:

    const obj = {
       Man() {}
    }
    obj.Man();

    это корректный вариант.

    Но создавать экземпляры нельзя. Например:

    const obj = {
       Man() {}
    }
    new obj.Man(); // Будет ошибка. TypeError: obj.Man is not a constructor

    А вот экземпляры функции можно создавать. Например:

    const obj = {
       Man: function() {}
    }
    new obj.Man(); // Всё ок

    для того чтобы создать экземпляр функции не обязательно конечно чтобы она была внутри объекта. Можно и так:

    const Man = function() {}
    new Man(); // Всё ок

    При желании можно поискать инфу на тему почему можно создавать экземпляры функции. Говоря вкратце, раньше в JS не было классов, по-этому наследование было реализовано через прототип функции. Это немного нелепо конечно, но в JS можно создавать экземпляры функции как если бы функция была классом. Сегодня в JS уже есть классы, так что лучше использовать их.

    Вывод: методы объекта и функции это не одно и то же.
    Ответ написан
    1 комментарий