Не только китайская. В Китае я не был, зато почти год прожил в Камбодже. И на здешних вентиляторах логика ровно такая же — 1 обозначает самую большую скорость вращения, 3 — самую маленькую.
Все, я разобрался.
Эта лицензия за 89$ как раз и есть то, о чем я спрашивал.
Но тогда у меня появляется другой вопрос: зачем нужна месячная подписка? Какие у нее преимущества перед годовой?
Просто с моей точки зрения, у нее одни недостатки — необходимость ежемесячных платежей, сумма за год получается выше.
Смотрите, сейчас есть тариф: платишь $89, в течение года получаешь апдейты.
Но только минорные:
When purchasing an annual subscription, you will immediately get a perpetual fallback license for the exact version available at the time and all bugfixes to it. More specifically in X.Y.Z version all Z releases are included.
А оставаясь на подписке, я получаю все апдейты, в том числе и мажорные.
Мне кажется, мы друг друга не понимаем :)
Я спрашиваю о возможности оплаты этой подписки сразу на год по причине того, что мне так проще, чем платить каждый месяц.
Т.е. я хочу сразу же оплатить год этой подписки, 107 баксов. При этом, весь год я буду получать обновления на продукт. По истечении этого года два варианта:
1) Я не оплачиваю — и получаю версию продукта годичной давности.
2) Я еще раз оплачиваю на год (продлеваю подписку) и опять так же получаю все обновления в течение этого времени.
Ни в какой разрез с вашими тарифами это не идет. Я просто хочу возможность оплатить год целиком, а не делать это каждый месяц, потому что для меня это проблематично.
2. Ваш пункт 1) как раз есть та самая возможность.
Нет, не такая же. Там я получаю за 89$ лицензию на версию, которая есть на данный момент. Я же хочу заплатить 107$ сразу же и получать в течение года все апдейты, не вспоминая каждый месяц о платеже. По истечении года я опять смогу сделать то же самое, тем самым оставаясь всегда на актуальной версии.
Ну вот смотрите. Представим, что я новый покупатель и хочу купить PyCharm. У меня есть два варианта:
1) Купить его за 89$. За эти деньги я получаю IDE как есть + правку багов этой версии.
When purchasing an annual subscription, you will immediately get a perpetual fallback license for the exact version available at the time and all bugfixes to it. More specifically in X.Y.Z version all Z releases are included.
Я ей пользуюсь, по истечении года у меня никто ее не отнимает, она моя. Все хорошо.
2) Платить в месяц по 8.9$ (106.8$ за год)
Плюсы: я всегда на последней версии с поддержкой последних фич.
Минусы:
если я платил, а потом по какой-либо причине перестал, не проплатив суммарно и без перерывов год — я не получаю ничего;
то же самое, но проплатив суммарно и без перерывов год — я получаю версию годичной давности (совсем как в пункте один, но там она выходит дешевле и с меньшим количеством проблем);
необходимость помнить об этом месячном платеже.
Последний пункт для меня довольно критичен. А если учесть «цену» забытого платежа (о ней чуть выше) — то он становится определяющим. У меня есть отдельная карта для подобного рода платежей, на которой поддерживаются деньги когда как. Часто я узнаю, что забыл оплатить тот же гитхаб только когда на него захожу через веб-интерфейс.
В связи со всем этим возникает два вопроса:
1) Будет ли какое-то временное окно (1-3-5 дней), в течение которого IDE мне будет криком кричать о платеже, но не превратится в тыкву?
2) Будет ли возможность оплатить эту подписку сразу на год, чтобы не вспоминать об этом каждый месяц?
Да, и это ОЧЕНЬ странно. Вот тут подробнее: sales.jetbrains.com/hc/en-gb/articles/204784622-What-is-perpetual-fallback-license-
То есть получается какая ситуация: вы оплачиваете, допустим, без перерывов полтора года свою IDE. Еще раз уточню, что вы полтора года поддерживаете тем самым ее разработку, выход новых версий, поддержку новых версий языка. А потом по какой-либо причине вы не оплачиваете. И получаете версию, которая была год назад. То есть не текущую, разработку которой вы поддерживали, а версию годичной давности. Которая вам может уже и не нужна, потому что условный питон стал версии 3.7, а в версии годичной давности поддерживается только 3.5.
Это даже не смешно.
Сегодня прямо-таки день веселых статей из песочницы.
По сабжу:
JS код в пхпшном с помощью echo — огонь;
функция liFormat — огонь;
русско-английские названия переменных — огонь.
По опыту использования связки Cloudflare — nginx — gunicorn — django подскажу еще пару моментов.
Если оба веб-сервера находятся на одной машине, то совсем необязательно выделять gunicorn'у отдельный порт, можно забиндить его на unix-сокет.
С такой длинной цепочкой становится сложно получить реальный IP-адрес пользователя, поэтому не стоит забывать про пробросы заголовка X-Real-IP
nginx:
Нет, не будет. Автор описал очень малую часть, совсем малую. Gunicorn без конфигурации, nginx с минимумом. Для контроля и автоматического перезапуска обычно ставят еще и supervisor.
Вы же сюда пришли и за критикой в том числе, верно?
Предлагаю сильно поменять roadmap:
1. Понять зачем это вообще нужно.
Серьезно. И дело даже не в том, что это очередной фреймворк, который никому особо не нужен, т.к. ничего нового не несет. А не несет он по двум причинам: asyncio почти не используется; asyncio используется неправильно.
Почему почти не используется? Потому что вы в конфиге размещаетесь за асинхронным nginx'ом и за асинхронным gunicorn'ом (worker_class=gevent).
Почему используется неправильно? github.com/alikzao/tao1/blob/master/tao1/core/core.py#L34 github.com/alikzao/tao1/blob/master/tao1/core/core.py#L40
Две совершенно ненужных корутины. asyncio нужно использовать в тех местах, где может быть задержка — I/O, работа с сетью и прочее. Использовать ее в поиске по словарю — довольно странная затея.
2. Исходный код.
Он, мягко говоря, хромает. Куча закомментированных строк, полное несоответствие PEP8
assert sys.version >= '3.3', 'Please use Python 3.4 or higher.'
Просите версию 3.4, а сравниваете с 3.3. И кстати, данный метод сравнения версий может принести много сюрпризов, если версия питона изменится с 3.9 на 3.10.
github.com/alikzao/tao1/blob/master/tao1/core/utils_.py#L2
Везде в файлах встречаются подобные строки. Они не нужны, если у вас питоной третьей версии, потому что стандартная кодировка для Python3 — UTF-8.
Первая строчка (#!/usr/bin/env python) тоже не выглядит особо нужной. Вы же не делаете все файлы исполняемыми по умолчанию?
В общем, вы уж извините, но все это выглядит так, как будто вы делаете что-то, но не знаете что именно и зачем.
Отличный пример того, какой должна быть статья. Все материалы, которые отличны от темы статьи, вкратце разобраны. Для тех, кто хочет больше, есть ссылки. В итоге статья читается на одном дыхании без необходимости поиска отдельных сущностей.
Огромное спасибо за перевод.
Вот тоже думаю, что это гонка за премией. Все знали, что версия не очень стабильная, но понадеялись на то, что ничего критичного не случится. Отдел получит свои премии за сдачу в срок, а в следующей версии все поправят. А тут вот оно как оказалось.
github.com/szhu/3030
Эта лицензия за 89$ как раз и есть то, о чем я спрашивал.
Но тогда у меня появляется другой вопрос: зачем нужна месячная подписка? Какие у нее преимущества перед годовой?
Просто с моей точки зрения, у нее одни недостатки — необходимость ежемесячных платежей, сумма за год получается выше.
Но только минорные:
А оставаясь на подписке, я получаю все апдейты, в том числе и мажорные.
Я спрашиваю о возможности оплаты этой подписки сразу на год по причине того, что мне так проще, чем платить каждый месяц.
Т.е. я хочу сразу же оплатить год этой подписки, 107 баксов. При этом, весь год я буду получать обновления на продукт. По истечении этого года два варианта:
1) Я не оплачиваю — и получаю версию продукта годичной давности.
2) Я еще раз оплачиваю на год (продлеваю подписку) и опять так же получаю все обновления в течение этого времени.
Ни в какой разрез с вашими тарифами это не идет. Я просто хочу возможность оплатить год целиком, а не делать это каждый месяц, потому что для меня это проблематично.
Нет, не такая же. Там я получаю за 89$ лицензию на версию, которая есть на данный момент. Я же хочу заплатить 107$ сразу же и получать в течение года все апдейты, не вспоминая каждый месяц о платеже. По истечении года я опять смогу сделать то же самое, тем самым оставаясь всегда на актуальной версии.
1) Купить его за 89$. За эти деньги я получаю IDE как есть + правку багов этой версии.
Я ей пользуюсь, по истечении года у меня никто ее не отнимает, она моя. Все хорошо.
2) Платить в месяц по 8.9$ (106.8$ за год)
Плюсы: я всегда на последней версии с поддержкой последних фич.
Минусы:
если я платил, а потом по какой-либо причине перестал, не проплатив суммарно и без перерывов год — я не получаю ничего;
то же самое, но проплатив суммарно и без перерывов год — я получаю версию годичной давности (совсем как в пункте один, но там она выходит дешевле и с меньшим количеством проблем);
необходимость помнить об этом месячном платеже.
Последний пункт для меня довольно критичен. А если учесть «цену» забытого платежа (о ней чуть выше) — то он становится определяющим. У меня есть отдельная карта для подобного рода платежей, на которой поддерживаются деньги когда как. Часто я узнаю, что забыл оплатить тот же гитхаб только когда на него захожу через веб-интерфейс.
В связи со всем этим возникает два вопроса:
1) Будет ли какое-то временное окно (1-3-5 дней), в течение которого IDE мне будет криком кричать о платеже, но не превратится в тыкву?
2) Будет ли возможность оплатить эту подписку сразу на год, чтобы не вспоминать об этом каждый месяц?
sales.jetbrains.com/hc/en-gb/articles/204784622-What-is-perpetual-fallback-license-
То есть получается какая ситуация: вы оплачиваете, допустим, без перерывов полтора года свою IDE. Еще раз уточню, что вы полтора года поддерживаете тем самым ее разработку, выход новых версий, поддержку новых версий языка. А потом по какой-либо причине вы не оплачиваете. И получаете версию, которая была год назад. То есть не текущую, разработку которой вы поддерживали, а версию годичной давности. Которая вам может уже и не нужна, потому что условный питон стал версии 3.7, а в версии годичной давности поддерживается только 3.5.
Это даже не смешно.
По сабжу:
JS код в пхпшном с помощью echo — огонь;
функция liFormat — огонь;
русско-английские названия переменных — огонь.
Если оба веб-сервера находятся на одной машине, то совсем необязательно выделять gunicorn'у отдельный порт, можно забиндить его на unix-сокет.
С такой длинной цепочкой становится сложно получить реальный IP-адрес пользователя, поэтому не стоит забывать про пробросы заголовка X-Real-IP
nginx:
location / { proxy_pass $scheme://your_proxy; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; }В конфиг gunicorn'а стоит добавить строчку
access_log_format = '%({x-real-ip}i)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" %(D)s'а то будете видеть в логах все запросы от локалхоста.
Предлагаю сильно поменять roadmap:
1. Понять зачем это вообще нужно.
Серьезно. И дело даже не в том, что это очередной фреймворк, который никому особо не нужен, т.к. ничего нового не несет. А не несет он по двум причинам: asyncio почти не используется; asyncio используется неправильно.
Почему почти не используется? Потому что вы в конфиге размещаетесь за асинхронным nginx'ом и за асинхронным gunicorn'ом (worker_class=gevent).
Почему используется неправильно?
github.com/alikzao/tao1/blob/master/tao1/core/core.py#L34
github.com/alikzao/tao1/blob/master/tao1/core/core.py#L40
Две совершенно ненужных корутины. asyncio нужно использовать в тех местах, где может быть задержка — I/O, работа с сетью и прочее. Использовать ее в поиске по словарю — довольно странная затея.
2. Исходный код.
Он, мягко говоря, хромает. Куча закомментированных строк, полное несоответствие PEP8
Просите версию 3.4, а сравниваете с 3.3. И кстати, данный метод сравнения версий может принести много сюрпризов, если версия питона изменится с 3.9 на 3.10.
github.com/alikzao/tao1/blob/master/tao1/core/utils_.py#L2
Везде в файлах встречаются подобные строки. Они не нужны, если у вас питоной третьей версии, потому что стандартная кодировка для Python3 — UTF-8.
Первая строчка (
#!/usr/bin/env python) тоже не выглядит особо нужной. Вы же не делаете все файлы исполняемыми по умолчанию?В общем, вы уж извините, но все это выглядит так, как будто вы делаете что-то, но не знаете что именно и зачем.
Огромное спасибо за перевод.
UPD.: поторопился с комментарием, нашел записи за 2013/2014, надеюсь этот год не станет исключением :)
pycon.ru/2015/archive/2013
pycon.ru/2015/archive/2014