Куча говна / Говнокод #26590 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
import ballerina/auth;
import ballerina/config;
import ballerina/http;
import ballerina/log;

auth:InboundBasicAuthProvider basicAuthProvider = new;
http:BasicAuthHandler basicAuthHandler = new (basicAuthProvider);

listener http:Listener ep = new (9090, config = {
    auth: {
        authHandlers: [basicAuthHandler]
    },

    secureSocket: {
        keyStore: {
            path: config:getAsString("b7a.home") +
                  "/bre/security/ballerinaKeystore.p12",
            password: "ballerina"
        }
    }
});

@http:ServiceConfig {
    basePath: "/hello",
    auth: {
        scopes: ["scope1"]
    }
}

service echo on ep {

    @http:ResourceConfig {
        methods: ["GET"],
        path: "/sayHello",
        auth: {
            scopes: ["scope2"]
        }
    }

    resource function hello(http:Caller caller, http:Request req) {
        error? result = caller->respond("Hello, World!!!");
        if (result is error) {
            log:printError("Error in responding to caller", result);
        }
    }
}

Кто что думает про https://ballerina.io?

Запостил: Desktop Desktop, (Updated )

Комментарии (45) RSS

  • [quote]
    allerina brings the entire program execution process to the hands of the developer
    [/quote]

    хотелось бы без булщита в двух словах: зачем она нужна?

    Сервисы писать примерно в таком же стиле можно и на котлине, и даже на джве (чуть вербознее) и на тайпскрипте.

    Или фищка в том, что она структурная?

    >["GET"]
    почеиу литерал, а не енум?
    Ответить
    • Ну типа в стандартной блеватеке поддержка всяческих ништяков вроде Websockets и gRPC.
      Ответить
      • так и в typescript тоже много че есть

        новый язык -- большая цена, платить ее нужно только за очень крутые фишки кмк
        Ответить
        • > так и в typescript тоже много че есть
          - из коробки?

          Если для меня что ts, что какая-то балерина это новый язык, то зачем мне какое-то скриптоговно, транспилируемое в жопаскрипт?
          Ответить
          • да, в JS же это из коробки.

            TypeScript имеет значительно бОльшую юзербейс, и так как он статически типизирован -- он не скриптоговно


            ну не нраца тс -- возьми котлин
            Ответить
            • > да, в JS же это из коробки.
              - во-первых, тогда уже не в JS, а в Ноде, что уже как бы не стандартная библиотека. Во-вторых, даже в Ноде gRPC вроде ставится отдельным пакетом. Где же из коробки?

              > возьми котлин
              - чем Котлин, язык для погромирования на Андроиде, лучше языка, который спецом сделан для бэкенда, в данном контексте?
              Ответить
              • >- во-первых, тогда уже не в JS, а в Ноде,
                И в браузере тоже.

                >котлин, язык для погромирования на Андроиде,
                С чего это для андроида?
                На котлине пол Intellij Idea написана, и Android Studio, есть куча всего для сервер сайд
                https://kotlinlang.org/docs/reference/server-overview.html
                Вот эта хуйня на котлине написана https://www.jetbrains.com/ru-ru/space/


                Итого: в Балерине есть gRPC из коробки. Хорошо.
                А еще есть какие-то важные фичи?
                Ответить
                • Я думал, придёт кто-то, кто щупал это нинужно лично и мне расскажет 🙂

                  Фишка со скоупами авторизации/аутентификации есть в любом нормальном сервере?
                  Ответить
                  • Я не щупал:) Вообще ты не подумай, что я обсыраю что-то. Я правда хотел понять, а чем там фишка.

                    >In the config auth provider, scopes are mapped to users
                    Выходит что scope это как группа?

                    В Spring Security такое есть, например
                    Ответить
                    • Видимо, да. Разделение по правам.

                      А в Джанге есть такое? Ты же вроде её знаешь.
                      Ответить
                      • В джанге из коробки есть понятие пользователей и групп, и админка к ним. К группам можно привязывать permssions, и для вьюшки требовать какой-то permission.
                        https://docs.djangoproject.com/en/3.0/topics/auth/default/
                        Но в одну строчку пишется и проверка по группе тоже.

                        Но Django это Python, а Balerina, как я понял, все таки статически типизирована и под jvm, это может быть важно.

                        Вообще такое же есть в ASP.NET
                        https://docs.microsoft.com/ru-ru/aspnet/web-forms/overview/older-versions-security/roles/role-based-authorization-cs

                        Такое же есть прямо в самих джава сервлетах, но только с дурацуой HTTP аутентификацией, без формы. Так что обычно используют spring security, потому что там можно нормальные формы делать
                        Ответить
                        • А я правильно понимаю, что в той же Джанге из коробки нет OAuth2?
                          Ответить
                          • Нет, надо ставить. Но в джанге обычно довольно легко всё ставится.

                            Чтобы быть провайдером, нужно
                            https://django-oauth-toolkit.readthedocs.io/en/latest/install.html

                            А чтобы клиентом -- я как-то прикручивал аутентификацию через Google и FB через
                            https://github.com/python-social-auth/social-app-django

                            Под капотом там либа
                            https://python-social-auth.readthedocs.io/en/latest/backends/index.html
                            В ней овердохуя всего поддерживается, даже mail.ru вон:)

                            Система довольно модульная, в отличии от всяких пыхподелок там нигде не захардкожено как и что делать.

                            В Джанге принято ставить охулион пакетов, есть даже спец сайт
                            https://djangopackages.org/
                            Ответить
                              • значит, не смогли договориться о выборе шиферсюта
                                Браузер одни хочет, а сервер другие

                                Попробуй
                                $ openssl s_client -connect ХОСТ:ПОРТ

                                должно дать больше информации
                                Ответить
                                • ---
                                  no peer certificate available
                                  ---
                                  No client certificate CA names sent


                                  Походу, тестового серта нормального нет.

                                  А это ж вообще ок для своего АПИ ещё и OAuth провайдера прикручивать рядом?
                                  Ответить
                                  • Ну можно выдать самоподписанный, наверное.
                                    Браузер ругнется, но откроет.

                                    Для сравнения, вот как питушня выглядит для яндекса
                                    SSL-Session:
                                        Protocol  : TLSv1.3
                                        Cipher    : TLS_AES_256_GCM_SHA384

                                    Тут мы видим зацепку по TLSv1.3 со сьютом TLS_AES_256_GCM_SHA384


                                    Ок или нет зависит от твоих требований, наверное.
                                    Ты хочешь давать людям аутентифицироваться где-то их аккаунтом, созданным у тебя?
                                    Ответить
                                    • > Ты хочешь давать людям аутентифицироваться где-то их аккаунтом, созданным у тебя?
                                      - нет, просто проводить аутентификацию по access token. Это ок или гамнина?
                                      Ответить
                                      • Мне это кажется странным

                                        При этом

                                        Ballerina has built-in support for the following inbound authentication mechanisms whereas it is possible to add custom mechanisms:

                                        Basic authentication
                                        JWT authentication
                                        OAuth2 authentication
                                        LDAP authentication


                                        Я бы начал с basic. Если клиент идет по Https, то все равно инкто ничего не проснифит

                                        такая хуня работает
                                        https://ballerina.io/learn/by-example/secured-service-with-basic-auth.html
                                        ?
                                        Ответить
                                          • Я бы тогда оставил oauth на потом. Кажется что важнее научиться делать что-то крутое)
                                            Ответить
                                            • Ну, basic я могу сделать с любым серваком на 1-2-3.

                                              Но видишь, что в балерину немало так запихнули всяких ништяков. Если бы я делал какой-то более-менее серьёзный бэк, можно было даже посмотреть в её сторону.
                                              Ответить
                                              • Вижу, да.
                                                Но я не знаю хорошо-ли это иметь в языке, и не лучше-ли это иметь сторонними либами.

                                                А то вот в PHP тоже напихали "всё, что нужно для веба" с известными последствиями.

                                                С другой стороны, иногда лучше иметь что-то готовое в языке, чем восемь несовместимых либ версии 0.7a
                                                Ответить
                                                • А как, кстати, это по-нормальному делается с basic, если есть отдельно сайт и API?

                                                  Будет отдельное API для реги/логинов и отдельное API для бизнес-логики? И они будут коммуницировать через прости господи куки?
                                                  Ответить
          • чем он лучше свифта? у вас там нет вебсокетов?
            Ответить
            • Мы щас про бэкенд говорим, ты в курсе? Свифт на бэкенде это такая же маргинальщина, как и эта балерина.

              Наверное, есть какие-то 3rd party либы, я не в курсе.
              Ответить
      • зато в стандартном «PHP» есть поддержка шаблонизации! не надо ставить никакие библиотеки!
        Ответить
  • > Ballerina is an open source programming language and platform for cloud-era application programmers to easily write software that just works.

    заржал уже на «cloud-era»
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8