@gogolang

Страница 1598 из 1630
Vladimir
21.10.2018
22:02:35
for i:=0;i<len(funcs);i++ { l:=make(chan int) channels = append(channels,l ) go funcs[i](l) }

тут вообще плохо читаеься потому как вы совместили создание слайса с запуском функций, а никак не индексное определение

ivan
21.10.2018
22:06:47
я понимаю что у них ответственность разная, но не 2 же цикла для этого делать? И почему итерирование через i > чем через range? производительнее?

Vladimir
21.10.2018
22:08:08
я понимаю что у них ответственность разная, но не 2 же цикла для этого делать? И почему итерирование через i > чем через range? производительнее?
ну если вы в чудеса не верите то понимаете что компилятор будет работать с индексом, зачем же его скрывать? При том что вы его все равно используете

Google
Vladimir
21.10.2018
22:10:51
ну вобщем дело вкуса ☺️

вобщем сойдет !

ivan
21.10.2018
22:21:36
Да, не смогу, т.е. пример с выше где используется 2 канала профитнее, почему тогда его использовать плохая практика?

;D ну есть какие-то общиепринятые понятия и best practices, хочется сразу на светлую сторону встать. В любом случае спасибо

anatolii
21.10.2018
23:25:22
Зачем в рутины оборачивать?

Vladimir
21.10.2018
23:25:51
Зачем в рутины оборачивать?
обработчик чтоб не лочить

anatolii
21.10.2018
23:26:21
Какой обработчик? ?

Vladimir
21.10.2018
23:27:22
Какой обработчик? ?
а ты про парсер? , там не нужно!

я код смотрел TCP сервера? и ляпнул, перепутал парня с другим кем обсуждал UDP сервер

в парсере конечно сразу GET

client := &http.Client{} resp, err := client.Get("xxxxxxxx") if err == nil { htmlData, err2 := ioutil.ReadAll(resp.Body) ... resp.Body.Close() }

;D ну есть какие-то общиепринятые понятия и best practices, хочется сразу на светлую сторону встать. В любом случае спасибо
дело не в best practize а в том что твой пример получает данные с двух рутин в синхронном режиме сначала от одной все (другая в это время стоит), затем от другой все? , а иногда нужна асинронность, которая может не оставить камня на камне! package main import ( "fmt" ) func main() { exit := make(chan int) channels := []chan int{} funcs := []func(c chan int, exit chan int){ test1, test2, } for i, fn := range funcs { channels = append(channels, make(chan int)) go fn(channels[i], exit) } res := []int{} res = append(res, k(channels, exit)...) fmt.Println(res, len(res)) } func test1(c chan int, exit chan int) { for i := 0; i < 1000; i++ { c <- i } exit <- 1 } func test2(c chan int, exit chan int) { for i := 1000; i < 2000; i++ { c <- i } exit <- 1 } func k(c []chan int, exit chan int) []int { var v int ex := 0 t := []int{} for ex < 2 { select { case v = <-c[0]: t = append(t, v) case v = <-c[1]: t = append(t, v) case <-exit: ex++ } } close(c[0]) close(c[1]) return t }

Google
Александр
22.10.2018
03:54:29
зачем вам такой асинхрон?

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

Vladimir
22.10.2018
04:25:07
Добрый день. Подскажите как правильно использовать прокси в https соединении. func getClient() (*http.Client, error) { if client == nil { prx, err := url.Parse(urlProxy) if err != nil { return nil, err } transport := &http.Transport{ Proxy: http.ProxyURL(prx), TLSClientConfig: &tls.Config{}, } client = &http.Client{ Transport: transport, } client = &http.Client{} } return client, nil } Использую прокси в настройках клиента, соединение не проходит, если указать прокси через переменную окружения соединение устанавливается. В какую сторону капать?

Александр
22.10.2018
04:56:07
проверь что ты прокси правильно устаналиваешь

туда кормиться тип *url.URL,

распечатай, убедись что все нормально спарсилось

/dev/null
22.10.2018
05:05:54
Ребят, чот не пойму как с этим бороться [ERROR] xml: name "patient" in tag of pix.AddPatient.Patient conflicts with name "PatientDto" in *pix.Patient.XMLName

type AddPatient struct { XMLName xml.Name `xml:"http://teri.org/ AddPatient"` } type Patient struct { XMLName xml.Name `xml:"http://schemas.datacontract.org/2004/07/Service.Data.Dto PatientDto"` }

Vladimir
22.10.2018
05:18:50
распечатай, убедись что все нормально спарсилось
prx, err := url.Parse(urlProxy) if err != nil { return nil, err } Вот жеж проверка на валидность *Url прокси

Изначально был косяк когда urlProxy был без схемы

Artem
22.10.2018
05:38:26
for i:=0;i<len(funcs);i++
for i := range funcs ?

Vadim
22.10.2018
06:30:41
Вроде бы статья совсем не про Го, открываю комментарии там идёт срач как го всех победит. Так держать. Го в массы?

Electron это Flash для десктопа https://habr.com/post/427211/

Michael
22.10.2018
06:33:44
Вроде бы статья совсем не про Го, открываю комментарии там идёт срач как го всех победит. Так держать. Го в массы?
Го в го...массы а не статья а по поводу электрона на хабре есть ещё эпичнее статья, в кот. чел из рос. майкрософта говорит, что это будущее разработки под винду

