15 дек. 2011 г.

Crashplan unlimited backup

Crashplan - really unlimited storage.

Timofey - me, Tom N. - support staff.

Chat with support:
Tom N. has joined the room
Tom N.
Hi there. How can I help today?
timofey
Can I store large amount of data in unlimited unlimited plan? Large is about 1-3TB per server for 40 servers.
Tom N.
I would recommend CrashPlan PRO unlimited. It truly is unlimited. 3TB for 40 servers is just fine. :)
timofey
Can you answer - how you will save it? Cost of storage 3TB of data much more then $8/mounth
Tom N.
We charge $7.49 per month per machine.
timofey
yes, $8 is round($7.49) :)
timofey
Tom N.
I don't quite understand your question.
timofey
I will pay to crashplan $7.49/mounth
timofey
prime cost of storage 3TB of data much more then $8.
timofey
Why you will change me lower then you will pay for storage my data?
Tom N.
OK, well, I don't have that information. All I can give you is what we charge for the service.
timofey
thanks

12 дек. 2011 г.

О надежности паролей

Предистория: Знакомая потеряла пароль, попросила восстановить из базы QIP, там хранится только md5-хеш, при полном изначально отсутствующем опыте и т.п. вместе с изучением того как это делается подбор занял меньше суток на домашнем компьютере. Потом попробовал на амазоновском - там подбор занял 3 часа.

Вывод: Если пароль важен и хотя бы какой-то его хеш доступен для перехвата, то пароли должны быть очень надежными. Сейчас они на одном сервере перебираются со скоростью 250 миллионов паролей в секунду.

Детали:
Если известен MD5-хеш пароля, то 1-7 символьные пароли вроде: маленькие буквы, цифры ломается полным перебором за 9 секунд, 8-символов - за 3 часа на мощном сервере, 20 часов на ноутбуке.

Пароли с буквами в разном регистре, цифрами, спец. символами:
6 символов - около 40 минут
7 символов - 77 машинных часов (календарных может быть меньше, при аренде нескольких серверов).
8 символов - 7300 машинных часов.

Стоимость такого переборного машинного часа в amazon: от 23 рублей.

Итого, максимальна стоимость подбора пароля в пересчете на рубли:
Стоимость подбора пароля при аренде серверов в amazon:
маленькие буквы и цифры 8 символов: 60 рублей или просто подождать на домашнем компе.
со спец. символами, 7 символов: 1600 рублей
со спец. символами, 8 символов: 150 тыс. рублей

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

25 нояб. 2011 г.

whoosh-appengine–полнотекстовый поиск для Google App Engine

На маленьких примерах работает хорошо, есть записей какое-то ощутимое количества или какие-то из них большие (не выяснял что именно) – просто перестает работать с исключением.
ResponseTooLargeError: The response from API call datastore_v3.RunQuery() was too large.
Для проба предложил ему проиндексировать пробную базу писем около 1000 штук, меньше чем по 30кб текста (обычно значительно меньше).
После 200-300 штук это исключение вылезало что при записи, что при попытке чтения из хранилища, при этом по объему индексов понятно, что там скорее всего ничего особо небыло (меньше 2-3 мегабайтов суммарно все объекты).
P.S. возможно это проблема Python 2.7 в режиме threadsafe: yes, видел описание похожего бага.
https://github.com/tallstreet/Whoosh-AppEngine
http://code.google.com/p/googleappengine/issues/detail?id=6282
Update: Попробовал использовать после исправления ошибки - теперь GAE нехватает памяти для работы с индексом. Пока пользуюсь Google Cloud SQL, жду полнотекстового поиска.

Обработать все данные в Google App Engine

Иногда возникает ситуация, когда нужно что-то сделать со всеми объектами в хранилище, либо со всеми объектами одного типа.

делается это просто:

1. Скачать с http://code.google.com/intl/en/appengine/downloads.html файл “MapReduce Bundle”

2. Положить папку mapreduce из архива в корень проекта

3. Создать файл mapreduce.yaml с описанием обработчика, например:

mapreduce:
- name: onetimetask
  mapper:
    input_reader: mapreduce.input_readers.DatastoreKeyInputReader
    handler: pages.OneTimeTask.process
    params:
    - name: entity_kind
      default: EMail
    - name: shard_count
      default: 2

означает, что обработчиком будет функция process в модуле pages.OneTimeTask, в функцию передается  одно значение, в данном случае это ключ объекта типа EMail, обработку вести в два потока.

4. Создать функцию, указанную в параметре handler, например

def process(key):

    logging.debug(str(key))

5. Зайти на страницу /mapreduce и запустить задание кнопкой.

Более подробное описание

http://code.google.com/p/appengine-mapreduce/wiki/UserGuidePython

16 нояб. 2011 г.

Скрыть содержимое буфера от программ, следящих за его изменением

WIN_API

1. Зарегистрировать формат "Clipboard Viewer Ignore", формат должен называться именно так, как тут написано.

CF_CLIPBOARD_VIEWER_IGNORE = (CLIPFORMAT)RegisterClipboardFormat(_T("Clipboard Viewer Ignore"))

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

SetClipboardData(CF_CLIPBOARD_VIEWER_IGNORE, “MyProgram”);
SetClipboardData(CF_TEXT, content);

 

Для C#:

DataObject d = new System.Windows.Forms.DataObject();

doData.SetData("Clipboard Viewer Ignore", false, “MyProgram”);

doData.SetText(“Content”);

Clipboard.SetDataObject(doData);

9 нояб. 2011 г.

Google Cloud SQL

Пару дней назад получил доступ к тестирование Google Cloud SQL.

Выглядит это как собственные полноценные MySQL-сервера 5.1, к ним можно подключаться из Google App Engine и (через специальный Java-Driver) снаружи. Есть импорт и экспорт через файлы Google Storage for developers.

Есть доступ к Web-консоли, где можно создавать новые сервера, изменять настройки имеющихся и выполнять произвольные SQL-запросы.

Внутри каждого сервера можно создавать свои базы данных, своих пользователей, пароли и т.п., можно указывать у каких GAE-приложений есть доступ к каждому экземпляру MySQL, т.е. несколько разных приложений могут одновременно иметь доступ к одному экземпляру MySQL и работать с общими данными.

Работает полнотекстовый поиск (собственно для него сейчас MySQL и нужен).

Подключение из Python выглядит так:

conn = rdbms.connect(instance='blabla:bla', database='db_name')

Запросы к базе выполняются через стандартный Python-интерфейс DB-API 2.0, например так:

cursor = conn.cursor()
        cursor.execute('INSERT INTO `email` (`id`, `time`, `from`, `to`, `subject`, `comment`, `text`) VALUES (%s, %s, %s, %s, %s, %s, %s)',
                [email.id(), email.Time.strftime('%Y-%m-%d--%H-%M-%S'), email.From, email.To, email.Subject, email.Comment, email.Text])
        cursor.close()
        conn.close()

Пока для тестирования предоставляется бесплатно, о дальнейшей стоимости ничего не сказано.

Мне понравилась возможность совмещать нереляционное и реляционное хранилище.

Про скорость работы пока ничего не понятно – объем данных пока маленький.

14 окт. 2011 г.

DropBox vs Gladinet vs LiveDrive

DropBox – $10/мес

Работает очень хорошо и свои функции выполняет, но идейно хочется иметь какое-то online-хранилище, которое видно на компьютере в виде диска, а отдельные указанные папки постоянно закешированы на локальном диске – чтобы программы например быстро запускались и в оффлайне можно было бы поработать, но при этом сам диск по объему более-менее безграничный и доступный с разных компов.

Gladinet $50 единовременно

На первой тысяче файлов, доступной в бесплатной версии работал вполне хорошо. Купил для использования полную.

В отличие от двух других это не сервис, а программа, которая позволяет монтировать разные хранилища как папки сетевого диска + умеет кешировать данные локально. По результатам испытаний оказалась непригодна в моих условиях (ориентировочно 40Гб в 108 тысячах файлов для начала, потом больше), тесты проводились на еще объеме – 4Гб в 83 тыс. файлов:

  • Google Docs – гугль начинает банить после какого-то количества обращений + синхронизация и до бана идет довольно медленно
  • FTP – работает, быстро, хорошо, но не с Total Commander – ели работать с Total Commander –просто виснет на первой же команде и не работает. Разработчики подтвердили – проблема именно с Total Commander, а поскольку это основной файл-менеджер – вариант тоже не подходит
  • Amazon – работает вполне хорошо, но в моих объемах относительно дорого за траффик (в смысле платить амазону за исходящий трафик и за операции с кучей мелких файлов).
  • Picasa – может хранить только картинки (собственно для этого и предназначено)
  • SkyDrive – относительно мало места, но это даже не главное – оказалось SkyDrive не поддерживает больше 9 уровней вложенности папок, в результате eclipse туда не записался.

В результате ни одно хранилище, кроме амазона не работает, а амазон работает, но выходит дороже DropBox и менее удобно. К тому же Gladinet представляется видимо как WebDAV, так что часть операций с него не работает, например программу туда поставить нельзя.

Пришлось попросить вернуть деньги, деньги вернули.

LiveDrive $16/мес.

Представляется как обычный локальный жесткий диск, файлы хранятся в Online + можно указывать какие файлы/папки кешировать на жестком диске, по умолчанию дается 2ТБ (терабайта)

Для кеширования можно выбрать локальный диск, где кеш будет храниться. В корне диска создается папка, внутри файлы хранятся под ID-шниками – похоже на MD-5 с распределением на несколько уровней вложенности. Метаданные о файлах хранятся в SQLite-базе, так что в случае какой-то крупной аварии на сервисе или его закрытии – кешированные файлы хость и с трудозатратами, но можно будет восстановить.

