За последние 24 часа нас посетили 18433 программиста и 1656 роботов. Сейчас ищут 1765 программистов ...

Ноу хау CMS?

Тема в разделе "Решения, алгоритмы", создана пользователем lost_cluster, 9 янв 2011.

  1. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Devzirom
    А зачем вам ссылки на все магазины? Я думаю одного достаточно для того, чтобы констатировать факт - система работает. Теперь вот хочется послушать объективную критику, если это возможно, а мелочи на то и мелочи их не всегда можно учесть, со временем исправятся.
     
  2. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Я не могу субъективно оценить, из-за большого числа ошибок xD
     
  3. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Devzirom
    Настройте апач и ошибки исчезнут =)

    Уважаемые коллеги, я так и не понял, построения ядра подобным образом имеет право на жизнь или я убил время зря и нужно было посвятить себя доскональному изучению bitrix?
     
  4. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Что угодно только не битрикс, и вообще, если начали - доводите до конца
     
  5. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Devzirom
    Постараюсь. Спасибо за пожелание.
     
  6. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    На столько он и выглядит) Без обид)
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    lost_cluster
    А зачем index.html в каждой папке? use htaccess


    PHP:
    1.  
    2. if (!isset($_REQUEST['id'])) return NULL;
    3. else return $_REQUEST['id'];
    4.  
    Это пипец какой плохой стиль кодирования. Я сейчас переписываю проект наполненный таким кодом. Он не читаем вообще! Чтобы понять логику, нужно потратить гораздо больше времени на анализ кода.

    А в данном случае, можно вообще использовать тернарный оператор
    return (isset($_REQUEST['id'])) ? $_REQUEST['id'] : null;


    PHP:
    1.  
    2. <?php
    3.     public function get_url_query() //получить в массив параметры из строки браузера вида ?var_1=n&var_2=m и т. д.
    4.     {
    5.         $result = array();
    6.         $query = parse_url($_SERVER['REQUEST_URI']);
    7.         $query = explode('&', $query['query']);
    8.         if ( !empty($query[0]) )
    9.         {  
    10.             foreach ($query as $value)
    11.             {
    12.                 $tmp = explode("=", $value);
    13.                 $result[$tmp[0]] = $tmp[1];
    14.             }
    15.         }
    16.         return $result;
    17.     }
    18.  
    19.  
    $_GET уже не в моде?



    Находится почему-то в конце ядра. И почему-то бОльшая часть кода в этой функции отвечает за кэширование.
    Как мне кажется, код, стартующий сайт, должен располагаться в конструкторе.

    Что это? Шаблонизация? Не проще ли include использовать?

    read_file, write_file - это все можно заменить file_get_contents, file_put_contents.
    Вообще, классы у Вас представляют собой набор обычных функций.
    Единственная вещь, где можно было себя показать в ООП - так это класс базы данных. Но там полный провал. 50 строк кода по сути являются четырьмя строками с кучей мусора.
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Devzirom, Padaboo
    Фишка в том, что пока мы изучаем мануалы, читаем книги по архитектурам, другие работают, прочитав краткие курсы по PHP. И зарабатывают гораздо больше нас, потому что они не парятся как мы, у них производительность проект/месяц гораздо больше.
     
  9. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Kreker,
    Это мой самый первый проект (февраль 2009 года), кроме кишков и логотипа там ничего не обновлялось(в ноябре 2010 года), сайт нафиг некому не нужен, хотя за него одна тётенька бабос получает, думаю 2к деревянных в месяц. Но ей далеко пофиг. Если бы мне платили те же деньги, я бы подумал не только о кишках, но и о внешнем виде. А выкладывать 3-5 страниц + 2-5 новостей в месяц - это вообще пустяки, главное чтобы платили. Сайт мертвый, потому-что на нём нет актуальной информации - того же расписания, его можно сделать, но мне сейчас не хочется въёбывать на халяву, чтобы кто-то получил премию. Нет пользовательского доступа - нельзя оставить комментарий к новостям или фотке, даже гостевая книга премодерируется. Нет нормативно-правовых документов. Короче это вообще тухлый сайт. Хотя очень перспективный, если его наполнить полезной инфой и пустить студентов, выпускников и т.д. его посещаемость могла бы быть под 1к в сутки. Но в КГТ очень боятся критики, и не зря бояться, т.к. там есть и взяточники и вымогатели и просто некомпетентные в своём деле люди.

    Kreker, деньги не главное. Мне нравиться знать больше, чем они и быть круче
     
  10. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Kreker
    Очень приятно, что по делу. Спасибо!
    Так пошло сначала, так и оставил.
    С этим совершенно согласен. Где-то в коде такие конструкции встречаются. В общем понятное дело, что необходима оптимизация кода.
    В том виде в котором у меня написан .htaccess это невозможно. Честно признаюсь я так и не смог написать регулярку для следующего случая domain/contacts/user.html?var1=1&var2=2&varN=N?, поэтому пришлось эмулировать программно.
    Это не принципиально.
    Можно было конечно написать отдельную функцию кэширования и вызвать ее в стартующей функции, но это тоже дело второстепенное на мой взгляд.
    Тогда как в данном случае на ваш взгляд выглядел бы старт в корневом index.php? $core = new Core();? Хотелось на самом деле подчеркнуть $core->drill(); Ну видимо это что-то личное =) Опять же, принципиально разницы не вижу.
    У каждого программера своя школа, кто-то одни книжки читал, кто-то другие, так же у каждого собственная логика, здесь важен результат, а не его достижение. Конечно, я сам сторонник чистого кода, но всяко бывает. В общем вывод могу сделать только один - требуется оптимизация.
    Его там невозможно использовать. Система не настолько тупа - на сколько вам показалось.
    Опять же, оптимизация. Вторая функция вообще не используется и была внесена в самой первой версии ядра, да так и осталась.
    Так в этом-то и весь изюм. Вы обратите внимание на другие системы, каким образом там построена модульная система. Там же долбанешься пока разберешься, а здесь все элементарно - имя сепаратора = имя вызываемого класса либо его метода. Это дает возможность не только выводить имя класса как модуль, но и использовать методы для обработки полученных данных из базы.
    К примеру, чтобы в модуле новостей вывести дату из таблицы БД (UNIX формат) и перевести ее в обычный для нас формат, нужно в классе модуля новостей добавить метод function md_date в котором вытащить через $this->row['db_date'] и применить к нему функцию date(формат); теперь в шаблоне новостей мы можем просто написать {%md_date%}, а если нужно без перевода из unix формата, то просто написать {%db_date%}.
    Не знаю, но я ничего проще не встречал. Проанализируйте код модуля новостей и вы все поймете.
    Здесь вообще не понимаю проблемы. Таких готовых классов по всему инету валяется, я не вижу необходимости что-то там наворачивать.

    Спасибо.
     
  11. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Devzirom
    Практика решает.
    Можно долго рассуждать каким средством выдраить пол в комнате, а можно взять тряпку и отдраить его до блеска. Результат тот же, но КПД выше.

    p.s. я начал программировать с 12 лет (Сейчас мне 32), в веб ушел 4 года назад, вы по определению не можете знать больше чем я потому как я еще не забыл то, что вы никогда не знали. =)
     
  12. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Мы не конкретно про вас, но и про вас тоже

    В вашем коде, очень много всяких недоразумений. И эти недоразумения, заметил даже маленький, 20 летний мальчик, который в php чуть больше двух лет.

    Я знаю много людей которые умеют программировать, но из них очень мало, кто умеет это делать правильно


    Для некоторых - это всего лишь способ набить кошелёк, а для некоторых это целый мир, который не всем дано понять. Я занимаюсь любимым делом, что не каждый может себе позволить, работа и хобби...
     
  13. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Можно 20 лет выписывать сопливым детям аспирин, а можно 5 лет делать операции на сердце. Решает именно теория.

    Был такой случай, писал торрент-трекер, открыл редактор и стал писать код. Через месяц так ничего и не заработало. Потом посидел две недели подумал о том как можно сделать лучше, и ещё за неделю написал. Итог рабочий скрипт за 3 недели, вместо 4 недель безрезультатной практики...

    Я начал программировать в 8 сейчас мне 30 в веб пришёл более 5-ти лет назад.

    Есть такой момент. Обидно, но ради частной наживы писать говнокод я не буду. (Для себя пишу, с радостью, а за деньги нет.)
     
  14. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Devzirom
    Кстати, не в обиду вам, но вы ничего конструктивного по коду не сказали. Вот молодой человек, который постил после вас, он указал на некоторые конструкции, но это опять же субъективно.

    Знавал я людей (теоретиков), которых коробило от конструкции типа (это на C++ писалось, но я на php, синтаксис не очень различается):

    PHP:
    1. for($m=1;$m<=10;$m++) for($n=1;n<=5;n++) echo $m.":".$n;
    по их мнению конструкция должна была выглядеть:
    PHP:
    1. for($i=1;$i<=10;$i++) for($j=1;j<=5;j++) echo $i.":".$j;
    и никак иначе.

    Так что не загоняйтесь на правилах, эти правила созданы людьми и каждое такое правило можно оспорить, главное соблюдайте синтаксис языка и все будет хорошо =)
     
  15. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Это не теоретики, это педанты (это хорошо в принципе, но это должно быть дополнением к основному комплекту, а не заменять его) и о качестве конкретных теоретиков ваш пример ничего не говорит.
     
  16. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Vladson
    Кому как. Примеров в истории достаточно чтобы утверждать и то и другое.
    Что толку от того, что ты знаешь регистры, а ты попробуй их запрограммировать, а мне таких умников попадалось достаточно, включая преподов, которые с книжкой и умным видом рассказывали мне о том, что я уже бессонными ночами сотни раз использовал на практике.
    Ну это у вас так вышло, а мне не приходилось переписывать свой код. Дорабатывать и оптимизировать - да, но не переписывать.
    Ради интереса. Чего добились в жизни?

    Спасибо.
     
  17. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Vladson
    Возможно вы и правы. Согласитесь, спор будет беспредметным. Каждому свое.
     
  18. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    lost_cluster, я далеко не теоретик

    Оба примера для меня идентичны. Они оба плохо отформатированы, но вполне читаемые.
     
  19. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Ничего, но к моим познаниям программирования это не относится. Программист я хороший, просто как человек "кусок дерьма" по этому ничего и не добился.

    Теперь по коду.

    Класс для работы с базой данных какой-то простенький. Ощущение что изобрели велосипед. (класс ничего не делает и никаких преимуществ не даёт.)
    Более того, функция запроса хранит дескриптор в классе, что делает невозможным оперировать с несколькими запросами одновременно.

    Так-же для вывода ошибок используется die() это очень и очень неправильный подход (в примерах в учебниках его дают только чтоб показать как это работает, на практике это совершенно лишнее.)

    Всюду генерируется контент, что так-же не очень хорошо, лучше бы генерировать хотя бы массив с данными, а уже в шаблонизаторе обрабатывать и генерировать HTML

    Код (Text):
    1. function strip_spchar($value) //очищает текст от тегов и других спецсимволов
    Совершенно лишняя функция, простой htmlspecialchars справится лучше, не обрезав лишнего (если таки надо обрезать, хотя я против этого, то есть strip_tags)
     
  20. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Devzirom
    Суть не в форматировании =)
    Суть в переменных. Люди учились по книгам где матрица обозначалась как [j] и не дай боже вместо этого ты поставишь другие переменные, все, ты злостный нарушитель канонов программирования. =) Вот я о чем.
    Так и парень выше привел пример с конструкцией типа if (a) return b; else return c; его такая конструкция огорчила, меня не сколько, хотя я прекрасно знаю конструкцию return a ? b : c;
    Не пойму почему ловят на каких-то мелочах и не разбирают сам фреймворк. Мне важно именно это, а не расположение в коде стартующей функции.
     
  21. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Копейка рубль бережёт. Одна такая мелочь может очень много нервов подпортить, если вдруг проскочит в неподходящий момент (такие случаи не часты, но если произойдёт то это бывает очень обидно, а иногда и финансово накладно)
     
  22. lost_cluster

    lost_cluster Активный пользователь

    С нами с:
    9 янв 2011
    Сообщения:
    57
    Симпатии:
    0
    Vladson
    Уверен, все впереди.
    Не изобретал, так и скачал из инета, более серьезный не способствовал гибкости, в таком виде устраивал.
    А кто мешает создать с десяток экземпляров класса? У каждого свой дескриптор.
    Возможно. Можно сделать свой обработчик, но ведь die это самый простейший способ указать на проблему, да и сию функцию мне доводилось встречать в серьезных проектах. Опять, же, за замечание спасибо, но не принципиально на мой взгляд.
    Так вот так в основном и поступают все известные мной CMS, а зчем так делать, если можно по другому, тем самым упрстив работу с модульной системой? Вы мне можете ответить более конкретно, а не "Всюду генерируется контент, что так-же не очень хорошо"? Спасибо.
    Согласен. Видимо мне в тот момент было проще написать функцию чем вспомнить о том, что она существует.

    Спасибо.
     
  23. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Получается, что у Вас класс используется как Namespace, что идеологически неверно.

    Я оценил с точки зрения парадигм. Вы выразили процедурный код через ООП. Получилась некая бутафория ООП, совершенно неуместная.


    Это выглядит смешно. Но только на первый взгляд. Это одно из незаметных на первый взгляд правил кодирования, которое не замечают новички.
    Когда работаешь один, много опускаешь - правила оформления, кодирования, комментарии. Когда приходишь в команду, начинаешь по привычке писать по-своему. В итоге проект начинает страдать от отсутствия стандарта.
    По поводу приведенного примера - видя цикл, я ожидаю, что в нем используется $i, но никак не $n. После цикла, не глядя на него, я могу использовать $n и он внезапно окажется не равным 0. Это может вызвать проблемы.
     
  24. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Вот в том-то и дело.
    Вас не огорчает то, как Вы пишите. И Вас абсолютно не заботит то, как продукт будет жить после продажи. Что кто-то разобьет монитор со словами "говнокод", пытаясь доделать модуль для Вашей CMS.
    Получается, что продукты Ваши не качество, а халтура для быстрого получения денег. Так как Вы не дизайнер, то дизайн можно и не спрашивать, но так как Вы программист - код должен быть идеален на каждом этапе развития. Если Вы настоящий программист.
     
  25. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    А что требуется?
    - Про ООП уже сказали
    - Про стилистику кода сказали
    - Про попытки переписать встроенные функции сказали
    - Про арихектуру - а что там? Ну да, подключаемые блоки, кэширование и пару функций.
    Собственно, почти все уже сказали, но большинство советов были приняты как придирки.
    Не в обиду, но несмотря на заявленный опыт, у меня складывается впечатление, что Вы просто не шарите и практического опыта мало.