пятница, 29 февраля 2008 г.

Windows Vista не определяет флешку

Это широкораспостраненая проблемма в Windows Vista. После вставки флешки в USB порт, Vista долго ищет драйвера и никогда их не находит.

Решение:
Вытащить флешку, удалить из директории \windows\inf\ файлы:
DRVINDEX.DAT
INFPUB.DAT
INFSTOR.DAT
INFSTRNG.DAT
INFCACHE.*
SETUPAPI.*

Вставить флешку. Если автоматически драйвера не установятся - из диспетчера устройств установить драйвер вручную с опцией автоматического поиска (для поиска указать директорию windows\system32). Флешка должна успешно установиться.

Решение подсказал IgorZaz.

среда, 27 февраля 2008 г.

Связка GMail + Django

Про Google Mail не слышал только ленивый. ИМХО, это самая прогрессивная веб-почта. Как адепту Django мне очень приятно думать, что любимый фреймворк тоже самый прогрессивный :)

Но речь не о том, кто круче. Речь о замечательной библиотеке libGmail для Python. Используя эту библиотеку очень просто получать и отправлять письма с GMail.
Например, следующий код отправляет уведомление о необходимости активации аккаунта новому пользователю сервиса:

import libgmail
...

to_email = request.user.email
activation_link = http://dontbeevil.com/activate/%s/ % request.COOKIES["sessionid"]
ga = libgmail.GmailAccount(dontbeevil@gmail.com, "ourpassword")
ga.login()
subject = "Администрация сервиса"
msg = "Дорогой пользователь! Для активации аккаунта воспользуйтесь этой ссылкой: %s" % activation_link
gmsg = libgmail.GmailComposedMessage(to_email, subject, msg)
ga.sendMessage(gmsg)
...


Еще с помощью libGMail можно использовать свой аккаунт GMail как POP или SMTP сервер.
Библиотека распостраняеться по лицензии GPL 2.0.

вторник, 26 февраля 2008 г.

5 инструментов без которых я не могу работать продуктивно

Подключаюсь к флешмобу разработчиков, который затеял TermiT.
Вот моё ТОП 5 инструментов:

1. Firefox + Firebug.

2. Eclipse.

3. Total Commander.

4. Рюкзак с ноутбуком.

5. Интернет, куда уж без коллективного разума.

Передаю эстафету tapo4ku, andrewscater, i-love-python, glader.

Список полезных ресурсов по Django

Сегодня дошли руки оформить список ссылок ресурсов по фреймворку Django. В процессе составления использована информация с форума Python.com.ua

понедельник, 25 февраля 2008 г.

Сервис автозаполнения форм

Вчера, по ссылке из Хабрахабр я зашёл в интернет-магазин купить диск с подшивкой журнала "Наука и Жизнь" за 1990-2005 гг. И снова прошёл унизительную процедуру допроса в виде заполнения здоровенной формы оформления заказа: ФИО, е-мейл, телефон, адрес - одно и тоже. Каждый раз. Это стандартная процедура во всех интернет-магазинах. Это процедура, в которой программы каждый раз показывают свою тупость.

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

Микроформат. Было бы здорово указать ссылку на страницу с vCard с которой магазин считает мою персональную информацию. Я раздаю бумажные визитки всем знакомым и случайным встречным. Это не конфиденциальная информация, скорее даже - наоборот.

Почему программе интернет-магазина не спросить меня "визитку"?

суббота, 23 февраля 2008 г.

Python 2.5.2

Доступна новая версия Питона.

Python 2.5.2 являеться вторым багфикс-релизом Python 2.5. По сравнении с версией Python 2.5.1 исправлено более 100 ошибок. Версия 2.5.2 полностью совместима с 2.5.1 и 2.5. По словам разработчиков они работают только над вылавливанием багов и повышением производительности интерпретатора. Оригинал на английском.

Книга «Не мешайте мне работать!»

Вчера скачал книгу Стаса Давыдова «Не мешайте мне работать!».

Жесть! Вспомнил своё устройство на работу и сам рабочий процесс в "Волынской Софтовой Компании". Солидная фирма, крутые перспективы каръерного роста, "круче нас только яйца и горы" и т.д.

Демотивация - она кругом. Только и разговоров - "ты должен", "сделаешь это и будешь на хорошем счету" и т.д. Разве так сложно предложить за дополнительную работу немного денег? Я ведь кот. И хожу на работу исключительно ради денег. Хочешь преданности корпоративным идеалам - заведи собаку!



Рекомендую к прочтению всем утомленным работникам и работницам.
http://motivateme.ru/book/

среда, 20 февраля 2008 г.

Персональные социальные сети

Ехал домой и вспомнил жаркий разговор недельной давности. Тогда, в Карпатах, я с группой стартаперов из GWT Community обсуждал пути развития Веба. Социальные сети сделали нас более дружественными и открытыми. Инициатива "OpenSocial" от Google сделает в недалёком будущем пользователей более свободными от владельцев социальных сетей.

Мы будем подобны кочевникам, перемещаясь из одного сервиса в другой. Ничего не теряя, только расширяя свой "социальный граф". Для определения этого состояния отлично подходит поговорка "Всё своё ношу с собой".

