За последние 24 часа нас посетили 18207 программистов и 1682 робота. Сейчас ищут 1087 программистов ...

Еще один кривой велосипед начинающего

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

  1. vladqa

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

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    Навеяно топиком http://www.php.ru/forum/viewtopic.php?t=29961
    Подумал: чем я хуже?

    Собственно, мой велосипед, который, как мне кажется, гораздо более собран, хоть и написан в процедурном стиле (это мой бич, начал писать 2 года назад и ООП тогда совсем не понимал): http://narod.ru/disk/4277253001/vngin_beta_4.zip.html
    Написан человеком, которому только-только стукнуло 18 :)
    Я уже выкладывал это, но было дело давно и много-много критики я так и не получил :(
    В отличие от автора "ноу хау цмс", я критику люблю и по-умолчанию спорить с более разумными людьми не хочу.
    Детали "архитектуры" могу легко объяснить, т.к. понимаю, что разобраться так сразу будет непросто )

    И сразу вопрос: реально ли с такими знаниями найти работу джуниором?
    Очень хочется развиваться, но для этого надо что-то реальное делать, не велосипеды.
     
  2. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    в инсталляторе Strict Standards: Accessing static property goDB::$query_id as non static in E:\localhost\test\inc\func.sql.godb.php on line 91

    и в итоге Fatal error: Uncaught DB Error. Query="INSERT INTO `vngin_modules` (is_global, is_admin, module_active, module_name, module_description, module_cp_name, module_settings, module_requires, module_uses, module_version, direct_access) VALUES (0, 1, 1, "cache_control", "Позволяет управлять файлами кеша.", "Управление кешем", "a:1:{s:14:\"cache_interval\";a:3:{s:5:\"value\";i:86400;s:4:\"type\";s:3:\"int\";s:11:\"description\";s:50:\"Выделять файлы старше (сек.)\";}}", "a:2:{i:0;s:11:\"user_events\";i:1;s:10:\"cp_modules\";}", "", "1.3.1", 0)" error = 1364 "Field 'module_sql_cache_time' doesn't have a default value" thrown in E:\localhost\test\inc\func.sql.godb.php on line 98
     
  3. Vladson

    Vladson Старожил

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

    В споре рождается истина, спорить надо, только вот к словам оппонентов прислушиваться надо, а не так что "я прав просто потому что я прав"

    Я делал сайт с одним парнишкой, так он в 12 писал так, что у меня глаза на лбу были (я по сути у него первое время учился, хотя старше его в 2 раза был) так что не показатель
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Чтож тёзка. По качеству кода сказать не могу (только 2 минуты посмотрел) код вроде выглядит аккуратно. По самой структуре только вопрос... Нафига всё так сложно ? (куча циклов, функций, условий в условиях циклов в циклах, это сайт или система управления ракетами ?)
     
  5. vladqa

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

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    d1gi, это странно

    Ну как бы.. попытка сделать как можно больше "рычагов" (все таки это больше некое подобие cmf). Как то: разные типы модулей, их зависимости друг от друга, соответственно очередность исполнения, передача параметорв между ними итп :)
     
  6. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    vladqa
    Вы на разных платформах тестировали ?

    ЗЫ: написал вам ЛС, может заинтересует ;))
     
  7. vladqa

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

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    d1gi, Windows, Linux
    А где именно вылетает эта ошибка? на каком этапе?
     
  8. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    в процессе инсталляции... суть в том, что нельзя обращаться к статическим методам и свойствам конструкцией $this, надо использовать :: , если обращаетесь внутри класса, то self:: или parent:: по обстоятельствам.

    PS: видимо предложение не интересно ;)
     
  9. vladqa

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

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    d1gi
    не-не.. это я знаю
    Забавно, что у меня при всех включенных ошибках этого нет =\

    отписал насчет предложения
     
  10. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    разработку проектов надо вести с error_reporting(E_ALL | E_STRICT);
     
  11. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    в inc\func.sql.godb.php у вас эта ошибка, обращение к статическим свойства через $this
     
  12. vladqa

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

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    d1gi, уже увидел, перепишу ) Спасибо!

    Но нет никаких комментариев насчет всего этого говнокода в целом! (
     
  13. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    а какие нужны комментарии? ;) говнокод знатный :) но это не главное, главное у человека есть стремление развиваться и совершествоваться :) ну для начала рекомендую познакомиться со стандартом оформления кода, я предпочитаю вот этот http://framework.zend.com/manual/ru/cod ... ndard.html хотя и с малюсенькими отклонениями ;) но эти отклонения оправданы ;)
     
  14. vladqa

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

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    А что не так с оформлением у меня? )

    Ну дык конкретнее, конкретнее!
     
  15. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    что сразу бросилось в глаза: нет единого стантарта по именованию методов, также в одном файле могут находится объявления нескольких классов....

    в общем почитайте http://framework.zend.com/manual/ru/cod ... ndard.html попробуйте отличия с вашим кодом найти ;)
     
  16. vladqa

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

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    d1gi, да там с классами только один файл с goDB.. =\
    Больше нету классов )

    А по именованию функций есть страндарт.. для модулей
     
  17. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    ну вот я только на этот файл и нарвался %)))) процедурные вещи не интересуют, думаю если кому будет интересно процедурное программирование, то есть друпал ;)

    а стандарты именования должны быть единымы на всё.
     
  18. Devzirom

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

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

    А вот это вообще, мягко выражаясь, капец!
    ООП отсутствует
     
  19. vladqa

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

    С нами с:
    13 янв 2011
    Сообщения:
    27
    Симпатии:
    0
    Devzirom, если вы читали, то класс goDB написал не я )
    Его автор Григорьев Олег. http://pyha.ru/go/godb/
    Кстати, пиздеца в упор не вижу. Насколько я вообще понимаю, хороший класс - это класс, который можно безболезненно взять перенести в другой проект без редактирования. goDB написан именно с учетом на это.
    И я считаю, что это очень неплохой класс для работы с мускулем.

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

    Ну в моем случае в фунциях самой системы нет префиксов, а ко всем функциям модулей обязателен префикс вида "module_name_".
    Но в целом по оформлению согласен, оно немного "плавает" туда-сюда ;)

    Я же в начале оговорил, что продедурное все.
    И сам понимаю, что в 2011 году это мало актуально.
    Но переписывать все это дело заного смысла нет никакого, а писать еще один такой же велик на ООП не стал, за неимением стимула.
    Вот в этом случае ваше, d1gi, предложение очень заманчиво :)
     
  20. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Может быть хотя бы вы, наконец, сможете мотивировать свои слова? Предыдущие ораторы кроме "капец" ничего внятного объяснить не сумели.
     
  21. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Нахер вообще мешать всё в одном методе?

    Зачем использовать for и $i?
    PHP:
    1. if ($fetch == 'col') {
    2.     $A = Array();
    3.     for ($i = 0; $i < $numRows; $i++) {
    4.         $r = $result->fetch_row();
    5.         $A[] = $r[0];
    6.     }
    7.     return $A;
    8. }
    когда можно:
    PHP:
    1. if ($fetch == 'col') {
    2.     $A = Array();
    3.     while($r = $result->fetch_row()) {
    4.         $A[] = $r[0];
    5.     }
    6.     return $A;
    7. }
    Нахер объявлять $numRows? Чем не нравится $result->num_rows?
    -------

    Нахера использовать сомнительные классы в своей CMS?
     
  22. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Удержите свой праведный гнев и общайтесь, пожалуйста, как взрослый человек.

    Всё не мешается в одном методе. Это метод разбора результата по формату и в нём мешается только то, что относится к разбору результата.

    Можно очень много чего. "for против while" это несомненно самое важное на что следует обращать внимание при разработке приложений. Всё остальное - чепуха.

    Всем подчинённым программистам за подобное я даю по шее.

    Чтобы не гонять $result->num_rows в цикле, если вас так интересует зачем объявлена переменная. Несомненно, это единственное что может равняться по важности с проблемой for-vs-while
     
  23. d1gi

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

    С нами с:
    24 май 2009
    Сообщения:
    326
    Симпатии:
    0
    можно вот в этом моменте по подробнее?
     
  24. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Есть много забавных конструкций.
    Код (Text):
    1. while (var = expression);
    2. mysql_query() or die();
    3. x = (i++) - ((++j)--)++;
    4. и ещё много хитров..х выщей
    Всех их несомненно нужно использовать на начальном этапе обучения программированию, это забавно и развивает мышление.
    Но в сложном проекте, над котором работают множество человек код должен быть понятным, путь и займет на несколько строчек больше.

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

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Весь рунет заполнен подобным кодом. Вы можете впаривать его начинающим говно-кодерам, которые не в состоянии написать, то-что нужно им, но увы не мне. Я видел более достойные аналогии, и не на основе библиотеки mysqli. И ваш стиль программирования меня очень напрягает.

    Насчёт быстро и медлительно, само использование подобного класса в проекте, уже означает, что можно сделать быстрее, не использовав его.

    Сори за гонор. Но уж простите