Вопрос в том насколько это безопасно использовать сторонние клиенты)) Я долго думал прежде чем решился Kate Mobile попробовать. А тут Телега с кучей переписок. Вдруг они там себе отсылают данные для входа.
Да, я об этом. Что ж, буду следить за прогрессом. Пока вот такое написал:
class AsyncInitializerDep<T> implements AsyncLifecycle {
final Future<T> Function() initializer;
final Future<void> Function(T)? disposer;
late final T value;
AsyncInitializerDep(this.initializer, {
this.disposer,
});
@override
Future<void> init() async {
value = await initializer();
}
@override
Future<void> dispose() async {
await disposer?.call(value);
}
}
Вроде можно использовать с asyncDep вместо того чтобы плодить бойлерплейт.
Подскажите, а я вот не понял как вообще получить зависимость потом? Типа у вас в примере создается холдер, потом асинхронно вызывается на нем метод create, а без этого никак? Вот условно в одном месте приложения я создал этот холдер, а в другом мне надо получить зависимость. Мне что везде прокидывать этот холдер по цепочке? Это же неудобно. Для виджетов вы обертку сделали, а если это не в виджете? Например в каком-то кубите. С классическим подходом я делал просто GetIt.I<MyClass>() и все. Одним вызовом статичной функции я в любом месте проекта получал зависимость. Как с вашей библиотекой это делать я не понял.
P.S. Выглядит как-то все уж очень запутанно и сложно. GetIt в 100 раз проще)
Такой вопрос: почему нет возможности объявить асинхронную зависимость которая бы инициализировалась асинхронно при создании? Я имею ввиду прямо в билдере вернуть Future. Вместо того чтобы отдельно на созданном объекте вызывать init. Просто есть например объекты сторонних библиотек, которые инициализируются именно так. Как пример могу привести метод Hive.openBox. Я вот например не знаю как переделать создание бокса так чтобы он создался, но не инициализировался.
Идея конечно хорошая, но я к сожалению не фронтендщик ни разу. Много раз пытался изучать фронт, но дальше jquery не зашло. Просто JS не люблю. Весь этот зоопарк инструментов сборки, библиотек и фреймворков меня сбивает с толку. С бэкэндом проще — тут обычно существует один инструмент сборки/зависимостей и один основной фреймворк. Хотя в PHP конечно побольше, но все равно в основном это Yii, Laravel и Symphony — не так уж много. Про CMS я вообще не говорю — не мое. Там одно кнопкотыкание в админке и ужасная процедурщина в коде…
Получаю изредка (несколько раз в месяц) звонки с рекламой и соцопросами. Обычно сразу сбрасываю, услышав о чем речь. Но особо сильно не достают. Собственно я не вижу проблемы в том чтобы просто заблокировать все спам-номера. Не на стороне провайдера, а просто в телефоне. Эта функция сейчас уже почти везде есть. Не думаю что у спамеров бесконечный запас номеров. Достаточно только блокировать их сразу.
А я вижу главный и неоспоримый плюс Yii именно в виджетах. Такой удобной кодогенерации (разметки) я не видел ни в одном фреймворке ни на одном языке. Честно скажу — я не пользовался ларавелем, но немного читал его доки — и у него насколько я понял нет ничего подобного. Взять к примеру хелперы из ASP.NET (я вообще больше сишарпер): они генерируют лишь один тег который и обозначен в названии, например Html.TextBox — inpu а Html.Label — label. В то время как ActiveForm->field() в yii генерирует сразу инпут, вместе с меткой, валидцией и блоком для вывода ошибок. Это офигительно удобно! И хотя хелперы можно создать свои генерирующие что угодно — куда удобнее когда уже все сделано за тебя! Не говоря уже о том что в Yii встречаются виджеты легко генерирующие такую сложную (для бэкэндера) разметку которую не сверстаешь вот так сходу. Например вот этот грид (хоть и не из коробки, но установить же не проблема) я использовал в одном проекте. Нужна была такая вот многофункциональная таблица и все решилось с помощью этого чудо-виджета!
Не очень понял насчет токенов. Если токен хранится только на клиенте и в нем содержится роль юзера, то что ему мешает подделать ее и прописать себя админом? Или он зашифрованный хранится?
И еще, не надо сыпать сложной терминологией в простой статье без пояснений, пожалуйста. :( Я ничего не знаю про репликацию. Я даже не знаю что это.
А так вообще очень крутая статья. Хорошо все объяснено.
Спорно, очень спорно. Интересно чего такого вы не нашли в C# что есть в пхп. В VS я просто открываю нугет, удобно интегрированный с поиском и быстрой установкой пакетов в один клик. Причем ни разу не было чтобы я не нашел там что надо. А в пыхе приходится гуглить, причем желательно что-то сразу интегрированное во фреймворк (например для Yii какой-нибудь виджет). Потом вручную копировать/вставлять в композер.жсон, запускать с консоли `composer update` (в IDE почему-то у меня не подцепляется это) и долго ждать пока он установит (хз почему, но ставит и обновляет он очень долго, по несколько минут).
Хочется крикнуть БЕГИТЕ ГОЛУБЦЫ ГЛУПЦЫ!!! Я сам сишарпер, но сейчас волей судьбы приходится кодить на пыхе. Я уже волосы на голове готов рвать. Это жуткий язык. Просто чудовищный. Функциональность никакая. Синтаксис ужасен (например мне просто катастрофически не хватает коротких лямбд). Говнокода в старых проектах просто океаны, причем его нечитабельность поражает (в C# так специально не напишешь). Слава богу начальник обещал следующий проект на чем-нибудь другом делать. Может даже уболтаю на C# .NET Core (сервак все-же на линуксе).
Браузер очень крутой, функциональный и удобный, но… Что толку со всего этого если нет синхронизации и мобильного приложения? Я хоть убей не понимаю зачем из него выпилили синхронизацию с гугл-аккаунтом и маркет хромовских расширений. К сожалению без этого пользоваться им нет смысла. Я всегда использую браузер на ПК в связке со смартфоном. Закладки там синхронизируются, да и история порой бывает полезна, а например фаерфокс еще и умеет вкладки прокидывать с ПК на смартфон — тоже офигительно удобно. А тут даже смешно — нет приложения мобильного. Ну и кому он такой сдался без синхронизации и мобильного приложения?
Вопрос в том насколько это безопасно использовать сторонние клиенты)) Я долго думал прежде чем решился Kate Mobile попробовать. А тут Телега с кучей переписок. Вдруг они там себе отсылают данные для входа.
Да, я об этом. Что ж, буду следить за прогрессом. Пока вот такое написал:
Вроде можно использовать с asyncDep вместо того чтобы плодить бойлерплейт.
Подскажите, а я вот не понял как вообще получить зависимость потом? Типа у вас в примере создается холдер, потом асинхронно вызывается на нем метод create, а без этого никак? Вот условно в одном месте приложения я создал этот холдер, а в другом мне надо получить зависимость. Мне что везде прокидывать этот холдер по цепочке? Это же неудобно. Для виджетов вы обертку сделали, а если это не в виджете? Например в каком-то кубите. С классическим подходом я делал просто GetIt.I<MyClass>() и все. Одним вызовом статичной функции я в любом месте проекта получал зависимость. Как с вашей библиотекой это делать я не понял.
P.S. Выглядит как-то все уж очень запутанно и сложно. GetIt в 100 раз проще)
Такой вопрос: почему нет возможности объявить асинхронную зависимость которая бы инициализировалась асинхронно при создании? Я имею ввиду прямо в билдере вернуть Future. Вместо того чтобы отдельно на созданном объекте вызывать init. Просто есть например объекты сторонних библиотек, которые инициализируются именно так. Как пример могу привести метод Hive.openBox. Я вот например не знаю как переделать создание бокса так чтобы он создался, но не инициализировался.
И еще, не надо сыпать сложной терминологией в простой статье без пояснений, пожалуйста. :( Я ничего не знаю про репликацию. Я даже не знаю что это.
А так вообще очень крутая статья. Хорошо все объяснено.
ГОЛУБЦЫГЛУПЦЫ!!! Я сам сишарпер, но сейчас волей судьбы приходится кодить на пыхе. Я уже волосы на голове готов рвать. Это жуткий язык. Просто чудовищный. Функциональность никакая. Синтаксис ужасен (например мне просто катастрофически не хватает коротких лямбд). Говнокода в старых проектах просто океаны, причем его нечитабельность поражает (в C# так специально не напишешь). Слава богу начальник обещал следующий проект на чем-нибудь другом делать. Может даже уболтаю на C# .NET Core (сервак все-же на линуксе).