anonymous@RULINUX.NET~# Last login: 2024-11-25 11:00:35
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

а статьям всё, кирдык?

а то у меня бекапов то нету! =(

vilfred(*) (2011-10-04 12:45:15)

[Ответить на это сообщение]
[#] [Добавить метку] [Редактировать] Ответ на: а статьям всё, кирдык? от vilfred 2011-10-04 12:45:15
avatar
Скрыть

Re:а статьям всё, кирдык?

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

sql
SELECT t.id, t.cid, t.attached, t.prooflink, t.approved, t.approved_by, t.approve_timest, t.subsection, c.subject, c.comment, c.uid, c.timest FROM threads t INNER JOIN comments c ON t.id = c.tid WHERE t.approved=true AND c.id IN (SELECT cid FROM threads WHERE t.section=1) ORDER BY t.attached <>true ASC, id DESC LIMIT 10 OFFSET 0
 


выдает

10 запис(ь/и/ей)
Время выполнения: 27,272.181 мсек
SQL-запрос выполнен.

Буду ковырять дальше.

Tux-oid(*)(2011-10-04 12:54:14)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 12:54:14
avatar
Скрыть

Re:а статьям всё, кирдык?

ясно.... не знаю что там с постгрисом, понятия даже не имею

vilfred(*)(2011-10-04 13:07:15)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 12:54:14
avatar
Скрыть

Re:а статьям всё, кирдык?

Чота я недопонял, если "AND c.id IN (SELECT cid FROM threads WHERE t.section=1)" заменить на "AND t.section=1" - что нибудь в логике изменится?

anonymous(*)(2011-10-04 13:08:42)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 12:54:14Фильтры
avatar
  • порно
Скрыть

Re:а статьям всё, кирдык?

> выдает
> 10 запис(ь/и/ей)
> Время выполнения: 27,272.181 мсек
> SQL-запрос выполнен.
top в это время небось показывает приличный %wa?

anonymous(*)(2011-10-04 13:13:05)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 13:08:42
avatar
Скрыть

Re:а статьям всё, кирдык?

Да изменится. Так как ты предлагаешь выводятся все последние сообщения, а не только последние новости. Тут не в запросе дело. Запрос вполне корректный. К тому-же на rulinux.dyndns.org и на локалхосте у меня он обрабатывается быстро.

Tux-oid(*)(2011-10-04 13:17:21)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 13:13:05
avatar
Скрыть

Re:а статьям всё, кирдык?

>top в это время небось показывает приличный %wa?
0.0%wa

Tux-oid(*)(2011-10-04 13:21:17)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 13:17:21
avatar
Скрыть

Re:а статьям всё, кирдык?

> Так как ты предлагаешь выводятся все последние сообщения, а не только последние новости
"AND t.section=1" разве не отфильтрует только то, что тебе нужно?

anonymous(*)(2011-10-04 13:25:29)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 13:21:17
avatar
Скрыть

Re:а статьям всё, кирдык?

> 0.0%wa
Хм, значит постгрес жрёт 100% проца? Что там вообще кажет top?

anonymous(*)(2011-10-04 13:27:40)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 13:25:29
avatar
Скрыть

Re:а статьям всё, кирдык?

>"AND t.section=1" разве не отфильтрует только то, что тебе нужно?
Я даже засомневался слегка, что даже открыл phppgadmin и проверил. Нет результаты не те.

Tux-oid(*)(2011-10-04 13:32:08)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 13:27:40
avatar
Скрыть

Re:а статьям всё, кирдык?

Угу. Хавает 100%, вот только не пойму почему. На локалхосте не отжирает. Правда у меня на локалке версия 9.0, а на серве 8.3

Tux-oid(*)(2011-10-04 13:37:42)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 12:54:14
avatar
Скрыть

Re:а статьям всё, кирдык?

>PostgreSQL так медленно отдает результаты запросов.
Он, наверное, по-дефолту настроен. Там у него какая-то странная конфигурация.

А может проще сделать кэш? Есть memcached какой-нибудь на сервере? Ну или, на крайний случай, что-нибудь на файлах соорудить?

SystemV(*)(2011-10-04 13:40:38)

Emacs-w3m/1.4.414 w3m/0.5.3
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 13:32:08
avatar
Скрыть

Re:а статьям всё, кирдык?

> Я даже засомневался слегка, что даже открыл phppgadmin и проверил. Нет результаты не те.
Я думаю это потому, что они упорядочиваются не так, как ты предполагаешь. в выражении "id DESC" явно укажи таблицу на чей ид он должен ориентироваться: "c.id DESC"

По скорости исполнения изменилось чо?

anonymous(*)(2011-10-04 13:43:40)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 13:43:40
avatar
Скрыть

Re:а статьям всё, кирдык?

>По скорости исполнения изменилось чо?
Время выполнения: 38,010.538 мсек

Tux-oid(*)(2011-10-04 13:47:24)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 13:37:42
avatar
Скрыть

Re:а статьям всё, кирдык?

> Угу. Хавает 100%, вот только не пойму почему. На локалхосте не отжирает. Правда у меня на локалке версия 9.0, а на серве 8.3
Если диска он не ждёт, значит роется в кеше. Да и план запроса мог поменяться в зависимости от версии и внешних условий.

anonymous(*)(2011-10-04 13:48:23)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 13:47:24
avatar
Скрыть

Re:а статьям всё, кирдык?

> Время выполнения: 38,010.538 мсек
Ничего страшного. Запрос лупает сперва по сообщениям, которых в базе намного больше и выдёргивает для них треды. Ты убрал ограничение - стало больше по чему лупать - в памяти это немного дольше, но если бы дело дошло до подкачек тредов с диска, то наоборот - намного быстрее.

Сделай analyze таблицам, может до него дойдёт что лучше начать с тредов. <i>Поправка, подумал тут и решил что он скорее всего лупает как раз по тредам, на каждый сканируя базу сообщений, но не суть - рекоммендации остаются в силе</i>

comments.tid я бы индексом сделал

Есть возможность как-то дополнительно ограничить рабор данных просматриваемый в comments? Например если ты будешь фильтровать запрос по timest чтобы выдернуть записи за последний месяц - никто и не и не заметит разницы ведь?

Разница с другими окружениями - возможно у тебя там база комментов намного меньше?

Для сравнения запросов на разных серверах используй EXPLAIN ANALYZE

По функциональности запроса - после исправления ORDER BY он выдаёт то, что ты хотел?



anonymous(*)(2011-10-04 14:12:21)
Отредактировано anonymous по причине "не указана"
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 14:12:21
avatar
Скрыть

Re:а статьям всё, кирдык?

Заменил запрос

sql
SELECT t.id, t.cid, t.attached, t.prooflink, t.approved, t.approved_by, t.approve_timest, t.subsection, c.subject, c.comment, c.uid, c.timest FROM threads t INNER JOIN comments c ON t.id = c.tid WHERE t.approved=true AND c.id IN (SELECT cid FROM threads WHERE t.section=1) ORDER BY t.attached <>true ASC, id DESC LIMIT 10 OFFSET 0
 


на

sql
SELECT t.id, t.cid, t.attached, t.prooflink, t.approved, t.approved_by, t.approve_timest, t.subsection, c.subject, c.comment, c.uid, c.timest FROM threads t INNER JOIN comments c ON t.id = c.tid WHERE t.approved=true AND EXISTS (SELECT cid FROM threads WHERE t.section=1 AND cid=c.id)  ORDER BY t.attached <>true ASC, id DESC LIMIT 10 OFFSET 0;
 


и постгрес в 2 раза быстрее выдал результат.

Tux-oid(*)(2011-10-04 14:39:09)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 14:39:09
avatar
Скрыть

Re:а статьям всё, кирдык?

Ну не нужен тебе этот луп во where :) Проверь функциональность запроса без него и устраняй причину тормозов.

anonymous(*)(2011-10-04 14:45:07)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 14:45:07
avatar
Скрыть

Re:а статьям всё, кирдык?

>Ну не нужен тебе этот луп во where :)
Без него результат становится совсем другим.

