Только что проверял системные шрифты подряд ради интереса и получается прямо противоположное. Liberation, Noto, Lato, Caladea, Droid, Ubuntu, Garuda и еще десятки их — цифры одинакотовй ширины, ту же ширину имеют точка и "$". Единственный шрифт что выбивается — это Chilanka. Может, есть еще, я остановился на середине списка.
А это идея. Но проблема тогда появляется в том что либо мы используем глобальные исключения проекта, таким образом наш модуль слишком много знает об окружающем мире. Либо мы кидаем исключения модуля, которые потом надо будет обработать во внешнем мире и завернуть в глобальные или сделать что-то другое.
Комментарии не относятся к коду, я так написал мысли читающего код. Проблема в том что когда у нас более сложные условия в такой вот булевой функции, приятное если в проверках всегда возвращается False, а если все проверки провалены — True, или наоборот. Если проверки возвращают то одно то другое и вдруг функция не дает ожидаемый результат — отладка становится сложнее.
Подскажите, пожалуйста, что делать с подобным кодом? Такое нечитабельно, но вложенные или сложные условия в разы хуже.
def has_access(user) -> bool:
if not user.is_authenticated():
return False
# пока что все понятно, функция проверяет не надо ли пользователю доступ
# закрыть, и если все проверки провалятся, то она, видимо, вернет True
if user.is_superuser():
return True
# а нет, всё плохо. Чтобы понять что функия вернет, мне надо
# вчитываться в каждое условие и что при этом возвращается
if user.has_children():
return False
# окей, видимо, проверка на суперпользователя была исключением,
# сейчас все пойдет как надо
if not user.has_active_subscription():
return True
if user.is_baba_tanya():
return False
# ААА! Я запутался.
return True
# вроде False будет если не залогинен или
# не суперпользователь или с подпиской? Надо перечитать
1) Как-то не раскрыто, что `type` может вам помогать в качестве валидатора, кроме как для приведения значения в тот вид что вам нужен
import os
import argparse
def validate_path(path: str) -> str:
if not os.path.isabs(path):
raise argparse.ArgumentTypeError(f'Absolute path required, got "{path}"')
return os.path.normpath(path)
parser.add_argument('--path', metavar='PATH', type=validate_path)
2) Если хотите чтобы параметры по умолчанию отображались в помощи, можно использовать такой ArgumentParser
import argparse
import typing
class RawTextArgumentDefaultsHelpFormatter(argparse.RawTextHelpFormatter):
'Adds default arguments to parser help output'
def _get_help_string(self, action: argparse.Action) -> str:
help_str = action.help or ''
if 'default: ' in help_str or action.default is argparse.SUPPRESS or action.default is None or action.default is False:
return help_str
if not action.option_strings and action.nargs not in [argparse.OPTIONAL, argparse.ZERO_OR_MORE]:
return help_str
return f'{help_str} (default: {action.default})'
class ArgumentParser(argparse.ArgumentParser):
'`argparse.ArgumentParser` that shows default values in help message.'
def __init__(self, **kwargs: typing.Any) -> None:
kwargs['formatter_class'] = RawTextArgumentDefaultsHelpFormatter
super(ArgumentParser, self).__init__(**kwargs)
В детстве я достаточно много времени залипал в комп, и вот что из этого вышло. Благодаря игре TES III: Morrowind я набрал достаточно хороший словарный запас в английском, плюс засчет встроенного редактора получил начальные навыки программирования. Так как мы часто играли в друзьями в Re-Volt, который был ужасно локализован, я научился делать спрайты, чтобы русский шрифт смотрелся нормально. Игра Stranded II научила меня основам Lua. В Starcraft я научился делать простые скрипты для создания кастомной карты.
Сейчас я работаю программистом и так или иначе использую навыки полученные тогда. Вот так игры отрицательно влияют на детей.
Согласен, а еще Амазону стоило бы запретить открывать порты кроме 80 на виртуалках. И специальный бот должен проверять что на 80 порту виртуалка отдает HTTP контент, а иначе виртуалку банят сразу.
Еще лучше бы конечно разрешить запускать только специально созданный амазоном образ виртуалки и запретить пользователю его менять, дабы не вышло чего.
Можно я за него отвечу? Мне тоже приятнее думать, что некоторые люди за комментарии получают деньги. И именно поэтому в комментариях бывают проблемы с логикой и прямые противоречия здравому смыслу — для доказательства оплаченной точки зрания. Мне не хочется верить что человек может такое писать на полном серьезе.
Это мало относится к firk, он и правда просто пост по диагонали прочитал, похоже.
Задачка простая, да. Но она ведь основана на куда более интересной задаче, которую я вам и предлагаю решить. Очень ее люблю.
У некоторого султана было два мудреца: Али-ибн-Вали и Вали-ибн-Али. Желая убедиться в их мудрости, султан призвал мудрецов к себе и сказал: «Я задумал два числа. Оба они целые, каждое больше единицы, но меньше ста. Я перемножил эти числа и результат сообщу Али и при этом Вали я скажу сумму этих чисел. Если вы и вправду так мудры, как о вас говорят, то сможете узнать исходные числа».
Мудрецы задумались. Первым нарушил молчание Али.
— Я не знаю этих чисел, — сказал он, опуская голову.
— Я это знал, — подал голос Вали.
— Тогда я знаю эти числа, — обрадовался Али.
— Тогда и я знаю! — воскликнул Вали.
И мудрецы сообщили пораженному царю задуманные им числа.
Парни, вы даже не представляете, какое вам спасибо!
Несколько месяцев назад хотел оправить пулл-реквест для Image.thumbnail(), но как всегда стало лень лезть в основной модуль, исправил оберткой извне.
Как-то она неуловимо отличается от Opera Beta. Даже шрифты другие использует на тех же сайтах.
Плюс с адресной строкой творится непонятно что — при загружке страницы элементы интерфейса накладываются друг на друга. В Opera Beta опять же не наблюдается.
А вообще — проделана огромная работа над интерфейсом с прошлой стабильной версии, спасибо большое!
Можете сделать еще немного хорошего для игр для мобильных платформ, если не только откажетесь от F2P, но и обратите внимание на игры вроде World of Goo или Little Inferno.
Периметр и King's Bounty переизданный относительно новые игры, нет? Ксомические рейнджеры последние вышли менее года назад. Вангеров (Z-Mod) до сих пор неспешно пилят. Плюс есть всякие Спектромансеры и прочая.
Можете подсказать?
2) Если хотите чтобы параметры по умолчанию отображались в помощи, можно использовать такой ArgumentParser
Сейчас я работаю программистом и так или иначе использую навыки полученные тогда. Вот так игры отрицательно влияют на детей.
Еще лучше бы конечно разрешить запускать только специально созданный амазоном образ виртуалки и запретить пользователю его менять, дабы не вышло чего.
Это мало относится к firk, он и правда просто пост по диагонали прочитал, похоже.
Несколько месяцев назад хотел оправить пулл-реквест для Image.thumbnail(), но как всегда стало лень лезть в основной модуль, исправил оберткой извне.
Хорошо, что не все такие же ленивые, как я.
Плюс с адресной строкой творится непонятно что — при загружке страницы элементы интерфейса накладываются друг на друга. В Opera Beta опять же не наблюдается.
А вообще — проделана огромная работа над интерфейсом с прошлой стабильной версии, спасибо большое!
Не понимаю, к чему тут «когда-то были»