Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Прожектор Бритни Спирс

  • записи
    54
  • коментарів
    625
  • переглядів
    34 718

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


Yoda

2 679 переглядів

Многие участники коммьюнити знают, что я занимаюсь нагруженными проектами и собаку съел на поиске узких бутылочных горлышек. И opencartforum в том числе работает благодаря моему участию, так что поводов усомниться в моих высказываниях, особо не должно ни у кого возникнуть!


Почему именно проектами а не проблемами движка opencart, потому что в самом движке все понятно и просто, а в проектах бывает все очень весело.

 

90% тормозов магазинов связано с разработчиками и слабой экспертизой разработчиков и программистов.

 

Почему то в определенных узких кругах считается моветоном обсуждать косяки друг друга,и не дай боже сказать, Вася, ты дурак, ты своротил полный бред!
Мне всю жизнь было побоку на чье-то субъективное мнение, и истина мне дороже чем чье-то псевдопозитивное отношение, поэтому в этих "узких кружках" разработчиков регулярно бомбит в мою сторону, когда кого-то из них мы выводим на чистую воду,  но как говорили в КВН нас "много".

 

Просто приведу вам пример из последних двух инцидентов с которыми мне пришлось столкнуться:


История первая.


Магазин на 10 000 товаров, все от души заполнено, все атрибуты, опциии, описания, все хорошо.
Стоит фильтр от госоподина @SooR, который в целом в свежих версиях в том числе и моими молитвами, достаточно быстро работает, но нет!

4 секунду генерация без сфомированных кешей на выделенном сервер с 16 ядрами и вагоном оперативной памяти.

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

Путем нехитрых манипуляций обнаруживаем очень смешной код:

 $q = "SELECT slide_value_min,
                            slide_value_max,
                            option_id
                     FROM " . DB_PREFIX . "ocfilter_option_value_to_product
                     WHERE option_id IN (" . implode(',', $slider_options_id) . ") AND slide_value_min > '0'";

                $query = $this->db->query($q);
                if ($query->num_rows) {
                    $slide_data = array();

                    foreach ($query->rows as $row) {
                        $slide_data[$row['option_id']]['min'][] = $row['slide_value_min'];
                        $slide_data[$row['option_id']]['max'][] = $row['slide_value_max'];
                    }

                    foreach ($query->rows as $row) {
                        $options_data[$row['option_id']]['slide_value_min'] = preg_replace('!(0+?$)|(\.0+?$)!', '', min($slide_data[$row['option_id']]['min']));
                        $options_data[$row['option_id']]['slide_value_max'] = preg_replace('!(0+?$)|(\.0+?$)!', '', max(array_merge($slide_data[$row['option_id']]['max'], $slide_data[$row['option_id']]['min'])));
                    }
                }

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

preg_replace('!(0+?$)|(\.0+?$)!', '', max(array_merge($slide_data[$row['option_id']]['max'], $slide_data[$row['option_id']]['min'])));

4000 итерация регулярки + объединения массива + нахождение max значения. Это даже не индусский код - это ДНО...

Сидит человек на зарплате, пилит проект, накрутил его так , что кроме него там никто не разберется, чтобы не дай бог его не уволили, и пишет ДНОООООООО!!!!

Это не код, это 80 левел ДНА. Пятиклассники на информатике такого не делают.

 

Ок, исправляем, немного костыльно, быстро, за красоту не платят, делаем так:

 

