
Viacheslav
05.03.2018
08:11:54
на го не писал? Не синьёр!

Vladimir
05.03.2018
08:12:02

Viacheslav
05.03.2018
08:12:09
дал б.г гошечку даст и перфоманс! (с)

Constantine
05.03.2018
08:12:44
и дженерики

Google

/dev/null
05.03.2018
08:13:03
Здаров ребят., вот только начал пробовать монгу и узнаю, что разработчик mgo перестал его поддерживать
Кто на что перебрался?

Yura
05.03.2018
08:13:21

Timur
05.03.2018
08:15:28

Yura
05.03.2018
08:15:38

Alexander
05.03.2018
08:17:19

Andrew
05.03.2018
08:17:55

Vladimir
05.03.2018
08:18:17

Alexander
05.03.2018
08:18:40

Andrew
05.03.2018
08:18:56

Yura
05.03.2018
08:20:02
boltdb же
Месье знает толк.
BTW, из присутствующих кто полноценно использует boltdb в разработке (т.е. не посредством etcd и других сторонних библиотек/приложений, а напрямую)? Поделитесь опытом

Maxim
05.03.2018
08:20:48
Не дай бог ещё забудешь проверить на ошибки или отсутствие значения

Google

Daniel
05.03.2018
08:21:15
погоди

Maxim
05.03.2018
08:21:15
Короче - гемор

Daniel
05.03.2018
08:21:32
boltdb - известный тормоз, особенно на запись

Yura
05.03.2018
08:21:49

Maxim
05.03.2018
08:22:11

Daniel
05.03.2018
08:22:28
и все данные в память влезли, небойсь
тогда да, будет быстро

Alexander
05.03.2018
08:22:37

Kirill
05.03.2018
08:23:10
Кто-нибудь собирается на 2018.codefest.ru ?
https://2018.codefest.ru/

Yura
05.03.2018
08:26:15
и все данные в память влезли, небойсь
Даже если не влезли, btree пока-что самый быстрый способ искать данные на диске, и все lsm адепты это признают.
(Ок, может и есть более лучшие способы, но они гораздо менее популярны чем btree и lsm).
Правда, при определенных условиях итерация по lsm может быть быстрее, это правда.

Daniel
05.03.2018
08:28:35
если не влезли - будет как у всех

Pawel
05.03.2018
08:42:01
и дженерики
round же дали в 1.10 по просьбам трудящихся, глядишь и дж..в подкинут
то ли я тупой, то ли гвозди, но с boltdb почему то всегда всё, кроме самого простого, получается на много хуже, чем с любым SQL - и тормозит, и говнокода много

Daniel
05.03.2018
08:49:03
это не болт, это KV такие

Pawel
05.03.2018
08:49:15
да, конечно

Nick
05.03.2018
08:50:42
Кстати интересно, а что если бы автор той статьи попробовал azul с профилем оптимизации

Viacheslav
05.03.2018
08:54:24
у автора статьи цель другая была

Phil
05.03.2018
09:22:54

Google

Kirill
05.03.2018
09:23:47

Phil
05.03.2018
09:24:21
Хито?

Andrew
05.03.2018
09:25:15
А кто не тормоз?
/dev/null. Я сам офигел - скорость записи упирается в скорость чтения из любого источника!

Pawel
05.03.2018
09:33:34

Kirill
05.03.2018
09:35:22

Phil
05.03.2018
09:37:22
Я просто токен oauth2 сервер сделал. И он на boltdb. Но пока не пробовал в проде

Daniel
05.03.2018
09:45:59
для твоих целей оно ок

Alex
05.03.2018
10:29:54

Andrey
05.03.2018
10:33:40
Всем привет. 2 Вопроса тем, кто использует vscode. Использую тэги в го "-tags".
1. Как сделать так чтобы отладчик запускался с определёнными тэгами? С компиляцией проблем нет. таски настроил. Что надо пропистаь в launch.json? Мне надо дебаггером по тесту пройтись.
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "test",
"remotePath": "",
"port": 2345,
"host": "127.0.0.1",
"program": "${workspaceRoot}",
"env": {},
"args": [],
"showLog": true
}
]
}
2. Как сделать чтобы линтер теги видел?

Kirill
05.03.2018
10:37:15
стартуем ноду без http апи и тд

Aleksandr
05.03.2018
10:41:47
коллеги, есть несколько воркеров, получающих задания из продьюсера, который кидает задания в канал. Внутри воркера получаю задания вот таким манером:
for {
select {
case task := <-crawler.tasks: // chan *Task
log.Printf("Task: %v", task)
crawler.handleTask(task)
case <-crawler.workersStop:
return
}
}
сейчас наблюдаю как из канала приходит сначала нормальный Task, а в другом воркере nil, причем продьюсер отправил в канал только первый таск. Это какая-то гонка?

