• Почему при if (6 || 5 && (x = 1)) переменная x не равна единице?

    @imhuman
    6 привелось к true, оставшаяся часть выражения просто проигнорировалась, как невлияющая на результат
    Ответ написан
    5 комментариев
  • Как записать пути всех файлов и папок в txt файл, и загрузить в TreeView?

    @MIsternik
    Пробовал написать сам ? Покажи что не получилось.
    Ответ написан
    Комментировать
  • Как получить название переменной в массиве?

    rockon404
    @rockon404
    Frontend Developer
    Никак. В массиве их нет. Там внутри значения x и y на момент присваивания:
    {
      0: 10,
      1: 3,
      length: 2,
      __proto__: Array(0)
    }


    Вам для вашей задачи лучше складывать данные в объект:
    var x = 10;
    var y = 3;
    var obj = { x: x, y: y };
    
    var keys = Object.keys(obj);
    
    console.log(keys);
    // => [ 'x', 'y']
    Ответ написан
    Комментировать
  • Как написать этот код лучше?

    Комментировать
  • Почему в большинстве университетов C# стал заменять Java?

    arxont
    @arxont
    C# программист
    Чем лобби Microsoft хуже, чем лобби Oracle? А по факту сейчас C# более развитый язык с гораздо большим количеством синтаксического сахара и проще "во вхождении".
    Ответ написан
    23 комментария
  • В сторону какого ЯП для web смотреть с дальнейшей перспективой?

    Привет

    1) В странах СНГ и Европы самый популярный веб-язык: PHP. На Ruby и Python - работы значительно меньше, и она в столицах. Живешь не там - даже можно не учить.
    2) С Python в другие области, ты особо не уйдешь, ибо там либо биг-дата, либо девопс, либо тесты (но там еще и Java нужна), так что все области специализированные - https://habrahabr.ru/post/340894/
    3) Ruby - в США Ruby любят, у нас же его использовали во время хайпа 2008-2012 годов всякие туристические стартапы, сейчас же его особо не юзают (Вакансии чаще всего в компании, как раз из этих 2008-2012 годов).
    4) Я свои проекты пишу на Python (так как быстро и клево), а деньги получаю за Java (так как платят много и работы много).

    Ну а вообще, если у тебя более менее адекватный it-универ и it-специальность, то шел бы в .net/java, потом через стажировку устраивался в большую компанию и не парился особо. Если просто хочется в IT, то брал бы PHP - с работой будет попроще.
    Ответ написан
    Комментировать
  • Дизайн REST API: Как сейчас принято передавать авторизационный токен?

    @micronull
    Заголовок Authorisation является стандартом. В рамках него уже указывается схема аутентификации.

    Basic — наиболее простая схема, при которой username и password пользователя передаются в заголовке Authorization в незашифрованном виде (base64-encoded). Однако при использовании HTTPS (HTTP over SSL) протокола, является относительно безопасной.
    c27ac06373984352a1ebe2f6424cd9e9.png Пример HTTP аутентификации с использованием Basic схемы.

    Digest — challenge-response-схема, при которой сервер посылает уникальное значение nonce, а браузер передает MD5 хэш пароля пользователя, вычисленный с использованием указанного nonce. Более безопасная альтернативв Basic схемы при незащищенных соединениях, но подвержена man-in-the-middle attacks (с заменой схемы на basic). Кроме того, использование этой схемы не позволяет применить современные хэш-функции для хранения паролей пользователей на сервере.

    NTLM (известная как Windows authentication) — также основана на challenge-response подходе, при котором пароль не передается в чистом виде. Эта схема не является стандартом HTTP, но поддерживается большинством браузеров и веб-серверов. Преимущественно используется для аутентификации пользователей Windows Active Directory в веб-приложениях. Уязвима к pass-the-hash-атакам.

    Negotiate — еще одна схема из семейства Windows authentication, которая позволяет клиенту выбрать между NTLM и Kerberos аутентификацией. Kerberos — более безопасный протокол, основанный на принципе Single Sign-On. Однако он может функционировать, только если и клиент, и сервер находятся в зоне intranet и являются частью домена Windows.
    https://habrahabr.ru/company/dataart/blog/262817/

    Свой заголовок имеет смысл создавать, если ни один из способов не подходит.
    Но как правило Basic более чем достаточно. Мы у себя вместо логина передаем ключ авторизации и пустой пароль. Согласен что коряво.
    Ответ написан
    3 комментария
  • Как узнать свой уровень в кодинге?

    @evgeniy_lm
    >> Как узнать свой уровень в кодинге?
    Очень просто - заглянуть в свой кошелек
    Ответ написан
    Комментировать
  • Приведенный мною код - одно и то же? Или один работет быстрее / эффективнее, а другой - нет?

    rockon404
    @rockon404
    Frontend Developer
    Да нет особой разницы. Накидал бенчмарк для трех вариантов делегирования:

    p0:
    $('.wrapper').on('click', '.btn', function() { 
      //handler 
    });


    p1:
    $('.wrapper').on('click', function(e) {
      if ($(e.target).hasClass('btn')) {
        //handler 
      }
    });


    p2:
    document.querySelector('.wrapper').addEventListener('click', function(e) {
      if(e.target && e.target.classList.contains('btn')) {
         //handler 
      }
    });


    Результат для каждого это доли от одной тысячной секунды.

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

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

    Так же если у кнопки есть дочерние элементы, то тут лучше использовать вариант p0 , так как он определяет целевой элемент как e.curentTarget, дочерний элемент клика как e.target и делегата на котором будет слушать событие как e.delegateTarget и сработает точно про клику по целевому элементу или его детям. В случаях p1 и p2 клик по дочернему элементу пройдет мимо условий, так как e.target будет дочерним элементом, а не целевым.

    Вот, что точно делать не надо, так это вешать без надобности слушатели на document. Делегировать события надо, по возможности, как можно ближе к целевому элементу. Если вы добавляете кнопки динамически в определенный контейнер, то вешайте обработчик события на него, так слушатель будет срабатывать только по клику внутри контейнера. В вашем же случае он будет срабатывать при каждом клике на любом элементе страницы, создавая тем самым дополнительную нагрузку на браузер.
    Ответ написан
    4 комментария
  • По какой формуле можно получить круговую последовательность чисел?

    longclaps
    @longclaps
    Это - деление по модулю, но есть нюанс:
    В разных языках оно реализовано по-разному, т.е. это не вполне "математическая функция".
    Вот питон
    MOD = 3
    
    def f(x):
        return (x - 1) % MOD
    
    for x in range(MOD):
        print(f'f({x}) = {f(x)}')

    А в javascript'е уже надо ловчить
    const MOD = 3;
    const f = x => (x + MOD - 1) % MOD;
    for (let x = 0; x < MOD; x++)
        console.log(`f(${x}) = ${f(x)}`);

    Причем в питоне javascript'овый вариант работать будет )
    Ответ написан
    Комментировать
  • Стоит ли изучать программирование веб-дизайнеру?

    Serhioromano
    @Serhioromano
    Web Developer
    Я закончил художественну школу и всю жизнь был связан с дизайном. Работал в бригаде отделочников советского времени, когда дизайн придумывали мы сами. Работал художником оформителем в разных организациях. Потом начал работать с компьютером. Стал дизайнеров в одной студии (полиграфия). Открытки, этикетки так сказать. Но если честно я ни когда не чувствовал себя как дома. Мне нравилось, но так как я никогда не делал ни чего другого, я думал что так и должно быть.

    Мой основной мотив, заниматся этим, была возможность самореализации. Это то чего мне всегда было нужно. Даже на гитаре научился играть между делом и закончил муз училище уже будучи взрослым.

    Но в какой то момент, я решил попробовать программировать. Я начал изучать PHP. Ну с ним естественно MySQL, HTML, CSS, JS.

    О как я был слеп. Войдя в мир программированя, я понял, почему будучи художником, и еще стал учится музыке. Мне не хватало. Я чувствовал голод. Но погрузившить в программирование, я "нашел мир своей душе" (только Бог может дать истинный мир). Я насытился. Я получил все что надо.

    Я всегда думал что я гуманитарий и точные науки, я не потяну. Даже в институт из за этого не пошел. Но оказалось, что я просто был обманут тем фактом что в 10 лет был отдан в Художественную школу что и сформировало следующие 22 года моей жизни.

    Писать код, это как писать картину, только вместо того что бы на нее смотреть, она может делать, то что тебе надо. Это как рисовать в 3х измерениях. Возможностей для само реализации столько, что просто не видно конца. Как человек творческий, меня более чем удовлетворила эта сфера деятельности. Я до сих пор смотрю на код как на мои работы, мой арт. Архитектура алгоритма это как композиция. Надо все раставить красиво и гармонично. Чистота кода, это как техника штриха. И конечно же для хорошей картины важны мелкие детали, хорошо прорисованые и продуманые.

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

    Короче

    Коротко ответ на вопрос. Может и у вас скрытый талант и любовь к этому. Может попробовав вы уже не сможете от этого отказаться. А может и нет.

    Ни знаю стоит ли изучать програмирование дизайрену, но уверен что попробовать уж точно стоит.
    Ответ написан
    Комментировать
  • Нужна среда разработки на С# под Linux?

    arxont
    @arxont
    C# программист
    Комментировать
  • C# XML Как удалить элемент по его значению?

    arxont
    @arxont
    C# программист
    XDocument xdoc = XDocument.Load("test.xml");
    
    xdoc.Element("head")
        .Element("Prepods")
        .Elements("Prepod")
        .Where(x => (string)x.Value == "Блятов А.В.")
        .Remove();
    
    xdoc.Save("test.xml");
    Ответ написан
    Комментировать
  • Как с помощью LINQ посчитать количество подходящих объектов?

    arxont
    @arxont
    C# программист
    var persons = new[]
    {
        new { Name = "Юрий Васильевич Кондратюк",    BirthDate = new DateTime(1897, 06,  9) },
        new { Name = "Михаил Фёдорович Решетнёв",    BirthDate = new DateTime(1924, 11, 10) },
        new { Name = "Михаил Тимофеевич Калашников", BirthDate = new DateTime(1919, 11, 10) },
        new { Name = "Сергей Павлович Королёв",      BirthDate = new DateTime(1907,  1, 12) },
        new { Name = "Михаил Васильевич Ломоносов",  BirthDate = new DateTime(1711, 11,  8) }
    };
    
    int[] arr = persons.Where(n => n.Name.Contains("Михаил"))
                       .GroupBy(day => day.BirthDate.Day)
                       .Select(count => count.Count())
                       .ToArray();        
    
    Array.ForEach(arr, Console.WriteLine);
    Ответ написан
    Комментировать
  • А можно pattern указать два условия?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега HTML
    pattern="(^регулярное_выражение_для_сотового$|^регулярное_выражение_для_обычного$)"
    Ответ написан
    1 комментарий
  • Часто ли вам приходится использовать Iframe?

    @AnneSmith
    самая ленивая
    использование - это не вопрос этики или моды, а вопрос типа задач, которые вам надо решить
    Ответ написан
    Комментировать
  • Как работает рекурсия при итерации?

    NightmareZz
    @NightmareZz
    Нищий разработчик из Симферополя
    IEnumerable<T> traverse(Node current) {
        if (current != null)
        {
            foreach (var value in traverse(current.left))
                yield return value;
    
            yield return current.value;
    
            foreach (var value in traverse(current.right))
                yield return value;
        }
    }
    Ответ написан
    Комментировать
  • Возможно ли оптимизировать структуру таблицы Mysql через сортировку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для быстрого поиска в реляционной БД предназначены индексы. Саму таблицу сортировать смысла нет, не будете же вы полностью переписывать её при добавлении новых значений. Сделайте составной уникальный индекс (obj1, obj2) и при поиске по obj1 он будет использован для ускорения.
    Ответ написан
    Комментировать