Aleksei
да понятное дело, вот только вопрос "зачем" остается
ну вот пример) я вот например пишу мапперы на запросы (чтобы если что не менять весь код в случае изменения апи), с графкл это будет декларативно, там уже сам фреймворк все замапает за меня, чем я это буду делать это руками)
Aleksei
опять же, я еще не юзал, только в теории все это знаю и руки чешутся где нибудь попробовать)
Vladimir
Vladimir
Это я даже не буду говорить о том что и при работе с апи graphql тоже не серебрянная пуля и использовать его повсеместно не то чтобы рекомендуется.
Aleksei
вы рассматриваете конкретный случай, работа с апи понятно. Возьмем не клиент-серверное приложение. Работает само в себе. Зачем мне графкюэль тут?
я сейчас конечно нафантизирую 😄 так то по идее можно язык запросов с любым репозиторием (паттерн) юзать) но я такого не встречал (sql не считается, только если orm)
Vladimir
отлично, с вами все понятно, каким образом аполо то редукс заменяет?
Vladimir
у меня больше вопросов нет
Aleksei
В программировании вообще можно многое. Вопрос в том чтобы понять нужно ли :)
ну конкретно в случае аполло я вижу как декларативно убирают многие кейсы, которые в редакс-е нужно ручками делать (а я уж наелся в свое время), и как по мне это хорошо) на всякий случай поясню, я не топлю за аполло и графкл в частности, мне просто нравится как императивные вещи декларативными заменяют)
Aleksei
тут и не поспоришь 🙂
Anonymous
а такой вопрос. если через react-native init. есть подробный ман как подключить андройд к компу что бы на нем тестить?
Anonymous
просто ios можно на эмуляторе, но знаю что android так не прокатит
Michael
Ну жечь бабки глупых инвесторов — дело здравое
Michael
Плюс в копилку графкуэля есть
Aleksei
просто ios можно на эмуляторе, но знаю что android так не прокатит
прокатит, так же есть эмулятор, в доках все есть
Anonymous
прокатит, так же есть эмулятор, в доках все есть
а не сложно линк? в каких именно доках? к rn или к as?
Aleksei
а не сложно линк? в каких именно доках? к rn или к as?
https://facebook.github.io/react-native/docs/getting-started.html 👆 в разделе Building Project with Native Code как запустить на девайсе https://facebook.github.io/react-native/docs/running-on-device.html
Vladimir
Вы серьезно сравниваете фейсбук с их стреком и 99.99% остальных приложений?
Vladimir
Я могу вам лекцию прочитать почему фейсбуку нужен графкюэль.
Vladimir
А так же могу рассказать почему он не нужен абсолютному большинству приложений.
Aleksei
предлагаю не переходить на личности
Vladimir
Графкюэль это круто и мощно, если у вас есть очень много разных данных, и неопределенное количество консьюмеров, которые хотят эти данные в разной форме и количестве. Но это не только круто и мощно, а так же сложно, потому что требует суровой оптимизации запросов на бэкенде, вам нужно постоянно отслеживать тренды запросов чтобы оптимизировать кэш, делать дополнительную фильтрацию чтобы никто случайно не завалил сервер когда он у себя запросы полупил в тестовом приложении. И вы готовы с этим жить, ведь вы компания уровня фейсбука и у вас тысячи лучших инженеров в режиме 24/7 готовы заниматься поддержкой вашего бизнеса. И все это вам недоступно если вы небольшая компания или инди разработчик. Но есть плюс. Вам это все не нужно. Скорее всего у вас очень скромный бэкенд в который вы складываете некоторое конечное число данных и один клиент - ваше приложение. Ну может еще веб. И этот кейс прекрасно закрывается старым добрым рестом. Несколько эндпойнтов, оговоренная схема. Поменялась схема? Ну да, боль, придется вести версионность, увеличивается кост поддержки. Ваше приложение выросло до миллиона пользователей? Хочется поддержки приложений не месяц, а год? Добро пожаловать в аполло.
Vladimir
Графкюэль это классический случай преждевременной оптимизации. У вас еще нет проблемы, но вы думаете как ее решить, вместо того чтобы решать реальные проблемы ваших пользователей.
Dan
Объясните плиз человеку не в теме(статью не читал) graphQL живет на триплетах?
Aleksei
Графкюэль это круто и мощно, если у вас есть очень много разных данных, и неопределенное количество консьюмеров, которые хотят эти данные в разной форме и количестве. Но это не только круто и мощно, а так же сложно, потому что требует суровой оптимизации запросов на бэкенде, вам нужно постоянно отслеживать тренды запросов чтобы оптимизировать кэш, делать дополнительную фильтрацию чтобы никто случайно не завалил сервер когда он у себя запросы полупил в тестовом приложении. И вы готовы с этим жить, ведь вы компания уровня фейсбука и у вас тысячи лучших инженеров в режиме 24/7 готовы заниматься поддержкой вашего бизнеса. И все это вам недоступно если вы небольшая компания или инди разработчик. Но есть плюс. Вам это все не нужно. Скорее всего у вас очень скромный бэкенд в который вы складываете некоторое конечное число данных и один клиент - ваше приложение. Ну может еще веб. И этот кейс прекрасно закрывается старым добрым рестом. Несколько эндпойнтов, оговоренная схема. Поменялась схема? Ну да, боль, придется вести версионность, увеличивается кост поддержки. Ваше приложение выросло до миллиона пользователей? Хочется поддержки приложений не месяц, а год? Добро пожаловать в аполло.
я если честно не понял про оптимизацию запросов) можно для dummy?)
Dan
я если честно не понял про оптимизацию запросов) можно для dummy?)
Если мое предыдущее утверждение верно рискну предположить что предикатов в какой то момент становится слишком дохера, и там член чо найдёшь)
Vladimir
я если честно не понял про оптимизацию запросов) можно для dummy?)
с клиента ты делаешь запрос на то что хочешь получить. Сервер получает этот запрос и пытается понять откуда он эти данные может получить. Они могут лежать на разных инстансах, в разных базах, как угодно. И тут возникает вопрос как достать данные так чтобы минимизировать число запросов и при этом отдать данные как можно быстрее. То есть по сути это маппинг виртуального запроса в реальные. А еще хорошо бы чтобы это кэшировалось. А так как данные разные из разных источников, то валидность кэша тоже боль, непонятно как держать его консистентным.
Vladimir
Еще раз. Это все здорово и кому-то нужно. Но нужно понимать зачем оно нужно тебе, прежде чем использовать это и тем более рекомендовать это кому-то.
Vladimir
да
Aleksei
нуу, хороший поинт 🙂
Vladimir
То есть тому же фейсбуку очень удобно с плавающей схемой, вместо поддержки сотен эндпойтов, с десятками версий, которые отдают тонны данных они просто оптимизируют популярные запросы графкюэля. Но это просто не нужно большинству приложений.
Vladimir
под тобой я не имел ввиду конкретно вас, это оборот речи который я использовал для ассоциации читателя с моим сообщением.
Vladimir
Ну и наша дискуссия родилась именно с вашего утверждения про то, что аполо ультимативная замена редуксу. Я не против ни того, ни другого. И у редукса проблем не меньше, чем у любой другой технологии. Но нужно быть объективнее в своих отверждениях. Вас здесь читают полторы тысячи человек, ведь кто-то может поверить вам на слово :)
Vladimir
мы скатываемся в безинформативный оффтоп, предлагаю закончить на этом
Demuz
Подскажите, а как обычно реализовывается механизм отображения названия ближайшей точки на карте в RN maps? Например, передвигаю карту в другое место, срабатывает onRegionChangeComplete, возвращает мне новые координаты, а вот как показать то же название ближашей дороги, относительно этих координат?
Musлим
Я просто получал координаты, менял их в стейте и шел к гуглу с запросом
Demuz
У гугла ведь апи предоставлено, разве рнм это задачу решает
Думал может есть встроенное решение. Сейчас Google Places смотрю.
Musлим
Рнм это же юай, условно говоря
Demuz
Рнм это же юай, условно говоря
Согласен. А вы через GooglePlaces именно делали? Что-то у меня в моих местах результатов нет. А с координатами с примеров есть результаты.
Demuz
А не, не, все, с примера просто скопированные теги были в запросе, типа тип поиска - ресторан, ключевые слова такие то )))) Убрал и все находит. Класно.
Demuz
Охренеть сколько чувак всего сделал, чтобы просто залогиниться, это ппц просто. Чуть не блеванул пока смотрел.
Anonymous
А если без Expo, а через react-native init. как можно быстро поделиться приложением с заказчиком, что бы он его потестил
Никита
собрать apk для андроида на ios использовать что нибудь из разряда testflight или fabric. Если не ошибаюсь обязателен аккаунт разработчика
Владимир
const token = await api.post('/login', login, password) на клиенте и десяток строчек из доки паспорта на сервере, как-то так
Demuz
Demuz
На сервере типа того: user := User context.ReadJSON(&user) if err := api.db.First(&user).Error; err == nil { user.Session.Set('authenticated') = true } Всё.
Demuz
А на сервере?
Demuz
Ну а на сервере покажите, тоже посмотрю. Я выше показал реализацию на го, правда я несколько моментов там не написал, типа создание инстанса коннекта к базе и динамического раута.
Demuz
Ты есть, вы его сами не писали?
Vit
Ты есть, вы его сами не писали?
а че надо самому писать?)
Demuz
Никто этого не говорил.
Vit
у заказчика денег не хватит)
Demuz
Ну это хорошо, только помоему, если я не ощущаю потребности в этом, то наврятли мне это нужно. Может вещь и хорошая, но я сам привык писать.
Vit
призма говно кстати)) не знаю че Димка так радуется)
Demuz
На сервере типа того: user := User context.ReadJSON(&user) if err := api.db.First(&user).Error; err == nil { user.Session.Set('authenticated') = true } Всё.
Я просто не считаю вот такое вот описание на серверной стороне какой то сложной.
Vit
дальше туду-апп на два пользователя не сделаешь)
Vit
я сам такой) отобьюсь)
Vit
графкуль от аполло в оптимистичной фазе круто конечно, но тоже пока не оч)
Vit
представьте что вот на этом экране поезд метро медленно заезжает в туннель)
Vit
кто скажет что произойдет?)
Vit
никто) а произойдет следующее
Vit
сеть есть но инета уже нету - фетч из аполы повиснет в бесконечном запросе (потому что без таймаутов) и приложению телефон не скажет что сеть и интернет уже появились когда появятся и приложение повиснет в бесконечном запросе (если на экране нет кнопки рефреша запроса)
Vit
его останется только убить из таскменеджера)
Vit
пока как вариант - сделать из аксиоса проксю с интерфейсом фетча и скормить эту конструкцию аполе
Vit
Локальный стейт это конечно прорыв. Нельзя отрицать.
Demuz
Каждому свое.
Eugene
Eugene
привет. <TextInput style={{backgroundColor: 'white', textAlign: 'center', width: '100%'}} onChangeText={(val) => console.log(val)} underlineColorAndroid='transparent' value='' autoFocus = {true} />