Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как написать твит-бота на PHP не имея опыта в программировании?

Лучший ответ:
Как написать твит-бота на PHP не имея опыта в программировании?
0. Получить опыт программирования
1. Написать твит-ботаКак лучше в конце-концов начать изучать пэхэпэ с удовольствием для себя ?
0. Виски
1. Изучать пока действие виски не закончилось
2. GOTO 0

Худший ответ:
Собственно упрощенная модель. Жена принесла коньяк - начинаю тестировать<?php


class Man
{
    protected $fakeVar;
    
    public function go()
    {
        /* do it */
    }

    public function sleep()
    {
        /* do it */
    }

    public function eat()
    {
        /* do it */
    }

    public function crap()
    {
        /* do it */
    }

    public function play($time)
    {
        /* do it */
    }

    public function isSleeping() { /* do it */ return $this->fakeVar; }
    public function isEating() { /* do it */ return $this->fakeVar; }
    public function isCraping() { /* do it */ return $this->fakeVar; }
    public function isBusy() { /* do it */ return $this->fakeVar; }
}

interface Drinkable
{
    public function drink($volume);
}

class PhpDeveloper extends Man
{
    public function code($time)
    {
        /* do it */
    }

    public function study($time)
    {
        /* do it */
    }

    public function isCoding() { /* do it */ return $this->fakeVar; }
    public function isStudying() { /* do it */ return $this->fakeVar; }
    public function isBusy() { /* do it */ return $this->fakeVar; }

    public function go()
    {
        parent::go();
        /* do it */
    }
}


class WhiskeyDeveloper extends  PhpDeveloper  implements Drinkable
{
    const THRESHOLD = 0.01;
    const BALMERPEAK = 0.13;
    private $alcogolConcentration;

    public function drink($volume)
    {
        /* do it */
    }

    public function detectConcentration()
    {
        /* do it */
        return $this->alcogolConcentration;
    }

    public function go()
    {
        parent::go();

        if ($this->isBusy())
            return;

        if ($this->detectConcentration() < self::BALMERPEAK - self::THRESHOLD)
        {
            $this->drink(0.05);
            $this->study(10);
            return;
        }

        if ($this->detectConcentration() > self::BALMERPEAK + self::THRESHOLD*10)
        {
            $this->sleep();
            return;
        }

        if ($this->detectConcentration() > self::BALMERPEAK + self::THRESHOLD)
        {
            $this->play(10);
            return;
        }

        $this->code(10);
    }

}
Вопрос: На каком из этих языков можно работать с определенной строкой файла, не загружая его в оперативную память?

Лучший ответ:
На любом из перечисленных языков.

Худший ответ:
Как вариант PHP построчно php.net/manual/en/function.fgets.php
Вопрос: Какую часть проекта грузить в репозиторий bitbucket?

Лучший ответ:
Код - в git
Фреймворк/модули - в submodule
Настройки - не учитывать
Пользовательский контент - в бекап
Структуру БД - в миграции
Данные БД - в бэкап к пользовательским данным

Худший ответ:
сперва отделить статику от динамики. конфиги, кеш, логи, изображения загружаемые пользователями, и тд. - динамика, можно называть по другому, меняющиеся данные. Код, фрейм, шаблоны, изображения к ним, стили и скрипты - статика.
Статику добавляем в гит динамику игнорим
Вопрос: Как сделать визуальное редактирование блоков в Wordpress Landing Page?

Лучший ответ:
Без визуальных билдеров типа Visual Composer, Divi и прочих тут не обойтись. Нужно интегрировать свою верстку с ними. Если в билдере нету блоков что нам необходимы, писать свои шорткоды. Но мне на практике когда-то встречался и такой вариант:
1. Все HTML содержимое сверстаной страницы закидаем в редактор страницы вордпрес
2. В админку подключаем стили для сверстаной страницы
3. Теперь в редакторе страницы отображается как бы наша страница с стилями которые можно менять в редакторе

