"PHP" / Говнокод #27100 Ссылка на оригинал

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
  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  <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="47203528323707343028213369283520">[email protected]</a>
 * @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 MAPTbIwKA, (Updated )

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

  • В любом коде на "PHP" всегда масса полезных классов.
    Ответить
                • Да ладно тебе, у них в куике свой 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 выглядит как извращение) или вообще оба (пи-ту-пи).
                          Ответить
                            • Вроде да. А, ты думал поверх 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-ках и реализован, лол.
                                        Ответить
                                          • Ага, ну вот, я ж помню, как когда-то давно на сях с этим ебался. Всё забылось, а попаболь перенеслась через года.
                                            Ответить
                                        • > В смысле «чуть ли»

                                          Всмысле я туда какие-то полузахардкоженные строки кидал и парсил чуть ли не strstr'ом, не заморачиваясь с настоящей либой для хмл. Благо почти всё константное.
                                          Ответить
                                              • даже не знаю, что хуже

                                                я как-то парсил XML на сишке, пися спортивного интереса ради плагин к фару для одного нашего говносервиса. Я помню, что была какая-то либа.. чуть ли не libxml.. причем там был не dom, а sax вроде
                                                Ответить
                                                • именно по этому я за то, чтобы сетевые протоколы предоставляли тебе .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?
                      Ответить
                        • > первый запрос по TCP кидать

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

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

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

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

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


    8