Архив рубрики: Блог

10 способов стать популярным блогером

Меня часто спрашивают: как стать популярным блогером, как раскрутить свой блог или паблик в ВК? Как набрать читателей в «Инстаграме»? Раньше я никогда не рассказывал, зачем мне плодить конкурентов. Но сегодня я поделюсь секретом с вами.

Я знаю 100%-й способ добиться успеха. Любой сможет стать популярным блогером. Вам не обязательно что-то уметь. Популярный блог или паблик в ВК быстро, эффективно, без регистрации и СМС.

На самом деле этот пост написан ради 10-го пункта. Все остальное – вода для привлечения внимания. Читать

О выборе фотоаппарата для легкохода

У меня проблема: я считаю себя крутым фотографом. Это тяжёлый удар по моим легкоходным амбициям. Есть у меня Canon 6D, абсолютно потрясающая камера, я её люблю и всё такое. Но минимальный вес (с самым лёгким из имеющихся объективов) получается почти 1,4 кило. Стыдно сказать, у некоторых легкоходов большая тройка (рюкзак, палатка/укрытие, спальная система — спальник, коврик, подстилка на землю) весит меньше.

Не столько даже вес достаёт меня в походе, сколько неудобство. Постоянно на шее — неудобно. Останавливаться, снимать рюкзак и доставать оттуда — неудобно. Поэтому я решил хотеть компактную мыльницу весом, скажем, до 300 грамм. Автоматически решается проблема удобства использования: любая мыльница весом до 300 грамм влезет в карман на поясном ремне рюкзака MLD Burn.
Многие оперируют термином «беззеркалка», говоря о пишущих RAW мыльницах со сменными объективами. Однако любая мыльница является беззеркалкой. Даже ноут мой, чего уж греха таить, — беззеркалка, а сам я и подавно. Не нравится мне этот термин. Не вижу ничего обидного в слове «мыльница».
На Яндекс.Маркете я в параметрах искомой камеры указал, что хочу:

RAW (не забываем, что я считаю себя крутым фотографом)
Вес < 200 грамм (Яндекс.маркет подсказывает, сколько моделей подходит. Увидев, что легче 300 слишком много камер, сдвинул бегунок ещё левее и получил около 5 штук легче 200 грамм)
Более 600 фото с одной зарядки
Сменные объективы (даже не столько сама возможность смены объективов меня прельщает, сколько то, что при каждом включении камеры объектив не будет совсем уж шибко ездить туда-сюда, жужжа и посвистывая, расходуя заряд понапрасну).

Неважно для меня количество мегапикселей (на Canon 6D с 20-Мп матрицей почти всегда использую 5-Мп RAW).
И открыл я для себя интересную камеру, почти то, что искал:
Samsung NX Mini: кроп-фактор 2.7; вес тушки 196 г с батареей B740AE 2330 мА·ч, как в Samsung Galaxy S4 ZOOM, то есть легко купить запасной, да и 2330 мА·ч — раза в два больше, чем у схожих по размеру мыльниц; обещают 650 фото на одной зарядке; размер 110,4 × 62 × 22,5 мм.
Объектив Samsung 9 mm f/3.5 (ЭФР 24 мм) весит всего 31 грамм и имеет толщину 12,5 мм, то есть самая толстая часть камеры составит лишь 35 мм.
Общий вес: 196 + 31 = 226 грамм.
С объективом 9–27 мм (аналог стандартного 24–70 мм для полнокадровых матриц) f/3.5–5.6 вес составит 196 + 73 = 269 грамм.
И за этот приемлемый вес у вас есть RAW, возможность сменить объектив, 650 фото с одной зарядки (и возможность легко найти в продаже аккумулятор дополнительный). За 9 дней на Полярном Урале я сделал меньше 600 фотографий. Есть надежда, что и тут мне хватит заряда на недельный поход.
Купить можно от 11000 руб. с 9-миллиметровым объективом; с упомянутым трансфокатором от 14000 руб. По-моему, очень интересно для легкохода, считающего себя крутым фотографом. Фото для примера:
9 мм — действительно ширик! То, что я обычно и беру в походы. (Фото из этого обзора).

Хорошие результаты по темноте! Кремль в сумерки, объектив 9–27 мм f/3.5–5.6 @ 16 mm, f/5.6; ISO 6400; выдержка 1/60 сек, со штатива (ясно, что с такой выдержкой можно обойтись и без штатива. А на 9 мм можно и выдержку увеличить, и диафрагму раскрыть до 3.5. Фото из обзора):

ГРИП на длинном конце, @ 27 мм, f/5.6. Из того же обзора.

