Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Стоит ли делать таблицу на флексбоксах или делать по классике?

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

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

Есть ЗАГОЛОВОК
есть подзаголовок
Есть таблица
Есть подвал со сносками
Есть лэйоут вот он и верстается дивами

PS и  есть странные люди кричащие что все нужно верстать дивами, даже не могущие обьяснить почему
Вопрос: Ошибка в телеграм бот API, ошибка с keyboard, NameError: name 'types' is not defined?

Лучший ответ:
Скорее всего забыли добавитьfrom telebot import types

Худший ответ:
В данном случае нужно импортировать types из telebot, есть два варианта, первый - это импортировать только types:from telebot import types
Второй вариант - импортировать все модули из telebot:from telebot import *
Вопрос: Установка Linux mint без флешки или диска?

Лучший ответ:
Установить по сети с помощью PXE

Худший ответ:
Как правило лучше всего pxe, но если эта опция недоступна (невозможно подключиться проводом и нет возможности на чём-то рядом запустить dhcp+tftp), есть и другие варианты. Например, при наличии Windows можно в загрузчик NT добавить grub4dos и в него прописать netinst-вариант установки нужного дистрибутива. Ещё можно загрузить ipxe любым образом и уже из него загрузить нужный инсталлятор, например, по http.
Вопрос: Почему Docker Postgres игнорирует скрипт наполнения базы?

Лучший ответ:
Решил проблему через Dockerfile:
FROM postgres:9.5.23
ADD ./sqls/init.sql /docker-entrypoint-initdb.d/

И docker-compose.yml теперь:
version: '3'

services:
  db:
    build: .
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DB=my_db
      - POSTGRES_USER=my_user
      - POSTGRES_PASSWORD=my_password
    volumes:
      - postgres-data:/var/lib/postgresql/data
volumes:
  postgres-data:

Все завелось и заработало.

Худший ответ:
1) то, что init.sql действительно файл вы уже проверяли?
2) попробуйте смаппировать так:
- в директорию  sqls скопируйте init.sql
- sqls:/docker-entrypoint-initdb.d
Вопрос: Поможет ли php-fpm + ngnix в нашей проблеме с нагрузкой при парсинге?

Лучший ответ:
Веб-сервер тут при чем? Вы парсите через php-cli

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

Лучший ответ:
Попробуй явно указать в релейшенах foreign_key и local_key
https://laravel.com/docs/5.8/eloquent-relationship...

Худший ответ:
Скорее всего, у вас перепутаны родитель и дочка в отношениях. 
Кроме того, у вас почему-то отношение "один-к-одному", хотя судя из названий классов (Article и Category) отношение должно быть "один-ко-многим" (одна категория может содержать много статей, а одна статья принадлежит только одной категории).
Должно быть как-то так:// Category.php 

public function articles(){
    return $this->hasMany('App\Article');
}

// Article.php

public function category(){
    return $this->belongsTo('App\Category');
}
Тогда структура БД должна быть такая:categories:
   - id
   - name
   - slug

articles:
   - id
   - category_id
   - title
   - content
Использовать отношения можно будет так:$article = Article::find(1); // Получаем статью с ID 1

$category = $article->category; // Получаем категорию статьи

dump($category->name); // Выводим название категории

dump($category->articles); // Выводим список всех статей в данной категории
Вопрос: Как отправлять ajax, если .htaccess меняет расширение .php на ничего?

Лучший ответ:
во первых определитесь ДЛЯ ЧЕГО в хтаксессе такие правила, иначе там какой-то бред. Обычно нечто подобное делают для переадресации на единую точку входа, в вашем случае я вообще не понимаю зачем такие правила. 
во вторых (когда вы разберетесь с первым) либо исключите из правил пхп файлы, либо вы придете к нормальному роутингу, мвц и объектам и вопрос отпадет сам собой.

Худший ответ:
логи и отладка
Вопрос: Изучения Larvel без ооп?

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

