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

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

Для дашбоардов мне нравится adminLTE - лаконичный удобный интерфейс, довольно много виджетов из коробки, и не приходится корчить из себя дизайнера - большинство элементов уже отрисованы.

Худший ответ:
https://adminlte.io/ например
Вопрос: Проектирование БД, какую СУБД выбрать?

Лучший ответ:
Ваши нагрузки легко выдержит любая SQL СУБД - MySQL, PostgreSQL.

Преждевременная оптимизация - зло. Начните с простых, давно уже известных вещей. А затем уже, по мере выявления узких мест - оптимизируйте.

Худший ответ:
Вполне нормальная структура. Нагрузка низкая. СУБД та, которую лучше знаете (это актуально и для высоких нагрузок, тот же MySQL прекрасно себя показывает на высоких нагрузках, если вы его используете как базу данных, и не требуете приготовления кофе). Схемы здесь задействовать ни к чему. ClickHouse - это вообще про другое, забудьте до тех пор, пока не понадобится аналитика по большим объемам данных. Главное, не забудьте построить индексы по тем полям, по которым будете формировать выборки.
Вопрос: В чем моя ошибка в запросе?

Лучший ответ:
Ошибка потому, что ваш вызов $conn->query(...) транслируется в mysqli::query($conn, ...), а эта функция ждёт ровно два параметра. Первый - соединение, второй - текст запроса.
Для использования подготовленного запроса, его необходимо сначала подготовить (prepare), затем связать плейсхолдеры с переменными (bind_param) и только после этого выполнить (execute).
Ну и апострофы у вас неправильные, имена баз данных, таблиц, и полей берутся в обратные апострофы (`).

Худший ответ:
Вообще 2 вариант нормальный вроде.Попробуйте вывести ошибку тогда и посмотрим
Вопрос: Как дать mute, ban телеграм ботом?

Лучший ответ:
Ответ:
https://stackoverflow.com/questions/41521266/dont-...

Худший ответ:
Забанить:
Можно с помощью метода:   restrictChatMember ()
Удаление сообщений пользователей:
Для удаления используйте этот метод:  deleteMessage ()
НЕ забудьте предоставить своему боту права администратора
Вопрос: Как добавить в запрос проведенный документ?

Лучший ответ:
В смысле "проведенный"? Если нужно отобрать только проведенные документы, то в тексте запроса достаточно написать: "И ЗаказКлиента.Проведен" и никаких лишних параметров передавать не нужно.

Худший ответ:
ГДЕ
    |	ЗаказКлиента.СуммаДокумента >= &СуммаДокумента
    |	И ЗаказКлиента.Дата МЕЖДУ &ДатаНач И &ДатаКон
    |	И ЗаказКлиента.Проведен";

  Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
  Запрос.УстановитьПараметр("ДатаНач", ДатаНач);

или

ГДЕ
    |	ЗаказКлиента.СуммаДокумента >= &СуммаДокумента
    |	И ЗаказКлиента.Дата МЕЖДУ &ДатаНач И &ДатаКон
    |	И ЗаказКлиента.Проведен = &Проведен";

  Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
  Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
  Запрос.УстановитьПараметр("Проведен", Истина);
Вопрос: Почему не видно переменных сессии в chrome dev tools?

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

Худший ответ:
не путайте сессию пхп и https://developer.mozilla.org/ru/docs/Web/API/Wind... - это совершенно разные понятия.
Вопрос: Проблема с установкой windows (и не только) на ssd диск, как решить?

Лучший ответ:
Подключите диск напрямую к настольному компьютеру, и если он будет виден хотя бы в BIOS (или как устройство в Windows), проверьте SSD R.tester'ом: https://rlab.ru/tools/rtester.html

Начните с просмотра SMART, а если на ССД нет никаких важных данных (судя по переустановкам, нет), то сделайте тесты чтения и записи. Тест записи уничтожает всё безвозвратно. 
По графикам будет видно состояние памяти, их можно сделать максимально детальными.

Но пропадания диска - уже плохой признак. Оптимальным вариантом было бы сдать его по гарантии уже на основе этого. Доверять такому накопителю не стоит.

Худший ответ:
Так а какие тут могут быть варианты? Если смотреть отдельно взятый комп, то подозреваемых четверо:  
1) Сам ssd
2) Соединение (кабель и разъёмы)
3) Материнка
4) Блок питания
Тестировать всех по отдельности с заведомо исправными остальными компонентами.
Но если я правильно понял описание, то ssd глючил на исходном компе,  ещё на одном компе и ещё на ноутбуке? 
В таком случае он, по-моему, самый-самый главный подозреваемый. Подыхает...
Вопрос: Переменная undefined?

Лучший ответ:
В message.user в какой-то момент отсутствует cvetok. Может он там никогда и не появляется. Почему нет цветка - выяснять вам

Худший ответ:
Ну написано же что ты пытаешься получить свойство у undefined. Значит в переменной cvetok значение undefined.
Вопрос: Как сделать автообновление курса?

Лучший ответ:
curl + cron + немного кода. Раз в день забираете курс с нужного сайта (обычно у банков есть апи, которое отдает сразу жсон или хмл), парсите, кладете в базу. Все.

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

Лучший ответ:
Потому, что при передаче данных от пользователя и обратно нужно правильно использовать API между средами, которые обеспечивают стек технологий web.
Например, рассмотрим взаимодействие веб-сервера и сервера баз данных.
В этом месте стека, не все разработчики умеют в буквальном смысле "готовить" запросы, в которых есть входные параметры.
https://www.php.net/manual/ru/pdo.prepared-stateme...
Вместо того, чтобы использовать специальный порядок подготовки запроса SQL и данных к его выполнению, начинающие разработчики просто склеивают текст запроса с непосредственно данными, которые во входных параметрах (ну, работает же), что небезопасно, даже если экранировать данные (от кавычек и точки с запятой вы спасетесь, но не от union + произвольный запрос).
Это касается не только использования паролей в качестве данных, но и любых других данных, в особенности поступающих от пользователя.
Такие нюансы работы с интерфейсами можно найти и при использовании JSON, XML, кастомного создания пакета данных HTTP (привет попыткам отправить электронное письмо из веб-сервера с вложениями самописными скриптами), формирования HTML с пользовательскими данными.
Если взаимодействие правильно организовано, то суть данных не должно приводить систему в непредсказуемое состояние.
PS: В базу данных, вообще, можно записать blob с произвольными бинарными данными в одно поле, гигабайт размером - как здрасти. И в этом блобе будете искать кавычки?))

Худший ответ:
Можно сделать по разному, например в php есть htmlspecialchars который превращает опасные символы в безопасные
Вопрос: Какая причина нагрузки на сервер базами sql в которых не работают?

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

Чтобы понять что именно происходит, можно включить профилирование запросов и посмотреть к каким таблицам идут обращения. Возможно вы поставили каждую секунду пересчет рассчитываемых цен или что-то такое...

Худший ответ:
Как сказали выше, в базах выполняются фоновые(регламентные) задания.
Если в тестовых регл-задания не нужны, их можно отключить в свойствах конкретной базы из консоли кластера, выставить галку "Блокировка регламентных заданий"
Вопрос: Postgresql как преобразовать пустую строку в «Не отправлено»?

Лучший ответ:
Что такое "пустая строка", строка нулевой длины или NULL? Впрочем, оба случая накрываются конструкцией
COALESCE(NULLIF(status, ''), 'Не отправлено')
Если в status может быть горсть пробелов - предварительно тримануть.

Худший ответ:
Если под пустой строкой подразумевается NULL - то COALESCE
Если под пустой строкой подразумевается "" - то CASE
Вопрос: Как с помощью библиотеки IMAP сделать программу которая удаляет все непонятные (нежелательные) письма с моей почты mail.ru?

Лучший ответ:
Можно просто настроить фильтры писем прямо на mail.ru

Худший ответ:
Думаю, это будет очень тяжело сделать - так как mail.ru не поддерживает поиск писем!
Mail.ru IMAP: Unsupported search criterion
mail.ru imap поиск письма
Вопрос: Ошибка компилятора CS0111?

Лучший ответ:
1. Читать ошибку, искать строчку кода с ней
2. Пользоваться переводчиком
3. Учить сишарп
4. Использовать ide с подсветкой ошибок
5. Не определять два метода Jump с одинаковым прототипом, о чем прямо говоит ошибка

Худший ответ:
У вас два метода с одинаковым именем Jump.
Вопрос: Как происходит соединение peer-to-peer, если оба человека сидят на внутренних ip (за NATом)?

Лучший ответ:
Либо дырявят свой НАТ с помощью UPnP, либо используют для связи UDP, а координаты второй стороны получают от общего сервера. Примерно по такой же схеме работает VoIP за NATом (смотри протокол STUN).

Худший ответ:
Ну NAT же ответы каким-то образом передает обратно запросившему абоненту.
Следовательно ожидает, а потом принимает, и  пересылает данные пришедшие к нему на определенный порт с определенного адреса отправителю.
Зная механизм NAT можно его обмануть - для этого второму абоненту надо отправить данные имитирующие ответ сервера от которого ждут ответа.  В результате такого обмена устанавливается соединение.
Способов обмана NAT - великое множество, но не все и не всегда работают.
Вопрос: Что будет, если базу 1с положить в PostgreSQL без оптимизаций?

Лучший ответ:
возьми версию постгресс для 1с и накатывай. Она в свободном доступе.
в чем проблема то?

Худший ответ:
Будет нормально работать. Только сам Постгрес сконфигурячь под свой сервер ( postgresql.conf). Базы в 10Гб вообще ни о чём.
Можешь этот калькулятор использовать
https://pgtune.leopard.in.ua/
Вопрос: Есть ли в Laravel какие-то методы для динамического добавления полей в модель/сущность на основе MySQL?

Лучший ответ:
Вы придумали проблему там где её нет, потому что объединили две несвязанные задачи.
Добавление и прочие изменения можно подсмотреть в миграциях, есть готовый компонент \Illuminate\Database\Schema\Builder
После этого поле ничем не отличается от остальных. Это не Doctrine, где поля надо явно прописывать.

Вторая задача это работа админки, она никак не связана с путём появления поля в модели. Та же простейшая динамическая сортировка или фильтрация делается в лоб. 
Допустим в урле приходит 
?filterBy=fieldName&filterValue=value&filteOperation=%3D
в контроллере
$model->where($request->get('filterBy'), urldecode($request->get('filterOperation')), $request->get('filterValue'));
И не важно как вы добавили колонку и есть ли она вообще в базе, Eloquent не проверяет этого.
Но не забывайте про безопасность.

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

Лучший ответ:
Добрый день villanelle1. Обновите PowerShell. У меня на данный момент версия (7.2.5). Зайдите в PyCharm IDE, далее Settings/Tools/Terminal. В параметрах ShellPath выбираете путь до ранее установленной обновленной версии PowerShell, примените настройки. Перезапустите программу, все проблемы исчезнут. Пс. Предварительно Вам надо посмотреть какая групповая политика у Вас сейчас есть. Делается это командой Get-ExecutionPolicy в PowerShell, должна быть она Unrestricted, если другая, командой Set-ExecutionPolicy Unrestricted -Force, можно ее включить. Примечание - У меня есть подозрение что должно работать после обновления и замены пути к PowerShell. Удачи!


Худший ответ:
Столкнулся с такой же проблемой, после переустановки PyCharm на новую версию.
В настройках, как на скриншоте в ответе выше выбрал Shell - "C:\Windows\System32\cmd.exe"
После этого сообщение исчезло. 

Не уверен, что это правильное решение. Теперь во встроенном окне PyCharm вместо PowerShell будет запускаться обычный "CMD". Но, насколько я понимаю, его обычно достаточно. Может крутым специалистам требуется именно PowerShell, но мне он пока в обычных задачах не требовался и достаточно было CMD.
Вопрос: Как определили ip сервера спрятанного за cloudflare?

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

Поможет только новый хостинг и домен, при этом добавлять их в Cloudflare надо через третьего хостера.

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

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

Худший ответ:
кто сказал что место закончилось если df -h говорит что оно есть?

если лог файл не открыт постоянно на запись (кстати зависит от того как именно программа туда пишет данные, может и получится) его можно обрезать штатной утилитой 
truncate -s 0 logfile
а на будущее, нужно настроить чтобы логи писались не в один и тот же файл а по интервалу в новый (например имя файла с текущей датой, делит логи по суткам), чистить такие логи проще всего по крону
Вопрос: Excel цвет шрифта который вывожу через скрипт, как применить цвет к вариантам?

Лучший ответ:
Изменение цвета:
Красный: cell.Offset(0, 1).Font.Color = RGB(255, 0, 0)
Зелёный: cell.Offset(0, 1).Font.Color = RGB(0, 255, 0)

Проверка на пустые ячейки:
If cell.Value <> "" Then

Худший ответ:
Кому нужен более проработанный скрипт ловите, по поводу цвета, можно через скрипт применять, а можно через (условное форматирование). Я так и сделал.

Function GetURLstatus(ByVal URL$) As Long
    On Error Resume Next: URL$ = Replace(URL$, "\", "/")
    Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
    xmlhttp.Open "GET", URL, "False"
    xmlhttp.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
    xmlhttp.send
    GetURLstatus = Val(xmlhttp.Status)
    Set xmlhttp = Nothing
End Function

Sub Кнопка1_Щелчок()
For Each cell In Range("Таблица1").Columns(1).Cells
If cell.Value <> "" Then
    cell.Offset(0, 1).Value = "Проверка..."
    s = cell.Value
    If UCase(Left(s, 4)) = "HTTP" Then
    ss = GetURLstatus(s)
    Select Case ss
    Case 200: cell.Offset(0, 1).Value = "РАБОТАЕТ"
    'Case 400 To 600: cell.Offset(0, 1).Value = "НЕ РАБОТАЕТ"
    Case Else: cell.Offset(0, 1).Value = "НЕ РАБОТАЕТ"
    End Select
    Else
    cell.Offset(0, 1).Value = "Некорректная ссылка"
    End If
End If
Next
End Sub
Вопрос: Что значит 20 и почему именно 20?

Лучший ответ:
каждая двацтая секунда. 
а почему - вопрос автору кода.

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

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

Худший ответ:
Просто используй Microsoft SQL Studio Managment
Вопрос: Куда идти в 14 лет в it?

Лучший ответ:
Так и не разобралась моя голова, как использовать его на хостинге.  
вот Вам и направление. Если сможете разобраться - двинетесь дальше, если нет бросьте IT, закончите школу

Худший ответ:
Если есть желание js, скачай курс практикума яндекса, а если есть возможность купи. Все объяснят.
Вопрос: По DHCP раздается не та подсеть. Как решить проблему?

Лучший ответ:
Да, если кто-то воткнул в вашу сеть свой dhcp, то так и будет.

Клиент при включении отправляет широковещательный запрос, кто здесь dhcp сервер. Вот чей сервер первей ответит, тот и раздаст этому клиенту адреса.

Худший ответ:
Проблема найти теперь виновника. Через Wireshark определил кто раздает DHCP, есть информация об MAC адресе, только мне от этого легче не стало, так как нет нигде никакой информации о том, что это за устройство. Тот же Wireshark пишет, допустим, что под таким то MAC адресом это TP-LINK и т.д., с MAC адресом, который раздает 30 подсеть - глухо.
Через файрвол iptables на DHCP сервере полностью заблокировал этот MAC адрес, даже если кто-то включил роутер в сеть, то интернет у него не должен никак работать.
Вопрос: Генерировать числа с заданной вероятностью?

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

Пример
Дана таблица:
1 - 0.9
2 - 0.8
3 - 0.7
Тогда интервалы будут следующие: 0-0.9, 0.9-1.7, 1.7-2.4. 
Допустим, сгенерировано случайно число 0.65 - примем его за относительные координаты.
Переводим координаты в абсолютные 0.65*2.4=1.56. Следовательно, случайно число попадает в интервал 0.9-1.7, значит искомое число - 2.

Худший ответ:
приведу пример кода на python с использованием библиотеки numpy
import numpy as np
sample_space = [0,1,2,3,4,5,6]
probabilities = [0.3,0.2,0.05,0.05,0.1,0.15,0.15]
n = 20
result = np.random.choice(sample_space,size=n,p=probabilities)
print(result)
sample_space - лист откуда будет производится выборка
probabilities - лист соответствующих вероятностей (0 с вероятностью 0.3,  1 с вероятностью 0.2, и.т.д) вероятности я взял свои, вы поставите свои главное чтобы вероятности в сумме были 1.
n - количество сгенерированных чисел для примера я взял 20, вы зададите сколько ва нужно.
функция choice также имеет параметр replace по умолчанию установленный в True он регулирует может ли ранее выбранный элемент, быть выбранном снова, в нашем случае могут ли быть повторения при выборке из sample_space  (по умолчанию может).
Насчет нормирования вероятностей, такое возможно только если n=2, или если есть дополнительная информация позволяющая создать систему уравнений. В вашем случае это невозможно например
возьмем нашу дистрибуцию мы имеем 0 с вероятностью 0.3, мы меняем ее 0.2, у нас будет существовать бесконечное количество сценариев как мы можем раскидать 0.1 на остальные 6 элементов. Уникального решения не существует.
Вопрос: Для чего в go.mod добовить зависимости если мы указываем полный путь к ним в коде?

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

Худший ответ:
Сегодня ты используешь пакет vasyan и из него вызываешь vasyan.Hello(5, 6), которая по документации умножает первый аргумент на второй, а завтра пакет vasyan обновляется и Hello удаляется, а у тебя падает компиляция. Но гораздо хуже ситуация, когда завтра пакет vasyan обновляется и теперь Hello прибавляет первый аргумент ко второму, компиляция проходит, всё прекрасно, но в конце месяца к тебе приходит бизнес и садит на бутылку за то, что вы три месяца снимали по 11 долларов с клиентов вместо ожидаемых 30 и таким образом потеряли два миллиона долларов
Вопрос: Как обновить ACME v1 до v2?

Лучший ответ:
Есть Let`sEncrypt клиент на Golang, он представляет из себя бинарник без зависимостей. Просто скачай и запусти.

Худший ответ:
На определённой замшелости ОС новая версия клиента не установится из-за зависимостей. В противном случае - просто посмотрите в стандартных или backports-репозиториях.
Вопрос: Как перебить преоритетность стилей?

Лучший ответ:
Берите этот же селектор, располагайте его в конце таблицы стилей или в другом файле, подключенном после имеющегося и пишите там нужную ширину.

Худший ответ:
Правильный ответ вам написал Сергей delphinpro. 

А варианты говнокода: 
a) фигачить стилям !important;
b) повысить специфичность добавив body перед классом; 
c) повысить специфичность добавив классу :not(.hack) (можно n раз, чем больше - тем селектор круче);
...
Вопрос: Ночью разряжается айфон. В чем дело?

