Gena
Есть такой заковыристы модуль @mapbox/react-native-mapbox-gl он при каждой установке лезет скачивать ios-sdk в preinstall фазе. Как можно выпилить этого? @gblack9 Я помню Вы что-то похожее делали когда-то
С таким никак не побороться, кроме как форкнуть... Но откуда-то этот SDK вам всё равно будет нужен. Я вот смотрю, в podspec - там использует тот, который скриптом качают, так что сам он и через cocoapods не поставится...
Dmitry
А с чем это связано? У приложений ведь есть доступ к оповещениям?
нельзя читать пуши чужих приложений, ты просто об них не узнаешь
Gena
хм. Да вот пробую сделать это без preinstall, ничего не ставится. Какой бы бубен не использовал. Спасибо
Хотя в принципе, у них есть SDK в cocoapods репо... Так что можно форкнуть (если не лень поддерживать форк, там на самом деле diff может быть и небольшой). Убрать preinstall, а в podspec прописать нормальную зависимость отсюда https://cocoapods.org/pods/Mapbox-iOS-SDK (вместо vendor_framework)
Gena
Но это только если проект cocoapods юзает, если нет... то конечно можно его закоомитить в репу прям в своем форке...
Gena
Но он его при этом всё равно качать же будет )
Andrew Kiselev
Да уж... в проекте нету подов
Gena
Ну тогда лучше и не связываться... проще коммитнуть в форк... там вот только точно больше никаких скриптов нет? будет ли он из форка (который без публикации в npm, а прям с github ставится работать)
Gena
Да, вроде нет... меня этот generate смутил
Andrew Kiselev
Я попробовал сделать установку без скриптов. Не запустилось, пишет что нет модуля. При том что этот mapbox.framework бросил вручную в ios. Так раньше делал с другой зависимостью
Gena
значит то, что они публикуют в npm registry не соответствует тому, что у них в репо, есть какой-то ещё шаг билда... плохо
Gena
Потому что форкать с паблишингом в npm... это муторно... приходится переименовывать модуль
Andrew Kiselev
Понятно. Там какие-то скрипты-скрипты. Короче муторная библиотека
Andrew Kiselev
у меня npm install делается по 10 минут из-за того что скачивает с s3 этот сдк, а yarn install вообще не заканчивается
Danila
Привет всем! Какие есть best practice по оптимизации приложения? Конкретно проблема с загрузкой экрана. Приложение заметно думает, перед тем, как сменить сцену
Danila
Может проблема в навигаторе? юзаю из react-native-deprecated-custom-components
Gena
Просто очень многое зависит от этого. Иногда, к примеру, достаточно все экраны обернуть в HOC, который сперва делает минимальный рендер, только декорации (без самого экрана), чтоб дать возможность начать анимацию с этим, а потом уже, в следующем цикле лэйаута полностью весь контент вставляет
Danila
1. понять, на что именно и как расходуется время 2. действовать в зависимости от п.1
да вот я даже тупо делаю просто один текст на сцене, и работает не так быстро, как например, в инстаграм. В инсте как-то вообще мгновенно
Danila
что за фишка с минимальным рендером?
Gena
У нас сейчас такая штука используется (но это было "лечение" конкретной проблемы) - кастомный таббар "мигал", т.к. был вставлен в каждый экран отдельно, когда в экране было много контента, время рендера было заметное для человека, а т.к. этот таббар был в самом конце, то появлялось мигание. Решили вот так: https://gist.github.com/vovkasm/581acd1da1b2426f103d72ff147e807e
Gena
Пример урезанный, но идея понятна, думаю.
Gena
да вот я даже тупо делаю просто один текст на сцене, и работает не так быстро, как например, в инстаграм. В инсте как-то вообще мгновенно
Это только лишний раз показывает один простой факт. Бесполезно что-то оптимизировать наугад и вслепую. Сперва - измерить, потом думать как и что делать.
Gena
в смысле ты сделал observable свойство внутри observer компонента и он обновился на onLayout? Это что за антистейтовщина?
Ааа... это отдельно интересная тема... ща я скажу страшное )) Если у вас mobx, то вам не только redux не нужен, но state/setState и прочее, что в react на эту тему есть. Дело в том, что observable в mobx это отдельная сущность - не важно где она определена (главное в объекте). И когда они трекаются в observer, autorun или reaction тоже неважно, где именно сами observable существуют, главное, что на них подписка произошла.
Dmitry
я догадывался
Dmitry
но чтобы настолько
Dmitry
это может изменить мир_)
Gena
Но при желании на setState легко переделывается... мне лень было адаптировать код просто для широких масс )
Gena
это может изменить мир_)
Чудес не бывает... это значит где-то внутри mbox есть глобально доступный реестр всех observable... это может вызывать проблемы в разных местах, имейте ввиду )
Dmitry
мне нравится паттерн, в котором стейт используется только для работы с визуализацией и то в меру
Gena
проблема современного setState, что он асинхронный
Gena
т.е. приходится довольно тщательно продумывать не только что туда засылать, но и как, в какой момент времени
Dmitry
ну mobx в этом плане гибче
Dmitry
он позволяет делать каскады изменений при единственном ререндере
Dmitry
так ведь получается можно и computed делать внутри компонент?
Oleksandr
Всем привет ребят! Какой ноут посоветуете бу 15” 2015 i7 2.2 или ню 15‘‘ 2018? Разница в цене почти $1к. Как думаете стоит ли периплачивать будет ли заметна разница при РН разработке?
George
xcode говорят быстрее на новых
George
пользуюсь 2к15, но не особо доволен быстродействием
Oleksandr
На 16гб?
George
да
George
если у тебя зп net 2k+ то думаю лучше брать последней модели
Oleksandr
Хмм
Oleksandr
А какие еще нарекания есть по роботе?
Gena
У вот таких MacBook Pro (Retina, 15-inch, Early 2013) (но это не то, что обсуждают) Там, где видюха NVIDIA GeForce GT 650M. Есть очень неприятные баги, то ли в железе, то ли в драйверах/firmware видео... Не рекомендую, если б/у берете. А по скорости он меня, к примеру, всем устраивает для ведения разработки под iOS (в том числе RN). А вот Android разработку, я всю перенес на стационарный комп... т.к. эмулятор + studio ну очень тормозили (в основном из-за потребления памяти) + OpenGL глюки у эмулятора, но это уже от видюхи зависит, на более новых может и не быть. + haxm под macOS немного с особенностями
Oleksandr
@gblack9 Большое спасибо за отличньій фидбек
Oleksandr
А сколько у тебя памяти 8 или 16?
Gena
Полный спек такой (был практически топом, когда я его брал, только по процу - жаба задушила): i7 2.7 GHz, 16Gb, 750Gb ssd
Andrew Kiselev
У меня 2015 pro на 16гб по нижней конфигурации. Все устраивает. Запускаю xcode, андроид и сервер одновременно. Главное место свободно 40гб иметь.
Andrew Kiselev
2 симулятора и емулятор норм тащит?
На девайсах запускаю обычно
Oleksandr
X и 18:9 нету (
Andrew Kiselev
Это в симуляторе. Тоже норм
Oleksandr
George
Всем привет ребят! Какой ноут посоветуете бу 15” 2015 i7 2.2 или ню 15‘‘ 2018? Разница в цене почти $1к. Как думаете стоит ли периплачивать будет ли заметна разница при РН разработке?
Разница будет заметна если будете использовать эмулятор. Я использую 2015 года + реальный девайс - тогда вполне норм получается. Хотя от нового все равно бы не отказался
ed.t
Народ, а что гуглить чтобы разобраться как сохранить изображение в фото после того как я сделал его pick с помощью https://github.com/react-native-community/react-native-image-picker
zamir
привет! ребят, когда шаринг делается там можно использовать нативную функционльность? ну то есть шаринг вглядит нативненько ?)
ed.t
Если не ошибаюсь, он отдает base64, в респонсе, как в доке. Так и сейвить, ну и в имедже показать
уже нашел, там uri есть, файл даже копируется, только у меня не выходит перенести в нужный альбом
ed.t
а кажется все, разобрался, спасибо)
zamir
А Вот такой же шаринг , можно сделать ??
Oleg
всем привет, кто как проверяет типы редюсера в в flow ? возможно я что то понял не так но кроме полей обьявленых в типе пишу левые поля и flow не ругается, пример export default (state:State = init, action:Action):State => { switch (action.type){ case types.GET_COINS_RESPONSE: return {...state, coins: action.payload, loading: false, refreshing: false} default: return state; } } возращать могу что угодно, если это обьект то на дополниетльные поля котрые не обьявлены в типе State flow не ругается как в таком случае проверять типы возвращаемые редюсерами ?
Vitaly
А Вот такой же шаринг , можно сделать ??
Очень похоже на какой-то кастомный шеринг. У рн открываюся нативные окна
Ramil
Если нужно сделать android ios приложение и desktop web приложение, RN правильный выбор?
Ramil
или смотреть на всякие framework7 и onsen ?
Oleg
да но я могу написать поле кторго нет в State и flow не будет ругаться, разве что я явно верну массив или простой тип, но на дополнительное поле не ругается к примеру
Oleg
Oleg
поле someFieldFoeExample не описано в типе State
Oleg
но flow на это не ругается
Preeternal
Покажите тип State
Oleg
export type State = { loading: boolean, refreshing : boolean, coins: Array<{ key:string, title:string, quotes:Array<Quote> }> }
Preeternal
Плюсики поставьте перед типами
Preeternal
+loading: boolean
Preeternal
И т.д.
Oleg
не помогло