Обсуждение 2.13 и выявление недочетов

ЗАКРЫТО InstantCMS 2.X
#61 12 января 2020 в 21:34
Здравствуйте. После обновления видео на каналах перестали включаться, в ленте событий включались как и раньше, отключил CSS и JS ошибка 500, включил Объединять CSS-файлы а JS-файлы нет — все работает. Включил отладку —
Warning: file_get_contents(/home/admin/web/сайт.ru/public_html/templates/ultimate/css/font-awesome/css/font-awesome.min.css): failed to open stream: Нет такого файла или каталога in /home/admin/web/сайт.ru/public_html/system/core/template.php on line 1541
Что бы это значило? look
#62 12 января 2020 в 22:18
Коль подняли такую тему добавлю маленький, но заковыристый вопросик. Касается он как полей так и свойств. Очевидно он будет адресован Fuze, но если кто-то другой мне на него ответит тоже буду признателен. Пытаюсь понять что вообще происходит и у меня пока это не получается.

Постараюсь изложить его как можно четче и очень надеюсь услышать ответ. Вопрос про вот этот небольшой фрагмент кода из фильтра в типах контента и виджета фильтра:

  1.  
  2. $value = $prop['handler']->store($value, false);
  3. if (!$value) { continue; }
  4. $filters[$name] = $value;
Начиная с 2.13 поля в фильтре обрабатывают свои значения методом store().
1. Откуда возникла такая идея и вообще мысль, что процесс создания фильтров в этом нуждается?
2. Почему значения, которые мы записываем в БД и значения, которые мы используем для создания фильтров должны обязательно быть идентичны?
3. Исходя из вопроса 2 — как быть, если например в БД поле пишет любое символическое значение(например любой символ или единицу), а данные хранит во внешней таблице? Как результат фильтре в поле мы выбрали что угодно, до самой фильтрации долетела единица. Есть масса таких случаев, но этот самый простой.
4. Это новые правила игры к которым надо привыкать или это будет переосмыслено и исправлено?
Заранее благодарен за ответ.
#63 12 января 2020 в 23:55
1. Из головы, если отвечать буквально.
2. Это значения не для создания фильтров, а из созданных фильтров, т.е. из формы фильтра. И они не должны быть обязательно идентичными. Более того, в некоторых полях они и не идентичные.
3. Не понял вопроса, но вы можете обрабатывать как угодно, исходя из контекста вызова.
4. Я пока не вижу, что необходимо исправить. Все штатные поля, и доступные мне нештатные, работают корректно.
#64 13 января 2020 в 00:35


1. Из головы, если отвечать буквально.
2. Это значения не для создания фильтров, а из созданных фильтров, т.е. из формы фильтра. И они не должны быть обязательно идентичными. Более того, в некоторых полях они и не идентичные.
3. Не понял вопроса, но вы можете обрабатывать как угодно, исходя из контекста вызова.
4. Я пока не вижу, что необходимо исправить. Все штатные поля, и доступные мне нештатные, работают корректно.

Fuze

Судя по вашим ответам вы ничего из того, что я написал не поняли. Давайте попробуем так

Пример 1(допустим мультисписок c индексами 1,2,3,4,5,6)
  1. public function store($value, $is_submitted, $old_value=null){
  2. return implode('-', $value); // в БД записывается результат вида '3-5-6-7'
  3. }
  4.  
  5. public function getFilterInput($value){
  6. $value = explode($value); //строим выпадающий список с индексами 1,2,3,4,5,6
  7. return parent::getInput($value);
  8. }
  9.  
  10. public function applyFilter($model, $value) {
  11. // я в фильтре выбрал значения 3 и 5
  12. // $core->request содержит array(3, 5)
  13. // а чему по- вашему здесь $value равен?
  14. // мне кажется, что тут должен быть массив значений, выбранных в списке
  15. // но с вашими нововведениями его здесь нет
  16. return $model->filterLike($this->name, "%{$value}%");
  17. }
Пример 2(любое из миллиона полей, требующих хранения структур и поиск по ним)
  1.  
  2. public function store($value, $is_submitted, $old_value=null){
  3. $model = cmsCore::getModel('mycontroller');
  4. $model->save($this->item['id'], $value);
  5. return 1;
  6. }
  7.  
  8. public function getFilterInput($value){
  9. $model = cmsCore::getModel('mycontroller');
  10. $value = $model->load($this->item['id']);//
  11. //строим выпадающий список
  12. }
  13.  
  14. public function applyFilter($model, $value) {
  15. // а чему по- вашему здесь $value равен?
  16. // мне кажется, что тут должен быть массив значений, выбранных в списке
  17. // но с вашими нововведениями его здесь нет
  18. }
#65 13 января 2020 в 00:45

