Egor
Что это ха продукт мы пишем?
Попахивает скулями 😄
Slach
Вопрос в целях и границах
в идеале, анализатор произвольного dataset в Clickhouse на аномалии в худшем случае, анализатор конкретных таблиц с конкретной структурой, по заранее размеченным по типам (измерение, факт) полям
Slach
даже во втором варианте, у меня все равно получается что надо генерировать запрос по некоторому подмножеству полей вот я и спрашиваю, ок. если я объявлю большую структуру где пропишу все поля а в запросе укажу только некоторые то при фетчинге у меня в структуре будут заполнены только те поля, которые я указал в запросе? теперь вопрос, нельзя ли вместо жесткой структуры сделать какой нибудь map[string]interface{} и фукнцию ConvertFromInterfaceToSelectedType ?
Daniel
Короткий ответ - не знаю :)
Daniel
Раз мы пишем аналайлер - да, нам все это нужно
Anonymous
ребята, Java имеет будущее?
Anonymous
или умирает?
Alexander
Дальше можно уже любые мапы собирать
Alexander
@onokonem по поводу вчерашнего разговора про http запроссы к ртб: очевидно, у нас там проблема с тем, что количество одновременных http-коннектов не ограничено. Как я писал выше, сейчас этот модуль сделан на Scala. Там стоит 1000 одновременных коннектов максимум. Будем копать в этом направлении. В ином случае - у нас количество гоурутин уходит в неконтролируемое состояние, и переключения между ними становятся слишком хаотичными, вследствие чего система деградирует
Daniel
у меня система деградировала на 10M+ горутин. есть подозрение, что это число завязано на размер кеша процессора
Daniel
так что, да, боюсь, вам прописан пул горутин
Daniel
который, надо сказать, получается очень просто - канал и пачка читателей
Мерль
Никто не знает, как через стандартную либу сделать пул? Там есть что-нибудь встроенное?
В стандартной библиотеке нет инструментов для построения пула, но он делается не очень сложно, к тому же есть готовые библиотека А ещё недавно вышла неплохая статья как раз об этом
Slach
https://stackoverflow.com/a/17885636
Спасибо дорогой дружище! ты мне прямо сильно жизнь облегчил
Alexander
Спасибо дорогой дружище! ты мне прямо сильно жизнь облегчил
Не за что, искал так: https://yandex.ru/search/?text=golang%20sql%20dynamic%20fields&&lr=2 первая ссылка
Мерль
Можно ссылку?
Вот ищу сейчас
Alexander
Как сделать пул руками - примерно понятно :) Если я правильно понял, поможет http.Transport
Alexander
Правда на скорую руку запиленный http.Transport ситуацию не разрешил
Alexander
Надо копать более глубоко
Мерль
Правда на скорую руку запиленный http.Transport ситуацию не разрешил
Ааа Ну там же есть поле DialContext Можно реализовать обёртку вокруг http.Transport, в котором сделать атомарный счётчик коннектов
Мерль
А блин
Мерль
Надо ещё будет следить за живыми коннектами и делать декремент счётчику на close
Alexander
Там есть максимальное количество idle коннектов, но как я понял, это не оно)
Alexander
который, надо сказать, получается очень просто - канал и пачка читателей
Здесь есть скрытая сложность. Дело в том, что запросы на ртб мы посылаем на каждую ртб по каждому пользователю. Если сделать 1 канал для ответов на http запросы, то ответы по разным пользователям перемешаются. Следовательно, надо в ответ зашивать некую инфу о том, по какому пользователю этот ответ. А потом из основного канала перенаправлять в нужный канал. Нужный канал видимо надо вынимать из мапы каналов пользователей. И еще нужно следить за этой мапой, конкуретностью)
Alexander
Надо ещё будет следить за живыми коннектами и делать декремент счётчику на close
Это да, но есть один момент, с которым придется подзапариться. Надо делать логику обработки ситуации, когда счетчик достиг своего максимума, и у нас нет коннекта для отдачи. Если я правильно понимаю, то такую логику лучше делать на каналах (завести канал со свободными коннектами)
Мерль
Потому что это делается по-разному
Alexander
Ограничение на количество одновременно выполняемых http запросов
Мерль
@kirilldanshin, ты не мог бы высказать мнение по поводу tagged enum, который я описал выше?
Alexander
Обработчик в данном случае - это и есть функция, которая делает запрос
Мерль
Ограничение на количество одновременно выполняемых http запросов
Тогда по сути тебе нужна очередь и пул воркеров
Alexander
Верно
Мерль
“Building a Worker Pool in Golang” @jmdalmeida92 https://geeks.uniplaces.com/building-a-worker-pool-in-golang-1e6c0fdfd78c
Мерль
Вот та свежая статья
Alexander
Спасибо, почитаю. Но надеюсь все-таки, что может удастся найти какой-нибудь хороший http клиент, у которого есть встроенный пул
Alexander 🐕
Какие средства метапрограммирования в Golang Вы знаете?
Mike
Какие средства метапрограммирования в Golang Вы знаете?
Метапрограммирование — это когда ты программируешь мозг программеру на голанге?
Mike
а вообще в го же нет макросов и генериков, какое метапрограммирование?
Alexander 🐕
Ну - мне интересно мнение дамы
Alexander 🐕
Ответ я знаю, да
Mike
не, просто ты вопрос не тот задал
Mike
потому что на него тот, кто знает, и кто не знает, ответит одинаково)
Mike
"я не знаю никаких"
Oleg
А кодогенерация? :)
Pawel
Такая беда( Был нормальный сайт, грубо говоря - betfair.com. Я с него на гошечке брал некоторые числа по хттп выдирая из хтмл. Потом пришли геи и сделали вместо хтмл факин веб приложение на факин ангуляре. Вопрос - как теперь жыть? в смысле можно ли в гошечке как-то отрендрить ангуляр?
Valentin
Phantomjs
Pawel
Phantomjs
а он умеет в V8?
Roman
Chrome headless
Valentin
Я не спец по нему, пробовал пару лет назад
Roman
Даже примеры где-то под лямбду находил
Valentin
Вообще фантом вроде как хром с апи на жс
Pawel
ок, спс. буду глядеть
Mike
Фантом или селениум, ага
Anonymous
Ребят, на чем сложнее веб-приложения писать, Go/Python(Django)
Roman
Go
Roman
https://chromeless.netlify.com/#src=const%20chromeless%20=%20new%20Chromeless(%7B%20remote:%20true%20%7D)%0A%0Aconst%20screenshot%20=%20await%20chromeless%0A%20%20.goto('https://www.lenta.ru')%0A%20%20.scrollTo(0,%202000)%0A%20%20.screenshot()%0A%0Aconsole.log(screenshot)%0A%0Aawait%20chromeless.end()
Roman
Pawel ^
Pawel
@rkononov 👍
Danil Á.
Ребят, на чем сложнее веб-приложения писать, Go/Python(Django)
Хорошие сложнее на go, потому что этот язык сложнее. Хеллоуворды проще на golang.
Danil Á.
К тому же пока что нет фреймворка уровня django для golang
Мерль
Фантом или селениум, ага
Только фантом умер (
Мерль
Хотя с ростом объёма проекта сложности сравниваются, по крайней мере для меня
Мерль
реально?
C headless chrrome он не особо стал нужен
Pavel
а в селениуме не появилось возможности брать управление уже в открытом браузере?
Alexander
Phantomjs
Он уже закрылся
Alexander
Вместо него hedless google chrome
Anton 🇺🇦
for _, g := range games.Result.Games { min := int(g.Scoreboard.Duration / 60) return fmt.Sprintf("%v (%d) vs %v %s. %d-%d kills %d minutes in.\n", g.TeamRadiant.TeamName, g.RadiantSeriesWin, g.TeamDire.TeamName, g.DireSeriesWin, g.Scoreboard.Radiant.Score, g.Scoreboard.Dire.Score, min) }
Anton 🇺🇦
не выводит ничего
Anton 🇺🇦
а если поменять на fmt.Printf - выдает ошибку
Anton 🇺🇦
.\main.go:61: too many arguments to return have (int, error) want (string)
Stanislav
оно прямо говорит, чего хочет, и что ты пихаешь туда