Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Вопрос к владельцам macbook 12" — какая средняя температура аппарата?

Лучший ответ:
для разработки лучше взять все же pro-серию. Без touch bar, минимум 8гб озу и лучше 15"
 У самого air 13 2013 4gb ram i5, небольшие идеи иногда проверяю под c++,  для этого хватает, для более серьзных задач лучше desktop или  тот-же macbook pro.
А насчет температуры - терпимо.

Худший ответ:
для разработки лучше взять все же pro-серию. Без touch bar, минимум 8гб озу и лучше 15"
 У самого air 13 2013 4gb ram i5, небольшие идеи иногда проверяю под c++,  для этого хватает, для более серьзных задач лучше desktop или  тот-же macbook pro.
А насчет температуры - терпимо.
Вопрос: Как подключить на Wordpress оплату через Золотая Корона?

Лучший ответ:
Просто при оплате сделаете текстовую страницу где есть Имя, Город, кому и где перевести деньги. И дальнейшие инструкций, пользователю чтоб он знал что должен делать после оплаты.

Худший ответ:
Подключите любую эквайринговую систему где есть виза или мастеркард.  Также можете заключить договор с банком обслуживающим карту на предоставление API
Вопрос: Как преобразовать кортеж с несколькими элементами в одну строку?

Лучший ответ:
Ну вот так например:flatten = [str(item) for sub in tuple for item in sub]
Или можно itertools использовать:import itertools
flatten = [str(item) for item in itertools.chain(*tuple)]
А потом сделать join:"".join(flatten)

Худший ответ:
str.join() склеивает через указанную строку элементы списка;map() применяет указанную функцию к каждому элементу списка.t = (('a1', 'a2', 'a3'), ('b1', 'b2', 'b3'))

';'.join(map(','.join,t)) # 'a1,a2,a3;b1,b2,b3'
Вместо ; и , можно указать другие разделители, в т.ч. пустую строку.
Вопрос: Где найти стартап?

Лучший ответ:
Этот вопрос в разных вариациях задавали на Тостере уже много десятков если не сотен раз. И всегда доминирующее среди ответов мнение - джуны никому не нужны, а единственный способ набраться опыта - устроиться в офис на полный рабочий день.

Худший ответ:
Например у нас в стартапе. Я ищу кого-то себе в помощь на простые задачки и взамен научу всему что умею и дам возможность набраться опыта в реальном проекте. 
https://t.me/karabur
Вопрос: Выносить ли переменные в начало кода?

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

Худший ответ:
Если прямо в одном участке кода, то и объявлять их лучше в нем, если хотя бы есть потенциал что будут использоваться где-то еще, то можно и наверх.
С опытом рука сама набьется и будете ставить там где надо.
Вопрос: Нет денег, но есть идея как их привлечь. Может что-то упускаю из вида?

Лучший ответ:
Идея стоит $0
Твоя идея похожа на пирамиду

Худший ответ:
Нет логики.
Вы фактически берёте кредит под долю у людей с помощью криптовалют. Т.к. в случае успеха вы платите долю прибыли, в случае провала - возвращаете всем деньги.
Тогда вам проще взять кредит в банке. Тоже вернёте в случае провала, но не надо будет давать долю в случае успеха.
Вопрос: Какую Архитектуру базы данных?

Лучший ответ:
serials:
- id (1, 2, ...)
- name (Побег из тюрьмы, Рик и Морти, ...)
serials_voiceovers:
- id (1, 2, ...)
- name (LostFilm, BaibaKo, ...)
serials_series:
- id (1, 2, ...)
- serial_id `serials.id` (1, 2, ...)
- number (1, 2, ...)
- voiceover_id `serials_voiceovers.id` (1, 2, ...)
- url (serials.com/rik-i-morti.mp4, ...)

Худший ответ:
бери mongo db и не парься. Все сериалы можешь хранить в одной таблице
Вопрос: Есть ли в этом доме сервер?

