@dlangru

Страница 503 из 719
Oleg
09.04.2018
14:50:37
+

Pavel
09.04.2018
14:50:48
Это не connection

А класс который делает http запросы и получает ответ.

То есть высокоуровнево можно думать что это как соединение, но на самом деле это просто http реквесты с парсингом ответа

Google
Denis
09.04.2018
14:51:30
Например с UFCS методами кодер сможет добавлять свои методы в апи в таком же стиле, достаточно будет ему описать в своем файле Message someNewMethod(BotApi botApi, int param1)
он это сможет делать и с помощью наследования, например. Ну или сделай публичными внутренние переменные. С другой стороны, это всё может нарушать саму идею инкапсуляции - кодер не обязан знать внутренности.

Так что не парься раньше времени.

в принципе можно и Connection обозвать. Сокеты ведь тоже не всегда tcp/ip сокеты.

Pavel
09.04.2018
14:52:47
Почему не BotApi ? =)

Везде во всех либах это называется Api

Denis
09.04.2018
14:53:51
неа

Oleg
09.04.2018
14:53:55
Pavel
09.04.2018
14:53:58
Хотя, это может быть Bot

т.к. в конструктор принимается токен конкретного бота

Denis
09.04.2018
14:54:09
нет не бот

ты именно соединение с ботом описываешь.

Oleg
09.04.2018
14:54:27
это Telega

Google
Pavel
09.04.2018
14:54:35
Это не соединение =)

Класс ни с кем не соединеяется.

Oleg
09.04.2018
14:54:46
чтобы над именем не думать долго, можно по имени либы сделать

Denis
09.04.2018
14:54:46
соединение уровня приложения

Oleg
09.04.2018
14:55:10
mosquitto так сделали, например (первое что вспомнилось)

Pavel
09.04.2018
14:55:35
А если я выполню botApi.sendMessage(123, "test") то это не создаст никакого соединения, просто сделает запрос на отправку сообщения

Это больше похоже на UDP

Oleg
09.04.2018
14:57:34
озвучу первую мысль: не париться и напилить всё внутрь класса, оставить BotApi

Denis
09.04.2018
14:57:57
а в каменте написать что оно maintains a connection to Telegram API

Pavel
09.04.2018
14:58:03
Когда там будет 3000 строк вы по другому заговорите )

Denis
09.04.2018
14:58:43
ещё почему botApi это соединение - оно может эксепшен выкинуть насчёт потери соединения? (скорее всего), и его надо будет передёргивать.

Pavel
09.04.2018
14:59:38
Соединение нельзя потерять, но можно словить какую-нибудь ошибку во время установления https соединения

Скажем, этот класс делает много соединений в процессе своей работы

Denis
09.04.2018
15:02:38
ну вот, это таки соединение

на уровне OSI "приложение"

всё норм, делай TelegramBotConnection

Oleg
09.04.2018
15:03:38
Когда там будет 3000 строк вы по другому заговорите )
std.stdio.File почти 3к (тесты, доки, код) строк, но ведь сорцы не читает никто (изредка и только конкретные вещи), всё самое важное в доке

Dmitry
09.04.2018
16:03:13
Если в монге нет транзакций то нет и блокировок?

Google
Pavel
09.04.2018
16:04:18
это разные вещи

Denis
09.04.2018
16:06:09
Если в монге нет транзакций то нет и блокировок?
Ещё хуже - данные просто испортятся

Dmitry
09.04.2018
16:23:45
А можешь на пальцах объяснить как работает for update?

Denis
09.04.2018
16:25:46
лочит строки так чтобы параллельный запрос их не мог поменять пока дочерний запрос не пройдёт

нужно только для многоэтажных запросов или может для хранимок ещё

Alexander
09.04.2018
16:27:06
> пока дочерний запрос не пройдёт транзакция

защищает от аномалий когда куча уродов долбится в одну сущность в базе с какими-то изменениями.

требующими сначала селекта, потом вдумчивой обработки и только потом updat-а

Denis
09.04.2018
16:29:36
да, это нужно только если данные меняются.

Dmitry
09.04.2018
16:57:21
Транзакция же может содержать и селекты и апдейты одновременно?

Denis
09.04.2018
17:00:38
да

