
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
Так что не парься раньше времени.
в принципе можно и 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

Denis
09.04.2018
14:56:42
через соединение шлёшь сообщение

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

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

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
Какие альтернативы?
Может просто опыт десктопных гуи фреймворков в веб перенести, а синкать состояния через какие нить веб-сокеты?

Dark
10.04.2018
06:53:47

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

Dark
10.04.2018
07:07:51

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
Многопоточность, асинхроность
И тому подобное