Василий Наумкин

Василий Наумкин

С нами с 08 декабря 2012; Место в рейтинге пользователей: #1
Василий Наумкин
12 марта 2020, 05:55
0
Это и в моей башке выглядит странным, когда человек переписывает весь js дополнения, которое ставится на чужие сайты, и тянет с собой лишние зависимости.

Если что, мне 37 лет — и я учу новое. И если уж у меня на это времени хватает, я хз какие у тебя отмазки могут быть, дорогой мой говнокодер.
Василий Наумкин
10 марта 2020, 13:26
0
Так что, автор не может просто любить jquery? Человек не обязан знать все языки в мире и разбираться во всех технологиях, это нормально.
Я так и понял, что для тебя jQuery и Javascript — это разные языки и технологии.

Каждый имеет право пользоваться тем к чему привык и что любит.
Вопрос, кажется, вообще не тебе задавали. Непонятно, откуда такой энтузиазм в защите jQuery. Не хочется Javascript учить? Ну бывает.
Василий Наумкин
10 марта 2020, 12:02
0
Поэтому jquery это фреймворк языка javascript, laravel — это фрейворк языка php. Так что сравнивать их вполне законно.
jQuery — библиотека, а не фреймворк. Для сведения — proglib.io/p/framework-or-library/
Василий Наумкин
10 марта 2020, 10:34
0
Мне кажется вы так говорите только потому
Что мои дополнения требуют jQuery для работы и я регулярно отвечаю на вопросы по его подключению в поддержке.

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

Речь тут о том, что раз переписывается JS дополнения, зачем тащить ненужную зависимость? Никто не предлагает переписывать сразу всё и всем, но раз уж делаешь заново — нафига нужен jQuery?

Ответа от автора по-прежнему нет.
Василий Наумкин
10 марта 2020, 09:15
+5
Как минимум потому, что это лишняя зависимость для твоего дополнения, которой может и не быть на сайте, и тогда придётся её подключать только ради тебя.

Или еще лучше — на сайте будет jQuery, но не той версии, которая нужна. Или с подключенными конфликтующими плагинами.

Когда я соберусь переписывать JS в моих допах, там точно не будет jQuery.
Василий Наумкин
04 марта 2020, 20:07
+5
Вдруг я префикс базы захочу изменить, а в куче запросов он будет указан.
Ну ты же любишь использовать плейсхолдеры в запросах, вот тебе еще один: {'table_prefix' | option}

А если серьёзно, то ты пишешь очень сложный запрос, который не понадобится 99% пользователей pdoTools, а может и вообще MODX.
Он не станет менее сложным, если засунуть его в массив Fenom, никто ничего от этого не выиграет.

Усилия по добавлению этого функционала не просто ничего не стоят, они отрицательные не длинной дистанции, потому что нужно будет отвечать на вопросы по конвертации этих твоих вложенных массивов в SQL.

Периодически будут находиться люди, пытающиеся наворотить какую-нибудь фигню с этими параметрами. Как сейчас это делают с долбаным tvFilters.

Рейтинг этой заметки на данный момент составляет 0 при 34 комментариях, что уже намекает на её полезность.

Я этот PR гарантированно не приму, удачи в развитии своих дополнений.
Василий Наумкин
04 марта 2020, 19:43
+1
И мне он нравиться :-).
Ну не может быть хороший программист неграмотным. tsya.ru

Проявите ответственность :-)
Я и так много времени на тебя потратил. Иди, просвещайся.
Василий Наумкин
04 марта 2020, 19:36
+2
Нужен был запрос типа такого:
Александр не знает, что xPDO и следовательно, pdoTools, прекрасно понимают сырые запросы, если засунуть их в строку внутри массива.

