Pull to refresh
0
0
Роман Толкачёв @marazm

User

Send message

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

Reading time 2 min
Views 443
Непонятный заголовок, отсутствие картинки – вобщем топик в чисто маразматичном стиле.

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

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

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

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

и да, проблемы не последние.
Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Comments 24

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

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

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

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

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

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

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

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

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

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

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

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

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

rabstol.jpg - image uploaded to Picamatic

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

Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Comments 30

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

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

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

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

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

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

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

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

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

~~~~

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

Django App Names

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

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

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

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

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


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

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

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

django-inline

Reading time 1 min
Views 1.1K
Навеяно советом Артёма Горбунова.

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

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

http://code.google.com/p/django-inline/
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Comments 10

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

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

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

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

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

Reading time 1 min
Views 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
Total votes 16: ↑14 and ↓2 +12
Comments 21

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

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

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

И так, по последнему пункту.
Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Comments 5

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

Reading time 1 min
Views 713
История познавательного плана, имеющая абсолютно нулевую ценность для обывателя.

Преамбула

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

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

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

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

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

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

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

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

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

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

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

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

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

Reading time 1 min
Views 578
Лично меня больше всего обламывает захламление почтового ящика, и поэтому:

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

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

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

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

Читать дальше →
Total votes 14: ↑2 and ↓12 -10
Comments 0

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

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

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

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

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

Reading time 2 min
Views 679
Интересная весч. Анализировал популярность комментов и пришёл к неутешительным выводам.

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

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

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

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

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

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

Information

Rating
Does not participate
Location
Кемеровская обл., Россия
Date of birth
Registered
Activity