В комплекте идёт диск с полной версией LR 5. Даже не скажешь: «Мелочь, а приятно», потому что это и не мелочь!
Я бы с удовольствием отказался от всяких микрофонов, откидывающегося дисплея, видео, wi-fi, NFC, вспышки и пр. ради снижения веса.
Правда, откидывающийся дисплей, возможно, удастся использовать вместо штатива: ставишь на камень, регулируешь дисплей (если он фиксируется в промежуточных положениях), облокачиваешь на экранчик камеру и давай снимать Млечный Путь сериями из RAW, темновые кадры отснял, оффсеты, пришёл домой и ну давай всё в IRIS складывать! (После покупки осуществил сие безумие. Вот результаты, которые могут быть значительно лучше при более хорошем небе и более качественной обработке: МП1 и МП2). Есть, кстати, у самсунга светосильный объектив 17 mm f/1.8 весом всего в 55 грамм.
Картинка с сайта lesnumeriques.com:

В общем, так меня поразила эта камера, что я решил написать о ней, никогда и в глаза не видав её. Теоретик-легкоход-фотограф торжествует!
Обновление–дополнение.
Купил эту камеру, очень доволен. Если есть вопросы, задавайте в комментариях и посмотрите два фотоальбома, снятых полностью на Samsung NX mini + 9мм объектив: поход 26 октября 2014 года и поход 11-12 октября.

Транслитерация имён файлов с Python

У меня есть похожая запись о транслитерации содержимого файла. Здесь же будут транслитерированы только имена файлов.

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

Итак, перед нами стоит задача группового переименования файлов. Например, нужно поменять имена всех файлов в директории. Хотим избавиться от пробелов — заменить их на нижние подчёркивания. Все кириллические буквы хотим поменять на латинские (на «транслит»).

Вот скрипт, написанный на питоне, который совершает такое массовое переименование файлов. Надо создать файл renamer.py с приведённым ниже содержанием, положить его в папку с переименовываемыми файлами и выполнить:

user $python3 renamer.py -p

И в выводе программы будет показано, как будут переименованы файлы, но изменений не произойдёт. Если Вы окажетесь довольны результатами, сделайте на всякий случай резервную копию директории и выполните python3 renamer.py. За ключик -p спасибо комментарию от hombit’a.

Файл Русский Текст.TXT переименуется в russkiy_tekst.txt. Поведение скрипта благодаря его простоте очень легко подстроить под свои нужды, даже совсем не разбираясь в питоне. В строках с 13 по 82 в левом столбце в кавычках стоит то, что подлежит замене; в правом столбце — то, на что нужно заменять. Добавляйте свои замены и корректируйте существующие по своему усмотрению.

renamer.py

Скачать

#! /usr/bin/env python#coding=utf8import osfrom sys import argvdef latinizator(letter, dic): for i, j in dic.items(): letter = letter.replace(i, j) return letterlegend = {‘ ‘:’_’,’,’:»,’а’:’a’,’б’:’b’,’в’:’v’,’г’:’g’,’д’:’d’,’е’:’e’,’ё’:’yo’,’ж’:’zh’,’з’:’z’,’и’:’i’,’й’:’y’,’к’:’k’,’л’:’l’,’м’:’m’,’н’:’n’,’о’:’o’,’п’:’p’,’р’:’r’,’с’:’s’,’т’:’t’,’у’:’u’,’ф’:’f’,’х’:’h’,’ц’:’c’,’ч’:’ch’,’ш’:’sh’,’щ’:’shch’,’ъ’:’y’,’ы’:’y’,’ь’:»‘»,’э’:’e’,’ю’:’yu’,’я’:’ya’,’А’:’A’,’Б’:’B’,’В’:’V’,’Г’:’G’,’Д’:’D’,’Е’:’E’,’Ё’:’Yo’,’Ж’:’Zh’,’З’:’Z’,’И’:’I’,’Й’:’Y’,’К’:’K’,’Л’:’L’,’М’:’M’,’Н’:’N’,’О’:’O’,’П’:’P’,’Р’:’R’,’С’:’S’,’Т’:’T’,’У’:’U’,’Ф’:’F’,’Х’:’H’,’Ц’:’Ts’,’Ч’:’Ch’,’Ш’:’Sh’,’Щ’:’Shch’,’Ъ’:’Y’,’Ы’:’Y’,’Ь’:»‘»,’Э’:’E’,’Ю’:’Yu’,’Я’:’Ya’,}for file_old in os.listdir(‘.’): file_new = latinizator(file_old, legend)

#Раскомментируйте, чтобы сделать первую букву в имени файла Прописной

