
Kirill
17.08.2018
17:32:42
ненадолго, но на погонять точно хватит %)

Alexander
17.08.2018
17:46:00

bowser
17.08.2018
17:52:30
А каким щас пакетменеджером все пользуются?

Google

Kirill
17.08.2018
18:12:56

Alex
17.08.2018
18:15:36

bowser
17.08.2018
18:34:57
Сори что неверно сформулировал :) Полтора года не использовал go, вот возвращаюсь. Раньше все сложно было, хотел узнать проще ли щас и есть ли стандарт де-факто
Судя по ответам - все так же :)

Artem
17.08.2018
18:38:54

bowser
17.08.2018
18:39:39
?

Sergey
17.08.2018
18:40:12
в этом и суть го

Artem
17.08.2018
18:42:04
В 1.11 будет менеджер из коробки

Kirill
17.08.2018
18:45:16
после релиза vgo в awesome-go прямо напишем, что лучше использовать официальное решение, а не велосипеды

bowser
17.08.2018
18:49:40
Спасибо

Sergey
17.08.2018
21:25:40
не пытаться использовать цвета на винде

Google

Pawel
17.08.2018
21:26:21
ты о чём?

Sergey
17.08.2018
21:26:41
да я тут мимо проходил

Kirill
18.08.2018
00:22:53
искать os.Exit()
значит бинды хреновые
почему tdlib юзаешь? чем другие либы не понравились? или pure-go клиента нет?
какую задачу ты пытаешься решить?
@toby3d есть там чо?

Aleksandr
18.08.2018
00:35:21
Все верно. Tdlib официальная либа с полным покрытием апи

Kirill
18.08.2018
00:35:41
естественно, что официальная
но это не говорит, что бинды на неё адекватные

Aleksandr
18.08.2018
00:35:55
Остальное старые наколенные имплементации мтпрото
Адекватные. Крутится два месяца без остановки демон, ни разу не упал
Просто не получилось )

Kirill
18.08.2018
00:37:02
никак, насколько помню
это не panic, а throw

Aleksandr
18.08.2018
00:38:27
Хм. В сях проблема. Напиши issue, исправят. Там автор чуть ли не 24 часа в сутки отвечает
Os.exec? Как вообще ты это юзаешь?

Kirill
18.08.2018
00:46:21
issue не забудь создать

/dev/null
18.08.2018
03:44:31
Ребят, подскажите в какую сторону копать
необходимо реализовать upnp сервер и транслировать по нему плейлист iptv
раньше подобным вообще не занимался, даже не знаю с какой стороны подступится к этой задаче

Google

Pawel
18.08.2018
07:12:39
== как бы перехватить panic
https://github.com/maruel/panicparse

Anton
18.08.2018
07:55:38

Maxim
18.08.2018
08:08:31
@toby3d есть там чо?
Нет, я делал пакет для ботов, паспорта и логина телеги. tglib не трогал, но может доберусь когда-нибудь

Мерлин
18.08.2018
09:04:14

Sergey
18.08.2018
13:02:21
Где можно подсмотреть как лучше организовать структуру пакетов для работы с базой?

Sliva
18.08.2018
13:10:16
Кто может посоветовать книги/статьи или готовые решения связанные с p2p сетью?

Daniel
18.08.2018
13:10:51
надо конкретизировать вопрос

Sliva
18.08.2018
13:52:08
Устройство p2p, пример любой p2p сети на go

Alexey
18.08.2018
14:11:22
https://github.com/meshbird/meshbird может?
Такое ещё было https://4gophers.ru/articles/vpn-eto-prosto/#.W3gpgmhn00M непонятно что конкретно надо

Vadim
18.08.2018
14:19:21
https://github.com/libp2p/go-libp2p

Alexey
18.08.2018
14:19:39

Daniel
18.08.2018
14:23:00
там в подкладке webrtc, которого на чистом go нет

Kirill
18.08.2018
14:52:18

bowser
18.08.2018
16:59:07
предположим я хочу заимплементить в свое приложение выбор master/slave
при этом https://github.com/rqlite/rqlite это слишком много (мне не нужна полноценная база данных на консенсусе) и https://github.com/hashicorp/raft это слишком мало (мне не хочется самому прописывать логику "что делать если потерялся мастер" и вообще девелопить отдельную либу, хочется продакшн-реди)
что порекомендуете чисто для выбора мастера нецентрализованонго без сервис-дискавери (не через consul/redis/etcd/..., сервисы знают ip друг друга), такую себе либу "подключил и забыл"

Zaur
18.08.2018
18:20:03
Народ, когда твой сервис в http запросе возвращает json, обычно же, при ошибки на сервере, возвращают что-то типо status: "bad", и error:"someerror". А в случае успешного следует всегда возвращать status:"ok" или считается, что http статуса должно хватать?
Где вообще можно узнать про практики json ответов

Dmitry
18.08.2018
18:23:12
http status должно хватать, можно в каждый ответ засовывать message с описанием

Admin
ERROR: S client not available

Dmitry
18.08.2018
18:24:06
http://jsonapi.org/
это типа спецификаци

Google

Dmitry
18.08.2018
18:24:12
но имхо оверхед

Zaur
18.08.2018
18:24:15
О, спасибо

Egor
18.08.2018
18:24:31
RESTful правил будет достаточно

bowser
18.08.2018
18:27:13

Dmitry
18.08.2018
18:29:05
мы как то начали смотерть в эту сторону, посмотрев всякие links, решили не заморачиватся. но ответы для себя найти кое-какие можно


