Мерль
Вот это любопытно, имхо 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
странно что такой язык, на котором можно писать все, еще не стал топовым
нет. не странно. у Go есть особенности. он не везде хорош
Alexei
заместо рельс с рубями его тоже больно использовать )))
Sander
кто что пишет на go?
Alexei
радиус-сервер, dhcp-сервер, всякие прочие сервисы с REST
Sander
понятн
Morran
кто что пишет на go?
Либу для rpi и приемопередатчика sx1278
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 для логирования того, кто спам шлет и реагирования на это
Daniel
кто что пишет на go?
https://www.slideshare.net/DanielPodolsky/presentations
ainu
https://www.slideshare.net/DanielPodolsky/presentations
А можешь линк на конкретную презентацию или две?
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
"10krps - это примерно 20k updates per second". Неплохо
Это какая то особая математика?
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
А вообще есть gulp который подобное вроде умеет
Никита
Есть gulp, но я буду писать своё😊
Gaiaz
А вообще есть gulp который подобное вроде умеет
gulp умеет, но он все оборачивает в gulp стримы и имеет кучу плагинов, которые я честно говоря не знаю как работают. Плагины в большинстве расчитаны на работу с css и js, обрабатывают их в потоках. А мне-то bash нужен) но вообще можно на gulp, но проще просто на JS + PromiseAPI
Никита
ну, стандартная беда😊 хочешь лютый кастом и супер ручное управление - делай сам.
Slava
Напишешь, напиши пожалуйста!))
есть вот такая ерунда https://github.com/ejholmes/walk
Anonymous
Здравствуйте, поясните , чем go concurrency отличается от multiprocessing??
Slava
тем что в го всё выполняется в одном процессе?
Slava
а в multiprocessing - наверное в разных
Anonymous
Я вот не могу вкурить, как это. В multiprocessing создается потоки , 1 поток берет файл и заливает на один сервер,2 поток заливает на 2 сервер. А когда яп поддерживает только concurrency там всего один поток , и каждой нитью делать отправку файла на нужный сервер???(это я про модель golang)
Daniel
а?
Daniel
коллеги, что вы такое мусолите?
Anonymous
multithreading может быть? там потоки создаются
Нет вроде multiprocessing, как в питоне, создается процесс и в нем потоки, нет?
Slava
вот на этом и основана конкуретность, всё делается в цикле, отдал байтики, ждёшь пока они отправятся, в это время в этом треде запускается другой зелёный поточек
Slava
https://habrahabr.ru/post/40275/
Slava
Нет вроде multiprocessing, как в питоне, создается процесс и в нем потоки, нет?
вот посмотрите про nodejs, https://www.slideshare.net/yurabogdanov/nodejs-8223169 в го всё примерно так же, за исключением что го раскидывает горутины по тредам ещё, а nodejs только в одном треде работает (за исключением операций с fs итд)
Nurik
Я советую почитать вот этот туториал. После него многое прояснится. И не обращайте внимание на JAVA в заголовке, там вообще кода нет практически. http://tutorials.jenkov.com/java-concurrency/index.html
Nurik
Там про модели concurrency
Anonymous
вот посмотрите про nodejs, https://www.slideshare.net/yurabogdanov/nodejs-8223169 в го всё примерно так же, за исключением что го раскидывает горутины по тредам ещё, а nodejs только в одном треде работает (за исключением операций с fs итд)
Спасибо, потом посмотрю у меня этот сервис забанен провайдером. Получается в go можно сделать несколько независимых тредов, которые будут выполнять каждый свою работу?
Daniel
а?!
Daniel
в go есть тредпул, на котором выполняются все горутины
Anonymous
а?!
О?
Nurik
О?
https://www.youtube.com/watch?v=f6kdp27TYZs
Daniel
вот прям выделенный тред сделать способа штатного нет, да и не нужен
Slava
го сам оперирует тредами (в большинстве случаев)
Anonymous
вот прям выделенный тред сделать способа штатного нет, да и не нужен
Без разницы что там будет, главное чтобы было выполнение разных задач одновременно, например взять файлы из 2 разных директорий и отправить на 2 разных сервера одновременно
Daniel
1. у go есть тредпул. так что даже блокирующие операции выполняются одновременно
Daniel
2. именно "отправить на сервер" в любом случае выполняться будет параллельно - go утилизирует асинхронный сетовой ввод-вывод
Daniel
пожалуй