29 дек. 2012 г.

Место для восстановления из копии Time machine, копирование диска на меньший по объему

В Mac os есть простая и удобная система резервного копирования - Time Machine. Она вполне поможет поднять как случайно удаленные/измененные файлы так и систему целиком.

Попробовал перенести с её помощью систему на другой диск, значительно меньшего объема чем у меня сейчас (SSD), для этого в Time machine кучу всего добавил в исключения, в результате из 200Гб данных для архивации осталось около 60 Гб. Целевой SSD 128Гб.

Time Machine категорически отказался восстанавливаться на диск 128Гб, утверждая что ему нехватает место. Из поиска по интернету выяснил, что Time Machine требует место для всех данных, которые МОГЛИ быть скопированы, а не только для тех которые копировались. Т.е. места для файлов, исключенных из резервного копирования тоже должно хватать при восстановлениии.

Почему так сделано непонятно, по-моему бред. Способа обойти это ограничение или какого-то простого текстового конфига с объемом данных не нашел.

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

Копирование диска в итоге сделал программой Carbon Copy Cloner - она позволяет скопировать систему на новый диск и загружаться в Mac OS с целевого диска, при этом позволяет указать исключения (файл, папки) которые копироваться не будут.

1 дек. 2012 г.

iphone и samsung galaxy s2 (android)

Пару дней назад стал обладателем iPhone 4S, до этого пользовался Samsung Galaxy S2 с android.

Первые ощущения

Преимущества iPhone

  • Лучше качество голоса при разговоре, небыло задержек бульканий в тех местах, где на samsung они были
  • Лучше лежит в руке - немного потяжелее и размер поменьше, samsung был немного великоват
  • Плавнее графика - когда что-то перетягиваю оно начинает перетягиваться сразу под пальцем, а не через 0.3 секунды. В целом до того как купил iphone я этой задержки не замечал, но это просто добавляет удовлетворенности общим качеством апарата
  • Быстрее определяет текущее местонахождение - сразу как включил карты или навигацию видишь где стоишь. На андроид спутники ловились некоторое время (от 20 секунд до нескольких минут), системная настройка GPS включена постоянно на обоих устройствах
  • Внешний вид приложений из маркета значительно приятней глазу, чем android-приложения
  • Более удобная система ограничения доступа приложения к данным. Например на android приложение перечисляет доступы которые ему нужны при установке и ты можешь либо соглашаться и ставить приложение давая ему все доступы (обычно большие и непонятно зачем нужные. Альтернативы с минимальными правами доступа чаще всего нет). В iPhone при установке приложение никаких доступов не спрашивает, зато когда приложение хочет получить доступ к gps, контактам, фотографиям и т.п. - выводится диалоговое окно где можно разрешить или запретить данную конкретную функцию. Вопрос задается 1 раз - когда приложение первый раз пробует использовать функцию, решение сохраняется. Если случайно ошибся и нажал не ту кнопку - можно потом пойти в системные настройки и разрешить/запретить конкретную функцию конкретному приложению уже там. Особенно мне понравились запросы на создание уведомлений - там будет появляться только то что нужно, а всё от всех программ которые захотят что-то там написать.

Преимущества Samsung (android)

  • Значительно шире возможности настройки под себя
    • Есть виджеты которые отображают информацию сразу на десктопе и там же позволяют что-то с ней делать без запуска отдельного приложения
    • Есть анимированные обои. У меня например зеленые листочки плавно покачивались - приятно. Очень удивился что на iPhone такого нет.
    • Можно поставить свой лончер (оболочку, рабочий стол и т.п.), iPhone-овская меня в принципе устраивает, но я бы её допилил еще парой возможностей, к которым привык с Go Launcher на android
  • Возможность реагировать на кучу разных событий и синхронизировать действия программ между собой. Например приложение Tasker - я им пользовался чтобы автоматически выключать WiFi и GPRS при выключении экрана (для экономии батарейки) и наоборот чтобы включать автоматически wifi и синхронизацию когда подключаю телефон к питанию. Для iPhone пока не нашел и судя по всему таких программ для автовключения/выключения сетей нету.
  • Возможность отказаться от приложения. Раньше были сутки, теперь 15 минут - конечно меньше, но всё равно достаточно чтобы просто запустить приложение и посмотреть оно тебе вообще надо или нет, то ли это что ты ожидал. В apple store в общем случае покупка окончательная, возврат денег проблематичен.
  • Есть возможность поменять клавиатуру (например я привык к swype, клавиатура iPhone для меня не особо удобна. Ладно что свайп-метод не поддерживается, так чтобы поставить точку в тексте надо открывать доп. меню - в основной раскладке только буквы).
  • Для зарядки используется стандартный микро-usb, который с большой вероятностью можно найти у знакомых или в ближайшем магазине сотовых телефонов за 100 рублей.

3 нояб. 2012 г.

iTerm mc Shift-F4

Проблема

Много работаю с серверами по ssh, в частности много работаю с mc, mc не воспринимает сочетение shift-F4 (открыть новый файл на редактирование).

Причина

iTerm вообще не воспринимал (не передавал) сочетание Shift-F4, передавал просто F4. Проверяется командой cat -e и нажатием комбинаций клавиш.

Решение

В настройках профиля для сочетания Shift-F4 сделал настройку отправлять правильную Escape-последовательность: Esc+O2S

30 окт. 2012 г.

Сам себе dyn-dns через bash и pdd.yandex.ru

Задача

Сделать статическое доменное имя для своего домешнего сервера с динамическим IP-адресом

Исходные данные

У меня есть домен rekby.ru, делегированный на DNS-сервера yandex, домашний сервер на ubuntu-сервер, интернет-провайдер билайн с l2tp-соединением.