Худший ответ:
Думаю нужно искать в сторону WP Theme Customizer, можно написать свой интерфейс кастомизации через его апи. Так же возможно есть какие-то плагины-конструкторы.
Вопрос: Как обернуть DIV после 6 постов?

Лучший ответ:
Ну и код у вас... идея примерно такая:$i = 0;
foreach ($categories as $cat){
$i++;
// ...
if($i % 6 === 0){
    echo '</div><div>';
}

Худший ответ:
вы че там сговорились? щас придет еще один и запостит как обернуть 8 постов в дивКак обернуть дивом каждые 3 записи
идея такая же
Вопрос: Что надо знать для django?

Лучший ответ:
Привет.
1) Смотришь видюшки от этого мужика: https://www.youtube.com/user/shadrus - этого тебе хватит, чтобы понять, что такое django, и как она работает.
2) Начинаешь делать свой проект и знакомишься на практике со всеми её особенностями. Решаешь вопросы, которые появляются с помощью гугла, там все есть, сам проверял.
3) Подключаешь документацию и начинаешь разбираться в особенностях и кастомизации, когда нужно пилить уже сложные фичи.
Фреймворк очень большой, с большим числом настроек, но далеко не все будут нужны в рабочем проекте. И изучать их придется уже в ходе реализации.
P.s. "переменные и типы, условные конструкции, циклические конструкции, функции и списки?" - Это Питон, это не Джанго.

Худший ответ:
Подойдут, там по ходу дела разберетесь
Вопрос: Можно ли уже использовать PHP7 для 1С Битрикс?

Лучший ответ:
PHP7 конечно же стоит использовать, а вот Битрикс не стоит.
ПыСы. Если серьезно, то можно, у меня множестов проектов на самых разных движках было переброшено на PHP7, никаких проблем не возникло. Ну Битрикс он конечно особенный, но все равно проблем будет немного.

Худший ответ:
нужно!
Вопрос: Где лучше всего искать со-основателя из области IT для моего стартапа?

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

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

Лучший ответ:
Работаю в центре тестирования, около 8тысячь бланок в неделю проверяем. 
Для печати используем Bar Tender, 
для сканирования используем  - Abbyy Flexy Capture  в связке с автоматическим сканером Kodak i222. 
мой вам совет если бланки будут бумажные то не пытайтесь самому написать / форкунуть или что-то еще. Лучше и проще купить готовый софт который будет надежно работать, да и вам будет проще его обслуживать.

Худший ответ:
Окей, я буду отвечать по простому, возможно гдето неточно, так как автор новичок. Это специально написано для тех кто любит приколупываться к деталям.
Начнем немного с термина "нейронная сеть". Нейронная сеть если совсем упростить, это что-то вроде каталога связей, к тестам никакого отношения не имеет, если читали о теории графов то графы самый класический пример работы нейронной сети, но в основном это просто словечко маркетологов, потому что термин нейронная сеть может подразумевать тысячи разных алгоритмов и про какой конкретно идет речь - совершенно непонятно.
Тест распознавать можно, но это неприемлемо в данном случае так как распознавание текста имеет определенную степень достоверности, а вам нужно 100% совпадения с тем что на бумаге написано. Можно конечно разработать специальные бланки, с высокой степенью распознавания, но зачем, если изначально можно сделать индивидуальные онлайн формы для тестирования, айти класс есть даже в селах, а на крайний случай можно сделать и версию для мобильных.
Что до самих тестов, это достаточно несложно, тут трудности будут с количеством одновременных участников, но и это решаемо, скорее всего помогут высокопроизводительные технологии вроде Node.js и WebSocket, могу предложить услуги своей команды для этого.
Что до самостоятельного изучения материала по этой теме, очень много учить чтобы за раз охватить всю подноготную, самостоятельно - максимум простой сайт с тестом, о более продвинутых вариантах и думать нечего.
Вопрос: Как указать background-size в универсальном background?

Лучший ответ:
Указать размер для каждого через запятую, в порядке следования картинок в свойстве background.#example1 {
    background: url(img_1.gif) left top no-repeat, url(img_2.gif) right bottom no-repeat;
    background-size: 50px, 130px;
}

