C++. Частичная специализация шаблонного класса

Может пригодится, когда нужно для какого-то типа по своему реализовать метод или методы шаблонного класса не специализируя и не переписывая весь класс.

Пример.

Имеется следующий шаблонный класс в файле value.h.

template<typename T>
class Value {
public:
    Value(const T &val): m_value(val) {}
    T value() const { return m_value; }
private:
    T m_value;
};

Реализуем метод value для типа int в файле value.cpp.

template<>
int Value<int>::value() const
{
    return m_value + 1;
}
Реклама

Добавление Sitemap с помощью DjangoCMS

Sitemap — XML-файлы с информацией для поисковых систем (таких как Google, Яндекс, Bing, Поиск@Mail.Ru) о страницах веб-сайта, которые подлежат индексации.

DjangoCMS может самостоятельно сгенерировать Sitemap с опубликованными на сайте страницами.

Настроить выдачу Sitemap очень просто, следуя следующей инструкции.

  1. В файле настроек settings.py добавляем django.contrib.sitemaps в INSTALLED_APPS.
  2. Добавляем следующую строчку в начало файла urls.py.
    from cms.sitemaps import CMSSitemap
  3. В том же файле (urls.py) добавляем в список urlpatterns следующий код.
    url(
        r'^sitemap\.xml$',
        'django.contrib.sitemaps.views.sitemap',
        {'sitemaps': {'cmspages': CMSSitemap}}
    ),
    
  4. Запускаем локальный сайт. Вводим в адресную строку браузера http://127.0.0.1:8000/sitemap.xml (или кликаем по ссылке) и убеждаемся в наличие Sitemap.

Ссылки

How to create sitemaps (официальная документация на английском)

Резервное копирование и восстановление данных на OpenShift

Сделать резервную копию или восстановить данные из резервной копии можно с помощью инструмента rhc.

Команда для резервирования


rhc snapshot-save -a имя_приложения

Эта команда останавливает приложение и архивирует его на локальный компьютер. Архив включает Git-репозиторий, дампы базы данных и прочую информацию.

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


rhc snapshot-restore -f архив -a имя_приложения

Останавливает приложение и восстанавливает его из локального архива, который был создан командой резервирования.

Автоматизация резервирования

Делается с помощью скрипта и планировщика заданий.

Bash-скрипт.

#!/bin/bash

appname="имя приложения"
backup_dir="путь к папку с резервными копиями"
filename="${appname}_`date --utc +'%Y-%m-%d_%H-%M-%S_UTC'`.tar.gz"

cd "$backup_dir"
rhc snapshot-save -f "$filename" -a "$appname"

Скрипт резервирует приложение appname, добавляет метку времени к имени файла архива и размещает его в папке backup_dir.

Ссылки

Красивая разница в Git для файла проекта Qt

Обычно, при добавлении файлов в проект Qt, разница файла проекта (*.pro) в Git выглядит следующим образом.

bad-diff-in-git-qt-pro

Добавили всего 2 файла foo3.h и foo3.cpp, а получили 6 изменений.

Разницу можно сделать намного симпатичней, если в конце каждого файла добавлять слеш, а в конце каждого списка комментарий # END.

good-diff-in-git-qt-pro

Получается при добавлении двух файлов всего 2 изменения.

Такой способ требует полуручного редактирования файла проекта.