Fi1osof 26 октября 2013 4 15
Пишу чисто свое ИМХО. Тем не менее зная, что здесь есть довольно опытные уже MODX-программисты (именно программисты, а не расставлятели MODX-тегов), предлагаю обсудить «творение» небезызвестного безумкина, тем более что он вот опять похвастался своей неповторимой разработкой, но вот почему-то на диалог не идет никак… В твиттере тоже не отвечает. Думаете просто считаете выше своего достоинства вступать в споры? Нет, ни в коем случае. С теми, кому он может сказать «ты тупой и ничего не понимаешь, иди отсюда» — это он всегда запросто. И со мной он по началу так пытался разговаривать, когда я ему начал говорить, что у него минусов полно в его разработках. Но после пары предметных споров, как вот здесь, к примеру: community.modx-cms.ru/blog/addons/9892.html, он что-то совсем перестал в диалог вступать. Видимо, совсем не любит чувствовать себя не умнее всех.

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

Вы меня спросите почему я так взъелся? Я скажу: он наносит вред сообществу. Вместо того, чтобы направлять молодых учить сам MODX, он их направляет учить свой аналог, который как я и утверждаю, очень далек от совершенства.

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

Мой ответ с хабра.
И вот опять вот эта ахинея… «Мое прелестное дополнение»…

Это не просто твое прелестное дополнение. Это самое великое из того, что ты сделал — самый великий блеф! Тебе по прежнему удается простачков дурачить тем, что ты офигенный компонент написал и много-много его дорабатываешь. И многие верят (не хватает же мозгов проверить). И главное — сколько уже ты на него из СимплДрима денег вытянул? :-) Ведь тебе оплачивается твое рабочее время.

Ну чтож, давай разберем, что это у тебя за чудо такое неведомое разработано.

Итак, по началу это вообще выдавалось как «альтернатива xPDO». Одна из ссылок: it-folio.ru/forum/index.php?topic=663.0
ШТОА?? Была моя реакция. Какое нафиг без xPDO? Лезем в код: github.com/bezumkin/pdoTools/blob/master/core/components/pdotools/model/pdotools/pdofetch.class.php#L9
И что там видим?
protected $query;

И там еще не мало xPDO по всему компоненту.

В общем, это никакая не замена xPDO (хорошо хоть давно уже перестал это говорить, понял, что ляпнул не подумавши). Это простой синтаксический сахар, при чем не просто сомнительный, а конкретно ничего под собой не имеющий. Сейчас поясню.

Следите за руками, что нам предлагается: чтобы у вас все быстрее работало, ставьте мою чудо-тулзу, и у вас все будет супер-быстро работать!
Так ли это? Лично меня никак не может убедить в этом тот факт, что вместо того, чтобы просто выполнять $modx->newQuery(), мне надо сделать:
Библиотека подключается через modX::getService() вот так:
// Если нам нужны только основные функции
$pdo = $modx->getService('pdoTools');
// Если нам нужна работа с БД
$pdo = $modx->getService('pdoFetch');

При этом это не 10 строчек. Это 835 строк здесь: github.com/bezumkin/pdoTools/blob/master/core/components/pdotools/model/pdotools/pdotools.class.php
и 940 строчек здесь: github.com/bezumkin/pdoTools/blob/master/core/components/pdotools/model/pdotools/pdofetch.class.php
Но может оно того стоит? Может там что-то есть то, чего нет в ядре? Ведь вон сколько функций сразу выполняется: github.com/bezumkin/pdoTools/blob/master/core/components/pdotools/model/pdotools/pdofetch.class.php#L61
И это при том, что весь класс xPDOQuery в ядре — 885 строчек: github.com/modxcms/revolution/blob/develop/core/xpdo/om/xpdoquery.class.php