Лучший ответ:
А что плохого в том, что телефон разряжается не будучи подключенным к зарядке? Он постоянно обменивается данными с базовой станцией, показывая, что он в сети, мессенджеры получают новые сообщения, фотографии выгружаются в облако... Собственно, много чего происходит. При слабом сигнале у меня больше 10% заряда съедает за ночь. 

Можно, конечно, принудительно запретить любую передачу данных, но зачем тогда нужен смартфон? Просто примите как данность, что он будет постоянно понемногу расходовать аккумулятор.

И еще - показания заряда аккумулятора из-за методики измерения могут отличаться под нагрузкой и без нагрузки, да и вообще это далеко не такая точная цифра, как принято думать. Кстати, посмотреть новости через сафари (спасибо современным криворуким веб-программистам) совсем не легкая нагрузка.

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

Лучший ответ:
Сделайте rewrite правило в конфиге nginx, чтобы при обращении к sitemap.xml вызывался php скрипт, который и обновит и выведет содержимое sitemap.xml. Только позаботьтесь о некой логики кеша, чтобы функция обновления файла запускалась не каждый раз, а по мере устаревания файла или его отсутствии.

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

Лучший ответ:
в биосе настроить режим работы вентихлятора. там обычно несколько вариантов Silent Maximum и т.д.

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

P.S. бороться в BIOS с оборотами не рекомендую, лечить надо причину, а не следствие...
Вопрос: Что учесть разработчику стартапа, будучи наемным сотрудником в компании, чтобы не лишиться своего детища?

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

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

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

Худший ответ:
RewriteEngine On
RewriteCond %{REQUEST_URI} ! \.html$
RewriteCond %{REQUEST_URI} ! /$
RewriteRule ^(.*)$ $1.html
Тут ! \.html$ и тут ! /$ пробелов быть не должно, иначе ошибка синтаксиса.
Ещё поменять ^(.*)$ на ^([^.]+)$ чтобы не ловило файлы css, js.
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^([^.]+)$ /$1.html [L]

Или
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^([^.]+)$ /$1.html [L]
Вопрос: Как пишут код на C?

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

учебник по языку - лишь учебник по языку. он знакомит с языком, а не как им пользоваться.

Худший ответ:
K&R - это не стандарт Си и даже не учебник. Просто популярная книжка от авторов языка про язык.
Сам язык достаточно простой, выучить его можно легко. Начать можно с того же K&R.