Алексей Карташов

Алексей Карташов

С нами с 04 февраля 2013; Место в рейтинге пользователей: #58
Алексей Карташов
28 мая 2015, 13:26
0
Пользуясь случаем, хочу спросить — не знаете, случаем, как из репозитория удалить папку, не удаляя её физически с диска?
Ну т.е. я её сперва отправил на гитхаб, потом добавил в .gitignore, но вот из репозитория она не удаляется
Алексей Карташов
28 мая 2015, 13:21
0
Чтобы залить на modstore надо документацию написать, а у меня времени нет)
Алексей Карташов
28 мая 2015, 12:48
0
если он был удален — 100% были изменения
Вот о том и речь, что не факт.

Да и я не пойму претензий — VirtualPage был для примера, какой смысл конкретно его по косточкам разбирать? Ситуаций, когда возможны такие коллизии, может быть разных. По мне — так лучше перебдеть.

Или претензия в том, что это лишняя нагрузка? Если да, то это ж всего лишь одно обращение к массиву системных параметров, которые и так уже доступны — лишних запросов не будет:
$ids = $modx->event->params['ids'];
if ($modx->getOption('modlmims.remove_related_lmims_on_empty_trash') && !empty($ids)) {
  $modx->removeCollection('modLMIMS', array(
    'resource:IN' => $ids,
  ));
}

В любом случае — настройка уже добавлена и по умолчанию включена — никаких лишних действий не требуется. Пусть её меняют только те, кому это действительно нужно.

Алексей Карташов
28 мая 2015, 12:17
0
Да нет тут никакой нагрузки — ни на мозг, на на компонент.
А ситуацию я ж описал — в VirtualPage параметр ресурса поменяли, а ненужный ресурс — удалили. У нового ресурса шаблон/контент/алиас — все те же. При этом на этом ресурсе через VirtualPage могут быть доступны сотни и тысячи урлов — вывод пользователей, каких-то своих объектов, мало ли. У них ни урлы, ни контент не изменился. Но last-modified дата изменится. Не логично.
Поэтому и нужна настройка, кому нужно — пусть её выключают.
Алексей Карташов
28 мая 2015, 12:00
0
так а в чем проблема? Значение обновится и все
Если мы удалим строки, которые были привязаны к удалённым ресурсам, но при этом урлы и контент останутся доступны (к примеру, в VirtualPage параметр ресурса поменяли, а ненужный ресурс — удалили), то в lmims-таблице будут созданные новые данные, с новой датой. И поисковики будут думать, что контент по этим адресам обновился, хотя это может быть и не так.

Понятное дело, что это мелочь, но раз делать — то делать хорошо) Поэтому настройка всё-таки нужна.
Алексей Карташов
28 мая 2015, 09:45
0
Значение обновится и все
Блин, точняк xD

При установке таблица полностью удаляется и создается новая
Согласен — вариант)

Я тогда сейчас установочные файлы немного обновлю и заодно пакет соберу, чтобы на гитхабе лежал
Алексей Карташов
28 мая 2015, 09:39
+1
О, в мои репозитории кто-то даже контрибьютит))

Пуллреквест приму хоть сейчас, но есть один момент.
Удаляя из таблицы строки, которые связаны с удаляемыми из корзины ресурсами, вы забыли про одну вещь — ресурсы-то могут и удалиться, а вот урлы и контент могут остаться теми же. Компонент VirtualPage (которым я активно пользуюсь) — яркое тому доказательство.
Поэтому, по-хорошему, надо сделать системную настройку, которая как раз и отвечала бы за эту функциональность.
Ну и по-хорошему надо куда-то в меню добавить кнопку, по которой можно было бы полностью очистить таблицу — и можно выкладывать в репозиторий.

Первое я могу хоть сейчас сделать, а вот как кнопку добавлять — хз)
Алексей Карташов
19 мая 2015, 23:14
0
Еее, счас бум тестить!

p.s. а в чём там велосипедность-то?) Небольшая функция, подключение pdoTools'а и вывод чанка, в который можно данные передать — куда ж проще-то?)
Алексей Карташов
19 мая 2015, 22:31
0
Ого, здорово!

Тогда позвольте один не скромный вопрос — а когда стоит ожидать третью бету?
Просто как раз прямо сейчас начинаю строить один каталог, в котором нужны вот такие вот групповые характеристики. Я бы делал это на собственных таблицах с редактированием с фронта итд. Но вот сейчас задумался..)
Алексей Карташов
19 мая 2015, 20:43
0
А чего там спешить-то?))
if (!function_exists('getArray')) {
  function getArray ($input, $separator = ',') {
    if (is_array($input)) {
      return $input;
    } else
      if (is_string($input)) {
        $trimmedInput = trim($input);
        $firstLetter = substr($trimmedInput, 0, 1);
        $lastLetter = substr($trimmedInput, mb_strlen($trimmedInput,'UTF-8') - 1, 1);
        if (
          ($firstLetter == '{' && $lastLetter == '}') ||
          ($firstLetter == '[' && $lastLetter == ']')
        ) {
          $tmp = json_decode($input, 1);
          if ($tmp) {
            return $tmp;
          }
        } else
          // check for not empty string
          if (trim($input)) {
            $tmp = array_map('trim', explode($separator, $input));
            return $tmp;
          }
      }
    return ($input && !is_object($input)) ? array($input) : array();
  }
}

