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

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

Send message

Во фронтенде было несколько таких попыток: CoffeScript, Dart, теперь вот TypeScript. Кроме TypeScript-а никто не прижился, но даже с учетом всей его популярности, он все равно не лидер пока.
Вот, приложил сравнение количества PR-ов на GH по котлину vs джаве, джава vs скала и TS vs JS.

Экосистема js такая развитая, потому что в ней все знают js и пишут на нем. Любой может написать плагин к популярному инструменту типа вебпака или Бабеля. А на расте плагины смогут писать единицы

Например, сейчас next 12 перешёл на swc, но мы не можем обновиться потому что у нас подключены плагины которые не реализованы для swc. И поделать с этим ничего нельзя - Раст в команде никто не знает

Так что мейнстримом такой подход точно не будет

Ну и ещё не только на расте пишут но и на го. Го не сильно медленнее, но в разы проще. Если уж и писать тулинг на чем-то нативном, то на нем

Компиляция в wa даёт всего-то 20% плюс к производительности, игра не стоит свеч. Это имеет смысл когда нужно переиспользовать нативную библиотеку, или скрыть сорцы от посторонних глаз. Но тоже не мейнстрим

Не стесняйтесь показывать 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
3,643-rd
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity