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

    +169

    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
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    ?><tr><?
        ?><script><?
            ?>$(function(){<?
                ?>$('tr[_hash]').find('#smalllinks').click(function(){<?
                    ?>$(this).parent(0).html($(this).parent(0).find('#fulllinks').html());<?
                ?>});<?
                ?>$('tr[_hash] #rm').click(function(){<?
                    ?>var _hash=$(this).parent(0).parent(0).attr('_hash');<?
                    ?>$.ajax({<?
                        ?>url:'?a&st&rm='+_hash,<?
                        ?>success:function(data){<?
                            ?>if(data=='1')get('st');<?
                        ?>}<?
                    ?>});<?
                ?>});<?
                ?>$('tr[_hash]').find('#stat_domain').click(function(){<?
                    ?>P_domain=$(this).html();<?
                    ?>get('st');<?
                ?>});<?
            ?>});<?
            ?>function rm_all()<?
            ?>{<?
                ?>if(confirm('Удалить всю статистику?'))<?
                ?>{<?
                    ?>$.ajax({<?
                        ?>url:'?a&st&rmall',<?
                        ?>success:function(data){<?
                            ?>if(data=='1')get('st');<?
                        ?>}<?
                    ?>});<?
                ?>}<?
            ?>}<?
            ?>function refresh_dom()<?
            ?>{<?
                ?>var _i='<img src="?i=ld"> ';_i+=_i;_i+=_i;_i+=_i;<?
                ?>$('table#c').prepend('<td class=n align=center colspan=999>'+_i+'</td>');<?
                
                ?>$.ajax({<?
                    ?>url:'?a&st&rdom',<?
                    ?>success:function(data){<?
                            ?>if(data=='1')get('st');<?
                    ?>}<?
                ?>});<?
            ?>}<?
            ?>function update_pr_tic()<?
            ?>{<?
                ?>var _i='<img src="?i=ld"> ';_i+=_i;_i+=_i;_i+=_i;<?
                ?>$('table#c').prepend('<td class=n align=center colspan=999>'+_i+'</td>');<?
                
                ?>$.ajax({<?
                    ?>url:'?a&st&upd_pr_tic',<?
                    ?>success:function(data){<?
                            ?>if(data=='1')get('st');<?
                    ?>}<?
                ?>});<?
            ?>}<?
        ?></script><?
        ?><td class=n colspan=5><?
            ?><input type=button value='   Обновить домены   ' onclick='refresh_dom()'/> <?
            ?><input type=button value='   Удалить все   ' onclick='rm_all()'/> <?
            ?><input type=button value='   Обновить PR, тИЦ   ' onclick='update_pr_tic()'/> <?
            ?>(доменов: <b><?=$result_domains_count?></b>) <?
            ?>Количество: <b><?=$result_count?></b><?
                if (!empty($domain))
                {
                    ?>, домен <b><?=$domain?></b><?
                }
        ?></td><?
        ?><td class=n><?
            if ($pages_count > 1)
            {
                ?><select id="selpage"><?
                for($i=1; $i<=$pages_count; $i++)
                {
                    ?><option <?=$i==($page_num+1)?'selected':''?>><?=$i?></option><?
                }
                ?></select><?
            }
        ?></td><?
    ?></tr><?

    Такой вот необычный код мне попался в одном скрипте.

    Запостил: Itareo, 21 Сентября 2013

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

    • Сжатие за счет отступов и переносов без ущерба для форматирования. Гениально :)
      Ответить
      • > без ущерба для форматирования
        Ну, скажем так, почти без ущерба ;)

        P.S. На самом деле, статический кусок js'а я бы упер куда-нибудь в отдельную js'ку. Зачем его генерить пыхом каждый раз?
        Ответить
    • Очень симпатичные ограничители у строк получились.
      Ответить
      • ...
        </script><table><script language="php">
            </script><tr><script language="php">
                </script><td><script language="php">
        ...
        Ответить
    • Много букафф ниасилил
      Ответить
    • Быдлокод
      Ответить
    • В шаблонах MediaWiki очень похожий прием постоянно используется. Но там язык разметки чувствителен к переносам строки, так что если хочется разбить строку, надо прятать перенос строки в комментарии. Другого выхода нет.
      Например, http://en.wikipedia.org/w/index.php?title=Template:Imbox&action=ed it&oldid=568631328
      <!-- опущено мной -->
      | notice     =    <!-- Do nothing, valid "type" -->
      | #default   = <div style="text-align: center;">This message box is using an invalid "type={{{type|}}}" parameter and needs fixing.</div>[[Category:Wikipedia message box parameter needs fixing|{{main other|Main:}}{{FULLPAGENAME}}]]<!-- Sort on namespace -->
      }}<!--
      
      --><includeonly>{{#ifeq:{{BASEPAGENAME}}|{{SUBPAGENAME}}|{{#ifeq:{{NAMESPACE}}|Template|[[Category:File message boxes]]}}}}
      <!-- опущено мной -->

      Впрочем, подобные стрёмные шаблоны начиная где-то с прошлого года активно заменяют на Lua-шаблоны.
      Ответить
      • >Lua-шаблоны.
        Что это
        Ответить
        • http://www.mediawiki.org/wiki/Lua_scripting
          http://en.wikipedia.org/wiki/Wikipedia:Lua
          Ответить
          • Скриптинг на луа для php. Это гениально.
            Ответить
            • Есть ли способ дать юзерам возможность писать шаблоны для MediaWiki на PHP так, чтобы не было угрозы безопасности?
              Ответить
              • А как сделали что же самое для lua? Алсо, не выходит ли раком отсутствие стандартной библиотеки?
                Ответить
                • Lua - это ж встраиваемый язык. Что скрипту передали, с тем он и работает. Всякие опасные модули библиотеки легко выпиливаются. PHP же для это не предназначен, его в песочницу не так просто загнать.
                  > Алсо, не выходит ли раком отсутствие стандартной библиотеки?
                  Отчасти - выходит. Но по сравнению с тем пиздецом, который приходилось писать на Wikitext - небо и земля.
                  Ответить
                  • Подожди, это разве не lua обертки к какому-то api? КАк эти шаблоны работают?
                    Ответить
                    • Либо интерпретатор Lua запускается в отдельном процессе, либо используется специальное PHP-расширение.
                      http://www.mediawiki.org/wiki/Extension:Scribunto#LuaSandbox
                      Ответить
                      • А с чем этот процесс коммуницирует? И почему нельзя было то же самое сделать на рнр?
                        Ответить
                        • > И почему нельзя было то же самое сделать на рнр?

                          1. Луа быстрее, в ней кэширование байткода by design и для неё есть JIT.
                          2. В Луа очень грамотная работа с окружениями и загрузкой модулей. Из луа можно сделать ровно то, что нужно программисту. Как выпилить из интерпретатора пхп встроенные функции, позволяющие доступ к файловой системе? с луа таких проблем изначально не существует.
                          3. Луа гораздо выразительней и проще.

                          > А с чем этот процесс коммуницирует?
                          Ничто не мешает написать сишный php-модуль, который будет поднимать интерпретатор lua и транслировать php-объекты в lua-объекты и выполнять код в изолированном окружении. На самом деле это довольно просто сделать.
                          Ответить
                          • Вот меня и интересует, к чему имеет доступ луа модуль, чтобы обеспечить и изоляцию, и работоспособность.

                            >Ничто не мешает написать сишный php-модуль, который будет поднимать интерпретатор lua и транслировать php-объекты в lua-объекты и выполнять код в изолированном окружении. На самом деле это довольно просто сделать.
                            Ага, то есть ручками урезаем права?

                            >Луа быстрее,
                            Как часто изменяются страницы?

                            >3. Луа гораздо выразительней и проще.
                            Почему педивикия тогда написана на рнр?
                            Ответить
                            • > к чему имеет доступ луа модуль
                              к чему откроешь, к тому и будет. Луа это голый интерпретатор + механизм загрузки модулей. Модули - хэштаблички с указателями на функции. Какие указатели положишь в хэш-таблички, такие функции у тебя и будут. Стандартные модули ничем от пользовательских не отличаются, их можно закрыть или открыть только нужные.

                              > Ага, то есть ручками урезаем права?
                              Что значит ручками? Да, если хочешь что-то закрыть, нужно немного поменять стандартную инициализацию интерпретатора (а именно опустить инициализацию некоторых стандартных модулей, изменить пути загрузки модулей). Исходники самой луа менять не нужно, как в случае пхп.

                              > Почему педивикия тогда написана на рнр?
                              Интересно, когда решение о выборе языка определялось исключительно его красотой и выразительностью? Очевидно, вебморду на пхп написать быстрее и проще, т.к. все функции для работы с вебом идут из коробки.
                              Ответить
                              • > Очевидно, вебморду на пхп написать быстрее и проще, т.к. все функции для работы с вебом идут из коробки.
                                И программиста на PHP найти проще.
                                Ответить
                                • > И программиста на PHP найти проще.
                                  По ссылкам выше приводят довод, что даже типичные игроки WoW без особых проблем осиливают lua и пилят на ней нетривиальные вещи.
                                  Ответить
                                  • >По ссылкам выше приводят довод, что даже типичные игроки WoW без особых проблем осиливают lua и пилят на ней нетривиальные вещи.
                                    ... с помощью регекспов и матери.
                                    Ответить
    • "Выходит, я тоже пидор", - подумал я, - "Какой ужас!". Мое сознание категорически не принимало этого свершившегося факта, но ведь я хотел этого, я хотел и хочу Пашку.
      Ответить

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