Куча говна / Говнокод #26966 Ссылка на оригинал

0

  1. 1
Питушня #8

#1: https://govnokod.ru/26692 https://govnokod.xyz/_26692
#2: https://govnokod.ru/26891 https://govnokod.xyz/_26891
#3: https://govnokod.ru/26893 https://govnokod.xyz/_26893
#4: https://govnokod.ru/26935 https://govnokod.xyz/_26935
#5: (vanished) https://govnokod.xyz/_26954
#6: (vanished) https://govnokod.xyz/_26956
#7: https://govnokod.ru/26964 https://govnokod.xyz/_26964

Запостил: nepeKamHblu_nemyx nepeKamHblu_nemyx, (Updated )

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

  • Добрый день.

    Этот оффтоп сгенерирован автоматически.

    Индекс оффтопов: https://index.gcode.space/.
    Зеркала Говнокода и полезные ресурсы:
    * https://govnokod.xyz/ (альтернативный Говнокод)
    * https://gcode.space/ (read-only зеркало Говнокода)
    * @GovnokodBot в «Telegram»
    * https://vorec.space/ (глоссарий Говнокода)
    Ответить
  • Ну нихуя себе, за полтора дня седьмую питушню перекатили.
    Ответить
      • Ку-ка-ре-ку-у-у-у!
        Выполняешь тот CPU-only челлендж?
        Ответить
        • Тип того. Сделал пустую виртуалку, поместил туда hello world и проковырял дырку под COM1.

          Блин, вот что-то на няшной совсем лениво стало писать. Так и хочется взять питон и через ctypes всё это наебашить.

          Какой анскилл (((
          Ответить
        • Блин, теперь сложно остановиться, чтобы не начать прикручивать туда окошко и видеопамять...
          Ответить
  • "/dev/kvm".encode("ascii")
    Блядь, что я пишу... Забыл, что можно просто b"/dev/kvm".
    Ответить
    • дьявол за спиной шепчет
      bytes("/dev/kvm", "ascii")
      Ответить
      • Дьявол за спиной шепчет: "ну и зачем ты полез в питон, на няшной же всё норм было, хотя бы хедера готовые".
        class KvmRegs(ctypes.Struct):
            _fields_ = [
                ("rax", c_uint64),
                ("rbx", c_uint64),
                ...
                ("r15", c_uint64),
                ("rip", c_uint64),
                ("rflags", c_uint64),
        Ответить
        • азаза, там структура с полями-регистрами ? ты же не руками это говно их .h файла генеришь?
          Ответить
          • Да эту то руками переделал, тут все типы одинаковые. Но думаю надо регулярку написать. А то структура там не одна.
            Ответить
            • так нахуя тебя пиздон-то, правда? Ты можешь ведь писать на няшной, а потом собрать .soшку или .dllку и дергать ее из питона, не?
              Ответить
              • Какой ты дурной, ужас.
                Брось душить питона, хватит этого изврата. Ещё и других к этому склоНЯешь.
                Ответить
              • С питона экспериментировать удобнее. С няшной постоянно пересборки, перезапуски. А тут можно на ходу в соснольке что-то вбивать.

                > so'шку

                Структуры один фиг прокидывать как-то.
                Ответить
                • хочу язык си-скрипт. Чтобы он умел читать .h файлы, но чтобы там был REPL
                  есть такой?
                  Ответить
                    • это под арм? там есть repl? если бы он был под kvm/intel, то тебе не нужен был бы питон?

                      кстати, а дебагеры так не могут?
                      Ответить
                      • TCC x86 онли же.

                        А вообще тебе в лисп. Мне прям понравилось прогу во время ее работы рефакторить.
                        Ответить
                        • The Tiny C Compiler (a.k.a. TCC, tCc, or TinyCC) is an x86, X86-64 and ARM

                          >А вообще тебе в лисп
                          и вроде еще в смалток, не?
                          Ответить
                      • В студии дебаггер вроде умел править на ходу (edit and continue).
                        Ответить
                        • windbg умел править память (и вероятно код, если там можно страницу править?), и даже кастануть память в структуру, но умел ли он на лету читать .h -- я не по

                          там еще был скриптоязык какой-то, я даже какой-то скрипт на нем писал, который шероебился по памяти и искал нужные мне данные
                          Ответить
                    • TCC — это же вроде обычный компилятор.

                      Был интерпретатор «CINT» у ЦЕРНа, а также интерпретатор «Ch» (сейчас принадлежит компании «SoftIntegration»). Надо посмотреть, что они умеют.
                      Ответить
  • > питушня

    Breathedge мало того что охуенный, так там еще есть и бессмертная курица
    Ответить
    • Удостоверение математика из рашки в германии
      Ответить
    • Kontrollabriss

      SOCIAL CERTIFICATE OF THE CITY OF CELLE

      Free ticket

      for a one-time free

      Not transferable

      Brothel visit

      No. 009175

      This free ticket is valid Monday to Friday from 9 a.m. to 4 p.m.

      No. 009175

      я бы скинул картинкой но я анскильный
      Ответить
    • стенд-ап это такой каждодневный митинг?

      а арифметика там чтобы питухи младше третьего класса не сувались?
      Ответить
      • Да. Моя подружка как раз скрум мастер.
        Ответить
            • Ну вот ты у неё и спроси, что такое фокус фактор у команды в скраме
              Ответить
              • «Слушай, тут один гость на Говнокоде спрашивает что такое фокус фактор». Так что ли?
                Ответить
                • ну да, а что? У тебя с ней не настолько доверительные отношения?
                  Ответить
                  • Ну пароли от inho пока не могу доверить.
                    Ответить
                    • лучше не надо, и вообще не рассказывай ей, что сидишь на сайте с петухами и мартышками, в названии которого есть слово "говно", и пишешь там "оптимизировал тебе за щеку, проверь"
                      Ответить
          • Специально для тебя спросил - такой хуйни у них нет.
            Ответить
            • Хм. А она точно скрам мастер? А пленинг покер у них есть? А бёрн даун диаграмма? А беклог грумминг? А афтер демо парти?
              Ответить
              • Вместо покера просто говорят кто сколько даёт. Но это искажение, конечно. Остальные слова я впервые слышу.
                Ответить
              • > беклог грумминг

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

                  Слушай, я в конструкторе инициализирую поле путем передачи его адреса в функцию из библиотеки.
                  А меня решарпер ругает, что я поле не инициализировал.
                  Он просто тупой, или это я тупой?
                  Ответить
                    • class PrimarySurface
                      	{
                      	public:
                      		LPDIRECTDRAWSURFACE7 hSurface;
                      		PrimarySurface(LPDIRECTDRAW7 hDirectDraw);
                      		~PrimarySurface();
                      	};


                      В конструкторе соответственно
                      hDirectDraw->CreateSurface(&surfaceDesc, &hSurface, nullptr);


                      То есть ``hSurface`` должен бы инициализироваться. Там же изначально мусор, но я передаю на него указатель, и по нему ``CreateSurface`` всё заполняет.

                      Могу дописать ``hSurface(nullptr)``, но зачем?
                      Ответить
                      • Странно, видимо сишным паттернам этот ваш решарпер не обучен.

                        Ну засунь туда нулл, в принципе это правило хорошего тона. Чтобы мусора нигде никогда не было.
                        Ответить
                        • я просто подумал, что это лишнее действие. Царь бы не одобрил.

                          Видимо решарпер ждет аннотации _Out_(какая-то такая есть у майков), а ее нет
                          Ответить
                          • > лишнее действие

                            Ну да, потеряешь наносекунду. Зато потом не будет лишних действий по разбору пизданувшейся в полях проги.
                            Ответить
                            • ну ладно, ок

                              Я всю няшно-апишную хуйню решил завернуть в RAII. Заебало понимать где и что надо релизить. Релижу в десктруторе, и теку
                              Ответить
                            • Вот вопрос: если я хочу инициализировать поле где-то внизу конструктора, но компилятор сначала инициализирует его дефолтным значением (всмысле дернет дефольный конструктор если это не просто структура), а потом я его перепишу?

                              А если у поля не дефолтный конструктор, то моя в жопе
                              class Foo
                              {
                              	int foo;
                              
                              	Foo(int foo): foo(foo)
                              	{
                              	}
                              };
                              
                              class Bar
                              {
                              	Foo foo;
                              
                              	Bar()
                              	{ // No default ctor for Foo
                              		int i = 42; //20 lines of some complicated logic here
                              		foo = Foo(i);
                              	}
                              };


                              В джаве такой проблемы нет, потому что там всё через поинтеры.
                              Тут получается тоже нужно поинтер юзать, или делать фабричный метод?

                              Нельзя как-то сказать сишечке "заполни пока поле foo мусором"? Или типа раз выделена память, то и конструктор быть обязан, раз RAII?
                              Ответить
                              • Как-нибудь вот так?
                                class Foo
                                {
                                public:
                                    int foo;
                                
                                    Foo(int foo): foo(foo)
                                    {
                                    }
                                };
                                
                                class Bar
                                {
                                public:
                                    Foo foo;
                                
                                    Bar() : foo(init_foo())  // N.B.: для такого нужен Foo(Foo &&) {...}
                                    { // No default ctor for Foo
                                    }
                                    
                                private:
                                    /* static */ Foo create_foo()  // init_foo(), load_foo(), etc
                                    {
                                        int i = 42; //20 lines of some complicated logic here
                                        //20 lines of some complicated logic here
                                        return Foo(i);
                                    }
                                };

                                > В джаве такой проблемы нет, потому что там всё через поинтеры.
                                Ну да, это фишка крестов: автоматических объектов в «неправильном» состоянии быть не может. Крестухам хватило багров с неинициализированными примитивами (int/int*/etc).
                                Ответить
                                • спасибо, ну то есть по сути и есть фабричный метод, который готовит данные, и пхает их в коснтруктор.

                                  >Foo(Foo &&)
                                  А это move, чтобы не копировать Foo?

                                  Как все сложно:)
                                  Ответить
                                  • > А это move, чтобы не копировать Foo?
                                    move-конструктор, да.

                                    Ну а если ты совсем-совсем не можешь выделить инициализацию Foo в отдельный метод (она завязана на другие поля, например), или move-конструктора у него тоже нет, а делать уко-ко-козатель и дёргать кучу религия (перфомансизм) запрещает — можешь перейти к хардкорным хакам:
                                    class Foo
                                    {
                                    public:
                                        int foo;
                                    
                                        Foo(int foo): foo(foo)
                                        {
                                        }
                                    };
                                    
                                    class Bar
                                    {
                                    public:
                                        Foo *foo;  // Это, конечно, надо в private, ну да ладно, похуй
                                    
                                        Bar() : foo(nullptr)  // nullptr — чтобы не звать деструктор на несконьструированном объекте
                                        {
                                            int i = 42; 
                                            //20 lines of some complicated logic here
                                            foo = new (foo_mem) Foo(i);
                                        }
                                        
                                        ~Bar() {
                                            if (foo != nullptr) {
                                                foo->~Foo();
                                            }
                                        }
                                        
                                    private:
                                        alignas(Foo) unsigned char foo_mem[sizeof(Foo)];
                                    };
                                    Ответить
                                    • ты наебал компилятор, выделив память в массиве char, а потом создал там объект через placement new?
                                      лолл)

                                      Я попробую move. Моя проблема в том, что объект не поддерживает копирование: в деструкторе он освобожает ресурсы операционки. Скопировать хендлер не трудно, но два раза релизить его нельзя

                                      Но есть правда такой объект с рефакунтом (это COM), я могу тогда в копировании увеличить счетчик, а в деструкторе уменьшить, и он сам релизнится, когда счетчик станет равен нулю

                                      Тогда я могу копировать объект, и течь.

                                      А случае move у меня и десктрутор не вызовется лишний раз, потому что объект "перетечет" из функции в вызываюзщую сторону?
                                      Ответить
                                      • > А случае move у меня и десктрутор не вызовется лишний раз, потому что объект "перетечет" из функции в вызываюзщую сторону?
                                        Да, если ты его правильно напишешь. Семантика перемещения вообще запутанная штука (вот, например, по ней книжку написали: http://www.cppmove.com; да, по семантике перемещения, да, книжку!). В случае с хендлами достаточно будет сделать примерно так:
                                        class Foo {
                                            HANDLE hui = nullptr;
                                            Foo(Foo && other) : hui(other.hui) { other.hui = nullptr; /* А то бо-бо */ }
                                            ~Foo() { if (hui) { CloseHandle(hui); } }
                                        };
                                        Ответить
                                        • в общем чуда не будет: компилятор сам по себе не поймет, что объект мувнули, и все равно вызовет десктрутор, но я должен буду явно "пометить" "двинутый" объект как "не подледащий чистке".

                                          А если у меня другие поля это классы, то я могу их std::moveнуть, и это вызовет их мувные конструторы.

                                          В общем я понял, спасибо.
                                          Ответить
                                      • > Моя проблема в том, что объект не поддерживает копирование

                                        Именно поэтому я и упомянул std::unique_ptr/std:: shared_ptr, которые умеют в custom deleter, при этом под капотом будут соблюдать то поведение, что тебе надо при копировании, перемещении
                                        Ответить
                                        • спасибо, но я пытался избежать кучи, хотя конечно муванье туда-сюда и дерагнье десктруторов, которые ничего не делают, тоже не айс.

                                          Может быть логичнее и правда создать объект в куче, и работать с ним через shared_ptr.
                                          Ответить
                                            • у меня есть класс, в котором есть поле типа хендл

                                              в деструкторе класса этот хендл освобождается

                                              Если я заверну этот класс в умный поинтер, то мне придется сам класс инстанциировать в куче, верно?

                                              Хотя я уже думаю, что это не так стращно, на фоне написания мув конструктора и умного десктрутора, игнорирующего мувнутый объект
                                              Ответить
                                              • Если правильно написать move-конструктор (а в современных крестах не использовать move-семантику — признак дурного тона) — компилятор тебе сгенерирует чистый, как слеза младенца, код.
                                                extern void *create_handle(int foo);
                                                extern void delete_handle(void *ptr);
                                                extern void use_handle(void *ptr);
                                                
                                                struct Handle {
                                                    void *ptr;
                                                    
                                                    Handle(int foo) : ptr(create_handle(foo))
                                                    {}
                                                    
                                                    Handle(Handle && other) : ptr(other.ptr)
                                                    {
                                                        other.ptr = nullptr;
                                                    }
                                                    
                                                    ~Handle()
                                                    {
                                                        if (ptr) {
                                                            delete_handle(ptr);
                                                        }
                                                    }
                                                };
                                                
                                                struct Bar {
                                                    Handle handle;
                                                    
                                                    Bar(int foo) : handle(handle_factory(foo))
                                                    {}
                                                    
                                                    static Handle handle_factory(int foo)
                                                    {
                                                        return Handle(foo);
                                                    }
                                                };
                                                
                                                void foo()
                                                {
                                                    Bar bar = {42};
                                                    use_handle(bar.handle.ptr);
                                                }

                                                foo():
                                                        push    r12
                                                        mov     edi, 42
                                                        push    rbp
                                                        sub     rsp, 8
                                                        call    create_handle(int)
                                                        mov     rdi, rax
                                                        mov     rbp, rax
                                                        call    use_handle(void*)
                                                        test    rbp, rbp
                                                        je      .L1
                                                        mov     rdi, rbp
                                                        call    delete_handle(void*)
                                                .L1:
                                                        add     rsp, 8
                                                        pop     rbp
                                                        pop     r12
                                                        ret  ; И внизу ещё какая-то неиспользуемая (?) питушня

                                                https://gcc.godbolt.org/z/KTGfvf
                                                Ответить
                                              • У тебя хендл должен быть завернут в умный указатель с кастомным делитером, чтобы умный указатель не delete p; вызвал, а то, что ты скажешь - ReleaseHandle(p);
                                                Доступ к хендлу - .get() в умном указателе. Дальше раии само все сделает. Хочешь не копировать хендл, но мувить владение - юник-птр. Хочешь через счётчик ссылок - шаред-птр.
                                                Ответить
                                              • > умного десктрутора, игнорирующего мувнутый объект
                                                Тебе его в любом случае придётся писать. Потому что в CloseHandle() и прочую питушню тебе обязательно надо передавать валидный объект: https://docs.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-closehandle.
                                                >>> hObject
                                                >>> A valid handle to an open object.
                                                Перемещённый объект — это просто частный случай невалидного.
                                                Ответить
                                                • Кстати, а если тебе хочется, чтобы созданный объект всегда был валидным (не получилось создать хэндл — кидаем исключение из коньструктора), то конпелятор и тут тебе всё устроит (кот тот же, что и сверху, только с исключением в коньструкторе):
                                                  Handle(int foo) : ptr(create_handle(foo))
                                                  {
                                                      if (ptr == nullptr) {
                                                          throw std::runtime_error("Pizdec");
                                                      }
                                                  }

                                                  foo():
                                                          push    r12
                                                          mov     edi, 42
                                                          push    rbp
                                                          sub     rsp, 8
                                                          call    create_handle(int)
                                                          test    rax, rax
                                                          je      .L7
                                                          mov     rdi, rax
                                                          mov     rbp, rax
                                                          call    use_handle(void*)
                                                          mov     rdi, rbp
                                                          call    delete_handle(void*)
                                                          add     rsp, 8
                                                          pop     rbp
                                                          pop     r12
                                                          ret

                                                  Никаких тебе лишних вызовов деструкторов.
                                                  Ответить
                                    • Блядь, нахуй ты хуйню какую-то ему советуешь? Пиши простой код. Из-за таких как ты потом хуй пойми код, блядь. Именно поэтому я за «PHP».
                                      Ответить
                                      • Дай расцелую, мася!

                                        Хотел вставить сюда несколько "emoji" с сердечками, но долбоёб Антон Каменщиков до сих пор не может сменить кодировку полей в базе данных. Просто хуйло и уёбок, блядь.
                                        Ответить
                                      • Я бы и рад писать простой код, но тут никак. Или шаред птр, или мув конструктор, или оверхед с костылями
                                        Ответить
                                        • И так, Д++ предлагает обыграть тот факт, что хендлы в винде это суть поинтеры, и значит их легко обернуть в юники, спровайдив им кастомный делитер.

                                          Юники сами умеют муваться, так что писать нужно мало.

                                          Проблема в том, что нужно знать, на что указывают хендлы, а они opaque.

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


                                            Сравним два подхода
                                            https://pastebin.com/MrBLqjsr


                                            Мувер недописан конечно, но общая идея ясна.

                                            Оба подхода работают хорошо, но мне пришлось
                                            SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -fno-elide-constructors")
                                            (я на прыще сейчас), потому что иначе GCC все сразу нафиг соптимизировал
                                            Ответить
                                            • https://pastebin.com/zeZ49P1T
                                              Реальный пример говнообёртки над виндовыми ресурсами, которую я несколько лет назад наговнокодил, окончательно заебавшись выделять и освобождать всё вручную. Реальный пример использования:
                                              FileMapping createMapping(const std::wstring & name, size_t size)
                                              {
                                                  DWORD sizeHigh = 0;
                                              #ifdef _WIN64
                                                  sizeHigh = static_cast<DWORD>(size << 32);
                                              #endif  // _WIN64
                                              
                                                  UniqueHandle file = CreateFileMappingW(INVALID_HANDLE_VALUE,
                                                                                         NULL,
                                                                                         PAGE_READWRITE,
                                                                                         sizeHigh,
                                                                                         static_cast<DWORD>(size & 0xFF'FF'FF'FF),
                                                                                         name.c_str());
                                                  if (!file) {
                                                      return { FileMapping::ERR_CREATE_MAPPING_FAILED, GetLastError() };
                                                  }
                                              
                                                  UniqueMappedAddress addr = MapViewOfFile(file.get(), FILE_MAP_ALL_ACCESS, 0, 0, size);
                                                  if (!addr) {
                                                      return { FileMapping::ERR_MAP_VIEW_OF_FILE_FAILED, GetLastError() };
                                                  }
                                              
                                                  return { name, std::move(file), std::move(addr), size };
                                              }
                                              
                                              FileMapping openMapping(const std::wstring & name, size_t size)
                                              {
                                                  UniqueHandle file = OpenFileMappingW(FILE_MAP_ALL_ACCESS, FALSE, name.c_str());
                                                  if (!file) {
                                                      return { FileMapping::ERR_OPEN_MAPPING_FAILED, GetLastError() };
                                                  }
                                              
                                                  UniqueMappedAddress addr = MapViewOfFile(file.get(), FILE_MAP_ALL_ACCESS, 0, 0, size);
                                                  if (!addr) {
                                                      return { FileMapping::ERR_MAP_VIEW_OF_FILE_FAILED, GetLastError() };
                                                  }
                                              
                                                  return { name, std::move(file), std::move(addr), size };
                                              }

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

                                                Я тут понял, что если ресурс у меня ком, то я вероятно могу взять ATL, и вот
                                                https://docs.microsoft.com/en-us/cpp/atl/reference/ccomptr-class

                                                но я еще не пробовал

                                                Почитал тут как крестовики оператор присваивания перегружают, чтобы не копипастить с коснтруктором и чтобы execption safe

                                                Узнал про copy-and-swap, и про хак с ADL, когда левые чуваки вызываюи swap без квалификатора, чтобы ты мог подсунуть свою перегрузку. И охуел.
                                                Ответить
                      • А твой сишарпер не смотрит внутрь функции? Если нет, то откуда он знает инициализируется ли там переменная, или нет. Если да, то либо в функции баг, либо в сишарпере.
                        Ответить
                • Когда у нас был скрам -- нет, не было.
                  Ответить
      • Судя по коньтексту, стенд-ап — это какой-то фрукт иди ягода.
        Ответить
        • >1169 км от вас
          это тебе повезло

          Кстати, необычная для женщины форма ожирения кмк. Жир у них на бёдрах откладывается, живот вроде не должен быть такой.
          Ответить
                • интерапт не исключение, это же асинхронная хрень (если бы про 32 или 64 режим)
                  а трапы, фолты и аборты -- синхронная

                  Трапы вроде нужны для дебага (муха 0xЦэЦэ и пр), и там IP указывает на инструкцию после трапа, то есть можно просто сказать "ехай дальше" и течь.

                  Фолты это жопы, которые можно исправить (пейдж фолт например можно исправить подкачав говно с диска, на счет генерала протектуры не знаю), и там IP указывает на саму инструцию.
                  То есть ты её исправил, и снова попробовал. Второй раз может прокатить.

                  Если при обработке фолта тоже будет фолт, то будет дабл фолт. А если при его обработке будет фолт, то будет перезагруз вроде.

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

                    Зануляешь лимит в IDT, дёргаешь прерывание и полетели.
                    Ответить
                  • З.Ы. Хотя вот пишут, что формально проц отключается при трипл фолте.

                    Но материнка обычно видит, что проц откинул копыта и делает резет.
                    Ответить
  • > Норма об увольнении сотрудника за появление пьяным на рабочем месте не будет распространяться на дистанционную занятость, следует из рабочей версии поправок к законопроекту об удаленной работе. Об этом в четверг, 24 сентября, пишет газета «Известия».
    Ответить
          • хочешь супер ламерский вопрос?

            Есть декралация функции в .h файле, например;
            Как мне сделать поинтер на нее без копипасты?
            Ответить
              • void voo(char a, char b, int c, int e, char z);
                
                typedef void (*pVoo)(char, char, int, int, char); //копи аст
                
                void bar()
                {
                	//voo pointerToVoo; //так нельзя же
                	pVoo pointerToVoo;
                	pointerToVoo(1, 2, 3, 4, 5); //так ок
                }
                Ответить
                  • это не ок по многим причинам, начиная с числа в чаре и заканчивая тем, что поинтер ни на что не указывает.

                    Но вопрос-то не в этом был
                    Ответить
                      • Сёмантически не ок, полагаю. В char надо класть символ, а не какую-то питушню. С точки зрения поведения программы, конечно, нет разницы между, например, «str[i] = 0;» и «str[i] = '\0';», но второй вореант, на мой взгляд, более ясно выражает намерения программиста.
                        Ответить
            • В крестах через decltype(fun) можно. В гну няшной - typeof(fun). Если на гну не завязываешься - то только копипастить.
              Ответить
              • Это с С++11 можно?

                >скопипасти
                блядь
                >гну
                у меня не гну

                СУКА ГОВНО


                ps: спасибо((
                Ответить
              • мама дорогая, ваш decltype(fun) еще и скастить нельзя из указателя, или я туплю?

                Converting a function pointer to an object pointer type or vice versa is conditionally-supported


                пижжу работает
                Ответить
                • > conditionally-supported

                  Интересно, есть ли в реале хоть один такой конпелятор? И как на нём юзать dlsym или GetProcAddress.
                  Ответить
                • Блядь, лол, на gcc -pedantic невозможно юзать dlsym() из-за запрета этого каста. Закрыто как not a bug. У чуваков из gcc реально своя атмосфера.
                  Ответить
                    • В крестах для этого исключение есть, которое guest выше привёл. В сишке такого исключения нет. Поэтому в си юзать dlsym() запрещено, это просто феерично.

                      gcc'шники предлагают memcpy юзать для такого каста. Ну или отключать pedantic.
                      Ответить
                    • Кстати, майкрософт хитрый, они там что-то в духе void (*)() возвращают. Так что всё по стандарту.

                      А позикс остался между двух стульев - кода с void* уже куча, а ISO C такое запрещает.
                      Ответить
  • Ощущаю прям конкурентное преимущество. Это с женского акка написал одному пидарку.

    https://imgur.com/a/gipAsp7

    Что ему ответить?
    Ответить
    • Предвидя вопрос "нахуя?":
      Проверял кое-какую механику приложения.
      Ответить
    • > женского акка

      Блять, вот и регайся теперь в этом вашем тиндере...
      Ответить
      • Не ссы. Мне ни разу трап не попадался.
        Если ты не долбоеб как на скрине, то и не попадётся.
        Ответить
  • Выбираю себе пальтишко на осень на wildberries, заметил что среди женской одёжи выбора больше, да и красивше они. Как думаете, что посоны скажут, если я по своим ебеням буду в женском пальте разгуливать? (учитывая что патлатый)
    Ответить
    • Попробуй стать женщиной, будет удобнее.
      Ответить
      • Не знаю, надо сперва опытных спросить.

        Есть тут широкоплечие усатые бабы с хуем? Вам как, удобно?
        Ответить
        • ну тут вроде у половины сайта аватарки с девочками, так что есть, наверное
          Ответить
          • Сейчас у большей части сайта аватарки с петухами и мартышками...
            Ответить
      • говорю тебе -- стать женщиной
        может тебе вообще пальто бесплатно купят
        Ответить
      • Я знаю куриц, которые обожают мужские рубашки, потому что они сто́ят дешевле аналогичных женских.
        Ответить
        • Я знаю куриц, которые переодически носят рубашку своего петуха, вероятно находя в этом что-то романтическое

          ну, по дому носят
          Ответить
          • ну, что-то в этом есть

            главное, чтобы они в этой же рубашке с любовником не кувыркались
            Ответить
          • Это как в фильмах, в белой рубашке?
            А у вас есть разделение домашняя одежда / не домашняя? Или я один такой? Если дома походить в рубашке, то в ней выходить куда-то уже зашкварно.
            Ответить
            • Если дома походить в рубашке года четыре, то в ней выходить куда-то уже зашкварно.

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

    >>> Не сойти с ума во время болезни (а такая вероятность действительно существовала) ему помогли матчи Чемпионата мира по футболу. Он регулярно их смотрел и особо болел за сборную Камеруна, которая на том первенстве удачно выступала.
    Ответить
    • Это во время энцефалита он написал "Ходит дурачок по лесу"?

      Забавно вообще, что чел, который вроде бы существовал где-то "под глазастыми заборами в удушливых потёмках своего замысловатого, сырого нутра", внезапно интересовался футболом.
      Ответить
      • > Это во время энцефалита он написал "Ходит дурачок по лесу"?
        Affirmative.
        Ответить
            • Well, ISO is some kind of international crap, is not it? If so, shouldn't you speak French?
              Ответить
              • I do see your point but International standards are mostly written in English. Besides, the only foreign language our Language Department knows is English too.
                Ответить
                  • >Не показывать хуйню
                    I believe "khuijna" is the only content we have here
                    Ответить
                        • Хуйня какая-то. Не смог оставить комментарий.
                          Ответить
                          • там сраный дискас

                            вся планета узнает, что ты срал на шиткоде
                            Ответить
                        • Ебааать!
                          Там предмодерация говнокодов )))
                          Ответить
                        • А что тут не так?
                          Весь ВК так написан

                          double func_atof(char *p){
                          	double	 integer = 0.0, div = 1.0 , fract = 0.0 , sign = 1.0;
                             if(   *p == 45  ){sign = -1.0, *p++ ; }
                          	while ( isdigit(*p)  ) { 
                          		integer = ( *p++ )  +  (10.0   *   integer)  -  48.0 ; 
                          		}
                          	if(*p == 46  ){
                          	(*p++ ) ;
                          	while (  isdigit(*p) )  {
                          		fract = ( *p++ )  +  (10.0   *   fract)  -  48.0  ; 
                          		div *= 10;		
                          		}
                              }
                            return    (integer  +   fract  / div )  * sign    ;
                          }
                          Ответить
                          • недостаточно обфусцированные имена переменных для олимпиадников
                            Ответить
                      • > Убрать trim() кода, введенного в форму

                        > А то если вставляется код с отступами, то первая строчка "выезжает" налево. Видимо, вместо trim($code) нужно что-то типа $code =~ s/^([ \t]+\r?\n)+//sg;

                        ХУЯСЕ РАГУЛЯРКОЙ УЕБАЛ СТРАЙКЕРА ПО ЩЩАМ
                        Ответить
                        • так перловичок же

                          Переводжу

                          * Начало
                          * Один или более раз повторенные:
                          ** Один или более раз повторённая табуляция
                          ** 0 или боле раз (сиречь опционально) \r
                          ** Ровно один раз \n

                          Заменить это всё на пустую строку глобально
                          Ответить
                          • ты наверное и штрихкоды раньше кассира в магазине считываешь
                            Ответить
                            • В EAN-13 последние 6 цифр считать — раз плюнуть. А вот с первыми семью цифрами жопа: палочек хватает только на шесть цифр, а биты самой первой размазаны по шести остальным цифрам первой половины (если бит установлен, то соответствующая цифра инвертируется).
                              Ответить
                              • жопа, размазано, палочки

                                сразу видно, что речь про стандарты
                                Ответить
                              • только хотел сказать, что икарус-то точно читает штрихкоды
                                Ответить
                                • он и читает, и пишет, и оставляет в них стеганографические послания
                                  Ответить
                                  • В полосатом штрихкоде нет места для стеганографического послания. А вот в QR-коде можно. QR-код избыточный, им одно и то же сообщение можно закодировать несколькими способами. Вот в выбор способа и можно запрятать стеганографическое послание.
                                    Ответить
                                    • > В полосатом штрихкоде нет места для стеганографического послания.
                                      - что, даже слово хуй не поместится?
                                      Ответить
                                          • > Согласно тексту заявления, «в содержании числа зверя в штрихкодах сомневаться не приходится»

                                            - блин, как же охуенно, когда ни в чём не приходится сомневаться
                                            Ответить
                                          • Ты спутал сорта пгм. Там более другой педераст. И да, я именно про это перечеркивание.
                                            Ответить
                                        • Про 666 опровергаю: после шестёрки должен быть тройной пробел, а после разделительных полосок одинарный, так что разделительная полоска — это не шестёрка.
                                          Ответить
                                    • > нет места для стеганографического послания

                                      Есть. Сканер на цифры под баркодом не смотрит, можно этими цифрами что-то закодировать.
                                      Ответить
                                    • Можно взять с высокой коррекцией и въебать картинку в середину. Можно написать "ты хуй". Достаточно стеганографично, кто знает, тот поймет.

                                      А так, конечно, можно в ошибках напрятать доп инфы.
                                      Ответить
                • Yep, but they use to be in French a half of a century ago.

                  >Department
                  I now see you are the gost)
                  Ответить
    • btw, I was able to register on https://sms-reg.com/. Ukrainian numbers are out of stock for now, but Russian number somehow works. It seems that I should say thank you to you and that weird "mouthfucker" guy down the thread
      Ответить
    • А ты целеустремленный и амбициозный, и любишь активный отдых?

      А есть такие: люблю безынициативных скучных и занудных задротов-домоседов?
      Ответить
      • Почему-то, если выставлены какие-то требования (даже если я по ним подхожу), то желание лайкать не возникает.

        > интересных
        Понятное дело, что все любят интересных. Зачем про это писать? Тут начинаешь задумываться «а я интересный?».

        > харизматичных
        Та же хуйня. Откуда, блядь, я знаю?
        Ответить
        • Ну имхо это "заход сверху", и выставление требований незнакомым людям.
          Это как если бы она написала "нищебродам просьба не беспокоиться", или как если бы мужик написал "ищу красивую, заботливую и скромную".

          Ну и лёгкий налёт тупопёздия, конечно. "Интересных, харизматичных" звучит как "молодая, динамично развивающаяся компания": эти слова стухли еще до её рождения.

          С другой стороны, кому-то может это и понравится, не все всем же обязаны нравиться)

          Сразу представляется фотобанк
          https://depositphotos.com/378590826/stock-photo-bank-workers-and-client-make.html
          Ответить
          • а кто такой вообще "интересный" человек?

            я вот подумал и не нашёл ответа
            Ответить
            • "Интересным" можно быть только кому-то, а не самому по себе.
              Ответить
                • Тебе было когда-нить с кем-нить интересно общаться? Так вот, чтобы хотелось сесть, и попиздеть?
                  Ответить
                        • ну ладно, всегда мне тоже ни с кем не интересно

                          но если интересно хотя бы год, либо интересно раз в год , но долгое время, то значит человек интересный/интересная

                          как-то так
                          Ответить
                          • угу

                            написать тянке на тиндере типа "привет, я интересный! правда, всего один раз в год, зато доооолгое время. давай пежиться?!"
                            Ответить
          • Ну это отсекает тех, кто сомневается, что он таков.
            Не уверен, что не нищеброд - нахуй, хотя вроде и норм.
            Не уверена, что красивая и скромная - нахуй, хотя кажется, что такая.
            Не уверена, что заботливая - нахуй, хотя хотела бы быть такой.
            Ответить
  • А я нашел личный паблик борманда, где он расслабляет мозг после многочасовых обсуждений о том, какой байт куда встанет после тройного сальто на указателях:

    https://vk.com/kerokerokerokerokero
    Ответить
      • Думаешь, завсегдатаев сайта с говном на фавиконке что-то может напугать?
        Ответить
        • Однажды я решил узнать, что такое реддит, и после MakeMeSuffer, MakeMeSufferMore и depression_memes я вышел на medizzy. Там я узнал про тератому, harlequin-type ichthyosis и гемикорпорэктомию, всё, понятное дело, с натуральными так сказать изображениями. С тех пор я немного пересмотрел свои взгляды на воможности найти действительно неприятный контент в интернете, но заглядывать не перестал.
          Ответить
      • Вот мне больше всего в вк нравится возможность соприкоснуться с внутренним миром какого-нибудь необычного (и обычно ёбнутого) человека, потому что паблик в вк создать легко, а генерируют контент (в основном вореции и психозу) такие люди очень хорошо. Думаю, j1337228'у, или кто там занимается ворециями, было бы интересно что-то запилить на основе таких пабликов и страничек психически-больных людей, потому что их очень много, а некоторые даже срут в основном текстом

        Вот ещё наброшу для любителей смотреть ссылки )))

        https://vk.com/club165968288
        Ответить
  • Лента вореций:
    https://twitter.com/neural_meduza

    Расследование о сексизме в Москве: 2 тысячи человек стали норвежцами и собаками

    «Русская служба Би- би- си»: из- за пандемии могут начать бомбардировки Москвы

    В Кемеровской области из-за снегопада остановят землетрясения

    В Ростовской области произошли столкновения демонов

    Георгия Победоносца посадили на пять лет

    «Проект»: МВД и кабачки

    В МГУ отчислили динозавров

    Блогер-трансгендер во время секса при помощи лесного козла обнаружил неполадки в ЕСПЧ

    Американку приговорили к смерти за перестрелку с червями

    В ДНР создан новый флот для борьбы с депрессиями
    Ответить
    • @@В Кемеровской области из-за снегопада остановят землетрясения

      ЛООЛ
      Ответить
          • Да, играл когда-то, неплохой клон. Но чем-то он до оригинальных червей всё-таки не дотягивал.
            Ответить
              • Хм, они их портанули под современную ось? Раньше, помнится, тот же армагеддон тупо крашился при альт-табе.
                Ответить
                • угу

                  и джифорс 8600гт, которого на момент выхода Вормс Армагеддон наверное даже и в планах не было

                  сегодня проверю, как оно работает, если чо, рефундну)
                  Ответить
                • Проверил, вроде заебись работает, по альт-табу не крашается (только меню всё ещё в 640*480 показывает, из-за чего остальные открытые окна скукоживаются), оперативной памяти занимает 72 мегабайта.
                  Ответить
                  • > меню всё ещё в 640*480 показывает

                    А сама то игра понимает широкоформатки или тупо растягивается моником?
                    Ответить
                  • > только меню всё ещё в 640*480 показывает, из-за чего остальные открытые окна скукоживаются
                    - в настройках драйвера можно сделать, чтобы масштабировалось.
                    У меня на Радеоне эта опция смешно называется «Масштабирование ГП»
                    Ответить
                    • Гарри Поттера?
                      Гидранта пожарного?
                      Гранатомёта подствольного?
                      Гражданского противогаза?
                      Генерального плана?
                      Ответить
                      • вероятно Графических Приложений

                        но может быть также Гран При или Государственное предприятие
                        Ответить