Писал импорт каталога для одного сайта. Начал тестировать и удивился сильным тормозам: скорость примерно в 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. Задача с авто-сортировкой вариантов списка не совсем простая - я помню, что мы переставляли эту сортировку несколько раз в разные места, пока не добились варианта когда она наконец начала сортировать. Ибо логика вызова Битриксом функций связанных со свойствами в этом месте оказалась далеко не прозрачной.
Микулич Евгений написал: А потому что они тестируют решение, покрывают его тестами, и делают нагрузочные тесты.
Как уже сказал Дмитрий, проводить полноценное тестирование накладно для небольшой развивающейся студии или отдельному разработчику. Можно несколько лет не вылезать из отладки, так и не выпустив продукт на рынок. А вот погонять своё решение на нескольких более-менее живых сайтах - это очень желательно.
Покровский Дмитрий, зачем оправдываться я не понимаю. Если специфика рынка говорит вам - "Вы либо делаете гавнокод но продаёте, либо не делает гавнокод и в убытке" - и вы сознательно выбираете первое - к чему оправдываться? Передо мной? обществом? вендором? Зачем - делайте своё дело - вы же уже выбрали.
Покровский Дмитрий, Если вам станет легче - у меня на маркетплейсе есть тоже модули и там тоже есть гавнокод))) А есть решения, которые я не пропускаю без насильной проверки и теста. Как пример один импорт БД с удалйнного сервера со своей спецификой работы, я потратил в 2 раза больше времени на разработки, человек заплатил больше, зато уже пол года ни проблем ни ошибок и расширяемость проста...А маркетплейс - там есть и хорошие решения и есть плохие. Каждый сам выбирает что он будет делать))))
Пилецкий Антон написал: Как уже сказал Дмитрий, проводить полноценное тестирование накладно для небольшой развивающейся студии или отдельному разработчику. Можно несколько лет не вылезать из отладки,
Есть BDD и TDD. Такой способ есть разработки. Пишется функционал вместе с тестами, а не сначала весь функционал а потом кучу тестов писать, да и к тому же юнит тесты не всегда нужны особенно в сфере модулей, больше скорее функциональные тесты
Бедросова Юлия, "... Правдой по закону считается только то, что доказано в суд. Это базовый принцип презумпции невиновности. ..." Презумпция невиновности действует в уголовном праве, в гражданском — все по-умолчанию виновны. И то, что ты не "верблюд" приходится доказывать именно ответчику. Так, что все – что сказано все правда, пока не доказано обратное. А если доказано обратное – это повод обозвать "верблюдом" в ответ. Сорри. Офтоп
Иванов Иван написал: в гражданском — все по-умолчанию виновны. И то, что ты не "верблюд" приходится доказывать именно ответчику
В суде — да. А в социуме и в том числе на форумах и блогах подобных этому, презумпция виновности или невиновности — на личный выбор человека. Если человек все принимает на свой счет и считает, что нужно оправдываться перед каждым воинствующим троллем неудачником и завистником — это его выбор. Если не считает нужным этой ерундой заниматься и верит в то, что подавляющее большинство пользователей умные и адекватные люди, которые разберутся кто старается пользу обществу приносить, а кто "бедный зато не ворую" мутит воду на ровном месте, умничает и повышает ЧСВ на критике более успешных товарищей — это тоже его выбор.
kopoBko написал: т.е. по вашему пост об ошибке это проявление неадекватности
Я думаю, пост об ошибке может быть как адекватным, так и неадекватным. Когда упомянутые выше itconstruct делают в своем блоге обзоры готовых решений, они делают это адекватно, грамотно и корректно, что только добавляет им чести. Когда же кто-то ругает решение и его разработчиков излишне эмоционально, на мой взгляд, он лишь делает негативный пиар себе и себя же унижает. А чтобы видеть разницу между адекватным и неадекватным обзором решения - нужно, наверное, просто повзрослеть - подрасти морально и эмоционально.
Я физфак закончил. Мы привыкли мыслить физическими величинами. Может потому и не понимаю юмора Но так врезалось в память изречение одного из "лириков" в одном из толчков нашего ВУЗа
Писать на стенах туалетов увы, мой друг, не мудрено. Среди говна мы все поэты. Среди поэтов мы - ...
Коваленко Алексей, а, представьте, ТС стоило лишь перефразировать свой отзыв, написав, что-то вроде: "Ребята, обратите внимание - при импорте каталога из различных источников ваше решение существенно замедляет этот процесс. При N вариантов значений...". И его бы зауважали, а сейчас я, например, зауважала Дмитрия Покровского - ему удалось сохранить достоинство и выдержку в такой некрасивой ситуации, думаю, такого адекватного человека ждет успех, а что до багов - и на солнце бывают пятна.
Юлия Бедросова, +100500 ! Можно же без иронии, без сарказма, а нормально по человечески указать автору на ошибку. Не ошибается только тот, кто ничего не делает. Спутники и те падают... Все тут люди, Богов нет. Мы же наблюдаем такой тренд — целенаправленного выискивания "косяков" чтобы тут плясать с ними публично...
Забродин Роман написал: целенаправленного выискивания "косяков"
Я не искал косяки целенаправленно. Как я уже написал выше, я лишь разгребал говно на сайте вот этого гневного человека http://dev.1c-bitrix.ru/community/for...age369786/ И это говно натворили "добрые и адекватные" разработчики. Баг в рассматриваемом модуле - это лишь малая часть в зловонной куче. Я захотел изменить взгляд этого конкретного человека на продукт под названием "1С-Битрикс". И знаете, я думаю, что мне это удалось. В результате этот человек будет работать с Битриксом и посоветует уже посоветовал использовать данный продукт другим своим знакомым предпринимателям. А это уже мои (и ваши) потенциальные клиенты.
Пилецкий Антон, вы сделали благое дело и вы молодец! (говорю это серьезно, без иронии) Но, зачем нужно было потом транслировать гнев этого человека возникший в следствии его собственных странных ожиданий, как например:
"коробочного решения" -- которое, как известно, рассчитано на ламеров
на других разработчиков и авторов??? Мы так например, всех наших покупателей сразу честно предупреждаем, что им обязательно потребуется грамотный специалист для внедрения и дальнейшего администрирования сайта. И даже завели свой реестр таких опытных и ответственных партнеров. А то, что "CMS 1С-Битрикс с Типовым решением может управлять любая домохозяйка" — это люди видимо сами додумывают, не понятно вообще на чем основываясь, и соответственно очень сильно переоценивая свои силы... У нас в компании даже стажеры уже имеющие высшее техническое образование сначала целый месяц проходят и сдают все он-лайн курсы 1С-Битрикс и только потом мы допускаем их к администрированию (даже не программированию) клиентских сайтов. На наш взгляд, предприниматели, которые сразу с наскока пытаются все установить и настроить самостоятельно — поступают по меньшей мере, самонадеянно...
Забродин Роман, а мне кажется, Антон Пилецкий не погасил гнев клиента, а просто перенаправил его гнев на разработчиков модуля, которые, если разобраться - вообще не при чем: как выяснилось в ходе обсуждения, замедляющая процесс импорта фича модуля была опциональна и отключалась галочкой, чего Антон Пилецкий не разглядел, ковыряя в два часа ночи код модуля, а разглядеть был должен так как клиент обратился к его услугам именно за тем, чтобы Антон разобрался в работе установленных на сайте решений.
Вот если бы Антон нашел галочку, разобрался, для чего она и ткнул в нее клиента, показав, что не Битрикс плохой и не решение плохое, а в настройках нужно разбираться и руководства читать, вот тогда он был бы молодец.
Вообще, я думаю, что всплывший факт, о том, что автосортировка значений Списка 2.0 была опциональна - это серьезный повод для того, чтобы Антон Пилецкий принес разработчикам решения публичные извинения. Однако на такой шаг способны только зрелые личности.
Без поиска этой галочки я и по двум указанным строчкам кода видел, что есть возможность отключить сортировку. Но решение уже себя скомпрометировало. Ковыряться в нем, выискивая другие баги, которые потенциально могут положить обмен, я не стал. На добровольческих началах делать работу за тех, кто за это получил деньги у меня нет желания. Модуль ждет обновления.
Бедросова Юлия написал: Вообще, я думаю, что всплывший факт, о том, что автосортировка значений Списка 2.0 была опциональна - это серьезный повод для того, чтобы Антон Пилецкий принес разработчикам решения публичные извинения. Однако на такой шаг способны только зрелые личности.
А я считаю, что даже если фича опциональна и отключается простой галочкой, то она ни в коем разе не должна сказываться отрицательным образом на работе сайта. Можете считать меня незрелой личностью, ваше право.
Забродин Роман написал: гнев этого человека возникший в следствии его собственных странных ожиданий
У меня такое подозрение, что человеку попросту впарили коробочное решение, не объяснив толком что к чему. Отсюда и возникли эти странные ожидания. Кстати разработчик этого коробочного решения уже канул в лету и передает привет из Шри-Ланки! Называть его не буду, а то опять скажете, что я злой и несправедливый))
Лично я бы Антону спасибо сказал, если бы он в моем модуле нашел подобный изъян, без разницы, где об этом написали, в блоге, в отзывах или лично, т.к. это + к качеству моего продукта, экономия моего времени, ну и опыт другого разработчика будет полезен каждому. Все правильно подмечено, кто-то пишет модуль, тестирует его как надо, заботится о его качестве, а кто-то пишет ..овно ради наживы, впарить и забить на человека с его проблемами, а это очень-очень неуважительно к клиенту и просто некрасиво. Мне если пишут о баге в модуле, я открываю PHPStorm, ищу и исправляю ошибку и искренне благодарю человека за сообщение об ошибке и помощь, накасячил, исправляю за свой счет, очень полезно, мотивирует, а не хочешь исправлять, вот и получай...
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».