Нет, не похоже. Новый запрос создать я и без этого могу. $q = $modx->newQquery($className); Колонки указать извлекаемые? Не вопрос — $q->select(array(
'col1', 'col2', 'col3 as col 4',
));
Таблицу приджоинить? Да хоть $q->leftJoin(), хоть $q->innerJoin(). Как мне будет угодно. Условия добавить??? Так оно всегда там было. $q->where($cond);
К слову, а в pdoTools условия появились совсем недавно: bezumkin.ru/sections/components/1931/
Вася, ну ты уже сразу расскажи, о чем умолчал, чего еще не хватает? Там же много еще минусов есть, а? Может ты все-таки расскажешь, что pdoTools не проверяют права доступов, к примеру?

И вот теперь главное — а нафига все это изучать, когда можно изучать едро? Нафига вот так вот переписывать всю систему?
Я вот знаю. Потому что xPDO имеет фатальный недостаток ( lurkmore.to/%D0%A4%D0%B0%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D0%BA ) — его писал не Вася.

А еще у него 100500 изменений в компонентах, и не забывайте у себя все по гиту сводить…

Ну быть может у него действительно с производительностью все классно, а? Ведь пишет: >> Как вам вывод 2012 страниц сайта за полсекунды?
Ну давай сравним твое творение с вот этим небольшим кодом:
$q = $modx->newQuery('modResource');
$q->select(array(
 «id», 
 «uri», 
 «pagetitle», 
 «content», 
));
$q->limit(2012);
$s = $q->prepare();
$s->execute();
$i = 1;
while($row = $s->fetch(PDO::FETCH_ASSOC)){
 $str = "$i"; 
 $str .= "{$row['pagetitle']}";
 print $str;
 $i++;
}

Тоже 2012 документов.
0,0165 сек. awesomescreenshot.com/0a01vmb228
При этом 7 мегабайт, а не 18 как у тебя.

А быть может ты скажешь, что я не умею программировать и наговариваю на тебя? Ну как бы готов поспорить…
А вот начальство твое в СимплДрим не умеют программировать, поэтому у тебя и получается им ездить по ушам. Поэтому они тебе и платят по прежнему деньги за твои «чудо разработки» :-)

Но не это плохо. Плохо, что ты начинающих программистов не по тому пути направляешь. Нет, чтобы лучше ядро изучать и их направлять на это, ты им pdoTools свои суешь. В итоге ни ты, ни они самого ядра не знают. Могу легко по каждому твоему дополнению проехаться. А что ты там про контексты в своем гибридаусе нес, так я вообще ржал. Только ты ничего не ответил. А жаль…
15 комментариев
A
Anton 18 декабря 2013г в 20:20 #
А по мне, так у тебя маниакальный синдром. Лечиться тебе надо. Вместо того чтобы смотреть, что другие делают и как делают, ты бы подумал о том, что тебе удалось сделать. А Василий правильно делает, что не вступает с тобой в диалог. Какой смысл в этом разговоре. Ты зациклен на одном.
Fi1osof1
Fi1osof 18 декабря 2013г в 20:32 #
Кто его меньше знает, он очень даже вступает в диалог :)
А вот сделать мне удалось очень не мало. Поэтому и смотреть могу кто и что делает. А главное — как.
Tramp13571
Tramp1357 22 декабря 2013г в 00:36 #
Не могу с тобой не согласиться, костыли — это не есть хорошо. Я полностью поддерживаю тебя в этом вопросе.
Знаком с вашими с Василием баталиями. Если честно, то грустно на все это смотреть: столько времени и энергии тратится…

Мое мнение — фанатов Василия, да и его самого критикой его стратегии не переубедишь. По-моему, гораздо эффективнее здесь будет работать с теми, кто еще не определился. Стоит выдавать больше информации о своих наработках, стремиться к тому, чтобы при поиске описаний новичок чаще попадал на твои статьи. Чужую тему лучше перекрыть количеством и качеством информации по своей теме, чем критикой, хоть и обоснованной.
Fi1osof1
Fi1osof 22 декабря 2013г в 01:08 #
столько времени и энергии тратится…
Ну а как же? В споре рождается истина © Кто-то.

