пятница, 23 октября 2009 г.

GAE: Mail API - Получение и отправка почты

Не так давно Google анонсировал, что приложения для Google App Engine (GAE) могут не только отправлять почту, но и принимать ее.
Документация на Mail API, в которой описывается механизм принятия сообщении, пока есть только на англииском.

Вот небольшой примерчик:

Пример принимает почту посланную на адрес вида string@supermailapp.appspotmail.com и возвращает его отправителю.

Тогда app.yaml будет выглядеть так:
application: supermailapp
version: 1
runtime: python
api_version: 1

inbound_services:
- mail

handlers:
- url: /_ah/mail/.+ 
  script: handle_incoming_email.py 
  login: admin

а обработчик вот так:

import logging
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import mail
from google.appengine.ext.webapp.mail_handlers import InboundMailHandler

class MyInboundMailHandler(InboundMailHandler):
 def receive(self, mail_message):
  logging.info('Received greeting from %s: %s' % (mail_message.sender,mail_message.body))
  mail.send_mail(
   sender=mail_message.to,
   to=mail_message.sender,
   subject=mail_message.subject,
   body=mail_message.body)
  logging.info('Sended answer to  %s'% mail_message.to)

application = webapp.WSGIApplication([MyInboundMailHandler.mapping(),], debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

Всё очень просто.

четверг, 22 октября 2009 г.

SQL: Куда деваются коннекции

При отладки приложения бывает полезно узнать сколько в текущий момент установлено коннекции к SQL.

Вот запрос который показывает подключения ко всем базам на SQL-сервере:

declare @t TABLE
 (
     SPID INT, 
     Status nVARCHAR(100) NULL, 
     Login SYSNAME NULL, 
     HostName SYSNAME NULL, 
     BlkBy SYSNAME NULL, 
     DBName SYSNAME NULL, 
     Command VARCHAR(32) NULL, 
     CPUTime INT NULL, 
     DiskIO INT NULL, 
     LastBatch nVARCHAR(100) NULL, 
     ProgramName nVARCHAR(100) NULL, 
     SPID2 INT,
     requestid int 
 )

insert @t exec sp_who2

select ProgramName, COUNT(ProgramName) as count from @t  GROUP BY ProgramName ORDER BY count



Проверено на MS SQL 2005.

SQL: INSERT OR UPDATE

Часто бывает ситуация что надо обновить данные в таблице если они там уже есть ,а если нет то добавить их. Делается достаточно просто:

IF (EXISTS (SELECT ID FROM MyTable WHERE ID = 123))
begin
     UPDATE MyTable  SET MyValue = 555 WHERE ID = 123
end
else
begin
     INSERT INTO MyTable (ID, MyValue) VALUES(123, 555)
end

среда, 21 октября 2009 г.

VMWare Virtual Server 1.0.6 -> VMWare ESXi 4: Экономим дисковые ресурсы сервера

Оказывается VMWare Converter по умолчанию преобразует диски в Flat (Thick). Если на VMWare Server диск был не преалоцированым, то после конвертации он станет Flat. Т.е. например при формировании виртуальной машины было указано 40G, но реально использовано лишь 10G, и на VMWare Server файл с диском занимал около 10G, то после перевоза на ESXi он займет все 40G. Так что если вам, как и мне, жалко дисковых ресурсов (особенно если используются снэпшоты), то не забывайте при конвертации выставлять Thin для дисков.

понедельник, 19 октября 2009 г.

VMWare Virtual Server 1.0.6 -> VMWare ESXi 4: Аккуратней со снэпшотами

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

пятница, 16 октября 2009 г.

Радио on-line

Нашел приятный сервис в котором представлены разные on-line радиостанции. Удобно что большой выбор и единообразный интерфейс.
Вот он

VMWare ESXi 4 Server вместо VMWare Virtual Server 1.0.6

Долгое время для создания виртуальных машин я пользовался VMWare Virtual Server, он бесплатен, легко ставится под 32х и 64х битный версии Windows 2003, имеют вполне удобную консоль и возможность удаленного управления скриптами. Пробовал я и версию 2.0, но мне не очень понравилась идея web-интерфейса, посему я предпочел остаться на версии 1.0.6.
Недавно я узнал что VMWare ESXi стал бесплатным и решил опробовать его на одном из своих серверов (Dell PowerEdge 1950).

Процесс установки ESXi чрезвычайно прост и, думаю, сказать мне тут практически нечего, отмечу лишь одну маленькую трудность которая привела к тому что ставить ESXi мне пришлось дважды. В первый раз я выбрал 0-вой HDD и после перезагрузки увидел опять свой Windows, можно было конечно по колдовать, но мне проще было поставить ESXi еще раз уже на 1-ый HDD.

После установки можно зайти на сервер по http и скачать VI Client, все остальные настройки можно делать уже через него.

Основная задача у меня была перемещение уже существующих под Virtual Server машин в ESXi, для этого существует отдельный тул - VMware vCenter Converter, с помощью которой можно с конвертировать машину и залить ее на сервер. Работает весьма просто и отдельных слов не заслуживает. Работает правда достаточно долго, машина с двумя дисками по 20G (реальный размер файлов не превышал 15G) заливалась около трех часов, но возможно что скорость зависит от загрузки сети и исходной машины т.к. коллеги рапортовали о более высоких скоростях.

В ESXi появилось много нового по сравнению с Virtual Server, например теперь в бесплатной версии стали доступны множественные снэпшоты (в старой версии можно было иметь только один), так же появилась возможность мониторинга производительности и загрузки процессора как для всего хоста так и для отдельных машин.




Интересен тот факт что VMware vCenter Converter при переносе машин не процессит (или не полностью) конфигурационный файл вары - ".vmx". Это приводит к тому что часть настроек которые были в старом сервере и отсутствуют в интерфейсе нового - работают, но изменить их из UI не получается. Сначала я было расстроился что из за того что у меня в старом сервере была включена галочка мне придется заливать вару снова ,но оказалось что можно скачать этот самый vmx файл себе на компьютер ,подправить и залить обратно.



Вызывается этот чудный диалог нажатием правой кнопки мыши на "datastore1" и выбором пункта "Browse Datastore"

О дальнейших впечатлениях расскажу позже.