Можно ли учить лару, пробовать что-то писать, изучая параллельно и ООП, и лару? Да, конечно. Совершенно ничего не мешает.

Худший ответ:
А что за боязнь ООП? Это же не черт в табакерке, и не сложнее, чем функциональное программирование, например. Хотя сложность во многом зависит от инструмента (конкретного API, языка), в чистом виде научиться мыслить объектами, имеющими действия-методы и данные-свойства не составит труда, и это не сложнее чем, например, мыслить передачей структур данных в глобальном порядке или по цепочке. А понять, как в общих чертах работают классы и начать использовать их с Laravel — хорошая практика для изучения. Тем более у Laravel (почти) все в порядке со следованием хорошим практикам и паттернам разработки. Ну и надо понимать, что без ООП в наше время осталось совсем немного прикладных инструментов, т.е. знания пригодятся.
Вопрос: Возможно ли хранить код в «Облаке Mail.ru», Яндекс?

Лучший ответ:
Можно, но это будет сильно менее удобно, чем хранить код в гите.
Если вам не нравится github, то можете использовать другой хостинг для этого.
Если вам нужно локально в проводнике смотреть на код - делаете git clone и радуетесь

Худший ответ:
Можно, но очень будет медленно. Склонировать проект из github займет секунд 10, а из облака - от нескольких минут, думаю. И чем больше кода, тем дольше
Вопрос: JSON вывод данных JS?

Лучший ответ:
Создай новый массив через map.

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

Лучший ответ:
Посмотри у Юрия Артюха. У него были стримы, как он верстает макеты в риалтайме. Ну и в принципе у него есть что посмотреть.

Худший ответ:
htmlacademy.
И что значит всё сразу, а не по отдельности? Всё сразу не поймёте, лучше по отдельности по каждой теме урок.
Вопрос: Какой диск форматируется при установке Ubuntu в VirtualBox?

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

Худший ответ:
Рекомендую тебе почитать про виртуализацию в принципе. Если вкратце: виртуальная машина - это два файла (на самом деле больше, но для основной сути упростим), конфиг - где описаны ресурсы ВМ (ЦПУ, ОЗУ, путь к диску, различные адаптеры и контроллеры) и, собственно, файл диска - у VMware он будет .vmdk, у Hyper-V .vhd/.vhdx, в KVM ещё чё-то - это просто файл внутри которого бинарные данные
Вопрос: Как сделать Python скрипт вставки рандомной строки из txt файла в любое место?

Лучший ответ:
Вот примерно:
import random

File_text = open('file.txt', 'r').readlines()
random_text = random.choice(File_text)
Мелкое пояснение: 
.readlines() - загружает построчно текст файла, как список
random.choice() - выбор случайного элемента со списка

А далее при помощи keyautogui сделать горячую клавишу и вставку текста

Худший ответ:
Более правильно https://saitsozdanie.ru/forum/index.php?topic=8986.0
Вопрос: Какой генератор алгоритмов на основе входных и выходных данных вы сейчас используете?

Лучший ответ:
В общем виде, когда надо найти функцию любого вида (предположительно самую короткую) - задача не решается. Тут нужен искусственный интеллект. Настоящий, а не машин лёрнинг.
Но, если ограничить класс допустимых формул, то решение есть - например, среди полиномов для n заданных эталонов можно всегда найти полином степени n-1, который будет через эти точки проходить. Это если у вас входные и выходные данные - по одному числу. 
Тут можно решить систему из n линейных уравнений (обозначаете неизвестными коэффициенты полинома, подставляете известные значения x и y для всех эталонов, гоните метод Гаусса).
Если у вас несколько выходных чисел - решаете задачу интерполяции отдельно для каждого выходного параметра. Если несколько входных переменных - тоже выбирайте вид полинома, зависящего от всех входных переменных, имеющего хотя бы n коэффициентов. Но тут уравнения могут стать линейно зависимыми и решения может не быть. Тогда добавьте больше слагаемых/коэффициентов. 
Формально, задача будет решена, но практического смысла в этом нет совсем. Формулы будут огромными и страшными.

