27 мая 2010 г.

Сотмаркет наглишен бабкен пиздунг. Батарейка 2.

Заказал батарейку в софтмаркете, о чем уже писал. Так вот, sotmarket.ru – это нифига не “более-менее вменяемое место для покупки”. Это место не вменяемое. Уроды на сайте при покупке  и заказе батарейки везде показывали “есть в наличии”. С удовольствием выдают страницы с квитанциями на оплату, показывают статус заказа и др. и пр. И ни одна собака не предупредила меня, что батарейки на самом деле в наличии нет, а реальное состояние дел надо выяснять по телефону.
В итоге, батарейка оплачена (4500), но в наличии появиться в лучшем случае через 2 недели, при том никто мне не гарантирует, что через 2 недели она будет. Никаких извинений по этому поводу мне никто не приносил. Все (онлайн консультант, тетя на телефонной линии софтмаркета, персональный менеджер) считают, что все произошедшее в порядке вещей.
Посылаю лучи поноса этой “замечательной” организации и никому не советуют покупать в sotmarket’е.

UPD 18.04.2012 Позвали работать в сотмаркете php-программистом. Блин, что с это конторой не так? Я python-программист, не php.

Django 1.2 и 1.2.1. Проблемы с контекстом?

После переезда с 1.1.1 на 1.2, а затем и на 1.2.1, заметил одну особенность: в некоторых ситуация в шаблонах теперь нет привычного контекста user’а. У меня это проявляется в следующем случае. Есть базовый шаблон (base.html), от него наследуется шаблон, в который подставляется (include’ом) шаблон-кусок. Так вот в последнем (шаблоне-куске) не видится user. В 1.1.1 таких проблем 100% не было.

Не знаете в чем тут может быть дело? Я тут threadlocals’ом выкручиваюсь…




26 мая 2010 г.

Параллели с методами разработки через тестирование

Есть такой принцип разработки продукта – через тестирование. Программист создает продукт с минимальным набором функции, отдает его заказчику для эксплуатации и ждет от заказчика замечаний. В процессе эксплуатации, программист продолжает добавлять новые функции и не забывает реагировать на замечания, которые теперь могут касаться ещё и новых ошибок, возникших в следствии добавления новых функции.

Теперь вопрос: можно ли аналогичным способом поступить при проектировании программного продукта? Взять, да и написать руководство пользователя до окончательного написания программного кода, реализующего функции описанные в руководстве? Пользователь сможет сравнить то, что написано в руководстве с собственными представлениями о правильном, красивом и удобном ПО.

Бред, или эту идею можно использовать?




19 мая 2010 г.

Ширина Django-tinymce редактора в django-cms

Столкнулся с очередной неприятностью – в django-cms с подключенным tinymce редактор по умолчанию фиксированной ширины. Решение много проще, чем я в начале думал. Оказывается, django-tinymce использует переопределение дефолтного конфига через Ваш файл настроек проекта. Пример моего конфига:


TINYMCE_JS_URL = MEDIA_URL + 'js/tinymce/jscripts/tiny_mce/tiny_mce.js'

TINYMCE_JS_ROOT = MEDIA_ROOT + 'js/tinymce/jscripts/tinymce/jscripts/tiny_mce'

TINYMCE_DEFAULT_CONFIG = {

    'theme'"advanced",

    'width'"100%",

    'height'"500px",

}


16 мая 2010 г.

Как определить раздел в django-cms?

На одном из django-сайтов, активно использующих django-cms, понадобилось менять флэшку в зависимости от раздела. Не придумал ничего лучше смотреть кусок пути:


{% ifequal request.path_info|slice:":10" '/ekologiya' %}

...

{% endifequal %}


Дело в том, что в джанго-цмс у страниц может быть множество потомков, потому то и приходиться смотреть на кусок uri.

Может быть Вам известен более правильный путь? (более, т.к. этот тоже работает :) )

 

ЗЫ. Конкурс на угадывание сайта, для которого это понадобилось: приз – ссылка с 3 моих сайтов (кому только они нужны?) на сайт угадавшего.

15 мая 2010 г.

О-оу-и-я-и-е! Батарейка

У моего рабочего Dell XPS M1330 давненько уже сдохла батарея (был перепад напряжения). Нашел в России только одно более-менее вменяемое место для покупки:

http://www.sotmarket.ru/product/akb_dell_xps_m1330_pov_emk.html

4500 – цена, кончено, убийственная, но что делать?

Заказал, жду теперь…

Скрипт для раскрутки twitter аккаунта на python (tweepy)

