В этом же фрагменте не увидел как вы снимаете листенер. Получается, он у вас на каждый скролл, клик и движение мышкой отрабатывает, но потом выходит из функции 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, в котором были собраны техники оптимизации для оптимизирующего компилятора хрома. Все им пользовались и считали за бест-практайс. На интервью спрашивали. А потом выпустили новый движок и все оптимизации стали не актуальны. Думаю, так же произойдет и с тем о чем вы рассказываете: допилят оптимизации на уровне движка и все ухищрения на уровне кода станут дремучим легаси.
Конкретные способы очень зависят от конкретной ситуации, вряд-ли получится дать универсальные рекомендации.
Ну вот например, тесты. Все знают, что тесты писать хорошо. Но при этом существует множество задач, где тесты писать сложно, и получаются они все равно не надежными. При решении таких задач писать тесты — пустая трата времени.
Ну если про линтер мы знаем, что это в целом хорошо, то как быть с какой-то штукой, которая не так очевидна? Допустим, использовал я сегрегацию интерфейса при решении одной из задач и получил сдержанные оценки. Как это интерпретировать?
Да, IT это индустрия, и, да, в ней не достаточно сложности, чтобы занять человека на всю жизнь. Но повода для печали нет, если вы решили остаться здесь надолго, то свои IT-навыки можно прикладывать бесконечно к любому другому виду деятельности и получать отличные результаты.
Автора сгубило вот это «чувствую, что отстаю от индустрии, и начинаю нервничать, что через два года меня выпнут как собаку». Невроз, как он есть. Ему бы к психотерапевту, избавиться от базальной тревоги. Это очень долго, автор, полагаю, всю жизнь так живет, за это время куча тараканов накопилось.
Но можно и без психутирапетов: его тревога это его тревога, другие люди к этому никакого отношения не имеют. Можно походить в качалку вместо третирования окружающих.
Такая тревога начинается, когда окружающие в детстве реагируют неправильно, неожиданно. Тоже невротики. Побочный эффект от «лечения» что отношения с окружающими начнут нормализовываться. Вчера ты был «король разработки», а сегодня муж, сын, отец, наемный рабочий и друг.
1. Фрактал — аналитическая функция. А приложение регулярно.
2. Были попытки делать что-то с йелдами, но не взлетели: они слишком сложные для рядового разработчика.
3. 80% всей работы по внедрению технологии: обучение и практика применения. Это самое сложное.
4. Не знаю. На самом деле есть большой и стабильный HTML, который как бы baselin веб-разработки и все начинают учить с него. Если ваш подход взлетит, вы сможете привлечь людей, а послезавтра у него найдется фатальный недостаток, то люди останутся без работы и перед необходимостью учить все тот же HTML.
Никто не знает что вам нужно в каждый момент времени. У общества по отношению к вам есть только очень общие соображения, что вы стремитесь к автономии и авторитету, но как именно вы в данный момент хотите/можете этих целей достигать — этого никто не знает.
Мое видние, которое сформировалось в результате изучения темы привело к созданию образа сознания-рыбки.
Человек — это рыбка, которая (с ее точки зрения) плавает в океане. Она воспринимает мир также, как и миллионы лет назад. Но зрение сильно модифицировалось: через зрительный канал весь остальной мозг рисует рыбке всякие ужасы.
Причем, рыбка видит обе картинки: и просто сигнал со зрения и ужасы. Но тонкость в том, что зрительный сигнал очень плохой (у меня был опыт наблюдения этого сигнала без наложения), поэтому подавляющее большинство людей предпочитает постоянно смотреть ужасы — так просто лучше видно.
И, в сущности, у рыбки есть всего две модели поведения: попытаться съесть то, что ей показывают или убежать от этого. (Но есть еще и третья — притвориться мертвой).
Правда, ужасы ей показывают не всегда. И пока рыбке их не показывают, она занята просто плаванием.
Соответственно, задача общества — создать такие условия, чтобы мозг не показывал нам ужасы и нам не пришлось на них реагировать.
На данный момент, поскольку мы, как общество, далеки от реализации этой задачи, очень многие люди адаптируются к переходному периоду, притворяясь мертвыми при встрече с ужасами, которые рисует мозг.
И это в какой-то степени, нормально: даже если тебе самому и плохо от этого, ты, по крайней мере, не вынуждаешь других людей как-то реагировать на те картинки, которые им нарисует мозг, пока они наблюдают за твоим поведением.
А это значит, что индивидуальное спасение лежит через шизофрению, а групповое — через отбор.
У меня гитхаб спрашивали всего пару раз
Хех ) Имел глупость поучаствовать в нескольких холиварах, и прощай карма
Годы практики
Лишняя конструкция
Можно просто `document.body`
IE8 поддерживаете?
В этом же фрагменте не увидел как вы снимаете листенер. Получается, он у вас на каждый скролл, клик и движение мышкой отрабатывает, но потом выходит из функции
jivoAsync
на строчке `if ( typeof window.jivoLazyReady === 'undefined' )`. Не идеально.Лучше так (с учетом предыдущего замечания):
Теперь, благодаря тому что `jivoAsync` запускается только один раз, удастся избавиться от глобальных переменных и проверок внутри.
Также, поскольку код виджета был предназначен для использования внутри `<script>`, оборачивать код инициализации виджета в функцию нет смысла.
Поскольку у нас на момент таймаута страница уже загрузилась, то код инициализации виджета можно сильно сократить. Также, нет никакого смысла выискивать первый скрипт на странице, можно просто вставить в конец
body
:Это то что в глаза бросилось
После инцидента с left-pad, npm приняла политику, согласно которой пакеты, у которых есть зависимые, или у которых более 300 скачиваний в неделю не могут быть удалены.
А чем ситуация с npm принципиально отличается от любого другого реестра пакетов? Того же apt, или pypi?
Что касается isarray. Ну мода такая была. Это даже считалось за бест-практайс. У комьюнити не было на что ориентироваться, кроме своего вкуса. Это сейчас Sebastian Markbage и рассказал как надо. А тогда не знали
Как видите, карма не позволяет мне слишком углубляться в дискуссии, так что отвечу только на одно.
Тут я вступаю в тему, в которой мало смыслю, но разве виртуальная машина не ведет подсчет ссылок? Если ссылка всего одна, и она в параметрах reduce, то это значит что объект никому кроме тела этой reduce не доступен.
Я и сам-то не уверен что это не преждевременная оптимизация
Простите, но я не готов отстаивать эту тему настолько, чтобы терять из за нее работу )
У вас там все очень категорично, не могу на это конструктивно ответить.
Могу только это прокомментировать:
А зачем что-то гарантировать? Аргументация построена на введении излишнего и заведомо не выполнимаого ограничения, которого нет в реальности. В JS-е ничего не гарантировано, но связка из трех компиляторов со всем справляется и быстро. Собственно, тут вопрос не принципиального ограничения, а просто пока что у инженеров V8 руки до этого кейса не дошли
А потом на ревью прилетит «а че ты так сделал, а не через .../[]?». И доказывай что не занимаешься преждевременной оптимизацией.
Раньше был такой такой чеклист, от авторов Bluebird, в котором были собраны техники оптимизации для оптимизирующего компилятора хрома. Все им пользовались и считали за бест-практайс. На интервью спрашивали. А потом выпустили новый движок и все оптимизации стали не актуальны. Думаю, так же произойдет и с тем о чем вы рассказываете: допилят оптимизации на уровне движка и все ухищрения на уровне кода станут дремучим легаси.
Конкретные способы очень зависят от конкретной ситуации, вряд-ли получится дать универсальные рекомендации.
Ну вот например, тесты. Все знают, что тесты писать хорошо. Но при этом существует множество задач, где тесты писать сложно, и получаются они все равно не надежными. При решении таких задач писать тесты — пустая трата времени.
То что скорость и качество лежат на одной шкале — очень большое допущение.
Я думаю, что существует не мало способов разрабатывать быстро, не жертвуя при этом качеством, если выбрать удачные решения.
Но можно и без психутирапетов: его тревога это его тревога, другие люди к этому никакого отношения не имеют. Можно походить в качалку вместо третирования окружающих.
Такая тревога начинается, когда окружающие в детстве реагируют неправильно, неожиданно. Тоже невротики. Побочный эффект от «лечения» что отношения с окружающими начнут нормализовываться. Вчера ты был «король разработки», а сегодня муж, сын, отец, наемный рабочий и друг.
2. Были попытки делать что-то с йелдами, но не взлетели: они слишком сложные для рядового разработчика.
3. 80% всей работы по внедрению технологии: обучение и практика применения. Это самое сложное.
4. Не знаю. На самом деле есть большой и стабильный HTML, который как бы baselin веб-разработки и все начинают учить с него. Если ваш подход взлетит, вы сможете привлечь людей, а послезавтра у него найдется фатальный недостаток, то люди останутся без работы и перед необходимостью учить все тот же HTML.
Внутри реакта, конечно, ООП, но снаружи этого не заметно.
Человек — это рыбка, которая (с ее точки зрения) плавает в океане. Она воспринимает мир также, как и миллионы лет назад. Но зрение сильно модифицировалось: через зрительный канал весь остальной мозг рисует рыбке всякие ужасы.
Причем, рыбка видит обе картинки: и просто сигнал со зрения и ужасы. Но тонкость в том, что зрительный сигнал очень плохой (у меня был опыт наблюдения этого сигнала без наложения), поэтому подавляющее большинство людей предпочитает постоянно смотреть ужасы — так просто лучше видно.
И, в сущности, у рыбки есть всего две модели поведения: попытаться съесть то, что ей показывают или убежать от этого. (Но есть еще и третья — притвориться мертвой).
Правда, ужасы ей показывают не всегда. И пока рыбке их не показывают, она занята просто плаванием.
Соответственно, задача общества — создать такие условия, чтобы мозг не показывал нам ужасы и нам не пришлось на них реагировать.
На данный момент, поскольку мы, как общество, далеки от реализации этой задачи, очень многие люди адаптируются к переходному периоду, притворяясь мертвыми при встрече с ужасами, которые рисует мозг.
И это в какой-то степени, нормально: даже если тебе самому и плохо от этого, ты, по крайней мере, не вынуждаешь других людей как-то реагировать на те картинки, которые им нарисует мозг, пока они наблюдают за твоим поведением.
А это значит, что индивидуальное спасение лежит через шизофрению, а групповое — через отбор.