• Сколько стоит работа разработчика?

    DevMan
    @DevMan
    от нуля и до самолёта, и выше.
    средней цены вообще не существует. вернее она существует, но ни на что не влияет.
    весь вопрос: за сколько можно это впарить клиенту. и от средней цены он не зависит, от слова совсем.

    работа стоит ровно столько, сколько за нее готов платить потребитель.
    Ответ написан
    7 комментариев
  • Как не писать повторяющийся код в HTML, а автоматизировать создание кода на JS?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Для этого во всех языках программирования придумали цикл. Он же loop. Он же залу..фор, вайл, форич и т.п.
    Ответ написан
    1 комментарий
  • Какой стек выбрать если React дается сложнее чем Vue?

    @Lord_Dantes
    Понимаете тут речь не в том что вам предложить, а то как вас располагает жизнь.

    Если вы миллионер и занимаетесь программированием потому-что нравится, то пишите на Vue и радуйтесь.
    Если вам нужны деньги, и вы сами как бы видите что все вакансии на реакте, тогда нужно изучать его и зарабатывать.
    Если у вас и так неплохая зарплата но вы увидели что на реакте больше и хотите зарабатывать больше, то могу посоветовать вам улучшить свои навыки во Vue если он уж вам так нравится и стать лучшим человеком который делает любимое дело и зарабатывает при этом..
    Ответ написан
    Комментировать
  • Как создать публичный web сервер на своем linux пк?

    @Karpion
    1) Надо выяснить, имеется ли связность между Вашим другом и Вами.
    Дело в том, что провайдеры обычно предлагают подключение через NAT, когда юзеру дают IP-адрес из пула "10.*.*.*", а запросы юзера наружу - на выходе подвергаются NAT-маскарадингу. А общение пользователей между собой обычно блокируется.
    Многие юзеры ставят у себя роутер, которые доже делает NAT - это создаёт ещё один барьер для доступа к компьютера (и заодно защищает компьютер от ряда хакерских атак).

    Допустим, Ваш друг подключён к другому провайдеру (или к другому NAT-пулу этого же провайдера) - тогда он рассматривается как внешний клиент. В этом случае Вам надо получить у провайдера внешний неизменный IP-адрес. Сотрудники провайдера должны объяснить Вам, что делать; но с высокой вероятностью они откажутся это делать. А если согласятся - это стоит денег, сопоставимых с арендой вирт.сервера.

    Если у Вас есть роутер - то на нём надо настроить проброс портов. Смотрите настройки роутера - там должно быть.
    Учтите, что на порту:80 обычно висит Web-интерфейс роутера.

    2) Если Вы хотите обращаться по доменному имени - то надо получить доменное имя. Ну или если обращаться будет только один человек - то он может прописать это имя себе в файл hosts.

    3) Сейчас модно использовать HTTPS, а ему нужны сертификаты. Сертификат можно купить за деньги. Или можно сделать свой собственный сертификат - и друг внедрит его в свой браузер.
    Если же обойтись HTTP - то провайдер может всовывать в Ваш сайт свою рекламу, многие так давно уже делают.
    Ответ написан
    1 комментарий
  • Почему данный код работает неправильно?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Давайте переменным и свойствам осмысленные названия.
    Что за qq, raysa, j?

    Сейчас этот неаккуратный код не работает, видимо, потому, что свойство qq у всех лучей рано или поздно становится 1 и у них перстают обновляться координаты.

    Вместо 0 и 1 давайте логической переменной значения false и true. Назовите её как-то понятно, типа isStopped

    Например, так, точно тот же код, но немного чище и может понятнее:
    spoiler
    const ctx = document.getElementById("canvas").getContext("2d");
    
    const gun = {
      x: 10,
      y: 10,
    }
    const rays = [];
    const blocks = [];
    
    for (let i = 0; i < 20; i++) {
      rays.push({x: 0, y: 0,
        angle: i,
        radius: 0,
        isStopped: false,
        raysa: 0
      });
    }
    
    blocks.push({x: 20, y: 20});
    
    function draw() {
      rays.forEach(ray => {
        const radians = ray.angle / 180 * Math.PI;
        if (!ray.isStopped) {
          ray.x = Math.cos(radians) * ray.raysa + gun.x;
          ray.y = Math.sin(radians) * ray.raysa + gun.y;
          ray.radius = ray.raysa;
          if (ray.x >= 100) ray.isStopped = true;
          
          ray.raysa += 1;
          if (ray.isStopped) {
            ray.x = Math.cos(radians) * ray.radius + gun.x;
            ray.y = Math.sin(radians) * ray.radius + gun.y;
          }
        }
        ray.angle += 2;
    
        if (i % 10 == 0) console.log(ray.angle);
    
        ctx.clearRect(0, 0, 320, 320);
        ctx.beginPath();
        ctx.moveTo(gun.x, gun.y);
        ctx.lineTo(ray.x, ray.y);
        ctx.stroke();
      });
    }
    
    //setInterval(draw,20);
    Ответ написан
    4 комментария
  • Имеет ли cмысл после Си учить C#?/Сколько времени уйдёт изучение на язык Си?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Си - это простой (но не лёгкий) низкоуровневый язык, который даёт хорошую базу для изучения всего остального. Совет изучать его первым спорный, но лично я с ним согласен.
    Ответ написан
    4 комментария
  • Можно ли отслеживать нажатия клавиш?

    @2bllk
    Пример кода, который выведет в консоли "Congratulations!" после последовательного нажатия клавиш "t", "e", "s", "t"
    document.addEventListener('keydown', function(e){
    	KEY = ["t", "e", "s", "t"];
    	this.INPUT = this.INPUT || [];
    	this.INPUT.push(e.key);
    
    	if (this.INPUT.some((e, i) => KEY[i] != e))
    		this.INPUT = [this.INPUT.pop()];
    	else if (this.INPUT.length == KEY.length){
    		console.log("Congratulations!");
    		this.INPUT = [];
    	}
    })
    Ответ написан
    1 комментарий
  • Что обозначает type: function(string):string[]?

    @kareon
    На выходе будет массив строк. Например, такая функция: func = (str) => str.split('');
    Ответ написан
    Комментировать
  • Какова ситуация с фриланс биржами?

    @RuComMarket
    Битрикс FullStack разработчик
    фриланс затух в плане заработка, сейчас это платформа для набития руки новичкам.
    заказчики на фрилансе либо те, кто жалеет каждую копейку, либо веб студии (в качестве посредников).
    В связи с плохим качеством работ у фрилансеров и веб-студий, нормальные компании посоздавали штатные отделы разработок, так что welcome в штат, где платят значительно больше. верстальщики тоже требуются. В связи с обстановкой, думаю сейчас удаленка будет в тренде.
    Ответ написан
    7 комментариев
  • Ошибка Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0?

    SeaInside
    @SeaInside
    15 лет пилю все эти штуки
    А вы откройте в консоли (Ctrl+Shift+G в Chrome) вкладку "Network", найдите ваш запрос, и посмотрите что там приходит во вкладке "Response".

    5e736588b215e932457830.png
    Подсказка: приходит не JSON.
    Ответ написан
    Комментировать
  • Как пробросить трафик по порту без подмены ip адреса?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Потому что вам нужен не DNAT в PREROUTING, а FORWARD. Гуглите именно его.
    Ответ написан
    2 комментария
  • Серия книг "You dont know js" - стоит ли начинать читать?

    Get-Web
    @Get-Web Куратор тега JavaScript
    Front-End Developer
    Но, насколько я понимаю, написана она опираясь на старый стандарт.

    Новый стандарт основан на старом, поэтому вы ничего лишнего не узнаете, а такого детального и понятного разбора, как например про this я не встречал нигде. Однозначно стоит.
    Ответ написан
    Комментировать
  • Как создать снимок с помощью html2canvas?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Почему в примере не получается создать снимок

    Потому что параметры windowWidth и windowHeight в данном случае задавать не нужно. Уберите их и все заработает.
    Ответ написан
    Комментировать
  • Почему скрипт выводит такой результат?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
  • В чем суть декораторов?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    если после
    https://habr.com/ru/post/141411/

    но так и не понял ничего(

    то только так:
    https://www.youtube.com/watch?v=iX_z-ePCCWw&t=39s
    Ответ написан
    Комментировать
  • Не взяли на работу из-за неправильно выполненного тестового задания, посмотрите?

    @RuComMarket
    Битрикс FullStack разработчик
    что касается замечаний не скажу, но если они есть, то их должны объяснить.
    Тут скорее дело в другом, и причин может быть много.
    сейчас программистов способных что-либо путное писать единицы.
    Если задание выполнено и работает, если даже есть замечания, дальше ведут беседу выявляя, почему ты допустил "замечания" и вообще понял ли ты о них.
    Очень часто встречается когда среди отбирающих присутствует программист, с которого начинались разработки компании, и который сам не умеет программировать, но с учетом что он когда-то написал для компании "Hello World" ориентир руководства на его мнение. Он может по разным причинам отклонить:
    - может он не знает язык на столько, чтобы читать чужой код
    - может он не хочет что бы кто-то лучше него разбирающийся работал
    - может он вообще не хочет чтобы кто-то еще работал, но руководство дало задачу искать
    я таких моментов за свою практику встречал примерно в половине компаний с которыми сталкивался как в поиске работы, так и сотрудничая по другим задачам.

    Не стоит обращать внимания на такие компании и, главное, не опускать руки.
    за 40к питонщика возьмут любого, даже с "замечаниями", т.к. хороший питонщик на такие копейки просто даже не откликнется.
    ищи работу дальше, чтобы нарабатывать опыт. Если задаешь такие вопросы, думаю с таким подходом через годик другой увеличишь зарплатные запросы раза так в 3)
    Ответ написан
    2 комментария
  • Не взяли на работу из-за неправильно выполненного тестового задания, посмотрите?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Братан, индусский код, без обид

    1)
    TASKS_DIR = os.path.dirname(__file__) + '/tasks'
    тут os.path.join нужен ( + - еще можно поспорить, если б см. п 2 ты правильно заюзал)

    2)
    file_data = user['name'] + '<' + user['email'] + '> ' +\
            time.strftime('%d.%m.%Y %H:%M', time.localtime()) + '\n' +\
            user['company']['name'] + '\n\n'


    это пишется так
    file_data = f"{user['name']} < {user['email']} + >  {time.strftime('%d.%m.%Y %H:%M', time.localtime())} \n {user['company']['name']} \n\n"

    и вот так еще полубезобидно можно складывать путь из п1.

    3)
    except Exception as e:
         print(e, u'Не удалось получить задачи | get_http_error')

    есть такая вещь как ООП и паттерны, и там наружу тебе нужно передавать естестенную (читай систмную, сетевую, АПИ) ошибку, а не самодеятельность - ну нет прав на запись в твою создаваемую ДИР, что делать запустившему - код твой гадать? так он сразу увидит, что нет прав, апи кей не катит, нет роута и т.д.

    ну и , как понимаешь, весь блок коннекта к апи можно было обернуть одиним - какая разница где ошибка? ты ее выведешь, при общем неуспехе

    но ты стараешьтся, молодец - нет camel style по крайней мере (надеюсь, это осознанно? )
    Ответ написан
    Комментировать
  • Что такое back-end и front-end?

    DevMan
    @DevMan
    в основном:
    фронт - то, с чем непосредственно взаимодействует пользователь.
    бэк - скрытая от пользователя часть, которая занимается обработкой данных.

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

    Xuxicheta
    @Xuxicheta
    инженер
    Написать свой компонентный фреймворк
    Ответ написан
    Комментировать