Это широкораспостраненая проблемма в Windows Vista. После вставки флешки в USB порт, Vista долго ищет драйвера и никогда их не находит.
Решение:
Вытащить флешку, удалить из директории \windows\inf\ файлы:
DRVINDEX.DAT
INFPUB.DAT
INFSTOR.DAT
INFSTRNG.DAT
INFCACHE.*
SETUPAPI.*
Вставить флешку. Если автоматически драйвера не установятся - из диспетчера устройств установить драйвер вручную с опцией автоматического поиска (для поиска указать директорию windows\system32). Флешка должна успешно установиться.
Решение подсказал IgorZaz.
пятница, 29 февраля 2008 г.
среда, 27 февраля 2008 г.
Связка GMail + Django
Про Google Mail не слышал только ленивый. ИМХО, это самая прогрессивная веб-почта. Как адепту Django мне очень приятно думать, что любимый фреймворк тоже самый прогрессивный :)
Но речь не о том, кто круче. Речь о замечательной библиотеке libGmail для Python. Используя эту библиотеку очень просто получать и отправлять письма с GMail.
Например, следующий код отправляет уведомление о необходимости активации аккаунта новому пользователю сервиса:
Еще с помощью libGMail можно использовать свой аккаунт GMail как POP или SMTP сервер.
Библиотека распостраняеться по лицензии GPL 2.0.
Но речь не о том, кто круче. Речь о замечательной библиотеке 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.
Вот моё ТОП 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 с которой магазин считает мою персональную информацию. Я раздаю бумажные визитки всем знакомым и случайным встречным. Это не конфиденциальная информация, скорее даже - наоборот.
Почему программе интернет-магазина не спросить меня "визитку"?
Разумеется, есть автозаполнение в браузере. Но создатели магазинов умудряются каждый раз придумывать новые идентификаторы для полей ввода.
Микроформат. Было бы здорово указать ссылку на страницу с 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. По словам разработчиков они работают только над вылавливанием багов и повышением производительности интерпретатора. Оригинал на английском.
Python 2.5.2 являеться вторым багфикс-релизом Python 2.5. По сравнении с версией Python 2.5.1 исправлено более 100 ошибок. Версия 2.5.2 полностью совместима с 2.5.1 и 2.5. По словам разработчиков они работают только над вылавливанием багов и повышением производительности интерпретатора. Оригинал на английском.
Книга «Не мешайте мне работать!»
Вчера скачал книгу Стаса Давыдова «Не мешайте мне работать!».
Жесть! Вспомнил своё устройство на работу и сам рабочий процесс в "Волынской Софтовой Компании". Солидная фирма, крутые перспективы каръерного роста, "круче нас только яйца и горы" и т.д.
Демотивация - она кругом. Только и разговоров - "ты должен", "сделаешь это и будешь на хорошем счету" и т.д. Разве так сложно предложить за дополнительную работу немного денег? Я ведь кот. И хожу на работу исключительно ради денег. Хочешь преданности корпоративным идеалам - заведи собаку!

Рекомендую к прочтению всем утомленным работникам и работницам.
http://motivateme.ru/book/
Жесть! Вспомнил своё устройство на работу и сам рабочий процесс в "Волынской Софтовой Компании". Солидная фирма, крутые перспективы каръерного роста, "круче нас только яйца и горы" и т.д.
Демотивация - она кругом. Только и разговоров - "ты должен", "сделаешь это и будешь на хорошем счету" и т.д. Разве так сложно предложить за дополнительную работу немного денег? Я ведь кот. И хожу на работу исключительно ради денег. Хочешь преданности корпоративным идеалам - заведи собаку!

Рекомендую к прочтению всем утомленным работникам и работницам.
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, кому как больше нравиться) и продолжаете развивать свою социальную жизнь - френдите, комментируете, делитесь фотками и событиями и т.д. Но вся эта информация храниться на вашем личном социальном сервисе. Можно создавать записи только "для друзей" или полностью "личные" и быть уверенными, что после покупки сервиса ЧЧ ваш аккаунт не попадет в руки очень_интересующихся.
Можно вообще обойтись без централизованного сервера и распылять контент по Сети. Подтверждение авторства может осуществляться через контроль ДНК с мобильного терминала. Но это уже другая история...
Мы будем подобны кочевникам, перемещаясь из одного сервиса в другой. Ничего не теряя, только расширяя свой "социальный граф". Для определения этого состояния отлично подходит поговорка "Всё своё ношу с собой".
В 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
Подкоректируйте параметры staticdir по своему вкусу.
Настройка закончена. Осталось запустить pieserver.py
Моё маленькое приложение на базе 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:
- Microsoft мертва Оригинал: Microsoft is Dead
- Для чего не не создавать стартап? Оригинал: Why to Not Not Start a Startup
- Как провести презентацию для инвесторов Оригинал: How to Present to Investors
- Почему стартапы концентрируются в Америке Оригинал: Why Startups Condense in America
- Как стать кремниевой долинойОригинал: How to Be Silicon Valley
- Перевод поста в блоге "Копирование идеи стартапа" Оригинал: Being Copied
- Самые трудные уроки для стартапов Оригинал: The Hardest Lessons for Startups to Learn
- Как делать то, что любишь но так, чтобы за это ничего не было. Оригинал: How to do what you love
- Хорошее и плохое отлынивание Оригинал: Good and bad procrastination
- Веб 2.0 Оригинал: Web 2.0
- Идеи для стартапа Оригинал: Ideas for Startups
- Что бизнес мог бы взять от свободного ПО Оригинал: What Business Can Learn from Open Source
- Наем устарел Оригинал: Hiring is Obsolete
- Почему умным людям приходят в голову глупые идеи Оригинал: Why Smart People Have Bad Ideas
- Коротко о литераторстве Оригинал: Writing, Briefly
- Как начать новое предприятиеКак начать новое дело Оригинал: How to Start a Startup
- То, что вы хотели бы знать заранее Оригинал: What You'll Wish You'd Known
- В чем интернет-бум оказался правОригинал: What the Bubble Got Right
- Век Сочинения Оригинал: The Age of the Essay
- "Парадокс питона" Оригинал: The Python Paradox
- Первоклассные хакеры Оригинал: Great Hackers
- Как стать богатым Оригинал: How to Make Wealth
- Языки программирования через сто лет Оригинал: The Hundred-Year Language
- Краткость - сила Оригинал: Succinctness is Power
- Lisp: побеждая посредственность Оригинал: Beating the Averages
суббота, 2 февраля 2008 г.
1 минута для старта
Пишу автономное приложение на Python+Django. Нужно, что бы оно работало без установки и настройки на других компьютерах. Погуглив, нашел - Instant Django, http://www.instantdjango.com.
В комплекте: Python 2.5, Django trunk, PIL, SVN, Sqlite3. Всё распаковывается в одну папку и запускаеться файлом start.bat. Платформа готова для поддержки жизнеобеспечения нашего приложения :)
В комплекте: Python 2.5, Django trunk, PIL, SVN, Sqlite3. Всё распаковывается в одну папку и запускаеться файлом start.bat. Платформа готова для поддержки жизнеобеспечения нашего приложения :)
Подписаться на:
Сообщения (Atom)