Варианты

  1. dyndns.org им подобные
  2. Работа через Яндекс-API
Вариант 1 раньше был хорошо и удобен, потом интерфейс, регистрации и т.п. так замудрили, что стало сложно разобраться как там добраться до бесплатной DNS-записи, так что он не подошел.

Настройка автообновления IP на DNS-серверах yandex

Для начала создайте A-запись с нужным поддоменом и любым IP-адресом в интерфейсе pdd.yandex.ru

Потом нужно получить токен для доступа к API: 
https://pddimp.yandex.ru/get_token.xml?domain_name=ВашДомен 
там нужно авторизоваться своей учеткой яндекса, в ответ будет выдан xml из которого нужен только token, он там виден.

Затем нужно перейти на страницу 
https://pddimp.yandex.ru/nsapi/get_domain_records.xml?token=ТокенСПрошлогоШана&domain=ВашДомен
Тут нужно посмотреть record_id вашего поддомена.
Скрипт bash для обновления IP-Адреса:
#!/bin/bash
TOKEN=ВашТокен
RECORD_ID=ВашRecordID
DOMAIN=ВашДомен
SUBDOMAIN=ВашПоддомен
LINE=`ifconfig ppp | grep --color=never "inet addr"`
# extract IP from line: inet addr:2.93.172.129  P-t-P:85.21.208.191  Mask:255.255.255.255
LINE=( $LINE )
IPADDR=${LINE[1]}
IPADDR=${IPADDR:5}
wget -O /dev/null "https://pddimp.yandex.ru/nsapi/edit_a_record.xml?token=$TOKEN&domain=$DOMAIN&subdomain=$SUBDOMAIN&record_id=7136651&content=$IPADDR&ttl=900" 2>/dev/null
Дайте скрипту права выполнения и поставьте на выполнение после сразу после поднятия соединения или просто поставьте в CRON раз в 5 минут. Чаще смысла не имеет, т.к. TTL=900 секунд, т.е. 15 минут, меньше яндекс поставить не дает.

27 окт. 2012 г.

Отрицательный опыт стабильности GAE


Для старта проекта решил выбрать GAE как простую неадминистрируемую платформу. Проект еще не запущен, но для статистики ping-admin проверяет работу ресурса раз с интервалами от раз в 5 минут до раз в час в течение последних 2 месяцев (58 дней).

Мониторинг заметил два сбоя. В первый раз это было значительное увелиение времени отдачи страницы (с 0.5 секунд до 30 с лишним секунд без изменения кода и накопления данных - проект еще не запущен).

Второй раз сегодня, в GAE случилась общая проблема, которую они поправили и разбираются, сайт фактически был недоступен больше 3 часов, на большенство запросов отдавал 500-ю ошибку, но могу случайно выдать и обычную страницу (1 из 10-15 раз).

Итого по мониторингу даунтайм за последние 2 месяца составил 1 час, на самом деле минимум 4 часа (особенности настройки мониторинга могут значительно занижать даунтайм).

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

Для себя принял решение - что этот проект всё же запущу на GAE, чтобы готовую вещь не переделывать и в момент когда станет понятно что проект начинает зарабатывать деньги слезать с GAE и переходить на собственные сервера или на Amazon.

Дальнейшие проекты уже сразу виртуальном хостинге, VDS или своих серверах, чтобы в момент проблемы можно было что-то сделать для поднятия системы (например быстро переехать в другое место).

24 окт. 2012 г.

Прошивка D-Link DIR-300 B3

Задача

Прошить в D-Link DIR-300 версия B3 прошивку DD-WRT. На сайте есть прошивки для версии A1 и B1.

Решение

Обычным образом через стандартный интерфейс маршрутизатора  по обновлению прошивки загружается DD-WRT от версии B1, видимо они вполне совместимы.

DNS локальной сети средствами DD-WRT

Задача

Есть локальная сеть, роутер D-Link DIR-300 (прошит DD-WRT), сервер. Нужно обращаться к серверу по доменным именам без изменения файлов/настроек на клиентских компьютерах.

Решение

В DD-WRT уже установлен DNS-сервер DNSMasq (включается на вкладке Services), он умеет раздавать IP-адреса, прописаные в /etc/hosts маршрутизатора.
Поскольку у маршрутизатора файловая система только на чтение - написан скрипт expect для ежеминутного прописывания новых настроек. После обновления файла DNSMasq нужно отправить сигнал для обновления настроек.

Скрипт:
#!/usr/bin/expect
spawn telnet 192.168.3.1
expect "login:"
send "root\n"
expect "Password:"
send "ROUTER_PASSWORD\n"
expect "DD-WRT:~#"
send "echo \"127.0.0.1 localhost\n192.168.1.1 DD-WRT\n192.168.1.2 torrents.local\n\" > /etc/hosts\n" # желаемое содержимое /ets/hosts маршрутизатора
send "killall -HUP dnsmasq\n" # сигнал на обновление настроек
send "exit\n"
expect eof
Чтобы не путаться с форматированием первой слово каждой новой строки помечено жирным шрифтом.

20 окт. 2012 г.

osCommerce 500 ошибка после переноса

Описание проблемы

После переноса сайта на osCommerce между серверами для всех страниц стала выдаваться ошибка 500, при этом сайт выглядел нормально. Т.е. в заголовке возвращается код 500 и потом нормальное содержание страницы и браузер всё показывает правильно. Обнаружился баг в тот момент, когда ajax-скрипт отказался принять ответ сервера с кодом 500 и работать не стал.

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

Файл
includes/functions/html_output.php
строка 36
if (SEO_ENABLED == 'true')

дописал в неё "FALSE &&"
и стало 
if (FALSE && SEO_ENABLED == 'true')

