Dk
https://play.golang.org/p/IzSAtrhNjsj Отвечаю по порядку. Чтобы скомпилировалось - надо сравнить слайсы. Слайсы использую - потому, что ещё нет опыта в выборе правильной структуры, прошу подсказать. walk запустил 2 раза ^
Dk
А в чём ещё хранить список int, чтобы потом сравнить?
Евгений
Чтобы сравнить одинаковы ли 2 набора int?
Евгений
Например, сет?
Igor
гуйс, а если юзать прокси в http.Client, там же по дефолтному указывать можно? user:pass@ip:host?
Dk
Отличная идея, но я их не увидел в туре🤔 Множества - это хорошо
Igor
в доке как написано?
вот сейчас и узнаем
Евгений
Если упорядочены, то можно и слайс. Но они в лоб не сравниваются. Нужно чуть хитрее
Dk
Ну правда, я прошу best practice, как это лучше сделать, чтобы сразу понять как нормально делается.
Aleksandr
вот сейчас и узнаем
давай. потом расскажешь
Евгений
Если я верно понял задачу, то вам даже слайс не нужен. Понимаете?
Илья
Ну правда, я прошу best practice, как это лучше сделать, чтобы сразу понять как нормально делается.
одного несовпадения в деревьях достаточно для принятия решения о неравенстве
Илья
но, насколько я понимаю, при этом останутся горутины повисшие, так что задача мне не нравится
Dk
я правильно вас понял?
Илья
да
Евгений
а если поток не упорядочен?
Dk
а если поток не упорядочен?
Я как раз на этом и провалился
Илья
это бинарные деревья
Евгений
> структурированное случайным образом двоичное дерево, которое содержит значения k, 2k, 3k, ..., 10k.
Dk
Они не упорядочены. Поэтому и собирал всё в слайсы.
Евгений
Кстати, вы хороший вопрос подняли: как сделать, чтобы горутины не оставались висеть?
Евгений
Если красиво то да. Если некрасиво, то можно обойтись глобальными переменными
Aleksandr
ch1 := make(chan int) ch2 := make(chan int) defer close(ch1) defer close(ch2)
Илья
Они не упорядочены. Поэтому и собирал всё в слайсы.
они упорядочены если обходить слево направо
Илья
ch1 := make(chan int) ch2 := make(chan int) defer close(ch1) defer close(ch2)
тогда в go рутинах полетят паники на запись в закрытый канал
Илья
каналы, по идее, нужно закрывать внутри Walk, а рекурсивный кусок выносить в другую функцию
Aleksandr
тогда в go рутинах полетят паники на запись в закрытый канал
почему? функция же закончит работу после окончания работы горутин (еслия правильно понимаю)
Aleksandr
https://play.golang.org/p/IzSAtrhNjsj
Aleksandr
я про этот код
Евгений
это не рабочий код, мы про правильно работающий вариант
Aleksandr
кинь ссылку. понятно что нерабочий, я исходил их того, что логика такая же останется
Евгений
я уже грейс выход добавил ) сейчас
Евгений
https://play.golang.org/p/oL1MkvQHd03
Aleksandr
ну так такая же логика
Евгений
да
Евгений
но в этом случае горутины будут пытаться писать в канал, который никто не читает
Евгений
понятно, что конкретно в данном случае программа завершится и ничего страшного в этом нет
Aleksandr
Евгений
но в рабочем проекте начнется утечка
Евгений
https://play.golang.org/p/1wgUnkkA-Y5
Илья
https://play.golang.org/p/1wgUnkkA-Y5
а если кто-то вызовет same 2 раза?
Евгений
а если кто-то вызовет same 2 раза?
А такое не предполагается :) По-хорошему, канал quit надо втащить в Same и передавать в Walk. Использование глобальных переменных - зло. Здесь только ради того, чтобы не менять сигнатуру Walk
Евгений
https://play.golang.org/p/aWZ8mzaV14w
Anonymous
Такой вопрос. Хочу сделать бэкенд для упрощенный проекта типа Яндекс Музыки. MongoDB подойдет?
Andrei 🦉
Такой вопрос. Хочу сделать бэкенд для упрощенный проекта типа Яндекс Музыки. MongoDB подойдет?
монга - это документная база данных без транзакций если вас устраивает, что при конкурентном изменении нескольких документов конечный результат не определен, то смело берите, иначе постгря наше все
L
завезли
Andrei 🦉
завезли
значит либо сломали старый функционал, либо это на самом деле не транзакции чудес не бывает
Andrei 🦉
как это сломали старый функционал? multi-document ACID transactions
CAP теорема, монга всю жизнь была AP системой
Andrei 🦉
если добавили C, значит сломали A или P
Viacheslav!
Скажите, где лучше делать локализацию шаблона? Бэк или фронт? Одностраничник но с большим количеством текстовых блоков
Igor
Товарищи подскажите в каком случае следует или не следует создавать несколько коннектов к одной и той же бд? Речь про postgresql. Допустим, есть процессы связанные с фронтендом, а есть вычисления бизнес-лоигки. И то и другое всё в одном апи. Бд это рассматривает как два подключения и работает с ними параллельно или она всё равно последовательно обрабатывает запросы и оттуда и оттуда?
Igor
эка красота
Dmitry
Почитайте как реализовывать интерфейс sql.Db
Igor
спасибо.
arkady
ребята, очень хочется почитать или послушать перевод доклада Concurrency is not parallelism на русском, есть у кого нибудь? я слаб в английском(
Daniel
TWIMC: вчерашняя проблема с listen оказалась очень странной: нельзя слишком часто открывать-закрывать unix сокеты. от этого что-то где-то ломается, и listen сокет закрывается надо бы багрепорт написать, но непонятно, куда
Daniel
ubuntu 16.04
Daniel
воспроизводится на голом железе, кстати
Kirill
ubuntu 16.04
Сорри, Нил, но ССЗБ.
Kirill
воспроизводится на голом железе, кстати
Погоди, что ты имеешь ввиду под "на голом железе"?
Oleg
ребята, очень хочется почитать или послушать перевод доклада Concurrency is not parallelism на русском, есть у кого нибудь? я слаб в английском(
Если очень хочется, то включи автосабы, открой Google Translate. У Роба там простой английский, никаких сложных построений фраз
Oleg
Плюс вот слайды в помощь, потому что на видео там видно чуть менее чем ничего https://talks.golang.org/2012/waza.slide
Daniel
ага
Daniel
полный привет
Илья
треш :)