Лучший ответ:
Открываете щиток и вырубаете каждый автомат
Смотрите что счетчик остановился, если не остановился, то вызывайте электрика, где то есть скрытая линия.
Дальше включаете автоматы на свет (будем считать что щиток сделан по современному)
И смотрим на счетчик, он не должен считать либо минимально
И так включаем поочередно по группам пока не найдем линия которая жрет, дальше по ситуации.
Из вариантов: электрический теплый пол, соседи тырят электричество, электроводонагреватели.
Серверное оборудование домашнего уровня столько не скушает.
Замудренный программист если он не труп или его не эвакуировали в тюрьму никогда не оставит свое оборудование

Худший ответ:
Много конечно. Вызвать электрика не пробовали? Может счетчик быть неисправный. 
В Электросети обратитесь, пусть проверят счетчик, если не найдете скрытой утечки.
Вопрос: Хранение данных в C#, как лучше?

Лучший ответ:
Словари и списки для хранения в оперативной памяти, а на диск все равно нужно как-то их записывать, если БД не подходит то сериализация в JSON или XML.Как искать в словарях и под одним ключом хранить несколько значений?
Под ключом храните массив или список, а в нем уже значения, к слову форматы  JSON и XML все это поддерживают.

Худший ответ:
Есть такой класс  Lookup. Позволяет сопоставить одному ключу несколько значений.
Получить объект такого типа можно из любого IEnumerable с помощью нескольких перегруженных методов ToLookup(...).
Вопрос: Как Кинопоиск определяет ключевые слова для фильма?

Лучший ответ:
Похоже, это всё из описания содержания фильма с подбором по определённым правилам: 
1. полное описательное действие, 
2. описательный тип персонажа,
3. все эмоциональные характеристики или действия
4. имена собственные, названия мест и т.д.
5. все словосочетания объектов/действий, содержащие любую словоформу: "женщина, мужчина, название, мотив, злодей, герой, актёр, происхождение" (и т.д.). 
Словоформы (п.5) - это скорее всего, ОБЩАЯ таблица существительных на основе описаний ВСЕХ фильмов, встречающихся наиболее часто в описаниях всех этих фильмов вместе взятых. (т.е. автоматически сформированное тегирование)
Также, думаю, что сделано добавление в ручном режиме любых исходных словоформ для максимального построения необходимых интересных для читателя тематических групп (тегов/нод).

Худший ответ:
это делает человек.
Вопрос: Обязательно ли указывать картинке размеры в html?

Лучший ответ:
Мысль вот в чем - если указать размеры, браузер выделит под изображение место на странице и когда оно загрузится не будет скачкообразного смещения элементов. При использовании качественных, объемных изображения, пользователь может уже начать изучать текстовую информацию на странице и тут вдруг бац, браузер дошел до картинки, текст который читал пользователь сместился, пользователь вынужден искать где он читал. Однако непосредственно в html указывать размеры не нужно. Это можно сделать в css и уже там реализовывать адаптивность. Закономерный вопрос - скачкообразное смещение в этом случае все же может возникнуть. Для того чтобы этого гарантировано избежать есть различные методики. Например critical path css. Возвращаясь к html, с введением тега picture html то же получил инструменты для адаптивности. Рекомендую изучить.

Худший ответ:
Для ускорения отрисовки рекомендовали указывать размеры или в img, или в css, без разницы. Не рекомендовали пропускать указание размеров картинок, а также врать об этих размерах (если вы укажете 120x120 px для картинки 250x250 px, то это также плохо, как не указывать размеры вообще - запустит те же процессы "пере-рендеринга").
Но всё это было в старых версиях Google Page Speed, а теперь рекомендуют:
- минифицировать всё, что возможно;
- управлять процессом загрузки: дробить css, код хидеров, футеров, сайд-меню - всё будет загружаться в том порядке, как вы указываете и тут же рендериться (если это возможно - рекомендуют "текст статьи" загружать первым, а затем всю навигацию и картинки)
- если это возможно, использовать css вместо картинок в принципе.
Вопрос: Почему числа с унарным минусом выдают 'true' в логическом контексте?

Лучший ответ:
www.ecma-international.org/ecma-262/7.0/index.html...
Undefined -> false
Null -> false
Boolean - как есть
Number - +0, -0, NaN -> false, остальное -> true
String - пустая строка -> false, остальное -> true
Symbol -> true
Object -> true

Худший ответ:
https://www.dropbox.com/s/q4ayb96dlzwbvnz/Screensh...
см. "javascript подробное руководство" Фленагана
раздел 3.8
потом 4.9.1
Вопрос: Как задетектить Яндекс.Браузер с помощью JS?

