Pull to refresh
28
0
Никита Белоглазов @Nikelandjelo

User

Send message

Насколько я понял нужно послать по пулреквесту во ВСЕ зависимости. Тогда все зависимости будут форкнуты на предыдущем шаге и останется только обновить проект указав на форки. Вуаля...

В AMPе автор страницы может какую хочет рекламу использовать, не обязательно гугловую. И AMP поддерживает много разных рекламных компаний. Так что отбирание прибыли от рекламы не совсем корректно. AMP CDN не заменяет текущую и не вставляет гугловую рекламу.

Да, я уже понял, что я зря этого ожидал исходя из результатов, которые я получил. Написание правильного эквивалентного кода далеко не самая простая задача, как многие в комментариях тут рассуждают. Мне еще интересно исходя из какой документации/спецификации я могу понять, что правильные код именно ваш. Я конечно могу написать оба и сравнить что они делают, но хочется увидеть официальную спецификацию.

А можете дать ссылку на то, где это прописано в спецификации? В https://tc39.es/ecma262/#sec-class-definitions я только вижу грамматики класса, но не то, как он должен инициализироваться.

Нет, не достаточно. Порядок инициализации зависит от того, как записана переменная. Например getFoo() { return 'foo' } и getFoo = () => { return 'foo '; } будут инициализированы в разном порядке в классе. Было бы хорошо найти где это прописано в спецификации языка, но пока что все тут говорят что это "очевидно".

Убириание синтаксического сахара не поможет. Напримеh:


class A {
  getOne() { return 'One'; }
  getTwo = () => { return 'two'; }
}

Я ожидал, что getOne — это синтактический сахар, который эквивалентен getTwo. Но это не так, они будут инициализированы в разном порядке:


class A {
  getOne() { return 'one from A'; }
  getTwo = () => { return 'two from A'; }
  constructor() {
    console.log('getOne=' + this.getOne());
    console.log('getTwo=' + this.getTwo());
  }
}

class B extends A {
  getOne() { return 'one from B'; }
  getTwo = () => { return 'two from B'; }

}

new B();

Выведет


getOne=one from B
getTwo=two from A
Поэтапное создание класса выглядит не совсем так. B.constructor() будет вызван первым. Например если переписать B как:

class B extends A {
  name = 'B'

  constructor() {
    console.log('B constructor start');
    super();
    console.log('B constructor finish');
  }
}
new B();


То лог будет:
B constructor start
A
B constructor finish


И я согласен с автором, что это далеко не очевидно, что инициализация name в B происходит после вызова super().

К тому же, если переписать код и вместо переменной name использовать метод getName тогда работает так, как автор и ожидал:

class A {
  getName() { 
  	return 'A';
  }

  constructor() {
    this.log()
  }

  log() {
    console.log(this.getName());
  }
}

class B extends A {
  getName() {
  	return 'B';
  }
}

new B();
<source>

выведет "B". По моему личному мнению это не очевидно, что инициализация переменных и методов в классе происходит в разном порядке. Особенно учитывая что в JS разница между переменной и методом небольшая и в до ES6 классов методы и были переменными функциями.
В этом случае арендуйте сервер, настройте SSL (который уже похоже норма) и используйте godaddy как регистратора. На другом конце спектра CMS где cвой сайт накликивается с редактора, в этом случае владелец CMS что хочет, то и вставляет. Вопрос где на этом спектре находится godaddy и что понимается под хостингом. Я не знаю.
Раздули кипиш из ничего. Добавлять скрипты для измерение производительности страницы — стандартная и хорошая практика веб разработки. Хотите или не хотите, а на дворе 2019 год и на клиенте сидит значительная часть приложения и замерять ее надо.

И эта часть из оригинальной статьи:
I am not against web host providers monitoring how their servers are running. Using a technology like RUM is a great way to do it, but this is meant to be a passive technology that is invisible to the end user. Injecting JavaScript into pages being served is far from passive and, at least in my eyes, is a violation of trust between the web host and the customer.


Первая часть — бред. Мониторинг на клиенте такой же пассивный как и мониторинг на сервере. Пользователь его не видит. И оба не дают 100% гарантии того, что не ухудшат производительность или не положат страницу или сервер.

