Вывод статистики о ходе выполнения долгих операций

Вы делаете сервис (скрипт), который будет выполнять достаточно долго? Тогда, вам точно стоит подумать о выводе статистики по ходу выполнения операции.
Задача
Есть примерно такая таблица.

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

Читать дальше →

Linux-vserver или каждому сервису по песочнице

Для целей размещения проектов я применяю такую схему: каждый сервис запускается в изолированной среде: боевой — отдельно, тестовый — отдельно, телефония — отдельно, веб — отдельно. Это снижает риски взлома систем, позволяет бакапить всё и вся одним rsync'ом на соседний сервер по крону, а в случае слёта железа просто поднять на соседнем железе.

Для создания изолированной среды есть два подхода, именуемые VDS (виртуализация аппаратуры) и VPS/jail (виртуализация процессного пространства).

Для создания VDS изоляций применяют XEN, VirtualBox, VMWare и прочие виртуальные машины.
Для создания VPS на linux используется либо linux-vserver либо openvz.

Плюсы VDS: система внутри может быть совершенно любой, можно держать разные версии ядер, можно ставить другую ОС.
Минусы VDS: высокие потери производительности на IO, избыточное потребление CPU и RAM на сервисы, дублирующие запущенные на серверной ОС.

Плюсы VPS: крайне низкая потеря производительности, только на изоляцию, запускаются только те сервисы, которые реально необходимы.
Минусы VPS: можно запустить только linux и ядро будет только той версии, что уже запущено.

Так как мне не нужны разные ОС, то всюду применяю linux-vserver (так уж сложилось исторически, применяю с 2004го года, а openvz вышел в открытый доступ в 2005м).

Ниже я опишу базовые операции по запуску LAMP сервера в изолированном окружении.

Читать дальше →

История написания программки для удаления ненужных файлов

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

Я пользуюсь Windows 7 и Google Chrome. Скачиваю в основном фильмы, но в сети часто встречается еще много чего интересного. Мне удобно когда свежие файлы находятся сразу под рукой на рабочем столе. А дальше полезные распределяю по назначению, остальные — в мусор. Поэтому директорией по умолчанию для загрузки в Chrome указал рабочий стол. Пользусь торрентами и торент файлы безжалостно захламляли рабочий стол, и удалять их вручную не было ни малейшего желания. Решил написать утилитку, которая будет удалять мусор с рабочего стола в фоновом режиме. Сначала реализовал в виде сервиса, но как оказалось с ним есть некоторые сложности при передаче сообщений системе, если он запускается под другим пользователем. Решил что аккуратненькая иконка в трее выглядит веселее и удобнее, поэтому от севиса в последствии отказался.

Читать дальше →

Настраиваем SkyLink модем на Android-планшете

imageУдивительно, но когда у меня возник вопрос — как подключить SkyLink-модем (AnyData ADU-310A) к китайскому планшету на Android 1.5 (увы), я ничего не смог найти в Интернет.
Но вот — время потрачено, проблема решена и сейчас хочу поделиться каким образом мне удалось это сделать.

Суть метода в кратце

  1. Подключение с помощью pppd
  2. Для этого создается скрипт подключения /system/etc/ppp/peers/cdma и скрипт управления модемом /system/etc/ppp/cdma.chat
  3. Прописывается логин\парол подключения в /system/etc/ppp/pap-secrets (chap-secrets)
  4. Редактируется скрипт установки сетевых параметров /system/etc/ppp/ip-up

Читать дальше →

Знакомство с браузером QtWeb

image

Предисловие
Сейчас на рынке браузеров идет сильная борьба. Производители вводят все новые и новые фишки, начинают использовать вычисления видеокарты для рендинга. Сайты становятся тяжелее: флеш, огромное количество картинок, тяжелая анимация. В результате если вы не обновляли своего железного коня, даже обычный серфинг сопровождается фризами или подвисаниями. А если компьютеру 10 лет и более? Вот как раз такое старое бесхозное железо досталось мне. Но интернет там нормально посещать было невозможно. Гиганты рынка браузеров нещадно тормозили и переодически падали, donut зависал на втрой вкладке. Возможно выновато время плачевно отразившиеся на железе, вызывая дичайшие ошибки. Но выяснить проблему не удалось, а нетмамонта хотелось. И тут на сцену выходит QtWeb.