Мое мнение — фанатов Василия, да и его самого критикой его стратегии не переубедишь.
А я там и не пытался его переубедить, и уж тем более на путь истинный наставить. Я хотел только одного — расставить точки над i, что есть что, и для чего. А дальше пусть каждый для себя сам путь выбирает — хочет, пусть pdoTools юзает. Не хочет — не юзает.

Чужую тему лучше перекрыть количеством и качеством информации по своей теме, чем критикой, хоть и обоснованной.
Этим мы занимаемся, и очень даже успешно. Серьезные результаты в этом направлении будут видны уже к лету.
Tramp13571
Tramp1357 22 декабря 2013г в 01:18 #
Ну а как же? В споре рождается истина
С этим не поспоришь, только ИМХО на каком-то этапе именно спор именно между вами начал выглядеть как банальная драка. Именно поэтому некоторые люди не вникают в смысл обсуждений, а увидев, кто к кому обращается, сразу выдают комментарии типа как первый комментарий к этому топику. (не в обиду автору)
Этим мы занимаемся, и очень даже успешно.
Это я вижу, и сам вношу посильную лепту, общаясь с людьми. Это самый эффективный метод, проверено.
Fi1osof1
Fi1osof 22 декабря 2013г в 01:23 #
Именно поэтому некоторые люди не вникают в смысл обсуждений, а увидев, кто к кому обращается, сразу выдают комментарии типа как первый комментарий к этому топику.
Я в первую очередь — программист. И если я вижу что-то технически неправильное, тем более с вводом других в заблуждение, то я обязательно буду отстаивать истину. А кто и что обо мне будет думать — это уже меня не особо волнует. Главное — что я буду честен перед собой, и совесть моя будет чиста. Это не вопрос пиара. Это вопрос моих принципов.

и сам вношу посильную лепту, общаясь с людьми.
За это всегда спасибо! :)
Tramp13571
Tramp1357 22 декабря 2013г в 01:28 #
Так я не понаслышке знаком с твоей стратегией работы с MODX :), грех с людьми хорошим знанием не поделиться.
Конечно, непросто с нуля вникнуть и начать делать сайт на MODXSmarty вместо стандартных тегов MODX, тем более если человек не программист, но зато, когда сделан первый сайт, ни на секунду не жалеешь о потраченном времени.
Fi1osof1
Fi1osof 22 декабря 2013г в 01:36 #
А я очень рад, что все больше и больше людей берет наши технологии на вооружение :)
p
pastet123 18 ноября 2015г в 17:31 #
Ну даже не знаю, в принципе мне все равно кто там что и как делает. Главное профит. Я пытался воспользоваться твоим способом и соединить Modx и смарти. Потом понял что на самом деле потом придется переписывать запросы. А времени в обрез то. Основная причина в том что странички очень долго грузились. И я нашел pdoTools. Какое оно бы ужасное и отвратительное по твоим словам не было, оно работает. И мне очень помогло. В итоге сейчас аптайм страниц колеблется от 0.03 до 0.5. А я счастлив как паровоз и при этом не пришлось переписывать все сниппеты. И в полне возможно я возьму твой вариант со смарти в будущем. Но пока pdoTools меня полностью устраивает. Я не являюсь ярым поклонником Безумкина, мне по большей части вообще параллельно, что и как у него.
Fi1osof1
Fi1osof 18 ноября 2015г в 19:17 #
Речь не была о том, что это отвратительное. Речь была о том, что это синтаксический сахар, который никак не может работать быстрее, чем чистый xPDO. Но я согласен, что местами это может сэкономить времени и дать профит по экономии времени и скорости загрузки. При этом я останусь при своем мнении — изучать чистый xPDO профитней (хотя и сложнее). Вот вам задача для примера. Не зная и не понимая xPDO вы вряд ли решите эту задачу с помощью pdoTools. Но, опять таки, это вам выбирать себе инструменты.
p
pastet123 18 ноября 2015г в 19:29 #
pdoTools как я понял больше был сделан для замены устаревших сниппетов. А не для замены xPDO. Или я ошибаюсь?
Fi1osof1
Fi1osof 18 ноября 2015г в 19:34 #
Он был в первую очередь создан для более скоростных выборок данных из базы данных. Но на первых стадиях подавалось как замена xPDO, что на самом деле совершенно не соответствует действительности и что и вызывало у меня такую негативную реакцию. По факту, во-первых, это не работает без xPDO (может, но потеряет всю гибкость, которую дает xPDO), а во-вторых, требует знания xPDO все-таки, чтобы можно было строить гибкие запросы. Вот вся пагубность, которую я вижу, состоит в том, что здесь идет обучение синтаксису pdoTools, а не самому xPDO. Наши процессоры может и менее удобные местами (хотя на самом деле нет, это уже кому как что подходит), но зато используется чистый xPDO. Когда вы освоите чистый xPDO, вы можете хоть с нашими процессорами работать, хоть без них (с тем же pdoTools или чистым MODX API).
b
bezumkin 18 ноября 2015г в 22:35 #
Но на первых стадиях подавалось как замена xPDO, что на самом деле совершенно не соответствует действительности и что и вызывало у меня такую негативную реакцию.
Коль, вот откуда ты это берёшь?

