вторник, 30 марта 2010 г.

Django: How to download CSV file

Потихонечку проникаюсь Django

Cформировать на сервере csv-файл с результатами и дать клиенту их слить ,оказалось просто:

from django.http import HttpResponse

def downfile(request):
 response = HttpResponse("asd;asdf;asdf", mimetype='text/plain')
 response['Content-Disposition'] = 'attachment; filename=foo.csv'
 return response

UPD: Нашел способ еще проще

среда, 17 марта 2010 г.

SQLite and like

Есть у нас небольшая табличка на SQLite, и наблюдались при работе с ней дикие тормоза.

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

SELECT ID WHERE STRINGFIELD like "anything"

При этом поле STRINGFIELD являлось первичным ключом, и следовательно индекс по нему был, но скорость выполнения сильно падала пропорционально объему данных.

После RTFM оказалось что при использовании оператора like SQLite не использует индекс!

Замена на "=" дала огромный прирост скорости.

SELECT ID WHERE STRINGFIELD = "anything"

Простые вещи

Достаточно давно я пописываю на питоне, но как то совершенно упустил что в питоне есть оператор elif

Пример:
if sex=="male": processMale()
elif sex=="female": processFemale()
else: processUnknown()

Так же много мне приходилось писать и на C++, но недавно наткнулся на необычный, для меня, способ инициализации структур:

STARTUPINFO si = {0};

Я так и не нашел, соответствует это стандарту или нет, в инете куча обсуждении, но конкретной ссылки на стандарт нет.

Ну а еще, сегодня на собеседовании, в одной уважаемой компании, мне задали интересный вопрос - "Какие Вы знаете критерии качества ПО?". Я рассказал что знал, но оказывается в википедии есть даже статья на эту тему. Часть критериев я сам не вывел.

Вывод - век живи век учись!

вторник, 9 марта 2010 г.

urlib2: Proxy and Cookie

Не сразу сообразил как с помощью urlib2 сделать одновременно работу с куками и прокси. Оказывается именно для этого и есть метод urllib2.build_opener

Выходит так:

cookie = cookielib.CookieJar()
proxy  = urllib2.ProxyHandler({"http":"http://localhost:3128"})
opener = urllib2.build_opener(proxy, urllib2.HTTPCookieProcessor(cookie))
urllib2.install_opener(opener)

пятница, 5 марта 2010 г.

VMWare ESXi: File <unspecified filename> was not found

Столкнулся с такой вот ошибкой "File <unspecified filename> was not found" после того как откатил виртуальную машинку в сэпшот и отредактировал ее конфигурацию используя Edit Settings\Options\Advanced\General\Configuration Parameters.


После этого машина отказалась запускаться.
Похоже на то что я редактировал этот фаил как раз в то время когда система пыталась в него записать и vmx файл стал содержать неверное имя файла с диском. Я такое уже встречал на VMWare Server 1.6.

Но в отличии от виндового VMWare Server 1.6 в ESXi редактировать vmx не так уж просто.

Вот способ выхода из ситуации:

Сначала узнаем на каком устройстве лежит наша машинка (Edit Settings\Options\Virtal Machine Configuration File)

Потом скачиваем его к себе используя "Browse Datastore"

редактируем параметр так чтобы было актуальное имя vmdk файла
scsi0:0.fileName = "MMSP85-000005.vmdk"

И загружаем файл обратно тем же способом.

среда, 3 марта 2010 г.

SharePoint: How to break role definitions inheritance

Не сразу нашел как разорвать наследование Permissions Levels:

Оказывается просто:
var site = new SPSite("http://mysharepoint/test"); 
var web = site.OpenWeb();
web.RoleDefinitions.BreakInheritance(true,true) 

MSDN