1. PHP / Говнокод #25654

    0

    1. 1
    2. 2
    array_filter($input, $callback);
    array_map($callback, $input);

    Запостил: OCETuHCKuu_nemyx, 31 Мая 2019

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

    • Люблю JavaScript
      array.map(f).filter(g);
      Ответить
    • Доллар по 65.55
      Ответить
    • Емнип, у explode (или implode?) вообще в любом порядке аргументы передаются.
      Ответить
      • Ага
        Замечание:
        
        По историческим причинам функции implode() можно передавать аргументы в любом порядке,
        однако для согласованности с функцией explode() следует использовать документированный порядок аргументов.

        https://www.php.net/manual/ru/function.implode.php
        Ответить
        • По историческим причинам наш язык неконсистентный кусок говна
          Ответить
          • А какой нет? По-моему ни один язык история не пощадила.
            Ответить
          • Кококококонсистентные языки не выходят за пределы лаборатории.
            Ответить
    • Это потомушо у array_map может быть несколько $input, поэтому $callback нельзя сделать последним аргументом. Вернее можно, но это было бы более ебанутее.
      Ответить
    • PHP это язык для внимательных.

      Люблю коок
      fun main() {
      
        val truth = arrayOf("kotlin", "php", "ruby").filter { "hp" in it }.map { "$it govno" }
        print(truth)
      }
      Ответить
      • люблю руб
        ["ruby", "kotlin", "php"].select {|lang| lang.include?("ub")}.map { |lang| "#{lang} is cool" }
        Ответить
        • select вместо filter?
          include? вместо contains?
          Почему тогда map а не collect?
          Ответить
          • Именно поэтому я за «императивщину».
            for lang in ["ruby", "kotlin", "php", "python"]:
                if 'thon' in lang:
                    print(f'Именно поэтому я за {lang}.')
            Ответить
            • какой же скучный этот ваш путхон
              ну просто блядь как диктант в школе пишешь
              Ответить
              • сука хуже только какие-нить четвертые джавы и вижал байсики
                что бы там было так:
                Iterator iterator = new String[]{"жопа", "срет"};
                while (iterator.hasNext()) {
                  String zhopa = (String) iterator.next();
                  if (zhopa.equals("срет")) {
                   System.out.print(String.format("хуй не %s", zhopa))
                 }
                }
                Ответить
                • А как это будет выглядеть на «modern C++»?
                  Ответить
                  • Мне лень крутить-вертеть-запутать-хотеть, поэтому вот дословный перевод с «Python»:
                    #include <iostream>
                    #include <cstring>
                    
                    int main()
                    {
                        for (auto && lang : { "ruby", "kotlin", "php", "C++", "python" }) {
                            if (strstr(lang, "++")) {
                                std::cout << "Imenno poetomu ya protiv \"" << lang << "\"." << std::endl;
                            }
                        }
                    
                        return EXIT_SUCCESS;
                    }


                    Маленькое замечание: несмотря на всю модерновость, «for:» в данном случае итерирует по «const char *», а потому приходится использовать функцию «strstr» из каменного века. А вот чтобы совсем модерново было — надо заинклюдить «<string>», потом из неймспейса «std::string_literals» вытащить «operator""s» и после каждой строки в массиве добавить постфикс «s». Тогда «lang» превратится в «std::string», и можно будет юзать «lang.find». Удобство!
                    Ответить
                    • Жмякнешь меня в жопан?
                      Ответить
                    • std::vector<std::string> languages {"c++", ...};
                      Ответить
                      • И чтобы ещё явно перечислить итераторы, аллокаторы и т. п. И вместо strstr тоже что-нибудь объектно-ориентированное. Или вообще чтобы ещё «Буст» был.
                        Ответить
                        • Можно отфильтровать строки в конпайлтайме. Но я слишком стар для всей этой хуйни.
                          Ответить
                    • strstr(lang.c_str(), "++")
                      Ответить
                    • а напиши на шоблоёбле
                      чтобы в компайл тайме
                      Ответить
                    • const truth = ["ruby", "kotlin", "JavaScript", "c++", "python", "php"]
                      	.filter(lang => lang.includes("v"))
                      	.map(lang => `${lang} is awesome`)
                      console.log(truth);

                      и ещё...
                      for(const lang of ["ruby", "kotlin", "JavaScript", "c++", "python", "php"]) {
                      	if(!lang.includes("v"))
                      		console.log(`Oh shit, there's a piece of ${lang}`);
                      }
                      Ответить
                      • То ли дело кобенаторное программирование:
                        load 'format/printf'
                           
                           '"%s" —– говно.'&printf"0 (#~ (+./@:E.~&'Java')every) 'Kotlin'; 'Ryby'; 'JavaScript'; 'Java'
                        "JavaScript" —– говно.
                        "Java" —– говно.
                           
                           'Именно поэтому я за ''%s''.'&printf"0 (#~ -:&'J'every) 'Kotlin'; 'Ryby'; 'JavaScript'; 'J'
                        Именно поэтому я за 'J'.
                        Ответить
                      • Допустим, у меня есть Iterable. Он бесконечно большой, и в память его загрузить.

                        Я хочу выгрузить него все объекты по определенному условию.
                        Или первые 20 объектов по условию.
                        Как сделать это на JS?
                        Ответить
                • Как Iterator-у может быть присвоен string?
                  Ответить
              • И училка отступы проверяет
                Ответить
                • Как вспомню начальную школу... Отступите столько-то клеточек слева, столько-то клеточек сверху...
                  Ответить
                  • Как вспомню гимназию... ънтшДЭЙуыуылЛЫсънтшСЫКСтызRАКанСПАрыфай. .. и никаких клеточек с отступами (ну разве что отступы в CSS с линейными градиентами)
                    Ответить
                  • ...and today we will listen to sixties rock on Spotify! Что-то не сообразил, что в РФ не воспринимают потоки...
                    Ответить
                    • Как это — «не воспринимают»? Вот у нас когда труба водоснабжения лопается — так по улицам такие потоки текут, просто загляденье!
                      Ответить
              • То ли дело "пхп": постоянно сюрпризы какие-то вылазят. Впрочем, они и в питоне вылазят.
                Ответить
            • f-строки. Чтобы на XP запустилось, придётся портировать 3.6 или 3.7.
              Ответить
              • "какой скучный этот ваш {}".format(lang)

                а еще там был "%", помните?

                и товоо в путхончике 3 способа форматнуть строку

                один очевидный, говоирте?
                Ответить
                • % - устаревший, но в logger, по-моему, есть только он :) А поддержка f строк в каком-нибудь иде хоть есть?
                  Ответить
                  • А я в логгер тоже f-строками пишу. Так что про процентики в тройке можно забыть.
                    Ответить
                    • В логгер передаются строки с форматом, которые сам логгер подставляет.
                      Ответить
                      • Ок, я таки обосрался. Если в логируемых данных будут процентики, то мой код упадёт/выведет хуйню. Придётся переделывать, хех.
                        Ответить
                        • Где-то был юзернейм с процентами
                          Ответить
                        • @Ок, я таки обосрался

                          https://www.bebeazul.top/wp-content/uploads/2016/05/tarta-panales-bebeazul.top-21.jpg
                          Ответить
                          • Это так ватники поздравляют своих чад с тем, что их миновала участь предыдущих проглоченных соратников ?
                            Ответить
                            • Сам у себя спросил?
                              Ответить
                              • Сам себе ответил?
                                Ответить
                                • Сами с собой разговариваете?
                                  Ответить
                                  • Это весьма спорный и противоречивый вопрос...
                                    Я отвечаю давно уже на похуй, если контент интересный или просто хочу выебнуться.

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

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

                    но Сёме это не важно, у него все равно питон с f-строками на win98 не заведется
                    Ответить
                    • Вообще странно, что есть зависимость между синтаксисом и версией поддерживаемой ОС.

                      Кококококие такие функции API операционной системы нужны, чтобы поддержать f-строки?
                      Ответить
                      • Почему turbo pascal 7.0 не работает на windows 10 x64?
                        какие функции API операционной системы нужны чтобы работал pascal?
                        Ответить
                        • 1. Потому что он под другую операционную систему. Например, я не могу в Windows запустить Python для Линукса.

                          В то же время, я могу один и тот же исходный текст на Питоне выполнить в Windows из Python для Windows и в Линуксе из Python для Линукса, если в этом исходнике нет ничего платформозависимого.

                          2. Реализации языка Паскаль для Windows 10 x64 имеются. В Windows 10 x64 можно запустить реализацию для едва ли не любой версии Win32.
                          Ответить
                          • Дык фишка в том, что новые реализации забили на поддержку xp, а старые еще не умели в f-строки. Так вышло, что пересечения у этих множеств нету.
                            Ответить
                          • python3.7 тоже под другую операционную систему

                            под windows7+
                            Ответить
                            • Не совсем. Он под другую версию системы. Он под систему с тем же ABI, но импортирует несколько дополнительных функций из kernel32.dll, user32.dll, advapi32.dll.

                              В Линуксе, кстати, такая же фигня бывает: программа может из libc.so импортировать функцию, которой в данной версии libc нет.
                              Ответить
                        • Потому что среда работает с дос расширителем, которые в принципе не поддерживаются в NT.
                          Ответить
                          • Нет. Turbo Pascal запускается из-под NTVDM. Иногда бывают глюки, поскольку в NTVDM урезанный расширитель, но всё-таки работает.

                            В x64 он не запускается, потому что в x64 отсутствует NTVDM.
                            Ответить
                            • Ну вот, а под win32 всё работает.
                              Ответить
                              • На серваках вроде не работало если нтвдм не поставить. Или я гоню?
                                Ответить
                            • @В x64 он не запускается, потому что в x64 отсутствует NTVDM.

                              КАКОЙ БАГОР ))))) ))))) ))))) )))))
                              Ответить
                              • Есть неофициальный проект (возможно, нарушающий всевозможные лицензии) на базе Windows Research Kit и стыренных исходников Windows NT 4.0:
                                https://github.com/leecher1337/ntvdmx64

                                Тестировал на Windows 8.1 x64, брат жив.

                                Ну и есть всякие эмуляторы вроде Dosbox, но это уже не совсем честно.
                                Ответить
                                • Ведь гитхаб принадлежит майкрософту. Какой багор )))
                                  Ответить
                                  • Кстати, проект в Гитхабе не содержит стыренных исходников Windows, он выпущен в виде патча к ним. Т. е. я сам должен добыть нелегальную копию исходников Windows (в readme упоминаются OpenNT под именем old-src.trunk.r687.20150728.7z, а также WRK под именем old-sdk.trunk_r57.20150728.7z).

                                    Типа кто разыскал эти два файла и пропатчил, тот и нарушитель.
                                    Ответить
                                    • Патч выложить в гит? Какой анскилл ))))))))))))))))))
                                      Ответить
                                  • Помню время когда у МС главным ВЦС был сурссеейф

                                    Он использовал SMB в кочесте ситевово протоола и имел писи мистичную локировку

                                    Ктобы сказал тогда мне, 19ти летнему, что МС подружаца с прыщами, я бы ни в жизни не поверил
                                    Ответить
                                    • Бамп отсосу прыщеблядей!
                                      Ответить
                                      • В моем городе есть Светлановский проспект

                                        На нем есть забор

                                        В моем детстве (в 90е) там было написано OS/2 rules
                                        Ответить
                                        • да
                                          так и было
                                          http://ru2.halfos.ru/view/o0038.html
                                          Ответить
                                          • да, это именно они

                                            к сожалению, этих надписей нет уже лет двадцать

                                            Спасибо что вернули мне детство
                                            Ответить
                                    • огонь подружится с дождем
                                      мы будем делать это вдвоем
                                      Ответить
                                • Как вообще исходники утекают обычно? Почему бывшие сотрудники анонимно не выкладывают код? Разве таких нету поехавших?
                                  Ответить
                                • > Windows Research Kit
                                  Wat?
                                  Ответить
                                  • Kernel. Я описа́лся. Кака́я анскилльность )))
                                    Ответить
                                    • Пффф. Так это не утёкшие, это их сами отдали.
                                      Ответить
                                      • WRK сами отдали, но для кококомпиляции NTVDMx64 их недостаточно, ибо в них нет самого интересного. В WRK даже HAL кинули бинарником, а не исходниками.
                                        Ответить
                                    • Синий Kit
                                      Ответить
                              • Смотрите, что ещё нашёл (пока не тестировал):
                                https://github.com/otya128/winevdm
                                https://github.com/Mwyann/win3mu
                                https://github.com/cshaxu/nxvm
                                Ответить
                                • в wine должно быть готовое
                                  Ответить
                                  • Кстати, замечание автора win3mu: «Many 16-bit Windows programs use the infamous Int 21h for file access and other environment related functions so they’ll need to be implemented too».

                                    Например, в 16-битной KERNEL.DLL отсутствуют аналоги функций FindFirstFile/FindNextFile. Эти функции приложения Win16 вызывали посредством INT 21h. Т. е. для запуска 16-битных программ Windows нужно ещё эмулировать аналоги функций DOS для защищённого режима.

                                    В OS/2 зависимость от INT 21h убрали, там все программы вызывают функции ОС только через DLL. А в Windows 3.x убрать такую зависимость не смогли, поэтому Windows x64 умеет запускать приложения Win32, а приложения Win16 из-под Windows x64 без эмулятора DOS не запустишь.
                                    Ответить
                                    • Откуда ты всё это знаешь?
                                      Ответить
                                      • Какой разум )))
                                        Ответить
                                      • Я пользовался компом с помойки ещё до того, как это стало мейнстримом.
                                        Ответить
                                        • Как именно пользовался? Писал софт под винду?
                                          Ответить
                                          • Прочел какую-то книжку по асму, он тогда был популярен.
                                            Ответить
                                            • Я читал по оссомблеру ровно тры книжки

                                              Это был Кип Ирвин (очень рекомендую)
                                              Это был арт оф ассембли ленгвидж
                                              И еще Юров

                                              Я помню что читал, писал под дос н асме и тек
                                              Ответить
                                              • килобайты
                                                превратятся в прошествие дней
                                                в гибайты
                                                Ответить
                                        • в моем детстве не было компов на помойке

                                          помню когда мне было 18 лет комп стоил 1000 баксов
                                          а моя зарплата была 100 баксов
                                          я мог год копить на туалатин
                                          Ответить
                                          • Когда мне было 18 лет, не было никаких «туалатинов». Народ ещё тёк от «Пентиума Про», а «Pentium II» был несбыточной мечтой.
                                            Ответить
                                      • ну это же инакнус гой, он экперт по старому гомну
                                        Ответить
                                    • >приложения Win16
                                      Не проще ли win95 в виртуалке запустить?
                                      Ответить
                                      • Мы не ищем лёгких путей! Нужно, чтобы каждое приложение взаимодействовало с рабочим столом, чтобы отображалось в диспетчере задач и т. п.
                                        Ответить
                      • представляешь, constexp не поддерживается в BSD 4.4, MS-DOS и PDP-11
                        Ответить
                  • Пока не было f-строк я был за %. format вербозный и медленный.
                    Ответить
                • Меня больше беспокоит, что из байтов выкинули все форматы.
                  Ответить
                  • Да и хуй с ними.
                    Ответить
                  • А ты типо байтоёб?
                    Ответить
                    • Им завезли struct и ctypes. Нет, хотим форматом клеить...
                      Ответить
                      • Каким концом это здесь?
                        Ответить
                        • А что ты там такое форматируешь, что не хватает join, ctypes и struct?
                          Ответить
                          • То же самое что и в юникоде. Не могу вот прямо так вспомнить. join это bytes.join()?
                            Ответить
                            • Почему не сформатировать в юникоде, а потом сконвертить в байты?

                              Да, байтовый джойн.
                              Ответить
                              • Ага, танцы с кодировками. Всё просто и понятно. Вот нахуя было ломать то, что работало?
                                Ответить
                                • > работало
                                  Через жопу и неявный 'ascii' кодек.

                                  З.Ы. Напиши себе этот формат сам. Или скачай либу, ты же не один, кому не хватает этой фичи?
                                  Ответить
                                  • Через 'ascii' работало только если у операндов был разный тип, а байты с байтами всегда работали нормально.

                                    >ты же не один, кому не хватает этой фичи
                                    Ага. И Ронахер один, кому были нужны u"" литералы (вот уж что можно было бы шкриптом сконвертировать, но нет, вернули).
                                    Ответить
                                    • > байты с байтами
                                      Ну да, т.е. в байтовом формате можно юзать только байты и числа, всё остальное пойдёт через юникод и неявный кодек.

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

                        Я пока вижу профит разве что в торрентовском bencoding с его диким сочетанием текста и блобов. И то с большой натяжкой.
                        Ответить
                        • Там как раз формат не нужен. В том обсуждении с тобой проблема была в том что в тройке поменяли апи и перестал работать модуль от двойки.
                          Ответить
                          • А где нужен то? 99% задач решается как сборка юникодом + encode или сборка struct/ctypes + join.
                            Ответить
                          • > не нужен
                            Ну как, там как раз все эти '12:строка' и 'i15e', которые выглядят подходящими для формата. Причем склеить весь пакет юникодом нельзя из-за блобов.
                            Ответить
                          • Я жду конкретный пример кода, который показывает профит от наличия формата с байтами.
                            Ответить
                      • > генерация HTML
                        > байтовые строки
                        Ты сейчас серьезно? Может быть HTTP?
                        Ответить
                        • Кое-где и hmtl юзал, а что? В http тоже, кстати. Что, не бывает случаев, когда текст в байтах?
                          Ответить
                          • А то что хтмл и даже заголовки хттп можно собрать как текст и позвать encode.
                            Ответить
                          • > текст в байтах
                            Encode кусочков (если они не литералы) + join. Даже эффективнее будет т.к. join один на весь пакет. Это при условии, что мы про байтоёбство а не всякие html.
                            Ответить
                            • Подтверждаю, сам так запросы крафтил.
                              request = b'\r\n'.join(map(lambda x: x.encode('utf-8'), [
                                                      'GET / HTTP/1.1',
                                                      'Host: {0}'.format(host),
                                                      'Connection: close',
                                                      'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0',
                                                      'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                                                      'Accept-Encoding: gzip, deflate',
                                                      'Accept-Language: en-US;q=0.8,en;q=0.3',
                                                      'Dnt: 1',
                                                      '\r\n'
                                        ]))
                              Ответить
                              • Да тут можно было сначала юникодный join потом encode без всех этих мапов и лямбд. Бинарных данных то нету.
                                Ответить
                                • Да, точно, привычная конструкция просто.
                                  Ответить
                                • Ну ок, а если есть?
                                  Ответить
                                  • То это bencoding. Я других форматов, где блобы посреди текста (не наоборот!) не помню.
                                    Ответить
                                    • В «PDF» такое бывает:
                                      <<
                                      /Length 1488
                                      /Filter /FlateDecode
                                      >>
                                      stream
                                      хуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхуюхую
                                      endstream
                                      Ответить
                                      • А если в блобе встретится "endstream"?

                                        З.Ы. А, оно там для красоты, длина же есть.
                                        Ответить
                                        • Да, кокококоманда stream принимает на вход словарь (литерал словаря заключён в вот такие << ёлочки >> ), в котором обязательно должно быть поле /Length, иначе распидорасит.
                                          Ответить
                                    • Пытался вспомнить, где ещё бывает, но не смог, хотя где-то ещё видел.

                                      Блобы посреди текста не любят, потому что тогда этот текст нельзя будет редактировать обычным текстовым редактором, понадобится специальный. Обычные текстовые редакторы могут заменять "\r" или "\n" на "\r\n" или наоборот, таб на 8 пробелов или наоборот и ещё что-нибудь портить.
                                      Ответить
                                      • Кстати, а в xml cdata можно хуйнуть блобца?
                                        Ответить
                                        • Попытался нагуглить примеры. Оказывается, бывают не только первоапрельские РФЦ, но и первоапрельские ХЕРы:
                                          https://xmpp.org/extensions/xep-0239.html
                                          Ответить
                                          • Чего хочешь, то и будет. Даже заштатная BitTorrent Inc. где два хэша связать не могут, тоже какие-то PUKи публикует.
                                            Ответить
                                            • Кстати, очень показательно для тех, кто до сих пор верит в "смышленую русню". 10 лет процветающего бродбэнда, почти полная свобода файлообмена и просто ВОПИЮЩАЯ костыльность доминирующего на рынке протокола. Но у русни опять климат не тот.
                                              Ответить
                          • Ну и в бинарных протоколах, где строки сериализуются, к примеру, как 4 байта длины + контент в утф8, формат не особо поможет.
                            Ответить
                            • Я про бинарные и не говорю.
                              Ответить
                              • Петух, бинарные, погода.
                                Ответить
                                • Кок! Бинарные опционы Чемпион, 48, улица Чайковского, Микрорайон Б, Ступино, городской округ Ступино, Московская область, ЦФО, 142802, РФ. 22 градуса тепла. Ясно.
                                  Ответить
      • >> PHP это язык для внимательных.

        Именно поэтому я за «PHP».
        Ответить

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