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

    +153

    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
    function checkvar($array)
    {
    	$good=true;
    	for($i=0;$i<count($arr);$i++)
    	{
    		$array[$i]=stripslashes(strtolower(str_replace("\n", "<BR>", str_replace("\r", "\n", str_replace("\r\n", "\n", $arr[$i])))));
    		if(strlen($array[$i])===0) $good=false;
    	}
    	return $good;
    }
    ...
    $messagevars = array($_POST["var1"], $_POST["var2"], $_POST["var3"], $_POST["var4"], $_POST["var5"], $_POST["var6"], $_POST["var7"], $_POST["var8"], $_POST["var9"], $_POST["var10"], $_POST["var11"], $_POST["var12"], $_POST["var13"], $_POST["var14"], $_POST["var15"], $_POST["var16"], $_POST["var17"]);
    if(checkvar($messagevars)===true)
    {
    	file_put_contents(ROOT_DIR."/".$logname.".txt", $messagevars[0]."\n".$messagevars[1]."\n".$messagevars[2]."\n".$messagevars[3]."\n".$messagevars[4]."\n".$messagevars[5]."\n".$messagevars[6]."\n".$messagevars[7]."\n".$messagevars[8]."\n".$messagevars[9]."\n".$messagevars[10]."\n".$messagevars[11]."\n".$messagevars[12]."\n".$messagevars[13]."\n".$messagevars[14]."\n".$messagevars[15]."\n".$messagevars[16]);
    }

    Made in china?!

    Запостил: XyHb, 02 Августа 2010

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

    • made in india
      Ответить
    • В чайне лапша, не стоит путать :-)
      Ответить
    • Имел в виду это:
      http://lurkmore.ru/Быдлокод#K.D0.B8.D1.82.D0.B0.D0.B9.D1.81 .D0.BA.D0.B8.D0.B9_.D0.BA.D0.BE.D0.B4
      Ответить
      • Лурка не разбирается в программинге и отростков оного, разве что в дваче. А у нас тут на виду разные были, определяем с 1-го взгляда!
        Ответить
        • Как ты сделал ник с пробелами?
          Ответить
          • страйкер тогда был молодой, охочий до экспериментов со зрелыми женщинами на конюшне
            Ответить
          • там еще и русские ники были

            Потом раки стали делать клонов типа заменяя "o" на "о" и Страйко их запретил
            Ответить
    • nl2br() — неведомая функция.

      И почему только 17 вариантов? Нужно 100500.
      Ответить
    • а в цикле
      for($i=0;$i<count($arr);$i++) ...

      неведомый $arr
      Ответить
      • > $i++

        Какое крестоблядство )))
        Ответить
        • Не, любая настоящая крестоблядь тебе пояснит, что i++ может быть непирфомансно, если тип i — какой-то класс, и нужно писать только ++i.
          Ответить
          • почему?
            Ответить
            • i++ по семантике копирует текущее состояние, инкрементирует себя и возвращает копию. В итоге у тебя лишнее копирование и потом ещё освобождение.

              ++i семантически инкрементирует себя и возвращает ссылку на себя. Никаких копий.

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

                В случае же ++i сначала увеличивается, а потом попадает в выражение
                Ответить
              • Интересно, а что будет находится в int, который передают в operator++(int)? Какой вообще долбоёб придумал этот костыль?
                Ответить
                • http://eel.is/c++draft/over.inc
                  >>> When the postfix increment is called as a result of using the ++ operator, the int argument will have value zero.
                  >>> 116) Calling operator++ explicitly, as in expressions like a.operator++(2), has no special properties: The argument to operator++ is 2.
                  Ответить
                  • То есть получается лишний оверхед, чтобы ноль в стек положить?
                    Ответить
                    • Во-первых, оператор скорее всего будет заинлайнен, и никаких нулей там не будет.
                      Во-вторых, не в стек, а в «rdx».
                      В-третьих, даже если не будет заинлайнен —операция обнуления регистра сейчас настолько оптимизирована, что процессор её даже выполнять не будет: https://easyperf.net/blog/2018/04/22/What-optimizations-you-can-expect-from-CPU («Zero Idiom»).
                      Ответить
                      • Я еще даже не пошел по ссылке, но уже подумал, что раз регистров в современном проце куда больше чем в его ISA, то наверняка он заалоцирует новый регистр, а старый потом почистит в фоне если нужно или просто перезапишет.

                        >mov eax, 0 is not recognized:
                        именно по-этому я за
                        sub eax, eax

                        (напомните, почему последние сорок лет все именно так обнуляют регистры?)
                        Ответить
                        • Лучше xor eax,eax, потому что он не трогает флаг переноса.

                          mov eax,0 требует хранить четыре байта нулей прямо в коде. А mov rax,0 (единственная инструкция в x86/64 с 64-битным immediate) потребует 8 байтов нулей.
                          Ответить
                          • ты, находясь в здравом уме и рассудке, действительно предлагаешь нам покодить на низкоуровневом языке, состоящем чуть более чем нацело, из мнемоник?
                            Ответить
                • Они синтаксис с двухместных операторов вроде +, -, *, / скопировали что ли, только второй аргумент не используется?

                  А унарный плюс и унарный минус можно перегрузить?
                  Ответить
          • опытная крестоблядь
            Ответить
          • Если тип i — какой-то класс, поведение будет зависеть от того, кто как написал перегрузку соотв. операторов.

            Никакой встроенной семантики там нет, т.е. в самой "функции" надо писать
            int operator++(int) {
              int tmp = shit;
              shit = shit + 1;
              return tmp;
            }
            Ответить
            • Кстати, о перегрузках. Ещё интересно, что операторы && и || в случае перегрузки теряют свою ленивость, и вернуть её никак нельзя. Т. е. в выражении (a && b) значение b будет вычисляться всегда, если для этих аргументов оператор перегружен.
              Ответить

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