рубрика: Софт

Релиз ubuntu 12.04 LTS УРА!!!

Гиб гиб ура товарищам из каноникал. Всех поздравляю с релизом. Первое и единственное мое пока что впечатление на % баллов. Все работает и все девайсы опознавались без проблем.

TinyMCE для Django

Прикручиваем tinymce к django. Я случайно наткнулся на такое исполнение прикручивания tinymce к django.

1. Создаем в папке проекта папку wysiwyg, а в ней файл __init__.py (код которого приведен ниже)

#!/usr/bin/python
# -*- encoding: utf-8 -*-

from django.db.models import Field
from django.forms import Textarea
from settings import MEDIA_URL

class WidgetWYSIWYG(Textarea):
    def __init__(self, *args, **kwargs):
        super(WidgetWYSIWYG, self).__init__(attrs={'class': 'wysiwygEditor vLargeTextField'}, *args, **kwargs)
    class Media:
        js = (
            MEDIA_URL+'common/tiny_mce/tiny_mce.js',
            MEDIA_URL+'common/filebrowser/js/TinyMCEAdmin.js',
            )

class WYSIWYGField(Field):
    def get_internal_type(self):
        return "TextField"

    def formfield(self, **kwargs):
        defaults = {'widget': WidgetWYSIWYG}
        defaults.update(kwargs)
        return super(WYSIWYGField, self).formfield(**defaults)

2. Теперь мы можем создать свою модель и вместо поля models.TextField использовать WYSIWYGField. Смотрим код models.py ниже.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from django.db import models
import datetime
from wysiwyg import WYSIWYGField

# Create your models here.
class News(models.Model):
    """
    Новости
    """
    publish = models.BooleanField(verbose_name=u"Опубликовать", default=True)
    created = models.DateField(verbose_name=u"Дата", default=datetime.date.today)
    title = models.CharField(verbose_name=u"Заголовок", max_length=250)
    preview = models.TextField(verbose_name=u"Краткое описание")
    text = WYSIWYGField(verbose_name=u"Текст")

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ('-created',)
        verbose_name = u"Новость"
        verbose_name_plural = u"Новости"

Python морфология строки от числа

 

class Morphology:
    def getNLastDigit(self, n, number):
        return divmod(number, 10**n)[1]

    def formParticipant(number):
        morf = Morphology()
        lastDigit = morf.getNLastDigit(1, number)
        twoLastDigit = morf.getNLastDigit(2, number)
        if ((5 < twoLastDigit < 15) | (lastDigit in [5, 6, 7, 8, 9, 0])):
            return str("товаров")
        elif (lastDigit == 1):
            return str("товар")
        elif(lastDigit in [2, 3, 4]):
            return str("товара")
    formParticipant = staticmethod(formParticipant)

Eclipse хорошие плагины

Хорошие плагины:

AnyEdit Tools

Update site: http://andrei.gmxhome.de/eclipse/

Куча полезных и жизненно необходимых примочек для Eclipse.

 

Regex Util

Update site: http://regex-util.sourceforge.net/update/

Дополнительный вид (view) для тестирования регулярных выражений.

 

WebTools Project

Update site: http://download.eclipse.org/webtools/updates/

Платформа для веб-инструментов. Содержит в себе довольно неплохой XML редактор с поддержкой XML Schema, а также HTML/CSS/JavaScript редакторы, которые меня лично по многим причинам не устраивают.

XML-редактор WebTools Project делает подсказки (code assist) на основе XML Schema или DTD. То есть, например, для того, чтобы заработал code assist по XSL достаточно в любом xml-файле в рутовом элементе указать xmlns:xsl="http://www.w3.org/1999/XSL/Transform", после этого будет работать code assist и валидация для элементов из пространства имен xsl. Можно даже создать свою схему и использовать ее. Однако есть очень неприятный баг/фича, который разработчики пока не собираются править: если одновременно указан DTD и Schema у xml-файла, то редактор пытается взять code assist именно из DTD, полностью игнорируя Schema. То есть при редактировании xsl-файлов, в которых есть DOCTYPE, у вас не будут работать подсказки; чтобы они заработали, нужно временно закомментировать DOCTYPE. Или воспользоваться XML-редактором из Spket IDE, правда, редактировать там не так удобно, как в WebTools.

 

DBViewer Plugin

Update site: http://www.ne.jp/asahi/zigen/home/plugin/dbviewer/

SQL клиент для большинства современных баз данных (в том числе для MySQL). Умеет показывать/редактировать структуру таблиц, показывать записи таблицы постранично, а также довольно удобный редакторSQL-запросов, в котором есть code assist по SQL-структурам и по данным вашей базы (то есть он будет подсказывать названия таблиц и полей из БД).

Azzurri Clay

Update site: http://www.azzurri.co.jp/eclipse/plugins

Проектирование БД. Позволяет создать блок-схемы со структурой и связями таблиц, а затем сгенерироватьSQL-запросы для конкретной СУБД. Core версия бесплатная, за Pro нужно платить.

 

Aptana Studio