Tux-oid(*)(2011-10-04 15:17:44)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 15:17:44
avatar
Скрыть

Re:а статьям всё, кирдык?

Убрал таки цикл из WHERE

sql
SELECT t.id, t.cid, t.attached, t.prooflink, t.approved, t.approved_by, t.approve_timest, t.subsection, c.subject, c.comment, c.uid, c.timest FROM threads t INNER JOIN comments c ON t.cid = c.id WHERE t.approved=true AND t.section=1 ORDER BY t.attached <>true ASC, t.id DESC LIMIT 10 OFFSET 0
 


Следовало еще вместо ON t.id = c.tid указать ON t.cid=c.id

Tux-oid(*)(2011-10-04 15:33:13)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 15:17:44
avatar
Скрыть

Re:а статьям всё, кирдык?

Ты "id DESC" на "c.id DESC" поменял в order by?

анализ таблиц как-нибудь сказался на производительности или ты его еще не запускал?

Кстати, ты не пробовал поменять местами таблицы в INNER JOIN? Это в идеале не должно ни на что повлиять, но хрен его знает..

anonymous(*)(2011-10-04 15:35:53)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 15:33:13
avatar
Скрыть

Re:а статьям всё, кирдык?

> Следовало еще вместо ON t.id = c.tid указать ON t.cid=c.id
Я думал ты последние сообщения выгребаешь для самых свежих тредов данного раздела, а не самые первые (или t.cid - это не стартовое сообщение?).