#file_new = file_new.capitalize() if ‘-p’ in argv: if file_old == file_new: print (‘{0: <30}’.format(file_old), ‘не будет переименован’ ) else: print (‘{0: <30}’.format(file_old), ‘будет переименован в ‘, file_new ) else: if file_old != file_new: print (‘{0: <30}’.format(file_old), ‘переименован в ‘, file_new ) os.rename(file_old, file_new)

P.S. Функцию для замены ключа словаря на его значение подсмотрел тут.

Мне нравится! в Octopress от vk.com

Из коробки Octopress умеет выдавать кнопки от google+, twitter и facebook. Для их размещения внизу каждой страницы достаточно прописать эти настройки в файле _config.yml:
123facebook_like: truegoogle_plus_one: truetwitter_tweet_button: true
А сейчас мы научим Octopress добавлять кнопку «Мне нравится!» от социальной сети «В контакте».

Вводим название своего сайта здесь, чтобы получить api Id — идентификатор контактовского виджета для Вашего сайта. Там и получаем код, который надо будет вставить. Код меняется в зависимости от того, какие параметры кнопки выбрать, так что мой код может Вам не подойти — тогда пользуйтесь тем кодом, который вам выдаст «В контакте».
Создаём файл source/_includes/vk_head.html с таким содержанием:
12345<script type=»text/javascript» src=»//vk.com/js/api/openapi.js?116″></script><script type=»text/javascript»>VK.init({apiId: Номер_Вашего_ID, onlyWidgets: true});</script>
Этот код пойдёт внутри <head>. Не забудьте вставить Ваше apiId. Затем добавьте в конец файла source/_includes/custom/head.html:
123{% if site.vk_like %}{% include head.html %}{% endif %}
Создавайте файл source/_includes/vk_sharing.html:
123<script type=»text/javascript»>VK.Widgets.Like(«vk_like», {type: «button»});</script>
Этот код пойдёт в том месте, где мы хотим нашу кнопку.
Добавляйте в конец файла source/_includes/post/sharing.html:
123{% if site.vk_like %}<div id=»vk_like»></div>{% endif %}
Добавьте в файл source/_includes/custom/after_footer.html:
123{% if site.vk_like %}{% include vk_sharing.html %}{% endif %}
Добавьте в файл _config.yml строку:
1vk_like: true
Почти готово. Осталось только расположить кнопку в нужном месте. Если у Вас есть кнопки от Twitter, Google+ и Facebook (с английским словом Like — по умолчанию Octopress и добавляет английскую кнопку), то подойдёт стиль со следующими цифрами, который можно записать в sass/custom/_styles.scss:
1234#vk_like {margin: 0 0 0 80px; padding: 25px 0 33px 0px;}@media screen and (min-width: 520px){ #vk_like {margin: -28px 0 0 320px; padding: 0 0 30px 0;}}
Так кнопка «Мне нравится» от «В контакте» стройно встанет в ряд с остальными кнопками. При ширине окна меньше 520 пикселей кнопка «Мне нравится» съедет во второй ряд и ровненько при этом займёт место посередине под этими тремя. Впрочем, если что-то Вас не устраивает, поменяйте цифры. Отключить кнопку можно, прописав в _config.yml параметр
1vk_like: false
Так что процесс автоматизирован. Будьте только внимательны при смене темы — файл source/_includes/post/sharing.html, скорее всего, будет переписан. Зато все файлы, которые мы создали, и все файлы из поддиректорий custom должны сохраниться. Впрочем, бэкапиться перед сменой темы всё равно необходимо.

Раскладка в Ubuntu 14.04

Для починки раскладки в Ubuntu + GNOME везде советуют это:
user $user $gsettings set org.gnome.settings-daemon.plugins.keyboard active false
setxkbmap -option «grp:alt_shift_toggle,grp_led:scroll,compose:ralt»

Первая команда отключает гномовский индикатор раскладки, так что он работать не будет. Зато вторая команда должна зажигать/гасить лампочку на Scroll Lock (при её наличии) в зависимости от выбранной раскладки. Также вторая команда вешает переключение раскладок на Alt+Shift, а Compose Key — на правый Alt. Читать

Комментарии для статического сайта. Установка Isso

В этой записи будет дан краткий обзор доступным системам комментариев. Затем будет подробно описана установка комментариев Isso на свой сервер с Ubuntu 14.04 и Nginx.

Isso — это веб-приложение, написанное на python. Для установки Isso вам понадобится сервер с python и SQLite (при желании можно найти бесплатные варианты). Устанавливается Isso довольно просто, а вот заставить его работать немного сложнее.

