Программирование : Dart & Flutter по-русски
???????
А в рамках транзакции у тебя уже может быть несколько запросов
Александр Васильев
И если какая то с ошибкой то заново ее шлю
???????
Можешь, но что именно это тебе даст?
???????
А если пользователь вырубит в этот момент телефон?
???????
Или админ решит ребутнуть сервак?
Александр Васильев
Консольный скрипт - Пользователь Я
Alexander Vinogradov
тогда без транзакции
???????
Ну вот у электрик нассыт тебе на щиток?
Александр Васильев
ну я понял.. теперь для чего транзакции
???????
Если тебе пихуй на сохранность твоих данных - вообще не пользуй транзакции
Александр Васильев
Ноут с питанием=)
Александр Васильев
Пишу локально
???????
Если не пихуй - используй одну
Александр Васильев
ну не пофиг..
???????
Крутить их в цикле - идиотизм
Alexander Vinogradov
BSOD, или плата заискрила
???????
Ну раз с питанием, вообще не пользуй
???????
Это была шутка, если что)
Александр Васильев
Транзакция 1 если ошибка Cancel и повтор Транзакция 2 если ошибка Cancel и повтор
???????
Что тебе это даст?
Александр Васильев
чем плохо их циклом крутит..
Александр Васильев
да потому что 800 строк же
Александр Васильев
800к строк
Александр Васильев
мне их целиком чтоли..
Александр Васильев
2 минут)
???????
Все, я устал, объясните ему кто то
Александр Васильев
но ты прав
???????
А так не долго будет?)
Alexander Vinogradov
просто дропни таблицу и создай новую. залей туда новые данные
???????
Тип если крутить несколько транзакций будет быстрее?)
Александр Васильев
нуда..
???????
Причем даст более большую нагрузку
???????
Крути запросы в цикле, но не транзакции
Александр Васильев
0:00:39.586696 150к 0:01:49.337611 840к
???????
Эх, когда дойдешь до понятия "блокировка таблицы", мне кажется, тут весь чат поседеет) А меня вообще в морг увезут.
???????
В цикле запросы хоть и делай, но пиши не по 1 значению, а гдет по 30-5000 штук за раз
Александр Васильев
я 1 запрос вообще делаю
Александр Васильев
с 800к
???????
Эт многовато может быть для 1 запроса
???????
Попробуй в цикле по 5000 штук
???????
И все это в рамках 1 транзакции, бло
Александр Васильев
И все это обернуто в одну транзакцию?
Александр Васильев
внутри нее цикл да?
???????
да, в одну одну одну
???????
ну знаешь, 1 цифру
Alexander Vinogradov
ты это пытаешься примерно сделать?
???????
вот она одна должна быть
Александр Васильев
await connection.transaction((ctx) async { var result = await ctx.query("SELECT id FROM table"); await ctx.query("INSERT INTO table (id) VALUES (@a:int4)", { "a" : result.last[0] + 1 }).catchError((e){ print(e.toString()); ctx.cancelTransaction(); }); });
Александр Васильев
вот так отменяю?
Александр Васильев
или прямо у connection.cancelTransaction(); ?
???????
Я из дарта еще не работал серьезно с бд, на следующей неделе с постгре ооочень плотно буду.
???????
И там какраз очень важна будет 100% доставка данных
???????
Ну эт не сурьезно жи)
???????
Там, я вроде как, вообще без транзакций делал, тк небольшое число не важных данных
Александр Васильев
Нет 1) Я по списку domain ищу в большой таблице rows где домены совпадают 2) Получаю ИДшники доменов и обновляю taskMap 3) Из таск мап уже формирую запрос id, valueUpdate
???????
А так, перебивался различными key-value noSQL
Fearless Cry
хм. Ну иногда нужно сначала удалить, а потом записать, например
Fearless Cry
или если запись many-to-many объектов
Alexander Vinogradov
испльзовать domain как ключ
???????
Ну если что, я не гоню на sqlite, это бомбическая вещь, если всего 1 читающий и пишущий.
Fearless Cry
так я про транзакции
Александр Васильев
А если я внутри транзакции у самого запроса словлю ошибку? то она перехватиться в конце тела транзакции?
???????
Эм, конечно должна
???????
Это вообще правило дурного тона замалчивать ошибки, вряд ли разработчики пакета postgre этим грешат.
Fearless Cry
а это postgre?
Fearless Cry
у sqflite похожее апи просто
Fearless Cry
ну понятно почему
???????
Ну все они реляционные с синтаксисом sql)
Fearless Cry
тут речь про апи
Fearless Cry
а не про sql
???????
Ну так api потому и идентичное
Fearless Cry
просто показалось что это sqflite
???????
Оно везде такое, во всех языках и пакетах
Alexander Vinogradov
mysql1, sqflite, postgres похожи
Александр Васильев
Еще такой вопрос: Вот я еще я решил делать инсерт третьим запросов. Я делаю SELECT по полю domain, потом UPDATE по полю id А потом INSERT У меня индекс обновиться на поле domain, id после инсертов?
Fearless Cry
хорошо и плохо в каких смыслах?
Alexander Vinogradov
бд.query("SELECT котик") во всех пакетах почти
Fearless Cry
с точки зрения читаемости?
???????
Очевидное экранирование
???????
Чтоб не поиметь sql инъекций
???????
Или не выстрелить себе в ногу
Alexander Vinogradov
Кибербезопасность в первую очередь
???????
Сдается мне, что все это вообще можно сделать в рамках одного запроса
???????
Прям ваще все это.
Alexander Vinogradov
или испльзовать domain как ключ
???????
Через временные таблицы, отделяя запросы с помощью ";"
???????
Но эт я уже скажу на следующей неделе, когда сам делать буду)
Alexander Vinogradov
тоже была такаяч идея
Александр Васильев
та можно и одним но как узнать что обновилось а что нет?
Александр Васильев
update отдает результаты?
Александр Васильев
у меня не получилось..
???????
Все обновится, что ты скажешь.
???????
Плюс ты можешь писать во временные таблицы
???????
И выводить уже её
Alexander Vinogradov
может просто ИСПОЛЬЗОВАТЬ DOMAIN КАК КЛЮЧесли он уникален
Александр Васильев
да уникален
???????
Ладн, я ушелб) Счастливых всем выходных)
Alexander Vinogradov
значит это ключ
Alexander Vinogradov
бд изначатьно кривая
Александр Васильев
"UPDATE bigdomains as b SET alexa = c.value_alexa FROM (values $bigStringForUpdQuery) as c(id, value_alexa) WHERE c.domain = b.domain",
Александр Васильев
"UPDATE bigdomains as b SET alexa = c.value_alexa FROM (values $bigStringForUpdQuery) as c(domain, value_alexa) WHERE c.domain = b.domain",
Alexander Vinogradov
ключ это не INT ID. это может быть номер пасспорта, автомобильный номер, временная метка, ip адресс или доменное имя
Alexander Vinogradov
если уникальности нет то единственный выхот это INT ID
Александр Васильев
да уникальное
Александр Васильев
проверял недавно
Александр Васильев
select * from bigdomains t1 where (select count(*) from bigdomains t2 where t1.domain = t2.domain) > 1 order by domain
Sergey
Верно ли я понимаю что если что-то меняется на экране , то пересоздавать нужно весь экран целиком
Александр Васильев
можно отедльный виджет ребилдить setState
Александр Васильев
StatefullWidget
Alexander Vinogradov
нужно правильное проектирование БД.
Alexander Vinogradov
просто таблица получается, где один столбец с доменом, причем тот ябъявлен как ключ
Александр Васильев
[
{
"type": "link",
"text": "https://stackoverflow.com/questions/53234825/what-is-the-difference-between-functions-and-classes-to-create-widgets/53234826#53234826"
}
]
Александр Васильев
[
{
"type": "mention",
"text": "@zzzaaaqqq"
}
]
Александр Васильев
я нехочу нормализацию..
Александр Васильев
денормализацию надо мне тут=)
Александр Васильев
потом это нужно будет в один сервис слать целиком + нацепить еще полей
Alexander Vinogradov
и в итоге нормализовал по уникальному INT ID и поддерживаешь уникальнось по DOMAIN ручками целую бесконечность ценой электроэнергии
Александр Васильев
Вы мне лучше скажите если есть индекс btree по полю domain То когда я инсреты делаю - он автоматом перестраивается?
Александр Васильев
про домен PK подумаю=0 но уже неохото переделывать..=/
???????
Категорически нет
???????
Описали прямую противоположность работе флатера
Sergey ?
[
{
"type": "mention",
"text": "@bunopus"
}
]
Sergey ?
А почему должна? )
Sergey ?
Не позорься, а ??
Sergey ?
Можно и выше бессмысленный диалог тоже
Дмитро
[
{
"type": "link",
"text": "https://pastebin.com/Nf6bDEb2"
},
"\nПодскажите, пожалуйста, почему моя иконка старта или стоп не меняется?"
]
Дмитро
Когда нажимаю на нее, меняется state же
Дмитро
Окей, спрошу в английской версии
Давиденко Владислав
'final' означает одиночное присваивание: конечная переменная или поле * должны * иметь инициализатор. После присвоения значения окончательное значение переменной не может быть изменено.
Давиденко Владислав
Наверно из-за этого ты неможешь изменить свои стейты. Ты просто сделал их с конечным результатом без возможности изменить.
Дмитро
Я делал просто var
Дмитро
Не помогает, да и в другом месте c final работает
Давиденко Владислав
[
{
"type": "pre",
"text": "super.initState();\n setState(() {\n isLoad = true;\n });",
"language": ""
},
"\nА такой способ не пробывал использовать? Или ситуация не позволяет?"
]
Дмитро
А как же советы разрабов fluttera
Дмитро
Вот, хотя бы Scope model использовать лучше
Давиденко Владислав
Мммм. Ты проверял меняется ли у тебя стейт?
Дмитро
Просто не до конца понимаю этот Scope Model, когда нужно Consumer, когда Provider. Я делал раньше с Provider, вроде, получалось
Дмитро
Блин, не буду больше смотреть видосы от Гугл)
Дмитро
Окей, ща с обычным стейтом попробую
Andrey Tkachenko
хаброэффект )
Alexander Vinogradov
Кто не спит? Я не сплю
Alexander Vinogradov
Хороших выходных
A1ex Petrov (К)
всем привет, такой вопрос: Сделал загрузку данных по апи, на симуляторах все отображается все данные, билд на айфон делаю тоже все работает, на андроиде почему то не загружаются данные, что то может надо дополнительно для андроида настраивать?
Daniil Kolyasnikov
Android manifest permission internet
A1ex Petrov (К)
это в android/app/src/main/AndroidManifest.xml надо добавить ?
A1ex Petrov (К)
спасибо большое
Andrey Tkachenko
коллеги, концептуальный вопрос. насколько теперь актуален предварительный дизайн в sketch с учетом достаточно оперативного прототипирования в самом flutter как считаете?
Alexander Vinogradov
Нас 2300
Daniil Kolyasnikov
Это как верстать без макетов
A1ex Petrov (К)
Надо отмечать!
Alexander Vinogradov
Помню пришёл после 2000
A1ex Petrov (К)
Кто на чем бэкэнд держит?
Andrey Tkachenko
ну а если прогер, верстальщик и дизайнер в одном лице? или всеже оперативность прототипирования не заменяет кропотливого карпения в sketch до идеального вида?
Nick
[
"гайз, поймал ща оч странное поведение, мб кто-то сталкивался?\n\nдва экрана, на одном кнопка для перехода, на втором текстовое поле\n\nесли делать переход с помощью ",
{
"type": "code",
"text": "Navigator.of(context).push(...)"
},
", то текстовое поле на втором экране теряет фокус сразу после тапа по нему\n\nесли переходить на второй экран через ",
{
"type": "code",
"text": "pushNamed(...)"
},
", то никаких проблем, все работает как надо"
]
Sergey Salnikov
На воде и хлебе
Andrey Tkachenko
oracle cloud недавно бесплатные мощности раздавал правда канал подрезан и не шибо шустрые машинки, смотря что тебе надо
Sergey Salnikov
Добавь ещё в релизный манифест, он отдельно лежит в директории release
A1ex Petrov (К)
Я про язык бэкенда)
Andrey Tkachenko
оо брат тут на вкус и цвет...
Daniil Kolyasnikov
[
{
"type": "link",
"text": "https://a.d-cd.net/TAAAAgMkTOA-960.jpg"
}
]
Alexander Vinogradov
Дурт ))))
Nick
все просто: либо на чем исторически сложилось, либо на том, на чем умеют. оч сильно зависит от возраста проекта и бека к нему. у молодых всякие питоны и нодджейэсы, у старых джава и пхп. иногда встречается руби (вот как у нас, например)
Nick
некоторые наркоманы на голанге умудряются писать бэк
Andrey Tkachenko
интересное деление по возрастным категориям )
Nick
ах да, еще же есть перл! есть тут перловики, интересно?
Daniil Kolyasnikov
Где все перловики? В майле
Andrey Tkachenko
на чем быстрее напишешь на том и пиши, сейчас скорость выпуска важнее, стартапы многие не доживают до рефактора
Nick
ниче, как прознают, что яндекс почти полностью отказался от перла, тож скипанут
Daniil Kolyasnikov
почти ?
Nick
вроде оставался какой-то небольшой кластер перловых машинок там, хз рубанули их уже или нет. бОльшую часть выпилили года полтора назад
Nick
может уже и остатки выкинули, не застал
Krat0S
Питон гораздо раньше жабы стал крутить бэкенды. Это потом молодые хипстеры (типа тех, кто сейчас топит за ноду на сервере), привезли бэк на жабе
Krat0S
Я недавно допиливал сервак Маттермоста (клон слаки), так он как раз на гошечке. Великолепная читабельность и архитектура
Daniil Kolyasnikov
php, yii
Nick
вполне допускаю, но для меня го остается языком оптимизации узких мест, когда еще не хочется лезть в плюсы и переусложнять, но хочется достаточно низкоуровневое решение
Nick
а если работаешь в команде и ты единственные эти плюсы знаешь, то вообще без вариантов. освоить го в разы проще
Krat0S
:) Не без этого. Но у го есть офигенная плюшка - прям как во флаттере)) Ты пишешь сразу под все платформы, а в конце говоришь под какую сбилдить. И полученный бинарник не требует НИКАКИХ зависимостей (он все свое приносит с собой)
Nick
да, это вот офигенная штука, когда увидел первый раз, оч впечатлился
Andrey Tkachenko
коллеги, здесь есть фильтрация по темам?
Nick
ээ, что ты имеешь ввиду?
|