@@zproger не знаю сталкивались Вы с данной темой ранее или нет, но скажу что работа в докере называется dev container. Те кто пишут на плюсах, применяют их очень часто, потому что с их обилием компиляторов и сборщиков держать это всё на своей системе = огромный риск. Я последние пару лет всю вэб разработку веду исключительно на дев контейнерах если это тимплей, потому что так фронтэндеру сказал прописать docker compose up и он радуется своему единому эндпоинту в виде nginx
pycss -pycss - это будущий css7! Прямо интересно стало, в чём соль, какова мейнстрим идея, для чего это может быть полезно? Пофантазировать бы, да собрать парсер pycss синтаксиса...
Почему сразу docker? Если цель просто посмотреть новую версию можно и просто окружение сделать, conda или pyvenv? Более понятные сообщения об ошибках , очень радуют. Почти также как и то, что аннотация теперь меньше похожа на мягкую рекомендацию. И на android с ios теперь можно запускать py или я что-то те так поняла? Спасибо за разбор. 7
Я бы не сказал что со скоростью C++, но будут в разы быстрее, чем это есть сейчас. Конечно это при условии, если все эти либы перепишут с использованием новых технологий. В тот же Flet не знаю как можно внедрить потоки, чтобы быстрее рендерить страницы. Думаю некоторые либы станут в разы быстрее, а некоторые не поменяются. Есть полно либ, которые уже под капотом работают с нативными либами, поэтому им особо смысла нет что-то ускорять.
@@zproger ты не знаешь, почему некоторые модули, например pykd есть не во всех python репозитариях? Почему такая свистопляска. В 3.9 есть а дальше нет.
Автор: Сейчас вы точно побежите с C/C++/Java устанавливать Пайтон из-за о чудо NO Gil ! Также автор через 5 мин: лан тут короч подкрутить тока, вот тут еще только с исходниками повозиться, а вот там рычажок подкрутить и все точно заработает лучше всех!!! В 100 раз быстрее аж на целых 15-20 % !!!
А я разве обещал еще одно видео? Вроде как то было финальное видео по настройке. Если есть предложения, то могу рассмотреть, однако с того момента мало что поменялось в сборке.
Использую Arch Linux с собственной оболочкой BSPWM. На канале есть видео по настройке оболочки и также редактора кода. Я бы рекомендовал это уже более продвинутым программистам, так как нужно под себя все это адаптировать. Если нужно решение из коробки, то я бы не стал это предлагать.
Скорость частично да, типизацию нет. Аннотации в Python нужны чисто как инструмент для статического анализа, чтобы разработчик увидел предупреждения и исправил их, но по факту это не влияет на запуск программы.
@@Nurtastube статический анализ типов очень помогает на самом деле, самая частая ошибка когда ты попытаешься взять атрибут от чего то что может быть None, и когда у тебя везде указаны аннотации типо тебе подскажет тайп чекер что ожидался тип 'какой-то' однако он 'какой-то или None', это сильно уменьшает количество рантайм ошибок AttributeError
В доке я не нашел инструкции о том, как пользоваться потоками без GIL, поэтому мудрить что-то от себя без официальной доки не стал, лучше подождать пока это организуют официально, и тогда я сделаю соответствующее видео.
Да так же, как и в других языках: мутексы, семафоры и прочее - никогда с этим проблем не было. Суть выпиливания gil - "истинная параллельность", то бишь в один момент времени смогут работать несколько потоков одного процесса (с gil происходит переключение с одного на другой (грубо - программа запускающая 2000 потоков из одного процесса будет работать +- одинаково что на проце с 1 ядром, что с 40, при условии, что ядра одинаковы по мощности, конечно), что даёт асинхронность, но не параллельность)
7 - в прод тащит 3.13 только с выходом 3.14) Кор разрабы не рекомендуют использовать 3.13 без гил - no gil и jit только начали внедрятся, пока просто наблюдаем и смотрим что делают. Кстати там в 3,13 должен был бы новый сборщик мусора, но его отменили из за того что он в некоторых случая замедлял работы в десятки раз (вроде бы на 40%)
Спасибо за обзор! Про JIT в python есть отличный доклад Никиты Соболева с True Tech Day. Что касается docker, то проще маунтить рабочую директорию в контейнер, чем каждый раз дёргать docker build. Я обычно оборачиваю сборку и вызов образа в interactive режиме в sh скрипт и пробрасываю нужную команду в docker run через "$@".
Может это недоразумение и ускорят, но жрать ресурсов компа оно станет точно ещё в разы больше и геморроя по доработке напильником явно прибавится. Поэтому, нет, не надо. Питон хорош для чего-нибудь простенького типа простых скриптов, автоматизации, а его тащат везде, куда не надо.
7, но я с версией 3.13 торопиться не буду. Помню, как года 1,5 назад стукнуло в голову мне и я решил перейти с 3.10 на 3.12, как только он вышел, а потом оказалось что есть куча библиотек, которые 3.12 пока не поддерживают. В итоге сейчас по прежнему использую 3.10.
Для меня особо нечего не изменилось. Куда не глян, кокое приложение не пытайса запускать везде просят отключить мультипроцесорность для винды иначе ничего работать не будет.
О, если вышел 3.13, то самое время перейти на 3.12. В последнюю версию не лезем, но надо поддерживать ауктуальность текущей, чтобы через 3-4 года ВНЕЗАПНО не заниматься кровавым рефакторингом.
Если ИИ заменит программистов, то он заменит и очень много других профессий, для людей практически не останется работы. В любом случае, программист сможет переквалифицироваться просто в того, кто будет этот ИИ корректировать и поддерживать, особо ничего не поменяется. Однако я не думаю, что программисты прям исчезнут, ибо для замены хотя бы 1-го программиста нужно дать для ИИ очень большие вычислительные ресурсы, которые будут стоить в десятки раз больше, чем типичная зарплата программисту. Например сейчас, чтобы развернуть модельку Llama 405b нужно очень много ресурсов, нужно промышленное оборудование, около 8 новейших видеокарт, сотни гб ОЗУ и несколько новейших процессоров. И эта модель даже рядом не стоит с тем, чтобы заменить хотя бы джуна.
@ZEELANDEX-1 Через 4года максимум заменит "лёгких" кодеров. Нужно минимум лет 10 чтобы реально что да началось и неиросеть написала какую нибудь игру.
7 это версия третьего питона которая до сих пор используется в некоторых проектах которые я вынужден использовать на работе но они более никогда не будут никем поддерживаться 😢😢😢
а есть ли текстовая версия данного материала (именно этого)? Прочесть спокойно как интересную статью... а то так слушать невозможно. Будто бы записаны заметки «чисто для себя»... Нет, ну молодец, спасибо, лайк и подписка... но минимальный уровень ораторского, искусства, пожалуйста внесите.
Это вы еще не видели мои предыдущие видео, я там разговариваю минимум в 2 раза быстрее, чем здесь) Это проблема, и я стараюсь с ней бороться, скорее всего она связана с тем, что я привык читать много книг в уме, поэтому мозг выдает информацию быстрее, чем я успеваю это воспроизвести. Нужно время, чтобы это пофиксить.
@@zproger из-за книг... на нервной почве или панических атак... пускай эти диагнозы ставят квалифицированные специалисты, на основании тщательных исследований. Я лишь прошу текстовую версию статьи, эдакий "script" к данному видео. Можно?
10:10 они конченые? python на андроид и так можно установить всегда было. ВООБЩЕ ВСЕГДА. android это дистрибутив линукс, и его окружение частично совместимо с GNU и python встает как родной
Ну ну :). Ребята для которых "gil вывозят"- не пустой звук, будут интересоваться как ставить пайтон 👍😂🎰
фу быть таким. Не придирайтесь.
А вдруг забыли как это делается?)))
@@zproger Хаххахахахах, реально)))
Хахаххахаха, да-да)
7...
1. Не обязательно использовать докер. Есть такая штука как pyenv.
2. Что за прикольная терминальная анимация в конце видоса?
Благодарю за дополнение. Анимация есть в моем репозитории bspwm в папке bin/color-scripts/pipes.sh. Гитхаб есть в описании к видео.
Что такое 7? Почему именно 7? Не понял его фразу в конце про людей перематывающих видео.
@@zproger не знаю сталкивались Вы с данной темой ранее или нет, но скажу что работа в докере называется dev container. Те кто пишут на плюсах, применяют их очень часто, потому что с их обилием компиляторов и сборщиков держать это всё на своей системе = огромный риск. Я последние пару лет всю вэб разработку веду исключительно на дев контейнерах если это тимплей, потому что так фронтэндеру сказал прописать docker compose up и он радуется своему единому эндпоинту в виде nginx
@@BoringNameU Видео надо до конца досматривать, тогда бы понял
0:34 про скрипт с "Ваш компьютер сейчас взорвётся" я громко заорал😂😂
Полезно и коротко , спасибо
Так понравился ролик что посмотрел его 7 раз.
pycss -pycss - это будущий css7!
Прямо интересно стало, в чём соль, какова мейнстрим идея, для чего это может быть полезно? Пофантазировать бы, да собрать парсер pycss синтаксиса...
Почему сразу docker? Если цель просто посмотреть новую версию можно и просто окружение сделать, conda или pyvenv?
Более понятные сообщения об ошибках , очень радуют. Почти также как и то, что аннотация теперь меньше похожа на мягкую рекомендацию.
И на android с ios теперь можно запускать py или я что-то те так поняла?
Спасибо за разбор. 7
Ну да, можно использовать pyenv, просто через докер более чистый способ.
Звучит бомбически!
7)
Благодарю
То есть теперь (или через некоторое время) программы на flet (или любого другого фреймворка) будут работать со скоростью (или почти) языка C++ ?
Я бы не сказал что со скоростью C++, но будут в разы быстрее, чем это есть сейчас. Конечно это при условии, если все эти либы перепишут с использованием новых технологий. В тот же Flet не знаю как можно внедрить потоки, чтобы быстрее рендерить страницы.
Думаю некоторые либы станут в разы быстрее, а некоторые не поменяются. Есть полно либ, которые уже под капотом работают с нативными либами, поэтому им особо смысла нет что-то ускорять.
мне кажется или коммменты больше 3-х строк по какой-то причине сами удаляются? (просто писал о своём kivy шаблоне с кучей фиксов)
уже питон 3.13 вышел? я ещё на 3.9 сижу)))
Ага) Я недавно перешел на 3.12 и доволен
@@zproger ты не знаешь, почему некоторые модули, например pykd есть не во всех python репозитариях? Почему такая свистопляска. В 3.9 есть а дальше нет.
жиза братан, я тоже его не обновлял лет 100
@@zproger +
Многие крупные фрейморвки поддерживают только 3.9.
Так а библиотеки та будут поддерживать так как face recognition только 3.7,,3.8,3.9 подскажит
Об этом говорил в конце ролика. В целом я бы не советовал сейчас переходить на него, ибо свежий продукт нужно еще протестить и адаптировать.
Ну берем с запасом, переходим не через пол года, а через 7 месяцев :)
Точно!
7 октября - отличный день, порадовали нас новой версией))
:))
О да... И мире новостей тоже нас удивили
на 3.13 не работает numba и соответственно все пакеты где это используется
7
cls - как же долго этого ждалось)
И еще кажется что питон в будущем претендует на замену баша
Ооо да, cls это нечто)
7. Спасибо за то что ты делаешь! Курсик куплю, чуть попозже ))
Благодарю. Рад что смог помочь 😉
Автор: Сейчас вы точно побежите с C/C++/Java устанавливать Пайтон из-за о чудо NO Gil !
Также автор через 5 мин: лан тут короч подкрутить тока, вот тут еще только с исходниками повозиться, а вот там рычажок подкрутить и все точно заработает лучше всех!!! В 100 раз быстрее аж на целых 15-20 % !!!
Если кто не понял, это был сарказм перед рассказом о REPL, где добавили "фишки", которые уже лет 10 есть в любом инструменте.
Спасибо за ролик, а когда новое видео по твоей сборке arch?
А я разве обещал еще одно видео? Вроде как то было финальное видео по настройке. Если есть предложения, то могу рассмотреть, однако с того момента мало что поменялось в сборке.
@@zproger понятно, спасибо, нет не обещал
Какой дистрибутив вы используете и рекомендуете? Каким редактором кода, командной строкой или интегрированной средой разработки вы пользуетесь?
Использую Arch Linux с собственной оболочкой BSPWM. На канале есть видео по настройке оболочки и также редактора кода. Я бы рекомендовал это уже более продвинутым программистам, так как нужно под себя все это адаптировать. Если нужно решение из коробки, то я бы не стал это предлагать.
Ждём, тестим, спасибо за обзор!7
Зачем я это смотрел 7 раз? 7! Я ведь даже не знаю Пайтон )
Я 7 раз прочитал этот комментарий
1:52 а pyenv не ризона?
7! Молодец, спасибо!
Благодарю
Получается внедрили жёсткую типизацию? И увеличили скорость интерпретатора?
Нет
Скорость частично да, типизацию нет. Аннотации в Python нужны чисто как инструмент для статического анализа, чтобы разработчик увидел предупреждения и исправил их, но по факту это не влияет на запуск программы.
@@zproger Спасибо за ответ. 🤝
@@Nurtastube статический анализ типов очень помогает на самом деле, самая частая ошибка когда ты попытаешься взять атрибут от чего то что может быть None, и когда у тебя везде указаны аннотации типо тебе подскажет тайп чекер что ожидался тип 'какой-то' однако он 'какой-то или None', это сильно уменьшает количество рантайм ошибок AttributeError
7, эх как я разочаровался что в пайтоне нет без костыльной многопоточности... но теперь...
Особо ничего не поменялось
Ок, отключаем gil, а как обеспечим потокобезопасность общих структур данных? Или никак? Важнейший вопрос не раскрыт
В доке я не нашел инструкции о том, как пользоваться потоками без GIL, поэтому мудрить что-то от себя без официальной доки не стал, лучше подождать пока это организуют официально, и тогда я сделаю соответствующее видео.
Да так же, как и в других языках: мутексы, семафоры и прочее - никогда с этим проблем не было. Суть выпиливания gil - "истинная параллельность", то бишь в один момент времени смогут работать несколько потоков одного процесса (с gil происходит переключение с одного на другой (грубо - программа запускающая 2000 потоков из одного процесса будет работать +- одинаково что на проце с 1 ядром, что с 40, при условии, что ядра одинаковы по мощности, конечно), что даёт асинхронность, но не параллельность)
7 - в прод тащит 3.13 только с выходом 3.14) Кор разрабы не рекомендуют использовать 3.13 без гил - no gil и jit только начали внедрятся, пока просто наблюдаем и смотрим что делают.
Кстати там в 3,13 должен был бы новый сборщик мусора, но его отменили из за того что он в некоторых случая замедлял работы в десятки раз (вроде бы на 40%)
Если не ошибаюсь это называется инкрементальный сборщик мусора
@@mtigames188 ты с выходом 3.13 только 3.12 поставишь?)
На 40%, это чуть меньше, чем в 2 раза.
Сразу понятно, кто пишет на python
Спасибо за обзор! Про JIT в python есть отличный доклад Никиты Соболева с True Tech Day. Что касается docker, то проще маунтить рабочую директорию в контейнер, чем каждый раз дёргать docker build. Я обычно оборачиваю сборку и вызов образа в interactive режиме в sh скрипт и пробрасываю нужную команду в docker run через "$@".
Благодарю за комментарий, было полезно!
Спасибо за ролик)
Правда, хотелось бы чуть более подробного объяснения кода, который ты показываешь
А то как-то слишком быстро получается 7
Я тебе открою секрет, только никому больше не рассказывай, хорошо? Внимание, ВИДЕО МОЖНО ПОСТАВИТЬ НА ПАУЗУ! Не благодари
Видимо буду рассказывать про то, какой питон был медленным раньше а 7 версия уже будет работать на квантовых компьютерах
Это точно
Может это недоразумение и ускорят, но жрать ресурсов компа оно станет точно ещё в разы больше и геморроя по доработке напильником явно прибавится. Поэтому, нет, не надо. Питон хорош для чего-нибудь простенького типа простых скриптов, автоматизации, а его тащат везде, куда не надо.
7е изменение вообще зашло!
Ждем с нетерпением 7.
какой терминал использует автор? как он по файлам прыгает так легко в терминале ?
th-cam.com/video/XhdwvHhFROc/w-d-xo.html
Обрадовался, пошел ставить новую версию, поставил, а потом досмотрел видос до конца💀
:DD
Спасибо за видео 7 :)
Благодарю!
7, но я с версией 3.13 торопиться не буду. Помню, как года 1,5 назад стукнуло в голову мне и я решил перейти с 3.10 на 3.12, как только он вышел, а потом оказалось что есть куча библиотек, которые 3.12 пока не поддерживают. В итоге сейчас по прежнему использую 3.10.
На MacOs M1 Air пойдет? 7
Не знаю, можно попробовать в докер поднять
7 😅 хм, а все ли type checkers будут ругаться на ReadOnly?
Все не тестировал, нужно проверять)
7 Очень крутые нововведения!
Это да :))
0:34 когда скачал обход блокировок Ютуба😂😂😂
xDDD
Каким же образом Kivy стал актуален?
Спасибо за видео! Интересно как теперь писать код без GIL ;)
7
Благодарю, когда будет информация, обязательно сделаю видео
Топовая обнова
Согласен
З Disabled GIL есть нюанс, по крайней мере у меня, производительность в Single thread коде становится хуже
Насколько сильно хуже?
@@zproger 5-10%, а иногда на 15% хуже.
th-cam.com/video/zWPe_CUR4yU/w-d-xo.htmlsi=9J4-BSV7Ive97vn1
th-cam.com/video/zWPe_CUR4yU/w-d-xo.htmlsi=rIArObKrGcOw_o80
Подробнее о падении производительности з Gil disabled.
Перемотай на 8-ю минуту.
Это была кстати важная причина, почему долго гил не удаляли. Благодаря нему программы в одном потоке быстрее работают
@@zproger th-cam.com/video/zWPe_CUR4yU/w-d-xo.htmlsi=9J4-BSV7Ive97vn1
ЖИЛ и ЖИТ. Подождите, запишу
😂
Можно видео или совет как собрать exe с новыми фишками python(gil, новый jit).
Пока что такой информации нет, будем ожидать инфу в доке от разработчиков Python
@@zproger Спасибо за ответ :)
Спасибо за мини обзор) 7
Имеются дотфайлы твоего waybar'а ну и в целом системы? Очень понравилась)
Это polybar, есть несколько видео на канале по настройке моей оболочки
7. Спасибо, очень информативно
Благодарю за фидбэк
Для меня особо нечего не изменилось. Куда не глян, кокое приложение не пытайса запускать везде просят отключить мультипроцесорность для винды иначе ничего работать не будет.
Нужно 7 раз подумать, прежде чем переходить на 3.13
Это точно!
Это питон который мы заслужили !
Именно!
7 ... Ждёмс библиотек под новую версию
эх кайф докатились до шаблонов в петухоне
Ну а почему бы и нет))
Очередной дал....
7 + 2 кто знает - тот знает.... та будет через время нормик, вспоминаем как выкинули Хсерв и щас вейланд норм.. а там бодревнее и поболее.
7 Урааааа я думал что все объявления про отключение GIL всегда будут первоапрельской шуткой
Тоже самое)
коментарий под видео с 7
Ееее, благодарю!
7
в 3.16 будет переезд на JIT по умолчанию, скриним
Заскринил)
Топчик
3:27 тут мог бы и из под докера запускать в текущем окружении с venv 😐 (просто ради одного файла не нужно было каждый раз контейнер ребилдить)
Я который все еще пишет на 3.10, даже не перешел к 3.11
ну допустим 7 версий SwiftUI нужно что бы хоть немного он стал более комфортный и надеюсь без багов
жьил был жьил. не прошло и 100 лет и наконц у питона будет жить)
О, если вышел 3.13, то самое время перейти на 3.12. В последнюю версию не лезем, но надо поддерживать ауктуальность текущей, чтобы через 3-4 года ВНЕЗАПНО не заниматься кровавым рефакторингом.
Если ИИ заменит программистов, то он заменит и очень много других профессий, для людей практически не останется работы. В любом случае, программист сможет переквалифицироваться просто в того, кто будет этот ИИ корректировать и поддерживать, особо ничего не поменяется.
Однако я не думаю, что программисты прям исчезнут, ибо для замены хотя бы 1-го программиста нужно дать для ИИ очень большие вычислительные ресурсы, которые будут стоить в десятки раз больше, чем типичная зарплата программисту.
Например сейчас, чтобы развернуть модельку Llama 405b нужно очень много ресурсов, нужно промышленное оборудование, около 8 новейших видеокарт, сотни гб ОЗУ и несколько новейших процессоров. И эта модель даже рядом не стоит с тем, чтобы заменить хотя бы джуна.
@ZEELANDEX-1 Через 4года максимум заменит "лёгких" кодеров. Нужно минимум лет 10 чтобы реально что да началось и неиросеть написала
какую нибудь игру.
Стоп 6:44 они впихнули в оригинал ipython? Сериосли? Прикольно, но ipython всё ещё ван лав
Та нет, это не IPython, там разные задачи
АВТОР ГОВОРИТ ПОЛГОДА МИНИМУМ НЕ ПЕРЕХОДИТЬ НА НЕЕ!
ДОСМАТРИВАЙТЕ КОНТЕНТ!
Ну теперь-то 7 все понятно!
:))
7 это версия третьего питона которая до сих пор используется в некоторых проектах которые я вынужден использовать на работе но они более никогда не будут никем поддерживаться 😢😢😢
но ведь есть MOJO - там любой Python "отдыхает"
А вы писали на нем боевые проекты?
7
спасибо за видео!
Классное оформление системы, но я бы убрал все эти виджеты с температурой
Благодарю!
а есть ли текстовая версия данного материала (именно этого)? Прочесть спокойно как интересную статью...
а то так слушать невозможно. Будто бы записаны заметки «чисто для себя»... Нет, ну молодец, спасибо, лайк и подписка... но минимальный уровень ораторского, искусства, пожалуйста внесите.
Я бы даже сказал, что видео ускорено и вырезано минимальное молчание :) Информация поступает как из пулемета
Это вы еще не видели мои предыдущие видео, я там разговариваю минимум в 2 раза быстрее, чем здесь) Это проблема, и я стараюсь с ней бороться, скорее всего она связана с тем, что я привык читать много книг в уме, поэтому мозг выдает информацию быстрее, чем я успеваю это воспроизвести. Нужно время, чтобы это пофиксить.
@@zproger из-за книг... на нервной почве или панических атак... пускай эти диагнозы ставят квалифицированные специалисты, на основании тщательных исследований.
Я лишь прошу текстовую версию статьи, эдакий "script" к данному видео. Можно?
@@REZNONдобро пожаловать в 2024 год, уже нейронки такое пишут по видео
@@ljakhouski8779 а мне интересны мысли автора от первоисточника и его поведенческий портрет 😉
7
Круто! Поскорее бы доделали.
+
Ничего не понял из видео
7
Звучит так, что надо экспериментировать
:))
10:10 они конченые? python на андроид и так можно установить всегда было. ВООБЩЕ ВСЕГДА. android это дистрибутив линукс, и его окружение частично совместимо с GNU и python встает как родной
После релиза подожду месяцев 7
Хорошее решение
7. Спасибо за ролик !!!
😉😉
С 7 все становится понятнее😂
Это точно)
@zproger залей пожалуйста пример с тестами GIL
7 - норм видос)
Благодарю
Если добавлять возможность статического питона, то вообще песня 7)
Давно уже хочу статический питон
я 7 лет этого джал :))))
Я тоже))
Слышал, что не смотря на ускорение пайтона его может вытеснить mojo
Пока что про mojo ничего неизвестно. Python отлично справляется со своими задачами, а там уже посмотрим как будет, когда они допилят проект.
По своему опыту думаю что это 7.
😮 Пап, а ты с кем разговариваешь?
С GIL'ом сын!
Просто 7!!!
Благодарю!
7 , спасибо за инфу очень полезную
Рад помочь :))
Нету там ускорения, смотрите Кор тесты, плюс минус одинаково. 3.15-16 ждем.
7 очень познавательное видео.
Спасибо!
обнова просто имба, ждём оптимизаций! 7
100%
BTW ... I use Arch☺
:)))
произносится не джил, а гил
Благодарю
Думаю python без gil будет в 4.0, это дофига изминений в либах где использван C
Ох, до 4.0 еще столько лет, буду с седыми волосами снимать обзор :)
@@zproger а че ты думаешь насчет языка mojo?
Я на 3.0 лежу)
Благодарю за отзыв!
спасибо за обзор) к сожалению лично для меня слишком быстрая подача, а вот на скорости 0.7 в самый раз)
Воскресенье
😁😁
эко ты завернул))
Или суббота. 🥴
Python no gil имба или хайп?
7
Это уже не шутка, реально добавили опцию no-gil)