Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Webstorm и поддержка php или стоит переходить на phpstorm?

Лучший ответ:
All the features in WebStorm are included into PhpStorm, with full-fledged support for PHP and Databases/SQL support added on top.в сравнении пхпшторм и вебшторм у первого есть только один минус - цена.
возможно, еще фронтОвые шняги в вебшторме появляются чуточку быстрее.

Худший ответ:
1. Дешевле - обойтись. Проще (особенно если пиратить) - переходить
2. нет
3. нет
Вопрос: Какой выбрать процессор для домашней числодробилки?

Лучший ответ:
AMD Ryzen™ 7 1700 будет идеальным. 8 полноценных ядер, 16 потоков. На будущее задел огромный. Если вдруг внезапно нехватит,в чем я сильно сомневаюсь, можно будет сделать апгрейд на топовый или после выхода zen+ проапгрейдить на него т.к. совместимость сокетная будет.
Синие из новой линейки при сопоставимой цене проигрывают числом ядер\потоков. Там где интел текущий нагружен на 100% то у райзена этого нагрузка 60-70%.
Дальше небольшая проблема с тем что у интела сейчас термопаста а не пайка под крышкой и в целом они более горячие в отличии от райзенов.
В общем на данный момент имеет смысл смотреть в сторону райзена особенно на долгоиграющую сборку.

Худший ответ:
Если бюджетно
То б/у десктоп LGA2011 + Xeon + DDR3 no ECC
Вопрос: Yii2 В базу сохраняется сразу 2 записи. Почему?