И тогда вполне возможно написать даже то, что он приводит в начале заметки:
{'!pdoResources' | snippet :[
    'class' => 'tSkladDetNSLink',
    'select' => ['*
        FROM `modx_tsklad_detail_naryad_smena_link` AS `tSkladDetNSLink`
        LEFT JOIN `modx_tsklad_order_list` `Detail` ON Detail.id=tSkladDetNSLink.det_id
        LEFT JOIN `modx_tsklad_orders` `Order` ON Order.id=Detail.sk_order_id
        LEFT JOIN `modx_tsklad_naryad` `Naryad` ON Naryad.id=tSkladDetNSLink.naryad_id
        LEFT JOIN `modx_tsklad_smena` `Smena` ON Smena.id=tSkladDetNSLink.smena_id
        LEFT JOIN `modx_nomenclature_detail_nom` `DetailNom` ON DetailNom.id=Detail.nom_id
        LEFT JOIN `modx_nomenclature_detail_class` `DetailClass` ON DetailClass.id=DetailNom.class_id
        LEFT JOIN `modx_nomenclature_type_job` `NomTypeJob` ON NomTypeJob.id=DetailClass.type_job_id
        LEFT JOIN (
            SELECT NextDNL.det_id AS next_det_id, NextDNL.naryad_id AS next_naryad_id, NextN.name AS next_naryad_name, NextDNL.smena_id AS next_smena_id, NextS.date AS next_smena_date, NextS.number AS next_smena_number
            FROM `modx_tsklad_detail_naryad_smena_link` AS `NextDNL`
            LEFT JOIN `modx_tsklad_smena` `NextS` ON NextS.id=NextDNL.smena_id
            LEFT JOIN `modx_tsklad_naryad` `NextN` ON NextN.id=NextDNL.naryad_id
            ORDER BY NextS.date ASC, NextS.number ASC) `NextDNL1` 
                ON tSkladDetNSLink.det_id = NextDNL1.next_det_id AND 
                (NextDNL1.next_smena_date > Smena.date OR (NextDNL1.next_smena_date = Smena.date AND NextDNL1.next_smena_number > Smena.number)
        ) 
        AND NextDNL1.next_smena_id = (
            SELECT NextDNL.smena_id AS on_next_smena_id
            FROM `modx_tsklad_detail_naryad_smena_link` AS `NextDNL`
            LEFT JOIN `modx_tsklad_smena` `NextS` ON NextS.id=NextDNL.smena_id
            LEFT JOIN `modx_tsklad_naryad` `NextN` ON NextN.id=NextDNL.naryad_id
            WHERE NextS.date > Smena.date OR (NextS.date = Smena.date AND NextS.number > Smena.number)
            ORDER BY NextS.date ASC, NextS.number ASC
            LIMIT 1
        )
        LEFT JOIN `modx_plazma_list` `PlazmaList` ON PlazmaList.det_id=tSkladDetNSLink.det_id
    '],
    'where' => [
        "(`Detail`.`sech` = 'pryam' AND `Detail`.`name` = 'зонт' AND `DetailNom`.`A` = '2000' AND `DetailNom`.`B` = '1500' AND `DetailNom`.`a_s` = '500' AND `DetailNom`.`b_s` = '500' AND `Detail`.`metall` = '0,7Ц' AND `Detail`.`L` = '0' AND `Detail`.`comment` = 'тип 1, ф355 заузить под наш отвод' AND `tSkladDetNSLink`.`smena_id` = 65 AND `tSkladDetNSLink`.`naryad_id` = 8 AND `NextDNL1`.`next_smena_id` = '66' AND `PlazmaList`.`file_true` = '0')"
    ],
    'sortby' => 'Detail.sech DESC, Detail.name ASC, DetailNom.A DESC, DetailNom.B DESC, DetailNom.a_s DESC, DetailNom.b_s DESC, Detail.metall DESC, Detail.L DESC, Detail.comment',
    'sortdir' => 'DESC'
    'limit' => 0,
    'showLog' => 1,
]}

Запрос, вполне себе, подготавливается

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

Но можно сравнить исходные параметры и конечный код — они идентичны, за исключением FROM из несуществующей таблицы (что при наличии модели tSkladDetNSLink будет заменено на FROM `modx_tsklad_detail_naryad_smena_link` AS `tSkladDetNSLink`) и экранирования сортировки (которой xPDO закрывает старую уязвимость).


Так что, кому уж прям очень нужны подзапросы в pdoTools — они уже там есть, с самого начала.
Василий Наумкин
04 марта 2020, 19:33
+1
принимать этот PR Не требуется..
А нафига ж ты его прислал с своём PR?

Еще через минут 20 будет.
Не надо.
Василий Наумкин
04 марта 2020, 18:55
0
Что-то я совсем не понял с честь чего у вас такой вопрос?? «построение запроса через xPDO приводит к ошибке работы Fenom» — вроде нигде такого не говорил.
У тебя с памятью беда, или с логикой?



Вот это вот — оно про что?

Почему у тебя какие-то ошибки в парсинге именно после выполнения запроса? Какие ты там display и font меняешь, зачем? Какое оно имеет отношение к запросам или подзапросам в БД?

Или ты (я только сейчас об этом подумал) проверяешь свой новый придуманный синтаксис на pdoFetch с твоими изменениями, и без них? И приводишь как доказательство, что твой синтаксис без твоих изменений в pdoFetch не работает?

Если это и правда так, то я вообще уже не знаю, куда в скорую звонить, в какой регион.
Василий Наумкин
04 марта 2020, 15:30
+3
Авторы бывают ленивыми и зазнайками. Их надо мучать, чтоб прогресс был.
А еще авторы бывают опытными, и понимающими, что нужно их дополнениям, а что нет.

Пиши свои допы, развивай — Сергей верно говорит.

Подзапросы вроде вещь актуальная. Разве нет?
Внезапно, нет.

pdoTools появился в 2013 году и целых 7 лет эти подзапросы никого не волновали. И сейчас не волнуют, увы.
Василий Наумкин
04 марта 2020, 15:24
0
Саша, ты несёшь такую пургу, что я просто теряюсь.

Скажи пожалуйста, каким образом у тебя построение запроса через xPDO приводит к ошибке работы Fenom? Это откуда должны расти руки, чтобы так получалось? Ты понимаешь, что Fenom в pdoTools был добавлен лишь в версии 2.0, и как-то до этого запросы прекрасно строились без него?

Пока ты не ответишь на этот вопрос, я не вижу смысла продолжать общение.
Василий Наумкин
04 марта 2020, 15:21
+3
А авторы Tikkets вообще собираются редактор сообщений обновлять?
Нет, не собираются.

Авторам Tickets (обрати внимание на правильное написание) есть много чем другим заняться. Судя по твоему энтузиазму, ты легко запилишь прекрасный форк, на который все пользователи Tickets легко перейдут без потери данных.

И будешь его потом поддерживать бесплатно, годами.
Василий Наумкин
04 марта 2020, 04:36
+5
Я уже не принял предыдущий PR и пропихивать мне его еще раз, под видом необходимого для подзапросов — очень странно.

Какая связь вообще между генерацией SQL запроса в БД и шаблонизатором?

Ты вот такое прям серьёзно пишешь, это не прикол?

Может сейчас Василий Наумкин примет.
Нет конечно, не примет. Ты меня за дурака держишь, или что?

Да хоть бы отформатировал в PSR-2 свою писанину, чтобы читать это возможно было.


Это ты еще и 2 новых версии pdoTools сразу выпустил? Ну вообще орёл.
Василий Наумкин
28 февраля 2020, 04:22
+1
С феном то все понятно, его закончу, но вот мысли у меня сделать отдельно такой плагин и для modx, который бы работал бонусом со всеми выше перечисленными объектами (шаблоны, чанки) напрямую с бд.
Нафига оно надо, если будет нормальная навигация по Fenom тегам?
Мне лично только её не хватает при работе из IDE, синтаксис MODX уже давно не использую.

P.S. Есть вот такой древний плагин для Fenom. Он очень сырой, но может чем-нибудь пригодиться.
Василий Наумкин
24 февраля 2020, 14:14
0
Что делать, как быть?
Пиши в Вопросы, я перенесу.

кстати в чем разница?
В описании разделов указано.
Василий Наумкин
21 февраля 2020, 13:28
+2
Еще раз — Collections работает с ресурсами. Соответственно, все сниппеты MODX работают с ним.

Если ты перетаскиваешь весь контент в другие таблицы, то какой-нибудь GoogleSiteMap для них карту сайта не построит, а mSearch2 их для поиска не проиндексирует.

Сегодня есть pdoTools, и с его помощью можно выводить данные из любых таблиц, для которых есть схема, но опять же, все его родные сниппеты заточены именно под ресурсы. Например, в pdoResources прописана сортировка именно по publishedon, которого может не быть в другой таблице. А pdoMenu использует карту ресурсов в modX::getParentIds для построения меню.

У меня и данные в своих таблицах
У меня тоже.
Но это у меня и тебя, в наших непубличных проектах.

А теперь представь себе условный miniShop3, который хранит миллионы товаров в своих собственных таблицах. К нему нужно будет поставить и полный набор всех сниппетов для вывода этих товаров, генерации меню, хлебных крошек и т.д.

Как оно, сильно больше Collections будет? Одну документацию писать замучаешься, а потом баги отлавливать и править.

Говорю же, я много об этом думал и пришёл к выводу, что делать подобное не стоит. Ну а если и делать, то как отдельную независимую либу, которую потом интегрировать с MODX.
Собственно, как Андрей Чирко уже сделал с Shopkeeper 4 — и что-то большого успеха на рынке MODX у такого решения не видать.
Василий Наумкин
21 февраля 2020, 13:09
+2
Где-то во фреймворках есть заранее созданные таблицы под контент? С контекстами, прикрученными картами ресурсов кэша, менеджерами с кастомизацией форм для их редактирования?

Нет, никто так не делает во фреймворках, там ты всё пишешь под себя.

Именно поэтому я и доказываю тебе, что в ресурсы в MODX — они именно что для контента. Это ограничивает систему, но делает её удобной для новичков и небольших сайтов.

Использование modResource в MODX — это единственно верный путь для хранения пользовательского контента в 99% использования системы. А если кому-то это не подходит, нужно поискать другую систему, таков мой вывод.
Василий Наумкин
21 февраля 2020, 13:05
0
Выше отписал про это.

Слишком большой объём работы и непонятный выхлоп. Экономически не выгодно.