Лучший ответ:
Последние версии Яндекс.Браузера можно определить по ключевому слову "YaBrowser" в строке юзерагента. Но насколько я знаю не существует надёжного способа на клиенте определить браузер.

Худший ответ:
Последние версии Яндекс.Браузера можно определить по ключевому слову "YaBrowser" в строке юзерагента. Но насколько я знаю не существует надёжного способа на клиенте определить браузер.
Вопрос: Как правильно построить процесс работы дизайнеру на Upwork в Украине?

Лучший ответ:
регистрируешься
бидишь
низкие для мелких работ
работаешь
как все, апворк не дает вариантов строить финансовые отношения отличным способом от того что предлагает апворк, а он предлагает только один вариант.
еще есть хорошая статья про работу на 99десигн
upworkest.ru/kak-vyigryvat-konkursy-na-99-design

Худший ответ:
Как построить успешную карьеру на Upwork веб-разработчикам и веб-дизайнерам?Как построить успешную карьеру на Upwork веб-разра...
Вопрос: Режет ли провайдер скорость интернета?

Лучший ответ:
Вполне возможно, что пинги с таким размером пакета тупо режутся, просто потому, что незачем их такие посылать - таким образом ничего разумного не проверить... И с ограничением скорости это не связано.
Для проверки полосы вообще ping не подходит, только для проверки потерь и задержек между точками.
Для проверки полосы есть другие инструменты, например iperf, но он требует какой-то другой стороны с заведомо широким каналом.

Худший ответ:
Провайдеры абсолютно всегда "режут" скорость, потому что им ширину канала нужно между пользователями распределить в соответствии с их тарифами. А то, что вы показали - тормоза роутера провайдера. У вас же Ethernet до квартиры?
Вопрос: Как сделать так, чтобы AC питание можно было включать любой стороной?

Лучший ответ:
Если реле для переменного тока, то фаза и ноль не принципиальны. Т.к. относительно ноля напряжение уходит и в плюс и в минус. Просто цепляете переменку, ничего от этого не умрет.
А вот то, что советуют поставить мост... если там тиристоры/симисторы внутри, то оно может потерять способность закрываться без перехода через 0.
Не понял кусок два для постоянного (ноль и фаза) Это вообще что было? На постоянке есть + и -. (Похоже речь ведь об управляющих контактах реле?)

Худший ответ:
Извините, очень невнятные формулировки. Давайте уточнять.Мне нужно управлять двигателемЧто вы подразумеваете под термином "управлять" - только вкл-выкл или ещё и менять тягу/обороты? Или ещё и реверс? Твердотельное реле всё это умеет, но схематика в этих случаях существенно разная. Что будет органом управления? Кнопка, две кнопки, тумблер, электросигнал (какой?) или ещё что-то?двигателем переменного токаИх целая куча вариантов: асинхронные или синхронные (со  сдвигом фазы с помощью конденсатора или КЗ-витка), коллекторно-щёточные (многие модели прекрасно работают на переменке) - какой ваш? И какова мощность, хотя бы порядок величин?UPD1. ОК, продолжим.насос на асинхронном двигателе. Требуется включать-выключать и менять скорость вращения. Во-первых, что за асинхронник? С конденсатором? Во-вторых, обороты асинхронника обычно привязаны к частоте питания (на считанные проценты медленнее синхронной частоты) и практически не регулируются. При попытке изменять обороты регулировкой напряжения питания начинаются неприятности: резкое уменьшение момента на валу и его нестабильность, рост потерь (перегрев). А как регулировались обороты в исходном варианте? Там случайно не частота ли регулировалась? Если да, то это меняет весь подход.UPD2.регулировка скрости только на разгоне-торможенииНу, тогда действительно можно напряжением, т.е. симисторным регулятором, исполнительный элемент которого - то самое реле с оптронным входом. При включении пусть начинает с 40...50%, и далее подъём до 100% за пару секунд. Для этого софт вашего контроллера должен включать в себя подпрограмму 100-герцовой ШИМ.Вопрос я задавал только для того, чтобы подключать насос не к бесперебойнику, а прямо в розетку.Не понимаю, чего вы всполохнулись. Симисторное реле - вещь симметричная относительно полярности (ну или по крайней мере должна быть таковой), от положения вилки в розетке в реле ничего не меняется. По входу - тоже, поскольку он гальванически развязан через оптрон. Так что причин для паники нет.
Вопрос: Ускорит ли Wordpress покупка более мощного сервера?

