Kotlin — статически типизированный, объектно-ориентированный язык программирования, работающий поверх Java Virtual Machine и разрабатываемый компанией JetBrains. Язык назван в честь российского острова Котлин в Финском заливе, на котором расположен город Кронштадт.
Маскот котлина Коди.
Что имеем: +Современный синтаксис (реально удобный). +Совместимость со всей jvm инфраструктурой. +Возможность писать статический DSL прямо на самом языке. +Дополнительные возможности котлина. (делегаты, функции, расширения класса, вариативность и т.д) +Возможность нативной сборки, сборки в js, андроид и ios. +Корутины
Для тех, кто переходит из процедурных языков программирования, объектно-ориентированный подход (ООП) может показаться полной ерундой.
В интернете часто приводят какие-то высосанные из пальца примеры с кошками, собаками и всякой абстракщиной. Но в реальной жизни все не так просто, и эти детсадовские примеры ни о чем не говорят. Когда ты только начинаешь изучать ООП, то сложно понять, зачем вообще городить эту огромную телегу с классами, наследованием, инкапсуляцией и прочими заморочками.
Поэтому лучший способ въехать в ООП - это сразу погрузиться в изучение какого-нибудь фреймворка. Когда ты видишь, как все это применяется на практике, то сразу начинаешь понимать суть.
Почему следует изучить java перед котлин, а не сразу изучать котлин: 1.Java основа: Без знания java ты не будешь понимать, что происходит под капотом kotlin. Синтаксический сахар kotlin скрывает сложные операции, и ты можешь понять конечный результат, но не механизм его достижения. Это как нажимать кнопку на чайнике и видеть, что вода нагревается, но не знать, почему и как это происходит. Лучше всего понять что под сахаром это в intellij перейти tools -> kotlin -> show kotlin bytecode -> decompile. 2.Код на Java: Большинство библиотек написано на java. Без знания java ты не сможешь понять их код и, соответственно, эффективно использовать или модифицировать их в своих проектах на Kotlin. 3.Может быть что где-то будут куски кода на java в проекте.
>>3634714 Если честно, то человек предложил хорошее решение, а твоя попытка вставить пять копеек выглядит ужасно. Ты или не смог прочитать изначальный вопрос, или умеешь хорошо делать вид, что ты не умеешь читать вопросы вообще.
Тому перцу (>>3634395) успехов и поменьше видеть таких, как ты.
Go или Golang — компилируемый язык программирования от создателей таких шедевров как UTF–8, язык С, UNIX, Plan9 и других. Go поддерживает типобезопасность, имеет богатую и универсальную стандартную библиотеку и инновационные семантики одновременности: все то, что мы в индустрии называем concurrency и parallelism. На сегодня язык Golang является краеугольным камнем стабильности, прагматичности, де-факто представляет из себя стандарт в мире бэкенд–микросервисов и серверного оркестрирования.
>>3682241 >какой же долбоеб, вот тебе шарпы твои Дебилушка, не позорился бы.
Тут как раз все более-менее консистентно - все работает через методы коллекции. Ну кроме Collection Expression, там есть магия компилятора. Если уж жестить, то надо было писать на LINQ query syntax, вот там да там хуйня полная.
Но речь идет о том, что базовое АПИ нормальное >list.Add(4); >list.Remove(4); >list.RemoveAt(2); Просто, понятно, интуитивно, единообразно. А теперь напиши тоже самое для го и разница будет налицо.
У кого есть платная подписка особенно на клод или своя нейросетка, не в службу а в дружбу, хочу деобфусцировать код, но в бесплатных планах можно только кусок кода запихнуть и теряется контекст. Нужно дать задание - деобфусцируй код максимально точно. Этот: https://g.alicdn.com/AWSC/uab/1.140.0/collina.js
Иногда это работает норм, а иногда нет, как я примерно из опыта почувствовал клод в этом деле в несколько раз лучше других.
Этот код представляет собой систему автоматизации для популярных мессенджеров и социальных сетей. Основной функционал:
Мониторинг сообщений - отслеживает новые сообщения на различных платформах Автоматические ответы - генерирует и отправляет автоответы на определенные триггеры Выделение важных сообщений - подсвечивает сообщения с ключевыми словами Отправка данных - передает информацию о сообщениях на внешний сервер Управление горячими клавишами - активация/деактивация через Ctrl+Shift+M Код поддерживает Discord, Telegram, WhatsApp, Twitter и Facebook.
>>3511684 (OP) Не нужны мне твои софизмы Короч е что выключеноКохару сразу же взглянула на меня свирепым взглядом изза плеча Андзу как бы говоря Съешь этот чертов такояки а не то Боясь за свою жизнь я поддался давлению и раскрыл рот после чего она засунула в него такояки
>>3604399 Разве стоит рассуждать о подобном Цзян Миньюань был так зол что у него дрожали руки ему хотелось схватить Лу Ли и убить его!
DNS в компаниях — сплошная головная боль. Почему у всех своя страшная панель и что я с этим хочу сде /devops/
Аноним# OP31/03/26 Втр 18:26:09№3676547Ответ
Представь обычный рабочий день в инфраструктуре. Нужно добавить одну A-запись для нового тестового сервиса. Ты заходишь в старую внутреннюю панель, которая писалась три года назад. Интерфейс кривой, история изменений через «кто последний трогал». После правки молишься, чтобы ничего не упало, потому что откатить будет больно. А если завтра человек, который эту панель поддерживает уволится — вообще привет. Если у компании нет собственной (или на аутсорсе) поддержки, а покупать готовые решение дорого, то наверняка у неё есть «внутренняя DNS-панель». И почти всегда она страшная: скрипты поверх скриптов, отсутствие нормального аудита и отката изменений. Мы решили попробовать закрыть эту боль через open-source инструмент, мы назвали его Zonix — единая панель для DNS.
Что такое Zonix и как это должно работать
Zonix задуман, как единая панель которая ляжет поверх API разных DNS-бэкендов. Сейчас уже есть ранний MVP.
Что уже реализовано сейчас:
Подключение PowerDNS
Просмотр всех зон и записей
Назначение ролей: admin / editor / viewer
Синхронизация зоны по требованию
В ближайшее время появятся запись изменений, audit log и откат, а также поддержка RFC 2136 Идея простая: один интерфейс вместо зоопарка старых панелей и скриптов. Работает с разными бэкендами через адаптеры. Есть OIDC в планах, RBAC на уровне зон и полноценная история изменений.
Как это будет выглядеть на практике (use-case)
Нужно добавить запись -> ты лезешь в панель или правишь зону руками -> никто не знает, кто и когда что менял.
С Zonix: Разработчик (с ролью editor) заходит в веб-интерфейс, выбирает нужную зону, добавляет/меняет запись, изменение сразу видно в audit log
Пока в MVP работает чтение зон и записей + роли. Запись изменений в ближайших итерациях.
Почему так сделано и что не так с существующими решениями
PowerDNS-Admin норм, пока у тебя только PowerDNS.
DNSControl и octoDNS хороши, если вся команда работает в Git.
Enterprise-решения типа Infoblox закрывают всё, но стоят очень дорого.
Между этими вариантами остается дыра именно для небольших и средних инфраструктурных команд, которым нужен удобный UI, поддержка разных бэкендов и нормальный аудит. Zonix пытается попасть как раз в эту дыру. Не революция, просто рабочий инструмент.
Зачем я это пишу
Хочу понять, эта боль реальная только у меня и нескольких компаний, с которыми я общался, или она встречается часто?
Расскажите, как у вас сейчас устроено управление DNS? Есть своя внутренняя панель? Насколько она страшная на самом деле? Используете DNSControl, octoDNS или что-то своё? Нужен ли approval flow или достаточно хорошего аудита и истории? Какие бэкенды у вас в зоопарке и что бесит больше всего?
Буду рад любому фидбеку. Особенно если у вас всё по-другому и такой боли нет, тогда интересно узнать, почему. Спасибо за внимание!
>>3554723 привет, я пора размышляю и планирую сделать супер интересный полезный удобный с множеством фишек игровой ресурс, смотрю у тебя много уникальных идей, ты как на это смотришь?
тебя видеоигры увлекают или ты чисто гик оффлайн комиксы, настольные игры.
конечно можно в твоих идеях заменить комиксы на игры и немного адаптировать, но всё же если хочешь пиши дальше большие посты с идеям, в будущем если всё получится можем с кооперировать
Здравствуйте, тут такое дело, хочу свой суверенный мессенджер сделать, но о программировании знаю только то что они в кино пентагоны ломают. Придумал структуру, но не понимаю что делать дальше и есть ли уже готовые решения.
1. В качестве транспорта используется imap от маил, яндекса и подобных так как сейчас это самый лёгкий способ работать в условиях черного и белого списков.
2. Нет никаких позорных вложений и шифрований как у дельтачата. Картинки и вложения должны даже не восприниматься, только текст. Темы сообщений также не нужны, если мешают, и целиком грузить письмо не надо если это возможно, пусть будет как твиттер или смски. Неплохо если есть локальная книга контактов, чтоб запомнить "Вася это эта почта".
В итоге должно получиться нечто с кнопочками для андроид и пк, что можно одним файликом установить другу, маме и вообще всем желающим.
Кто из вас знает как писать регулярные выражения и пишет их всегда сам, вручную?
Не пиздит готовые откуда-то, не просит написать нейронку с проверкой написанного через специальные сайты типа https://regex101.com/ а именно сам знает как писать их и что означает каждая их составная часть
Я спрашивал знакомых программистов, ни один мне ещё не ответил, что пишет их сам, что знает их и не откуда не пиздит
>>3674251 (OP) Знаю и пишу сам. Странный вопрос, это ж элементарный навык, учишь их за полчаса и потом тупо их юзаешь, обращаясь к гуглу/нейронкам в одном из 100 случаев, когда забыл какую-то редкую конструкцию. Целиком копипастить непонятные регулярки - идиотизм, как и любые подобные блоки кода, проект становится совершенно неподдерживаемым, потом во время исправлении критичных багов с прода несколько раз подумаешь о том, чтоб всё бросить и уволиться. Да и кажущимися понятными регулярками лучше не злоупотреблять, с обычными строковыми функциями код хоть длиннее, но поддерживать его гораздо проще.
ИТТ выясняем у кого зарплата выше средней, меряемся грейдами, строим планы на полугодовое ревью, смотрим в монитор и подключаемся к видеоконференциям с выключенной камерой.
Гребцы из Amazon, Microsoft, Google и прочих компаний, в которых работать это всегда большая честь, добро пожаловать!
Анон, как найти партнера из РФ который будет за меня работать на Апворке? Короче, живу в стране где Апворк разрешен и можно бабки рубить, захотел вкатиться во фриланс, но вдруг понял что мне это очень лень. Хочу найти партнера в РФ чтобы за меня работал, я ему буду в аренду давать удаленный рабочий стол (апворк банит за впны всякие), пусть он отклики пишет и все делает, я буду только стричь небольшой процент с заработка и создавать условия для работы.
Или идея тухлая сама себе, как считаешь? Вкатун в ИТ ведь много зарабатывать не будет, мне крохи только с его заработка придут. Отклики все платные на апворке. Еще и РКН в РФ лютует, вдруг партнер просто не сможет подключиться к моему серваку?
>>3595457 >никто в здравом уме не закажет работу на рандомном сайте Думай так дальше, нет смысла тебя переубеждать. Я на апворке отработал наверно лет 8, знаю внутрянку как свои 5 пальцев. В долгосроке апворк того не стоит, ты можешь взять какого-нибудь бедного дурачка из мухосранска (что логично, так как там нет работы). Он поработает год-другой максимум. Потому что имхо, нет смысла ставить себя в зависимость от хотелок левой пятки какой-то ебанутой бабы и мутного коммерса в твоём лице. На своём сайте ты царь и бог, а у мутного коммерса может настроение меняться по 10 раз на дню. Завтра ты встанешь не с той ноги и поменяешь все пароли и фрилансер останется с голой жопой. Или у этой Хайден Браун начался ПМС и она решила забанить всех русских. Да, я согласен - в первый год может быть сложно раскрутить свой сайт/веб-студию. Но посчитай на перспективу 5-10 лет, если по 2,5к баксов отдавать каждый год, это уже 12,5 тысяч долларов. За эти деньги можно невъебенный сайт построить и развить собственный бренд, а не на продвигать непонятно какой апворк. Смешно читать про "много заказчиков", как будто прям они одолжение мне делают лол. За 50% комиссии пусть они сами и работают нахуй. Ну и напоследок, весь твой схематоз строится на устных договоренностях. Уж проще оформиться в офис, где хотя бы какая-то юридическая защита и договор есть. Завтра тебе моча в голову стукнет, ты скажешь что "небольшой процентик" был на промо-период, теперь давай 30% и хуй потом докажешь, что это не так.
>>3595518 > Потому что имхо, нет смысла ставить себя в зависимость от хотелок левой пятки какой-то ебанутой бабы и мутного коммерса в твоём лице. Ну вообще да, если выбор есть то в самом деле нахуя.
>Завтра ты встанешь не с той ноги и поменяешь все пароли и фрилансер останется с голой жопой. Тогда я тоже с голой жопой буду сидеть, я то сам работать не хочу и хуже чем фрилансер шарю в нужной области. Ну разве что найти нового фрилансера пытаться который заменит старого.
>Я на апворке отработал наверно лет 8 Бля, ну ты и сравниваешь. Если столько лет во фрилансе крутился то уже наверняка десятки потенциальных клиентов набрал. И скорей всего увел половину из них с апворка. А что нонейм программист после ВУЗа и парочки тухлых пет-проектов? Ты бы сам стал у такого что-нибудь заказывать? Я вот если вижу хорошую рекламу и "продающий" сайт то сразу думаю что услуги хуевые и дорогие предлагают так как половину на закуп рекламы потратили.
Здравствуте. Я не программист, но у меня 2 вопрос к айтишникам о очень наболевшкем:
1.) существует ли интернет для медленного интернета? я живу в деревне и здесь средняя скорость 20 килобит/сек, из за этого многие сайты даже не открываются по таймауту, они не понимают что это не таймаут, а просто медленный интернет. Например файл 12 Мб скачивается около 20 минут, а многие страницы сегодня сами по несколько Мб, один клик занимает много минут.
2.) в молодости я пользовался диалаппом и весь интернет работал на 28-36 килобитах/сек, норм было. То что сейчас сайты стали такими жирными, это неизбежность или просто никто не думает о экономии трафика и не программирует на 20 килобита/сек, но если бы захотели, то и сегодняшними технологиями могли бы писать маленькие и быстрые сайты?
Даже на дваче я уже забыл что такое картинки и видео, потому что их никто не сжимает. Люди неиронично закачивают видео в 1 минуту вместо 1 Мб, 20 Мб! Даже фотки перестали сжимать, одна и таже картинка для сайта может весить и 100 Кбайт и 4 Мб, очевидно это не в технологии дело, а в том что люди даже не задумываются об этом.
Село, ты решаешь несуществующую проблему: либо проводи нормальный инторнет (мобильный, только хороший, масковский ну или провод но это фантастика в деревнях то). Если нет вариков - либо перебирайся поближе к цивилизации либо забей и еби коровёнок дальше, нахой тебе он не нужон, инторнет ентот!
Смерть мирового айти тред №11 /itover/
Аноним20/03/26 Птн 04:31:08№3667932Ответ
>>3671895 >>3671905 Позорник, но ведь это ты несколько тредов назад кричал, что я вру, когда я кидал пруфы того, что 500к сижу спокойно летаю в бигтехе. Какие 130к, маня? 130к - это твой потолок с зп дворника и того говна, что ты якобы навайбкодил суммарно.
>>3671893 >Почему тогда ты всё ещё тупорылый и нищий дворник, если ты можешь с помощью нейросети написать сложную систему?
Беда нейрооптимистов состоит в том, что они совершенно не задумываются о том, что является основой их существования, где в этом вашем интернете заводятся деньги и как эти деньги путем выплат за создаваемую (или воображаемую) ими добавленную стоимость конвертируются в их "лутаемые сотыги".
Для них это просто поле для окормления их, нежно любимых, очередных форков "новейших саас-систем учета соответствия количества завозимых из китая гаек количеству завозимых из китая болтов с современным UX/UI и обязательно на кликхаусе".
И никакой сеньоро-помидоринг этим персонажам не поможет. Сеньоропомидорные нейродегенераты пойдут на мороз ровно так же, как те же сраные джуны-нейродегенераты. И это хорошо.
Вечер в хату. Помогите, пожалуйста, советом. Дано: у меня есть машина с двумя сетевыми интерфейсами
Аноним08/10/25 Срд 22:37:24№3560343Ответ
Дано: у меня есть машина с двумя сетевыми интерфейсами. Один из них называется tun0, но это совершенно не важно. Предположим, что сетевые интерфейсы называются inf_A и inf_B.
Мне нужно поднять два прокси сервера, чтобы один направлял весь траффик через inf_A, а второй - через inf_B. Эти прокси сервера будут слушать разные порты.
Другими словами, мне нужно, чтобы приложение "прокси сервер" игнорировало дефолтовый маршрут таблицы маршрутизации и отправляло траффик на тот интерфейс, который я сконфигурирую. Какой самый простой способ такого достичь?
Все здоровья, достатка и много свободного времени.
>>3560396 >В интернетах пишут, что можно марикровать в зависимости от GID и UID. Это самый гибкий способ? Еще варианты есть или придется отдельного юзера заводить? Заводить отдельного юзера для отдельной задачи это вообще хорошая практика в linux, делай. Вообще твой прокси сервер скорее всего уже создал юзера сам при установке и демон запускается из плд него.
>>3626146 Он поражал меня раз за разом В моих самых смелых догадках я не могла подумать что Паука сделал сам Автоматон и что за заводным ключом таился такой секретЩось трапилося лорде Момонґа Альбедо повторила своє запитання
Коллеги, а кто-то работает в бюро 1440? У меня просто в бэке специальность по космической технике, плюс 5 лет оттрубил в роскосе, плюс 23 года на западного барина ну телеком проекте (надо было уезжать, барин звал) и 5 лет в ру технологических компаниях специализация была БпЛА, сети, сейчас кибербез. В бюро приглашали на протяжении наверное последних 5 лет раза 4, 1 раз не по специальности что-то там с обработкой сигналов, второй раз реджект, третий и 4 раз просто собесы без фидбэка вообще. Кто им там вообще нужен кого они ищут? Моих коллег разного уровня тоже туда приглашали и даже при более менее норм ответов - реджект. Создается ощущение, что они просто плодят вакансии десятками, ради имитации бурной деятельности.
>>3669321 извини, друг, если тебя огорчил, в мск достаточно крупная и на слуху контора, особенно в космической отрасли, все хотели бы верить, что у них получится, что не получилось у роскосого
>>3669537 У тебя в мск, сладкий, живёт меньше половины населения пока что, кому какое дело что там на слуху и у кого? Роскосый, космос, хуесмос, тебе в другой раздел, дружок пирожок :))
Нашел вторую работу, пока тут ноют о невозможности найти первую. c++ senior Планирую попробовать совмещать. Рассчитываю что получится халтурить на обеих и не меньше половины сгружать на кодинг агенты. Пока вроде получается.
Первая фуллтайм и вторая фуллтайм. Одна по самозанятости вторая по ткрф. Пока больше всего переживаю что созвоны будут коллизиться.
Расскажите о своем опыте кто пробовал. Какие подводные? С меня нихуя
>>3665301 Не в РФ другая структура расходов, налоговая система и т.д. Поэтому голые цифры бессмысленны. 10к баксов в месяц (1000к рублей) где-нибудь в Коммифорнии это вообще ни о чем. А схема "работаю в западной компании, живу и трачу бабки в РФ" с закрытием SWIFT более недоступна.
>>3666692 >Начнем с того, что "обычная кодомакака" как ты выразился, родной, никогда не попадет в ФААНГ Во времена сытого оверхайра в 2019-2020 вполне могли взять, особенно если диплом неплохого вузика был
Для начала надежно ли шифровать использую я команду gpg с флагами --symmetric--cipher-algo AES256?
А так же хочу услышать ваше мнение о том как можно решить проблемму шифрования для последующей возможности рукописной записи текста. Возможно звучит запутанно но суть в том что: Нужен алгоритм который на вход принимает строку и пароль, на выходе выдает зашифрованную строку. Сама строка должна быть не слишком длинная а так же простая в записи, но при этом обладать достаточной стокостью. Так же допускается что для компактности информации стока будет состоять из иероглифов. Однако при этом реализация алгоритма должна быть достаточно простой чтобы можно было бы его восстановить с нуля, и как следствие иероглифический алфавит тоже должен обладать этим свойством
>>3577879 (OP) Компактно ты не сделаешь потому что это всё через хэши, а там энтропия которую ты уже не сожмешь. Приблизительно в 2.5. раз длинее исходной строки будет всегда с приемлемой надежностью. На выходе ты всё равно получаешь набор байт и уже потом решаешь как удобнее их записывать. Хоть кириллицей, хоть иероглифами, но это всё равно должна быть не читаемая каша т.к. энтропия. Иероглиф это слово записанное в каллиграфии, если у тебя каждая черточка должна нести определенный набор байт, то так у тебя иероглиф не получится, ты таким образом только QR код изобретешь.
Если рептилоиды увидят рукописный текст с тарабарщиной, они точно поймут чем тут пахнет, и устроят тебе зондирование. Чтобы этого не произошло, читай материалы по ключевому слову "стеганография". Вариант с иероглифами, кстати, в эту науку немного вписывается, если ты, конечно, не собираешься тусоваться в местах, где люди знают иероглифы, иначе см. пункт 1.
>>3581368 Хотя этот медвежонок не был ей нужен однако по какойто причине Гурико не хотела выбрас ывать егоНа восстановление картеля и возвращение нашего особняка уйдут годы Но я это сделаю
Сап. Приобрёл вм сервер Yandex.Cloud (грант на 4к). - ОС: Ubuntu, - 2 vCPU, - 2 GB RAM.
Мне нужно настроить VPN для семьи из 6 человек. Устройства: Windows (несколько компьютеров) и Android (телефоны). Для чего: 1. Обход блокировок (DPI, «белые списки», геоблок (нейронки типа гемини не пускают из-за страны) – максимальная защита. 2. Высокая скорость и стабильность, минимально возможный пинг. 3. Создать два ключа, для компьютера и для телефона, чтобы все желающие могли пользоваться, ключи многоразовые и поддерживают множество устройств. 4. Простота управления (желательно с веб-интерфейсом или автоматическими скриптами, чтобы легко добавлять/удалять пользователей). 5. Поддержка Windows и Android (клиенты должны быть простыми, типа «вставил ключ и работаешь»).
Я пробовал Amnezia – не заработало (ошибки 205, 206). Пытался вручную ставить XRay – возникли проблемы с подключением клиента. Теперь хочу узнать как кто настраивал и какой пинг, кроме того хочу пользоваться зарубежными нейронками с геоблоком (подписка гемини на год, курва), а с Московского сервера не выйдет, как обойти?
До этого пользовался Happ клиентом, но vless рабочие дают огромный пинг, а ночью так и вовсе начали отключаться, немногие выживают.
>>3650642 (OP) > Теперь хочу узнать как кто настраивал клод, вот адрес и логин/пароль от сервера. разверни на нем openvpn over cloack, socks5, https-прокси. настрой на локальном компьютере клиент openvpn для подключения к интернету через настроенный сервер, проверь работоспособность
Смерть мирового айти тред №10 /itover/
Аноним14/03/26 Суб 09:21:49№3663499Ответ
>>3667917 >они буквально вваливают сотни триллионов в инфраструктуру и железо, а также делят инвестиционные риски
У них просто нет вариантов куда еще ввалить. Фаанги стали чертовски дорогими, уже никогда не выйдут на нормальные P/E и никогда не станут дивидендными. Дроч на антропики - продолжение все той же истории, просто есть толпа жирных пиндосов, заливаемых вертолетными долларами, которым куда-то надо влошиться. Других идей, почему бы мировой экономике наконец не дойти бы до глобального долгового кризиса тупо нет.
>>3667637 Spring был базовым минимум для джунов. "Нужна была" Java с микросервисами и хайлоадом, Kafka, Docker, Kuber. Но это давно, в ковид, а сейчас двачую >>3667638
Сап, двущ! Хочу вкатиться в кибербез, за спиной имею базовые знания C++ и питон. Какие подводные? С чего вообще начать? Что читать, что смотреть, что учить?
Правда ли что в unity низкий порог входа и меньше конкуренции чем а условном веб программировании куда щас летят тысячи вайбкодеров и школьников что окончили курс вед разработка за 7 дней ?
>>3592939 (OP) В целом порог вхожа скорее выше, знаю тех кто не осилил и просто вкатилсч в веб.
И особенно большой порог входа для переката из гиперказуалок на мидкор и в целом на реально сеньорные позиции, опять же знаю многих кто застрял на 100-200к и ушёл в веб в итоге.