Худший ответ:
В общем виде, когда надо найти функцию любого вида (предположительно самую короткую) - задача не решается. Тут нужен искусственный интеллект. Настоящий, а не машин лёрнинг.
Но, если ограничить класс допустимых формул, то решение есть - например, среди полиномов для n заданных эталонов можно всегда найти полином степени n-1, который будет через эти точки проходить. Это если у вас входные и выходные данные - по одному числу. 
Тут можно решить систему из n линейных уравнений (обозначаете неизвестными коэффициенты полинома, подставляете известные значения x и y для всех эталонов, гоните метод Гаусса).
Если у вас несколько выходных чисел - решаете задачу интерполяции отдельно для каждого выходного параметра. Если несколько входных переменных - тоже выбирайте вид полинома, зависящего от всех входных переменных, имеющего хотя бы n коэффициентов. Но тут уравнения могут стать линейно зависимыми и решения может не быть. Тогда добавьте больше слагаемых/коэффициентов. 
Формально, задача будет решена, но практического смысла в этом нет совсем. Формулы будут огромными и страшными.
Вопрос: C# как узнать время из интернета?

Лучший ответ:
!!! от жешь поспешность .. да и старость.. даже не посмотрел выдачу (вальнул nntp по началу ;((  ).. исправляю:
ntp
c# ntp
unity ntp

ps
ntp servers

Худший ответ:
парси с инета время и все
Вопрос: Wow-эффект и веб-дизайнер?

Лучший ответ:
У каждого свой WoW

Худший ответ:
Я вижу несколько вариантов, как можно сделать:
1. Сделать промежуточные варианты состояний. Например, пользователь жмакает на ссылку, кнопка красится в фиолетовый цвет, затем цвет полукругом расходится на всю страницу, затем сходится к кнопке, открывая обновленный контент, и наконец исчезает, а кнопка становится активной.
Вы можете нарисовать состояния кнопок и к этому добавить 3 состоятия, как расходится цвет.
Для точности можно прям словами описать.
2. Посмотреть демки всяких вов решений и скинуть ссылки на них верстальщику, написать где и что подключать.
3. Работать совместно с верстальщиком над эффектами. - Вы как дизайнер создаете идею и описываете, он помогает осуществить или отказаться, если воплощение слишком затратно. Тут хорошо, когда есть знакомый, с которым уже работали. Можно клиенту предложить полную разработку сайта, с версткой и хостингом. Но это уже меня понесло)
В любом случае, вам с клиентом нужно это обговаривать, объяснять, договариваться.
Вопрос: В чем принципиальное различие NAT и PROXY?

Лучший ответ:
Сосед попросил вас позвонить в газовую службу. Вы - прокси для соседа.
Несколько соседей попросили позвонить вас в газовую службу. Вы позвонили по первой просьбе, а на другие ответили, что уже звонили. Вы - кеширующая прокси для соседей.
Сосед взял ваш телефон и позвонил в газовую службу с вашего номера. Вы - NAT для соседа.

Худший ответ:
чутка дополню @vvpoloskin
NAT это когда сидишь во дворе, чувствуешь запах газа и кричишь "позвоните в службу газа". кто-то из соседей звонит, от газовщиков естественно идет набор вопросов по ситуации, которые тебе сосед озвучивает в окно а и твои ответы пересказывает в трубку :)
комп в локальной сети имеет адрес 192.168.1.100. он локальный и не имеет право хождения сети интернет.
ты хочешь зайти на страничку яндекса. браузер на основе твоих желаний формирует пакет запроса данных (по идее http-канал, но опустим подробности) с твоего 192.168.1.100 на ip-адрес сервера яндекса и посылает в сеть.
роутер, находящийся на границе локальной сети и интернета отлавливает пакет, получатель которого находится в интернете и пересылает его из локалки в интернет.
но т.к. адрес источника пакета 192.168.1.100 не имеет права быть в интернете,  он подменяется на интернет-адрес роутера, это и есть source NAT (один из вариантов Network Address Translation - преобразование сетевых адресов) - подмена адреса отправителя.
а также создается временное правило для того чтобы ответные пакеты от яндекса были пересланы к тебе (так-то сервера яндекса полностью уверены что общаются с интернет-адресом роутера и посылают пакеты данных на этот ip). это уже будет destination NAT - подмена адреса получателя.
много чего опущено и не описано, но суть попытался донести попрощеее.
Вопрос: Стоит ли писать свой язык программирования на python, c# и node.js?