Лучший ответ:
Если нет нагрузки от кучи пользователей то нет

Худший ответ:
Как вариант можно поменять хостинг с такими же характеристиками, но уже с SSD вместо HDD.
Как и сказал Fixid - нужно смотреть на настройки и оптимизацию.
Вопрос: Django: CBV или функции?

Лучший ответ:
Я не столь многоопытен в Django, но имеющейся информацией поделиться готов. Возможно, вам также пригодится...
Есть три человека (двое из них - семейная пара), к мнению которых в данном вопросе (Django-разработка) я прислушиваюсь в первую очередь, тщательно и неторопливо изучая соответствующие печатные материалы...
Это Daniel & Audrey Roy Greenfeld, авторы небезызвестной Two Scoops of Django и Arun Ravindran, developer member of the Django Software Foundation и автор Django Design Patterns and Best Practices.
И первые, и второй предпочитают CBV. Но это, в большей степени, личные предпочтения. Сами Гринфилды отмечают, что знают немало своих коллег, предпочитающих работу с FBV (цитирую: "...Some developers prefer to err on the side of using FBVs for most views and CBVs only for views that need to be subclassed. That strategy is fine as well...."). Одним словом, это действительно вопрос личных предпочтений и характера разрабатываемого продукта.
Единственный категорический совет от них - не использовать CBV для написания обработчиков ошибок ("...Don’t use CBVs to write custom 403, 404, and 500 error handlers. Use FBVs instead....")А тут можно полюбопытствовать на графическую подсказку от Гринфилдов по выбору предпочтения в зависимости от стоящих перед вами задач.

Худший ответ:
KISS
Если перед тобой типовая задача, которая реализуется в 1-5 строк на CBV -> используем CBV
Если ты уже видишь, как будешь пилить из CBV пятиетажное наследование для "упрощения" -> FBV
Совмещать подходы можно через функцию, в которой будет добавление необходимого контекстаdef get_common_context():
     # do something
     return {'answer': 42, 'foo': 'bar'}


def index_page(request):
     context = get_common_context()
     context['buzz'] = 123
     return render(request, 'index.html', context)
 

class MyCommonContext(ContextMixin):
    def get_context_data(self, **kwargs):
        context = super(RandomNumberView, self).get_context_data(**kwargs)
        # тут нужно определиться, какой контекст главнее и тот должен быть последним
        context.update(get_common_context())
        context['buzz'] = 123
        return context


class ArticleDetailView(MyCommonContext, DetailView):
    model = Article
Вопрос: Как правильно вызвать функцию в React?

Лучший ответ:
получаю ошибку
Текст ошибки показывать не надо, так держать (не так).вызываю в дочернем компоненте this.props.getCity(1, 'П')
Которого, если верить показанному вами коду, нет. Смотрим, откуда берётся getCity в дочернем компоненте - видим, что getCity={this.getCity}, при этом метод getCity в родительском компоненте отсутствует. Есть getCities. Это как?передается пустой токен
Если для корректного функционирования дочернего компонента нужен токен, то не надо рендерить компонент в его отсутствие, дождитесь получения:{this.state.token && <NewAdvert id="newadvert" 
  user={this.state.fetchedUser}  
  cities={this.cities}
  getCities={this.getCities}
  getCity={this.getCity}
  token={this.state.token}
  getToken={this.getToken}
  go={this.go}
/>}

Худший ответ:
А я у вас в паренте не вижу метода getCity.
Его надо добавить как стрелочную функцию, если добавляется как то по другому.
Вопрос: Как поймать в GDB исключение, вызванное из basic_string(const charT*)?

Лучший ответ:
Нашёл.
Подключить статический libc++ (-static-libstdc++), тогда всё будет.

Худший ответ:
Загрузить символы из libc++ и поставить break.
Вопрос: Как научиться писать самостоятельно код?