Смотри, первая моя статья о pdoTools. Где там речь о замене xPDO?

Я пишу о том, что все запросы строятся через него, но выборка работает через PDO и лишние объекты не создаются. Может ты дашь какую-то ссылку, где я заявлял о том, что pdoTools заменяет xPDO?

Ведь я везде подчеркиваю, что он используется для составления запросов, но не используется для выборки.
p
pastet123 18 ноября 2015г в 23:36 #
А кстати Василий, хочу Вам сказать спасибо. Вы большой человек с большой буквы Ч. Не знаю прав ли Николай или нет. Да это для меня по факту и не важно. Ваш pdoTools мне очень помог, я уже начинал приунывать, как наткнулся на сие чудо. Скорость загрузки чертовски уменьшилась. Спасибо Вам огромное за труды и низкий поклон. Для нас недопрограммистов это как дар божий)))
b
bezumkin 19 ноября 2015г в 06:31 #
На здоровье!
Fi1osof1
Fi1osof 18 ноября 2015г в 23:49 #
Василий, читай первое же предложение в своей статье:
Давно изместно, что xPDO не нужен для выборки и вывода большого количества данных. Зачем его использовать, создавая кучу объектов, жрать процессор и память, если мы хотим просто выбрать 100 строк из БД и вывести их на экран?
На это же предложение ссылаются и здесь. Там эта мысль развита, пусть не тобой, но с твоей подачи (информационной). И это не единственный источник, на который я натыкался. Все-таки в мою бытность появился твой инструментарий, и изначально была конфронтация на фоне подачи этого компонента именно как замене и спасению, а не синтаксическому сахару.
b
bezumkin 19 ноября 2015г в 06:23 #
Всё так? pdoTools действительно выбирает данные через xPDO и выводит их массивами, а не объектами. Отсюда огромный прирост производительности. У меня есть отдельная статья, где это всё подробно расписано и я на неё ссылаюсь.

Ни в этой статье, ни в той я не говорю о замене xPDO чем-нибудь. Я говорю о том, что его можно использовать выборочно и только тогда, когда нужно.

Давай мы всё-таки определимся, где именно я говорил о замене, или ты признаешься, что просто неверно меня понял и сам это придумал.
b
bezumkin 19 ноября 2015г в 06:25 #
Редактирования нет, поэтому пишу отдельно исправление первых 2х предложений:

Всё так. pdoTools действительно выбирает данные через PDO и выводит их массивами, а не объектами.
Fi1osof1
Fi1osof 19 ноября 2015г в 16:35 #
Василий, еще раз:
Давно изместно, что xPDO не нужен для выборки и вывода большого количества данных. Зачем его использовать, создавая кучу объектов, жрать процессор и память, если мы хотим просто выбрать 100 строк из БД и вывести их на экран?
У тебя изначально посыл на то, что если есть pdoTools, то xPDO не нужен. Но это совершенно не так, так как без xPDO у тебя не работает твой pdoTools.

