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

    +164

    1. 1
    echo "Дней до освобождения: " . $freedays, "<br>";

    В жопу унификацию. Программист не справился с задачей поставить два одинаковых знака - точки или запятые - в одной строке.

    Запостил: Khvorostin, 19 Сентября 2014

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

    • По этому в Perl 6 оператор конкатенации строк это ~
      Ответить
      • А в Бейсике по той же причине оператор конкатенации +, а в SQL ||, а в других языках + — это сложение, ~ — это битовое отрицание, а || — это логическая дизъюнкция, чтобы не запутаться.
        Ответить
        • > SQL ||
          Но, при этом, в MySQL || - это дизъюнкция, чтобы не запутаться.
          Ответить
          • мускуль всегда был "особенным"
            Ответить
          • З.Ы. Вечно забываю, кто из них "и", а кто "или". Понапридумывают конъюнкций всяких... С абсциссой и ординатой аналогичная фигня. Да и широта с долготой были для меня проблемой на географии..
            Ответить
            • Лево и право хоть не путал?
              Ответить
              • главное женщин с мужчинами не путать
                Ответить
                • Это бывает очень сложно.
                  Ответить
                  • сколько раз ошибался?
                    Ответить
                    • слава богу не разу. Но судя по тому что ходит по Москве лучше не рисковать. Есть нехилый шанс ошибиться.
                      Ответить
                      • Если у бабы кадык есть, дружок
                        Смело с разбегу ей бей между ног
                        Ответить
                        • Так ведь к нам в Сибирь они из-за холода не приезжают.
                          Ответить
                          • Видимо не был ты в томске. Тут их таки много
                            Ответить
                            • Знаешь, чем мужик отличается от бабы? У мужика между ног всегда один и тот же член. Твоё поведение же опровергает эту мудрую мысль. Съебись отсюда.
                              Ответить
                  • Особенно в Тайланде
                    Ответить
        • >А в Бейсике по той же причине оператор конкатенации +
          Ай не обманывай людей! & же.
          В бейсике, sql обычно можно конкатить и плюсом (хотя не скажу обо всех диалектах). Сделано это для легкой адаптации быдлеца.
          Однако умудрённые граблями люди юзают a & b & c или a || b || c
          Ответить
          • > умудрённые граблями люди юзают a & b & c или a || b || c
            И случайно выносят все данные из таблицы к хуям, потому что || это logic or.

            Умудрённые граблями люди теперь читают о каждом операторе перед первым использованием...
            Ответить
            • >потому что || это logic or.
              Только в наиболее мудацких бд типа мускула.

              Там для буквоедов уточнение что мой пост неприменим∀ диалектам бейсика и скула.
              Ответить
          • А нет ссылочки на стандарт, за который не надо платить швейцарскими франками?

            В GW и в Quick Basic использовался плюсик, а с амперсанда начинались шестнадцатеричные константы.
            Ответить
        • особенно ахуенно читать запрос, где происходит склеивание столбцов происходит следующим образом
          select field1||'||'||field2||'||'||fieldn from dual;
          мне кажется человек, который это писал очень устал, и ему нужно съездить куда-нибудь.
          Ответить
          • [Очевидное и не смешное]
            По ебалу?
            [/Очевидное и не смешное]
            Ответить
          • $s =~ s/\\/\\\\/;
            Ответить
          • > dual
            Интересно стало, какого хрена она называется dual, при том, что в ней всего одна запись. Оказалось, что изначально это была табличка с двумя строками, чтобы джойнить ее к другим таблицам тем самым удваивая количество строк в результате...

            The name, DUAL, apt for the process of creating a pair of rows from just one. The original DUAL table had two rows in it (hence its name), but subsequently it only had one row.
            Ответить
            • P.S. Вот за что я обожаю синего слоника - так за то, что там нету этого глупого ограничения. Не нужен в запросе from - можно его не писать.
              Ответить
              • А в Мистере Мускуле если не нужен в запросе from, то не нужно писать: http://govnokod.ru/12953
                Ответить
                • Да тож самое, что и в слонике. Можно написать (поюзав табличку с одной строкой), а можно не писать.
                  Ответить
              • Офтопик: поисковые системы поехавшие. Ввожу запрос «синий слоник», а они мне вместо синего другого показывают.
                Ответить
              • да ну
                dual далеко не самая большая неприятность
                больше напрягает:
                - отсутствие сахарка в виде многострочного инсерта через values: приходится много копипастить в виде
                insert into foo (x,y,z)
                select 1,2,3 from dual union all
                select 4,5,6 from dual union all
                select a,b,c from dual;

                - отсутствие limit: приходится оборачивать запрос во внешний запрос с where rownum <= X
                select * 
                from foo
                order by created
                limit 1;
                
                vs
                
                select *
                from (
                  select * 
                  from foo
                  order by created
                ) where rownum = 1;
                и не дай бог тебе оказаться в ситуации, когда этот обернутый запрос должен был быть correlated subquery - ибо передача значений родительского запроса в подзапрос работает строго до первого уровня подзапроса (это ограничения стандарта):
                select b.*, 
                  (select f.something from foo f 
                    where f.bar_id = b.id
                    order by f.created
                    limit 1) as foo_smth
                from bar b
                where b....
                
                vs
                
                select b.*, 
                  (select * from (
                    select f.something from foo f 
                      where f.bar_id = b.id  -- oops wrong b.id
                      order by f.created
                    )
                    where rownum = 1) as foo_smth
                from bar b
                where b....
                приходится выкручиваться, перенося подзапрос в джойны где использовать аналитические функции типа rank()...,
                в общем, нехватка одного сраного лимита сильно портит кровь

                но зато в слонике негров линч нет upsert, а это очень частая и востребованная операция
                Ответить
                • > отсутствие limit
                  А в информиксе вместо него унылый first (но хоть так).

                  > нет upsert
                  И это печалит. Причем в слонике, емнип, какие-то фундаментальные проблемы в архитектуре были, которые не дают его запилить.
                  Ответить
                • Я как-то смирился с этим, и думаю это тяжкая правда жизни.
                  Люди заслуженно получают такую з/п за то что мучаются, изобретая всякие обходные пути.
                  Ответить
          • Я не уверен на счет того, стандартная ли concatenate или нет, но я бы в таком случае написал concatenate(field, '||', field2, '||').
            Ответить
            • ну, там динамический скрипт генирировался, и там собирался запрос с конкатенацией, где есть разделитель в виде ||
              Ответить
            • >я бы в таком случае написал concatenate(field, '||', field2, '||').
              Поддерживаю этого господина. Функция с понятным именем всегда лучше чем очередной сахарный значок делающий непонятно что.
              Я всегда это говорил, и повторю: AND лучше &&, OR лучше ||, XOR лучше ^. Текст лучше и читабельнее нагромождения непонятных значков.

              Только называется она concat.
              Ответить
              • Понятнее всего сделали в языке программирования Ада, обозвав операторы сокращённого вычисления «AND THEN» и «OR ELSE». Сразу видно, что это не обычный AND или OR.
                Ответить
                • Наверное стоило называть частоиспользуемые операторы более коротко, таковы заветы Хаффмана.
                  Всё же короткая схема используется чаще чем полная.
                  А вычисление всех операндов полностью имеет смысл, только когда в самом вычислении зарыт сайд-эффект. Что в большинстве случаев неочевидное говно.
                  Потому я сделал бы (a OR b) для логических только по короткой схеме. И функцию OR(a,b) для побитовых и полных вычислений.
                  Так как аргументы функции вычисляются до её вызова, то очень легко запомнить как ведет себя конструкция.
                  Ответить
    • > Дней до освобождения:
      Социалка для тюрьмы?
      Ответить
      • сокамерники и вНатуре
        Ответить
        • там еще есть счетчик дней на свободе и рейтинг
          Ответить
      • Так и представляю, как пользователи целыми днями жмут F5, а когда видят 0, кричат "ПЕРВЫЙНАХ" и уходят.
        Ответить
        • "ПЕРВЫЙНАХ" это скорее блатные выбирают кого первым петушить
          Ответить
    • >PHP
      >унификацию
      Не надо ставить их в одном посте.
      Ответить

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