Программирование : Dart & Flutter по-русски
Олжас Сулеймен
[
"final watchStrams = ",
{
"type": "link",
"text": "watchers.map"
},
"((watcher) => ",
{
"type": "link",
"text": "watcher.events"
},
").fold(/* */);"
]
Олжас Сулеймен
перезагружать сервер при изменени фалов в либе или других папках
Alexander Polyankin
Есть MergeStream из пакета rxdart
Alexander Polyankin
Или можно слушать стримы и добавлять событие в свой StreamController, и у него слушать Stream.
Alexander Polyankin
[
{
"type": "mention",
"text": "@ykmnkmi"
}
]
Олжас Сулеймен
ищу как их мерджить
Alexander Polyankin
new MergeStream([])
Alexander Polyankin
Аргумент - список стримов
Олжас Сулеймен
можно ли как то словить CTRL+C или SIGKILL?
Олжас Сулеймен
[
"нашел ответ\n",
{
"type": "link",
"text": "ProcessSignal.SIGKILL.watch"
},
"().listen((_) {\n print('Killing server');\n server.kill();\n });"
]
Олжас Сулеймен
[
"может кому пригодится ",
{
"type": "link",
"text": "https://gist.github.com/ykmnkmi/e3efa4edb2bac40f19faacdc3a250f78"
},
""
]
Анатолий
А кто писал тесты под бекенд? чем можно удобно псмотреть покрытие? Чтоб не делать много манипуляций
Evgeny Kot
Под VM мы пишем
Evgeny Kot
Кстати через webstorm отлично запускаются
Evgeny Kot
Про покрытие попозже отвечу, за рулём много не написать
Анатолий
оке, спасибо, ато тесты есть а что проверять непонятно )
Денис Сахаров
Евгений, а под webstorm есть плагин флаттера разве?
Egor
А разве вебшторм - не все та же самая иде?) Просто с немного другой обвязкой
admin
И я не особо понял причем здесь флаттер)
admin
Речь шла про бэк разработку
Evgeny Kot
Э, а при чем тут Флаттер?
Денис Сахаров
нда, немного не в тему, dart-webstorm, dart-flutter, webstorm-flutter, примерно такая логика вопроса тем, кто плотно в дарт сидит и касается, предположительно, иногда flutter.
Анатолий
Флпттер шикарно работает в андроид студио или идее
Анатолий
Тот же вебшторм, вид с боку
admin
Поставил dart2 на ubuntu 18.04 и попытался запустить web-angular из stagehand. После запуска webdev serve процесс съедает всю память и всё виснет. Что я делаю не так?
Evgeny Kot
А сколько памяти?
admin
Ну я уже почти собрался идти в магазин, но решил спросить.
Evgeny Kot
4 по современным меркам это очень мало
Egor
Уже и 8-то почти в обрез ?? А если еще видео встройка ??
Egor
Вообще динамика роста потребления памяти мягко так намекает, что модули меньше 16Гб брать уже нежелательно
Kirill Saltykov
Если весь софт не самописный)
Evgeny Kot
А что происходит?
Evgeny Kot
А проект большой?
admin
Просто stagehand web-angular
admin
И только с angular так
Evgeny Kot
Это в виртуалке происходит?
Gerc
Когда из Дарта уберут в вызове метода необходимость писать имя аргументов с двоеточиями?
Evgeny Kot
А зачем? Это именованые аргументы, в этом их соль
Gerc
В жаве их нет и хорошо, меньше писать и иде сама потом показывает подсказкой
Evgeny Kot
Язык должен быть IDE-agnostic
Gerc
Да в куче языков нет этих выкрутасов лишних с двоеточиями в аргументах
admin
Чета чел странный какой-то
Evgeny Kot
Ну в C#, Питоне, Руби, Скале есть. И что это доказывает?
Egor
Я в школе учил паскаль и буду на всех ваших языках писать как на паскале ??
Evgeny Kot
[
{
"type": "italic",
"text": "ваших"
},
""
]
admin
Коллега, у вас мертворожденный
admin
Примите мои соболезнования
Evgeny Kot
А вот сейчас обидно было. С чего бы это?
Roman Berdichevskii
Дарт рулит!
admin
Слишком толсто, не?
Олжас Сулеймен
pub run build_runner --low-resource-mode
Alex
Всем привет! Может, немного туповатый вопрос. А какой тип правильно использовать для чисел с фиксированной запятой? Деньги хранить, например, или количество чего-нибудь. Вроде как double для этого не очень годится
Alex
Спасибо! А с дробной частью как быть? Городить костыли, хранить всё "в копейках"?
Alex
окей, я в общем-то к тому же пришёл. спс!
Egor
Ты не поверишь, к этому пришли много десятилетий назад :D
Alex
да я не сомневаюсь. А просто думал, может есть тип какой-то где-нибудь в каком-то пакете.
Alex
[
"Просто не факт, что будут центы, может и миллионные доли. И как-то неохота везде *100 ",
{
"type": "bot_command",
"text": "/100"
},
" писать."
]
Анатолий
Не надо это писать везде, сделай одну обертку и где надо выводить их прогоняй через нее
Алекс
Добрый день. Ранее писал на С++. Подскажите, есть ли в дарт возможность передать ссылку на объект в качестве параметров функции и внутри ее создать объект присвоив результат переданному параметру?
Анатолий
Сложно сформулирован вопрос
Анатолий
В дарте в принципе обьект можно передать аргументом, и это будет ссылка
Egor
Именно так, а с чем проблемы возникли?
Анатолий
Я не думаю что у него все так просто
Алекс
void test(List a){ a= new List(); } void main(){ List b=null; test(b); print(b); }
Sergey ?
а как же pure функции? ??
Алекс
Знаю что можно вернуть в качестве результата функции, это просто пример набросал
Egor
Ну за пределами функции ссылка же не изменится в любом случае
Алекс
pure это что? Можно ссылку?
Sergey ?
[
{
"type": "link",
"text": "https://en.wikipedia.org/wiki/Pure_function"
}
]
Анатолий
Вы не изменяете обьект, вы переопределяете переменную
Алекс
Это я понимаю, я спросил есть ли возможность. В си бы просто перед параметром амперсант поставил бы и получил то что нужно
Анатолий
Если я правильно понимаю что вам нужно, то нет, дарт этого не поддерживает
Анатолий
Конкретно ваш вариант можно обойти костылем
Анатолий
[
{
"type": "pre",
"text": "\nvoid test(Map data){\n data['a'] = new List();\n print(data);\n}\nvoid main(){\n Map b=new Map();\n test(b);\n print(b);\n}",
"language": ""
}
]
Алекс
Я тоже про это думал
Анатолий
Но вообще, я бы рекомендовал отойти от сишного стиля в дарте, в таких языках такие действия считаются антипаттернами :)
Алекс
Да, без указателей совсем не привычно :). Но сам язык понравился
Анатолий
Я думаю вам шарп будет ближе и по привычкам и по возможностям, дарт ближе к жс
Evgeny Kot
Ну в шарпе работа с указателями тоже не очень одобряется
Анатолий
Да, не одобряется, но она там есть ??
Алекс
Хочу перейти на темную сторону :)
Maria
У кого-нибудь ломался флаттеровский hot reload после ошибок? Отказывается работать после "Incorrect use of ParentDataWidget" (ошибку исправляю и получаю The following assertion was thrown building _CupertinoBackGestureDetector ...)
Maria
это ок и стоит подождать или писать issue или я чего-то не того делаю? =)
Evgeny Kot
Если ошибка такая, что мешает запуску - попробуй hot restart
Maria
Рестарт работает норм. Т.е. это обычная практика и просто надо перезапускать?
Ivan Frolkin
Hot reload ещё не всякое изменение правильно подцепит. Не всегда срабатывает как автомат Калашникова, но это на ишью не тянет)
Maria
Ок, понятно. Спасибо!
Evgeny Kot
Просто hot reload старается точечно изменить код, оставив состояние. Но это не всегда возможно
Maria
Думала про это. Но вдруг он супер крут??
Egor
Он супер крут, но перезапускать таки приходится ??
Анатолий
Если я сделаю так, будет ли гарантия что коннект произойдет в любом случае до первого использования класса Redis?
Анатолий
Я его импортить буду
admin
У теб main в любом случае стартанет
Анатолий
да, но коннект может затянуться
Анатолий
к примеру коннект будет идти минуту
admin
[
{
"type": "link",
"text": "https://github.com/dart-lang/sdk/blob/master/sdk/lib/convert/json.dart#L68"
}
]
Анатолий
у меня то авейт, но при импорте он учитывается?
admin
А разве у тебя main вызывается сразу после импорта?
Анатолий
к примеру в другом файле я сделаю import 'path/redis.dart'; main () { Redis.set('qwe', 'asd'); }
Анатолий
Я не уверен в очереди и ожиданиях, по этому и спрашиваю
admin
[
"Сделай не через ",
{
"type": "code",
"text": "main"
},
""
]
Анатолий
Ага, собственно я и отвечу, нет не будет коннекта
Анатолий
мейн не выполняется при импорте вообще
admin
А когда он выполняется?
admin
Я думал, что когда заюзаешь что-либо из пакета который импортнул
Анатолий
dart file.dart -> только один раз в этом файле
Анатолий
все остальные импорты нет
Анатолий
Тогда другой вопрос, есть ли в дарте аналог "process" ноды?
Анатолий
типа ссылка текущий процесс программы
Анатолий
[
{
"type": "link",
"text": "https://www.dartlang.org/articles/libraries/zones"
}
]
Анатолий
Тут написано что контент страницы может быть устаревший, что это значит? Давно не редактировали или функционал устарел и не надо его использовать?
Egor
[
"Это статья, а не референс. Зоны немного изменились, поэтому мягко намекают, что принимать близко к сердцу не нужно, если что-то не заработает ",
{
"type": "link",
"text": "https://groups.google.com/a/dartlang.org/forum/#!msg/announce/yR1dmQhU-WM/VtPP9-KLAQAJ"
},
""
]
Денис Трачук
Как вариант - есть такой паттерн Singleton называется. command иницализируешь в конструкторе, в статиках используешь этот инстанс, бонусом получишь единственное подключение к редис только по первому обращению, а не всегда
admin
анти-паттерн, статика
Анатолий
Подключенный файл в дарте сам по себе уже синглтон, я про процедуру подключения спрашивал а не про то как это сделать
Денис Трачук
Не совсем - для простоты рассматривай импорты как one-time включения в один большой файл, переменные по сути там будут типа глобальными и проинициализируются при старте, синглетон же проинициализируется при первом использовании.
Pavel Filatov
[
{
"type": "link",
"text": "https://m.habr.com/post/417115/"
}
]
Kirill Saltykov
Заголовок конечно байтит
Victor
из статьи: пишешь на Dart (какое удовольствие после JS) Не сильно понял что он имел в виду ??
Victor
Я пока особо разницы не чувствую за несколько дней дарта.
Egor
Вскормленные жс и пхп, наверное, не очень-то и должны ее чувствовать до определенного момента ??
Ivan Sinegovsky
Ну если писать на дарте в жс стиле то разницу сложно увидеть:)
tdesc
Да, те кто не нюхал ООП не поймут
Egor
Не только и не столько ооп. Когда тебя постоянно били по рукам за попытки написать какую-нибудь глупость или неоднозначный код - от жс буквально волосы дыбом встают. "Ты там пиши что-нибудь. А я исполню. Как-нибудь"
Nikolay Kisselev
Имелось ввиду всю прелесть ООП
Victor
А есть какие-то способы понять в жс стиле я пишу или нет?)
Nikolay Kisselev
Если получается красиво, то это не жс стиль
Victor
Не, я имею в виду конкретные случаи решения той или иной задачи, а не абстрактное "красиво". Что-то вроде вот в жс принято делать так, но в дарте не смотря на способ сделать так же у нас есть лучший способ как это делать.
Victor
Пока по моим начальным впечатлениям от чтения доки дарт во многом похож на жс.
Egor
Ну дарт пытались сделать максимально похожим изначально) Когда в браузер запихать хотели ??
Egor
Вообще язык очень удачный получился, нечто среднее между джавовским Масленое масло = новое Масло(); и жсовским Допустим масло
mark
языки программирования внутри одной парадигмы похожи друг на друга
Victor
ну вот я и пишу что пока особо разницу не чувствую, начал сразу писать как-то естественно на дарте, может потом пойму разницу лучше (если что речь про дарт в контексте флаттера, другое пока не пробовал)
Алексей Данилевский
Кто хорошо владеет ООП сразу понимает разницу между Dart и JS
Vyacheslav
А в js тогда что?
Алексей Данилевский
В JS попытка прикрутить ООП к тому что есть.
Алексей Данилевский
Объекты есть, но ООП в полном понимании - нет
Victor
Ну в жс наследование на прототипах, описание классов это сахар, да. Но что для меня как конечного пользователя меняется? Я могу даже не знать как оно устроено внутри и все равно использовать классы, наследоваться и все это. Чего там не хватает для полного понимания? Если что это вопрос не холиварный, а я правда пытаюсь разобраться в новой для себя технологии и расширить кругозор)
Kirill Saltykov
Или когда пришёл из свифта: всё это словарик.
Victor
Не хватало приватных полей, но сейчас благодаря видимо реакту их добавили.
Алексей Данилевский
[
"Это не нормально с точки зрения ООП:\n",
{
"type": "pre",
"text": "class A {}\n\nvar a = new A();\n\na.property='value';\nconsole.log(a);",
"language": ""
},
"\nВ дарте такое не прокатит"
]
Vyacheslav
В js интерфейсов же нет?
Vyacheslav
Если нет, то это от solid очень далеко
Vyacheslav
И слава богу что не прокатит:)
Victor
ну это отличие, в жс по сути объекты это мапы из дарта, но так ли это значимо что прям определяет весь стиль того как ты пишешь?
Алексей Данилевский
В ООП одно из фундоментальных понятий - это абстрагирование. Класс - это один из видов абстракций. Класс описывает сущность, у которой есть определенный набор свойств, определяющих состояние, и методов, определяющих поведение. Поэтому изменить набор свойств в нормальном ООП нельзя. В JS можно
Victor
там даже нет статических типов, поэтому в больших приложениях используют часто тайпскрипт, в нем есть типизация и интерфейсы
Vyacheslav
Ну динамическая типизация позволяет
Vyacheslav
Это во многих языках можно делать
Алексей Данилевский
Это и плохо. Красота и качество языка определяется не тем, что в нем можно делать некрасивые вещи, а наоборот
Vyacheslav
Я не спорю, но не это определяет ООП
Vyacheslav
ООП это всё-таки полиморфизм через наследование
Алексей Данилевский
В дарте в описанный класс постороннее свойство не запихаешь
Алексей Данилевский
точнее в объект этого класса
Алексей Данилевский
В JS так тоже можно сделать. Но код при этом становится ужасным
Алексей Данилевский
Основные принципы ООП: — Абстрагирование — Инкапсуляция — Наследование — Полиморфизм
Victor
ну тайпскрипт решает эту проблему
Victor
в обычном жс вообще очень много плохих вещей можно сделать) поэтому там популярны строгии линтеры
Evgeny Kot
На Тайпскрипт типы ненастоящие
Victor
да, но он тебе скажет еще при компиляции что такого поля нет на классе
Victor
понятно что костыли это все, но какое есть)
Evgeny Kot
Ну структурная типизация что то решает, но только малую толику
Алексей Данилевский
Мой пример это лишь песчинка среди прочего
tdesc
Ahead of time компиляцию на тайпскрипте уже сделали?
Igor
Можно взять надстройку типа TypeScript или Flow (даже он это ограничивает, хотя он всего лиш чекер)
Victor
тс работает так что на выходе у тебя просто жс бандл, его и всовываешь браузеру, понятно что там уже никаких типов нет
Victor
собстевнно у дарта так же ж если компилировать в жс?
tdesc
Но не в случае flutter
tdesc
Универсальность инструмента как раз показывает его качество
Victor
ну да, мне флаттер понравился
Victor
просто выходит будто я пришел и пишу что жс лучше) это не так, я просто не почувствовал особой разницы после жс и все
Ivan Sinegovsky
мне кажется, js универсальнее дарта, но о качестве первого это не говорит:)
Victor
ощущения от флатера будто пишу на реакте с крутой типизацией
tdesc
А мне кажется что универсальнее с++
Ivan Sinegovsky
веб и мобилки на нем вроде нельзя
Victor
js запускается везде, это точно)
tdesc
Ядра мобилки все на с++
Victor
можно теоретически веб
Ivan Sinegovsky
многие пишут ядра под мобилки? в основном все же прикладной софт
|