Serge
*шепотом* е2е тесты должны писать тестировщики
А CI/CD настраивать девопсы. Но в моей маленькой компании приходится делать всё.
Serge
А насчет "должны"... Мне интересно было этот один экран обложить тестами. И ценный навык и опыт в процессе получен. Ценность как специалиста выросла. Сплошной профит.
Serge
Но вообще большей часть этот огрызок детокса подключен, чтоб при обновлении Реакт Нейтива убеждаться, что детокс продолжает работать. А то он иногда на минорную версию отстает.
Serge
Ну не то чтобы должен. Но крайне желательно. Хотя черт его знает, если бы была большая команда с десятком или больше людей, то и разделение ролей было бы.
ana 🪢
когда большая команда, у меня куча времени уходит на код ревью (не нравится)
Serge
когда большая команда, у меня куча времени уходит на код ревью (не нравится)
Если приучить коллег делать коммиты и МРы особым образом, то кодревью можно сделать довольно безболезненным.
Serge
Коммиты дробить до логических чанков, рефакторинги отдельно, движения кода без изменений отдельно, качественные изменения кода отдельно. МРы дробить, вынося подготовительные куски в отдельные МР.
Serge
С двумя коллегами мне было норм. С миддлом и джуном. Сначала мы даже созванивались, чтоб автор МРа рассказывал попутно, что он там и ПОЧЕМУ сделал.
Serge
И покоммитный кодревью тоже часто облегчает процесс.
Serge
С двумя коллегами мне было норм. С миддлом и джуном. Сначала мы даже созванивались, чтоб автор МРа рассказывал попутно, что он там и ПОЧЕМУ сделал.
А потом созвоны стали реже. Или им надоело в край, или прокачались и созвоны стали не нужны. Надеюсь, что второе.
ana 🪢
я вообще созвоны не люблю
ana 🪢
у меня стресс)
Serge
но это идеальный мир всё таки
Это входит в привычку после пары-тройки месяцев настойчивых замечаний от ревьювера.
Serge
Когда в одиночку пилишь, сложновато за этим следить... Лень
Угу, речь прежде всего про командную разработку.
Serge
У моей компании один продукт, рассчитанный на долгое время поддержки, поэтому требования к качеству имеют смысл.
ana 🪢
Это входит в привычку после пары-тройки месяцев настойчивых замечаний от ревьювера.
думаю, что меня скорее просто игнорили бы, эти крутые ребята-фронтендеры
ana 🪢
чем слушались
Serge
Меня взяли как сеньора (хоть едва и переросшего на тот момент миддла), а коллеги -- миддл и джун.
Serge
И все свои замечания я писал, никогда не аппелируя к авторитету, а объясняя и разъясняя свою позицию пока не поймут.
Serge
Миддл прокачался, чему я очень рад :3
Serge
И есть ли у вас прям необходимость в качестве кода?
ana 🪢
у нас нет должностей) просто есть разрабы ходячий опенсорс (которым уже все равно, лишь бы работало), а есть кому не пофиг
Serge
у нас нет должностей) просто есть разрабы ходячий опенсорс (которым уже все равно, лишь бы работало), а есть кому не пофиг
Если ты выкачала оттуда максимум навыков, то самое время поискать другие варианты.
Serge
С кодревью круто. Это очень повышает уровень.
ana 🪢
На удалёнке?
нет) мне тут нравится. я хочу все автоматизировать до максимума - тесты и ci для начала) и с ревью двояко - мне ревьюить не нравится никого. но меня пожалуйста минимум 2 человека) это неправильно, но никто вроде не протестует
Serge
А как чанки отдельно делать?
Продвинутые гитовые скиллы. Начните с git add -p, потом с редактированием чанков, и т.д.
Serge
нет) мне тут нравится. я хочу все автоматизировать до максимума - тесты и ci для начала) и с ревью двояко - мне ревьюить не нравится никого. но меня пожалуйста минимум 2 человека) это неправильно, но никто вроде не протестует
Хороший подход. Но ревьювить рано или поздно пришлось бы научиться. Это же пресловутое "умение разбираться в чужом коде", которое только ленивый не требует.
Eugene
А то так хочется moment из проекта выпилить, вы бы знали
+ А потом затащить дейтпмкер или календарь у которого под капотом moment )
Dmitry
А кто нибудь юзает RNN v2 где drawBehind у bottomTabs работает?
Dmitry
мне интересна версия пакета
Alexander
А с версии 0.58 до 0.59 какой командой теперь апгрейдить? Старым react-native-git-upgrade?
чей ты
А кто нибудь юзает RNN v2 где drawBehind у bottomTabs работает?
У меня почему то с первого раза не срабатывало Но я просто при монтировании компонента мержил опцию ещё раз drawBehind
Dmitry
Я на 2.7.х делал
да тут другое, application has not been registered
Denis
🎉❤️🌍 Wow! Друзья, специально для участников сообщества React.js ( @react_js ) и React Native ( @reactnative_ru ) в Telegram объявляем розыгрыш билетов на конференцию React Amsterdam, которая является одной из лучших ежегодных конференцией по React.js в Европе (и самой крупной в мире!). В этом году программа традиционно очень насыщенная (спикеры из PayPal, Facebook, GitHub, Amazon, Zeit и тд), включает даже GraphQL-митап. Официально конференция пройдет 12 апреля, а это значит есть целый месяц, чтобы получить визу, забронировать отель и взять отпуск. 🙂 Для участия в розыгрыше необходимо заполнить форму, торопитесь: https://goo.gl/forms/ldrIlO5aAz2AbDmK2
Поздравляем счастливчиков с выигрышем! Куделько Костя Mikhail Bobrutskov stanislav shakirov Если они по каким-то причинам (например, не успеют оформить визу или взять отпуск за 14 дней, хотя за 14 дней можно взять и бессрочный отпуск 😉 ) не смогут воспользоваться выигрышем, билет будет передан согласно приоритету: Фаррахов Вадим Олеся Бельмега Дмитрий Крылов Расул Арсланов Ayaulym Alzhanova Карелин Александр Sergei Rumiantsev Друзья, спасибо всем, кто принял участие! До встречи на конференции! Скринкаст розыгрыша https://monosnap.com/file/KYdga2iW9ld5ZegomfsLJTSmfaKOiN
Dmitry
Я на 2.7.х делал
поставил 2.7.1 - никакой реакции
AleX
Парни привет... Сделал eject expo. Устанавливаю нативный пакет, линкую его, но выходит ошибка 'React/RCTView.h' file not found
Gena
А за счет обновленного JSC оно у вас раздулось?
Мне не с чем сравнивать, мы только дошли до портирования на андроид, я вот сейчас только запускаю, предидущий раз приложение компилилось под него год назад, когда только начинали... Сейчас, но ещё не написана часть нативного кода, не все модули подключены (нет react-native-firebase, коннекта в социалки, шаринга и react-native-maps) и не тюнились параметры для релизной сборки типа сплита и ProGuard/R8: - ./gradlew app:assembleDebug выдает apk на 24Mb, - ./gradlew app:assembleRelease дает один apk на 26Mb Дальше Intl, если Android единственная платформа, можно пробовать. Если нет, то увы, в iOS используется системный jsc, который отличается от версии к версии... в частности в iOS9 (жив за счет того, что есть iPhone 4s и некоторые планшеты, которые больше не обновляются, но в большом кол-ве на руках у пользователей) в JSC нет почти ничего из Intl (не помню, может и Intl нет)
Gena
Собирался сегодня сделать... проверю.
Не проверю... Xcode 10.2 хочет Mojave, а я не хочу... но теперь придется, т.к. новые SDK в 10.1 врядли завезут ( Но апдейт macOS - это долго... так что придется подождать )
Gena
А вот ещё, кто знает, RN последних версий поддерживает dynamic import? Т.е. если я напишу if (some condition) { import('myModule').then((mod) => { ... some logic with loaded module ... }) } Эта штука не будет пытаться интерпретировать myModule (выполнять топ-левел код из него) если some condition === false?
Serge
А с версии 0.58 до 0.59 какой командой теперь апгрейдить? Старым react-native-git-upgrade?
https://facebook.github.io/react-native/docs/upgrading либо вручную обновить версии пакетов, свериться с 0.59 чейнджлогом, а потом вручную же обновить темплейты, смотря на rn-diff-purge (вариант Alternative по ссылке).
Serge
Мне не с чем сравнивать, мы только дошли до портирования на андроид, я вот сейчас только запускаю, предидущий раз приложение компилилось под него год назад, когда только начинали... Сейчас, но ещё не написана часть нативного кода, не все модули подключены (нет react-native-firebase, коннекта в социалки, шаринга и react-native-maps) и не тюнились параметры для релизной сборки типа сплита и ProGuard/R8: - ./gradlew app:assembleDebug выдает apk на 24Mb, - ./gradlew app:assembleRelease дает один apk на 26Mb Дальше Intl, если Android единственная платформа, можно пробовать. Если нет, то увы, в iOS используется системный jsc, который отличается от версии к версии... в частности в iOS9 (жив за счет того, что есть iPhone 4s и некоторые планшеты, которые больше не обновляются, но в большом кол-ве на руках у пользователей) в JSC нет почти ничего из Intl (не помню, может и Intl нет)
В 0.59 JSC обновлен для обеих платформ, если не ошибаюсь. В чейнджлоге были даже дополнительные шаги описаны для апгрейда. При этом есть две версии JSC: с полной поддержкой Intl и без нее, при этом первая на несколько метров больше весит. В своем проекте я буду версию с Intl подключать.
Serge
А что было с детоксом? И как починили?
Serge
Мне не с чем сравнивать, мы только дошли до портирования на андроид, я вот сейчас только запускаю, предидущий раз приложение компилилось под него год назад, когда только начинали... Сейчас, но ещё не написана часть нативного кода, не все модули подключены (нет react-native-firebase, коннекта в социалки, шаринга и react-native-maps) и не тюнились параметры для релизной сборки типа сплита и ProGuard/R8: - ./gradlew app:assembleDebug выдает apk на 24Mb, - ./gradlew app:assembleRelease дает один apk на 26Mb Дальше Intl, если Android единственная платформа, можно пробовать. Если нет, то увы, в iOS используется системный jsc, который отличается от версии к версии... в частности в iOS9 (жив за счет того, что есть iPhone 4s и некоторые планшеты, которые больше не обновляются, но в большом кол-ве на руках у пользователей) в JSC нет почти ничего из Intl (не помню, может и Intl нет)
К слову, использую у себя R8. Все классы уместились в один dex-файл, так что в релизной версии я у себя даже multidex отключил :3
Serge
👍
AleX
Сталкивался кто с ошибкой :'React/RCTView.h' file not found?
AleX
Да. Реакт залинковать вручную?
AleX
Я хз) выше ответ залинковать вручную) я новенький в этом и не понимаю до конца
AleX
Благодарю! Я попробую
Gena
В 0.59 JSC обновлен для обеих платформ, если не ошибаюсь. В чейнджлоге были даже дополнительные шаги описаны для апгрейда. При этом есть две версии JSC: с полной поддержкой Intl и без нее, при этом первая на несколько метров больше весит. В своем проекте я буду версию с Intl подключать.
Я этого не вижу в коде. Вот jsc для Android готовится: https://github.com/facebook/react-native/blob/0.59-stable/ReactAndroid/build.gradle#L136-L163 А где для iOS? Уверен, этого нет в коде... в iOS они просто используют стандартный фреймворк вот здесь, например линкинг с ним: https://github.com/facebook/react-native/blob/0.59-stable/React.podspec#L136
Gena
Дальше, насчет jsc с Intl... я не уверен, что они его научились собирать правильно... но туда я давно не смотрел... именно обнаружив, что они это не умеют, я некоторое время назад взялся разбираться, как оно устроено и начал делать альтернативную систему билда... но время быстро кончилось как водится и оно так и зависло ещё на билде icu... так вот, сбилдить icu под мобилку так чтоб работало (а от этого критически зависит intl в jsc) и было эффективно - это сама по себе очень нетривиальная задача. Вся проблема в файлах данных. Либо их встраивать в бинарь и тогда icu билдится очень просто, но эти данные дублируются для каждой архитектуры, либо вытаскивать отдельно, но тогда куча проблем с тем, куда их положить и как сказать icu где они лежат. Потому что этот процесс сам icu не контролирует, и jsc не контролирует... а только оконечное приложение...
Gena
Можно попробовать опции на inline requires, которые топовые импорты сами сделают ленивыми. В блог-посте про RN 0.59 про это написано.
Я вот как раз не хотел это пробовать... потому что... ну в общем, это опять выглядит как кривая поделка... сперва мы всё грузим по отдельности, а потом собираем какими-то хаками в коде необходимые для начального старта модули, а потом их где-то перечисляем извне... и после получаем оптимизированный проект... Это очень странная система в стиле фейсбука, так чтоб мегабайты своего говнокода не трогать. И наоборот, очень понравилось как к этой проблеме комьюнити в вебе подходит. В webpack 4, например, точки разделения кода - это как раз динамические импорты... Но вопрос был в другом. Я сейчас уже могу написать require вместо import и тогда топ-левел код требуемого модуля будет выполняться только в момент исполнения require. Но так не очень удобно с typescript... там require надо специально типизировать... Вот я и подумал, что может import('mod') работает... тогда я могу в нужном месте его использовать вместо require, а то, что он асинхронный интерфейсно, мне не очень важно, это там даже более естественно выглядит...
Dmitry
К слову об использовании styled-components, мало того, что они накидывают собственных стилей (видимо, как они считают, базовых), которые могут сломать ваши стили, так еще и создают избыточную структуру. const FlexView = styled.View` flex: 1; background-color: red; `;
Dmitry
Dmitry
в то время какиспользование обычных style работает ровно так, как нужно. <View style={{ flex: 1, backgroundColor: 'green' }} />
Dmitry
Serge
Они разве что выглядят как CSS с кебаб-кейсом вместо кэмелкейса как в Реакт Нейтиве.
Serge
А через StyleSheet.create стили недекларативно выглядят?
Valera
А в чем плюс использование styled-components в Реакт Нейтиве? В нем же и так StyleSheet.create из коробки?
ThemeProvider? это что в голову пришло. чет не очень понимаю как это со стандартными StyleSheet.create можно сделать
Serge
ThemeProvider? это что в голову пришло. чет не очень понимаю как это со стандартными StyleSheet.create можно сделать
Это чтоб темный режим у всей приложухи сразу сделать? Хм... не думал об этом.
Valera
а как ты тему прокинешь в StyleSheet? при условии что она может меняться в ходе выполнения приложения. кейс не особо частый, но все же
Serge
Навскидку я бы через сервис сделал и оберткой над StyleSheet.create.
Serge
А классы стилей -- геттеры. Которые читают текущую тему из сервиса и отдают обычный стиль и темную/светлую добавку на выбор.
Serge
А всё пихать в redux...
Serge
Редакс -- не золотой молоток.
Dmitry
А всё пихать в redux...
не все, а тему