Лучший ответ:
Если хочешь — пиши, чё бы нет. Какая разница, на каком языке писать лексеры, парсеры и AST? Другое дело, что этот язык дальше твоей разработки не уйдёт, если только ты не напишешь свой тулчейн на питоне, который будет твоё AST ещё оптимизировать, транслировать в машинный код и собирать из него PE и ELF для винды/линукса.
Ради того, чтобы понять, как это всё работает — отличная идея. В остальном — не стоит.

Худший ответ:
а чего его писать-то ? только конечно не на python, c# и node.js
для написания компиляторов используют с, lex, yacc (либо аналогичный стек для С++)
Вопрос: Как то можно опубликовать видео на сайте чтобы было не скачиваемым?

Лучший ответ:
Нет =) Можно только максимально замаскировать, но я все равно найду и скачаю)

Худший ответ:
Можно усложнить эту задачу, если стримить видео по протоколу RTMPS
Вопрос: Python3 как возвести в степень каждую цифру натурального числа?

Лучший ответ:
На скорую руку - простейшее решение, если я правильно понял суть задачи:def square_digits(number):
    out = ''
    for im in str(number):
        out += str(int(im)**2)
    return int(out)
>>> square_digits(91)
811

Худший ответ:
Есть большое количество способов это сделать:def square_digits_v1(n):
    return int(''.join(str(int(x) ** 2) for x in str(n)))

def square_digits_v2(n, t=str.maketrans({str(d): str(d ** 2) for d in range(10)})):
    return int(str(n).translate(t))

def square_digits_v3(n):  # import re
    return int(re.sub('\d', lambda m: str(int(m.group(0)) ** 2), str(n)))

def square_digits_v4(n):  # import numpy as np
    return int(''.join((np.fromiter(str(n), int) ** 2).astype(str)))

def square_digits_v5(n):  # Только вывод на печать
    print(*[int(x) ** 2 for x in str(n)], sep='')
UPD Извращаться, так извращаться:from decimal import Decimal
from io import StringIO

def square_digits_v6(n):
    with StringIO() as buffer:
        for digit in Decimal(n).as_tuple().digits:
            print(digit ** 2, end='', file=buffer)
        return int(buffer.getvalue())as_int = lambda f: lambda x: int(f(x))

@as_int
def square_digits_v7(n):
    return eval('f"{'+'**2}{'.join(f'{n}')+'**2}"')
Вопрос: Как оформить первые две карточки?

Лучший ответ:
Если нужно менять не только стили но и структуру, то для цикла добавляете счётчик, ставите проверку на первые два итема и для них выводите другую разметку, а для остальных стандартную
<?php if ( have_posts() ) : $ir = 0; while ( have_posts() ) : the_post();

  if ( $ir == 0 || $ir == 1 ) {
    get_template_part( 'template-parts/article-wide' );
  } else {
    get_template_part( 'template-parts/article' );
  }

$ir++; endwhile; endif; ?>

Худший ответ:
Можно еще при выводе доп. классы навешать, или :nth-child
Вопрос: Нужны ли еще верстальщики сайтов в 2020 году?