Лучший ответ:
Доброй ночи.
Почему в действии create нет подобной проверки?if ($model->load(Yii::$app->request->post()))
ПодобноеYii::$app->getResponse()->redirect('/news');
можно с успехом заменить наreturn $this->redirect('/news')
Зачем такая конструкция? if ($news = $model->create()) {
не проще ли писать такif ($model->save()) {
 // и получить id
  $model->id;
Откуда Вы берёте $model->create() и что в там внутри?
Вот, ещё подсказал Антон Натаров, зачем Вы пишите этот бред с временем?(new DateTime())->format('Y-m-d H:i:s');
В yii2 есть TimestampBehavior, вот через этот класс и настраивайте время, в модели, а не в контроллере.
Статус тоже проверяйте в модели, в методах beforeSave() или AfterSave()

Худший ответ:
Код ужасный, но дело скорее всего тут:$model->create()
Он у Вас в обоих экшенах. Покажите метод create в моделе.
По датам советую посмотреть вот это:
demos.krajee.com/datecontrol - очень удобно
Вопрос: Почему на инпут не действует псевдоЭлеммент?

Лучший ответ:
Непарным тэгам его нельзя прописать. А еще ты забыл повесить на родителя position: relative. Уж не знаю какая была задумка, но можно сделать так

Худший ответ:
Плюсую к Rheinmetall и лучше уж в лабел инпут обернуть. Семантичнее, что ли.
Вопрос: Насколько корректно писать названия свойствам в объекте на русском?

Лучший ответ:
В кавычках - вполне корректно. Будет работать.var o= {
    'количество': 1,
    'имя': 'Имя'
}
console.log('o["количество"]= ', o["количество"]);

Худший ответ:
За русский в коде надо  делать разработчику очень больно.  Не надо так.
Вопрос: Точное совпадение фразы ElasticSearch?

Лучший ответ:
У еластика есть набор фильтров в анализаторе, привязанный в мапинге, которые разделяют слова на термы и их преобразуют к какому-то одному виду. Например, из слова "IBM-xStation" делают два терма "ibm" и "xstation".  И если вы ищете по термам, то нужно учитывать то, как сами слова разбиты на них.
Если же вас не устраивает стандартное термообразование, то его всегда можно поменять, например отменив приведение к нижнему регистру и считая тире частью слова.
В общем, кидейте сюда свой мапинг, и то, что хотите получить в результате, будем посмотреть.
Ну и самому почитать - https://www.elastic.co/guide/en/elasticsearch/refe...

Худший ответ:
Нужно настрить маппинг для данного поля указав analyzer=keyword, а потом фильтровать через term.
Вопрос: Как заполнить пустую табличную часть документа циклом?

Лучший ответ:
Для Сч = 1 по 5 Цикл
   нов = Серийники.Добавить();
   нов.Мощность = 10;
   нов.КлассЗащиты = 55;
КонецЦикла;

Худший ответ:
ХочуДобавитьСтрочек = 5;
ТакНазываетсяМояТабличнаяЧастьВДокументе = "МояТабличнаяЧастьВДокументе";
Для Сч = 1 по ХочуДобавитьСтрочек Цикл
   нов = ТЧ.Добавить();
   нов.Мощность = 10; // или "10", в зависимости от типа реквизита;
   нов.КлассЗащиты= 55; или "55", в зависимости от типа реквизита;
КонецЦикла;
В общем случае так, но это должно сработать в форме документа.
А мы еще не знаем, откуда ты пытаешься добавить строки, может из внешней обработки или из подписки на событие..
Вопрос: Как получить HTML код из консоли разработчика?

Лучший ответ:
Все просто, дополнительные строки наверняка дописывает javascript, так что через urllib их никак не получить.

Худший ответ:
Введите в консоли браузера:document.documentElement.outerHTML
Вопрос: Почему не меняется пароль на Windows Server 2012 R2?

Лучший ответ:
Есть два варианта прохождения авторизации: на стороне клиента и на стороне сервера.
На скрине - авторизация на стороне клиента. Она позволяет ввести логин и пароль, которые потом отправляются на сервер и сервер даёт или не даёт разрешение на запуск сеанса. Других действий этот метод не разрешает. 
Есть вариант - авторизация на стороне сервера. В этом случае пользователь получает доступ к экрану входа в систему spoiler, где после введения логина и пароля, который он должен сменить, пользователь имеет возможность сменить этот самый пароль. В  GPO это настраивается через параметр
Конфигурация компьютера -> Административные шаблоны -> Компаненты Windows -> Службы удалённых рабочих столов -> Узел сеансов удалённых рабочих столов -> Безопасность  ->  Требовать проверку подлинности пользователя для удаленных подключений путем проверки подлинности на уровне сети = Отключна
На локальной машине должно работать также.

Худший ответ:
Это издержки глупого механизма преаутентификации (как бишь его, "проверка подлинности на уровне сети" который), он проваливается, если пароль у пользователя невалидный. Поэтому этот флаг на терминалах слегка устарел, и действительно не позволяет сменить пароль при первом входе в систему. Вариант обхода - флаг снять и заставить пользователя сменить пароль сразу (извратный метод - выбить его из сессии через час после входа заходом на сервер под его учеткой, если он пароль не сменил, и оштрафовать сразу).
Вопрос: Как в PHP удалить оборачивающие кавычки?

Лучший ответ:
<?php
$inArr = 'element_0, element_1, element_2, element_3';
$arr = [$inArr];
echo $arr[0];

// Результат
var_dump($arr);
/*array (size=1)
  0 => string 'element_0, element_1, element_2, element_3' (length=42)*/
    
// Добавляем 4 элемента в массив
$array = array('element_0', 'element_1', 'element_2', 'element_3');
// Выводим первы
echo $array[0];

// Результат
var_dump($array);
/*array (size=4)
  0 => string 'element_0' (length=9)
  1 => string 'element_1' (length=9)
  2 => string 'element_2' (length=9)
  3 => string 'element_3' (length=9)*/

Худший ответ:
//а если входной формат не однообразный,
$inArr = 'element_0,    element_1,element_2 , element_3, , ';
$arr = array_filter(array_map('trim', explode(',', $inArr)));
echo $arr[0];
Вопрос: Как запустить лендинг?

Лучший ответ:
Переименуйте в index.html

Худший ответ:
на хостинге зарегистрируй домен типа site.ru и залей ео, первый файл с версткой назови index.html или index.php
Вопрос: Как поставить атрибут lang для мультиязычного сайта?

Лучший ответ:
Для поисковиков надо использовать link-теги примерно с таким синтаксисом:<link rel="alternate" hreflang="es" href="http://www.example.com/" />
<link rel="alternate" hreflang="en" href="http://en.example.com/" />
Оба тега помещаются на каждую региональную страницу (в данном случае их две: испанская и английская). При большем количестве региональных страниц, соответственно увеличивается и количество тегов.

Худший ответ:
Добавьте в HTML-код каждой страницы элементы link с атрибутом rel="alternate" hreflang="x". Для страницы по умолчанию, не связанной с определенным регионом или страной, используйте rel="alternate" hreflang="x-default":<link rel="alternate" hreflang="x-default" href="http://www.example.com/" />
<link rel="alternate" hreflang="en-gb" href="http://en-gb.example.com/page.html" />
<link rel="alternate" hreflang="en-us" href="http://en-us.example.com/page.html" />
<link rel="alternate" hreflang="en" href="http://en.example.com/page.html" />
<link rel="alternate" hreflang="de" href="http://de.example.com/seite.html" />
Обнаружив такую разметку, алгоритмы Google определят, что это разные версии одной страницы.
Вопрос: Как обратиться к элементу с пробелом в название на Jquery?

Лучший ответ:
Пробел недопустим. Используйте дефис или нижнее подчеркивание.

Худший ответ:
Пробел, конечно, странное решение, но можно попробовать экранировать его - codepen.io/anon/pen/zBOKzp
Вопрос: Где может пригодиться физика программисту?

Лучший ответ:
Вы что, миллениал чтоли прости Г-споди? Геймдев, робототехника... Жизнь не ограничивается ИТ. Фундаментальные науки это как бы законы природы в нашей части вселенной, что значит "где физика может пригодиться?"? Вы меня шокируете)

Худший ответ:
В прикладном программировании, когда нужно расчитывать теплопроводность для корректировки измерений. Для того же учета электроэнергии - рассчитать средний ток в течении получаса, когда есть только показания счетчика.
Вопрос: Удаление пустых строк в select?

Лучший ответ:
value на "" проверяйте и не выводите

Худший ответ:
Знаниями в в VBA и методом тыка получилось. Всем спасибо за участие.{if "{$v->id}" <> ""}
<option value="{$v->id}" data-price="{$v->price|convert} {$currency->sign|escape}" data-compare-price="{$v->compare_price|convert} {$currency->sign|escape}">{$v->name}</option>
{/if}
Вопрос: Как в Laravel уменьшить изображения «налету»?

Лучший ответ:
Voyager я не использовал, может там есть какие-то особенности. Но судя по вашему хелперу. Вам всё же надо  до конца разобраться с intervention.  Создать фильтр ProductThumbFilter image.intervention.io/use/filters. 
Добавить его в config/imagecache.php:'templates' => array(
        'productthumb' => 'App\ImageFilters\ProductThumbFilter',
И уже в шаблоне или в хелпере получать урл картинки:
route('imagecache', ['template' => 'productthumb', 'filename' => $product->image ])
Все thumbnails, отсутствующие для изображения, будут генерироваться на лету и сохраняться в кеш.

Худший ответ:
Очередь и задачи тебе в помощь
При загрузке большого изображения пережатие (и ресайз) будут идти в фоне и "докидываться" по ходу готовности к тому продукту который у тебя есть. Пережимать на лету не нужно. Храни готовые изображения. Экономь ресурсы сервера
Вопрос: Куда дальше — Dev или Ops?

Лучший ответ:
Есть ощущение, что настроить себе CI/CD нормальный девелопер и без OPS сможет.сможет конечно. только:
– ненормальных девов намного больше нормальных
– у нормального дева и так задач больше, чем временикажется, что всё больше платформ переходит на виртуализацию/аутсорс (PaaS, SaaS, managed Kuber и т.д.) так и есть. только это никак не отменяет необходимость иметь в штате человека(ов), способного этим рулить.
опс никуда не денется. разве только в мелких шаражках его в целях экономии переложат на девов.

Худший ответ:
Да все идёт в сторону кубера и ци цай
Ансибла меньше
Кубера больше
Вопрос: Можно ли как-то подключить такой витую пару к такому роутеру?

Лучший ответ:
*общага детектед* :-)
Вместо фотки роутера лучше бы модель сообщили. Там шильдик есть снизу, как правило, где указана модель.
Насчёт раздачи вайфая с этой железки -- технически проблем нет, но будет зависеть от функционала прошивки. В том смысле, что предоставляет ли она возможность таких настроек. Роутер может предоставлять возможно переключиться в режим моста с LAN, и тогда можно будет реализовать то, что вы хотите. Если же прошивка не позволяет, то можно пойти по пути, предложенному Дмитрий Куликов -- зашить что-нибудь вроде dd-wrt или open-wrt, и там сделать раздачу интернета.

Худший ответ:
А если так:
1. В Lan ПК воткнуть провод. Разрешить раздачу интернета на другие машины локалки. 
2. По WiFi прицепится к сети. 
Попробуйте: Подключится к роутеру по WiFi с нескольких машин.  В консоли пингоните друг друга. 
  ping 192.168.4.4 ( 192.168.4.4 адрес другой машины. Командная  строка, ipconfig /all) 
Если они видят друг друга, тогда можно попробовать раздавать с одной из них. 
Если не пингуют (может быть закрыто) посмотрите sambu (расшареные папки) 
Вам правельно подсказали- наклейка, по ней название модели, по ней инструкция.
В ней:
* как сбросить до заводских настроек.
* адрес, логин и пароль чтоб зайти на него. (Если имеет такое). 
Например 127.0.0.1 в браузере.
1.   командная cтрока. ipconfig /all      ----  там какой имееш ip  (например 192.168.1.10)
2.   в адресной строке браузера 192.168.1.1  может быть htpp://192.168.1.1:8080
3.   или запускаеш putty и через него пытаешься зайти. 192.168.1.1 на порт 23 (например)
      команды должны быть в инструкции.
Смотри на сайте производителя, например:
https://kb.zyxel.ru/hc/ru/articles/115002577214-%D...
Но то зуксель.
Вопрос: Как удалить\закомиттить только нужный коммит?

Лучший ответ:
git rebase -i HEAD~N
- где N - количество мусорных коммитов. Нужно будет выполнить squash. Для этого на первой строке пишем p (pick up), а на остальных s (squash).
После того, как исправите ситуацию в локальном репозитории сделайте принудительный пуш:git push -f

Худший ответ:
Вообще, делать пробы лучше в отдельной ветке - так гораздо меньше головняков...
Если пробы все-таки хочется сохранить (хотя бы временно), то можно сделать так:
Итак у вас есть коммит аааааа (последний - о котором вы пишите) и есть коммит сссссс. Пробные коммиты находятся как-раз между аааааа и сссссс. Ветка master, по вашему описанию, находится на самом верху, т.е. на аааааа.
1. Создаем тестовую ветку: git branch Tests (теперь на аааааа две ветки)
2. Переносим master на последний полезный коммит: git reset --hard cccccc
3. Копируем нужный коммит: git cherry-pick аааааа
4. Отправляем master: git push -f
Посмотреть ситуацию наглядно можно так: git log --oneline --decorate --all --graph
Все. Пробные коммиты остались в отдельной ветке. Ее можно удалить. А если они все-таки нужные и там предполагается продолжит работу, то нужно сделать rebase:
5. git checkout Tests
6. git rebase master
Тестовая ветка передвинется на топ master'а а коммит aaaaaa пропадет, т.к. он уже есть внизу.
ЗЫ: Чтобы не писать длинно git log (это очень частая команда), советую сделать alias.
Вопрос: Как раскодировать php код?

Лучший ответ:
Скорее всего, файлы закодированы с помощью IonCube PHP Encoder
Расшифровать можно, но проще и дешевле будет написать заново, чем расшифровать файлы так, чтобы их можно было использовать повторно.

Худший ответ:
Берешь дебаггер, ставишь брейкпоинт где-то в точке входа, и проходишь внутрь, пока не найдешь штуку, которая расшифровывает эти файлы.
Вопрос: Как управлять вайфаем с компьютера?

Лучший ответ:
Привет,
Софт бесполезен в данном случае, так как ранее у вас была такая схема:
Компьютер с Windows был подключен к TD-8816 (интерфейс 1) и получал интернет извне, в этот Windows был воткнут USB-WIFI-адаптер (интерфейс 2). USB-WIFI-адаптер (интерфейс 2) получал сигнал от клиента, направлял его в программу Connectify Hotspot, которая рулила доступами и скоростями и далее направляла запрос в TD-8816 (интерфейс 1). Фактически ваш Windows компьютер становился шлюзом для WIFI клиентов - так называемый "мягкий роутер".
Теперь вы взамен купили модем с WiFI и убрали USB-WIFI-адаптер, тем самым разрешили соединяться WIFI клиентам НАПРЯМУЮ к модему, минуя ваш Windows компьютер с программой Connectify Hotspot. Грубо говоря, купили "железку" и получили "железный роутер". Какую бы вы программу на Windows не ставили, она не сможет рулить доступами и скоростями, так как клиенты идут в модем, МИНУЯ Windows компьютер с любыми установленными на нем программами.
Все эти бюджетные модемы не имеют гибкого функционала разграничения доступа и скорости, поэтому:
1) либо вы возвращаете старую схему (можете использовать свой новый модем с отключенным на нем WIFI-ем),
2) либо покупаете другой модем, в котором есть нужный вам функционал, к примеру, что-то из Mikrotik. Только надо перед такой покупкой проконсультироваться с вашим провайдером, сможет ли покупаемый вами модем соединиться с оборудованием провайдера.

