
Malikov
28.04.2017
13:54:13
тупанул просто((

Roman
28.04.2017
13:59:20
- у вас есть такой же, но без re?
- нет!
- будем искать...

Michael
28.04.2017
14:02:53
Всем привет, нужен совет.
Есть две функции, которые отличаются совсем немногим - во второй на 3-4 строчки больше и вместо одного элемента она возвращает кортеж из двух элементов. Как их можно изящнее реализовать?
Пути решения:
1. Передавать в общую функцию аргумент, от которого зависит, что мы будем делать. В тело функции добавить условия.
- Но эта функция будет выполняться много раз и проверять if при каждом вызове не хотелось бы.
2. Просто скопировать первую функцию и дописать то, что нужно.
- Слишком много повторяющегося кода. Но если промежуточные действия тоже обернуть в функции, то эту ситуацию можно немного улучшить.
3. Как-то хитро использовать декораторы.
- Пока не могу придумать, как.

Igor
28.04.2017
14:03:38
а нельзя это в одну функцию запихнуть?

Google

Igor
28.04.2017
14:04:02
раз 3-4 строчками отличаются, можно добавить условие какое-нибудь

Roman
28.04.2017
14:04:28
Если нужно изменить работу функция не изменяя самой функции - используй декоратор

Michael
28.04.2017
14:05:38

Igor
28.04.2017
14:06:16
timeit в руки и вперед мерять
как раз по умолчанию 10000-100000000 раз гоняет
оборачивание в декоратор еще дороже обойдется

Michael
28.04.2017
14:07:46

Геннадий
28.04.2017
14:07:48
В некоторых ситуациях простой копипастинг не такой уж и ужасный. Если метод практически гарантировано устоялся, переписывать его не планируется, размер кода не критичен, а к производительности большое требование - велком. Но как правило такие штуки возникают из-за неоптимизированной архитектуры.

Aragaer
28.04.2017
14:08:37
копипастинг это зло когда "а, я не знаю, что тут такое, но вроде работает"

Michael
28.04.2017
14:09:20

Геннадий
28.04.2017
14:09:27
Через полгода в любом проекте начинается "а я не помню как это работает" :))
Если в тетрадке и для личного, и для обучения - тогда а) я бы посмотрел "сверху" на архитектуру, с целью вообще посмотреть почему так получилось и как может взглянуть на предмет с другой стороны, составить по другому классы (если это ООП). Если речь про обучение, до декораторы я бы не использовал со смыслом "расширение функционала метода", декораторы всё-таки про смысл "изменение свойств метода". Тут скорее разбитие кода на части и последовательное выполнение методов.

Google

Nikolay
28.04.2017
14:19:17

Oleksandr ror191505
28.04.2017
14:21:55

Igor
28.04.2017
14:22:16

Nikolay
28.04.2017
14:22:27

Artem
28.04.2017
14:23:13
не все неправда
Сложно поспорить с тем, что "железо опять же очень приятное"

Igor
28.04.2017
14:23:28
на том, что брю лучше, я подавился
я тоже сначала подавился, а потом подумал, чем он хуже
хочешь - компиль из исходников, хочешь - забирай бинарники. по умолчанию - бинарники. куча дружелюбных опций в пределах пакетов, не надо никакого ./configure --with.
репа на гитхабе -> софт доезжает быстро, бинарники собираются автоматически ботами
гитхаб? хипстерство ебаное, да.
но актуальность репозитория вполне себе неплохо поддерживается.

Nikolay
28.04.2017
14:24:52
он хуже тем, что это сраный костыль на руби, который официальные релизы обмазывает кучей патчей и пытается кое-как не вступить в конфликт с системными либами и XCode

Igor
28.04.2017
14:24:53
хочешь - храни несколько версий пакета и переключайся между ними как тебе угодно

Oleksandr ror191505
28.04.2017
14:25:20
расскажите как обновить питончик через брю в маках нормально?

Igor
28.04.2017
14:25:20
> кучей патчей
пиздёж
> кое-как не вступить в конфликт с системными либами и XCode
такое редко бывает

Nikolay
28.04.2017
14:25:24
по сравнению с нормальной пакетной системой это - феерическое говно, но без него было бы еще хуже, я согласен

Igor
28.04.2017
14:25:31

Nikolay
28.04.2017
14:25:32
> пиздёж
факт

Igor
28.04.2017
14:25:39

Oleksandr ror191505
28.04.2017
14:25:41