Через несколько часов заметили, что все ссылки на сайте изменились, так что включил SEO обратно - для отладки.
После включения ошибка 500 не вернулась, стал отдаваться обычный код 200.

Причина

Точная причина осталась непонятной. Предполагаю, что в файле seo.class.php происходит обращение к самому сайту по доменному имени, при этом пока dns-кэш не обновился - запросы уходили на старый сервер, где сайт уже был выключен.

Решение

В данном случае всё решилось просто путем ожидания.

Быстрый экстенсивный метод решения тормозов

У одного из клиентов случилась авария - процессоры VDS (4 ядра) стал нагружаться на 100% сервером БД, сайт при этом лежит ка кмёртвый. Узкое место нашел, описал разработчику. Теперь разработчику нужно время, чтобы это место оптимизировать. Получение денег клиентом зависит напрямую от сайта.

Было решено на 1 день взять самый мощный амазоновский сервер (Cluster Compute Eight Extra Large Instance) - 2 процессора по 8 ядер с Hyper Threading (итого 32 логических процессора). Нагрузку сервер выдержал успешно, тормозов не наблюдалось.

Стоимость решения - примерно 100 рублей/час работы сервера, около 800 рублей за день.

На короткие промежутки времени, когда стоимость простоя сервера высока решение принято как оптимальное.

30 сент. 2012 г.

Zabbix on freebsd

Проблема

Zabbix agent don't start with error "Can't allocate shared memory for collector. [Cannot allocate memory]" in log.

Причина

Не может выделить память нужного объема

Решение

Проверить текущие параметры
sysctl -a | grep shmm

Если предлагаемые ниже значения больше, чем имеющиеся - установить их
sysctl kern.ipc.shmmax=134217728
sysctl kern.ipc.shmall=16384

Прописать установленные параметры в /etc/sysctl.conf
echo kern.ipc.shmmax=134217728 >> /etc/sysctl.conf
echo kern.ipc.shmall=16384 >> /etc/sysctl.conf

29 сент. 2012 г.

Google adsense - выбор способа выплаты, доходность

В марте 2011 года я начал эксперимент по поводу заработка в Google Adsense обычного блога периодически пополняемого. И вот в сентябре 2012 года, через полтора года мои суммарные доходы за всё это время достигли $10 и google мне предложил выбрать способ, которым он будет выплачивать мне деньги. При этом выплаты начинаются с суммы $100, т.е. мне до факта выплаты мне придется подождать еще какое-то время.

Ниже отчет по показам и доходам:

Репликация файлов на Windows

Задача

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

Рассмотренные варианты (в порядке рассмотрения)

DropBox, SkyDrive

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

Rsync-сервер и rsync-клиент под cygwin

Утилита rsync удобна для синхронизации относительно небольших изменений. При изменении части файла заново будет копироваться не весь файл, а только измененная часть. Синхронизироваться будут в т.ч. базы данных, у которых размер большой, а ежедневные изменения маленькие. Настройка оказалась относительно простой, но неудобной - нужно создавать текстовые конфиги, которые на память не вспомнишь. Отсутствует шифрование как передачи, так и авторизации.

DFS - распределенная файловая система Windows

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

Rsync под cygwin через ssh (выбран в качестве итогового)

Авторизация и шифрование соединения по ключам - средствами ssh. Теоретически (но в общем не обязательно) нужно как-то ограничить доступ к серверу. Настраивается очень просто: при установке cygwin нужно указать openssh, rsync, cron. Потом вызывать ssh-host-config и согласиться со всеми вопросами (можно почитать и с некоторыми не согласиться) и собственно всё - ssh-сервер настроен. Дальне обычная настройка авторизации. На сервере с которого будет делаться подключение ssh-keygen и прописать получившуюся в .ssh/id_rsa.pub строку в файл .ssh/authorized_keys на целевом сервере (куда будут подключения) в домашнюю папку пользоваться с логином которого будем подключаться.
Дальше обычная команда rsync, например
rsync --delete-during --av -e ssh Administrator@server-from.ru:/cygdrive/c/sites/ /cygdrive/c/sites/

Скорость синхронизации приемлимая (между разными ДЦ (Россия-Ирландия) у меня колеблется в районе 170КБайт/сек), нагрузка на процессор низкая (колеблется около 0), потребление памяти низкое (на все cygwin-овские процессы в сумме около 10-20МБ).

26 сент. 2012 г.

На android после перепрошивки пропал доступ к интернету через gprs/3g

Описание проблемы/Problem (english)/Problem (Deutsch)

После полного сброса и перепрошивки своего андроид-телефона он стал отказываться подключаться к GPRS/3G. Включение через менюшки ничего не дало, прошивка другого драйвера модема, другой прошивки - тоже.

English: After upgrade firmware on my android phone it can't connect to internet by gprs/3g. Turn it in menu don't help. Update driver of modem and update firmware don't help too.

Deutsch: Ich erneuern Firmware im Android. GPRS/3G ist kaputt. 

Причина/cause/Grund

При сбросе настроек сбросилась настройка точки доступа.

English: Access point set empty during wipe data.

Deutsch: 

Решение/Solve/Lösung

Установить точку доступа в соответствие с рекомендациями сотового оператора или запросить автоматические настройки, для Android 2.3 это делается в меню: Настройки/Сеть/Мобильные сети/Точки доступа. Как вариант - позвонить в справочную, там подскажут как настроить телефон для подключения к интернет.

English: Add access point. If you have android 2.3: Settings/Wireless and network/Mobile networks/Access point names. Parameters you can receive by mobile operator.

Deutsch: Man hinzusetzen Zugangspunktnamen (Einstellungen/Drahtlos und Netzwerke/Mobile Netzweke/Zungangspunktnamen).

12 июл. 2012 г.

modx, отсутствует файл кэша

Ошибка:

« MODx Parse Error »

MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
  Error:Invalid argument supplied for foreach()
  Error type/ Nr.:Warning - 2
  File:/home/virtwww/website/http/manager/includes/document.parser.class.inc.php
  Line:883
  Line 883 source:foreach ($this->aliasListing as $item) {
Parser timing
  MySQL:0.0033 s(11 Requests)
  PHP:0.1139 s
  Total:0.1172 s


Причина:
Нет файла assets/cache/siteCache.idx.php

Решение:
Зайти в панель управления сайтом и нажать ссылку "Очистить кэш" - файл кэша будет создан заново.

30 июн. 2012 г.

php --disable-all

Описание проблемы

При настройке очередного сервера в php вдруг пропала функция session_start и стала появляться ошибка: Call to undefined functionsession_start

Причина

При компиляции php случайно в середину ./configure ... вставил опцию --disable-all, достаточно убрать эту опцию и перекомпилировать php заново

19 мая 2012 г.

Аккумуляторы для вспышки

Исходя из тестов лучше всего брать аккумуляторы Varta и Energizer для постоянного использования и Varta Ready2Use или GP ReCyko для использования время от времени.

Исходная статья с тестами

Запасной вариант (открываться может медленно).

Я изначально в магазине взял GP2700, посмотрим как будут себя вести и как я буду ими пользоваться на самом деле.

12 мая 2012 г.

Что плохо в Makbook

В дополление к тому что мне нравится напишу что мне не нравится, т.к. он всё же не идеален:
  • Сильно греется это не то слово - уверен что если не пожалеть корпуса, при том что режим работы у меня практически работа с текстами + работает виртуальная машина, в ней чат-клиент.
  • Только 2 USB-разъема
  • Нет входа под обычный микрофон - выход для наушников совмещен с каким-то фирменным микрофонным входом, так что либо встроенный либо через USB, а мне моя гарнитура нравится, пришлось пожертвовать 1 USB под неё.
  • Отсутствует стандартный разъем для монитора - только свой фирменный, как я понял это решается переходником, но еще не пробовал. (разъем оказался классный, но монитор к нему стоит еще 35-40 т.р.).

11 мая 2012 г.

Программы, используемые на Mac OS

Пользуюсь Makbook примерно 2-3 недели, более-менее настроил всё для удобной работы.
  • AppCleaner - удаление программ, подчищение хвостов
  • Time out - программа для напоминания о перерывах от экрана
  • Audium - ice, jabber, msn-клиент - красивый, удобный. Иногда Jabber отваливается но тут непонятно - может проблема со связью, т.к. потом сама восстанавливается.
  • Aperture - программа для обработки фотографий, в свойствах выставлено запускать в 32-битном режиме, иначе потребляет немеряно (несколько Гб) памяти. Заменил на Lightroom.
  • DropBox - синхронизация, публикация файлов
  • Evernote - локальная база знаний, заметок
  • Chrome - браузер. Наверное просто привык. Какой-то особой истории закладок или чего-то другого ценного/синхронизируемого нет, возможно потом попробую Safari.
  • Telephone - удобный SIP-клиент.
  • Eclipse с erlIDE - IDE для erlang, даже отладка работает (стандартный отладчик не работает по причине отсутствия нужных виджетов под 64-битную платформу как я понял).
  • Заметки - встроенное приложение типа клейких листочков. На Windows видел такие, почему-то было неудобно, тут почему-то удобно.
  • Clips - менеджер буфера обмена - для поиска по истории копирования/вставки шаблонов, сокращений и т.п. Замена Ditto которым пользовался на Windows
  • FileZilla - FTP-клиент для быстрого открытия FTP-ссылок
  • GraphicalHttpClient - программа для отладки http-запросов/ответов. Удобно посмотреть что отвечает сервер, можно отправить сформированный вручную запрос. Например для отладки json-rpc.
  • Picasa - у меня уже каталогизирована куча фоток, просто так метаданные (например о распознанных лицах) в iPhoto не переносятся, хотя сама iPhoto мне нравится.
  • iTerm (сторонняя программа) - в качестве консольного терминала. Стандартный тупит с сочетаниями клавиш и мышку не поддерживает (то и другое в моём случае касательно mc).
  • iTunes - слушаю интернет-радио.
  • Macports - через него ставил erlang и yaws.
  • Hbrew - замена macports, но установка проходит быстрее
  • Mail - втроенный почтовый клиент.
  • MarsEdit - для написания в блог, пока на рассмотрении - мне достаточно будет чего-то попроще, но бесплатного.
  • MLSwitcher - программа для назначения каждой раскладке определенного сочетания клавиш, чтобы переключаться на на "Пердыдущую" и "Следующую", а на русскую, английскую, немецкую - напрямую. Течет память, может сжирать её гигабайты.
  • Moroshka Filemanager - файл-менеджер двухпанельный. Не очень удобный, но пока больше ничего лучше бесплатного GUI не нашел, в большенстве случаев пользуюсь консольным mc.
  • Parallels Desktop - виртуальная машина с Windows для запуска тех программ, которых нет под Mac (например внутренние программы для работы с клиентами или хранился паролей с доступом по eToken). Очень хорошая реализация Coherence-режима (в vmware  Fusion он называется unity) - когда Windows-приложения встраиваются в среду Mac. Лучше Fusion для меня в двух параметрах: 1. поддерживается отправка сочетания "Переключить язык" - т.е. я переключаю язык одинакого в Windows и Mac программах (в Fusion так настроить не получилось, он не хотел подхватывать системное сочетание клавиш), 2. MakLook - на Windows внутри виртуальной машины устанавливается такая тема оформления, что виндовые программы становятся практически неотличимы от маковских - т.е. по факту я работаю с виндовыми программами как с родными маковскими - эта штука доступна только после оплаты лицензии parallels - в пробном режиме она не работает.
  • Screen capture pro - захват видео с экрана. Пока не пользовался, но буду - для дальнейшего создания видео-уроков, в Windows для этого пользовался CamStudio.
  • Skype - звонки через Skype
  • SourceTree - Программа-клиент для работы с репозиториями исходных кодов
  • Transmission - torrent-клиент. Временный, вообще у меня настроен Deluge на домашнем сервере, так что это как простое временное решение пока в разъездах.
  • VLC - Видео-проигрыватель. Стандартный в общем тоже всё играл, но при открытии mkv сначала долго думал (несколько минут при открытии с локального диска), вероятно целиком считывал фильм и что-то там проверял.
  • RDС (Remote Desktop Connection) - официальный клиент Microsoft. Возможно на что-то поменяю, т.к. не очень удобно сделана работа при подключении поочередно к разным серверам и переход в полноэкранный режим. Иногда пропадает связь с сервером, которая не восстанавливается - клиент просто тупо висит.
  • Lightroom - программа для каталогизации и пакетной обработки фотографий. Индивидуальные фотографии вполне хорошо можно и подретушировать, не только пачками обрабатывать.
  • Pages - текстовый редактор, помощнее TextEdit, но значительно недотягивающий до Word.
  • PyCharm - IDE для Python.
  • TrueCrypt - шифрованный диск.
  • VueScan - удобно сканировать больное количество документов, можно настроить реакцию на стандартные кнопки сканера, встроенный софт так не умеет.
  • Cornerstone - SVN клиент.
  • Photoshop elements - редактирование фотографий, больше возможностей чем в Lightroom для правки одной фотографии/коллажа, но меньше чем в нормальном photoshop.
  • Crashplan - резервное копирование
  • iSyncr - синхронизация iTunes и android.
  • KeyRemap4MacBook - переназначение клавиш. Пользуюсь для исправления направления прокрутки внешней мышки и переназначения некоторых кнопок на внешней клавиатуре.
  • Kindle - отправка книг на Kindle.
  • Navicat Premium - для подключения к базам данных
  • Punto Switcher - переключение языка во время набора текста
  • Screen recorder - запись скринкастов
  • Skitch - снимки экрана с пометками
  • TeamVieawer - подключение к клиентским компьютерам

Причины по которым я перешел на Makbook

Основная причина именно покупки Makbook - долгое время жизни от аккумулятора за разумные деньги + хотелось каких-то перемен. У меня предстоял длительный отъезд (около месяца) и я решил взять мак и не брать с собой старый ноут с виндой - для полного погружения.

До этого был ноут Sony Vaio VPCEB2S1R с 8Гб памяти и HDD на 7200 оборотов из сервера. И уж как-то сильно он тормозил - загрузка из состояния выключен до готовности к работе занимала 5-10 минут (пока там всё что Windows хочет в кеш прогрузится), а иногда приходится его выключать или перезагружать + программы запускаются по ощущениям как-то медленно, тормознуто. Как буд-то кеш забит непонятно чем, причем чем больше памяти ставишь тем медленнее оно в итоге работает. Пару раз оптимизировал настройки, удалял лишние программы и т.п. - хватало не на долго - через некоторое время снова начинал жутко тормозить.

К тому же в магазине относительно недорого попался Makbook pro 13" за 40 т.р. - Sony в те же деньги предлагает примерно ту же комплектацию, только аккумулятор живет значительно меньше (заявлено 5-6 часов у разных моделей, в реальности это наверно 3).

После покупки макбука началось его исследование - с маками до этого практически не общался. 

Что понравилось:

  • Реально долгая работа от аккумуляторов - например в режиме когда я непрерывно качаю данные по Wifi, ставлю/удаляю софт, внутри виртуальной машины параллельно ставлю то одну винду, то другую (первый раз случайно не ту поставил) - время работы от аккумулятора около 4 часов. В режиме подключен по WiFi + печатаю тексты/компилирую программы - чуть больше 7 часов - т.е. столько сколько и заявлено. При просмотре фильмов - около 5 часов. Sony хватало минут на 40-60 фильма при заявленных 4 часах.
  • Удобные установка/удаление программ - просто перетягиванием в папку с программами или в корзину. При желании можно почистить папки с рабочими файлами/настройками, которые расположены по стандартным легко-находимым путям.
  • Подсветка клавиатуры
  • Подключение зарядки на магните - т.е. не надо попадать штекером на иголочку, торчащую внутри корпуса, а достаточно просто поднести наконечник к разъему зарядки и он сам прицепится, сначала думал - что за фигня и нафиг надо, а на практике оказалось очень удобно - мобильность ноута резко повышается, когда не надо целиться - просто взял и пошел, потом просто пришел, поставил на стол и прилепил зарядку.
  • Очень хорошо работает со спящим режимом - винда однозначно тормозила после выхода из спящего режима, если был включен файл подкачки - это собственно и было причиной докупки еще 4 Гб памяти и выключения подкачки, а тут как работал так и работает. Переходит правда в спящий режим немного долго по ощущения - около 20 секунд, но винда у меня делала это еще дольше.
  • Удобное добавление программ в автозагрузку - просто сделать правый щелчёк мышки в dock (на панели задачь) и там отметить галочкой - запускать эту программу автоматически.
  • Меню всегда в верхней части экрана, а не в заголовке программы - вопрос спорный, но мне понравилось
  • Быстрый поиск spotlight. В винде начиная с Vista есть поле быстрого поиска в меню пуск, я им время от времени пользовался чтобы запускать программы, которые в главном меню далеко спрятаны. После набора названия программы ищет ее обычно 5-10 секунд, в Mac Os когда закончил набирать название результат уже готов, обычно после нескольких букв уже сразу показывается всё что нужно - не только программы, но и документы. Базу документов перенес всю, так что объем поиска примерно одинаков - ~20 тыс. файлов, 8Гб. Причем если в винде служба индексирования стабильно нагружала диск практически монопольно 10-20мб/сек непрерывно - каждый раз что смотрел, то тут я ее работы не ощущаю. Поиск ведется как по названию, так и по содержимому документов (проверял на docx - word 2007), по электронной почте.
  • Удобный SIP-клиент! По работе принимаю много звонков через sip-телефонию, долго не мог найти вменяемого клиента при совершенно скромных требованиях: возможность быстро снять трубку по горячей клавише. Ничего такого под Windows не нашел. Единственный клиент где это было заявлено - PhonerLite, но там было снятие трубки для исходящего звонка, а не ответ на входящий. Думал уже покупать гарнитуру с аппаратной кнопкой, чтобы каждый раз в кнопку ответа программы не целиться. Тут в App Store нашел прекрасную программу "Телефон" (Telephone) от Алексея Кузнецова - минимум интерфейса, при этом всё просто и понятно. И есть кнопка ответа на вызов. (при этом сначала нужно переключиться на программу - но это просто - нужно щелкнуть по удобному всплывающему сообщению + уверен можно автоматизировать через Automator - внутренняя штука для создания скриптов в т.ч. без навыков программирования).
  • Поддержка по телефону. Я в Mac OS новичок и порой возникают элементарные вопросы, но индивидуальные - т.е. в справке не описаны - первые 90 дней операторы Apple будут помогать с решением повседневных вопросов по телефону.
  • Удобный почтовый клиент. Изначально с давних пор на Windows пользовался The bat, потом пересел на Web-интерфейс гугля, потом снова стал пересаживаться на что-то (в моем случае снова The bat), но как-то не шло - веб-интерфейс в использовании оказывался удобнее например просмотром истории переписки. В Mac os удобный почтовый клиент - я им пользуюсь, мне нравится. В web-интерфейс теперь захожу редко.

30 апр. 2012 г.

Как копить данные в erlang

Задача:
Есть большое количество входящих запросов (на данный момент 1000/секунду, потом больше). Нужно накапливать данные несколько секунд, затем данные обрабатываются и лишние данные удаляются.

Я вижу два подхода:
1. Накапливать данные в ets-таблицах
2. Накапливать данные в состоянии процессов

Я сделал реализацию обоих методов и сравниваю производительность и масштабируемость в рамках одного экземпляра виртуальной машины erlang.

Исходник

Формат именования колонок: type/generator-count/collector-count
type - тип сбора данных: ets - таблица ets, proc - сбор данных в состоянии процесса
generator-count - количество процессов, генерирующих данные
collector-count - количество таблиц/процессов, собирающих данные

Каждый тест проводился 3 раза, выбирался лучший результат Результаты тестирования:

Система ets/1/1 ets/2/2 ets/1/10 ets/1/100 ets/10/1 ets/10/10 ets/100/10 proc/1/1 proc/2/2 proc/1/10 proc/1/100 proc/10/1 proc/10/10 proc/100/10
MacBookPro IntelCore i5 2.4GHz 524783 564207 474355 481256 89928 89145 98592 304000 158200 278200 201200 57000 79800 80600

Выводы:

  1. Скорость записи данных почти не зависит от количества собирающих процессов/ets-таблиц
  2. Собирать данные в ets-таблицах быстрее, чем в состоянии процессов.
  3. Похоже что в данном тесте скорость упиралась в скорость генерирования данных - скорость работы катастрофически падала, когда количество активных процессов превышало количество физических ядер процессора.


31 мар. 2012 г.

FreeBSD, Putty

Клавиши Home, End.

В настройках соединения Putty в разделе Connection / Data в поле terminal-type string вместо xterm написать putty и сохранить.

Ввод русских букв

В /etc/login.conf добавляем:

   russian-utf8|Russian Users Accounts:\
        :charset=UTF-8:\
        :lang=ru_RU.UTF-8:\
        :lc_all=ru_RU.UTF-8:\
        :tc=default:

Перестраиваем БД:

    cap_mkdb /etc/login.conf

Прикрепляем пользователя:

    pw usermod логин -L russian-utf8

Добавляем в /etc/profile

   MM_CHARSET=UTF-8; export MM_CHARSET
(взято с http://www.opennet.ru/tips/info/1785.shtml).

30 мар. 2012 г.

XFS несовместимость Linux и FreeBSD

На домашнем сервере для экспериментов потребовалась FreeBSD. Перед переустановкой ОС сделал бэкап данных на внешний диск, отформатированный в xfs.

После установки FreeBSD файловая система наотрез отказалась читаться и восстанавливаться. В виртуальную машину под Ubuntu диск подмонтировался без ошибок. Видимо несовместимые реализации одной идеи.

25 февр. 2012 г.

Файловая система Ceph

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

  1. Поддерживает автоматическую репликацию данных между серверами.
  2. Поддерживает моментальные снимки пользовательских папок
  3. Находится в стадии разработки, не рекомендована для промышленного применения, тем не менее уже входит в стандартные пакеты Ubuntu и ядро Linux.

Настройка сервера, Ubuntu

Изначально имеет: Ubuntu Server в минимальном варианте внутри VMWare, на жестком диске файловая система / – Ext4, /data – btrfs

Всё выполняем от имени root (oneiric – название дистрибутива, на сайте есть список поддерживаемых)

wget -q -O- https://raw.github.com/NewDreamNetwork/ceph/master/keys/release.asc \
| apt-key add -
tee /etc/apt/sources.list.d/ceph.list <<EOF
deb http://ceph.newdream.net/debian/ oneiric main
deb-src http://ceph.newdream.net/debian/ oneiric main
EOF
apt-get update

apt-get install ceph

Прописать в hosts IP-адреса ваши сервера s0, s2, s3

Создать файл cluster.conf

[global]
	auth supported = cephx
	keyring = /etc/ceph/$name.keyring

[mon]
	mon data = /data/mon.$id

[mds]

[osd]
	osd data = /data/osd.$id
	osd journal = /data/osd.$id.journal
	osd journal size = 1000

[mon.a]
	host = s1
	mon addr = 192.168.59.10:6789

[mon.b]
	host = s2	mon addr = 192.168.59.12:6789

[mon.c]
	host = s3
	mon addr = 192.168.59.13:6789

[osd.0]
	host = s1
[osd.1]
	host = s2

[osd.2]
	host = s3

[mds.a]
	host = s1
Создать на каждом сервере папку с данными, например для s0 mkdir /data/osd.0
Сделать безпарольную авторищацию по ssh между серверами.
На каждом сервере создаем свою папку для данных, например на c1 это выглядит так:
mkdir /data/osd.0
На каждом сервере:
mkdir /var/run/ceph
Затем на главном
mkcephfs -a -c cluster.conf -k cluster.keyring
Скопировать на каждый сервер cluster.conf в /etc/ceph/ceph.conf и выполнить /etc/init.d/ceph start
Подождать, пока кластер войдет в рабочее состояние, проверить это можно командой
ceph -k cluster.keyring -c cluster.conf health
Должна появиться надпись:
2011-09-06 12:33:51.561012 mon <- [health]
2011-09-06 12:33:51.562164 mon2 -> 'HEALTH_OK' (0)
На главном сервере:
ceph -k cluster.keyring -c cluster.conf auth list


client.admin
        key: AQCBJUlPuIarKRAA1dP4J+Kq+8P0fyZK6MqENg==
        caps: [mds] allow
        caps: [mon] allow *
        caps: [osd] allow *
Отсюда нужна строка key, её вставим в клиента.

Настройка клиента, Ubuntu 11.10

Изначально имеет: Ubuntu Server в минимальном варианте внутри VMWare, на жестком диске файловая система / – Ext4, /data – btrfs

Всё выполняем от имени root (oneiric – название дистрибутива, на сайте есть список поддерживаемых)

wget -q -O- https://raw.github.com/NewDreamNetwork/ceph/master/keys/release.asc \
| sudo apt-key add -
tee /etc/apt/sources.list.d/ceph.list <<EOF
deb http://ceph.newdream.net/debian/ oneiric main
deb-src http://ceph.newdream.net/debian/ oneiric main
EOF
apt-get update

apt-get install ceph

mkdir /ceph

mount -t ceph 192.168.59.10:6789:/ /ceph/ -vv -o name=admin,secret=AQCBJUlPuIarKRAA1dP4J+Kq+8P0fyZK6MqENg==

secret – строка, полученная при настройке сервера

Тест внутри VMWare на домашнем ноутбуке

На домашнем ноутбуке настроил кластер из 3-х серверов, по 512МБ памяти на каждом, подключил к ним 3-х клиентов. На положить-отдать файл всё работает, изменения показываются.

Запустил на одном из клиентов bonnie++. Некоторое время всё работало, потом подвисло на стадии “Delete files in random order...”, два сервера хранения из 3-х заняты на 100% процессами (на одном cosd, на втором cmon). Запустил ls /ceph на одном из клиентов – завис намертво.

Из-за чего завис непонятно – может просто ресурсов нехватило – на каждом сервере было 512МБ памяти, а рекомендуется несколько гигабайтов. Надо пробовать на более мощном железе.

Тест внутри Hyper-V

В кластере 3 серверные машины, на каждой 4 ядра процессора и 4Гб памяти,  Linux s2 3.0.0-12-generic-pae #20-Ubuntu SMP Fri Oct 7 16:37:17 UTC 2011 i686 i686 i386 GNU/Linux

1 Сервер метаданных, 3 сервера с данными, 2 клиента, нагрузка с одного клиента, вторым наблюдаю изменения визуально

Провожу нагрузочный тест bonnie++.

Эталон bonnie++ на локальной файловой системе выполнялся 7 минут, на распределенной выполняется уже больше 5 часов, думаю конкретных цифр можно уже не дожидаться. Попробовал перенести файлы журналов в память (tmpfs) кардинальных изменений не увидел – за 40 минут выполнились только первые 2 теста.

При выключении кластера обращения к нему с клиентских машин просто зависают, вместо того чтобы отвалиться.

При удалении через rm –rf папок внутри ceph на 32-битных клиентах возникает ошибка, что папка ресурсивно зациклена, в багрепортах отмечено что это из-за 32-битности – inode 64-битные и 32-битная уникальность не соблюдается.

В общем для использования на данный момент не подходит.

14 февр. 2012 г.

Настройка OpenVPN в Windows по шагам

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

Действия на сервере:

  1. Скачайте и установите OpenVPN на сервер. Скачать можно с официального сервера или у меня.
  2. Создать папку c:\keys
  3. Открыть командную строку для папки c:\Program Files (x86)\OpenVPN\easy-rsa\
  4. запустить init-config.bat
  5. Поправить vars.bat
    • set KEY_DIR=c:\keys
  6. Выполнить build-dh.bat
  7. Выполнить build-ca.bat
  8. Выполнить build-key-server.bat <имя сервера>
  9. Для каждого клиента выполнить build-key.bat <имя клиента>
    • Для каждого клиента указывать уникальные значения Common Name и Name

Конфиг сервера:

ifconfig 192.168.8.1 255.255.255.0
dev tap
port 35900
proto tcp-server
mode server
tls-server
dh c:/keys/dh1024.pem
ca c:/keys/ca.crt
cert c:/keys/<имя сервера>.crt
key c:/keys/<имя сервера>.key

Действия на клиенте

  1. Скачайте и установите OpenVPN.
  2. Создайте папку c:\keys
  3. С сервера скопируйте в неё файлы: ca.crt, <имя пользователя>.crt, <имя пользователя>.key

Конфиг клиента:

ifconfig 192.168.8.2 255.255.255.0
dev tap
remote <Доменное имя или IP-адрес сервера>
rport 35900
proto tcp-client
connect-retry 1
connect-retry-max 605000 # about 1 week
resolv-retry 10
nobind
tls-client
ca c:/keys/ca.crt
cert c:/keys/<имя клиента>.crt
key c:/keys/<имя клиента>.key

У каждого клиента должен быть свой ключ и свой IP-адрес.

8 февр. 2012 г.

Samsung Galaxy S2 Hard reset

  1. Вытащить аккумулятор
  2. Подождать минимум 10 секунд
  3. Нажать кнопку прибавления громкости и не отпускать
  4. Нажать кнопку Home (аппаратная на передней панели телефона) и не отпускать
  5. Нажать внопку Вкл и не отпускать
  6. При появлении первой надписи отпустить все кнопки
  7. В появившемся меню кнопками громкости выбрать wipe data/factory reset и нажать Home
  8. Выбрать reboot system now и нажать Home
UPDATE: при полном сбросе могут сброситься точки доступа к GPRS/3G. Подробнее.

2 февр. 2012 г.

Качественный голосовой набор для Android

Программа Cyberon Voice Commander.

https://market.android.com/details?id=com.cyberon.cvc.RUS

Хорошо работает с русским языком в уличных условиях при нормальной речи с естественной четкостью речи.

Когда то давно я пользовался нокиями, там была замечательная функция – голосовой набор, который просто работал. На Android я тоже давно искал такую программу, чтобы можно было звонить по телефону прямо с ганитуры, не вынимая его. Сегодня я такую программу нашел. Она неимоверна проста и удобна в использовании. На её изучение потребовалось несколько секунд чтобы начать пользоваться и еще пара минут для того чтобы понять что и где можно поднастроить (например количество цифр для цифрового набора номера и тренировка под цифры).

Умеет:

  1. Звонить по имени в записной книжке (называть сначала имя, потом фамилию).
  2. Цифровой набор (набирает диктуемый номер)
  3. Повторный набор последнего номера
  4. Перезвонить тому, кто звонил последним
  5. Показать на экране журнал звонков
  6. Показать контакт по имени
  7. Запустить программу
  8. Сказать текущее время

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

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

 

При звонке диалог с программой выглядит примерно так П – программа:

Я – Позвонить папа

П – Позвонить папа. Дом, сотовый или отменить?

Я – сотовый

П – сотовый, набор

 

или так:

Я – позвонить папа на сотовый

П – позвонить папа на сотовый, правильно?

Я – да

П – набор

 

или так:

Я – цифровой набор

П – назовите номер

Я – ноль шеть один один

П – ноль шесть один один. Подтверждение, отмена или перенабор?

Я – подтверждение (или просто да)

П - набор

1 февр. 2012 г.

CygWin как легковесная виртуальная среда

Решил попробовать CigWin, чтобы пользоваться для себя некоторыми удобными возможностями Linux в домашних условиях, например mc, ssh, цепочки команд, bash и т.п.

Оказалось, что это действительно работает, только медленно. У меня получается, что подключаться по SSH к удаленному серверу и работать там быстрее, чем CigWin работает локально. Локально даже переключение по Tab в mc подтормаживает.

В итоге поставил Ubuntu в виртуальную машину, к ней же средствами VMWare подключил папки основного компьютера, чтобы с ним можно было работать и подключаюсь туда по SSH.

2 янв. 2012 г.

Samsung Galaxy S2

Подарил себе на новый год новый телефон.

Начальный интерфейс не показался мне каким-то сильно удобным, поменял его на Go Launcher и Go Contacts.


Расхождения с ожиданиями:
1. В телефоне 2Гб "внутренней" памяти для установки программ и еще 12 для данных (тоже где-то внутри), вместо ожидаемого общего объема, куда можно программы ставить (в общем не критично, в большинстве случаев даже удобно).
2. Нет аппаратной кнопки поиска.

Ощущения:
1. Работает быстро, это факт (хотя на стандартном интерфейсе ощущались некоторые задержки в отображении эффектов, именно задержки на 0.3-0.5 сек, не тормоза).
2. Фотокамера 8 Мегапиксеоей, но качество фотографий от этого каким-то особым не становится, SonyEricsson C902 фотографировал значительно лучше с 5-ти мегапиксельной камерой. Качества достаточно для того чтобы фотографировать тексты или делать какие-то снимки, когда больше под руками ничего нет, но вообще лучше иметь с собой нормальный фотоаппарат/видеокамеру.
3. Звук громкий, классный, чистый.
4. Время жизни аккумулятора: на просмотр 1.5-часового фильма ушло 19% заряда аккумулятора (т.е. грубо хватит на 7.5 часов просмотра фильмов).
5. Следы от пальцев на экране конечно остаются, но нужно присмотреться, чтобы их заметить.
6. Очень яркая вспышка.
7. Очень понравился экран - видео показывает красочно, тексты - четко.

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