Если мои глаза меня не обманывают, то методу store не место в фильтре. Я читаю документацию, подготавливаю данные к записи в БД, у меня все хорошо. А потом они вот в таком подготовленном виде почему-то пытаются протиснуться в фильтр, хотя для фильтрации я не просил их трогать. Может я опять чего-то не понимаю, но мне кажется, что если метод придуман для подготовки перед записью в БД, то давайте там его и использовать. Если для фильтра нужен подобный метод, давайте его добавим. На данный момент мы переписываем все ранее написанные поля согласно новым правилам. Если раньше все было четко и понятно, то теперь мы должны добавлять проверку контекста и исходя из этого задавать себе вопрос "Должен ли метод, описанный в документации как метод, предназначенный для подготовки данных перед записью в БД выполнить эту самую подготовку"? Один я нахожу в таком положении вещей разрыв шаблона?
#66 13 января 2020 в 00:56
Из версии в версию забываю спросить:
Почему при сохранении данных, настроек в админке с первого раза ничего не происходит? Надо нажать на сохранить или очистить кеш… 2 или 3 раза!
С чем это может быть связаной? С настройкой сервера или что не так делаю в админке?
В качестве веба на сервере используется NGINX + php-frm
#67 13 января 2020 в 01:01

вы ничего из того, что я написал не поняли

dwd
Понял. Вы не поняли мои ответы.

store может быть такой или такой. Или можно использовать контекст вызова.
Единственное, что я сделал не так так, вернее не посмотрел наперёд и заранее не унифицировал, так это использовать для этой цели не метод store, а скажем storeFilter, который бы по умолчанию вызывал бы store.

Если мои глаза меня не обманывают, то методу store не место в фильтре. Я читаю документацию, подготавливаю данные к записи в БД, у меня все хорошо.

dwd
Да, в документацию изменения не внёс еще.

но мне кажется, что если метод придуман для подготовки перед записью в БД

dwd
Метод придуман для подготовки данных, вам стоит абстрагироваться. Старая реализация с точки зрения безопасности была не совсем корректная.

На данный момент мы переписываем все ранее написанные поля согласно новым правилам.

dwd
Если бы вы следили за изменениями на гите, ваших четырёх вопросов сейчас не было. Я сделал новый функционал. Кто следил за гитом, дали фидбэк. Кто не следил, дают его сейчас, после релиза. Это не плохо и не хорошо, это просто так есть.

Почему при сохранении данных, настроек в админке с первого раза ничего не происходит? Надо нажать на сохранить или очистить кеш… 2 или 3 раза!

vikont

NGINX + php-frm

vikont

А с консолью я не очень дружу...

vikont
opcache отключите и не трогайте php.ini. Стоит делать то, в чем есть однозначное понимание.
#68 13 января 2020 в 01:18
Да, кстати, забыл
  1. $value = $prop['handler']->store($value, false);
  2. if (!$value) { continue; }
  3. // а тут наш $value содежит что? Ну конечно ту же самую охинею, которую мы обычно пишем в БД
  4. $filters[$name] = $value;
  5. // а куда потом вся эта охинея попадает? ну конечно же $page_uri и следом в ссылки фильтра, пагинацию
  6.  
#69 13 января 2020 в 01:39

а куда потом вся эта охинея попадает? ну конечно же $page_uri и следом в ссылки фильтра, пагинацию

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

По существу: я добавлю метод storeFilter в поля. Предыдущий функционал, в котором брались чистые данные из request, возвращён не будет. Так или иначе, вам пришлось бы актуализировать ваши поля под новый функционал.

Вы как-то излишне эмоционально реагируете. Будьте в курсе разработки движка и подобный казусов у вас не случится.
#70 13 января 2020 в 06:39

opcache отключите и не трогайте php.ini. Стоит делать то, в чем есть однозначное понимание

Fuze
Наверно вас сильно удивлю, но не трогал, не включал. В php.ini есть только параметр opcache.revalidate_freq, но он ОТКЛЮЧЕН.
Более того, все перерыл, не могу найти opcache.
#71 13 января 2020 в 10:37
Fuze, я очень старался, но в формат комментария поместиться не удалось. Поэтому оставлю ссылочку. Перейдя по ней вы найдете полное описание всего происходящего с системой по моему субъективному мнению. А также поймете насколько будущее системы мне не безразлично. И, ничего личного, я чисто за дело болею. Может и странно звучит, в наше время это не модно, но я советский человек, а нас этому в школе учили. И не сердитесь на меня, возможно я в чем-то не прав, но как сказал один известный человек — "Настоящим программистом может стать лишь тот, кто умеет смеяться над своими ошибками". Вот и я надеюсь, что вы в состоянии это делать и не пропустите ни единой "шутки".
#72 13 января 2020 в 11:32

тот, кто умеет смеяться над своими ошибками

dwd
Я изначально всегда допускаю, что не прав. Чего не могу сказать о вас, увы. Вы решили перейти из обсуждения в личке на публику. Окей.