Лучший ответ:
В школах и институтах учили строить алгоритмы, еще когда рисовали блок-схемы.
Это не зависит от языка программирования - нужно просто составить алгоритм для решения задачи. Изучая различные аспекты языка программирования, различные библиотеки, фреймворки и так далее вы просто приобретаете знания о дополнительных инструментах, которым нужно пользоваться для решения задачи.
Но само решение придумывает программист, а не язык программирования.
Чтобы повысить эффективность ваших практических занятий - придумайте или найдите задачи, смысл которых понятен и интересен прежде всего вам самим. Чтобы вы понимали какой результат вам нужен. Возможно вы даже измените свое мнение о результате.
Например, взять какую-нибудь игрушку с множеством товара и найти самый выгодный или дешевый товар. Вам будет понятна цель - найти нужный вам товар
При этом не будет важно в каком виде - в виде веб-странички, в виде простого текста на экран, или в виде заполненной таблички в базе данных.
При этом не будет важно какими инструментами вам нужно воспользоваться.
Главное, что вы осознаете что именно хотите получить. И пишете программу, которая выдает вам результат, используя имеющиеся знания.
Чем больше знаний, тем удобнее в конечном счете пользоваться тем что вы написали и тем быстрее и проще вам это писать.

Худший ответ:
программист делая программы решает задачу
задачу ставит заказчик или сам програмист
поставь себе интересную задачу и пиши код несколько лет как дипломный проект
например: чат блог форум редактор игру ...
Вопрос: Вопросы по SSD NVMe для 1С?

Лучший ответ:
Raid контроллеры получается смысла использовать в этом случае нетНу почему же?
Какие там провода. Просто втыкаете контроллер в PCI - диски в слоты M2 контроллера и все.
Можно и софт рейд.
Вообще в случае клиент- серверного сценария работы СУБД эффективно кэширует данные в памяти, что снижает случайную нагрузку на диск. Но тут зависит от количества оперативной памяти, размера базы, количества клиентов.
Не зная этого сложно предсказать нагрузку.
Но вообще для грамотно настроенной SQL  характерна нагрузка близкая к линейной.
По поводу рэйда - да тут есть смысл только в зеркальном рэйде для обеспечения отказоустойчивости.
По поводу износа диска сильно не волнуйтесь - там не такие объемы записи как правило.
Смотрите в сторону памяти 3DXPoint - интел оптан и прочие.
Там нет проблем ни с ресурсом, ни с TRIM'ом и и прочими заморочками NAND памяти.
Прежде чем ставить дорогие диски - проанализируйте текущую нагрузку, может там вообще HDD справится.
По поводу энтерпрайз дисков и обычных отличия в следующем -
1)поддержка разных серверных режимов.
2)увеличенный объем резерва ( никто не мешает вам это сделать на обычном диске)
3)больше памяти и мощнее процессор - там где пользовательский загнется под нагрузкой энтерпрайз будет пахать.
А 1с сервера разные бывают - где то нагрузка практически нулевая, где то высокая. Нужно знать количество пользователей, размер базы, постоянно ли пользователи работают активно с базой или нет.

Худший ответ:
Коллеги, у Нас есть рабочий прототип сервера 1С на AMD + NVMe, может дать в тест. Работает очень быстро!!!
Вопрос: Какой хостинг для сайта лучше Linux или Windows?

Лучший ответ:
Краткий ответ: в 99 случаях из 100 — линукс. 
Windows, как правило, нужен, если используются соответствующие решения (например .net). Имеет значение если хостинг находится в своей стране или в других странах например Германия или Франция?
Не особо. Если хостинг, например, в Азии, может быть длинный пинг (~задержка). Но обычно особой разницы нет.
Ну и обратите внимание на законодательные ограничения. См. закон о хранении персональных данных.