bowser
18.08.2018
18:34:57
Где вообще можно узнать про практики json ответов
в целом формат ответов зависит от того как сервер общается с клиентом (если мы только про REST говорим), лучших практик нет есть только холивары ?
я например нашел удобным дублировать http-ошибку в ответе и еще добавлять статускод (стандартных http-кодов обычно не хватает когда клиенту нужно обрабатывать дополнительные логики - например 401 Unauthorized может быть как "токен неправильный вообще" так и "токен истек" и тп)
поэтому, ошибки выглядят у меня примерно так:
{
message: "human-readable error",
status: http-status-code,
code: "COMPUTER-READABLE-ERROR-CODE"
}
ответы на POST/PUT выглядят так:
{
success: true,
id: "resource-created-id"
}
ответы на GET - любой JSON в рамках того что мы хотим отдать клиенту
однако, вы захотите добавлять дополнительные данные - пейджинацию например, количество документов общее и тп: и тогда вы или будете их заголовками передавать, или заранее заложитесь на стандартный ответ (тут уже вам выбирать как удобнее, но лучше делать с запасом чтобы потом версию API не менять и разные не поддерживать):
{
data: { json-response },
total: total_amount_of_resources,
next: "cursor-id-to-fetch-next-portion",
...
}
но вообще, я думал тут все на gRPC фигачат? ?


Zaur
18.08.2018
18:38:07
в целом формат ответов зависит от того как сервер общается с клиентом (если мы только про REST говорим), лучших практик нет есть только холивары ?
я например нашел удобным дублировать http-ошибку в ответе и еще добавлять статускод (стандартных http-кодов обычно не хватает когда клиенту нужно обрабатывать дополнительные логики - например 401 Unauthorized может быть как "токен неправильный вообще" так и "токен истек" и тп)
поэтому, ошибки выглядят у меня примерно так:
{
message: "human-readable error",
status: http-status-code,
code: "COMPUTER-READABLE-ERROR-CODE"
}
ответы на POST/PUT выглядят так:
{
success: true,
id: "resource-created-id"
}
ответы на GET - любой JSON в рамках того что мы хотим отдать клиенту
однако, вы захотите добавлять дополнительные данные - пейджинацию например, количество документов общее и тп: и тогда вы или будете их заголовками передавать, или заранее заложитесь на стандартный ответ (тут уже вам выбирать как удобнее, но лучше делать с запасом чтобы потом версию API не менять и разные не поддерживать):
{
data: { json-response },
total: total_amount_of_resources,
next: "cursor-id-to-fetch-next-portion",
...
}
Ого, спасибо за подробный ответ


bowser
18.08.2018
18:38:52
если вступаете на скользкую дорожку REST - сильно советую сразу начать правильно делать с использованием https://github.com/OAI/OpenAPI-Specification ?
тогда не придется вручную писать документы для клиентских разработчиков например, а можно будет заюзать автогенерацию: https://github.com/Rebilly/ReDoc
ну и в продвинутых техниках - валидация входящих/исходящих запросов через json schema без лишней логики на сервере ?

Zaur
18.08.2018
18:41:33
Ох, столько навалили, теперь надо во всём этом копаться ?
Спасибо

Abdulla
18.08.2018
18:44:43
Народ, когда твой сервис в http запросе возвращает json, обычно же, при ошибки на сервере, возвращают что-то типо status: "bad", и error:"someerror". А в случае успешного следует всегда возвращать status:"ok" или считается, что http статуса должно хватать?
Зависит от того какая гибкость требуется от системы. Http выступает в роли транспорта для твоего апи, если в будущем ты захочешь сменить транспорт - например использовать очередь сообщений, или сделать апи асинхронным, когда стандартная http модель запроса и ответа не подходит, твой протокол сообщений не сможет удовлетворять требованиям

Konstantin
18.08.2018
19:54:19

Constantine
18.08.2018
21:21:30
а то один ленится доку писать, а потом вся команда в говно наступила

bowser
18.08.2018
22:28:03
в этом случае дизайн ферст как раз - эту спеку хошь бэкенд описывай, хошь фронтенд, а хошь все вместе включая секретаршу ?

Google

Constantine
18.08.2018
23:36:52
наоборот же

Leon
18.08.2018
23:41:43
Спат
Нада


Artem
19.08.2018
06:34:49
в целом формат ответов зависит от того как сервер общается с клиентом (если мы только про REST говорим), лучших практик нет есть только холивары ?
я например нашел удобным дублировать http-ошибку в ответе и еще добавлять статускод (стандартных http-кодов обычно не хватает когда клиенту нужно обрабатывать дополнительные логики - например 401 Unauthorized может быть как "токен неправильный вообще" так и "токен истек" и тп)
поэтому, ошибки выглядят у меня примерно так:
{
message: "human-readable error",
status: http-status-code,
code: "COMPUTER-READABLE-ERROR-CODE"
}
ответы на POST/PUT выглядят так:
{
success: true,
id: "resource-created-id"
}
ответы на GET - любой JSON в рамках того что мы хотим отдать клиенту
однако, вы захотите добавлять дополнительные данные - пейджинацию например, количество документов общее и тп: и тогда вы или будете их заголовками передавать, или заранее заложитесь на стандартный ответ (тут уже вам выбирать как удобнее, но лучше делать с запасом чтобы потом версию API не менять и разные не поддерживать):
{
data: { json-response },
total: total_amount_of_resources,
next: "cursor-id-to-fetch-next-portion",
...
}
Почему я так часто вижу, что возвращается абстрактное success поле, которое не несёт смысловой нагрузки


bowser
19.08.2018
06:36:05
наоборот же
Ну в этой интерпретации - да, я сформулировал не так. Кодогенерацию не люблю поэтому юзаю спеку только для валидации и _генерации документации автоматически_