
nezorflame
16.11.2017
11:43:28
я вроде бы слышал про вот эту https://github.com/zeromq/gomq
но лично не юзал
и непохоже, что она production-ready

Daniel
16.11.2017
11:46:35
не похоже
собственно - я умею гуглить. мне личный опыт интересен

Google

Ivan
16.11.2017
12:10:54
без разницы
разница охренительна огромна, т.е. ты тупо блокируешь поток, а так в select'e мог бы 100500 чанелов слушать.
А для обычной блокировки, можно юзать wg sync

nezorflame
16.11.2017
12:11:23
Речь шла про пустой селект
Что тот код, что этот хреновый
В продакшне вообще там может быть отслеживание sigChannel и context.WithCancel
Речь шла о тесте, который человек выложил, а там действительно без разницы.

Ivan
16.11.2017
12:13:11
окей)

?
16.11.2017
13:40:57
https://docs.google.com/document/d/1j_Hka8eFKqWwGJWFSFedtBsNkFaRN3yvL4g8k30PLmg

Roman
16.11.2017
13:45:41
кто-нить знает? есть в редис структура, которая может хранить мапу с возможностью по ключу инкрементить value и потом вытащить все k, v
?

Alexey
16.11.2017
14:37:25
Блиин, как создать файл кодировки Windows1251? уже полчаса мучаюсь
Кто-то сталкивался?

Aleksandr
16.11.2017
14:38:28
кодировка - это интерпретация байтов

Roman
16.11.2017
14:38:33
это не у файла должна быть кодировка

Google

Aleksandr
16.11.2017
14:38:41
"красота в глазах смотрящего")

Roman
16.11.2017
14:39:19
))

Alexey
16.11.2017
14:39:27

Subbotin
16.11.2017
14:39:32
нет
https://godoc.org/golang.org/x/text/encoding/charmap
кодируешь в строку в поток байт определеной кодировкой и пишешь байты в файл

Alexey
16.11.2017
14:40:50
нет
верней - всякие блокноты - понятно что сами определяют кодировку. Вот и я хочу - чтоб они определяли вин 1251

Aleksandr
16.11.2017
14:42:58

Pawel
16.11.2017
17:33:29
Кто знает про mattn/go-sqlite3 - он умеет одновременно несколько CRUD запросов на одну коннекцию выполнянть? не нашёл, где про это написано

Umid
16.11.2017
18:37:08
всем привет

Roman
16.11.2017
18:37:33
ку

Vladimir
16.11.2017
19:01:26
Блиин, как создать файл кодировки Windows1251? уже полчаса мучаюсь
import "golang.org/x/text/encoding/charmap"
func DecodeWindows1251(ba []uint8) []uint8 {
dec := charmap.Windows1251.NewDecoder()
out, _ := dec.Bytes(ba)
return out
}
func EncodeWindows1251(ba []uint8) []uint8 {
enc := charmap.Windows1251.NewEncoder()
out, _ := enc.String(string(ba))
return []uint8(out)
}

Alexey
16.11.2017
19:02:56
СПС. Как раз это я и применил.

Vladimir
16.11.2017
19:04:00
пусть висит вдруг еще кому пригодится

Alexey
16.11.2017
19:04:46
Сука, как же я ненавижу , когда старперское начальство даёт типа таких заданий. Типа перевести файлы в древнючие кодировки.

Vladimir
16.11.2017
19:05:04
такова жизнь!

Aleksandr
16.11.2017
19:05:37

Vladimir
16.11.2017
19:06:04

Google

Aleksandr
16.11.2017
19:06:28
вопрос был не такой

Vladimir
16.11.2017
19:10:07
не понял ... строка это слайс байтов о каком замедлении вы говорите? А приведение к типу не замедляет а является инструкцией для компилятора

Daniel
16.11.2017
19:11:02
Там копирование памяти может случаться

Nikolay
16.11.2017
19:11:16

Daniel
16.11.2017
19:11:48
Уникодные

Vladimir
16.11.2017
19:11:51

Nikolay
16.11.2017
19:12:13

Vladimir
16.11.2017
19:12:33

Nikolay
16.11.2017
19:12:33
и надо метадату хранить, куда, что и как конвертировать

Daniel
16.11.2017
19:12:55
Это массив байт

Nikolay
16.11.2017
19:13:12

Nikolay
16.11.2017
19:13:31
иначе откуда ты узнаешь, сколько у тебя байтов на символ?

Daniel
16.11.2017
19:13:48
Она utf8 всегда

Vladimir
16.11.2017
19:14:00

Nikolay
16.11.2017
19:14:11

Daniel
16.11.2017
19:14:57
В строках всегда utf8

Nikolay
16.11.2017
19:17:03
а могли бы память сэкономить. Впрочем, пофиг.

Vladimir
16.11.2017
20:23:47
набросал програмку .... для показа собержимого UTF-8 и как все устроено(UTF-8 оптимизировать не нужно она самодостаточна):
https://play.golang.org/p/Cbi_1uneqM

