Задать вопрос
  • У меня копируют контент, куда жаловаться?

    swanrnd
    @swanrnd
    Издатель HTML5 игр
    Как показывает практика, в 90% оно этого не стоит.

    Идем к нотариусу делать осмотр сайта.
    Потом в суд или в полицию, если невозможно установить чей сайт.

    Решения суда и РКН может блокировать сайт и можно получать компенсацию.
    Есть варианты отправить осмотр и предложить досудебно урегулировать спор.

    Был случай использовали мою фотографию на сайте в отзывах. К этому я отношусь негативно.
    Оформил претензию, сканы отправил на почту, электронную, сказал, какие дальнейшие планы. Убрали очень быстро.
    Ответ написан
    Комментировать
  • Цепочка промисов не выводит в консоль?

    rockon404
    @rockon404
    Frontend Developer
    Правильно это делается так:
    serverTalk().then(console.log).then(serverTalk).then(console.log);

    Вы же, в своем коде передаете второй раз вызов serverTalk, а не саму функцию или колбек с вызовом, поэтому она срабатывает сразу же за первым вызовом.
    Ваш вариант можно исправить так:
    serverTalk().then(function(result) {
      console.log(result);
    }).then(function() {
      return serverTalk();
    }).then(function(result) {
      console.log(result);
    });

    или, если используете ES6, так:
    serverTalk()
      .then(result => console.log(result))
      .then(() =>serverTalk())
      .then(result => console.log(result));

    Но, в данном случае, лучше использовать самый первый вариант.
    Ответ написан
    Комментировать
  • Чем заменить eval для простых выражений?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    Можно сделать так. Только на выходе будет строка.

    var res = `${x > 5 && (y == 7.5)}`;

    https://jsfiddle.net/jey5xs2r/1/

    PS: могу предложить другое решение. Мной недавно была написана утилита для парсинга строк. Ее можно научить парсить как линейные структуры так и древовидные. Она возможно будет проигрывать в скорости узкоспециализированным решениям, но зато она универсальная, фактически швейцарский нож для парсинга структур любой сложности, что позволяет создать парсер и для HTML и для математических выражений и даже для кода при желании.

    А это пример использования для вашей задачи:
    код
    const Splitter = require("split-tools");
    
    var text = "x > 5 && (y == 7.5) || sin(Math.PI*a/360) || true";
    
    const splitter = new Splitter({
        matchers: {
            function: /\s*([a-z]\w*)\(\s*(.*)\s*\)/g,
            bracket: /\(\s*(.*)\s*\)/g,
            operator: /\s*(\>|\<|\=\=|\!\=|\&\&|\|\||\+|\-|\*|\/|\%)\s*/g,
            variable: /\s*([a-z][\w\.]*)\s*/gi,
            sting: /\s*\"(.*?)\"\s*/gi,
            boolean: /\s*(true|false)\s*/gi,
            value: /\s*(\d[\d\.]*)\s*/gi
        }
    });
     
     
    const tree = {
        "brackets": ["function", "bracket", "operator", "variable", "sting", "boolean", "value"]
    };
     
    function subSplit(id, text) {
        console.log("subSplit:", id, "[", text, "]");
        if(tree[id] && tree[id].length)
            return splitter.process(text, tree[id]);
        return text;
    }
     
     
    splitter.addParser("function",(match,name,body)=>{
        return {
            type: "function",
            name: name,
            body: subSplit("brackets", body)
        };
    });
    
    splitter.addParser("bracket",(match,body)=>{
        return {
            type: "bracket",
            body: subSplit("brackets", body)
        };
    });
    
    splitter.addParser("operator",(match,body)=>{
        return {
            type: "operator",
            body: body
        };
    });
    
    splitter.addParser("variable",(match,body)=>{
        return {
            type: "variable",
            body: body
        };
    });
    
    splitter.addParser("string",(match,body)=>{
        return {
            type: "string",
            body: body
        };
    });
    
    splitter.addParser("boolean",(match,body)=>{
        return {
            type: "boolean",
            body: !!body
        };
    });
    
    splitter.addParser("value",(match,body)=>{
        return {
            type: "value",
            body: +body
        };
    });
     
     
    const list = splitter.process(text, tree.tags);
     
    console.log("\n\nresult:\n",JSON.stringify(list, null, '  '));



    На выходе из парсера будет массив пройдясь по которому можно будет вычислить значение распарсенного математического выражения:
    результат
    [
      { "type": "variable", "body": "x" },
      { "type": "operator", "body": ">" },
      { "type": "value", "body": 5 },
      { "type": "operator", "body": "&&" },
      { "type": "bracket", "body": [
          { "type": "variable", "body": "y" },
          { "type": "operator", "body": "==" },
          { "type": "value", "body": 7.5 }
        ]
      },
      { "type": "operator", "body": "||" },
      { "type": "function", "name": "sin",   "body": [
          { "type": "variable", "body": "Math.PI" },
          { "type": "operator", "body": "*" },
          { "type": "variable", "body": "a" },
          { "type": "operator", "body": "/" },
          { "type": "value", "body": 360 }
        ]
      },
      { "type": "operator", "body": "||" },
      { "type": "variable", "body": "true" }
    ]
    Ответ написан
  • Как можно стать сеньором за 3-3.5 года?

    Moskus
    @Moskus
    Senior в какой области? Software/web development, software engineering, network engineering, еще что-то?
    Начнем с того, что это не "лычки", а набор реальных умений, включающий в себя как то, чему учатся формально (стандарты, приемы) так и на реальном опыте. Вместить в трехлетнюю карьеру и то, и другое - почти нереально, если не попасть в компанию, которая стремительно растет, и в которой повышения дают "автоматически". И то, для этого нужно будет выдержать определенную конкуренцию, для чего придется впахивать круглые сутки. Поставьте себя на место более высокого руководства и попробуйте ответить честно на вопрос, почему продвинуть должны вас, а не кого-то другого. Это если говорить о честном способе действительно стать senior.

    А о нечестных способах смысла говорить нет, потому что, во-первых, в задницу таких "сеньоров", у которых это только должность, а не умения (надеюсь, вы не хотите ради денег быть в ситуации, когда ваши подчиненные вас заслуженно ненавидят). Во-вторых, это всегда индивидуально: кто-то умеет красиво врать, кто-то - виртуозно валить вину на всех, а себя выставлять героем, кто-то умеет лизать разные места начальству (как в переносном, так и в прямом смысле), у некоторых находятся влиятельные родственники, а кто-то умеет нужную дружбу заводить и через это должности получать. Но это гнусь всё редкостная.
    Ответ написан
    2 комментария
  • Можно ли при создании объекта использовать его же свойства?

    @FabiBoom
    Можно же просто запустить в консоли и проверить, что такое делать нельзя, и, если упрощенно объяснять, то:
    1) сперва у нас создается именно обьект (то что между { ... });
    2) если в свойстве указанно какое-то выражение (типо a+b, или obj.property) , то оно вычисляется и результат этого выражения становиться значениям этого свойства;
    3) допустим у нас есть что-то типо такого -
    let o = {
      x : 2,
      y : o.x,
    }

    Свойство x получает значение 2 и доходим до свойства y - видим там получения свойства x объекта o, но у нас еще нет переменной с именем o, что значит мы не просто не можем получить свойство объекта, а мы не нашли сам объект и в итоге получаем ReferenceError.
    4) Если у нас не было никаких ошибок и объект успешно создан и размещен в памяти, только тогда создается в нужной области видимости переменная, которой присваивается ссылка на наш объект и только тогда мы можем ссылаться на него за заданным именем.
    Ответ написан
    Комментировать
  • Почему удаляется элемент одного массива при удалении элемента в другом?

    Это базовые знания, объекты присваиваются по ссылке, простые типы по значению
    https://learn.javascript.ru/object-reference
    Ответ написан
    Комментировать
  • С чем связана ошибка "Cannot read property 'match' of undefined"?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Делай раз:

    let workingLine = function() {

    Делай два:

    firstLetter = workingLine[0]

    Делай три:

    firstLetter.match( /[a-z]|[а-я]/g )

    Создаёте функцию, достаёте из неё значение свойства 0, которого нет, т.е., получаете undefined, и у этого undefined пытаетесь вызвать строковый метод.

    Это гениально.
    Ответ написан
    2 комментария
  • Почему блок дергается?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Потому что когда.b-popup появляется, он закрывает собой .b-block, возникает событие mouseleave, и его надо скрывать. А как он скрылся - его надо снова показывать, потому что на .b-block возникает событие mouseenter. Ну вот так оно по кругу и происходит.

    Добавьте pointer-events: none для .b-popup. Или поместите .b-popup внутрь .b-block.
    Ответ написан
    1 комментарий
  • Как найти положение точки на графике?

    @timokins
    все тоже самое, только вычитай минимальное значение,

    0px = 150
    300px = 50

    отрезок в 1px = x = 300px/(150-50)

    точка 75 равна:
    300px - ((75 - 50) * х) = 225px

    точка 50 равна:
    300px - ((50 - 50) * х) = 300px

    точка 150 равна:
    300px - ((150 - 50) * х) = 0px
    Ответ написан
    1 комментарий
  • Задача про foobar на JS. Как найти правильный алгоритм?

    zendor
    @zendor
    Решение
    const arr = [...Array(100)].map((_, i) => i + 1);
    const res = arr.map(n => `${n % 3 ? '' : 'Foo'}${n % 5 ? '' : 'Bar'}` || n);

    Ответ написан
    3 комментария
  • Почему ноутбук с закрытой крышкой думает дольше?

    @rPman
    Браузеры давно ловят события минимизации окна, неактивной вкладки и закрытие крышки (выключение экрана)... в этом режиме вся работа сайта СИЛЬНО замедляется принудительно или даже останавливается.
    Ответ написан
    3 комментария
  • Как зарабатывать 1000$ на фрилансе верстальщику?

    HamSter007
    @HamSter007
    HTML/CSS верстальщик
    3 года верстаете на фрилансе и до сих пор не поняли, что верстка бесперспективное направление?! 3 года уже точно как!

    Для развития и большего заработка нужно учить js --> js фреймворки (angular, react, vue, ... ).
    + Чтобы что-то заработать нужно знать английский и выходить на иностранные биржи (на upwork посадка на wp весьма актуальный заказ).
    + Научиться работать по часам, сейчас и отечественные уже переходят на такой формат работы.
    + Если 30 отзывов уже есть, то и сами понимаете что умение предложить свои услуги на приличный проект тоже немаловажный аспект.

    Посмотрите на требования в вакансиях, посмотрите какие заказы более оплачиваемы на фрилансе и поймете что еще нужно подтянуть.
    Ответ написан
    2 комментария
  • Как снять выделение с radiobutton повторным кликом по нему?

    Zoominger
    @Zoominger
    System Integrator
    Radiobutton на то и radiobutton, что не checkbox. Не лучше ли использовать как раз checkbox?
    Ответ написан
    2 комментария
  • Как передать состояние переключателей на сервер, для передачи результата по почте.?

    @ledokol88 Автор вопроса
    Я не специалист по jQuery, Но данные input text, textarea, data прекрасно передаются! Я не могу отследить какой параметр нужно применить для radio и checkbox, Чтобы Отладить надо быть специалистом, но я увы таковым не являюсь. Но при использовании $.ajax все работает.
    $.ajax({
    					type: 'POST',
    				     url: 'zakaz.php,
    					data: $("#zakaz").serialize(),
    					success: function(data) {
    $('#zakaz').find('input[type=text],input[type=tel],input[type=email], textarea').val('');
    $('#zakaz').find("input[type=checkbox], input[type=radio]").prop("checked", "");
    										}
    				});
    Ответ написан
    Комментировать
  • Что такое макросы в С++?

    myjcom
    @myjcom Куратор тега C++
    потому что x это 3 + 0; (целиком) это тупо текст, который будет вставлен вместо x;
    x * x == 3 + 0 * 3 + 0;

    получаем

    3 + (0 * 3) + 0;
    3 + 0 + 0;
    3;

    макросы в С++

    Атавизм
    иногда полезный
    https://en.cppreference.com/w/cpp/preprocessor/replace

    а так тут есть как минимум
    https://en.cppreference.com/w/cpp/language/constexpr
    https://en.cppreference.com/w/cpp/language/templates

    code
    #include <iostream>
    
    template<typename T>
    auto sqr = [](T x)
    {
      return x * x;
    };
    
    int main()
    {
      std::cout << sqr<int>(3 + 0);
    }


    что будет развернуто в что-то типа
    //...
    class __lambda_3_12
    {
      public: inline int operator()(int x) const
      {
        return x * x;
      }
    //...
    };
    //...

    Ответ написан
    Комментировать
  • Как сделать рассылку сообщения по группа в Whatsapp?

    sim3x
    @sim3x
    Нет
    Спам никто не любит
    Ответ написан
    Комментировать
  • Как сделать такую же ссылку?

    hzzzzl
    @hzzzzl
    https://greensock.com/timelinemax
    смотри в сорсах onload.min.js

    5c961f60ad519513485151.png
    Ответ написан
    Комментировать