$q = "SELECT MIN(slide_value_min) as slide_value_min, MAX(slide_value_min) as max_slide_value_min, MAX(slide_value_max) as slide_value_max, MIN(slide_value_max) as min_slide_value_max, option_id  FROM " . DB_PREFIX . "ocfilter_option_value_to_product WHERE option_id IN (" . implode(',', $slider_options_id) . ") AND slide_value_min > '0' GROUP BY option_id";       $query = $this->db->query($q);        if ($query->num_rows) {                     $slide_data = array();       foreach ($query->rows as $row) {                        $options_data[$row['option_id']]['slide_value_min'] = (int)$row['slide_value_min'];                if($row['max_slide_value_min'] >  $row['slide_value_max']) {         $options_data[$row['option_id']]['slide_value_max'] = (int)$row['max_slide_value_min'];        } else {         $options_data[$row['option_id']]['slide_value_max'] = (int)$row['slide_value_max'];        }                       }

Просто одним запросом получаем и min и max и это не 4 секунды, а где-то 50-70 мс..
Все работает. В ответ слышим.. Ну ты решил затык с тормозами, спасибо. Дальше мы сами разеберемся. Увещевания о том, что дядя, там же патчи безопасности, обновления алгоритмов, верни все в базу.. Бесполезно!!
Я еще и плохой оказался, так как намекнул владельцам, что вас дрючат и парень вас на себя завязал надолго и всеръез!

Все таки надо совесть иметь и думать что, тебя собъет машина, а кто-то должен после тебя твой код починить.
Вот это понимание отсутсвует у 99% напрочь.

 

Второй кейс.

Приходит человек с жалобами тупит поиск, ок ставим ему sphinx, и получаем все равно те же 4 секунды ответа...

Идеально быстрый магазин. Главная страница без глобального кеша 130мс, страница категорий 300-400мс, поиск 4000.
Медленных запросов - нет! Выборка из сфинкса - порядка 20-30мс.

Но тупит.... Ок ок.. Начинаем копать и видим странное дно...

SEO CMS PAGES ver.1.1 
Отключаем... И вииииииииииииииууууу... 350 мс генерация страницы..

 

Я ни  в коем случае не буду писать автору, и гооврить что у него там проблемы, ему писано переписано и про его дыры и про его ночной код. У него звезда во лбу и это бесполезно,
Я просто удалю эту чушь! И мы получим ооооооооооооочень быстрый магазин.
И эти люди еще лезут в оптимизацию и ускорению, делают какие-то модули для оптимизации, когда другие их наработки делают +4 секунды на голом месте.
Серьезно?

 

Морали никакой. - Просто если у вас тупит поиск - отключайте это дно а лушче вообще не пользоваться разработками этого автора.

 

ЭТО МОЕ ЛИЧНОЕ МНЕНИЕ 


Но очень много частных случаев с модулями этого автора. А на площадке это все как продавалось так и продается.
Уважаемая администрация, вам не стыдно, что  у вас в каталоге дополнений продается откровенный шлак а вы закрываете на это глаза? Это же не первый не второй раз?
Сколько можно класть на пользователей дополнений?


Ваше мнение уважаемая администрация, может не совпадать с моим, но у меня есть пруфы, если вдруг у вас возникнут сомнения в правдивости моих тезисов!

 

  • +1 11

7 коментарів


Recommended Comments

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

Г...нокодеров тоже на любой платформе хватает. С этим тоже нет организационных способов бороться.

А с возмущением полностью согласен.

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

Змінено користувачем EVMedvedev
  • +1 1
Надіслати
В 07.10.2019 в 18:31, EVMedvedev сказал:

Г...нокодеров тоже на любой платформе хватает. С этим тоже нет организационных способов бороться.

Насчет организационных методов. Вот пример для тех кто возможно когда то пробивал выложить свой модуль для друпала. Там нужной пройти 7 кругов ада что бы его опубликовали. 

Надіслати
В 12.10.2019 в 11:03, konorws сказал:

... для тех кто, возможно, когда-то пробовал выложить свой модуль для Друпала. Там нужно пройти 7 кругов ада, чтобы его опубликовали. 

Видела я этот Друпал - он сам как 7 кругов ада! :)
Чтобы вывести на сайте еще один столбец в таблице нужно таким раком встать... все там через некие "вьюшки" делается. 
И если ты изначально эту самую "вьюшку" не писал, то разобраться в том, что там есть очень долго, нудно и печально получается.
Так что... не дай Бог никакого Друпала работе по поддержке сайтов... ;) 

Надіслати

Добрый день, подскажите ,пожалуйста что значит "ночной код"???

Спасибо за статью, навела на глубокие мысли на счет администраторов и программеров

Надіслати
15 минут назад, buslikdrev сказал:

Например, когда пьяный программист программирует.

Я думал речь идет о коде, который выполняет некий плохой функционал "майнит биткоины"))))))

Надіслати

Это почему-то именно проблема опенкарта и именно русского сообщества (имхо конечно). Вордпресс тоже на пыхе, но там такой дичи нет.

Надіслати

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.