Худший ответ:
Ну как вариант можно прибегнуть к грубости.
В основном диве задаете один фон и position:relative;z-index:0;
В него кладете еще один блок со стилями position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background: второй бэкграунд. И управляете как нужно.
Или объедините бэкграунды в один.
Вопрос: Реально ли сверстать три лендинга в сутки?

Лучший ответ:
Смотря какие лендинги. А вообще, скорее всего, он наработал себе стартовый шаблон со всеми типовыми элементами лендосов (а лендосы почти всегда типовые), и просто меняет оформление.

Худший ответ:
Расскажи ему что верстаешь 10.
Если поменять картинки и передвинуть кнопку - то 20 
самое печальное что заказчики говорят что лендинг на 20 экранов с пиксел перфект и адаптацией делается минут за 40-60 я на YouTube видел :).
Вопрос: Как устранить мерцание интерфейса windows?

Лучший ответ:
Ну, вообще говоря, дискретная видяха в гибридном видео не имеет видеовыхода и всегда изображение выводится через интеграшку, даже если оно отрендерено дискреткой. Но это к делу не относится. Я наблюдал что-то похожее на одном компе с восьмёркой, причём это приводило к падениям софта где-то в недрах MSVCR120.dll и решения пока не нашёл.

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

Лучший ответ:
Вы не представляете себе, так обычно и работает switch.
prog21.dadgum.com/166.html

Худший ответ:
Возможно setjmp/longjmp это то что вам нужно?
Вопрос: Нужно ли разделять модель с выводом данных и поиском?

Лучший ответ:
1. Да стоит, это похоже на repository$searchCriteria = new CustomerSearchCriteria;
$searchCriteria->setByName("москва");
$customers = $customerRepository->findByCriteria($searchCriteria);//->CustomerCollection
2. Методы относятся к методам репозитория: $customerRepository->save($customer);//save это create и update в одном флаконе

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

Лучший ответ:
Возможно.
На чем? Я бы сделал на C#, кто-то на Delphi, кто-то на Python.
Но я бы пытался найти готовое решение, наверняка, оно уже есть. Может подойдёт расширение на Мозилу, которое проверяет изменение на сайте:
https://addons.mozilla.org/ru/firefox/addon/check4...

Худший ответ:
Вопрос кажется простым и кажется что его легко реализовать, но всё зависит от сайта. Если там реализована система антибот то автоматизировать это будет очень и очень непросто. Одно дело если там простой html и "клик" по строке это переход по ссылке то это одно дело, а если там скрипты и капча... то совсем другой уровень!
Вопрос: Нужно ли сертифицировать устройство перед запуском в серию?

Лучший ответ:
Принципиально зависит это в том числе от назначения устройства. Если речь идет о модуле управления кардиостимулятором - то однозначно надо и сертифицировать и получать одобрения Минздрава, если же иное - то стоит посмотреть вот сюда: ozpp.ru/standard/pravila/sert

Худший ответ:
Отмечу, что указанный выше список основан на классификаторе ОК 005-93 (ОКП), который утратил силу. Классификатор ОКП (ОК 005-93) утратил силу 01.01.2017. Согласно приказу Росстандарта от 31.01.2014 №14-ст его заменил классификатор ОКПД (ОК 034-2014 (КПЕС 2008)).
Вопрос: Какой шаблон можно придумать для матанкапчи?

Лучший ответ:
криволинейный тройной интеграл по замкнутому контуру

Худший ответ:
Не завидую я вашим пользователям: www-formula.ru/index.php/2011-09-24-00-39-11
Как вариант, чтобы отсеять всех:  Циркуляция векторного поля по замкнутому контуру
Лучше попросите решить пропорцию или прогрессию:
Например, 5/8=8/? (ответ: 12.8=8*8/5)
при неверном ответе - генерируйте новую.
Вопрос: Linux не получает данные с Windows DNS Server?

