Rad1us: Угадываю такую капчу в одном случае из двух-трех. Там нужно угадать только одно слово, ответ на второе - становится верным ответом (с которым сравнивается) для следующего зашедшего.
Вадим Егоров: Да я бы десяток самых разных флешек перепробовал пока не нашел бы ту, которая подходит для такой сверх-ответственной задачи. Потом бы еще проверил конкретную модель, как она легко ломается пальцами и что обломки кристалла действительно остаются в разных половинках после разлома. Флешки сегодня стоят копейки, для самых "чувствительных" данных (ключи шифрования) большой вообще не нужен.
Личная безопасность - это не то, на чем стоит экономить! Жалко, что многие понимают это только после того как становится уже поздно.
Алексей Ярков: abs0lut: Конечно, через with будет идеоматичнее. Только его не всегда просто прикрутить. Иногда приходится для этого писать прокси объект, который поддерживает контекстный менеджмент.
try - finally, в этом плане, неприхотливее, идет в любых ситуациях.
Вадим Егоров: Вы просто никогда небыли в тех кабинетах (желаю вам никогда там не оказаться). Не стоит им откровенно дерзить, это в любом случае не даст никакого преимущества. Лучше "сыграть под дурочка", "затупить" как говорят.
"Флешка сломалась давно, обычно не нашу с собой эти обломки, сегодня только взял показать одному паяльщику, думал может он чем поможет" ... ну и так далее.
Кристалл обычно (относительно) большой по площади, занимает большую часть чипа.
Если сомневаетесь, то возьмите дешевую флешку (полностью аналогичную, но минимального объема), расплавьте чип и пощупайте сам кристалл. Плавить можно термически (паяльным феном, например), но много копоти и кристалл от грязи трудно потом очистить. Поэтому лучше плавить кислотой (старые кислотные аккумуляторы заправляются электролитом, этот электролит есть разбавленная в дистиллированной воде кислота, кто занимается аккумуляторами у того всегда есть она).
Relrin: Я же говорю: в Python импорты динамические. То есть импорт - это не какое-то свойство модуля (тем более всей библиотеки), а просто команда, такая же как вызов любой функции. То есть импорт модуля qwerty происходит только в момент, когда интерпретатор доходит до команды "import qwerty". При импорте модуль исполняется, если при исполнении интерпретатор натыкается на еще один "import ...", то в этот момент осуществляется еще один импорт.
Значит, в вашем примере при импорте модуля "A" ImportError вылетит только при отсутствии SQLAlchemy, а при импорте модуля "B" ImportError вылетит только при отсутствии Django.
Еще можно делать импорт по условию. Или можно перехватывать и подавлять ImportError. В этом нет ничего особенного, такое иногда встречается в популярных библиотеках.
Relrin: Ну пожалуйста, никто вам не мешает это реализовать. Только вам тогда придется не прописывать эти зависимости в setup.py, а значит при установке не будет гарантировано, что django вообще установлен.
Добавлю важную мелочь: До консультации с юристом не вступать ни в какие переговоры с правообладателями (возможно, это просто шантажисты) и не отвечать на почту. Если позвонят на мобильны/домашний (выведать номер у провайдера для них возможно) смело класть трубку как только абонент представиться - не существует наказания за отсутствие вежливости.
tychininde: Да, очередная смена дизайна и обои нескучные, но во всем семействе операционок от MS количество вирусов и "защита" зависят только от уровня квалификации юзера (и его обучаемости), а не от номера версии ОС.
Петр: Будем считать, что алгоритм обеспечивает равномерное вероятностное распределение генерируемой величины. Большинство современных алгоритмов практически удовлетворяют этому условию. Небольшой погрешностью можно пренебречь.
Сама по себе идея использовать для этой задачи триггеры - верная (возможно, единственно верная). В вашем случае проблемы, скорее всего, были связаны с излишне усложненной архитектурой (внешняя система, http).
Хотел уже плюсонуть за очевидный совет еще раз переставить винду.
Но когда дочитал до конца, понял что это очередная реклама Microsoft (или последствия рекламы).