Sergey
Какие из них опциональные?
Sergey
Открывать файл с 300 тестами и читать все чтоб понять?
🐏 Alexander
function get(user) {} какие поля у user?
ты же не так давно говорил, что типизация херня ненужная, хорошему коду типизация не нужна 🙂
Vladimir
Effector, reatom
а есть на реатоме репозиторий с полноценным приложением?
Oleg
аргумент «покрытия тестами» не совсем оправдывает отказ от «покрытия типами»… как бы немного разные сопсобы повышения качества кодовой базы и удобств разработки
конечная ценность / единицу затраченного времени внедрения типов ниже при наличии тестов, чем при их отсутствии - вот и все что я имел ввиду
Sergey
Oleg
Открывать файл с 300 тестами и читать все чтоб понять?
открывать файл с типами чтоб все понять? Или у вас все в одном файле пишут? В чем разница то?
Sergey
Просто есть тип User и видишь сразу все его поля
Sergey
Не надо читать каждый тест
Ilya
херово у вас тесты значит пишут, раз по них нельзя понять как работает тестируемая сущность
ну с одной стороны - хорошие тесты, чисто механически помогают понять что да как и это здорово. но с типами - это во-первых концептуальное описание, во-вторых это встроено тупо в интелектуальные средства разработки и через Ctrl+click ты можешь быстренько понять что да как (как в таком режиме использовать текст тестов - я не могу понять)
voix
В 2019 не использовать типизацию (пусть даже на уровне контрактов тайпскрипта) - удивительно.
Sergey
Ладно. Человек просто не знает как писать с типами. Со временем поймет, что некоторые тесты которые проверяют типы аргументов можно не писать если есть типизация
Oleg
Просто есть тип User и видишь сразу все его поля
Ну и что? Я нигде не отрицал что понимание кода повышается. Речь шла о надежности приложения
🐏 Alexander
еще бы тесты писали так же понятно, как типы, а то некоторые тесты пишутся чтобы они просто проверялись, а не читались человеком, вообще тесты писать оооочень сложно
Sergey
Закрываем этот тред
voix
Это, конечно, не функциональная система типов хиндли-минлера и тот же тайпскрипт с рамдой не очень дружил (не знаю как сейчас), но что есть.
Oleg
почему линт ругается?
Ivan
Всем уо. Подскажите за next — у меня есть, например, 100 .md файлов, которые я загружаю через @next/mdx. Я хочу замутить из них 100 статических страничек, чтобы ssr-оптимизация во все поля. Я или описываю каждую страницу из сотни со статическим импортом или next водит мне болтом по губе, я правильно понимаю?
Ilya
почему линт ругается?
передаваемый массив не соответствует типу DependencyList который в свою очередь ругатся именно на то что массив должен быть readonly
Ilya
передаваемый массив не соответствует типу DependencyList который в свою очередь ругатся именно на то что массив должен быть readonly
выделите массив в переменную отдельную и строго установите для нее тип с readonly потом передавайте как аргумент функции ну или по месту используйте as readonly *[] (если кодстайл разрешает)
Ilya
я так и подумал сначала. но как он детектит, что он ридонли? я его не меняю. а, или...
ну массив по-умолчанию с точки зрения TS не readonly т.е. когда вы его инстанцируете в ленивом синтаксисе (через квадратные скобки - по месту) то подразумевается new Array… и тип его инстанса который не readonly
Alexey
deps как объявлен?
Ilya
ну короче, я могу забить на этот ворнинг? я так понимаю, он бесполезен.
ну type signature leak тут нет - но ворринг в принципе оправдан, целевой тип описан «шире» чем вы намереваетесь его применить тут смысл в том, что раз тип установлен таким образом - возможно там подразумвается какая-то обработка ошибок по попыткам «мутировать» этот массив, эти попытки вполне лигитимные и это часть валидной бизнес-логики
Ilya
Давайте не будем заниматься словоблудием. Одна ведь вода.
вы мне помниться так и не дали ссылку на таблицы со сложностями алгоритмов по методам… я что-то так и не нашел. выходит что все что вы там писали про них - такая же вода ?
Ilya
по этому давайте не будем делать замечаний, и давать свои характеристики бестолковые.
Andrey
по этому давайте не будем делать замечаний, и давать свои характеристики бестолковые.
Если ты не умеешь пользоваться гуглом - это твои проблемы.
Andrey
по этому давайте не будем делать замечаний, и давать свои характеристики бестолковые.
Обращение на Вы в современном обществе - признак шизофрении.
Ilya
Скорее, плохого воспитания ))
Ilya
Если ты не умеешь пользоваться гуглом - это твои проблемы.
можно попросить вас, еще раз, для растыки-растудыки меня - дать прямую ссылку на какую ни будть такую таблицу (сложности алгоритмов по методам в JS публикуемую от стандарта или хотя бы от разработчика какого ни будь движка (желательно V8)) а то ну мне без вашей помощи совсем не обойтись.
Sergey
а есть на реатоме репозиторий с полноценным приложением?
Примеров пока мало (не хватает времени). В частности есть простой todo и немного навороченный (чисто для эксперементов). Сейчас доку допиливаем перед релизом. Вопросы по разным кейсам можешь задать в @reatom_ru 😉
Ilya
Обращение на Вы в современном обществе - признак шизофрении.
хочется верить что ваши родители и более старшие родственники - разделяют ваши взгляды, по постановке клинических диагнозов. и обращание к ним в форме «ты» не коим образом в подобном формате (форума) их не будет уязвлять.
Anonymous
Привет. Вопрос. При авторизации у меня refresh и access токены вылетает. Далее пытаюсь установить интерцептор axios, при истичении срока access токена, у меня запрос на рефреш и туда нужно передавать старый рефреш токен и user_login. Логин не могу получить потому что не юзаю редакс, refresh я пишу в локалсторадж, можно ли туда user_login записать или плохая идея ? Или в куки ?
Vladimir
Примеров пока мало (не хватает времени). В частности есть простой todo и немного навороченный (чисто для эксперементов). Сейчас доку допиливаем перед релизом. Вопросы по разным кейсам можешь задать в @reatom_ru 😉
спасибо. Я просто не первый раз уже наблюдаю, как его рекомендуют в качестве СТМ, но примеров кроме туду-листа на нем не видел. Даже с базовой асинхронностью например
Alex
Обращение на Вы в современном обществе - признак шизофрении.
А я до сих пор на «Вы» к людям, даже к тем, кто абсолютно точно младше меня. Надо жене сказать, что я шизофреник оказывается…
Ilya
так после перезагрузки страницы сбросится все
ну если жизненый цикл приложения построить от проверки наличия токена и его получения - то все хорошо. и в меру секъюрно… ну просто «состояние» о котором идет речь - это как бы суть и есть «контекст» оно тоже теряется если его не регидратировать. там как бы по сессионной куке - токен обычно можно получить
Anonymous
главное не в куки 🙂 открывает вектор для Session hijacking а зачем вы хотите перманентно сохранять его - если у вас SPA можно просто хранить в контексте
в куках у меня accessToken, дело в том что данные и так в контектсе, но контекст я могу использовать только в компоненте, axios interceptor у меня в отдельном файле и мне не прокинуть туда контектс + он подключается в index.js
Ilya
в куках у меня accessToken, дело в том что данные и так в контектсе, но контекст я могу использовать только в компоненте, axios interceptor у меня в отдельном файле и мне не прокинуть туда контектс + он подключается в index.js
интерцептор имеет доступ к объекту запроса - вы можете через него в логику интерцептора положить все что пожелаете из тех контекстов где формируется запрос (в payload)
voix
Регидратировать 😱
Andrey
А я до сих пор на «Вы» к людям, даже к тем, кто абсолютно точно младше меня. Надо жене сказать, что я шизофреник оказывается…
Когда идет обращение на Вы, речь псевдопросветленного учителя и снисходительное обращение, то есть повод обратится к врачу. P.S. Не в случаях сарказма.
Anonymous
Но не могу отправить запрос, потому что не хватает login: …. , достать его могу только из какого то глобального места
Ilya
Регидратировать 😱
🙂 да страшновато, но на русском именно так… смысл конечно закладывали отталкиваясь от «буржуйского» https://stackoverflow.com/questions/29824908/what-does-dehydrate-and-rehydrate-stand-for-in-fluxible
Anonymous
Если бы я использовал redux было бы проше, но я использую useContext+useReducer
Ilya
Если бы я использовал redux было бы проше, но я использую useContext+useReducer
ну если я правильно понял положение вещей и суть проблемы, то у вас должна быть еще сессионная кука - которую вы получаете при авторизации помимо собственно токена. именно она нужна чтобы при разрыве сессии получить или обновить токен без повторной авторизации с явной отправкой пары логин-пароль, иногда сам токен выполняется такую роль, подразумевается безусловная его валидность - и просто направляя токен старый - получаем токен новый помогите понять почему логин вам нужен при обновлении
Anonymous
ну если я правильно понял положение вещей и суть проблемы, то у вас должна быть еще сессионная кука - которую вы получаете при авторизации помимо собственно токена. именно она нужна чтобы при разрыве сессии получить или обновить токен без повторной авторизации с явной отправкой пары логин-пароль, иногда сам токен выполняется такую роль, подразумевается безусловная его валидность - и просто направляя токен старый - получаем токен новый помогите понять почему логин вам нужен при обновлении
У меня сейчас получается, что при авторизации на бекенде у меня просто генерируется 2 токена, с разной жизнью и разным секретным ключом, refresh и access, refresh я так же пишу в базу юзеру. Так же есть линк на /api/refresh который обновляет пару токенов и перезаписывает рефреш юзеру. Сейчас я пытаюсь сделать интерцептор который будет отправлять запрос на /api/refresh, но в теле запроса помимо рефреш токена должен быть логин еще
Андрей
Если бы я использовал redux было бы проше, но я использую useContext+useReducer
Если это не петпроект, то будет больно потом.
Anonymous
а бэкенд реализован тоже вами ? или это не зависящее от вас обстоятельство в части «логин в нагрузке» ?
Мой) Это вообще моя первая авторизация, решил делать с рефрешем ее, без проблем можно поменять структуру
Ilya
Мой) Это вообще моя первая авторизация, решил делать с рефрешем ее, без проблем можно поменять структуру
классическа схема такая login/password => access token/session token <= access token храним в контексте (имееться в виду в памяти приложения JS) - и он используется для доступа к API session token храним в куках - и при обрыве сессии отправляем его чтобы в контексте восcтановить access token логин пароль нужен только при первичной авторизации или истечении срока жизни сессии
Anonymous
session token вот такого у меня нету
Anonymous
а нету примера такой реализации ?
Ilya
В такой схеме не нужен access
да, я затупил - это две разные схемы по сессии и по токенам - там refresh token/access token получается
Ilya
да, я затупил - это две разные схемы по сессии и по токенам - там refresh token/access token получается
ну да и получается что некий если не логин то идентификатор - надо знать и хранить, чтобы вопользоваться refresh
Sergey
Просто когда токен в куке передается, уже нет смысла в refresh
Ilya
Просто когда токен в куке передается, уже нет смысла в refresh
че-то я совсем запутался сам 🙂 давненько я этого вопроса касался последний раз так а в схеме с токенами получается храним себе все в localStorage и нет проблем ?
Ilya
https://auth0.com/docs/security/store-tokens
Ilya
https://auth0.com/docs/security/store-tokens
Олег (@g24124dasfsdfsdfdsfdsfr341412412 ), для вашего случая мне кажется вот тут HowTo и «ум разум - как сделать правильно»
Ilya
в localStorage нельзя же
да, выше я дал линк на доку по OAuth - там все расписано что, куда в каких случаях
Andrii
Привет, вопрос по react-native, но надеюсь что кто-то подскажет) Кто хорошо шарит со звуком, я записываю аудио с помощю expo-audio(https://docs.expo.io/versions/latest/sdk/audio/), и у меня получаеться такая проблема: звук записываеться очень тихо, кто что может посоветовать. Скрин - мои настройки
Oruj
я не совсем понимаю как сменить шрифт приложения в material-ui... в createMuiTheme({ typography: { fontFamily: [...] } }) в массиве fontFamily оставить только один нужный шрифт что ли?