Автор: admin

  • Intel (The system BIOS has detected unsuccessful POST attempt(s))

    The system BIOS has detected unsuccessful POST attempt(s).
    
    Possible causes included recent changes to BIOS Performance options or
    
    recent hardware changes.
    
    Press 'Y' to enter BIOS Setup or press 'N' to cancel and attempt to boot
    
    with previous settings.Code language: Bash (bash)

    Вот такую картину мне выдавала интеловская мать dx48bt2
    и вот стала эта мать в сервер, и надо было решать эту проблему, оказалось всё банально просто, обновляем биос и будет всё хорошо

  • Дружим DropBox и KDE (Public link context menu)

    Как-то занесло меня установить себе последнюю kubuntu и как-то двоякие чувства, что-то удобно что-то хорошо, но до сих пор могу с лёгкостью вызвать segmentation fault.
    Но это всё отхождения от темы.

    Люблю я в папочку Public моего дропбокса кидать файлик и скидывать прямую ссылку друзьям.

    в gnome всё нормально, а вот в КДЕ нифига нету…

    но не беда
    идём в /usr/share/kde4/services/ServiceMenus
    создаём там файл под именем
    dropboxpublic.desktop

    и в него запульнём вот такое содержимое

    [Desktop Action Dropbox Public URL]                                                                                               
    Exec=dropbox puburl %u | xclip -selection clipboard                                                                               
    Name=Get Public URL
    
    [Desktop Entry]
    Actions=Dropbox Public URL;
    MimeType=application/octet-stream;
    ServiceTypes=KonqPopupMenu/Plugin;
    Type=Service
    X-KDE-ServiceTypes=KonqPopupMenu/Plugin,Code language: Bash (bash)

    и не забываем что нам нужна ещё программка
    xclip
    если её нет то устанавливаем

    apt-get install xclipCode language: Bash (bash)

    Вот и всё теперь в папке Паблик кликаем по файлу правой кнопкой Действия — Get Public URL
    и ссылка на файл у нас в буфере обмена

    profit!!!!111

  • Кэширование в Django ( Johnny Cache )

    Тема очень разнообразна и широка, но постепенно я попробую рассказать о тех, которые пробовал.

    Сегодня случилось чудо и я попробовал Johnny Cache

    Суть его такова, что берём тупо все SELECT и складываем их в memcached. Кэш автоматически обнуляется при UPDATE или INSERT

    Устанавливаем

    pip install johnny-cacheCode language: Bash (bash)

    или

    easy_install johnny-cacheCode language: Bash (bash)

    Кому как удобнее.

    Дальше всё предельно просто, просто невероятно :))

    На сайте в документации приведён вот такой вариант настройки
    1 Добавим две строки в MIDDLEWARE_CLASSES

    # add johnny's middleware
    MIDDLEWARE_CLASSES = (
        'johnny.middleware.LocalStoreClearMiddleware',
        'johnny.middleware.QueryCacheMiddleware',
        # ...
    )Code language: Python (python)

    Также опишем бэкЭнд

    # some johnny settings
    CACHES = {
        'default' : dict(
            BACKEND = 'johnny.backends.memcached.MemcachedCache',
            LOCATION = ['127.0.0.1:11211'],
            JOHNNY_CACHE = True,
        )
    }
    JOHNNY_MIDDLEWARE_KEY_PREFIX='jc_myproj'Code language: Python (python)

    JOHNNY_MIDDLEWARE_KEY_PREFIX — надеюсь и так понятно для чего, если вдруг у нас несколько проектов используют mamcached и чтоб объекты не путались, используем префикс для текущего проекта.

    Вот собственно и всё, на типовых сайтах с 7-10 запросов на страницу остался одни.
    На нагруженных проектах, где на страницу было 20-30 запросов стало также 1-2.

    Общее снижение числа запросов в рамках одного сервера тоже значительное в среднем раньше было 100 запросов в секунду, сейчас стало 30-40

  • прикручиваем filebrowser к tinyMCE без grappelli (django filebrowser no grappelli)

    Продолжаю прошлую статью про tinyMCE
    почему-то меня не радовала перспектива grappelli, когда можно без неё, поэтому я воспользовался вот этим проектом

    https://github.com/wardi/django-filebrowser-no-grappelli

    скачиваем распаковываем, устанавливаем

    python setup.py installCode language: Bash (bash)

    установился он у меня вот сюда

    /usr/lib/python2.5/site-packages/django_filebrowser-3.0-py2.5.eggCode language: Bash (bash)

    Дописываем
    filebrowser в INSTALLED APPS
    в urls.py перед «admin» добавим

    (r'^admin/filebrowser/', include('filebrowser.urls')),Code language: Python (python)

    а вот с настройками у меня как-то не сложилось, как не пытался он всё ломится в /media/ а у меня MEDIA_ROOT = /static/
    поэтому я поправил файл settings.py в каталоге

    /usr/lib/python2.5/site-packages/django_filebrowser-3.0-py2.5.eggCode language: Bash (bash)

    и вместо media/ написал static
    вот в этой строке

    URL_FILEBROWSER_MEDIA = getattr(settings, "FILEBROWSER_URL_FILEBROWSER_MEDIA", "/static/filebrowser/")Code language: Python (python)

    ещё не знаю нужно или нет, в каком мануале найдено не смог найти
    в каталоге templates я создал каталог admin
    в него скопировал файл index.html из
    /usr/lib/python2.5/site-packages/django/contrib/admin/templates/admin

    и там перед строкой

        {% for app in app_list %}Code language: Python (python)

    добавил

    {% include 'filebrowser/append.html' %}Code language: Python (python)

    Вот и всё появилась мелкая иконочка при выборе картинки в tinyMCE

  • Визуальный редаткор для Django

    И так господа, в процессе написания блога на Django (да да изобретаем велосипед)

    возникла резонная задача = визуальный редактор

    вариантов подключения много, мне понравился больше вот этот.

    ставим tinyMCE

    easy_install django-tinymceCode language: Bash (bash)

    установилось оно у меня вот сюда
    /usr/lib/python2.5/site-packages/django_tinymce-1.5.1a2-py2.5.egg

    далее в каталоге tinymce есть каталог static, копируем содержимое в свою media_dir у меня это тоже static.

    теперь в нужной нам модели можно заменить поля textarea на что-то такое

    from django.db import models
    from tinymce import models as tinymce_model
    
    class MyModel(models.Model):
    myField=tinymce_model.HTMLField()Code language: Python (python)

    теперь в settings.py

    INSTALLED_APPS= (
    …
    ‘tinymce’,
    …
    )Code language: Python (python)

    чуть ниже настройки

    я использовал вот такие

    #TinyMCE widget configuration
    TINYMCE_JS_URL = MEDIA_URL + "tiny_mce/tiny_mce.js"
    TINYMCE_JS_ROOT = MEDIA_URL + "/tiny_mce"
    TINYMCE_SPELLCHECKER=False
    TINYMCE_PLUGINS = [
        'safari',
        'table',
        'advlink',
        'advimage',
        'iespell',
        'inlinepopups',
        'media',
        'searchreplace',
        'contextmenu',
        'paste',
        'wordcount'
    ]
    
    TINYMCE_DEFAULT_CONFIG={
        'theme' : "advanced",
        'plugins' : ",".join(TINYMCE_PLUGINS), # django-cms
        'language' : 'ru',
        "theme_advanced_buttons1" : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect,|,spellchecker",
        "theme_advanced_buttons2" : "cut,copy,paste,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,image,cleanup,code,|,forecolor,backcolor,|,insertfile,insertimage",
        "theme_advanced_buttons3" : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr",
        'theme_advanced_toolbar_location' : "top",
        'theme_advanced_toolbar_align' : "left",
        'theme_advanced_statusbar_location' : "bottom",
        'theme_advanced_resizing' : True,
        'table_default_cellpadding': 2,
        'table_default_cellspacing': 2,
        'cleanup_on_startup' : False,
        'cleanup' : False,
        'paste_auto_cleanup_on_paste' : False,
        'paste_block_drop' : False,
        'paste_remove_spans' : False,
        'paste_strip_class_attributes' : False,
        'paste_retain_style_properties' : "",
        'forced_root_block' : False,
        'force_br_newlines' : False,
        'force_p_newlines' : False,
        'remove_linebreaks' : False,
        'convert_newlines_to_brs' : False,
        'inline_styles' : False,
        'relative_urls' : False,
        'formats' : {
            'alignleft' : {'selector' : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', 'classes' : 'align-left'},
            'aligncenter' : {'selector' : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', 'classes' : 'align-center'},
            'alignright' : {'selector' : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', 'classes' : 'align-right'},
            'alignfull' : {'selector' : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', 'classes' : 'align-justify'},
            'strikethrough' : {'inline' : 'del'},
            'italic' : {'inline' : 'em'},
            'bold' : {'inline' : 'strong'},
            'underline' : {'inline' : 'u'}
        },
        'pagebreak_separator' : "",
        # Drop lists for link/image/media/template dialogs
        'template_external_list_url': 'lists/template_list.js',
        'external_link_list_url': 'lists/link_list.js',
        'external_image_list_url': 'lists/image_list.js',
        'media_external_list_url': 'lists/media_list.js',
        #
        #'file_browser_callback':'tinyDjangoBrowser'
    }Code language: Python (python)

    также в urls.py добавим

    (r’^tinymce/’,include(’tinymce.urls’)),Code language: Python (python)

    теперь по хорошему всё, в админке нужное поле будет отображено как ТиниМЦЕ редактор.

    если не будет я удалил таблицу в котором эти поля и сделал сункДБ.
    потом появилось.

    Ещё будет пост о том как к нему прикрутить возможность заливки файлов и картинок.