Vladimir
22.10.2018
06:34:05
кстати, почему не писать код в стиле early return? func getClient() (*http.Client, error) { if client != nil { return client, nil } /*do all the stuff*/ }
Довольно холиварный вопрос, с одной стороны уменьшаем вложеность логики, с другой стороны повторяется конструкция return client, nil. Есть ли конкретные правила относительно этого в голанге?

Google
Daniel
22.10.2018
06:36:22
@madgopher , @kirilldanshin , у нас доклад 8 ноября в 14:00 в зале на 360 человек ты готов?

Kirill
22.10.2018
06:45:39
Но в остальном ок же)

Artem
22.10.2018
06:51:52
Лол

Kirill
22.10.2018
06:59:59
Ну а что, с меня же часть контента всё равно)

Kirill
22.10.2018
07:40:46
Го в го...массы а не статья а по поводу электрона на хабре есть ещё эпичнее статья, в кот. чел из рос. майкрософта говорит, что это будущее разработки под винду
а что не так? эксель на тайпскрипте написан, божественный интерфейс, сложно назвать более приятную программу

Kirill
22.10.2018
07:41:45
тот самый ms excel?
ну да, офис который

офис 365 или как он там

Bohdan
22.10.2018
07:42:03
а, ну так офис 365 он ведь для веба, не?

Kirill
22.10.2018
07:42:21
а, ну так офис 365 он ведь для веба, не?
ну десктоп приложения есть же

Andrey
22.10.2018
07:44:50
я бы задался вопросом хорошо ли так вообще делать
Это очевидно что хорошо. Я же не буду предлагать людям скачать два файла вместо одного. Подскажи лучше о чем почитать, чтобы упаковать.

Bohdan
22.10.2018
07:45:06
ну десктоп приложения есть же
https://mspoweruser.com/no-microsoft-is-not-rewriting-office-in-javascript/

но это оффтоп, ладно

Vladimir
22.10.2018
08:13:27
зачем вам такой асинхрон?
вообще на асинронном языке можно выбирать различные модели под текущую задачу !

for i := range funcs ?
а есть разница?

Artem
22.10.2018
08:16:54
а есть разница?
кор тим го старалась, добавила хоть какой-то сахар в язык, а тут его выкидывают. формально, то вроде len() не вычисляется каждую итерацию, как в твоем примере

Vladimir
22.10.2018
08:19:17
кор тим го старалась, добавила хоть какой-то сахар в язык, а тут его выкидывают. формально, то вроде len() не вычисляется каждую итерацию, как в твоем примере
а если циклом да с особой логикой прохождения по массиву? Я не против сахара , но range закрывает возможность решение многих задач!

Google
Artem
22.10.2018
08:21:14
а вот если ты идешь по массиву и меняешь в процессе i, то должны быть веские аргументы так делать

Vladimir
22.10.2018
08:24:00
ну range для пройти по массиву/мапе/каналу всего то
чтоб понятнее было ? заполните массив a[10][10] спиралью числами 1..100! Хотя нет ... если не встречаются вам задачи в которых индекс -ВСЕ , то и слава богу!

Vladimir
22.10.2018
08:26:10
сори, за прошлую неделю раз 17 делал так, устал немного, давай через месяц
лучше забудь ....мы оба говорим за возможности языка! А уж что выбирать пусть выбирает каждый

Roman
22.10.2018
08:26:25
какая-то дичь у вас

Artem
22.10.2018
09:05:17
спиралью? это как?
это как на олимпиадах для школьников 8 класса 123 894 765

Vladimir
22.10.2018
09:05:20
Roman
22.10.2018
09:08:46
зачем? почему не исходники кубера, например?

Vladimir
22.10.2018
09:09:33
зачем? почему не исходники кубера, например?
чтоб не приставали ,? как будто я хейтер range

Vyacheslav
22.10.2018
09:10:39
Ого.

Artem
22.10.2018
09:10:41
так можно, но зачем?
не ко мне вопрос

Vladimir
22.10.2018
09:11:06
так можно, но зачем?
только когда вы безработны или пенсионер, в остальных случаях бесполезная трата времени

https://repl.it/@Delimiter/Sumdoku

Roman
22.10.2018
09:15:24
а гошные массивы эквивалентны сишным?

Roman
22.10.2018
09:15:55
т.е. [4][4] это то же самое что [16] ?

Google
Mykyta
22.10.2018
09:16:28
можно проверить через unsafe.Ptr

Илья
22.10.2018
09:17:58
https://repl.it/@Delimiter/Sumdoku
простите, не в теме обсуждения странного, но нахрена init_field ?

Vladimir
22.10.2018
09:18:47
простите, не в теме обсуждения странного, но нахрена init_field ?
переношу внутрь условия задачи ...(реальную сумдоку)

фото выше

Roman
22.10.2018
09:19:42
можно проверить через unsafe.Ptr
2d: [[0 1 2] [0 1 2] [0 1 2]] 1d: [0 1 2 0 1 2 0 1 2]

Илья
22.10.2018
09:20:20
э, вы gotour, вроде бы, прошли, вы знаете чем заполнен в go массив? ну, присвоение пустых структур я бы еще понял, а это просто си код

Roman
22.10.2018
09:20:29
https://play.golang.org/p/qG6ktGsVGT4

https://repl.it/@Delimiter/Sumdoku
в set_field какая-то нечитаемая дичь =(

Vladimir
22.10.2018
09:22:54
в set_field какая-то нечитаемая дичь =(
ну да и задача непроста, конечно хочется простого решения для труднейшей сумдоки

Страница 1598 из 1630