Программирование : Dart & Flutter по-русски
???????
Если да, то как хорошо, что тебе никогда не доверят делать что то подобное)
Andrei
тут все в курсе про бинарный поиск
???????
Да вот явно не вкурсе)
admin
да это то ясно,я именно про рандомайз думаю
???????
Раз полагаете, что ограничением будет файловая система
???????
повторить вам двоим бы алгоритмы и структуры, а затем пойти в чат вашей сурбд
???????
а затем переписывать ваши костыли
Andrei
тут скорее вопрос в том, чтобы применить нужно прочитать этот список нет?
Gennady Knyazkin
Мне кажется Фокс просто тролль
???????
Да, это я заставляю вашу бд тормозить, троллю вас так
???????
10 лет работаю с базами данных, запросами и кучей бизнес данных.
Gennady Knyazkin
У меня ничего не тормозит) вообще, вопрос к тебе в том, что прежде чем применить алгоритм бинарного поиска на отсортированном списке, тебе как бы нужен сам список
Andrei
окей, есть файл индекса, он допустим не загрузился в ОЗУ, так как ее не хватило, он же читается и диска, то есть надо сначала данные же загрузить, чтобы применить алгоритм поиска? или я что то не знаю?
???????
[
{
"type": "link",
"text": "https://t.me/rudart/204186"
}
]
???????
что то не знаешь явно
Andrei
так я вопрос и задал, хочу узнать)
Andrei
мои вопросы это не риторические
Andrei
а как раз открытые
???????
Иди в чят твоей конкретной сурбд и узнавай там как работает конкретный механизм конкретного выбраного движка
???????
Ну и да, ты в серьез при работе с данными каждый раз целиком загружаешь файл в память? Если да, то это пиздец)
Jason Fox
У тебя будет список из людей готов к общению просто бери и на рандом создавай им комнату
Andrei
нет читаю построчно в потоке
???????
Тебе обязательно читать построчно или можешь при чтении перепрыгнуть сразу на позицию N?
???????
Вот, допустим, ты делаешь видеоплеер и свой формат файла для него. Пользователь у тебя каждый раз при перемотке будет перебирать весь файл до нужной позиции?
Andrei
могу да перепрыгнуть
???????
А теперь бежите в чат вашей СУРБД) А то кот придет - всем надает за оффтоп по ушам.
mark
адекватно ли везде где только можно использовать блок паттерн? т е и в авторизации, и в навигации, и вообще везде
mark
ну и соотв полностью отказаться от стейтов и стейтфул виджета
???????
Везде где присутсвует разделение интерфейса и логики - блок
???????
нет, это уже чушь
???????
стейт не обязательно всегда относится к бизнес логике
mark
навигацию по страницам можно считать логикой?) или это часть интерфейса? где проходит грань?)
???????
Это могут быть анимации, например
???????
Навигация скорее всего у тебя будет зависеть от блока, тобишь будет подписана на смену его стейтов. Но целиком все выносить туда - не обязательно.
???????
Пример: пользовать нажал кнопку назад - .pop() Есть тут бизнес логика?
???????
Пример номер 2: от сервера ты получил ответ с кодом 401 (не авторизован), следовательно надо показать экран авторизации. Есть тут бизнес логика?
mark
второе да, первое нет т е все что работает непосредственно с данными/сервером - бизнес логика, остальное можно делать как чать интерфейса?
mark
спасибо, вроде разобрался
???????
Тобишь блок у тебя разделяет UI и Logic слои
???????
Где есть и то и то - он присутсвует
???????
Фанатичное избавление от Stateful тебе вообще ничего не даст
???????
Прям вообще, не быстродействие, не читаемость
???????
хз, у меня все робит)
?? Назар Калитюк
стандартный Slider. Как убрать отступы вот эти?
Dmitriy
попробуй с Padding
Ivan
мож меня бот забанил
?? Назар Калитюк
обернуть его? пробовал. Если обернуть в контейнер с высотой 3, то будет высота норм, но отступы по бокам как убрать?
Andrei
а что это за телеграмм клиент?
???????
стандартный виндовый. Если ты про тему - то темы он давным давно поддерживает (больше двух лет, вроде как)
Andrei
не то что объединение
???????
эм, гдето пару месяцев назад обновление же было
???????
для группировки чятов по категориям
Andrei
у меня версия 2.1.6 группировки не вижу что то
Sasha
2.1.5 с группировкой
Andrei
прям киллерфича что ее в настройки спрятали
?? Назар Калитюк
[
"нашел кстати. Нужно в тему написать ",
{
"type": "code",
"text": "overlayShape: SliderComponentShape.noOverlay"
},
""
]
Sasha
при обновы для винды у меня все папки синхронизировались с мобильного. так что я тоже не знал что в настройках это надо менять
Andrei
есть какая то автоматизация чтобы в pubspec при билде автоматически менялась?
Andrei
или только руками?
???????
ну или полноценный CI настраивай
???????
[
{
"type": "pre",
"text": "Future generate([bool bump = false]) async {\n io.File pubspec = io.File(createAbsolutePath('pubspec.yaml'));\n if (!pubspec.existsSync()) throw UnsupportedError('Can\\'t find pubspec.yaml');\n String pubspecContent = await pubspec.openRead()\n .transform(utf8.decoder)\n //.transform(const LineSplitter())\n .first;\n ver.Version version;\n pubspecContent = pubspecContent.split('\\n')\n .map((line) {\n if (version != null || !line.trim().startsWith(r'version:')) return line;\n version = ver.Version.parse(\n line.split(':').last.trim().replaceAll('\\'', '').replaceAll('\"', '')\n );\n if (bump) {\n version = version.nextPatch;\n }\n return 'version: \\'${version.toString()}\\'';\n })\n .join('\\n');\n if (version is! ver.Version) throw UnsupportedError('Can\\'t find app version');\n final io.File versionFile = io.File(createAbsolutePath('lib/src/version.g.dart'));\n final String versionFileContent = '''\n |/// Current app version\n |const String version = \\'${version.toString()}\\';\n |\n |/// The major version number: \"1\" in \"1.2.3\".\n |const int major = ${version.major.toString()};\n |\n |/// The minor version number: \"2\" in \"1.2.3\".\n |const int minor = ${version.minor.toString()};\n |\n |/// The patch version number: \"3\" in \"1.2.3\".\n |const int patch = ${version.patch.toString()};\n |\n |/// The pre-release identifier: \"foo\" in \"1.2.3-foo\".\n |const List preRelease = [${version.preRelease.map((dynamic v) => '\\'$v\\'').join(',')}];\n |\n |/// The build identifier: \"foo\" in \"1.2.3+foo\".\n |const List build = [${version.build.map((dynamic v) => '\\'$v\\'').join(',')}];\n |\n '''.multiline();\n await Future.wait(>[\n if (bump)\n pubspec.writeAsString(pubspecContent, mode: io.FileMode.writeOnly, encoding: Encoding.getByName('utf-8')),\n versionFile.writeAsString(versionFileContent),\n ]);\n}",
"language": ""
},
"\n\nА дальше сам"
]
Andrei
если регуляркой то по идее меньше будет кода
???????
тут относящеегося к делу - всего пару строк
???????
это был мой первый блин по генерации pubspec.yaml.g.dart файла, содержащего информацию из пабспек и версии
???????
[
"Сейчас инкапсулировал в полноценный пакет уже\n",
{
"type": "link",
"text": "https://pub.dev/packages/pubspec_generator"
},
""
]
Belmo Na Tazu
опытным путем выяснила что тут не 1,5, а 1,2222
Sasha
есть ли какой то плагин типа shared_preferences для винды?
???????
веба, мобил, венды
???????
в венде так же sqlite
Di
Я, кстати, тоже выяснил, что иногда 1.5 совпадает со 150%, а иногда 135%. В общем, нельзя делать однозначных выводов. Дополнительно, оно ресайзится по 5 сотых (минимальный шаг)
???????
альтернатива hive - sembast
???????
hive популярнее, но маленько сча подзаброшен, но к проду готовый
???????
сембаст - давно не смотрел чо там с ним
Andrei
Вопрос по flutter player, есть поле controller, куда я записываю videoplayercontroller. Чтобы переключить на другое видео - я переприсваиваю его на новый контроллер. Ожидаю, что старый контроллер, так как на него не указывает ничего сработает деструктор и dispose, но это не происходит и приходится руками делать dispose у контроллера и через future builder загружать новый плеер. Но нарушается бесшовность - появляется загрузка при переключении видео. Что можно сделать?
?? Назар Калитюк
Там обсуждают на гитхаб, что создатель hive короной заболел. Потому что его уже больше месяца не видел никто.
?? Назар Калитюк
А может с головой ушел переписывать на rust hive 2.0.
DVS (Read The F.ng Manual) Studio (NoHello)
ага, и готовит ffi версию)
Сергей Семёнов
[
"Привет, подскажите, а есть какой-то способ максимально оптимизировать компиляцию с Dart в JS? Стандартный способ ",
{
"type": "code",
"text": "webdev build --release"
},
" как-то не очень справляется."
]
?? Назар Калитюк
dart2js -O4
Сергей Семёнов
Примерно то же самое. На 100 строк меньше ??
Сергей Семёнов
Релиз наверное это -О3
?? Назар Калитюк
это самая шакальная оптимизация. Там уже нету вроде рантайм типизации даже.
Сергей Семёнов
Просто если взять пример из документации с ToDO и попробовать его сбилдить, то получится 1575 строк JS-кода
Сергей Семёнов
Что довольно печально. И наверное должны быть способы сделать это лучше.
Evgeny Cherkasov
А там нельзя просто новое видео ему подсунуть?
4??uzhoy .
Оно же не обязательно по идее, я могу выносить логику в блок и без юай, и просто где надо вытаскивать инстанс блока, а когда он перестает нужен закрывать? У Феликса вроде было что то такое
???????
Ну вопрос же про интерфейс)
4??uzhoy .
А, ты по контексту
???????
Конечно можешь эмитить эвенты не только из UI, если ты про это
Sergey Hottabych
Подскажите, есть простой блок (или вьюмодель, не знаю, как лучше сказать), где стрим закрывается в dispose(). Юзаю его в Stateless-виджете. Откуда лучше дернуть этот dispose?
Sergey Hottabych
Погуглил, нашел следующие мысли: Флаттер сам не закроет стрим; в Stateless нет dispose. Либо юзать Stateful, и в dispose вызывать _bloc.dispose(), либо провайдить его и в провайдере есть слот под dispose, либо есть плагин flutter_lifecycle, он как раз дает onInit и onDispose для Stateless.
4??uzhoy .
А в чем проблема stateful?
Sergey Hottabych
И есть ли аннотация или что-то подобное, чтобы свой метод dispose пометить, что он обязательно должен вызваться? Линт ругается, только если стрим не закрыт. Если он закрыт, но этот метод ниоткуда не вызывается, то линт не замечает.
Sergey Hottabych
Не проблема, просто интересно ваше мнение. Стоит ли специально Stateful заводить из-за такого.
Sergey Hottabych
сейчас он у меня вот так выглядит
Sergey Hottabych
вот так создается
???????
какой диспоз в стейтлесс?)
Sergey Hottabych
Никакого. Я поэтому и спрашиваю.
???????
Тыж понимаешь что State less переподится как отсутсвие стейта?)
???????
Так что ты собираешься dispose?)
???????
Стейт которого нет?)
???????
Блок это фактически прямой аналог стримконтроллера, он наследуется от StreamSink.
???????
StreamSink надо закрывать
???????
Следовательно ты не можешь использовать его в иммутабельных объектах (конечно же можешь, но думаю ты меня понял)
???????
[
"А стейтлесс и есть иммутабельный объект, он, вроде так и помечен аннотацией ",
{
"type": "code",
"text": "@immutable"
},
""
]
Sergey Hottabych
Ну да, логично
???????
В общем ты делаешь это не правильно и блок тебе надо инициализировать не в виджете, а в его стейте
???????
Причем не только по этой причине)
???????
Считай что виджет "кончается" при каждом ребилде, а вот его стейт остается
Sergey Hottabych
ну все, я поправил
Sergey Hottabych
[
"Закинул им идею насчет предупреждения о невызванном _bloc.dispose(), посмотрим, че они скажут.\n\n",
{
"type": "link",
"text": "https://github.com/dart-lang/linter/issues/2113"
},
""
]
???????
Эм, они то тут при чем?
???????
Если тебе что то не нравится, ты можешь игнорировать для строки, для файла или в целом для проекта
???????
Но предупреждение абсолютно верно показывается
???????
[
"Более того, для линтера и так есть аннотации:\n\n",
{
"type": "pre",
"text": "// ignore: close_sinks\n// ignore_for_file: close_sinks",
"language": ""
},
""
]
???????
Так что ты полный бред написал
???????
А для обязаловки переопределения смотри в аннотации пакета meta
Sergey Hottabych
Я уже посмотрел, там ничего годного нет
Roman Vasiliev
он хочет чтобы попинывали за невызванный dispose, если там закрывается контроллер
Sergey Hottabych
Ты даже не прочитал и пишешь невпопад. Я хоть где-то говорил, что предупреждение наверное?
???????
Так в чем проблема отнаследоваться от StreamSink?
Roman Vasiliev
это не ко мне)
???????
Если ему нужен streamsink функционал, лол
Roman Vasiliev
там и блок изобретен заново
???????
Ну он явно хочет переизобрести деструкторы.
???????
Деструкторов в дарте нема.
???????
Да и в его кейсе ему это абсолютно не надо
Sergey Hottabych
Виджет отнаследовать от StreamSink? Или что отнаследовать?
???????
У виджета в принципе нечего закрывать
???????
И dispose у виджета нету и быть не может, хз сколько еще объяснять это
???????
виджеты иммутабельны.
???????
Слово "иммутабельно" означает что оно не меняется со временем. И контроллеру там в принципе не место.
???????
У виджета нету "dispose" и быть не может
Roman Vasiliev
пабовский блок, кстати, именно так и сделан в последних мажорных его версиях
???????
и блок в виджете ты не можешь размещать
???????
да, уже давным давно)
???????
с третьей версии, вроде
Roman Vasiliev
я слоупок боялся обновлять
Roman Vasiliev
у меня так синки и не позакрыты до сих пор
Roman Vasiliev
но могу пока себе позволить
Roman Cinis
[
"A new ",
{
"type": "hashtag",
"text": "#Flutter"
},
" release is available ??!\nChannel: stable \nVersion: 1.17.2"
]
Sergey Hottabych
Вот это хорошая идея. И будут попинывать
Sergey Hottabych
Фокс как всегда, стремится доказать, что он всех умнее и в 10 раз невпопад написать про иммутабельность. Бесят такие люди!
Roman Vasiliev
все мы немного такие люди)
???????
Я умнее не всех, а тебя)
Sergey Hottabych
Ошибаешься
???????
Как вызовешь dispose у виджета - приходи)
???????
Я просто напоминаю)))
Sergey Hottabych
Чувак, ты просто зазнавшийся сноб. Тебе в жизни плохо придётся, потому что на работу берут ребят с развитыми софт-скиллз, а токсичных нигде не любят.
???????
Обосрался с этого)
Roman Vasiliev
ну что за дизмораль меня на ночь
Sergey Hottabych
Софт-скиллз - умение быть дружелюбным собеседником и приятным человеком, если ты не в курсе. У тебя они хромают явно
???????
Проигрываю по максимуму)
???????
Давай еще, особенно раскрой тему с софт скиллами и работой)
???????
[
{
"type": "mention",
"text": "@Hottabych"
},
" а я хотяб джуном на завод смогу устроится?)"
]
Андрей Козак
Гайз, кто-нибудь пытался webview в customScrollView запихать?
Evgeny Kot
Поаккуратнее на поворотах, не надо токсить в чате. Жёлтая карточка
Evgeny Kot
Ребята, сообщество создано для того, чтобы помогать, а не выяснять, кто умнее. Если есть желание выпустить пар, пофлудить или пооскорблять кого - то лучше выйти на недельку, продышаться. Если что - могу помочь с этим. С выходом
???????
Объясняю ситуацию: Я единственный этому микрочелику 2 часа подряд объяснял, где он не прав, в итоге он сделал как я сказал, а потом вместо "спасибо" начал кочевряжиться. С тем что я "умнее", я, вроде как, не обманул. А вот каждое его утверждение было на 100% ложью) Ну в целом я услышал тебя, не стоит в дальнейшем никогда тратить на него времени и проще выдать метку "специального" мальчика, тем самым игнорируя все его сообщения, right?
Constantine
а ты силён в переговорах )
???????
Ну так софт скиллы ниже 9,5 мне никогда не рейтили)
Evgeny Kot
Тратить время или нет дело каждого, но просьба любой переход на личности делать в личке
???????
Ок, услышал, добавил в игнор
Sergey Hottabych
Я мужчина, а не мальчик. Мальчиков в другом чате себе поищи.
Artur
Вообще, стоило бы какой-то рейтинг составлять полезность/токсичность
Андрей Козак
а зачем вообще создавать блок в стейте виджета?
Андрей Козак
чобы просто не заюзать blocProvider, и блок по дереву вниз заинжектится. Ну и сам диспознится, когда ветка дерева подохнет
???????
Но там изобретает собственный "блок"
???????
Ну а так блок провайдер и есть суть стейтфул виджет
Daniil S
Вам дают дельные советы по разработке, пытаются объяснить в чем вы допустили ошибку. Я со стороны вообще не понимаю, вас бесят люди, которые вам пытаются помочь? И при чем тут умнее всех? В том что сказал Михаил нет нечего ложного. Если вы не поняли, не понравился вам ответ, ну просто проигнорируйте зачем ярлыки вешать и жаловаться что вас бесят. Вы себя странно ведёте, на мой взгляд
???????
[
"Вроде в последнем обновлении виджеты фелангела используют сам ",
{
"type": "code",
"text": "provider"
},
""
]
Daniil S
Забей, не создавай конкурентов на рынке труда =)
???????
А провайдер это стейтфул виджет (точнее стейт онного) как замена Inheritedwidget
???????
Ну он норм спросил)
???????
[
{
"type": "mention",
"text": "@drnorton"
},
" понятненько немножко донес?"
]
Андрей Козак
да парень наверное с Андроида перекатывается, сложно съезжать с императивщины на flux стайл
|