
Nikolay
10.12.2017
19:43:30
но я вообще про другое немного, с чисто функциональными языками до сих пор есть масса нерешенных проблем

Anton
10.12.2017
19:47:52
всем привет! перехожу потихоньку на Go с Node.js, столкнулся с такой штукой, что нужен scheduler, штука, которая будет ставить задания в очередь или выполнять какой-то набор действий по расписанию, например, отправить всем email в 12:00 каждый день. на ноде использовали agenda, может посоветуете что-нибудь? нашёл такую штуку https://github.com/ajvb/kala, но они вроде как в альфе и говорят не использовать в продакшене

Pawel
10.12.2017
19:48:24

Google

Nikolay
10.12.2017
19:49:00

Anton
10.12.2017
19:51:02

Nikolay
10.12.2017
19:51:34


Pawel
10.12.2017
19:53:14
Необязательные аргументы в функциях Go
? Хабрахабр: Go
В Go нет синтаксиса для определения необязательных аргументов в функциях, поэтому приходится использовать обходные пути. Я знаю 2:
Передавать структуру, содержащую все необязательные аргументы в полях:
funcStructOpts(Opts{p1: 1, p2: 2, p8: 8, p9: 9, p10: 10})
Способ предложенный Робом Пайком с использованием функциональных аргументов:
funcWithOpts(WithP1(1), WithP2(2), WithP8(8), WithP9(9), WithP10(10))
Второй способ в принципе делает тоже самое, но с синтаксическим сахаром. Мне не давала покоя мысль, а сколько же стоит этот сахар, кому ещё интересно прошу под кат.
Читать далее ➡ https://shbr.xyz/hh344352
не надо тащить в Го костыли из других языков. Всякого рода перегрузки функции, вариацией которых являются необязательные аргументы, не просто так не включили в язык.
Приведи пожалуйста пример из практики, в котром без необязательных аргументов никуда

Maxim
10.12.2017
19:54:00

Anton
10.12.2017
19:55:02

Nikolay
10.12.2017
19:55:09
ну в идеале, конечно, да. особенно, если вся архитектура на микросервисах и всё такое, узконаправленные процессы, отвечающие за небольшой набор функционала.
да не в идеале, а вообще. Меня всегда очень удивляли люди, которые в го, ноде, питоне, чем угодно пытаются периодические задачи запихать в сам код


Anton
10.12.2017
19:58:23
да не в идеале, а вообще. Меня всегда очень удивляли люди, которые в го, ноде, питоне, чем угодно пытаются периодические задачи запихать в сам код
ну хорошо, допустим, мы пока не ставим задачу написать супер-распределённый netflix, у которого есть отдельное приложение, рассылающее емэйлы. мне тогда нужно писать логику в свой монолит, что если он запущен с такими-то command-line аргументами, то просто дёрнуть какие-то данные из базы, отправить емэйл и завершиться?

Nikolay
10.12.2017
19:59:13

Pawel
10.12.2017
20:00:53

Anton
10.12.2017
20:01:56

Nikolay
10.12.2017
20:02:55

Google

Nikolay
10.12.2017
20:03:09
это не должно быть захардкожено в монолит
особенно если есть вариант, что завтра ты, скажем, переключишься с sendmail на postfix или еще и уведомления в телеграм добавишь

Anton
10.12.2017
20:07:36
это не должно быть захардкожено в монолит
звучит заманчиво, конечно. просто, например, в agenda есть вариант писать все поставленные в очередь задания в базу. тогда удобно сделать выгрузку из базы и показать, например, в админском интерфейсе все задачи, столько-то зафейленных, столько-то успешных. а тут получается нужно писать свой функционал поверх cron: запустился с такими-то параметрами, выполнил функцию такую-то, записал в базу результат выполнения


Nikolay
10.12.2017
20:08:12
звучит заманчиво, конечно. просто, например, в agenda есть вариант писать все поставленные в очередь задания в базу. тогда удобно сделать выгрузку из базы и показать, например, в админском интерфейсе все задачи, столько-то зафейленных, столько-то успешных. а тут получается нужно писать свой функционал поверх cron: запустился с такими-то параметрами, выполнил функцию такую-то, записал в базу результат выполнения
то, что ты описываешь, делают специализированные инструменты типа jenkins + jjb
язык тут вообще ни при чем
звучит заманчиво, конечно. просто, например, в agenda есть вариант писать все поставленные в очередь задания в базу. тогда удобно сделать выгрузку из базы и показать, например, в админском интерфейсе все задачи, столько-то зафейленных, столько-то успешных. а тут получается нужно писать свой функционал поверх cron: запустился с такими-то параметрами, выполнил функцию такую-то, записал в базу результат выполнения
вот такая штука есть, но не знаю, насколько работоспособно https://github.com/jasonlvhit/gocron
вот что-то более свежее https://github.com/rakanalh/scheduler


