
Ivan
27.04.2017
18:15:31
net/html или github.com/PuerkitoBio/goquery

?FLERRY?
27.04.2017
18:15:46
спасибо

Aleksey
27.04.2017
19:26:08

?FLERRY?
27.04.2017
19:34:52
Не, не очень быстрый.

Google

?FLERRY?
27.04.2017
19:34:58
Но очень удобный
Попробовал то, что скинул Иван, либу всмысле. Очень даже ничего. Может кстати тестил кто на бенчмарке?

Aleksey
27.04.2017
19:41:02

?FLERRY?
28.04.2017
03:27:31
Ребята, может кто подскажет, есть ли аналоги в Golang Set/TreeSet из Java?
И вообще, обычно какие-то наборы данных в Go хранят в слайсах? Или есть какие-то другие классические хранилища (не считая map. Я просто хочу сделать себе эдакую таблицу аналогов составляющим Collections Framework в Golang)

Олег
28.04.2017
05:27:13
Аналогом HashSet (не знаю, как называется в джаве) можно считать map[T]bool:
set := map[string]bool
// проверка на наличие
if set["str"] {
}
// добавление
set["str"] = true
// удаление
delete(set, "str")

?FLERRY?
28.04.2017
05:28:28
О, спасибо. +1

Slava
28.04.2017
05:34:05
только лучше map[type]struct{} делать

?FLERRY?
28.04.2017
05:34:42
можете объяснить, почему лучше?

Slava
28.04.2017
05:35:43
я исправился, не interface{} а struct{} конечно же
struct{} тип не занимает памяти, в отличии от bool типа

?FLERRY?
28.04.2017
05:37:40
о, так лучше :)

Google

?FLERRY?
28.04.2017
05:37:49
а то по-началу не понял, зачем интерфейс

Slava
28.04.2017
05:38:24
заработался, извините =)

?FLERRY?
28.04.2017
05:40:37
да ничего ?

Aleksei
28.04.2017
09:37:53
Вакансия.
Ищем бекэнд-разработчика в компанию, создающую гейминговую платформу. Стек: Go (Golang), node.js, JS, MongoDB, CouchDB, но в общем, критичен Golang. Желателен опыт в agile разработке и хороший технический английский язык. Русскоязычная команда, базируется в Таллине. Помогаем с переездом, можем сразу. На первое время также рассматривается удаленка. Вилка 2.5 - 3.2К евро нетто. Более подробно - в лс, а лучше на почту: tygertrail@gmail.com

Мерлин
28.04.2017
10:25:37
Вакансия.
Ищем бекэнд-разработчика в компанию, создающую гейминговую платформу. Стек: Go (Golang), node.js, JS, MongoDB, CouchDB, но в общем, критичен Golang. Желателен опыт в agile разработке и хороший технический английский язык. Русскоязычная команда, базируется в Таллине. Помогаем с переездом, можем сразу. На первое время также рассматривается удаленка. Вилка 2.5 - 3.2К евро нетто. Более подробно - в лс, а лучше на почту: tygertrail@gmail.com
#вакансия

Mike
28.04.2017
13:07:58
Тут как раз же срачик был, писать игры на го или нет

santa
28.04.2017
13:14:03
А почему бы и нет...

Mike
28.04.2017
13:14:25
Ну листани почитай

Eduard
28.04.2017
13:14:25

Mike
28.04.2017
13:14:37

Алексей
28.04.2017
15:30:17
кто какую либу для редиса юзает?

Ivan
28.04.2017
15:49:31
вроде родная есть

?FLERRY?
28.04.2017
15:59:19
Ребят, подскажите, пожалуйста, почему, если писать так:
...
f, _ := os.OpenFile("text.txt", os.O_RDWR, 0666)
n, err := io.WriteString(f, "Hello World!")
...
то в файл все отлично пишется, но если писать так:
...
f, _ := os.Open("text.txt")
n, err := io.WriteString(f, "Hello World!")
...
то файл остается пустым? Возможно, дело в разрешениях, но ведь Open() юзает 0666. И вообще, если я не буду юзать Open(), то я должен определять систему юзера, чтобы там ставить выбирать, какое значение ставить, 0666 или rwxrwxrwx.