В OpenSocial "Сервер опционален", "...при желании приложение можно разместить на собственных серверах...", новые корневые доменные имена. Прочувствуйте ЭТО.

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

Но пользователь всё еще зависим от произвола владельцев сервиса. Не так давно я наткнулся на описание сервиса управления задачами http://8apps.com/. Мне он понравился и каково же было моё разочарование, когда в окне появился текст "8apps is now closed" ("сервис 8 приложений закрыт"). А как быть пользователям, создавшим в этом сервисе свой контент? Ты потратил время, изучил еще одни правила работы с человеко-машинной системой, создал и упорядочил свои задачи и контакты, организовал работу... и - Бамс!!! Создатель стартапа наигрался и всё - приехали!

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

Как вариант развития Веба мне нравиться идея Персональных социальных сетей. Это миллиарды индивидуальных доменов с установленными персональными социальными CMS. Весь контент находиться в ведении автора контента.

Представьте, что вы купили хостинг и зарегистрировали свой домен - например, http://petr.grushevinchuk (.grushevinchuk - это корневой (!) домен). Как мы сейчас устанавливаем WordPress для создания блога, так и для создания персональной социальной сети будет достаточно установить что-то вроде SocialPress. И всё!

Ваша личная социальная сеть готова. Забираете свой "соц. багаж" с FaceBook (или Orkut, кому как больше нравиться) и продолжаете развивать свою социальную жизнь - френдите, комментируете, делитесь фотками и событиями и т.д. Но вся эта информация храниться на вашем личном социальном сервисе. Можно создавать записи только "для друзей" или полностью "личные" и быть уверенными, что после покупки сервиса ЧЧ ваш аккаунт не попадет в руки очень_интересующихся.

Можно вообще обойтись без централизованного сервера и распылять контент по Сети. Подтверждение авторства может осуществляться через контроль ДНК с мобильного терминала. Но это уже другая история...

вторник, 19 февраля 2008 г.

В продолжение темы автономных Джанго-приложений

Продолжение поста 1 минута для старта

Моё маленькое приложение на базе Instant Django работало прекрастно, пока им пользовался один человек. Потом "програмка" понравилась всем сотрудникам отдела и они дружно начали юзать её по сети. И програмка начала дружно виснуть :)

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

То-есть запустив manage.py runserver только один пользователь сможет комфортно работать с приложением. Для работы нескольких пользователей нужно использовать другой веб-сервер. Например - Апач.

Меня не устраивала перспектива топать к друзьям в офис и обьяснять их руководству, зачем им нужен Апач. Тем более что бос был не в курсе, что его подопечные юзают "левое" приложение.

Решением стало использование веб-сервера CherryPy из фреймворка TurboGears. Как использовать CherryPy с Django подробно описано у Гордона Тиллмана.

Вкратце:
1. скачать пакет с CherryPy и поместить его в папку ../Python/lib/site-packages/
2. в папке нашего Джанго-приложения создать 2 файла конфигурации: pieserver.conf и pieserver.py

pieserver.conf

[global]
server.socket_host = "127.0.0.1" #IP вашей машины
server.socket_port = 8080
server.thread_pool = 10
log.screen=True
environment = 'production'


pieserver.py

import sys
import os
import cherrypy

from django.core.handlers.wsgi import WSGIHandler
from django.core.servers.basehttp import AdminMediaHandler

os.environ["DJANGO_SETTINGS_MODULE"] = "YOURSITE.settings"

class DjangoApp(object):
django_conf = {
'/YOURAPP/media' : {
'tools.staticdir.on' : True,
'tools.staticdir.root' : os.path.abspath(os.path.join(os.path.dirname(__file__),'YOURPROJECT','YOURAPP')),
'tools.staticdir.dir' : 'media',
}
}

if __name__ == '__main__':
sys.path.insert(0,"..")
conf = os.path.join(os.path.dirname(__file__), 'pieserver.conf')
cherrypy.config.update(conf)
cherrypy.tree.graft(AdminMediaHandler(WSGIHandler()), '/')
cherrypy.server.quickstart()
cherrypy.engine.start()


Подкоректируйте параметры staticdir по своему вкусу.

Настройка закончена. Осталось запустить pieserver.py

воскресенье, 17 февраля 2008 г.

Переводы статей Пола Грэма (Paul Graham)

По адресу http://tony.stereoclick.com/ силами Антона Рубана была собрана лучшая по-моему мнению подборка ссылок на переводы статей Пола Грема.
Теперь эта страница больше не существует. Увы.

Вот её копия из кеша WayBackMachine:

суббота, 2 февраля 2008 г.

1 минута для старта

Пишу автономное приложение на Python+Django. Нужно, что бы оно работало без установки и настройки на других компьютерах. Погуглив, нашел - Instant Django, http://www.instantdjango.com.

В комплекте: Python 2.5, Django trunk, PIL, SVN, Sqlite3. Всё распаковывается в одну папку и запускаеться файлом start.bat. Платформа готова для поддержки жизнеобеспечения нашего приложения :)