
Pavel
09.01.2017
06:02:53
пишите такой размер кода, чтобы декларация переменных был недалека от их использования.

Baal
09.01.2017
06:03:02
С другой стороны, вот тебе прямо сейчас нужна переменная и ты хочешь быть уверенным в ее значении и объявляешь перед использованием
Т.е. код всегда должен влезать в 1-2 страницы?

Pavel
09.01.2017
06:03:50

Google

SuperUser
09.01.2017
06:05:36

Pavel
09.01.2017
06:05:55
Т.е. код всегда должен влезать в 1-2 страницы?
я бы избегал слов "всегда должен", когда речь идёт про программирование. Миллион случаев, миллион вариантов, миллион возможностей. Но в любом случае, толпа мелких и средних функций гораздо сподручнее, чем одна гигантская.

Igor
09.01.2017
06:05:58
не факт, что в его случае это будет правильным решением, ой не факт

Baal
09.01.2017
06:06:01

SuperUser
09.01.2017
06:06:13
Сейчас

Igor
09.01.2017
06:06:16
и мне кажется, дикты бы были нагляднее
In [32]: my_data = [0, 0, 0, 0, 0]
...:
...: my_data[0] = 1
...: my_data[2] = 5
...: my_data[4] = my_data[0] + 3
...:
...: print(my_data)
...:
[1, 0, 5, 0, 4]
In [33]: my_data = {'a': 0, 'b': 0, 'c': 0}
...:
...: my_data['a'] = 2
...: my_data['b'] = 4
...: my_data['c'] = my_data['a'] + 9
...:
...: print(my_data)
...:
{'a': 2, 'c': 11, 'b': 4}
(щас кто-нибудь предложит сделать my_data = [0] * 5 или воспользоваться defaultdict, но фиииг знает)

Pavel
09.01.2017
06:08:57

Baal
09.01.2017
06:09:27
Как то очень заморочено через словари получается. И громоздко (

Igor
09.01.2017
06:09:30
можно я лучше поимею погоду на улице :(

Google

Igor
09.01.2017
06:09:43
я говорю, зависит от случая, и не факт что тебе это подходит

Pavel
09.01.2017
06:09:48

Igor
09.01.2017
06:10:06

Pavel
09.01.2017
06:10:22

Igor
09.01.2017
06:10:28
и кредитные тачки!

Pavel
09.01.2017
06:10:45

Alone
09.01.2017
06:10:55
Ну почему кредитные :)
Кто - то купил недорого подержанный :)
Или на автобусах :)
Насчёт - 30, ну да, немного неожиданно
Хотя в 2005 году было холоднее
Сори за офтоп

Anonymous*
09.01.2017
06:13:03
в 2005 также было
я помню занятия в школе отменили

Pavel
09.01.2017
06:13:07

Anonymous*
09.01.2017
06:13:10
сори за офтоп

Pavel
09.01.2017
06:14:03
сори за офтоп

Джон
09.01.2017
07:10:52
сори за офтоп

Pavel
09.01.2017
07:31:59
В Прощеное воскресенье каждый должен получить прощение за свои мелкие или большие прегрешения, чтобы войти в Великий пост кристально чистым, со светлой душою. В 2017 году Прощеное воскресенье припадает на 26 февраля. Источник: http://god2017.com/prazdniki/proshhenoe-voskresene-v-2017-godu

Igor
09.01.2017
07:32:10
жалко, что не на 29

Google

Older
09.01.2017
07:42:38
Парни, всем привет. Кто работал с таймтрекером на апворке?

Pavel
09.01.2017
07:56:58
я недолго

Older
09.01.2017
07:57:55
не могу активировать время. Пишет что нет контрактов. Я правильно понимаю, что заказчик должен на меня контракт назначить?

Pavel
09.01.2017
07:58:19

Older
09.01.2017
07:59:23
Понял, спасиб

Vadim
09.01.2017
08:11:43
А html и css знать обязательно разработчику питонисту?

Igor
09.01.2017
08:14:08
необязательно, можно заниматься разработкой чего-нибудь помимо веб-сайтов ;)
даже если сайтов, можно заниматься только бекендом. но если занимаешься разработкой сайтов, стоит уметь хотя бы HTML и CSS, да. хотя бы чуть-чуть
блин, у меня совсем дебильный вопрос.
как правильнее инициализировать дефолтные значения в классах?
так - ок?
class Connection(object):
host = None
port = None
def __init__(self, host='127.0.0.1', port=1488):
self.host = host
self.port = port
у меня просто руки чешутся сделать
class Connection(object):
host = '127.0.0.1'
port = 8192
но в __init__ все равно придется переопределять и/или передавать дефолтные значения

Johnnie
09.01.2017
09:03:49
o/

