Как-то автор перескочил через TUI. UI не обязательно может быть графическим. Он вполне может быть себе текстовым. Тот же небезызвестный Norton Commander тому пример. А уж сколько софта было написано на текстовом фреймворке TurboVision…
Они не только не умеют считать буквы, они действительно не знают, из каких букв состоит слово. Попросил LLM объяснить, как запомнить ключ -n для указания схемы утилите pg_dump.
Прошу искренне извинить. Из контекста на Вас подумалось.
Потому что это первое на что смотришь в плане запроса
Так я ведь с этим и не спорю. Все знают, что seq scan на больших объёмах данных это нехорошо.
Ну это лично Ваше восприятие
Ну да. Это моё восприятие. Мне показалось, что автор имеет ввиду, что для поиска соподчинённых данных нужно всего лишь добавить ключевые поля. Даже своё восприятие аргументировал. А тут мне минусы лепят и рассказывают очевидные вещи о пользе индексирования. Я уж весь мозг изломал, что же я такого крамольного написал.
Нет, так как фраза "к получению всех владельцев домашнего питомца" уже подразумевает, что у домашнего питомца могло быть несколько владельцев.
Абсолютно согласен. Просто было лениво рисовать pivot таблицу. Но рад, что Вы наконец-то внимательно прочитали текст сообщения и даже потратили время на аргументацию. Жаль, что минус не отозвали.
Индексы позволяют избежать сканирования таблиц.
Каким образом это утверждение соотносится с утверждением автора:
При работе с реляционной базой данных можно перейти от получения всех домашних питомцев человека к получению всех владельцев домашнего питомца, добавив в таблицы один-два индекса.
Никакие внешние ключи сюда не прикрутите, хотя консистентность можно контролировать триггерами.
Да ладно?
CREATE TABLE owners_to_pets (
Id integer NOT NULL,
Valid daterange NOT NULL,
own_id int NOT NULL,
pet_id int NOT NULL,
CONSTRAINT owners_to_pets_PK_idx
EXCLUDE USING GIST (pet_id WITH =, Valid WITH &&),
-- в конкретный период у питомца может быть только один владелец
-- Внешние ключи
CONSTRAINT fk_owners
FOREIGN KEY (own_id)
REFERENCES owners(Id)
ON DELETE CASCADE,
CONSTRAINT fk_pets
FOREIGN KEY (pet_id)
REFERENCES pets(Id)
ON DELETE CASCADE
);
Держите внешние ключи. Но будет и без них работать, как я и написал выше. Просто просторечно поля вида own_id и pet_id называют внешними ключами, хотя внешние ключи могут быть и не построены.
Выборка всех владельцев питомца возможна по индексу owners_to_pets_PK_idx без сканирования таблицы owners_to_pets. А вот для того, чтобы наоборот, найти всех питомцов владельца на конкретный момент времени без сканирования таблицы, потребуется еще один индекс …
Я откровенно не понимаю, почему Вы прицепились к сканированию таблицы?
Поясняю, даже без единого индекса, СУБД найдёт искомые записи, уж как оно будет это делать, эффективно или нет, неважно. НАЙДЁТ!
А вот если выкинуть поля own_id и pet_id — НЕ НАЙДЁТ!
В оригинале не идёт речь о том, что можно получить всех владельцев домашнего питомца без использования seq scan. А о том, что их можно получить, добавив...
Вот на мой взгляд, добавив ключевые поля. А никак не индексы.
Внешние ключи никак не влияют на производительность выборки данных
Я где-то утверждал обратное?
Смотрите внимательно: есть таблица, содержащая виды (типы) домашних питомцев. Всё верно? В оригинале:
можно перейти от получения всех домашних питомцев человека
Есть таблица владельцев домашних животных. В оригинале:
перейти ... к получению всех владельцев домашнего питомца
Таблица: Владельцы Таблица: Домашние Животные
+----+------------+ +----+------------+------------+
| ID | Имя | | ID | Вид | Владелец_ID|
+----+------------+ +----+------------+------------+
| 1 | Иван | | 1 | Кошка | 1 |
| 2 | Анна | | 2 | Собака | 1 |
| 3 | Ольга | | 3 | Хомяк | 2 |
| 4 | Павел | | 4 | Попугай | 3 |
+----+------------+ +----+------------+------------+
Получить владельцев домашних питомцев можно создав реляцию между этими двумя таблицами. И индексы здесь не при чём.
Нам нужно ключевое поле, на которое можно ссылаться и индекс по нему может быть вообще не построен. И внешний ключ. Строго говоря, внешний ключ тоже не обязателен. Но для целей самодокументирования и обеспечения ссылочной целостности — крайне желателен.
Вот и получается, что Вы не поняли о чём идёт речь, но минус влепили.
При работе с реляционной базой данных можно перейти от получения всех домашних питомцев человека к получению всех владельцев домашнего питомца, добавив в таблицы один-два индекса.
Потому, что существуют виртуальные хостинги. Это когда всё настроено хостинг-провайдером, а пользователь только файлики в папочки по sftp заливает. Запустить что-то на таком "сервере" не получится, а вот загрузить сертификаты через web-приложение провайдера можно. Как я понял, у ТС именно такая ситуация.
факт передачи ЯО одной стране в обмен на обещания от другой - это какой-то оксюморон, который уже говорит о том какие руководители на украине были с самого начала.
Представьте, что у вас есть, скажем, бочка дорогостоящего и сильнодействующего ядохимиката. Поля от вредителей обрабатывать. Но у вас нет безопасного средства доставить этот ядохимикат на поля, и нет безопасного способа воспользоваться этим ядохимикатом. А условия хранения этого ядохимиката сложные. Нужно поддерживать температуру, влажность, да и сама бочка скоро проржавеет и потечёт. А денег на всё это нету. Что делать с этой бочкой?
И тут сосед предлагает: отдай эту бочку мне. Я о ней позабочусь.
Ну так это компилируемый язык, и всё, что нужно знать IDE для отладки это заранее подготовленную матаинформацию, что с чем соотносить в окне отладки.
Так-то у меня и в Turbo-Pascal 5 не было проблем с интегрированной отладкой.
Hidden text
А в случае Docker скорее надо сравнивать с standalone отладкой. На примере того же TP-5, представим, что мы разработали программу. Скажем, управляющую оборудованием в операционной (истинная правда, такая программа была написана даже на 4-м Паскале). И в ней что-то идёт не так. Причём в лабораторных условиях проблему воспроизвести не удаётся. Тогда приходится вылезать из удобной IDE, брать исходники, создавать файлы с метаинформации, standalone debugger и идти дебажить в полевые условия.
Так что вот такой кейс ближе к описываемому сценарию отладки.
Более того, избыток жидкости плохо сказывается на почках, которые эту жидкость обязаны выводить, а также приводит к повышению того самого кровяного давления, которого все так боятся. Лично мне непонятно, откуда взялась эта мантра про распитие воды. Хорошо, если почки здоровые и излишек без проблем выводится.
В догонку: воспроизвёл ситуацию. Ошибка была 300, а не 390. Если установлен один протокол XRay нет трафика при включённом VPN. AmneziaWG работает нормально.
Как-то автор перескочил через TUI. UI не обязательно может быть графическим. Он вполне может быть себе текстовым. Тот же небезызвестный Norton Commander тому пример. А уж сколько софта было написано на текстовом фреймворке TurboVision…
Они не только не умеют считать буквы, они действительно не знают, из каких букв состоит слово. Попросил LLM объяснить, как запомнить ключ -n для указания схемы утилите pg_dump.
Ответ удивил
Слишком много легаси и всевозможных древних зависимостей тащат за собой.
Прошу искренне извинить. Из контекста на Вас подумалось.
Так я ведь с этим и не спорю. Все знают, что seq scan на больших объёмах данных это нехорошо.
Ну да. Это моё восприятие. Мне показалось, что автор имеет ввиду, что для поиска соподчинённых данных нужно всего лишь добавить ключевые поля. Даже своё восприятие аргументировал. А тут мне минусы лепят и рассказывают очевидные вещи о пользе индексирования. Я уж весь мозг изломал, что же я такого крамольного написал.
О, и верно. Был не прав.
Абсолютно согласен. Просто было лениво рисовать pivot таблицу. Но рад, что Вы наконец-то внимательно прочитали текст сообщения и даже потратили время на аргументацию. Жаль, что минус не отозвали.
Каким образом это утверждение соотносится с утверждением автора:
Да ладно?
Держите внешние ключи. Но будет и без них работать, как я и написал выше. Просто просторечно поля вида own_id и pet_id называют внешними ключами, хотя внешние ключи могут быть и не построены.
Я откровенно не понимаю, почему Вы прицепились к сканированию таблицы?
Поясняю, даже без единого индекса, СУБД найдёт искомые записи, уж как оно будет это делать, эффективно или нет, неважно. НАЙДЁТ!
А вот если выкинуть поля own_id и pet_id — НЕ НАЙДЁТ!
В оригинале не идёт речь о том, что можно получить всех владельцев домашнего питомца без использования seq scan. А о том, что их можно получить, добавив...
Вот на мой взгляд, добавив ключевые поля. А никак не индексы.
Я где-то утверждал обратное?
Смотрите внимательно: есть таблица, содержащая виды (типы) домашних питомцев. Всё верно? В оригинале:
Есть таблица владельцев домашних животных. В оригинале:
Получить владельцев домашних питомцев можно создав реляцию между этими двумя таблицами. И индексы здесь не при чём.
Нам нужно ключевое поле, на которое можно ссылаться и индекс по нему может быть вообще не построен. И внешний ключ. Строго говоря, внешний ключ тоже не обязателен. Но для целей самодокументирования и обеспечения ссылочной целостности — крайне желателен.
Вот и получается, что Вы не поняли о чём идёт речь, но минус влепили.
Скорее не индекса, а внешних ключа.
Потому, что существуют виртуальные хостинги. Это когда всё настроено хостинг-провайдером, а пользователь только файлики в папочки по sftp заливает. Запустить что-то на таком "сервере" не получится, а вот загрузить сертификаты через web-приложение провайдера можно. Как я понял, у ТС именно такая ситуация.
50% всех несчастных случаев начинается со слов: «смотрите, как я умею…» Остальные 50% со слов «нет, смотри как надо…»
Представьте, что у вас есть, скажем, бочка дорогостоящего и сильнодействующего ядохимиката. Поля от вредителей обрабатывать. Но у вас нет безопасного средства доставить этот ядохимикат на поля, и нет безопасного способа воспользоваться этим ядохимикатом. А условия хранения этого ядохимиката сложные. Нужно поддерживать температуру, влажность, да и сама бочка скоро проржавеет и потечёт. А денег на всё это нету. Что делать с этой бочкой?
И тут сосед предлагает: отдай эту бочку мне. Я о ней позабочусь.
Ну вот и вся краткая история…
Ну так это компилируемый язык, и всё, что нужно знать IDE для отладки это заранее подготовленную матаинформацию, что с чем соотносить в окне отладки.
Так-то у меня и в Turbo-Pascal 5 не было проблем с интегрированной отладкой.
Hidden text
А в случае Docker скорее надо сравнивать с standalone отладкой. На примере того же TP-5, представим, что мы разработали программу. Скажем, управляющую оборудованием в операционной (истинная правда, такая программа была написана даже на 4-м Паскале). И в ней что-то идёт не так. Причём в лабораторных условиях проблему воспроизвести не удаётся. Тогда приходится вылезать из удобной IDE, брать исходники, создавать файлы с метаинформации, standalone debugger и идти дебажить в полевые условия.
Так что вот такой кейс ближе к описываемому сценарию отладки.
Запилил подробнейший туториал.
Согласен. Крайне нездоровое увлечение. Как минимум пользы здоровью оно не приносит. Если не вредит, уже хорошо.
Сам спросил, сам отвечу: не надо пробрасывать порт от xdebug из контейнера.
Сами средиземноморцы утверждают, что на продолжительность жизни влияет не их диета, а соблюдение сиесты.
Более того, избыток жидкости плохо сказывается на почках, которые эту жидкость обязаны выводить, а также приводит к повышению того самого кровяного давления, которого все так боятся. Лично мне непонятно, откуда взялась эта мантра про распитие воды. Хорошо, если почки здоровые и излишек без проблем выводится.
@ddruganov
Добрый день! Что-то не выходит аленький цветочек. В Windows всё немного не так, но не суть.
Вот мой Dockerfile сделанный для опытов:
Hidden text
Он просто запускает сервер PHP.
Для версии PHP 7.4 подходит xdebug версии 3. Поэтому добавил в Dockerfile его.
docker-compose.yml выглядит вот так:
Hidden text
Контейнер собирается, запускается, работает. В корень проекта я положил index.php с вызовом phpinfo(); Видно, что xdebug подключён.
Hidden text
Сервер добавлен
Hidden text
Удалённая отладка добавлена:
Hidden text
Запускаю контейнер:
Hidden text
Контейнер успешно стартует. По адресу на хосте localhost:8080 открывается страничка.
Захожу в контейнер. Смотрю лог xdebug
Hidden text
[1] Log opened at 2024-08-07 16:20:12.945517
[1] [Step Debug] INFO: Connecting to configured address/port: host.docker.internal:9001.
[1] [Step Debug] INFO: Connected to debugging client: host.docker.internal:9001 (through xdebug.client_host/xdebug.client_port). :-)
[1] [Step Debug] ->
[1] [Step Debug] ->
[1] Log closed at 2024-08-07 16:20:12.952640
Видно, что xdebug обращается к хосту без проблем. Дело осталось за малым, чтобы PHPStorm принял данные от xdebug.
Запускаю удалённую отладку:
Hidden text
Получаю ошибку: Port 9001 is busy.
Пытаюсь выяснить, кто же его занял: netstat -ano | findstr :9001 и вижу, что его занял PHPStorm ранее запущенным контейнером.
Что я делаю не так?
Спасибо, нашёл.
В догонку: воспроизвёл ситуацию. Ошибка была 300, а не 390. Если установлен один протокол XRay нет трафика при включённом VPN. AmneziaWG работает нормально.
Мне не понятно, как переключаться. Какие действия нужно произвести в интерфейсе.
Вот я вижу, что стоят оба протокола. Но какой из них выбран?
Hidden text