Pull to refresh
-12
0.3
Юрий @YChebotaev

Фронтенд разработчик

Send message

Не стесняйтесь показывать GitHub

У меня гитхаб спрашивали всего пару раз

К тому же, нужно обратить внимание на «Карму» — она хорошо показывает репутацию специалиста в комьюнити

Хех ) Имел глупость поучаствовать в нескольких холиварах, и прощай карма

Пишите в комментариях, какие использовали лайфхаки для получения оффера

Годы практики

clearTimeout(window.jivoLazyTimeout);

Лишняя конструкция

document.getElementsByTagName('body')[0]

Можно просто `document.body`

if ( typeof window.addEventListener === 'undefined' ) {
	elm.addEvent(event, jivoAsync);
} else {
	elm.addEventListener(event, jivoAsync, false);
}

IE8 поддерживаете?

В этом же фрагменте не увидел как вы снимаете листенер. Получается, он у вас на каждый скролл, клик и движение мышкой отрабатывает, но потом выходит из функции jivoAsync на строчке `if ( typeof window.jivoLazyReady === 'undefined' )`. Не идеально.

Лучше так (с учетом предыдущего замечания):

var eventTypes = ['mouseover', 'click', 'scroll']

function listener() {
  var target = this
  
  jivoAsync()
  
  eventTypes.forEach(function(eventType) {
    target.removeEventListener(eventType, listener)
  })
}

events.forEach(function(eventType) {
  var elm = event === 'click' ? document.body : window

  elm.addEventListener(eventType, listener)
})

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

Также, поскольку код виджета был предназначен для использования внутри `<script>`, оборачивать код инициализации виджета в функцию нет смысла.

function jivoAsync() {
  setTimeout(function() {
  	var widget_id = '#widgetID#';
    var d = document;
    var w = window;

    function l() {
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = '//code.jivosite.com/script/widget/' + widget_id;
        var ss = document.getElementsByTagName('script')[0];
        ss.parentNode.insertBefore(s, ss);
    }
    if (d.readyState == 'complete') {
        l();
    } else {
        if (w.attachEvent) {
            w.attachEvent('onload', l);
        } else {
            w.addEventListener('load', l, false);
        }
    }
  }, 1000)
}

Поскольку у нас на момент таймаута страница уже загрузилась, то код инициализации виджета можно сильно сократить. Также, нет никакого смысла выискивать первый скрипт на странице, можно просто вставить в конец body:

function jivoAsync() {
  setTimeout(function() {
    var widget_id = '#widgetID#';
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.async = true;
    s.src = '//code.jivosite.com/script/widget/' + widget_id;
    document.body.appendChild(s)
  }, 1000)
}

Это то что в глаза бросилось

После инцидента с left-pad, npm приняла политику, согласно которой пакеты, у которых есть зависимые, или у которых более 300 скачиваний в неделю не могут быть удалены.

А чем ситуация с npm принципиально отличается от любого другого реестра пакетов? Того же apt, или pypi?

Что касается isarray. Ну мода такая была. Это даже считалось за бест-практайс. У комьюнити не было на что ориентироваться, кроме своего вкуса. Это сейчас Sebastian Markbage и рассказал как надо. А тогда не знали

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

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

И теперь вопрос — как вы собираетесь это проверять?

Тут я вступаю в тему, в которой мало смыслю, но разве виртуальная машина не ведет подсчет ссылок? Если ссылка всего одна, и она в параметрах reduce, то это значит что объект никому кроме тела этой reduce не доступен.

Заниматься обучением своих коллег — не грех

Я и сам-то не уверен что это не преждевременная оптимизация

Если сильно непробиваемые, можно сменить команду. В конце концов это ваш выбор, с кем вы работаете

Простите, но я не готов отстаивать эту тему настолько, чтобы терять из за нее работу )

Не произойдёт. См. раздел "3. Умный компилятор всё оптимизирует" в статье.

У вас там все очень категорично, не могу на это конструктивно ответить.
Могу только это прокомментировать:

Как это гарантировать в языке, в котором почти ничего нельзя гарантировать

А зачем что-то гарантировать? Аргументация построена на введении излишнего и заведомо не выполнимаого ограничения, которого нет в реальности. В JS-е ничего не гарантировано, но связка из трех компиляторов со всем справляется и быстро. Собственно, тут вопрос не принципиального ограничения, а просто пока что у инженеров V8 руки до этого кейса не дошли

А потом на ревью прилетит «а че ты так сделал, а не через .../[]?». И доказывай что не занимаешься преждевременной оптимизацией.

