pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: На каком языке пишут игры на Android?

Лучший ответ: 1. На разных. Чаще java, иногда kotlin, иногда веб.
2. Отличий много. Это тема для диссертации, а не для вопроса.
3. Да, но в вашем случае вряд ли.

Худший ответ: их на движке делают прежде всего, а не на языке.
если свой движок - то обычно cpp. показателен майнкрафт. был же написан на джава вначале, но под андроид не поленились переписать на cpp.И можно ли написать нормальную, полноценную и быструю игру на JAVA или Kotlin?
не знаю, садиться и пробовать не собираюсь, реверс-инжинирить достаточно игр не приходилось.
но насчет "полноценную" и так ясно, что без движка она у вас такой не будет.
Вопрос: Как мотивировать сотрудников долей компании если компания ООО?

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

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

Лучший ответ: Чем это чревато помимо угрызения совести?Ничем — индексируется контент (тексты)и поменять уже все текстааааааа под себя

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

Лучший ответ: Если вы ожидали найти там исходники, такого не будет. .exe содержит скомпилированный код и ресурсы типа иконок, библиотек, диалогов. Если ресурсы относительно несложно поменять через всякие Resource Editor, то чтоб модифицировать .exe файл, нужно его дизассемблировать, понять устройство ассемблерного кода и внести изменения вручную, это далеко не так просто. Например, этим занимаются при взломе программ - кейгены, патчи, кряки.
Ответ на ваш вопрос будет таков:
Просто "открыть" можно через 7-zip
Незащищенные .exe дизассемблируются через IDA Pro
Запакованные или защищенные .exe нужно предварительно распаковать (в самом тупом случае - через UPX, в сложных - дизасмить распаковщик и динамически отлаживать)

Худший ответ: В большинстве случаев исходники в том виде, в каком они были до компиляции вы не получите.
Вопрос: Почему компьютер любое расширение файла видит как «тхт»?

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

Худший ответ: Панель управления, Свойства папки. Там в списке есть флажок "Скрывать расширения для зарегистрированных файлов". Сними его.
Вопрос: Не могу понять поведение css, свойство Inline-block?

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

Худший ответ: Добавьте uldisplay: inline-block и lifloat: left
https://codepen.io/ovvivus/pen/yzEpEB
Вопрос: Какую выбрать конфигурацию RAID для домашнего NAS?

Лучший ответ: Для начала ответьте на вопрос - зачем вам в NAS RAID?
RAID != Backup
Соответственно всякие излишества с массивами нужны только если вам нужна отказоустойчивость в реальном времени.
Я бы на вашем месте создал 
1) raid1 из 2x3TB
2) raid5 из 2x3TB+1x2TB (естественно доступно будет только 2+2, но можно же со временем заменить двухтерабайтник на еще одну трешку и расширить массив).
А оставшиеся диски (ну или один, если действовать по второму варианту) пустить на холодный бэкап наиболее важных данных.
JBOD - это просто отдельные диски, которые будут монтироваться в разные точки.
Итого:
- я бы советовал использовать програмный raid, потому что он более универсален и не будет зависеть от железа (которое тоже бывает смертно)
- про массив смотрите выше, в зависимости от того сколько места нужно прямо сейчас в том числе под бекап.
Проблемы с ребилдом raid5 я видел лично. И самая поганая вещь - никогда не можешь быть на 100% уверен, пострадали данные или на месте бедблоков была пустота. Только сверяться с бекапом.

