Jump to content
  • entries
    12
  • comments
    59
  • views
    2,299

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

Yoda

830 views

Многие участники коммьюнити знают, что я занимаюсь нагруженными проектами и собаку съел на поиске узких бутылочных горлышек. И 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 9


2 Comments


Recommended Comments

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

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

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

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

Edited by EVMedvedev

Share this comment


Link to comment
В 07.10.2019 в 18:31, EVMedvedev сказал:

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

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

Share this comment


Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.