
Aleksandr
12.01.2018
15:20:21
о, боже)
пинг базы, а не сервера

Vladislav
12.01.2018
15:20:32
а, увидел
пардон

Google

Kirill
12.01.2018
15:21:00
Угу
Так вот, как проверить, что база жива, если не пингом?

Vladislav
12.01.2018
15:21:20
сделай селект

Aleksandr
12.01.2018
15:21:34

Vladislav
12.01.2018
15:21:35
мы селектим, ибо пинг тоже для каких то условий не факт

Kirill
12.01.2018
15:21:37
На каждый запрос делать еще и селект? Выглядит лишним оверхедом

Aleksandr
12.01.2018
15:22:15

Vladislav
12.01.2018
15:22:26
в вашем случае, я думаю достаточно один раз пингануть на старте

Aleksandr
12.01.2018
15:22:43

Kirill
12.01.2018
15:23:44
Ну, скажем так, в одном сервисе у меня прокатит и пинг на запрос, т.к. запросы у меня все insert \ delete и выполняются довольно редко, чаще работа с локальным кешем, но в другом сервисе такое уже не прокатит

Google

Vladislav
12.01.2018
15:25:11

Aleksandr
12.01.2018
15:25:50

Vladislav
12.01.2018
15:27:01
ну ок

Aleksandr
12.01.2018
15:28:51

Kirill
12.01.2018
15:31:28
В общем я свою серебрянную пулю нашел

Aleksandr
12.01.2018
15:35:40
с каким моим советом вы нашли несостыковку?

Sergey
12.01.2018
15:45:29
можете помочь с запросом SELECT caller_id_number,destination_number,start_stamp,duration,billsec,hangup_cause,cc_agent,domain_name,queue_name,call_uuid
FROM cdr WHERE cc_agent = '900@voip.cfpsa.ru' AND destination_number = 'fs5@voip.cfpsa.ru'
and start_stamp::DATE >= '2018-01-02' and start_stamp::DATE <= '2018-01-22'
UNION ALL
SELECT cc_record_filename FROM cdr WHERE uuid = call_uuid;
[42601] ERROR: each UNION query must have the same number of columns
postgre

Aleksandr
12.01.2018
15:46:58
прям читай ошибку и переводи

Anatoly
12.01.2018
15:47:00
можете помочь с запросом SELECT caller_id_number,destination_number,start_stamp,duration,billsec,hangup_cause,cc_agent,domain_name,queue_name,call_uuid
FROM cdr WHERE cc_agent = '900@voip.cfpsa.ru' AND destination_number = 'fs5@voip.cfpsa.ru'
and start_stamp::DATE >= '2018-01-02' and start_stamp::DATE <= '2018-01-22'
UNION ALL
SELECT cc_record_filename FROM cdr WHERE uuid = call_uuid;
ты должен перечислить во втором select-e столько же полей, сколько и в первом и того же типа: caller_id_number,destination_number,start_stamp,duration,billsec,hangup_cause,cc_agent,domain_name,queue_name,call_uuid

Sergey
12.01.2018
15:47:32
ошибку я понял . вопрос как корректно выполнить запрос

Aleksandr
12.01.2018
15:48:15

Sergey
12.01.2018
15:48:58
Есть запрос SELECT caller_id_number,destination_number,start_stamp,duration,billsec,hangup_cause,cc_agent,domain_name,queue_name,call_uuid FROM cdr WHERE cc_agent = '900@voip.cfpsa.ru' AND destination_number = 'fs5@voip.cfpsa.ru' and start_stamp::DATE >= '2018-01-02' and start_stamp::DATE <= '2018-01-22';
SELECT cc_record_filename FROM cdr WHERE uuid = '35d4cd9e-194e-4579-970b-bed20b2bbeb3';
надо обьединиить эти запросы
но как мне обьявить uuid = call_uuid

Aleksandr
12.01.2018
15:48:59
первая половина запроса тебе возвращает 10 колонок, вторая 1. что ты ожидаешь увидеть?

Sergey
12.01.2018
15:49:08
11 колонок

Aleksandr
12.01.2018
15:49:17
это не так работает

Anatoly
12.01.2018
15:49:25
11 колонок
тогда ты не понимаешь union. он вертикально склеивает, а не горизонтально, а для вертикальной склейки количество полей и их тип должен совпадать

Google

Sergey
12.01.2018
15:49:38
JOIN можно но как правильно составить запрос

Alex
12.01.2018
15:55:31
Здесь надо подселект сделать
Но пока непонятно, откуда берется uuid
Надо больше деталей, что и зачем надо сделать.

Sergey
12.01.2018
15:57:44
uuid из первого запроса

Karachun
12.01.2018
16:00:36
SELECT cc_record_filename FROM cdr WHERE uuid IN (SELECT call_uid FROM cdr WHERE …. 1й запрос)
но это на больших таблицах в случае с mysql будет медленно

Kirill
12.01.2018
17:09:36

Marlik
12.01.2018
17:18:57
Люди, подскажите как мне сделать дамп того что приходит в json, по принципу Perl, что-бы структуру json получить :
use JSON::XS;
use Data::Dumper;
my $external = $c->req->body; # Тут получили json
my $json = decode_json $external; # Декодируем его
my $result = Dumper($json); # Делаем дамп
...

