
Dmitriy
15.12.2017
15:03:43
это руби пример

?
15.12.2017
15:03:48

Lee
15.12.2017
15:03:49
Ещё лучше

Raman
15.12.2017
15:04:01
ruby ок

Google

?
15.12.2017
15:04:01

Lee
15.12.2017
15:04:42
Да хоть паскаль, какая в хер разница?

?
15.12.2017
15:05:58

Lee
15.12.2017
15:06:33

?
15.12.2017
15:07:17
Так и скажи, что попутал

Lee
15.12.2017
15:07:46

Roman
15.12.2017
15:18:52
Rust называется
ну и как Rust можно сравнивать с Go?
это два разных инструмента для решения 2 разных проблем. У го встроенный scheduler, у Rust стандартные потоки, это кардинально разные подходы к конкуррентному и асинхронному программированию

Tema
15.12.2017
15:19:38

Roman
15.12.2017
15:20:43
типа , новый
error: failed interpreting inarticulate statement (Line 1:0)

Oleksandr
15.12.2017
16:34:02
кто-то юзает https://github.com/ReactiveX/RxGo ?

Roman
15.12.2017
16:39:08

Oleksandr
15.12.2017
16:39:23

Google

Roman
15.12.2017
16:40:11
это какой-то нонсенс, честно говоря, но может я чего и не понимаю..
в JS использовал Rx, в QML (C++ Qt) использовал Rx, но в Go то он зачем?!
в Go нет проблем асинхронного программирования, здесь всё описывается синхронно
streams = channels, operators = functions + goroutines

Oleksandr
15.12.2017
16:43:30
но сейчас не хочу спорить, тоже интересно, юзает ли кто рх
если да, зачем

Roman
15.12.2017
16:44:13
есть пример?

Oleksandr
15.12.2017
16:45:04
есть пример?
оно не синхронное, просто притворяется, с разной степенью успешности

Roman
15.12.2017
16:45:04
в Go писать блокирующий код = totaly valid
оно не синхронное, просто притворяется, с разной степенью успешности
я так и написал, что "описывается" синхронно. Просто разница в том, что в Go встроен scheduler. Ни в одном другом языке такого нет. Поэтому блокирующий код для Go не проблема, он не блокирует CPU.
в языках в основе которых лежит event loop (JS/Node.js/QML) же всё иначе. Там блокирующий код это грех, ибо он блокирует execution thread и мешает всем остальным конкуррентным процессам

Oleksandr
15.12.2017
16:46:48

Roman
15.12.2017
16:50:22
я лично начал разбираться с парадигмой "стримов" когда наткнулся на проблему асинхронной загрузки больших файлов чанками при условии ненадёжной сети
для среды QML (язык разметки кросс платформенных UI) даже написал библиотеку https://qbeon.github.io/QuickStreams/ которая расширяет Rx понятием создания собственных стримов
это скорее Proof of Concept, но тем не менее
в Go решить схожую проблему до пошлости просто и ничего изобретать не нужно, все проблемы решает встроенный scheduler и горутины

Alexey
15.12.2017
16:52:52

Alexander
15.12.2017
18:07:51
Странные людишки... все им не нравится)))

Anatoly
15.12.2017
19:40:35

Vany
15.12.2017
20:38:50

Anatoly
15.12.2017
20:41:16

whats
15.12.2017
23:23:16
Ребята, пмогите пожалуйста. есть вот такое. как это записать. чтобы `server {
listen 80;
server_name ~^(www\.)?(?<subdomain>.+)\.example\.com$;
return 301 https://$subdomain.example.com$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /ssl/example.crt;
ssl_certificate_key /ssl/example.key;
server_name ~^(www\.)?(?<subdomain>.+)\.example\.com$;
return 301 https://$subdomain.example.com$request_uri;
}
server {
listen 443 ssl;
server_name *.example.com;
root /public;
ssl_certificate /ssl/example.crt;
ssl_certificate_key /ssl/example.key;
}
` чтоб https://www.subdomain.example.com работало?

Google

Sparrow
15.12.2017
23:24:28
@nginx_ru

whats
15.12.2017
23:28:15
та там хуета каакая то

nezorflame
15.12.2017
23:28:59
А тут канал про go

Fedor
16.12.2017
00:07:38
К диалогу выше

Юрий
16.12.2017
10:12:28

m2k
16.12.2017
11:51:25

Phil
16.12.2017
11:54:29

m2k
16.12.2017
11:56:56
Поясните нюфагу. Для гошников всё что не го - кошмар?

Phil
16.12.2017
11:58:04

Юрий
16.12.2017
11:58:45
Никогда nginx не видел?
я сам пару сайтов настраивал, в том числе и с мульти субдомен и с мульти локейшн.
меня ужаснуло вот это
(?<subdomain>.+)

m2k
16.12.2017
11:59:45

m2k
16.12.2017
12:00:09
Для d.sts.dom1.com какого нибудь
Точку правда экранировать надо было )

Юрий
16.12.2017
12:01:15
она "кошмарная" сожрет все

m2k
16.12.2017
12:01:30
Хотя да, параша какая то
Я прозрел

Sparrow
16.12.2017
12:02:32
прозрел от факта присутствия среди умных людей?

Юрий
16.12.2017
12:02:48
приятно говорить за то что знаешь %) но лучше про это говрить в профильном канале )
в соседнам чате треш и угар

Google

