"PHP" / Говнокод #13840 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Itareo, (Updated )

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

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

      P.S. На самом деле, статический кусок js'а я бы упер куда-нибудь в отдельную js'ку. Зачем его генерить пыхом каждый раз?
      Ответить
  • Очень симпатичные ограничители у строк получились.
    Ответить
  • В шаблонах 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-шаблоны.
    Ответить
          • Есть ли способ дать юзерам возможность писать шаблоны для MediaWiki на PHP так, чтобы не было угрозы безопасности?
            Ответить
            • А как сделали что же самое для lua? Алсо, не выходит ли раком отсутствие стандартной библиотеки?
              Ответить
              • Lua - это ж встраиваемый язык. Что скрипту передали, с тем он и работает. Всякие опасные модули библиотеки легко выпиливаются. PHP же для это не предназначен, его в песочницу не так просто загнать.
                > Алсо, не выходит ли раком отсутствие стандартной библиотеки?
                Отчасти - выходит. Но по сравнению с тем пиздецом, который приходилось писать на Wikitext - небо и земля.
                Ответить
                • Подожди, это разве не lua обертки к какому-то api? КАк эти шаблоны работают?
                  Ответить
                    • А с чем этот процесс коммуницирует? И почему нельзя было то же самое сделать на рнр?
                      Ответить
                      • > И почему нельзя было то же самое сделать на рнр?

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

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

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

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

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

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

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

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8