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

    +145

    1. 1
    Привет, я вот сайт пишу, каталог, на заказ, ну короче, считаю себя говнокодером. Хочу попросить более опытных что ль, оценить. Сказать так это или нет. Ссылочку на гитхаб чуть позже присобачу.

    Запостил: proweber1, 27 Марта 2015

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

    • Бывает
      Ответить
    • Ну окей, давай код-ревью устроим.
      Ответить
      • http://rghost.ru/8SYMfjXsm
        Пароль для скачивания qazWSXedcRFV123, решил без гитхаба обойтись
        Ответить
        • > Ссылочку на гитхаб
          > http://rghost.ru/

          гитхаб - это здесь ---> http://github.com/
          Ответить
        • >Пароль
          Нахуя?
          Ответить
        • Вот ты понимаешь, что ты только что сделал? Ты выложил на открытый ресурс, на котором нельзя удалять комментарии ссылку на архив и пароль к нему. К тому же, местные обитатели сохранят архив на память и, возможно, выложат куда-то ещё. С тем же успехом мог заливать на гитхаб и не париться.

          >>Пароль
          >Нахуя?
          Боится, что боты-сканеры ргоста запалят его исходники.
          Ответить
        • я чет искал-искал, а не нашел, что из этого написано тобой =) даже sql файл через phpmyadmin сгенерил
          Ответить
        • >решил без гитхаба обойтись

          Надеюсь без git не обошелся?
          Ответить
          • судя по конфигам идеи, обошелся :)
            Ответить
          • А чем гит лучше svn при разработке в одно рыло?
            Ответить
            • Он распределенный.
              Ответить
              • >в одно рыло
                Или вообще если хранилище на локалхосте.
                Ответить
            • > в одно рыло
              Настраивать проще (git init и репа готова), не засирает проект папками .svn, с ветками удобней работать.
              Ответить
              • > не засирает проект папками .svn
                этого давно уже нет, несколько лет точно.
                Ответить
                • Но это не мешало администрации известных ресурсов использовать старую версию SVN:
                  http://habrahabr.ru/post/70330/
                  Ответить
              • А мне на одном сайте сказали, что гит — говно. Вот цитата:
                «1) Он не может просто выкачать часть файлов (каталог из репозитория, а не весь репозиторий). Когда объемы репозиториев измеряются в гигабайтах, то это критично. Я иногда на работе по часу тупо выкачиваю код.
                2) Система веток похожа на токийское метро, как в ней вообще разобраться?
                3) Rebase - одна из самых частых операций и она по большому счету приводит К ПРАВКЕ ИСТОРИИ. Отличный способ всех запутать. Megre вместо переливания кода из ветки в ветку вообще делает единую.
                4) Нет аутентификации. Буду коммитить тоже от имени Линуса Торвальдса. Если в моем коде что-то не так пусть он разбирается.
                5) "Кроссплатформенность". GIT не знает что такое аттрибуты файлов и как файл может быть блокирован. В итоге пораждается куча багов.
                Да и просто раздражает это дебильное "у меня точка спереди, меня никто не видит". Давайте еще дату изменения что ли в имени хранить? И правда доступа? Да вообще весь файл пусть в имени хранится, хули.
                6) Все файлы в каталоге по умолчанию считаются под контролем. В итоге заебешься добавлять бинарники, конфиги и всякий хлам в .gitignore.
                7) Децентрализация. Попали лишние тэги на сервер - пизда, их теперь все кому не лень будут пушить до скончания веков. Вообще что бы то ни было лишнее удалить почти невозможно.
                8) Ветки хранятся в одном каталоге. Если в ветках добавлялись и или удалялись каталоги, то свич + пуш запушит лишний проект. Идеальный способ разнести какую-то херню из одной ветки во все.
                9) Мне сейчас нужно чтобы кусок кода у меня лежал в папке с проектами, а кусок - в вебруте для IIS. Разница:
                - TFS VSC похуй где файлы на диске. В решении => ок, всё уже работает.
                - В GIT нет решений этой проблемы. Не работает и никогда не будет.»
                Ответить
                • «Совсем забыл, в дополнение к 7:
                  по умолчанию pull не обновляет список серверных веток и нужно писать еще и prune.

                  Итого: даже удаление ветки зачастую почти невозможная операция, ибо если другой разработчик её уже видел, то после удаления её с сервера у него останется и её локальная копия, и фантом серверной ветки. То что он может комитить в локальную по большому счету никого не ебет, но при пуше автоматически, без всяких предупреждений и даже сообщений после будет заново создана серверная ветка и в неё даже затащится вся история что там была.

                  Просто ад какой-то. Не испытывать проблем с гитом можно только в двух случаях:
                  - ты единственный разработчик, который пользуется конкретным репозиторием
                  - ты такой же ебнутый как авторы гита»
                  Ответить
                  • Как же люди с этим живут, пихая такое говно во все места? Это же боль и ад. Вот хоть Вы и зелёным цитируете, от перечисленного плакать хочется.

                    > Все файлы в каталоге по умолчанию считаются под контролем.
                    Это же пипец! Апплодисменты авторам за фэйл.
                    Ответить
                    • >> Это же пипец! Апплодисменты авторам за фэйл.
                      > Это же пипец! Апплодисменты авторам за фэйл.
                      Вот в этом пункте как раз брехня. Гит добавляет под контроль только то, что ты скажешь ему добавлять. Если ты сказал ему "добавь всю папку" и не указал, какие маски надо исключать, то что он должен добавить? :)

                      P.S. Out of source билд рулит. Бесит, когда система сборки засирает папку с исходниками объектниками, бинарниками, конфигами и прочим говном.
                      Ответить
                  • Всё же есть странные люди, которые делают git push, не разбираясь, что же именно они пушат и куда. А потом удивляются, ноют и бьют себя ушами по лицу.
                    Вроде в 2.0 сделали, чтобы git push без параметров пушил только одну ветку, но я всё равно всегда писал куда пушить и всегда буду.
                    Ответить
                • Ну, тут есть и справедливые замечания. Действительно нет способа выкачать отдельный файл или каталог, а иногда очень хочется. Но уж если что, то ТФСВЦ ну не лучше. Хотя мне с ним довелось поработать чуть меньше чем полгода - он не пригоден ни для чего вне вижуалстудио. Особенно выдающейся фичей этой системы является ее любовь к запрету на редактирование чего-нибудь: поправил файл, хочешь его сохранить - а тут оп-па, и нельзя, приходится искать место куда бы его сохранить с другим именем, или как-то наебать систему, чтобы таки можно было сохранить. В итоге где-то по-дороге изменения теряются.
                  Ответить
              • >Настраивать проще
                Щелк правой кнопкой - создать хранилище,куда проще?

                svn уже давно создает .svn только в корне.
                Ответить
            • svn тупой
              Ответить
              • Ну ахуеть аргумент! Гит - говно.
                Ответить
                • ветки в svn говно.
                  Ответить
                  • Меркуриал онли!
                    Ответить
                  • Нахуй мне ветки на локалхосте?
                    Ответить
                    • Ап.
                      Ответить
                    • > Нахуй мне ветки на локалхосте?
                      Чтобы не копировать проект на 100500 раз ради экспериментов. Чтобы запиливать новые фичи не ломая основную ветку.

                      P.S. Я тоже после svn думал: "да нахуй мне эти ветки на локалхосте?!".
                      Ответить
                      • А зачем для экспериментов создавать ветки? Я пока svn использую только для бекапа.

                        А нормальная нумерация версий -однозначный плюс.
                        Ответить
                        • > А нормальная нумерация версий -однозначный плюс.
                          Гит тоже умеет нумеровать. Если историю в мастере не переписывать и теги с места на место не перевешивать - нумерация даже будет стабильной. Но в svn номера ревизий однозначней и проще, да.

                          > зачем для экспериментов создавать ветки
                          Как минимум - чтобы отложить на пару дней пиление этой самой ветки и пофиксить что-то в master'е (основной ветке).
                          Ответить
                          • >Гит тоже умеет нумеровать
                            32 битным хексом?

                            >Как минимум - чтобы отложить на пару дней пиление этой самой ветки и пофиксить что-то в master'е (основной ветке).
                            Хз, как то потребности в этом еще не было. В таком случае может бы тупо новый реп создал.
                            Ответить
                            • > 32 битным хексом?
                              Че-то типа 1.6.3-32

                              > В таком случае может бы тупо новый реп создал.
                              Ну а я про че писал? :) "Чтобы не копировать проект на 100500 раз ради экспериментов". Да и не всегда знаешь, когда надо будет скопировать. А ветки в гите вообще нахаляву делаются. Тут бесполезно объяснять, надо попробовать и подсесть ;)
                              Ответить
                              • Для моих текущих нужд это оверхед. Разбираться с ними сложно, плюсы для меня неочевидны. Это ведь для объемных проектов?
                                Ответить
                                • Ну да. А для мелочи хватает того самого 32-битного куска от хеша. Тебе номер версии для чего нужен? Помимо поиска его в истории и переключения на соотв. версию кода.
                                  Ответить
                                  • P.S. Ещё номер нужен для сравнения версий на глазок. Вот тут да, 32-битная хуйня бесполезна.
                                    Ответить
                                  • Для определения, какая версия старше. Для легкости запоминания (эта версия нормальная, тут начали пилить какую-то фичу). Обрезки хешей запоминаются гораздо хуже.

                                    Кстати, а что будет при коллизии хеша? Я так понимаю, это - уникальный идентификатор, а история может быть в любое время переписана?
                                    Ответить
                                    • Этот хеш - это ша1 от файлика с коммитом. При переписывании истории он меняется. У полного хеша ты коллизию хуй замутишь. А вот у обрезка - запросто :(
                                      Ответить
                                      • Ну так, что будет если хеш обрезка совпадет?
                                        Ответить
                                        • На сам движок точно не повлияет, он всегда юзает полный хеш. А вот что сделает чекаут по куску с коллизией - не знаю. Вечером сделаю репу с коллизией, посмотрим. Самому интересно.
                                          Ответить
                                        • Вот. Замутил репу с 70к коммитов. Нашёл в них одну коллизию, как и предполагалось по парадоксу дней рождения. Скормил её гиту:
                                          $ git show 1dcb623a
                                          error: short SHA1 1dcb623a is ambiguous.
                                          Ответить
                            • Вот так версия выглядит: 1.0.5-35-gd7d219a

                              1.0.5 - имя последнего тега на пути от начального коммита до текущего
                              35 - количество коммитов после этого тега
                              d7d219a - кусок от хеша коммита, чтобы можно было быстро его найти
                              Ответить
                • баттл баттл
                  Ответить
        • ну ебаный в рот, мальчик
          на гитхабе я бы мог даже не скачивая посмотреть, а теперь мне виртуалку снова запускать
          Ответить
          • Зачем?
            Ответить
            • Потому что я не вскрываю на хосте непонятные архивы. Тут недавно была тема насчет управляющих юникодовых символов.
              Ответить
              • Игродел, перелогинься.
                Ответить
              • Да ты упоролся. Архивы он блядь на виртуалке открывает.
                Ответить
                • Где гарантии, что у архиватора нет уязвимостей? И что уязвимостей нету у плагинов, которые генерят иконки по контенту файла?

                  P.S. Вон какой-то вирус же был, который достаточно было увидеть в каталоге, и винда радостно исполняла нужный ему код...
                  Ответить
                  • А где гарантии что у браузера которым он пользуется нет уязвимостей?
                    Ответить
                • да приебались-то чего
                  от деархивации ничего не будет. но в целом я распиздяй и скормить произвольную хуету интепретатору для меня обычно не проблема. после пары rm -rf на сервере я стараюсь всегда минимизирвоать возможные последствия какой-нибудь гранитной стеной.
                  Ответить
                  • Прыщепаранойя. На винде люди не боятся, а питухи поставили себе мегазащищенный линукс и боятся на нем архивы открывать.
                    Ответить
    • прау-ёбер-1? классный ник.
      Ответить
      • про-вебер-1, тебе бы английский подучить.
        Ответить
        • англиский слишком сложный. русский намного лучше.
          Ответить
          • Надо было зелёным писать.

            http://www.effectivelanguagelearning.com/language-guide/language-difficulty
            Да, там на англиЦком
            Ответить
            • нифига не понял. там все не по-русски. и картинок мало и они не смешные.
              Ответить
        • Дурак ты, про-вебер-1 - ник полного хуесоса и пидораса. Тебя хотели вытащить из этой трясины, а ты нырнул с головой
          Ответить
    • Использование композера: плюс
      Использование phing: вообще плюс, но я этой xml-дрочилкой никогда не буду пользоваться
      Использование коханы: минус, кохана это пиздец

      > @license Open Source
      Используй конкретную, все обычно ставят MIT и всё.

      > * Изменяем before, для того, чтобы проверить, прилетел
      > * хуев AJAX запрос, или пизда членистоногая какая-нибудь,
      > * а нам таких нахуй не надо! Хакеры ёбанные!
      лол.

      throw new HTTP_Exception_404('Нехуй открывать этот контроллер напрямую, сука!');

      мне уже начинает нравиться
      Ответить
      • > * Метод для рендера контента вообщем так, пригодится для
        > * ajax запросов, а может где и еще, но жопой чую что он нужен

        слушай, вообще тут твое творчество вроде было недавно
        Ответить
        • > * Берем before, и переопределяем его, ну кАрочИ, тут будИт
          > * инЕцЕализацЫя стандартных перемеНых, вот кАроче.

          > * В этом методе у нас происходит инициализация стандартных
          > * переменных для шаблона, дабы избежать вывода ошибок
          > * во время работы сайта, в продакшен версии, ну конечно
          > * мы еще переведем сайт в продакшен решим, вырубим вывод

          бля, если б я был HR, у тебя был бы солидный приоритет при устройстве!
          * сранных ошибок, но все же.
          Ответить
      • Пришло время выносить модули за document root
        Модули сами себя не вынесут
        Ответить
        • хуекохана же. я не знаю, что у нее там с загрузкой и можно ли вообще автозагрузчик прикрутить, но по дефолту все валяется в прямом доступе (оттуда и эти ебаные defined or).
          Ответить
        • За что минуса? Вам нагуглить баги, когда глючил сервер и вместо страниц отдавался код? Один раз такое лично видел.
          Ответить
    • А если серьезно.
      Сложно понять, что там диктует кохана, а что по твоей воле сделано, но

      * @access protected
      * @param null $file
      * @param array $params
      * @return View
      */
      protected function render_content($file = NULL, array $params = array())

      Зачем ты пишешь access protected, если он и так стоит ниже? Зачем @param null, если очевидно, что туда передается строка, а null - это просто "компонент, выбери сам?". Определять вот эти значения по умолчанию и уровень доступа - задача парсилки, которая это использует. Ну и @param array - с таким объявлением аргумента разве что кретин не поймет, что это массив. Другое дело - что в нем должно лежать? Сам контекст рендеринга? Набор конфигурации для рендеринга, в которой контекст должен лежать строго под определенным ключом?
      Ответить
      • В общем почитай конвенции по написанию кода и phpdoc (PSR-1, PSR-2, PSR-5/draft), что такое миграции, посмотри, как твои комментарии парсятся в PHPStorm, потрогай Twig, и все станет в два раза приятней глазу. Конкретного говнокода или сложной логики, на которой можно было бы оценить толком, я не увидел там, но вообще действительно непонятно, где саму твою работу искать.

        Ну и установка зависимостей через phing - это не дело, оно все должно жить в composer.json. Прямо в нем же объявляешь новые репы, и все оно само скачивается.
        Ответить
        • Одиночесто х5
          Ответить
        • Для твоего сведения, PhpStorm сам документацию состовляет, и я этого не писал, лол!
          Ответить
          • Самая тупая отмазка, проёбер.
            Ответить
            • Иди на хуй, ущербный
              Ответить
            • Ну что Вы такой злой, что ж Вы так к людям относитесь. Это же сайт для професси аналов в своём деле, а не школьный форум "Ты дурак - нет сам такой". Не обижайте проёбера №1, пожалуйста.
              Ответить
              • "сайт для професси аналов" по моему опыту как раз и подразумевает, что школьников тех, кто знают меньше кого-то, хуясосят.
                Ответить
              • Ну просто по-хорошему попросил, оцените код, подразумевал, модели, контроллеры и модули, в ответ, как обычно у нас в стране, получил негатив, и еще обосрали, а по делу только один человек сказал, остальные выебнулись, типа программисты не въебенные
                Ответить
          • Не, не гони. Темплейты по умолчанию там совсем другие.

            Что до автоопределния null, а не string - ну епт, шторм-то не знает, что у тебя на уме, а язык даже чересчур динамический.
            Ответить

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