
Aleksandr
23.09.2017
19:50:01
И школьникам

double
23.09.2017
19:50:10

Mikalai
23.09.2017
20:01:47
И школьникам
а вот это не факт, когда я был школьником - мне не дали )

Aleksandr
23.09.2017
20:03:00

Google

Mikalai
23.09.2017
20:03:18

Aleksandr
23.09.2017
20:03:48

double
23.09.2017
20:03:55
и моё понравилось

Mikalai
23.09.2017
20:04:07
может потому что я из Беларуси ?

double
23.09.2017
20:04:07
и понравились документы моих одноклассников....
ты знаешь Илью Судника?

Mikalai
23.09.2017
20:04:19
о, перекличка школьников ????

Aleksandr
23.09.2017
20:04:24

Mikalai
23.09.2017
20:04:28

double
23.09.2017
20:04:38

Mikalai
23.09.2017
20:04:44
И что?
ну документы-то не такие, непонятные

double
23.09.2017
20:04:50
на свифте лбит прогать

Google

Mikalai
23.09.2017
20:04:52
ну кароче факт остается факом

double
23.09.2017
20:04:57

Aleksandr
23.09.2017
20:05:04

double
23.09.2017
20:05:06
у меня доки на латышском

Aleksandr
23.09.2017
20:05:24
Не валяй дурака ???

double
23.09.2017
20:05:34
ребята
у вас 993 а онлайна минимум
подключите комбота

Aleksandr
23.09.2017
20:09:02

double
23.09.2017
20:09:44

Alexander
24.09.2017
04:25:33
подкиньте пожалуйста справочник стран и городов. Мультиязычный

Irek
24.09.2017
08:11:43

Andrew
24.09.2017
08:55:01
https://www.geonames.org

Constantine
24.09.2017
14:16:27

Мерлин
24.09.2017
20:14:50
https://github.com/donutloop/toolkit

No1
24.09.2017
20:17:44
Nice)

Google

Ilya
24.09.2017
20:24:28
на каждый пук оно будет создавать убивать канал?
и да там нет закрытия

Alexander
25.09.2017
05:46:25
Помогите разобраться.
Есть горутина, которая запускается из main
go notifications.Main()
Она крутится в бесконечном цикле,
for {
if process() == 0 {
time.Sleep(10 * time.Second)
}
}
опрашивает базу на изменение статуса
SELECT ... WHERE OrderStatusId IN (0,3) LIMIT 1
и рассылает уведомления по API
req, err := http.NewRequest("POST", url, bytes.NewReader(body))
client := &http.Client{}
resp, err := client.Do(req)
Статусы в базе сменяются обычно скопом (100-200 записей), и потом функция рассылает по одному сообщению (100-200 итераций).
Основные задержки на resp, err := client.Do(req)
Как правильно распаралелить процесс, чтобы не ждать ответа от client.Do(req) ?
#multithreading

Roman
25.09.2017
05:49:04
в отдельную рутину лепить или лучше в канал а паралельно рутина которая читает из канала и делает запросы

Alexander
25.09.2017
05:49:38
в отдельную рутину что именно?

Roman
25.09.2017
05:49:54
ну то что не нужно ждать
http запрос

Valentin
25.09.2017
05:50:24
Одна рутина лезет в базу, другая запрос
Лучше сделать буферизированный канал между ними

Alexander
25.09.2017
05:53:24

Vasily Romanov
25.09.2017
05:53:28
Создать воркерах пул в 10-20-х горутин который, читает из канала, куда пишутся сообщения о нотификации

Roman
25.09.2017
05:53:28
https://gist.github.com/mattetti/3798173
типа такого

Alexander
25.09.2017
05:56:30

Максим
25.09.2017
07:59:42
Привет, подскажите пожалуйста, как правильно заполнить вложенную структуру?
имеется вот такого вида:
type MessageWebFCM struct {
To string json:"to"
Notification struct {
Title string json:"title"
Body string json:"body"
ClickAction string json:"click_action"
TimeToLive int json:"time_to_live"
Icon string json:"icon"
} json:"notification"
}
но вот так заполнить нельзя

Google

Aleksandr
25.09.2017
08:04:00
Notification: struct{...}

Максим
25.09.2017
08:06:18
так тоже ему не нравится

in favor
25.09.2017
08:12:53
Странно. Ты в структуре описал анонимную структуру

Максим
25.09.2017
08:13:30
через этот сайт делал https://mholt.github.io/json-to-go/
это он так разложил

Zhenja
25.09.2017
08:14:54
вынеси в отдельный тип

Alexander
25.09.2017
08:15:14
Notification.Body: api.Body - так канает?

Максим
25.09.2017
08:17:05

in favor
25.09.2017
08:17:30
Тогда создай отдельную структуру Notification
не анонимную
и записывай так:
Notification: Notification{param:value...}

Alexander
25.09.2017
08:18:08
type RegisterUserBody struct {
User struct {
UserID int json:"UserId"
UserName string json:"UserName"
Email string json:"Email"
PhoneNo string json:"PhoneNo"
FullName string json:"FullName"
} json:"User"
Password string json:"Password"
}
var userbody RegisterUserBody
userbody.User.Email = userInfo["Email"].(string)
у меня так написано

in favor
25.09.2017
08:18:55
А все поля анонимной структуры разве можно проинициализировать?

Максим
25.09.2017
08:19:55
ну, вот так не ругается... сейчас попробую, будет ли работать. Если нет, то тогда отдельно вынесу

Alexander
25.09.2017
08:20:44
это не DRYable )
Как по-человечески проверить наличие записей в sql.Query ?

Google

Mush
25.09.2017
10:28:57
не получив результат - никак

Алексей
25.09.2017
10:33:55
Или юзай queryRow, и получай количество через select count()

Mush
25.09.2017
10:42:00
дело в том, что постгрес и мускл не сообщает общее кол-во строк, такого понятия как получить кол-во строк неявным образом нет.
хотя у мускла есть флаг в селекте, чтобы вернулось кол-во строк, этот флаг игнорит limit. когда юзал для постраничного вывода
SQL_CALC_FOUND_ROWS
https://dev.mysql.com/doc/refman/5.7/en/select.html

Илья
25.09.2017
10:45:17
и это довольно плохо работает, если у тебя сложная выборка с order by
или не дай бог с группировкой

Mush
25.09.2017
10:47:00
база данных вообще работает не очень в плане ресурсоемкости и производительности,
я ее стараюсь не использовать.
а в данном случае чтобы знать кол-во строк, можно инкрементить счетчик в носкл базе при вставке

Олег
25.09.2017
11:17:01
в cmd.exe проблема)