anonymous(*)(2011-10-04 15:54:09)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 15:54:09
avatar
Скрыть

Re:а статьям всё, кирдык?

>или t.cid - это не стартовое сообщение
Стартовое. Это запрос с главной. Но все равно медленно выполняется. <!--Страница сгенерировалась за 4.626793 сек.-->

Tux-oid(*)(2011-10-04 15:58:08)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 15:58:08
avatar
Скрыть

Re:а статьям всё, кирдык?

analyze сотвори уже

anonymous(*)(2011-10-04 16:10:52)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 16:10:52
avatar
Скрыть

Re:а статьям всё, кирдык?

INFO:  analyzing "public.blocks" 
INFO: "blocks": scanned 1 of 1 pages, containing 5 live rows and 0 dead rows; 5 rows in sample, 5 estimated total rows
INFO: analyzing "public.faq"
INFO: "faq": scanned 0 of 0 pages, containing 0 live rows and 0 dead rows; 0 rows in sample, 0 estimated total rows
INFO: analyzing "public.filters"
INFO: "filters": scanned 1 of 1 pages, containing 8 live rows and 0 dead rows; 8 rows in sample, 8 estimated total rows
INFO: analyzing "public.links"
INFO: "links": scanned 1 of 1 pages, containing 4 live rows and 0 dead rows; 4 rows in sample, 4 estimated total rows
INFO: analyzing "public.sections"
INFO: "sections": scanned 1 of 1 pages, containing 4 live rows and 0 dead rows; 4 rows in sample, 4 estimated total rows
INFO: analyzing "public.settings"
INFO: "settings": scanned 1 of 1 pages, containing 6 live rows and 0 dead rows; 6 rows in sample, 6 estimated total rows
INFO: analyzing "public.groups"
INFO: "groups": scanned 1 of 1 pages, containing 3 live rows and 0 dead rows; 3 rows in sample, 3 estimated total rows
INFO: analyzing "public.sessions"
INFO: "sessions": scanned 1 of 1 pages, containing 5 live rows and 31 dead rows; 5 rows in sample, 5 estimated total rows
INFO: analyzing "public.marks"
INFO: "marks": scanned 1 of 1 pages, containing 4 live rows and 0 dead rows; 4 rows in sample, 4 estimated total rows
INFO: analyzing "public.themes"
INFO: "themes": scanned 1 of 1 pages, containing 5 live rows and 0 dead rows; 5 rows in sample, 5 estimated total rows
INFO: analyzing "public.threads"
INFO: "threads": scanned 126 of 126 pages, containing 9357 live rows and 1 dead rows; 3000 rows in sample, 9357 estimated total rows
INFO: analyzing "public.comments"
INFO: "comments": scanned 3000 of 12322 pages, containing 26386 live rows and 23 dead rows; 3000 rows in sample, 108376 estimated total rows
INFO: analyzing "public.subsections"
INFO: "subsections": scanned 3 of 3 pages, containing 56 live rows and 0 dead rows; 56 rows in sample, 56 estimated total rows
INFO: analyzing "public.users"
INFO: "users": scanned 31 of 31 pages, containing 461 live rows and 130 dead rows; 461 rows in sample, 461 estimated total rows
ANALYZE


Tux-oid(*)(2011-10-04 16:18:55)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 16:18:55
avatar
Скрыть

Re:а статьям всё, кирдык?

На скорость выполнения запроса повлияло?

anonymous(*)(2011-10-04 16:26:31)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 16:26:31
avatar
Скрыть

Re:а статьям всё, кирдык?

Ну этот запрос выполняется моментально, сама главная генерится медленно.