Читать дальше →

Почему VDI это не выгодно и как это изменить?

Если Вы начинали разбираться в VDI и просчитывать стоимость разворачивание рабочей инфраструктуры компании в данном варианте, наверное заметили что как ни крути, помимо железа и разных вариантов Connection Broker, требуется по другому лицензировать операционные системы (VDA лицензирование). Если вкратце, нужно каждый год платить — 104 $ за одно рабочее место по программам корпоративного лицензирования Open Value/Open Value Subscription,Enterprise Agreement/Enterprise Agreement Subscription. Слайд ниже демонстрирует стоимость лицензирования одного рабочего места с амортизации на 5 лет:

image

Именно эти цифры изменяют все представление о выгодности VDI.

Читать дальше →

Журналы (logs) в MySQL

В MySQL на данный момент существуют 4 вида журнала (лога) и при достаточно серьёзной работе с базами на MySQL необходимо за ними следить. Например, бинарный лог у нас за сутки набирает около гигабайта, а размер жёсткого диска на сервере ограничен и за ними надо следить. Однако следить следует не только за бинарным логом, так как логи (журналы) в MySQL могут принести немалую пользу.

Итак, какие логи ведёт MySQL? Это:
1. бинарный лог (binary log)
2. лог ошибок (error log)
3. лог медленный запросов (slow query log)
4. лог запросов (general query log)
5. лог репликаций (relay log)

Каждый из них по-своему полезен.

Читать дальше →

Закладки каталогов в консоли с Apparix

При первоначальной настройке любого *nix сервера приходится часто перемещаться по каталогам, для правки конфигурационных файлов, проверки результата и так далее. За локальной консолью это не проблема, можно открыть несколько окон терминала и переключаться по мере необходимости, при удаленной настройке так уже не получится. Приходится довольствоваться одной консолью. BASH предоставляет лишь одну помощь — команда cd без аргументов вернет в домашний каталог. Некоторые выкручиваются при помощи псевдонимов (aliases) прописываемых в ~/.bashrc. Например,

alias cdetc=`cd /etc`


Теперь в консоли достаточно набрать cdetc, чтобы перейти в нужный каталог. Конечно это самый простой пример, но принцип понятен. Но у него есть недостаток. Тяжело держать актуальным такой список, ведь сегодня настраиваешь одно, завтра другое. И главное использование псевдонимов на лету не возможно. Ведь его нужно вручную прописать его в ~/.bashrc, затем снова зарегистрироваться в системе. Вот здесь на помощь приходит Apparix, который поможет на лету создавать закладки каталогов и быстро переходить и управлять ими.

Читать дальше →

DIY: USB HID over Bluetooth, делаем любое HID устройство безпроводным

Начало года, у кого как, а у нас новогодняя забава – инвентаризация склада запчастей!
Для инвентаризации используются стандартные USB сканеры штрих кодов, работающие как HID устройства. Чтобы немного облегчить работу парням на складе ну и для собственного опыта решил сделать беспроводной сканер.

image

Читать дальше →

Отказоустойчивое решение на базе ОС FreeBSD

Некоторое время назад я озадачился созданием отказоустойчивого решения для домашнего шлюза. Были рассмотрены различные варианты, включая введение в сеть роутера на RouterOS, но поскольку в этом случае требовалась установка еще одной железки, вариант в скором времени отпал, хотя работал более-менее корректно. Еще один минус был в том, что Mikrotik — коммерческий продукт, а поскольку я всегда был сторонником свободно распространяемого программного обеспечения, то это послужило еще одним поводом отказаться от такой схемы. Да и версия «сломанного» мтика была не очень стабильной.
Вобщем поиски продолжились и вскоре я нашел то, что искал — протокол CARP.

Читать дальше →