Худший ответ: Для начала ответьте на вопрос - зачем вам в NAS RAID?
RAID != Backup
Соответственно всякие излишества с массивами нужны только если вам нужна отказоустойчивость в реальном времени.
Я бы на вашем месте создал 
1) raid1 из 2x3TB
2) raid5 из 2x3TB+1x2TB (естественно доступно будет только 2+2, но можно же со временем заменить двухтерабайтник на еще одну трешку и расширить массив).
А оставшиеся диски (ну или один, если действовать по второму варианту) пустить на холодный бэкап наиболее важных данных.
JBOD - это просто отдельные диски, которые будут монтироваться в разные точки.
Итого:
- я бы советовал использовать програмный raid, потому что он более универсален и не будет зависеть от железа (которое тоже бывает смертно)
- про массив смотрите выше, в зависимости от того сколько места нужно прямо сейчас в том числе под бекап.
Проблемы с ребилдом raid5 я видел лично. И самая поганая вещь - никогда не можешь быть на 100% уверен, пострадали данные или на месте бедблоков была пустота. Только сверяться с бекапом.
Вопрос: Как быть, если клиент после сделанной мной работы заплатил деньги и через некоторое время требует дополнить сайт и при этом не хочет платить деньги?

Лучший ответ: Уже решаю вообще отдать им деньги которые мне заплатили за работу и удалить с хостинга сайт. 
Что это за бред? Работу сделали? Да. Вам заплатили? Да. Клиенту нужна новая работа? Должен заплатить.Не хочет платить? Не делайте работу.
Каким боком здесь "отдать деньги и удалить сайт с хостинга" я понять не могу. Даже теоретически, как это поможет решить ситуацию?Как мне им, объяснить что это делается не бесплатно.
Словами. И нет, я не издеваюсь. У вас есть определенные условия работы - вы их озвучиваете клиенту. Если его не устраивает - он найдет то, что его устраивает. 
Я вот, вроде, и написал какой-то ответ, но смысла вашего вопроса так и не понял. С такими вопросами, мне кажется, лучше ходить на форум, потому как это специализированный сервис, как по мне. Ваш вопрос похож на вопрос из разряда "просто поговорить".

Худший ответ: Ну ты скажи ему что все появившиеся деньги закончились и ты теперь без еды не можешь работать
Вопрос: Как заменить prev/next из owl carousel на стрелки из font-awesome?

