@proGO

Страница 369 из 1674
dypa
27.12.2016
20:07:05
у меня тут своя персональная боль - ребята на php с использованием DDD написали проектик 4 года назад... всё паттернами обмазано, даже в именах классов названия паттернов. не поддерживаемо. когда их встречаю им не стыдно до сих пор...

Google
dypa
27.12.2016
20:10:36
ну были бы типы - они бы ещё и типами бы всё это обмазали. было бы 10500 типов на каждый чих, потому что ...

Quet
27.12.2016
20:14:59
ну менять что-то не так страшно становится

Denis
27.12.2016
20:33:56
Задачи всегда весело решать, например достижение консенсуса между серверами и шаринга состояния между сервисами в кластере в го решается через левое по, месяц, с ором и танцами. В Erlang based это почти из коробки, и весело и надежно, и задача не успела вскипятить мозги. Я доволен как разработчик, команда довольна, что выкатила новую фичу. PO доволен, что ничего не упало с первого притока юзеров. Думаете зря назрела инициатива goodlang? Один ? Плюс еще что-то там было Все прекрасно знают минусы go, их незачем обсуждать еще раз, для каждого языка своя ниша, в го отлично писать сетевуху, но бизнес логику уже муторно, любой сложный проект в го юзает интерфейсы по полной, посмотрите код докера, qor. Хотя интерфейс это антипаттерн и замедляет работу приложения (давайте вспомним martini), по мнению авторов го, юзание интерфейсов является исключительным кейсом, но биг ворлд говорит, что это не так, и нужен, и полиморфизм, и перезагрузка функций, и что вообще интерфейс это не решение проблем. В языке должны быть другие языковые конструкции, иначе код обрастает ненужными ассертами интерфейса в тип, либо функциями addApple() addOrange() addHuman() и addEntity(...a) если подразумеваешь, что аргумента у функции может и не быть, а если он все таки есть, то нужно его достать а = а[0], а если эту функцию используют другие разработчики им еще нужно дать понять, что spread тут только для того чтобы иметь возможность опциональности аргумента, а не потому, что функция принимает их множество​. И еще куча минусов, глупо говорить о выразительности го, ее нет, он императивен и туп как кувалда. Но разве кувалда не выполняет своих функций? С этим всё ок

Daniel
27.12.2016
20:38:48
это о чем речь?

[Anonymous]
27.12.2016
20:44:28
Задачи всегда весело решать, например достижение консенсуса между серверами и шаринга состояния между сервисами в кластере в го решается через левое по, месяц, с ором и танцами. В Erlang based это почти из коробки, и весело и надежно, и задача не успела вскипятить мозги. Я доволен как разработчик, команда довольна, что выкатила новую фичу. PO доволен, что ничего не упало с первого притока юзеров. Думаете зря назрела инициатива goodlang? Один ? Плюс еще что-то там было Все прекрасно знают минусы go, их незачем обсуждать еще раз, для каждого языка своя ниша, в го отлично писать сетевуху, но бизнес логику уже муторно, любой сложный проект в го юзает интерфейсы по полной, посмотрите код докера, qor. Хотя интерфейс это антипаттерн и замедляет работу приложения (давайте вспомним martini), по мнению авторов го, юзание интерфейсов является исключительным кейсом, но биг ворлд говорит, что это не так, и нужен, и полиморфизм, и перезагрузка функций, и что вообще интерфейс это не решение проблем. В языке должны быть другие языковые конструкции, иначе код обрастает ненужными ассертами интерфейса в тип, либо функциями addApple() addOrange() addHuman() и addEntity(...a) если подразумеваешь, что аргумента у функции может и не быть, а если он все таки есть, то нужно его достать а = а[0], а если эту функцию используют другие разработчики им еще нужно дать понять, что spread тут только для того чтобы иметь возможность опциональности аргумента, а не потому, что функция принимает их множество​. И еще куча минусов, глупо говорить о выразительности го, ее нет, он императивен и туп как кувалда. Но разве кувалда не выполняет своих функций? С этим всё ок
Какие языки по твоему лучше справляется с поставленными задачами\лучше спроектированы?

Denis
27.12.2016
20:46:27
у меня тут своя персональная боль - ребята на php с использованием DDD написали проектик 4 года назад... всё паттернами обмазано, даже в именах классов названия паттернов. не поддерживаемо. когда их встречаю им не стыдно до сих пор...
На пыхе никогда не кодил, но DDD с агрегатами и репами без костылей реализовывались чисто только в Java и c#, + это все-таки паттерн, и реализовывать его можно разными путями, как хуже так и лучше

Alexey
27.12.2016
20:47:08
А можно опять с атомопроблемами? У меня в Атоме панелька пропала го-плюсная и не появляется. Я чем только не прообовал. И тесты вроде не запускаются при сохранении, хотя галочка стоит.

[Anonymous]
27.12.2016
20:48:45
Справляются с чем/для чего ?:)
Хоть с чем) Или универсального средства не существует?)