Системы комментирования
1. Сторонние системы
Примеры:

Бесплатные — HyperComments, Disqus, IntenseDebate, Livefyre, комментарии от социальных сетей (vkontakte, facebook, google+, github; интересный open-source вариант комментариев через github issues — comments.js);
Платные — SV Kament (от 300 р/месяц; раньше был бесплатным; довольно глючный, но функциональный. Выглядит, как российский клон Дискуса, смысла платить за него нет никакого), cackle (от 200 р/месяц, функционал и внешний вид отличные, есть дополнения для интернет-магазинов).

Плюсы: для установки надо просто вставить javascript код на страницу. Всё.
Минусы: комментарии принадлежат не тебе и не комментаторам; комментарии хранятся не у тебя; информация о пользователях (IP, e-mail) уходит к третьим лицам; обычно не open-source — внешний вид не изменить и функций не добавить, не убрать лишнее; зачастую медленная загрузка.
2. Веб-приложения
Приложения, которые надо установить на своём (или облачном) сервере.
Примеры: Juvia (ruby & MySQL), Isso (python & SQLite3), Tildehash (PHP & XML файлы), Master Comments System (PHP & MySQL), Realtime Commenting (PHP & Pusher). Несколько особняком выделю Staticman — бесплатный open-source проект, модерируемый с помощью системы github issues, пользователь не должен быть зарегистрирован на github.
Плюсы: Всё перечисленное — open-source; комментарии хранятся у себя.
Минусы: Нужна установка; нужен сервер, на котором будут установлены эти приложения. Но есть описание, как установить Juvia на бесплатный облачный хостинг OpenShift.
Демо: Juvia (логин discard@phusion.nl, пароль 123456), Isso, Tildehash, Master Comments System (скриншот внизу по ссылке), Realtime Commenting.
Главное отличие между Isso и Juvia (именно эти системы мне понравились больше всего): у Juvia есть полноценная админка (логин/пароль указаны выше), где в браузере можно просматривать, править и удалять все комментарии. А у Isso каждый новый комментарий можно удалять по ссылке из e-mail. Чтобы удалять треды (все комментарии со страницы), надо будет лезть в файл базы данных SQLite3. Эти операции описаны ниже. Update: У Isso есть PR, предоставляющий простенькую админку, уже работает, но ещё нет в master’е.
3. Статические комментарии
Примеры: Static comments plugin for Jekyll, Even more static comments for Jekyll.
Плюсы: Комментарии у хранятся у себя; комментарии встраиваются в статическую страницу — мгновенная загрузка.
Минусы: Подойдёт только для пользователей Jekyll; комментарии появятся на сайте только после того, как он будет собран с помощью Jekyll и залит на сайт.
Первый — плагин для генератора статических сайтов Jekyll. Добавляется форма в код страницы. Когда пользователь пишет комментарий, срабатывает php скрипт, посылающий e-mail админу с комментарием, отформатированным в YAML. Потом, как я понял, текст надо вручную вставить в отдельную директорию с комментариями, откуда при генерации сайта Jekyll сам его заберёт и вставит в нужное место на странице. Страница с комментариями загружается как обычная статическая html-страница.
Второй — модифицированная версия этого плагина. Не нужен php скрипт, e-mail отсылается через mailto:. Вот это я понимаю — статические комментарии! Что произойдёт при клике на такую ссылку, зависит от настроек пользователя. Можете проверить: пример mailto: ссылки.
Наверняка есть ещё что-то похожее, но я пока не нашёл.
И на закуску — табличка с фокусом на Open-source. Чтобы узнать больше о том, почему значок оранжевый, наведите на него мышь, появится объяснение.
Таблица сравнения комментариев

Удалить/править свой коммент.
Русский язык
Nested comments
Уведом-ление по email
Можно коммен-тировать, не вводя email
Open-source
Нужен сервер
Можно ставить аватар
Админка
Где хранятся комменты

Disqus




×
×
нет


У них

SV Kament





×
нет


У них

Juvia
×
×
×



Ruby


У себя, MySQL

Isso






Python
×

У себя, SQLite3

Tildehash
×
×




PHP


У себя, текстовые XML-файлы

Static comments for Jekyll
×
×
×



PHP
×
×
У себя, текстовые YAML-файлы

Even more static comments for Jekyll
×
×
×

×

нет
×
×
У себя, текстовые YAML-файлы

Ещё системы комментариев:

Debiki (переименован в EffectiveDiscussions), на момент написания записи разрабатывается. Можно оставить тестовый комментарий, но установить, предупреждает автор, наверное, не получится. Open-source. React.js у клиента; Scala и Play Framework 2 на сервере. Базы данных PostgreSQL и ElasticSearch.

