@proGO

Страница 1375 из 1674
Daniel
17.04.2018
13:19:37
в main ждать Wait()

ну и первый запуск Crawler сделать тоже в горутине

Roman
17.04.2018
13:20:34
хорошо, спасибо. есть идеи, почему не работает так, как сделано?

Daniel
17.04.2018
13:21:09
потому, что crawler блокируется на чтении из канала, и в него некому писать

Google
Roman
17.04.2018
13:22:20
если я правильно понял defer close(ch) должен прекратить ожидание. он вызывается в любом случае

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

Daniel
17.04.2018
13:26:30
а как до дефера дело-то дойдет?

канал открыт, мы его читаем

а, не, там же сначала запись в канал, который некому читать

Crypt
17.04.2018
13:34:14
Если я в горутине делаю defer file.Close() и запускаю бесконечный цикл, defer выполнится при завершении main()?

Roman
17.04.2018
13:36:07
это я сегодня в доках читал :)

Crypt
17.04.2018
13:41:54
Итак, ответ - нет?)

Sergey
17.04.2018
13:42:46
defer не выполнится

Roman
17.04.2018
13:42:54
Итак, ответ - нет?)
исходя из вышеозвученного факта, мэйн не имеет прав что либо выполнить в горутине. думаю, что нет. но можно проверить

Sergey
17.04.2018
13:42:58
но дескриптор файловый освободится так или иначе)

Crypt
17.04.2018
13:49:34
Благодарю

Google
Crypt
17.04.2018
13:55:03
нет
что-то он даже до цикла не доходит)

Александр
17.04.2018
13:55:31
а он быстрый

Marlik
17.04.2018
14:10:26
https://play.golang.org/p/6eFIzNnAYwK
Хм, а зачем усложнять если я правильно понял? Это что парсер? Зачем каналы тада?

Roman
17.04.2018
14:20:52
Хм, а зачем усложнять если я правильно понял? Это что парсер? Зачем каналы тада?
Т.к. глава посвящена и каналам в том числе, я решил сделать так. Но, кажется, я что то упустил

Marlik
17.04.2018
14:21:59
Если у вас парсер, то не обязательно юзать каналы. Каналы хороши когда вы мульён адресов пытаетесь читать паралельно...

Marlik
17.04.2018
14:24:46
зачем на го парсер писать, который в один поток батрачит?)
Плят, вот я парсю два сайта, инфа там обновляется может раз в полчаса, час, поэтому приложуху кладу спать.... смысл парсить его каждую секунду?

Crypt
17.04.2018
14:25:13
так это можно и напитонить или нарубить быстрее

Roman
17.04.2018
14:25:43
go tour?
Ага

Marlik
17.04.2018
14:25:55
Ну хз, с goquery за ночь с перекурами, с просмотрами киношек написал...

Причём, сначала собирал ссылки на отдельной странице, потом переходил по этим ссылкам, и выгребал картинки, текст и прочее...

А если бы знал синтаксис JQuery, было-бы быстрее... пришлось вспоминать как оно там...

Arch
17.04.2018
14:33:55
На gо есть целый фрейм для парсинга, colly

Marlik
17.04.2018
14:35:02
Arch
17.04.2018
14:35:07
Оно умеет само собирать ссылки и пробегаться по ним + всякие плюшки

http://go-colly.org

Google
Marlik
17.04.2018
14:36:15
Ага, я уже нашёл, спасибо.

Атас
17.04.2018
14:38:51
https://play.golang.org/p/6eFIzNnAYwK
по минимуму https://play.golang.org/p/J87vDD3vaX5

Roman
17.04.2018
14:44:51
по минимуму https://play.golang.org/p/J87vDD3vaX5
Зачем второй лок и еще одна проверка?

Crypt
17.04.2018
14:49:56
Зачем второй лок и еще одна проверка?
ну между ними же анлок, т.е. в это время другие горутины могут работать и внести изменения

Roman
17.04.2018
14:55:21
Т.е. это просто best practice озаботиться от случайностей?

Crypt
17.04.2018
15:03:15
)))))))0

не слушай меня в общем)

лок тоже не нужен

Roman
17.04.2018
15:03:36
В общем, благодаря примеру Атас я увидел кау пофиксить - нужно из мейна crawl запускать как горутину тоже

Но пока я не понял, почему не работает как у меня было в начале

Получается если не запускать как горутину, то до range в мейне никогда не дойдет, а значит читать будет некому?

Roman
17.04.2018
15:08:23
Канал закроется раньше return