Quet
27.12.2016
20:49:03
не существует

Denis
27.12.2016
20:49:43
Если хоть с чем, то русский, очевидно

naim
27.12.2016
21:07:28
Интересно почему Erlang так опустился
perl расти начал , а я то думал все будет плохо,

Vladimir
27.12.2016
21:08:16
perl расти начал , а я то думал все будет плохо,
Интересно сколько пальцев нужно чтоб перечислить компании где нужны перловики

Google
naim
27.12.2016
21:08:38
Задачи всегда весело решать, например достижение консенсуса между серверами и шаринга состояния между сервисами в кластере в го решается через левое по, месяц, с ором и танцами. В Erlang based это почти из коробки, и весело и надежно, и задача не успела вскипятить мозги. Я доволен как разработчик, команда довольна, что выкатила новую фичу. PO доволен, что ничего не упало с первого притока юзеров. Думаете зря назрела инициатива goodlang? Один ? Плюс еще что-то там было Все прекрасно знают минусы go, их незачем обсуждать еще раз, для каждого языка своя ниша, в го отлично писать сетевуху, но бизнес логику уже муторно, любой сложный проект в го юзает интерфейсы по полной, посмотрите код докера, qor. Хотя интерфейс это антипаттерн и замедляет работу приложения (давайте вспомним martini), по мнению авторов го, юзание интерфейсов является исключительным кейсом, но биг ворлд говорит, что это не так, и нужен, и полиморфизм, и перезагрузка функций, и что вообще интерфейс это не решение проблем. В языке должны быть другие языковые конструкции, иначе код обрастает ненужными ассертами интерфейса в тип, либо функциями addApple() addOrange() addHuman() и addEntity(...a) если подразумеваешь, что аргумента у функции может и не быть, а если он все таки есть, то нужно его достать а = а[0], а если эту функцию используют другие разработчики им еще нужно дать понять, что spread тут только для того чтобы иметь возможность опциональности аргумента, а не потому, что функция принимает их множество​. И еще куча минусов, глупо говорить о выразительности го, ее нет, он императивен и туп как кувалда. Но разве кувалда не выполняет своих функций? С этим всё ок
+1

на западе его вообще много

в провах он везде как стандарт

Ivan
27.12.2016
22:19:18
Что-то у меня Го юзает всего 1 ядро. Причём судя по утилитке ниже, он видит 4. Принудительно runtime.GOMAXPROCS(4) не помогает. Куда копать? Пока грешу на компилятор. https://gist.github.com/peterhellberg/5848304

Daniel
27.12.2016
22:20:13
это на какой платформе?

Ivan
27.12.2016
22:20:46
винда 7 и 2008R2

х64

Daniel
27.12.2016
22:21:12
тогда не компилятор

а как вы определили, что используется одно ядро?

Vladimir
27.12.2016
22:21:46
@TheVaN4 а код како, который не грузит больше 1 ядра?

может код такой что больше не может?

Ivan
27.12.2016
22:22:56
Глазами в тасках увидел) Суть кода простая, парсит файл, 1 ядро под 100% на 2-5 минут уходит

Vladimir
27.12.2016
22:23:07
вопрос же в том как он парсит )

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

Daniel
27.12.2016
22:23:43
я начал подозревать нехорошее...

Ivan
27.12.2016
22:23:56
Daniel
27.12.2016
22:24:39
не хочу никого обидеть, но это то самое bullshit bingo

Ivan
27.12.2016
22:25:16
Я почему то думал что любая 1 задача в состоянии отъёсть сколько влезет. А так то поток один, как я уже осознал..

Google
Vladimir
27.12.2016
22:25:31
в Го делать горутины просто и даже есть свой шедулер который определяет какая из них работает, но параллелить код за тебя язык не сможет

Daniel
27.12.2016
22:26:36
потому, что это могут только функциональные языки (и потому за ними будущее)

Daniel
27.12.2016
22:30:08
Скорее нет

Но зависит от задачи

Из горутины значение надо через канал возвращать

Daniel
27.12.2016
22:31:44
И порядок обработки может нарушаться

Daniel
27.12.2016
22:32:15
А чего не работает-то?

Ivan
27.12.2016
22:32:43
И порядок обработки может нарушаться
Вот с этим и боюсь столкнуться. Всё должно быть вроде по порядку, но с другой стороны пошустрее бы

Vladimir
27.12.2016
22:33:19
@TheVaN4 всегда зависит от задачи

Phil
27.12.2016
22:33:44
А чего не работает-то?
ну както они не очень популярны

Daniel
27.12.2016
22:34:25
ну както они не очень популярны
Так нет ни одного годного

Ivan
27.12.2016
22:35:01
@TheVaN4 всегда зависит от задачи
На входе: куча данных и мусора. На выходе некие критические сообщения. Пока думаю в файл загонять, как/куда потом их девать видно будет.

