
[Anonymous]
17.03.2016
23:07:04

Artem
18.03.2016
00:52:46
https://blog.heroku.com/archives/2016/3/17/in_deep_with_django_channels_the_future_of_real_time_apps_in_django

Pavel
18.03.2016
05:09:39

Sasha
18.03.2016
06:52:36
Пагни, а допустим удаляете модель с filefield/imagefield. Надо жеж от файла тоже очистить. Какой путь будет наиболее верным?

Google

Sasha
18.03.2016
06:54:02
Я подумал о том, чтобы просто создать сигнал и с помощью os тупо удалять и все


Pavel
18.03.2016
07:11:10
посмотри внимательно в мануале, что-то было про невызов сигналов если идёт массовое удаление.
Хотя, я могу путатьь с объектной моделью Microsoft Outlook...
Традиционный вопрос про лень.
Вот есть какая-то система, развивается она какой-то время, соответствнно внутри она, скажем так, далека от идела. Мягко говоря.
И вот нужно внести небольшую вариантность поведения. А дальше два варианта: или раскидать по коду пачку подпорок в духе if settings.FEATURE_ENABLED, или провести рефакторинг, выделить какие-то базовые классы, ну короче, переписать так половину, потому что подпорок реально много, и убирая одну, почему бы не убрать и остальные.
Так вот, как понять, что "всё, хватит, прошлая подпорка была последней"? Или продолжать обманывать себя "сейчас поставлю маленький костыль, а вот в следующий раз..."?
Традиционный вопрос про лень.
Вот есть какая-то система, развивается она какой-то время, соответствнно внутри она, скажем так, далека от идела. Мягко говоря.
И вот нужно внести небольшую вариантность поведения. А дальше два варианта: или раскидать по коду пачку подпорок в духе if settings.FEATURE_ENABLED, или провести рефакторинг, выделить какие-то базовые классы, ну короче, переписать так половину, потому что подпорок реально много, и убирая одну, почему бы не убрать и остальные.
Так вот, как понять, что "всё, хватит, прошлая подпорка была последней"? Или продолжать обманывать себя "сейчас поставлю маленький костыль, а вот в следующий раз..."?
снаруже ведь не видно, насколько крепко костыли держат друг друга и не дают развалится всей системе..


[Anonymous]
18.03.2016
07:29:35
Я не спец, конечно
Но ментор заставляет рефакторить и переписывать

Sasha
18.03.2016
07:29:57
Ты бы видел сколько проф. софт содержит костылей

[Anonymous]
18.03.2016
07:30:14
Делить на класс на очевидные классы

Sharkus
18.03.2016
07:31:33
Понятно, что это делать нужно. Вопрос в том, что сразу было лень, а потом начинается "ну есть же вон там костыли, и тут зафигачу, ничего страшного". И не пойми, как вырваться из этого круга...

[Anonymous]
18.03.2016
07:32:14
Рефакторить сразу, чтобы не зайти глубже и переписывать всё

Sharkus
18.03.2016
07:33:20
Опять же, не всегда это реально.

[Anonymous]
18.03.2016
07:33:22
Есть такая шутка отличная:
Дали код другого программиста на доработку.
Ctrl+A; delete, пишу код

Sasha
18.03.2016
07:33:51
Ну да. Чем раньше зарефакторишь - тем лучше.
Тут от ситуации зависит, чем проетк, что по срокам и т.д.
Если твой проект - коненчо рефактори

Google

[Anonymous]
18.03.2016
07:33:56
Это да, тут ты отчасти прав

Aragaer
18.03.2016
07:35:18
правильный порядок действий - пишешь код, чтобы работал, потом рефакторишь, чтобы было норм, потом коммитишь.
последние два пункта не перепутать

[Anonymous]
18.03.2016
07:35:50

Aragaer
18.03.2016
07:36:26
ну да, в случае с гитом вместо слова коммит читаем слово пуш

Sasha
18.03.2016
07:36:31
Я путаю всегда первые два.
Я долго думаю, рисую что и как. И потом пишу.
Это плохая черта.

Aragaer
18.03.2016
07:36:59
по желанию перед пушем делается ребейз
ну тут еще как

[Anonymous]
18.03.2016
07:37:20

Sasha
18.03.2016
07:38:00

Aragaer
18.03.2016
07:38:04
можно например подумать несколько раз, как сделать то, что надо, минимальными телодвижениями, чтобы не сразу все переписать, а только нужное. А вот потом рефакторить чтобы оно уже глубже

Sasha
18.03.2016
07:38:34

Aragaer
18.03.2016
07:38:50
ай, фигня. Сначала напиши чтобы оно просто выводило hello, world, потом какой-то хардкод, а потом уже полезное и нужное

[Anonymous]
18.03.2016
07:38:51
О, я тоже велосипездист

Sasha
18.03.2016
07:38:53
Ни строчки за три дня
но зато потом все за день написал

Whore Amazing
18.03.2016
07:39:15