Худший ответ:
Тебе надо подключиться к маршрутизатору роутера. Обычно его ип находиться в диапазоне 192.168.0.1-192.168.3.1.
Просто посмотри на дне роутера этот ип или подбери сам. Далее просто введи:
Пароль - admin
Логин - admin
(Это стандатные пароль и логин у роутеров)
Но иногда..:
Пароль - 12345
Логин - admin 
Далее копируешь МАК-адреса всех подключившихся и прогоняешь по отдельному меню в маршрутизаторе.
Ограничить скорость загрузки можно, но не на всех роутерах есть такая опция. Погугли про свой роутер и узнай: есть она, или - нет
Вопрос: Как подключить стили в Laravel?

Лучший ответ:
Файлы должны отдаваться из директории public - только она доступна веб-серверу.
Кладите их туда при помощи mix.

Худший ответ:
Добавить в webpack.mix.jsmix.styles([
'resources/assets/css/bootstrap.min.css',
// Другие стили
], 'public/css/styles.css');

mix.scripts([
'resources/assets/js/notification/SmartNotification.min.js',
 // Другие js скрипты
], 'public/js/scripts.js');
Запустить команду: "npm run watch".
Потом добавить на страницу пути к файлам выше:<link rel="stylesheet" href="/css/styles.css">
<script type="text/javascript" src="/js/scripts.js"></script>
Вопрос: Как выйти из под блокировки РосКомнадзора?

