Писал импорт каталога для одного сайта. Начал тестировать и удивился сильным тормозам: скорость примерно в 1 элемент инфоблока в секунду. Начал было думать, что хостинг никудышный, но нет. При ковырянии кода напоролся на такое вот "замечательное" решение из маркетплейса, именуемое "Список 2.0". http://marketplace.1c-bitrix.ru/solut...ipol.auen/ Убивает обмен моментально ))
Сортировка вариантов списка происходит на КАЖДУЮ установку значения элемента инфоблока. В результате этого "гениального" решения, при N вариантах значений списка и M товаров, количество запросов на обновление одного такого свойства у всех товаров будет не M, а M*N! Точнее даже не M*N, а M*N*2, т.к. еще есть дополнительный запрос сброса кэша по тэгу. А если таких свойств несколько (у клиента их было с десяток), то будет полный бздец. В общем, ребята, не надо так делать. При разработке свойств учитывайте, что есть не только интерфейсная часть свойства в админке, но и разного рода взаимодействия через API. Всем доброго утра понедельника
некогда давненько писал всем тут известному автору о говнокоде в его модуле...получил имя "кулхацкера" xD и был послан далеко и надолго...теперь буду, пожалуй тоже публично это делать.
Только я этот модуль не внедрял, я его удалил. Плохой внедренец - это хороший удаленец))
вспомнил анекдот про то, что у хорошего мастера после ремонта постоянно остается куча лишних деталей
Антон Пилецкий , просто будьте человеком, а не удаленцем.
теперь буду, пожалуй тоже публично это делать.
вот видите, что вы натворили? ))))
Когда то (вроде пару лет назад, если не больше) я писал пост о том, что стоит ввести слово "говнокод" и первые позиции поисковика начинались со страниц блогов веб-разработчиков Битрикс. Пора возрождать традиции?
Только у меня есть просьба ко всем коллегам Помните: Хорошее сообщество - это не то сообщество, в котором все только и ждут повода, чтобы опустить другого в какашки. Хорошее сообщество, это сообщество в котором можно получить поддержку в самореализации, а не в порицании и окунании в какашки других. И уж тем более не существовать ради цели выискивания фекалий и выноса их наружу, если конечно это и не есть та самая и заветная цель самореализации, ради которой человек приходит в сообщество.
Антон Пилецкий , извините, что нафлудил у вас немного в посте. Но если бы вы просто 1. указали на ошибки 2. привели пример того КАК ПРАВИЛЬНО надо было сделать или попроавить, а не просто тупо удалять решение 3. не указывали ссылок на решение и на авторов решения и не клеймили бы создавая бы антипиар, кстати, авторы имеют полное право использовать данный пос в качестве доказательств на суде в обвинении в антирекламе. Пост на 100% готов для этого.
Все было бы полезнее и веселее А так: мне кажется что тут народ больше пришел почитать и позабавиться, чем опыту набраться
Коваленко Алексей написал: авторы имеют полное право использовать данный пос в качестве доказательств на суде в обвинении в антирекламе. Пост на 100% готов для этого.
А что за статья такая про антирекламу? Можно конкретную ссылку на законодательство? Знаю такую статью - про публичную клевету. Такая есть. Но "клевета" - означает, что это враньё. А тут правда написана.
Цупко Игорь написал: Но "клевета" - означает, что это враньё. А тут правда написана.
Правдой по закону считается только то, что доказано в суд. Это базовый принцип презумпции невиновности.
Коваленко Алексей написал: Хорошее сообщество - это не то сообщество, в котором все только и ждут повода, чтобы опустить другого в какашки.
Вот точно. Взаимовыручки и взаимопомощи - явн недостает в сообществе.
К тому же любую критику можно написать безэмоционально - тогда и критика будет выглядеть убедительно и весомо, и авторы решения примут ее конструктивно. Можно было написать просто "данное решение существенно замедляет импорт данных в битрикс из-за того-то и того-то". И все. А тут: "гении маркетплейса" - столько обидного сарказма, предполагающего, что и другие решения данных авторов - плохие.
Это, конечно, хорошо бы. И всё же вы хотите, чтобы все были добренькие и хорошенькие по вашему разумению.
Обидный сарказм - это хороший мотивирующий фактор. Ошибки - обидны! Но дело же не в ошибках, а в общем стремлении к лучшему коду и ликвидации косяков. Нашли ошибку - поругались, согласились что так не надо делать, посмеялись, обнялись и живём дальше.
Такое впечатление, что это не блог разработчиков. Мне, блин, как-то стыдно становится, когда я вижу некоторые исходники Битрикса, когда вижу код решений, подобный примеру этой заметки. Прокодстайляужевообщемолчу... И битриксоиды потом ещё удивляются: «а что это на нас программисты на %название_ресурса% ополчились, у нас же всё прекрасно!»
Это самая лучшая мотивация. И я хочу, что бы мой код так же публично ругали на девелоперских ресурсах, ибо нефиг.
P. S. Без обид, просто досадно такое видеть. Всем добра.
Это, конечно, хорошо бы. И всё же вы хотите, чтобы все были добренькие и хорошенькие по вашему разумению.
Игорь Цупко вот вам алгоритм,описанный одним из программистов:
Я не стал дожидаться их ответа. И не уверен, что они ответят. Да, может это и неэтично, и всё такое. Но мне, честно, фиолетово.
волшебным является последнее предложение. Все остальное - излишняя нагрузка на сервер и работать такая программа будет всегда с одним и тем же результатом Вот это и есть говнокод.
Никита Самохвалов речь то не о том, что пишется, а о том - как подается, в каком контексте, с какими обращениями и как клеймится. всего то и делов. Не думаю, что среди нас много людей и компаний, которые пришли сюда ради того, чтобы их обосрали. А вот желащих обосрать почему то с каждым годом все больше и больше.
хотя нет. какать тоже надо, ведь от этого организьм отчищается
Цупко Игорь написал: По теме: правку-то авторы внесли?
Дмитрий Покровский (разработчик) 16.03.2015
Антон Пилецкий, спасибо за отзыв. В ближайшем обновлении оптимизируем работу модуля. Если в настройках свойства не включать сортировку, то проблем с производительностью нет. А так же если вариантов списка не много, то проблем мы так же не наблюдали.
Как-то так. Среагировали достаточно быстро - плюс в карму. Но когда исправят - неизвестно.
Самохвалов Никита написал: Мне, блин, как-то стыдно становится, когда я вижу некоторые исходники Битрикса, когда вижу код решений, подобный примеру этой заметки. Прокодстайляужевообщемолчу...
Да нормальные исходники. Читабельные. К этому можно относиться лояльно (поматерился про себя и работаешь дальше). Зачем заниматься кододрочерством? Но вот когда явные ошибки в логике в N раз тормозящие все процессы, тут терпеть я не могу.
К обсуждению приглашается Дмитрий Покровский - разработчик данного решения. Дмитрий, хотелось бы получить тут ваш комментарий. От вас зависит - перейдет ли этот негатив в положительное для вас русло или нет.
Коваленко Алексей написал: Антон Пилецкий , просто будьте человеком, а не удаленцем.
Я — робот!
Коваленко Алексей написал: Хорошее сообщество - это не то сообщество, в котором все только и ждут повода, чтобы опустить другого в какашки.
Не хотел опускать в какаши. Хотел дать дружеского пенделя
Коваленко Алексей написал: Хорошее сообщество, это сообщество в котором можно получить поддержку в самореализации, а не в порицании и окунании в какашки других.
Периодически занимаюсь этим (поддержкой, а не окунанием)) на форуме разработчиков.
Коваленко Алексей написал: 2. привели пример того КАК ПРАВИЛЬНО надо было сделать или попроавить, а не просто тупо удалять решение
Правильно - сортировать только при добавлении варианта значения списка, один раз.
Коваленко Алексей написал: 3. не указывали ссылок на решение и на авторов решения и не клеймили бы создавая бы антипиар, кстати, авторы имеют полное право использовать данный пос в качестве доказательств на суде в обвинении в антирекламе. Пост на 100% готов для этого.
Антипиар - тоже пиар (сюрприз!). Авторы решения его могут вполне использовать на выгоду себе, если грамотно к этому подойдут. Ну и исправят свое решение, конечно же.
Коваленко Алексей написал: мне кажется что тут народ больше пришел почитать и позабавиться, чем опыту набраться
Пилецкий Антон написал: Не хотел опускать в какаши. Хотел дать дружеского пенделя
Слово "дружеский" тут не уместно. Злой вы - это все что я могу сказать о вас лично. Такое чувство, что вы очень счастливы, что нашли соринку в чудом глазу.
Ошибки бывают у всех, всегда и они бывают разные - это факт. Кто-то может со мной не согласиться, но я лично если вижу косяк, пишу сначала авторам (часто даже скидываю предложения по решению), а дальше в зависимости от реакции. Если разработчик адекватный, а косяк исправляется быстро, то я не вижу смысла раздувать подобные вещи. Если разработчик не адекватный или не следит за своими решениями, тогда возможно есть смысл выносить ситуацию на общественное порицание.
С одним из модулей в маркетплейсе я бился 3 месяца - модуль был явно дороже и рушил пол сайта. Дошло даже до фраз типа "за какие то 5.000 рублей потраченные на модуль, мы должны еще вам сделать диагностику сайта - может быть проблема у вас на сервере, будите нас дальше доканывать, мы вообще вам весь сайт порушим" - благо закончилось все адекватно и спустя 10 обновлений модуль заработал корректно. Но даже в этом случае я не вижу смысла тут тыкать в кого-то ссылками.
P.s. Антону конечно фиолетово, но если другим участникам беседы это интересно, я ответил на комментарий под модулем в течение часа и всегда придерживаюсь такого правила. ----------------
Теперь пару слов про собственно суть статьи/кода/ошибки (опять же если есть люди, которым интересно вникнуть в корень беседы):
1. Если у вас свойство синхронизируется с 1С, то нет смысла ставить кастомный тип свойства. Если свойство кастомное и не синхронизируется с 1С, то не должна вызываться функция на изменение данного свойства и следовательно не должно возникать проблемы.
По крайней идея была такая - я могу ошибаться и по какой-то причине функция на изменение значения свойства теоретически может вызываться битриксом даже когда менять нечего - этот момент мы не протестировали, тут наше упущение, признаю.
2. Задача с авто-сортировкой вариантов списка не совсем простая - я помню, что мы переставляли эту сортировку несколько раз в разные места, пока не добились варианта когда она наконец начала сортировать. Ибо логика вызова Битриксом функций связанных со свойствами в этом месте оказалась далеко не прозрачной.
3. Вместо того, чтобы удалять модуль, можно было отключить сортировку - в настройках модуля есть такая опция (ну это как вариант).
4. Так же согласен, что с нашей стороны можно было подумать получше и сделать более оптимизированную логику работы. Естественно этим мы и займемся в ближайшее время и исправим проблему.
и хотел бы сказать что у хороших разработчиков гавно кода не бывает, почему спросите вы??? А потому что они тестируют решение, покрывают его тестами, и делают нагрузочные тесты. А все кто чик чик...и в продакшн - не хорошие разработчики и в маркетплейсе гавнокод был есть и будет.
Микулич Евгений, к сожалению, сложилась такая практика, что если вы покроете модуль юнит-тестами, сделаете нагрузочные тесты и т.д., то в условиях конкуренции в битриксовском маркетплейсе и цен которые там ставят модуль скорее всего не окупится.
Естественно в сложных проектах, где есть бюджеты на тестирование, это тестирование мы выполняем разными способами и сокращаем количество ошибок до минимума. И не для кого не секрет, что модули висящие в маркетплейсе тестируются плохо. К сожалению я не знаю что с этим можно поделать. На конференции разработчиков Битрикс было предложение от Долганина собраться всем вместе и поднять все цены на решения в несколько раз. И тогда уже можно будет заслуженно предъявлять претензии разработчикам, которые за адекватную цену в которую мы договорились включить тестирование это тестирование не провели.
Покровский Дмитрий написал: Злой вы - это все что я могу сказать о вас лично.
Не буду отрицать.
Покровский Дмитрий написал: 1. Если у вас свойство синхронизируется с 1С, то нет смысла ставить кастомный тип свойства.
Каталог заполняется частично руками, частично через импорт из CSV. Я занимался импортом из CSV.
Покровский Дмитрий написал: 2. Задача с авто-сортировкой вариантов списка не совсем простая - я помню, что мы переставляли эту сортировку несколько раз в разные места, пока не добились варианта когда она наконец начала сортировать. Ибо логика вызова Битриксом функций связанных со свойствами в этом месте оказалась далеко не прозрачной.
Микулич Евгений написал: А потому что они тестируют решение, покрывают его тестами, и делают нагрузочные тесты.
Как уже сказал Дмитрий, проводить полноценное тестирование накладно для небольшой развивающейся студии или отдельному разработчику. Можно несколько лет не вылезать из отладки, так и не выпустив продукт на рынок. А вот погонять своё решение на нескольких более-менее живых сайтах - это очень желательно.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».