1. Си / Говнокод #26027

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    #include <stdio.h>
    #include <inttypes.h>
    #include <string.h>
    
    // endian dependend
    #define PUT3(a,b,c) (((uint64_t)a<<8*0) | ((uint64_t)b<<8*1) | ((uint64_t)c<<8*2))
    
    void testswitch(uint64_t x)
    {
      switch (x) 
      { 
        case PUT3('a','b','c'): printf("abc\n"); 
          break; 
        case PUT3('d','e','f'): printf("def\n"); 
          break; 
        case PUT3('g','h','i'): printf("ghi\n"); 
          break; 
        default: printf("Choice other than abc, def and ghi\n"); 
          break;   
       }
    }
    
    int main() 
    { 
       uint64_t x = 0;
       char a[] = "abc";
       memcpy(&x, a, sizeof(a)-1);
       testswitch(x);
    
       char b[] = "def";
       memcpy(&x, b, sizeof(a)-1);
       testswitch(x);
    
       char c[] = "ghi";
       memcpy(&x, c, sizeof(a)-1);
       testswitch(x);
       return 0; 
    }

    switch для строк!

    Перечитывал несвежие говнокоды, где я выкладывал творчество вконтактоолимпиадников https://govnokod.ru/23170#comment388376

    Запостил: j123123, 12 Ноября 2019

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

    • Пофиксил:
      .
         char b[] = "def";
         memcpy(&x, b, sizeof(b)-1);
         testswitch(x);
      
         char c[] = "ghi";
         memcpy(&x, c, sizeof(c)-1);
         testswitch(x);

      хотя там один фиг все из трех байтиков в этом примере, так что пофиг
      Ответить
      • Вроде на ГК уже были сишные свитчи по строкам до 8 символов.
        В тех реализациях как-то фундаментальнее работало.
        Ответить
    • Ну это уже прогресс, раньше они вручную сравнивали, тута хотяб мокрас
      А теперь пожалуйста тоже самое для смешного слова из сорокадвух букв
      Ответить
      • Надо накодогенерировать макросов вида
        #define PUT1(a)
        #define PUT2(a,b)
        #define PUT3(a,b,c)
        ...
        Ответить
        • А можешь написать макрос, который нагенерит таких макросов?
          В какой-то момент кстати код не влезет в кеш префетчера и пиздец
          Ответить
          • Нет, макросами макросы не генерятся. Макросом ничего задефайнить не выйдет. Тут только кококодогенерация
            Ответить
            • А в крестах можно использовать std::map. Почти как в «PHP» искать слово в индексе карты и течь.
              Ответить
              • от слова std:: у олимпиадника случится слезотечение
                Ответить
                • #include <bits/stdc++.h>
                  using namespace std;

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

                можеш написать код, который поддерживает PUTN где NAX_INT <= N => 0 ?
                Ответить
                • #define PART(r, data, i, elem) ((uint64_t)elem << (8 * i)) |
                  #define PUT(...) BOOST_PP_SEQ_FOR_EACH_I(PART, 0, BOOST_PP_TUPLE_TO_SEQ((__VA_ARGS__))) 0
                  
                  PUT('a', 'b', 'c')


                  До MAX_INT, конечно, не дотянет. Но в этой задаче больше 8 и не надо.
                  Ответить
                  • >BOOST_PP_SEQ_FOR_EACH_I

                    ну вот, цикл уже есть.
                    Осталось завезти только
                    BOOST_PP_SEND_EMAIL
                    и будет язык моей мечты
                    Ответить
            • Разве constexpr int put(const char*) не покатит в свитче?

              P.S. А, у вас всё равно сишка.
              Ответить
      • Одним свитчем можно пройтись по строкам длиной до 8 байтиков (8 однобайтовых символов или 4 двухбайтовых).

        Если нужно поддерживать более длинные строки, придётся строить рекурсивный алгоритм.
        Ответить
    • Ваньки, на али AWUS036NH за 11 басков!
      Ответить
      • Чойта?
        Ответить
        • На всякий случай напоминаю, что отвечать путин-пидору не имеет смысла.

          https://newsland.com/static/u/comment_image_from_text/16092019/100151640-4695392.jpg
          Ответить
          • Як боляче, руська брудна свиня!
            Ответить
            • Много русский верит в непорочное зачатие по-настоящему,
              Зачем славянский взгляд на голое тело веселый и пьянящий?
              Много возраст причастия явная ересь,
              Зачем зарезанный пионерами немец?

              Много скандинавы и немцы слетели с российского трона,
              Зачем прекращать норманнское иго помогает соборность?
              Малость раб принимает свою участь,
              Много лютеранин начинает работать лучше.
              Ответить
          • ★★★★★ The quality of the signal remained the same, and had to bark firewood to earn, лишнехромосомный.

            И даже для сёмы и сёмы премиум есть специальная ветрина с bgn за 77 и 115 руслей и бесплатной доставкой - свисток бросят прямо в ящик.
            Ответить
            • Так что это и нахуй оно надо? У меня уже есть TL-WN722N-
              Ответить
              • ахахаха, бессмысленный кусок говна с n (!) и говнофирмы (!!)
                Сёма, ты очень лулзовый
                Ответить
              • Под этими товарами только такие тупые отзывы, я выяснил только, что нагревается и что они ломятся покупать для какого-то TV бокса. Что за NIC осталось тайной. Можешь сам спросить у продавана и если повезет успеешь до конца распердажи.
                Ответить
                • И еще они никогда не отклеивают intel inside с ноутов.
                  Ответить
                • Так нах оно надо-то?
                  Ответить
                  • Цена хорошая. А не понравится - выкинешь или на авито загонишь с наценкой в 200%
                    Ответить
                    • Ну я себе купил у нас карточку на RTL8812AU за 11€, только она была медленнее старой. А чем твоя знаменита? Она хоть ac?
                      Ответить
                      • уёбок, не говори с уёбком, уёбок
                        Ответить
                      • Ты даже не загуглил? Скушна!
                        https://ae01.alicdn.com/kf/HTB1IUyIavWG3KVjSZPcq6zkbXXaF.jpg
                        Ответить
          • Кстати, голубь не раскидает.

            Лучше играть с вороной.
            1) ворона гораздо игривее голубя, она точно раскидает все фигуры. Некоторые утопит в луже (они так делают)
            2) Срёт ворона больше и жеще, так как она всеяда, а говно всеядных (и хищников) жеще говна травоядных.
            Ответить
            • да и ворона просто вкуснее
              Ответить
              • Да иди ты в жопень, вороны клёвые..
                https://youtu.be/Val8dr8THaI?t=132

                К сожалению, они бесконтрольно срут.

                Это как с языками программирования: самые клевые языки засирают память
                Ответить
                • В сериале "чужой район" у главного героя была домашняя ворона в клетке.
                  Ответить
        • Стертору мы не отвечаем.
          Ответить
          • Это разве стертор а не сёма? Сёма же роутеры всякие обсуждал всегда.
            Ответить
            • уёбок с никами типа "питон пидор" и "ещзе один русофоб сёма" это анальная пародия стертора на сёму

              Уебанская пародия уебана на уебана, такой вот постмодернизм.

              Стертор отличается еще феерической степенью ламерства. Сёма чаще всего честно говорит, что что-то не знает, а стертор несет такую ламерскую хуйню, что просто хочется уткнуться в подушку и плакать
              Ответить
              • Ахах, рабская пидорашка даже не может назвать хуйло пидором. Как бы чего не вышло!
                Ответить
        • tags: reaver, bully

          к моему удивлению там даже более специфичное железо продают, но скидки 5% всего
          Ответить
          • Заработай уже на инет.
            Ответить
            • Стертору мы не отвечаем.
              Ответить
            • не отвечай уёбку
              Ответить
            • Я уже про заработать на скипасс.
              Ответить
              • На что???
                Ответить
                • Уебанинины кусок, нахуй ты стертору отвечаешь?
                  Ответить
                  • Мне кажется или гуесты все с польскими флагами? Подсолидарнено!
                    Ответить
                  • Пнх
                    Ответить
                    • Лица стёрты, краски тусклы —
                      То ли люди, то ли куклы.
                      Взгляд похож на взгляд, а ты — на хуй.
                      Ответить
                • Это когда ты идешь как представитель глубинного народа-победителя по Гейропе с аквафрешем, а навстречу тебе зоофилы переодетые сатанистами, хватают тебя за колорадку, одевают в костюм путина и собираются ебать в жопу, а ты им конкретно предъявляешь skip ass, и они тебя не опускают, а отпускают. Ну, тупые! Костюм, разумеется, выставляешь на авито и только крепчаешь таким образом.
                  Ответить
          • Русьня, у вас wps еще не везде пофиксили? У нас через TR069 уже пару лет как обновили все рутеры.
            Ответить
            • > через TR069
              Это не через него ли Мирай пролезал? Лол, он всё еще считается активным!
              Ответить
              • Это наверно не проблемы самого тр069 а реализации?
                Ответить
                • Проблемы самого тащемта и тех, кто передоверил управление ISP.
                  Ответить
                  • Я выше написал, у нас по нему патчи прилетают. А без него -.только когда новый рутер придет, а это от 2 лет и до того пока рутер физически не сдохнет. Т.е. если бы не он - баг с wps еще минимум лет 5 бы жил.
                    Ответить
                    • Ну давай будем честны сами с собой, это превращает мыльницу из тоже р[а]утера в типичное CPE. Хотя ты можешь это никогда не прочитать, потому что firmware update in progress.
                      Ответить
            • > WPS

              Нинужно.
              Ответить
              • вот патчи по тр069 его и отключили. А вообще ты неправ, впс с кнопкой хорошая вещь. Его можно перехватывать?
                Ответить
                • Х.з., я для себя не вижу вообще никакой пользы от WPS. Мне не сложно пароль вбить когда новый девайс подключаю. Это редко надо.
                  Ответить
                  • То есть ты сидишь с ницшебродским PSK да еще и ротацию ключей не делаешь? И эти люди осуждают мощные ралинки!
                    Ответить
                  • 12-16 символьный рандомный? А когда гости приходят? Хотя ты же ноулайфер.
                    Ответить
                    • Ну да, рандомные символы до упора.

                      Какие, нахуй, гости? ^_^
                      Ответить
                      • > Какие, нахуй, гости? ^_^
                        Воображаемые 2D-девочки.
                        Ответить
                    • Когда гости приходят, нужно с ними общаться, а не в интернеты их пускать.
                      Ответить
                      • Вот кстати да. Нахуй вообще собираться в реале, чтобы потом сидеть в своих инстаграмах да телеграмах?
                        Ответить
                      • Одно другому не мешает.
                        Ответить
                    • Мы же ватники. Когда собираемся, мы бухаем. Какой к чёрту пароль во время пьянки?
                      Ответить
                    • Гостям можно показать на экране смартфона QR-код с данными подключения. Кажется, в новых «Андроидах» по-умолчанию есть такая фича (а если нет — всегда можно скачать/написать приложуху).
                      Ответить
                      • Да можно вообще на бумажке его распечатать.
                        Ответить
                        • Несекьюрно. С другой стороны, если не разводить ненужную паранойю — бумажка с QR-кодом будет идеальным вариантом.
                          Ответить
                          • Почему несекьюрно? У них и так есть физический доступ к роутеру.
                            Ответить
                            • Ну не всегда. Незаметно к нему подключиться они не смогут.
                              Ответить
                              • Вышел такой на кухню на звук кофемашины, а прекрасный незнакомец в это время впаял JTAG в твой верный XyZEL и ВСЁ
                                Ответить
                                • Даже по локалке часто незаметно не смогут. Кстати, есть адаптеры usb-lan для ведра?

                                  JTAG разве впаивается?
                                  Ответить
                                  • Они все для ведра, но редкие ведра для адаптера. Ядро с eth0 нужно.

                                    Бывает распаян уже, но на хайэндах.
                                    Ответить
                                    • По русски это что значит? USB-LAN адаптеры это usb класс как флешки, типа если поддерживает один - поддерживает все? Как определить будет он у меня работать или нет (кроме как взять и попробовать)?

                                      Что значит "распаять JTAG"? Разъем впаять?
                                      Ответить
                                      • Бан за отвечание уёбку тебе обеспечен
                                        Ответить
                                        • https://github.com/marco-pratesi/android/blob/master/HOWTOs/Android-USB-Ethernet-Adapter-HOWTO.txt
                                          Ответить
                                          • >Build a kernel module to drive the USB-LAN adapter
                                            Нахуй.
                                            Ответить
                                            • Ну и чего рыло скрючил, я же тебе с самого начала написал, что шансов мало? Впрочем за пару баксов можно попробовать и убедиться.


                                              Любая эмбеддота сама и есть "контроллер JTAG".


                                              Да, еще в Android x86 тоже есть eth0.
                                              Ответить
                                              • Схуючил.
                                                >USB-LAN адаптеры это usb класс как флешки, типа если поддерживает один - поддерживает все?

                                                Что за eth0? Типа если в ifconfig есть eth0 то всё в порядке?

                                                >Любая эмбеддота сама и есть "контроллер JTAG".
                                                Ээ что?
                                                Ответить
                                                • Только его там нет, потому что езернетовского курнул модуля не завезли.

                                                  JTAG короче есть везде кроме смарткарт и подобного
                                                  Ответить
                                                • > ээ что?

                                                  Почти во всех микросхемах есть контроллер JTAG, ну кроме самых тривиальных. На плате все такие микросхемы просто объединяются в цепочку, никакого дополнительного обвеса там не надо. Это юзается для boundary scan'а - проверки, что на плате всё припаяно и работает. Эдакий функциональный тест после сборки. Ну и для заливки прошивок, отладки и т.п.
                                                  Ответить
                                                  • Нет, JTAG есть далеко не во всех микросхемах. Хотя это еще зависит от того, что ты называешь микросхемами. Вот зачем например засовывать JTAG в микросхему I2C памяти? Типа такой хрени http://sankios.imediabank.com/at24c
                                                    Ответить
                                                    • До распространения JTAG в той же роли зачастую выступала линия I2C.
                                                      Ответить
                                                  • А что этот JTAG вообще дает?
                                                    Ответить
                                                    • Вика говорит, что его используют для тестирования и для прошивки:
                                                      https://ru.wikipedia.org/wiki/JTAG

                                                      В более простых микросхемах в той же роли использовалась шина I2C:
                                                      https://ru.wikipedia.org/wiki/I²C
                                                      Ответить
                                                      • То есть любую микросхему на которой он есть можно перешить? Или он отключается?
                                                        Ответить
                                                        • Только если там вообще есть что шить. Ну и у тех же ARM'овских контроллеров есть бит защиты который навсегда отрубает отладку и доступ к флешке извне.
                                                          Ответить
                                                          • Можно растворить корпус и сделать какую-нибудь херню, чтоб там эти битики обнулились. См. например https://www.bunniestudios.com/blog/?page_id=40

                                                            >Using this technique, I was able to effectively reset the security fuses without impacting the FLASH code array too much. The pictures below show the array memory status according to the programming/readback tool I was using. A part of the code array was still erased, but probably some judicious resizing of the electrical tape could fix that problem.
                                                            Ответить
                                                          • Флеш-память можно прочитать / записать через JTAG не выпаивая?
                                                            Ответить
                                                            • У контроллеров - без проблем, если бит защиты забыли включить.

                                                              На флешках и eMMC - нет, у них вроде не ставят jtag. Но если подключиться дебаггером к процессору, который с этой флешкой работает, то в теории можно.

                                                              Жопа в том, что JTAG - это просто транспорт, а набор команд у каждого чипа свой, часто вообще не документированный. Поэтому ты вроде и видишь чип в цепочке, а что он умеет - да хуй бы знал.
                                                              Ответить
                                                              • А теперь посмотрим, с чего началось обсуждение JTAG. Некто под ником путин-пидор написал: «Вышел такой на кухню на звук кофемашины, а прекрасный незнакомец в это время впаял JTAG в твой верный XyZEL и ВСЁ».

                                                                Уже представил себе, как гости пришли с паяльником, с припоем и разъёмом, с JTAG-адаптером и с кучей софта (у них же пока нет доступа к «Интернету», поэтому нужно брать с собой) для всевозможных чипов (у каждого чипа протокол свой, поэтому универсальным софтом не отделаешься). Кстати, на чём гости будут запускать прошивальщик? Притащат ноутбук или воспользуются компом хозяина?

                                                                Но самый главный вопрос, что они могут сделать с роутером через JTAG посредством такого пердолинга?
                                                                Ответить
                                                                • > пришли с паяльником

                                                                  На этом добычу пароля можно считать законченной. Зачем вся эта ёбля с jtag'ом если можно засунуть паяльник в жопу?
                                                                  Ответить
                                                                  • Напоминает шутку 20-летней давности. Как взломать банкомат? Берёшь кувалду и ноутбук. Подходишь к банкомату и разбиваешь его кувалдой. Забираешь деньги.

                                                                    Зачем тогда ноутбук? Ну какой же хакер без ноутбука!
                                                                    Ответить
                                                                    • Шутку времен когда русьня не видела банкомат? Ты его не разобьешь.
                                                                      Ответить
                                                                      • > времен когда русьня не видела банкомат
                                                                        Карта мир вернула эти времена в зад.

                                                                        А вообще в рашке отдельно стоящих уличных банкоматов вообще нет.
                                                                        Ответить
                                                                        • >Карта мир вернула эти времена в зад.
                                                                          Каким образом?
                                                                          Ответить
                                                                          • Пошёл нахуй с моей ветки, гандон!
                                                                            Ответить
                                                                          • Никаким. Забей. Ты не прокормишь этого кадавра. Он пишет здесь не для того, чтобы опубликовать полезную информацию, а чтобы спровоцировать нас на ответ, который он потом заскриншотит и выложит в «Сосач» со словами: «Смотрите, какие ватники тупые».
                                                                            Ответить
                                                                            • Смотрите, какой ватный инканус тупой!

                                                                              Впрочем, даже он сразу же снимает свой велфер с "мира" и переводит на "визу".
                                                                              Ответить
                                                                            • я не ват­ник но нихера не понимаю
                                                                              Ответить
                                                                              • Это ты зря, ватником быть очень интересно и выгодно, можно получать двойной кайф игнорируя русофоба сёму и одновременно читая его. И ежегодные великие и окончательные победы над игилофашистами в Сирии опять же. Даже от камней с неба крепчаешь!
                                                                                Ответить
                                                                  • > Зачем вся эта ёбля с jtag'ом если можно засунуть паяльник в жопу?

                                                                    Можно пароль вообще не помнить, а хранить на особом самопальном девайсе с УФ-стираемым EPROM и УФ-светодиодом прямо возле окошка. И если стереть пароль, никаким паяльником в жопу его уже не добыть.
                                                                    Ответить
                                                                    • > не добыть
                                                                      Не просто будет объяснить все эти технические подробности с паяльником в жопе.
                                                                      Ответить
                                                                      • Ну, жопу это хоть и не спасет, но пароль добыть не выйдет при всем желании и усердии.
                                                                        Ответить
                                                                        • С другой стороны, своевременное раскрытие паролей может спасти жопу от паяльника. А между паролями и здоровой жопой обычно предпочтительнее выбрать жопу.

                                                                          Кстати, в связи с этим есть интересная техника: делаем «TrueCrypt» контейнер, записываем на него что-нибудь компрометирующее, но не УК-шное (порнуха с 18+, пиратский винрар, etc), пароль храним на бумажке. А внутри этого контейнера делаем ещё один, скрытый (штатная функциональность «TrueCrypt»), на который и записываем ЦП, поварённую книгу анархиста и дистрибутив «Kali Linux».
                                                                          Суть в том, что если придут маски-шоу — им после некоторых колебаний (при виде паяльника) сдаётся бумажка с паролем, выплачивается штраф за незначительную хуйню в контейнере — и всё, если повезёт, то глубже копать не будут. А вот если у пациента на компе всё чистенько, легальненько и даже «WinRAR» куплен — у масок возникнут обоснованные вопросы.
                                                                          Ответить
                                                                          • > копать не будут
                                                                            Но ведь они тоже знают про многослойные контейнеры...
                                                                            Ответить
                                                                            • Ну тогда можно первый скрытый слой из многослойного контейнера показать(на котором будет что-то более серьезное, специально подготовленное на такой случай), а второй (с по-настоящему секретной инфой) не показывать. Как они поймут, что слоев именно столько-то?
                                                                              Ответить
                                                                            • Именно поэтому во внешний контейнер и записывается «немного нелегальное». Такой подход предназначен для обычных анимешников людей, к которым маски-шоу заявятся скорее всего просто для выполнения плана. И в таком случае, когда хренотени ищут не что-то конкретное, а что-нибудь, внешний контейнер с административкой может их устроить.

                                                                              Разумеется, если у них есть какие-то более серьёзные подозрения (на террориста, экстремиста, политического активиста) — копать они будут куда лучше, и контейнер на наличие вложений проверят (паяльником).
                                                                              Ответить
                                                                              • Интересно. А до какой глубины вложений они проверять будут? Пока анус не будет окончательно разрушен?
                                                                                Ответить
                                                                                • Анус не нужен.
                                                                                  Ответить
                                                                                • Пока не найдут рецептов сбора бомб и методичек Навального. Ну или пока не надоест (тогда просто найдут в анусе кармане у подозреваемого пакетик конопли).
                                                                                  Ответить
                                                                                  • Хм, т.е. если я эту бесполезную хуйню положу на рабочий стол, то они дальше и искать не будут? Годно.
                                                                                    Ответить
                                                                                    • Как повезёт, гарантий никто не даст, естественно. Всё зависит от того, кто, что и зачем ищет.
                                                                                      Ответить
                                                                          • >> даже «WinRAR» куплен

                                                                            Это вообще деанон в момент покупки. Особенно в эпоху, когда есть «7-zip», «Freearc», «Peazip» и ещё куча бесплатных.

                                                                            Да «WinRAR» не покупали, когда и конкурирующих архиваторов не было...

                                                                            https://s.put.re/9K42VBx5.jpeg
                                                                            Ответить
                                                                • А я тебе говорил, не отвечать уёбку? Говорил я тебе? А? Говорил?
                                                                  Ответить
                                                                • Начался с этого, а закончился тем что это такое и что с ним можно сделать.
                                                                  Ответить
                                                                • > что они могут сделать
                                                                  Лишнехромосомный, уже раза три упоминали
                                                                  > заливки паршивок

                                                                  Впрочем, менее тривиально, но более фруктово было бы снять пассфразу из памяти
                                                                  Ответить
                                                              • > видишь чип в цепочке, а что он умеет
                                                                Учитывая, консумерские мыльницы представляют собой System-on-Chip... ну ты понял.
                                                                Ответить
                                            • уёбок, зачем ты отвечаешь уёбку?
                                              Ответить
                                      • Типа того, причем в прыщеведре поддержка должна быть в ядре.

                                        > Как определить
                                        Есть всякие кастомайзы типа Eee PC или TransformerPad, там оно точно есть, а в остальных случаях нужен какой-то пердолинг, чтобы определить. Так что проще попробовать.

                                        Сначала найти конечно надо, ну а потом разумеется впаять гребенку.
                                        Ответить
                          • А на ведре есть искоробки читалка qr?
                            Ответить
                            • На самом свежем — да: https://www.cnet.com/how-to/android-10-share-a-wi-fi-password-in-a-snap-with-a-qr-code/
                              Ответить
                              • Охуеть, этот тип сорвал бумажку с паролем и вместо нее повесил надпись "владелец нетопового ведра (т.е. не нехуса) пiшов на хуй"
                                Ответить
                                • 10 же не только на нексусе.
                                  Ответить
                                  • Нехусам обновят через OTA. А например владелец гнусмаса соснет довольно продолжительное время.
                                    Получается даже, что не топовое ведро нужно, а ведро для гиков. Так что это не best practice, а хуита. Нассыте ему в каменты кто-нибудь.
                                    Ответить
                              • А если 10 нету?
                                Ответить
                            • Да один хер почти все какую-нибудь ставят.
                              Ответить
                              • Причём подцепить её можно случайно, установив какую-нибудь программу-комбайн. В некоторых веб-браузерах читалка QR есть.
                                Ответить
                              • На ведре добавить вификонфиг просто, но придется выгнать гостей с другими платформами.
                                Ответить
                              • Не все. Ну хотя если есть мобильный инет то не проблема поставить.
                                Ответить
                                • Я в общем-то только у себя дома wifi и юзаю. В остальных местах и мобильный инет сойдёт.
                                  Ответить
                                • У русни есть специальный "закон" против домашних микросот, поставишь и поедешь на лисоповал. А микросоту твою заберет себе какой мент чи дупутат.
                                  Ответить
                        • Вводить заебешься же, да еще и в смешанном регистре на смарте.
                          Ответить
                      • Ващет нельзя. Для этого нужен рут.
                        Ответить
        • чувак, ты уже понял, что с ним нехуя пиздедь?
          Ответить
      • И чо? Это что-то сверхценное?
        Ответить
    • Кстати, GCC такую вот хрень неосиливает скомпилить в режиме Си:
      #include <stdio.h>
      #include <inttypes.h>
      #include <string.h>
      
      // endian dependend
      #define PUT3(a) (((uint64_t)a[0]<<8*0) | ((uint64_t)a[1]<<8*1) | ((uint64_t)a[2]<<8*2))
      
      void testswitch(uint64_t x)
      {
        switch (x) 
        { 
          case PUT3("abc"): printf("abc\n"); 
            break; 
          case PUT3("def"): printf("def\n"); 
            break; 
          case PUT3("ghi"): printf("ghi\n"); 
            break; 
          default: printf("Choice other than abc, def and ghi\n"); 
            break;   
         }
      }
      
      int main() 
      { 
         uint64_t x = 0;
         char a[] = "abc";
         memcpy(&x, a, sizeof(a));
         testswitch(x);
      
         char b[] = "def";
         memcpy(&x, b, sizeof(b));
         testswitch(x);
      
      
         char c[] = "ghi";
         memcpy(&x, c, sizeof(c));
         testswitch(x);
         return 0;
      }

      https://godbolt.org/z/TjYqd-
      а clang и icc осиливает.
      Ответить
      • Потому что литералы в сишке char* а не const char*.
        Ответить
        • Какой багор )))
          Ответить
        • Там даже такой код не собирается
          const char a[3] = "abc";
            switch (x) 
            { 
              case a[0]:
                printf("a\n");
                break;
              default:
                printf("other\n"); 
                break;   
             }


          error: case label does not reduce to an integer constant
          Ответить
        • >char* а не const char*.
          pardon me? Разве штандарт не говорит, что они могут быть немутабелны?
          Ответить
          • 6.4.5 String literals

            6. It is unspecified whether these arrays are distinct provided their elements have the appropriate values. If the program attempts to modify such an array, the behavior is undefined.
            Ответить
      • https://godbolt.org/z/xvGJB4

        <source>:7:10: warning: expression is not an integer constant expression; folding it to a constant is a GNU extension [-Wgnu-folding-constant]

        Охуенно, учитывая что GCC такое компилить отказывается
        Ответить
        • https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92487 :

          >So this is some GNU extension, but why GCC doesn't support it?

          Because it was undocumented one which was removed a long time ago.

          And when I say undocumented one, I Mean it was a bug that GCC accepted it in the first place :).
          Ответить
          • Фу, пиздец, иссуе трекер из 2000-х.
            Ответить
            • у clang он кстати такой же
              Ответить
            • У гну не только багзила, у низ еще и почтовый менеджер тоже из начаоа 2000х и на перле
              Ответить
            • У них уголочки, скруглённые с помощью CSS3 (border-radius). Это уже 2010-е.
              Ответить
              • а, да, точно.
                в нулевых скругливали через кучу img
                Ответить
            • А что сейчас модно в 2019-2020 году? Проприетарную жиру они там не одобрят, нишвабодно
              Ответить
              • В 2019 году модно делать сайты, на которых вообще ничего невозможно найти. Глянул — листай дальше. И чтобы ещё побольше скриптов, чтобы жрало память и тормозило в любом браузере.

                Даже «Мозилла» какую-то хуйню сотворила, из-за чего у них теперь каждая вторая страница выдаёт «Rendering error» вместо текста статьи.
                Ответить
                • В 2019 году модно делать сингл пейдж опликейшен.

                  Допустим, на сайте есть кнопки:
                  * список хомяков
                  * список дураков

                  В 1999-м я бы каждую ссылку открыл в отдельном окне, они бы из загрузились.
                  в 2019-м это не ссылка, а элемент с онкликом джаваскриптовым.
                  Я вынужен поочереди нажать на кнопку, подождать 10 секунд пока загрузится, потом вернуться обратно. Ссылку скопировать я тоже не могу.

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

                      А удобство тут вторично. Нет ничего сложного в том, чтобы кликнуть два раза. Пользователь скорее всего не знает что можно как-то более удобно сделать, вот и не парится
                      Ответить
              • Только что нашёл остросюжетную статью:
                http://metroblog.ru/post/4853/
                Ответить
                • Блядь, сука, вот от «Гугла» просто пиздец как полыхает. Особенно весело у них на мобильной версии, где порядок вкладок текст/картинки/видео/новости/etc меняется ПОСЛЕ, СУКА, ЗАГРУЗКИ!!! ДИНАМИЧЕСКИ, СКРИПТАМИ!!!! Я, БЛЯДЬ, ВВЁЛ ЗАПРОС, ЖМУ НА КАРТИНКИ, А ЭТО УЁБИЩНОЕ ТВОРЕНИЕ ТУПЫХ ДЕГЕНЕРАТОВ-МАРКЕТОЛОГОВ ДЛЯ ТУПЫХ ДЕГЕНЕРАТОВ-ДОМОХОЗЯЕК ПОДМЕНЯЕТ ПОРЯДОК ВКЛАДОК ПРЯМО ПОД, СУКА, ПАЛЬЦЕМ И ОТПРАВЛЯЕТ МЕНЯ СМОТРЕТЬ КАРТЫ!!! СУКА, НЕНАВИЖУ, УБЛЮДКИ, ГОРИТЕ В АДУ, МРАЗИ!!!
                  Ответить
                  • Меня ещё раздражает, когда начинаю вводить текст в строку поиска, а по мере загрузки страницы эта строка теряет фокус или текст сбрасывается и после окончания загрузки приходится свой запрос вводить повторно.

                    Вот что такое сверхсложное может грузиться пару минут, да ещё сбрасывать фокус или введённый текст, если всего лишь нужно отобразить форму с текстовым инпутом и кнопкой отправки?
                    Ответить
                  • Что ж с тобой будет после знакомства с Линкедином
                    Ответить
                    • (организацией, запрещённой на территории РФ)
                      Ответить
                      • Странно, по-моему, всё хорошо открывается.
                        Ответить
                        • Я пытался зайти на «Линкедин» через сети разных провайдеров. Нет пути. Он даже через некоторые прокси недоступен.
                          Ответить
                          • Значит, некоторые провайдеры кладут болт на блокировки
                            Ответить
                      • Русьнепроблемы белых людей не ебут.
                        Ответить
                      • Барин же разрешил охранительную мантру не читать.
                        Ответить
                  • Хз чего у тебя так горит, проблем никогда не было.
                    Ответить
                • Планшетизация вместо адаптивности

                  Тут всё просто — когда приходит пора осовременить сайт, большинство компаний идут по пути «Давайте сделаем, чтобы сферической домохозяйке на айпаде было удобно!», после чего картинки и шрифт радикально укрупняются, между блоками появляются конские пробелы, множество полезных элементов куда-то бесследно исчезают.

                  На десктопы сейчас вообще почему-то всем плевать, хотя их доля немаленькая и как минимум по человекочасам уж точно снижаться не будет. При этом мы повсюду видим примеры типа провального нового Кинопоиска, где на 30-дюймовом мониторе получилось меньше полезной информации, чем раньше помещалось на обычном 19-дюймовом офиснике.
                  ---
                  Я об этом уже писал.
                  Ответить
    • Тогда уж лучше
      switch (PUT3(x[0], x[1], x[2])) 
      { 
          case PUT3('a','b','c'): printf("abc\n"); 
            break
      Ответить
      • инью, давай починим
        Notice: Undefined offset: 0 in /home/g/guestinho/govnokod.xyz/public_html/wp-includes/class-wp-query.php on line 3148

        ?

        собачкой;))
        Ответить
        • Кстати
          Ответить
          • Кстати что?

            Я не могу тебе помочь, мне мама не велит с "PHP" возиться. Говорит, от этого бородавки на руках.
            Ответить
    • Я за «C++».
      constexpr uint64_t string_hash(std::string_view str)
      {
          uint64_t hash = 0xcbf29ce484222325;
          for (auto && c : str) {
              hash ^= c;
              hash *= 0x100000001b3;
          }
          return hash;
      }
      
      int main()
      {
          std::string s;
          std::cin >> s;
          switch (string_hash(s)) {
          case string_hash("hello"): std::cout << "Hello!" << std::endl; break;
          case string_hash("bye"): std::cout << "Bye!" << std::endl; break;
          default: std::cout << "String not found." << std::endl; break;
          }
          return EXIT_SUCCESS;
      }

      https://wandbox.org/permlink/MQup6gNK125oeRgK
      Ответить
      • Именно поэтому я за «PHP».
        Ответить
      • Тут КОЛЛИЗИИ могут быть, хуйня короче
        Ответить
        • В каждом кейсе придётся дополнительно делать полное сравнение строк на равенство...

          Но иногда такое говно может ускорить поиск: если у нас много очень длинных строк с одинаковым началом, то несовпадение хэша их сразу отсечёт.
          Ответить
        • Но они обнаружатся в компайлтайме, или нет?
          Ответить
          • Они в компилтайме обнаружатся если у тебя string_hash("hello") и string_hash("bye") дадут одинаковый хеш (тогда будет switch с одинаковыми метками - error: duplicate case value)

            Если же у тебя хеш для слова "huipizda" который ты введешь с клавиатуры совпадет с хешем для "hello" в case то в компилтайме нихуя не обнаружится
            Ответить
        • Тут нужен мастер-мокроёб, чтобы довести PoC до MVP.
          constexpr uint64_t string_hash(std::string_view str)
          {
              return str.size();
          }
          
          int main()
          {
              std::string s;
              std::cin >> s; 
          #define CASE(s, x) case string_hash(x): if (x != s) { goto collision; }  
              switch (string_hash(s)) {
              CASE(s, "hello") std::cout << "Hello!" << std::endl; break;
              CASE(s, "bye") std::cout << "Bye!" << std::endl; break;
              collision: std::cout << "Collision!" << std::endl; break;
              default: std::cout << "String not found." << std::endl; break;
              }
          #undef CASE
              return EXIT_SUCCESS;
          }

          https://wandbox.org/permlink/vGraig9HkxoFipJK
          Ответить
          • Сколько хуйни в крестоговно не добавляй - всё равно Сишный Препроцессор™ нужен
            Ответить
            • Ничего, вот добавят std::embed — и окончательно избавимся от тяжёлого наследия царского режима сишки!
              Ответить
    • У меня тут всё мокренько:
      #include <stdio.h>
      #include <stdint.h>
      #include <string.h>
      #include <stdbool.h>
      
      #define STRSWITCH(s) do{\
          bool flag_=false;\
          char*switchstr_=(s);\
          int switchstrlen_=strlen(switchstr_);{{
      
      #define STRCASE(s) \
          }}{\
              char*casestr_=(s);\
              int casestrlen_=strlen(casestr_);\
              flag_=flag_||switchstrlen_==casestrlen_&&!strncmp(switchstr_,casestr_,casestrlen_);\
              if(flag_){
      
      #define STRSWITCHDEFAULT }}{{
      #define ENDSTRSWITCH }}}while(0);
      
      void test(char *str)
      {
          printf("case \"%s\":\n", str);
          STRSWITCH (str)
          STRCASE("hui")
              puts("hui");
          STRCASE("pizda")
              puts("pizda"); break;
          STRCASE("G-goorda")
              puts("G-goorda");
          STRSWITCHDEFAULT
              puts("default");
          ENDSTRSWITCH
      }
      
      int main(void)
      {
          test("govno");
          test("hui");
          test("pizda");
          test("G-goorda");
          return 0;
      }
      https://ideone.com/Ifo0IE
      Ответить

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