Nikolay
28.04.2017
14:25:45
открой практически любой рецепт

Igor
28.04.2017
14:25:54

Google

Igor
28.04.2017
14:25:59
и это не "обнбовить питончик"
это "поставить еще один питончик"

Nikolay
28.04.2017
14:26:11

Oleksandr ror191505
28.04.2017
14:26:34
нахрена мне две копии одного софта?

Igor
28.04.2017
14:26:47
Ты ебанулся? Нахрена брю трогать системный питон?
Поговори вон с энчантером, че будет, если ставить че-нибудь в системный питон без венвов

Oleksandr ror191505
28.04.2017
14:27:22
а нахрена мне ставить из брю второй раз то, что итак уже есть

Igor
28.04.2017
14:27:42

Nikolay
28.04.2017
14:27:59

Oleksandr ror191505
28.04.2017
14:28:07

Igor
28.04.2017
14:28:07
https://github.com/Homebrew/homebrew-core/blob/master/Formula/nano.rb - 0 патчей

Michael
28.04.2017
14:28:17

Igor
28.04.2017
14:28:26
это сделано максимально пиздато, как могли сделать левые люди, не связанные с эпплом
https://github.com/Homebrew/homebrew-core/blob/master/Formula/gcc.rb - опа, один патч! целый один! для такого проекта, как гцц!

Проксимов
28.04.2017
14:28:57

Google

Igor
28.04.2017
14:29:21
В общем, Николай, пока ты проигрываешь

Nikolay
28.04.2017
14:29:36

Igor
28.04.2017
14:30:05
Для yosemite. Это старая версия. Этот патч сейчас никому накатываться не будет.

Nikolay
28.04.2017
14:30:05

Oleksandr ror191505
28.04.2017
14:30:06
https://github.com/Homebrew/homebrew-core/search?utf8=%E2%9C%93&q=+patch+do&type=

Nikolay
28.04.2017
14:30:25
брю решает задачу установки пакетов на макос, криво, через жопу, но решает

Admin
ERROR: S client not available

Nikolay
28.04.2017
14:30:40
но сравнивать его с нормальными пакетными менеджерами - это смешно

Oleksandr ror191505
28.04.2017
14:30:43

Igor
28.04.2017
14:30:55
ОК, какие плюсы "нормального пакетного менеджера"?
и кстати
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=coreutils-progress-git
лол

Nikolay
28.04.2017
14:31:29

Igor
28.04.2017
14:31:30
source=("git+git://git.sv.gnu.org/coreutils.git"
'0001-copy-Add-a-progress-option.patch'
'0002-copy-fix-missing-progress-check.patch'
'0003-copy-fix-two-potential-divs-by-zero.patch')

Nikolay
28.04.2017
14:32:08
сейчас мы дойдем до того, что emerge начнем так называть

Igor
28.04.2017
14:32:19
это ты серьезно щас?

Oleksandr ror191505
28.04.2017
14:32:44

Google

Igor
28.04.2017
14:33:10
https://github.com/Homebrew/homebrew-core/blob/master/Formula/coreutils.rb#L42-L44
знаешь, что это значит?
это значит, что он скачает бинарники и не будет ничего патчить сам

Nikolay
28.04.2017
14:33:44
нет, просто в современном мире основных форматов пакетов два - rpm и deb. Остальное чаще всего попытка совместить бинарно совместимые elfы и патчинг исходников.

Igor
28.04.2017
14:34:17
чувак. давай еще раз
я лучше знаю, как homebrew работает ;)

Nikolay
28.04.2017
14:34:34
чувак. давай еще раз
https://github.com/Homebrew/homebrew-core/blob/master/Formula/coreutils.rb#L34-L37

Igor
28.04.2017
14:34:55
патчи не будут накатываться, если
1) ты не собираешь из исходников (а ты не собираешь по умолчанию, т.к. ниже указаны бутылки)
2) (в данном случае) если у тебя >= yosemite

Проксимов
28.04.2017
14:35:08
Ох, прям как в старые добрые

Igor
28.04.2017
14:35:13
т.е. три последние версии ОС

Nikolay
28.04.2017
14:35:41
по твоей логике, можно и Ansible использовать, как пакетный менеджер

Igor
28.04.2017
14:36:12

Nikolay
28.04.2017
14:36:15
а на деле такой вот логики в пакетном менеджере в принципе быть не должно

Vasiliy
28.04.2017
14:36:26