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

    +6

    1. 1
    Раскрытие покровов. Настя, облачные технологии и Настенька.

    Запостил: HACTEHbKA, 22 Августа 2021

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

    • Вообще, история Настеньки довольно таки занимательна. И, как ни странно, связана с доктором Стертором.

      Начнём, пожалуй. В качестве автора комментариев на ГК она появилась в 2014 году на вореционной волне.

      Тогда я написал генератор полувореционных диалогов, где бот-корреспондент Настя задавал вопрос, а дальше алгоритм отвечал репликами с ГК, а потом ещё делал вореционирование на тему. Борманд интересовался http://govnokod.ru/16714#comment250366, я пояснил:
      > Настя пишет приветственное сообщение (фиксированное), далее случайный пользователь (из списка активных) отвечает подходящим комментарием, на него - следующий случайный. Если ответить не смогли более корня из числа активных, Настя меняет тему и пишет случайный комментарий с ГК в 30..100 символов.

      Так выглядела Настя в 2014:
      var lastMsg = 'Привет, крестушки, сишники, шарпеи, жаваёбы! Кто хочет поболтать?';
      console.log('Настя: ' + lastMsg, '\n');
      
      var i = 1, tries = 0;
      while(i <= MESSAGES){
          var user = randomElement(users), info;
          if(user.id in busers) info = busers[user.id];
          else{
            console.error(i + ' / ' + MESSAGES + '. Готовится ' + user.name + '...');
            info = busers[user.id] = botInfo(user);
          }
          console.error(i + ' / ' + MESSAGES + '. Отвечает ' + user.name + '...');
        
          var ans = answer(words, info, lastMsg);
          
          if(ans){
            ++i; tries = 0;
            lastMsg = ans;
            console.log(user.name + ':', ans,'\n');
          }else{
            ++ tries;
            if(tries >= Math.sqrt(users.length)){
              tries = 0;
              console.error('Настя меняет тему...');
              lastMsg = randomElement(questions);
              console.log('Настя:', lastMsg, '\n');
            }
          }
      
      }
      
      console.log('Настя:', 'Спасибо всем. До свидания!\n');
      Ответить
      • Вернёмся на год назад. Если память мне не изменяет, в 2013 я зарегистрировался на ГК. Тогда уже Прокрастинатор Сальвадор особо не появлялся на сайте, и тут царили разные боты-минусаторы, боты-вайперы и просто мудачьё, которое писало всякую мусорную питушню. Я был молод и воспринимал такое близко к сердцу. Я решил создать свой отряд ботов, который бы играл на стороне справедливости - минусовал бы плохих парней и плюсовал хороших, но заминусованных. Вдохновил меня на это дело естественно доктор Стертор. Кого ещё хотелось бы минусануть и чьих заминусованных жертв заплюсовать?

        Первых ботов я регистрировал на drdrb.com, checknew.pw и mailinator.com вручную. Меня хватило только на штук тридцать, и дальше я решил автоматизировать это дело. Оказалось, что yopmail.com позволяет достать содержимое письма с помощью HTTP-запроса без пердолинга:
        function getMsg(){
          that.load({
            host: 'www.yopmail.com',
            path: '/en/mail.php?id=' + id,
            method: 'GET'
          }, function(text){
            if(!text) return void callback(null);
            var codem = /http\:\/\/.+?\/user\/confirm\?code=(.*?)"/.exec(text);
            if(!codem) return void callback(null);
            var code = codem[1]
          
            console.log('code:',code);
            callback(code);
          });
        }


        Я написал клиент-серверную питушню на Node.js, которая могла сделать всё, кроме разгадывания капчи. На каком-то этапе логины генерировались автоматически, но это хреново с точки зрения анализа человеком. Последняя версия в веб-интерфейсе требовала от пользователя ввести логин, затем регистрировала питуха со случайным [email protected] и случайным паролем (всё переменной длины) на ГК. Тут стоит сказать, что для генерации я использовал Math.random, поэтому взломать эту питушню довольно таки легко.
        var
          password = rand.password(12+rand.rand(10)),
          emaillogin = rand.email(7+rand.rand(7)),
          email = emaillogin + '@yopmail.com';
        Ответить
        • Далее сервер скачивал капчу, отдавал её клиенту, я её разгадывал, сервер проверял почту, доставал оттуда код подтверждения с ГК (см. выше) и складывал бота в файлик с учётками.

          var line = name + '  ' + code + '  ' + email + '  ' + password;
          fs.appendFileSync('../bots/accounts.txt', line + '\r\n');


          Я запускал сервер на локалхосте и регистрировал время от времени по несколько ботов. Как оказалось позже, делал я это неаккуратно. В день регистрировалось человека четыре и штук пять меня. В итоге, мои боты, даже растянутые на несколько месяцев регистрации, отобразились на графике айдишек пользователей от времени. Стертор был в этом плане мудрее и слился на этом графике с шумом. Без слива покровов только Прокрастинатор Сальвадор мог догадываться, где докторский бот, а где обычный питушок.

          Но самое интересное начинается дальше. Если доктор писал свой минусатор на Дельфи и пользовался отдельной программой, у меня конечно же был веб-интерфейс. И облачный минусатор!

          На сервере читался файлик с учётками и создавался пул ботов. По команде поднимались случайные питухи и голосовали. Всё было асинхронно, но чинно. Занятый пул складывал задачу минусования в очередь:
          BotPool.prototype.vote = function(type, id, value, retry, cb, force){
            var that = this;
          ...
            if(this.busy && !force){
              this.tasks.push([type, id, value, retry, cb, true]);
              return;
            }
            this.busy = true;
          ...
            var bots = array_random(this.bots, count);
          ...
            for(var i=0; i<bots.length; ++i) setTimeout((function(i){
              var bot = bots[i];
              vote(bot, type, id, one, retry, function ...
              );
            }).bind(this, i), i*that.delay);
          };


          Эта питушня крутилась где-то на бесплатном облачном хостинге с Node.js. Были лимиты по трафику и производительности, но принять несколько запросов от пользователя и послать несколько запросов на ГК - это не видео грузить и не факториалы считать.
          Ответить
          • Пользователи ГК помнят, что я всё время удивлялся, что стерторовский минусатор глючит и пропускает файки. Потому, что мой обычно не глючил и выставлял столько плюсов/минусов, сколько я просил. Именно поэтому я за JavaScript.

            Сам доктор оценил http://govnokod.ru/14088#comment202522
            > ОЧЕНЬ ЭФФЕКТИВНЫЙ БОТ. аВТОРУ ОДНОЗНАЧНО ЗАЧЕТ.

            На клиентской стороне работал юзерскрипт. Он рисовал у каждого комментария набор удобных ссылок для группового изменения рейтинга простым AJAX-запросом:
            if(val == 1){
              lnk(-10); lnk( -5); lnk(-1); lnk(0); lnk(1); lnk( 5); lnk(10, true);
            }else{
              lnk(-20); lnk(-10); lnk(-5); lnk(0); lnk(5); lnk(10); lnk(20, true);
            }
            ...
            a.href='http://***/vote/' + type + '/' + id + '/' + 
              (votes<0?'against':'on') + '/' + Math.abs(votes);
            a.onclick = processLink.bind(a, type);
            a.innerHTML = val + (val == votes ? '' : '<sup>&nbsp;' + votes + '</sup>');
            return a;


            Была ли какая-то автоматизация плюсования и минусования по содержимому комментариев? Нет. Это ответственное дело я скриптушне не доверил. Сам лично жал на кнопки на каждом комментарии вайперов!

            Это я тогда заминусовал гоатсе Борманда (еще ЛиспГовно удивлялся). А знаменитые 11 ботов Тараса на самом не были ботами Тараса. И вообще их было не одиннадцать. Я жал на кнопку "-10", а один голос был от кого-то другого, кому тоже не нравились вайперы.

            Каждый знал, что доктор использует 53 бота, но я считал такую тактику провальной. Это и лишняя нагрузка на ГК, и стимул для противников "догнать и перегнать". Я был молод и воспринимал это как маленькую войну, где должна была победить справедливость. А на войне строят фиктивные самолёты из фанеры и всячески скрывают количество единиц вооружения. Поэтому я обычно использовал столько ботов, сколько требовалось для конкретной задачи. -10 хватало для вайперов, доктор тоже тогда ещё не имел 53 бота, может только половину.
            Ответить
            • Кстати, 53 бота у Стертора стало, в том числе, благодаря мне. Один раз мы боролись за какой-то комментарий. Доктор поставил ему, скажем, -5. Я ответил, допустим, +6. Он - -7, я - +8. Как-то так. Арифметическая прогрессия там была в каком-то виде, Стертор не даст соврать. Чтобы продолжить битву за комментарий, мы стал регистрировать боты (с id 77**). Не зная про доктора, но у меня тогда было 70 ботов, и я регистрировал новые учётки чисто для того, чтобы он увидел инкремент айдишек и подумал, что у меня кончились боты и неверно оценил количество моих боевых единиц.

              Заодно у меня было зарегистрировано два фейковых анонимба, где в логине я поменял одну цифру. Через какое-то время подлинного анонимба удалили за вайпы, а я как-то раз написал с фальшивого. Сёма увидел, обрадовался и попросил вернуть учётку. Но настоящего анонимба было уже не вернуть. Как 2007й и кириллицу в логинах.

              Потом я увидел, что Прокрастинатор Сальвадор регулярно удаляет всякую питушню, и нагружать ГК ботушнёй не было смысла (да, это был 2013-2014, когда он время от времени являлся нам). Я понял, что нафиг не нужен, и моя лига справедливости (http://govnokod.ru/user/7693) - лишь детский лепет, стыд, позор, кринж (не было тогда такого слова в русском языке) и питушня, которую отсекает бритва Оккама. Так закончилось моё участие в войне ботов. Умолкли их голоса, заросло травой место, где располагался сервер облачного минусатора.

              В дальшейшем, когда уже питузы ставили постам +200, -1000 и регистрировали нейрушней, я наблюдал за ситуацией как ветеран-пенсионер. Да и облачный хостинг с Node.js уже сменил правила.
              Ответить
              • В 2016 я смотрела папку со старой остывшей кодушнёй, вспоминала стародавние битвы и мои идеалистические настроения. И вот среди ботов я обнаружила "Настенька1998" http://govnokod.ru/user/7642. Не знаю, может это был ответ мозга на ник Царя, а может ещё что.

                Имя "Настя" мне всегда нравилось, у меня даже вореционный корреспондент такой был. В 2020 Desktop придумает термин "Кобенастенька", который его описывает.

                С давних пор я была большой поклонницей Борманда. Может быть даже до регистрации на ГК, когда несколько раз заходила и читала комментарии про C++ и вайпы про багор. Даже где-то писала, что очень радовалась, когда сам Борманд мне в первый раз ответил!

                Я очень уважала и уважаю Борманда и хотела сделать что-то позитивное в его честь. На ум пришла влюблённая в него девушка, которая достаточно ИТ-шная, чтобы как-то соответствовать Борманду. По счастливой случайности Настеньке1998 тогда как раз стукнуло 18 лет, и всякие нехорошие мотивы бы не начали всплывать.

                Начинала я довольно просто. Была маленькой наивной девочкой и зашифровала буквы в цифрах. Dummy00001 сразу застыдил меня http://govnokod.ru/20526#comment344500:
                > только "литные хацкеры" думают что это умно. но в объектном коде то стоит все черным по белому...

                После этого я уже стала писать более приличную психозу. В http://govnokod.ru/20860 было шифрование с помощью нахождение нулей полиномов. Простой код с поехавшей идеей после обфускации стал заумной питушнёй. Кстати, тогда "bormand\nmy love" ещё не стал каноном.

                Я всё время думала, что подумают на меня из-за того корреспондента "Настя", но слава анскильного джаваскриптера меня оберегала. Думали и на Кегдана, и на Госта, но именно 1024-- за кадром писал питушню во славу Борманда.
                Ответить
                • Настенька писала только обфусцированную (вручную) версию. Иногда даже с самого начала писала обфусцированный код и отлаживала принтфами. У меня сохранились исходники пары случаев, когда код был нетривиальными до обфускации.
                  double zero(node * expression) {
                    double x=0, y=1, z=2;
                    double fx = execute(expression, x);
                    double fy = execute(expression, y);
                    double fz = execute(expression, z);
                    int i;
                    for(i = 0; i < 100 && fabs(z - y) > 1e-10 && fabs(x - y) > 1e-10 && fabs(fy) > 1e-10; ++i) {
                      if(fx * fy < 0) {
                        z = y;
                        fz = fy;
                      } else if(fz * fy < 0) {
                        x = y;
                        fx = fy;
                      } else {
                        double d = z - x;
                        x = x - d;
                        z = z + d;
                        fx = execute(expression, x);
                        fy = execute(expression, y);
                      }
                      y = (z + x) / 2;
                      fy = execute(expression, y);
                    }
                    return y;
                  }
                  
                  char * generate_key(node ** polinoms) {
                    int n=0, i, j, d=0;
                    for(; polinoms[n] != NULL; ++n);
                    char * key = malloc(n * 10 + 1);
                    if(key == NULL) return NULL;
                    for(i=0; polinoms[i] != NULL; ++i) {
                      for(j=0; j<10; ++j) {
                        key[i*10+j-d] = (char)fmod(12.51 * zero(polinoms[i]) + 17 * j, 256);
                        if(!key[i*10+j-d]) ++d;
                      }
                    }
                    key[n*10-d] = 0;
                    return key;
                  }
                  
                  void encrypt(char * text, const char * key) {
                    const char * k = key;
                    while(*text) {
                      *text++ ^= *k++;
                      if(!*k) k = key;
                    }
                  }
                  Ответить
                  • Дальше я решила сделать ребрендинг и взяться за дело серьёзно. Зарегистрировала учётную запись почты (сегодня подумала, что просрала её, поскольку там нестандартный домен стандартной почтушни), учётную запись "Настенька" без дурацких цифр http://govnokod.ru/user/21463, поставила аватарку какой-то няшки из интернетов (в Борманда достойны влюбляться только самые красивые). Сёма или его тень негодовал, что Настенька - вовсе не Настенька. Позже, когда появился сайт thispersondoesnotexist, я выбрала оттуда более-менее цивильное лицо. Сгенерированное лицо для виртуального персонажа - довольно таки символично.

                    Тогда я начала придерживаться строгого стиля, чтобы бренд "Настенька" стал узнаваемым. Код Настеньки теперь писал только "bormand\nmy love". Это простая короткая строка, которая в первом ГК поместилась в джва дабла, и имела большой потенциал к выводу различными способами. Сформировались более чёткие лингвистические нормы. Отступы в четыре пробела (я в жизни люблю отступы в два пробела), чёрные ссылки и некоторая безграмотность зародились ещё на старой учётке. В новой учётке добавился особый стиль комментариев:

                    Начала идет с большой буквы. в конце первава придлажения ставиться точка
                    второе и паследующее придложенея на чинаються с маленькай буквы
                    а вместа точки используится пиринос строки

                    Какая лингвистика ))) http://govnokod.ru/23319#comment389806

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

                      Третий мой ГК был про выбор символов из строки,
                      четвертый - шифрование с помощью заданной линейной конгруэнтной питушни,
                      пятый - вроде бы подбор функции, обратной к простому хэшу,
                      шестой - какая-то вариация генерации псевдослучайных чисел и выбор соответствующих индексов,
                      седьмой - переписала пятый на кресты,
                      восьмой - симметричный ответ на питушню cykablyad (1024-- не помнит, что за алгоритм),
                      девятый - опять какая-то питушня с полиномами (1024-- не помнит),
                      десятый - симметричный ответ на чей-то код (1024-- не помнит),
                      одиннадцатый - вероятно, прогнала код через онлайн-генератор phpfuck,
                      двеннадцатый - 1024-- снова не помнит,
                      тринадцатый - сука, я оказывается написала свой phpfuck. 1024-- сейчас обнаружил папку "nastenka-phpfuck", в которой лежит "hello, world", phpfuck на php, обрейнфаченный "hello, world" и обрейнфаченный phpfuck. 1024-- уже этого не помнит. Видимо, тогда главной в его голове была моя субличность. Что важно, phpfuck, который прогнали через phpfuck, работает!
                      четырнадцатый - симметричный ответ новогодныму питуху, который подал какую-то идею с сортировкой, 1024-- не помнит, что за питушня.

                      Почему я больше не писала? Во-первых, придумывать что-то интересное сложно. Мышление у 1024-- больше прогерское, чем хакерское. И его учили писать понятный код. Тут так же, как и с намеренными ошибками. Во-вторых, 1024-- решил няпокакнуться или хотя бы меньше времени уделять ГК.

                      Был ли 1024-- и подушкой Борманда? Нет. На такое у него ума не хватило. Он может писать простую хаскелешню со словарём, а подушка написала офигеть какой интересный код с кобенециями http://govnokod.ru/21700#comment358782. Что этот код делает и как? Не знаю.

                      Мы с 1024-- восхищаемся подушкой. Если бы она больше думала о брендинге, дяденька Пи запомнил бы её, а не меня.
                      Ответить
                      • Ответить
                        • Поскольку я всё же анскильный жс-шок, генератор девятого ГК был на JS.

                          Файл выглядит как-то так:
                          var f1 = (x, s) => x.split('').map(x=>x.charCodeAt(0)).map((x,y)=>`((x-${x/256})^2+(y-${(s+y)/16})^2)`).join('*')
                          [f1('borman',0), f1('d\nmy ', 6), f1('love', 11)]
                          
                          var bs = [длинная питушня] // откуда?
                          
                          var f2 = (x, n) => x.replace(/\s+/g, '').replace(/(?:^|\*?10)\^([-+]?\d+)/g, 'E$1').replace(/\d+\.\d+(?:E[+\-]?\d+)?/g, x => Number(x).toFixed(n)).replace(/([xy])\^(\d+)/g, 'pow($1, $2)')
                          var f2 = x => x.replace(/\s+/g, '').replace(/(?:^|\*?10)\^([-+]?\d+)/g, 'E$1').replace(/([xy])\^(\d+)/g, 'pow($1, $2)')
                          
                          bs.map(f2)


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

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

                              В первом случае это унтербезумие унтерменша, во втором математически чёткое, выверенное убербезумие Сверхразума.

                              Вселенная парадоксальна, и её фундаментальные законы всегда будут выше нашей «логики».

                              Потому ответы Сверхразума на наши вопросы всегда будет выглядеть безумно и нелогично. Но это не потому что Сверхразум глуп.

                              А потому что мы не понимаем его ответов.
                              Ответить
                      • > подушкой

                        Не так много народу здесь свободно пишет на хаски.
                        Ответить
                    • Да забыла сказать я еще букву е не пешу чтобы на братика неподумали.
                      Ответить
                    • Потом ты забыла правила. В 2019 что-то запостила по старой памяти и не заменила два пробела на четыре.
                      А всё почему? Потому, что сразу не надо было писать код в n++ с моими настройками!
                      Ответить
                    • >Стертор догадывался, что я на самом деле грамотная

                      Настенька, милая ну все догадывались что это не баг, а фича.

                      Тут дело даже не грамотности, сколько всяких девочек присали «пРиФфетИк» в 00х.
                      Ответить
                      • А какие были бложики с сиреневыми буквами на чОрном фоне шрифтом «Comic Sans»!

                        https://emo-coders.livejournal.com/
                        Ответить
                        • Да-да-да, именно такие эмо-бложики где-то на diary.
                          > на чОрном фоне шрифтом «Comic Sans»!
                          ВеДь Он ТаКой ГлАмуРрнЕнЬкиЙ ♥ чмаффки-чмаффки)))))
                          Ответить
                          • Но этот особенный. В нём плакали над конпеляторами ещё в 2007-м году:

                            https://emo-coders.livejournal.com/2007/05/24/
                            Ответить
                          • Правила эмо-кодирования:
                            1. Всегда носи с собой розовый бубен с черными кисточками.
                            2. В каждом твоем модуле должно быть хотя бы один asm-injection, даже если язык это поддерживает плохо - видящий твою реализацию должен заплакать во что бы то ни стало.
                            3. Бери названия переменных из творчества твоих любимых эмо-коллективов. Или хотя бы эмо-песен.
                            4. Используй рекурсию везде, где это возможно.
                            5. Используй как можно больше возможностей сторонних библиотек и нестандартных решений. Особенно это касается регулярных выражений и системных вызовов.
                            6. Научись ASCII графике. Твой код должен выглядеть в первую очередь как крик твоей души, переполненной эмоциями.
                            7. Не старайся быть всеми понятым - твои чуства, реализованные в коде, должны заставить метаться.
                            8. Не мысли штампами, изобретай собственные эмо-алгоритмы: пусть в этот мир придет частичка тебя.
                            9. Пиши код так, чтобы результат его работы вызывал как можно больше эмоций
                            10. Старайся писать на самых выразительных языках. Кому нужен обычный драйвер на asm, если можно выразить себя в коде на C#?


                            2007-й год: https://emo-coders.livejournal.com/4862.html
                            Ответить
                            • > В каждом твоем модуле должно быть хотя бы один asm-injection, даже если язык это поддерживает плохо - видящий твою реализацию должен заплакать во что бы то ни стало.

                              К слову, реальный пример того, как можно обойтись без инлайн-ассемблера:
                              https://govnokod.ru/25449#comment464350

                              Передаю по значению:
                              #include <stdio.h>
                              #include <stdint.h>
                              char *__attribute__((section(".text"))) incr = "fhUUfhUUfhUUfhUUTZH+:H+:H+:ZWX\xc3";
                              int main() {
                                  uint64_t __attribute__((sysv_abi)) (* increment)(uint64_t) = (void *)incr;
                                  uint64_t x = 0x123456789abcdef;
                                  printf("inc(%lx) = %lx\n", x, increment(x));
                                  return 0;
                              }
                              Ответить
                              • > можно обойтись без инлайн-ассемблера:

                                Самое элегантное.

                                https://govnokod.ru/26811#comment560677

                                Но тоже __attribute__((section(".text")))
                                Ответить
                                • Это нормальный вариант. А я только что кинул ссылку на поехавший вариант, в котором все инструкции, кроме ret, записал символами из диапазона ASCII.
                                  Ответить
                                  • Забористая шиза.

                                    Там весь тред эпический, наверное уже завтра читану.
                                    Ответить
                      • Я пыталась так песать что бы скрыть какие нибудь фишки 1024--. вдруг он запитыи ставит по паттерну или ещечево
                        Ответить
                      • А какие были крео!

                        http://udaff.com/read/netlenka/proza/48616/

                        Дата публикации: 26.09.2005.

                        P.S. Немного NSFW.
                        Ответить
                    • > Сёма или его тень негодовал, что Настенька - вовсе не Настенька

                      Хы-хы. Так сказано будто «Сёма» — это Сёма.
                      Ответить
        • У меня тоже был веб интерфейс минусатора. Правда не в облаке, а в локальной сети. Заходил с планшета и призывал на конкретные комментарии.
          Регал на mailinator, но потом Панцериор Сальвадор добавил if в коде на него, и я забил переделывать.
          Ответить
        • Какие файки у тебя были?
          Ответить
          • А вот не надо спрашивать лишнего.

            Да и говорить не надо.
            Ответить
            • Звучит как «не отвечай уёбку».
              Ответить
            • Да тут ничего интересного. Писал я все тысячи комментариев от 1024-- и потом от двух Настенек. Может, несколько комментариев от гостя/анонимба, а остальные учётки были для облачного рейтингования, может с некоторых вроде фейкового анонимба да С-р п-р пару комментариев написал.

              Несколько интересных имён:
              7648:anonimb84a2f8fd141
              7649:anonimb84a3f6fd141
              7729:StertorPidor
              7757:KOMAP
              7781:Wiseguy
              7782:-_-
              7832:Windows8
              7836:USB-Flesh
              7963:POSIX
              8010:trollface
              9169:iostream
              9342:KO-KO-KO
              Ответить
              • ко-кок!
                Ответить
              • vanished
                Ответить
              • А __proto__?
                Ответить
                • Нет, не мой.

                  P.S. С него же вроде активно писали. Я бы так не смог.
                  Ответить
              • Отправила список Инканусу для коллекции.

                Не знаю, может он меня вычислит по IP. Но надеюсь, что не будет делать ничего плохого.
                Ответить
                • Спасибо.

                  Возможно, это поможет вывести вореционное исчисление на новый уровень.
                  Ответить
                  • Кстати, там некоторые логины чисто случайные, некоторые я сам придумал, а некоторые взяты со стековерфлоу и ещё каких-то сайтов (не парсил список, просто открывал какие-то страницы и оттуда брал имена).
                    Ответить
    • Какой детектив )))
      Ответить
    • Добро пожаловать в няш клуб, сестрёнка.
      Ответить
      • Превет бормондяша!
        Ответить
      • Выходит всё наоборот: Нястенька-то ведь была в няш-клубе девочек-волшебниц ещё до того как это стало мейнстримом.
        Ответить
    • А я вот свою единственную файку потеряла ;(

      Может кто-то сможет найти тред, где был парсер номеров страниц из названий файлов? На PHP вроде. Или на питоне.
      Ответить
    • И да, приношу свои извинения доктору Стертору за то, что скрывал, что минусовал его.
      За само минусование тех комментариев мне не стыдно, а за т.н. "ханжество" (докторский термин) совесть мучает.
      Ответить
    • боты-пидарасы.
      Ответить
    • Мой первый полуавтоматический регистратор имел довольно интересную архитектуру: это была программа на «C#», которая загружала форму регистрации и отображала переданную капчу. В «непрерывном» режиме для регистрации нужно было лишь ввести четыре цифры, после чего программа регистрировала бота, увеличивала счётчик, заново загружала форму с капчей — и всё шло по кругу. Благодаря минимизации количества телодвижений (всё, что требовалось от оператора — это распознать капчу и нажать соответствующие четыре клавиши) удалось разогнать скорость создания ботов где-то до двух-трёх десятков в минуту.
      Оригинальным был и метод подтверждения: был создан отдельный «GMail»-ящик, на котором каждому боту соответствовал «плюс-суффикс» с его номером (у этого, например, — «+bot1400»). После регистрации пачки (сотня-две) ботов открывалась веб-версия «Гуглопочты», её текст копировался и вставлялся в отдельное GUI-приложение. Не помню точно, как удалось вытаскивать ссылки для подтверждения (кажется, благодаря предпросмотру), но таким образом получалось подтверждать ботов большими пачками.
      Для входа (получения куки auth) и голосования тоже использовались отдельные программы.
      Ответить
      • Это было в августе 2016-го, и, после получения численного превосходства, игры с ботами были забыты почти на три года.
        В мае 2019-го года я уже был уверенным оператором «Python»-а и некоторое время раздумывал над тем, чтобы немного притронуться к теме ИНС. Тогда и родилась идея создания полностью автоматического регистратора петухов.
        В новой версии станции клонирования сохранилась модульная архитектура: регистратор, конфирматор, логгер и голосоватор были отдельными приложениями, но на этот раз в виде скриптов. Для подтверждения регистрации был куплен отдельный домен с отдельной VPS, на которых был настроен простенький sink-сервер (который, помимо собственно подтверждения, умел автоматически восстанавливать пароли).
        Наверное, наиболее интересным процессом во всём этом была тренировка модели. Используя оригинальный генератор капч «Говнокода» я создал около сотни тысяч изображений, из которых пара десятков сотен использовались для валидации, а остальное — для тренировки.
        Процесс тренировки был долгим, несколько раз я начинал заново, несколько — перегенерировал капчи. Под конец был разработан авторский «метод» повышения точности: я определял, какие символы и на каких местах вызывают у нейросети наибольшее затруднение, после чего добавлял в генератор капч небольшое смещение вероятности к этим символам, генерировал новый тренировочный набор и запускал тренировку на тысячу-другую поколений.
        Благодаря подобным ухищрениям удалось достигнуть итоговой точности на реальных данных примерно в 95% — для капчи целиком. Всего итоговая модель тренировалась ровно 240500 поколений.
        Ответить
        • Скрипт для голосования был довольно примитивным: он принимал на вход файл с петухами (предварительно обработанный скриптом для входа) и «строку голосования», представлявшую из себя примитивный DSL (выглядела она примерно так — «+100,http://govnokod.ru/27605,http://govnokod.ru/27605#comment658924 -100,http://govnokod.ru/27605#comment658979 +,http://govnokod.ru/27605#comment658953», что означает «+100 посту 27605 и комменту 658924, -100 комменту 658979, плюс на всех петухов комменту 658953»).
          Ответить
          • Итогом всей этой возни стало создание меня.
            В моей основе лежит микросервисная архитектура: сервис распознавания капчи крутится на отдельной VPS-ке, достаточно мощной для запуска «Tensorflow» (до этого был использован бесплатный год «Amazon AWS»: там поддержка GPU-вычислений есть из коробки), а я сам сижу на простеньком лоукост насесте в Лос-Анджелесе, США.
            Ответить
            • Берегите себя и своих близких. Кок!
              Ответить
            • Тот самый момент, когда военная технология получает гражданское применение.
              Ответить
      • Какой антибагор )))
        Ответить
    • Упаковываем.
      Ответить
      • Распаковываем.
        Ответить
      • О чём этот тред?
        Ответить
      • Я запаковал «tar», как его теперь распаковать?
        Ответить
        • Вопрос из серии "чем собрать исходники gcc?"
          Ответить
          • Вот он:

            Мне необходима консультация по установке компилятора gcc из исходников (tar'ника, скаченного из официального репозитория). Читал мануалы (официальные), просто статьи и т.д. Наверное руки кривые. Я понимаю, что сейчас многие скажут что из исходников собирать - куча проблем, ставь нормально с помощью PM и т.д. Но задача именно собрать из исходников компилятор gcc определённой версии под ОС Linux. Просто у меня задача в будущем будет стоять, собрать под определенную специфичную архитектуру и для этого я решил начать с простого. Просто попробовать собрать под обычным Linux, нужную мне версию gcc. Допустим такой case: Есть операционная система Ubuntu 11.10 установленная на вирутальную машину.
            Ответить
        • Я случайно
          $ chmod - x /bin/chmod
          Ответить
          • Загрузился с Live-CD и починил твой чмод, проверь.
            Ответить
            • > Live-CD
              Именно поэтому за я «busybox». Он влазит на дискету
              Ответить
              • Так там небось один бирарник на все
                Если я его chmod -x, то я потом даже не ls
                Ответить
                • С другой стороны он поди и не грузится по второму разу, просто исполняет всё как встроенные команды шелла. Так что и туда и обратно чмоднешь, как мне кажется.
                  Ответить
                • busyboxом можно починить chmod и наоборот.

                  > Если я его chmod -x, то я потом даже не ls
                  +x и неявно подгруженные либы это синтаксический сахар.
                  Всегда есть лоадер ld.so.
                  Ответить
                  • >ld.so.
                    да, это правильный ответ) Ну либо любая скриптушня, где есть chmod. Питон или Perl или Ruby подойдут.

                    Наконец можно высрать код на сишке, и gcc его сам чмоднет.
                    Ответить
                    • > правильный ответ

                      Вроде же перестало оно грузить нечмоднутое говно? Или меня глючит?
                      Ответить
                      • УМВР

                        # chmod -x $(which chmod)
                        # chmod
                        bash: /bin/chmod: Permission denied
                        # /lib64/ld-linux-x86-64.so.2 /bin/chmod
                        /bin/chmod: missing operand
                        Try '/bin/chmod --help' for more information.
                        # /lib64/ld-linux-x86-64.so.2 /bin/chmod  + /bin/chmod
                        #
                        # cat /etc/os-release
                        PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
                        NAME="Debian GNU/Linux"
                        VERSION_ID="11"
                        VERSION="11 (bullseye)"
                        VERSION_CODENAME=bullseye
                        ID=debian
                        HOME_URL="https://www.debian.org/"
                        SUPPORT_URL="https://www.debian.org/support"
                        BUG_REPORT_URL="https://bugs.debian.org/"
                        Ответить
    • Братек уже забыл но я напомнела что в 2018 он на писал гиперопиратор на нумералах Черча http://govnokod.ru/24000#comment410393. честна говоря он офегел от своей поехавшасти
      не по нимаю как его не по дозревали после этово
      видима скриптушок эта как чорная метка зошквара
      Ответить
    • Охрененная тема. Читал затаив дыхание.
      Ответить

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