Хорошая площадка для всякого рода «примеров» типа jsfiddle, кажется аналогов еще не было.
Как pythonanywhere пока слабо себе представляю, в сегодняшние дни виртуальное окружение не самое страшное: обычно устанавливается до кучи другого софта. Надо подумать.
А по поводу «идей», они высылают на почту письмо с просьбой ответить на несколько простых вопросов. Ребята очень стараются, это заметно, я радуюсь как дитя когда такое вижу, хочется врубить acdc и делать хорошие штуки, плюс им в карму.
class Cacheable(object):
def cleanup(self):
cache.delete(':'.join([self.__class__.__name__, self.id]))
class AwesomeUser(models.Model, DirtyFieldsMixin, Cacheable):
name = models.CharField()
surname = models.CharField()
awesomeness = models.BigIntegerField()
def do_stuff(self):
# Does some awesome stuff
return
def save(self, *args, **kwargs):
# Processing
self.do_stuff()
# Gets modified fields
is_dirty = set(self.get_dirty_fields().keys()) \
& set(['awesomeness', 'name'])
super(AwesomeUser, self).save(*args, **kwargs)
# If got dirty
if is_dirty:
self.cleanup()
# do other stuff
Можно просто if self.is_dirty() — так можно узнать были ли вообще какие-либо изменения. В моем примере проверяется определенные поля.
DirtyFields — вообще обалденная штука. Можно не сохранять модель, если нет на то причины или делать проверку до сохранения.
Я сначала так и написал, затем удалил вместе с остальным «объемом», потому-как статья стала ну совсем большой. И справедливо решил: раз в блоге «веб-разработка», кто захочет — посмотрит.
Просто с каждой версией компилить css из less, js из coffeescript итд а потом коммитить в репозиторий и не забыть положить в репозиторий файлик CNAME где прописать например static.site.com и все
«Просто… и все» — вы мне мое начальство напоминаете :) То, что вы описали нисколечки не DRY, но как один из способов оптимизации — гуд. Жирный плюс вам.
Компрессор генерит цсс из лесс и записывает новые имена в шаблоны при старте приложения. Затем нужно зачистить кеш, чтобы страницы получили новые стили. Да и в ребуте приложения я ничего плохого не вижу, даже наоборот время от времени будет полезно: утечки там всякие.
В январе 2010 я сделал свою первую верстку: и сразу интернет-портал (дивы, ие6 и более). У нас были проблемы с программистом, мне часто приходилось лезть в шаблоны mako (это я как-то еще понимал).
В августе 2010 я начал изучать джангу: читал книжку в свободное время («Django. Разработка веб-приложений на Python»). Где-то в октябре до меня дошло, что я начал не с того конца и взялся за Лутца («изучаем питон»). Дальше я работал с готовым проектом (мне его оставили в наследство) по немногу увеличивая скилы.
Весной 2011 я сделал первый проект самостоятельно от дизайна до кода и развертки: интернет-магазин. Потом еще один, но уже сложнее и больше. С августа 2011 я встрял в один большой проект вторым программистом, где первый — чистой воды гений: подобный тимлид все равно что допинг. До этого августа уже становилось скучно: одно и тоже целыми днями. В ноябре проект развалился и я потихоньку стал киснуть. В декабре 2011 это скука просто била по мозгу и я начал делать свой маленький проект, который забросил в феврале в долгий ящик, теперь наверное придется все переписывать :( В феврале мы с супругой решили попробовать свои силы в своем деле, 5 апреля мы гордо сказали «понеслася!» и удалили авторизация с нжинкс :) На основе полученного опыта при его разработке я и написал статью. За кулисами осталось еще много интересного, но в основном по верстке. Возможно я их как-нибудь соберу в отдельную статью: ведь немало нового можно узнать из комментариев, как, например, тут.
2010 и по сей день: 2,5 года выходит. Прыжок может и большой, но пробелов в знаниях, хватает. Вот и вся «история успеха» :)
Статика генерится раз при старте приложения, и только если исходные файлы изменены.
Компрессор самостоятельно компилирует, жмет и подставляет новые имена файлов в шаблоны. Я вообще об этом не думаю: мне только залить изменения на сервер и ребутнуть приложение.
Во-первых мемкеш быстрее чем диск, во-вторых в кеше можно еще хранить всякие полезные штуки типа слоу-квери: менюшки, например, то что часто используется: в контекстных процессорах.
А зачем мне треш в репе? На каждый коммит удалять старые ксс/джс и добавлять новые? Временные файлы должны быть временными и я не хочу помнить о таких вещах.
200мб это много и мало — смотря как к этому подойти. Все зависит от того насколько ваше приложение отличается от «hello world». Я в работе использую кучу батареек и при этом являюсь ярым сторонником DRY: например, less вместо css, а ему нужен nodejs. Однако оптимизация — это, почти, всегда: тут убавил, там прибавил и при определенной степени «комфорта» разработки возникают определнные «трудности». Потеря в скорости, при этом, не допустима.
Если убрать мемкешд и статику из памяти сайт будет работать, но не так быстро как я могу себе это позволить.
Выигрыш действительно небольшой. По поводу mysql: я решил что сам по себе сервис тоже требует ресурсов, и еще буквально перед публикацией, подумав я решил удалить следующее:
# В настройках кеша
'TIMEOUT': 0,
# В модели флетпейджа
def save(self, *args, **kwargs):
if self.id:
cache.delete(self.get_absolute_url())
super(FlatPage, self).save(*args, **kwargs)
С таким кешированием тяжело работать, но если знать как — проблем никаких.
Кхм. Вы только что привели меня к мысли: я не читал доки от начала. Искал через гугл, когда в этом была необходимость и как следствие читал «кусками». Спасибо, за правку.
Надо мозг включать при проектировании. В стену она бы не вписалась. Есть же решения: заграждения, газоны, яркие наклейки, затемнение, яркий свет для придания бликов, какая-нибудь горизонтальная фигня на уровни груди, рельеф, рисунки, рекламные плакаты и стенды — это даже внешний вид не портит.
Я два раза впилился в боковую стенку круговой вертушки, которую часто ставят в кинотеатрах. goo.gl/kI63R
Дождался пока дверь «отойдет» и сходу впаялся в стенку по которой эта вертушка и ходит. Я так понимаю, для экономии тепла делают вход только вначале и в конце, а по бокам округлые стенки. Т.е. когда юзер вроде как уже «в зале», на самом деле он еще в «двери».
Во второй раз я внимательно смотрел в стенку глазами подозрительного Фрая пока не убедился, что ее нет и… снова в нее впилился.
Вечером темно, в зале тоже свет приглушенный. Теперь я вытягиваю руки и иду как мумия, ну нафиг мозг калечить :)
Как pythonanywhere пока слабо себе представляю, в сегодняшние дни виртуальное окружение не самое страшное: обычно устанавливается до кучи другого софта. Надо подумать.
А по поводу «идей», они высылают на почту письмо с просьбой ответить на несколько простых вопросов. Ребята очень стараются, это заметно, я радуюсь как дитя когда такое вижу, хочется врубить acdc и делать хорошие штуки, плюс им в карму.
Началось все тут: stackoverflow.com/questions/110803/dirty-fields-in-django
Автор сам Armin Ronacher :)
Можно просто if self.is_dirty() — так можно узнать были ли вообще какие-либо изменения. В моем примере проверяется определенные поля.
DirtyFields — вообще обалденная штука. Можно не сохранять модель, если нет на то причины или делать проверку до сохранения.
Да, большая часть — идеи без зависимостей.
Да еще и пробелище такой влепил после цитаты. Уважаемый, Хабр, почему вы не трете лишние br, м?
«Просто… и все» — вы мне мое начальство напоминаете :) То, что вы описали нисколечки не DRY, но как один из способов оптимизации — гуд. Жирный плюс вам.
В августе 2010 я начал изучать джангу: читал книжку в свободное время («Django. Разработка веб-приложений на Python»). Где-то в октябре до меня дошло, что я начал не с того конца и взялся за Лутца («изучаем питон»). Дальше я работал с готовым проектом (мне его оставили в наследство) по немногу увеличивая скилы.
Весной 2011 я сделал первый проект самостоятельно от дизайна до кода и развертки: интернет-магазин. Потом еще один, но уже сложнее и больше. С августа 2011 я встрял в один большой проект вторым программистом, где первый — чистой воды гений: подобный тимлид все равно что допинг. До этого августа уже становилось скучно: одно и тоже целыми днями. В ноябре проект развалился и я потихоньку стал киснуть. В декабре 2011 это скука просто била по мозгу и я начал делать свой маленький проект, который забросил в феврале в долгий ящик, теперь наверное придется все переписывать :( В феврале мы с супругой решили попробовать свои силы в своем деле, 5 апреля мы гордо сказали «понеслася!» и удалили авторизация с нжинкс :) На основе полученного опыта при его разработке я и написал статью. За кулисами осталось еще много интересного, но в основном по верстке. Возможно я их как-нибудь соберу в отдельную статью: ведь немало нового можно узнать из комментариев, как, например, тут.
2010 и по сей день: 2,5 года выходит. Прыжок может и большой, но пробелов в знаниях, хватает. Вот и вся «история успеха» :)
Компрессор самостоятельно компилирует, жмет и подставляет новые имена файлов в шаблоны. Я вообще об этом не думаю: мне только залить изменения на сервер и ребутнуть приложение.
Если убрать мемкешд и статику из памяти сайт будет работать, но не так быстро как я могу себе это позволить.
За мной пинта или две. В общем будете у нас Петербурге..!
С таким кешированием тяжело работать, но если знать как — проблем никаких.
goo.gl/kI63R
Дождался пока дверь «отойдет» и сходу впаялся в стенку по которой эта вертушка и ходит. Я так понимаю, для экономии тепла делают вход только вначале и в конце, а по бокам округлые стенки. Т.е. когда юзер вроде как уже «в зале», на самом деле он еще в «двери».
Во второй раз я внимательно смотрел в стенку глазами подозрительного Фрая пока не убедился, что ее нет и… снова в нее впилился.
Вечером темно, в зале тоже свет приглушенный. Теперь я вытягиваю руки и иду как мумия, ну нафиг мозг калечить :)