
Aleksey
12.02.2018
15:27:43
Мнение одной тысячной процента этого чата я услышал :)

Arch
12.02.2018
15:28:32

Alexander
12.02.2018
15:29:33

Dzmitry
12.02.2018
15:29:54
контекст с таймаутом?

Google

Aleksey
12.02.2018
15:31:35

Arch
12.02.2018
15:32:18

Андрей
12.02.2018
16:05:59
Добрый день.
Может кто то уже сталкивался с подобным. Необходимо из программы на go обратиться к wcf сервису (транспорт tcp) на другом хосте и получить от него идентификатор (строку). Какие библиотеки можно использовать и вообще, возможно ли это реализовать? На крайний случай прослойку из .net можно написать, но будет тормозить...

Olzhas
12.02.2018
16:10:04

Андрей
12.02.2018
16:23:29
https://golang.org/pkg/net/ ?
Это только реализация транспортного уровня. Над ней в .net wcf еще обширный логический. Чтобы подробнее понимать скажу, что wcf сервис умеет работать в нескольких режимах: http (самый простой и медленный), tcp, udp. Т.е. это все транспорты. И, если, http накладывает множество ограничений, что и делает его относительно простым для клиента wcf сервиса, то в tcp их нет. И для общения надо реализовывать достаточно большой стек что лежит над ним. Хотелось бы не изобретая велосипед взять готовую реализацию.

Michael
12.02.2018
16:47:58

xPushkin
12.02.2018
18:13:49
@civiloid, вы были правы. Убрал надобность в wg и получилось гораздо лучше и надёжнее.
Добавил промису блокирующий метод Await() который ждёт пока все выполнится.

Человек
12.02.2018
18:35:02
Я ни как не могу восстановить свои пароли от Хрома, нашел решение - https://github.com/SaturnsVoid/Chrome-Password-Recovery/blob/master/Chrome%20Password%20Recovery.go но я хочу их записать в .txt файл, а записывает только последний высвеченый пароль, всего паролей около 100, записывает последний пароль в списке. Что делать?Код: https://pastebin.com/Dss3DPUj
Идет в цикле из-за этого и файл все время переписываеться, сначала один пароль записала, пересоздало, и другой пароль и т.д, как приостановить выполнения цикла и записать полностью все пароли я не знаю.


vktr
12.02.2018
18:55:44
Всем добрый вечер. Не оч релевантный вопрос, ибо на go обычно бэкенд пишут. Но бэкенд подогревает фронтенд. Так вот и вопрос: как бы сделать защиту от CSRF для single page application? Канонически, если не single page app, то csrf token встраивается во все формы. А для single page app (которое все по xhttp все зовет) на ум приходит отдать хэдер/боди с csrf token после логина и ожидать хэдера с этим токеном во всех реквестах, в то же время имея сессионную куку. У кого был опыт с этим, поделитесь
*незаметный отсыл к желанию попользовать, ибо там все хорошо
https://github.com/gorilla/csrf

YaOurTea
12.02.2018
19:37:44

Google

Marlik
12.02.2018
19:51:14
Читаю из базы, работает.
p, err := ReturnHash(db)
if err != nil {
if err == sql.ErrNoRows {
fmt.Printf("Not value %v\n", p.YA)
} else {
log.Fatal(err)
}
}
fmt.Printf("Value %s\n", p.YA)
Пытаюсь на сервере, крашится
func Ya62(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
p, err := ReturnHash(db)
if err != nil {
if err == sql.ErrNoRows {
fmt.Fprintf(w, "Not value")
} else {
log.Fatal(err)
}
}
fmt.Fprintf(w, p.YA)
}
Куда порыть?

vktr
12.02.2018
20:04:33
Читаю из базы, работает.
p, err := ReturnHash(db)
if err != nil {
if err == sql.ErrNoRows {
fmt.Printf("Not value %v\n", p.YA)
} else {
log.Fatal(err)
}
}
fmt.Printf("Value %s\n", p.YA)
Пытаюсь на сервере, крашится
func Ya62(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
p, err := ReturnHash(db)
if err != nil {
if err == sql.ErrNoRows {
fmt.Fprintf(w, "Not value")
} else {
log.Fatal(err)
}
}
fmt.Fprintf(w, p.YA)
}
Куда порыть?
Что за странный патриотизм в error messages на русском?

Marlik
12.02.2018
20:05:38

Alexey
12.02.2018
20:05:52
func BepHyTbXeLI_I(db)

?
12.02.2018
20:05:55
за патриотизм надо бить по лицу ногами

Andrey
12.02.2018
20:06:09

Marlik
12.02.2018
20:06:25

vktr
12.02.2018
20:07:35

?
12.02.2018
20:07:43

Marlik
12.02.2018
20:08:24

Andrey
12.02.2018
20:08:42
Эстеты накинулись.

?
12.02.2018
20:08:43
а не в коде
выглядите как китайцы
не люблю таких

Marlik
12.02.2018
20:09:42
10 комментов, ни одного по существу...

?
12.02.2018
20:10:57
функ написатьВКонсоль(текст) { форматирование.написатьСтрочку(текст): } написатьВКонсоль("Навальный сасат");

vktr
12.02.2018
20:11:04

Marlik
12.02.2018
20:11:58
Спасибо что помогли. Лучше бы и не спрашивал)))))

Google

Andrey
12.02.2018
20:12:45

