воскресенье, 6 ноября 2011 г.

Добавление robots.txt и favicon.ico в Django 1.3

Добавляем следующее в urls.py и радуемся. Файл robots.txt кладём в шаблоны
примерное его содержание
#
# robots.txt http://www.???.ru/
#

User-agent: *
Disallow: /admin

User-agent: Yandex
Disallow: /admin
Host: www.???.ru
Crawl-delay: 10

Sitemap: http://www.???.ru/sitemap.xml
##################

А иконку кладём в папку со статическими файлами сайта.


urls.py:

from django.conf.urls.defaults import patterns, include, url
from django.views.generic.base import TemplateView, RedirectView

class TextPlainView(TemplateView):
def render_to_response(self, context, **kwargs):
return super(TextPlainView, self).render_to_response(
context, content_type='text/plain', **kwargs)

urlpatterns = patterns('',
url(r'^robots\.txt$', TextPlainView.as_view(template_name='robots.txt')),
url(r'^favicon\.ico$', RedirectView.as_view(url='/media/img/favicon.ico')),
)


Зачем нужен robots.txt?
Для того чтобы поисковому боту сказать, куда заглядывать не нужно, наверняка ещё для чего-то, гуглить лень, можете добавить комменты зачем, перенесу в пост.


Зачем нужен favicon.ico?
Это иконка которая будет показываться в левом углу вкладки в браузере, и будет отображаться при добавлении в избранное, она в общем так и расшифровывается favicon (favorite  icon) типа любимая иконка.


PS: Не забываем, что это не полный urls.py, а только те строчки, которые добавляют robots.txt и favicon.ico.

Я в первый раз попробовал это на woman-clinics.ru, сайт "Женской консультации 2х2"  про акушерство, гинекологию и др.




четверг, 3 ноября 2011 г.

django-cms filer plugin

Если вы решили использовать это django-cms filer plugin, то не забудьте сначала поставить filer, потом easy_thumbnails

А если вы используете yandex maps plugin, то почему-то пришлось делать правильный шаблон, и в контекст передавать нормально свой ключ, а то не работает. Потом нужно подробно, это просто чтобы не забыть.

вторник, 1 ноября 2011 г.

Меняем время на убунте на правильное

#!/bin/sh

# Disallow winter time for Moscow

echo "Disable winter time for MoscoW"

sleep 3

mkdir ./temp1

cd ./temp1

#wget ftp://elsie.nci.nih.gov/pub/tzdata2011k.tar.gz  уже не работает
wget http://people.freebsd.org/~edwin/tzdata2011k.tar.gz

tar xzf tzdata2011k.tar.gz

cp /etc/localtime /tmp/localtime.old

zic europe

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

cd ..
rm -rf ./temp1

вторник, 9 августа 2011 г.

Интерпретатор для Питонофилов

Раньше я использовал iPython, но хозяйки посоветовали мне DreamPie
Установил под WindowsXP при первом запуске пришлось фиксить
выдало, что не может:

File "C:\Program Files\DreamPie\share\dreampie\subp_main.py", line 30, in <module>
sys.setdefaultencoding('utf-8')
AttributeError: 'module' object has no attribute 'setdefaultencoding' 


"c:\Program Files\DreamPie\share\dreampie\subp_main.py"

import platform
if not "3.2" in platform.python_version():
    sys.setdefaultencoding('utf-8')


Альтернативные решения данной баги
https://bugs.launchpad.net/dreampie/+bug/716377

среда, 3 августа 2011 г.

ipython for python3.2 WindowsXP

Вот, задался целью всё-таки забороть ipython для Python 3.2, и получилось :)

Делал примерно так
1.1. Поставил Python3.2: python-3.2.1.msi
1.2. Пропишите пути к новому питону

2. distribute_setup.py : http://python-distribute.org/distribute_setup.py
это для того чтобы заработал easy_install

3. Дальше
>easy_install http://archive.ipython.org/release/0.11/py3/ipython-0.11-py3.2.egg
ставится ipython к папке c:/python32/Scripts тоже хорошо бы переменную path виндовса поправить

4. Запускаем ipython3.exe в папке Scripts и ловим эксепшн, у меня во всяком случае было так:

c:\Python32\Scripts>ipython3.exe
Error in sys.excepthook:
TypeError: _isdir() takes exactly 1 argument (0 given)

Original exception was:
Traceback (most recent call last):
File "c:\Python32\Scripts\ipython3-script.py", line 9, in
load_entry_point('ipython==0.11', 'console_scripts', 'ipython3')()
File "c:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\frontend\te
rminal\ipapp.py", line 369, in launch_new_instance
app.initialize()
File "c:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\frontend\te
rminal\ipapp.py", line 283, in initialize
self.init_shell()
File "c:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\frontend\te
rminal\ipapp.py", line 303, in init_shell
ipython_dir=self.ipython_dir)
File "c:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\config\conf
igurable.py", line 295, in instance
inst = cls(*args, **kwargs)
File "c:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\frontend\te
rminal\interactiveshell.py", line 112, in __init__
user_global_ns=user_global_ns, custom_exceptions=custom_exceptions
File "c:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\core\intera
ctiveshell.py", line 384, in __init__
self.db = PickleShareDB(os.path.join(self.profile_dir.location, 'db'))
File "c:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\utils\pickl
eshare.py", line 52, in __init__
if not self.root.isdir():
TypeError: _isdir() takes exactly 1 argument (0 given)

c:\Python32\Scripts>


Решил я это так
В файле    "c:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\utils\pickleshare.py"
В 52 строке закомментировал
#if not self.root.isdir():
И 53-ей строкой написал следующее
if not os.path.isdir(self.root):





Заработало, что не может не радовать
Единственное pyreadline ещё похоже нужно замучить



вторник, 31 мая 2011 г.

Как правильно делать треды в PyQT4

http://www.linux.org.ru/forum/development/1529306
#!/usr/bin/env python

# Вот примерно так оно делается.

import sys
from PyQt4.QtCore import QEvent, QThread
from PyQt4.QtGui import QApplication, QTextEdit

class MyEvent(QEvent):
def __init__(self, data):
QEvent.__init__(self, QEvent.User)
self.data = data

class Timer(QThread):
def __init__(self, event_receiver):
QThread.__init__(self)
self.event_receiver = event_receiver
self.time = 0
def run(self):
while True:
self.time += 1
QApplication.postEvent(self.event_receiver, MyEvent(self.time))
self.sleep(1)

class Display(QTextEdit):
def customEvent(self, event):
if isinstance (event, MyEvent):
self.append('time = %i' % event.data)

a = QApplication(sys.argv)
display = Display()
display.show()

timer = Timer(display)
timer.start()

sys.exit(a.exec_())

суббота, 14 мая 2011 г.

Нарезка mp3 файлов Linux Ubuntu





Я пользовался в windows mp3cut, а перейдя на ubuntu пришлось искать альтернативу.

При использовании mp3cut написал для себя скриптик, который открывает файл, и нарезает его.

 В ubuntu всё проще mp3splt

mp3splt -t 5.0 -o @n_@f -d ump_270 ump_podcast270.mp3


Комментарий:
-t продолжительность кусочка
-o название выходного файла, в данном случае @счётчик_@название файла
-d название выходной директории

и файл входной.