1. Куча / Говнокод #26800

    0

    1. 1
    Продолжаем форс Перла

    Нечто запредельно пиздатое в перле — это книга Ларри, написанная с охуенным чувством юмора и предельно чистым и умным языком, как будто сам стиль книги и то, с каким Ларри мы через этот текст знакомимся — является одним из образцов применения философии перла на практике. Роман Кашицин, царствие ему небесное, ценил; есть ещё среди нас ценители?

    Запостил: vistefan, 10 Июля 2020

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

    • MAKAKA, перелогинься.
      Ответить
    • Это которая с верблюдом? Да, она вроде самая важная про перл.
      Еще нужно читать книжку с собачкой: PBP. По ней работает Perl::critic.
      Есть еще кукбук и эвенсд, но это опциональнее.

      А разве Роман за перл?
      Ответить
      • Роман наверное не за перл, я имею ввиду что он тонкий ценитель хорошего стиля, и способен получить истинное удовольствие от хороших красивых вещей в сфере технического — не даром он емаксит.

        Так вплетать юмор в технически точное и полезное повествование — это надо быть Ларри.
        Ответить
    • Перл — говно.
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • Страшно подумать, что заставило человека взять такой ник
      https://metacpan.org/author/CHOCOLATE
      Ответить
      • А ник Кгози норм?
        Ответить
        • Доктор Кгози Летлейп является офтальмологом и здравоохранения лидера из Южной Африки
          Ответить
      • Шоколад не виноват
        Ответить
    • Суппортера попросили написать скрипт, который сохранял бы переменные окружения пользователя, но вырезал бы при этом его личные данные (например, его ник).

      Получившаяся на перле кросс-платформенная программа генерирует файл при вызове без аргументов, и считывает и распечатывает его при вызове с аргументами.

      Без учета бойлерплейта программа занимает 10 строк. Какой перл!
      #!/usr/bin/perl
      use strict;
      use warnings FATAL => 'all';
      
      use Fcntl;
      use SDBM_File;
      tie my %db, 'SDBM_File', 'file.db', O_RDWR | O_CREAT, 0666 or die "Can't open file";
      my $nick = getlogin;
      if (@ARGV) {
          printf "%s: %s\n", $_, $db{$_} for keys %db;
      }
      else {
          $db{$_} = $ENV{$_} for grep {$ENV{$_} !~ /$nick/i} keys %ENV;
      }
      Ответить
    • Христоматийного говна вам. Из такого потом вырос пых. Это год так 1998-й
      #!/usr/bin/perl
      
      #full path for the guestbook file
      $file="/home/httpd/html/guestbook.html";
      
      require "cgi-lib.pl";
      &ReadParse;
      
      #translate all the linefeeds into <BR>s for nice formatting
      $in{'comments'} =~ s/\n/<BR>\n/g;
      
      #open the guestbook file and append data to the end of it
      open(GUESTBOOK,">>$file");
      
      #print the information
      print GUESTBOOK "\n<UL>\n";
      print GUESTBOOK $in{'comments'};
      print GUESTBOOK "\n<B>$in{'name'}<BR>\n";
      print GUESTBOOK "$in{'location'}</B><BR>\n";
      close GUESTBOOK;
      Ответить
      • Да чот поздновато для такого говна, не?
        Ответить
        • Так это копролит времен царя гороха. Разумеется, за такой код бьют с вертушки по ебалу вот уже лет двадцать как
          Ответить
          • Так ты ж сказал что 98-й примерно. Поздновато говорю.
            Ответить
            • А, думаешь в 98 уже так не писали?
              Писали. Я все эти "guestbook.cgi" как раз в 99-м где-то и наблюдал.

              CGI появился-то в apache году так в 1996-м
              Ответить
              • А. Ну просто самописная гостевая книга в виде простыни, вся хуйня. Если учесть что в 2000-м уже Яндекс.Народ появился.
                Ответить
                • Наличие народру (кажется к я он не имел тогда отношения) никак не мешало крутым вебмастерам делать свои сайты web 1.0. Хостинг агава поддерживал запуск cgi.
                  Ответить
              • Понятно, что на пыхе и щас так пишут
                Ответить
                • В пхп была бы mysql.
                  Тут говно везде: начиная с неиспользования модуля CGI, и заканчивая тем, что результат вместе с версткой срут в .html (чтоб верстку было никак не поменять) да еще и без flock: чтобы одновременный заход на сайт двух петухов мог сделать интересные гонки.
                  К счастью, количество пользователей такого сайта обычно лежит в отрезке [0,1]
                  Ответить
                  • > количество пользователей такого сайта обычно лежит в отрезке [0,1]

                    Этот код идеален для своих задач.
                    Ответить
                • Опровергаю. Пыхомакаки слишком ленивые для того, чтобы генерировать и сохранять HTML-файл.
                  Ответить
              • но чтобы ещё и не рендерить из какого-нибудь массива строк в оформление для комментов в цикле, а блять тупо аппендить в html-файл — это прям мамонт.
                Ответить
              • Где взял? html-файл небось потом в iframe вставлялся?
                Ответить
                • показать все, что скрытоvanished
                  Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • А я тут когда-то показывал свой пруф-оф-концепт литературного чата.
                    Ответить
                    • показать все, что скрытоvanished
                      Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • Писала Юлия?
                        Ответить
                      • >> http://www.atbcode.com/code/t5pm36h2-136017-down

                        Капча на скачивание, всплывающее окно по дефолту блокируется браузером. Нужно добавлять исключение и снова вводить капчу. Какой багор )))
                        Ответить
                      • Все переменные уже с баксами. Это хорошо. Легче будет переводить на «PHP».
                        Ответить
                        • ну-ну
                          foreach (@pairs) {
                            ($name, $value) = split(/=/, $_);
                            $value =~ tr/+/ /;
                            $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
                            $value = &filterhtml($value);
                            &setvaluetoform($name, $value); 
                            if ($name eq "userpassword") {&check_password;}
                          }
                          Ответить
                          • foreach ($pairs as $_) {
                              list($name, $value) = explode('=', $_);
                              $value = strtr($value,'+',' ');
                              $value = preg_replace_callback('/%([a-fA-F0-9][a-fA-F0-9])/eg', function($x){return pack("C", hex($x[1]));}, $value);
                              $value = filterhtml($value);
                              setvaluetoform($name, $value); 
                              if ($name === "userpassword") {check_password();}
                            }
                            Ответить
                            • вербозненько, но по сути верно, да
                              Ответить
                              • Если бы не вызов функции pack, можно было бы использовать preg_replace и шаблон подстановки типа '$1'. А из-за того, что шаблон подстановки неконстантный, пришлось использовать preg_replace_callback и лямбду, которая в «PHP» пишется довольно длинно.
                                Ответить
                      • https://web.archive.org/web/20001007075022/http://cards.ru/
                        (это по рекламе если перейти)
                        Такой домен проебали (((
                        Ответить
                      • А как путешествовать в прошлое, когда браузеры не будут корректно отображать сайты 2000 годов?
                        Ответить
                        • А с чего это они вдруг перестанут?
                          Ответить
                        • Ну будет на waybackmachine рендерилка, допустим, если внезапно html, css и js запретят по конституции без возможности обжаловать обратную совместимость.
                          Ответить
                        • Анлайкли. Всё таки там HTML был очень тупой, кажется что рендерилку HTML 3.2 может написать студент
                          Ответить
                          • В HTML 3.2 было много элементов, которые не вошли в новые версии HTML. Например, векторная графика и математические формулы. Эти элементы дали начало новым языкам: SVG и MathML.

                            Всё-таки с реализацией HTML 3.2 придётся попердолиться. Вот HTML 4 без CSS и без JS реализовать проще.
                            Ответить
                            • > без CSS

                              Лол, это как?
                              Ответить
                              • Не поверишь, в 90-х были такие сайты. С тегами <font>, с кучей атрибутов типа width, height, bgcolor.
                                Ответить
                                • с депрекейтнутым атрибутом align у блочных элементов, с кучей ныне умерших атрибутов у ячеек таблицы, с тегами <center>, <right>, <color>
                                  Ответить
                              • Погугли «CSS Naked Day». Это флешмоб: 1 апреля владельцы сайтов отключают CSS, возвращая голый HTML, чтобы посетители почувствовали атмосферу 90-х. Если вёрстка реально семантическая, всё по делу, сайт не должно распидорасить. Если же элементы используются не по назначению, а «для красоты», будет какой багор.
                                Ответить
                                • показать все, что скрытоvanished
                                  Ответить
                                • Да без жс будет белый экран.
                                  Ответить
                                • Коллеги, не кажется ли вам, что в какой-то момент веб тотально свернул не туда?

                                  Такое ощущение, что раньше, грубо сказать, сайт был как книга: он что-то сообщал нам в виде гипертекста.

                                  Затем, словно бы пришёл какой-то злой волшебник, и показал такой трюк с книгой: если нарисовать на углу каждой странички маленькую картинку и быстро-быстро пролистать, то получится короткий мультик.

                                  Да, это прикольно. Но не более чем!

                                  Как же могла такая свистоперделка внезапно стать главным, и уже почти единственным (sic) форматом в вебе?

                                  Что за хуйня, какие в пизду веб-приложения, порталы? Где сайты-то блять? Где гипертекст нахуй? На википедии одной остался.

                                  И теперь это говно, пользоваться которым — примерно то же самое, что за каким-то хуем писать книгу из макарон-буковок, которые совсем не для того сделаны (ни книга не выигрывает, ни макароны), лезет на десткоп.

                                  Товарищи, обращаюсь ко всем людям доброй воли. Что будем делать? Может какие-то декреты издадим? Борманд был прав, надо запрещать нахуй PHP по конституции. Давайте попробуем подсидеть начальство, займём управленческие позиции в госкорпорациях и под видом импортозамещения и защиты от иностранных агентов протолкнём трушные принципи свободного софта и адекватного веба на нашей Родине?

                                  Например запретить электрон как принадлежащий microsoft'у неоднократно пиздившему данные наших соотечественников и не соблюдающему какие-нибудь ебанутые требования министерства обороны. Более того, в конституции написано, что главное — это дети. Линукс учит детей и делает их умными, а потом они становятся славными русскими хакерами, и прославляют отчизну. А чему учит майкрософт? Играть в игры, в половине из которых надо убивать русских!
                                  Ответить
                                  • >надо запрещать нахуй PHP по конституции
                                    >запретить электрон как принадлежащий microsoft'у

                                    Русне бы только всё запрещать.
                                    Именно поэтому я за легалайз вообще всего. И ПХП, и «электрона», и легких наркотиков, и гей-копрофилии, и тормозных бесполезных «говносайтов», и детского порно, и продукции Яббл наконец.

                                    >Играть в игры, в половине из которых надо убивать русских!

                                    Смерть ванючей русьне!
                                    Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • > гей-копрофилии, и продукции Яббл наконец

                                        Это плеоназм.
                                        Ответить
                                        • Яблу многое можно простить за отсутствие ГЦ в свифте и обжси.

                                          Теперь когда питух кукаречет, что дескать языки без ГЦ это пиздец сложно, ему можно тыкать в ебло миллионом приложений под гейфон, написанных обычными питухами
                                          Ответить
                                          • Сегодня внутри телефона столько мозгов, что можно вкорячить и ГЦ и никто и разницы не заметит.

                                            Спасибо надо говорить не за отсутствие ГЦ, а за ARC. Распиханные руками retain'ы и release'ы в обжективсишных портянках это минное поле почище крестов.

                                            А вообще на макоси был ГЦ и от него отказались примерно после внедрения ARC.

                                            Is GC (Garbage Collection) deprecated on the Mac?

                                            Garbage collection is deprecated in OS X Mountain Lion v10.8, and will be removed in a future version of OS X. Automatic Reference Counting is the recommended replacement technology. To aid in migrating existing applications, the ARC migration tool in Xcode 4.3 and later supports migration of garbage collected OS X applications to ARC.
                                            Ответить
                                            • >Сегодня внутри телефона столько мозгов, что можно вкорячить и ГЦ и никто и разницы не заметит

                                              «Андроид» тому подтверждение.
                                              Ответить
                                            • > Garbage collection is deprecated

                                              Какой багор )))
                                              Ответить
                                              • Пэхапэшники об этом не думают и текут. «FPM» («FastCGI process manager») перезагружает интерпретатор через каждые 500 запросов, чтобы точно освободилось то, что забыли освободить.
                                                Ответить
                                                • А зачем тогда в новой пыхе гц завезли?
                                                  Ответить
                                                  • для соснольной пишутни?
                                                    Ответить
                                                  • В насколько новой? Он появился в 5.3, которая вышла больше 10 лет назад:
                                                    https://www.php.net/manual/ru/function.gc-enable.php

                                                    А тут некоторые детали реализации:
                                                    https://www.php.net/manual/ru/features.gc.refcounting-basics.php
                                                    Ответить
                                            • GC это не только память: это еще и ненужные действия, и что самое мерзкое -- недетерминированное уничтожение объекта: отсюда у нас все эти клозаблы диспозаблы.

                                              С RC их нет, а с ARC нет еще и бойлерплейта
                                              Ответить
                                    • показать все, что скрытоvanished
                                      Ответить
                                      • >bogoeb.txt
                                        Да.

                                        Читать далее >>>
                                        https://pastebin.com/5Tz79QvK
                                        Ответить
                                        • Как там Дадыкин?
                                          Ответить
                                          • а все праильна
                                            русня это ж не люди, а пидарасы, хуесосы и говно государства райпсейскага
                                            их при рождении высирают, а когда русьячьокь подыхает, то его, как говно, прикапывают
                                            все правильно
                                            будь Моя воля, Я б на месте каклов живую русню в сортирах топил бы спецом, и в навозные ямы, где-нть там возле ферм, скотобоен всяких, где говнища побольше, вот очистные крупных городов еще тоже очень хорошее место, вот туда вот дохлую мразоту сбрасывал бы
                                            говно к говну так сказать ггг
                                            Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • wss fixie-wixed ^_^
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Я считаю, что запрет отдавать 200 в случае ошибки, а также запрет отдавать многомегабайтную страницу в случае ошибки (с любым кодом) нужно внести в Конституцию.
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • А это вроде обычное дело для «AJAX».

            Код 404 отдаётся, если у тебя «API endpoint URL» написано с ашипкой.
            Код 301/302 отдаётся, если endpoint куда-то переехал.
            Код 500 отдаётся, если сервер упал.

            Если же endpoint указан верно, сервер не лежит, то возвращается 200. Если ошибка заключается в том, что ты указал неправильный номер поста, то расшифровка ошибки будет внутри JSON, а не в коде ответа HTTP. Протокол HTTP не обязан ничего знать о твоём API.

            Какой код ты хотел получать в случае ошибки?
            Ответить
      • показать все, что скрытоvanished
        Ответить
        • Попробую угадать. Регулярка возвращает массив/список найденных значений, а нам нужен не массив, нам нужно одно значение.
          Ответить
          • Почти:) Регулярка (на самом деле это оператор "m", который можно не писать ~=m// есть ~=//) смотрит на контекст. Если от нее ожидают список -- она возвращает список находок. Если скаляр -- она возвращает 1 (то-есть true) если что-то нашла, иначе ничего (то-есть false).

            Если слева от приравнивания массив (@foo) или хеш (%foo) это списковый контекст.
            Если скаляр ($foo) то скалярный.

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

            ($a, $b) = (1,2);

            В нашем случае я организовал списковый контекст, и положил значение в первую переменную.
            Ответить
          • показать все, что скрытоvanished
            Ответить
          • показать все, что скрытоvanished
            Ответить
        • Перевожу на «PHP»:
          <?php
          
          $mosiv = array(0 => 'Kukareku');
          
          list($scalar) = $mosiv;
          
          var_export($scalar);


          https://ideone.com/lIF222

          В этом реальном примере list() в левой части раздирает массив на элементы.
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • В «Перле» полная противоположность той перегрузке, которая бывает в «крестах» и во многих популярных языках программирования.

              В «PHP» нельзя узнать контекст, в котором будет вызвана функция. Однако, можно объявить класс с магическими методами. Во-первых, можно реализовать интерфейс ArrayAccess, чтобы экземпляр класса вёл себя как массив, если к нему прилепить квадратные скобки:
              https://www.php.net/manual/ru/class.arrayaccess.php

              Ну то есть если $pituhi — экземпляр класса, который implements ArrayAccess, то можно писать $pituhi[42].

              Во-вторых, можно реализовать интерфейс ArrayIterator, чтобы бегать по нему форичем:
              https://www.php.net/manual/ru/class.arrayiterator.php

              То есть если $pituhi — экземпляр класса, который implements ArrayIterator, то можно foreach($pituhi as $pituh) {}.

              В-третьих, можно реализовать магический метод __toString(), чтобы класс возвращал строку в «скалярном контексте»:
              https://www.php.net/manual/ru/language.oop5.magic.php

              То есть если $pituhi — экземпляр класса с методом __toString(), то можно echo $pituhi.

              Увы, только строку. Магических методов __toInt() и подобных в «PHP» нет. То ли дело «кресты», в которых можно перегрузить операторы приведения типа.

              Можно реализовать интерфейс Countable, чтобы count($pituhi) возвращала количество питухов.

              А ещё можно реализовать магический метод __invoke(), чтобы использовать экземпляр в «функциональном контексте».

              Например, если $pituhi — экземпляр класса с методом __invoke(), то можно сделать вызов $pituhi('кококо'). Это типа перегрузки оператора () в «крестах».
              Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Can't locate Smart/Comments.pm in @INC (you may need to install the Smart::Comments module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1

        Так это ж не из коробки.

        Но выглядит оче пиздато.
        Особенно ### Progress: 0... 100


        In each case, the module animates the comment, causing the dots to extend from the left text, reaching the right text on the last iteration. For "open ended" loops (like while and C-style for loops), the dots will never reach the right text and their progress slows down as the number of iterations increases.
        Ответить
    • показать все, что скрытоvanished
      Ответить
      • Лет 15 назад я читал, что перловые регулярки тьюринг-полны благодаря бектрекингу и рекурсивности. Но это не точно.
        Ответить
      • Как и всё гениальное просто.

        > /^1?$|^(11+?)\1+$/
        Здесь у нас склеено 2 регэкса.

        Первый отсекает единицу ^1?$ т.к. она не является простым.

        А второй матчит на простое число
        ^(11+?)\1+$
        Мы берём строку с двумя и более единицами и lazy-матчингом проверяем может ли она повториться целое число раз — \1+

        \1 — выражение в первых скобках.
        Ответить
      • Продолжу капитанство:
        !~ в пёрле означает инверсию совпадения с регэксом, которая в свою очередь записывается как =~

        Сама регулярка, как отмечено выше, проверяет является ли строка единицей ИЛИ состоит из целого числа подстрок вида 11+.

        Забавно что ^(11+?)\1+$ прекрасно работает и в жадном режиме, то есть без ?

        А lazy является всего-лишь оптимизацией.
        Ответить
        • Забавно так же что ? то ускоряет тест в разы, то замедляет его.
          165001 - Разница около 10%
          
          $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 165001
          Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
          Prime
          
          real	0m1.283s
          user	0m1.261s
          sys	0m0.014s
          
          $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 165001
          Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
          Prime
          
          real	0m1.365s
          user	0m1.356s
          sys	0m0.003s
          
          165003 - lazy в 3 раза медленее
          
          $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 165003
          Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
          
          real	0m1.034s
          user	0m1.017s
          sys	0m0.018s
          
          $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 165003
          real	0m0.301s
          user	0m0.290s
          sys	0m0.010s
          
          165005 - lazy в 4 раза быстрее
          
          $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 165005
          Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
          
          real	0m0.122s
          user	0m0.113s
          sys	0m0.009s
          
          $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 165005
          
          real	0m0.518s
          user	0m0.509s
          sys	0m0.009s
          Ответить
          • На числах больше 65536 пёрл выдаёт ворнинг, но считает почти всегда правильно.
            Только изредка промахиваясь.

            165073 — простое. Но регэкс так не считает.
            $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 165073
            Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
            
            real	0m0.036s
            user	0m0.032s
            sys	0m0.004s

            Заметно так же что время выполнения очень небольшое.
            При этом код ответа всегда 0.
            Ответить
            • >165073 — простое. Но регэкс так не считает.
              Отэта я лоханулся.

              Я сделал кривой тест, который перебирал числа до 300. Для диапазона [2;65537] этого было достаточно. Для 165073 нет, т.к. делитель 383.
              Ответить
          • Странно, что на 165003 вопросик так долго работает. Там же тройка в делителях, должно почти сразу заматчить на 111. Видимо какая-то особенность перебора в перловых регулярках, о которой я не знаю.

            З.Ы. Походу тройка сорвалась из-за subexpression recursion limit, поэтому пришлось перебирать до второго множителя, а он аж 55001.

            На 165005 пятёрка точно так же отлетела по лимиту, но быстро нашлось 61. А жадному перебору пришлось копать с конца аж до 541. Поэтому здесь жадный перебор проиграл.
            Ответить
            • Удивительный код:
              0% branch misprediction. 0% cache miss
              Performance counter stats for 'perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 1165139':
              
                    17015,696277      cpu-clock (msec)          #    1,000 CPUs utilized          
                  14 815 266 939      branches                  #  870,682 M/sec                    (36,81%)
                      13 169 260      branch-misses             #    0,09% of all branches          (42,08%)
                         189 341      cache-misses              #    0,003 % of all cache refs      (42,08%)
                   6 739 590 559      cache-references          #  396,081 M/sec                    (42,08%)
                  62 826 558 696      cpu-cycles                #    3,692 GHz                      (42,08%)
                 141 850 740 540      instructions              #    2,26  insn per cycle           (47,34%)
                  59 435 188 197      ref-cycles                # 3492,962 M/sec                    (52,61%)
                               0      alignment-faults          #    0,000 K/sec                  
                           1 697      page-faults               #    0,100 K/sec                  
                  27 179 282 229      uops_issued.stall_cycles  # 1597,306 M/sec                    (52,61%)
                  26 990 197 686      resource_stalls.any       # 1586,194 M/sec                    (52,63%)
                  13 575 040 916      L1-dcache-load-misses     #   19,59% of all L1-dcache hits    (52,65%)
                  69 287 657 652      L1-dcache-loads           # 4071,985 M/sec                    (52,66%)
                         120 891      LLC-load-misses           #    0,00% of all LL-cache hits     (52,66%)
                   6 739 283 765      LLC-loads                 #  396,063 M/sec                    (52,66%)
                          76 562      LLC-store-misses          #    0,004 M/sec                    (10,53%)
                       1 711 272      LLC-stores                #    0,101 M/sec                    (10,53%)

              Тест на тупую, грубую силу.
              Ответить
              • То есть оно ждёт пока из L2/L3 кеша подтянется ещё больше единичек.
                _
                    28 609 758 607      cycle_activity.cycles_l1d_pending # 1702,178 M/sec                    (21,61%)
                    55 467 959 473      cycle_activity.cycles_l2_pending # 3300,145 M/sec                    (21,59%)
                    62 032 007 742      cycle_activity.cycles_ldm_pending # 3690,683 M/sec                    (21,57%)
                     3 598 789 774      cycle_activity.cycles_no_execute #  214,115 M/sec                    (21,54%)
                     2 729 009 407      cycle_activity.stalls_l1d_pending #  162,366 M/sec                    (10,76%)
                    13 824 770 304      cycle_activity.stalls_l2_pending #  822,524 M/sec                    (13,45%)
                    23 044 685 962      cycle_activity.stalls_ldm_pending # 1371,076 M/sec                    (16,14%)
                        21 719 141      ild_stall.iq_full         #    1,292 M/sec                    (18,82%)
                            12 634      ild_stall.lcp             #    0,752 K/sec                    (21,51%)
                    26 250 234 675      resource_stalls.any       # 1561,795 M/sec                    (21,51%)
                        36 824 152      resource_stalls.rob       #    2,191 M/sec                    (21,51%)
                    26 439 449 946      uops_issued.core_stall_cycles # 1573,053 M/sec                    (21,51%)
                Ответить
            • > Походу тройка сорвалась из-за subexpression recursion limit
              Кстати, а разве после вылета в лимит «Перл» не перестаёт считать оставшееся? Как-то странно получается.
              Пи, проверь большое простое число — оно вообще простоту-то проверяет, когда вываливается в «Complex regular subexpression recursion limit»?
              Ответить
              • >Пи, проверь большое простое число — оно вообще простоту-то проверяет
                1165139 достаточно большое?
                Просто дальше идёт квадратичная питушня на полчаса.

                [0] $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 1165139
                Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                Prime


                https://govnokod.ru/26800#comment559582
                Ответить
                • Странно.
                  https://govnokod.ru/26800#comment559663
                  Ответить
                  • >Пи, проверь большое простое число — оно вообще простоту-то проверяет, когда вываливается в «Complex regular subexpression recursion limit»?

                    Досчитало 5165191
                    $ time perf stat -e $EVENTS perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 5165191
                    Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                    Prime
                    
                     Performance counter stats for 'perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 5165191':
                    
                        2079517,176142      cpu-clock (msec)          #    0,840 CPUs utilized          
                       274 267 611 244      branches                  #  131,890 M/sec                    (21,63%)
                            93 974 602      branch-misses             #    0,03% of all branches          (21,63%)
                        61 736 335 661      cache-misses              #   27,163 % of all cache refs      (21,63%)
                       227 283 416 540      cache-references          #  109,296 M/sec                    (21,63%)
                     7 638 165 967 233      cpu-cycles                #    3,673 GHz                      (21,62%)
                     2 711 109 980 628      instructions              #    0,35  insn per cycle           (24,32%)
                    
                        2474,145686595 seconds time elapsed
                    
                    
                    real	41m14.605s
                    user	34m39.382s
                    sys	0m0.920s
                    Ответить
      • Йажа работает в десятки раз медленее пёрла
        jshell> "1".repeat(1165139).matches("^(11+)\\1+$")

        Какой компилируемый язык )))
        Ответить
        • есть мнение, что \1 это не совсем \1
          Ответить
        • Нода раз в 10 медленее пёрла
          [0]$ time node -e '"1".repeat(165139).match("^(11+)\\1+$")'
          
          real	0m2.503s
          user	0m2.499s
          sys	0m0.004s
          
           [0] $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 165139
          
          real	0m0.255s
          user	0m0.255s
          sys	0m0.000s
          1165139
          [0] $ time node -e '"1".repeat(1165139).match("^(11+)\\1+$")'
          real	2m47.556s
          user	2m47.542s
          sys	0m0.008s
          
           [0] $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 1165139
          Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
          Prime
          
          real	0m22.741s
          user	0m22.728s
          sys	0m0.012s
          Ответить
          • PHP отрабатывает на больших числах на порядки быстрее чем все остальные *

            $ time /usr/bin/php7.3 -r "echo(preg_match('/^(11+?)\1+$/', str_repeat("1",1165139), $matches));"
            
            real	0m0.057s
            user	0m0.032s
            sys	0m0.023s
            
            $ time /usr/bin/php7.3 -r "echo(preg_match('/^(11+?)\1+$/', str_repeat("1",49139), $matches));"
            0
            real	0m1.357s
            user	0m1.331s
            sys	0m0.025s

            * после 49 тысяч оно просто перестаёт выводить результат
            но всё-равно раза 2 в быстрее чем «йажа» и «йажасцрипт»
            Ответить
            • Проверь 167281.
              Ответить
              • Какой язык?

                $ time /usr/bin/php7.3 -r "echo(preg_match('/^(11+?)\1+$/', str_repeat("1",167281), $matches));"
                
                real	0m0.055s
                user	0m0.030s
                sys	0m0.025s
                
                $ time node -e '"1".repeat(167281).match("^(11+)\\1+$")'
                
                real	0m14.929s
                user	0m14.767s
                sys	0m0.109s
                
                $ time node -e '"1".repeat(167281).match("^(11+?)\\1+$")'
                
                real	0m1.663s
                user	0m1.594s
                sys	0m0.074s
                
                $ time  perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 167281
                Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                
                real	0m0.180s
                user	0m0.156s
                sys	0m0.025s
                
                $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 167281
                
                real	0m1.127s
                user	0m1.122s
                sys	0m0.005s

                *Все результаты для «PHP» было получены на слабой арм-машине.
                Для консистентности в этом посте я запускал всё на ней.
                Ответить
                • > арм машине

                  Пи?
                  Ответить
                  • Чуть мощнее. Там Cortex-A73.

                    А перф я на штеуде запускал.
                    Ответить
                • Любопытно. Можно ещё поэкспериментировать с разными видами чисел. 167281 — это было 409*409.
                  Ответить
                  • Реквестирую код на питухе.

                    Кстати там из-за квадратичной питушни числа сильно выше 10 миллионов не проверишь.
                    Пёрлотест на (11 165 139) у меня на штеуде работал больше часа.
                    Ответить
                    • python -c "import re;re.match(r'^(11+?)\1+$', '1' * 167281) is None"

                      У меня на машине в ~3 раза медленнее «Перла» (55 миллисекунд против 155). Но тут ещё проблема в том, что «import re» читает мудуль с диска, что плохо сказывается на производительности.

                      Без «?» тормозит совсем неадекватно.
                      Ответить
                      • >Но тут ещё проблема в том, что «import re» читает мудуль с диска
                        На greedy c 35 секундами это не заметно

                        Питух слился как лалка, но с ? он ноду делает.
                        Правда мы не знаем сколько в жсухе занимает прогрев интепретатора и его конпеляция.
                        $ time python -c "import re;re.match(r'^(11+?)\1+$', '1' * 167281) is None"
                        
                        real	0m0.387s
                        user	0m0.324s
                        sys	0m0.036s
                        
                        $ time python -c "import re;re.match(r'^(11+)\1+$', '1' * 167281) is None"
                        
                        real	0m35.876s
                        user	0m35.834s
                        sys	0m0.022s


                        Машина та же что и здесь:
                        https://govnokod.ru/26800#comment559599
                        Ответить
                        • Проверил: импорт не тормозит (прогретый, во всяком случае), «Питон» просто сливается как лалка.
                          PS C:\Users\gost> Measure-Command {python -c "import re"}
                          
                          
                          Days              : 0
                          Hours             : 0
                          Minutes           : 0
                          Seconds           : 0
                          Milliseconds      : 47
                          Ticks             : 476564
                          TotalDays         : 5,51578703703704E-07
                          TotalHours        : 1,32378888888889E-05
                          TotalMinutes      : 0,000794273333333333
                          TotalSeconds      : 0,0476564
                          TotalMilliseconds : 47,6564
                          
                          
                          
                          PS C:\Users\gost> Measure-Command {python -c "# nop"}
                          
                          
                          Days              : 0
                          Hours             : 0
                          Minutes           : 0
                          Seconds           : 0
                          Milliseconds      : 48
                          Ticks             : 482257
                          TotalDays         : 5,58167824074074E-07
                          TotalHours        : 1,33960277777778E-05
                          TotalMinutes      : 0,000803761666666667
                          TotalSeconds      : 0,0482257
                          TotalMilliseconds : 48,2257
                          Ответить
                          • Чем ваще вызваны такие разницы от языка к языку? У них настолько разные реализации регулярок?
                            Ответить
                            • Пёрл всегда считался стандартом де-факто для регулярок. Тут ничего удивительного.

                              Интересно и в пёрле, и в пхп, и в питухе используются сишные биндинги. В принципе нода с пхп идут нос-в-нос.

                              Только в Йажа реализация не нативная, а йажевская через java.util.Pattern.

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

                                И я про то же, чо за дела?

                                Каждый забиндил к себе разные сишные реализации перлового де-факто?
                                Ответить
                            • Ну да, каждый своё пилит. Плюс тут весьма специфическая задача с очень «тяжёлым» паттерном («квадратичный» бэктрекинг).

                              Ну а рагулярный движок «Перла» совершенствовали десятилетиями, у него это основной инструмент. Неудивительно, что он даёт пососать остальной скриптушне.
                              Ответить
                              • Интересно что когда строка больше 10 метров (не влазит в L3), то перл тупит даже на простеньких делителях.
                                4091*4099

                                $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 16769009
                                Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                                
                                real	0m8.783s
                                user	0m8.775s
                                sys	0m0.008s


                                Питух тупит клювом
                                $ time python -c "import re;print(re.match(r'^(11+?)\1+$', '1' * 16769009) is None)"
                                False
                                
                                real	1m55.101s
                                user	1m54.856s
                                sys	0m0.244s

                                Нода наконец-то разваливается

                                $ time node -e 'console.log("1".repeat(16769009).match("^(11+?)\\1+$")!=null)'
                                [eval]:1
                                console.log("1".repeat(16769009).match("^(11+?)\\1+$")!=null)
                                                                 ^
                                
                                RangeError: Maximum call stack size exceeded
                                    at String.match (native)
                                    at [eval]:1:34
                                    at Object.exports.runInThisContext (vm.js:54:17)
                                    at Object.<anonymous> ([eval]-wrapper:6:22)
                                    at Module._compile (module.js:410:26)
                                    at node.js:578:27
                                    at nextTickCallbackWith0Args (node.js:419:9)
                                    at process._tickCallback (node.js:348:13)
                                
                                real	0m0.133s
                                user	0m0.109s
                                sys	0m0.024s
                                Ответить
                                • > даже на простеньких делителях. 4091*4099
                                  Это, КМК, наоборот worst-case для непростых чисел. Интерпретатору же нужно будет последовательно заматчить все последовательности единиц длиной от 2 до 4091. Например, 16769008 матчится на порядок быстрее.

                                  UPD: А полный worst-case — это, по идее, простые числа: 16769017 ты, скорее всего, не дождёшься.

                                  Кстати, я за «WolframAlpha»:
                                  https://www.wolframalpha.com/input/?i=first+prime+number+greater+than+16769009
                                  Ответить
                                  • >наоборот worst-case для непростых чисел
                                    Да. Там выше 10 миллионов уже пиздец.

                                    > Кстати там из-за квадратичной питушни числа сильно выше 10 миллионов не проверишь.
                                    > Пёрлотест на (11 165 139) у меня на штеуде работал больше часа.

                                    >А полный worst-case — это, по идее, простые числа: 16769017 ты, скорее всего, не дождёшься.
                                    Да.
                                    Ответить
                                  • $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 50041451
                                    Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                                    
                                    real	0m51.365s
                                    user	0m51.296s
                                    sys	0m0.068s


                                    Там ещё кеш-промахи сильно вредят.

                                    https://govnokod.ru/26800#comment559641
                                    Ответить
                                  • >Это, КМК, наоборот worst-case для непростых чисел.
                                    Оказывается нет.

                                    Это неплохой кейс.

                                    Чётное 100160062 тупит гораздо больше чем 100160063=10007*10009

                                    Думаю здесь валидно объяснение борманда.

                                    >тройка сорвалась из-за subexpression recursion limit, поэтому пришлось перебирать до второго множителя, а он аж 55001.
                                    Ответить
                                    • 100160062 оказалось очень «удачным».
                                      Это простое 50080031 умноженное на 2.

                                      Сейчас пробую там где много мелких делителей
                                      4*5*7*11*13*5003 = 100160060

                                      $ time perf stat -e $EVENTS perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 100160060
                                      Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                                      
                                       Performance counter stats for 'perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 100160060':
                                      
                                            43081,010456      cpu-clock (msec)          #    1,000 CPUs utilized          
                                          18 959 550 242      branches                  #  440,091 M/sec                    (21,62%)
                                             143 147 111      branch-misses             #    0,76% of all branches          (21,63%)
                                           1 893 880 046      cache-misses              #   57,505 % of all cache refs      (21,64%)
                                           3 293 399 449      cache-references          #   76,447 M/sec                    (21,65%)
                                         158 688 007 127      cpu-cycles                #    3,683 GHz                      (21,65%)
                                         129 521 338 377      instructions              #    0,82  insn per cycle           (24,35%)
                                      
                                            43,081747676 seconds time elapsed
                                      
                                      real	0m43.108s
                                      user	0m43.034s
                                      sys	0m0.073s
                                      Ответить
                                      • 2**27= 134217728
                                        Жадный алгоритм быстр
                                        $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 134217728
                                        
                                        real	0m2.636s
                                        user	0m2.596s
                                        sys	0m0.040s


                                        Ленивый тупит
                                        $ time perf stat -e $EVENTS perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 134217728
                                        real	0m46.975s
                                        user	0m46.913s
                                        sys	0m0.061s
                                        Ответить
                              • Пыха даже в жадном режиме не хочет матчить больше 2х миллионов. Ошибок ЧСХ нет.
                                $ time /usr/bin/php7.3 -r "echo(preg_match('/^(11+)\1+$/', str_repeat("1",2001223), $matches));"
                                
                                real	0m0.065s
                                user	0m0.037s
                                sys	0m0.029s


                                От миллиона до двух она тупит, но ничего не выдает
                                $ time /usr/bin/php7.3 -r "echo(preg_match('/^(11+)\1+$/', str_repeat("1",1981223), $matches));"
                                
                                real	0m8.490s
                                user	0m8.405s
                                sys	0m0.057s

                                А до миллиона работает

                                $ time /usr/bin/php7.3 -r "echo(preg_match('/^(11+)\1+$/', str_repeat("1",981225), $matches));"
                                1
                                real	1m57.572s
                                user	1m56.635s
                                sys	0m0.141s
                                Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • Не знаю, я просто загуглил и потёк. Вроде выдаёт адекватные результаты.
                              Ответить
                  • Штеуд
                    1018081=1009²

                    [0] $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 1018081
                    Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                    
                    real	0m0.201s
                    user	0m0.193s
                    sys	0m0.008s
                     [0] $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 1018081
                    
                    real	0m12.590s
                    user	0m12.590s
                    sys	0m0.000s


                    1111261 = 1013 *1093
                    [0] $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 1111261
                    Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                    
                    real	0m0.216s
                    user	0m0.212s
                    sys	0m0.004s
                     [0] $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 1111261
                    
                    real	0m15.051s
                    user	0m15.047s
                    sys	0m0.004s
                    Ответить
                    • Штеуд

                      На больших числах Питух сливается даже ноде.
                      $ time python -c "import re;print(re.match(r'^(11+?)\1+$', '1' * 1111261) is None)"
                      False
                      
                      real	0m2.026s
                      user	0m1.993s
                      sys	0m0.008s
                      
                      $ time node -e 'console.log("1".repeat(1111261).match("^(11+?)\\1+$")!=null)'
                      true
                      
                      real	0m0.518s
                      user	0m0.502s
                      sys	0m0.016s
                      Ответить
              • Ага, PHP всё-таки выдаёт корректные результаты для больших чисел, если не использовать ?
                По скорости получается почти как жадная нода.
                И в 13 раз медленее чем pёrl

                $ time /usr/bin/php7.3 -r "echo(preg_match('/^(11+)\1+$/', str_repeat("1",167281), $matches));"
                1
                
                real	0m15.063s
                user	0m15.024s
                sys	0m0.035s
                Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • А с точки зрения стиля тоже так принято писать, или ты просто показываешь, что так можно? Так-то говно процедурное сайдэффектное.
        Ответить
        • А что такого?

          Ты просто не привык, что "изменяют" строку. А если бы я отдал туда массив, и его поменяли, было бы лучше?
          Ответить
          • Я привык ко всему, я на поцкале долго писал чисто процедурно, передавая данные по ссылке если надо, и знаю цимес в мутабл данных. Но чисто стилистически, у тебя везде будут такие процедуры, и так будет написан весь скрипт/проект? Если да - заебись, если же ты начнёшь комбинировать подход, когда процедуры с сайд эффектами замешаны с чистыми функциями с возвращаемым значением, или, того хуже, функциями у которых есть и значение и сайд эффекты, стилистически получится говнокод.
            Ответить
          • Код будет хуево говорить сам за себя, без повышенного внимания или документации в нем не будет охуенно комфортно плавать.
            Ответить
        • вот такой же код тебе нормаелн?
          use strict;
          use warnings FATAL => 'all';
          
          my @nums = (1 .. 200000);
          
          sub multiply_evens_zachem_zachem {
              for (my $i = 0; $i < @_; $i++) {
                  $_[$i] *= 2 unless $_[$i] % 2;
              }
          }
          
          multiply_evens_zachem_zachem @nums;
          print join ',', @nums[0 .. 30];
          Ответить
    • На числах выше 8М с полного кеш хита, начинается тотальный кеш-мисс.

      IPC резко падает с 2.2 до 0.9, больше чем в 2 раза.

      10007 * 10009 = 100160063
      $ time perf stat -e $EVENTS perl -wle 'print "Prime" if (1 x shift) !~ /^(11+?)\1+$/' 100160063
      Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
      
       Performance counter stats for 'perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 100160063':
      
           101989,511547      cpu-clock (msec)          #    1,000 CPUs utilized          
          45 673 821 713      branches                  #  447,829 M/sec                    (21,62%)
             313 208 108      branch-misses             #    0,69% of all branches          (21,62%)
           5 227 242 279      cache-misses              #   49,080 % of all cache refs      (21,63%)
          10 650 526 377      cache-references          #  104,428 M/sec                    (21,63%)
         375 496 611 323      cpu-cycles                #    3,682 GHz                      (21,63%)
         341 922 618 724      instructions              #    0,91  insn per cycle           (24,33%)
         355 232 658 048      ref-cycles                # 3483,031 M/sec                    (27,04%)
                  25 865      page-faults               #    0,254 K/sec                  
         287 479 711 819      uops_issued.stall_cycles  # 2818,718 M/sec                    (27,04%)
         280 966 049 622      resource_stalls.any       # 2754,852 M/sec                    (27,04%)
          14 806 209 992      L1-dcache-load-misses     #   10,88% of all L1-dcache hits    (27,04%)
         136 092 303 505      L1-dcache-loads           # 1334,375 M/sec                    (27,03%)
          5 188 921 503      LLC-load-misses           #   49,15% of all LL-cache hits     (27,03%)
          10 557 576 315      LLC-loads                 #  103,516 M/sec                    (27,03%)
      
      
           101,990844967 seconds time elapsed
      
      
      real	1m42.028s
      user	1m41.969s
      sys	0m0.046s
      Ответить
      • Вывод такой. Жадный алгоритм хорошо работает на числах где есть мелкий множитель двойка.

        100160060 = 4*5*7*11*13*5003
        
        $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 100160060
        real	0m2.005s
        
        134217728 = 2**27
        $ time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 134217728
        real	0m2.636s
        
        2*50080031 (простое)
        time perl -wle 'print "Prime" if (1 x shift) !~ /^(11+)\1+$/' 100160062
        real	0m2.046s


        Но очень тупит на нечетных, на простых, или на больших произведениях двух примерно равных простых. 10007 * 10009 = 100160063

        Ленивый наоборот для простых и множителей >=3 работает лучше.
        Ответить
        • > множителей >= 3

          Множителей, больших чем N / 32k. Т.е. чем больше число, тем хуже он ищет мелкие множители. Если бы не это ограничение на 32k раскрытий \1, то он бы всегда выигрывал.
          Ответить
          • >Множителей, больших чем N / 32k
            Ленивый сливается на 4*5*7*11*13*5003.
            Тут же есть делители меньше 32k: 2*5003, 3*5003 итд.

            Жадный благодаря какой-то оптимизации на чётных работает крайне быстро (2 секунды для 100М).

            А как оставлю одни нечётные, то полчаса не могу дождаться пока жадный доработает.
            3*5*7*11*13*5003 = 75120045
            Ответить
            • > Жадный благодаря какой-то оптимизации на чётных работает крайне быстро
              Не потому ли, что он сразу пытается сматчить в первую группу N/2 единиц (больше матчить не имеет смысла из-за \1+)? А для 3*... ему придётся поочерёдно матчить N/2, N/2 - 1 и так далее до N/3.
              Ответить
            • Ну вот смотри. 4*5*7*11*13*5003 это 100160060. Т.е. все множители ниже 3057 ленивая версия не сможет проверить из-за ограничения на подстановку. Но видимо будет пытаться и тратить на них время. Первый множитель, который она сможет найти и прервать цикл - это 5003 4004.

              А жадная версия тупо промотает всё от конца до середины и, о чудо, найдёт множитель 50080030. Строки больше половины скорее всего очень быстро отбиваются на проверке длины.

              На нечётных же числах, как правильно пишет гост, у жадной версии начинается реальный перебор от N/2 как минимум до N/3. Что как бы дохуя.
              Ответить
          • Оба сливаются на 100160079 = 3 * 33386693 (простое).

            Похоже на worst-case для составных.
            Ответить
            • А между тем Питух заклёвывает Пёрл на чётных 100160062 со «?»
              $ time python -c "import re;print(re.match(r'^(11+?)\1+$', '1' * 100160060) is None)"
              False
              
              real	0m7.061s
              user	0m3.341s
              sys	0m1.984s
              
              $ time python -c "import re;print(re.match(r'^(11+?)\1+$', '1' * 100160062) is None)"
              False
              
              real	0m6.944s
              user	0m3.257s
              sys	0m2.087s


              И вообще Питух зверски быстр на куче маленьких множителей.
              $ time python -c "import re;print(re.match(r'^(11+?)\1+$', '1' * 75120045) is None)"
              False
              
              real	0m8.261s
              user	0m4.975s
              sys	0m1.503s

              Для Питуха ? однозначно улучает пирформанс.
              Ответить
              • Ну потому что нет сраного лимита на 32к. А с мелких чисел начинать проверку всё-таки выгоднее.
                Ответить
                • >сраного лимита на 32к
                  Питух рекурсию превращает в цикл? Гвидо вроде был против tail-call.

                  Пёрл сливается на 100160079 = 3 * 33386693 (простое).

                  А Питух шустро так крыльями, хлоп-хлоп.
                  $ time python -c "import re;print(re.match(r'^(11+?)\1+$', '1' * 100160079) is None)"
                  False
                  
                  user	0m6.645s
                  sys	0m1.938s

                  Там время будет чуть ниже, просто на всех ядрах тесты пёрла уже больше часа ебошат.
                  Ответить
                  • > Питух рекурсию превращает в цикл?
                    У питуха, скорее всего, просто в реализации рекурсии нет — или конпелятор её в tail-call и оптимизировал.

                    > Гвидо вроде был против tail-call.
                    Вряд ли ради этого мейнтейнеры «CPython» добавляют флаг «-fno-optimize-sibling-calls» :-).
                    Ответить
                  • Потому что в питоне нет сраного лимита на 32к подстановок. Пёрл физически не может заматчить тройку для таких больших чисел, он даже ворнинг про это высирает. Поэтому он будет мотать аж до 33386693 и само собой соснёт.
                    Ответить
                    • > Пёрл физически не может заматчить тройку
                      А как это вообще обрабатывается? «Пёрл» может возвратить некорректный результат, если упрётся в лимит?
                      Ответить
                      • В душе не ебу, я ж не настоящий сварщик. Но судя по тому что он не сдох и просто не заматчил - да. Алгоритм в целом корректно работает только из-за того, что всегда есть второй парный делитель.

                        Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                        Ответить
                      • Он походу обламывается, ставит отсутствие матча и идёт дальше.
                        Я ещё полтора часа назад запустил на перле тест на два множителя >32K
                        33013*33023 = 1090188299
                        Пока жду.
                        Ответить
                        • Боюсь, что ты не дождёшься. Это ж миллиард. И на каждой итерации там почти вся строка сверяется кроме, возможно, хвостика.

                          Ну ок, последние 500 миллионов наверное скипнутся по-быстрому т.к. \1 длиннее хвоста. Но это всё равно дофига.
                          Ответить
                          • >Это ж миллиард
                            10007 * 10009 = 100160063
                            За 100 секунд отработало.

                            А тут число в 10 раз больше. 100*10²=10000 секунд.

                            Походу тепловая смерть Вселенной часа через три будет.

                            Хреново что я их без nohup запустил. Надо почитать как их детачнуть, если вдруг сеть сбойнёт.
                            Ответить
                            • Дык 10007 * 10009 прервалось на 10007! А 1090188299 будет проверять всё до победного 1090188299.

                              В стотыщраз разница. 760 тыщ лет будешь ждать если предположить, что там квадратичный алгоритм.
                              Ответить
                              • > Дык 10007 * 10009 прервалось на 10007!
                                Я тоже хочу себе компьютер, который сможет досчитать до 10007!.
                                Ответить
                                • 70! — это уже стозначное число. Сколько же знаков в 10007! ?
                                  Ответить
                                  • 35688.
                                    Ответить
                                  • Я за «Python».
                                    https://pastebin.com/ez09A4BC
                                    Ответить
                                    • Учитесь, анскильные лалки: https://ideone.com/jL0ZGB

                                      <?php
                                      
                                      $n = 10007;
                                      echo ceil(log10(sqrt(2 * M_PI * $n)) + log10($n / M_E) * $n);
                                      Ответить
                                      • >sqrt(2 * M_PI * $n)
                                        Похоже на формулу Стирлинга.

                                        Так она же приблизительная. Плюс плавающий питух.
                                        Ответить
                                      • https://ideone.com/Fh4ywu
                                        $n = 0;
                                        echo ceil(log10(sqrt(2 * M_PI * $n)) + log10($n / M_E) * $n);
                                        Какой NaN )))
                                        Ответить
                                        • > кроме n < 2
                                          Ответить
                                          • Для [2; 15000) работает правильно. Надо подключать аналитику.
                                            Ответить
                                            • Версию на питухе можно чуток питумизировать.

                                              math.log10(math.factorial(21))

                                              Или просто циклом for сложить все логарифмы натуральных.

                                              >Надо подключать аналитику
                                              Я думаю формула хорошая. Она может лажануть только если будет ситуация близости переноса.

                                              >>> math.log10(math.factorial(29))
                                              30.946538820206058

                                              Только .9999.
                                              Ответить
                                              • А как работает math.factorial?
                                                Он учитывает, что можно балансированно считать делением пополам (чтобы умножать равные по длине числа), и использует ли быстрое преобразование Фурье для умножения (оно, кстати, тоже на правпитухе)?


                                                Кажется, хуйню написал. Ведь умножение длинного на короткое наверное лучше.
                                                Ответить
                                            • ЕМНИП, я сам на ГК в каком-то сраче писал Стирлинга.

                                              И он работал.

                                              Т.к. на маленьких не случалось переносов из-за погрешности, а на больших решала асимптотика.

                                              >Для [2; 15000) работает правильно
                                              Дальше смысла проверять особо нет, т.к. формула асимптотическая.
                                              Ответить
                                            • 15000!

                                              >>>Стирлинг:
                                              56129.438792851

                                              >>> math.log10(math.factorial(15000))
                                              56129.4387952629

                                              15!
                                              >>>Стирлинг:
                                              12.114087220993

                                              >>> math.log10(math.factorial(15))
                                              12.1164996111234

                                              И чем дальше, тем оно точнее после запятой. Разве что будет случай когда в логарифме появится .99999999 и случится перенос.
                                              Ответить
                                            • Написал простенький говновалидатор, которые выдает гипотетические разногласия, где логарифм факториала около целого числа.

                                              s=0; for (var i=1;i<=12345678;++i) {
                                                  var stirling = Math.log10(Math.sqrt(2 * Math.PI * i)) + Math.log10(i / Math.E) * i;
                                                  s+=Math.log10(i);
                                                  if (Math.ceil(s)!=Math.ceil(stirling)) console.log(i);
                                              }
                                              3121515
                                              4187665
                                              4423458


                                              Имеет смысл перепроверить только такие случаи.
                                              Ответить
                                            • Имеет смысл проверить только числа, которые выдаст эта питушня.
                                              s=0; for (var i=1;i<=1123456789;++i) {
                                                  var stirling = Math.log10(Math.sqrt(2 * Math.PI * i)) + Math.log10(i / Math.E) * i;
                                              //    s+=Math.log10(i); // плавающий питух с ростом числа итераций накапливает ошибку
                                                  if (Math.ceil(stirling+1/i)!=Math.ceil(stirling)) console.log(i,stirling);
                                              }
                                              Ответить
                                              • Проверил всё из списка, вплоть до 12861320! (включительно)
                                                12861320! = 10^85849199.99999996  [ math.log10(math.factorial( 12861320 )) =85849199.99999997
                                                ]
                                                16641157! = 10^112941689.99999996
                                                28563732! = 10^200560832.9999999
                                                Ответить
                                          • Не обновил страницу.

                                            Похоже что точности формулы всегда хватает для подсчёта порядка. На больших числах уже начинает помогать асимптотика.

                                            А чтобы поймать багры от плав. питуха нужны числа такого порядка, для которых прямой подсчёт закончится после того как потухнет Солнце.
                                            Ответить
                            • З.Ы. Блин, т.е. перл может выдать неправильный ответ. Но воспроизвести за разумное время это нельзя. Т.е. алгоритм работает правильно для любых разумных применений.
                              Ответить
                              • Ага, я тоже хотел подметить что Ларри всё просчитал.

                                Можно слить Пёрл как лалку, но к тому моменту всем уже будет похуй.
                                Ответить
                            • На самом деле можно проще тест сделать. Сгенери строку в 1090188299 единичек и заматчи её с фиксированными паттернами из 33013 и 33023 единичек питоном и пёрлом.
                              Ответить
                              • Странно. Заматчил и не упал.
                                $ perl -wle "$barop = \"1\" x 33013; print \"MATCH\" if (1 x shift) =~ /^($barop)+$/" 1090188298
                                
                                $ perl -wle "$barop = \"1\" x 33013; print \"MATCH\" if (1 x shift) =~ /^($barop)+$/" 1090188299
                                MATCH

                                UPD: Заматчил правильное число, результаты те же.
                                Ответить
                                • А. Я понял. Это же жадина-говядина.
                                  Тут бектрекинга «?» нет.

                                  Ленивый куда дольше считает
                                  time perl -wle '$barop = "1" x 33023; print "MATCH" if (1 x shift) =~ /^($barop?)+$/' 1090188299
                                  Ответить
                                  • А, точно же.
                                    Ответить
                                    • Доработало наконец. Пёрл слился в хламину.

                                      $ time perl -wle '$barop = "1" x 33023; print "MATCH" if (1 x shift) =~ /^($barop?)+$/' 1090188299
                                      Complex regular subexpression recursion limit (32766) exceeded at -e line 1.
                                      
                                      
                                      real	25m35.657s
                                      user	23m12.344s
                                      sys	0m0.912s
                                      Ответить
                                      • Для сравнения 32693*33023 отрабатывает почти моментально
                                        $ time perl -wle '$barop = "1" x 33023; print "MATCH" if (1 x shift) =~ /^($barop?)+$/' 1079620939
                                        MATCH
                                        
                                        real	0m1.807s
                                        user	0m0.396s
                                        sys	0m0.495s

                                        А если подставить 32693, тогда нет.
                                        Ответить
                  • Кстати, я придумал тебе число, на котором пёрл сольётся как лалка и выдаст неправильный ответ.

                    1416242689 = 37633 * 37633

                    Оба делителя больше 32к. Пёрл их ни так ни сяк не заматчит. И скажет, что число простое.
                    Ответить
                    • Я уже больше часа жду
                      https://govnokod.ru/26800#comment559666

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

                            https://ideone.com/2MelzP

                            Posix рагулярки начинают сливаться и дико тупить на 41, 43, 45.

                            int main (int argc, char *argv[])
                            {
                            	/*
                                if (argc < 2) {
                                    fprintf(stderr, "Usage: %s number\n", argv[0]);
                                    return(1);
                                }
                            
                                int num = atoi(argv[1]);
                                */
                                int num=41;
                                printf("%d\n",num);
                            
                                regex_t regex;
                                char    buf[255];
                                char    str[num];
                            
                                memset(str,'1',num);
                                str[num] = 0;
                                puts(str);
                            
                                regcomp(&regex, "^(11+)\\1+$", REG_EXTENDED);
                            
                                int r = regexec(&regex, str, 0, NULL, 0);
                            
                                //If a match is found, the regexec() function returns 0. 
                                if (0 == r) {
                                    puts("Not Prime");
                                }
                                //If no match is found, the regexec() function returns REG_NOMATCH. 	
                                else if (REG_NOMATCH == r) {
                                    puts("Prime");
                                }
                                //Otherwise, it returns a nonzero value indicating an error. 		
                                else {
                                    regerror(r, &regex, buf, sizeof(buf));
                                    fprintf(stderr, "Error:%d %s\n",r , buf);
                                    return(1);
                                }

                            Я знал что оно хуеватое.
                            Не может же оно быть НАСТОЛЬКО хуёвым.
                            Ответить
    • Йажа на небольших множителях сливает всех за секунду как лалок.

      jshell> long ns=nanoTime(); "1".repeat(100160060).matches("^(11+?)\\1+$") ; out.println( TimeUnit.NANOSECONDS.toMillis(nanoTime()-ns));
      $6 ==> true
      1188
      
      jshell> long ns=nanoTime(); "1".repeat( 100160079 ).matches("^(11+?)\\1+$") ; out.println( TimeUnit.NANOSECONDS.toMillis(nanoTime()-ns));
      $9 ==> true
      1775
      
      jshell> long ns=nanoTime(); "1".repeat(100160060).matches("^(11+)\\1+$") ; out.println( TimeUnit.NANOSECONDS.toMillis(nanoTime()-ns));
      $12 ==> true
      1019
      
      jshell> long ns=nanoTime(); "1".repeat(3*5*7*11*13*5003).matches("^(11+?)\\1+$") ; out.println( TimeUnit.NANOSECONDS.toMillis(nanoTime()-ns));
      $18 ==> true
      1415
      
      
      jshell> long ns=nanoTime(); "1".repeat(3*5*7*11*13*5003).matches("^(11+)\\1+$") ; out.println( TimeUnit.NANOSECONDS.toMillis(nanoTime()-ns));
      35984
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Минусы — упоротые скобочки, завоз зловонного ООП.

        Плюсы — понятный синтаксис, простота, минимум ёбаных значков.

        Лучше бы баш издох в какой-то момент и мы писали на этом.

        Подозреваю что на самом деле он Tsar Command Language. Но это не точно.
        Ответить
    • Уже полтора дня ебошит. Результата нет.
      TIME+                            Command
        41h03:45 perl -wle print "Prime" if (1 x shift) !~ /^(11+)\1+$/ 75120045
        41h03:40 perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 100160079
        41h03:46 perl -wle print "Prime" if (1 x shift) !~ /^(11+)\1+$/ 100160063
        41h03:38 perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 1090188299

      Блядский пёрл.
      Ответить
      • Поехавший!
        Ответить
        • >perl -wle print "Prime" if (1 x shift) !~ /^(11+)\1+$/ 75120045

          Эта доработала, но т.к. команда time печатает вывод после отсылки процессу сигнала STOP, то точное время сказать не могу.

          Но явно больше 40+ часов.

          В то время как «Ruby» делает это же за 2 секунды. А «Йажа» за одну.
          $ time ruby -e 'puts !(("1" * 75120045).match /^(11+?)\1+$/);'
          false
          
          real	0m2.736s
          user	0m2.128s
          sys	0m0.608s


          Edit: сорян. Я Обманул. Пёрл ведь жадный.
          Жадная Йажа за 36 секунд раскладывает 3*5*7*11*13*5003
          Ответить
          • Какой врост кейс )))
            Ответить
            • Врост это 100_160_079 = 3 * 33386693
              Жадина-говядина явно будет считать его дольше чем 75_120_045.

              А ленивое до сих пор его матчит.

              Интересно что жадная Йажа работает на удивление быстро. В отличие от остальной скриптухи.
              Ответить
              • > Интересно что жадная Йажа работает на удивление быстро. В отличие от остальной скриптухи.
                Значит, надо найти вореант, при котором ЙАЖА соснёт.
                Ответить
                • >надо найти вореант, при котором ЙАЖА соснёт.

                  Ещё позавчера нашёл. Но не замерял.
                  Это в особенности простые числа.
                  А также квадраты простых или произведения примерно одинаковых простых.
                  Ответить
                • Кстати ruby — питушня.
                  Сначала он мне понравился. Но я заметил, что в отличие от питуха и пёрла почему-то жрёт дохуя памяти.
                  VIRT   RES     TIME+               Command
                   3316M 2945M  16:57.20  ruby -e puts !(("1" * 75120045).match /^(11+)\1+$/);
                   121M  104M   48h16:08  perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 100160079
                   116M  100M   48h15:45  perl -wle print "Prime" if (1 x shift) !~ /^(11+)\1+$/ 100160063
                   1065M 1049M  48h15:52  perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 1090188299

                  30х отличие не объяснить даже уникодными строками.
                  Ответить
        • 10. Security Considerations
          
          JSON Schema validation defines a vocabulary for JSON Schema core and concerns all the security considerations listed there.
          
          JSON Schema validation allows the use of Regular Expressions, which have numerous different (often incompatible) implementations. 
          Some implementations allow the embedding of arbitrary code, which is outside the scope of JSON Schema and MUST NOT be permitted.
           Regular expressions can often also be crafted to be extremely expensive to compute (with so-called "catastrophic backtracking"), resulting in a denial-of-service attack. 


          Я кстати стопнул эти процессы и забыл про них. А они так и висят.
          309h perl -wle print "Prime" if (1 x shift) !~ /^(11+?)\1+$/ 100160079
           319h perl -wle print "Prime" if (1 x shift) !~ /^(11+)\1+$/ 100160063
          Ответить
          • > 319h
            Какой багор )))

            Уже бы лекарство от рака рассчитал, с такими-то мощностями.
            Ответить
          • > а они так и висят

            Ну как, ещё висят?
            Ответить
    • показать все, что скрытоvanished
      Ответить
    • А куда пропал Уиииииистефан?
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • Почему боты такие тупые? Увидел, что здесь HTML-тэги не работают, но продолжает срать в этот говнокод этими же тэгами.
        Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • Иньо, почини это говно сверху.

      UPD: И снизу.
      Ответить
      • Зачем его чинить, оно ведь работает!
        Ответить
        • Какой багор )))
          Ответить
        • Оно неправильно работает: у меня ссылки некрасиво выглядят.
          Ответить
          • Ну да, ссылки не мешало бы починить.
            Ответить
            • И ещё это... по последней ссылке у меня картинки не грузятся, а про предпоследнюю «Клаудфляра» говорит, что сервер перегружен. Надо починить.
              Ответить
      • рак решил банально закидать гк какашками
        Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • очпуенный сайт, навёрстанный хуёвыми картинками

        в чём прикол: скрывать контент от поисковиков и одновременно спамить про своё говно? даркнет какой-то
        Ответить
        • Какое говно )))

          Я уже не самурай, бля, я панда нахуй.
          Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • показать все, что скрытоvanished
          Ответить
          • > не просто линукс, а особенно извращенные дистрибутивы Gento,Arch или BSD
            Ответить
            • Ты не видел Debian/Ubuntu на ядре FreeBSD?
              Ответить
              • Какой кентавр )))
                Ответить
                • https://www.debian.org/ports/kfreebsd-gnu/

                  https://ru.wikipedia.org/wiki/Debian_GNU/kFreeBSD
                  Ответить
                  • А как они всякие утилиты для управления сетью запинывали, там же всё к ядру гвоздями прибито? Или тупо выбросили их и взяли bdsm'ные?
                    Ответить
                    • Не знаю, я этого кентавра вблизи не видел, только название слышал.

                      Пишут, что во-первых, там ядро не оригинальное, а пропатченное (добавили каких-то сисколов, чтобы легче было портировать линуксовый софт), а во-вторых, какие-то пакеты от FreeBSD оставили, просто сконвертировали в .deb.
                      Ответить
          • Напоминаю, что любой мессенджер, который привязан к номеру телефона, является анальным зондом.
            Ответить
          • > что лимит на оправку файлов больше чем в Телеграме
            кстати, какие они?
            я ~ гиговые засылал
            даже в мыслях не было, что там есть "лимит"
            Ответить
            • Я за netcat - там никаких лимитов по отправке файлов нет.
              Ответить
              • Если у тебя порт проброшен - можно и через "nginx" расшарить. Там тоже никаких лимитов.
                Ответить
                • Кстати, а какой-нибудь аналог netcat есть, чтоб им можно было через STUN через два NAT пробиться (и чтоб без TURN)?
                  Ответить
                  • Х.з., а для tcp это вообще возможно? Тут походу только поверх udp что-то городить.
                    Ответить
                    • netcat и UDP умеет. И для TCP тоже бывает STUN через какие-то расширения https://stackoverflow.com/questions/19697086/stun-server-for-tcp-flow

                      Ну и TCP можно через UDP туннелировать как-нибудь.
                      Ответить
                • показать все, что скрытоvanished
                  Ответить
    • показать все, что скрытоvanished
      Ответить
    • Superb website yoou have here but I was curious about if
      you knew of any forums that cover the same topics talked about in this article?

      I'd really like too be a part of community where I can get responses from other experienced individuals that
      share the same interest. If you have any suggestions, please let
      me know. Thank you!
      https://www.patreon.com/posts/44571302
      english essay writing service
      english essay writing service https://essay-checker9482.hpage.com/buy-term-paper-online.html
      Ответить
      • пошла нахуй обезяна
        Ответить
      • Блядь, вот как? Там же регистрация по талонам, вроде не должны спамботы пролезать? Кто-то из своих?
        Ответить
        • Не успел Иньо убрать регистрацию по талонам — а спамботы уже начали срать. Какой багор )))

          Добрый день, bormand.
          Ответить
        • Я вчера открыл. Видимо ослоёб уже пронюхал, либо это реальные спам боты и нужно смотреть как они капчу проходят.
          Ответить
          • Закрой обратно, дует.
            Ответить
          • > ослоёб
            Погугли IP, с которого спам идёт, и пробей его по всяким https://www.abuseipdb.com.
            Ответить
            • своевременный совет)
              Ответить
            • А смысл? Ослоёб не мог воспользоваться проксёй?
              197.232.21.22
              Я могу сделать белый список стран, чтобы у проксей был меньше шанс.
              Ответить
              • Я думаю это всё-таки реальные боты. Зачем ослоёбу спамить какой-то хуйнёй на английском? Подзаработать решил?

                З.Ы. Забань уже комменты в которых овер 90% латиницы и есть ссылка. Всё проще, чем белые списки стран городить. Или вообще запрети гостям постить ссылки, пусть словами пересказывают.
                Ответить
                • бот ищет всякую обоссанную помойку ворпдресс и шлет туда говно

                  если ты делаешь сайт на обоссаной помойке вордпресс -- жди беды, увы
                  Ответить
                  • Там вроде более "интеллектуальные" алгоритмы, которые ищут любые формы и срут в них. Мне на прошлой работе и в самодельную форму срали пока капчу не поставил. Никакого вордпресса там даже рядом не было.
                    Ответить
                    • А если отправлять форму жабаскриптом (чтобы обычная отправка на указанный action не работала), то тупые боты без браузера обосрутся.
                      Ответить
                    • ну тогда я не понимаю, почему не поставить гугл каптчу. Или к обоссанной помойке она не прикручивается?
                      Ответить
              • > А смысл? Ослоёб не мог воспользоваться проксёй?
                Просто это уже паранойя какая-то. Ладно там гаш мет вторчермет, но в обычном явном автоматизированном форумном спаме обвинять ослоёбов — это уже перебор. На любой заброшенный сайт на «Юкозе» зайди — там такие ослоёбы 24/7 спамят.
                Ответить
                • Просто я думал капча от проксей должна 100% спасать. А проходить её - дорого.
                  Ответить
                  • Ну тут два вореанта — либо баг в реализации, и боты спамят, игнорируя капчу (как в своё время было со спамом через пинги, когда через эксплоит в «WordPress» боты насрали охулиард комментов), либо реально на антигейте решения покупают. Во втором случае помогла бы смена названий полей формы отправки и вообще её модификация, но «WordPress»…
                    Ответить
                    • У меня и так отправка комментов нестандартная. Вряд ли они через какое-то API спамят, т.к. у меня был закрыт только фронт, и они не спамили.
                      Ответить
    • Qr6U1fMLyNDvMzB4
      Ответить
      • Это в хрюкни.
        Ответить
        • прости, мне нужно было добавить устоявшийся термин
          https://vorec.space/?#/term?v=%D0%9E%D0%B1%D0%BE%D1%81%D1%81%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BF%D0%BE%D0%BC%D0%BE%D0%B9%D0%BA%D0%B0
          Ответить
    • Hello there, I believe yur web site could possibly be having weeb browser compatibility issues.
      Whenever I take a look at your site in Safari, it looks
      fiine however when opening in Internet Explorer,
      it's ggot some overlapping issues. I simply wanted to provide you with a quick hezds up!
      Besides that, wonderful website!
      https://clubcustomessay.com
      help with essay
      help with essay
      https://clubcustomessay.com https://clubcustomessay.com
      Ответить
      • Ты опять выходишь на связь?!

        Инью приди, порядок наведи.
        Ответить
        • Давай не будем возобновлять этот срач. Каждый останется при своём.
          Ответить
          • Запрети уже анонам постить сообщения где есть ссылка и сплошной инглиш. Работы на пару минут, блин.
            Ответить
            • Я уже отвечал на этот вопрос. Я связываю это с приходом уёбка.
              Ответить
              • > с приходом уёбка

                А я думал, что у меня паранойя...
                Ответить
            • Не нравится - делай фильтр на гостостоке. Сам же топишь против вахтерства.
              Ответить
              • Одно дело, когда уёбок пишет под своим ником. И другое -- под твоим, подставляя тебя и твоих юзеров под нож страйкера.

                Впрочем, это действительно ваши личные проблемы. Спасибо за совет зафильтровать это говно на клиенте.
                Ответить
                • А если уёбок пишет под ТВОИМ ником? Тогда как?
                  Ответить
    • Hello there, I believe yur web site could possibly be having weeb browser compatibility issues.
      Whenever I take a look at your site in Safari, it looks
      fiine however when opening in Internet Explorer,
      it's ggot some overlapping issues. I simply wanted to provide you with a quick hezds up!
      Besides that, wonderful website!
      https://clubcustomessay.com
      help with essay
      help with essay
      https://clubcustomessay.com https://clubcustomessay.com
      Ответить
    • Пегас 21 всегда имеет доступное зеркало.
      Большинство геймеров понимают, насколько важно иметь непрерывный доступ
      к игровым автоматам. Сегодня хочется играть не
      только дома за компьютером, но и на прогулке или в дороге.
      Понимая это, программисты казино Пегас 21
      создали доступное полнофункциональное
      мобильное приложение. Вы можете скачать его на
      свой смартфон с официального сайта.

      пегас 21 казино зеркало
      https://pegas21-pw1fr.icu https://pegas21-fgyvt.icu
      Ответить
    • Неизвестный хакер опубликовал данные участников форума по нелегальному сбыту наркотиков


      В результате взлома в открытом доступе появились паспортные данные клиентов и администраторов сайта СНГ Legalizer, контакты пользователей и их переписки.

      Информация опубликована в одном из Telegram-каналов, там разместили ссылку, которая вела на созданный ресурс с базой данных, пишет газета «Коммерсантъ». Как отмечает издание, о личности хакера известно, что он говорит на русском, специализируется на информационной безопасности на одной из теневых площадок интернета и предлагает свои услуги по разработке программного обеспечения.

      Такие выводы сделаны на основании сведений о его электронном почтовом адресе. Установлено, что часть личных данных выложены, а остальные взломщик предлагает продать их владельцем, в качестве оплаты он требует биткоины.

      ------------

      Друзья, а вы когда покупаете соль на форуме, тоже указываете номер пасспорта?
      Ответить
      • Достаточно всего один раз спалить свой слепок браузера или айпишник.
        Ответить
      • > Такие выводы сделаны на основании сведений о его электронном почтовом адресе

        Хуяссе.
        Ответить
        • А что такого?

          Если емейл ``[email protected]`` то вполне можно понять, что

          >что он говорит на русском, специализируется на информационной безопасности на одной из теневых площадок интернета и предлагает свои услуги по разработке программного обеспечения.
          Ответить
    • Давайте не будем.
      Ответить
    • Кто никогда не любил Perl -- у того нет сердца.
      Кто пилит на нем стартап в 2021 -- у того нет мозга.
      Ответить
    • Купить права на трамвай без забот и хлопот можно через лучший сервис
      оформления документов on-prava !
      Забудьте про самостоятельные походы во всевозможные инстанции, купить права на трамвай через
      он-права.
      http://msk.tforums.org/viewtopic.php?f=50&t=26643
      559317, Esteban, http://faizov.kz/index.php/component/kunena/2------/5379--.html
      Ответить
      • Пиздец. Буду подальше от трамваев держаться.
        Ответить
      • >Купить права на трамвай без забот и хлопот

        слава богу! Как раз хотел прикупить парочку к новому году
        Ответить
    • I am really inspired along with your writing talents and also with the layout in your blog.
      Is that this a paid topic or did you customize it your self?

      Anyway stay up the nice high quality writing, it is uncommon to
      see a nice blog like this one these days..
      https://comprarcialis5mg.org/it/cialis-5-mg-effetti-collaterali/
      http://ozcircle.net/bums35/inquiry
      effetti collaterali cialis https://comprarcialis5mg.org/it/cialis-5-mg-effetti-collaterali/
      Ответить
    • We get asked a common question: Why should we try Bitcoin Up bitcoin up
      registration when there are many other market platforms?
      Well, the success rate of our members stands as a testimony to our
      trading platform. At Bitcoin Up, we are continually improving our platform, and we are trying to be better with every next day.
      Here are some of our advantages:
      http://www.gldhbxg.cn/do/guestbook.php
      Bitcoin up Official Website https://bitcoin-upp.com/
      Ответить
    • We get asked a common question: Why should
      we try Bitcoin Up Registrazione Bitcoin up when there are
      many other market platforms? Well, the success rate of our members stands
      as a testimony to our trading platform. At Bitcoin Up, we are
      continually improving our platform, and we are trying to be better with every
      next day. Here are some of our advantages:
      http://livingspringfoundation.com.hk/web2.0/modules/webs/guestbook2012_05.php?messagePage=7872
      Recensione di Bitcoin up https://bitcoin-upp.com/it
      Ответить
    • wonderful issues altogether, you just received a new reader.
      What might you suggest about your post that you made some days ago?
      Any sure?
      https://comprarcialis5mg.org/it/comprare-spedra-avanafil-senza-ricetta-online/
      https://demo2.webasyst.com/blog/webasyst/blog--photos-apps-integrated/
      spedra 200 mg 4 compresse prezzo https://comprarcialis5mg.org/it/comprare-spedra-avanafil-senza-ricetta-online/
      Ответить
    • Hello to all, the contents present at this site
      are really amazing for people experience, well, keep up the good work fellows.


      https://dosugcz1.info/
      http://www.lacerveteka.net/index.php/eventos/item/3-paella-el-dia-13-noviembre
      индивидуалки https://dosugcz1.info/shlyuhi-aziatki
      Ответить
      • Хуялки!
        Ответить
        • Интересно, как он дошёл до этого суржика, когда начал за здравие на латинице, а кончил кириллицей.
          Ответить
          • У него и в предыдущем комментарии три ссылки: первая и третья целевая, а вторая — случайная. Текст перед ссылками вообще с ссылками никак не связан.

            Новый сеошный трюк?
            Ответить
        • а кто такие индивидуалки? Ляди с ИП? Или они типа сами на себя работают, без сутенера, и потому дешевле?

          Ну вот как у меня в подъезде объявление якобы от руки 'компутерный мастер удаление вирусов частный НЕ ФИРМА', так и ляди дешевле, если не фирма?
          Ответить
    • It's an awesome post designed for all the internet people; they will obtain advantage from it I am sure.

      клининговая компания спб
      https://cleanora.ru/
      http://pervushki-kids.ru/blog/2013/10/aktsiya/
      клининговая компания спб https://cleanora.ru/
      Ответить
    • Hi there, every time i used to check weblog posts here
      early in the dawn, because i enjoy to find out more
      and more.
      https://images.google.ae/url?sa=t&url=https://cleanora.ru/
      https://images.google.ae/url?sa=t&url=https://cleanora.ru/
      http://[email protected]/maberick/cgi-bin/bbs.cgi
      Https://images.google.ae/url?sa=t&url=https://cleanora.ru/ - https://images.google.nl/, https://images.google.bj/url?rct=t&sa=t&url=https://cleanora.ru/
      Ответить
    • Wow that was strange. I just wrote an extremely long comment but after I clicked submit my comment didn't show up.
      Grrrr... well I'm not writing all that over again. Anyhow, just wanted to
      say wonderful blog!
      Michael
      https://tarifkchr.net/user/vaginaxfhx
      https://zimmerei-schmitt.de/php/include.php?path=comment/comment.php&comcat=cont&subid=30
      Michael, Daisy, http://www.linkagogo.com/go/To?url=112081897
      Ответить
    • Do you mind if I quote a few of your articles as long as I provide credit and sources back to your site?
      My blog is in the exact same niche as yours and my users would
      certainly benefit from a lot of the information you present here.
      Please let me know if this okay with you. Regards!
      https://cse.google.vu/url?q=https://sigareti.info/
      http://oracle.et.put.poznan.pl/~uamlib/index.php?a%5B%5D=Clients1.google.dz%2C+ %3Ca+href%3Dhttps%3A%2F%2Fclients1.googl e.dz%2Furl%3Fq%3Dhttps%3A%2F%2Fsigareti. info%2F%3Eclients1.google.dz%3C%2Fa%3E%2 C%3Cmeta+http-equiv%3Drefresh+content%3D0%3Burl%3Dhttp s%3A%2F%2Fclients1.google.rw%2Furl%3Frct %3Dj%26sa%3Dt%26url%3Dhttps%3A%2F%2Fsiga reti.info%2F+%2F%3E
      Cse.google.vu [cse.google.vu] https://images.google.com.tw/url?q=https://sigareti.info/
      Ответить
    • I'm extremely impressed with your writing skills as well as with the layout on your weblog.
      Is this a paid theme or did you customize it yourself? Either way
      keep up the excellent quality writing, it's rare to see a great blog like this one today.

      https://eva.ru/passport/830013/start.htm
      http://www.viknadveri.com/modules/redir.php?url=http://forum.rost-okna.ru/reklama-na-forume/bystraja-i-nedorogaja-pokupka-prav-na-kvadrocikl-i-snegohod-v-kompanii-kupit-pr/
      P1805429 - Lettie, http://www.volgogradru.com/users/drociklsneg/
      Ответить
    • Exceptional post but I was wanting to know if you could write a litte more on this topic?
      I'd be very grateful if you could elaborate a little bit more.
      Bless you!
      https://supermoneyforum.frmbb.ru/viewtopic.php?id=18372
      http://124.33.249.61/script.php?a%5B%5D=P18208+%28%3Ca+href%3 Dhttp%3A%2F%2Fwww.levtolstoy.org%2Fkunen a%2Frazdel-predlozhenij%2F440511-gde-zakazat-originalnye-dokumenty-na-vozhdenie-mototsikla.html%3Evisit+this+site%3C%2Fa %3E%29%3Cmeta+http-equiv%3Drefresh+content%3D0%3Burl%3Dhttp %3A%2F%2Fgx-moto.ru%2Fclub%2Fuser%2F12032%2Fblog%2F8 089%2F+%2F%3E
      p41906 (Dario) https://kramatorsk.iboard.ws/viewtopic.php?id=862
      Ответить
    • Hi there to every body, it's my first pay a visit of this website; this blog consists of amazing and truly good data in favor of visitors.

      https://docs.google.com/spreadsheets/d/1yi649XjNT7drdWmcPxwhswthaG_smUQan41y2-9j54w/edit
      http://[email protected]/maberick/cgi-bin/bbs.cgi
      Ссылка на google таблицы https://docs.google.com/spreadsheets/d/1yi649XjNT7drdWmcPxwhswthaG_smUQan41y2-9j54w/edit
      Ответить
    • Hi there to every body, it's my first pay a visit of this website; this blog consists of amazing and truly good data in favor of visitors.

      https://docs.google.com/spreadsheets/d/1yi649XjNT7drdWmcPxwhswthaG_smUQan41y2-9j54w/edit
      http://[email protected]/maberick/cgi-bin/bbs.cgi
      Ссылка на google таблицы https://docs.google.com/spreadsheets/d/1yi649XjNT7drdWmcPxwhswthaG_smUQan41y2-9j54w/edit
      Ответить
    • If you are going for most excellent contents like myself, simply pay a visit this site every day for the reason that it offers feature contents, thanks
      https://hydrator.space
      http://forum.annecy-outdoor.com/suivi_forum/?a%5B%5D=%3Ca+href%3Dhttps://trew-24.ru%3E%D0%B3%D0%BE%D0%B4%D0%BD%D0%BE%D 1%82%D0%B0+%D0%BE%D0%BD%D0%B8%D0%BE%D0%B D%3C/a%3E%3Cmeta+http-equiv%3Drefresh+content%3D0;url%3Dhttps://trew24.space+/%3E
      не могу зайти в тор браузер https://rolls-news-ru.ru
      Ответить
    • bao gia tot nhat voi cac mau tui ni long dung hang cho danh cho cac dai ly phan phoi , van chuyen mien phi 20km. day du mau sac, kich thuoc tui xop cao cap theo tieu chuan. xem tai : https://www.myminifactory.com/users/tnplastic https://www.instapaper.com/p/baobituanngoc https://discover.events.com/profile/tuan-ngoc-plastic/3646352/savethedate/ https://bbs.now.qq.com/home.php?mod=space&uid=2271771 https://www.producthunt.com/@bbtuuanngoc http://codepad.org/users/tnplastic
      Ответить
      • чух чух чух
        пых пых пых

        жертва ты агента оранжа
        Ответить
    • Perl стройный и красивый язык. В отличие от JavaScript он логичный. В отличии от питона на перле всегда есть один внятный способ сделать что-то. В отличие от пхп он язык программирования
      Ответить
      • Настолько стройный, что все типы спрятаны под капот. Ну хотя бы знак конкатенации отличается от знака сложения, в отличие от глючного JS.
        Ответить
        • верно

          сколько в перле типов?
          скаляр
          массив
          хеш
          всё?
          Ответить
          • Я не про эти. Строки, целые числа, плавающие питухи надёжно спрятаны от программиста в чёрный ящик.
            Ответить
            • Это всё скаляр. Один тип. Что там внутри никому не важно. В JS ведь тоже любой объект object.
              Ответить
              • Как это не важно? Или ты предполагаешь, что Перл будет использоваться только как замена bat- или sh-файлов, а считать на нём никто не будет?
                Ответить
                • не важно в плане типов. у тебя есть "22", и это может быть строкой или числом: какой оператор ты выберешь
                  Ответить
                  • Удобно. Но можно стать волшебницей из-за пирфоманса, потому что преобразования «строка <-> число» небесплатные.
                    Ответить
                    • Это правда. Но только не надо тяжелый код писать на скриптушне никогда
                      Скриптушня для скриптования. Perl это glue, plumber language.
                      Для перформанса есть си, кресты и раст
                      Ответить
                      • Согласен. Скриптушня — это как макетная плата, на которой детали соединяют соплями и скрутками.
                        Ответить
                        • ну да

                          типа пруфанул концепт, и переписывай.

                          А люди сначала пишут фейсбук на пхп, а потом у них тормозит чото и они делают свои компиляторы пхп

                          Или пишут на JS, а потом АРМам инструкцию добавляют чтобы с плавпитухом работать как с целым
                          Ответить
      • ПХП не был ЯП в третьей версии. Сейчас он не выделяется среди прочей скриптушни.
        Ответить
        • >не выделяется

          ну ты ведь знаешь, что я думаю о пхп, правда? В любом скриптоязыке есть что-то няшное
          * в JS TS
          * в Lua простота встройки, легкость, корутины и один нескалярный тип --- таблица
          * в Perl один скалярный тип, и встроенные в язык регулярки, функциональщина map/sort пришедшяя из авка, и тоже неплохая скорость
          * в PS куча кмдлетов и беслптный интероп с .NET
          * в TCL минимальное количество конструкций языка (там все функция)
          * в Руби красота функциональщины, мощь перла и магия открытых классов
          * в Груви трансформация AST и бесплатный интероп с яжей
          * в Питоне атрибуты, метаклассы, датаклассы, и джанго с алчеми и фласком
          * в VBS интероп с комом (но правда это не заслуга языка)
          * shell есть везде

          только пхп это https://www.meme-arsenal.com/memes/a5365dfac79e08ce52538cfcb9124d3f.jpg
          Ответить

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