@proGO

Страница 994 из 1674
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

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

Aleksandr
16.11.2017
19:05:37
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) }
есть какой-то смысл во второй функции байты конвертить в строку, а потом обратно в байты, кроме как замедлить действие функции?

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

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

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

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

Vladimir
16.11.2017
19:11:51
а что, в го строки разве не юникодные по умолчанию?
именно юникодные 8)). ..., но это не отменяет существование uint8

Nikolay
16.11.2017
19:12:13
именно юникодные 8)). ..., но это не отменяет существование uint8
ну и вот, тогда строка - это не совсем слайс байтов

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
Она utf8 всегда
то есть utf-16 го не поддерживает?

определяется кодировкой (старшими битами)
а как же оптимизация компактных строк, как в джаве? чтобы непрозрачно конвертировать однобайтные в многобайтные?

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
Но в этом случае папка с логами оказывается внутри моего go-проекта, это нормально?
Ну можно в .gitignore добавить её содержимое, а внутрь положить .gitkeep. Чтобы трекалась git'ом

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

по поводу models, как по мне так это в go как то неудобно

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

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

Kirill
17.11.2017
10:58:52
config.yml в .gitignore рядом добавить config.sample.yml, его в git
Это бы прокатило если бы я писал на пхп

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
Какая связь с PHP?
Ну я имею в виду любой интерпретируемый язык

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
Ну я имею в виду любой интерпретируемый язык
Почему это в Golang не сработает? Я может мало пишу на нём и чего-то не учитываю

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

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