Alexander
28.04.2017
16:00:57
Можете указать, где почитать про deploy web golang проектов. Я так понимаю придется перезагружать полностью ПО. Соответственно в минус уйдут подключения уже существующие и на время деплоя. Как это избежать

Ivan
28.04.2017
16:01:26
не париться

Илья
28.04.2017
16:01:45

Ivan
28.04.2017
16:01:55
читать без привязки к golang. Вкратце, выводить из ротации на балансере, перекладывать, заводить в ротацию

Alexander
28.04.2017
16:02:35
Ребят, подскажите, пожалуйста, почему, если писать так:
...
f, _ := os.OpenFile("text.txt", os.O_RDWR, 0666)
n, err := io.WriteString(f, "Hello World!")
...
то в файл все отлично пишется, но если писать так:
...
f, _ := os.Open("text.txt")
n, err := io.WriteString(f, "Hello World!")
...
то файл остается пустым? Возможно, дело в разрешениях, но ведь Open() юзает 0666. И вообще, если я не буду юзать Open(), то я должен определять систему юзера, чтобы там ставить выбирать, какое значение ставить, 0666 или rwxrwxrwx.
// Open opens the named file for reading. If successful, methods on
// the returned file can be used for reading; the associated file
// descriptor has mode O_RDONLY.
// If there is an error, it will be of type *PathError.
func Open(name string) (*File, error) {
return OpenFile(name, O_RDONLY, 0)
}


Илья
28.04.2017
16:02:37
Ребят, подскажите, пожалуйста, почему, если писать так:
...
f, _ := os.OpenFile("text.txt", os.O_RDWR, 0666)
n, err := io.WriteString(f, "Hello World!")
...
то в файл все отлично пишется, но если писать так:
...
f, _ := os.Open("text.txt")
n, err := io.WriteString(f, "Hello World!")
...
то файл остается пустым? Возможно, дело в разрешениях, но ведь Open() юзает 0666. И вообще, если я не буду юзать Open(), то я должен определять систему юзера, чтобы там ставить выбирать, какое значение ставить, 0666 или rwxrwxrwx.
https://golang.org/pkg/os/#Open the associated file descriptor has mode O_RDONLY

?FLERRY?
28.04.2017
16:03:04
спасибо, понял. Чувак значит попутал в статье

Google

Anton
28.04.2017
16:18:02

?FLERRY?
28.04.2017
16:18:17
Не, ну статьи тоже нужны :)
Еще вопрос - как часто используется recover?
panic-то оно понятно, что хорошо юзается, а вот recover...

Slava
28.04.2017
16:27:49
воу воу
что значит хорошо юзается?
никто не использует panic

?FLERRY?
28.04.2017
16:31:47
хм... Значит мои джавистские привычки. Тоесть здесь все обрабатываем через err != nil?

Slava
28.04.2017
16:33:44
Вроде того

?FLERRY?
28.04.2017
16:33:47
Просто в Java мы try catch давай... Если прямо дикая вещь какая-то, можно throw new ...
А тут, как я понял, для этого panic

Slava
28.04.2017
16:34:05
Нет

?FLERRY?
28.04.2017
16:34:11
но это видимо тут идеология такая, черз err

Slava
28.04.2017
16:34:28
Это разные инструменты

Anton
28.04.2017
16:35:12
Панику юзают, чтобы завершиться нештатно, но это не является good practice
Лучше стараться этого избегать

?FLERRY?
28.04.2017
16:35:20
ага, понял

Anton
28.04.2017
16:35:53
А вот возврат значения и ошибки - это наше все

?FLERRY?
28.04.2017
16:36:09
спасибо :)
получается, если надо сгенерить ошибочку свою, то errors.New?