Ivan
27.12.2016
22:37:14
Пока придумал как сделать чтобы файл не парсить от и до каждый раз, выход делать хэш/хэши. Сам актуальных хэш хранится во временном файле (чтобы выжил и после ребута), до начала парсинга и структурирования идёт как раз отброс мусора и выкидываю всё до последнего прочитанного значния.

Vladimir
27.12.2016
22:37:59
смотря что у тебя на вход и в каком виде. Пока это звучит как греп, а он должен на каком-нибудь powershell работать очень быстро

Google
Vladimir
27.12.2016
22:38:08
даже если парсить по регуляркам и постоянно

и ты ж понимаешь что считая хэш ты читаешь весь файл?

или сколько там ты подсчету сбагриваешь

Subbotin
27.12.2016
22:38:49
Угу. Чувак явно городит костыли на пустом месте

Vladimir
27.12.2016
22:39:13
у тебя операция подсчета хэша может быть также затратна как и поиск сообщений

Ivan
27.12.2016
22:39:25
смотря что у тебя на вход и в каком виде. Пока это звучит как греп, а он должен на каком-нибудь powershell работать очень быстро
Дело в том что он будет брать старые значения, а нужны только новые. Ну по сути можно и так)

Subbotin
27.12.2016
22:39:37
Греп или эластиксер в зависимости от ситуации спасут

Ivan
27.12.2016
22:40:22
у тебя операция подсчета хэша может быть также затратна как и поиск сообщений
Это окупается, как мне показалось. Я же не все строки хэширую разом.

Vladimir
27.12.2016
22:40:37
формат файла какой?

Admin
ERROR: S client not available

Ivan
27.12.2016
22:42:12
какого размера файл что поиск идет 2 минуты?
Там не только поиск) Это было бы слишком просто. Файл ~100 Мб, строк ~600к

Vladimir
27.12.2016
22:42:21
2 минуты это как-то очень много

Ivan
27.12.2016
22:43:22
Ну пока *.log) Кроме поиска решил забабахать структуру, т.к. в файле месиво просто, а хотелось бы по атрибутам обращаться к каждому элементу

2 минуты это как-то очень много
Много, т.к. ядро 1 испольуется. Да и 100% ещё есть где что подкрутить.

Угу. Чувак явно городит костыли на пустом месте
Костыли - пожалуй. В нормальном виде нет самих логов от кривого ПО, что делать. В идеале потом всю эту хрень слать надо будет в Zabbix скорее всего.

Vladimir
27.12.2016
22:46:45
Кстати тебе маленький хинт - сохраняй не хэши строк, а позицию а файле

И делай туда seek

Phil
27.12.2016
22:49:56
Google
Ivan
27.12.2016
22:50:45
Кстати тебе маленький хинт - сохраняй не хэши строк, а позицию а файле
В идеале это кстати намного шустрее, спасибо. Осталось выяснить только - не чистить ли то же ПО само свои логи периодично, а то не подойдёт.

Ivan
27.12.2016
22:53:07
Если чистит, то будет чуть сложнее, но тоже реализуемо
Процедура создания хэша весьма затратная? Или речь про просто чуть более оптимальный подход?

Ivan
27.12.2016
22:53:53
В моём случае:

func hash(s string) uint32 { h := fnv.New32a() h.Write([]byte(s)) return h.Sum32() }

Vladimir
27.12.2016
22:54:42
Не, я про то что оно делает

Alexey
27.12.2016
22:55:41
Кстати тебе маленький хинт - сохраняй не хэши строк, а позицию а файле
И inode. Только не уверен, как оно под виндой зовётся.

Ivan
27.12.2016
22:57:16
Не, я про то что оно делает
Грубо говоря: берётся хэш из файла (который был ранее создан), затем идёт создание хэшей снизу вверх по массиву логов и их сравнение.

Вот тут тоже беда что всё в 1 поток

Vladimir
27.12.2016
23:00:16
Вообще в го встроен профилировщик

Оно тебе покажет узкое место

Ivan
27.12.2016
23:00:43
2 минуты это как-то очень много
Прикинул, около 22к строк в секунду обрабатывается. Не знаю, быстро/медленно правда.

Vladimir
27.12.2016
23:00:50
И можно написать микробенчмарки

Я конечно не знаю алгоритма фильтрации и что ты с данными делаешь, но я думаю оптимальное решение будет давать около ляма в секунду на ядро

Ivan
27.12.2016
23:04:31
Вообще в го встроен профилировщик
Как его потрогать-то? Я просто на Го первый раз пишу.

И можно написать микробенчмарки
По времени исполнения, узкое место сам парсинг/структурирование. Возможно я его зря прикрутил туда, ну уж больно охото было посмотреть на возможности языка)

Roman
27.12.2016
23:43:46
По моим приккидкам просто включение regexp с самым простейшим матчингом замедляет чтение строк в 5 раз

У меня написан парсер логов который из 1 большого файла делает 256 маленьких :)

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