1. Python / Говнокод #26339

    +4

    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
    # coding: utf8
    
    import threading
    import requests
    
    banner = """
     ____________________________________________________
    |                                                    |
    | [--] Name: PyDoser                                 |
    |                                                    |
    | [--] Created by: @c3berman                         |
    |                                                    |
    | [--] Telegram channel: @detectent                  |
    |                                                    |
    | [--] Version: 1.0.6                                |
    |____________________________________________________|
    """
    
    print(banner)
    
    def dos():
     while True:
      requests.get("http://example.com")
      
    while True:
     threading.Thread(target=dos).start()

    Наткнулся на просторах "этих ваших интернетов" с следующей подписью:
    "DDoS инструмент, который позволит вам наказать обидчиков, либо протестировать конкурентов) Вам нужно в коде изменить example com -> на свой сайт для атаки. Скоро опубликую IP DDoS Tool)"

    Запостил: fatcat75, 10 Января 2020

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

    • Это может сработать, если у вас, например, Coffee Lake i7, и вы по 100Base-T подключены к машине с Celeron 333 за соседним столом, и на ней, под уравлением Windows 98, работает Apache 1.3 с веб-сайтом...
      Ответить
      • Да, желательно, чтобы на пути сигнала не было никаких маршрутизаторов, которые могут зависнуть от частых запросов.

        Хотя это может сработать и в более общих условиях, если сервер очень тормозной: слабый процессор или медленная база данных. «Медленная база данных» может означать, что запрос содержит 100500 джойнов, индексы отсутствуют и т. п.
        Ответить
        • маршрутизаторы станут "узким местом" кроме того.

          Про базу согласен.

          Есть такие сайты, которые лучше вообще не открывать: каждый запрос они обрабатывают по 30 секунд. Такой сайт можно положить с помощью браузера и кнопки "F5"
          Ответить
          • Самое смешное, что такие сайты бывают у банков, у интернет-магазинов, у госслужб. Ходишь по сайту и думаешь, как бы его случайно совсем не положить.
            Ответить
            • Да, бывает что студент написал сайт, и он работал быстро когда там было два тестовых пользователя. А потом там оказалось их десять тысяч, и всё
              Ответить
    • В сокращении «DDoS» первая буква «D» означает «distributed». Где тут «distributed»???
      Ответить
      • ну так много потоков же
        Ответить
      • Запустите на всех компьютерах в кабинете информатике и сверните - может, не заметят (для этого переименуйте файл в SystemCheck.py). Дома запустите на своем компе и на папином ноутбуке. Попросите запустить друга.
        Ответить
    • >PyDoser
      "Пидосер"
      Ответить
      • Погуглил. «pudo ser» с испанского переводится как «может быть», однако, на некоторых сайтах встречается опечатка «pydo ser». То ли диалектное написание (есть же всякие малораспространённые языки вроде каталанского, арагонского, галисийского, окситанского), то ли авторы малограмотные.
        Ответить
        • P.S. А бывают испанские падонки, каторые спициальна пишут с ашипками?
          Ответить
          • В Испании и, например, Перу могут немного отличаться языки
            Ответить
            • Там в основном разница в произношении (кубинцы, например, глотают «s» перед согласными и в конце слова, а также глотают «d» между гласными). А также бывают диалектные слова и выражения, которые в других регионах не употребляются. Ну как подъезд и парадная.

              Гораздо хуже внутри самой Испании: в Арагоне, в Валенсии, в Каталонии, в Астурии, в Галисии могут говорить не на кастильском испанском, а на местных языках, которые без переводчика житель Кастилии не поймёт.
              Ответить
          • Сомневаюсь, что у испанцев есть интернет. Я за всю жизнь не видел ни одного испанского сайта.
            Ответить
            • Я знаю usuarios.lycos.es — что-то вроде испанского аналога «Geocities». К сожалению, сейчас он не отвечает. Только из вебархива можно что-то вытащить.
              Ответить
        • А еще есть какой-то самопальный генератор "Аудионаркотиков" с "Хомячкабра" https://habr.com/en/post/62518/
          Ответить
          • > генератор "Аудионаркотиков"
            Я в детстве зарядил трехлитровую банку воды от Кашпировского, которого показывали по телевизору.
            Ответить
            • До сих пор за свет не платишь?
              Ответить
              • Недавно обновил себе счетчик (контролеры электросбыта заставили). Двухтарифный однофазный круглый.

                У него есть RS-485, по нему можно считать показания. Хз, что мне делать с этой информацией.
                Ответить
                • У всех новых счётчиков есть выход для автоматической передачи показаний. В реальности же я не слышал, чтобы его где-то использовали.
                  Ответить
                  • можно воткнуть туда матрешку или ардуинку, пусть получает показаения, передает на сервер, и оттуда автоматически постит в мой личный кабинет.

                    Будет конечно немного похоже на комбайн для завязывания шнурков
                    Ответить
        • > арагонского
          Показалось, «аргонианского».
          Ответить
        • Много арагонские сервы,
          Малость евросоюзные смерды.
          Много раб принимает свою участь,
          Малость лютеранин начинает работать лучше.


          Много мусульман заставляют работать в поле,
          Много лютеран дубинками гонят в неволю.
          Зачем прогоняем защитников ветхозаветных законов?
          Много лютеранин сгорит вместе со своим городом.
          Ответить
    • Забавно, что эта хуйня кроме того сожрет все доступные пиды и распидорасит систему. Гораздо более вероятно, нежели чем уложит цель. Ну только если там не php-cgi, конечно.
      Ответить
      • В случае винды сожрет TIDы
        Ответить
        • Кстати, тут два бесконечных цикла. Что это программа будет делать быстрее: отправлять запросы или создавать треды?
          Ответить
          • Забьёт всю память стеками тредов, а под отправку уже почти ничего не останется.
            Ответить
            • Какой багор )))

              Значит, всё-таки задачи нужно как-то планировать: ограничивать количество итераций или разбивать паузами.
              Ответить
              • Ну изначальной кучи таки хватит на что-то.
                Ответить
      • Берсерк-дудосер.
        Ответить
    • > Version: 1.0.6
      Тут, блять, всего 3 строчки. На что там можно было 6 версий просрать?
      Ответить
      • На баннер.
        Ответить
      • Скорее всего версий с 1.0.1 по 1.0.5 не существует. Это уже давно известный маркетинговый ход.
        Ответить
        • "Это уже моя третья книга. Вторую я решил не писать."

          Меня ещё забавляет, что чувак не осилил аргументы командной строки. Нужен другой URL? Иди и руками меняй, сука!
          Ответить
    • def dos():
          try:
              requests.get("http://example.com")
              dos()
          finally:
              dos()

      Починил.
      Ответить
      • denial of stack?
        Ответить
      • def dos():
            os.fork()
            requests.get(...)
            dos()
        Ответить
        • улучшим силу DDOSа:
          def dos():
              dos()
              dos()
              dos()
              fork()
              requests.get(...)
              dos()
              dos()
              dos()
          Ответить
        • >def dos():
          > os.fork()

          Лол, это типа сам себе сделал Deny of Service форк-бомбой?
          Ответить
          • Это автоматическая подстройка под возможности машины и сети.
            Ответить
            • Кстати, а ведь os.fork() в данном случае будет полезнее, чем threading.Thread(target=dos).start(), ибо пирфоманс последнего ограничен GIL. Так?
              Ответить
              • Если пифоманс ограничен IO, то тут эквопенисуально
                Ответить
                • Тупой ИГИЛ. Поэтому он и запрещен в роиссе.
                  Ответить
                • Чтение через requests - это считается IO? В чём смысл данного ограничения?
                  Ответить
                  • В том что любой запрос в реквестах блокирующий
                    Ответить
                  • 1. Да.
                    2. В том, что два потока не работают одновременно. Если первый завис на IO, то запускается второй. Одновременно не работают. Только по очереди. Во время остановки одного и запуска другого происходит полный happens before: ставятся заборы, и процессор флашит буфера. Все, что сделано в первом потоке, уже видно во втором. Потому вручную ничего синхронизировать не надо.
                    Ответить
                    • Почему второго потока должно ебать то, что происходит в первом? IO там, или полная загрузка проца, или работа с сетью.
                      Ответить
                      • Потому что куча у них общая. Что будет, если в первом потоке ты пишешь в память, а в другом ее читаешь?

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


                        IO происходит в нативном коде, и питоновую память он не тронет. А когда он ложится спать, он явно ставит забор
                        Ответить
                        • Зачем тогда нужен threading?
                          Ответить
                          • Чтобы проще писать синхронный код для работы с IO.

                            Многопоточность бывает для двух задач:
                            * Чтобы блокирующий синхронный код писать без лапши
                            * Чтобы заюзать все ядра

                            Для первой задачи threading ок. Для второй -- нет
                            Ответить
                            • Ну вообще это проблема конкретной реализации, вроде как. В следующих версиях или других реализациях треды могут оказаться полноценными...
                              Ответить
                              • Это проблема сипайтона, да.

                                Но так как в языке нет семантики для синронизации потоков, я хз как это можно избежаьть
                                Ответить
                                • Ну threading.Lock() и threading.Event() там таки есть.
                                  Ответить
                                  • Тогда весь код без них можно будет выкинуть на свалку
                                    Ответить
                                    • > выкинуть на свалку
                                      Ну можно сделать from __future__ import real_threads и только тогда включать труъ треды.
                                      Ответить
                            • Ещё раз, если я запущу 100 потоков, каждый записывает в свой файл 100Мб, это будет быстрее, чем в одном потоке последовательно писать 100 файлов?
                              Ответить
                              • С файлами скорее всего нет, а с сетью - да, и намного. Ибо сокеты в основном спят.
                                Ответить
                                • Ну и нахуй тогда треды нужны? И гость писал, что с requests тоже не поможет.
                                  Ответить
                                  • * Чтобы блокирующий синхронный код писать без лапши
                                    * Чтобы блокирующий синхронный код писать без лапши
                                    * Чтобы блокирующий синхронный код писать без лапши

                                    Перформнса ни какого, просто красота.

                                    > что с requests тоже не поможет
                                    Напротив: я написал, что requirests это io.
                                    Пока один спит на IO миллион лет, другой поток хуячит.
                                    Что не понятно?
                                    Ответить
                                    • Приведи реальный пример, я не понимаю.
                                      Ответить
                                      • > приведи реальный пример

                                        В шапке этого треда приведён же... HTTP запросы исполняются параллельно - пока один тред ждёт ответа от сети, другой может поделать что-то ещё.
                                        Ответить
                                      • > Приведи реальный пример
                                        for _ in range(100):
                                            requests.get('http://example.com')

                                        В результате выполнения этого кода на сервер example.com будут последовательно совершены 100 запросов, каждый из которых будет выполнен только после того, как завершится (клиент полностью получит и распарсит ответ) предыдущий.

                                        def getHuj():
                                            requests.get("http://example.com")
                                        for _ in range(100):
                                            threading.Thread(target=getHuj).start()
                                        time.sleep(10)  # чтобы программа не завершилась досрочно

                                        В результате выполнения этого кода на сервер example.com придут 100 параллельных, одновременных запросов (NB: вместо time.sleep() в конце надо сделать join() по всем тредам, но это лишнее усложнение реального примера).
                                        Ответить
                                    • > Напротив: я написал, что requirests это io.
                                      > Пока один спит на IO миллион лет, другой поток хуячит.

                                      Так чем мой пример с 100 файлами отличается? Это не спячка на IO? Не понимаю при чем тут IO. Обычный Sleep не подойдёт?
                                      Ответить
                                      • Просто файлы слишком быстрые. Там скорее всего и спячки не будет, в ядерный буфер хуйнёт да вернёт управление.

                                        Sleep должен прокатить за IO.
                                        Ответить
                                        • vanished
                                          Ответить
                                        • Почему тогда вы используете термин «IO», а не «поток спит»?
                                          Ответить
                                          • Потому что поток спит тогда, когда «упирается в IO». Это не мы придумали, это общеизвестный термин.
                                            Ответить
                                            • Не ну иногда он ещё спит на лочках, кондишенах и т.п. Но в питоне кроме I/O и явного sleep один хер нету причин для сна.
                                              Ответить
                                            • В приведённом мной примере про 100 файлов поток упирается в IO, и не спит. Не? Иначе почему пифомаса нет?
                                              (ну и Sleep ещё)
                                              Ответить
                                              • В приведённом тобой примере поток, скорее всего, будет упираться не в IO, а как раз в CPU. Потому что диски сейчас пошли быстрые и умные, со всякими там кэшами, и большую часть времени поток будет байты в буферах гонять и сисколлы дёргать.
                                                Справедливости ради, какое-то увеличение производительности, скорее всего, будет. Или не будет, если оверхед от переключения потоков (а это весьма тяжёлая вжопурация) перевесит.
                                                Ответить
                                                • Зависит еще от того, как ты пишешь. Ты можешь явно не синкать, и тогда оно будет писаться в память вообще быстро.

                                                  Ты можешь отключить буфер, и тогда оно будет писаться сразу на диск, и это будет медленее.

                                                  Наконец, ты можешь попросить ОС явно попросить диск зафлашить из его буфера (в ATA есть такие комманды) будет еще медленее.

                                                  Но если у тьебя рейд, то все зависит от того, какой у тебя рейд

                                                  А если у тебя SAN (с iscsi или фибра ченел) , то все зависит от

                                                  Короче, это админкины области и ебля, но в целом ты прав: писать на диск можно очень быстро
                                                  Ответить
                                  • Чтобы не городить асинхронную лапшу на ровном месте.
                                    Ответить
                                • Разница будет начиная с 10к соединений?
                                  Ответить
                      • Широко известно, что на одном ядре процессора в один момент времени может выполняться только одна инструкция из одного потока. Чтобы на компьютере мог работать охулион программ с охулиардом потоков, в реальном мире применяется так называемая «вытесняющая многозадачность»: операционная система составляет список всех потоков, запускает первый, ждёт N миллисекунд (это называется «квант времени»), останавливает первый, запускает второй, ждёт N миллисекунд, останавливает второй — и так далее (там ещё есть всякие приоритеты, прерывания, состояния потоков и прочая муть — но оно не нужно). В результате у пользователя создаётся впечатление, что все потоки работают «одновременно» — профит!
                        Теперь пусть есть два потока, A и B, и одноядерный процессор («GIL» в «Python» как раз его эмулирует: в один момент времени в пределах одного интерпретатора может работать только один поток, вне зависимости от количества ядер процессора). Запускается поток A. Этот поток посылает на example.com GET-запрос. Если он реализован блокирующим способом — потоку нужно дождаться, пока с сервера придёт ответ, то есть ничего не делать несколько десятков-сотен миллисекунд. В это время, пока поток A ничего не делает, ожидая ответ от сервера, включается поток B и может спокойно делать, что ему требуется. Таким образом, поток B получает дополнительные кванты времени, а поток A «упирается в IO».
                        Теперь представим, что поток A считает число «Пи» до триллионного знака. Все выделенные ему операционной системой N миллисекунд он будет гонять байтики в процессоре, и ждать не собирается. В результате поток B будет получать кванты времени только по очереди с A. На процессорах с несколькими ядрами в таком режиме работы будет загружено только одно ядро (из-за «GIL»).
                        Ответить
                        • vanished
                          Ответить
                        • Спасибо, понятно. Гость только с толку сбил своим «IO».
                          Получается отличие от JS в том, что в JS пока один «поток» не завершится, другой не сможет стартовать, а игил даёт по чуть-чуть времени по очереди.
                          Ответить
                          • Да, как и в «asyncio». Это называется «кооперативная многозадачность» — когда один поток отдаёт управление другим тогда, когда сам захочет.
                            И небольшая поправочка: время для потоков из «threading» даёт не «ИГИЛ», а операционная система. «GIL» лишь гарантирует, что в одном интерпретаторе «Python» одновременно будет выполняться только один поток, вне зависимости от количества ядер процессора.
                            Ответить
                            • А разве у сипайтона она кооперативная?
                              Разве не может ОС вытеснить один поток? Игил просто гарантирует, что второй поток сразу же остановится.
                              Ответить
                              • А, я попутал. В «asyncio» никаких тредов нет, именно поэтому я за это они в «gevent»/«eventlet»/etc есть, вернее, не треды, а гринтреды. И там уже классическая кооперативная многозадачность, в которой ОС не участвует.
                                В «threading» — обычные системные треды.
                                «GIL» — это, по сути, просто системный мьютекс. Чтобы тред из «threading» мог выполнять любой питоновский байткод (в пределах одного интерпретатора-процесса) — тред должен владеть этим мьютекстом.
                                Ответить
                                • Да, все так. Это системный мутекс, с помощью которого сипатон "стопает" все треды, кроме одного. По сути он просит шедулера операционки отъебаться от этих тредов

                                  Асинкыо это копро-ротивная многозадачность, потому написав там sleep() можно навеки усыпить весь свой процесс.

                                  А threading это сисемные слипы, многозадачность там вытесняющая, там можно спать.
                                  Ответить
                                  • -слипы
                                    +треды
                                    Ответить
                                  • О, вопрос к знатокам

                                    У вас есть комп без хардварного таймера
                                    Как там реализовать вытесняющую многозадачность?
                                    Ответить
                                    • Я не знаток, но могу предложить идею.

                                      На x86, например, можно поднять флаг трассировки, чтобы после каждой инструкции генерировалось прерывание.
                                      Ответить
                                      • Оче быстро будет работать! Но в теории юзабельно.
                                        Еще варианты?:)
                                        Ответить
                                        • Можно переключать задачи во время вызова функций ОС (но тогда это будет похоже на копропротивную многозадачность).

                                          Можно переключать задачи по прерываниям от разных устройств (возможно, придётся очень долго ждать).
                                          Ответить
                                          • Мне один древний программе расказывал, как под какой-то девайс типа спектура писал, и там было прерывание от модуля синхронизации развертки 50Hz или сколько там частота. Можно завязаться на такое вот
                                            Ответить
                                            • В играх такое прерывание использовали: перерисовывали картинку во время обратного хода луча, чтобы она обновлялась целиком, а не частями.
                                              Ответить
                                              • Там можно было и без прерывания спросить состояние луча через IO и сделать бизивейт (один хуй в ту пору все было однозадачное и без изменения частоты). Разумеется, если ты пишешь пошаговую стратегию, а не экшен

                                                А там у чуваков это был чуть ли не единственный хертбит, так сказать.
                                                Ответить
                                        • Можно модефекать кот, ставиш брякпоент через несколько инструкции, а потом восстанавливаешь.

                                          Правда придётся немного анлизировать код на наличие инструкций перехода.
                                          Ответить
                                          • Мумифицировать код при загрузке это интересно, но тогда можно сразу вставлять инструкцию переключения контекста.
                                            Ответить
                          • IO просто чуть ли не единственный пример того, зачем в сипайтоне могут быть нужны потоки
                            Ответить
                            • Приведи реальный второй пример, зачем в ципайтоне нужны потоки.
                              Ответить
                              • Чтобы изучать работу операционной системы.
                                Наплодил потоков, и смотришь с помощью procexp/windbg или ps/gdb какие есть потоки, какие стеки у них итд

                                Хотя устройство ОС я бы советовал изучать с помощью обычной сишечки, без прослоек
                                Ответить
                            • Угу.
                              Ответить
                          • Кстати, если ты хочешь оккупировать все ядрачистый изумру, то можешь использовать мультипроцессность

                            Процесс в прыщах едва-ли тяжелее потока, потому что в ядре разницы между потоками и процессами почти нет. Куча при форке копионрайтнется, так что даже память будет общая (пока ты туда чото не запишешь, тогда она скопируется, и видимо создастся новая страница и переключение станет чуть дороже тк будет трогаться TLB). Некоторые (старый апач например, постгря и постфикс) спокойно плодят кучу процессов и не паряца.


                            На винде все хуже, там у каждого процесса есть куча своих структур, и потоки рекомендуются.

                            У макх (ябло) вроде бы ситуация ближе к виндовой, там есть вроде бы отдельные потоки (но могу спизднуть)
                            Ответить
                        • >> Широко известно, что на одном ядре процессора в один момент времени может выполняться только одна инструкция из одного потока.

                          Почти. Уже на первом «Пентиуме» (P54) было два стула конвейера: «U-pipe» и «V-pipe». Могли одновременно исполняться две инструкции (одна проходила через «U-pipe», вторая — через «V-pipe»), если они не мешали друг другу, например, если они работали с разными регистрами, не задевая при этом флаги, не трогая EIP и не обращаясь к оперативке и к портам ввода-вывода. Там ещё какие-то ограничения были, «V-pipe» был неполноценным и умел исполнять не всё, поэтому распараллеливание инструкций было не таким частым событием.
                          Ответить
                          • Могли и с одним и тем же регистром работать, гуглить про Томасуло и его резерные станции)

                            Я бы изменил терминологию Госта: игил эмулирует не просто "один процессор" а то, что в СУБД называется "serialized access": то-есть все комманды выглядят так, словно бы они были выполнены СТРОГО последовательно

                            Ну либо надо говорить что он эмулирует один ОЧЕНЬ ПРОСТОЙ процессор БЕЗ параллельного выполнения
                            Ответить
                            • Вот, нашёл маленькую статью про два конвейера для старта поиска:
                              https://www.enlight.ru/faq3d/articles/61.htm
                              Ответить
                              • P.S. Некоторые кобенации мне показались странными. Как могут спариваться инструкции с побочным эффектом?
                                mov ecx,eax   / inc ecx       - будут спарены
                                shr ebx,4 / inc ebx - спарится
                                cmp eax,2 / ja @@label_bigger - спарится

                                Тут же вторая инструкция ожидает результата первой. Они объединяются в какую-то суперинструкцию?
                                Ответить
      • >>> def f():
        ...     try:
        ...             f()
        ...     except:
        ...             f()
        ...
        >>> f()
        Fatal Python error: Cannot recover from stack overflow.
        Current thread 0x000023f4 (most recent call first):
          File "<stdin>", line 3 in f
          File "<stdin>", line 3 in f
        ...

        После чего «python.exe» упал.
        Какой багор )))
        Ответить
        • В смысле упал? Exit code ненулевой - это правильно.
          Ответить
          • А, понил.
            Тогда нужно верхнеуровнево сделать try, тогда багор, да.
            Ответить
          • А, это винда своим окошком «прекращена работа…» напугала. На самом деле там «Unhandled exception at 0x00007FFHUJHUJHUJ (ucrtbase.dll) in python.exe: Fatal program exit requested.»
            Ответить
        • Я где-то кидал подобный пример для «PHP».
          Ответить
          • https://habrahabr.ru/company/mailru/blog/340242/
            Ответить
            • Именно поэтому я за «PHP».
              Ответить
              • Кстати, на «шаред хостингах» общий «апач» поднят? Можно таким образом дестабилизировать работу?
                Ответить
                • «Апач» — это абсолютно незащищённое говно. Его можно положить с одного калькулятора, например: https://en.wikipedia.org/wiki/Slowloris_(computer_security).
                  Ответить
                  • достаточно было ограничиь количество подключений с одного ипа, лол

                    а так напоминает синкуку конечно
                    Ответить
                    • и почему не ограничили?
                      Ответить
                      • потому что апач писался в 1996м году
                        в ту пору не думали, что будут такие мудаки

                        кстати, ограничить можно на уровне файрволла даже
                        Ответить
                        • наверняка шареды так и сделали?
                          Ответить
                          • Да, костыли, которые не дадут положить весь инстанс одному дебичу с зажатой F5, наверняка есть. Но крайнюю хрупкость «апача» этим не исправить — он так сделан.
                            Ответить
                          • шаред хостинги не нужны
                            Ответить
                  • Кстати, чтобы побыстрее исчерпать количество доступных соединений, на сервере нужно:
                    1. Увеличить интервал keep-alive, чтобы ненужные соединения висели как можно дольше.
                    2. Либо использовать технологию «Comet». Это не средство, которое рекламировала «тётя Ася», а вечно открытое соединение для питушни реального времени вроде мессенджеров:
                    https://ru.wikipedia.org/wiki/Comet_(программирование)

                    Если за «Апачем» много сайтов, которые используют первое и/или второе, положить их будет легче.
                    Ответить
            • > Основной баг как раз в вашем рнр коде, как вы сами и написали рекурсивный вызов, который и так очевиден, без анализа исходников.
              В комментах типичная идейная пыхомакака, которая уверена, что "РНР" на самом деле идеален, это все остальные ничиво нипанимают и не умеют правильно писать на "РНР".
              Ответить
        • >После чего «python.exe» упал
          >...     except:
          >...             f()


          Так у меня же finally было!
          except — неправильно.
          С finally программа будет работать ОЧЕНЬ долго и стабильно.
          Ответить
          • Не, тоже падает.
            Ответить
            • А вариант с форком?
              Ответить
              • А вариант с форком я не запускал, мне перезагружаться потом лень.
                Ответить
                • По-моему чтобы добиться вздрыжне-эффекта, нужно джва форка — один за другим.

                  Впрочем я когда-то (очень давно) умудрялся без перезагрузки прибивать эти процессы, когда был запущен невинный bat-файл
                  %0 | %0
                  Ответить
                  • Жалко, что «Ideone» не позволяет запускать скрипт из-под себя:
                    https://ideone.com/ge7FUw
                    Ответить
                  • Не так давно я ставил себе сборку «Скайрима» и столкнулся с интересным багром: штатно там запускается файл «TESV.exe», который запускает файл «SKSE.exe», который запускает файл «Skyrim.exe» (первый — простая обёртка-запускатор, второй — хуйня, которая расширяет скриптовый движок «Скайрима», третий — сам «Скайрим»). А вот при попытке запустить всё это добро из менеджера модов случился багор: «TESV.exe» запускал «SKSE.exe», а «SKSE.exe» запускал… «TESV.exe»! В результате на экране начала вылезать и тут же исчезать туева хуча консольных окошек (какой-то из этих бинарников оказался с «Subsystem: Console»), мгновенно срывавших фокус. К тому, ничего с файлами сделать было нельзя — мол, используются, неможно их удалять. Исправил путём применения крутой утилиты под названием «Unlocker», переименовав один из файлов в хуйню.
                    Ответить
                    • У скурима рабоспособных модов меньше 5%, а он еще и скриптоту пытается туда засунуть... Ну не долбоеб ли?

                      https://www.youtube.com/watch?v=YD_8pxjr70o

                      Вообще руснявая игровая ракота это просто невообразимый пиздец, вон там тытруба в предлагает посмотреть "даэдрическая броня на 1 уровне", а на самом деле какой-то малец советует кастовать файрболл в стену до 90 уровня а потом поллора обойти ради ингридиентов. А русня даже не жалуется на это.
                      Ответить
                  • > нужно 2 форка

                    Тут их бесконечно много, ну пока стека хватит и http запросы успешно исполняются.
                    Ответить
            • Питон — гавно.
              То ли дело жаба.

              https://ideone.com/fork/ZDal8g

              Это можно хоть на сервак деплоить.
              Ответить
              • А всё потому, что Жаба — нескриптовый язык.
                Ответить
              • Всё, где есть «StackOverflowException» или аналоги - гамно.
                Ответить
                • Именно поэтому я за «DOS». Стек не больше 64К, зато его можно растягивать неограниченно, затирая данные и код своей программы (потому что он растёт вниз).
                  Ответить
    • подудось мой CDN полностью
      Ответить
      • Потом не расплатишься, если это амазон какой-нибудь...
        Ответить
    • говнокод тот
      Ответить
    • Интересно, example.com ещё жив? А то ведь не все пользователи скрипта полезут пердолиться с конфигом...
      Ответить
      • Этот домен в RFC запретили использовать. Его специально зарезервировали для таких скриптов.
        Ответить
      • https://tools.ietf.org/html/rfc2606
        Ответить
        • А на example.com, оказывается, повесили тестовую страничку с таким содержимым:
          ________________________________________ ____________________________

          Example Domain

          This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.

          More information...

          ________________________________________ ____________________________

          Ссылка ведёт на https://www.iana.org/domains/reserved

          Раньше по адресу example.com вроде сайтов не было.

          Он ещё и ETag отправляет для отслеживания.
          Ответить
          • Т.е. он таки зареган?
            Ответить
            • Сам удивился.

              Domain Name: EXAMPLE.COM
              Registry Domain ID: 2336799_DOMAIN_COM-VRSN
              Registrar WHOIS Server: whois.iana.org
              Registrar URL: http://res-dom.iana.org
              Updated Date: 2019-08-14T07:04:41Z
              Creation Date: 1995-08-14T04:00:00Z
              Registry Expiry Date: 2020-08-13T04:00:00Z
              Registrar: RESERVED-Internet Assigned Numbers Authority
              Registrar IANA ID: 376
              Registrar Abuse Contact Email:
              Registrar Abuse Contact Phone:
              Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
              Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
              Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
              Name Server: A.IANA-SERVERS.NET
              Name Server: B.IANA-SERVERS.NET
              Ответить
              • > Registry Expiry Date: 2020-08-13T04:00:00Z
                Его еще и продлевать надо :))
                Ответить
                • А если не успеют, можно перекупить этот домен и поймать скрипт-киддис?
                  Ответить
          • Эта табличка всегда там выскакивала, лишнехромосомный.
            Ответить
        • у "example.com" top level domain же ".com"
          Ответить
          • Читаем RFC 2606. Там есть глава про домены второго уровня.

            3. Reserved Example Second Level Domain Names
            
               The Internet Assigned Numbers Authority (IANA) also currently has the
               following second level domain names reserved which can be used as
               examples.
            
                    example.com
                    example.net
                    example.org
            Ответить
    • Почему вы пиздите одновременно а потом одновременно молчите? Вы зерги?
      Ответить
    • https://risings0n.livejournal.com/67362.html
      это оъуегнно
      Ответить
      • Ничего охуенного тут нет, вот придёт фрезерофщик на работу пьяный, и потом пальцев нет => работы нет.
        Ответить
        • Именно поэтому я за «трезвость».
          Ответить
        • Мне больше понравилось "вкладывай заготовку только пинцетом"
          А он вкладывал, наверное, зубами, и сунул туда голову
          И теперь он тоже медведь.
          Ответить
    • while True:
       threading.Thread(target=dos).start()

      Сколько это выдержит комп?
      Ответить
      • 10150 всего получилось.

        Не понимаю, на что он там сожрал 85(!) гигов виртуальной памяти. Стеки вроде мелкие.
        Ответить
        • А, всё, 8 метров по дефолту на тред. Можно урезать через threading.stack_size().

          Но один фиг 10150. Видимо в айдишники упирается.
          Ответить
        • ulimit -u unlimited и sysctl kernel.threads-max тоже не помогают. Хм, во что же оно упирается...
          Ответить
        • Сука, сишный код тоже в эти 10к упирается.
          Ответить
        • > 85(!) гигов виртуальной памяти
          Совсем нефиг делать в выходные? :)
          Хотя, с NVMe питушнёй наверно не так долго ждать.
          Ответить
          • Дык она просто выделена. Ни оперативка ни своп не пострадают, пока в эти гигабайты никто не срёт.
            Ответить
            • «Reserved», но не «commited» (не помню точно терминологию)?

              То есть «commited» (реальный прирост свопа или заём из оперативки) будет после первого доступа?

              А зачем тогда при создании треда память резервируется, если не используется? Зачем? Зачем?
              Ответить
            • А, виртуальная же, понял. А рабочий питух сколько нажрал?
              Ответить
      • Да пока память не забьётся... Цей код обречён на провал, нужо бiло создати хотя бы пятьдесят потцiв, но шобы вони отправлялы тяжкие запросы.
        Ответить
    • Как низко вы опустились. >120 комментов под каким-то нерабочим говном на питоне...
      Ответить
    • Кто положил «Ideone»? То 503, то «System error».
      Ответить

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