В смысле, раньше чем начнетсч рэндж. Вот так

Спасибо всем за помощь ?

Crypt
17.04.2018
15:11:41
был с results

у тебя длина его равна кол-ву ссылок в первоначальной выдаче

Roman
17.04.2018
15:13:18
у тебя длина его равна кол-ву ссылок в первоначальной выдаче
Верно, потом создается канал на каждый урл по i

Crypt
17.04.2018
15:13:33
еще происходит захват i, который как раз таки равен этому кол-ву всегда

Google
Crypt
17.04.2018
15:13:55
и всегда приходит 1 результат, даже если Crawl как горутину пускать

Roman
17.04.2018
15:15:32
Crypt
17.04.2018
15:16:43
неа, go func(u string, i int) { .... }(u, i) надо делать, когда переменные из ренжа передаёшь в горутину

Admin
ERROR: S client not available

Roman
17.04.2018
15:22:09
Походу, на этот индекс вообще не стоит полагаться. Нужно делать как у Атас в примере

Атас
17.04.2018
15:25:17
Crypt
17.04.2018
15:30:11
не обязательно можно и так https://play.golang.org/p/42Z_j0c5SRE
хах, вот меня мучает вопрос: в чем разница между этим result[i] = make(chan string) go Crawl(u, depth-1, fetcher, cache, result[i]) и этим: go func(u string,i int) { result[i] = make(chan string) Crawl(u, depth-1, fetcher, cache, result[i]) }(u,i)

Anastasia
17.04.2018
15:38:19
#вакансия #golang #fulltime #москва #blockchain Привет! Ищу Golang разработчика в международную fintech компанию (основное представительство в Ирландии), которая разрабатывает торговую платформу для трейдеров и инвесторов. Стэк: Golang, PostgreSQL, RabbitMQ. Будет плюсом знание Python Условия: ЗП до 250 т.р.+премии, оформление по контракту или ИП. Офис в центре Москвы. Команда сформирована из специалистов, участвовавших в развитии крупнейших банков (Deutsche, ING, Royal Bank). Сам проект тоже фондирован крупынми банками. Если заинтересовались - присылайте резюме в личку :)

Атас
17.04.2018
15:57:58
хах, вот меня мучает вопрос: в чем разница между этим result[i] = make(chan string) go Crawl(u, depth-1, fetcher, cache, result[i]) и этим: go func(u string,i int) { result[i] = make(chan string) Crawl(u, depth-1, fetcher, cache, result[i]) }(u,i)
result[i] = make(chan string) внутри go func приводит к тому что в последующем range по result можно попасть на nil в его элементе, так как канал еще не успел создаться, горутины не успели до make дойти , а цикл их порождающий завершон и управление уже передано дальше и тогда ловим deadlock и делать так не стоит а вариант https://play.golang.org/p/eqOcfS74CfN это лишний вызов функции и совсем не красиво, тем-более что вызов так же не бесплатен, это около 4ns лишних , так что почему и не написать сразу result[i] = make(chan string) go Crawl(u, depth-1, fetcher, cache, result[i])

Roman
17.04.2018
17:24:03
Парни, посоветуйте Socks proxy на Go

Хочу в цифровом сопротивлении поучаствовать и поираться с нагрузками

Dmitri
17.04.2018
17:25:51
Парни, посоветуйте Socks proxy на Go
так гугел сразу же выдает

Google
Ilia
17.04.2018
17:27:29
вторые сутки - полет нормальный

Roman
17.04.2018
17:27:47
Выдает это понятно. Насколько он стабильный/производительный?

Dmitri
17.04.2018
17:28:03
так 443 нормально для сокса юзать?

Crypt
17.04.2018
17:28:17
Хочу в цифровом сопротивлении поучаствовать и поираться с нагрузками
лучше бы луковый релэй, если уж хочется поучаствовать)

Ilia
17.04.2018
17:28:35
а фиг его знает… но в systemd пришлось строчку дописать чтоб стартануть не под рутом на этом порту

Crypt
17.04.2018
17:28:48
так 443 нормально для сокса юзать?
не очень, будет просить рута, чтобы прибиться к порту

Dmitri
17.04.2018
17:29:05
+ это порт для https

Roman
17.04.2018
17:29:23
1080 вроде стандартный порт

Dmitri
17.04.2018
17:29:27
+

Ilia
17.04.2018
17:29:30
чтоб никто не догадался!

=)

если серьезно - я просто посмотрел на каких портах крутили sock5 самые распиаренные прокси для телеги

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