
pride
09.12.2016
22:56:41
дико удобная вещь

Denis
09.12.2016
22:57:49
Почему бы не хранить конфиги в жсоне?

pride
09.12.2016
22:59:10
ну json скорее же xml ровня
не тупо секция - параметр = значение

Google

Pavel
10.12.2016
03:42:02

Nikita
10.12.2016
03:42:24
+
yaml?

Albatrosicks
10.12.2016
04:00:27
ini

.
10.12.2016
04:40:20
Гайс, есть такая конструкция
'thread {}'.format(thread.id)
Если пробел между тредом и {} уберу, то получу
unsupported operand type(s) for +: 'float' and 'str'
А пробел нужно убрать, как решать?

Albatrosicks
10.12.2016
04:43:00

Nikita
10.12.2016
04:43:55
>>> class x:
... id = 1.0
...
>>> x.id
1.0
>>> 'thread {}'.format(x.id)
'thread 1.0'
>>> 'thread{}'.format(x.id)
'thread1.0'

.
10.12.2016
04:44:50
если быть точным
response.set_cookie('thread {}'.format(thread.id), 'op', '10368000')

Pavel
10.12.2016
04:47:36

.
10.12.2016
04:48:21
не работает это с куками

Pavel
10.12.2016
04:48:34

.
10.12.2016
04:49:25
Traceback:
File "/home/pc/DJ/DVACH/dvach_venv/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/home/pc/DJ/DVACH/dvach_venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/home/pc/DJ/DVACH/dvach_venv/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/pc/DJ/DVACH/boards/views.py" in board
68. response.set_cookie('thread{}'.format(thread.id), 'op', '10368000')
File "/home/pc/DJ/DVACH/dvach_venv/lib/python3.5/site-packages/django/http/response.py" in set_cookie
200. max_age)
Exception Type: TypeError at /po/
Exception Value: unsupported operand type(s) for +: 'float' and 'str'


Pavel
10.12.2016
04:49:27
что за привычка, вывалить три строки кода и показать ексепшен. А где возникает unsupported operation?

Google

.
10.12.2016
04:50:26
thread{} как я понимаю тут

Pavel
10.12.2016
04:54:41
а точно проблема в thread{}, а не в том, что max_age должен быть секундами, а не строкой?

.
10.12.2016
04:55:47
блять...
Спасибо

Pavel
10.12.2016
04:56:38
а теперь думай, как связан пробел и эта хуерга.

.
10.12.2016
04:58:06
какая именно хуерга

Pavel
10.12.2016
04:58:42
max_age и TypeError

.
10.12.2016
05:09:54
Ну тип мне инетерсно почему там float
Мы секунды же вроде к какому-нибудь datetime должны добавлять наверн

Pavel
10.12.2016
05:12:36

.
10.12.2016
05:12:52
кк

Pavel
10.12.2016
05:20:45
Опен сорс же. Смотрите, как всё просто.
Функция set_cookie занимает примерно экран, если не убирать комментарии.
Из них половина кода отметается, потому что обрабатывает параметр expires, который по умолчанию None.
Ещё четверть - одинаковые четыре строки типа if path is not None: self.cookies[key]['path'] = path.
Таким образом, если всё лишнее убрать, то остаётся две значащих строки:
self.cookies[key]['max-age'] = max_age
self.cookies[key]['expires'] = cookie_date(time.time() + max_age)
.
И ексепшен вылетает на последней.
https://github.com/django/django/blob/master/django/http/response.py#L172

.
10.12.2016
05:26:58
сложно читать чужой код, пока даже мыслей нет залезать в сорцы и смотреть, хотя довольно полезное занятие как оказалось

Pavel
10.12.2016
05:37:16
В конце концов, не читая чужой код, трудно научится писать свой.
?

.
10.12.2016
05:44:49
только говнокод

Evgen
10.12.2016
09:14:31
Как направить весь вывод из logging в какую-то функцию в программе? (Python)

Google

Denis
10.12.2016
09:16:38

Evgen
10.12.2016
09:17:25
@bladdon А как пользоваться MyHandler()? Т.е. какие параметры передаются и как?

Denis
10.12.2016
09:18:26
class MyHandler(logging.Handler):
def emit(self, record):
...
def handle(self, record):
...

Evgen
10.12.2016
09:19:25
Спасибо

