Ленивый backup MySQL

Если вы также ленивы как и я, то вы так и не перевели свои старые проекты на postgresql. Если вы также жадны как и я, то вы не купили у вашего хостера услугу backup’а. Но что-то делать надо…

Читать далее Ленивый backup MySQL

Бридж между 2-мя и более Ethernet на Linux

Нужно это для того, чтобы влезть хостом между двумя другими без выделения всяких ip и прочей мути с маршрутизацией — просто был один кабель, стало два — между ними наш новый хост. Ну и 2 Ethernet интерфейса на нашем новом хосте не помешает…

Собственно, наш новый хост начинает работать в режиме хаба. Вероятно, очень умного хаба (а иначе — зачем этим заниматься?).

Читать далее Бридж между 2-мя и более Ethernet на Linux

Как поднять Qemu-KVM

Временами полезно иметь развёрнутую инфраструктуру из N машин, чтобы посмотреть, как работает сетевое взаимодействие, как кластер шардится по нодам и т.д.

Периодически натужно вспоминаю, как я это делал в прошлый раз. А на этот раз решил просто записать этот нехитрый набор команд, дабы не вспоминать, не искать.

Ставим пакеты:

sudo aptitude install qemu-kvm libvirt-bin virtinst virt-viewer

Создаём папку, в которой будут лежать образы виртуалок.

mkdir ~/virt
cd ~/virt

Создаём пустой образ.

fallocate -l 8192M guest1.img

Запускаем установку в нужный образ, нужного iso’шника.

sudo virt-install -r 512 --accelerate -n deb1 -f guest1.img \
     --cdrom ~/Downloads/debian-testing-amd64-lxde-CD-1.iso

Мне на этот раз понадобился Debian, но можно ставить и Windows, если судьба заставит :)

Ну а далее — sudo virsh — чтобы гасить/поднимать и настраивать виртуалки.

Добавляем поддержку emoji в Django+MySQL приложение

В наше время emoji в веб-приложениях — не роскошь, а суровая реальность: любой «мобильный юзер» может написать сообщение, в котором есть эти символы.

И, казалось бы, фича уже не новая — всё должно быть готово для неё. Так и есть в SQLite, PostgreSQL. Но не в MySQL/MariaDB.

Читать далее Добавляем поддержку emoji в Django+MySQL приложение

Доклад про Redis (видео)

В этом году участвовал в конференции DUMP — открывал секцию «Serverside.Knowledge» с докладом про базу данных «Redis».

Случилось это аж в марте, но я со свойственной мне расторопностью выкладываю это только сейчас. Задачу ставил себе — охватить широкую аудиторию — те кто слышал про Redis, кто трогал Redis, кому интересно — что дальше.

Читать далее Доклад про Redis (видео)

Сервер отвечает!

Случаются в жизни огорчения — хотел сделать одно, получилось иное. К примеру, протокол, написанный для навигации между документами, используется как файловый сервер. Или делал ты протокол поверх сети Интернет, а теперь его называют «интернет». В общем-то так и произошло с HTTP — «протоколом передачи гипертекста».

Теперь практически всё реализуется с его поддержкой, чтобы «быть в интырнете».  Не предусмотрены протоколом сеансы — добавляем cookie и т.д. Потом, когда увлекаемся извращёнными извращениями — появляются различные Semantic URL, REST, SEO опять же бьёт по рукам тех, кто увлёкся CSS и превратил HTML в span через div. Всё, чтобы слегка сбить спесь и вернуть в родное русло.

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

А теперь небольшой финт ушами — мы говорим, что документ — структура супер-динамическая и меняется даже во время «ответа». Поэтому ответ сервера на запрос должен уметь сам определять, когда он совершится.

Иными словами мы переходим к серверам, которые шлют запросы подключённым клиентам.

Подход, надо сразу сказать, инородный. Значит мы имеем удовольствие насладиться новыми элегантными костылями!

Читать далее Сервер отвечает!

AMQP — протокол шины сообщений

Пришёл этот протокол из банковской сферы, когда один из разработчиков различных критичных участков системы решил описать наконец то, что он частенько делал для коммуникации компонент. То был John O’Hara из банка «JP Morgan Chase & Co». Почему банки? Видимо, потому что эта сфера очень чувствительна к ошибкам доставки и прочего pub/sub. Да и количество сообщений там велико.

Многие банки делали свои системы передачи сообщений, имелись даже коммерческие решения, а O’Hara написал протокол, чтобы положить конец разброду и шатанию.

И в банковской сфере таки стало по-спокойнее с этим. Появились разные реализации (AMQP-брокеры). Одна из наиболее известных — RabbitMQ.

Читать далее AMQP — протокол шины сообщений

Git: «Corrupt loose object»

После аварийного завершения работы компьютера git выдал

$ git status
error: object file .git/objects/03/9e5691db59686e2afce2da700853398c961b4a is empty
error: object file .git/objects/03/9e5691db59686e2afce2da700853398c961b4a is empty
fatal: loose object 039e5691db59686e2afce2da700853398c961b4a (stored in .git/objects/03/9e5691db59686e2afce2da700853398c961b4a) is corrupt

Всё синхронизировано с удалённым git-репозиторием, поэтому особо не стал озадачиваться проблемой…

$ rm -rf .git
$ git init
$ git remote add origin адрес_репозитория
$ git fetch
$ git reset --hard origin/master

Частые push и коммиты небольших изменений (но, естественно, логически отдельных) — это прекрасно, но, интересно, а что делать в этой ситуации, если жалко терять изменения? git fsck ? fsck ?

Что новый Redis нам готовит

В Redis 3 должна появиться возможность использовать несколько Redis-нод как кластер. О кластере говорили давно, примерно тогда же пытались сделать, но вскоре поняли, что с разбегу сделать его не получится — надо решить перед этим ряд проблем.

И вот уже Redis 3 rc-3 — документации особо нет, но есть пара paper’ов, описывающих виденье разработчиков.

Что сулит кластер:
Читать далее Что новый Redis нам готовит

Сортированные множества в Redis

Сортированные множества или sorted sets — одна из структур данных Redis. Интересна она хотя бы тем, что не так часто встречается как таковая (даже вне рассмотрения Redis). А посему — давайте глубже копнём — что с ними будем делать.

Читать далее Сортированные множества в Redis