Лучший ответ:
А если пинговать по полному имени - server.domainname.something ?
Если пингунтся - то в /etc/network/interfaces допишите dns-search с вашим доменом для релевантного интерфейса.

Худший ответ:
Есть DNS кэш, у него есть время, обычно это час, но все зависит от настроек TTL на DNS сервере. вообще странно настроено у тебя, почему нельзя резервировать адреса для машин?
Проверяй работу DNS с помощью команды nslookup.
Вопрос: Как реализовать данную галерею с сортировкой?

Лучший ответ:
Ищите в поисковике по запросу jquery filter portfolio gallery
и получаете куча отличных примеров. 
https://codepen.io/creotip/pen/dfjeF
https://codepen.io/pramodkumarboda/pen/XdgxmQ
а также, нарветесь на саму библиотечку https://isotope.metafizzy.co/

Худший ответ:
Вот готовое решение:
https://vestride.github.io/Shuffle/
Вопрос: Важно ли всё понимать в программировании и куда лучше не лезть?

Лучший ответ:
просто ctrl + c, ctrl + v, чтобы зря не тратить время
Смотрите, веб-программист родился! Правда, его время ничего не стоит, но он его всё равно "экономит" :)По теме: допустим, есть знания Железо, Компилятор, Библиотеки, Среда программирования (IDE, дебаггер).
Если вы системщик, то без знания железа и Ассемблера (хотя бы в общих чертах) далеко не уплывёте, т. е. железо+компилятор+библиотеки+среда.
Прикладникам очень желательно знать, как работает (хотя бы, опять же, в общих чертах) компилятор, железо уже не обязательно, это более высокий уровень абстракций. Грамотный программер должен понимать, что творится в ПК и должен знать язык, на котором пишет, т. е. компилятор+библиотеки+среда.
Разного рода веб-программистам достаточно знать язык и среду, которой они пишут, ибо какого-то особого компилятора там нет, т. е. библиотеки+среда.
Как-то так.

Худший ответ:
о том, о сём и просто ctrl + c, ctrl + v 
"о сколько нам открытий чудных ... " = убитых систем ,ТыЖпрограммистамии и "копипастерами"  :)
Вопрос: Есть ли название у оператора «->»?

Лучший ответ:
Оператор -> называется object operator (внутреннее название T_OBJECT_OPERATOR).
А оператор :: называется Paamayim Nekudotayim, что значит "двойное двоеточие" на иврите!

Худший ответ:
Всё просто — оператор «стрелка»
Или object access, если на буржуйском. Но перевод не звучный. «Стрелка» удобнее.
Вопрос: Phpstorm. Требует установить JAVA_HOME (failed to create jvm: error code -6). Как решить эту задачу правильно, чтобы заработало?

Лучший ответ:
Вот еще раз скриншот для переменных: 
а вот еще скриншот ошибки phpstorm.exe :
Спасибо всем, кто решились мне помочь, я ожидал развернутого ответа, но не дождался, пришлось решить задачу самому. Нашел в ютубе один ролик, где на английском рассказывают, как правильно подключить системные переменные. 
Здесь следует сказать, что у меня 64-разрядная система, и я скачал файл jdk только для 64-битной конфигурации. Затем подключил, как показывают в роллике. Вот он: 
https://www.youtube.com/watch?v=Wp6uS7CmivE&t=1s
После проделанной работе, нужно перезагрузить компьютер, так как сначала у меня ничего не работало. И только после перезагрузки случилось чудо. Спасибо Всем, вопрос закрыт. Может кому-то поможет мой опыт, всем пока. 
Кстати, а как закрыть вопрос?

Худший ответ:
Прееустановите jdk и jre (по пути по умолчанию), удостоверьтесь что пути в систеных переменных правильные, и запускайте.
Вопрос: Как реализовать блок шириной больше .container?

Лучший ответ:
<header>
    <div class="wrapper">
        контент
    </div> 
</header>
<div class="green">
    <div class="wrapper">
        контент
    </div> 
</div> 
<div>
    <div class="wrapper">
        контент
    </div> 