Лучший ответ:
Быстрый способ - написать в техподдержку чтоб сменили IP
Медленный и малореальный - переходите по ссылке rkn.gov.ru/news/rsoc и жмете вверху справа кнопку "Сформировать обращение" и.....  ждете
В картинках все это есть тут

Худший ответ:
В соответствии с частью 11 статьи 15.1 Федерального закона от 27 июля 2006 г. № 149-ФЗ «Об информации, информационных технологиях и о защите информации» доменное имя, указатель страницы сайта в сети «Интернет» или сетевой адрес, позволяющий идентифицировать сайт в сети «Интернет» исключается из Единого реестра на основании обращения владельца сайта в сети «Интернет», провайдера хостинга или оператора связи, не позднее чем в течение трех дней со дня такого обращения после принятия мер по удалению запрещенной информации либо на основании вступившего в законную силу решения суда об отмене решения Роскомнадзора о включении указанных сведений в Единый реестр.подробнее...
Сведения об ограничении доступа к сайтам и (или) страницам сайтов в сети «Интернет» можно получить посредством обращения к универсальному сервису проверки ограничения доступа к сайтам и (или) страницам сайтов в сети «Интернет», размещенному на официальном сайте Роскомнадзора в сети «Интернет» по адресу: blocklist.rkn.gov.ru/.
Вопрос: Как реализовать на Django онлайн-компилятор?

