@gogolang

Страница 1005 из 1630
Mykyta
16.04.2018
07:28:03
Нет. Его писал преимущественно я, и я не патчил стандартную библиотеку. В паре мест пришлось применить нестандартные workaround, но все снаружи. Даже hijack не пришлось делать на коннекте.
Круто, раз ты участвовал в разработке такого сервиса. А можешь рассказать, как он устроен? Как устроено хранение файлов, перекодирование, их раздача клиентам?

Yura
16.04.2018
07:28:32
я так понимаю го нормально с этим справляется и оно того стоит?
нарезнные куски агрессивно кэшируются на диск, и нарезаются один раз для любогоколичества клиентов.

btw, @mcsseifer - Тимур Нурутдинов - тоже принимал активное участие.

Круто, раз ты участвовал в разработке такого сервиса. А можешь рассказать, как он устроен? Как устроено хранение файлов, перекодирование, их раздача клиентам?
я в основном раздатчиком занимался. Из того, что знаю: перекодирование - ffmpeg, очереди заданий - свои на перле, стороджа - самописные, но частично мигрируют на Ceph с erasure coding (производительности хватает из-за жирных кэширующих раздатчиков, а не-убиваемость у Ceph отличная).

Google
Igor
16.04.2018
07:37:41
Спасибо за ответ!

Marlik
16.04.2018
08:37:52
А 'мой круг' мэйлру принадлежит? А то у них сайт лёг.

Pawel
16.04.2018
08:38:35
Grigoriy
16.04.2018
08:39:41
А 'мой круг' мэйлру принадлежит? А то у них сайт лёг.
моймир мейлу, а мойкруг тематических медиа

Daniel
16.04.2018
08:43:34
в Го всё синхронно кроме select-а
это с нашей стороны. а внутри там event loop вокруг сетевого IO

Alexander
16.04.2018
08:46:16
Daniel
16.04.2018
08:46:47
там, где можно, он асинхронный

Alexander
16.04.2018
08:46:51
Или какая-то эмуляция асинхронности через нативные треды?

Daniel
16.04.2018
08:47:07
коллега, о чем вы спрашиваете?

со стороны программера там всегда синхронно, кроме селекта с дефолтом

а вот со стороны рантайма возможны варианты

в том же линуксе файловое IO не до конца асинхронное. go тут ничего сделать не может

Google
Daniel
16.04.2018
08:49:51
еще там, конечно, есть динамическое увеличение тред-пула в случае, если все имеющиеся треды оказались заблокированы на синхронных операциях в ядре

Alexander
16.04.2018
08:50:47
а вот со стороны рантайма возможны варианты
Так вот я и спрашиваю, мало ли, может го через нативные треды эмулирует асинхронность.

Daniel
16.04.2018
08:51:08
кому оно эмулирует асинхронность и зачем?

Alexander
16.04.2018
08:58:31
Вот представьте, что вам надо написать раздатчик файлов. Допустим у вас сотни коннектов, которым надо выкачать по гигу с вашего диска. Разве вы будете заниматься чтением с диска в тех же тредах, где вы обрабатываете коннекты?

Daniel
16.04.2018
09:00:23
почему нет?

Max
16.04.2018
09:00:38
Господа, подскажите пожалуйста, есть ли как-то либы для авто-генерации какой-нибудь +- веб морды для апи, чтобы не лазить постоянно во всякие курлы, постмены?

Daniel
16.04.2018
09:01:00
а?!

Yura
16.04.2018
09:01:25
Так вот я и спрашиваю, мало ли, может го через нативные треды эмулирует асинхронность.
Весь сетевой ввод-вывод асинхронный. Не блокирующие сисколы тредов не порождают, а выполняются в потоке шедулера горутин. Блокирующий сискол, если отработал быстро, тоже не порождает тред. Если же заблокировался на долго, то рантайм создает новый тред и уносит на него шедулер: заблокированная горутина остаётся на этом треде, другие горутины выполняются на новом.

Max
16.04.2018
09:02:03
Swagger?
она же вроде только документацию собирает? а я бы хотел именно функционал, или я ошибаюсь?

bebebe
16.04.2018
09:02:21
если сделать все прямо, то твой бинарник, который провайдит rest api - по хттп сможет отдавать тот rest который поддерживает

Daniel
16.04.2018
09:02:35
это не совсем так

Daniel
16.04.2018
09:02:55
Вызывать методы в нем можно
но ответ будет - not implemented yet :)

Max
16.04.2018
09:02:58
Daniel
16.04.2018
09:03:26
сваггеру надо переопределить обработчики, и тогда будет примерно то, что запросил топикстартер

bebebe
16.04.2018
09:03:43
при помощи swagger.io можно захостить прототип своего rest'a и на нем дергать примеры, или сделать fake-api, что бы тестировать клиента

ichi4Ø4
16.04.2018
09:04:31
Про го не могу сказать, но на дотнет проекте сваггер дёргал вполне реальные методы

Google
Daniel
16.04.2018
09:05:03
коллега