На маленьких объемах работает отлично. Попробовал туда скопировать сразу всё что в DropBox лежит. Само копирование на логический диск прошло хорошо и быстро – как в соседнюю папку. Дальше начались странные проблемы:

  • Очень медленно считался объем файлов для upload – больше 12 часов
  • Из-за больших пауз в uploadf на какие-то системные нужны (вроде как передача списка файлов или что-то подобное) за почти сутки успел залить только около 3-4Гб. При это в то время когда upload шел он был довольно быстрым 300-500КБ/сек
  • За сутки с фатальной ошибкой вылетел 2 раза.
  • Все сутки загружал процессор на 25-35% (2-ядерный Core 2Duo, каждое ядро с Hyper-Threading).

Удален. Идея хорошая, но реализаия еще сырая.

Вывод

Пока остановился на DropBox – это работает, работает надежно и быстро.

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

12 окт. 2011 г.

Google App Engine 1.5.5 SDK, Python 2.7

Google выпустил SDK 1.5.5 для Google App Engine, в нем поддерживаются транзакции с разными группами объектов, Python 2.7, мультипоточность в Python и другие интересные вещи.

Теперь каждый экземпляр приложения может выполнять несколько параллельных запросов и/или использовать несколько потоков для выполнения каждого запроса.

Важное примечание

SDK 1.5.5 не полностью поддерживает Python 2.7, например не поддерживается параметр threadsafe: yes и нет дополнительных библиотек для Python 2.7 – их нужно добавлять в приложение своими силами. При этом на серверах всё должно работать. На форуме Google это прямо подтверждает, комментируя что Python 2.7 еще экспериментальный и сейчас важнее не сломать то что есть, чем вводить в SDK новые функции.

 

Далее перевод из блога http://googleappengine.blogspot.com/2011/10/app-engine-155-sdk-release.html

App Engine 1.5.5 SDK Release

В 2011 году вышло несколько интересных релизов Google App Engine. На улице становится холоднее, дни короче, а мы всё усерднее работаем над нашим последним релизом.

Преимум-аккаунты

Когда вы выбираете платформу для самых важных бизнес-приложений мы понимаем, что гарантии того что она будет работать непрерывно, легко управляться и сопровождение платной поддержки так же важны, как и набор функций. Сегодня мы запускаем премиум-аккаунты. За $500 в месяц (не включая затраты на интернет) вы получаете:

  • Приоритетную поддержку (детали можно посмотреть в руководстве).
  • Гарантия непрерывной работы в течение 99.95% времени (посмотрите черновик соглашения, итоговое соглашение подписывается в оффлайне).
  • Возможность запускать неограниченное количество приложений на премиум-домене.
  • Отсутствует ежемесячный минимальный платеж за каждое приложение – вы платите только за используемые ресурсы.
  • Ежемесячное выставление счета.

Для получения премиум-аккаунта свяжитесь с нами по email [email protected]

Python 2.7

PIL? NumPy? Параллельное выполнение запросов? Python 2.7 поддерживает всё это и сегодня мы запускаем Python 2.7 как экспериментальный релиз. Мы сделали сравнительную таблицу между текущим окружением python 2.5 и новым.

Общие изменения

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

  • Длительность выполнения запроса: Приложение переднего плана (frontend) теперь может обрабатывать запрос 60 секунд вместо 30, мы увеличили максимальное время выполнение запросов URLFetch с 10 до 60 секунд
  • Файловые лимиты: максимальное число загружаемых файлов увеличено с 3000 до 10000 и максимальный размер файла увеличен с 10 до 32 мегабайтов.
  • Лимиты API: Объем POST-данных для URLFetch-запроса теперь 5МБ вместо 1МБ

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

  • Предварительный показ облачного SQL: на прошлой недели мы анонсировали предварительный показ поддержки SQL в Google App Engine. Возьмите, попробуйте и сообщите нам что вы об этом думаете.
  • Полнотекстовый поиск: Для доверенных тестеров мы предоставляем API для полнотекстового поиска. Заполните форму если вам интересно его попробовать.
  • API конвертации: Вы хотите переводить текстовый формат в PDF? Вы можете заполнить запрос на вступление в группу доверенных тестеров API конверсии.

Хранилизще

  • Межгрупповые транзакции (Cross Group (XG) Transactions): Для тех кому нужны транзакции между несколькими разными группами объектов (это наверное почти все?) – теперь для таких транзакций используется двух-этапное подтверждение транзакции, и транзакциями с объектами из разных групп можно так же, как раньше вы работали с одной группой.

Улучшения платформы

Конечно это высокоуровневые изменения. Мы добавили много новых возможностей и исправили много ошибок.

http://googleappengine.blogspot.com/2011/10/app-engine-155-sdk-release.html

30 сент. 2011 г.

Выбор программы для поддержки клиентов

Предистория

Как часть своей деятельности занимаюсь платной поддержкой клиентов, сейчас нас работает 2-е человек, но синхронизироваться между собой всё равно получается проблемно.

Сначала работали просто через web-интерфейс gmail, оказалось неудобно. Пробовал ставить osticket.ru на свой сервер, получилось еще более неудобно – система плохо понимает вложения в почту с русскими названиями, HTML-письма и просто как-то неудобно работать, клиентам шлет письма в непонятном для клиентов формате (текстовый, некрасивый). Много вопросов что это вообще такое и как туда писать. Неправильно подставляются имена отправителей и т.п. Т.е. в принципе это все руками допиливается, но времени на это выделять не хочется, есть ощущение что проще написать с нуля, уже даже почти к этому пришел, иначе общение с клиентами растягивается из-за рассинхронизации в работе.

Задача

Найти программу или сервис, помогающие в работе с клиентами. Требования:

  • Простая в использовании
  • русскоязычная клиентская часть (или ее легкая русификация)
  • бесплатная или с низкой стоимостью
  • с поддержкой приема заявок с произвольного email, не заведеного раньше в системе
  • удобное разделение заявок между сотрудниками
  • поддержка вложений в письма на русском языке
  • Возможность легкой интеграции с существующим биллингом – чтобы при закрытии заявки клиенту автоматом выставлялся счет, а сотруднику записывалась оплата за работу.

Рассмотренные варианты

support.zoho.com

Полностью русифицирован интерфейс включая админку, но сложная в освоении – я так и не разобрался как с ней работать, не нашел какой-то элементарной функции, которая мне была нужна для интеграции. Она наверняка есть, но где-то спрятана. Стоимость от $12 за пользователя в месяц. Есть бесплатная версия для одного пользователя.

SysAid.com

Полностью русифицирована, но как-то явно не техническими специалистами – написано вроде по-русски, но очень непонятно – уж лучше по-английски. Высокая сложность понимания системы – очень много функций, ссылок, нужно долго искать то, что нужно. Предназначена немного для другой сферы – для постоянной поддержки определенного круга клиентов с учетом их оборудования, подключением к удаленному рабочему столу и т.п. Лицензионная модель совершенно не подходит. Оплата одноразовая, ПО устанавливается на свой сервер. Есть ограничение на количество клиентов, что в моем случае с одноразовыми дешевыми заказами не приемлимо. Цен на сайте нет, в предложении по email обозначались цены начиная от $500 с чем-то (единоразово). Есть русскоговорящие сотрудники поддержки. В описании это не заявлено, но когда я пояснил причину отказа со мной связалась Елена и рассказала про продукт, который как раз предназначен для моих задач – sysaidcss (описание далее), доступно объяснила разницу между продуктами. Есть бесплатная версия для 2-х сотрудников и 100 клиентов.

sysaidcss.com

Версия SysAid ориентированная как раз на мой случай – без учета оборудования и количества клиентов. Высокая сложность понимания системы – очень много функций, ссылок, нужно долго искать то, что нужно. Оплата одноразовая, но ПО предоставляется как сервис – на серверах разработчика. Стоимость лицензии около $280 на каждого сотрудника (единоразово), на сайте цены так же отсутствуют. Предложение не заинтересовало из-за высокой на данный момент входной стоимости (в долговременной перспективе разовая оплата конечно выгоднее, к тому же стоимость получается как у других продуктов меньше чем за год использования) + непонятно на что сервис будет жить если оплату он с меня взял 1 раз, а поддерживать обязуется постоянно. Так же через моего провайдера была тормознутая связь с их серверами, на следующий день скорость улучшилась, но все равно было тормознуто – тормоза где-то на промежуточном узле проявляются.  Есть бесплатная версия для одного сотрудника и не более чем 100 обращений в месяц.

freshdesk.com

Очень простая, но довольно функциональная система. Поддержка русскоязычности отсутствует, но простота использования готова была это перекрыть. Стоимость от $9 в месяц на сотрудника. Причем уже в базовом варианте можно использовать сервис на своем домене, у конкурентов это можно делать только на более дорогих тарифах. Недостатком оказалось отсутствие официального описания API. Т.е. оно вроде есть (в гугле находится), но по какой-то причине не выставленное на видное место и поэтому доверия не вызывает, по внешнему виду чем-то напоминает zendesk.

zendesk.com

Заявлена поддержка русского языка и для клиентской части он действительно поддерживается в части надписей элементов оформления, шаблоны писем нужно править вручную. Служебный интерфейс есть только на английском, но там все просто. Цены начинаются от $9 в месяц за сотрудника на тарифе “старт”, по этому тарифу разрешается работать не более чем 3-м сотрудникам, дальше нужно переходить на более дорогие тарифы – от $29 в месяц за сотрудника, где количество сотрудников не ограничивается. Есть простое удобное двустороннее API (я могу управлять сервисом, а сервис может уведомлять меня о событиях). Собственно Zendesk и был выбран.

22 сент. 2011 г.

Linux, FreeBSD

Я для себя понял следующее:
1. Ubuntu - самая удобная и потому резко набирающая популярность, скорее всего уже и самая распространенная
2. CentOS - самая стабильная - клон коммерческого Redhat (теперь Fedora)
3. Gentoo - собирается целиком из исходников, всё ПО тоже из исходников, за счет таких оптимизаций может чуть быстрее работает, но на домашнем компе врядли заметно. ПО ставится долго
4. FreeBSD - не Linux, но всё же. Стабильная, стройная. Возможность установки ПО из исходников или бинарными пакетами - для каждой проги на выбор. Информации и добавок меньше, чем для Linux (т.е. поковырявшись можно запустить всё - там есть режим бинарной совметимости, но из коробки часть прог для FreeBSD не идет), зато из коробки работает ZFS, что для домашнего пользования в общем почти пофиг.

Инструменты для создания прототипов

Оригинальный пост, Оригинальная таблица

Список программ для создания прототипа пользовательского интерфейса.

20 сент. 2011 г.

Как сообщить о фишинговом сайте

Internet Explorer

Чтобы с помощью Internet Explorer 7 сообщить о веб-узле, который занимается фишингом, в меню Сервис последовательно выберите пункт Фильтр фишинга, затем — Сообщить о веб-узле.

Chrome

Гаечный ключ - инструменты - сообщить о проблеме.

или на странице http://www.google.com/safebrowsing/report_phish/

Firefox,Safari

Используют сервис от google.

17 сент. 2011 г.

Установка Ubuntu 11.04 на Hyper-V

1. При загрузке с образа диска графическая установка не запустилась, для запуска текстового варианта нужно сначала нажать Enter, согласившись что установка будет на английском, потом нажать F6, затем Esc и написатьvga16fb.modeset=0 в строке параметров
2. Прописать в /etc/initramfs-tools/modules

hv_vmbus
hv_timesource
hv_netvsc
hv_utils
и выполнить $ update-initramfs -u
В отличие от Андрея обычный адаптер “Network Adapter” у меня определяется eth0, а не seth0, поэтому в /etc/networks/interfaces запись вида

auto eth0
iface eth0 inet dhcp

 

Отличия от 10.04

В отличие от Ubuntu Server 10.04 произошло изменение набора модулей:

модули hv_storvsc и hv_blkvsc отсутствуют, зато добавился новый hv_timesource.

14 сент. 2011 г.

Клонирование Ubuntu

Ubuntu запоминает ID-шники устройтв, поэтому при клонировании нужно удалять файлы /etc/udev/rules.d/*.rules – тогда все устройства определятся по новому и сетевая карта останется eth0, а не станет например eth2.

5 сент. 2011 г.

Посудомоечная машина Hotpoint-Ariston LSF 8357

Требования

К моменту покупки сформировались следующие требования:

  • Отдельно стоящая (настольная уж больно много места на столе занимает и главное – больно мало посуды в нее помещается. Высокую кастрюлю уже не поставить или кастрюлю с тарелками и т.п.)
  • С программой предварительного замачивания – чтобы копить посуду до полноценной мойки
  • С функцией половинной загрузки – у нас семья из 2 человек и первое время половина машинки это то, что нужно.
  • Вместительность на 8-12 комплектов посуды – чтобы не париться над заменой при пополнении семьи
  • Подключаемость к холодной воде (горячая не настолько горяча как нужно, при этом как я понял из интернета она не во всех моделях дальше подогревается)
  • Наличие индикаторов соли, ополаскивателя – ни на какие шарики внутри машины я регулярно смотреть не буду это 100% – забуду.
  • Максимально простое управление, в идеале одна кнопка “помыть посуду хорошо”.

Факт

Итог - Hotpoint-Ariston LSF 8357 в магазине эльдорадо. На официальном сайте такой модели нет, как в прочем и в яндекс-маркете. Есть похожие, но немножко другие. В паспорте про конкретные функции ничего не написано. В общем что удалось понять на глаз:

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

Нет: автоопределение жесткости.

Непонятно: турбосушка (забора воздуха в момент сушки не слышно), автоопределение грязности посуды (в инструкции написано что есть в некоторых моделях, а есть ли именно в этой непонятно - программа такая есть, но цена в 15 тыс. рублей настораживает, видимо единственный способ узнать – позвонить в аристон и спросить).

Установка

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

Первая мойка

Загрузка: 3 тарелки, нож, 2 кружки, стакан широкий, стакан узкий, 2 кастрюли, крышка от кастрюли, толкушка для картошки и пластиковая лопатка для сковородок. Лопатку пришлось отвернуть к стенке, иначе мешала крутиться верхнему распылителю.

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

Решили что это вполне половинная загрузка – положили половину таблетки topper 10 в 1 (купили вместе с машинкой). Ничего для первого раза не настраивали. Запустили стандартную программу.

По звукам – похожа на стиральную машину, немножко потише.

Итог – ложки, нож, тарелки, кружки, стаканы – идеально чистые. На тарелках нашел по 1-2 плоских капли воды, при открытой машинке высохли минут за 10 – на стол можно ставить сразу. В дальнейшем думаю и они отрегулируются количеством ополаскивателя при использовании разных компонентов вместо таблетки.

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

Кастрюлька маленькая – снаружи на мой взгляд очень чистая, внутри остался нагар (кастрюлька пару раз  случайно оставалась гореть на плите по несколько часов).

Крышка стеклянная – осталось какое-то небольшое присохшее пятнышко рядом с дыркой для вентиляции.

 

В общем результатами доволен. Присохшие фигни нужно попробовать отмыть на специальных программах для грязных кастрюль и присохшей еды. Кроме того хочу отдельно купить порошок и лить все 3 компонента отдельно, чтобы дальше машинка сама разбиралась когда что и в каких количествах выпускать. Хотел сегодня найти такое средство без фосфатов – в интернете читал что есть. В магазинах увидел, что нет, завтра надо еще посмотреть.

31 авг. 2011 г.

Windows 8, попытка 1

Скачал с rutracker Windows 8 билд 7989, посмотреть. Ставлю на виртуальную машину VMWare. При установке выбрал, что это Windows 7 x64, 1 процессор 2 ядра, 1Гб памяти. Windows установилась, но при запуске VMWare выдает ошибку

image

30 авг. 2011 г.

Подключение монитора DVI к HDMI

Предистория:

У меня есть ноутбук, у которого свой встроенный монитор и два видеовыхода: VGA и HDMI. Так же у меня давно стоит ЖК-монитор с двумя входами: DVI и VGA. И все время пока он стоял – монитор был подключен по VGA, т.к. других совместимых разъемов нет, что такое HDMI представлял вообще с трудом, т.к. особо не интересовался.

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

Итог:

Пошел в магазин и спросил провод из HDMI в DVI, провод такой оказался и стоил 200 рублей. Собственно провод куплен, монитор подключен, я доволен.

P.S. до этого видел такой провод в цифровом, там он стоил 1.5 тыс. рублей, что мне кажется для бытового провода дороговато.

27 авг. 2011 г.

Автозагрузка upstart в Ubuntu

В ubuntu работает 2 механизма автозагрузки:

  1. Стандартный через уровни запуска в /etc/rcX.d/
  2. Через upstart, файлы настройки лежат в /etc/init

уровни запуска/остановки (или условия) записаны в строках “start on” и “stop on”.

Запуск/остановка таких демонов выполняется через команды serveice <daemon> start/stop или start/stop daemon.

Утилит командной строки для включеня/выключения автозапуска не найдено, только напрямую через файлы.

17 авг. 2011 г.

Создание сайта на Joomla

Создаю сервис по подбору оптимального тарифного плана для сотового телефона. Для online-сервиса естественно нужен сайт. Чтобы не заморачиваться решил сделать сайт на Joomla (сам сервис будет работать на других серверах, независимо от сайта).

Сайт должен иметь функции новостей, обсуждений и т.п.

Очень понравилась статья http://www.zhart.ru/web-design/70-how-to-create-a-blog-on-joomla-cms

Ниже копия статьи на случай утраты оригинала.

У каждого человека, который решил создать свой блог, встает вопрос: а на чем его создавать? Существует множество блог-платформ (ЖЖ, Blogger.com, Я.ру и т.д.), на которых можно совершенно бесплатно создать и начать вести свой блог. Однако эти платформы имеют ряд недостатков — очень плохая настраиваемость, чужая реклама на страницах блога, сложности или вообще невозможность монетизации и т.д. Поэтому многие блоггеры (в том числе и я) идут по пути создания автономного блога. В этом случае нужно платить за хостинг, а также устанавливать и настраивать движок, но результат как правило того стоит — вы практически ничем не ограничены по части функционала и внешнего вида блога, да и монетизировать такой блог обычно гораздо проще.

Итак, предположим, вы решили создавать свой автономный блог.
Первое, что нужно сделать — это позаботиться о доменном имени и хостинге для будущего блога. Советую пользоваться услугами проверенных регистраторов (например, RU-Centerили REG.ru), или регистрировать домены через хостера. Ну а в качестве хостера очень рекомендую TimeWeb — я пользуюсь их услугами уже много лет и доволен как слон — они предоставляют очень качественные услуги по очень умеренной цене. Кстати говоря, и домены у них можно купить значительно дешевле, чем напрямую у регистраторов, к тому же при оплате хостинга на год вам дадут бонусный домен бесплатно.

Какую же CMS (систему управления контентом, или попросту движок) использовать?
Из названия статьи несложно догадаться, что я буду рассказывать о создании блога набесплатной CMS Joomla, однако справедливости ради упомяну еще о паре движков.
Первый — Wordpress — является самым популярным блоговым движком. Это и понятно — функционал Wordpress-а заточен именно под создание блогов. Однако, при всей своей популярности и функциональности, Wordpress очень прожорлив по отношению к ресурсам сервера, а это значит, что если ваш блог станет популярным, то вам придется переходить на более дорогие варианты хостинговых услуг (например, размещать сайт на выделенном сервере).
Второй движок, который я хотел бы упомянуть — это MaxSite CMS, который является полной противоположностью Wordpress-у по части нагрузки на сервер. Это очень легкий блоговый движок, который вполне подойдет для простого блога. Однако этот движок разрабатывается одним человеком и на сегодняшний день не имеет такого богатого набора расширений, как более популярные CMS.

Тут нужно заметить, что основная причина того, что я взял за основу своего блога CMS Joomla, а не Wordpress или другую CMS — это то, что я привык работать с Joomla, сделал на ней большое количество сайтов (уже затрудняюсь посчитать, сколько именно). Поэтому статья как нельзя лучше пригодится для таких же «привыкших», как и я, тем более что после соответствующей доработки Joomla отлично работает в качестве блогового движка.
Впрочем, и пользователи-новички могут использовать эту статью в качестве руководства, тем более что именно для них написана почти вся вступительная часть и раздел, касающийся установки Joomla.

И еще одна кратенькая ремарка перед началом технической части.
На сегодняшний день последней версией является Joomla 1.6. Однако она вышла совсем недавно, а потому является не такой стабильной, как предшествующая ей версия Joomla 1.5. Кроме того, в силу тех же причин для Joomla 1.5 имеется гораздо больше расширений. Поэтому в этой статье я рассматриваю создание блога на Joomla 1.5. Впрочем, при достаточной сноровке вы сможете применить те же принципы и для более новых версий этой CMS.

Итак, делаем блог на CMS Joomla. С чего начать?
Вообще, для Joomla существуют специальные компоненты для создания блогов, однако я предлагаю пойти немного по другому пути. Joomla — это в первую очередь CMS для публикации статей, и она сама по себе является отличным движком для блога. Но в установленной с нуля Joomla для полноценного блогописательства не хватает некоторых вещей — системы комментариев, тегов, социальных кнопочек и прочих мелочей. И я предлагаю использовать в качестве основы блога «родной» компонент для создания статей в Joomla («com_content»), а все, чего не хватает — установить и настроить.

Установка Joomla

На этом этапе подробно останавливаться не буду, думаю вы справитесь.
Если вы решите воспользоваться хостингом от TimeWeb, то сможете установить Joomla буквально одним кликом прямо из панели управления аккаунтом.

Проблем не должно возникнуть и в том случае, если вы решите устанавливать Joomla вручную. Процесс установки Joomla описан очень подробно на множестве сайтов, вы наверняка сможете найти уйму материалов на эту тему. К тому же, если у вас есть хотя-бы минимальный опыт установки какой-либо CMS, то и с установкой Joomla вы наверняка справитесь — пошаговый мастер установки поможет даже полным новичкам. Могу также посоветовать обращаться в случае чего за помощью на русскоязычный форум поддержки пользователей Joomla, это очень дружелюбное сообщество, которое с радостью помогает новичкам.

Ну а теперь о самом главном — о расширениях, которые превратят ваш сайт на Joomla для превращения его в полноценный блог. Все нижеописанные расширения вы можете увидеть в работе на этом самом сайте (во всяком случае на момент написания статьи). Все рассматриваемые расширения бесплатны (как и сама Joomla).

JComments — компонент комментариев для Joomla

Самое первое, что сто́ит установить — это компонент комментариев, который позволит посетителям блога комментировать ваши записи. Самый лучший компонент комментариев для Joomla — это однозначно «JComments». Устанавливается он также просто, как любое другое расширение для Joomla. Можно также установить модуль, который будет отображать на заданных страницах сайта последние комментарии.

Joomla Tags — компонент тегов для Joomla

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

Кнопки социальных сетей для сайта

Пора добавить на наш блог немного социальщины. Вы ведь хотите, чтобы ваши посетители оставляли ссылки на страницы вашего блога в социальных сетях и сервисах? Отлично, приступим.

Поиски «социальных» расширений для Joomla заняли у меня немало времени. Несмотря на их обилие в «JED», хороших среди них не так уж и много. Хотелось чего-то неналяпистого и аккуратного, но в то же время заметного. В итоге я нашел то, что искал, и установил у себя на блоге сразу несколько расширений из этой серии, которые чудесно друг друга дополняют.

Первое, что я советую поставить — это модуль «Ya.Share». Как выглядит этот модуль в работе, вы можете увидеть вверху справа на этой странице. «Ya.Share» позволяет пользователям публиковать ссылку на текущую страницу в таких сервисах, как «Я.ру», «ВКонтакте», «Twitter», «Facebook», «LiveJournal», «Мой Мир», «FriendFeed», «Одноклассники».

Второе рекомендуемое мной «социальное» расширение — это плагин «VagrantWeb Social Buttons», увидеть в работе который вы можете в самом низу этой статьи. Он публикует всего несколько кнопок, однако их вполне достаточно на мой взгляд. Первая кнопка дает возможность опубликовать ссылку на текущую статью в Твиттере, а также отображает количество пользователей, которые уже опубликовали такую ссылку. Следующая — стандартная кнопка «Мне нравится» от Facebook. Наконец, третья кнопка позволяет опубликовать ссылку в сервисе «Google Buzz».

Если у вас есть аккаунт в Твиттере, о котором вы хотите сообщить своим читателям, рекомендую также установить модуль «FollowMe», который отобразится на вашем сайте в виде симпатичной птички в одном из углов страницы (у меня он внизу справа). Эта птичка — ссылка на ваш аккаунт в Твиттере (имя аккаунта нужно указать в настройках модуля).
Также при желании вы можете установить модуль «TweetXT», который будет выводить ленту ваших последних твитов (у меня этот модуль не установлен).

Другие полезные расширения для Joomla

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

Плагин «Page Navigation Titles» вместо безликого текста «Предыдущая» и «Следующая» отобразит на страницах статей названия соседних заметок. Это будет полезно как для пользователей сайта, так и с точки зрения поисковой оптимизации.

Плагин «JUMultithumb» — позволит создать уменьшенные изображения в анонсах статей, а также в самих статьях отображать в красивых лайтбоксах полноразмерные изображения. Советую использовать версию 2.5. Есть ощущение правда, что разработка плагина подзаброшена, да и на JED его удалили.

Update: Благодаря обсуждению в комментариях к этой статье решил дать возможность читателям блога подписываться на RSS-ленту не только через значок в адресной строке браузера (который присутствует в Firefox и Opera), но и непосредственно со страниц сайта. Заодно решил перейти со стандартного Joomla-вского RSS-механизма на «FeedBurner». Поэтому просьба к тем, кто читает меня через RSS, прописать в своих RSS-агрегаторахновый адрес моего фида.

RSS лента сайта

Итак, для удобства отслеживания статистики по посетителям советую вам последовать моему примеру, зарегистрироваться на «FeedBurner» (регистрация не нужна, если у вас уже есть аккаунт в Google), и создать в этом сервисе RSS фид для своего сайта.

Для того, чтобы в адресной строке Firefox-а и Оперы отображался FeedBurner-овский фид вместо стандартного, нужно для начала отключить стандартный фид для всех пунктов меню сайта. Делается это в настройках каждого из пунктов меню, в расширенных параметрах. После этого можно пойти двумя путями — либо установить и активировать плагин «RSS in URL Bar», либо вручную прописать в шаблоне сайта между тегами <head> и </head> следующую строку:

<link rel="alternate" type="application/rss+xml" title="Название вашего фида" href="/http://адрес-вашего-фида" />

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

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

Порывшись в каталоге расширений для Joomla я нашел неплохой плагин «ITPSubscribe», который позволяет вывести на страницах статей блочок, отображающий не только ссылку на фид, но и форму для подписки на уведомления о новых статьях по E-mail. Эта форма будет работать, только если вы используете RSS-фид от FeedBurner. Как выглядит этот блочок, вы можете увидеть на этой странице прямо под статьей.

Вот и все.
Совсем немного телодвижений — и ваш сайт на Joomla превращается в полноценный блог.

12 авг. 2011 г.

Казань, вечерняя экскурсия

Очень понравилась вечерняя экскурсия по Казани, вечером приятная прохлада и открываются красивые ночные виды, красивая подсветка мечети Кул Шариф, смотрится значительно лучше чем в дневном освещении. Рекомендую брать именно вечернюю экскурсию.

Казанская Ривьера, платный пляж

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

В стоимость вип-пляжа входят безалкогольные напитки в неограниченных количествах. Такими напитками оказались теплые кола, 7-up, буратино и вода. Всё без охлаждения, подогретое солнышком. Нормальные соки, которые стояли там же стоили уже нормальных денег, хотя они тоже безалкогольные и про ограниченный перечень бесплатных напитков нигде не написано.

При звонке в ривьеру спросил принимается ли оплата по пластиковым картам сказали – да, принимаем любые карты. В кассе принимают только наличку.

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

В вип-зоне вода в бассейне НЕ подогревается и по факту получается холодной для того чтобы заходить туда после загара на солнышке. На вопрос где каскады в вип-бассейнах (которые входят в стоимость билета) никто из персонала ответа не знает.

Зона катания на катамаранах ограничена площадью порядка 20*30 метров, т.е. как таракан под увеличительным стеклом.

Свадьба

Заметки к тому что нужно учитывать при подготовке к свадьбе:

  1. 1.5-2 кратный запас по бюджету. Не смотря на предварительный просчет бюджета в последние дни он резко увеличился где-то в 1.5 раза.
  2. В ресторане если жених с невестой сидят за отдельным столом – дать ресторану отдельную инструкцию, чтобы уменьшили на их столе объем каждого блюда в 2-3 раза. У нас двоих стояло столько же еды, сколько за столами, где сидели по 6 человек, целым осталось почти всё.
  3. Лучше, чтобы жених с невестой сидели за общим столом с гостями, так общаться гораздо проще.
  4. Платье в прокат брать никак нельзя. Когда готовили свадьбу рассматривали вариант проката, но потом почитав отзывы его отмели. В процессе свадьбы понял, что это было правильным решением – платье пачкается, если бы оно было прокатным – за это пришлось бы много доплачивать.
  5. С арендой автомобилей лучше если получится договориться со знакомыми. Если не получается – посмотреть частные объявления по газете из рук в руки, познакомиться с водителем и договориться напрямую, без агентства. Через агентство в среднем вдвое дороже, чем по объявлению.
  6. Если катание по городу длинное – невесте надо предлагать покушать несколько раз – она может захотеть покушать только через некоторое время после первого предложения.
  7. Если оператор снимает кружащуюся пару как бы от первого лица, то нужно предусмотреть, чтобы тот от чьего лица ведется съемка не попадал в кадр.
  8. Если едете в свадебное путешествие в Россию – лучше позвонить в гостиницу самостоятельно, а не через тур. агентство – для молодоженов часто предоставляются скидки, так же могут быть скидки при длительном проживании. Эту скидку можно взять себе (если позвонить напрямую) или оставить тур. агентству в качестве комиссии. В нашем случае звонок сэкономил около 20-30%.

Вообще свадьба вещь хорошая и приятная.

25 июл. 2011 г.

Google App Engine как быстрее хранить данные

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

К тому же в GAE в каждом объекте сохраняется название каждого поля + оно же хранится в каждом индексе, если индекс не отключается принудительно, т.е. в объем случае места может быть занято раз в 10 больше, чем сохраненно собственно данных.

Рассматриваемые варианты: поле объекта, десериализованный словарь. Для сериализации словаря есть два простых варианта – встроенный – Pickle и json. Тест выполнен следующим образом: каждая операция выполняется пока не будет получено исключение DeadlineExceededError, как только оно получено – выводится количество произведенных итераций и запрос завершается.  Каждый тест выполняется 4 раза. Первый тест идет для объего обзора и в усреднении не участвует, т.к. в этот момент запускается инстанс, собирается байт-код и т.п. Все запросы выполнялись по очереди, чтобы гарантировано обрабатываться на том же инстансе что и предыдущие
Получение свойства из объекта: 11581454, 15897754, 16719559, 15739328. Среднее: 16 118 880
Получение свойств из словаря: 117059883, 123362268, 171216019, 118629746. Среднее: 137 736 011
Сохранение в Json: 13637, 15078, 13947, 20607. Среднее: 49 632
Сохранение в Pickle: 70444, 60782, 71197, 70122. Среднее: 67 367
Загрузка в Json: 23493, 22166, 23793, 24599. Среднее: 23 519
Загрузка в Pickle: 122675, 123934, 122640, 112645. Среднее: 119 739

Общий вывод: для большого количества обращений к полям объекта лучше использовать словарь, к тому же это более гибкая структура, чем поле объекта. Для сериализации – Pickle. Пожалуй единственный минус pickle – результат получается человеко-нечитаемым, но в данном случае оно и не требуется.

23 июл. 2011 г.

Установка Ubuntu в Hyper-V: Ext3 vs Ext4

Делаю образ сервера для Ubuntu, изначально принял по файловую систему по умолчанию – Ext4, установил систему, смотрю размер vhd-файла – 900МБ.

Потом переставил ту же конфигурацию на Ext 3, размер vhd-файла 1700 МБ, причем до 300-400МБ файл вырос уже сразу после форматирования диска.

20 июл. 2011 г.

Неудачное обновление ubuntu 10.04 LTS

В процессе подгонки нового шаблона ubuntu сделал обновление apt-get upgrade, потом reboot.

После этого ubuntu уже не поднялась:

17 июл. 2011 г.

S3FS для FreeBSD

Озаботился сохранением резервной копии клиентских данных. Для малых объемов выгоднее всего оказался Amazon S3. Под FreeBSD доступна S3FS, позволяющая подключать S3 как файловую систему и не заморачиваться на деталях. По данным с сайта s3fs максимальный объем файла-64Гб (сам амазон накладывает ограничение 5Гб).

Попробовал закачать туда несколько мелких файлов – закачались на ура. Образ клиентской папки на 6Гб не закачивается вообще – даже не начинает.

При сохранении образа в S3 он сначала записывается в какой-то временный файл и всё – дальше дисковая/сетевая активность отсутствует.  На Amazon появляется файл с нужным именем и нулевым размером.

4 июл. 2011 г.

Новости Amazon

Amazon отменил оплату за входящий трафик и в связи с этим стал значительно выгоднее для резервного копирования, чем был.

При малых объемах (до 1ТБ, дальше - дешевле) 1Гб в S3 стоит примерно 2.80 рубля или 4.20 рубля в зависимости от уровня надежности  – надежно или очень надежно.

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

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

24 июн. 2011 г.

FAQ по новым ценам Google App Engine, обновление от 24 июня 2011

Оригинал http://code.google.com/appengine/forum/?place=msg%2Fgoogle-appengine%2FHluog1_a3n4%2FuFMhaBWhVi8J

Определения


Экземпляр приложения (Instance) - небольшое виртуальное окружение для запуска вашего кода с зарезервированной памятью и долей процессора.
Внешний экземпляр (Frontend instance) - экземпляр приложения, выполняющий ваш код и динамически масштабирующийся в зависимости от поступающих запросов, но ограниченный по времени обработки запроса.
Фоновый экземпляр (Backend instance) - экземпляр приложения, выполняющий ваш код с ограниченной масштабируемостью, основанной на ваших настройках, теоретически запускается и останавливается по вашей команде.
Очередь запросов (Pending Request Queue) – очередь запросов, ожидающих экземпляра готового их обслужить.
Задержка ожидания в очереди (Pending Latency) – время, которое запрос проводит в очереди
запросов.
Планировщик (Scheduler) - Часть инфраструктуры App Engine, которая определяет какой экземпляр должен обрабатывать запрос и когда нужно создать новый экземпляр.

Инфраструктура

Что такое экземпляр приложения (Instance)?
Когда App Engine запускает ваш код - создается маленькая виртуальная среда для выполнения кода с зарезервированной долей процессора и памяти. Например если вы запускаете Java-приложение, то для него стартует новая JVM и в нее загружается ваш код.


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

Как GAE определяет необходимой количество внешних экземпляр приложения (Frontend Instance)? 
Для каждого запроса планировщик есть ли свободный экземпляр для обработки запроса, должен ли запрос подождать или нужно создать новый экземпляр приложения. Он принимает во внимание количество уже запущенных экземпляров, их пропускную способность и количество запросов в очереди ожидания. Планировщик расчитывает предполагаемое время ожидания для обработки запроса и если оно больше 1 секунды - запускает новый экземпляр приложения. Если планировщик понимает что какой-то из экземпляров больше не нужен - он выключается.


Я должен будут платить за все приложения, которые сейчас показываются в панели администрирования? 
Нет, мы работает над изменением планировщика для оптимизации использования созданных экземпляров приложения, их число должно сократиться. Если вы используете Java и ваше приложение потоко-безопасно - один экземпляр приложения может обслуживать несколько запросов одновременно. То, что вы видите сейчас можно рассматривать как верхнюю границу количества экземпляров.


Как я могу контролировать количество запущенных экземпляров? 
Вместе с новым планировщиком появятся настройки того сколько много экземпляров приложения будет запускаться для обработки запросов. Более подробную информацию можно найти ниже, в вопросе “Какие нововведения сделаны в новом планировщике?”

Как я могу понять - сколько запросов может обработать один экземпляр приложения?
Самый значимый фактор - задержка приложения в обработке запросов. Если запросы обрабатываются быстро - один экземпляр может обслуживать много запросов, к тому же Java поддерживает параллельную обработку запросов, т.е. приложение сможет обрабатывать несколько запросов одновременно., это может значительно снизить количество необходимых экземпляров приложения.


Что делать с параллельной обработкой запросов для Python? Потребуются ли изменения кода? 
Параллельность Python будет решена вместе с выпуском Python 2.7 для GAE. Мы услышали отзывы пользователей Python, которые волнуются и думают переходить ли на Java, т.к. там поддерживается параллельная обработка запросов. Мы сделали поправку в ценах - пока Python 2.7 не готов мы будем предоставлять для Python вдвое меньшие экземпляры приложения (вдвое дешевле). Смотрите вопрос “Какие изменения нужно внести в код для использования Python 2.7”


Как много запросов может обрабатывать один экземпляр приложения? 
Одно-поточный экземпляр (python или java) одновременно может обрабатывать 1 запрос. Дальше это количество запросов обратно-пропорционально задержке ответа. Например для задержки 10 мс = 100 запросов/секунду/экземпляр, для задержки 100 мс = 10 запросов/секунду/экземпляр и т.д. Много-поточные приложения могут обслуживать несколько запросов одновременно. Здесь скорость обработки связана с требованиями к процессору. Для экземпляра B4 (примерно 2.4ГГц): 10 Мегациклов/запрос = 240 запросов/секунду/экземпляр, 100 Мегациклов = 24 запроса/секунду/экземпляр. Конечно эти числа в идеальной ситуации, но это поможет понять как рассчитывать производительность приложения. Много-поточные приложения сейчас можно сделать только на Java, поддержку Python мы планируем в этом году, но позже.


Почему Google будет считать экземпляры, а не процессорное время, как в предыдущей модели? 
Процессорное время - лишь часть ресурсов, используемых App Engine. Когда запускается ваше приложение - создается экземпляр приложения, которому доступны максимум процессора и памяти, которые приложение может использовать. Даже когда процессор не работает, а ждет нового запроса - экземпляр продолжает “использоваться”, для Google это стоит денег. В текущей модели приложения с большим временем ожидания (другими словами те, которые долго простаивают ничего не делая) не в состоянии масштабироваться, т.к. это будет очень дорого для Google. Это изменение позволит разработчикам запускать разные типы приложения и при этом оплачивать все используемые ресурсы.


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


Как будет работать режим “всегда включено” с новой моделью? 
Когда GAE покинет предварительную стадию и станет полноценным продуктом все платные приложения смогут указать минимальное количество экземпляров, которые будут находиться в состоянии ожидания. Опция “Всегда включено” предназначена для того чтобы снизить начальную задержку при ответе приложения. Для большинства приложений одного экземпляра в состоянии ожидания будет достаточно (особенно учитывая параллельное выполнение запросов). Это означает, что большинство клиентов смогут настроить минимальное количество экземпляров в режиме ожидания – 1 и это будет укладываться в предоплаченные лимиты – 24 часа в сутки.

Какие нововведения сделаны в новом планировщике?
В новом планировщике добавлены 4 ключевые возможности:
- Минимальное количество экземпляров в режиме ожидания (Min Idle Instance): Задает количество экземпляров, которые будут запущены, даже если приложению нечего делать и ждут новых запросов.
Эта опция доступна только для платных приложений
- Максимальное количество количество экземпляров в режиме ожидания (Max Idle Instance): Определяет максимальное количество экземпляров, которое планировщик может сохранять в ожидании новых запросов. Низкие значения помогут сэкономить, но при скачке трафика потребуется снова запускать новые экземпляры и за это платить.
- Минимальное время ожидания (Min Pending Latency): Минимальное время, которое запрос будет находиться в очереди ожидания прежде чем планировщик запустит новый экземпляр.
- Максимальное время ожидания (Max Pending Latency): Определяет как долго запрос может быть в очереди ожидания. Если ожидание достигло этого значения тут же будет выделен экземпляр для обслуживания этого запроса.

Как нововведения планировщика отразятся на ценах и счетах?
- Минимальное количество экземпляров в режиме ожидания (Min Idle Instance):  Увеличение этого параметра увеличит оплату, увеличивая количество всегда запущенных экземпляров даже во время простоя приложения.
- Максимальное количество количество экземпляров в режиме ожидания (Max Idle Instance): Уменьшение этого параметра уменьшит оплату и вы не будете платить за лишние экземпляры в режиме ожидания. Эта опция служит только как подсказка планировщику, но вы не будете переплачивать если планировщик ее проигнорирует. Например вы задали максимальное количество экземпляров ожидания 5, а планировщик на некоторое время оставил в режиме ожидания 16 экземпляров, вы будете платить только за 5.
- Минимальное время ожидания (Min Pending Latency): Уменьшение этого параметра увеличит оплату, т.к. планировщик будет запускать новые экземпляры более агрессивно.
- Максимальное время ожидания (Max Pending Latency): Увеличение этого параметра уменьшит оплату, т.к. планировщик будет чаще использовать уже запущенные экземпляры вместо создания новых.


В чем разница между экземплярами по требованию (On-demand Instances) и зарезервированными экземплярами (Reserved Instances)?
Для экземпляров по требованию - вы не обязуетесь их использовать, а платите по факту только за использованные часы. Для зарезервированных экземпляров вы обязуетесь оплатить определенное количество часов работы приложения в неделю и их нужно будет оплатить независимо от того использовали вы их или нет. Это не означает, что они должны быть запущены всё время.


Подождите, зарезервированные не будут запущены постоянно? 
Нет, это просто способ дешевле оплачивать процессорное время, с предварительным обязательством его оплатить.

С какой точностью будет считаться время работы приложения? Например если оно будет работать 5 минут я заплачу $0.08/60 * 5?
Ответ: Оплачивается время работы экземпляра приложения и еще 15 минут ожидания (пока планировщик не выключит его). Например если у вас экземпляр приложения по требованию работал 5 минут, то вы заплатите за 5 + 15 минут или $0.08/60 * 20 = 2.6 цента. Кроме того если экземпляр остановлен и затем запустится в течение 15 минут, то платеж за запуск будет считаться только 1 раз, а время простоя будет оплачиваться так как если бы экземпляр был запущен. Например: экземпляр обрабатывает запросы 5 минут, затем на 4 минуты выключается, потом снова 3 минуты обрабатывает запросы, вы будете платить (5+4+3)+15 минут, т.е. $0.08/60*25 = 3.6 цента.


Раз вы пробуете считать память в новой модели - я смогу оплатить внешние экземпляры приложения с разным количеством памяти? 
Нет, мы планируем что у всех основных экземпляров будет одинаковый объем памяти.


Основные экземпляры (Frontend instances) смогут обрабатывать заданий Cron и очереди задач? 
Да, это поведение по умолчанию.

Переносятся ли зарезервированные часы на следующую неделю?
К сожалению нет. Если вы обязались использовать определенное количество часов за неделю вы будете их оплачивать независимо от того использовали вы их или нет.


Рабочее окружение Go поддерживаем параллельную обработку запросов? 
Пока нет.

Какие изменения нужно внести в код для использования Python 2.7?
Обычно код для Python 2.5 будет работать с Python 2.7, но есть несколько важных изменения, которые могут потребоваться:
- Будет использоваться Django 1.2: Сейчас по умолчанию используется 0.96 (в том числе, когда используются шаблоны в webapp). Поскольку Python 2.7 будет новой средой исполнения мы не планируем дальше поддерживать эту устаревшую версию. Мы будем поддерживать как минимум Django 1.2. Вам нужно к этому подготовиться, лучший способ – проверить как ваш код работает с Django 1.2, инструкцию можно посмотреть
тут.
- Поддержка Python 2.7: понятно, что это само собой разумеется, но мы все равно скажем – нужно проверить совместимость вашего кода с Python 2.7.

Как будут в Python 2.7 будут обрабатываться параллельные запросы?
Python 2.7 будет новой средой выполнения GAE. Параллельные запросы будут работать в потоках, так же как сейчас работает среда выполнения Java.
- Используйте WSGI-совместимый фреймворк: для использования многопоточного режима вы не сможете использовать CGI. Для параллельности можно использовать только WSGI, в том числе webapp, который входит в состав Google App Engine.
- Потокобезопасность: Поскольку в Python 2.7 использует потоки для параллельной обработки запросов для их использования ваш код должен быть потокобезопасным.
- Все изменения, которые нужно сделать с кодом для работы в Python 2.7 перечислены в предыдущем ответе.

Цены


$9/приложение/месяц это абонентская плата или минимальный платеж? 
Основываясь на отзывах мы изменили абонентскую плату $9 на минимальный платеж $9. Другими словами вы можете пользоваться платными ресурсами в объеме $9 и при этом вы не должны будете доплачивать что-то е ежемесячному платежу в $9. $500/аккаунт/месяц остается как абонентская плана на покрытие операционных расходов.


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


Смогут ли существующие приложения продолжать использовать текущую модель расчетов? 
Нет, все приложения будут переведены на новую модель расчетов, когда App Engine станет официальным продуктом.


Увеличатся ли платежи у большинства клиентов? Если да, то почему Google увеличивает цены для App Egnine? 
Да, у большенства клиентов, которые платят счета увеличатся. Во время предварительной фазы работы App Engine мы смотрели сколько это стоит, исследовали основные модели использования. Мы должны изменить цены сейчас, потому что GAE становится официальным продуктом Google и должен иметь модель устойчивого дохода на долгие годы.

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

API


Как считались цена на API? 
Для большей части API стоимость останется примерно той же, что сейчас, просто вместо процессорного времени мы будем считать количество операций, для Channel API это будет стоить $0.01/100 каналов. Это примерно столько, сколько сейчас оплачивается как часть процессорного времени. API для работы с хранилищем подробно описано дальше.


На странице с ценами для некоторых API стоят галочки вместо цен, что это значит? 
Эти API бесплатны для использования с App Engine.


Как будет работать новая модель для XMPP? Сколько будут стоить статусные сообщения? 
Для XMPP будут тарифицироваться только исходящие сообщения. Входящие сообщения очень похожи на обычные запросы и будет считаться трафик и конечно процесс обработки запроса в экземпляре приложения. Для статусных сообщений будет оплачиваться только трафик. Это почти так же как сейчас, только вы видите процессорное время вместо количества сообщений.


Сколько будет стоить входящая почта? 
Входящая почта будет тарифицироваться как обычный запрос - входящий трафик и время работы экземпляра приложения, так же как это работает сейчас.


Будет ли внешний кеш (Front end cache) формализован и станет ли он частью предлагаемого сервиса? 
Сейчас мы рассматриваем различные варианты, но пока никаких планов нет.

Будут ли письма для администраторов дешевле или бесплатными?
Мы рассматриваем такую возможность. Если вам это важно поставьте звездочку в теме http://code.google.com/p/googleappengine/issues/detail?id=5235.

API хранилища

Какие операции будут оплачиваться?
Будут оплачиваться 3 типа операция:
- Операция записи (запись объекта, удаление объекта, запись индекса), каждая из этих операций будет оплачиваться по цене $0.10 за каждые 100тыс. операций.
- Операция чтения (запрос, получение объекта), каждая операция будет оплачиваться из расчета $0.07 за каждые 100тыс. операций.
- Маленькие операции (Получение ключа, выделение ID), каждая из этих операций будет оплачиваться из рассчета $0.01 за каждые 100тыс. операций.

Будет ли это зависеть от размера объекта?
Нет.

Как в новой модели будут считаться пакетные операции и имеют ли они смысл, например будет ли стоимость db.get(key1); db.get(key2) отличаться от стоимости db.get(key1,key2)?
Пакетное выполнение операций не влияет на их стоимость, но по прежнему работает быстрее, чем отдельные запросы – их нужно использовать для уменьшения времени ответа.

Если я сделаю db.get(key1,key2) и получу 2 объекта – сколько будет посчитано операций?
Будет посчитано 2 операции получения объекта.

Если key2 не существует и я получу только 1 объект – как это будет оплачиваться?
Будет посчитано получение 2-объектов.

Если db.get(key1) получает 5Кб, а db.get(key2) 500Кб – будет ли разница в стоимости?
Нет, стоимость не меняется.

Как в новой схеме выгоднее делать: запросить 1000 ключей и потом взять только 500 нужных объектов или сразу получить 1000 объектов?
Первый вариант более экономный. Получение 1000 ключей + 500 объектов = $0.0001 + $0.00035 = $0.00045, а получение 1000 объектов = $0.0007.

Хранилище

Логи считаются в общем объеме сохраненных данных?
Нет, для каждого приложения хранится ограниченный объем логов и он не входит в квоту.

Варианты использования


Вопрос: Что означает стоимость премиум-аккаунта $500/аккаунт? За Google-Apps-аккаунт? За аккаунт разработчика? За аккаунт владельца приложения?
Ответ: Это платеж с организации (можно сказать что за Google Apps аккаунт, если вы уже клиент Google Apps). Например если вы работаете в gregco.com и у вас премиум-аккаунт, то пользователя gregco.com могут создавать приложения, которые будут оплачиваться с аккаунта gregco.com.


Вопрос: Будут специальные цены для некоммерческого использования?
Ответ: Возможно, сейчас этот вопрос исследуется


Вопрос: Будут ли специальные цены для использования в образовании?
Ответ: Возможно, сейчас этот вопрос исследуется


Вопрос: Будут ли специальные цены для проектов с открытым исходным кодом?
Ответ: Возможно, сейчас этот вопрос исследуется

Ограничения


Вопрос: Если я перенесу приложение в отказоустойчивое хранилище (HR Datastore) это будет означать, что у меня “новое” приложение и у меня будет новая, уменьшенная квота на отправку email? Могу я воспользоваться прежним лимитом в 2000 писем?
Ответ: Да, вы сможете воспользоваться прежним ограничением для приложений, которые переносятся из Master/Slave хранилища в отказоустойчивое.

Храните резервную копию в другом дата-центре

22.03.2011 упал сервер одного из клиентов, работающий в DigitalOne, при этом сайт DigitalOne так же не работает, поддержка не отвечает. Восстановил работу сайта на другом хостинге, через некоторое время получаю от DigitalOne уведомление: к ним пришли сотрудники ФБР за серверами одного из клиентов, но при этом отключили не только сервера интересного им клиента а сразу несколько серверных стоек, сервер моего клиента и сервера инфраструктуры DigitalOne оказались как раз в числе отключенных.

Никакой RAID, snapshot’ы и резервные копии самого хостера тут не помогут (даже если копии есть – хостеру все равно нужно время чтобы в них разобраться, идентифицировать клиента + вообще у них работы много и когда дойдет очередь до копии непонятно).

Потери от простоя сервера в данном случае порядка 5000 рублей в сутки. Стоимость резервного копирования 250 рублей/месяц. Сколько денег было сэкономлено в данном случае покажет время (пока начальный сервер отключен уже 3-и сутки, т.е. потери были бы порядка 15 тысяч). Нервы сэкономлены точно.

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

28 мая 2011 г.

Отдам купон на скидку в хорошие руки

При оплате счета яндекс-деньгами получил купон RUSONYX на 300 рублей.

Условия активации:

  1. Закажите виртуальный хостинг по тарифу «Супер Старт» на срок от трех месяцев.

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

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

Сам работаю в хостинге www.1gb.ru так что мне купон не актуален. Отдам купон в хорошие руки.

Кстати у нас тоже акция с купонами идет

23 мая 2011 г.

Интересная сноска Билайн на тарифе Монстр общения 2011+

Сноска 8 в рекламно листовке гласит:
Суммарная продолжительность местных вызовов при звонках на телефоны других операторов сотовой связи области подключения может составлять 120 минут в сутки. При превышении указанного объема минут оператор имеет право прекратить оказание услуг связи.
К этому пункту разговорчивым людям стоит отнестись внимательно.


19 мая 2011 г.

FAQ по новым ценам для Google App Engine

Оригинал http://groups.google.com/group/google-appengine/msg/739169f799d8e69a

Обновленная версия

Определения


Экземпляр приложения (Instance) - небольшое виртуальное окружение для запуска вашего кода с зарезервированной памятью и долей процессора.
Внешний экземпляр (Frontend instance) - экземпляр приложения, выполняющий ваш код и динамически масштабирующийся в зависимости от поступающих запросов, но ограниченный по времени обработки запроса.
Фоновый экземпляр (Backend instance) - экземпляр приложения, выполняющий ваш код с ограниченной масштабируемостью, основанной на ваших настройках, теоретически запускается и останавливается по вашей команде.
Планировщик (Scheduler) - Часть инфраструктуры App Engine, которая определяет какой экземпляр должен обрабатывать запрос и когда нужно создать новый экземпляр.

Инфраструктура


Вопрос: Что такое экземпляр приложения (Instance)?
Ответ: Когда App Engine запускает ваш код - создается маленькая виртуальная среда для выполнения кода с зарезервированной долей процессора и памяти. Например если вы запускаете Java-приложение, то для него стартует новая JVM и в нее загружается ваш код.


Вопрос: Экземпляр приложения в App Engine это аналогия виртуальной машины?
Ответ: Да и нет - то и другое имеет выделенные обемы памяти и мощность процессора, но в приложении GAE нет накладных расходов на работу операционной системы или других приложений, т.е. для реального использования остается больший процент процессора и памяти. Они так же работают через высокоуровневые интерфейсы, а не через прослойку кода для виртуальных устройств - это позволяет делать сервисы более управляемыми.


Вопрос: Как GAE определяет что должен запуститься новый внешний экземпляр приложения (Frontend instance)?
Ответ: Для каждого запроса планировщик есть ли свободный экземпляр для обработки запроса, должен ли запрос подождать или нужно создать новый экземпляр приложения. Он принимает во внимание количество уже запущенных экземпляров, их пропускную способность и количество запросов в очереди ожидания. Планировщик расчитывает предполагаемое время ожидания для обработки запроса и если оно больше 1 секунды - запускает новый экземпляр приложения. Если планировщик понимает что какой-то из экземпляров больше не нужен - он выключается.


Вопрос: Я должен будут платить за все приложения, которые сейчас показываются в панели администрирования?
Ответ: Нет, мы работает над изменением планировщика для оптимизации использования созданных экземпляров приложения, их число должно сократиться. Если вы используете Java и ваше приложение потоко-безопасно - один экземпляр приложения может обслуживать несколько запросов одновременно. То, что вы видите сейчас можно рассматривать как верхнюю границу количества экземпляров.


Вопрос: Как я могу контролировать количество запущенных экземпляров?
Ответ: Вместе с новым планировщиком появятся настройки того сколько много экземпляров приложения будет запускаться для обработки запросов. Больше информации об этих параметрах и их влиянии на планировщик будет доступно в течение нескольких недель.


Вопрос: Как я могу понять - сколько запросов может обработать один экземпляр приложения?
Ответ: Самый значимый фактор - задержка приложения в обработке запросов. Если запросы обрабатываются быстро - один экземпляр может обслуживать много запросов, к тому же Java поддерживает параллельную обработку запросов, т.е. приложение сможет обрабатывать несколько запросов одновременно., это может значительно снизить количество необходимых экземпляров приложения.


Вопрос: Что делать с параллельной обработкой запросов для Python? Потребуются ли изменения кода?
Ответ: Параллельность Python будет решена вместе с выпуском Python 2.7 для GAE. Мы услышали отзывы пользователей Python, которые волнуются и думают переходить ли на Java, т.к. там поддерживается параллельная обработка запросов. Мы сделали поправку в ценах - пока Python 2.7 не готов мы будем предоставлять для Python вдвое меньшие экземпляры приложения (вдвое дешевле).


Вопрос: Как много запросов может обрабатывать один экземпляр приложения?
Ответ: Одно-поточный экземпляр (python или java) одновременно может обрабатывать 1 запрос. Дальше это количество запросов обратно-пропорционально задержке ответа. Например для задержки 10 мс = 100 запросов/секунду/экземпляр, для задержки 100 мс = 10 запросов/секунду/экземпляр и т.д. Много-поточные приложения могут обслуживать несколько запросов одновременно. Здесь скорость обработки связана с требованиями к процессору. Для экземпляра B4 (примерно 2.4ГГц): 10 Мегациклов/запрос = 240 запросов/секунду/экземпляр, 100 Мегациклов = 24 запроса/секунду/экземпляр. Конечно эти числа в идеальной ситуации, но это поможет понять как рассчитывать производительность приложения. Много-поточные приложения сейчас можно сделать только на Java, поддержку Python мы планируем в этом году, но позже.


Вопрос: Почему Google будет считать экземпляры, а не процессорное время, как в предыдущей модели?
Ответ: Процессорное время - лишь часть ресурсов, используемых App Engine. Когда запускается ваше приложение - создается экземпляр приложения, которому доступны максимум процессора и памяти, которые приложение может использовать. Даже когда процессор не работает, а ждет нового запроса - экземпляр продолжает “использоваться”, для Google это стоит денег. В текущей модели приложения с большим временем ожидания (другими словами те, которые долго простаивают ничего не делая) не в состоянии масштабироваться, т.к. это будет очень дорого для Google. Это изменение позволит разработчикам запускать разные типы приложения и при этом оплачивать все используемые ресурсы.


Вопрос: Что это означает для существующих клиентов?
Ответ: Многие клиенты оптимизировали приложения для минимизации использования процессора и сокращения расходов, но часто использовали много памяти (приложения с долгим временем ожидания). Новая модель будет способствовать меньшему времени ожидания, даже если при этом придется использовать больше процессорного времени.


Вопрос: Как будет работать режим “всегда включено” с новой моделью?
Ответ: Мы еще в процессе решения что с этим делать, ответ будет скоро (правда, мы почти закончили)


Вопрос: В чем разница между экземплярами по требованию (On-demand Instances) и зарезервированными экземплярами (Reserved Instances)?
Ответ: Для экземпляров по требованию - вы не обязуетесь их использовать, а платите по факту только за использованные часы. Для зарезервированных экземпляров вы обязуетесь оплатить определенное количество часов работы приложения в неделю и их нужно будет оплатить независимо от того использовали вы их или нет. Это не означает, что они должны быть запущены всё время.


Вопрос: Подождите, зарезервированные не будут запущены постоянно?
Ответ: Нет, это просто способ дешевле оплачивать процессорное время, с предварительным обязательством его оплатить.


Вопрос: С какой точностью будет считаться время работы приложения? Например если оно будет работать 5 минут я заплачу $0.08/60 * 5?
Ответ: Оплачивается время работы экземпляра приложения и еще 15 минут ожидания (пока планировщик не выключит его). Например если у вас экземпляр приложения по требованию работал 5 минут, то вы заплатите за 5 + 15 минут или $0.08/60 * 20 = 2.6 цента.


Вопрос: Раз вы пробуете считать память в новой модели - я смогу оплатить внешние экземпляры приложения с разным количеством памяти?
Ответ: Нет, мы планируем что у всех основных экземпляров будет одинаковый объем памяти.


Вопрос: Основные экземпляры (Frontend instances) смогут обрабатывать заданий Cron и очереди задач?
Ответ: Да.


Вопрос: Рабочее окружение Go поддерживаем параллельную обработку запросов?
Ответ: Пока нет.

Цены


Вопрос: $9/приложение/месяц это абонентская плата или минимальный платеж?
Ответ: Основываясь на отзывах мы изменили абонентскую плату $9 на минимальный платеж $9. Другими словами вы можете пользоваться платными ресурсами в объеме $9 и при этом вы не должны будете доплачивать что-то е ежемесячному платежу в $9. $500/аккаунт/месяц остается как абонентская плана на покрытие операционных расходов.


Вопрос: Большинство клиентов должны будут изменить тип приложений на платный?
Ответ: Нет, мы ожидает, что большая работающих сейчас приложений сможет остаться в рамках бесплатных квот.


Вопрос: Смогут ли существующие приложения продолжать использовать текущую модель расчетов?
Ответ: Нет, все приложения будут переведены на новую модель расчетов, когда App Engine станет официальным продуктом.


Вопрос: Увеличатся ли платежи у большинства клиентов? Если да, то почему Google увеличивает цены для App Egnine?
Ответ: Да, у большенства клиентов, которые платят счета увеличатся. Во время предварительной фазы работы App Engine мы смотрели сколько это стоит, исследовали основные модели использования. Мы должны изменить цены сейчас, потому что GAE становится официальным продуктом Google и должен иметь модель устойчивого дохода на долгие годы.

API


Вопрос: Как считались цена на API?
Ответ: Для большей части API стоимость останется примерно той же, что сейчас, просто вместо процессорного времени мы будем считать количество операций, для Channel API это будет стоить $0.01/100 каналов. Это примерно столько, сколько сейчас оплачивается как часть процессорного времени. API для работы с хранилищем подробно описано дальше.


Вопрос: На странице с ценами для некоторых API стоят галочки вместо цен, что это значит?
Ответ: Эти API бесплатны для использования с App Engine.


Вопрос: Как будет работать новая модель для XMPP? Сколько будут стоить статусные сообщения?
Ответ: Для XMPP будут тарифицироваться только исходящие сообщения. Входящие сообщения очень похожи на обычные запросы и будет считаться трафик и конечно процесс обработки запроса в экземпляре приложения. Для статусных сообщений будет оплачиваться только трафик. Это почти так же как сейчас, только вы видите процессорное время вместо количества сообщений.


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


Вопрос: Будет ли внешний кеш (Front end cache) формализован и станет ли он частью предлагаемого сервиса?
Ответ: Сейчас мы рассматриваем различные варианты, но пока никаких планов нет.


Вопрос: Сколько будут стоить операции с хранилищем? Какая разница будет относительно текущей стоимости?
Ответ: Сегодня мы снимаем деньги за процессорное время для записи каждого объекта, записи индекса, чтения объекта, сканирования индекса и чтения результата запроса. В новой модели мы будет снимать деньги за количество операций, вместо процессорного времени и не будем больше снимать деньги за сканирование индекса. Это означает, что цена вашего запроса будет зависеть только от возвращаемого результата. Мы ожидаем, что стоимость операций будет примерно в 4 раза выше цены за процессорное время в сегодняшней модели, но для приложений, которые много используют индексы это компенсируется тем, что мы больше не будем снимать деньги за запрос. Панель администраторв сейчас показывает общее количество вызовов API хранилища, но это плохой показатель того сколько операций будет оплачиваться в новой модели. Цена будет сильно зависеть от типа запросов и содержимого при вызове API, а не от их количества, которое показывается сейчас. Например одиночный запрос get() может вернуть 1 объект или 100, а beginTransaction() не потребляет каких-то платных ресурсов.


Вопрос: Отправка email администраторам может быть дешевле или бесплатной?
Ответ: Мы рассмотрим эту возможность.


Варианты использования


Вопрос: Что означает стоимость премиум-аккаунта $500/аккаунт? За Google-Apps-аккаунт? За аккаунт разработчика? За аккаунт владельца приложения?
Ответ: Это платеж с организации (можно сказать что за Google Apps аккаунт, если вы уже клиент Google Apps). Например если вы работаете в gregco.com и у вас премиум-аккаунт, то пользователя gregco.com могут создавать приложения, которые будут оплачиваться с аккаунта gregco.com.


Вопрос: Будут специальные цены для некоммерческого использования?
Ответ: Возможно, сейчас этот вопрос исследуется


Вопрос: Будут ли специальные цены для использования в образовании?
Ответ: Возможно, сейчас этот вопрос исследуется


Вопрос: Будут ли специальные цены для проектов с открытым исходным кодом?
Ответ: Возможно, сейчас этот вопрос исследуется

 

Ограничения


Вопрос: Если я перенесу приложение в отказоустойчивое хранилище (HR Datastore) это будет означать, что у меня “новое” приложение и у меня будет новая, уменьшенная квота на отправку email? Могу я воспользоваться прежним лимитом в 2000 писем?
Ответ: Да, вы сможете воспользоваться прежним ограничением для приложений, которые переносятся из Master/Slave хранилища в отказоустойчивое.

17 апр. 2011 г.

Установка русских локалей в linux ubuntu

cd /var/lib/locales/supported.d

Создать файл ru с содержанием

ru_RU.UTF-8 UTF-8
ru_RU.KOI8-R KOI8-R
ru_RU.CP1251 CP1251

выполнить locale-gen

Установка Ubuntu Server 10.04.2 LTS на Hyper-V

1. При загрузке с образа диска графическая установка не запустилась, для запуска текстового варианта нужно сначала нажать Enter, согласившись что установка будет на английском, потом нажать F6, затем Esc и написать vga16fb.modeset=0 в строке параметров
2. Прописать в /etc/initramfs-tools/modules
hv_vmbus
hv_storvsc
hv_blkvsc
hv_netvsc
hv_utils
и выполнить $ update-initramfs -u
В отличие от Андрея обычный адаптер “Network Adapter” у меня определяется eth0, а не seth0, поэтому в /etc/networks/interfaces запись вида
auto eth0
iface eth0 inet dhcp

Ошибка кеширования Nginx

Проблема

Есть index.php, который кэшируется или не кэшируется в зависимости от cookie. Есть exit.php, который снимает cookie для того чтобы начал отдаваться кэшированный вариант. При переходе index.php (без кэша) –> exit.php –> index.php (теперь должен вернуться из кэша) nginx не выводил в поток HTTP-заголовки, а слал сразу тело документа.

Для исключения запросов из кэша использовал proxy_cache_bypass

Решение

Вместе с proxy_cache_bypass прописать proxy_no_cache с тем же самым значением. В качестве дополнительного эффекта получилась оптимизация, что теперь кэш для запросов, которые не должны кэшироваться сохраняться не будет, что в общем-то правильно, но то что это делается двумя разными директивами было не очевидно.

Было:

proxy_cache_bypass $cookie_cuid$cookie_cups;
Стало:

proxy_cache_bypass $cookie_cuid$cookie_cups;
proxy_no_cache $cookie_cuid$cookie_cups;

15 апр. 2011 г.

Сколько можно заработать на adsense

Исследую потенциальный объем прибыли от размещения adsense на бесплатном не раскрученном сайте (мой блог).
За март мой блог принес мне 1 цент при 428 показах, при этом на странице 2 объявления, т.е. страницу открыли 214 раз.
adsense-2011-03
При этом в первые дни объявления были какие-то совсем левые, сейчас как-то соотносятся с текстом.
Ждем, смотрим что будет дальше.

Locate или почему FreeBSD намертво виснет каждый день

Использую для системы резервного копирования FreeBSD с портированной туда ZFS. Последние пару месяцев сервер начал стабильно раз в сутки зависать. Сначала думал на какие-то внутренние процессы ZFS.

По итогам разбирательства выяснилось, что всю систему вешает locate.updatedb, почему вешает непонятно, но видимо 18 млн. файлов в файловой системе ей не нравится.

13 апр. 2011 г.

Снова в blogspot

Давно терзала проблема - мне вупор не нравился LiveJournal, зато нравится blogspot.

При этом в Livejournal есть практически всё рабочее окружение и кто-то из друзей-родных, а в blospot никого нет и пользоваться меж-журнальными связями никто не будет.

Сегодня настроил ретрансляцию из BlogSpot в LiveJournal через http://rss2lj.net.

По идее где-то через полчаса-час эта заметка должна появиться в LiveJournal.

Вообще хочется сделать такое разделение:
BlogSpot - какие-то технические заметки, vkontakte - социально-настроеческие, в livejournal - транслируется всё.