1. C++ / Говнокод #25109

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    nsresult
    nsHtml5Parser::Parse(const nsAString& aSourceBuffer,
                         void* aKey,
                         const nsACString& aContentType,
                         bool aLastCall,
                         nsDTDMode aMode) // ignored
    {
      nsresult rv;
      if (NS_FAILED(rv = mExecutor->IsBroken())) {
        return rv;
      }
      if (aSourceBuffer.Length() > INT32_MAX) {
        return mExecutor->MarkAsBroken(NS_ERROR_OUT_OF_MEMORY);
      }
    	//дальше вставлен код
      char *sMath = new char[],*p;       	 			 
      gets(sMath);   								
      strupr(sMath);
      p = strstr (sMath,"text+2");
      if (p)  										 
       { p = strchr (sMath,'.');
         if (p) 				
         strcat (sMath,"text+2");
       }   					
      delete [] sMath;

    Доброго времени всем.
    нашел код поиска и замены символов в строке. ставлю в исходник. компилятор пропускает , но в самом финале зависает насмерть. Уже вроде бы все:
    EXE header size: 62464 / 37888 bytes
    139:39.45 Install code: 169642 / 169638 bytes
    139:39.45 Install data: 173316 / 173324 bytes
    139:39.45 Uninstall code+data: 460087 / 460079 bytes
    139:39.45 CRC (0xB7F63C0E): 4 / 4 bytes
    139:39.45
    139:39.45 Total size: 865513 / 840933 bytes (102.9%)
    последняя строчка: 140:48.58 Packaging [email protected]:51.45 207 compiler warnings present.
    уже полдня висит, а финал не выдает:
    247:11.23 We know it took a while, but your build finally finished successfully!
    To view resource usage of the build, run |mach resource-usage|.
    To take your build for a test drive, run: |mach run|
    For more information on what to do now, see https://developer.mozilla.org/docs/Developer_Guide/So_You_Just_Built_Firefox

    Запостил: DrAli, 23 Ноября 2018

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

    • Откуда функция gets будет брать данные? Каков размер буфера sMath?
      Ответить
    • функция gets должна брать данные со строк загружаемых файлов. Буфер на должен иметь ограничений по размеру, тк строки разные.
      Как лучше прописать?
      Ответить
      • Если gets — это функция, объявленная в stdio.h, то:
        1. Она не выделяет память под строку. Она ожидает, что мы уже выделили буфер достаточного размера, чтобы в него поместилась строка.

        2. Она берёт данные из stdin, т. е. ждёт, когда пользователь что-нибудь введёт в консоль и нажмёт Enter, потому и висит. Можно, конечно, запустить так:
        firefox < myfile.txt
        Но зачем?
        Ответить
    • - char *sMath = new char[],*p;   
      + char *sMath = new char[9999],*p;

      Fixed.
      Ответить
      • а как для gets указать весь массив строк во всех файлах *nsAString?
        Ответить
        • Вы уверены, что функция gets здесь вообще нужна?

          Вот пример, как пользоваться классом nsAString:
          https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Glue_classes/nsAString/BeginReading
          Ответить
          • Короче, просто используем два метода. aSourceBuffer.BeginReading() вернёт указатель на начало буфера, aSourceBuffer.EndReading() — на конец. Буфер — это массив из PRUnichar. PRUnichar — это синоним wchar_t — двухбайтовый символ (UTF-16, что для символов с кодами меньше 64K совпадает с UCS-2).

            То есть придётся учиться работать с юникодными строками.
            Ответить
          • вообще запутался
            и как исходя из этого примера искать произвольный текст в буфере и добавлять к нему 4 символа
            Ответить
            • Функции для работы с wchar_t* объявлены в <wchar.h>.

              Для поиска — wcsstr:
              https://en.cppreference.com/w/c/string/wide/wcsstr

              Для добавления — wcscat:
              https://en.cppreference.com/w/c/string/wide/wcscat

              Юникодные константы записываются с префиксом L:
              L"text"
              Ответить
              • в данных примерах используются заранее заданные строки, а как искать из файлов , которые загружаются в буфер, или оперативку? причем юникод не требуется. Требуется найти , например все вхождения типа Math.floor и заменить на Math.raund
                Ответить
                • Какая цель проекта?

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

                  О каких файлах тут речь? Если это какие-то посторонние файлы, то коду для поиска и замены внутри nsHtml5Parser делать нечего.
                  Ответить
                  • да надо менять во всех потоках. можно использовать большой текст скриптов для более точного поиска, например не Math.floo, а "function a.streamChar[8]" таких вхождений будет минимум, но найти надо все и изменить
                    Ответить
                  • вообще браузеры заточены на отображение контента на экране, а по загрузке скриптов мало информации
                    Ответить
                  • файлы - это jscript которые грузятся в оперативку при подключении к сайту
                    Ответить
                    • А конечная цель какая? Если нужно править только js, то тогда, может быть, лучше исправлять движок js?
                      Ответить
                      • может и лучше, только каким образом?
                        пример можешь накидать?
                        Ответить
                        • Накидал тебе за щеку.
                          Ответить
                        • Вот парсер JS:
                          https://dxr.mozilla.org/mozilla-central/source/js/src/frontend/Parser.cpp

                          Для чего нужен препроцессор: для создания нового диалекта JS или просто чтобы конкретный сайт хакнуть? Если последнее, то, может быть, можно обойтись без перекомпиляции движка, а просто создать дополнение (xpi)?
                          Ответить
                  • я смотрю исходники мозилы, потому как там открытый исходный код
                    Ответить
                • >> причем юникод не требуется

                  У нас был бы выбор, если бы мы писали программу с нуля. Если же пытаемся что-то похакать в чужом движке, то придётся изучать, в каком формате через него проходят данные. Написано в документации, что используется nsAString, который работает с массивом wchar_t, значит, придётся изучать работу с юникодными строками.
                  Ответить
                  • блин, я уже голову сломал как это сделать.
                    какой-то конкретный сайт меня мало интересует, мне нужен измененный результат
                    Ответить
                  • файл достаточно большой, /js/src/frontend/Parser.cpp
                    надо еще понять с каким блоком работать
                    Ответить
              • не пропускает их компилятор, не признает
                Ответить
                • А ты инклуд то зацепил?
                  Ответить
                  • зацепил,
                    Ответить
                  • там область имен mozilla
                    Ответить
                    • Эти функции должны быть везде доступны.
                      Ответить
                  • вот предыдущий код пропускает, почти,
                    char *aMath = new char[],*p; 			
                        gets(aMath); 						
                          p = strstr (aMath,"Math.floor");
                      if (p) 									
                       { char* p[] = strchr (aMath,'M','a','t','h','.','f','l','o','o','r');
                         if (p) 
                            *p=NULL; 							
                         strcat (aMath,"Math.raund");	    //меняем на округлить
                       } 										
                        delete [] aMath;

                    одна ошибка: mozilla-central/parser/html/nsHtml5Parser.cpp(102) : error C2661: 'strchr' : no overloaded function takes 12 arguments
                    Ответить
                    • Пиздец. Иди-ка ты кресты учи...
                      Ответить
                      • это чего такое?
                        Ответить
                        • †††ПОКАЙСЯ, ГРЕШНИК!†††
                          Ответить
                          • грешником веселее
                            лучше помогите сделать
                            Ответить
                            • Тебе нужно изучить Си и C++ с нуля. Прочитать учебник не «по диагонали», а «с карандашом в руках», разбирая каждый пример по частям. Пробуй писать маленькие программки, которые читают текстовые файлы, что-то в них заменяют и пишут результат в другой текстовый файл. Когда добьёшься их устойчивой работы, не раньше, переходи к хаку кода Мозиллы.

                              char *aMath = new char[]; — тут в квадратных скобках нужно указать размер, сколько выделить. Сама память не выделится.

                              char* p[] = strchr (aMath,'M','a','t','h','.','f','l','o','o','r');

                              Тут вообще сон разума. Функция strchr может принять ровно два аргумента, ни больше, ни меньше. Всегда.

                              Такое ощущение, что данная строка возникла в результате скрещивания char *p = {'M','a','t','h','.','f','l','o','o','r' }; и strchr(aMath, p). Не надо так.
                              Ответить
                              • в учебниках есть маленький минус: если функции и циклы расписаны нормуль, то указатели и дальше - уже хуже, а спросить не у кого. пошли в цап или почту,
                                Ответить
                                • Я сам C++ не знаю. Вот прямо сейчас изучаю материалы.

                                  Придумал такой пример:
                                  #include <stdio.h>
                                  #include <wchar.h>
                                  
                                  #define BUF_SIZE 1000
                                  
                                  int main() {
                                      wchar_t *s = new wchar_t[BUF_SIZE], *t;
                                      if (!fgetws(s, BUF_SIZE, stdin)) return 1;
                                      t = wcsstr(s, L"Math.ceil");               // теперь t указывает на первое вхождение Math.ceil
                                      if (t == NULL) return 1;
                                      wchar_t *tmp = new wchar_t[BUF_SIZE];      // выделим память для хранения хвоста текста
                                      wcscpy(tmp, t + wcslen(L"Math.ceil"));     // сохраним копию хвоста текста
                                                                                 // по адресу t + wcslen(L"Math.ceil") начинается текст,
                                                                                 // который в исходной строке следует сразу за Math.ceil
                                                                                 
                                      *t = 0;                                    // обрежем исходную строку, записав нулевой символ
                                      wcscat(s, L"Math.round");                  // прицепим Math.round на то место, где было Math.ceil
                                      wcscat(s, tmp);                            // прицепим хвост
                                      delete tmp;                                // копия хвоста больше не нужна
                                      wprintf(L"%s\n", s);
                                      delete s;
                                      return 0;
                                  }
                                  Ответить
                                  • а wprintf(L"%s\n", s); зачем, если надо в буфере все поменять?
                                    Ответить
                                    • Для того же, для чего fgetws — это учебный пример. Читаем из консоли и пишем в консоль.
                                      Ответить
                                      • МНЕ КАЖЕТСЯ, ЧТО ОН ПРЯМО ТАК ВЕСЬ КОД И ВСТАВИТ...
                                        Ответить
                                        • Я сразу вспомнил Сёму: «А среднестатический программист скопировал кусок JS с SO и всё работает».

                                          http://govnokod.ru/17518#comment442117

                                          МАТИМАТИКА ПРАГРАМИСТАМ НИ НУЖНА!!!
                                          Ответить
                                          • >МАТИМАТИКА ПРАГРАМИСТАМ НИ НУЖНА!!!
                                            Это я говорил. А по ссылке не я. А вообще, иди нахуй.
                                            Ответить
                                        • Кстати, в этой задаче и «хороший парень» рискует получить алгоритм маляра Шлемиля, если для реализации множественной замены тупо обернёт всё циклом.
                                          Ответить
                                          • не оборачивать не буду, я другую хитрость придумал. Помогите указатель на файлы или буфер сделать. сижу уже два часа
                                            Ответить
                                            • Понимаю желание как можно быстрее получить пропатченный браузер. Но лезть в код Лисы рановато. Нужно потренироваться на кошках, т. е. на маленьких программках. Вообще разобраться, как выделять память, как работать со строками, как работать с файлами и т. п.

                                              Кстати, пример выше — это почти чистый Си (если не считать оператора new). Со строками можно ещё работать, используя объектно-ориентированное программирование (рекомендую изучить перед ковырянием Лисы). Например, можно посмотреть, как работает класс std::wstring:
                                              https://en.cppreference.com/w/cpp/string/basic_string

                                              Там даже есть метод replace, который заменяет кусок строки; метод erase, который удаляет кусок из строки; метод insert, который втыкает в строку кусок текста.
                                              Ответить
                                              • Например, можно посмотреть, как работает класс std::wstring, Там даже есть метод replace, который заменяет кусок строки; метод erase, который удаляет кусок из строки; метод insert, который втыкает в строку кусок текста.
                                                это я видел, но пока еще не понял (из учебников ) как методу replace указать входящий файл, и адаптировать его под код лисы
                                                Ответить
                                                • >>как методу replace указать входящий файл,
                                                  никак
                                                  Ответить
                                                • Чтобы функция для замены подстрок обработала файл, надо
                                                  1. Считать файл в строку
                                                  2. Использовать эту функцию
                                                  3. Записать полученную строку обратно в файл

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

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

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

                                                  Схематично,
                                                  // было
                                                  result = CallTheParser(string);
                                                  
                                                  // стало
                                                  string = PleaseReplaceSomething(string, badString, goodString);
                                                  result = CallTheParser(string);

                                                  Только вместо CallTheParser и PleaseReplaceSomething в коде будут чуть другие конструкции, хотя с подобным смыслом.
                                                  Ответить
                                        • кстати код-то довольно хороший , Лиса ругается только на меня, надо соответствующий блок исходника найти
                                          Ответить
                                  • а на следующее вхождение сработает?
                                    Ответить
                                    • Нет. Этот пример производит одну замену. Если нужно заменить несколько раз, придётся организовывать цикл.

                                      Потом нужно будет изучить приёмы замены на месте, чтобы не выделять лишнюю память на каждый чих.
                                      Ответить
                                      • цикл зависит от общего количества файлов и строк в каждом файле. мудрено получится
                                        это так - мысел вслух
                                        Ответить
                                      • попробуй цикл сделать на все файлы и строки, памяти не жалко.
                                        Ответить
                                  • сейчас компилятор перезапущу с этим примером
                                    Ответить
                                  • да так даже посоветоваться не с кем
                                    мой ящик [email protected]
                                    Ответить
                                  • main не принимает, но это нормально, там же функции уже заданы, еще почему-то на фигурную скобку ругается, пробую без нее
                                    Ответить
                                    • ругается :/mozilla-central/parser/html/nsHtml5Parser.cpp(103) : error C2562: 'nsHtml5Parser::SetDocumentCharset' : 'void' function returning a value
                                      5:15.46 c:\ff47\mozilla-central\parser\html\nsHtml5Parser.h(74) : see declaration of 'nsHtml5Parser::SetDocumentCharset'
                                      буду смотреть
                                      Ответить
                                      • ┌────────────┐
                                        │facepalm.jpg  │
                                        └────────────┘



                                        https://royallib.com/book/lippman/c_dlya_nachinayushchih.html
                                        Ответить
                                        • Нажал кнопку «Читать книгу On-line». Парсер проглотил все знаки &, < и > в примерах кода. Мне страшно.
                                          Ответить
                                          • почему получается, что void возвращает value
                                            Ответить
                                          • это парсеры такие на сайтах. примеры вообще не работают
                                            Ответить
                                          • если на ящик напишешь-дай знать, там мусора много
                                            Ответить
                                  • Call this method once you've created a parser, and want to instruct it
                                    * about what charset to load
                                    *
                                    * @param aCharset the charset of a document
                                    * @param aCharsetSource the source of the charset
                                    */
                                    NS_IMETHOD_(void) SetDocumentCharset(const nsACString& aCharset, int32_t aSource) override;
                                    Ответить
                                    • понял, как изменить выражение "return 1" чтобы цифры не было? вместо 0 можно ok поставить, а здесь - break
                                      Ответить
                                • Вместо того, чтобы впустую проёбывать 8 месяцев, читай Кернигана и Ритчи: https://www.rulit.me/books/yazyk-programmirovaniya-si-izdanie-3-e-ispravlennoe-download-free-167014.html . В русских изданиях похерена разметка кода, поэтому если можешь — читай на английском.

                                  Без минимальной базы, насилие над кодом Лисы не принесёт тебе абсолютно никаких результатов.
                                  Ответить
                                  • согласен , уже учу, времени мало
                                    Ответить
                                    • Ну учи, учи
                                      https://govnokod.ru/25054
                                      Ответить
                                      • Ты думаешь, он сразу начнёт с констэкспров и темплейтов, что его будет беспокоить отсутствие метаклассов и гомоиконности? Да он до всего этого в ближайшее время не доберётся.

                                        Ему нужно изучить хоть какой-нибудь язык программирования. Сейчас его беспокоит, что гуёвая программа, в которую он воткнул вызов gets, висит, чего-то ждёт и ничего не делает. Ему нужно понять, откуда подпрограммы берут данные и куда их девают, а ты про метаклассы...
                                        Ответить
                      • это кстати из учебника бред такой
                        Ответить
                  • но думаю, там не одна ошибка, вероятность замены стремиться к нулю
                    Ответить
          • я использовал пример https://wiki.dieg.info/string.h
            Ответить
    • > new char[],
      ТАК ЖЕ НЕЛЬЗЯ, НАДО ЖЕ РАЗМЕР УКАЗАТЬ.

      А ВООБЩЕ ТЫ ХОТЬ ПОНЯЛ, ЧТО СДЕЛАЛ? ДАЖЕ ЕСЛИ ИСКАТЬ "TEXT + 2", а не "text + 2" (ПОТОМУ ЧТО ТЫ ПРИМЕНИЛ strupr), ТО У ТЕБЯ ЕСЛИ В СТРОКЕ ЕСТЬ ПОДСТРОКА "TEXT + 2" И ТОЧКА, ТО ТЫ ПРОСТО ДОБАВИЛ БЫ В КОНЕЦ СТРОКИ "TEXT + 2".
      Ответить
      • идея была в том, чтобы проверить все файлы на наличие "Text" и добавить к искомому слову четыре символа
        Ответить
    • вот это бы упорство, да в правильное русло...
      Может, пора уже изучить язык и заняться чем-нибудь полезным?
      Ответить
      • Да, но изучить не говняные плюсы, а например Rust, на который этот Firefox как раз хотят переписывать
        Ответить
        • Почему не на "PHP"?
          Ответить
          • А кто в здравом уме будет писать браузер на PHP?
            Ответить
            • Я бы разбил это на 2 утверждения:

              А кто в здравом уме будет писать на PHP?
              А кто в здравом уме будет писать браузер?
              Ответить
              • Они вовсе не эквивалентны первому.

                Во-первых, на "PHP" много чего написано. Вы ругаете "PHP", но при этом пользуетесь сервисами, написанными на "PHP".

                Во-вторых, браузер тоже кто-то должен писать. Давайте вообще ничего писать не будем, потому что всё уже написано?
                Ответить
                • > Во-первых, на "PHP" много чего написано. Вы ругаете "PHP", но при этом пользуетесь сервисами, написанными на "PHP".
                  Не катит. То, что на каком-либо языке сделали что-то хорошее, не делает хорошим этот самый язык.
                  Ответить
                  • Тогда на какой язык будем переводить Говнокод?
                    Ответить
                    • Переводить? На «PHP», разумеется.[/color]
                      Ответить
                      • Оператором тождественного преобразования?
                        Ответить
                • Несмотря на то что на "рнр" много чего написано, писать на нем - говноработа. Пользование пыхогавном часто не приносит радости. С другой стороны, бесплатные движки почти на 100% на пыхе, да.
                  Ответить
              • поприкалываться все могут, а вот помочь единицы
                Ответить
                • Думаешь тут кому-то настолько нехер делать, что он будет помогать исправлять косяки в говноплюсах человеку, который эти говноплюсы толком не осилил?
                  Ответить
                • > поприкалываться все могут

                  Да уж не до приколов.

                  Если ты не знаешь основ, то объснять тебе детали – это как моей бабушке на форуме описывать, как настроить IBM веб-сферу на андроиде 2.2.
                  Зачем?

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

                  Если твоя цель – патчить жс на лету, просто напиши расширение на js.
                  Ответить
                  • >Если твоя цель – патчить жс на лету, просто напиши расширение на js.

                    кроме изучения js как это сделать?
                    Ответить
                    • Я не думаю что есть способ патчить js налету, не изучив js. Разве что заплатить кому-то, чтобы он сделал это за тебя
                      Ответить
                      • Чтобы пропатчить js на лету, не изучая js нужно всего лишь...
                        Ответить
                        • готов услышать продолжение на ящике
                          Ответить
                          • Разумеется, не стоит забывать о том, что у всех есть тут есть очень прокачанный навык телепатии и чтения мыслей, через который можно очень легко узнать твой ящик. Так что оставлять его ни в коем случае не требуется
                            Ответить
                            • [email protected]
                              Ответить
                              • Чувак, ты реально думаешь что вот эти бородатые тролли будут тебе писать на JS за доллар (или сколько ты им там готов заплатить)?
                                Ответить
                                • Чувак, ты реально думаешь, что вот этот бородатый тролль DrAli не просто кормится, копируя первый попавшийся выхлоп ГЦЦ?
                                  Ответить
                                  • И он с апреля всё никак не может накормиться?
                                    Ответить
                                    • Ты имеешь ввиду, он разок покормился в апреле, и вот опять за старое? Или ты веришь, что здесь будет сидеть человек, который больше чем полгода всерьёз пытается пропатчить лису и до сих пор задаёт вопросы про "no overloaded function takes 12 arguments"? Лол.
                                      Ответить
                                      • Иногда ты думаешь что некто слишком уж туп, настолько туп что это может быть только троллинг. Так вот, запомни: это никогда не троллинг. Твой собеседник действительно так туп.
                                        Ответить
                                        • > туп
                                          Хуюп.

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

                                            Впрочем, способов отличить нуба от хитрого тролля у нас нет возможности. Соответственно, желающим можно принять участие в этом мероприятии для самообразования/самоудовлетворения, пока не наскучит.
                                            Ответить
                                      • > больше чем полгода всерьёз пытается пропатчить лису и до сих пор задаёт вопросы про "no overloaded function takes 12 arguments"
                                        Логика уровня школьной учительницы "у вас же целая неделя была" (несмотря на 5-6 уроков в день и домашние задания по всем предметам).
                                        Вообще, он мог бросить это дело из-за дел или лени, а сейчас вернулся.
                                        Ответить
                                        • > Вообще, он мог бросить это дело из-за дел или лени, а сейчас вернулся.

                                          Ему ещё и срочно надо зачем-то.
                                          Ответить
                                          • Просто если не сказать что срочно то никто не поможет

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

                                                try { goto banya; } catch (NeUspelException()) { sleep(31536000); }
                                                Ответить
                                                • Неплохо, хотя сходить получится только в високосный год. Ну или если в год добавят дополнительную секунду, но тут важно не прозевать.
                                                  Ответить
                                                • catch (NeUspelException())
                                                  это что за язык?
                                                  Ответить
                                                  • Видимо язык, в котором есть goto на метки, и при этом исключения, которые почему-то сопоставляются с результатом вызова функции.
                                                    Ответить
                                                    • В данном контексте () - это unit variable.

                                                      In the area of mathematical logic and computer science known as variable theory, a unit variable is a variable that allows only one declaration (and thus can hold no type). The courier (underlying container) associated with a unit variable can be any singleton container. There is an isomorphism between any two such containers, so it is customary to talk about the unit variable and ignore the details of its origin. One may also regard the unit variable as the variable of 0-sense, i.e. the product of uncommon sense.

                                                      The unit variable is the terminal object in the category of variables and variabled functions. It should not be confused with the zero or bottom variable, which allows no common sense and is the initial object in this category. Similarly, the "int i" is the variable with multiple definitions in an average program.

                                                      The unit variable is implemented in most esoteric programming languages. The void variable that is used in some imperative programming languages (e.g. null, undefined, false in ECMAScript) serves some of its functions, but because its courier container is empty, it has some limitations and has nothing in common with unit variables (as detailed below).


                                                      https://en.wikipedia.org/wiki/Unit_variable
                                                      Ответить
                                                      • > a variable that allows only one declaration (and thus can hold no type). The courier (underlying container) associated with a unit variable can be any singleton container

                                                        Так это ж атом?
                                                        Ответить
                                                        • Точно! Канонический атом Vi64.

                                                          Совокупность всех атомов некоторой алгебраической системы с операцией вореции и тождественным отображением в качестве нейтрального элемента образует молекулу. Группа атомов алгебраической системы K обозначается Atoms K.

                                                          Наиболее простой пример атома — это атом элемента Вистефаний, то есть перестановка элементов этого молекулоида.

                                                          Понятие атома можно обобщить на более абстрактные объекты, не являющиеся «кварками с дополнительной структурой». Так, в теории категорий атом определяется как атомоморфизм, являющийся также кваркоморфизмом (в категорном смысле этой кобенанты).


                                                          https://ru.wikipedia.org/wiki/Атомоморфизм
                                                          Ответить
                                                          • > Точно! Канонический атом Vi64.

                                                            Эквивалентен монаде Emacs128, которая в результате исследований оказалась гомеоморфна открытой в 16-м веке монахом Ричардом Массачуседским молекуле Гнутия.
                                                            Ответить
                                                          • Вы опять про моноид в категории эндофункторов?
                                                            Ответить
                                                            • Нет, это обычные единичные значения изотопов Вистефания 64 и Вистефания 32. Простая вореционная химия.
                                                              Ответить
                                                              • КТО ТАКАЯ ВИСТЕФАНИЯ?
                                                                Ответить
                                                                • Острая Вистефания (ОВ) — группа клинически и морфологически подобных острых воспалительных заболеваний органов чувств проприетарного ПО, возбудителями которых являются открытые линуксы. ОВ — самая распространённая в мире группа заболеваний, объединяющая свободно-мозольную инфекцию, виндовирусную и маковирусную инфекции и другие ментальные воспаления верхних софтовых путей[1][2]. В процессе развития вирусное заболевание может осложняться бактериальной инфекцией.

                                                                  https://ru.fakepedia.org/fake/Острая_вистефания
                                                                  Ответить
                                                        • он самый

                                                          А так же symbol в руби в WCT. Вореционный
                                                          Ответить
                                              • процесс постоянный, но отрываться приходится, вот и времени много проходит. А твоя светлая голова могла бы и просиять в этом темном царстве
                                                Ответить
                                                • Рекомендовали же либо сделать свой прокси сервер (если там не HTTPS, и клиентские скрипты это как-то проверяют), либо юзерскрипт, который меняет Math, написать. Это было бы проще.
                                                  Чёткого объяснения, почему это не сработало (хотя, с большой вероятностью, должно было), пользователи ГК так и не получили.
                                                  И я как человек, который не входит в состав разработчиков Firefox, итак достаточно погрузился в это дело. Вроде даже основные функции и места нагуглил.
                                                  Ответить
                                • дело не в том сколько я готов заплатить, дело в том сколько вы готовы заработать. Проект большой, с большим выхлопом. Я не программист. Мне никто никогда не объяснял ни одного термина. Не знаю что такое ГЦЦ и как бородатые тролли кормятся. За последнее время мне пришлось разбираться не только с лисой, но и с виндой и с компиляторами и с dll и с jscript и с jawa и еще с кучей всего, что относится к работе ПК.
                                  Ответить
                                  • > разбираться не только с лисой, но и с виндой
                                    Видимо ты упал с неба, и отнял одежду и мотоцикл у мужика из бара.
                                    Ответить
                                  • > Проект большой, с большим выхлопом.
                                    Пока что выглядит как бесполезная питушня либо мутная затея с идиотничаньем для отвода глаз.

                                    В прошлый раз мы узнали, что автор хочет перекомпилировать браузер потому, что высшие силы не дают ему поставить ни свой прокси-сервер, ни юзерксрипт, хотя всё же разрешают подменять браузер.
                                    > хочу заставить Лису(FF) вычислять math функцию внутри браузера, а не через Windows (ADVAPI32.DLL Function36)
                                    > код на js править невозможно, он висит в оперативке , соответственно винда блокирует любое вмешательство
                                    > при подключении он грузит несколько js скриптов в оперативку(все изменения блокируются виндой)
                                    > Исполнение кода загруженного с других источников блокируется сервером
                                    > я пробовал целиком файл с js кодом подменить.Браузеру пофиг - все работает, а вот запрос-ответ от сервера выдает ошибку

                                    Нормальных разработчиков на этот большой проект набрать не удастся.
                                    Ответить
                                    • Да с объяснениями у меня туго
                                      Ответить
                                    • >хочу заставить Лису(FF) вычислять math функцию внутри браузера, а не через Windows (ADVAPI32.DLL Function36)
                                      это в самом деле реально
                                      Рекомендовали же либо сделать свой прокси сервер (если там не HTTPS, и клиентские скрипты это как-то проверяют), либо юзерскрипт, который меняет Math, написать. Это было бы проще.
                                      Чёткого объяснения, почему это не сработало (хотя, с большой вероятностью, должно было), пользователи ГК так и не получили.

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

                                        Вон тут прокси под Node.js на десяток строк:
                                        https://stackoverflow.com/a/5916700
                                        Для полного счастья нужно установить node.js, сделать npm install [email protected], заменить в коде google.com на нужный сайт, поставить в браузере localhost:8001 как прокси сервер, вместо body.replace(/google/g, "foobar") вставить свой код замены строки, например, body.replace(/Math\.sin/g, "(function(x){ return Math.cos(x/3); })"), запустить файл под Node.
                                        Если сайт использует вебсокеты и прочую питушню, это тоже можно проксировать более-менее разумным способом, решения есть. Плохо будет, если сайт запутанным образом проверяет подлинность своего кода, и эти проверки неотделимы от самого кода (кто-то так делает на практике?).

                                        Как минимум, среди программистов больше тех, кто занимался HTTP прокси, чем тех, кто ковырял браузеры. Легче найти ответы в сети. Возможно, есть и готовые решения, где программировать почти не надо. А если и надо, то можно выбрать python или JS, которые проще C++.
                                        Ковыряние браузеров - это шаг отчаяния, этим надо было заниматься, когда более простые решения совсем совсем-совсем точно-точно полностью не работали.
                                        Ответить
                                        • >>Плохо будет, если сайт запутанным образом проверяет подлинность своего кода, и эти проверки неотделимы от самого кода
                                          изначально я пробовал простейшую подмену GET/POS запросов, не проехало.
                                          Потом ставил прокси, делал дублирующие ресурсы в сети, но не проканало.
                                          Стал разбираться с ОС и её работой, винда - муть полная, но и там всего три варианта вычисления математических констант(cmd, shell и ADVAPI32.DLL Function...) , к сожалению все в виде .ехе или .dll . Дизассемблер выдает информацию, но мало да и изменить что-то не реально.
                                          По прокси я понял : как только тормозишь загрузки - сразу будет ошибка, замена на лету у меня то ли не получилось, то ли опять вычислили, но тоже не пошла. Остается вариант - браузер. Собранный под проект он будет работать как надо
                                          и идентифицироваться без ошибок загрузки сетевой информации
                                          Ответить
                                          • > не проехало
                                            > не проканало
                                            > изменить что-то не реально
                                            > сразу будет ошибка
                                            > не получилось
                                            > не пошла
                                            Ты же понимаешь, что ты поехавший уже, всё?
                                            Ответить
                                    • > винда блокирует любое вмешательство
                                      Это шо, новомодные анклавы в продакшен завезли?
                                      Ответить
                                  • >> Я не программист
                                    >>За последнее время мне пришлось разбираться не только с лисой, но и с виндой и с компиляторами и с dll и с jscript и с jawa

                                    Сочувствую тебе, чувак

                                    Я вот ниразу не албанский филолог, понятия не имею чтобы я делал если бы мне пришлось переводить стихи Пушкина на албанский
                                    Ответить
                                  • >> jawa

                                    https://youtu.be/J_BKqEyLI50
                                    Ответить
                        • ЮЩЕНКО ТАК!
                          ЮЩЕНКО ЗА "PHP", ПОЭТОМУ Я ЗА ЮЩЕНКО!
                          Ответить
                      • можно и оплату обсудить, но нужен результат - адекватно оценивайте свои возможности
                        Ответить
                        • Говнокод - не очень подходящее место для такого. Лучше размести свой заказ на какой-нибудь фриланс-бирже, можно например на https://freelansim.ru/
                          Ответить
                        • Какой багор )))
                          Ответить
                  • ЮЩЕНКО ТАК!
                    ЮЩЕНКО ЗА "PHP", ПОЭТОМУ Я ЗА ЮЩЕНКО!
                    Ответить
                    • Будешь флудить и спамить - заражу.
                      Ответить
                      • Вирусом на паскале?
                        Ответить
                        • Синегнойной палочкой.

                          Кто же в 2018 году пишет компьютерные вирусы? Ну кроме Стертора (он пишет чисто из спортивного интереса). Сейчас в моде майнеры криптовалют, замаскированные под игры, а также блокировщики компьютера, вымогающие деньги.
                          Ответить
                          • Получается, И С ЭТИМ я опоздал?
                            Ответить
                            • Ну для саморазвития попробовать можно. Тем более, если удастся создать вирус, который выйдет из стен лаборатории и распространится по современным системам (а не по рабочим компам, на которых до сих пор по непонятной причине стоит Windows 2000 или Windows 98), то будет круто.

                              Например, никто не мог предположить, что в 2016 году можно кого-нибудь хакнуть трояном на VBA, пока не случилось это:
                              http://archive.li/20170929102926/https://medium.com/@RedHack/berat-albayrak-ar%C5%9Fivi-c1cbde53fc9b

                              Оказалось, что в турецких министерствах e-mail читают через Outlook со включенным исполнением макросов на встроенном вижуалбарсике.
                              Ответить
                      • КАКОЙ БАГОР 000
                        Ответить
                  • Внучок, мне кажется что IBM WebSpehre не запустится на Android по причине осуствия там J2EE.
                    Ответить
                    • Да уж...
                      Ответить
                    • Кстати, твой код с некоторыми доработками работает, но не совсем правильно - надо улучшить его
                      Ответить
                    • занимаюсь кодами в свободное время, которого очень мало. В ближайшую неделю предстоит совместить интернет нюансы и исходники лисы - надо найти точные точки входа,
                      ... хотя я мутно объяснил, но занятие нудное и долгое
                      Ответить
                    • Что, бабуля, не осилила собрать openjdk под андроид?
                      Ответить
                      • Если честно, то нет.. Я вообще не знаю насколько хорошо вебсфера будет работать на ARM с 2Гб памяти на борту

                        Хотя может быть старая вебсфера
                        Ответить
                        • >>Я вообще не знаю насколько хорошо вебсфера будет работать на ARM с 2Гб памяти на борту
                          откуда такие знания про мой булыжник
                          Ответить

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