Google

Vladimir
16.11.2017
20:39:04
смысл UTF-8 безобразия прост , если старший(8-й) бит =1 это часть многобайтового символа(руны) если и 7-й бит =1 то это начало многобайтового символа

Anatoly
16.11.2017
20:45:02
А к чему, если есть for loop по рунам или https://golang.org/pkg/unicode/utf8/#DecodeRune ?

Admin
ERROR: S client not available


Vladimir
16.11.2017
20:46:52
А к чему, если есть for loop по рунам или https://golang.org/pkg/unicode/utf8/#DecodeRune ?
ну это к разговору о теории UTF-8 ... в чем его суть, это позволит обращаться со строками так как вам хочется, если появится необходимость! А руны они хороши но несколько избыточны в требованиях к памяти ..., поэтому я стараюсь не уходить от string и []uint8, но вкусы различны! Да и для русского и английского языка и еще десятков языков будет достаточно самопальной руны в 16-ть бит!
func GetRuna16(src []uint8, counter int) (uint16, bool) {
var r uint16 = 0
var rez bool = true
k := 0
var tcounter int = 0
for i := 0; i < len(src); i++ {
switch int(src[i]) & 128 {
case 128: // unicode
switch int(src[i]) & 192 {
case 192:
tcounter++
if counter+1 == tcounter {
r += uint16(src[i]-192) << 8
k = 0
}
default:
if counter+1 == tcounter {
if k == 0 {
r += uint16(src[i] - 128)
k++
} else {
rez = false
}
}
}
default:
tcounter++
if counter+1 == tcounter {
r += uint16(src[i])
}
}
}
return r, rez
}
func TakeFromRuna16(runa uint16) []uint8 {
var rez []uint8
rez = make([]uint8, 0)
k := (runa & 65280) >> 8
l := runa & 255
if k != 0 {
// многобайтный
rez = append(rez, uint8(k)+192)
rez = append(rez, uint8(l)+128)
} else {
rez = append(rez, uint8(l))
}
return rez
}


?
17.11.2017
04:58:41
Go 1.10 Release Notes (DRAFT)
https://tip.golang.org/doc/go1.10

Yury
17.11.2017
09:00:27
Yoo

Vlad
17.11.2017
09:41:13
Судари, вопрос, совершенно к Го отношения не имеющий, задать можно? Или VOTEBAN мне в бухту залетит?

Aleksandr
17.11.2017
09:41:55
задай

Vlad
17.11.2017
09:42:34
Кто ходил в кроссах зимой (конкретно, new balance). кожаных
Мороз не покоцал их?
Мне кажется, из 1327 человек кто-то, да имеет такой экспириенс

Aleksandr
17.11.2017
09:42:50
тогда не задавай

Vlad
17.11.2017
09:43:02
Ихихихих, проехали
Проверю, отпишусь

Kirill
17.11.2017
10:52:58
Я понимаю что вопрос неоднократно обсуждался, но расскажите пожалуйста какая в го каноничная структура файлов для небольшого проекта.
Вот есть у меня папочка $GOPATH/src
Мне нужно завести проект, состоящий из нескольких папок + папка с логами + папка с конфигами
Как лучше организовать файлы? Думал сделать так:
$GOPATH/src/myproject/main.go
$GOPATH/src/myproject/models/
$GOPATH/src/myproject/config/
$GOPATH/src/myproject/log/
Но в этом случае папка с логами оказывается внутри моего go-проекта, это нормально?

some_random_anonymous
17.11.2017
10:56:06

Roman
17.11.2017
10:56:20
ну куда логи писать ты в конфиге можешь задать и не обязательно все в гит тащить
по поводу models, как по мне так это в go как то неудобно

Kirill
17.11.2017
10:57:48
Логи да, допустим я их отправлю в /var/log/myproject/
А с конфигами как быть? Их оставить в папке с проектом?
Он пока небольшой, в принципе можно и оставить, но в перспективе вырастет и будет деплоиться, надо как-то правильный конфиг подставлять в зависимости от машины, на которой запускается

some_random_anonymous
17.11.2017
10:58:33

Google

Roman
17.11.2017
10:58:37
тогда как советуют в 12 факторов или сколько их там, конфиги ни где не хранятся

Kirill
17.11.2017
10:58:52

Roman
17.11.2017
10:59:04
и тут прокатит
жить с этим можно

Kirill
17.11.2017
10:59:11
Ну или компилить проект на каждой тачке

Roman
17.11.2017
10:59:37
путь к конфигу через флаг задавать можно

some_random_anonymous
17.11.2017
10:59:42

Kirill
17.11.2017
11:00:05

Roman
17.11.2017
11:00:31
var configPath string
flag.StringVar(&configPath, "c", "config.json", "-c /path/to/config/file")
flag.Parse()
bts, err := ioutil.ReadFile(configPath)

some_random_anonymous
17.11.2017
11:00:47

Roman
17.11.2017
11:01:04
тоже не могу понять