Всё так. pdoTools действительно выбирает данные через PDO и выводит их массивами, а не объектами.
Василий, вот ты для кого сейчас эту жевачку публикуешь? Для меня или для масс? Мне ты хочешь объяснить что и как где работает? Давай сразу уточним, что xPDO сам выборки из БД тоже не делает, он использует для этого как раз PDO. Посмотри тот же метод xPDO::exec(). Используется $this->pdo.
А теперь посмотри свой же класс pdoFetch. Сколько раз там встречается вызов $this->modx->newQuery()? 4 раза. А что возвращает этот метод? xPDOQuery Object. И там же ты использует конструкции типа $q->fetch() (который чисто xPDO-ошный) и $q->stmt->fetch() (являющийся частью xPDO-объектов).
Я не буду в самые дебри лезть (типа xPDOObject::_loadRows() и т.п.), но я уверен, ты заглядывал туда, и знаешь, как много общего у твоего компонента с оригиналом.

И еще раз резюмирую: твой подход был изначально такой: «xPDO — плохое зло, и вот pdoTools всех нас спасает, всем можно отказываться от ненавистного xPDO, теперь всем есть счастье.» Уточняю: xPDO — это неотъемлемая часть MODX, и говоря, что xPDO зло и вот вам замена, ты говоришь, что MODX без твоего pdoTools отстой и ущербный. Я же говорил и говорю, что ты не прав в этом. xPDO был крут, крут и остался, и его ты в своем компоненте использует. И скорее всего правильней было назвать его xPDOTools, учитывая, насколько он тесно связан именно с xPDO. И никому не говорить, что xPDO плох. А еще у тебя есть параметр checkPermissions, и если он передан, то у тебя будет выполняться проверка на записи. А через что проверка будет идти? Так же через создание объектов. И посмотри сколько у тебя вызовов $this->modx->newObject() в pdotools.class.php.

И напоследок: я опросил несколько человек, не создавалось ли у них ощущения, что pdoTools преподносится именно как замена xPDO. Ответ был «ну да, есть такое дело». Потому перечитай внимательно свой топик и подрихтуй его так, чтобы он не наводил на такие мысли, а не убеждай через два с лишним года, что все не так, как говорилось об этом изначально. У меня достаточно знаний, чтобы здесь уловить технические тонкости.
b
bezumkin 19 ноября 2015г в 17:08 #
И еще раз резюмирую: твой подход был изначально такой: «xPDO — плохое зло, и вот pdoTools всех нас спасает, всем можно отказываться от ненавистного xPDO, теперь всем есть счастье.»
Ты это сам выдумал. И теперь пытаешь меня убедить в том, что так считаю.

И напоследок: я опросил несколько человек, не создавалось ли у них ощущения, что pdoTools преподносится именно как замена xPDO. Ответ был «ну да, есть такое дело».
А я спросил другие несколько человек. Они сказали, «ну нет, нет такого дела». Аргументация на грани фантастики.

Я нигде не писал о замене. Я писал о том, что xPDO можно использовать выборочно. И ссылался на эту статью, где написаны разные способы работы, с замерами скорости и ОЗУ. Помоему, там всё понятно написано и без твоих домыслов.

В pdoTools xPDOQuery используется, для построения запроса, а xPDOObject не используется, отсюда большой прирост скорости и экономия памяти.

В общем, или найди где я заявляю о замене xPDO, или говорю, о том что он плохой, или давай ты уже перестанешь мне приписывать этот бред. Идёт?
Fi1osof1
Fi1osof 19 ноября 2015г в 17:11 #
Я дополнительно искать ничего не буду, ибо мое мнение останется прежним. Но то, что ты говоришь, что это не так и я не прав, для меня этого более чем достаточно. Во всяком случае от тебя теперь есть официальная информация что есть что. Думаю, спор можно считать закрытым.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.