Igor
09.01.2017
09:04:25
сорри, привык ебанутые значения как пример приводить :((

Марк
09.01.2017
09:04:35

Cykooz
09.01.2017
09:05:01
На уровне класса определять дефолты имеет особый смысл в том случае если в __init__ эти поля не инициализируются, а деалется это в каком то другом методе.
Если же поля инициализируются в __init__ то их добавление на уровне класса чисто "что бы было красиво", т.е. не обязательно

Igor
09.01.2017
09:06:37

Johnnie
09.01.2017
09:07:28
глобальные переменные это сильно хуево?
например, если она одна
и если от нее избавляться, то ее надо протащить через туеву хучу функций

Igor
09.01.2017
09:08:19
фласк некоторые/иногда ругают за использование глобальных переменных, если не ошибаюсь

Johnnie
09.01.2017
09:08:31
если быть точным, то это список проксей

Google

Johnnie
09.01.2017
09:08:46
я не хочу просто каждый раз дрочить сайт http://www.freeproxy-list.ru
def get_proxy_list(url='http://www.freeproxy-list.ru/api/proxy'):
return requests.get(url, {'anonymity': 'false', 'token': 'demo'}).text.split('\n')
def get_random_proxy():
return random.choice(PROXY_LIST)
if __name__ == '__main__':
PROXY_LIST = get_proxy_list()
так норм?

Igor
09.01.2017
09:10:46
этот момент, когда тебе кажется, что ты достаточно компетентен для того, чтобы ответить, но чуйка подсказывает, что нихуя и лучше послушать других :(

Johnnie
09.01.2017
09:12:02
и еще кинопоиск какой-то нежный пиздец
чуть лишнего спросил - футболит

Cykooz
09.01.2017
09:13:37

Pavel
09.01.2017
09:16:37
конкретно в этом варианте, requests умеет работать с переменными окружения http_proxy и https_proxy. Или в общем случае PROTOCOL_proxy.

Johnnie
09.01.2017
09:19:44
ты предлагаешь сувать это переменную окружения и кормить ее на вход реквесту?

Pavel
09.01.2017
09:20:56

Johnnie
09.01.2017
09:22:07
я понимаю вариант когда забирается токен из энва, например. но срать в энвы питоном, чтобы потом питоном же это и съесть - не понимаю :)

Igor
09.01.2017
09:22:48

Pavel
09.01.2017
09:23:17

Johnnie
09.01.2017
09:23:19
ну почти так, да. просто при каждом новом запросе берется рандомный прокси

Марк
09.01.2017
09:23:41
Я в своем проекте нахуярил уже штук десять глобальных стеков. Вот как мог их избегал, но без них никак вообще((((

Johnnie
09.01.2017
09:24:53

Марк
09.01.2017
09:25:11
Два сервера, работающие с разными приложухами. И им как-то надо обмениваться данными иногда. Хуй его, как сделать красивее
То есть, условно это можно показать так: класс Эхосервер один, класс Эхосервер Два, вызов обоих в мейне и loop.

Dmitriy
09.01.2017
09:28:10

Google

Dmitriy
09.01.2017
09:28:58
С одной стороны в питоне на это пофиг
Как по мне так такая переменная больше на константу похожа и помещать в нее мутабельный объект не есть красиво
Которое еще и из метода берется

Марк
09.01.2017
09:31:19
Ща вот прикинул: теоретически можно замутить абстрактный класс, где будут иницилизированы основные стеки для обмена, дальше ебнуть наследование на оба сервера-класса. Пространство имен должно для этих стеков быть общим.

Johnnie
09.01.2017
09:33:03

Марк
09.01.2017
09:33:15
Либо можно попробовать юзнуть Торнадо или твистед. Правда, я не знаю, можно ли в нем сразу забиндить пару портов и еще быть клиентом

Dmitriy
09.01.2017
09:41:22
а как красиво?
Смотря как у тебя реализовано получение данных, можно записать в простую переменную в методе где идет запрос к серверу

Johnnie
09.01.2017
09:42:08
так запрос 100500 раз может быть
соот-но один и тот же список проксей тоже придется запросить 100500 раз

Pavel
09.01.2017
09:43:02

Johnnie
09.01.2017
09:45:21
requests_cache?

Dmitriy
09.01.2017
09:47:06
Кстати для проксей вроде было какое-то решение в виде модуля
Или что-то в этом роде
Если есть loop значит его можно взять в любой момент и записать в него что-то или считать

Марк
09.01.2017
09:54:22

Dmitriy
09.01.2017
09:54:58
Типа ioloopов всяких

Марк
09.01.2017
09:55:49
Он и есть io, только в двойке на основе асинкоре

Dmitriy
09.01.2017
10:00:13
Гм. На примере торнады могу сказать, что там ioloop может хранить последний инстанс, который можно использовать где угодно. Опять же в контексте этого самого ioloop
А в инстанс можно поместить нужные данные

Марк
09.01.2017
10:02:05
А можно попонятней? Вот есть у меня условный ExoServer1. В нем произошли какие-то события. Я их записал в self.event. Все хорошо, но мне их нужно передать в другой сервер другого класса. Причем тут loop?
Эта группа больше не существует