Discourse. Не совсем комментарии. Больше похоже на форум, но некоторые используют, как комментарии. Ищите подробности в интернете. Open-source.

Наконец, см. альтернативы Дискусу на alternativeto.net.

Комментарии Isso
Почему Isso?
Я пользовался Disqus, но был недоволен по 2 причинам:

медленно грузится,
нельзя комментировать, не оставляя e-mail.

К этим минусам добавлялось то, что комментарии хранятся где-то за океаном, а данные о пользователях доступны третьим лицам; что исходный код недоступен, а потому модифицировать даже внешний вид комментариев невозможно.
Особенно меня раздражала медленность загрузки: заходишь на страницу, пролистываешь немного, через пару секунд подгружаются комментарии, в результате страница меняет свою высоту и экран рывком перемещается на другую позицию. Система комментирования Isso мне сразу понравилась, потому что удовлетворяла моим желаниям:

Подгружается быстро, а не несколько секунд, как Дискус.
Позволяет комментировать абсолютно анонимно, можно даже имя не вводить. Мне кажется, что если человек хочет оставить комментарий, то необходимость вводить e-mail в большом проценте случаев отобьёт у него желание продолжать.

Помимо того, что Isso выполняет эти два желания, ещё Isso хранит комментарии в SQLite базе данных, а не неведомо где; не отправляет IP и e-mail комментаторов третьим лицам; поддерживает импорт из WordPress и Disqus; позволяет пользователям редактировать комментарии в течение задаваемого времени; отправляет e-mail уведомление о новом комментарии на сайте (к сожалению, пока только владельцу, но не комментаторам); Isso — это Open source (можно копаться в исходниках на здоровье); поддерживает язык разметки Markdown. Документация по установке есть, но местами приходилось вносить какие-то коррективы и что-то выискивать. В итоге, как всегда, с настройкой помог hombit. Скупо выражаю ему благодарность.
Итак, устанавливаем систему комментариев Isso на Ubuntu 14.04 и запускаем настраиваем её для работы с веб-сервером Nginx. Поехали.
Установка
Ставим на свой сервер необходимые пакеты (в моём случае это сервер, на котором лежит мой сайт. Удалённая машина с Ubuntu 14.04):
root #apt-get install python-setuptools python-virtualenv python-dev sqlite3 build-essential
Установим pip:
user $user $wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
Первая команда просто скачивает файл из интернета. Если ссылка не работает (изменится, например), то ищите этот файл тут. Вторая команда выполняет установку pip, могут потребоваться права root. Теперь установим Isso, наконец.
Создадим директорию и отдадим её во владение пользователю (вместо user впишите своё имя пользователя):
root #root #mkdir /opt/isso
chown -R user:user /opt/isso
Войдём в виртуальное окружение virtualenv, чтобы устанавливать isso туда, а не глобально:
user $user $virtualenv /opt/isso
source /opt/isso/bin/activate
Virutalenv активирован, можно устанавливать isso:
(isso) user $pip install isso
Чтобы в дальнейшем выйти из virtualenv, надо выполнить команду deactivate.
Создайте ссылку для запуска isso, тогда можно будет запускать isso, не заходя в виртуальное окружение:
user $ln -s /opt/isso/bin/isso /usr/local/bin/isso
Для работы сервиса isso нужно создать одноимённого пользователя:
user $useradd isso
Настройка для запуска сервиса
Нам нужно запускать isso как сервис, для этого создаём файл /etc/init.d/isso:
/etc/init.d/issoСкачать#!/bin/sh### BEGIN INIT INFO# Provides: isso# Required-Start: $local_fs $network# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Description: lightweight Disqus alternative### END INIT INFOEXEC=/opt/isso/bin/issoEXEC_OPTS=»-c /etc/isso.cfg run»RUNAS=issoPIDFILE=/var/run/isso.pidstart() { echo ‘Starting service…’ >&2 start-stop-daemon —start —user «$RUNAS» —background —make-pidfile —pidfile $PIDFILE —exec $EXEC — $EXEC_OPTS}stop() { echo ‘Stopping service…’ >&2 start-stop-daemon —stop —user «$RUNAS» —pidfile $PIDFILE —exec $EXEC}case «$1» in start) start ;; stop) stop ;; restart) stop start ;; *) echo «Usage: $0 {start|stop|restart}»esac
Надо сделать скрипт исполняемым:
root #chmod +x /etc/init.d/isso
Конфигурационный файл
Теперь создадим конфигурационный файл /etc/isso.cfg. Вот стандартные настройки: https://github.com/posativ/isso/blob/master/share/isso.conf.
У меня настройки выглядят так:
/etc/isso.cfg[general]dbpath = /var/lib/isso/comments.dbhost = http://lisakov.com http://subdomain.lisakov.com http://localhost:4000notify = smtp[smtp]username = sergey@lisakov.compassword = MYPASSWORDhost = smtp.yandex.ruport = 465security = sslto = sergey@lisakov.comfrom = comments@lisakov.com[moderation]enabled = false[server]listen = http://localhost:8057reload = offprofile = off
Чтобы комментарии работали на поддомене, надо перечислить его в host, при этом в Nginx его указывать не надо. Также у меня указано localhost:4000, чтобы смотреть сайт на локальной машине с комментариями, когда я собираю сайт для просмотра локально с помощью команды hexo server генератора hexo.io.
Для начала всю секцию smtp и notify=smtp можете удалить, потом настроите.
Настройка веб-сервера Nginx
Создаём файл /etc/nginx/sites-available/comments и наполняем его содержимым:
/etc/nginx/sites-available/commentsupstream app_server { server 127.0.0.1:8057 fail_timeout=0;}server { server_name comments.yoursite.com; location / { proxy_set_header ‘Access-Control-Allow-Origin’ ‘http://yoursite.com’; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://app_server; }}
Поменяйте yoursite.com на ваше доменное имя. Теперь создаём ссылку:
root #ln -s /etc/nginx/sites-available/comments /etc/nginx/sites-enabled/
Настройка DNS
Чтобы поддомен comments.yoursite.com заработал, надо настроить DNS (при попытке зайти на этот адрес будет выдана ошибка Bad Request missing uri query, так и должно быть). Я делал это на Яндексе, т.к. пользуюсь его услугами DNS. Я отправился на pdd.yandex.ru → редактор DNS → добавить запись (Хост: comments, Тип: А, Значение записи: IP адрес Вашего сервера). У меня вышло так:

Запуск Isso
Что ж, похоже, мы готовы опробовать, работает ли всё, как положено: создайте тестовый файл, isso.html, например, в корне сайта, и наполните его:
12345<script data-isso=»//comments.yoursite.com/» src=»//comments.yoursite.com/js/embed.min.js»></script><section id=»isso-thread»></section>
Не забудьте перезапустить Nginx:
root #service nginx restart
Если получено сообщение [fail], значит, перезапуска не произошло — причины ищите в логе (по умолчанию — /var/log/nginx/error.log). Теперь осталось запустить сервис Isso. Для этого:
root #service isso start
Если получено сообщение Starting service…, то всё, вероятно, в порядке. Можно проверить, запустился ли сервис:
user $ps aux | grep isso
Если же сервис не запустился, можно попробовать запустить его вручную:
user $isso -c /etc/isso.cfg run
Лично у меня sudo service isso start работает, а sudo service isso stop не работает. Isso нужно перезагрузить, чтобы изменения в настройках вступили в силу, можно это сделать только остановив и запустив Isso заново. Чтобы остановить Isso, мне приходится делать
root #killall isso
Если всё в порядке, то отправляйтесь тестировать yoursite.com/isso.html. Всё должно работать. Если нет, то откройте консоль (Ctrl+Shift+I или F12), выберите Console и поглядите, какие ошибки возникают.
Автозапуск после перезагрузки
Чтобы сервис Isso запускался после перезагрузки системы, надо выполнить:
root #update-rc.d isso defaults
Если на yoursite.com/isso.html всё работает, поглядите, какие переменные можно добавить. Скорее всего, Вам пригодится data-isso-lang="ru". Итоговый код, который я вставлял на все страницы, выглядит так:
123456<script data-isso=»//comments.yoursite.com/» data-isso-lang=»ru» src=»//comments.yoursite.com/js/embed.min.js»></script><section id=»isso-thread»></section>
Русификация
Сначала у меня были кракозябры вместо русских букв после добавления data-isso-lang="ru", но после перезагрузки сервиса Isso и Nginx всё стало пристойно. Однако, Isso русифицирован не полностью и с ошибками (автор уже сделал merge для моего pull request на Github, так что скоро эта часть не понадобится). Чтобы это исправить, надо подкорректировать все 4 файла в директории /usr/local/lib/python2.7/dist-packages/isso/js.
ru.jsСкачатьdefine(‘app/i18n/ru’,{ «postbox-text»: «Оставить комментарий (минимум 3 символа)», «postbox-author»: «Имя (необязательно)», «postbox-email»: «Email (необязательно)», «postbox-website»: «Сайт (необязательно)», «postbox-submit»: «Отправить», «num-comments»: «{{ n }} комментарийn{{ n }} комментарияn{{ n }} комментариев», «no-comments»: «Пока нет комментариев», «comment-reply»: «Ответить», «comment-edit»: «Правка», «comment-save»: «Сохранить», «comment-delete»: «Удалить», «comment-confirm»: «Подтвердить удаление», «comment-close»: «Закрыть», «comment-cancel»: «Отменить», «comment-deleted»: «Комментарий удалён», «comment-queued»: «Комментарий будет проверен модератором», «comment-anonymous»: «Аноним», «comment-hidden»: «Скрыт {{ n }} комментарийnСкрыто {{ n }} комментарияnСкрыто {{ n }} комментариев», «date-now»: «Только что», «date-minute»: «{{ n }} минуту назадn{{ n }} минуты назадn{{ n }} минут назад», «date-hour»: «{{ n }} час назадn{{ n }} часа назадn{{ n }} часов назад», «date-day»: «{{ n }} день назадn{{ n }} дня назадn{{ n }} дней назад», «date-week»: «{{ n }} неделю назадn{{ n }} недели назадn{{ n }} недель назад», «date-month»: «{{ n }} месяц назадn{{ n }} месяца назадn{{ n }} месяцев назад», «date-year»: «{{ n }} год назадn{{ n }} года назадn{{ n }} лет назад»});
Самое крутое, что Isso будет правильно склонять слово «комментарий». 1, 21, 31, 41 комментарий, но 11 комментариев; 2, 3, 4 комментария; 0, 5, 6, 7, 8,… комментариев. Теперь остаётся пользоваться функционалом Isso: писать комментарии, используя простой язык разметки Markdown; включать/отключать премодерацию; вставлять счётчик комментариев (например, около названия записи в списке); вкл/откл «аватар» и настроить его цвета, отправлять уведомление о комментариях на указанный в /etc/isso.cfg адрес.
Экспорт из Дискуса/Wordpress
Заходите в админку на yourname.disqus.com, вкладка Discussions → вкладка Export → Export comments. Через некоторое время на почту придёт ссылка на XML-файл. В моём случае он был заархивирован в filename.xml.gz, поэтому я сначала его распаковал:
user $gunzip disqus-or-wordpress.xml.gz
а потом конвертировал:
user $isso -c /etc/isso.cfg import disqus-or-wordpress.xml
Изменения пойдут в определённый в /etc/isso.cfg параметр dbpath, по умолчанию /var/lib/isso/comments.db.
Будет предупреждение о том, что файл уже существует. Введите y для продолжения. База будет добавлена к существующим комментариям. Например, если выполнить команду 2 раза, то все экспортированные комментарии будут двоиться. Isso подцепит дату и имя, и даже одинаковым именам поставит одинаковый аватар.

Запускаем Isso через uWSGI (опционально)
Итак, если всё получилось, то можно теперь сделать ещё круче, а именно — запустить Isso с помощью gunicorn, gevent, uWSGI и тому подобных утилит для организации взаимодействия Python-приложения с веб-сервером (Nginx, Apache и т.д.). Выше мы запускали Isso с помощью /etc/init.d/isso, пользуясь встроенным в Isso веб-сервером, но у этого варианта есть недостатки.
Как написано на официальном сайте Isso:

Isso поставляется со встроенным web-server’ом, который хорош для начальной настройки и может использоваться на не очень загруженных сайтах — до 20 запросов в секунду. «Настоящий» WSGI-сервер поддерживает такие замечательные вещи как UNIX domain sockets, демонизация, надёжный HTTP обработчик и в то же время является более стабильным и безопасным, чем встроенный веб-сервер.

Не смотря на то, что 20 запросов в секунду моему сайту, увы, не светит, я решил-таки запустить Isso с помощью uWSGI (другие варианты см. на оф. сайте (англ.)).
Для начала установим uWSGI.
root #root #mkdir /opt/uwsgi
chown -R user:user /opt/uwsgi
user $user $virtualenv /opt/uwsgi
source /opt/uwsgi/bin/activate
(uwsgi) user $pip install uwsgi
Создайте директорию (если выберете другой адрес, то указывать в uwsgi.ini надо будет его):
user $mkdir ~/mail
Создайте файл ~/uwsgi.ini с такими настройками (введите правильный адрес для spooler):
~/uwsgi.ini[uwsgi]http = :8057master = true; set to `nproc`processes = 4cache2 = name=hash,items=1024,blocksize=32; you may change thisspooler = /home/<ИМЯ ПОЛЬЗОВАТЕЛЯ>/mailmodule = isso.run; if you use a virtual environmentvirtualenv = /opt/issoenv = ISSO_SETTINGS=/etc/isso.cfg
Обратите внимание, порт (здесь 8057) должен быть такой же, как и в /etc/isso.cfg.
Чтобы uWSGI запускался и запускал Isso после перезагрузки, создайте файл /etc/init/uwsgi.conf:
12345description «uWSGI for Isso»start on runlevel [2345]stop on runlevel [06]respawnexec uwsgi /home/user/uwsgi.ini
Обратите внимание, не init.d, а именно init. Осталось удалить из загрузок при старте системы наш старый скрипт /etc/init.d/isso:
root #update-rc.d isso disable
API
Чтобы получить комментарий в json формате со страницы, например, с этой страницы, можно выполнить в терминале:
GET http://comments.lisakov.com/?uri=%2Fen/blog/astrophoto-iris%2F

или зайти в браузере по этому адресу. При этом все русские буквы будут заменены на юникодовские символы типа u0430. Именно поэтому я дал ссылку на страницу с единственным английским комментарием на моём сайте.
По API можно и оставлять, удалять и править комментарии, см. подробнее (англ.).
Обратите внимание, что если комментариев на странице нет, то будет возвращена ошибка 404 (Document not found).
Работаем с базой данных
Этот раздел понадобится, если нужно поправить или удалить threadы или комментарии. Thread — это все комментарии со страницы.
Удалять комментарии по мере поступления в нормальном режиме удобно прямо из почты, по одной штуке. В письме с извещением о новом комментарии на сайте находится ссылка на комментарий и ссылка для его удаления; ещё ссылка на одобрение комментария, если включена премодерация. Покопаться в базе данных будет полезно, чтобы удалить или изменить ненужные более threads (например, изменился адрес страницы).
По умолчанию dbpath = /var/lib/isso/comments.db, это и есть файл базы данных со всеми комментариями. Сохраним две копии на всякий пожарный, с одной будем работать и потом отправим её на замену старой, вторая для страховки.
user $user $cp /var/lib/isso/comments.db ~/very_original_comments.db
cp /var/lib/isso/comments.db ~/
Теперь войдите в SQLite, введя sqlite3, и выполните:
user $user $ATTACH ‘/home/user/comments.db’ AS isso;
.tables
isso.comments isso.preferences isso.threads

А эти команды напечатают соответственно все колонки для таблиц комментариев, тредов и настроек:
sqlite> sqlite> sqlite> SELECT * FROM isso.comments;
SELECT * FROM isso.threads;
SELECT * FROM isso.preferences;
Чтобы удалить thread под номером 1, надо выполнить:
sqlite> DELETE FROM isso.threads WHERE ID = 1;
То же самое можно сделать и с isso.comments, только там ID находится во 2 колонке. Операторы > и < тоже можно использовать.
А что, если хочется изменить свой (кхм-кхм) комментарий, когда отведённые на это 15 (по умолчанию) минут истекли? Вообще, согласно файлу db/comments.py, у комментария в таблице есть следующие колонки:
12fields = [‘tid’, ‘id’, ‘parent’, ‘created’, ‘modified’, ‘mode’, ‘remote_addr’, ‘text’, ‘author’, ’email’, ‘website’, ‘likes’, ‘dislikes’, ‘voters’]
Где tid — номер треда. Как уже сказано, команда sqlite> SELECT * FROM isso.comments; покажет всё из таблицы комментариев. Чтобы увидеть, например, только id и text, выполните:
sqlite> SELECT id, text FROM isso.comments;
Чтобы найти «Гондурас» в комментарии, выполните (поиск чувствителен к регистру):
sqlite> SELECT id, text FROM isso.comments WHERE text like ‘%Гондурас%’
Больше про регулярные выражения в SQLite см. тут.
Узнав id комментария (пусть это будет, например, 57), можно заменить текст для найденного комментария и проверить, что получилось:
sqlite> sqlite> UPDATE isso.comments SET text=’Новый текст комментария’ WHERE id=57;
SELECT id, text from isso.comments WHERE id=57;
Осталось заменить текущий файл базы данных:
user $cp ~/comments.db /var/lib/isso/
Заключение
Вот, похоже, и всё. Обязательно задавайте вопросы, если что-то не получилось или не работает.
PS Заметил интересный косяк: выпадающие списки от Bootstrap исчезают после одного раскрытия. Решается так (только файлы с этим кодом у них располагаются по другому адресу и называются иначе).