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

0

  1. 1
  2. 2
  3. 3
  4. 4
$pr = array();
foreach ($params as $k => $v)
    $pr[] .= urlencode($k).'='.urldecode($v);
$data = join('&', $pr);

http_build_query() для слабаков! Только велосипеды, только выстрел себе в ногу.
/netcat/admin/nc_adminnotice.class.php

Запостил: telnet telnet, (Updated )

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

  • PHP своей неструктурированностью рождает такие велосипеды, даже сами разработчики PHP не могут разобраться в своём творении. http://habrahabr.ru/post/142140/
    Ответить
    • Ох бля. Ну наконец-то хаброта перевела тот байян.
      >>PHP: фрактал плохого дизайна
      >>Я капризный. Я жалуюсь о многих вещах.

      надмозговая_эпопея_терпит_неудачу.жпег

      Дальше не читал - гугль транслейт и то наверное лучше бы перевёл.
      Ответить
        • > unexpected T_PAAMAYIM_NEKUDOTAYIM
          Вот это, кстати, меня когда-то убило наповал. Бессмысленное и беспощадное сообщение (для тех, кто не знает иврит).
          Ответить
            • Аналогично 😉 Начиная с аналогии про ящик с инструментами во вступлении.
              Ответить
          • Хабробатхерт: http://habrahabr.ru/post/142195/

            И опять годный комментарий в минусах:
            PHP — хороший язык. Интеграция в html у него лучше чем у любого другого языка (кроме javasript и vb). Правда относится к нему хорошо я стал только после того, как перестал его использовать для серьезных проектов. Со временем остаются только хорошие воспоминания.
            Ответить
            • >И опять годный комментарий в минусах
              Скажите, что вы забыли зеленый. Пожалуйста.

              > Интеграция в html у него лучше чем у любого другого языка (кроме javasript и vb).
              Кругозор какой-то узкий.
              Во-первых есть и JSP, и ASP.NET.
              И вообще непонятно что имеется ввиду, когда в одном предложении ставят javasript и vb.
              vbscript? ок, тогда могу поздравить автора с тем что он поедатель несвежего мс-говна.
              Во-вторых, рнр - серверная часть, а сравнивают со скриптами на клиенте.
              Ответить
              • > Скажите, что вы забыли зеленый. Пожалуйста.
                Это не я забыл зеленый, это походу автор коммента забыл зеленый 😉
                Ответить
                • Да коммент хороший, но про интеграцию в html я как-то не совсем понял.
                  Ответить
                  • Скорее всего это был тонкий сарказм, намекающий на то, что в PHP зачастую смешивают куски HTML'а с бизнес-логикой, тем самым "интегрируя" их.
                    Ответить
    • Вообще меня удивляет хабропомойка.
      ОПу за транслейт переводчиком - 300+ в карму.
      Ибо хабралюдибыдло не понимат заморские наречия.
      И будут жрать любое говно, лишь бы на русском. А ведь креатива никакого. Статью он не писал. При переводе не старался сделать его хоть-сколь похожим на русский текст.

      А честно и открыто сказавшему, что перевод - говно.
      >>Какой ужасный перевод. 27 минусов.
      Ответить
      • Что интересно - все комментарии про качество перевода заминусованы. Вот к чему приводит излишняя толерантность...

        А вообще - не вижу смысла в переводах статей. Лучше бы ссылку на оригинал кидали и не парились. Заодно народ скилл чтения прокачает.
        Ответить
      • Продолжение:

        [RageMode]
        Вот за что не люблю хабр - так за излишнюю толерантность к авторам. На хабре много годных, грамотных, полезных статей, которые интересно почитать, и за которые хочется поставить автору +100500 к карме. Но, к сожалению, эти прекрасные статьи тонут среди тонн всякого шлака в духе "сортировка массива на с++" или "мой гуглоперевод статьи из никому нахуй не нужного блога Джона Залупкина". И, вместо того, чтобы утопить эти статьи и заминусовать карму автору, защитнички с хабра начинают минусовать объективную критику его статьи... дескать "а ты написал? нет, а он вот смог!". Ну и что, что смог... а польза то людям от этого есть?
        [/RageMode]
        Ответить
        • Shame on me, у меня есть фид хабра в reader.google. Открываю примерно полторы статьи на сотню, в последнее время всё реже
          Ответить
          • >>>в последнее время всё реже
            Сраная хабрапомойка катится в унылое говно.
            А люди ишо и деньги за инвайты туды плотют. Никогда не стремился попасть туда.
            Ответить
            • > не стремился попасть туда
              Иногда не хватает возможности поставить кому-нибудь минус или плюс, потроллить какого-нибудь ушлёпка или спросить у годного человека что-нибудь полезное. Обитать там не особо хочется, тут в 100500 раз интереснее.
              Ответить
            • Деньги? Вот хотел недавно зарегистрироваться там... думал напишу по-быстрому статейку, дождусь аппрува... ну и видимо ошибся, когда вводил фейковое мыло. Или оно еще создаться не успело к тому моменту, в итоге - повторить письмо нельзя, сменить мыло у несозданной учетки нельзя, войти в недосозданную учетку нельзя, создать другую с тем же именем нельзя...

              "Идите вы нахуй" подумал я, и закрыл страничку регистрации.
              Ответить
              • Подумал сейчас что ладно, зарегаюсь под другим ником. Но не тут-то было... Злой хабродемон ответил мне "Пользователь с таким email уже существует".

                Ну вот как можно было написать такую регистрацию? Мыло просрано, ник просран...
                Ответить
            • Рак, твой мозг съеден двачем, среди нормальных людей тебе делать нечего
              Ответить
              • A причем тут двач, guest?!
                Я уже более трех лет там не был.
                > среди нормальных людей тебе делать нечего
                А-а-а. Я всё понял. Ты наверняка хотел сказать:
                "среди нормальных хабралюдей тебе делать нечего"
                Ответить
                • Нет, именно среди людей. Убей себя, этого все равно никто не заметит.
                  Ответить
            • да, эту я тоже смотрел. разбил подписки по хабам, подписался отдельно на Haskell и Erlang, но в них редко что-то постят.
              Ответить
              • Это как канал #haskell на jabber.ru - "канал любителей молчать о хаскеле". В котором действительно почти всегда тишина.

                P.S. Надо пригласить туда @HaskellGovno, пускай разрядит обстановку 😉
                Ответить
                • Есть ещё слоупоки, которые сидят в аськах и джабберах?
                  Ответить
                  • Ну я еще и в IRC сижу 😉 А что фастпоки предлагают взамен?

                    Мордокнигу, Звиттер и Втентакль?
                    Ответить
                    • Это более универсальные сервисы, если такой слоу мог бы сидеть до сих пор в фидо, например
                      Ответить
                    • Хотя зря я тебе ответил, ты всего лишь тупой рак
                      Ответить
                      • Я несу хуйню из-под гуеста, потому что нести хуйню из-под гумна - слишком мэйнстрим
                        Ответить
                          • Да, из под геста много удобнее. А тао приходится много перевлагиниваться, а это слишком слоу.
                            Ответить
                          • Кстати, я до сих пор в эхоконференциях сижу. Притом пользуюсь куловым олдовым оборудованием. У нас в городе ещё фидо не загнулся.
                            Ответить
                            • > в эхоконференциях пользуюсь куловым олдовым оборудованием
                              >фидо не загнулся
                              С интонацией Станиславского:
                              -- Не верю!
                              Ответить
                              • Вы недооцениваете силу нашего духа. Мы как самураи чтим наши праведные традиции. Это часть истории, которую необходимо сохранить для потомков. Фидо - абсолютно неповторимая атмосфера братства и единства людей. Одна точка за все и все точки за одну.
                                Ответить
                                • Ваши доказательства, пожалуйста. Фотки и описания этого самого оборудования, ... ну, вы знаете всё, что нужно, не буду оглашать весь список.
                                  Ответить
                      • >Хотя зря я тебе ответил, ты всего лишь тупой рак
                        Ты ваще с какого району будешь? Хацкеля знаешь? У нас тех, кто его не знает, сразу в бубен банят. Дай акк погонять, а?
                        Ответить
                      • > Хотя зря я тебе ответил, ты всего лишь тупой рак
                        Ай моська! Знать, она сильна, что лает на слона.
                        Ответить
                    • Боюсь показаться ужасно старомодным, но осмелюсь предложить реальное общение.
                      Ответить
                      • Не, это слоу. Пока встанешь с кровати... Пока выйдешь на улицу.... Так и весь день пройдет. Не охота заполночь домой возращаться.
                        Лучше FastEthernet.
                        Ответить
                        • что, и киберсекс?

                          нет уж, слишком большие потери от преобразований "настоящий человек -> текст -> восстановленный образ".
                          всю магию прямо аннулировали своим материализьмом.
                          Ответить
                    • > в IRC сижу
                      Оффтоп, но раз уж на то пошло, опишите, пожалуйста, вкратце, где именно обитаете.
                      Ответить
                      • Местный сервер, на котором осталось 7 человек, а линк с efnet давно потерян...
                        Ответить
                        • Доблестно...
                          Пользователь @bormand получает +10 к респектабельности.
                          Ответить
                        • У нас была похожая хрень, но я постарался и бросил IRC.

                          А вот говносоциалочки, твиттеры-хериттеры я терпеть не могу. Да и общаться мне там не с кем.
                          Ответить
        • > нет, а он вот смог!
          Когда я был маленьким, у меня тоже была бабушка. Но за всю жизнь я не смог свести её в гроб. А он - смог!
          Ответить
          • > Но за всю жизнь я не смог свести её в гроб.
            Хм. Он умер раньше бабушки, в самом расцвете сил... Печально.
            Ответить
            • Да, он отравился при съёмке "семнадцать мгновений весны" ядом из папиросы. Потому что не посмотрел, есть ли растение на подоконнике.
              Ответить
        • Пиздец, да...
          >> Только 10% программистов способны написать двоичный поиск
          Если считать пхпшников и прочие низшие виды - программистами, то статистика верна.
          Ответить
          • Это жуткий боян, описанный ещё в "Жемчужинах программирования" Бентли. Там же приводится кристально прозрачная реализация с доказательством корректности.
            На самом деле даже в jdk долгое время был косяк в реализации двоичного поиска, стреляющий только на огромных массивах (a + b / 2 для больших знаковых целых давал отрицательное значение).
            Ответить
            • >был косяк в реализации двоичного поиска
              >для больших знаковых целых давал отрицательное значение
              Ну silent overflow это ж косяк жабы как языка, а не алгоритма. Он много где может вылезти.
              Ответить
          • ха. А зачем пхп что то там двоично искать ? Мускул он сам все находит.
            Ответить
            • Ха. А зачем в Си что-то там двоично искать? bsearch сам все находит.

              Автор имеет в виду не то, что программист не может поюзать либу для поиска. А именно то, что программист, зачастую, самостоятельно реализовать этот алгоритм не в силах.
              Ответить
              • У меня наверно тег сарказм не открылся. Я имел ввиду подход пхпешника если надо что то найти. 1. Инстеришь это все в таблицу. 2. Ищешь что надо 3. Удаляешь что на инсертил.
                Ответить
                • Какое нестандартное мышление. Я бы до такого не додумался.
                  Как и количество записей искать - выбрать всю, таблицу, пройти её и посчитать кол-во итераций.
                  Ответить
                • Неправильный подход. Правильный звучит так:

                  1. Инсертишь все в таблицу.
                  2. Считываешь все из таблицы.
                  3. Ищешь то что надо, используя пхп.
                  4. Удаляешь все что наинсертил пхпшным циклом по одной записи за раз.
                  Ответить
                  • > по одной записи за раз.
                    При этом высчитывая, что именно нужно удалить алгоритмом эдак на O(n^2).
                    Ответить
                  • >>Правильный звучит так:
                    Не взлетит.
                    Функциональщины нет. Добавь.
                    Ответить
                    • 1. Инсертишь все в таблицу.AsParallel()
                      2. Считываешь все из таблицы.AsParallel()
                      3. Ищешь то что надо, используя пхп.AsParallel()
                      4. Удаляешь все что наинсертил пхпшным циклом по одной записи за раз.AsParallel()

                      fixed?
                      Ответить
      • > хабропомойка
        Ну что ты, это же илитная соцсеть для умножопых. Потому-то я никогда и не читаю, куда нам, лаптем щи хлебающим, в сообщество кармадрочеров и инвайтов.
        Иногда мне кажется, что это какой-то эксперимент по дегенеративной селекции.
        Ответить
        • Угу, но почему-то мне этот сайт напоминает ту же хабропомойку те же лесенки, та же карма, только инвайтов нет
          Ответить
          • Что ты несешь? Здесь нет кармы, нет модерастии, а лесенки есть на многих ресурсах, и западных тоже, они теперь тоже что ли хабрапомойки?
            Ответить
            • Вот, что интересно: Модераторы у нас есть, а модерастии - нет.

              Люр жил, Люр жив, Люр будет жить!
              Ответить
              • для модерастии нужно чтобы было хотябы два модераста
                Ответить
              • Еще одна особенность говнокодика, за которую его стоит любить.
                Ответить
              • >Люр жил, Люр жив, Люр будет жить!
                Вы хотели мне написать что-то про бан? Я вас слушаю.

                Спасибо за функцию цитирования вместе с тегами, кстати.
                Ответить
                • Один я снова что-то прослоупоучил? Или это работает в каком-то волшебном браузере?
                  Ответить
          • Лесенки тут не очень провославные, потому что нельзя выделить ветку (ака сдвинуть влево).
            Кармы здесь нет. Может оно где и накапливается унутре, но наружу не лезет. Ни на что не влияет. Ну да, тут были клованы, которые за посты@комменты огребали по моим скромным прикидкам по -500 каждый, только вот ни на скорость поста (как, по слухам, это у них), ни на автобан, это не влияет.
            И юпи нет.

            Я выбираю свободный говнокод.
            Ответить
            • Модераторы немного напрягают, но я все равно считаю говнокод свободным. Главное они не кичатся своим званием и тихо делают своё правильное дело.
              Ответить
            • Лесенка - это то что меня больше всего бесит на этом ресурсе.
              Всё остальное терпимо, но более того, наоборот - спартанские условия создают море шуток.
              Ответить
              • И как без лесенки разобраться о чём речь вообще?
                Ответить
                • > И как без лесенки разобраться о чём речь вообще?
                  Вот так.
                  Ответить
                  • Рядом со ссылкой # на сообщение добавить ссылку на сообщение кому ты ответил.

                    Лажа в том, что иногда хочется ответить одним сообщением нескольким людям и лесенка не спасёт.
                    P.S. Вот блин, хотел ответить rat4, а ответил Борманду.
                    Ответить
                    • Нужно показывать весь тред в виде направленного графа.
                      Ответить
                        • Термин "сайт для программистов" играет новыми красками.
                          Хотя так давно и живём.
                          Ответить
                    • >ссылку на сообщение кому ты ответил

                      Запилил :3
                      Ответить
                    • Да, ссылка вверх по треду - это хорошо. Особенно, если после нажатия на ссылку "вверх по треду", кнопки перемещения по истории будут возвращать к предыдущему якорю, вот это будет круто.
                      А сейчас в сильно развитых тредах у меня целая процессия бывает: что бы посмотреть, на что же ответил комментатор нужно:
                      1. Поставить курсор мыши в районе аватара комментатора.
                      2. Крутить колесо мыши вверх до тех пор, пока курсор не окажется на комменте, по иерархии выше (а на практике - аватар очередного комментатора окажется левее курсора).
                      3. ...
                      4. PROFIT!
                      Ответить
                      • Хабор можно ругать, но там есть несколько UI-решений, которые в силу тотального отсутствия всего похожего (ака чистый лист) на говнокодике выглядят весьма оригинально. Там для этой цели есть точки сбоку от ника. Их придётся считать, но немного упрощается канитель с мышью. (Да, я пользуюсь таким же способом, за неимением, как говорится.)
                        Ответить
                  • Есть приверженцы как лесенки, так и ответного комметнирования в стиле '>', но многие, и я в их числе, комбинируют эти виды ответов. В любом случае, на ГК2.0 я бы хотел видеть и продвинутую православную лесенку, и автоматическую подсветку или другое выделение строк, начинающихся с '>', как на имиджбордах.
                    Ответить
                    • @roman-kashitsyn там что-то хакал в разметке. Может расскажет насколько реально это добавить :}
                      Ответить
                      • На данный момент юзается textile, там используется конструкция bq.
                        но, в теории, я могу сделать провославный форк и запилить фишку с > как в markdown. Вопрос в том, не проще ли перейти на Markdown, он ближе к почтовым фишкам (но некоторые вещи в textile удобнее и гибче, он для wiki страничек был изобретён).

                        Очень хотелось Markdown, я даже парсер видел, но этот парсер пропускает xss как сито, а лифтовый диалект textile практически безопасен.
                        Постараюсь что-нибудь придумать.
                        Ответить
                        • Почитал, что такое textile и MarkDown, сдаётся мне, что оба они излишне функциональны (по сравнению с тем, чем мы обходимся сейчас). Может написать-таки небольшой самописный функционал для разметки комментов?
                          Ответить
                          • можно, конечно, свой парсер написать, в скале стандартная либа есть с парсер-комбинаторами, и для простых грамматик это делается довольно просто (я даже пользовался ей недавно для собственного внешнего dsl, правда, idea-плагин на парсерах загибается, отказываясь их компилить).
                            В общем, всё можно, и даже не очень сложно. Хотелось бы услышать мнение большинства по этому поводу. Предлагаю составить неформальную спеку разметки, которая бы устроила большинство.
                            Ответить
                            • Ну что, опять объявим рейд на piratepad по поводу спецификации разметки? Или прямо тут насрём?
                              Ответить
                              • У меня просто есть ощущение, что в конечном счёте получится что-то подозрительно похожее на существующее решение... В общем, заинтересованных прошу отписаться пока хотя бы здесь.
                                Ответить
                                • Функционала, я думаю, достаточно и такого, а вот удобности надо бы добавить. Писать длинные bb-теги вроде [color=blue][u] - неудобно. Да ещё и ненароком закрыть тег забудешь или опечатаешься. Лучше как в textile приспособить для этого обрамление символами @, +, -, * и т.д. Но вот остальной функционал textile - избыточен. Более того, как вы сами говорили, он проектировался для вики-разметки. Там всё закручено на то, что можно более коротко описывать html. На практике же нам совсем не нужно управлять блочными, строчными элементами напрямую из языка разметки. Так, чуть-чуть косвенно через предварительно заданные теги и стили. А вещи вроде h1 или вставки изображений - исключительно раздолье для дыхоты. Статьи в комментах никто писать не собирается, я думаю.
                                  Ответить
                                  • у меня была идея сделать команды как в TeX типа
                                    \green{\bold{TROLOLO}}
                                    Идея спорная, но парсер легко расширять
                                    Ответить
                                    • Может быть и так, но опять же сократить синтаксис до минимума, вместо bold - b, и т.д. И, может быть, вместо фигурных скобок что-нибудь попроще, в нижнем регистре. Например квадратные "[ ]". Только смена раскладок будет бесить постоянная.
                                      А не собираетесь ли вы пилить волшебные кнопочки: выделил, нажал кнопку, стало жирным/курсивом/ещё каким-нибудь говном?
                                      Ответить
                                      • Волшебные кнопочки мною люто ненавидимы, поэтому не хотелось бы их делать. У меня есть идея запилить кнопочки, которые вставляют шаблоны, как в современных редакторах.
                                        Ответить
                                        • А может пусть все пишут свои комментарии на том языке, на каком им удобно, а в движке сайта пусть будет редирект на ideone и результат выполнения программы уже пусть запишется в базу как комментарий. Я люблю комментировать на Бэйсике! Я ждва года ждал такого движка для уютненького.
                                          Ответить
                                          • Разметка не нужна!
                                            Сделать подсвечивание > для цитат, автоподсветку ссылок, и какое-нибудь обрамление для кода. Этого будет достаточно.
                                            Ответить
                                            • > автоподсветку ссылок
                                              Но только подсветку, как тут, а не преобразование в ссылки.
                                              Ответить
                                      • Есть вот такое предложение:

                                        Реализовать классические bbcode, но для всех длинных кодов сделать сокращенную версию: т.е. если есть [color=xxx], то можно юзать [c=xxx] и т.п.

                                        В чем плюс ббкодов - они, в отличие от символьных обрамлений типа *bold*, мало интерферируют с кусочками программ и формул (хотя надо продумать парсер, чтобы a[i]+2 не превращалось в a+2).
                                        Ответить
                                        • Мне нравится, по поводу a[i]+2 - надо просто запретить парсинг внутри тега code и всё. Inline code тоже нужен, что бы вставить строчку кода, или всего пару лексем прямо в текст, без прерывания строки. В textile это есть.
                                          Ответить
                                        • Ок, коллективным разумом были выбраны bb-коды. Создал проект на github
                                          https://github.com/roman-kashitsyn/scabb
                                          На этой неделе, надеюсь, заимплеменчу простенький расширяемый парсер.
                                          Интеграция его в приложение займёт от силы минут 15.
                                          Ответить
                                    • > \green{\bold{TROLOLO}}
                                      Толстоватенько выйдет. Нужно что-то проще.
                                      Ответить
                                        • Если будет рендер в картинки - пожалуйста, а так - я сей дивной мове не научен, выглядит жутковато.
                                          Ответить
                                      • я просто думал об этом с оглядкой на \summon{} и \user{}, т.е. advanced функционал. В принципе, можно и на bb-кодах такое реализовать. Парсер bb-кодов на scala вообще не проблема написать.

                                        Была ещё идея разметки S-выражениями
                                        Ответить
                                        • > Была ещё идея разметки S-выражениями
                                          wvxvw был бы рад... А вот остальные, кто любит использовать скобки (например так), были бы не рады.
                                          Ответить
                                          • (What the world needs (I think) is not (a Lisp (with fewer parentheses)) but (an English (with more.)))

                                            Brian Hayes, "The Semicolon Wars", American Scientist
                                            Ответить
                                        • Только не надо принимить поспешных выводов. Давайте хотя бы дождёмся, когда Тараса разбанят. Он всё решит. Потому что \summon{} в 99% случаев будет на него.
                                          Ответить
                                            • А кстати, мысль: люди с модерскими правами не получают никакого нового функционала, никаких свистоперделок и шлюх. Просто получают доступ к использованию особых тегов. Пишут коммент с тегами. Движок сайта заменяет автоматически эти теги на шаблонный тест. Например [ban=1w/3.1.4.1]TarasB[/ban] отображается как
                                              Пользователь @TarasB получает бан на 1 неделю за нарушение пункта 3.1.4.1 правил данного сайта.
                                              Ответить
                                              • А еще можно и не вводить особых тегов - просто писать красным цветом фразу, подходящую под определенный шаблон...

                                                К примеру:
                                                Комментарий выше удален модератором - сервер видя это сообщение удаляет комментарий на который был написан такой ответ.
                                                Ответить
                                        • Предлагаю говнокод переписывать с частичным использованием функцилнальных языков. Тут сразу появится много интузиастов, коим раньше приходилось считать только факториал, а теперь есть шанс поработать над главным в своей жизни проекте на этом языке. Так и им захочется и у нас будет newgovnokod.
                                          Ответить
                                          • Хочу напомнить, что Scala не только объектно-ориентированная, но и функциональная.
                                            Энтузиастов, разумеется, появилось чуть менее чем нихрена. не то чтобы это плохо, просто констатирую факт
                                            Ответить
                    • > автоматическую подсветку или другое выделение строк, начинающихся с '>'
                      Вот так?

                      P.S. Это скорее не как на имиджбордах, а как в почтовиках.
                      Ответить
                      • А, страйко уже заимплементил, вместе с кнопкой "цитировать с тегами"? Круто, круто...
                        Ответить
                • > 2012-08-11T14:02:56Z rat4
                  > Это же не удобно!
                  Ну раньше люди так общались и не считали это особо неудобным. Те же форумы с линейной структурой, почта и т.п.

                  P.S. Лесенка после определенного уровня все-равно вырождается в такую же линейную структуру. И вот из-за отсутствия инфы о сообщении, ответом на которое является текущее сообщение, лесенка становится неюзабельной.
                  Ответить
                  • написать можно всем, кому-то определенному, к нескольким лицам обратиться. Линейная структура самая правильная, а древовидность - тупо закос под хабру.
                    Ответить
                    • >а древовидность - тупо закос под хабру
                      Ну еще есть жжешечка и остальные блоги. Так что закос под блогоплатфортмы в целом.
                      Ответить
                    • Я тоже за линейность. Оно ведёт к оверквотингу, обычно, и к необходимости явного выделения к кому обращаешься, но там нет такой проблемы с лесенкой и последнее сообщение (по времени) всегда последнее.
                      Ответить
                  • > Те же форумы с линейной структурой, почта и т.п.
                    Тот же уютненький, только доисторических времён, где все гвесты и лесенки нет.
                    Ответить
                • bormand>линейной структурой, почта
                  http://i.imgur.com/eF9Vb.png

                  bormand>Лесенка после определенного уровня все-равно вырождается в такую же линейную структуру
                  Говнокод такой говнокод
                  Ответить
                  • Если говно отсюда не экспортируете - я к вам и близко не подойду.
                    Ответить
                      • Что-то регистрация не отрабатывает, вроде все поля заполняю, жму sign-up, и тишина...
                        Ответить
                        • Там может быть слишком короткий пароль, вроде сообщение ещё не прикручено.
                          Ответить
                          • Ну да, 123 действительно был коротковат 😉

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

                      Придется подумать о непрерывной синхронизации коментов и тредов...
                      Ответить
                        • Истинно так.
                          Иначе надо будет вытаскивать ещё все комменты, ибо соль в них.
                          Ответить
                    • Почему? Признайтесь, разве вам не хочется по-новой взять все былые геты, полюбоваться поне, как число говнокодов от ничтожно малого воспрянет до приятно весомого. А то сейчас даже не ощущается рост, что капля в море...
                      Ответить
              • ребят, я в сметении
                Так пилить лесенку или нет? Или допилить json-api для комментов (сейчас уже доступен весь список комментов к посту по /post/<id>/comments.json) и рендерите уже как хотите?
                Правда, уже неделю как вертится в голове идея сделать переключалку как в современных файловых менеджерах: хочешь - линейная структура, хочешь - древовидная.
                Ответить
                • > Так пилить лесенку или нет?
                  Если сложно - пока можно и забить. В конце-концов внедрение лесенки потом не потребует модификации базы... Ну и без ссылок жили, без модераторов жили, и без лесенки проживем 😉
                  Ответить
                  • Не просто, если честно, но и не очень сложно, и мне кажется, оно того стоит. Скрывать ветку - задача практически тривиальная, это и в govnokod.js несложно добавить (просто у списка делать hide() с jQuery). Меня немного беспокоят вопросы производительности, но нас вроде не особо много на ресурсе, а от DDOS можно и nginx грамотно настроить.
                    Ответить
                      • у меня была такая же мысль, для этого, собственно, и добавил json-api для комментов. Проблема в том, что придётся вынести шаблоны в жабаскрипт, и defecate-plusplus, думаю, не особо будет счастлив, если его айпад затормозит на рендеринге больших лесенок.
                        И ТРУЪ линуксоиды не смогут смотреть сайт из lynx
                        Ответить
                          • Посылаешь curl'ом из консольки запрос, и читаешь выхлоп в json. Удобно же 😉 И никаких браузеров не надо.
                            Ответить
                              • Ну а почему нет? Поднимаем базу, настраиваем права так, что все могут читать все таблицы, но запись - только через пару-тройку хранимых процедурок. Работы на час, и хорошая защита от дыхоты 😉

                                С регистрацией юзеров правда проблемки есть.
                                Ответить
                                • Да, расово верно... Висит в облаке публичная база, никакого сайта как такового нет. Каждый пишет себе клиента, хоть с лесенкой, хоть без, с блекджеком и шлюхами. Дыхота ничего не пишет и ничего не видит.
                                  Ответить
                          • договорились, напишу на js загрузчик и рендерер. Заодно и выкинем кучу замыканий из лифтовой сессии
                            Ответить
                              • Они лежат в сессии и переодически удаляются лифтовым GC (страничка посылает аджаксом хартбиты). Не очень нравится мне это дело (если у нас 600 комментариев, на каждый плюсик и на каждый минусик в рейтинге будет создано замыкание, хранящееся в сессии, даже если никто голосовать не собирается), хоть и удобно.

                                В этом, собственно, проблема джаваскриптового рендеринга: придётся переписать все сниппеты, эти замыкания становятся недоступны, все формы должны создаваться js уже на клиенте (отчасти мне такой подход даже ближе).
                                Ответить
                            • > js загрузчик

                              Запросто обидится, а "отсортировать" дивы на js нельзя?
                              Ответить
                              • Можно, но они будут прыгать, что не айс ниразу. Тогда уж проще рекурсивно биндер вызывать на сервере. Ладно, меньше слов, пойду ваять прототип.
                                Ответить
                        • Не думаю, что они способны на DDoS. Они и комментами то засрать толком не могли.
                          Ответить
                    • >беспокоят вопросы производительности
                      Ниче страшного. Вставим AssParallel
                      Ответить
                    • Кстати, на wtf-code появилась схлопывалка веток. Принимаются пожелания к внешнему виду и поведению.
                      Ответить
                      • Перед употреблением почистить кеш браузером!
                        Ответить
                      • Надо расположить кнопку с грозной надписью Fold Subtree где-то ближе к аватару комментатора, может даже слева от аватара, тогда без текста, а просто с символом '-'. А скрывать надо вместе с самим сообщением. Весь тред. И замещять его плашкой с надписью "тред свернуло, брат жив.", на которой уже кнопка Expand. По-моему так.
                        Ответить
                        • >без текста, а просто с символом '-'

                          Нужно больше непонятных закорючек.
                          Ответить
                    • id, parent_id, depth, thread_id, ...

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

                          Так что пострадают от сожития все-таки деревянщики.
                          Ответить
                          • Если и линейщики и деревянщики будут прележно указывать, в тех случаях, где это нужно, кому именно они отвечают, то никаких проблем не будет. Можно даже дублировать, при отображении деревом, ответы, которые ссылаются сразу на несколько комментариев, но делать это при построении на клиенте.
                            А если коммент не ссылается на другие комменты, то всё верно и у деревянщиков и у линейщеков: это новый тред, или новый коммент к ГК соответственно.
                            Ответить
          • > но почему-то мне этот сайт напоминает ту же хабропомойку
            Какой же сайт хороший по мнению господина, пытающемуся оплевать тут всех говном?
            Ответить
    • Но для urlencode(), а не rawurlencode(), конечно, велосипед. =)
      Ответить
    • >Как получить не "+", а "%20"?
      Проверить версию PHP и сделать str_replace в случае необходимости?
      Ответить
      • И запостить результат на говнокод! 😀
        Кстати, интересно, +/%20 ведь не единственное отличие... оно после замены правильно декодируется?
        Ответить
  • Что-то я туплю с bb-парсером. Фичи, заявленные в README работают (с учётом вложенности), но есть проблемы, в основном с релаксацией кривой разметки. Хотелось бы улучшить парсер так, чтобы, например,
    [i] ololo [ b]bold[/b ]
    (пробелы в [b] поставил, чтобы местный парсер не сконвертил) превращалось
    [i] ololo <b>bold</b>
    Спецы по парсерам и грамматикам: велкам с идеями и патчами, напомню, сорцы (точнее, сырцы, т.к. пока сырые) тут:
    https://github.com/roman-kashitsyn/scabb
    Ответить
      • [ b] int a = x[i]; [/ b] : тогда код без тега [code] сломает разметку
        Слишком неюзабельно, не хочется уступать по удобству перловым и похапешным парсерам... Ладно, попробую таки осилить механизм, предложенный беларусскими коллегами
        http://www.slideshare.net/azarov/error-recovery
        Ответить
          • угу... надо будет померить.
            Проблема в том, что без бэктрекинга сложновато это будет написать.
            Есть ещё идея наколбасить примитивнейший парсер нодов, которому не нужен бэктрекинг, и добавить поверх него стековую машину для рендеринга html (т.е. не строить ast, как сейчас), но это будет много больше и сложнее текущих 140 LOC
            Ответить
            • я в последний раз парсер с грамматикой писал пару лет назад, конечно, потому могу недопонимать сути проблемы, но разве [ b] int a = x[i]; [/ b] не должно соответствовать [ b]plain text[/ b] вместо ошибок компиляции?
              Ответить
            • Тут идея про стековый парсер возникла. Минут через 5 напишу пруф-оф-концепт.
              Ответить
              • Настоящий код не успел, приведу псевдокодик:

                if (current is OpeningTag) {
                    node = NodeFactory.create(current);
                    if (node == null) {
                        // тег неизвестен, пусть так и остается [x=2]
                        stack.top.add(new TextNode(current.text));
                    } else {
                        // тег известен
                        stack.top.add(node);
                        stack.push(node);
                    }
                } else if (current is ClosingTag) {
                    // закрываем все неподходящие теги
                    while (!stack.top.isRoot && current.tag != stack.top.tag) {
                        node = stack.pop();
                        stack.top.add(new TextNode("[" + node.tag + "]");
                        stack.top.add(node.subnodes);
                    }
                    if (stack.top.isRoot) {
                        // если больше закрывать нечего - оставляем закрывашку как есть
                        stack.top.add(new TextNode(current.text));
                    } else {
                         // все ок, нашли соотв. тег
                         stack.pop();
                    }
                } else if (current is Text) {
                    stack.top().add(new TextNode(current.text));
                }
                // добиваем все что не успели закрыть
                while (!stack.top.isRoot) {
                    node = stack.pop();
                    stack.top.add(new TextNode("[" + node.tag + "]");
                    stack.top.add(node.subnodes);
                }


                Вероятность случайно встретить в тексте закрывающий тег почти нулевая, поэтому код опирается именно на них, превращая непарные открывающие в текст.
                Ответить
                • > // добиваем все что не успели закрыть
                  Исполняется после того, как обработали весь входной текст конечно же, а не на каждой итерации.
                  Ответить
                • > стековую машину для рендеринга html
                  Что-то вроде этого я и имел в виду (у меня даже уже был реализован парсер нодов, но я по лени вынес эту реализацию). Попробую набросать реализацию, если текущая концепция дальше не сдвинется...
                  Ответить
                  • http://ideone.com/9Fmi1

                    Вот такое вот богомерзкое говнище получилось. Самое место ему на этом сайте ;( Чего только super(null) стоит.
                    Ответить
                    • OMG. Развидеть это, да побыстрее
                      static TagNode createTagNode(Tag t)
                          {
                             if (t.tag.equals("b"))
                                  return new TagNode(t);
                              else if (t.tag.equals("i"))
                                  return new TagNode(t);
                              else if (t.tag.equals("s"))
                                  return new TagNode(t);
                              return null;
                      }

                      Еще и equalsы неправильные. Умудренный NPE мастер Йода не одобрит.
                      Ответить
                      • Там было 3 разных класса изначально...

                        А вот это разве не доставляет? 😉
                        return this.tag.tag.equals(tag.tag);
                        Ответить
                    • Рекуклед:
                      "Срём при написании парсера говнокода, прямо на говнокоде."
                      Ответить
          • Все похапешники сейчас почуствовали гордость за свой инструмент...
            P.S. Пока не увидели 35й слайд.
            Ответить
        • Humans. They do mistakes.

          А на самом деле - вполне можно ломаться на кокомпиляции комментария, и предлагать воспользоваться тегом [c] (инлайн-аналог тега [code]), чтобы заэкранировать кусочек кода...
          Ответить
      • Меня, кстати, очень радует скаловский specs, очень чистый и прозрачный код получается
        http://tinyurl.com/buqrtqk
        (сейчас проходят все спеки кроме последней)
        Ответить
  • Через api можно посмотреть удалённые комментарии - это баг или фича? :}
    Ответить
    • если ты про wtf-code, то я убрал удалённые комменты из json api. Feed пока не трогал.
      А ещё жаль, что jQuery.ScrollTo не хочет работать с последней версией jQuery в Chrome.
      Ответить
              • > второй
                Как ж#пой почувствовал когда решил - не нужно мне этот хаскель учить.

                P.S. Выбрал CLISP (Emacs Lisp).
                Ответить
                • Знаешь, в 7 лет жизнь только начинается. Ещё успею найти. Вот Romanа уже нашел. Виден прогресс. Толи ещё будет.

                  PS: Если Roman второй, то первый:
                  "Компилятор — ваш друг. Возможно, единственный ваш друг." (Бьёрн Страуструп)

                  PPS: LispGovno уже зарегал. Ждите на всех страницах говнокода.

                  PPPS: Я смел и весел. Впереди много побед.
                  Ответить
                  • > Компилятор — ваш друг...
                    Развитой антропоморфизм.
                    Вот до чего людей плюсы доводят(пользуясь случаем передаю привет в баню).
                    Компилятор - инструмент, не более.
                    Как молоток, угольник, рубанок...

                    P.S. промеждупрочим понятие 'друг', в изначальном значении, сугубо армейское - 'положить жизнь за други своя', 'княжеская дружина'...
                    Ответить

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

Из-за тебя ушел bormand, guest!

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


    8