Tux-oid(*)(2011-10-04 16:30:26)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 16:30:26
avatar
Скрыть

Re:а статьям всё, кирдык?

Т.е. с четырёх секунд после аналайза упало до чуть ли не нуля? о_О

anonymous(*)(2011-10-04 16:32:25)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 16:32:25
avatar
Скрыть

Re:а статьям всё, кирдык?

а-а, дошло.

anonymous(*)(2011-10-04 16:33:51)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 16:33:51
avatar
Скрыть

Re:а статьям всё, кирдык?

Так, хорошо. А кто теперь развлекает CPU на хосте: вебсервер, постгрес или %wa?

anonymous(*)(2011-10-04 16:37:40)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 16:37:40
avatar
Скрыть

Re:а статьям всё, кирдык?

Все тот-же постгрес отжирает 60% проца.

Tux-oid(*)(2011-10-04 16:42:56)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 16:42:56
avatar
Скрыть

Re:а статьям всё, кирдык?

Ищи дальше кто тормозит - разбей код на части и выводи время исполнения каждой части, смотри что там исполняется и соответственно подозрительные запросы.

anonymous(*)(2011-10-04 16:57:15)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 16:57:15
avatar
Скрыть

Re:а статьям всё, кирдык?

Чем я и занят.

Tux-oid(*)(2011-10-04 17:06:02)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 17:06:02
avatar
Скрыть

Re:а статьям всё, кирдык?

Кстати, а чего бы тебе просто не вставить код в метод base::select() и не выводить текст каждого запроса и продолжительность его исполнения в виде комментария html?

anonymous(*)(2011-10-04 17:11:47)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 17:11:47
avatar
Скрыть

Re:а статьям всё, кирдык?

Текст запроса итак выводится оттуда. А вставить счетчик туда я что-то не догадался.

Tux-oid(*)(2011-10-04 17:18:39)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 17:18:39
avatar
Скрыть

Re:а статьям всё, кирдык?

Ну так догадайся уже :)

anonymous(*)(2011-10-04 17:29:37)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 17:29:37
avatar
Скрыть

Re:а статьям всё, кирдык?

дольше всего выполняется запрос

sql
SELECT ALL * FROM comments WHERE timest > '2011-10-04 12:37:53' ORDER BY timest DESC OFFSET 0 LIMIT NULL
 


<!-- Запрос SELECT ALL * FROM comments WHERE timest > '2011-10-04 12:37:53' ORDER BY timest DESC OFFSET 0 LIMIT NULL выполнен за 0.066905 сек.--> все остальные не медленнее 0.000600 сек. Эти цифры настолько незначительные что я и не знаю откуда набегает в сумме 4 секунды.

Tux-oid(*)(2011-10-04 17:45:06)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 17:45:06
avatar
Скрыть

Re:а статьям всё, кирдык?

Ступил. Я посмотрел это на локалхосте.

Tux-oid(*)(2011-10-04 17:50:13)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 17:45:06
avatar
Скрыть

Re:а статьям всё, кирдык?

> Эти цифры настолько незначительные что я и не знаю откуда набегает в сумме 4 секунды.
Короткий запрос многократно выполняется в каком нибудь цикле (но ты бы увидел что у тебя в выхлопе повыше колена однообразных запросов - запросов длительностью 0.067 сек должно быть больше пятидесяти штук чтобы набрать 4 секунды), либо тормозит уже где-то в похапэ.

Кстати, ты 60% постгреса в ТОПе усмотрел на рабочей машине где запросы к основному сайту обрабатываются? И кто ел ещё 40%?

anonymous(*)(2011-10-04 17:55:13)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от Tux-oid 2011-10-04 17:50:13
avatar
Скрыть

Re:а статьям всё, кирдык?

> Я посмотрел это на локалхосте.
А у тебя там копия основной базы или пустышка?

anonymous(*)(2011-10-04 18:01:19)

[#] [Добавить метку] [Редактировать] Ответ на: Re:а статьям всё, кирдык? от anonymous 2011-10-04 18:01:19
avatar
Скрыть

Re:а статьям всё, кирдык?

Копия

anonymous(*)(2011-10-04 18:39:38)

Mozilla/5.0 (X11; Linux i686; rv:7.0) Gecko/20110922 Firefox/7.0 SeaMonkey/2.4
Этот тред читают 4 пользователя:
Анонимных: 4
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!