</div>.wrapper{
    width: 1200px;
    margin: 0 auto;
}

Худший ответ:
Всё оказалось гораздо проще, чем можно было себе представить, спасибо за ответ.
Вопрос: Паскаль. Переменные и массивы внутри классов?

Лучший ответ:
Что творится? Не компилируется?
А не компилируется из-за непонимания концепции эквивалентности типов. В отличие от Си, внешне одинаковые типы не эквивалентны! Для эквивалентности надо, чтобы их цепочки type A = B; вели к одному «предку». Для этого существует оператор type.const
  FieldSize = 10;
  MaxShips = 10;
type
  TField = record
    cells : array [1..FieldSize, 1..FieldSize] of integer;
    nLive : array [1..MaxShips] of integer;
  end;
  TGame = class
    Field : TField;
    constructor Create(const Field : TField);  
  end;
Возможно, эквивалентность ослабили в Delphi, не проверял. А в BP именно так.
Возможно, вы также сделали известную ошибку начинающего дельфиста:var
  x : Test;
....
x.Create(a, b);     // неверно!
x := Test.Create(a, b); // верно!Есть одно исключение из этой эквивалентности типов.type
  DaInt = array of integer;

procedure DoSomething1(var x : array of integer);
procedure DoSomething2(var x : DaInt);
Эти команды обе действуют, но не эквивалентны!
Первое — нововведение TP7, параметр типа «открытый массив», массив любой размерности. Статический, динамический, строчка 2D-массива — всё подойдёт. Действуют Low, High и (для D4+) Length.
Второе — нововведение D4, динамический массив, которому можно изменять длину через SetLength.

Худший ответ:
Если речь о PascalABC, то смотрите в документацию, он немножко особенный.
Если PascalABC.NET, то и подавно, это извращенные решетки.
Вопрос: Если на Upwork отменить заявку на проект, то вернуться ли коннекты?

Лучший ответ:
Не вернутся. Только если работа будет отменена клиентом или закрыта модераторами по какой-то причине.

Худший ответ:
Нет, иначе бы они их не продавали)
Вопрос: Нужно чтоб поддомен брал файлы из основого домена как сделать?

Лучший ответ:
server {
    server_name hello.example.com;
    root *путь до основного домена*;
}
Пишете свой путь, например /var/www/example.com

Худший ответ:
Ну вот создал тестовый поддомен всё что в его конфиге
server {
    server_name file.tts.*/
    root /home/www/tts.*/upload/file;
}
пытаюсь получить файл nginx пишет 404 ошибку
Вопрос: Как правильно делать fetch в react?

Лучший ответ:
1. data.goals[0].gs_id
Использование подобных, небезопасных конструкций считается плохим тоном.
2. Используйте в state ключ состояния загрузки.export default class Forma extends React.Component {
    constructor(props) {
        super(props);

        this.state ={ data: {}, isFetching: true, error: null };
    }

    componentDidMount() {
        fetch('http://localhost:3001')
            .then(response => response.json())
            .then(result => this.setState({data: result, isFetching: false }));
            .catch(e => {
              console.log(e);
              this.setState({data: result, isFetching: false, error: e }));
            });
    }

    render() {
        const { data, isFetching, error } = this.state;
        
        if (isFetching) return <div>...Loading</div>;

        if (error) return <div>{`Error: ${e.message}`}</div>;

        return <h1>{data.goals[0].gs_id}</h1>;
    }


}

Худший ответ:
Ну или так import React, { Component } from 'react';

class Succes extends Component{
    constructor(props){
        super(props);
        this.state = { error: null,
            isLoaded: false,
            items: Array
        }
    }



    componentDidMount() {
        // Fetch тут
        fetch("http://example.url/page.php")
            .then((response) => response.json())
            .then((response) => {
                    this.setState({items: response});
                    this.setState({isLoaded: true});
            })
            .then((error) => {
                this.setState({false: true});
                this.setState({error});
            })


    }



    render (){
        const data = Array.from(this.state.data.headers);

    }

}