Лучший ответ:
Когда я подобную задачу решал (правда, десктопная программа для тестирования была, но не суть), то делал примерно по следующему алгоритму:Принимал от пользователя исходный кодСохранял его во временный файл (*.cpp)Этот файл уже отдавал компилятору MinGW, лежащему рядом с программой тестирования (запускал компилятор, аргументом при запуске был путь к временному файлу)Попутно перенаправлял вывод компилятора в поток, из которого считывал результатЕсли всё ок - сверялся с эталонными результатами выводаЕсли есть ошибки при компиляции - просто отдавал их пользователюУдалял временный файл
В вашем случае нужен будет выделенный сервер (желательно отдельно от основного сайта, чтобы, в случае какой уязвимости, пользователь не мог получить доступа к сайту тестирования), с которым бы сайт общался по API: сайт отправляет серверу файл, а тот в ответ шлет результат компиляции. Если все ок, то статус успешности и результат вывода, иначе - ошибку и комментарий компилятора.

Худший ответ:
Купите VPS, и просто установите на него любой компилятор, вообще любую программу, что пожелаете, вполне адекватный вариант.
Вопрос: Какая была самая крупная DDOS-атака?

Лучший ответ:
Атака на сайт Брайана Кребса (KrebsOnSecurity ), 620 Gbps, в сентябре 2016-го.

