Kirill
ну вот и понятно
Kirill
на их _облако_ я не смотрю, я смотрю на baremetal
Рубикон
А жирную ноду c2L не с первой попытки запустить возможно..
Kirill
взял developer service и доволен
Alexey
Я тоже только на bare пока смотрю
Рубикон
Оно лаголо суток двое назад .. и нет опции .. "по возможности запустить"
Kirill
а мне ок %)
Kirill
у меня лагов нет)
Nikita
на их _облако_ я не смотрю, я смотрю на baremetal
Ну мне нужна была именно облачная платформа. Типа количество серверов овер их мощность. Так просто задумана архитектура приложения, которое я думал попробовать смасштабировать за счет дешевых скейлевеев.
Nikita
За бэреметал ничего не могу сказать, но например можно перезагружать сервак и все. Я просто сделал ребут и больше не смог ничего сделать в панели, подключиться по ссш, пытался загрузиться через рекавери скрипты, бестолку
Kirill
Kirill
Рубикон
В амстердаме
Рубикон
А хз, там вообще все железо выкупили (глянь там в консоль сейчас)
Kirill
не всё, есть ещё немного) а в Париже C1 вполне доступен тем временем
Nikita
Еще у скейлвеев есть странное свойство беспричинно ломаться. Например подключаешь стораж и сделал ошибку в fstab, что очень легко, из-за устаревшей доки, например. И получишь геморой на 40 минут, чтобы починить
Рубикон
Там бекар машины возможен только при полном выключении
Nikita
Кстати да
Kirill
Рубикон
А потом надрачиаай тыкалку включения, пока железо освободиться
Kirill
Рубикон
А ещё у них ядра .. "свои, особенные" .. по логам обещают позволить сови накатывать .. когда-нибудь, ога
Kirill
тогда выяснилось, что у них сломался гипер с моей виртуалкой и тачка с бэкапами этого гипера
Nikita
Я вообще красноглазю с линуксом с шестого класса, серьезно, что делать когда что-то отвалилось я прекрасно знаю)
Nikita
Kirill
Kirill
и тишина ;D
Anton
http://devdocs.io/go/ можно ли это считать за документация к Го?
Anton
просто на офф сайте не нашел
Kirill
нет
Kirill
и как ты мог не найти https://godoc.org/-/go ?
Kirill
и https://golang.org/pkg/
Anton
golang doc загуглил
Nikita
я с 9 лет
интересно при каких обстоятельствах, у нас в школе на компы убунту поставили, мне стало интересно и мне препод по информатики вручул диск,
Anton
Kirill
Oleksii
Oleksii
Oleksii
Был бы кто-то у меня, кто меня раньше наставил на путь истинный)
Kirill
у меня изначально не было
Nikita
Вообще если стерпеть глючное управление скейлея, при хорошем терпении, наличии времени и полного понимая что ты делаешь, за такую цену, можно рили конфетку сдлать
Oleksii
Всегда нравилось такое, но видимо недостаточно. Перебивался геймингом до конца школы, а там уже взялся за голову.
Kirill
спустя годы познакомился с @demeliorator и понеслась
Kirill
Рубикон
Kirill
кстати, давно тут не было ссылки на grame: https://github.com/gramework/gramework
кто не смотрел, смотрите :)
Kirill
Oleksii
Oleksii
Уже вижу, соррян :)
Kirill
Kirill
Kirill
пушнул ещё линк на джирку, там ещё процесс не налажен, ибо opensource лицензию только выдали, но можно регаться и таски приносить)
Nikita
в основном - я
Я тут вынашиваю идею декларативного рест-фрейморвка, на основе того, что я накостылял для проекта, который сейчас сам поддерживаю.
Kirill
Nikita
а таки чем он отличается от gramework?)
Уклоном на бизнес логику. В чем суть. Как устроено рест-приложение.
1. Приходит рест запрос. Есть модель описывающая параметры рест-запроса.
2. Формируется "бизнес"-запрос из контроллера.
3. Дальше запрос передается какому-то сервису
4. Сервис включает себя репозитории, дто и т.п.
5. Формируется "ответ"
Мне хотелось бы решить задачу такого рода
Kirill
я вот пока идею не словил)
Nikita
я вот пока идею не словил)
Ну вот пока то, что у меня есть в одном проекте, где я экспериментирую (кстати, совсем не пет-проджект, но чувствую себя свободно в нем)
https://pastebin.com/n85sF8hK
Nikita
Суть в том, что мы декларативно описываем бизнес-логику и как и куда мы делегируем дальше
Nikita
Плюс это все должно быть легко тестируемо, все должно соединяться через DI контейнер
Kirill
ну вот смотрю я на скинутый код и не понимаю, зачем тут
1) mvc
2) ctrl.Auth, который bool, = false, хотя у bool дефолт - false
3) Init() методом вместо New()
4) поля типа route, method и т.д., которые должны быть приватными, являются публичными
потом непонятно, как ты предполагаешь матчить роуты
Kirill
O(n) на каждый запрос? O(log n) из-за wildcard?
Kirill
где n = количество роутов * на количество методов
Kirill
декларативка - хорошая штука, но нельзя забывать о производительности и простоте
Kirill
если что - я не агрюсь, так что без обид)
Nikita
ну вот смотрю я на скинутый код и не понимаю, зачем тут
1) mvc
2) ctrl.Auth, который bool, = false, хотя у bool дефолт - false
3) Init() методом вместо New()
4) поля типа route, method и т.д., которые должны быть приватными, являются публичными
потом непонятно, как ты предполагаешь матчить роуты
Я пока еще все очень прибизительно делаю, пруфофконцепт, но суть примерно такая.
1. Я вообще хотел из пакета http прикрутить, там что-то временно не сложилось.
2. Не очевидно же. Человек смотрит в декларацию контроллера и видит, что он работает без auth
3. Как бы мы декларативно создаем тип и методы в нем, где в рантайме уже выяснияем, как с ним работать.
4. Там в тоге создается более высокоровневый тип в рантайме, в котором есть только хендлер http
Kirill
Я пока еще все очень прибизительно делаю, пруфофконцепт, но суть примерно такая.
1. Я вообще хотел из пакета http прикрутить, там что-то временно не сложилось.
2. Не очевидно же. Человек смотрит в декларацию контроллера и видит, что он работает без auth
3. Как бы мы декларативно создаем тип и методы в нем, где в рантайме уже выяснияем, как с ним работать.
4. Там в тоге создается более высокоровневый тип в рантайме, в котором есть только хендлер http
1. wut? как это связано?
2. спорно. и так, и так, видно, что работает без auth. потом, auth ты вряд ли сделаешь достаточно универсальным и безопасным, чтобы скрывать его работу от программиста
3. и? это не ответ на мой вопрос)
4. так а матчинг как у тебя работает?
Kirill
в грейме с матчингом всё понятно - radix tree и всё
Nikita
1. wut? как это связано?
2. спорно. и так, и так, видно, что работает без auth. потом, auth ты вряд ли сделаешь достаточно универсальным и безопасным, чтобы скрывать его работу от программиста
3. и? это не ответ на мой вопрос)
4. так а матчинг как у тебя работает?
1. Ну будет не mvc.POST, а http.POST, понятно же
2. Там частный случай, каждый контроллер в приложении может иметь собственные параметры, а его обработка декларативная описана последовательностями middleware
3. Ответ. Конструктор New() просто создаем экземляр типа. Дальше фреймворк получает его информацию. Дальше смотрит, как тип сконструировать, дальше какие зависимости передать, и так по цепочке
4. Внутри лежить labstack/echo 😀
Kirill
1. Ну будет не mvc.POST, а http.POST, понятно же
2. Там частный случай, каждый контроллер в приложении может иметь собственные параметры, а его обработка декларативная описана последовательностями middleware
3. Ответ. Конструктор New() просто создаем экземляр типа. Дальше фреймворк получает его информацию. Дальше смотрит, как тип сконструировать, дальше какие зависимости передать, и так по цепочке
4. Внутри лежить labstack/echo 😀
1. да не сам пакет, а mvc в целом
2. вот и возвращаемся обратно к первому вопросу. зачем контроллеры?
3. не ответ. да, New() создаёт экземпляр типа. тебе его и так, и так нужно создавать. зачем делать login{}, а потом где-то l.Init(), если можно сделать сразу NewLogin()?
4. сожалею %)
Kirill
Nikita
1. да не сам пакет, а mvc в целом
2. вот и возвращаемся обратно к первому вопросу. зачем контроллеры?
3. не ответ. да, New() создаёт экземпляр типа. тебе его и так, и так нужно создавать. зачем делать login{}, а потом где-то l.Init(), если можно сделать сразу NewLogin()?
4. сожалею %)
1. Та понятно мвц очковое название, это так, эволюционировало, что я думал, как правильно было бы организовать мвц-фреймворк.
2. В них же вся суть. В контроллере мы декларативно описываем, как обработать бизнес-логику, ради чего же все и задумывалось.
3. New() нужен, чтобы скрыть тип на уровне пакета. Пакет нам открывает доступ только к конструктору типа и его интерфейсу.
4. Бывало и хуже. :)
Kirill
1. Та понятно мвц очковое название, это так, эволюционировало, что я думал, как правильно было бы организовать мвц-фреймворк.
2. В них же вся суть. В контроллере мы декларативно описываем, как обработать бизнес-логику, ради чего же все и задумывалось.
3. New() нужен, чтобы скрыть тип на уровне пакета. Пакет нам открывает доступ только к конструктору типа и его интерфейсу.
4. Бывало и хуже. :)
1. ок, давай другими словами. я спрашиваю - нахера ты тащишь в гошку mvc? зачем в гошке чужая раковая опухоль?
2. суть в декларативщине, но ты по привычке привязал к контроллерам
3. да. мы делаем интерфейс, убираем оттуда Init() и ждём инициализированный инстанс
4. https://github.com/smallnest/go-web-framework-benchmark#basic-test он вот просто среди прочей серой массы, даже не свалился в говно и не начал бороться за первенство
Zloy-Dobry
В чяти адово завоняло пыхапэ