Mykyta
12.01.2018
17:19:47

Marlik
12.01.2018
17:20:10

Mykyta
12.01.2018
17:20:19

Mykyta
12.01.2018
17:20:36

Marlik
12.01.2018
17:21:56
Спасибо на добром слове, почитаю.

Mykyta
12.01.2018
17:29:48
Спасибо на добром слове, почитаю.
Лучше бы код показал. Ибо пакет хттп в го в Body это io.Reader, то бишь его сначала надо счиатать в буффер, получить массив байтов, откуда можешь конвертнуть его в string, либо что-то делать дальше

Marlik
12.01.2018
17:34:52
Через spew получаю
var := spew.Sdump(updates)
sendToMe(&var)
...
(tgbotapi.UpdatesChannel) (cap=100) 0xc420013d40

Mykyta
12.01.2018
17:40:23
и еще буферезиованный на 100 элементов

Marlik
12.01.2018
17:41:00

Google

Mykyta
12.01.2018
17:41:20
тупая телега со своими смайлами
string(b[ : ])

Marlik
12.01.2018
17:42:05
Спасибо, пойду ковырять.

Vasily Romanov
12.01.2018
18:01:42

anton
12.01.2018
18:02:09

Marlik
12.01.2018
18:04:45

Admin
ERROR: S client not available

Vasily Romanov
12.01.2018
18:06:52


Marlik
12.01.2018
18:06:54
В канал приходит структура такого вида:
type Update struct {
UpdateID int `json:"update_id"`
Message *Message `json:"message"`
EditedMessage *Message `json:"edited_message"`
ChannelPost *Message `json:"channel_post"`
EditedChannelPost *Message `json:"edited_channel_post"`
InlineQuery *InlineQuery `json:"inline_query"`
ChosenInlineResult *ChosenInlineResult `json:"chosen_inline_result"`
CallbackQuery *CallbackQuery `json:"callback_query"`
ShippingQuery *ShippingQuery `json:"shipping_query"`
PreCheckoutQuery *PreCheckoutQuery `json:"pre_checkout_query"`
}
Получается мне нужно перевести структурку в строку?
Я только читаю про го, не пинайте сильно.
То есть получается эдакая композитная структура.

Sergey
12.01.2018
18:43:00
а какой best practice проверить все поля структуры например такой type User struct {
gorm.Model
Username string `json:"username"`
Password string `json:"-"`
IsAdmin bool `json:"isAdmin"`
ImagePath string `json:"imagePath"`
}
на nil, пустые строки?

Aleksey
12.01.2018
19:44:15
Кто что использует для валидации при разработке REST API или вообще не используете?

Demuz
12.01.2018
19:44:49

Aleksey
12.01.2018
19:45:02

Demuz
12.01.2018
19:45:07
Ага.
Ой, я думал вы для авторизации имели ввиду. ?

Google

Aleksey
12.01.2018
20:02:43
Кто что использует для валидации при разработке REST API или вообще не используете?

xPushkin
12.01.2018
20:03:46

Alexey
12.01.2018
20:05:56

Mykyta
12.01.2018
20:08:42

FindYanot
12.01.2018
20:32:55
Всем вечера, ребят.
Никто тут не работал с socks5?
Нужно сервер написать под большое кол-во коннектов. Интересно - пишите в ЛС.

Ivan
12.01.2018
23:19:47
Коллеги, где можно почитать о том, как правильно писать бинарные парсеры?
с вложенными динамическими структурами

Александр
13.01.2018
00:09:26

Marlik
13.01.2018
01:11:00
Люди, а гоферский telegram-bot-api умеет колбеки обрабатывать. Чот примера не найду.

Aleksandr
13.01.2018
01:12:06

Marlik
13.01.2018
01:17:37
Там так-то дока есть, мне кажется она самодостаточная, но я пытаюсь изучать го, и паралельно пытаюсь на практике пробовать. Сложность первая, композитные структуры. Мне допустим было по проще посмотреть примеры таких ботов, но я найти их не могу. Странно

Ivan
13.01.2018
02:15:52
но интересует альтернативный подход, мне кажется можно сделать более элегантно

Alexey
13.01.2018
02:49:41
Люди, а гоферский telegram-bot-api умеет колбеки обрабатывать. Чот примера не найду.
for update := range updates {
var message = message{}
if update.Message != nil {
// Received message with instagram media URL
msg := update.Message
logrus.Printf("[<-] Received message from (%s) %s", msg.From.UserName, msg.Text)
} else if update.CallbackQuery != nil {
// Received when user click on button
callback := update.CallbackQuery
logrus.Printf("[<-] Received callback from (%s) %s", callback.From.UserName, callback.Data)
} else {
logrus.Printf("[<-] Received unknown update: %v", update)
}
}

Demuz
13.01.2018
08:58:16
Доброго времени суток! Подскажите пожалуйста, как называется такое явление: один поток пытается добавить объект в карту, а другой поток пытается удалить объект из этой же карты в одно и то же время. В итоге происходит хрень. ?

Alexander
13.01.2018
08:58:48
мутексы заюзай
и в 1.9.2 есть спец тип для потокобезопасных map

Demuz
13.01.2018
08:59:44
Я их юзать начал. Просто хотел узнать как это назыается вобще, что-то с конкуренцией связано помоему )