Pull to refresh
17
0
Виталий @vitvad

Пользователь

Send message
проблема этого кода
let arr = new Array(5).map(function() { return new Array(5); });

не в методе создания массива, а в методе `map`
первый же абзац говорит что `map` не вызывает callback если значение в массиве не было инициализированно. Но про этом если присвоить элементу массива `undefined` это считается проинициализированным.

var ar = new Array(5);ar[2] = void 0; ar.map((v,i) => console.log(v,i)) // undefined 2

в итоге немного изменив код получим желаемый результат


new Array(5).fill(void 0).map(() => new Array(5));
просто реакт заявляет об обратной совместимости и «мы не такие как ангулар», но при этом переход с 15+ на 16 для основной массы готовых библиотек и компонентов занял пол года, это при том что там впринципе не было ничего сверхестественного только Props вынесли и еще по мелочи (я говорю с точки зрения совместимости старого кода, а не про новый Fiber), а тут изменение API которому 100 лет в обед и на которое, я уверен, завязано достаточно много логики в старом коде, и мне кажется, обновляться они будут еще дольше + не будет возможности обновить библиотеку компонентов на последнюю версию, сохранив старую версию реакта.

Объединение componentWillMount и componentWillReceiveProps под одним getDerivedStateFromProps имеет смысл, что бы убрать дублирование кода.

Если говорить без привязки к фреймворкам наличие у компонента
хуков
— init

— willGetParams
— shouldChange?
— willMount/willUpdate
****** render
— didUpdate

— willUnmount
добавляют гибкости. Даже в ангуларе они появились.

P.S. вобщем у меня смешаные чувства по поводу грядущего обновления, и мне кажется что он принесет больше пробем чем пользы.
одному мне кажется очень странным удаление хуков componentWillMount & componentWillUpdate ?
К сожалению, заказчик остановил проект… Поэтому в свет не вышел даже прототип.

у меня тоже не складывается все единую картинку. Как можно говорить о цене и точности конечного продукта у которого не было даже прототипа.
ожидание и реальность
image
в продолжение к статье возник вопрос:
— дядя Боб смержил код к которому есть достаточно притензий, мы все такие на белом коне, ворвались и выровняли ситуацию с назревающим конфликтом. Но как выровнять ситуацию с кодом? В рамках каких задач заставить этого человека отрефакторить только что смерженый код?
— писать //TODO в коде? Нет ничего более постоянного чем временное — тудушки будут только множиться в коде и контекст задачи уже потеряется к моменту рефакторинга
— оставить как есть? Тогда зачем код ревью вобще проводить

мне кажется в подобной ситуации есть только один вариант решения:
«у меня очень много коментариев, давай устроим парное программирование и улучшим этот код вместе»
вот и настал век программирования на смайликах...
поясню сразу почему мне кажется это логичным:
— люди которые вырастили эту компанию скорее всего имеют долю таланта и упорства иначе врядли на одной идее они бы превратили стартап в большую компанию
— так как они в компании довольно давно, они повзрослели, обзавелись семьями и вопрос денег для них не стоит остро (они получили довольно много после того как эта компания выросла и прошла IPO) и на первый план встали интерес к тому чем ты занимаешься и насколько удобно тебе там работать
— резкое изменение в повседневной жизни могло бы стать толчком для еще более кардинальных изменений (к примеру проект мне нравился, но я работаю на нем уже N лет, и я бы сменил работу, но нет последнего толчка для этого)

а для компании такая логика может вылиться в проблемы:
— с одной стороны вы получаете тех кто хочет у вас работать, но у них скорее всего нет полного списка скилов и знаний о вашем проекте
— с другой вы имеете шансы потерять тех кто имеет все знания по проекту и уже обладает всеми знаниями

почему вы так считаете? я вполне согласен с тем что написано
в G5 модули через одно место сделали… что-бы вставить модуль телефон прийдется выключить. И отсоединять их очень тяжело. Мото сделал модули намного адекватнее, прилепил и поехал. при этом не нарушая гермитичность корпуса.
немного не в тему:
недавно наткнулся на достаточно интересную альтернативу react-bootstrap вплане компонентов из коробки
ant.design
лично мне понравилось что есть вполне достойный coverage и множество компонентов из коробки. Та же таблица достаточно «конфигурабельна»

Решение описанных проблем — отказаться от использования нотификаций в пользу более удобных механизмов.

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

только что наткнулся на статью Progressive Web Apps with React.js от Addy Osmani, довольно занимательная, но там в комментариях есть интерестный модуль react-async-component который собственно должен решать все поднятые вопросы (сам еще не пробовал, если кто-то имел дело интерестно знать впечатления)
В третьем react-route были хуки типа `onEnter` которые можно было использовать к примеру, если есть авторизация или подгрузка бандла с кодом для соответсвующей страницы. У меня лично попытка мигрировать на 4ю версию вызвала много-много нехороших слов в ee адресс.
Сейчас к сожалению не вспомню на что еще натыкался…

Кроме того документация хоть и выглядит красиво, ИМХО не дает ответы на возникающие вопросы, и ведет на страничку где ребята предлагают вам свои же платные курсы…
флаг --no-save. Но автоматическое сохранение все же удобнее
а в document.title для IE «по быстрому» отладчик не прикручивали? :)
А чтобы ответить по такому радио один из проводов нужно взять в зубы ...
у нас радио-точка была 110В, там было бы достаточно громко слышно :)
 window.requestAnimationFrame(() => {
        window.requestAnimationFrame(() => this.setState({ shouldRender: true }));
      });


я вот только не понял, зачем оборачивают в RAF 2 раза?
<offtop>
Интересно, а кто-то пользуется Signal Private Messenger?
я когда вижу у приложения которое по идее должно использовать только интернет, контакты и storage пачку непонятных запросов:
— set wallpaper
— record audio
— camera access

у меня сразу возникает чувство паранои
</offtop>

9. NoRoot Firewall

есть два аналога NetGuard и AFWall у которых хоть есть сорцы открытые на гите
первый работает так же через VPN второй через IPtables
почему-то мне казалось что XMLHttpRequest не доступен в WebWorker, спасибо что развеяли мое заблуждение.

Information

Rating
Does not participate
Location
Украина
Registered
Activity