Zart
10.12.2016
09:48:22
basicConfig имеет проверку, что если хендлеры уже сконфигурены, то он молча выходит. вдобавок эту функцию нельзя вызывать в библиотеках, она предназначена для приложений
ему достаточно создать свой логгинг хендлер и добавить его к рутовому
правда это не будет гарантировать "всего вывода"

darkwoolf
10.12.2016
11:37:14
всем привет
есть 3 файла

arisu
10.12.2016
11:37:27
На какой сам сядешь

darkwoolf
10.12.2016
11:37:29
python3 -m http.server —cgi

arisu
10.12.2016
11:37:36
На какой мать посадишь

darkwoolf
10.12.2016
11:37:37
это server.py
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>data processing forms</title>
</head>
<body>
<form action="/cgi-bin/form.py">
<input type="text" name="login"><br />
<input type="password" name="password"><br />
<input type="submit" value="click on me"><br />
</form>
</body>
</html>
это form.html
#!/usr/bin.env python3
import cgi
form = cgi.FieldStorage()
login = form.getfirst("login", "not defined")
password = form.getfirst('password', "not defined")
print("Content-type: text/html\n")
print('''<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>data processing forms</title>
</head>
<body>
''')
print("<h2>data processing forms!</h2>")
print("<p>login : {}</p>".format(text1))
print("<p>password: {}</p>".format(text2))
print('''</body>
</html>''')
а это form.py в папку cgi-bin

Denis
10.12.2016
11:39:38
Ну зачем cgi

Google

Denis
10.12.2016
11:39:52
Пхпшник штоле?

darkwoolf
10.12.2016
11:40:01
когда ввожу пароль в form.html и нажимаю на submit то предлагает скачать файл

arisu
10.12.2016
11:40:15
Ну
А где контент-тайп заголовок
А
Есть

darkwoolf
10.12.2016
11:40:35
Уже давно нет, просто пытаюсь освоить пайтон и так написано в гайде

arisu
10.12.2016
11:40:37
Вижу

Admin
ERROR: S client not available

darkwoolf
10.12.2016
11:40:38
одном

Denis
10.12.2016
11:41:24
Ну это немного очень устаревший стандарт
Для питона есть wsgi

darkwoolf
10.12.2016
11:42:13
Я возьму на заметку, потом погуглю
пока что нужно хотя бы так запустить и понять в чём ошибка

Denis
10.12.2016
11:42:36
Пиши на django лучше

darkwoolf
10.12.2016
11:42:49
до это еще нужно дойти
это же фреимворк

Denis
10.12.2016
11:43:17
Ну и что

Zart
10.12.2016
11:43:26

Google

darkwoolf
10.12.2016
11:44:00
чтобы писать на фреимворках, нужно хоть немного без него разобраться

Zart
10.12.2016
11:44:13
чистый цги имеет невероятное количество оверхеда, от чего на практике медленный как звиздец
ну пиши на всги без фреймворков, какие вопросы

darkwoolf
10.12.2016
11:46:47
ну в form.py тоже я думаю нужно что-то поменять тогда

Ира br0wnale Куркина
10.12.2016
11:47:21
привет, чят
нужен совет, как быстро понять классы и ООП в питоне

arisu
10.12.2016
11:48:00
Как и везде
Сам не научишься - никто не научит

Ира br0wnale Куркина
10.12.2016
11:48:26
может есть где-то туториал хороший для тупеньких?

darkwoolf
10.12.2016
11:48:33
А ты знаешь ООП в других языках?

Ира br0wnale Куркина
10.12.2016
11:48:53
я прошла курс на курсере, было очень познавательно. но там нет ооп
неа

darkwoolf
10.12.2016
11:49:39
Ну я думаю сначало нужно понять ООП не именно в языке,а как оно действует в реальном мире

Zart
10.12.2016
11:49:53
туториалы по ооп дают основы синтаксиса и терминологии
и полностью оставляют за бортом то, нафига это всё надо и как им пользоваться в реальной жизни

darkwoolf
10.12.2016
11:51:14
просто попробуй погуглить 3 основные принципа ООП и про SOLID тоже погугли
и постарайся понаводить примеры в реальной жизни
ну про классы и объекты тоже

Ира br0wnale Куркина
10.12.2016
11:53:29
спасибо)

arisu
10.12.2016
11:56:21
Ну а потом паттерны
Эта группа больше не существует