m2k
16.12.2017
12:04:22

Sparrow
16.12.2017
12:04:46

m2k
16.12.2017
12:06:11
Как вообще в мире го пацаны?

Mx
16.12.2017
12:21:35
подскажите профану шо делать если я хочу делать параллельные запросы к базе(постгре поэтому 1 коннект = 1 запрос одновременный) ? Пул коннектов держать ?

Admin
ERROR: S client not available

Адам
16.12.2017
12:31:29
Да

ASergey
16.12.2017
15:29:19
Начинающий го програмист. Это вполненормально или можно лучше сделать? https://pastebin.com/XzpW5nRX

Alexey
16.12.2017
15:32:47

ASergey
16.12.2017
15:33:23
Достать по апи данные и показать в своем апи

Alexey
16.12.2017
15:33:48
if err != nil {
panic(err)
}
Вот тут паника не нужна
Надо ошибку вернуть и обработать
Ну или 500-ю отправить и return
getPhraseAppClient - лучше указатель возвращать
var jsonRes, _ - тут ошибку надо обрабатывать
Ну и я предпочитаю записаь
jsonRes, err := что-то там
Это ж не джаваскрипт, чтоб var везде тыкать.

Phil
16.12.2017
17:16:59
Давно go test не делал. А что с 1.6 такое поменялось что Go перестал в функциях теста выводить fmt.Println?

ASergey
16.12.2017
17:42:31

Alexey
16.12.2017
17:43:38

ASergey
16.12.2017
17:44:44

Google

Alexey
16.12.2017
17:47:15
Если не в напряг, можно поподробнее? Ну или ссылку на подобное решение
Можно создать структуру, у которой полем будет этот клиент.
При её инициализации создавать клиента.
А getLocales сделать её методом-receiver'ом.
И потом уже в main так делать:
func main() {
app := NewApp() // это структуру создаёт твою.
// Initialize echo framework
e := echo.New()
// Get locales
e.GET("/ms/locales", app.getLocales) // а тут её метод пробрасывается
e.Logger.Fatal(e.Start(":1234"))
}

ASergey
16.12.2017
17:48:49
Спасибо :) (мазнул по кнопке)

Alexey
16.12.2017
17:49:15
type App struct {
client *phraseapp.Client
}
func NewApp(c *phraseapp.Client ) *App {
return &NewApp{
client: c,
}
}
func (a *App) getLocales(c echo.Context) error {
// и тут обращаться к клиенту, как a.client
}
Ну ты понел, короч

ASergey
16.12.2017
17:51:18
Короч понял, примерно, спасибо добрый человек

Roman
16.12.2017
18:23:45
Ребят, слегка офтопик, но имел кто дело с платёжными системами?
как можно представить себе операцию онлайн-покупки через тот-же PayPal?
клиент должен через JS с помощью SDK PayPal'а вызвать платёжный middleware, через него оплатить и послать некий идентификатор транзакции на сервер и сервер должен с помощью этого идентификатора через API PayPal проверить оплату чтоб считать сделаку завершённой?


Arch
16.12.2017
18:57:41
Не работал с палкой, но в яде, робокассе и прочих ты формируешь у себя на стороне ордер, делаешь перенаправление клиента в систему оплаты, после оплаты, пользователь вертеться обратно на сайт. После того как платеж прошел, платежная система дёргает заранее определенный урл, урл прописывается в настройка твоего лк в платежной системе, и в этот урл методом гет или пост засылает данные о проведенном платеже.
Некоторые умеют жсон и возможность с твоего сервера запросить данные об оплате.
Естественно при перенаправление клиента тебе надо надо послать все данные об ордере и хеш с солью опять же заранее заданной в ЛК твоего акка у платежной системы
В принципе всё просто) в каждой системе есть довольно внятное описание апи


Anatoliy
16.12.2017
19:42:50
Может кто подсказать где я затупил?
Может кто подсказать?
У меня есть хендлер, я в нем выполняю некоторые операции и теперь мне надо вернуть ответ. Это может быть как сообщение об ошибке, так и корректный ответ. Но писать везде - не радует. Я бы хотел иметь возможность или отправлять нужные данные через return или вызывать некий метод который бы их принимал. Но ему надо каждый раз отправлять контекст что бы этот самый метод мог отправить сам ответ сервера. Вопрос - как его можно всегда туда отправлять?
Хочется чего то такого:
func (h *TokenHandler) CreateUser(c *macaron.Context, errs binding.Errors, user model.User) (map[string]interface{}, binding.Errors, int) {
Write(c, nil, errs, 500)
return
или просто
return nil errs, 500
сам Write вот такой, и ему хочется не отправлять каждый раз напрямую контекст
func Write(c *macaron.Context, res map[string]interface{}, errs binding.Errors, port int) {
result := Result{
Result: res,
Errors: errs,
}
c.JSON(port, result)
}
Ну и сама обработка вот такая:
m.Post("/", binding.Json(model.User{}), handlerStruct.CreateUser)
т.е. либо привести к виду что-то вроде
m.Post("/", binding.Json(model.User{}), handlerStruct.CreateUser, controller.Write)
и в самом CreateUser просто отправлять данные дальше что бы их мог получить Write, либо вызывать этот Write внутри CreateUser и при этом отправлять данные оттуда. Но - не прописывать каждый раз контекст
У меня есть подозрение что я где то как-то умудрился запутаться, но как - не понимаю пока(