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

    +50

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    if(!$category = $this->EE->product_model->get_category_by_key($key)){
        $this->EE->functions->redirect($this->EE->functions->create_url($this->EE->config->item('site_404')));
        exit();
    }
    // Эти 4 строчки достают все продукт которые относятся к выбранной категории. Дальше веселее .. 
    
    // Build our variable data
    				$vars[0] = array(
    									'site_id' =>  $category[0]['site_id'],
    									'category_id' => $category[0]['category_id'],
    									'category_image' => $img,
    									'category_detail' => $category[0]['detail'],
    									'parent_id' =>  $category[0]['parent_id'],
    									'category_title' =>  $category[0]['title'],
    									'url_title' =>  $category[0]['url_title'],
    									'meta_title' =>  $category[0]['meta_title'],
    									'meta_keyword' =>  $category[0]['meta_keyword'],
    									'meta_descr' =>  $category[0]['meta_descr'],
    									'total_results' => count($category[0]["products"]),
    									'results' => $category[0]["products"],
    									'no_results' => array(),
    									'result_filter_set' => '', 
                                                                            'breadcrumb_parent_categories' => $breadcrumb_parent_categories,
                                                                            'catalog_guest_flag' => $flag_catalog,
                                                                            'catalog_price_visible' => $catalog_visible
    								);
    
    // Filter the results
    if(count($category[0]["products"]) != 0)
         $vars = $this->_filter_results($vars,$key,true);
    
    // А теперь count($vars['results']) == $this->EE->config->products_per_page;
    // И самое веселое - 
    
    foreach($vars[0]['results'] as $rst){
    				$tmp = $this->_get_product($rst["product_id"]);
    				$results[] = $tmp[0];
    			}
    			$vars[0]['results'] = $results;
    
    // Функция _get_product() получает все данные о продукте: отзывы, описание, цена, куча опций. Пара строчек оттуда:
    
                         if($product_id == ''){
    				// Get product by param or dynamically
    				$product_id = $this->EE->TMPL->fetch_param('product_id');
    				$url_title = $this->EE->TMPL->fetch_param('url_title');
    				if($product_id != ''){
    					$products = $this->EE->product_model->get_products($product_id);
    				}else{
    					// get by url key
    					$key = ($url_title == '') ? $this->EE->uri->segment(2) : $url_title;
    					if(!$products = $this->EE->product_model->get_product_by_key($key)){
    						 // Not a product page
    						 return false;
    					}
    				}
    			}else{
    				if(!$products = $this->EE->product_model->get_products($product_id)){
    					return false;
    				}
    			}
    
    // Очень интересен вызов функции get_products(), эта ф-ция вызывается и для продуктов в каталоге и на странице продукта.
    // Каждый вызов тянет за собой 25 запросов в базу, если на странице 40 продуктов * 25 = 1000 запросов = ~ 20 секунд на загрузку страницы

    кусочек кода который выводит продукты в каталог, взят из eCommerce плагина BrilliantRetail для ExpressionEngine. Плагин кстати говоря стоит 150 баксов, мда )

    Запостил: Archont12, 27 Октября 2012

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

    • Почему в портянках на PHP всегда такие дикие отступы? Читать же невозможно.
      Ответить
      • Я банально встречал ситуации, когда люди не знали, как убрать лишние отступы у блока (а не у одной линии), и просто не заморачивались их убирать, если они были добавлены случайно, т.как монотонная и не творческая работа.
        Ответить
      • Хорошо, когда они вообще есть.

        Статья в тему: http://steve-yegge.blogspot.com/2008/09/programmings-dirtiest-little-secret.html
        Ответить
        • Спасибо, статья замечательная ;)

          Догадайтесь, чем жертвуют не умеющие печатать вслепую? Всем, приятель. Они приносят в жертву всё.
          Ответить
          • >чем жертвуют не умеющие печатать вслепую? Всем, приятель.
            Почему?
            Ответить
            • А это цитата из статьи, а чуть выше было написано (относительно работы) - меньше текста в доках, меньше комментов, меньше переговоров по емейлам, а из-за этого качество лучше не станет.

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

              Почитайте статейку, автор интересно пишет.
              Ответить
              • > автор интересно пишет

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

                Кто-нибудь пробовал освоить Дворака? Оно того стоит? Судя по статье и отзывам в комментах - стоит, но хотелось бы услышать мнение русскоговорящих коллег :)
                Ответить
                • Тогда же придется переучиватся. В чем смысл менять на дворака? Так только хуже вслепую станешь печатать.
                  Ответить
                  • Меньше устают руки, лучше сбалансирована нагрузка на пальцы, чаще меняешь руки при печати, со временем скорость печати станет выше прежней.
                    Всем известен факт, что раскладка qwerty создавалась с целью не давать молоточкам сцепляться, а не с целью сделать удобную для людей раскладку.

                    Выучить новые позиции букв несложно, сложнее будет переучиваться работать с текстовыми редакторами (много аккордов в емаксе поменяется).

                    P.S. На самом деле, мне интересней скорее Colemak, но это не принципиально.
                    Ответить
                    • А ещё, если верить викижопии, "Русской версии раскладки не существует, потому что стандартная русская раскладка уже достаточно оптимизирована."
                      Ответить
                  • А основные проблемы альтернативных раскладок менее заметны по началу:
                    - у всех людей вокруг будет qwerty, за чужим компьютером нужно будет перестраиваться
                    - дома компьютером пользуюсь не я один, нужно дополнительное переключение раскладки, что совсем не айс
                    Ох уж эти вездесущие проблемы обратной совместимости...
                    *ушёл прокачивать слепую печать на qwerty*
                    Ответить
                    • кверти, дворак, колемак... это всё тлен
                      будущее - за Йцукен!
                      http://en.wikipedia.org/wiki/Keyboard_layout#JCUKEN_.28Latin.29
                      Ответить
                      • А ведь у раскладки Йцукен есть вполне разумное обоснование. В центре находятся клавиши, занимающие в коде Морзе один-два знака, чуть дальше от центра — трёхзначные, а на периферии — имеющие более длинные коды. Если вспомним, что Морзе выбирал длину кодовых последовательностей, исходя из частоты букв в естественных текстах, то придём к выводу, что Йцукен предназначена для прокачки указательных пальцев в первую очередь и средних — во вторую.
                        Ответить
                        • > А ведь у раскладки Йцукен есть вполне разумное обоснование.
                          На русском да (ну собственно она и используется), на инглише, имхо, не особо.

                          Скорее она сделана для людей, которые набирают по больше части на русском, и не хотят учить вторую раскладку.
                          Ответить
                          • С таблицей частот букв английского языка она неплохо коррелирует. В частности, самые распространённые буквы (E и T) в зоне доступности указательных пальцев. А следующие по частоте A и O вообще содержат выступы для быстрого поиска. Разве что H (в русском варианте Х) слишком далеко от центра, хотя в инглише встречается часто. И, может быть, ещё пара исключений ближе к концу списка.
                            Ответить
        • Что смешно, у меня был вобщем посткаунт на том же форуме больше за то время, когда я не печатал вслепую, чем после того, как научился. А до того, как работать программистом, я работал в газете и печатал двумя пaльцами.
          Конечно, спору нет, печатать вслепую гораздо лучше, но мне кажется, что факты несколько преувеличены.
          Ответить
    • Так форматируют только мудаки.
      Ответить
      • Плюсую. На ведрофоне замучился скроллить этот код.
        Ответить

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