IT Блог

Документации и переводы

Статьи на технические темы

Ошибка PIL: decoder jpeg not available

При использовании PIL в Linux может возникнуть ошибка: decoder jpeg not available. Ниже описываются несколько способов, позволяющих решить данную проблему.

1) PIL требует наличие библиотеки libjpeg-dev

Попробуйте установить её (ключ -I в команде pip install выполняет переинсталяцию библиотеки):

$ sudo apt-get install libjpeg-dev​
$ pip install -I PIL

Но если у вас это не сработает, попытайтесь сделать симлинки библиотек в указанные ниже пути:

Для x64 разрядной системы:

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

Для x32 разрядной системы:

$ sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/
$ sudo ln -s...

Резервное копирование баз данных postgresql

Бекап базы данных

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

  1. Создание бекапа БД postgresql без пароля утилитой pg_dump.
  2. Написание скрипта, который создаёт бекап базы данных (с сжатием) картинкок.
  3. Добавление задания в cron.

Так как резервное копирование должно осуществляться периодически, например, каждый день, то необходимо сделать так, чтобы бекап происходил без пароля. На просторах интернета я наткнулся на примеры:

pg_dump -h localhost -p 5432 -U user_name -F c -b -v -f mydb.backup mydb
pg_dump...

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

Список команд, которыми я пользуюсь для управления posqresql 9.Х:

Создание нового пользователя:

su postgres
createuser -P -s postgreadmin
# и введите пароль

Создание владельца базы данных test_user

su postgres
psql
CREATE ROLE test_user WITH NOSUPERUSER LOGIN PASSWORD 'test_pass';

Изменения пароля пользователя postgresql:

# для root:
passwd postgres
# вводим два раза пароль (для подтверждения)
su postgres
psql  # вошли в клиент postgresql
alter user имя_пользователя with password 'пароль';

Расширение/ограничение прав пользователя:

alter user user_name superuser createrole createdb;  # расширяем
alter user user_name nosuperuser nocreaterole nocreatedb;  # ограничиваем

Запуск, перезапуск, остановка postgresql:

service postgresql start
service postgresql restart
service postgresql stop...

Удалённый доступ к PostgreSQL

​В первую очередь нужно разрешить подключаться к postgresql с внешних ip. Для этого находим файл postgresql.conf (у меня находится в папке /etc/postgresql/9.1/main) и правим следующую строчку:

# /etc/postgresql/9.1/main/postgresql.conf
listen_addresses = '*'

Обратите внимание, что нужно убрать перед директивой listen_addresses знак комментария #.

А в файле pg_hba.conf (лежит в там же, что и postgresql.conf) добавляем следующую строчку:

# /etc/postgresql/9.1/main/pg_hba.conf
hostssl  all  postgreadmin  0.0.0.0/0  md5

где:
hostssl - подключаемся через SSL
all - разрешаем подключение ко всем базам
postgreadmin - имя пользователя, которому разрешаем подключение
0.0.0.0/0 - маска сети с которой можно подключаться
md5 - способ шифрования пароля

Теперь нам нужно создать...


Добавляем сайт в поисковики google, yandex, mail, rambler, bing

Для того чтобы ускорить индексацию ваших сайтов, нужно их добавить в популярные поисковые системы. Для России на сегодняшний день популярны поисковики google, yandex, mail, rambler, bing. Далее приводится список ссылок, где вы можете добавить свой сайт на индексацию.

google
yandex
mail
rambler
bing


Рекурсивное удаление файла в python

Удаление файла

Стандартное удаление файла в python:

import os
os.remove(path)

path - путь до папки.

Удаление папки

Для удаления папки нужно подключить специальный пакет shutil:

import shutil
shutil.rmtree(path, True)

path - путь до папки.

Аргумент True в методе rmtree() позволяет команде игнорировать ошибки, которые могут встретиться при удалении каталога.

Рекурсивное удаление файлов и папок

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

import...

Проблема при отправке данных на сервер с помощью ajax

Обновление зависимостей проекта - всегда "весёлая" штука. Бывает после обновления отваливается какая-то функциональность. Обнаружить поломки нам помогают автоматизированные тесты, которые помогли и мне после того как я обновил Django до версии 1.5.

После обновления возникла проблема: view перестал видеть данные отправленные через аjax. Решением послужило удаление всего одного параметра при вызове метода ajax - contentType: "application/json". Поэтому, если у вас что-то похожее на мой код:

$.ajax({
    type: 'POST',
    contentType: "application/json",
    url: '{% url 'my_app.views.my_ajax_hander' %}',
    data: data_dict,
}).done(function(result) {
        some_function()
    });

то уберите строчку - contentType: "application/json", и у вас должно заработать.


range цикл в шаблоне Django

Бывают случаи, когда нужно в шаблоне пройтись циклом не по объектам, а по диапазону значений. Но шаблонный движок Django этого не позволяет. Также нет специального фильтра в стандартном наборе фильтров Django, но можно легко написать свой. Например так: в файле my_app/templatetags/my_filters.py пишем:

@register.filter
def create_range(value, start_index=0):
    return range(start_index, value+start_index)

И теперь в шаблоне уже можно использовать созданный фильтр:

{% load my_filters %}
{% for i in 10|create_range %}
...
{% endfor %}

Если нам нужно возвращать i, начиная с единицы, то используем в шаблоне так:

{% load my_filters %}
{% for i in 10|create_range:1 %}
...
{% endfor %}

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

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

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц