1. PHP / Говнокод #27100

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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
    47. 47
    48. 48
    49. 49
    50. 50
    <?php declare(strict_types=1);
    /**
     * This file is part of Swoft.
     *
     * @link     https://swoft.org
     * @document https://swoft.org/docs
     * @contact  [email protected]
     * @license  https://github.com/swoft-cloud/swoft/blob/master/LICENSE
     */
    
    namespace Database;
    
    use Swoft;
    use Swoft\SwoftComponent;
    
    /**
     * Class AutoLoader
     *
     * @since 2.0
     */
    class AutoLoader extends SwoftComponent
    {
        /**
         * Class constructor.
         */
        public function __construct()
        {
            parent::__construct();
    
            Swoft::setAlias('@database', dirname(__DIR__) . '/database');
        }
    
        /**
         * @return array
         */
        public function getPrefixDirs(): array
        {
            return [
                __NAMESPACE__ => __DIR__,
            ];
        }
    
        /**
         * @return array
         */
        public function metadata(): array
        {
            return [];
        }
    }

    https://github.com/swoft-cloud/swoft/blob/master/database/AutoLoader.php

    Запостил: MAPTbIwKA, 10 Ноября 2020

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

    • В любом коде на "PHP" всегда масса полезных классов.
      Ответить
    • swoft эти типа такой Вонни от swift?
      Ответить
    • Именно поэтому «Конардо» против «ООП».
      Ответить
      • не, ну процыедурный подход там тоже есть
        https://github.com/swoft-cloud/swoft/blob/master/app/Helper/Functions.php
        хотя есть и ООПшный
        https://github.com/swoft-cloud/swoft/blob/master/app/Common/MyBean.php
        Ответить
    • Что не так? Типа пародия на жабу?
      Ответить
    • Хрю.
      Ответить
      • Гав.
        Ответить
        • Мяу. Ня.
          Ответить
          • Куик!
            Ответить
            • Кок.
              Ответить
            • HTTP/3
              Ответить
              • TCP нинужен?
                Ответить
                • TP нунинен
                  Ответить
                  • Да ладно тебе, у них в куике свой flow control и error recovery.

                    Просто чуваков заебало, что в HTTP/1.0 на каждом запросе три хендшейка последовательно идут (TCP затем TLS затем HTTP). В HTTP/1.1 и HTTP/2 пытались это как-то уменьшить, но из-за TCP всё равно работало через жопу и последовательно. Вот теперь решили полностью снуля запилить, поклеив все три слоя в один.
                    Ответить
                    • и все оборудование, делающее NAT, уже конечно готово его понимать, правда?
                      Ответить
                      • А зачем тебе держать сайт за оборудованием с NAT?
                        Ответить
                      • А куда оно денется? Тебе же не надо нат пробивать в этом случае, ты просто с серваком общаешься и ответы получаешь.
                        Ответить
                        • NATу нужно как-то отличать коннекшены питухов, если это не полный нат по IP. Для этого он должен понимать порты транспортного протокола же
                          Ответить
                          • Что-то я вобще перестал тебя понимать. В клиент-серверном применени UDP точно такая же четвёрка портов-хостов как и в TCP, какие проблемы то? Keep-alive пакеты у тебя в любом случае будут, так что NAT не должен охуеть и дропнуть ассоциацию.

                            Проблемы с пробиванием NAT начинаются когда у тебя сервер за NAT (что для HTTP выглядит как извращение) или вообще оба (пи-ту-пи).
                            Ответить
                            • HTTP/3 работает поверх UDP?
                              Ответить
                              • Вроде да. А, ты думал поверх IP? Ну это было бы точно нигде не взлетело. Многие провайдеры такие пакеты вообще дропают.
                                Ответить
                                • Я в душе не ебу как оно работает

                                  Если поверх UDP (то есть там есть UDP порт) то разумеется взлетит, и пройдет через любой нат

                                  Если же нет, то нужна спец поддержка от NATа, как для некоторых протоколов типа GRE

                                  >Многие провайдеры такие пакеты вообще дропают.
                                  Если у провайдера нету NAT, то может и не дропать.
                                  Если есть, то да: может оказаться, что ты в жопе. Я поел говна во времена PPTP с этим.

                                  смотри на все модули со словом nat
                                  https://elixir.bootlin.com/linux/v4.1/source/net/ipv4/netfilter

                                  А еще провайдеры грохают фрагментированные пакеты, от чего я отсосал с IPSEC на w7, кажется я про это ныл уже, могу еще раз поныть
                                  Ответить
                                  • Ну у меня (негативный) опыт был с сотовым провайдером. А у них всегда нат. Без инкапсуляции вообще ничего кроме UDP, TCP и ICMP не проходило. С инкапсуляцией в UDP дропали ESP после хендшейка. Послал этих пидоров нахуй и сменил опсоса. Даже в поддержку звонить не стал.
                                    Ответить
                                    • Я не пользуюсь сотовыми провайдерами, но через NAT обычного прова вполне может не проходить ничего кроме udp и tcp, угу.

                                      ESP работает поверх IP вроде и тоже может не пройти.

                                      > С инкапсуляцией в UDP дропали ESP после хендшейка

                                      DPI ломался?) а с AH работало?

                                      У меня отсос был в том, что IPSEC фрагментил пакеты.
                                      Современный IPSEC умеет не фрагментить, но это умеют только w10 и storngswan (они работают) а w7 не умеет.

                                      Но вообще NAT (кроме полного ната по адресу -- фул кон или как он там) это преступление. Он портит добрую половину функицональности сети, и требует костыли типа сокс, upnp итд
                                      Ответить
                                      • > upnp

                                        Блядь, вот тоже гениальный протокол. Я как-то реализовывал его в своей туле, там чуть ли не XML приходится формировать чтобы роутер найти и сраный порт попросить прокинуть.

                                        З.Ы. Хотя протокол, конечно, совсем не ради проброса портов создавался. Он больше о телевизорах и прочей мультимедии.
                                        Ответить
                                        • Возможно, я не копал. utorrent умеет попросить моего роутера открыть порт, и это работает.

                                          В моем децтве не было никаких upnp, и потому на роутере подымался socks (dante socks, как ща помню) и ты настраивал его в клиенте, например чтобы ходить в "активном" режиме на FTP сервера за натом

                                          >телевизорах
                                          у него вообще главный смысл же в том, что бы мультикастом найти говно, в том числе и вроутер?
                                          Ответить
                                          • > у него вообще главный смысл же в том, что бы мультикастом найти говно, в том числе и вроутер?
                                            Это «SSDP». Забавная штука, в своё время через него проводили задорные амплифицированные (D)DoS-атаки на сотни гигабит.
                                            Ответить
                                            • upnp на ssdp сделан?

                                              А что, мультикасты ходили через Internet?

                                              AFAIK, послать мультикаст по интернету обычно нельзя: Можно попросить роутера вступить в группу через IGMP, и далее он может стримать тебе мультикаст получая данные от источника через PIM (там еще есть место, куда всё стекается, с поэтичным названием "рандеву поинт")
                                              Ответить
                                        • В смысле «чуть ли»? ЕМНИП, он именно на XML-ках и реализован, лол.
                                          Ответить
                                          • точно)
                                            http://upnp.org/resources/documents/UPnP_UDA_tutorial_July2014.pdf

                                            есть еще бунжур (от ябла) и ws-discovery (это а-ля SOAP на основе XML от MS в качестве замены бродкаста и браузинга сетей в NEtBIOS)
                                            Ответить
                                            • Ага, ну вот, я ж помню, как когда-то давно на сях с этим ебался. Всё забылось, а попаболь перенеслась через года.
                                              Ответить
                                          • > В смысле «чуть ли»

                                            Всмысле я туда какие-то полузахардкоженные строки кидал и парсил чуть ли не strstr'ом, не заморачиваясь с настоящей либой для хмл. Благо почти всё константное.
                                            Ответить
                                            • Поклейка танчиков XMLчиков.
                                              Ответить
                                              • Кто XML руками не парсил - тот в цирке не смеётся.
                                                Ответить
                                                • Вот кто не парсил — тот как раз и смеётся.
                                                  Ответить
                                            • >xml
                                              >парсил чуть ли не strstr'ом,
                                              как PHPшник
                                              Ответить
                                              • У пхпшника регулярки есть.
                                                Ответить
                                                • даже не знаю, что хуже

                                                  я как-то парсил XML на сишке, пися спортивного интереса ради плагин к фару для одного нашего говносервиса. Я помню, что была какая-то либа.. чуть ли не libxml.. причем там был не dom, а sax вроде
                                                  Ответить
                                                • В левой руке strstr(), в правой руке strtok()…
                                                  Ответить
                                                  • именно по этому я за то, чтобы сетевые протоколы предоставляли тебе .h файл со структурой
                                                    Ответить
                                                    • Царь?
                                                      Ответить
                                                      • Царь пишет в сокет массив байт, учитывая байт ордер и выравнивания кмк
                                                        Ответить
                                                        • На amd64 всегда одинаковый байтордер и выравнивания. А другие архитектуры царь не признавал.
                                                          Ответить
                                                          • а вдруг на другом конце сокета другая архитектура? спарк, например?
                                                            и вообще: сетевой байтордер не обязан совпадать с хостовым


                                                            Вообще если без шуток, то для статически типизированных языков сетевой протокол должен предоставлять тул для генерации структуры, чтобы я его заполнил, и потек

                                                            А когда я вручную собираю XML или JSON подглядывая в доку, и боясь неверно назвать таг или имя поля --это пидарство
                                                            Ответить
                                                            • Кстати, читал как-то, что в первых версиях юникс не было SDK с хедерами, а была бумажная документация, и чуваки вручную определяли сигнатуры функций (вроде они не обязательны в сях) и структуры описывали..

                                                              Но уже к середине 70-х везде были .h файлы

                                                              Прошло сорок пять лет, и вот мои коллеги-жабоебы пишут на котлине

                                                              govnoJson["drisnja"] = "22"

                                                              а с другой стороны пишут

                                                              govnoJson["drisnja"].getInt()

                                                              Человечество деградирует
                                                              Ответить
                            • В чем проблема с сервером за DNAT, кстати? Если это не FTP и не P2P протоколы, а HTTP, то должно работать же?

                              У меня в молодости стояли всякие сервера за натом на роутере (мы называли их "проброски") и это был не фул кон нат, а нат по порту, и всё вроде работало..
                              Ответить
                              • В том, что те же опсосы не дают своим DNAT'ом рулить, лол.

                                Ну а если у тебя белая айпишка и DNAT на своём железе - вай нот, всё норм должно быть.
                                Ответить
                                • Если у тебя есть свой сервер, то логично купить к нему публичный айпишник, лол) Разумеется, за провайдеровским DNATом ты далеко не уедешь:)

                                  Но даже со своим локальным натом (да и с провайдеровским фул кон) можно остосать с FTP, если его не настроить.

                                  Выглядит это так:

                                  Пусть все запросы на 1.2.3.4 перебрасываются на сервер 192.168.1.10. Там крутится FTP.

                                  К нему подключается питух, и хочет отправить файл.

                                  FTP сервер видит подключение с 192.168.1.1, и открывает порт 1234 и сообщает клиенту: "я жду тебя на 192.168.10:1234", и клиент ожидаемо идет нахуй.

                                  Лечится сообщением FTP его публичного адреса (pasv_address или как-то так)
                                  Ответить
                      • Мне вот другое интересно - как они будут поддерживать совместимость. Кидать первый запрос по tcp а дальше переключаться? Или какой-нибудь костыль с реестром http/3 сайтов как для hsts?
                        Ответить
                        • https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Alt-Svc же. HTTP/3 — это не про безопасность, поэтому вполне можно первый запрос по TCP кидать и кэшировать этот самый Alt-Svc.
                          Ответить
                          • > первый запрос по TCP кидать

                            А ведь первый опыт - самый важный для посетителя сайта.
                            Ответить
                          • > это не про безопасность

                            Ну кстати частично и про безопасность, там же TLS интегрирован если верить вики.
                            Ответить
                            • Неправильно выразился: HTTP/3 не является необходимым для безопасности. В случае HTTP/1, делать даже первый запрос по HTTP нельзя — злые хакеры спать мешают замитмят. А здесь у нас первый запрос всё равно будет идти по HTTPS, так что безопасность не страдает. Ну, пока очередных дыр не нашли, как это обычно в уебе бывает.
                              Ответить
                • хуй знает, я просто поддаюсь условным ассоциативным рефлексам
                  Ответить
          • И тебе ня, сестрёнка!
            Ответить
    • Мои фанаты часто спрашивают меня: с чего ты взял, что мы твои фанаты? кто ты вообще блядь такой?
      Ответить

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