@proGO

Страница 518 из 1674
Maxim
04.03.2017
18:07:42
https://toby3d.ru/telegraph

Раз уж начали ссылками бросаться

Google
Roman
04.03.2017
19:16:26
Не очень то и хотелось!

Kirill
04.03.2017
19:16:52
я просто сразу отреагировал.

Roman
04.03.2017
19:18:26
Для денег есть джава :)

Kirill
04.03.2017
19:19:18
Для денег есть джава :)
насколько я заметил, денег в этом чате особо и не водится.

Stanislav
04.03.2017
19:54:22
Давайте на питон перепишу

Dmitry
04.03.2017
19:54:37
?

только не говори что переписал.

Roman
04.03.2017
19:58:36
может, и джуниора возьмёте?
Я сделаю то же что и он, только дешевле :)

Constantine
04.03.2017
19:58:56
?

понеслись торги

Stanislav
04.03.2017
20:00:02
Я сделаю то же что и он, только дешевле :)
У меня самое выгодное предложение Не сделаю ничего (сделаю ничего, не сделаю что-то? лол язык странный) за бесплатно

Google
Mikhail
04.03.2017
20:00:49
Kirill
04.03.2017
20:05:16
Я сделаю то же что и он, только дешевле :)
тебе сейчас так придется почку бесплатно отдавать, потому что я не озвучу свое предлолжение и сумму

Stanislav
04.03.2017
20:06:11
Это идея Аутсорс скидывать не людям а в чаты

Будут цену сбивать сами

Roman
04.03.2017
22:18:09
а вы когда нибудь оказывались в такой ситуации когда подумали: "Слава богу существуют goroutine'ы, решить проблему традиционным путём было бы намного сложнее"?

Phil
04.03.2017
22:19:51
Roman
04.03.2017
22:20:33
При том, что я 10 лет назад писал закат Солнца вручную и потом ещё несколько раз на Twisted - да постоянно
можешь принести краткий пример, почему goroutine'ы решили проблему легче?

Phil
04.03.2017
22:22:50
можешь принести краткий пример, почему goroutine'ы решили проблему легче?
Писать шедулер по неблокирующему i/o достаточно муторно и в общем случае можно только в какой-то части. Конечно я не переписывал стандартных либ (питона в моём случае) и в тех местах, где использовал их - получались неуправляемые задержки. Twisted - это наука про "запутай себя коллбэками"

Вот у меня пока ещё не переписан сервис whois - он на твистеде. Я его использую для проверки занятости домена и подбора для клиента. Писать и поддерживать это было адом

Maxim
04.03.2017
22:24:40
Исполнение функций в "фоне" через горутины, пока идёт основной алгоритм - считается?

Или это слишком тривиальная вещь?



Phil
04.03.2017
22:25:33
АААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Всех новых буду кикать. Пусть будет ацкий чатик

Roman
04.03.2017
22:26:01
Блин, хорошо что я про Джаву не вспоминал вечерком

Задумался. Как на go выглядит решение event loop ? Или могло бы выглядить? Или не могло бы.

Phil
04.03.2017
22:28:12
Чо?

Roman
04.03.2017
22:28:33
Или это слишком тривиальная вещь?
ну считай считалось бы: "насколько тяжелее это воплотить традиционным методом"

Roman
04.03.2017
22:29:53
Чо?
Ну вот в вебе JavaScript, а в андроиде Java - сплошные listener. Как это выглядит на Го?

Roman
04.03.2017
22:31:27
Ну вот в вебе JavaScript, а в андроиде Java - сплошные listener. Как это выглядит на Го?
т.е. имеешь ввиду насколько удобно на Go писать в стиле Event-driven programming?

Google
Denis
04.03.2017
22:40:48
Ну ивент дравин говно ж

Denis
04.03.2017
22:41:03
Нажрался в ноде по самое не балуй

Может для гуев

И ок

Phil
04.03.2017
22:41:29
Ну ивент дравин говно ж
[ржу] т.е. тебя не смущает, что Go это чистый евент драйвен?

Denis
04.03.2017
22:42:00
Ох

Мы о разном

Phil
04.03.2017
22:44:07
??? ну выражайся яснее

Roman
04.03.2017
22:49:21
т.е. имеешь ввиду насколько удобно на Go писать в стиле Event-driven programming?
Ивент-драйвен асинхронное. Можно ли реализовать это на Го?

Phil
04.03.2017
22:51:14
Ивент-драйвен асинхронное. Можно ли реализовать это на Го?
Горутины это и есть ивент драйвен. Не надо ничего реализовывать

Roman
04.03.2017
22:56:50
не "драйвен" а "дривен" плиз))

Constantine
04.03.2017
22:57:06
драйвер

чтоб ты спал плохо

понял?

Kirill
04.03.2017
22:57:32
Roman
04.03.2017
22:58:05
Ивент-драйвен асинхронное. Можно ли реализовать это на Го?
часть стандартной библиотеки Go на event driven парадигме.. возьмите к примеру net/http

ничто не мешает в Go определяет event handler'ы, это даже очень кстати в решениях некоторых определённых задач

Phil
04.03.2017
23:00:15
какая блеать парадигма? вы тут все с ума сошли? go и есть event driven. это его фишка

не надо его там писать. оно в нём внутри

Google
Roman
04.03.2017
23:12:49
какая блеать парадигма? вы тут все с ума сошли? go и есть event driven. это его фишка
golang в первую очередь императивный язык, позволяющий писать в event driven стиле

Phil
04.03.2017
23:14:35
ээээ... нет же

