

Sergey
13.10.2017
09:17:14
Можете подсказать демон вылетает после первого curl запроса .
/tmp/go-build918200786/command-line-arguments/_obj/exe/yandex flag redefined: s
2017/10/13 12:15:10 http: panic serving [::1]:54602: /tmp/go-build918200786/command-line-arguments/_obj/exe/yandex flag redefined: s
goroutine 22 [running]:
net/http.(*conn).serve.func1(0xc8200c8500)
/usr/lib/golang/src/net/http/server.go:1389 +0xc1
panic(0x6f3c00, 0xc8200cf410)
/usr/lib/golang/src/runtime/panic.go:443 +0x4e9
flag.(*FlagSet).Var(0xc820056060, 0x7fe67a998168, 0xc8200cf3b0, 0x800cc8, 0x1, 0x83d330, 0x16)
/usr/lib/golang/src/flag/flag.go:776 +0x454
flag.(*FlagSet).StringVar(0xc820056060, 0xc8200cf3b0, 0x800cc8, 0x1, 0x808000, 0xe, 0x83d330, 0x16)
/usr/lib/golang/src/flag/flag.go:679 +0xc7
flag.(*FlagSet).String(0xc820056060, 0x800cc8, 0x1, 0x808000, 0xe, 0x83d330, 0x16, 0x9e3bc0)
/usr/lib/golang/src/flag/flag.go:692 +0x83
flag.String(0x800cc8, 0x1, 0x808000, 0xe, 0x83d330, 0x16, 0x9ddcb0)
/usr/lib/golang/src/flag/flag.go:699 +0x5f
main.yandex(0xc8200c5f96, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/freeswitch/scripts/yandex.go:99 +0x113
main.getRecords(0x7fe67a998130, 0xc8200d95f0, 0xc8200d62a0, 0x0, 0x0, 0x0)
/usr/local/freeswitch/scripts/yandex.go:237 +0x1de
github.com/julienschmidt/httprouter.(*Router).ServeHTTP(0xc820012380, 0x7fe67a998130, 0xc8200d95f0, 0xc8200d62a0)
/usr/local/freeswitch/scripts/src/github.com/julienschmidt/httprouter/router.go:344 +0x195
net/http.serverHandler.ServeHTTP(0xc820080080, 0x7fe67a998130, 0xc8200d95f0, 0xc8200d62a0)
/usr/lib/golang/src/net/http/server.go:2081 +0x19e
net/http.(*conn).serve(0xc8200c8500)
/usr/lib/golang/src/net/http/server.go:1472 +0xf2e
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:2137 +0x44e


Nikolay
13.10.2017
09:17:26
/tmp/go-build918200786/command-line-arguments/_obj/exe/yandex flag redefined: s
2017/10/13 12:15:10 http: panic serving [::1]:54602: /tmp/go-build918200786/command-line-arguments/_obj/exe/yandex flag redefined: s
goroutine 22 [running]:
net/http.(*conn).serve.func1(0xc8200c8500)
/usr/lib/golang/src/net/http/server.go:1389 +0xc1
panic(0x6f3c00, 0xc8200cf410)
/usr/lib/golang/src/runtime/panic.go:443 +0x4e9
flag.(*FlagSet).Var(0xc820056060, 0x7fe67a998168, 0xc8200cf3b0, 0x800cc8, 0x1, 0x83d330, 0x16)
/usr/lib/golang/src/flag/flag.go:776 +0x454
flag.(*FlagSet).StringVar(0xc820056060, 0xc8200cf3b0, 0x800cc8, 0x1, 0x808000, 0xe, 0x83d330, 0x16)
/usr/lib/golang/src/flag/flag.go:679 +0xc7
flag.(*FlagSet).String(0xc820056060, 0x800cc8, 0x1, 0x808000, 0xe, 0x83d330, 0x16, 0x9e3bc0)
/usr/lib/golang/src/flag/flag.go:692 +0x83
flag.String(0x800cc8, 0x1, 0x808000, 0xe, 0x83d330, 0x16, 0x9ddcb0)
/usr/lib/golang/src/flag/flag.go:699 +0x5f
main.yandex(0xc8200c5f96, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/freeswitch/scripts/yandex.go:99 +0x113
main.getRecords(0x7fe67a998130, 0xc8200d95f0, 0xc8200d62a0, 0x0, 0x0, 0x0)
/usr/local/freeswitch/scripts/yandex.go:237 +0x1de
github.com/julienschmidt/httprouter.(*Router).ServeHTTP(0xc820012380, 0x7fe67a998130, 0xc8200d95f0, 0xc8200d62a0)
/usr/local/freeswitch/scripts/src/github.com/julienschmidt/httprouter/router.go:344 +0x195
net/http.serverHandler.ServeHTTP(0xc820080080, 0x7fe67a998130, 0xc8200d95f0, 0xc8200d62a0)
/usr/lib/golang/src/net/http/server.go:2081 +0x19e
net/http.(*conn).serve(0xc8200c8500)
/usr/lib/golang/src/net/http/server.go:1472 +0xf2e
created by net/http.(*Server).Serve
/usr/lib/golang/src/net/http/server.go:2137 +0x44e
флаги по второму разу парсятся

Google

Nikolay
13.10.2017
09:18:21
нужно вытащить их в init()

Sergey
13.10.2017
09:18:50
можете подсказать какие именно флаги в коде

Alexander
13.10.2017
09:19:13
@nuqzz не знаю, я тока в jet brains чето понимаю
в idea ысмфсле

Nikolay
13.10.2017
09:20:42

Sergey
13.10.2017
09:21:03
можете ссылку дать

Nikolay
13.10.2017
09:22:06

Sergey
13.10.2017
09:22:51
https://play.golang.org/p/RK8zUdt8x9
вот выложил

Nikolay
13.10.2017
09:26:39

Daniel
13.10.2017
09:27:31

Kirill
13.10.2017
09:27:39

Google

Nikolay
13.10.2017
09:27:52

Daniel
13.10.2017
09:28:31
потому, что init() разных пекеджей вызываются в неконтролирукемом порядке

Sergey
13.10.2017
09:29:03
получаеться тогда в main ?

Daniel
13.10.2017
09:29:09
то есть - init() не должна выходить за пределы твоего пекеджа, иначе возможны варианты

Nikolay
13.10.2017
09:29:40

Daniel
13.10.2017
09:29:40

Ilya
13.10.2017
09:30:15
init() во всех пакетах автоматически вызывается до main()
чувак удалил свой вопрос

Roman
13.10.2017
09:43:45
интересно во 2 версии анархию с вызовом init переделают? хотя и так жить можно

Ilya
13.10.2017
09:44:27
В чём анархия?

Daniel
13.10.2017
09:44:44
зачем ее переделывать? если на этот порядок закладываться - что с циклами делать? пусть программер явно порядок инициализации задает, не так и трудно

Roman
13.10.2017
09:44:51
в том, что порядок вызовов непонятный

Nikolay
13.10.2017
09:45:02

Daniel
13.10.2017
09:45:03
понятный

Ilya
13.10.2017
09:45:49

Roman
13.10.2017
09:46:04

Ilya
13.10.2017
09:47:07
Там вроде не совсем случайный порядок, а такой в котором файлы комилятору передаются

Roman
13.10.2017
09:47:15
но я согласен, что в текущем состоянии с init жить вполне можно

Daniel
13.10.2017
09:47:38
понятный
понятно, что расчитывать можно только на то, что твой init() вызывается в неизвестный момент времени.

Google

Roman
13.10.2017
09:47:46
надо будет почитать, как оно там на самом деле

Den
13.10.2017
10:08:16
// 1
const (
Language_English string = "ENGLISH"
Language_Russian string = "RUSSIAN"
Language_French string = "FRENCH"
Language_Italian string = "ITALIAN"
)
// 2
var Language = struct {
English string
Russian string
French string
Italian string
}{
English: "ENGLISH",
Russian: "RUSSIAN",
French: "FRENCH",
Italian: "ITALIAN",
}
// ...
lang := response.Header.Language
if lang == Language_French {/* ... */}
if lang == Language.French {/* ... */}
// ...
Не будет ли считаться говнокодом второй вариант представления констант аля с#, если констант в блоке не больше 20, например.
1 вариант неудобен тем, что в списке интеллисенса гогланда выплывают сразу все константы (а если много блоков констант? тогда надо листать много этот список)
2 вариант это исправляет: т.е. сначала выбираю блок "констант", а затем необходимую.

Aleksandr
13.10.2017
10:15:45


Daniel
13.10.2017
10:16:33
вообще - хорошо бы такие константы делать своего неэкспортируемого типа
чтобы нельзя было любую строку передать туда, где ждут константу одну из этих

Sergey
13.10.2017
12:04:38
SELECT number FROM book WHERE id_dispatch = '6582' and otdel LIKE '%мне надо отдел продаж%'; можете подказать как правильно составить SQL запрос , я получаю данные вида "я хочу отдел продаж// мне нужен отдел продаж и различные варианты" в колонке otdel у меня просто стоит отдел продаж , как мне правильно составить запрос чтобы я регуляркой или же другой функции проверял на совпадении слова в входных данных и в таблице

a.
13.10.2017
12:11:41
обязательно sql?

Илья
13.10.2017
12:12:38

a.
13.10.2017
12:12:44
вроде есть функция distance для подобного

Sergey
13.10.2017
12:13:14
у меня postgres

a.
13.10.2017
12:13:55
мб поможет https://www.postgresql.org/docs/9.1/static/fuzzystrmatch.html

Sergey
13.10.2017
12:14:19
SELECT number
FROM book
WHERE book.otdel SIMILAR TO '(мне|надо|отдел|продаж)'; вот так можно но если предварительно разбить строку на слова

Александр
13.10.2017
12:23:15

Sergey
13.10.2017
12:25:14
например мне приходит поле "мне надо отдел продаж" дальше я иду в БД и смотрю запросом какой у этого лкиента номер отдела продаж , но в БД у меня в колонке написано просто "продаж"

Илья
13.10.2017
12:32:11
тогда туда
только учти, что там оно есть с 9.4 помоему
или можно сфинкс сбоку поставить

Irek
13.10.2017
12:33:20
Если проект простой, то можно и обычным sqlite обойтись

Google

Александр
13.10.2017
12:33:37

Daniel
13.10.2017
12:34:32
вы понимаете, да, что это полный перебор, что так, что эдак?
и что надо обратный индекс строить, чтобы это хоть как-то работало на хоть каких-то объемах

Илья
13.10.2017
12:37:51
ну да, поэтому я отсылаю его или в full text search, или в сфинкс

Александр
13.10.2017
12:39:43
прошу прощение за своё невежество

Kirill
13.10.2017
12:53:31

Admin
ERROR: S client not available

Илья
13.10.2017
12:56:31
у сфинкса свои проблемы, например репликация с real-time индексами не работает, помоему, до сих пор
но для inhouse crm норм :)

Pawel
13.10.2017
13:06:50

Artem
13.10.2017
13:07:31
ну, сорян.

Pawel
13.10.2017
13:08:30
либа и язык кстати очень ок, я её юзаю давно уже в бою, доволен как слон
и девопсы щасливы писать скрипты на anko

Artem
13.10.2017
13:08:54
и зачем?

Pawel
13.10.2017
13:09:59
и зачем?
чтобы девопсы дописывали domain specific код

Roman
13.10.2017
13:30:51
кто-нибудь с помощью какой-нибудь библиотеки умеет объединять ячейки в excel?

Alexei
13.10.2017
13:33:34
преврати в opendocument, это xml, вроде, им объедини и обратно )

