• Что нужно делать на практике в JavaScript, чтобы его понимать?

    contraomnes
    @contraomnes
    Frontend developer
    Задачки + английский
    https://www.codewars.com/
    https://www.hackerrank.com/

    Учебник по js на русском с примерами и задачками
    https://learn.javascript.ru/

    Кроме того, одним javascript'ом сыт не будешь)
    frontend.png
    Ответ написан
    2 комментария
  • Где найти такие html5 шняжки?

    DevMan
    @DevMan
    в гугле вестимо -> emoji html codes
    https://www.w3schools.com/charsets/ref_emoji.asp
    Ответ написан
    Комментировать
  • Как посчитать стоимость создания сайта?

    andrievski88
    @andrievski88
    SEO + маркетинг + веб программаривание.
    Не понимаю тех, кто работает без четкого ТЗ и понятия, что хочет клиент.
    Если есть четкое понятие ТЗ и конечной цели функционала сайта, вопрос цены снимается сам собой. Ибо все прозрачно, как на ладоне.
    Ответ написан
    9 комментариев
  • Что значит блочная область видимости?

    @McBernar
    Let работают внутри { }.
    У стрелок нет своего this и в этом их прелесть.
    Ответ написан
    4 комментария
  • Можно ли задавать шрифту min и max размер?

    @Dolosweb
    Во первых зачем? во вторых на что будет реагировать это изменение?
    стандартными методами css - нет
    с помощью javscript - да
    Ответ написан
    Комментировать
  • Блок со скрытым контентом, что я не так делаю?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Вызываете свой код (в первой же строчке) только для первого слайдера. Лучше переписать таким образом, чтобы в качестве аргумента была сама Node, а не селектор и продублировать этот вызов для второго слайдера:

    setTimeout(initSliders(document.querySelectorAll('.slider')[0], document.querySelectorAll('.between')[0], document.querySelectorAll('.first')[0], document.querySelectorAll('.second')[0], document.querySelectorAll('.min')[0], document.querySelectorAll('.max')[0]), 0);
    setTimeout(initSliders(document.querySelectorAll('.slider')[1], document.querySelectorAll('.between')[1], document.querySelectorAll('.first')[1], document.querySelectorAll('.second')[1], document.querySelectorAll('.min')[1], document.querySelectorAll('.max')[1]), 0);
    
    function initSliders(argSlider, argBtw, argBtn1, argBtn2, argInp1, argInp2) {
      const slider = argSlider;
      const between = argBtw;
      const button1 = argBtn1;
      const button2 = argBtn2;
      const inpt1 = argInp1;
      const inpt2 = argInp2;
      const min = inpt1.min;
      const max = inpt1.max;
        
      /* инициализация */
      const sliderCoords = getCoords(slider);
      button1.style.marginLeft = '0px';
      button2.style.marginLeft = (slider.offsetWidth - button1.offsetWidth) + 'px';
      between.style.width = slider.offsetWidth + 'px';
      inpt1.value = min;
      inpt2.value = max;
      
      /* первый вывод */
      inpt1.onchange = (evt) => {
        if (parseInt(inpt1.value) < min) {
          inpt1.value = min;
        }
    
        if (parseInt(inpt1.value) > max) {
          inpt1.value = max;
        }
    
        if (parseInt(inpt1.value) > parseInt(inpt2.value)) {
          const temp = inpt1.value;
          inpt1.value = inpt2.value;
          inpt2.value = temp;
        }
    
        const sliderCoords = getCoords(slider);
        const per1 = parseInt(inpt1.value - min) * 100 / (max - min);
        const per2 = parseInt(inpt2.value - min) * 100 / (max - min);
        const left1 = per1 * (slider.offsetWidth - button1.offsetWidth) / 100;
        const left2 = per2 * (slider.offsetWidth - button1.offsetWidth) / 100;
    
        button1.style.marginLeft = left1 + 'px'; 
        button2.style.marginLeft = left2 + 'px';
    
        if (left1 > left2) {
          between.style.width = (left1 - left2 + 18) + 'px';
          between.style.marginLeft = left2 + 'px';
        } else {
          between.style.width = (left2 - left1 + 18) + 'px';
          between.style.marginLeft = left1 + 'px';  
        }
      }
      
      /* второй вывод */
      inpt2.onchange = (evt) => {
        if (parseInt(inpt2.value) < min) inpt2.value = min;
    
        if (parseInt(inpt2.value) > max) inpt2.value = max;
    
        if (parseInt(inpt1.value) > parseInt(inpt2.value)) {
          const temp = inpt1.value;
          inpt1.value = inpt2.value;
          inpt2.value = temp;
        }
    
        const sliderCoords = getCoords(slider);
        const per1 = parseInt(inpt1.value - min) * 100 / (max - min);
        const per2 = parseInt(inpt2.value - min) * 100 / (max - min);
        const left1 = per1 * (slider.offsetWidth - button1.offsetWidth) / 100;
        const left2 = per2 * (slider.offsetWidth - button1.offsetWidth) / 100;
    
        button1.style.marginLeft = left1 + 'px'; 
        button2.style.marginLeft = left2 + 'px';
    
        if (left1 > left2) {
          between.style.width = (left1 - left2 + 18) + 'px';
          between.style.marginLeft = left2 + 'px';
        } else {
          between.style.width = (left2 - left1 + 18) + 'px';
          between.style.marginLeft = left1 + 'px';  
        }
      }
      
      /* события мыши */
      button1.onmousedown = (evt) => {       
        const sliderCoords = getCoords(slider);
        const betweenCoords = getCoords(between); 
        const buttonCoords1 = getCoords(button1);
        const buttonCoords2 = getCoords(button2);
        let shiftX1 = evt.pageX - buttonCoords1.left;
        let shiftX2 = evt.pageX - buttonCoords2.left; 
    
        document.onmousemove = (evt) => {
          let left1 = evt.pageX - shiftX1 - sliderCoords.left;
          let right1 = slider.offsetWidth - button1.offsetWidth;
    
          if (left1 < 0) {
            left1 = 0;
          }
    
          if (left1 > right1) {
            left1 = right1;
          }
    
          button1.style.marginLeft = left1 + 'px';  
          shiftX2 = evt.pageX - buttonCoords2.left;
    
          let left2 = evt.pageX - shiftX2 - sliderCoords.left;
          let right2 = slider.offsetWidth - button2.offsetWidth;
    
          if (left2 < 0) {
            left2 = 0;
          }
    
          if (left2 > right2) {
            left2 = right2;
          }
    
          let per_min = 0;
          let per_max = 0;
    
          if (left1 > left2) {
            between.style.width = (left1 - left2 + 18) + 'px';
            between.style.marginLeft = left2 + 'px';
            per_min = left2 * 100 / (slider.offsetWidth - button1.offsetWidth);
            per_max = left1 * 100 / (slider.offsetWidth - button1.offsetWidth);
          } else {
            between.style.width = (left2 - left1 + 18) + 'px';
            between.style.marginLeft = left1 + 'px';                
            per_min = left1 * 100 / (slider.offsetWidth - button1.offsetWidth);
            per_max = left2 * 100 / (slider.offsetWidth - button1.offsetWidth);
          }
    
          inpt1.value = (parseInt(min) + Math.round((max - min) * per_min / 100));
          inpt2.value = (parseInt(min) + Math.round((max - min) * per_max / 100));
        };
        
        document.onmouseup = () => document.onmousemove = document.onmouseup = null;
    
        return false;
      };
      
      button2.onmousedown = (evt) => {       
        const sliderCoords = getCoords(slider);
        const betweenCoords = getCoords(between); 
        const buttonCoords1 = getCoords(button1);
        const buttonCoords2 = getCoords(button2);
        let shiftX1 = evt.pageX - buttonCoords1.left;
        let shiftX2 = evt.pageX - buttonCoords2.left;  
        
        document.onmousemove = (evt) => {
          let left2 = evt.pageX - shiftX2 - sliderCoords.left;
          let right2 = slider.offsetWidth - button2.offsetWidth;
    
          if (left2 < 0) {
            left2 = 0;
          }
    
          if (left2 > right2) {
            left2 = right2;
          }
    
          button2.style.marginLeft = left2 + 'px';                      
          shiftX1 = evt.pageX - buttonCoords1.left; 
    
          let left1 = evt.pageX - shiftX1 - sliderCoords.left;
          let right1 = slider.offsetWidth - button1.offsetWidth;  
    
          if (left1 < 0) {
            left1 = 0;
          }
    
          if (left1 > right1) {
            left1 = right1;
          }                      
    
          let per_min = 0;
          let per_max = 0;
    
          if (left1 > left2) {
            between.style.width = (left1 - left2 + 18) + 'px';
            between.style.marginLeft = left2 + 'px';
            per_min = left2 * 100 / (slider.offsetWidth - button1.offsetWidth);
            per_max = left1 * 100 / (slider.offsetWidth - button1.offsetWidth);
          } else {
            between.style.width = (left2 - left1 + 18) + 'px';
            between.style.marginLeft = left1 + 'px';
            per_min = left1 * 100 / (slider.offsetWidth - button1.offsetWidth);
            per_max = left2 * 100 / (slider.offsetWidth - button1.offsetWidth);
          }
    
          inpt1.value = (parseInt(min) + Math.round((max - min) * per_min / 100));
          inpt2.value = (parseInt(min) + Math.round((max - min) * per_max / 100));
        };
    
        document.onmouseup = () => document.onmousemove = document.onmouseup = null;
    
        return false;
      };
      
      /* отключение Drag’n’Drop браузера, чтобы не было конфликта */
      button1.ondragstart = () => {
        return false;
      };
      
      button2.ondragstart = () => {
        return false;
      };
    }
    
    /* Получение координат элемента */
    function getCoords(elem) {
      const box = elem.getBoundingClientRect();
      
      return {
        top: box.top + pageYOffset,
        left: box.left + pageXOffset
      };
    }
    Ответ написан
    1 комментарий
  • Выбор капель "искусственная слеза"?

    Odinokun
    @Odinokun
    Попробуйте Хило-Комод Форте.
    Можно и обычный, но как мне объяснил окулист форте более вязкий и создает более устойчивую пленку которая защищает глаз.
    Ответ написан
    1 комментарий
  • Сводит предплечье при печати, кто сталкивался?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Возможно есть зажимы/смещения в шейном отделе позвоночника, я бы обратился к профильным специалистам. Так же возможно затруднён венозный кровоток, опять же, в следствии зажимов/смещений, в результате чего и возникает тяжесть. В общем надо бы проверить сосуды и позвоночник.
    Ответ написан
    1 комментарий
  • Есть ли программисты, которые будучи джуниорами могли нормально думать только ночью, а потом смогли и днем?

    @nrgian
    Чтобы продуктивно работать - нужно хорошо отдыхать.
    В ИТ есть мнение, что пик активности каким бы крутым ты ни был - это часа 4, отсилы 5 в сутки.

    Ночной график может быть удобен тому, кого днём отвлекают.
    Но в целом, человеческий организм не приспособлен для активного труда ночью, это противоречит биоритмам.
    Ответ написан
    3 комментария
  • Есть ли программисты, которые будучи джуниорами могли нормально думать только ночью, а потом смогли и днем?

    Moskus
    @Moskus
    Как вы думаете, откуда берутся программисты, у которых к 30 годам сердце угроблено вместе со зрением? Делайте выводы.
    Ответ написан
    3 комментария
  • Как отдыхнуть от умственной активности?

    zamboga
    @zamboga
    Бизнес-аналитика, фин. моделирование, дашборды
    Медитация. Я серьёзно.

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

    За деталями - гуглите яндекс.
    Ответ написан
    2 комментария
  • Как отдыхнуть от умственной активности?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ложиться спать вечером, а не поздно ночью.

    Упражнения не определенные, а просто они должны быть, чтобы держать тело в тонусе. Кто бегает, кто на танцы ходит, кто велосипедит..

    На работе делать перерывы чаще, чем раз в три часа, раз в час.
    Пойти сделать себе чай, пока заваришь, пока нальешь, пока пройешь по коридору - размялся.
    Посидеть с закрытыми глазами 2-3 минуты, стараясь ни о чем не думать.

    Ну и уменьшать нагрузку.
    Ответ написан
    2 комментария
  • Пропадает память. Как тренировать?

    @776166
    Выскажу немного неожиданную мысль. По описанию, у вас всё в порядке, даже без поправки на возраст.

    1) Мозг не будет и не должен запоминать всё подряд. Ненужное, особенно то, что помечено "сделано" может глубоко забыться. Это - нормально! (с)

    2) Режим работы и переключения контекстов может очень сильно влиять на запоминаемость информации. Для усвоения нужно обязательно делать перерывы в работе. Расклад примерно такой: 45 минут работы, 15 минут перерыв, когда вы не делаете вообще НИЧЕГО. Работать запоем плохо. Перегружать мозг нельзя. С другой стороны, быстрые и частые переключения контекста из-за физиологии могут приводить к частичной потере данных из кратковременной памяти. Читайте профильную научно-популярную литературу по этому поводу. Особенно мешает мозгу богомерзкая социальщина. Переключение контекста с погружением занимает около 20 минут. Т.е. если вы отвлеклись на фейсбучек, телефонный разговор, то потом возвращаться к программированию вы будете примерно 20 минут. Очень влияет окружение - шумы, особенно информационные.

    3) Очень важен сон. Количество сна должно быть от 7 часов. Или порциями по одному полному циклу (примерно 2 часа 20 минут, это легко можно посчитать ночью, замеряя время, когда вы просыпаетесь). Во время сна мозг обрабатывает и складирует информацию. Если ему не давать это делать, то могут быть последствия. Читайте про циклы сна.

    4) Читайте литературу про то, как функционирует мозг, там хорошо всё описано. Беруши, наушники с белым шумом, и нафиг из опенспейса, последний вообще гиганстское вселенское зло в подавляющем числе случаев. Жене установку, чтобы не отвлекала каждые 5 минут даже по мелочи.

    Но если есть подозрения на какие-то болезни, то лучше к врачу на обследование.
    Ответ написан
    Комментировать
  • Пропадает память. Как тренировать?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Как человек, который прошел это же самое годы назад скажу вам так:

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

    - второе - банальное утомление. Да, теперь вы устаете быстрее и легче и под это надо адаптироваться. В 20-25 можно не спать пару суток подряд, пилить код 20 часов не вставая, питаться одной кока-колой с дошиком и раз в неделю спать до упора, просыпаясь как огурчик. После 30 такое уже не работает. Поэтому, в порядке важности:
    1. качественный сон и его гигиена. 30 лет это время самого большого недооценивания этого фактора (раньше то спал как хотел и бодрячком)
    2. нормальное питание и физическая активность. Не надо быть веганом или упарываться на стадионе - просто сбалансированная еда, не переедать, и тренажерка/что-то активное несколько раз в неделю
    3. распорядок дня - уметь управлять нагрузкой и отдыхать. Это тоже то что нужно переосмыслить. "поднапрягусь и сделаю" или "ну я ж в потоке, поем вечером" "сегодня подольше посижу, завтра посплю больше" - это все во вред.

    Эти три пункта - самые банальные, самые эффективные и самые сложные для выполнения в реальности.
    "попить витаминки-ноотропы", "взять себя в руки" или "наладить внутренние энергии" - НЕ работает, но крайне популярно, потому что, во-первых, успокаивает (что тоже дает свой небольшой эффект), а во-вторых - делать на самом деле особо ничего не надо, все как мы любим :). Потом придете к "банальному" просто позже и в более худшем состоянии.
    Ответ написан
    7 комментариев
  • Пропадает память. Как тренировать?

    Mesuti
    @Mesuti
    Тоже 30 =) приветствую в клубе старперов.
    Мой проверенный список:

    -Пейте витамины.
    -Спите норму 8 часов.
    -Учитесь порционно, не все сразу.
    -Постоянно практикуйтесь в языке, иначе забывается. Это у всех так. Некоторые здесь сидят, чтобы не забывать.
    -Попробуйте заниматься спортом (допустим, пробежка), разгоняет кровь в голове= питание для мозга.

    Также рекомендую пропить "Пикамилон" раз в пол года.
    Расширяет сосуды мозга, думает очень легко. Иногда 2 мысли одновременно
    Правда, побочка - может быть вспыльчивость и агрессивность

    И как говорили выше - семья вытесняет многое. Поэтому не в Вас проблема.
    Ответ написан
    1 комментарий
  • Пропадает память. Как тренировать?

    Noizefan
    @Noizefan
    5 часов здоровые люди не спят. Минимум 7 максимум 8:30
    Ответ написан
  • Пропадает память. Как тренировать?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Необходимо найти баланс. Это трудно.
    1. Охранять сон. Послать всех куда-подальше и начать высыпаться.
    2. Ограничить рабочее время. Привет режим с 8 до 5. Я серьезно.
    3. Физическая активность. Заставьте себя ходить хотя бы час в день. Полчаса на работу, полчаса с работы. Выходите на несколько остановок раньше и идите. Если добираетесь на своем транспорте - паркуйтесь дальше от офиса.
    4. Отдых со сменой обстановки - поехать в другой город, на дачу, навестить родителей. Например можно поехать в соседний город. В Москве - в район, где не были или в подмосковье. Обязательно, чтобы была смена обстановки и внешнего вида. В этом плане здорово влияет рыбалка с удочкой в одиночку. Помогает расслабиться, неспешно подумать обо всем. Успокаивает нервы.
    5. Отказаться от вредных привычек. Не переедайте, не курите, не бухайте чересчур. Полностью и резко отказываться не надо, а уменьшить можно.
    6. Жене один раз сказать, что если не перестанет на вас орать, то к 45 вместо вас у нее останется холмик сырой земли. И если у нее есть с этим проблемы, пусть идет к психологу.
    7. Выгружать мелочи из головы в семейный календарик, приучать жену к нему (у меня так много знакомых делает, у кого несколько детей, там секции, праздники, всякие расписания).
    Ответ написан
    1 комментарий
  • Коллеги, как Вы выходите из положения, когда нужно постоянно приводить ПК в исходное состояние?

    @granty
    Я Акронис использую. Делаю полный бэкап винта на физическом уровне. Делается загрузочный CD/флешка.
    Ответ написан
    Комментировать