Roman
04.03.2017
23:15:54
ээээ... нет же
ну так поясни

Phil
04.03.2017
23:16:32
Го позволяет писать сопрограммы. А то что там ивент дривен - это факт из биографии его рантайма. Никакого ивент дрийвен в алгоритмах мы не имеем ввиду.

Roman
04.03.2017
23:17:13
ну хотя по сути даже каналы event driven

Admin
ERROR: S client not available

Phil
04.03.2017
23:19:06
нууу... ну.... ну ок, каналы наверное да

Stanislav
04.03.2017
23:23:45
Она испортила число Кикиик

Roman
05.03.2017
02:08:19
В Go event driven только на уровне реализации runtime. И благодаря горутинам он дает на ротан всем этим event driven фреймворкам других языков программирования с их не умными коллбеками.

Yura
05.03.2017
06:24:27
Даже в go порою хочется кусочек event-driven/callback-helled. Хотя бы потому, что оно все-таки все еще быстрее, чем горутины, и памяти меньше ест. Но это исключительные ситуации.

Yura
05.03.2017
07:15:12
Про шедулер кто-то вчера ссылку кинул. Шедулер у go замечательный. Думаю, шедулить стэкфул корутины быстрее вряд ли получится. Но сам факт, что шедулятся стжкфул корутины, накладывает ограничение на перформанс: как минимум, стэк каждой корутины засирает кэш процессора. В коллбэк режиме стэк переиспользуется, и потому кэш расходуется эффективнее. Вторая проблема, о которой я слышал как минимум дважды за последнее время: каждый Read() блокирует горутину, и требует памяти на буфер. Если у тебя сотни тысяч сокетов, каждый из которых пишет максимум раз в минуту, получается огромный перерасход памяти.

Roman
05.03.2017
08:36:05
Мне интересен пример кода, как организовать Event Loop модель в Го, с каналами или как то еще, да. Мы не говорим сейчас об интерфейс браузера или андроида. Возмем чего по-проще.

Например, есть IoT демон управления теплицей, который слушает датчики - вкл/выкл, получает данные фотосенсора и дает команды на включение насосов и обогревателей. Два листенера и два воркера, все полностью асихронные и тред-сейф.

Как это должно выглядеть в коде?

Quet
05.03.2017
08:47:22
каждый листенер и воркер в своей горутине

Roman
05.03.2017
09:04:45
Примера, как я понимаю, не будет?

05.03.2017
09:47:57
бьёшь на горутины, связываешь каналами, profit

wf
05.03.2017
09:55:20
Примера, как я понимаю, не будет?
package main import ( "fmt" "time" "math/rand" ) func worker(cmds <-chan int) { for cmd := range cmds { fmt.Printf("Worker: %d\n", cmd) // Do the work } } func main() { cmds := make(chan int, 10) // Start workers pool for w := 0; w < 4; w++ { go worker(cmds) } //Listener here for i:=0;i<50;i++ { cmds <- rand.Intn(100) time.Sleep(time.Duration(1)*time.Second) } } Только тут один листенер

Google
Serge
05.03.2017
10:17:30
А вот коллеги, есть ли какая-то либа для распространения событий между разными горутинами? Хочется иметь типа диспетчер каналов с разными событиями. Иметь возможность взять канал у диспетчера и в него закинуть. А в нескольких горутинах подписаться на этот канал и получать одно и тоже. Типа, диспетчер pubsub на fan-in/fan-out. Бывает такое или самому писать?

Roman
05.03.2017
10:25:41
package main import ( "fmt" "time" "math/rand" ) func worker(cmds <-chan int) { for cmd := range cmds { fmt.Printf("Worker: %d\n", cmd) // Do the work } } func main() { cmds := make(chan int, 10) // Start workers pool for w := 0; w < 4; w++ { go worker(cmds) } //Listener here for i:=0;i<50;i++ { cmds <- rand.Intn(100) time.Sleep(time.Duration(1)*time.Second) } } Только тут один листенер
Это какая то абстракция для работы с горутинами. Я хочу посмотреть на реальный пример с гитхаба. Пусть даже это будет учебная задача. Воркеры все разные, они принимают разные параметры. Листенеры тоже разные. Их может быть два, пять, десять. В идеале чтобы был пример на каком нибудь другом языке, с колбеками или чем то еще, а потом пример на Go. "А теперь, мы подключим датчик окрывания двери и добавим вот такую строчку в это место. Посмотрите, стало зашибись!" Можно носом ткнуть в нужную книжу и нужную главу.

Alexander
05.03.2017
10:27:49
Мне кажеца, или пытаешься сделать мозги умного дома?

Roman
05.03.2017
10:29:43
Нет, я пытаюсь понять возможности Go.

Пример с теплицей скопирован из книжки про язык, который злесь нельзя называть.

Мы вот ругаем, например Джаву или Джаваскрипт. А я попытался представить, как писать на Go, например, под Андроид в парадигме именно этой системы. И понял вдруг, что никак.

Точнее, писать то конечно можно, но вот что бы было просто и понятно. Вместо одного хелла попадем в другой.

05.03.2017
10:43:43
Точнее, писать то конечно можно, но вот что бы было просто и понятно. Вместо одного хелла попадем в другой.
Как я говорил несколько раз на собеседовании на нынешней работе: для каждой задачи - свой инструмент.

Denis
05.03.2017
10:45:33
Так в чем проблема написать publisher & subscriber

И подписываться на топики

Пробрасывать хендлеры

Будет копия js'кого addEventListener

Где первым аргументов ивент

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