Раньше был такой такой чеклист, от авторов Bluebird, в котором были собраны техники оптимизации для оптимизирующего компилятора хрома. Все им пользовались и считали за бест-практайс. На интервью спрашивали. А потом выпустили новый движок и все оптимизации стали не актуальны. Думаю, так же произойдет и с тем о чем вы рассказываете: допилят оптимизации на уровне движка и все ухищрения на уровне кода станут дремучим легаси.

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

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

То что скорость и качество лежат на одной шкале — очень большое допущение.

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

Ну, судя по вашей же статье таки не рассматривается.
Ну если про линтер мы знаем, что это в целом хорошо, то как быть с какой-то штукой, которая не так очевидна? Допустим, использовал я сегрегацию интерфейса при решении одной из задач и получил сдержанные оценки. Как это интерпретировать?
На маке Command+Shift+J открывает загрузки, а Ctrl+Shift+J ничего не делает
Да, IT это индустрия, и, да, в ней не достаточно сложности, чтобы занять человека на всю жизнь. Но повода для печали нет, если вы решили остаться здесь надолго, то свои IT-навыки можно прикладывать бесконечно к любому другому виду деятельности и получать отличные результаты.
Автора сгубило вот это «чувствую, что отстаю от индустрии, и начинаю нервничать, что через два года меня выпнут как собаку». Невроз, как он есть. Ему бы к психотерапевту, избавиться от базальной тревоги. Это очень долго, автор, полагаю, всю жизнь так живет, за это время куча тараканов накопилось.

Но можно и без психутирапетов: его тревога это его тревога, другие люди к этому никакого отношения не имеют. Можно походить в качалку вместо третирования окружающих.

Такая тревога начинается, когда окружающие в детстве реагируют неправильно, неожиданно. Тоже невротики. Побочный эффект от «лечения» что отношения с окружающими начнут нормализовываться. Вчера ты был «король разработки», а сегодня муж, сын, отец, наемный рабочий и друг.
1. Фрактал — аналитическая функция. А приложение регулярно.
2. Были попытки делать что-то с йелдами, но не взлетели: они слишком сложные для рядового разработчика.
3. 80% всей работы по внедрению технологии: обучение и практика применения. Это самое сложное.
4. Не знаю. На самом деле есть большой и стабильный HTML, который как бы baselin веб-разработки и все начинают учить с него. Если ваш подход взлетит, вы сможете привлечь людей, а послезавтра у него найдется фатальный недостаток, то люди останутся без работы и перед необходимостью учить все тот же HTML.
В реакте это решается на одних функциях.

Внутри реакта, конечно, ООП, но снаружи этого не заметно.
Все ПО будет в облаке. Будем подключаться к облаку Google и там у нас будет две кнопки: «сделать так» и «не делать так».
Я услышал в вашем рассказе претензии. Мне жаль, что это с вами произошло.
Никто не знает что вам нужно в каждый момент времени. У общества по отношению к вам есть только очень общие соображения, что вы стремитесь к автономии и авторитету, но как именно вы в данный момент хотите/можете этих целей достигать — этого никто не знает.
Ну так это еще в первом ангуляре было.
Мое видние, которое сформировалось в результате изучения темы привело к созданию образа сознания-рыбки.
Человек — это рыбка, которая (с ее точки зрения) плавает в океане. Она воспринимает мир также, как и миллионы лет назад. Но зрение сильно модифицировалось: через зрительный канал весь остальной мозг рисует рыбке всякие ужасы.
Причем, рыбка видит обе картинки: и просто сигнал со зрения и ужасы. Но тонкость в том, что зрительный сигнал очень плохой (у меня был опыт наблюдения этого сигнала без наложения), поэтому подавляющее большинство людей предпочитает постоянно смотреть ужасы — так просто лучше видно.
И, в сущности, у рыбки есть всего две модели поведения: попытаться съесть то, что ей показывают или убежать от этого. (Но есть еще и третья — притвориться мертвой).
Правда, ужасы ей показывают не всегда. И пока рыбке их не показывают, она занята просто плаванием.
Соответственно, задача общества — создать такие условия, чтобы мозг не показывал нам ужасы и нам не пришлось на них реагировать.
На данный момент, поскольку мы, как общество, далеки от реализации этой задачи, очень многие люди адаптируются к переходному периоду, притворяясь мертвыми при встрече с ужасами, которые рисует мозг.
И это в какой-то степени, нормально: даже если тебе самому и плохо от этого, ты, по крайней мере, не вынуждаешь других людей как-то реагировать на те картинки, которые им нарисует мозг, пока они наблюдают за твоим поведением.
А это значит, что индивидуальное спасение лежит через шизофрению, а групповое — через отбор.

Information

Rating
2,841-st
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity