Как стать автором
Обновить
0
0
Роман Толкачёв @marazm

Пользователь

Отправить сообщение

GAE: batch put, распределение и некоторые обманные телодвижения

Время на прочтение2 мин
Количество просмотров454
Непонятный заголовок, отсутствие картинки – вобщем топик в чисто маразматичном стиле.

Случилось как-то раз Емеле узнать откуда родом посетители его хомяка (утрирую), для чего Емеля обратился в maxmind с просьбой дать IP2City базу.

Вобщем-то начало какое-то умное…

Задача: Сделать определение города пользователя по IP для GAE приложения.

Первые проблемы:
— нельзя залить файл базы напрямую (ограничение 1мб/файл)
— ограниченные бесплатные ресурсы

и да, проблемы не последние.
Читать дальше →
Всего голосов 8: ↑5 и ↓3+2
Комментарии24

Блоки/модули или как всетаки организовать?

Время на прочтение1 мин
Количество просмотров1.5K
Для меня, красивый код — это больше чем красивый код. Это код, который приятно, а главное легко обслуживать.

Любая динамическая страница любого сайта содержит элементы типа «блок» и «основной контент».

Если коротко, то я предлагаю использовать «теги» для вывода блоков и логику view для вывода контента. Это позволит, например, закэшировать блок на уровне шаблонов не написав ни строчки python кода.

Ко всему прочему мы получаем максимально разбитую на составляющие систему.

Стоит учитывать так же, что в основном контенте тоже можно найти блоки и тоже вынести их в отдельные теги, за тем лишь уточнением, что в случае привязанности блока к данным из основного контента, эти данные необходимо прокинуть в тег. Можно воспользоваться context, но это не столь очевидно, как передавать параметры в тег напрямую.

В любом случае, это дело каждого, решать как делать правильно :)

P.S> Интересно было бы узнать как вы организуете проекты Django и с чем это связано
Всего голосов 19: ↑12 и ↓7+5
Комментарии8

Порядок на «рабочем столе»: две мысли

Время на прочтение2 мин
Количество просмотров3.1K
Этот топик — результат химических реакций в мозгу хабраюзера avanti, заминусованного за идеологически неверные мысли. Ему и плюсы ;)

Не зря «рабочий стол» называется рабочим — для большинства из пользователей это основное окно интерфейса в графическом режиме. С рабочего стола мы запускаем приложения, и сюда же обычно помещаем файлы, с которыми часто работаем.

Однако можно увлечься, и тогда «рабочий стол» превращается в «бардачный стол». Если проводить аналогию с настоящим рабочим столом, то бардак — это когда мы не можем найти в куче всяких бумаг, а разобраться в нем нет времени (а может быть, и желания).

Как это бывает:

rabstol.jpg - image uploaded to Picamatic

Очевидно, что это неудобно! Для комфортной работы порядок часто необходим. И этот порядок нужно организовать.

Читать дальше →
Всего голосов 13: ↑8 и ↓5+3
Комментарии30

Используем память разумно. Часть 2. fapws3

Время на прочтение4 мин
Количество просмотров2.4K
В предыдущей части мы начали бороться за память на 256 мегабайтном слайсе «на скорую руку». Результат был, но не столь эффектный как тот которого я добился на этот раз.

Я всегда догадывался, что причина всех моих неприятностей — apache. И чем больше я пытался его настраивать, тем больше в этом убеждался. Вывод? Попробовать заменить. Одно но — переход должен быть как можно более плавным, поскольку речь, ясно дело, о продакшене.

Поскольку у меня был опыт общения с nginx, а если быть точным — опыт с проксированием, то был выбран именно этот веб-сервер. К тому же у него хорошие параметры производительности.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+27
Комментарии79

Используем память разумно, или mod_wsgi на 256 мегабайтах

Время на прочтение2 мин
Количество просмотров3.2K
Какое-то время назад потребовалось перенести проекты с выделенного сервера на VPS. Для этих целей был выбран slicehost. В общем и целом контора нравится и готов её рекомендовать всем.

Случилась лишь одна проблема: начали приходить уведомления о слишком сильном использовании диска (чтение/запись). Долгое время проблема не находила решения из-за отсутствия времени, но это вылилось в непонятные отказы, сопровождавшиеся статистикой в >200% CPU usage. После долгих извращений, была найдена проблема, а затем и её решение.
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии97

Русские имена приложений в Django

Время на прочтение2 мин
Количество просмотров2.6K
Сия заметка, плод трудов хабра-человека sevenov, ему и почёт, дабы в будущем ему хватило кармы оставить свой след на хабре самому ;)

~~~~

Сегодня возник вопрос о том, как сделать вот так:

Django App Names

После получасового гугления наткнулся на несколько тикетов на code.djangoproject.com (ссылок сейчас не подкину, в истории искать лень). В общем, суть их в том, что нужно переписать чуть ли не половину Django. Немного подумав, я реализовал по своему. Возможно это кто-то уже делал, но на решение я не наткнулся.
Читать дальше →
Всего голосов 53: ↑47 и ↓6+41
Комментарии12

Кнопка «отправить». Просто и полезно.

Время на прочтение1 мин
Количество просмотров4.2K
Достаточно просто улучшить юзабельность формы простым, но крайне эффективным способом — деактивация кнопки «отправить» после её нажатия.

Дабы не быть голословным, приведу пример для jQuery:

$('#id_кнопки').click(function()
 {
  $('this').attr('disabled', 'disabled')
 }
);


В идеале, кнопка должна становиться активной только после того, как форма будет полностью валидна.

Как подсказал Хабрапользователь nooze, стоит учитывать, что в случае AJAX реакции на отправку, следует учесть ошибки (например, не совпадающие логин и пароль, или таймаут запроса)

P.S> Возможно, тема уже поднималась, но упоминания на хабре не нашёл.
P.P.S> Спасибо за то что насрали в карму, вы хорошие люди :)
P.P.P.S> Я не принимаю модели хабра, в которой автор выкладывает всё и вся в топ, в таком случае просто нечего обсуждать.
Всего голосов 104: ↑71 и ↓33+38
Комментарии48

django-inline

Время на прочтение1 мин
Количество просмотров1.2K
Навеяно советом Артёма Горбунова.

Что позволяет делать:
— простым движением добавлять на страницу in-place или in-line редактирование переменных

Вот, впринципе, и всё.

http://code.google.com/p/django-inline/
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии10

О недостатках кармирования

Время на прочтение2 мин
Количество просмотров703
Что делает Хабр в одно время и очень заманчивым ресурсом, и в то же жестоким? Что вообще выделило его?
Думаю, ответом (или, по крайней мере одним из вариантов) будет карма. Выражаясь языком сообществ — «писькомерка».

На данный момент занимаюсь написанием модулей для Django, связанных конкретно с оцениванием и оценками. Столкнувшись с проблемой, я понял, что нужно какое-то обосновние идее, а не просто моё «Хочу», ибо если нет обоснования, нет и смысла. Впринципе, подопытным стал Хабр.

Хабр даёт возможность прямиком «насрать в» или «плюсануть» карму, что есть главный недостаток. Объясню почему. Допустим, у человека есть 5-10 достаточно успешных, популярных топика, имеющих просто впечатляющие оценки. В один прекрасный день, он создаёт больной для него топик, идущий в разрез с общественным мнением… И получает в харю всё и сразу, потому что плюсуют в карму за хорошее меньше, чем минусуют за плохое, и это жалкая человеческая натура, которой почему-то легче заставить нагадить, чем поощрить :) (в моём опыте, в карму насрали 6 из 11 человек, поставивших минус. Впрочем, об этом я уже писал.
Читать что я ещё там написал
Всего голосов 1: ↑0 и ↓1-1
Комментарии128

Тесты, а нужны ли?

Время на прочтение1 мин
Количество просмотров1.1K
Да нужны. Замечу, что речь идёт об автоматизированных тестах. Эта штука просто жизненно необходима для особо функционального (базового, низкоуровнего) кода, каковой содержит сам framework Django. Но почему бы не применить тесты для сайтов? И это не просто «по приколу», а некая защита от головняка.


Часто приходится обновлять Django и сопутствующие приложения на сервере, что иногда приводит к проблемам, которые крайне нежелательны на сайтах заказчиков. И главная проблема это 500 ошибка, которая и будет показателем отказа в тексте ниже.


Итак, Django предоставляет возможность писать тесты для приложений и это всё облегчает.


В большинстве сайтов, ничего не может обрушиться просто так, это скорее всего связано с обратно несовместимыми изменениями в Django, либо влиянием таких изменений на сторонние приложения (django-voting e.t.c.). Написав простейший тест, который проверит, а возвращает ли страница корректный код (т.е. 200) мы при первом же запуске всех тестов определим неработающие страницы, а соответственно и проблемный код.


Итак, в конце всего этого короткий код (за остальным, обратитесь к документации):

from django.test import TestCase

class LentaTest(TestCase):
    def test_index(self):
        response = self.client.get('/lenta/')
        self.failUnlessEqual(response.status_code, 200)


Код помещаем в appname/tests.py, а чтобы запустить тесты, делаем manage.py test appname
Всего голосов 16: ↑14 и ↓2+12
Комментарии21

Разные варианты отображения для одних и тех же данных

Время на прочтение2 мин
Количество просмотров1.5K
Опыт «забавностей» становится всё больше и больше. Вот очередной случай маразма. Коротко суть:
Существует сайт, на котором нужно выводить одни и те же объекты с разными условиями выборки (по категории, по тегу, «захабареные» и т.п.) и разными отображениями (список, подробно и т.п.).

Некоторые индивиды, создают в каждом view замысловатую структуру из if-ов, и каждый раз она повторяется. Запомните:
  1. Рефакторинг
  2. Рефакторинг
  3. Рефакторинг
  4. view — это просто функция!

И так, по последнему пункту.
Читать дальше →
Всего голосов 13: ↑8 и ↓5+3
Комментарии5

Мой детский бизнес… Украли?

Время на прочтение1 мин
Количество просмотров725
История познавательного плана, имеющая абсолютно нулевую ценность для обывателя.

Преамбула

В глубоком детстве начал заниматься разработкой веб-сайтов, и родилась таки идея создать свою веб-студию. Название было не замысловатым — Advanced Lab, что позже превратилось просто в avlab. Разумеется, по этому случаю был куплен домен avlab (dot) ru. Всё было бы хорошо, но пришло время менять всё (и качество, и подход, команда).

Собственно, рамс

Был взят курс на новую ТМ, а старый домен забыт. И вот сегодня решил посмотреть А ЧТО ЖЕ ТАМ? И посмотрел, — веб-студия.

Мне, надо сказать, глубоко наплевать на то что они стали себя так называть, но писать «Добро пожаловать в обновлённую web студию AvLab (dot) ru». Извините, это грубое мешательство бывших владельцев (т.е. конкретно меня) с УГ.

Чтож, придётся зачистить весь интернет от ссылок и тому подобных вещей. Как-то не хорошо свою репутацию мочить.

Может кто подскажет что делать, раз такое случилось? Заранее благодарен.

P.S> Разумеется, никаких прав и т.п. на AvLab нету (кстати, скорее всего есть у владельцев одноимённого производителя железа в Малайзии), даже не оформлено юридически как предприятие.

P.P.S> (из ответа) Да даже и была бы возможность отсудить — не стал бы. Мне он не нужен. Меня лишь не устраивает то, что кто-то пользуется моей репутацией.
Всего голосов 24: ↑13 и ↓11+2
Комментарии26

Конфигурация. dev vs production

Время на прочтение2 мин
Количество просмотров2K
Не думаю, что данный топик должен стать откровением для продвинутых Django-кодеров. Но по опыту работы в разных проектах, могу сказать, что многие программисты всёже не в теме.

Итак, любой проект (практически) требует раздельную конфигурацию для девелоперской машины и продакшн сервера. Можно просто сделать два файла конфигурации, но иногда требуется вписать и изменить общие для каждой конфигурации настройки.

Некоторые вставляют кучу if-ов или ещё чего по хуже, опираясь на ip (ужос) или имя машины, но это всё крайне неудобно и захламляет конфигурацию. Для меня это очень сильный довод к неучастию в проекте, т.к. это говорит о качестве всего кода.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии44

Временное решение проблемы с вирусом

Время на прочтение1 мин
Количество просмотров594
Лично меня больше всего обламывает захламление почтового ящика, и поэтому:

настройки → тюнинг, снимаем галочку.

Ищем что по серьёзней

P.S> И скока ж лохов повелось)) в т.ч. и я :(

P.P.S> Может найти хостера и послать абуз? Это всётаки вредоносный код + спам в какой-то степени.

Читать дальше →
Всего голосов 14: ↑2 и ↓12-10
Комментарии0

django-voting сортировка по рейтингу

Время на прочтение2 мин
Количество просмотров2.2K
Думаю, многие знакомы с этим расширением, но всё же:
django-voting позволяет ввести оценку любой сущности по digg-принципу (+1/-1) максимум за 30 минут (с учётом включения асинхронных запросов JS).
Сайт проекта: django-voting.googlecode.com
Но есть одна плохая особенность: отсутствие возможности сортировать сущности по рейтингу стандартными средствами ORM. Далее опишу как это реализовал я.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии15

django.newforms: Используем.

Время на прочтение3 мин
Количество просмотров2.4K
Изредко работая над своим личным проектом, я дошёл до задачи сделать форму… Форму добавления места. Проблема в том, что она достаточно не типична. Я решил написать по этому поводу статью, которая поможет глубже проникнуть в newforms новичкам.
Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии35

Не в мейнстриме? Отхабарен!

Время на прочтение2 мин
Количество просмотров692
Интересная весч. Анализировал популярность комментов и пришёл к неутешительным выводам.

Мейнстрим — это сила.

Минусы ставят тем, чья точка зрения отличается от основной массы других. Разумеется, всё зависит от того, как ты преподнесёшь свою идею. И минусуют тех, кто сразу (хоть и с аргументами) пишет: «Ваше гауно нашему не в пример!».

Так, впринципе, большинство из юзеров Хабра предпочитают MySQL, хотя ясен пень, PostgreSQL куда круче в плане наворотов. Так, например, мой коммент: «Бесполезно с MySQL. Вот постгрес, да, вещь. Много средств уже готовых.» заработал максимальное количество минусов (4 шт). У этого феномена есть две причины:
  • Кол-во мускульников больше чем кол-во слоноводов
  • Минусят больше, чем ставят плюсы
На втором стоит остановиться подробнее. Это психология. Если человек имеет негативное отношение, он с вероятностью 100% отреагирует (в данном случае, поставит минус), причём, в зависимости от степени «наезда» на «него», может приложить и сверх-усилия (чаще всего, понизит карму). Если же комментарий положителен в плане отношения к мировоззрению человека, то сверх-усилий он прилагать не будет чисто по своей природе, «всё и так хорошо». Т.е. в первом случае мы имеем негативную среду, с которой организм «жаждет» побороться, а во втором, среда благоприятна, и, впринципе, что-либо предпринимать не имеет смысла.

Разумеется, есть исключения. Например, «холивары», но навать это состояние «благоприятным» не поворачивается язык. На войне нет победителей.

Как итог, хотелось бы выразить своё мнение по поводу оценок. Негативные оценки должны носить гораздо меньшее влияние, чем положительные, потому что негатив заработать проще, как это я описал выше. На хабре же сейчас ситуация иная. Что ж, это всего лишь мысли. :)

UPD: Топ с самым большим числом упоминаний о Хабраэтике :D
Всего голосов 61: ↑55 и ↓6+49
Комментарии188
1

Информация

В рейтинге
Не участвует
Откуда
Кемеровская обл., Россия
Дата рождения
Зарегистрирован
Активность