Здравствуйте! Подскажите, пожалуйста, а такое хранение данных сегодня еще актуально или лучше все-таки использовать бд? Навык разработан на Яндекс облаке в виде функции, не очень понимаю как хранить данные в файлах так, чтобы потом не было конфликта. Спасибо заранее!
@vitaliypotapov89945 жыл бұрын
А нельзя ли заиспользовать встроенный в php механизм сессий?
@user-m-m5 жыл бұрын
В принципе можно, но там могут быть свои проблемы. Да и в целом сессия в php это тот же самый файл, который хранится на сервере.
@user-m-m5 жыл бұрын
Не получится хранить данные ни в сессии, ни в куках. Так как при каждом запросе создается отдельная сессия. То есть вы сможете сохранить данные пользователя в сессии, но когда пользователь отправит какое-либо сообщение в навык, то идентификатор сессии будет иной.
@meteo144 жыл бұрын
У Алисы появились сессии, посмотрите yandex.ru/dev/dialogs/alice/doc/session-persistence-docpage/
@БорисТыНеПрав-г9я5 жыл бұрын
Понемногу видеоуроки становятся всё более качественными. Больше и чаще давайте уроки!
@QwDragon3 жыл бұрын
Поиск файла O(1)? Серьёзно? Ну неправда же.
@Enfriz5 жыл бұрын
Хм, но 600+ миллисекунд это очень много на поиск по индексу, вы чего. Да, сложность log, но хороший сервер должен делать это очень быстро даже для таблицы с миллионом записей.
@user-m-m5 жыл бұрын
Согласен, тут немного косякнул, так как поиск осуществлялся не по индексу. Но даже если искать по индексу, то все равно чтение из файла осуществляется быстрее. Да и не думаю что многие разработчики навыков используют хороший сервер. Лично мои навыки находятся на хостинге.
@ih32dll5 жыл бұрын
Привет! Спасибо за видео, полезно и интересно. Возник вопрос, в качестве ключа (или имени файла) используется user_id, который уникален не для пользователя, а для пользовательского устройства. Таким образом, если я использую твой навык на Яндекс.Станции и в телефоне, то у меня будет храниться 2 разных файла, а мне хотелось бы именно продолжать играть, а не начинать заново (хотелось бы иметь одну общую сессию). Как вы решаете эту проблему, если никак, то какие варианты решения видите? Спасибо
@user-m-m5 жыл бұрын
Пока что тут есть 1 вариант развития. Это все также хранить данные пользователя в файле, где user_id это название файла. Только в этом файле мы сохраняем логин и пароль пользователя, или какое-то секретное слово, короче то, что может идентифицировать пользователя. Помимо этого, все данные будут перенесены в другой файл. В логике навыка просто сделать свою обработку, на основе которой будет подключаться нужный файл с данными. Из примера могу привести навык с расходами: dialogs.yandex.ru/store/skills/a76e3475-vse-moi-rashody В нем пользователь вводит логин и пароль. И уже на основе логина и пароля я осуществляю поиск нужного файла с данными. Если файл не найден, то он создается. Конечно, вариант так себе, но ничего другого в голову не пришло.
@Rust_ekb5 жыл бұрын
Все хорошо. Только не понятно почему нельзя хранить данные в in memory database? Они работают намного быстрей чем файлы. Redis например.
@user-m-m5 жыл бұрын
В уроке не говорится что нельзя. Просто провёл свои тесты, и на основе этих тестов сделал вывод, с которыми поделился. А так опыта с in memory database у меня нет. Но если интересно, то могу провести тесты со сравнением скорости.
@Rust_ekb5 жыл бұрын
@@user-m-m понятно. Не знаю по скорости. При листинге по большому количеству файлов в сотни тысяч наверно файлы будут работать долго, если это не спец файловая система типа reiserfs. Но урок хороший для понимания принципов.
@vitaliypotapov89945 жыл бұрын
В redis неудобно вложенные структуры хранить.
@avelross6 ай бұрын
Видеоурок ни о чем. Товарищ просто рекламирует свои приложения. По факту ничего не рассказано ни про хранилище состояний, ни про то как эти состояния передавать.