$output = '';
$options = (!empty($scriptProperties['options'])) ? getArray($scriptProperties['options']) : array();
$options = array_merge($options, array('useFenom' => 1));
if (!is_object($modx->pdoTools) || !($modx->pdoTools instanceof pdoTools)) {
  $fqn = $modx->getOption('pdoFetch.class', null, 'pdotools.pdofetch', true);
  if ($pdoClass = $modx->loadClass($fqn, '', false, true)) {
    $pdoTools = new $pdoClass($modx, $options);
  }
  elseif ($pdoClass = $modx->loadClass($fqn, MODX_CORE_PATH . 'components/pdotools/model/', false, true)) {
    $pdoTools = new $pdoClass($modx, $options);
  }
  else {
    $modx->log(modX::LOG_LEVEL_ERROR, 'Could not load pdoFetch from "MODX_CORE_PATH/components/pdotools/model/".');
    return $output;
  }
} else {
  $modx->pdoTools->setConfig($options);
  $pdoTools = &$modx->pdoTools;
}

$tpl = (!empty($scriptProperties['tpl'])) ? $scriptProperties['tpl'] : '';
if ($tpl) {
  $data = (!empty($scriptProperties['data'])) ? getArray($scriptProperties['data']) : array();
  $output = $pdoTools->getChunk($tpl, $data);
}
return $output;

Но такая глобальная шаблонизация из коробки — это, конечно, будет просто сказка! Ждём-с :)
Алексей Карташов
19 мая 2015, 19:17
+1
Я сейчас буду блаженно материться…

ДА. ЭТО. ЖЕ. ПРОСТО. О.УЕННО!!!

Чанки в чанках, грёбанные строки в виде всяких там плейсхолдеров теперь идут НАХЕР!
Циклы! Наконец-то, мать их, циклы!!!
Условия! Наконец-то, мать их, человеческие условия!

Наконец-то есть работа с ДАННЫМИ, а не с какими-то грёбанными строками, которые после обработки всех вложенностей и 10й итерации парсера вылезают хрен пойми где и хрен пойми как, ломая напрочь всю разметку.

Циклы, omfg, да это же ЦИКЛЫ!!! Как мало для счастья надо xD xD

Сколько же я на себе волос повыдирал, когда бодался с этим долбанным парсером. Когда логика фронтенда становится чуть сложнее простого вывода данных, то всё — логика у парсера отключается и активируется режим «Угадай, что получится». Я даже хотел писать статью-ненависти-поток-сознания, в которой хотел по косточкам пройтись по косякам парсера. Теперь всё это идёт НАХЕР! xD

Теперь достаточно написать один простенький сниппет (чтобы не извращаться через tplWrapper pdoResource'а), который подключает pdoTools и с помощью него выводит чанк из параметров сниппета (а в чанке уже можно писать что угодно) и всё, мать его, ВСЁ! xD

p.s. Славься В! Славься В! Славься В!
Алексей Карташов
19 мая 2015, 18:29
+1
Я магазины делаю ооочень редко, но практически всегда нужны (да и когда кому-то помогаю в разработке часто вижу такую необходимость) группы характеристик. Т.е. не просто один единственный одноуровневый список параметров с описаниями, а с возможностью разбить этот список на логические группы и визуально их как-то разделить.
Из-за этого приходилось изворачиваться с migx'ом, вложенным в migx, чтобы достичь такой «групповой» реализации.

Вы не подумайте, я без претензий :) Просто в инструкции упоминаний про что-то подобное нету.

Алексей Карташов
07 мая 2015, 14:49
+1
Подводные камни, например с СЕО, тоже он должен лучше знать.
Ага-ага xD
Программист и seo — это антонимы. Это нужно просто принять)
Уповать на то, что программист сам позаботиться о тонкостях seo-семантики — значит заранее самому себе запороть это самое seo. Прям со старта.
В идеале нужен специалист именно в этой области, который будет давать рекомендации и контролировать конечный результат.
А программисту вообще по-барабану (и это полностью его право, между прочим), если вместо h1 будет div — выглядит-то так, как на макете, так что претензии не принимаются.
И вообще, делается это не на этапе программирования, а на этапе вёрстки, чтобы потом с больной на здоровую программисткую голову не перекладывать.
Алексей Карташов
03 мая 2015, 14:42
0
Прям электронная подпись)
Интересно, есть ли хоть малейшая вероятность признания такой подписи юридически значимой? При условии, что на изображении будет действительно что-то похожее на настоящую подпись, а не всем известные закорючки)
Алексей Карташов
01 мая 2015, 15:43
0
Ну как и предполагалось — я зря потратил время.
Ты как считал себя умнее остальных, так и продолжаешь считать. Как ударялся в завуалированные оскорбления прикидываясь белой овечкой, так и продолжаешь.

