
Lulz
27.06.2017
09:54:27
the cake is a lie

Artem
27.06.2017
09:54:41
может, он тогда еще и не алексей?

Stanislav
27.06.2017
09:54:45

Google

Nikolay
27.06.2017
10:23:45
нехер ныть по поводу пинов

Korben
27.06.2017
10:23:59
11

Denis
27.06.2017
10:26:46
12

Anastasia
27.06.2017
10:28:06
Пцсс, запилили материал про тестовые задания для разработчиков. Норм - не норм? Баян - не баян? Если не норм, то что?
https://goo.gl/4WnFb8

Stanislav
27.06.2017
10:30:28
Кто там за книги отвечает, гляньте
Hello all, free ebook "Mastering Python Design Patterns"
http://bit.ly/2sIldUL , https://www.packtpub.com/packt/offers/free-learning
#today only #free. please sign up link to take that awesome book. #forwarded.
note: This book might not be available due to timezone.
admin: if you don't like this post. please delete it. — reading Mastering Python Design Patterns.

Nikolay
27.06.2017
10:30:28
?

Nikolay
27.06.2017
10:31:10
если там рассказываются паттерны проектирования - за такое надо бить ногами

Ilia
27.06.2017
10:31:11
Не подскажете из-за чего использование raven для отправки логов в Sentry может приводить к утечке памяти? Вот такой код из доки используется для привязки логгеров:
import raven
import raven.conf
from raven.handlers.logging import SentryHandler
raven_client = raven.Client(dsn=settings['sentry.dsn'], environment=settings['sentry.environment'])
sentry_handler = SentryHandler(raven_client, level=settings['sentry.level'])
raven.conf.setup_logging(sentry_handler)

Artem
27.06.2017
10:31:23
При изучении кода одним из первых моментов, которые могут броситься в глаза — наличие в нем «велосипедов», то есть...
вы забыли сказуемое

Lulz
27.06.2017
10:31:58

Nikolay
27.06.2017
10:34:10
я бы сказал, что самая лучшая с точки зрения качества питонокода книга, которую я видел - это http://shop.oreilly.com/product/0636920033400.do

Google

Anastasia
27.06.2017
10:39:45

ultranoise ?
27.06.2017
10:39:55
вот бы vscode умел еще палить в битбакет и подтягивать комменты из кодревью

Aragaer
27.06.2017
10:41:10
http://assets.amuniversal.com/289e5a6031bd0135d05c005056a9545d
ржу

Aleksey
27.06.2017
10:43:26
?

ultranoise ?
27.06.2017
10:43:37
давай попробую
спасибо

Aleksey
27.06.2017
10:43:51
напиши потом, пожалуйста) тоже на битбакете сижу, было бы интересно

x3233
27.06.2017
10:44:04
нужен кому вхл утановщик?

ultranoise ?
27.06.2017
10:44:05
так, а это для взрослой VS, не для VSCode

x3233
27.06.2017
10:44:12
вместо пип инстала

Aleksey
27.06.2017
10:44:23
а тьфу, точно(

Artem
27.06.2017
11:05:22
Привет
Посоветуйте книгу
Для новичка

Сергей
27.06.2017
11:05:46
Начинающим @ru_python_beginners

Artem
27.06.2017
11:06:23
Спс

Anton
27.06.2017
11:06:42

Koko
27.06.2017
11:21:09
Ребят, а посоветуйте, чем аргументы парсить вместо optparse, чтобы:
1. можно было сперва список опций задефайнить именно списком, провернуть какую-то логику, возможно что-то удалить, что-то добавить, а потом уже скормить их парсеру?
2. Нужно чтобы работало в Python 2.6+, 3.4+

Google

Ignalion
27.06.2017
11:22:18

Koko
27.06.2017
11:22:38
argparse ставится в 2.6 нормально разве?

Ignalion
27.06.2017
11:22:45

Koko
27.06.2017
11:22:46
или подбэкпортили уже
Ну вот надо мне чтобы из коробки в CentOS 6 работало и не заставлять всех ставить руками 2.7 :) а так я бы рад.

Ignalion
27.06.2017
11:23:30
Ребят, а посоветуйте, чем аргументы парсить вместо optparse, чтобы:
1. можно было сперва список опций задефайнить именно списком, провернуть какую-то логику, возможно что-то удалить, что-то добавить, а потом уже скормить их парсеру?
2. Нужно чтобы работало в Python 2.6+, 3.4+
А первый пункт, ты же всегда так можешь делать. Берешь sys.argv, делаешь с ним что хочешь, а потом кормильца парсеру