просто если там только селекты то нет смысла лочить - данные не изменятся во время этой транзакции

Dmitry
09.04.2018
17:01:47
Но если в этот момент чисто технически может быть апдейт, то надо?

Denis
09.04.2018
17:02:25
не так. если в твоём коде будет апдейт ниже то в данном селекте надо сделать for update

если 3 этажа то смотри зависит ли от текущих выбранных данных апдейт или нет

если зависит то ставь

Dmitry
09.04.2018
17:08:53
Типа пока апдейт не завершится селект не делать?

Denis
09.04.2018
17:10:53
нет, FOR UPDATE говорит другим параллельным запросам что ИХ чтение будет ожидать окончания твоего нижнего UPDATE

чтобы они случайно не прочитали данные которые ты уже прочитал селектом но ещё не изменил апдейтом

(они этого никак не замечают)

Google
Dmitry
09.04.2018
17:22:31
нет, FOR UPDATE говорит другим параллельным запросам что ИХ чтение будет ожидать окончания твоего нижнего UPDATE
Я не совсем понял, а я разве в своем сообщении другой кейс какой то описал? Просто вроде бы мы про одно и тоже или нет?

Denis
09.04.2018
17:22:52
ну я думал ты про свой текущий селект

а не про параллельные

Dmitry
09.04.2018
17:23:50
Запросы в очередь как то ставятся?

Денис
09.04.2018
17:23:51
Всем привет. А кто-нибудь работал тут с puppet?

Denis
09.04.2018
17:25:17
Запросы в очередь как то ставятся?
сложнее - планировщик решает как правильно всё вытащить. а блокировка это просто флаг напротив строки таблицы

Dmitry
09.04.2018
17:26:16
Как я понимаю там еще дофига случаев может быть с этими блокировками?

Admin
ERROR: S client not available

Denis
09.04.2018
17:26:32
?

Dmitry
09.04.2018
17:28:47
Ну типа попытка сделать апрейт во время селекта лишь единичный пример?

Denis
09.04.2018
17:31:57
остальное не влияет на целостность данных же

select не меняет данные, insert не трогает существующую строку, delete уничтожает но и пофиг

Pavel
09.04.2018
17:34:14
Как я понимаю там еще дофига случаев может быть с этими блокировками?
Почитай еще про уровни изоляции. И это все не совсем относится к блокировкам

Блокировки они и в тредах дишных допустим есть. Всякие мьютексы.

Denis
09.04.2018
17:37:52
лучше всего SQL изучать при написании бухгалтерии

пару раз ошибёшься на миллион - быстро всё поймёшь)

@DmitryBubnenkov у ПостгресПро лежит русский перевод мануала к постгресу https://postgrespro.ru/docs/postgresql/10/index Он актуальный.

Pavel
09.04.2018
19:12:19
Причем ошибаться на миллион совсем не сложно.

Denis
09.04.2018
19:13:04
канеш! такой вот параллельной транзакцией с косяком списать дважды что-то и всё

О главнейшей причине существования современных JS-фреймворков / Хабрахабр https://habrahabr.ru/company/ruvds/blog/353074/

Google
Denis
10.04.2018
04:38:49
Автор чуток не додумал - можно фронтенд автоматически генерировать и всё будет синхронизировано. Теоретически.

Радует что начали понимать люди

Dark
10.04.2018
05:02:53
Все давно знают, что модель надо синхронизировать с вьюхой

Просто в вебе эта проблема стоит наиболее остро

Pavel
10.04.2018
05:53:59
синхронноть и restful - тут нужно или крестик снимать, или штаны натягивать.

Dmitry
10.04.2018
06:37:13
Какие альтернативы?

Может просто опыт десктопных гуи фреймворков в веб перенести, а синкать состояния через какие нить веб-сокеты?

Pavel
10.04.2018
07:05:45
На десктопе сервер может дёргать клиента.

Pavel
10.04.2018
07:11:14
Многие вещи упрощаются.

На десктопе можно реализовать любой протокол.

"десктоп" - условно

Dark
10.04.2018
07:12:28
На десктопе проблемы иного плана

Pavel
10.04.2018
07:12:58
Какие?

Dark
10.04.2018
07:14:46
Многопоточность, асинхроность

И тому подобное

Страница 503 из 719