Update site: http://update.aptana.com/update/studio/3.2/

Web IDE. Думаю, описывать ничего не надо, на сайте есть куча документации и скринкастов. От этого плагина я использую только HTML и CSS редактор.

 

Spket IDE

Update site: http://spket.com/update/

IDE для работы с JavaScript и XML. Его я использую за первоклассный JavaScript редактор, который понимает современные паттерны, а также продвинутый code assist. Если бы добавился рефакторинг — цены б ему не было :-) Из недостатков могу отметить отсутствие некоторых core-функций и методов JS (типа setTimeout, Element.innerHTML и т. д.) а также отсутствие документации (только code assist) для core объектов и методов.

 

Eclipse Colorer

Подсветка синтаксиса для 150+ языков программирования, в том числе для Parser. Ставить надо версию 0.8.0, которой нет в update site.

 

Remote System Explorer (RSE)

Update site: http://download.eclipse.org/releases/ganymede/

Плагин для работы с удаленными системами через FTP/SSH/Telnet. Позволяет редактировать файлы прямо на FTP/SSH сервере, локально сохраняя историю изменения файла, а также сам файл (чтобы его, в случае чего, можно было восстановить). Содержится в стандартном репозитории Ganymede (см. Remote Access and Device Development > Remote System ExplorerEnd-User Runtime). Советую использовать его вместо Aptana FTP плагина, у которого есть проблемы с редактированим файловне-Aptana редакторами.

 

Шпаргалка для Django 1.3

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

 

Команды Linux — Монтирование файловых систем

mount /dev/hda2 /mnt/hda2 — монтирует раздел ‘hda2′ в точку монтирования ‘/mnt/hda2′. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2′
umount /dev/hda2 — размонтирует раздел ‘hda2′. Перед выполнением, покиньте ‘/mnt/hda2′
fuser -km /mnt/hda2 — принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем
umount -n /mnt/hda2 — выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске
mount /dev/fd0 /mnt/floppy — монтировать флоппи-диск
mount /dev/cdrom /mnt/cdrom — монтировать CD или DVD
mount /dev/hdc /mnt/cdrecorder — монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)
mount -o loop file.iso /mnt/cdrom — смонтировать ISO-образ
mount -t vfat /dev/hda5 /mnt/hda5 — монтировать файловую систему Windows FAT32
mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share — монтировать сетевую файловую систему Windows (SMB/CIFS)
mount -o bind /home/user/prg /var/ftp/user — «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user

Команды Linux — Поиск файлов

find / -name file1 — найти файлы и директории с именем file1. Поиск начать с корня (/)
find / -user user1 — найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)
find /home/user1 -name "*.bin" — найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1′*
find /usr/bin -type f -atime +100 — найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней
find /usr/bin -type f -mtime -10 — найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней
find / -name *.rpm -exec chmod 755 '{}' \; — найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним
find / -xdev -name "*.rpm" — найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.
locate "*.ps" — найти все файлы, сожержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’
whereis halt — показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’
which halt — отображает полный путь к файлу ‘halt’

Команды Linux — Файлы и директории

cd /home — перейти в директорию ‘/home’
cd .. — перейти в директорию уровнем выше
cd ../.. — перейти в директорию двумя уровнями выше
cd — перейти в домашнюю директорию
cd ~user — перейти в домашнюю директорию пользователя user
cd - — перейти в директорию, в которой находились до перехода в текущую директорию
pwd — показать текущюю директорию
ls — отобразить содержимое текущей директории
ls -F — отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип
ls -l — показать детализированое представление файлов и директорий в текущей директории
ls -a — показать скрытые файлы и директории в текущей директории
ls *[0-9]* — показать файлы и директории содержащие в имени цифры
tree или lstree — показать дерево файлов и директорий, начиная от корня (/)
mkdir dir1 — создать директорию с именем ‘dir1′
mkdir dir1 dir2 — создать две директории одновременно
mkdir -p /tmp/dir1/dir2 — создать дерево директорий
rm -f file1 — удалить файл с именем ‘file1′
rmdir dir1 — удалить директорию с именем ‘dir1′
rm -rf dir1 — удалить директорию с именем ‘dir1′ и рекурсивно всё её содержимое
rm -rf dir1 dir2 — удалить две директории и рекурсивно их содержимое
mv dir1 new_dir — переименовать или переместить файл или директорию
cp file1 file2 — сопировать файл file1 в файл file2
cp dir/* . — копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1 . — копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2 — копировать директорию dir1 в директорию dir2
ln -s file1 lnk1* — создать символическую ссылку на файл или директорию
ln file1 lnk1 — создать «жёсткую» (физическую) ссылку на файл или директорию
touch -t 0712250000 fileditest — модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

Команды Linux — Остановка системы

shutdown -h now или init 0 или telinit 0 — остановить систему
shutdown -h hours:minutes & — запланировать остановку системы на указанное время
shutdown -c — отменить запланированную по расписанию остановку системы
shutdown -r now или reboot — перегрузить систему
logout — выйти из системы