Лучший ответ:
для толкового верстальщика на фрилансе всегда работа найдется
скорее всего так в каждой области программирования

(меня 7 лет уже пугают, что сама верстка инком нужна не будет в будущем)

Худший ответ:
Я думаю верстка это как начальная школа для вэб-разработчика. Во фронтэнде без нее вообще никуда.
Вопрос: Как правильно настроить окружение для node.js?

Лучший ответ:
2 и 3 - да, nginx использует практически всегда - и для SSL termination, и для load balancing, и для статики, и т.д.
4 - в github есть GitHub Actions, на них довольно просто сделать CI

Худший ответ:
Нашел как победить проверку на человечность Хабра.Привет!
Самый костыльный запуск сервера, это старт из под screen. Но если приложение при авто деплое сможет на глухо завесить прод, так что и данные из базы не достать. Будет много приятных минут.По поводу исходников на проде.
Это не хорошо. Может утечь что то лишнее. Собрать и залить результат. Сейчас пошла мода разрабатывать и собирать все в контейнерах. 
В ноде работает много зависимостей. Здоровья не хватит всё посмотреть. Стартуют с правами разработчика. Могут потырить контакты или секреты какие. 
Не хорошо. Поэтому запускаем все в своей песочнице. Секреты храним в vault
https://github.com/alexsuslov/vault-consul-docker2 Nginx отличная штука! 
Поможет:
- раскидать трафик как между процессами так между машинами 
- сертификаты подсунуть.
- ограничить доступ к админке по ip
- запаролить что то
и еще много чегоАвторизация 
- Регистрация
  процесс относительно редкий, данные пишем в базу
- Идинтификация
  это происходит на каждый запрос
  дергать на каждый чих базу не хорошо
JWT это шифрованный объект в заголовках http.
Сервер его сам делает и может прочитать.
Итого: мы заставляем пользователя таскать с собой некий паспорт в котором храним что нам нравится. Трафик немного растет, но не критично.
Полезная штука
Про эластик не помогу. Как то он мимо меня все время пробегает.
А поиск нужно делать используя 2 источника данных
1. поисковые фразы из описанийпосмотреть сколько слов в среднем набирает пользователь, нарезать описания на фразы
2. Собирать поисковые фразы пользователей, регион, время.
Делать какую то сумму этого. Подсовывать в авто комплит под инпутом.
Надеюсь понятно написал.
Удачи.
Вопрос: Как не одичать фрилансеру?

Лучший ответ:
Фотообои с работающими людьми и воспроизведение записи клацанья клавиш. ))

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

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

Всё остальное отстаёт по важности на порядки, потому что задача, в принципе, тривиальная. А вероятность того, что вы упрётесь в какие-то ограничения технологии во время разработки и эксплуатации, относительно мала. И она обычно увеличивается не в связи с тем, какие требования выдвигает проект, а из-за плохого знания инструментов.

Количество посетителей почти не важно, потому что почти на любом стеке можно сделать как плохо, так и хорошо.

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

Лучший ответ:
В пхп не шарю 
Идите учить PHP. Соединение с MySQL это обычно глава 2 в книжках типа "Пишем свой фейсбук за час".

Худший ответ:
define('DB_HOST', 'localhost');
define('DB_LOGIN', '1');
define('DB_PASSWORD', '1');
define('DB_NAME', '1');
$mysqli = mysqli_connect(DB_HOST, DB_LOGIN,DB_PASSWORD, DB_NAME);
mysqli_set_charset($mysqli ,"utf-8"); 
/*Это различие - это внутренняя деталь реализации MySQL. Оба выглядят как UTF-8 на стороне PHP. Используете ли вы utf8 или utf8mb4, PHP будет иметь действительный UTF-8 в обоих случаях.*/
if(!$mysqli){
echo 'Подключение к базе данных не удалось!'.mysqlit_error($mysql).' '.mysqli_errno($mysql);
}else{
mysqli_query($mysqli, "SELECT * FROM тут имя таблицы");
}
mysqli_close($mysqli);
Вопрос: Возможно ли найти заказчиков зная HTML и CSS?