Koko
27.06.2017
11:23:46
sys.argv != list[optparse.Option]

Nikolay
27.06.2017
11:24:27
argparse наше все

Ignalion
27.06.2017
11:24:44
Ну, там строка, да. Ты ее руками парсишь, проворачиваешь логику, а потом кормишь парсеру

Nikolay
27.06.2017
11:25:25

Nikolay
27.06.2017
11:25:34
и теперь бью по рукам и заставляю переписывать
есть два принятых верных варианта на текущий момент

Маришка
27.06.2017
11:26:01
Хех

Nikolay
27.06.2017
11:26:05
это argparse и либа сторонняя, кажется, называется click

Koko
27.06.2017
11:26:06
Да, это всё здорово, но: у меня получается вариантов особо нет :D

Ignalion
27.06.2017
11:26:06

Маришка
27.06.2017
11:26:24

Koko
27.06.2017
11:26:28
click хорош, но там же всё только через декораторы работает, ЕМНИП

Google

Маришка
27.06.2017
11:26:40
И?

Ignalion
27.06.2017
11:26:51

Nikolay
27.06.2017
11:26:56

Koko
27.06.2017
11:27:07
Да, сейчас объясню почему

Nikolay
27.06.2017
11:27:11

Admin
ERROR: S client not available

Koko
27.06.2017
11:27:21
> 1. можно было сперва список опций задефайнить именно списком, провернуть какую-то логику, возможно что-то удалить, что-то добавить, а потом уже скормить их парсеру?

Маришка
27.06.2017
11:27:25

Ignalion
27.06.2017
11:27:42

Маришка
27.06.2017
11:27:45
Так в чем проблема

Anna
27.06.2017
11:28:27
халоу

Ignalion
27.06.2017
11:28:33
В том, что декораторы работают в момент компиляции, я так понимаю, а ему нужно динамически. Хотя, опции же один раз парсятся
Должно взлететь

Koko
27.06.2017
11:28:43
Мне не совсем понятно в каком месте нужно будет резолвить конфликт опций и подобную херню.

Маришка
27.06.2017
11:28:45
Компиляции

Anna
27.06.2017
11:28:46
кто-нить торнадо пользует?

Маришка
27.06.2017
11:28:49
КОМПИЛЯЦИИ
КОМПИЛЯЦИИ

Nikolay
27.06.2017
11:29:02

Google

Dmitriy
27.06.2017
11:29:10

Nikolay
27.06.2017
11:29:12
от этого то, как надо делать, не изменится

Anna
27.06.2017
11:29:33

Ignalion
27.06.2017
11:29:39

Dmitriy
27.06.2017
11:30:41

Ignalion
27.06.2017
11:31:09
/me юзает твистед

Nikolay
27.06.2017
11:31:26

Маришка
27.06.2017
11:31:33
aiohttp

Dmitriy
27.06.2017
11:31:41
Вот именно

Anna
27.06.2017
11:31:50
в общем, как в Торнадо делаются асинхронные http запросы?

Ignalion
27.06.2017
11:31:55

Dmitriy
27.06.2017
11:32:06

Anna
27.06.2017
11:32:28
def get(self, url, data=None, headers=None, username=None, password=None):
if data is not None:
if isinstance(data, dict):
data = urlencode(data)
if headers is None:
headers = {}
headers['Content-Type']='application/x-www-form-urlencoded'
if '?' in url:
url += '&%s' % data
else:
url += '?%s' % data
return self._fetch(url, 'GET', headers=headers, username=username, password=password)

Koko
27.06.2017
11:32:29
т.е. в итоге дальше сижу на optparse, не видать мне 100% health на landscape :D

Dmitriy
27.06.2017
11:33:28
def get(self, url, data=None, headers=None, username=None, password=None):
if data is not None:
if isinstance(data, dict):
data = urlencode(data)
if headers is None:
headers = {}
headers['Content-Type']='application/x-www-form-urlencoded'
if '?' in url:
url += '&%s' % data
else:
url += '?%s' % data
return self._fetch(url, 'GET', headers=headers, username=username, password=password)
Что это?

Ignalion
27.06.2017
11:33:47

Anna
27.06.2017
11:33:58
как например эту функцию сделать асинхронной?