Anton
10.12.2017
20:18:51
он правда периодические только умеет, насколько я понял

Nikolay
10.12.2017
20:41:01
https://habrahabr.ru/post/344356/
я так понимаю, это перевод той самой статьи?

nezorflame
10.12.2017
21:50:58

Artem
11.12.2017
03:03:09
Приветствую, ищу прогера для комбайна под linkedin.
Необходим авторегистратор + рассыльщик. Работа через браузер с подменой отпечатков. Бюджет до 1 к $. Писать в лс

?
11.12.2017
03:11:13

Alexander
11.12.2017
03:12:26

Mike
11.12.2017
03:12:54

?
11.12.2017
03:13:41

Mike
11.12.2017
03:14:02
Если сравнивать с си и питоном — то и находить легче.
Но взять любой другой статически типизированный язык, форсящий DRY, или тем более Rust, который отловит даже гонки данных на этапе компиляции, и как-то уже сомнительное преимущество

Alexander
11.12.2017
03:14:05

Google

Mike
11.12.2017
03:16:04
Да какая разница что там на компе разработчика?)
В нейтив то собирается

?
11.12.2017
03:16:20
+

Mike
11.12.2017
03:16:31
600 мегабайт на SSD жалко?

Alexander
11.12.2017
03:17:32

Mike
11.12.2017
03:17:56
Ну я думаю что быстрее, чем рефлексия во все поля)
И непрямые вызовы везде и всюду
по крайней мере не медленнее
А язык значительно более выразительный

Alexander
11.12.2017
03:18:40
тем более kotlin из коробки много чего не умеет, надо либы юзать) большинство это java
но пока не вижу как альтернативу для перехода в плане серверной разработки

Mike
11.12.2017
03:19:53
Без либ да, грустно :(

Alexander
11.12.2017
03:21:10
Без либ да, грустно :(
кстати по рефлекции они таи не планируют разве это дело ускорять (+ двже так это рвет php)

Mike
11.12.2017
03:25:00

Alexander
11.12.2017
03:26:01

Mike
11.12.2017
03:26:16
Поясни)

Alexander
11.12.2017
03:28:07
Поясни)
Эта штука которую юзают чтобы полодить яп... но у него есть свой вес, генерация лишнего барахла и тд

Mike
11.12.2017
03:28:34

Google

?
11.12.2017
03:28:35
слишком большой и медленный)

Alexander
11.12.2017
03:28:46
т.е. не везде после этого скомпиленные программы будут одинаково быстро работать)

Mike
11.12.2017
03:29:14
Какие-то суеверия
LLVM по качеству кода генерации ноздря в ноздрю с GCC
И я напомню, что гнушный компилятор Go значительно более быстрый код генерирует, чем дефолтный компилятор Go

Alexander
11.12.2017
03:30:45

Mike
11.12.2017
03:31:05

Admin
ERROR: S client not available

Mike
11.12.2017
03:31:50
Уж в плане кодогенерации то тем более
Скорость? Да, LLVM медленнее компилирует

Alexander
11.12.2017
03:32:01
можно кстати сравнить) backend на go и на kotlin

?
11.12.2017
03:32:37
и на php 7.2
)))

Alexander
11.12.2017
03:32:46
но надо чтобы кто-то на котлин накидал
))

Mike
11.12.2017
03:32:53
Пыха вроде вообще интерпретируемая до сих пор, не?
Или там завезли JIT?

?
11.12.2017
03:33:09

Mike
11.12.2017
03:33:20
Ну тогда можно даже не сравнивать х)

Google

Mike
11.12.2017
03:33:48
Да и string-based typing так себе сказывается на перформансе

Alexander
11.12.2017
03:33:55
go vs kotlin, base http server?
вот такое я бы посмотрел

?
11.12.2017
03:34:36
тож интересно)

Alexander
11.12.2017
03:35:15
но kotlin не особо пробовал, только правил иногда на Android (по работе)
но что-то чувствую что будет примерно как Java, так как на базе либ

Mike
11.12.2017
03:36:01

?
11.12.2017
03:36:05
Не совсем уверен, но go выиграет )

Mike
11.12.2017
03:36:09
Могу на расте накидать х)

Alexander
11.12.2017
03:36:26
)))

Mike
11.12.2017
03:36:30
Ща найду

?
11.12.2017
03:36:39
Тогда Rust vs Go

Alexander
11.12.2017
03:37:16
просто про котлин в backend слышал только про интеграцию в Java проект
Кстати Swift забыли)))

Mike
11.12.2017
03:38:05
https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=plaintext

?
11.12.2017
03:38:10

Alexander
11.12.2017
03:38:12
Но я его пробовал в backend, давно, и он го не рвал

Mike
11.12.2017
03:38:13
Java со скалой уделывают Go
Так что котлин тоже будет