Худший ответ:
Подскажите какой из хостингов Linux или Windows будет лучше и надёжней и стабильней в работе? Тут целая наука обрисовывается, которая мало зависит от ОС. 
1 какого порядка хостер? Это непосредственный владелец оборудования, у которого есть своя стойка с серверами и даже хардовый управляемый коммутатор или группа людей перепродающая ресурсы? Но не стоит мчать на крутые ДЦ. У них там целые порталы хостятся и банки стойки кучами арендуют, а тут ты со своим сайтиком. Поэтому выходит второй момент
2 что с поддержкой? Сколько время реакции по договору (часто встречается, что прописывают время ответа до 1 суток), каков уровень грамотности и адекватности ТП. Если настроить мосты с группой ТП и оказаться благодарным пользователем, то очень многих нюансов и подводных камней получится миновать. Иногда достаточно просто человеческого подхода и понимания.
3 какое оборудование предлагают? Иногда там такой хлам стоит или жадные соседи на виртуалках так сажают систему, что на чём бы не был поднят сайт он еле ворочается.Имеет значение если хостинг находится в своей стране или в других странах например Германия или Франция? Имеет огромное значение, если у вас предполагается хоть какая-то обработка персональных данных. Второй важный момент - ваш сервер должен находиться как можно ближе к целевой аудитории для уменьшения времени доступа по сети. Поэтому нужно прикинуть географическое положение основной массы клиентов.Linux или Windows будет лучше и надёжней и стабильней в работе? Многое зависит от администратора, который будет готовить сервер, многое зависит от программиста, написавшего код сервиса. Однозначного ответа нет.
Вопрос: Как сложить элементы в массиве объектов (поэлементно)?

Лучший ответ:
a.reduce((acc, n) => (acc.val1 += n.val1, acc.val2 += n.val2, acc), { val1: 0, val2: 0 })
или, если имена свойств заранее неизвестны, и вообще, в разных элементах массива могут быть разными:a.reduce((acc, n) => (Object.entries(n).forEach(([k, v]) => acc[k] = (acc[k] || 0) + v), acc), {})

Худший ответ:
Я бы предпочёл такое решение задачи, основанное исключительно на ES-5 и предоставляющее суммы всех свойств по отдельности:var a = [
{val1: 1, val2: 1},
{val1: 2, val2: 2},
{val1: 3, val2: 3}
];

function sumProps (arr) {
	var out = {};
	arr.forEach(function(i) {
		for (var p in i) {
			if (i.hasOwnProperty(p)) {
				out[p] = out[p] || 0;
				out[p] += i[p];
			}
		}
	});
	return out;
}
console.log(sumProps (a));
Вопрос: Кому посчастливилось найти poe-дверной глазок?

Лучший ответ:
Спасибо автору, теперь у меня на одну проблему больше.

Худший ответ:
Не видел такой, но могу предложить вариант:
Использовать 2 пары из Ethernet провода, а по остальным подать питание и припаять разъем на конце с камерой. Все будет работать.
Вопрос: Какой эффективный способ отложенной публикации постов реализовать?

Лучший ответ:
При выборке из БД опубликованных постов добавляется условие, выбираются только посты где PublishAt меньше или равно текущему времени.

Худший ответ:
При выборке из БД опубликованных постов добавляется условие, выбираются только посты где PublishAt меньше или равно текущему времени.
Вопрос: Есть ли авторское право на функционал сайта?

Лучший ответ:
Если он не использует наработки вашего сервиса (что доказать не получится) и реализация не запатентована, то ничего вы не сможете сделать.
Авторские права на абстрактную идею не распространяются.

Худший ответ:
Есть ли авторское право на функционал сайта?Разумеется нет.Один из сотрудников нашей команды ушел из фирмы и как я недавно узнал он работает в другой команде, где они создают похожий сервис.Это нормальное явление.Вопрос может ли он понести юридическую ответственность за нарушение авторских прав, за то что решил на стороне реализовывать наш проект?Нет. Закон никак это не регламентирует.
Можно реализовывать что угодно.
Вопрос: Есть ли какой-нибудь хороший справочник по Java?

Лучший ответ:
Я думаю, вы ищете это.

Худший ответ:
У Java тоже есть официальный сайт, где всё описано - https://docs.oracle.com/en/java/index.html Правда, он менее дружелюбен к новичку.
Вопрос: Arduino — перенос решения в микроконтроллер, как?

Лучший ответ:
Ну еще нужно бутлоадер прошить туда. И всю обвязку по питанию и IO сделать.

Худший ответ:
проще всего иметь 2 ардуины.. . и одной ардуиной зашить другую тоесть контроллер   
гугл: "arduino icsp"
вроди того https://learn.sparkfun.com/tutorials/installing-an...