Худший ответ:
DDOS атака это принцип, то есть буквально это "как бить". Но есть еще такая штука как "куда бить", и то что Вы находили, возможно, все адекватно но с разных позиций куда били.
Вот куда бить + как бить можно узнать насколько был силен удар.
По существу первое что в голову пришло это когда ip камеры задосили dyndns(били в dns, не cpu, не сеть, не еще в хз что).
Вопрос: Как организовать работу сервиса хостинга?

Лучший ответ:
Коллега, смотрите, вы просите совета у ваших потенциальных конкурентов. Скорее всего, ничего дельного вам не скажут. И конкретики мало и конкурентные преимущества никто так просто не выдаст. 
Начните как получится, потом поменяете концепию когда до дела дойдёт. Всё и на одном сервере крутить можно и на разных. Не в этом главное у хостера, далеко не в этом.

Худший ответ:
Организация Хостинга
Либо такой вариант посмотрите, если простые сайты.
Вопрос: Parse error: syntax error, unexpected end of file in C:\web\sqltest.php on line 77 в чем проблема?

Лучший ответ:
Выбросьте эту книжку, это какой то дикий говнокод из древних времен.
От общего спагетти-стайла, до использования устаревшего mysql_
Лучше возьмите любой современный framework типа Yii2 или Laravel и читайте к нему туториалы.

Худший ответ:
echo <<<_END
нет конца
_END; не должно быть пробелов до
Вопрос: Как убрать определенное правило iptables?

Лучший ответ:
Вариантов несколько. Сохраняете все правила в файл iptables:iptables-save > /etc/sysconfig/iptables
затем в любом текстовом редакторе удаляете ненужное правило и загружаете правила:iptables-restore < /etc/sysconfig/iptables
Второй вариант более грамотный. Выводите правила из цепочки INPUT по номерам командой:iptables -L INPUT --line-numbers
Ищете по номеру и удаляете нужное правило:iptables -D INPUT номер_в_списке
Однако, учтите, что после каждого удаления правила индексы обновляются, поэтому желательно выполнять команду iptables -L INPUT --line-numbers после каждого удаления правил, иначе можно случайно удалить нужное.

Худший ответ:
Спасибо, все способы хороши. Но как сказал Mystray, так удобнее, имхо.
Вопрос: Как лучше реализовать цепочку вызовов действий одного класса?

Лучший ответ:
Это называется "fluent interface" или "method chaining".
Все зависит от того, что вам нужно:
В jQuery/JS или LINQ/C# возвращаются именно новые объекты.
Хотя в том же EntityFramework есть Fluent API, где методы вызываются на некотором объекте контекста, который настраивается такой цепочкой. В этом случае лучше возвращать ссылку, как это принято делать при перегрузке операторов.

Худший ответ:
Немножко оффтоп, но зачем вообще вам такое нужно? Это же невозможно нормально отлаживать. Сами себе проблемы придумываете на ровном месте.
Вопрос: 16 лет. Идти во фриланс или начинать junior'ом в конторе?

Лучший ответ:
на галеры. в смысле в контору.
если контора нормальная:
1. быстрее подростешь в проф.плане
2. увидишь/поймешь как устроена разработка ПО
3. прокачаешь коммуникационный скил

а потом уже можно на фриланс, если захочется свободы.

Худший ответ:
Зачем в 16 лет работать? Еще успеете. Судя по github, мотивации обучаться и так хватает. Работа может отбить мотивацию, так как интересные проекты вам не дадут, а не интересные слишком нудные.
З.Ы.
У меня знакомый в 16 лет нашел себе приемных родителей в США, которые смогли его обеспечивать материально, в том числе универ.