Лучший ответ:
Нет, не возможно.
Вы просто будете в задних рядах молящих о работе за еду, причём шансы у вас абсолютно нулевые даже на бесплатную работу.

Худший ответ:
Добавьте Modx и работа будет.
Важнее уметь продавать и вести проекты.
Вопрос: Что лучше использовать в CSS?

Лучший ответ:
Атомарный css на новый лад))


А если серьезно, то тоже пытаюсь внедрять дата атрибуты ради эксперимента, но не как атомарный css, это слишком. Был проект там для итемов было много разных анимаций я использовал атрибут для визуального выделения и чтобы бекендщику было понятнее как ему менять эти анимации. [data-case-animate="12"]  {...}

Худший ответ:
Я использую дата атрибуты как селекторы для js скриптов, что бы стили висели на классах, а функционал на атрибутах.
Плюс один и тот же атрибут может выполнять разные действия, например
data-modal="open"
 data-modal="close"
атрибут один, но значения разные
Вопрос: Как редактировать файл .htaccess через PHP?

Лучший ответ:
https://htaccessbook.com/block-ip-address/
выбирай на свой вкус.

Но я не советую давать доступ на запись htaccess, будет явная дыра. Лучше настроить fail2ban на парсинг очередного лога, либо средствами php блокировать ip адреса, беря их из наполняемого, к примеру, csv файла

Худший ответ:
https://htaccessbook.com/block-ip-address/
выбирай на свой вкус.

Но я не советую давать доступ на запись htaccess, будет явная дыра. Лучше настроить fail2ban на парсинг очередного лога, либо средствами php блокировать ip адреса, беря их из наполняемого, к примеру, csv файла
Вопрос: Почему отправка application/json через axios вызывает CORS-ошибку?

Лучший ответ:
https://developer.mozilla.org/ru/docs/Web/HTTP/CORS
Допустимыми значениями заголовка Content-Type являются:
    application/x-www-form-urlencoded
    multipart/form-data
    text/plain

Там же и про настройку всё.

Худший ответ:
У вас фронтенд и бекенд на разных "локальных доменах" подняты? Настройте CORS и заголовки на сервере.
Вопрос: Простенькиq SQL запрос ,что не так?

Лучший ответ:
Точка с запятой

Худший ответ:
Ошибка - точка с запятой
Вопрос: Как правильно хранить ключ шифрования для десктопных приложений?

Лучший ответ:
Пароли в принципе нельзя хранить, ни на диске, ни в памяти, ни к чему хорошему это не приводит. Даже мастер-пароли могут украсть во время их ввода и обработки. Но справедливости ради сервера хранят секретные ключи, чтобы мы могли к ним подключится с шифрованием. Они всего лишь уповают на разграничение привилегий операционной системой. Но если другая программа запущена с привилегиями Вашем программы или более высокими или злоумышленник имеет физический доступ к Вашему железу, то они могут прочесть все ваши секреты. Но на Windows или Android это разграничение бесполезно, на первой куча мусора исполняется с максимальными привилегиями, а на второй дыры не закрывают вообще и только самоё свежее железо в состоянии хранить секреты.
Безопасность это комплекс мер и простым действиями на уровне программы её не обеспечить.

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

А с поролем - надо какой-то криптографически стойкой kdf-функцией преобразовать его в ключ шифрования и дальше применять хоть AES, хоть какой-то другой алгоритм шифрования.

Главное самостоятельно ничего криптографического не велосипедить. Берите популярные крипто-библиотеки и используйте стандратные и современные криптографические приметивы.

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

Для проверки, что пароль правильный, данные надо снабдить какой то контрольной суммой (до шифрования).

Все остальное - это security through obscurity.  Не работает в долгой перспективе.