1. Весь ваш текст просто сквозит мыслями "я просто мега круто во всём разбираюсь, а в чем не разбираюсь, то не правильно", "почему этого еще нет и этого нет, вы не тем занимаетесь". Это неверный подход.
2. Весьма странно читать всё это, учитывая кровь из глаз, когда я вижу ваш код.
3. Весьма странно читать всё это, учитывая сколько раз я звал вас в кулуары, на гит и в целом к конструктиву по типу "не нравится — давай обсудим, сделаем лучше". Но "не нравятся мне ваши гитхабы, айэм фром ссср".
4. Я по прежнему готов обсуждать что угодно в части улучшения движка. Но если это будет в контекте "всё гавно, я это вижу так" — мы не сработаемся.

По вашим пунктам проходиться и отвечать по каждому я не буду. Отвечу кратко: InstantCMS бесплатен, я делаю то, что считаю нужным, в первую очередь для себя. Хотите помочь? Как это сделать, я вам писал много раз. Считаете неудачной какую-либо реализацию, — предложите лучшую. Кроме этого, в контекста начатого разговора, я сразу признал, что лучше было сделать отдельный метод.

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

p.s. п3, если о впечатлениях, уж извините.
#73 13 января 2020 в 11:58
Ясно, посыл очередной раз прошел мимо. наверное таки слишком много тексты в нем было

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

Вы где-то это прочли? Ткните меня носом или считайте, что вам показалось. Я высказал то, что видят мои глаза и не более.

2. Весьма странно читать всё это, учитывая кровь из глаз, когда я вижу ваш код.

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

3. Весьма странно читать всё это, учитывая сколько раз я звал вас в кулуары, на гит и в целом к конструктиву по типу "не нравится — давай обсудим, сделаем лучше". Но "не нравятся мне ваши гитхабы, айэм фром ссср".

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

4. Я по прежнему готов обсуждать что угодно в части улучшения движка. Но если это будет в контекте "всё гавно, я это вижу так" — мы не сработаемся.

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

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

вот с этого пожалуй стоило начать и тут же этим и закончить. я почему-то считал, что для людей. а если для себя… тогда понятно что люди это только балласт, отжирающий нервные клетки своими тупыми хотелками. и я один из типичных представителей этого балласта. теперь позиция развития системы предельно ясна. пофиг что там людям надо, мне ж это не надо. теперь я понимаю почему рассказывая вам о том, что надо внести такие-то правки, потому что нельзя сделать то-то и то-то я получаю один и тот же вопрос — "а зачем?". ну да, незачем. вам то оно не надо. а кому надо пусть сам крутится как умеет

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

мне надо ничего напоминать, у меня с памятью все в порядке. я отлично помню скольких нервов мне это стоило и сколько текста потребовалось, чтобы вы добавили эти 2 строчки кода

пример, как быстро и лаконично, без лишних слов решаются вопросы.

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

Ну и собственно спасибо за беседу, наконец мое недоумение развеялось и я понял вашу позицию. год пытался понять — не получалось
#74 13 января 2020 в 12:09

Я изначально всегда допускаю, что не прав. Чего не могу сказать о вас, увы.

Я каждое свое слово могу аргументировать и подкрепить доводами. Хотя большинство мной сказанного в этом не нуждаются, это первый курс института и каждый студет будущий программист об этом знает. пренебрегать такими вешами можно в файле из 10 строк, компоненте, но в целой системе увы, уже нельзя. Это ваши аргументы как правило сводятся к бессмысленным отговоркам или даже полному их отсутствию. "Отвергаешь — обоснуй" и тогда можно смело будет говорить о собственной правоте. А без обоснования остается только догадываться — то ли перед тобой гений, за 20 секунд изучивший все твои предложения и сделавший полную выкладку, то ли человек который смотрит на текст и отказывается только потому, что не может понять смысл прочитанного. Вот н разу не хочу вас обидеть, а просто говорю о том, как такое поведение выглядит со стороны.

Вы решили перейти из обсуждения в личке на публику. Окей.

Вы опять что-то путаете, мы с вами в личке общались очень давно и поводом этому была глючная мультиязычность, которая имела место быть в 2.12.0, я вам просто указал на проблему. а сегодняшняя наша беседа есть не что иное, как развитие темы ваших вчерашних комментариев, которые вы дали на мои вопросы

P.S. Я уже когда-то говорил, что больше не буду приставать к вам со своими инновациями, прошу меня простить, не сдержался. Но это точно был последний раз, обещаю. Ваша система, вы хозяин, хозяин-барин. Я здесь никто и мой голос ничего не значит. А впустую сотрясать воздух как-то надоело.
#75 13 января 2020 в 12:24
побуду котом леопольдом, как бы там ни было надо искать общий язык, сугубо моё мнение, не повторяйте ошибок

www.youtube.com/watch?v=AXLoRpKnK8U
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.