Max
16.04.2018
09:05:25
спасибо всем, пойду в доке пороюсь, может чего получится

Daniel
16.04.2018
09:05:37
если вы написали реальные методы - сваггер будет их дергать, только надо объяснить ему, какие куда

а если не написали - дефолтный обработчик возвращает "not implemented"

Max
16.04.2018
09:06:33
если вы написали реальные методы - сваггер будет их дергать, только надо объяснить ему, какие куда
а как можно найти рабочий варинт реализации? как правильно загуглить

Daniel
16.04.2018
09:07:00
сегодня день вопросов, которые я не понимаю :(

у вас есть описание вашего api в формате swagger

вы генерите из него серверный код (с помощью go-swagger)

получается нечто, что можно собрать и запустить, и даже все endpoints будут обрабатываться

но

что делать-то по запросу на каждый endpoint вам еще предстоит написать, правда?

ichi4Ø4
16.04.2018
09:09:34
У вопрошающего апи написан уже, как я понял

bebebe
16.04.2018
09:09:39
что делать-то по запросу на каждый endpoint вам еще предстоит написать, правда?
кстати, по сваггеру есто автогенерация "клиентской" части, можно даже язык выбрать

Max
16.04.2018
09:10:09
что делать-то по запросу на каждый endpoint вам еще предстоит написать, правда?
ну большая часть уже написана, просто сейчас их слишком много, и я начинаю путаться в запросах, вот и думал как то визуализировать для удобства это, но обарачивать в хтмл в ручную, если чесно лень

Daniel
16.04.2018
09:10:40
вот для этой задачи сваггер подходит идеально

Max
16.04.2018
09:11:18
вот для этой задачи сваггер подходит идеально
отлично, спасибо еще раз за объяснения

Marlik
16.04.2018
10:04:14
Всё, блокировка началась.

Zaur
16.04.2018
10:04:26
Чё там

Куда сваливает группа

Куда идти

Google
Zaur
16.04.2018
10:04:48
Где наш лидер

Artem
16.04.2018
10:06:05
Зачем сваливать?

John
16.04.2018
10:06:18
или tox ...

Zver
16.04.2018
10:06:51
Куда сваливает группа
Я в одноклассниках.

Daniel
16.04.2018
10:08:31
Куда сваливает группа
коллеги, ну уж мы-то справимся блокировку обойти, нет?

Marlik
16.04.2018
10:09:52
В Телеграм Девелоперс паника)))) Это вот эти @botoid

Andrey
16.04.2018
10:10:29
у меня ещё работает

Daniel
16.04.2018
10:10:30
у них понятно паника, у них же клиенты не айтишники

Мерлин
16.04.2018
10:10:34
Куда сваливает группа
Телеграм уже час как заблокирован, а вы паникуете Мы уже на глубине дарквеба, господа, поздравляю с успешным погружением, кингстоны открыты и моторы наши быстры.

Александр
16.04.2018
10:11:01
да пиздец

Zaur
16.04.2018
10:11:16
Ураа *подбросил шляпу*

Vyacheslav
16.04.2018
10:11:16
хех, у меня друг за сегодня уже некисло поднял денег на настройке dante :D

Daniel
16.04.2018
10:11:26
да пиздец
нет, еще не пиздец. убей вождя!

Andrey
16.04.2018
10:11:51
что за призывчики :)

Vyacheslav
16.04.2018
10:11:52


Daniel
16.04.2018
10:12:05
все, коллеги, сворачиваем

Александр
16.04.2018
10:12:18
у меня вопрос по сваггеру

Daniel
16.04.2018
10:12:29
не верю

Александр
16.04.2018
10:12:38
можно ли как то переопределить то что написано в swagger.yaml "на лету"?

Google
Daniel
16.04.2018
10:12:54
а?!

зачем?!

Александр
16.04.2018
10:13:02
дело в том что там в файле прописано под наш альфасервер basePath

Daniel
16.04.2018
10:13:10
ну

Александр
16.04.2018
10:13:10
а в приложении надо генерировать по другому

я сижу уже мозги сломал

Daniel
16.04.2018
10:13:19
ну и генерируй по-другому

Александр
16.04.2018
10:13:36
так блин

генерация через swagger generate server

Daniel
16.04.2018
10:13:47
и?!

Александр
16.04.2018
10:13:58
оно шьет из конфига basePath везде

Daniel
16.04.2018
10:14:11
если у вас разные бинарники для теста и прода - пусть это будет отражено в сорцах

Александр
16.04.2018
10:14:23
нене

смотри

на альфе у нас развернут swagger view или как он там называется

что бы это корректно работал, ему в swagger.yaml прописали basePath с учетом nginx

host.com/basepath/controller

при это приложенька живет за nginx и должно слушать просто host.com/controller

Alexander
16.04.2018
10:17:29
а там разные basePath для test/stage/prod нельзя юзать ?

Daniel
16.04.2018
10:17:37
так пропишите basePath /controller? и научите nginx изымать /basepath из URI

и вся история

Александр
16.04.2018
10:18:11
костыль блин

Страница 1005 из 1630