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

    +66

    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, 10 Августа 2012

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

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

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

        Дальше не читал - гугль транслейт и то наверное лучше бы перевёл.
        Ответить
        • Прайс уютненького
          ...
          Обосрать Хабр'    +10 к карме
          ...
          Ответить
        • Да и статья в оригинале не особо нужна, многовато текста. По делу: http://phpsadness.com/
          Ответить
          • > 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 раз интереснее.
                Ответить
                • >Иногда не хватает возможности поставить кому-нибудь минус или плюс
                  Ах да. Я бы прям сейчас сходил туды и покормил бы автора говном.
                  Но ведь модерация.
                  Ответить
                  • Ну и что ;) Долго завести новое мыло, написать новую годную статейку, и дождаться аппрува? ;) Разве это остановит вас?
                    Ответить
                    • Забыли про поменять ip
                      Ответить
                      • Эм, ну у меня IP динамический. Не будут же банить по диапазону.
                        Ответить
                        • ну тогда почистить куку браузером

                          Мне пришлось статический приобрести
                          Ответить
                          • > Мне пришлось статический приобрести
                            Сервачок?
                            Ответить
                            • Нет, по работе нужен был ssh-доступ из дома, а упоротые админы никак не соглашались дать доступ по rsa-ключу. Давно думаю, не поднять ли по такому случаю дома сервачок...
                              Ответить
                              • > не поднять ли по такому случаю дома сервачок...
                                С говнокодиком 2.0..
                                Ответить
                                • Ему пока и бесплатного хостинга хватает :-)
                                  Ответить
                                • Кстати да. Работа идёт, за выходные надо таки написать лесенку.
                                  Ответить
                                  • > Работа идёт, за выходные надо таки написать лесенку.
                                    Пилите Шура, пилите.
                                    Ответить
                                    • За инвайтами на закрытый тест писать в личку
                                      Ответить
                                      • А на хабру инвайты будут :?
                                        Ответить
                                        • Активные участники тестирования получат http://upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Mop.svg/238px-Mop.svg.png
                                          Ответить
                                          • > Активные участники тестирования получат
                                            http://upload.wikimedia.org/wikipedia/commons/thumb/2/2b/Plopper.jpg/450px-Plopper.jpg
                                            Ответить
                                            • Gut. Держи инвайт:
                                              http://wtfcode-ratvier.rhcloud.com/invite/bormand
                                              Ответить
                    • Это как головой об стену. Да и вообще не надо писать туда годноту, надо придерживаться принципа - чем больше там говна, тем лучше хабру.
                      Ответить
                  • http://lurkmore.so/images/2/2d/6478c28b73b3-1-.jpg
                    Ответить
                  • >Но ведь модерация.
                    Я очень похудел за последнее время. Святая модерация творит чудеса.

                    Когда уже bormand ТараскуБорманда разбанит?
                    Ответить
                    • >Я очень похудел за последнее время.
                      Да, сер. Вас нынче прям не узнаешь.
                      Ответить
              • Деньги? Вот хотел недавно зарегистрироваться там... думал напишу по-быстрому статейку, дождусь аппрува... ну и видимо ошибся, когда вводил фейковое мыло. Или оно еще создаться не успело к тому моменту, в итоге - повторить письмо нельзя, сменить мыло у несозданной учетки нельзя, войти в недосозданную учетку нельзя, создать другую с тем же именем нельзя...

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

                  Ну вот как можно было написать такую регистрацию? Мыло просрано, ник просран...
                  Ответить
              • показать все, что скрытоРак, твой мозг съеден двачем, среди нормальных людей тебе делать нечего
                Ответить
                • A причем тут двач, guest?!
                  Я уже более трех лет там не был.
                  > среди нормальных людей тебе делать нечего
                  А-а-а. Я всё понял. Ты наверняка хотел сказать:
                  "среди нормальных хабралюдей тебе делать нечего"
                  Ответить
            • А мне уже отфильтрованные статьи кидают в мессенджер ;) Лень самому выбирать.

              P.S. Вот перевод коанов о программировании мне понравился.
              Хабр: http://habrahabr.ru/post/147148/
              Оригинал: http://thecodelesscode.com/
              Ответить
              • да, эту я тоже смотрел. разбил подписки по хабам, подписался отдельно на Haskell и Erlang, но в них редко что-то постят.
                Ответить
                • Это как канал #haskell на jabber.ru - "канал любителей молчать о хаскеле". В котором действительно почти всегда тишина.

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

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

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

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

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

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

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

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

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

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

                        Запилил :3
                        Ответить
                      • Да, ссылка вверх по треду - это хорошо. Особенно, если после нажатия на ссылку "вверх по треду", кнопки перемещения по истории будут возвращать к предыдущему якорю, вот это будет круто.
                        А сейчас в сильно развитых тредах у меня целая процессия бывает: что бы посмотреть, на что же ответил комментатор нужно:
                        1. Поставить курсор мыши в районе аватара комментатора.
                        2. Крутить колесо мыши вверх до тех пор, пока курсор не окажется на комменте, по иерархии выше (а на практике - аватар очередного комментатора окажется левее курсора).
                        3. ...
                        4. PROFIT!
                        Ответить
                        • Хабор можно ругать, но там есть несколько UI-решений, которые в силу тотального отсутствия всего похожего (ака чистый лист) на говнокодике выглядят весьма оригинально. Там для этой цели есть точки сбоку от ника. Их придётся считать, но немного упрощается канитель с мышью. (Да, я пользуюсь таким же способом, за неимением, как говорится.)
                          Ответить
                  • bormand>Вот так.
                    Это же не удобно!
                    Ответить
                    • Есть приверженцы как лесенки, так и ответного комметнирования в стиле '>', но многие, и я в их числе, комбинируют эти виды ответов. В любом случае, на ГК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}}
                                        Толстоватенько выйдет. Нужно что-то проще.
                                        Ответить
                                        • Зато можно \int_a^b f(x)dx написать ;)
                                          Ответить
                                          • Если будет рендер в картинки - пожалуйста, а так - я сей дивной мове не научен, выглядит жутковато.
                                            Ответить
                                        • я просто думал об этом с оглядкой на \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% случаев будет на него.
                                            Ответить
                                            • [repeat]
                                              [unban=TarasB]
                                              [summon=TarasB]
                                              [wait=7d]
                                              [ban=TarasB]
                                              [wait=7d]
                                              [/repeat]
                                              Ответить
                                              • А кстати, мысль: люди с модерскими правами не получают никакого нового функционала, никаких свистоперделок и шлюх. Просто получают доступ к использованию особых тегов. Пишут коммент с тегами. Движок сайта заменяет автоматически эти теги на шаблонный тест. Например [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>Лесенка после определенного уровня все-равно вырождается в такую же линейную структуру
                    Говнокод такой говнокод
                    Ответить
                  • Потыкать бесплатно без смс без мавена http://wtfcode-ratvier.rhcloud.com/
                    Ответить
                    • Если говно отсюда не экспортируете - я к вам и близко не подойду.
                      Ответить
                      • Это пока прототип, но это наш продукт.
                        Ответить
                        • Что-то регистрация не отрабатывает, вроде все поля заполняю, жму sign-up, и тишина...
                          Ответить
                          • Там может быть слишком короткий пароль, вроде сообщение ещё не прикручено.
                            Ответить
                            • Ну да, 123 действительно был коротковат ;)

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

                        Придется подумать о непрерывной синхронизации коментов и тредов...
                        Ответить
                        • А надо? Лучше уж с нуля начать
                          Ответить
                          • Истинно так.
                            Иначе надо будет вытаскивать ещё все комменты, ибо соль в них.
                            Ответить
                      • Почему? Признайтесь, разве вам не хочется по-новой взять все былые геты, полюбоваться поне, как число говнокодов от ничтожно малого воспрянет до приятно весомого. А то сейчас даже не ощущается рост, что капля в море...
                        Ответить
                    • <input name="F440538938140GHEWUP" type="password" value="*******">

                      Забавно ;)
                      Ответить
                      • быдло-фреймворк какой-то
                        Ответить
                      • у них там жаба? Тут тоже много чего забавного, можно, например, свой пост плюсонуть.
                        Ответить
                      • Lift генерит для постбека
                        Ответить
                        • Не, прикол не в имени, а в восьми звездочках, которые по дефолту торчат в поле ввода пароля.
                          Ответить
                    • Пиписюнчик, я тебя по ip вычислю!
                      Ответить
                      • Тсс... не пали цель проекта... Мне тут Роман в личку написал, что этот сайт создан только с целью поиска и поимки Пиписюнчика.
                        Ответить
                      • Задеплой свежатинку, пусть люди лесенку заценят (стили лесенки чуть позже поправлю)
                        Ответить
                        • Запилил анального модератора. Пиписюнчик обрадуется.
                          Ответить
                          • Круто!
                            Кстати, в лифте вроде есть какой-то дефолтный механизм ролей.
                            http://exploring.liftweb.net/master/index-9.html
                            Ответить
                • ребят, я в сметении
                  Так пилить лесенку или нет? Или допилить json-api для комментов (сейчас уже доступен весь список комментов к посту по /post/<id>/comments.json) и рендерите уже как хотите?
                  Правда, уже неделю как вертится в голове идея сделать переключалку как в современных файловых менеджерах: хочешь - линейная структура, хочешь - древовидная.
                  Ответить
                  • > Так пилить лесенку или нет?
                    Если сложно - пока можно и забить. В конце-концов внедрение лесенки потом не потребует модификации базы... Ну и без ссылок жили, без модераторов жили, и без лесенки проживем ;)
                    Ответить
                    • Не просто, если честно, но и не очень сложно, и мне кажется, оно того стоит. Скрывать ветку - задача практически тривиальная, это и в govnokod.js несложно добавить (просто у списка делать hide() с jQuery). Меня немного беспокоят вопросы производительности, но нас вроде не особо много на ресурсе, а от DDOS можно и nginx грамотно настроить.
                      Ответить
                      • Может быть, кстати, лесенку собирать на клиенте?
                        Ответить
                        • у меня была такая же мысль, для этого, собственно, и добавил json-api для комментов. Проблема в том, что придётся вынести шаблоны в жабаскрипт, и defecate-plusplus, думаю, не особо будет счастлив, если его айпад затормозит на рендеринге больших лесенок.
                          И ТРУЪ линуксоиды не смогут смотреть сайт из lynx
                          Ответить
                          • Для Ъ есть atom и json
                            Ответить
                            • Посылаешь curl'ом из консольки запрос, и читаешь выхлоп в json. Удобно же ;) И никаких браузеров не надо.
                              Ответить
                              • Зачем мелочиться? Давай уж сразу
                                SELECT * FROM comments WHERE gk_id = 123;
                                Ответить
                                • Ну а почему нет? Поднимаем базу, настраиваем права так, что все могут читать все таблицы, но запись - только через пару-тройку хранимых процедурок. Работы на час, и хорошая защита от дыхоты ;)

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

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

                                Запросто обидится, а "отсортировать" дивы на js нельзя?
                                Ответить
                                • Можно, но они будут прыгать, что не айс ниразу. Тогда уж проще рекурсивно биндер вызывать на сервере. Ладно, меньше слов, пойду ваять прототип.
                                  Ответить
                                  • С лентой - это баг или фича?
                                    Ответить
                                    • Скорее баг. Сегодня адаптирую биндер, чтобы в feed всегда плоская лента отображалась.
                                      Ответить
                              • просто не проиндексирует и все
                                Ответить
                      • >DDOS

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

                            Нужно больше непонятных закорючек.
                            Ответить
                            • у меня была мысль использовать оператор foldLeft из Scala
                              /:
                              чтоб никто не догадался
                              Ответить
                            • Но ведь я джва года ждал возможности сворачивать треды... Т_Т
                              Ответить
                    • Что сложного в лесенке?

                      id, parent_id, thread_id, ...
                      Ответить
                      • id, parent_id, depth, thread_id, ...

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

                            Так что пострадают от сожития все-таки деревянщики.
                            Ответить
                            • Если и линейщики и деревянщики будут прележно указывать, в тех случаях, где это нужно, кому именно они отвечают, то никаких проблем не будет. Можно даже дублировать, при отображении деревом, ответы, которые ссылаются сразу на несколько комментариев, но делать это при построении на клиенте.
                              А если коммент не ссылается на другие комменты, то всё верно и у деревянщиков и у линейщеков: это новый тред, или новый коммент к ГК соответственно.
                              Ответить
                  • А зачем вообще плагиатить клон клона делать?
                    Ответить
            • > но почему-то мне этот сайт напоминает ту же хабропомойку
              Какой же сайт хороший по мнению господина, пытающемуся оплевать тут всех говном?
              Ответить
    • > http_build_query() для слабаков!
      А вот и нет =(
      $data = array(
        'foo' => 'foo 1'
      );
      echo http_build_query($data); // 'foo=foo+1'

      Как получить не "+", а "%20"?
      Поставить Убедить хостера поставить 5.4.0:
      http://php.net/manual/ru/function.http-build-query.php
      Ответить
      • Но для urlencode(), а не rawurlencode(), конечно, велосипед. =)
        Ответить
      • >Как получить не "+", а "%20"?
        Проверить версию PHP и сделать str_replace в случае необходимости?
        Ответить
        • И запостить результат на говнокод! :D
          Кстати, интересно, +/%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
          Ответить
          • слайд 33 устрашает, конечно
            Ответить
            • угу... надо будет померить.
              Проблема в том, что без бэктрекинга сложновато это будет написать.
              Есть ещё идея наколбасить примитивнейший парсер нодов, которому не нужен бэктрекинг, и добавить поверх него стековую машину для рендеринга 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);
                          Ответить
                    • http://ideone.com/VEKC4

                      Поддержка тега [color] (ну и других параметризованных хреновин). Говнища меньше не стало ;)
                      Ответить
                      • Рекуклед:
                        "Срём при написании парсера говнокода, прямо на говнокоде."
                        Ответить
                    • Ну и последняя версия на сегодня:
                      http://ideone.com/qygSW
                      Ответить
                      • Стековый парсер себя неплохо показал, кстати. Пожалуй, оставлю реализацию со стековой машиной (правда, у меня роль стэка выполняет список). Если интересно, в репозитории более-менее рабочая версия (импрувментов, правда, много можно сделать).
                        Возможно, в ближайшие дни демка мигрирует на bb-коды.
                        Ответить
                        • А выложите на говнокод, чтобы полюбоваться.
                          Ответить
                          • http://wtfcode-ratvier.rhcloud.com/code/16
                            Ответить
                            • '::' в Скале это как хаскелевское ':' ?
                              Ответить
                              • Похоже, только реализовано исключительно средствами языка (вроде бы в Haskell нельзя было бы такое самому реализовать).
                                Ответить
                              • >как хаскелевское ':'
                                http://www.haskell.org/hoogle/?hoogle=%3A
                                А где такое в хаскеле?
                                Ответить
                            • В хаскеле должно быть короче, но да. Красиво.
                              Ответить
                            • Кстати, мне тут один однокласник недавно заливал, что скала - диалект лиспа. Он ведь не прав?
                              Ответить
                              • > Он ведь не прав?
                                Угу. Диалект лиспа - clojure.
                                Ответить
                                • >Угу.
                                  Угу - в смысле он не прав?
                                  Ответить
                                  • Да, он не прав. Вот диалект лиспа, который скомуниздил аватарку Романа в качестве своего символа:
                                    http://ru.wikipedia.org/wiki/Clojure
                                    Ответить
                                    • >Вот диалект лиспа, который скомуниздил аватарку Романа
                                      Не порядок. Ради своего друга я подам в суд на DARPA и напишу Михалкову.
                                      Ответить
                                      • Да ладно, пусть подавятся. Я себе уже новую придумал, всё никак нарисовать не соберусь.
                                        Ответить
            • Все похапешники сейчас почуствовали гордость за свой инструмент...
              P.S. Пока не увидели 35й слайд.
              Ответить
          • Humans. They do mistakes.

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

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

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

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

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

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

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