Безнадёга
Алексей Карташов
01 мая 2015, 14:50
0
Эх, ты даже не понимаешь с кем ввязываешься в полемику xD
Если ты полезешь «в бутылку», то откроешь ящик Пандоры и к вечеру здесь будут десятки оранжевых квадратиков вместо комментариев)

Но да ладно, к сути.
Я постараюсь коротко и поэтому приведу такую аналогию.

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

Ребёнок может верить на слово, может проверять всё опытным путём, набивая собственные шишки (к примеру засовывать пальцы в розетку), а может (в силу своей неопытности и, чего уж, глупости) забить хер на все рассказы, объяснения и заверения взрослого человека и жить в своём собственном выдуманном мире.

И вот объясняешь ты такой этому ребёнку, который ничего слышать не хочет, объясняешь, объясняешь… объясняешь…
Но ребёнок не понимает очевидного — его персональное видение фактов окружающего мира не отменяет настоящий смысл этих фактов.
Скажу проще — окружающему миру глубоко фиолетово, что красное ребёнок видит зелёным, а оранжевое — серым. Персональное видение конкретной особи не отменяет того, что красное — это красное, а оранжевое — оранжевое.
(хотя цвет — это вопрос больше филосовский, но сейчас не об этом)

И вот если таким ребёнком никто не занимается, то из него вырастает гуманитарий, «я-художник-я-так-вижу» или (что ещё хуже) либерал.

И вот как ты думаешь — как люди, которые понимают (это ключевое слово) некомпетентность маленького ребёнка или такого вот «художника», будут смотреть на них со стороны? Есть варианты?

А я тебе скажу — здесь 3 стадии:
1. Снисходительность. Тобишь, простыми словами, как на глупенького.
2. Снисходительность будет длиться до тех пор, пока такие люди, считая себя самыми умными, не начинают лезть со своим видением в жизнь других, навязывая им это своё видение. Естессна, у людей с более высокой компетенцией ничего кроме раздражения это вызывать не будет.
3. Ну и, если эго таких людей не образумилось, ничего, кроме отвращения, они у социума уже не вызывают.

(кстати, ничем пида.асов не напоминает? ну тех самых, которые с радужными флагами, всюду выпячивают своё «видение»)

И скитается потом этот «художник» по разным социумам и везде проходит эти три стадии. И сидит такой на весь мир обиженный и размышляет — «А чего это все вокруг такие охуевшие? За что они меня так ненавидят?».
Но не понимает бедный «художник» причинно-следственной связи, гуманитарий он, всё видит по-своему.
Меняет одну работу, вторую — везде его не понимают. До тех пор пока не натыкается на сайт «эха москвы» или не встречает стайку других таких же самопровозглашённых «особенных».
Ну дальше вы поняли.


Ну и собссна, к чему всё это.
Мне кажется это очевидным, но тебе, скорей всего, придётся подсказать — в этой самой аналогии ты тот самый маленький ребёнок, который пошёл по третьему пути, со всеми вытекающими.
И вот в этой ветке за пяток комментариев ты прошёл все три стадии. Умудрился же ведь.

Но эта аналогия относится больше к тому диалогу.

С текущим диалогом всё проще.

В разных кругах приняты свои нормы поведения, общения и ведения диалога. Так вот.
Тебе говорят — в текущем сообществе ты делаешь что-то, чего в этом сообществе не принято.
Но ты ложишь на это хер с высокой колокольни, мотивируя это тем, что «я-так-вижу».
Пришёл в сообщество — будь добр соблюдать устоявшиеся здесь нормы общения и поведения. Не хочешь? Ну так тогда не удивляйся, что тебе высказали персональное «фу» на эту тему. А если снова дойдёшь до 3й стадии — не удивляйся, что тебя забанят.
Не надо искать проблемы в других. Начни с себя. Это вообще должно быть жизненным кредом.
Печально, что такое нужно объяснять.

Конечно, все мы люди, где-то не можем сдержать эмоции, где-то грубим. Мои комментарии тоже не раз удалялись. Но я же не говорю, мол, «Вась, с хера ли? Чо, правда глаза режет?». Не говорю, потому что понимаю, что палку перегибал. Но ты же…

И да, полемика у тебя отвратительная — прикидываясь белым и пушистым, завуалированно оскорбляешь собеседника, в собственном глазу бельма не замечая.
А не пгм'нутый ли ты часом?


upd. обидно то, что ты, скорей всего, ничему не внемлишь, а я в очередной раз зря потратил на тебя время. Ну да ладно, раз уж написал — не удалять ведь.
Алексей Карташов
30 апреля 2015, 15:54
0
Вот это поврот! А я б никогда и не вспомнил бы ту ветку диалога, если б не напомнил)