vktr
12.02.2018
20:13:11
Читаю из базы, работает.
p, err := ReturnHash(db)
if err != nil {
if err == sql.ErrNoRows {
fmt.Printf("Not value %v\n", p.YA)
} else {
log.Fatal(err)
}
}
fmt.Printf("Value %s\n", p.YA)
Пытаюсь на сервере, крашится
func Ya62(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
p, err := ReturnHash(db)
if err != nil {
if err == sql.ErrNoRows {
fmt.Fprintf(w, "Not value")
} else {
log.Fatal(err)
}
}
fmt.Fprintf(w, p.YA)
}
Куда порыть?
Можешь весь метод дать, ибо скобочки не совпадают. Лучше на плейграунд

Marlik
12.02.2018
20:16:49

vktr
12.02.2018
20:17:43
Немного освятим что такое hash таблица?

Marlik
12.02.2018
20:19:50
Там проблема в том, что в базе нет ничего, она пустая.
type Hash struct {
RZN string `json:"rzn"`
YA string `json:"ya"`
PR string `json:"pr"`
}
Дамп
CREATE TABLE hash (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
rzn TEXT NOT NULL,
ya TEXT NOT NULL,
pr TEXT NOT NULL,
dtime DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

vktr
12.02.2018
20:20:09
Ништяк
Ок, т.е. проблема в селекте на пустой таблице?
В твоём коде выше, этого не видно: не видно QueryRow. Где оно?

Marlik
12.02.2018
20:24:41
https://play.golang.com/p/j0Gto53snsk
Да, я получаю ошибку, обрабатываю её, но это не ошибка, это просто отсутствие строки в базе
p, err := ReturnHash(db)
if err != nil {
if err == sql.ErrNoRows {
fmt.Fprintf(w, "Not value")
} else {
log.Fatal(err)
}
}
fmt.Fprintf(w, p.YA)
Вот и проблема в том, что крашится на сервере, но через консольку отрабатывает нормально.

vktr
12.02.2018
20:25:52
Ну оно вернёт sql.NoRows

Marlik
12.02.2018
20:26:19
Да вот оно if err == sql.ErrNoRows {

vktr
12.02.2018
20:27:24
А ReturnHash - это именно то, что на плейграунд?

Marlik
12.02.2018
20:27:38
Да
Мне пока сложновато определится как возвращать nil из базы, у го с этим проблемы.
Ладно, щас, мыслишка появилась, где крашится.

vktr
12.02.2018
20:30:02
Может ретурна не хватает
Ибо fprintf зовётся полюбэ

Google

vktr
12.02.2018
20:31:44
Ретурна в блоке if err!=nil

Marlik
12.02.2018
20:31:51
То есть
func blabla (s string, i int) (int, error) {
/* Вот здесь я не могу заюзать return, даже для выхода из цикла или чего другого. */
return v, err
}

vktr
12.02.2018
20:38:13

Marlik
12.02.2018
20:38:58

vktr
12.02.2018
20:39:24
100500 что ты сглатываешь ошибку и получаешь 100500 ерроров из-за этого

Admin
ERROR: S client not available

Marlik
12.02.2018
20:42:19
https://play.golang.com/p/hp_xhrbbzX0
Основная ошибка 2018/02/12 23:39:35 http: panic serving 127.0.0.1:40234: runtime error: invalid memory address or nil pointer dereference

Айбелив
12.02.2018
20:43:03

Marlik
12.02.2018
20:43:33

The
12.02.2018
20:43:47
в нем можно потоки прибивать

Marlik
12.02.2018
20:45:00

vktr
12.02.2018
20:46:47
Я, не доконца проникся, конечно, но сам факт, что после ошибки мы делаем что-то кроме обработки ошибки говорит мне что код воняет. Итого: получил ошибку - делай нормальный error и возвращайся из функции. Ибо на урывках того что ты дал, мне сложно понять. Не я дебил - я тебе с радостью подебажу, но просто здравый смысл

Айбелив
12.02.2018
20:47:44

vktr
12.02.2018
20:48:10
Хочешь дебажит и знаешь как делать tmux сессии, я - тебе прям ща отдебажу, дай куда конектится

Alexey
12.02.2018
20:49:09

Marlik
12.02.2018
20:49:43

Google

The
12.02.2018
20:50:16
А что бред-то.

vktr
12.02.2018
20:51:54

Marlik
12.02.2018
20:51:58

vktr
12.02.2018
20:52:42

The
12.02.2018
20:53:11

Marlik
12.02.2018
20:53:26
https://play.golang.org/p/nHfTsFiUxiY
Вот, потренируйтесь.
func Ya62(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
p, err := ReturnHash(db)
if err != nil {
if err == sql.ErrNoRows {
fmt.Fprintf(w, "Not value")
} else {
log.Fatal(err)
}
}
fmt.Fprintf(w, p.YA)
}

Айбелив
12.02.2018
20:53:59
функция ничего не возвращает

vktr
12.02.2018
20:54:15

Alexey
12.02.2018
20:54:16

Marlik
12.02.2018
20:54:23

Alexey
12.02.2018
20:54:50
Так нечестно править!

The
12.02.2018
20:54:51
else обоснованный.

Marlik
12.02.2018
20:54:54
)))

Alexey
12.02.2018
20:55:16
else обоснованный.
Коллега имел в виду, что надо после print no value сделать сразу return. И тогда else будет не нужен

Marlik
12.02.2018
20:55:32

vktr
12.02.2018
20:55:38

The
12.02.2018
20:56:29

Айбелив
12.02.2018
20:56:37
мой "бредовый" пример опровергал то, что нельзя несколько ретурнов использовать в скопе функции

Alexey
12.02.2018
20:58:03
func Ya62(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
p, err := ReturnHash(db)
if err == sql.ErrNoRows {
fmt.Fprintf(w, "Not value")
return
} else if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte("500 - Something bad happened!"))
return
}
fmt.Fprintf(w, p.YA)
}