А тот же Apple отнюдь не увядает. Да и Lenovo не в пролете. Поэтому успешность и профессионализм этого CEO под вопросом.
Производство конечно не столь прибыльно как «продажа воздуха», то есть халявное по сути мультиплицирование ПО, но собственно производство само по себе, а ПО делать тоже никто не мешал.
Если торчит то безусловно да! Но «если» зачастую все портит — офис вот не жалко, а дома провода и короба буэ, а долбить любимый ремонт тоже как-то неохота. Хороший вариант плинтус, но тоже не всегда.
Но в общем пруф — habrahabr.ru/blogs/PyS60/53106/
Версия пакета — 1.9.1, версия питона 2.5.1. Найти какая-же версия питона в пакете 1.4.6 мне не удалось — что-то с вики и прочими ресурсами полный разброд и 404.
Насколько я помню, у нокии какие-то свои версии питона, которые никак не коррелируют с основной веткой. Поэтому — да черт его знает, я поискал, но мне быстро надоело это занятие. Но что-то мне подсказывает что может и поддерживать вполне.
Да не «доступается» он с помощью wraps, можете выкинуть этот wraps спокойно, и все будет работать.
Он вообще никуда не доступается, он возвращает функцию взамен оригинальной, вот и вся недолга.
Ах, да. Так как check_nickname собственно никакой смысловой нагрузки не несет, то его можно спокойно выкинуть — вам здесь фабрика ни к чему собственно.
> Я затрудняюсь человеческим языком, не запутав читателя в терминах, вразумительно сформулировать то, что тут происходит
Давайте я сформулировать попробую. В декораторах нет совершенно никакой магии, поэтому читать этот код можно абсолютно прямо.
check_nickname не декоратор, это фабрика декораторов. использовать вы ее будете как @check_nickname(), то есть вызовете, она вернет декоратор, который и применится к функции.
check — реальный декоратор, примет в качестве параметра функцию, и вернет вместо нее другую. Вот тут и нужен wraps, чтобы всякие атрибуты функции типа __name__, __doc__ etc скопировать на новую функцию.
Остался wrapper — обычная функция, которая будет вызвана вместо оригинальной функции, с параметрами соответственно. Может перешаманить параметры, может обработать результат вызова обернутой функции. А может вообще ее не вызывать, и вернуть что-нибудь другое.
Замечания по коду — check_nickname принимает зачем то args и kwargs — они не используются, не пишите «на всякий случай» никогда, это сродни ""«try… except:»"".
Я так понимаю что «случайно» не зря в кавычках. Было бы действительно интересно насколько снизится процент ухода при нахождении плюшек.
Но как я понимаю ваш предсказатель не работает в реальном времени, и не сможет так быстро вычислить необходимость плюшки? Не планируете начать анализировать действия игрока в реальном времени?
Я не совсем разделю ваш оптимизм пожалуй. Это будет совсем другая игра. И я не уверен, что гейм дизайн тех самых танчиков успешно впишется в вариант с мультиплеером.
Хотя хотелось бы, да. Я даже пару танчиков уже успел написать, но вот про мультиплеер не думал пока.
Но почему не github? Я поясню мысль — все остальное просто не удобно для того, чтобы ознакомиться с кодом «по-шустрому». Google code это вообще позор джунглям какой-то.
Проблема в непоследовательности изложения. Вначале вы говорите что 3g просто нигде не работает, поэтому никому не нужен, потом вы с телефона звоните, а теперь оказывается вы с него в основном машинками управляете и вообще у вас, йопта, яйцо. Где истина?
У меня йоты нет, 3g нормальный, поэтому рекомендация его гасить мне кажется слишком уж общей, то есть подходит далеко не всем.
Производство конечно не столь прибыльно как «продажа воздуха», то есть халявное по сути мультиплицирование ПО, но собственно производство само по себе, а ПО делать тоже никто не мешал.
Версия пакета — 1.9.1, версия питона 2.5.1. Найти какая-же версия питона в пакете 1.4.6 мне не удалось — что-то с вики и прочими ресурсами полный разброд и 404.
Он вообще никуда не доступается, он возвращает функцию взамен оригинальной, вот и вся недолга.
Давайте я сформулировать попробую. В декораторах нет совершенно никакой магии, поэтому читать этот код можно абсолютно прямо.
check_nickname не декоратор, это фабрика декораторов. использовать вы ее будете как @check_nickname(), то есть вызовете, она вернет декоратор, который и применится к функции.
check — реальный декоратор, примет в качестве параметра функцию, и вернет вместо нее другую. Вот тут и нужен wraps, чтобы всякие атрибуты функции типа __name__, __doc__ etc скопировать на новую функцию.
Остался wrapper — обычная функция, которая будет вызвана вместо оригинальной функции, с параметрами соответственно. Может перешаманить параметры, может обработать результат вызова обернутой функции. А может вообще ее не вызывать, и вернуть что-нибудь другое.
Замечания по коду — check_nickname принимает зачем то args и kwargs — они не используются, не пишите «на всякий случай» никогда, это сродни ""«try… except:»"".
Но как я понимаю ваш предсказатель не работает в реальном времени, и не сможет так быстро вычислить необходимость плюшки? Не планируете начать анализировать действия игрока в реальном времени?
Хотя хотелось бы, да. Я даже пару танчиков уже успел написать, но вот про мультиплеер не думал пока.
У меня йоты нет, 3g нормальный, поэтому рекомендация его гасить мне кажется слишком уж общей, то есть подходит далеко не всем.
> чтоб звонить
Может и на ноль делить умеете?