Aragaer
18.03.2016
07:39:28
есть такая теория - приоритет трансформаций
трансформация это "не рефакторинг", то есть такая правка кода, которая меняет его поведение
и мысль заключается в том, что есть простые трансформации, а есть сложные. И лучше начинать с простых

Google

[Anonymous]
18.03.2016
07:40:38
Понятно что нужно с простого

Aragaer
18.03.2016
07:40:46
самая простая трансформация - не было кода -> появился код, возвращающий нулл (или 0 или None, вобщем что есть)
поэтому надо начать с нее
если пишешь по тдд, то ваще надо начать с того, чтобы написать тест такой, чтобы хватило самой простой трансформации. Потом тест усложняется и требует более сложных трансформаций
там оно все заморочено 8)

[Anonymous]
18.03.2016
07:41:53
Я пишу пр тдд

Aragaer
18.03.2016
07:42:32
https://blog.8thlight.com/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html
вот статейка

[Anonymous]
18.03.2016
07:42:48
Спасибо

87776
18.03.2016
08:24:48
а наш герой, попа с дырой, СДЕЛАЛ ДВАЧ НА ДЖАНГЕ

Pavel
18.03.2016
08:25:54

87776
18.03.2016
08:26:05
так-то да

87776
18.03.2016
08:26:08
лучше чем ничего

[Anonymous]
18.03.2016
08:30:38
А на чем должна быть борда? На пхп?

Sharkus
18.03.2016
08:42:05
На перле, вестимо.

Denis
18.03.2016
08:53:32
Здравствуйте господа. Как можно отсортировать словарь по имени наоборот? OrderedDict сохраняет очередность только на бумаге, а в памяти хранит отсортированным по имени.

terry
18.03.2016
08:54:59
что я только что прочел?

Pavel
18.03.2016
08:55:59

Denis
18.03.2016
08:56:22
Вот пример

Pavel
18.03.2016
08:56:40
а как надо?

Google

Denis
18.03.2016
08:57:01
А надо в том порядке, в котором я занес в словарь
Т.е. total, currency, details

Admin
ERROR: S client not available

Denis
18.03.2016
08:58:17
Пробовал через sorted, OrderedDict, SortedDict (сторонее приложение), но все равно сортирует по имени.

Pavel
18.03.2016
08:59:22
>>> from collections import OrderedDict as OD
>>> x = OD()
>>> x['total'] = 0
>>> x['currency'] = 0
>>> x['details'] = 0
>>> [k for k in x.keys()]
['total', 'currency', 'details']
у меня работает...
а что там пишарм показывает — бог его ведает.

Denis
18.03.2016
09:00:37
Ключи и я могу получить. А теперь, если занести в OrderedDict и вывести, будет впорядке? Он показывает,как располагается в памяти и естественно отсылается так дальше.

Pavel
18.03.2016
09:01:11
зачем тебе расположение в памяти, если ключи отдаются в правильной последовательности?
>>> for i in x:
... i
...
'total'
'currency'
'details'

Sharkus
18.03.2016
09:06:39
Он в питоне смотрит на память! Гоните его, насмехайтесь над ним...

Denis
18.03.2016
09:06:59

Sharkus
18.03.2016
09:07:24
Ну на самом деле, какая тебе разница, как оно там в памяти, когда тебе перебор ключей даёт правильный порядок?
Ты хочешь зачем-то лезть напрямую в память потом?

Denis
18.03.2016
09:08:40
Это только 3 ключа.
А порядок нужно не только в этом варианте
Еще 10 ключей, которые тоже нужно сортировать.

Pavel
18.03.2016
09:09:07

Sharkus
18.03.2016
09:09:56
Опять же, тебе нужно пробежать по обратно сортированным ключам или тебе зачем-то важно, как оно хранится?

Pavel
18.03.2016
09:10:20
ключи сортируются в порядке подачи в словарь. Если нужна сортировка по значению ключа - или скармливай в нужной последовательности, или сортируй keys().

Google

Denis
18.03.2016
09:11:17

Sharkus
18.03.2016
09:11:40
Каким образом ты его отдаёшь на другой ресурс?

Pavel
18.03.2016
09:11:46

Sharkus
18.03.2016
09:11:54
Не разбегаемся, угу.

Denis
18.03.2016
09:28:49
Все разобрался. Как обычно - мой косяк. Спасибо за помощь. Извините, если кого-то задел
Проблема была не в порядке (все равно он становится в другом порядке, чем нужно), а в том, я передавал неправильные числа. Хотя ошибка писала о том, что нужен порядок :(

Sharkus
18.03.2016
09:30:27
Ну и славненько.

[Anonymous]
18.03.2016
09:35:42
Proigral :D

Aragaer
18.03.2016
09:41:33
а у меня вот возник вопрос, кто такая еот

trump ? trump ? hillary
18.03.2016
09:42:49

Aragaer
18.03.2016
09:43:12
у кого?

Sharkus
18.03.2016
09:43:21
:D