@proGO

Страница 1055 из 1674
Dmitriy
15.12.2017
15:03:43
это руби пример

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
В смысле "и что?"
И что, что def, разве в питоне нужен end после метода или класса?

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 стандартные потоки, это кардинально разные подходы к конкуррентному и асинхронному программированию

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
кто-то юзает https://github.com/ReactiveX/RxGo ?
а зачем кстати reactive в Go?

Oleksandr
15.12.2017
16:39:23
а зачем кстати reactive в Go?
это был следующий вопрос ?

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
в Go писать блокирующий код = totaly valid
ага, например дисковое ио :)

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
ага, например дисковое ио :)
Io планировщик может кинуть и скорее всего кинет в другой тред, если надо.

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

Anatoly
15.12.2017
19:40:35
У нас такое тоже есть, поразвесестие, например, что делать, если один из хуков работает 20 секунд? а 20000 секунд ? =) у нас такой есть. Поэтому хуки приоритезируются и есть отдельная горутина для их выполнения.
Прикольно. А хуки как делали? Своё решение? У меня если на хук вешается тяжёлый метод, то отправляю его в очередь. Где то самописная, где то раббит. Возможно горутина будет круче. Пока мне это не принципиально. Хочется понять как хуки устроены ...

Vany
15.12.2017
20:38:50
Прикольно. А хуки как делали? Своё решение? У меня если на хук вешается тяжёлый метод, то отправляю его в очередь. Где то самописная, где то раббит. Возможно горутина будет круче. Пока мне это не принципиально. Хочется понять как хуки устроены ...
Ну началось все с стрингмапа массивов функций. А сложного там ничего нет. Просто если хук привилегированный, он добавляется в начало массива в обёртке своей горцтины. Ну и контекст везде прокидывается

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


К диалогу выше

m2k
16.12.2017
11:51:25
Ужас какой
Никогда nginx не видел?

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
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
прозрел от факта присутствия среди умных людей?
Ты уверен что туда зашёл для форса своего чсв?

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

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 везде тыкать.

getPhraseAppClient - лучше указатель возвращать
Причём лучше его один раз инициализировать и использовать, чем каждый раз новый создавать.

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
Давно go test не делал. А что с 1.6 такое поменялось что Go перестал в функциях теста выводить fmt.Println?
t.Logf наше всё. А на самом деле там рандомно, иногда успевает вывести, иногда нет. Добавь в конце теста time.Sleep(1*time.Second)

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 }

Спасибо :) (мазнул по кнопке)
А в main даже лучше c := getClient() app := NewApp(c)

Ну ты понел, короч

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 и при этом отправлять данные оттуда. Но - не прописывать каждый раз контекст

У меня есть подозрение что я где то как-то умудрился запутаться, но как - не понимаю пока(

Страница 1055 из 1674