Привет, друзья!

Недавно начал писать сайт для автораскрутки в twitter. В основе скрипт, который фоловит друзей друзей. Написано отвратно, но при соблюдении рекомендации результат дает:


import tweepy



for user in TwiAccount.objects.all():

    auth = tweepy.BasicAuthHandler(your_user_name, your_user_password)



    def follow_his_friends(username):

        user = tweepy.api.get_user(username)

        for friend in user.friends():

                try:

                    tweepy.API(auth).create_friendship(friend.id)

                except:

                    follow_his_friends(friend.screen_name)



    follow_his_friends('markeyev')


Tweepy, кстати, невероятно хорош - когда я искал python-библиотеку он был лучшим по соотношению понятность/возможности.

Функциональности у него тоже хватает – есть даже авторизация по openid. Собственно openid я и планирую использовать для сайта, т.к. не каждый доверить не знакомому сервису свой аккаунт.

Подобные скрипты очень востребованы на зарубежных сайтах фриланса и будут продаваться до тех пор пока твиттер присылает уведомления о новых фоловерах и не уведомляет об отписавшихся. Стратегия продвижения благодаря этой особенности проста как мычание: фоловить по 50-100 аккаунтов в день (чтоб не забанили за strange activity) и затем быстренько от них отписываться.

Опыты показали, что strange activity наступает при 700 новых фоловингах в день (то есть когда Вы фоловите кого-либо).

Стали бы Вы пользоваться таким сервисом, который я пишу, или может мне бросить эту дурацкую затею?

14 мая 2010 г.

www.russned.tv

Вот и подошел к  концу первый этап разработки www.russned.tv – это видеохостинг на django. Из названия ясно, что сайт сделан для наших друзей - Русской недели. При разработке использована куча всяких django-приложений:

  • django-cms (с кучищей плагинов)
  • django-profile (понадобиться для регистрации и, поздней, для добавления роликов пользователями)
  • django-ratings
  • django-ajaxcomments
  • + набор собственных приложений, которые теперь переносятся из проекта в проект.

У некоторых роликов есть полная avi-версия.

Django-сообществу возможно, будут интересны следующие куски кода этого проекта:

1. Список последних просмотренных роликов


videos = MyVideo.objects.annotate(last=Max('videoview__when')).order_by('-last')[:limit]


Между прочим, универсальный вариант GROUP BY средствами django ORM’а.

2. Ролики отсортированные по соотношению рейтинга к кол-ву голосов:


videos = MyVideo.objects.extra(select={

        'a_rating''rating_score/rating_votes'

    }).order_by('-a_rating')[:limit]


Это специфика использования djangoratings – кто использовал поймет ;)

3. Ролики с сортировкой по кол-ву комментариев (только откомментированные):


videos = MyVideo.objects.annotate(comments_count=Count('comments')).\

        exclude(comments_count=0).order_by('-comments_count')[:limit]


В основе файл models:


class MyVideo(models.Model):

    ...

    title = models.CharField(_(u'название'), max_length=250, unique=True)

    desc = models.TextField(_(u'описание'), max_length=250, null=True, blank=True)

    category = models.ForeignKey(Category, verbose_name=_(u'категория'), blank=True, null=True)

    tags = TagAutocompleteField()



    rating = RatingField(range=5, weight=1, can_change_vote=True, allow_anonymous=False)



    comments = generic.GenericRelation(Comment, content_type_field="content_type", object_id_field="object_pk")



class VideoView(models.Model):

    video = models.ForeignKey(MyVideo)

    when = models.DateTimeField(auto_now_add=True)

    user = models.ForeignKey(User, null=True, blank=True, editable=False)


Смотрите, качайте, советуйте друзьям! www.russned.tv.

Яша и мой блог

Яндекс уверен, что на страницах моего блога полно скрытого текста. Я.Вебмастер мне об этом давно говорит, но вот что странно: с момента наступления санкций со стороны Яши к моему блогу кол-во подписчиков в RSS увеличилось с 22 до 107 (107 появился сегодня), а кол-во постоянных читателей с 14 до 28. Может быть кто-то знает в чем тут разгадка?

13 мая 2010 г.

О пользе мозга

Пришёл забавный спам:

Здравствуйте!
Я составил коммерческое предложение на продвижение вашего сайта - gmail.com
Пожалуйста ознакомитесь:
Схема работы:
…бла…бла..бла..

Если у вас возникнут какие либо вопросы, обращаетесь:

С уважением, Владислав.

Владислав, спасибо кончено, но gmail’у Ваша раскрутка не нужна.