Pull to refresh
4
Karma
0
Rating
  • Followers
  • Following

Изобретая велосипед или поиск отсутствующего значения ID в MySQL таблице

По существу если клиент сможет сам обработать и сгенерировать несуществующие id можно обойтись таким запросом
SET @prev=1;
SELECT @prev as `before_id`,`id` as `after_id`, `id`-@prev-1 as count_ids,  @prev:=`id`  FROM `test` ORDER BY `id` ASC

Изобретая велосипед или поиск отсутствующего значения ID в MySQL таблице

Добавлю еще как вариант.В целях чтобы было.
Вычисляет все id которые не назначены.

DELIMITER //
DROP FUNCTION  IF EXISTS createRowEmptyId//
# вычисляет диапазон пропущенных id между before_id и after_id и возвращает строку для под запроса (union select id as alias;)
# аргумент alias назначает псевдоним колонке
# в глобальную переменную @prev устанавливается последний установленный id  по параметру after_id
CREATE FUNCTION `createRowEmptyId`(before_id INT, after_id INT,alias VARCHAR(25))
 RETURNS TEXT
 DETERMINISTIC
BEGIN
	DECLARE answer TEXT DEFAULT '';
	DECLARE count_ids INT DEFAULT 0;
    SET count_ids=after_id-before_id-1;
	WHILE count_ids>0 DO
		SET answer=CONCAT_WS(' ',answer,'UNION SELECT ',after_id-count_ids,' as ',alias);
		SET count_ids=count_ids-1;
	END WHILE;
	set @prev=after_id;
	RETURN answer;
END//
DELIMITER ; 
SET @prev=0;
# Основной Запрос
SELECT @select:= GROUP_CONCAT(DISTINCT createRowEmptyId(@prev,`id`) SEPARATOR ' ')  FROM  `test` ORDER BY `id` ASC ; 
# Подзапрос который сформирует таблицу несуществующих id
set @select=TRIM(@select); 
set @select=CONCAT_WS(' ',TRIM(LEADING 'UNION ' FROM @select),'ORDER BY `empty_id` ASC'); 
PREPARE stmt FROM @select;
EXECUTE stmt;
DROP FUNCTION createRowEmptyId

JS. Proxy. Подводный камень, о котором нужно знать

«суть статьи: всем привет я знаю что такое this и bind»
«Суть комментария — можно я попиарюсь».
В моем случае, я столкнулся с такой проблемой, нашел причины и предоставил на обозрение.
Так как Proxy это новая фишка и еще не объезженная, народ еще не раз вернется к этой теме.

JS. Proxy. Подводный камень, о котором нужно знать

Это просто синтаксический сахар.
Например разработчику проще воспринять.
new MyProxy(target);

чем

let myHandlerProxy={....};
.......;
new Proxy (target,myHandlerProxy); 


Если вы консервативны, вас спасет и такой вариант при объявлении класса MyProxy
new Proxy(target,MyProxy.prototype);


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

PHPDump — Отладка в консоли Google Chrome и взаимодействие с CMS MODX

Почитал доку Tracy. Там при анализе объектов и массивов, есть ограничение по глубине вложений. Я в свое время встретился с таким же ограничением в PhpConsole и отсутствием детализированных данных. Это меня и побудило написать собственную реализацию по анализу массивов и объектов. В моем случае можно анализировать толстые объекты и массивы с неограниченной вложенностью. Конечно может возникнуть ошибка memory size, но она возникнет при очень жирных объектах. Пока это единственное ограничение. По степени необходимости, по этой части будет рефакторинг.
С объектом $modx со всеми его вложениями справляется в легкую. Также петли, не повлияют на анализ. Они вычисляются и исключаются.
А рекурсивная детализация объекта, не однократно спасала. Можно посмотреть как детализирует состояние объекта. через вызов \deb::dump($obj); Возможно есть другие компоненты которые я не до оценил. Но на меня нашло вдохновение написать что то собственное.

PHPDump — Отладка в консоли Google Chrome и взаимодействие с CMS MODX

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

PHPDump — Отладка в консоли Google Chrome и взаимодействие с CMS MODX

Проект является не только для MODX. Я написал его для себя. Просто поделился. Будет неоднократный рефакторинг и code review как руки дойдут. Но пока что работает, не хочу трогать и прокачивать.

PHPDump — Отладка в консоли Google Chrome и взаимодействие с CMS MODX

Причин несколько.
Реализация по большому счету не должна интегрироваться в фреймворки или CMS, а выполняться параллельно. Один раз установил на dev машине, потом где необходим анализ, в том проекте и подключаешь. Изначально пользовался с помощью плагина. Но почему отказался от такой реализации*? А до инициализации события MODXInit сколько строчек кода пропустим*? Может необходимо отладить код в самом MODX? К примеру, в один момент необходимо было провести анализ Index.php, чтобы внести свою корректировку для мультисайтовости. А если код падает до инициализации компонента, то вычислить проблему вообще не возможно. Если PHPDump будет запускать ранее до запуска основного сценария, то проблемы можно отслеживать.


Information

Rating
Does not participate
Registered
Activity