Но вопрос с доверием остается. Но тоже непонятно, если godaddy предоставляет какой-то UI-конструктор для создания сайта и они заправляют самим рендерингом html то ожидаемо, что они могут вставлять дополнительные части на страницы.
Да, строковые константы — это один из основных способов распутать код. Но uid — это очень общая утилитная функциональность. Она используется во многих не ui-ных классах closure library и вполне может использоваться в кастомных классах самого гмейла, особенно учитывая что скорее всего в гмейле свой фремворк и есть какие-то базовые классы, которые могут этот uid использовать. Наверное более точным будет наличие вот этих констант.
Не очень понятно как автор перепрыгнул от минифицированного кода к UI компонентам closure library и решил, что именно они и есть проблема. По опыту дебага минифицированного closure compiler'ом кода даже при наличии исходников не сильно просто сопоставить минифицированный код оригинальному, потому что closure compiler практически все переименовывает, инлайнит функции, передвигает куски функций. А когда дело идет о таком большом приложении как гмейл, то вообще должно быть очень сложно определить что ж конкретно делает код.

И кстати полифилы при максимальных настройках оптимизации занимают около 10-15кб не gzip'нутого кода. Это конечно не классно, но если говорить о 6мб ресурсов и предположить, что полифилы загружены только в одном js файле (ну или в паре-тройке), то вряд ли они являются большой проблемой.
Почти все комментарии про то, что «хватит ныть, у вас и так работа не настоящая», а вот по мне работа программистом гораздо легче, чем то, что описано в статье. Она достаточно предсказуемая (я знаю, что через месяц у меня все еще будет работа с такими же условиями и ожиданиями), более степенная (проекты разрабатываются степенно в рамках месяцев/лет), потока негатива от людей мало (если вообще есть) по сравнению с тем, с чем сталкиваются ютуберы. Сказка. Вообще если задуматься профессия ютубера — нравится миллионам людей. И нравится не за то, что они хорошо поют, играют, танцуют, а нравится своей харизмой. И постоянно создавать что-то новое, менять себя, подстраивать и не в течении лет, а быстро, каждую неделю. Снимаю шляпу перед людьми, которые на такое способны. Очень грустно, что это приводит к таким психологическим последствиям.
Я не очень понимаю, вы ожидаете что в очень высокоуровневом документа про принципы разработки ИИ будет указано кто должен управлять ИИ? По-моему «человечество должно всегда иметь контроль над ИИ» — наиболее подходящая формулировка. Или у вас другие предложения?
При чем тут Маск? Тема безопасности ИИ существовала и до Маска и книг достаточно про это написано.
Ага. Можно короче чем у Азимова: «Don't be evil». Такой предпочтете?
«Борьба с дискриманацией» не совсем удачный перевод принципа «Avoid creating or reinforcing unfair bias». Так что ваш пример не подходит тут. ИИ не должен дискриминировать (принцип) и ИИ будет использоваться для борьбы с дискриминацией (ваш пример) это 2 разные вещи.
В каком-то направлении, но не в разуме. Разум был и остается самым главным козырем человечества. Если его убрать (допустив что сильный ИИ появился), то это будет конец нашего превосходства. Позитивные сценарии в таком случае очень сложно придумать (у меня не получается).
Само стремление к выживанию не сильно важно. Если у ИИ будет какая-либо цель, то скорее всего для ее выполнения ИИ будет требоваться существовать, иначе как он может быть уверенным, что цель будет выполнена. И таким образом он будет самосохраняться.
«Используйте конструкцию var, когда она делает код более понятным и более кратким, и вы не теряете существенную информацию.» Совет на все сто, точно предотвратит плохое использование var. До этого программисты не понимали, как же использовать синтаксический сахар, но теперь наконец-то объяснили. Мог бы еще сказать «Пишите код правильно, читаемо и без ошибок», тогда и про тестирование можно было забыть. Я понимаю, что тут нельзя придумать объективный критерий для использования var, но его совет это смех.

Персонально, он не нужен. Пусть программист потратит лишние 3 секунды и напишет тип один раз, а я (и другие) зато смогу потом легко понять читая код 100500 раз после этого, что же вернула функция doFoo().
Молодцы, что до 2018 хотя бы продержались. Многие уже до этого сдались ради «читаемости».

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity