
Slava
27.05.2017
16:44:48
Раз стесняются, тогда я начну
Ещё раз напишу =) Мне в команду storage в Dropbox нужен крутой mysql SRE, офисы в Ньй-Йорк, Сан Франциско, Сиэтл, Остин, Дублин. Визы, гринкарты легко. У меня тут всего 2 человека рулят флотом из десятков тысяч машин.

Мерлин
27.05.2017
16:45:29

Slava
27.05.2017
16:45:50
А, вот описание официальное https://www.dropbox.com/jobs/listing/91242

Google

TILTED
27.05.2017
17:55:25
2017/05/27 20:54:53 ������ Live � ������ �� ����� ���� (�� ���� �����): �� ����-����
как решить проблему с кодировкой?

Серж
27.05.2017
17:56:05
Правда ли что в dropbox отказались от go в пользу rust?

Roman
27.05.2017
17:56:31
@Z3R0_0N3 windows?

TILTED
27.05.2017
17:56:36
liteide

Roman
27.05.2017
17:57:33
@Z3R0_0N3 http://anvarichn.livejournal.com/43752.html

分解物質
27.05.2017
17:58:02

TILTED
27.05.2017
17:58:14

Roman
27.05.2017
17:58:49
у go utf из коробки, а вот виндаконсоль еще досовая

Matz
27.05.2017
18:00:41
Вывод: Install Gentoo или другой дистр Gnu/Linux

TILTED
27.05.2017
18:01:24

Google

Roman
27.05.2017
18:02:54
@Z3R0_0N3 как вариант взять VScode/gogland

Slava
27.05.2017
18:23:49

?FLERRY?
27.05.2017
19:10:36
нет
Слушай, вот где они берут эти слухи? Кто-то же тявкает не зная...

Oleksandr
27.05.2017
19:13:01
всем привет. посоветуйте, пожалуйста, книгу по голангу. работаю девопсом и сейчас пишу на питоне и пхп, но хочу на голанг полностью перейти. опыт программирования большой, но на голанге ничего не делал. подскажите, пожалуйста, книгу или набор туториалов. пасиба

Slava
27.05.2017
19:14:17
Книга Кернигана хорошая

Dmitry
27.05.2017
19:14:30
Плюсую за кернигана
Сам по ней го изучаю

Andrey
27.05.2017
19:15:05
лучший вариант это для старта Go Tour + Керниган

Matz
27.05.2017
19:15:33

Oleksandr
27.05.2017
19:15:36
понял, спасибо, господа

TILTED
27.05.2017
19:17:56
как скрэпить данные с обновляющейся страницы?

Ivan
27.05.2017
19:24:43
Регулярно

TILTED
27.05.2017
19:27:00
package main
import (
"log"
"github.com/mmadfox/scraper"
)
func main() {
browser, err := scraper.NewBrowser("http://kinogo.club")
if err != nil {
log.Fatal(err)
}
browser.Visit(/{movieName:(.*)\-[0-9]+\.html}, func(p Page) {
log.Println(p)
})
browser.Run()
}
.\main.go:14: undefined: Page
Ошибка: процесс завершился с кодом 2.
в чем ошибка?

Олег
27.05.2017
19:32:36
func(p Page)
Откуда взялся тип Page? Если он из scraper, то следует писать scraper.Page

TILTED
27.05.2017
19:37:18
type Page struct {
fakeResponseWriter
}
https://github.com/mmadfox/scraper/blob/2c2f82c078737b723b62997cdf3af15daad4316a/page.go

分解物質
27.05.2017
19:48:48
а, нет, проблемма в том что ты не изявил желания хотябы пол дня потратить на базовое ознакомление с языком

Google

TILTED
27.05.2017
19:54:44

Aleksander
27.05.2017
20:29:09
Добрый вечер! Как мне передать в JSON символ новой строки /n?

Олег
27.05.2017
20:29:15

Matz
27.05.2017
22:50:15
Может кому-то будет интересно, статья про Go (не булл щит компаний):
https://habrahabr.ru/post/329582/

Mike
27.05.2017
23:05:59
Норм, но про реакт совсем криво написано
эту бы статью вдвоем с каким-то фронтом написать
была бы конфетка полезная


Slava
28.05.2017
02:41:24
Для тех, кто незнаком с этой проблемой — GIL позволяет выполнятся только одной вещи за раз. Когда вы создаете потоки и они ”выглядят” как параллельно выполняющиеся, на самом деле интерпретатор все еще выполняет инструкции последовательно. Это означает, что один процесс может использовать только один CPU.
это не правда, вообщем
Учитывая неизбежную сложность этой настройки, также требуется наличие менеджера конфигурации, такого как Chef или Puppet. И тем не менее, эти наборы, как правило, не способны поддерживать большое количество долговременных соединений — проблема известная как C10K.
В итоге простое веб-приложение с базой данных требует целую кучу составных частей, прежде чем оно сможет обслуживать страницу «Hello World!». И почти все это из-за GIL.
всё смешалось у автора, люди и кони
Все дальше и дальше в прошлое уходит генерация HTML на сервере. Последняя (и правильная) тенденция заключается в построении пользовательского интерфейса и рендеринге полностью на стороне клиента, с помощью JavaScript - Тоже не так, последняя тенденция это изоморфные приложения
Программы на Go могут легко и элегантно запускать задачи в фоне, поэтому нет нужды в инструментах типа Resque. Эти программы запускаются как единственный процесс, так что кэширование становится тривиальным, а значит, Memcached или Redis не нужны. Go может управлять неограниченным количеством параллельных соединений, нивелируя надобность в фронтэндной защите, такой как Nginx.
извините, вся статья плохая
Аналогично фреймворкам, ORM'ы в Go не сильно распространены. Для начала, Go не поддерживает объекты — то, что обозначено O в аббревиатуре ORM. - WAT?


Alex
28.05.2017
04:36:02
Но таки да, статья хреновая

Slava
28.05.2017
04:36:33
почему интересный?

Google

Matz
28.05.2017
04:38:02

Ilya
28.05.2017
06:33:13
Статья на хабре очень странная. Я бы не рекомендовал ее читать.

/dev/m
28.05.2017
06:59:39
Может кому-то будет это интересно https://github.com/dzhou121/gonvim

Givi
28.05.2017
07:10:18

Eduard
28.05.2017
07:12:19
Кто нить писал WebRTC на сервере в файл и насколько это возможно

Alexander
28.05.2017
07:30:29
Пока невозможно, на го нет имплементации DTLS и SCTP
И WebRTC впринципе, включая ICE и WebRTC DataChannels
Не говоря уже о каки-то медиа стримах
Разве что WebRTC часть пускать в браузере, а потом отсылать на сервер.

Slach
28.05.2017
16:09:11
салют всем
подскажите самый goway способ
конвертнуть
[][]byte в []string ???
желательно без копирования и аллокаций лишних
пока получается какая то не очень красивая шляпа типа вот такого
switch l.(type) {
case [][]byte:
r := make([]string,len(l.([][]byte)))
for i,v := range l.([][]byte) {
r[i] = string(v)
}
}

Alexander
28.05.2017
16:16:47
Без лишних аллокаций - только через unsafe
И при этом потом не изменять изначальные слайсы байт

Alexey
28.05.2017
17:04:45
самый go way – это с копированиями и аллокациями

m
28.05.2017
17:13:53

Slach
28.05.2017
17:21:02
спасибо всем
а вот еще такой вопрос
API сторонней либы возвращает мне результат как слайс интерфейсов []interface{}
fmt.Printf("%v",res)
выдает
[[91 49 32 50 32 51 93]]
fmt.Printf("%s",res)
[[1 2 3]]
я так понимаю что в реальности каждый элемент слайса это []byte
вопрос, как мне сделать из этого []interface{}
слайс строк?
[]string { "1", "2", "3" } ???

Ivan
28.05.2017
17:22:20
Чувствую вашу боль коллега, уже месяц я парсю в го произвольные json-ы, и разбираю их для анализа.
Все эти преобразования достали меня.
Может вам нужен https://play.golang.org/p/Ddoq49CGuH

Alexey
28.05.2017
17:23:42
Руками сделать. :)

Google

Alexey
28.05.2017
17:23:49
https://golang.org/doc/faq#convert_slice_of_interface этот и следующий вопрос
> я так понимаю что в реальности каждый элемент слайса это []byte
Я бы проверил с выводом %T или %#v
А ещё лучше – посмотрели бы документацию сторонней либы :) Вряд ли она просто так возвращает пустые интерфейсы

Slach
28.05.2017
17:33:22
fmt.Printf("BLA1 %v\n", l)
fmt.Printf("BLA2 %s\n", l)
fmt.Printf("BLA3 %T\n", l)
fmt.Printf("BLA4 %#v\n", l)
выдает
BLA1 [[91 49 32 50 32 51 93]]
BLA2 [[1 2 3]]
BLA3 []interface {}
BLA4 []interface {}{[]uint8{0x5b, 0x31, 0x20, 0x32, 0x20, 0x33, 0x5d}}
чето как то все еще сложнее
ну вот как мне этот самый []uint8 (он же []byte)
конветнуть это в строковый слайс?

Ivan
28.05.2017
17:33:54
switch aaa.(type)

Sheldhur
28.05.2017
18:35:41

m
28.05.2017
19:44:07
Кто-то так считает. ну его право. ИМХО, это не так.

Дмитрий
28.05.2017
19:48:24
ребята, а есть объяснение тому, что если я делаю приведение типов string() для массива байтов, и для каждого байта в отдельности с конкатенацией плюсом, то на выходе я получаю разные результаты для непечатных символов?

Sheldhur
28.05.2017
19:49:28
кодировка
мб

Mike
28.05.2017
19:50:11
или потому что у тебя там юникод и некоторые символы больше байта?

Дмитрий
28.05.2017
19:53:59
ну да, результат как раз получается из-за разной кодировки, но байты то передаются одни и те же 0xd8 (не помню сейчас уже точно код) если конвертировать в составе массива байтов превращается в \xd8 а если просто отдельный байт конвертировать, то получается \u00d8

Олег
28.05.2017
20:05:40
Ну тк \xd8 == \u00d8.
Другая проблема, что d8 - это не отдельный символ, а часть многобайтового символа. Как уже написали выше.

Дмитрий
28.05.2017
20:06:53
равно, если сравнивать строковыми функциями, а если побайтово, то разные
var test1 [1]byte
var test2 byte
test1[0]=141
test2=141
fmt.Println(strconv.Quote(string(test1[:1])))
fmt.Println(strconv.Quote(string(test2)))