AxiS
13.10.2017
13:34:49

Alexei
13.10.2017
13:34:59
ну и здорово )

Roman
13.10.2017
13:35:32
я понимаю, что можно попробовать в xml но есть либи типа excelize может в них можно и кто-то знает как

Google

Mikhail
13.10.2017
13:35:42
кто знает как с net/http сделать get запрос, но скачать только headers?

Alexey
13.10.2017
13:37:21

Alexei
13.10.2017
13:37:52
я вот тоже об этом подумал

Mikhail
13.10.2017
13:38:10
Я только начал изучать go, можно пример?

Pawel
13.10.2017
13:38:12

Mikhail
13.10.2017
13:38:38
Просто сейчас код выглядит так
resp, err := http.Get(input_url)
if err != nil {
log.Panic(err)
}
msg.Text = resp.Request.URL.String()

AxiS
13.10.2017
13:40:50

Roman
13.10.2017
13:42:55

Mikhail
13.10.2017
13:49:33
Никто не знает?

Daniel
13.10.2017
13:49:43
Чито?

Aleksandr
13.10.2017
13:51:43
Никто не знает?
когда ты делаешь запрос, ты получаешь респонс, в котором Body - стрим, который не будет читаться, пока ты сам его не прочтешь. соотвветственно ответ: клиент делает по умолчанию так, как ты хочешь.

Илья
13.10.2017
13:55:11
по идее нельзя, тело все равно придётся вычитывать

Aleksandr
13.10.2017
13:55:42

Mikhail
13.10.2017
13:56:23
А надо вызывать response.Body.Close()?

Alexey
13.10.2017
13:56:24

Илья
13.10.2017
13:56:43

Ilya
13.10.2017
13:56:50
Теоретически можно сделать запрос через сокет прочитать первые N байт ответа и закрыть соединение

Mikhail
13.10.2017
13:57:47
спс, буду пробовать