Мерль
Вот это любопытно, имхо
https://github.com/golang/go/issues/5465
Мерль
3,5 года, 500к строк Go. Часть 1 / Хабрахабр
https://m.habrahabr.ru/post/325326/
Sander
Всем привет
Sander
смотрю в golang можно для mobile писать апликухи,
кто пробовал и что можете сказать? как хорошо подходит этот язык писать app on mobile?
🏳️ Phil
Плохо
Sander
понятно
🏳️ Phil
Ну т.е. можно. И иногда может даже это смысл имеет. Но неудобно
Sander
может потому что еще пакетов недостаточно или среды
Sander
да
🏳️ Phil
ну так скажем, много почему
Sander
странно что такой язык, на котором можно писать все,
еще не стал топовым
🏳️ Phil
Alexei
заместо рельс с рубями его тоже больно использовать )))
Sander
кто что пишет на go?
Alexei
радиус-сервер, dhcp-сервер, всякие прочие сервисы с REST
Sander
понятн
ainu
кто что пишет на go?
Писал:
— Соединение с весами на точке приема металлолома для импорта в CRM систему. Весы через COM порт
— Разбор многомебайтового XML из SOAP. PHP 10 минут думал чтобы разобрать, golang секунд 10.
— Прокси+система для выгрузки и загрузки данных из PHP сайта в 1C.
— Програчный прокси сервер для замеров появления первого-последнего байтов. Использовалась между PHP и 1С, чтобы доказать что 1Сники долго отдают данные.
— Очищалку watermark-ов на примерно 20000 картинок.
— Рассылалку Chrome Web Push-ей.
— Программу для управления Powerpoint презентацией с мобильника
— Распознавалку на нейронных сетях. Просто баловался, до конца не довёл.
— Рендер 3D файлов в png через рейтрейсинг. До конца не довёл.
— Систему рассылки уведомлений через сокеты. Не дописал, взял готовую centrifugo (тоже на go).
Пишу:
— Базу данных с целями, схожими с тем, что умеет Elasticsearch. То есть поиск по фасетам, аггрегации. Работает быстрее эластика, на три порядка быстрее. В процессе написания.
— CRM (xRM) система поверх вышеописанной базы данных. Под капотом JSON REST API на основе gramework, и фронтенд на React+Redux.
ainu
В планах (буквально эта-следующая неделя):
— Cli утилита для клиентской оптимизации сайтов под Google Page Speed insight
— ПРокси для sendmail для логирования того, кто спам шлет и реагирования на это
ainu
Daniel
https://www.slideshare.net/DanielPodolsky/rtb-dsp-go-buzzwords
Daniel
https://www.slideshare.net/DanielPodolsky/go-52466724
ainu
Спасибо.
ainu
"10krps - это примерно 20k updates per second".
Неплохо
Anonymous
ainu
Это из презентации. 20к записей в базу в секунду как я понял. Две записи на запрос.
Daniel
да, там надо было заблокировать средства, а потом или списать, или освободить
Daniel
насколько я помню
ainu
Народ, а как вы время ответа сервера меряете при нагрузочном тестрировании?
ainu
Apache JMeter слишком оптимистичен, у меня микросекунды
ainu
ainu
Вообще, может что посоветуете, для альтернативы ab (ApacheBench) с гуем и графиками. Цель - отслеживать время ответа при нагрузке в 1-50 rps.
Oleg
обычно советуют wrk
Oleg
ток хз как там с гуем и графиками
ainu
Спасибо
ainu
Нашёл https://github.com/giltene/wrk2 это лучше чем wrk?
Oleg
думаю да
Oleg
его тоже упоминали и рекомендовали девопсы :)
Gaiaz
Ребята, привет. Сразу скажу - с го только на начальном этапе изучения. Нахожусь в поиске гибкого решения для deploy task runner.
Хотелось бы простенькое решение (в идеале 1 файлик), которое выполнит такое:
[task1, task2, task3] // 3 async tasks
task4
[task5, task6]
task7
и т.д. То есть вниз таски выполняются синхронно, а в списке - асинхронно.
Таски, наверное, в виде функций, которые заускают bash команды и чтото выводят в консоль. Если ошибка - то все прерывается.
Вот как без обработки ошибок такое сделать - разобрался, через WaitGroup, но как завершить работу, выведя ошибку не понял.
Подскажите, может библиотека какая-нибудь есть, которая позволит это все в чистом виде описывать. Пробовал искать в репозитории по ключевым словам tasks, pipeline - не нашел подходящего.
Daniel
ansible
Gaiaz
ansible
спасибо смотрю, пока что там только ymlы вижу
Daniel
ну так там только они и есть
Daniel
или надо обязательно на го этот таск раннер?
Gaiaz
ну так там только они и есть
мне надо выполнять код, т.е. иногда генерить какие-то хэшики, высчитывать количесво релизов, не уверен что просто конфиги подойдут.
В коде это все максимально очевидно. Сейчас нравится deployer (phar архив, пхп т.е.) но там нет асинхронности.
По синтаксису на языке программирования на javascript promise api хорошо такое описывается.
ainu
ainu
А вообще есть gulp который подобное вроде умеет
Никита
Есть gulp, но я буду писать своё😊
Gaiaz
А вообще есть gulp который подобное вроде умеет
gulp умеет, но он все оборачивает в gulp стримы и имеет кучу плагинов, которые я честно говоря не знаю как работают. Плагины в большинстве расчитаны на работу с css и js, обрабатывают их в потоках. А мне-то bash нужен) но вообще можно на gulp, но проще просто на JS + PromiseAPI
Gaiaz
Никита
ну, стандартная беда😊
хочешь лютый кастом и супер ручное управление - делай сам.
Anonymous
Здравствуйте, поясните , чем go concurrency отличается от multiprocessing??
Slava
тем что в го всё выполняется в одном процессе?
Slava
а в multiprocessing - наверное в разных
Anonymous
Я вот не могу вкурить, как это. В multiprocessing создается потоки , 1 поток берет файл и заливает на один сервер,2 поток заливает на 2 сервер. А когда яп поддерживает только concurrency там всего один поток , и каждой нитью делать отправку файла на нужный сервер???(это я про модель golang)
Daniel
а?
Daniel
коллеги, что вы такое мусолите?
Slava
Slava
Slava
вот на этом и основана конкуретность, всё делается в цикле, отдал байтики, ждёшь пока они отправятся, в это время в этом треде запускается другой зелёный поточек
Slava
Slava
https://habrahabr.ru/post/40275/
Nurik
Я советую почитать вот этот туториал. После него многое прояснится. И не обращайте внимание на JAVA в заголовке, там вообще кода нет практически.
http://tutorials.jenkov.com/java-concurrency/index.html
Nurik
Там про модели concurrency
Anonymous
Daniel
а?!
Daniel
в go есть тредпул, на котором выполняются все горутины
Anonymous
Nurik
О?
https://www.youtube.com/watch?v=f6kdp27TYZs
🏳️ Phil
Daniel
вот прям выделенный тред сделать способа штатного нет, да и не нужен
Slava
го сам оперирует тредами (в большинстве случаев)
Daniel
1. у go есть тредпул. так что даже блокирующие операции выполняются одновременно
Daniel
2. именно "отправить на сервер" в любом случае выполняться будет параллельно - go утилизирует асинхронный сетовой ввод-вывод
Nikolay
Daniel
пожалуй