Andrei
05.03.2018
10:46:07

Yura
05.03.2018
10:46:23
badgerdb
Пока багнутый. Ну и, честно подразумевает, что у вас ssd.
В том смысле, что значения больше порога не хранятся в lsm, а значит, скорее всего, итерация обернётся рандом-ридом. Тот же boltdb кладёт значения in-place, и итерация будет быстрее.
Но вот мне потребовалось перелопатить 800GB данных, взял амазоновский инстанс с быстрым nvme, отключил fsync, и job done. Thank you, badgerdb.

Aleksandr
05.03.2018
10:47:22

Andrei
05.03.2018
10:53:13

Denis
05.03.2018
10:53:28

Zver
05.03.2018
10:53:31

Andrei
05.03.2018
10:54:13

Google

Aleksandr
05.03.2018
10:54:40

Denis
05.03.2018
10:55:23
потому что этот task crawler.handleTask(task) заблокирует цикл
а если там сотня сразу свалится запросов?

Andrei
05.03.2018
10:55:27

Admin
ERROR: S client not available

Aleksandr
05.03.2018
10:56:23

Andrei
05.03.2018
10:56:50

Aleksandr
05.03.2018
10:56:53

Andrei
05.03.2018
10:57:18
если ok == false, то канал уже был закрыт

Aleksandr
05.03.2018
10:58:30

Pawel
05.03.2018
11:06:08

Aleksandr
05.03.2018
11:11:02

Pawel
05.03.2018
11:11:22
а
а канал с какой целью закрываете?

ainu
05.03.2018
11:17:52
Клевый канал, лучший в телеграмме по Go, не надо закрывать

Kirill
05.03.2018
11:18:13
ор

Ruslan
05.03.2018
11:19:25
Хех

Kirill
05.03.2018
11:19:42
Кто-нибудь поедет на codefest?

Google

Aleksandr
05.03.2018
11:25:50
а канал с какой целью закрываете?
Канал закрываю после закрытия воркеров при шатдауне приложения. Видимо почему то канал закрывается раньше чем тушится воркер. Переделаю этот момент

Pawel
05.03.2018
11:40:48

Aleksandr
05.03.2018
11:44:19

Sergey
05.03.2018
11:55:24
Всем привет, пишу api сервер для мобильного приложения, уперся в вопрос аутентификации пользователя, читал много всего, мнения розняться, так что лучше для этого использовать? Какую то свою реализацию(выдавать пользователю рефреш и acess токены и хранить их в redis) или использовать что то готовое, как я понима в oauth2 смысла никакого нет, так это не публичное api, напривьте кто шарит, что лучше или куда смотреть.

Alexander
05.03.2018
11:56:57
2-legged oauth2 - это вот прямо то, что нужно
> выдавать пользователю рефреш и acess токены и хранить их в redis
В общем-то это почти oauth2 и есть, в простом варианте

Daniel
05.03.2018
11:57:53
https://jwt.io/introduction/

Sergey
05.03.2018
11:58:16
Понял, почитаю и про то и про то, спасибо)

Oleg
05.03.2018
14:47:06
Подскажите пож как реализовать подобное. Мне необходимо на один endpoint повесить несколько экшенов, ко мне приходит GET-request по адрессу
/requests/
/requests/123123
/requests/abcdefg
И для каждого из них мне необходимо вызывать различные хэндлеры как можно реализовать такое ? разница между вторым и третьем лишь в том, что во втором будет uint, а в третьем string

Aleksandr
05.03.2018
14:49:37
проверять req.Path, в зависимости от пути подсовывать разные хэндлеры

Oleg
05.03.2018
14:52:55
так путь каждый раз будет другим, у меня есть идея лишь в том, чтобы парсить в middlewares и из неё раскидывать по хэндлерам

Pawel
05.03.2018
14:56:10
либо используйте маршрутизатор с регэкспами, например, chi:
r := chi.NewRouter()
r.Route("/requests", func(r chi.Router) {
r.Get("/", ...) // GET /requests
r.Get("/{[0-9]+}", ...) // GET /requests/123123
r.Get("/{[A-Za-z]+}", ...) // GET /requests/abcdefg
})

Oleg
05.03.2018
14:59:01

Aleksandr
05.03.2018
15:06:41
пересказал второй раз, что первый раз написал

Kirill
05.03.2018
16:33:32
хттп, тсп, юдп
хттп сервер наверно самый тяжелый из них, а тсп юдп относительно друг друга как?
в го

Zaur
05.03.2018
16:34:45
В смысле тяжёлый?