Лучший ответ: $(function() {
   $('.owl-carousel').owlCarousel({
       margin: 50,
       responsiveClass: true,
       items: 2,
       nav: true,
       navText: ["<img src='img/prev.png'>", "<img src='img/next.png'>"],
       responsive: {
           0: {
               items: 1,
               margin: 150,
               center: true,
               autoWidth: true,
               nav: false,
               navText: []
           },
           992: {
               items: 2
           }
       }
   });
Просто в navText меняешь значения на свои)

Худший ответ: А можно именно шрифтовые иконки ставить, а не картинки?
Вопрос: Как монетизировать знания?

Лучший ответ: Открываете сайт вакансий или фриланс  и смотрите, "что монетизируется". Выбираете тематику/направление, ищете по тому же тостеру "что учить для старта".

Худший ответ: идешь на сайт по поиску сотрудников, предложению работы и т.д. "тысячи их"
Смотришь требования к рабочим в интересующем секторе работ.
Стараешься их выполнить или хотя бы понять что требуется работодателю.
устраиваешься на работу.
Вопрос: Как настроить постоянные ссылки в Wordpress на nginx?

Лучший ответ: У вас не конфиг, а какой-то винегрет...return 301 https://$server_name$request_uri;
В рамках listen :80 вы редиректите на https?!location / {
    try_files $uri $uri/ /index.php?$args;
}
Этот фрагмент у вас вложен в такой жеlocation / {
    ...
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    ...
}
Что это за чушь? В этом конфиге даже разбираться не хочется.
Вот базовый конфиг, который работает и отвечает за пермалинки в том числе:server {
        # Слушаем 80й порт
        listen 80; 
        # Обслуживаем доменное имя, www тут же слушать не надо - будут дубликаты контента, печаль для SEO
        server_name example.com;
        # Корневая директория проекта
        root /var/www/example.com/httpdocs;

        # Индексы
        index index.php index.html;

        # Обработка запросов
        # $uri - существует ли конкретный файл
        # $uri/ - существует ли директория
        # /index.php?$args - если это не запрос на существующий файл или директорию, то перебрасываем на роутер WordPress (это и есть то, что надо для пермалинков)
        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        # Обрабатываем PHP
        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                fastcgi_pass unix:/var/run/php5-fpm.sock; # или php7.0-fpm.sock
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

        # Все остальное

        # Запрещаем доступ к .htaccess
        location ~ /\.ht {
                deny all;
        }

        # Просим кешировать статику на Х дней, не писать в логи
        location ~*
        ^.+\.(js|css|swf|xml|txt|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                access_log off;
                log_not_found off;
                expires 30d;
        }

}

# Отдельно слушаем домен с www и редиректим на основной
server {
        # Слушаем 80й порт
        listen 80; 
        # Обслуживаем доменное имя c www
        server_name www.example.com;
        # Отправляем запрос на основной домен
        return 301 $scheme://example.com$request_uri;
}
Снабдил комментами для ясности.
Что касается протокола HTTPS, то во-первых, его слушать надо на отдельном порту, а во-вторых, там еще SSL-сертификат надо подключать.

Худший ответ: Игорь, сделал конфиг как вы описали, столкнулся с непонятной проблемой. У меня VPS на Ubuntu, сервер nginx, на одном сайте установил Wordpress и WooCommerce, ссылки по названию страниц и записей работают, но при нажатии на кнопку корзины, начинает грузится какой то файл, если меня настройки постоянных ссылок на произвольный вид, начинает работать кнопка,  как сделать что бы она работала при ссылках по названию записей? сайт beton716.ru
Вопрос: Когда Изучать Фреймворки И Препроцессоры?

Лучший ответ: Препроцессоры можно практически сразу(советую scss), фреймворки типа бутстрапа не нужны от слова совсем, если только ваша цель не говнокод. Можно подсмотреть как в них реализована та или иная вещь и реализовать самому, но не более. И то проще на codepen заглянуть.
Учите JS. Особенно работу с DOM.
А вообще рекомендую пройти бесплатный вводный курс на codecamp

Худший ответ: На месяцы меряют возраст цыплят, а в обучении критерием являются достигнутые успехи.
Подумай над этим еще 2+ месяца.
Вопрос: Как поднять систему на роутере, если интерфейс недоступен?

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

Худший ответ: Программатором.
Вопрос: У всех не работает шрифт Noto Serif Italic в Safari?

Лучший ответ: Проблема оказалась в том, что для Сафари нужно не только в настройках шрифта указывать стиль шрифта, но и в том месте, где применяешь шрифт. Например:@font-face {
  font-family: 'Noto Serif';
  src: url('<%= font_path "noto/NotoSerif-Italic.eot" %>');
  src: url('<%= font_path "noto/NotoSerif-Italic.eot" %>?#iefix') format('embedded- 
  opentype'),
  url('<%= font_path "noto/NotoSerif-Italic.woff2" %>') format('woff2'),
  url('<%= font_path "noto/NotoSerif-Italic.woff" %>') format('woff'),
  url('<%= font_path "noto/NotoSerif-Italic.ttf" %>') format('truetype'),
  url('<%= font_path "noto/NotoSerif-Italic.svg" %>') format('svg');
  font-weight: normal;
  font-style: italic;
}div {
  font-family: 'Noto Serif';
  font-style: italic;
}
Вот при таком использовании шрифт будет отображаться в сафари.

Худший ответ: А в каком формате шрифт? Как подключаете? 
Сафари кушает .ttf, WOFF и svg начиная с 10 версии
С конвертировать можно тут: 
https://www.fontsquirrel.com/tools/webfont-generator
Вопрос: Стоит ли идти в институт, если хочешь стать программистом микроконтроллеров или лучше только самообразование?

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

Худший ответ: В ВУЗе дают немножко более фундаментальные основы знаний.
Например, преобразование Лапласа.
Или как изготовить собственный микроконтроллер в гараже.
Но образование же не отменяет опыт - сын ошибок трудных, и гений - парадоксов друг.
Формально, всё что требуется - это прочитать даташит, какие там в регистрах биты выставить. Но дальше начинается магия.
Но если подойти к вопросу с точки зрения "как меньше всех знать и больше всех работать", то можно найти немало интересных, нестандартных решений.
Вопрос: Что можно учить дополнительно к PHP из бека?

Лучший ответ: Есть ли смысл брать node.js?
Если фронт не нравится, то смысл залезать в тот же "фронт" только на сервере?Что можно учить дополнительно к PHP из бека?
Лучше выучить один нормально, а не скакать туда сюда и в среднем не знать ни один язык хотя бы средненько.
Когда будет нормальная база программерская(что как работает, как сделать любые типичные(или не очень) задачи, понимание что выучить список функций языка и синтаксис != быть хорошим разработчиком), тогда можно брать любой язык и пробовать. Синтаксис быстро понимается особенно если в английский смочь. Всё остальное с гуглом узнаётся в пару кликов.
Потому что от языка в основном не зависит что вы на нем сделаете, на всех можно делать одно и тоже, только синтаксис разный и целесообразность действий разная(писать CMS на Си никто не будет в здравом уме).

Худший ответ: 1. Во-первых бросьте фреймворк. Это болезнь всех начинающих. Толком ООП и MVC не понимать, зато уже во фреймворки залезть или "учить на основе фреймворков". Как итог: нет понимания ни как работает, ни зачем это надо, ООП и MVC. 
Попробуйте написать примитивный свой. Вот прям чтоб работала автозагрузка, хотя бы с помощью того же композера, написать свои M, V и С. 
В начале пути это не только не зазорно, но и полезно. К вам раз и навсегда придет понимание как это устроено. Выложите этот код на гитхаб. Потом скидывайте уже ссылку проекта сюда, и просите оценить ваш код. Сделать ревью. И не ждите снисхождения. Зато это будет лучший опыт. И максимально близкий к реальному (как на работе). А потом смело запишите себе это в резюме.
Во-вторых, бросьте yii2. Вот серьезно. В 2018 году это худший выбор который можно сделать. Ничто вас так не приучит к дисциплине как Symfony и не заставит понять как работают вообще все фреймворки. Но и не ждите легкости.
2. Не берите вы ничего дополнительно. Это вторая самая распространенная ошибка всех начинающих. Распыляться по сторонам. Браться за все сразу, за фреймворки в том числе.
Дополнительно - это может быть протокол HTTP и как он работает, MySQL, на уровне простых JOIN запросов. И все. хватит этого. 
3. Не хотите лезть во фронтенд, не лезьте. Там даже фронтендеры опытные сейчас ноги-руки ломают и шишки набивают.
Вопрос: Что такое обобщение в c++?

Лучший ответ: Верно думаете.

Худший ответ: Кажется, тут термин "обобщенный" не относится к языку. Просто по примеру сделать такой же список, но для любых данных.
Например, вот такой элемент списка:struct List
{
    struct List * next;
    struct List * prev;
    void * data;
    int dataType;
};
способен хранить данные любого типа (в зависимости от dataType, указатель data будет интерпретироваться по-разному)
Вопрос: Socket.io как пользоваться комнатами?

Лучший ответ: socket.io/docs/rooms-and-namespaces
Или в чем именно вопрос?

Худший ответ: socket.join('room3'); // подключить клиента к комнате room3
определить сколько народу в комнатеconst clients = io.sockets.adapter.rooms['room3'];
const numClients = (typeof clients !== 'undefined') ? Object.keys(clients.sockets).length : 0;
послать всем сообщение в room3io.in('room3').emit('user_join_chat', socket.id);
Вопрос: Критично ли если база заполняется пустыми столбцами?

Лучший ответ: Пусть будут.
Только если не надо не берите их SELECTом.
А вообще правильно парсить строку и разбивать по столбцам. Либо все хранить в строках.

Худший ответ: "Пустыми" в смысле NULL? Тогда в постгресе они места не занимают вообще ( в начале каждой строки таблицы есть битмап, в котором прописываются какие из полей равны NULL https://www.postgresql.org/docs/current/static/sto... ).
Если у вас там пустые строки, то, ну некрасиво, конечно, но на масштабах двух гигабайт некритично.
Вопрос: С чего начать в Тестировании и как получить полезный опыт?

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

Худший ответ: Cem Kaner, James Bach, Lisa Crispin, Dorothy Graham, Наталья Руколь.  Ютубьте, гуглите :)
Вопрос: Как организовать мониторинг служб windows через web-приложение?

Лучший ответ: данные о службах винда готова отдавать и без всяких самописных демонов - через SNMP (если установить этот компонент в выборе компонентов Windows и настроить службу SNMP) или через WMI. другими словами, опрашивайте из вашего web-приложения машины по SNMP или WMI. соответствующие запросы надо гуглить.
записи о падении службы также всегда попадают в журнал событий - eventvwr.msc.
по средствам данные не получают, по средствам живут. а данные - посредством.

Худший ответ: Правильный ход мыслей. Есть уже готовые системы - nagios, zabbix... Для nagios есть готовые агенты - nrpe, которые ставятся на винду и отдают многое множество данных - от размера свопа до свободного места. Кроме того, всегда можно забрать данные по SNMP - nrpe имеет в совем составе датчик, отдающий данные из всех стандартных MIB. Если же сервер и клиенты в одной сети - и nrpe не нужен - в nagios есть тоже полный комплект датчиков - nrpe нужен для мониторнига других сетей (по отношению к локальной)
Вопрос: Что лучше выбрать, C или C++?

Лучший ответ: Автор статьи так же рекомендовал Jav'у, т. к. она лучше справляется с теми же задачами
Что такое Jav? Если речь про Java, то не слушайте автора, C++ и Java - это разные языки для разных задач, да можно решить практически любую задачу на практически любом языке, но везде будут свои минусы и плюсы. Если писать игровой движок, то лучше C++ из-за производительности. 1) Какой язык лучше выбрать для разработки игр, C или C++?
Лучше выбрать движок типа Unity, ureal engine, etc. Если писать игровую логику, то очевидно лучше C++, чем C(а ещё лучше что-то более высокоуровневое), если писать сам движок, то я бы выбрал C++, т.к. в C++ больше готового, тот же STL и есть классы.  2) Легко ли перейти с C на C++ и наоборот, в случае необходимости?
Можно конечно, но лучше сразу учить то, что надо.  3) Если C++ лучше не выбирать, то стоит ли учить вместо него Jav'у? 
А какая цель? Написать игру или движок? Если игру, то учить нужно готовый движок типа UE(Blueprints|C++), Unity(C#), если движок, то C++. А Java немного для других задач. Основным минусом C++ приводилась очень высокая сложность языка
Основная сложность языка в возможности выстрелить себе в ногу и в обратной совместимости(в C++ очень редко что-то выпиливают из языка), поэтому нужно просто чуть больше времени на изучение, чем с другими языками и чуть больше практики, чтоб не выстрелить себе в ногу.

Худший ответ: 1. смотря какой инструмент использовать.
2. да.
3. нет
Вопрос: Как выполнить SELECT а потом DELETE в одном запросе?

Лучший ответ: На чистом SQL - только двумя отдельными запросами.
Можно написать триггер "... before delete on each row ... old. ...", например, для записи в лог-таблицу.
https://dev.mysql.com/doc/refman/5.7/en/trigger-sy...

Худший ответ: Исползуйте Output ... Delete
для вставки в таблицу:DELETE FROM dbo.t1  
OUTPUT DELETED.* INTO dbo.t2 
WHERE id = someid
или просто:DELETE FROM dbo.t1  
OUTPUT DELETED.*
WHERE id = someid
Вопрос: Почему не работает коннект к Mysql?

Лучший ответ: mysql - устарел.$base = new mysqli("localhost", "login", "password", "bdname" );

//Кодировка данных получаемых из базы
mysqli_set_charset($base, 'utf8');

Худший ответ: Во-первых у вас неправильная передача аргументов при подключении:$dblink = mysqli_connect('сервер', 'логин', 'пароль', 'название_базы', 'порт');
Так же mysql_ уже устарел, используйте mysqli_
Вопрос: Как из строки сделать массив с рандом значениями?

Лучший ответ: function uid (alphabet, n) {
  let string = ''
  for (let i = 0; i < n; i++) {
    string += alphabet[Math.floor(Math.random() * alphabet.length)]
  }
  return string
}Берите nanoid и не мучайтесь

Худший ответ: Первый аргумент превращаем в массив (назавем его условно alphArr). Далее на основании второго числа нужное количество раз генерим рандомное число в диапазоне от 0 до alphabet.length и по этому числу обращаемся к массиву alphArr. Полученное значение кладем в другой массив result. В конце делаем result.join('');
Вопрос: Почему значение undefined свойства?

Лучший ответ: у вас в месте объявления контекст window (или другой функции, в которой вызван этот код), но не объекта PlayerPlayer = {
    height : 96,
    width : 60,
    x : 0,
    y : 0,
    draw : function(){
        this.sprite.draw(this.x, this.y);
    },
    update : function(){
        this.sprite.update(this.x, this.y);
    }
};
Player.sprite  = new Sprite('player', Player.x, Player.y, Player.width, Player.height, 4, 16),

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

Лучший ответ: Ответ от человека, который 5 лет работает с подобной системой и которая себя уже осознала. 
Вы правы только от части. У вас есть две сущности - заказ и клиент. В зависимости от вашей сферы есть инициатор заказа, имя на которое сделан заказ и способ связи по заказу.
Как зовут и как связаться с тем кто вам позвонил вы никогда гарантировать не можете на самом деле. Кроме того у клиента моет быть несколько номеров телефонов и почт.
Могу посоветовать вам в случае явственного соответствия клиента и привязывать его через client_id и дублировать его ФИО в client_title (например), а так же ожидаемый контакт для связи.
Если вы будете вести только клиентскую базу то быстро упретесь в том что люди часто меняют телефоны и потом дозвониться до клиента станет невозможно. Вы убьетесь поддерживать эту информацию (вы же не ФСБ, ну)

Худший ответ: TAB - orders (id, client_id, .... ) в чем проблема просто оставить так , зачем переписывать данные и в orders ?
Вопрос: Почему футер уезжает?

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

Худший ответ: Футер состоит из двух частей фиксированной ширины 350 + 200 пикселей. В итоге 550. При меньшем разрешении правому некуда деваться. 
1) Плохое решение: .copyrights = 60%
.contacts = 30% (margins, etc.)
2) Решение по-лучше:@media screen and (max-width: 550px) {
    .copyrights {
        width: 100%;
    }

    .contacts {
        width: 100%;
    }
}
Вопрос: Как применять Less на практике?

Лучший ответ: если все равно только начинаешь изучать - переметнись на сторону sass) и сразу найдешь много гайдов и видеоуроков и всего прочего)

Худший ответ: То как применять LESS, решать только вам, потому что нет никакого "оптимизированного кода". Каждый делает так, как ему быстрее и удобнее. Имхо, гораздо важнее документировать код, а как он будет написан, не так важно.
Вопрос: NULL — сколько весит?

Лучший ответ: битовая маска чуть сложнее. 1 байт может хранить до 9 NULL подряд, но минимум - всегда уходит 1 байт. То есть:
1 null занимает 1 байт
8 null занимает 1 байт
9 null занимает 2 байта

Худший ответ: 1 битThe NULL bits are part of the row headers