export default Succes;
Ну подробно можете прочитать тут
Вопрос: Какую можете посоветовать библиотеку для графиков и диаграмм?

Лучший ответ:
Никто не скажет, какая лучше подойдет для твоих целей. Библиотеки c диаграммами/графиками смотри на Android Arsenal

Худший ответ:
Самая популярная - https://github.com/PhilJay/MPAndroidChart ,  которой почему-то нет по ссылке от @zeekenru
Имеет много разных типов диаграмм, необходимо смотреть демо и читать вики. Много возможностей кастомизации.
Вопрос: Нужна ли олимпиадная подготовка, чтобы стать программистом?

Лучший ответ:
Серьезно, неужели это правда?
Мой любимый пример: я на Ютубе увидел человека, который на полном серьёзе утверждал, что Земля плоская и приводил убедительные аргументы.
По теме: нет, конечно. Умение решать олимпиадные задачки может быть признаком математического ума, но уж точно никогда не будет в первую очередь необходимым умением. Просто кто-то умеет их решать и хочет верить, что ему это хоть как-то пригодится, кек.

Худший ответ:
Необязательно
Вопрос: Для чего делают ховеры на js?

Лучший ответ:
Можете не искать подвоха, его нет. Всё очень просто и прозаично — это их родной БЭМ в его чистейшей интерпретации. Они же используют полный стек БЭМа, а не только нотацию имен классов. Любой стиль определяется только классом. Каждый компонент лежит в отдельной папке, внутри js/css/img, стили разбиты еще на файлы — стили блока/элемента/модификатора в отдельных файлах. Всё это собирается чудо-машиной БЭМ.js.

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

Лучший ответ:
Например можешь писать не на CSS, а на SCSS, гораздо удобнее. Вместо HTML использовать JADE, гораздо удобнее и компактнее. Автоматическая компиляция всего этого в html, css соответственно, минификация. Так-же оптимизация изображений. Все это делать в ручную это неудобно. Да и вообще куча удобных плюшек, про F5 можно забыть. Попробуй и сам поймешь, что тебе удобнее, а потом может и webpack захочешь потискать.

Худший ответ:
Gulp и аналоги помогут собрать воедино много различных плюшек для автоматизации и не только. Весь твой арсенал будет запускаться одной командой: gulp
В твоем арсенале может быть:browsersync - при любых изменениях в файлах, страница с проектом в браузере будет автоматически обновляться;autoprefixer - ну, тут понятно;препроцессоры (SCSS, LESS и т.д.) - тебе не нужно будет отдельно запускать программы типа Koala и т.д.;минификация JS и CSS - это будет делаться автоматически.
Перечислять можно много чего
Попробуй OptimizedHTML, где по умолчанию уже много чего есть внутри
Вопрос: Стоит ли делать такую проверку?

Лучший ответ:
Если действие только в удалении класса, то такая проверка бессмысленна — remove сам проверяет наличие класса, удаляет в случае наличия и ничего не делает в случае отсутствия. Дополнительная проверка является лишней нагрузкой, хотя и очень незначительной, вряд ли заметно отразится на производительности.

Худший ответ:
Проверку лучше делать всегда, т.к. иначе - код будет неуправляемым (try-catch-exception).
Вопрос: Можно ли дублировать приложения в google play?

Лучший ответ:
Все делается совсем по другому: https://developer.android.com/training/basics/supp...

Худший ответ:
Все делается совсем по другому: https://developer.android.com/training/basics/supp...
Вопрос: Путь к файлу заканчивать слешем или нет?

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

Худший ответ:
Слэш на конце значит каталог, нет слэша значит файл.
Вопрос: Одна подсеть не видит другую?

Лучший ответ:
linkmeup.ru/sdsm
начните отсюда

Худший ответ:
В рамках телепатии -  маршрут из 172.16 сети в сторону 10.10 сети проходит через NAT, из-за чего 10.10 сеть о 172.16 просто ничего не знает.
PS: почему подсеть 172.16.3.0 с шестнадцатой маской, когда должна быть с 24й? Опечатка?