Google

Anton
28.04.2017
16:37:50
если из строки
Хотя нет, гоню

Alexander
28.04.2017
16:38:03
да

?FLERRY?
28.04.2017
16:38:10
супер
значит правильно делаю :)

Alexander
28.04.2017
16:38:28
Если из структуры, то надо реализовать метод Error()

Anton
28.04.2017
16:38:57
Можно еще реализовать интерфейс Error для обьекта и вернуть этот обьект

?FLERRY?
28.04.2017
16:39:18
понял, благодарю

Ivan
28.04.2017
16:39:49
fmt.Errorf еще есть

Anton
28.04.2017
16:41:43

m
28.04.2017
17:09:46
Интересный доклад: http://talks.godoc.org/github.com/gobwas/ps1ws/notifier.slide

Илья
28.04.2017
17:10:57
если он еще заопенсорсит epoll свой
тогда будет еще интереснее

m
28.04.2017
17:12:47
Примечательно то, стандартный net/http вышел не ахти. и в большинстве презентаций пишут о том, что приходится от него отказываться.

Илья
28.04.2017
17:14:26
ну, тут вопрос в требованиях, для большинства задач, он вполне ахти

Slava
28.04.2017
17:15:10

m
28.04.2017
17:15:51
fasthttp не просто так родился, например.

Мерлин
28.04.2017
17:19:00

m
28.04.2017
17:23:29
https://www.techempower.com/benchmarks/#section=data-r13&hw=ph&test=plaintext

Google

Roman
28.04.2017
17:25:12
Кстати, в FastHttp вроде нет возможности принимать большие файлы от клиента - читает все в память, а не на диск ((

m
28.04.2017
17:28:17
Автор изначально писал его для RTB, т.е. куча мелких запросов. И по мелким запросам он вроде даже nginx обгонял. Сейчас пишет как вебсервер общего назначения. Про приём больших файлов не знаю. Но его точно используют и даже выставляют в инет.

Slava
28.04.2017
17:29:03
Погоди Михаил =) вопрос был про то, кто пишет что net/http не ахти

m
28.04.2017
17:29:53
с моей точки зрения он не ахти по производительности. я ж с презентации начал. Там та же мысль отражена.
автор fasthttp тоже пишет, что он по производительности не ахти.

Slava
28.04.2017
17:30:41
это же мейл ру
то есть у нас уже две компании за fasthttp, автор и mail.ru
я не отрицаю что для определённых задач fasthttp хорош, но это не значит что net/http плох

m
28.04.2017
17:31:50
в презентации mail.ru они вообще сами tcp-сокет открывают

Slava
28.04.2017
17:32:35

m
28.04.2017
17:33:09
Да, я перебрал с формулировкой. согласен.
скажу так. есть изъяны. ?

Aleksey
28.04.2017
17:36:35

Slava
28.04.2017
17:37:43
у меня нет мнения, потому что я его не использовал. Но Миша, думаю, может рассказать про свои эксперименты

Aleksey
28.04.2017
17:39:03
Было бы хорошо

m
28.04.2017
17:44:52
Мои эксперименты наводят на мысль, что и сам net не ахти. ? Ибо приём пакетов или соединений приводит к аллокации памяти на каждый пакет/соединение и невозможно от неё избавиться, не переписав всё на сисколы.
и я ожидаю, что рано или поздно появится какой-нить net2, где выделение памяти будет отделено от выполнения метода обекта.

Roman
28.04.2017
17:48:39
Но все таки, когда лучше выставлять net/http или fasthttp наружу, без nginx?

m
28.04.2017
17:48:49
про работу под виндой я вообще молчу. нельзя свой хэндлер в net передать или прочитать. Т.е. SO_REUSEPORT уже нельзя с net использовать. Т.е. кросплатформенность из коробки условная. Всё как бы работает, но нет той гибкости, что имеется под Линуксом.