04/30: Блог поменял движок
Привет всем, давненько я не писал.
Пусть на улице снова снег, но это всё же весна, и душа требует перемен.
Поэтому я наконец-то сменил движок сайта на byteflow blog engine.
Теперь здесь есть древовидные комментарии, уведомления по почте, антиспам, пингбэки, трэкбэки, фиды по темам, openid-логины, кросспост в жж. Кажется, больше ничего нет. Кажется :)
Короче, то, что наколенный блог никогда не будет иметь.
А ещё, сегодня я думал о web-4.0. Ведь прогресс не остановишь, за вторым webом будет третий, а за ним… конечно же, четвёртый!
Самый первый вопрос, который возникает… конечно же, как он будет называться. :) А вы что подумали? версионирование веба — это “it’s all about buzzwords” — громкие слова и ничего кроме.
Итак, давайте следить.
Web 2.0-называется social web.
Web 3.0-называется semantic web.
Вывод простой. Нужно искать название, начинающееся на s.
Мне вот нравится слово smart. Значит, web 4.0 будет называться smart web.
Ну, осталось совсем чуть-чуть: придумать, какими свойствами он должен обладать.
Мда, придётся немного подумать… :)
Веб 2.0 означает, что пользователи делают всё за создателей сайта.
Веб 3.0 означает, что любой другой сайт умеет теперь эту информацию отдавать другим.
Тогда веб 4.0-сайт будет уметь эту информацию искать на других сайтах и преобразовывать в удобный пользователю вид. Конечно же, настраивать поиск и преобразования будут сами пользователи. И даже дизайн таких сайтов настраивать. Впрочем, сайты будут помнить свои дизайны и сами передавать их друг другу.
Интернет выродится. Теперь у вас остался только один сайт — ваш собственный. Ну или мой собственный, зависит от вашей точки зрения. Или моей :)
Сайтов много, но он один во многих лицах, как бог. Умеет всё, что умеют все.
Да, и он будет у вас на десктопе, конечно же. Даже в текстовом режиме. А вы как думали? :)
Пусть на улице снова снег, но это всё же весна, и душа требует перемен.
Поэтому я наконец-то сменил движок сайта на byteflow blog engine.
Теперь здесь есть древовидные комментарии, уведомления по почте, антиспам, пингбэки, трэкбэки, фиды по темам, openid-логины, кросспост в жж. Кажется, больше ничего нет. Кажется :)
Короче, то, что наколенный блог никогда не будет иметь.
А ещё, сегодня я думал о web-4.0. Ведь прогресс не остановишь, за вторым webом будет третий, а за ним… конечно же, четвёртый!
Самый первый вопрос, который возникает… конечно же, как он будет называться. :) А вы что подумали? версионирование веба — это “it’s all about buzzwords” — громкие слова и ничего кроме.
Итак, давайте следить.
Web 2.0-называется social web.
Web 3.0-называется semantic web.
Вывод простой. Нужно искать название, начинающееся на s.
Мне вот нравится слово smart. Значит, web 4.0 будет называться smart web.
Ну, осталось совсем чуть-чуть: придумать, какими свойствами он должен обладать.
Мда, придётся немного подумать… :)
Веб 2.0 означает, что пользователи делают всё за создателей сайта.
Веб 3.0 означает, что любой другой сайт умеет теперь эту информацию отдавать другим.
Тогда веб 4.0-сайт будет уметь эту информацию искать на других сайтах и преобразовывать в удобный пользователю вид. Конечно же, настраивать поиск и преобразования будут сами пользователи. И даже дизайн таких сайтов настраивать. Впрочем, сайты будут помнить свои дизайны и сами передавать их друг другу.
Интернет выродится. Теперь у вас остался только один сайт — ваш собственный. Ну или мой собственный, зависит от вашей точки зрения. Или моей :)
Сайтов много, но он один во многих лицах, как бог. Умеет всё, что умеют все.
Да, и он будет у вас на десктопе, конечно же. Даже в текстовом режиме. А вы как думали? :)
01/4: Что такое deseb.
Вспоминаю, что когда-то я обещал писать про django.
Сегодняшняя тема — эволюция баз данных для django.
Я — один из двух создателей deseb.
deseb — это Django External Schema Evolution Branch, то есть инструмент для эволюции баз данных для django. Да, юные любители ruby on rails, это практически ваши миграции, только с более простым DSL и конструирующиеся автоматически по изменениям модели.
Ну а тем, кто с rails не знаком, расскажу поподробнее.
Основа django — модели. Обычно они находятся в файлах models.py в разных папках внутри проекта. deseb умеет сравнивать содержимое моделей и текущую схему базы данных, и вносить в эту схему изменения. Таким образом, программист django вообще может не знать sql, или же изучать sql, глядя на вывод django и deseb, но никогда не писать sql самому. Наконец-то! :)
Сообразительные, но малознакомые с django, спросят — а как же переименование?
Как deseb поймет, что столбец или таблицу нужно переименовать? Конечно, он и не поймёт, пока вы не добавите полям и таблицам для переименования дополнительный аттрибут aka=… для указания их старых имён! Вот из-за этого аттрибута и пришлось сделать deseb внешним относительно django.
Ссылки по теме:
главная страница проекта — http://deseb.googlecode.com/
подробное рассмотрение миграций для django: http://code.djangoproject.com/wiki/SchemaEvolution
Проект находится в альфа-статии. Текущие хорошо поддерживаемые базы данных — postgresql и mysql. Плохо поддерживаемый — sqlite.
Я знаю несколько имеющихся мелких проблем, однако, скорее всего, они будут пребывать в состоянии “не дошли руки”, пока вы мне не поможете.
С радостью и очень быстро, скорее всего в тот же день, приму и закоммичу багфиксы ;)
Сегодняшняя тема — эволюция баз данных для django.
Я — один из двух создателей deseb.
deseb — это Django External Schema Evolution Branch, то есть инструмент для эволюции баз данных для django. Да, юные любители ruby on rails, это практически ваши миграции, только с более простым DSL и конструирующиеся автоматически по изменениям модели.
Ну а тем, кто с rails не знаком, расскажу поподробнее.
Основа django — модели. Обычно они находятся в файлах models.py в разных папках внутри проекта. deseb умеет сравнивать содержимое моделей и текущую схему базы данных, и вносить в эту схему изменения. Таким образом, программист django вообще может не знать sql, или же изучать sql, глядя на вывод django и deseb, но никогда не писать sql самому. Наконец-то! :)
Сообразительные, но малознакомые с django, спросят — а как же переименование?
Как deseb поймет, что столбец или таблицу нужно переименовать? Конечно, он и не поймёт, пока вы не добавите полям и таблицам для переименования дополнительный аттрибут aka=… для указания их старых имён! Вот из-за этого аттрибута и пришлось сделать deseb внешним относительно django.
Ссылки по теме:
главная страница проекта — http://deseb.googlecode.com/
подробное рассмотрение миграций для django: http://code.djangoproject.com/wiki/SchemaEvolution
Проект находится в альфа-статии. Текущие хорошо поддерживаемые базы данных — postgresql и mysql. Плохо поддерживаемый — sqlite.
Я знаю несколько имеющихся мелких проблем, однако, скорее всего, они будут пребывать в состоянии “не дошли руки”, пока вы мне не поможете.
С радостью и очень быстро, скорее всего в тот же день, приму и закоммичу багфиксы ;)
Оказывается, svn всё-таки позволяет настраивать список игнорируемых масок файлов для проекта в целом! Правда, в документации гораздо более подробно описывается, как настроить global-ignore — т.е. ignore файлов по маске для пользователя (!) и для всех пользователей текущей машины (!!!). Описано и свойство svn:ignore для каталога с файлами.
Вот эта опция для проекта:
svn propset svn:ignore -F .ignore .
Потрясное юзабилити! Кстати, описание опции закопано глубоко в ж… эээ… в документации как “Ignore Patterns for CVS Users” и её хрен найдешь по ключевым словам. (http://svnbook.red-bean.com/en/1.4/ svn.advanced.props.special.ignore.html).
Странно, неужели только пользователям CVS такая идея приходит в голову? :)
Вот эта опция для проекта:
svn propset svn:ignore -F .ignore .
Потрясное юзабилити! Кстати, описание опции закопано глубоко в ж… эээ… в документации как “Ignore Patterns for CVS Users” и её хрен найдешь по ключевым словам. (http://svnbook.red-bean.com/en/1.4/ svn.advanced.props.special.ignore.html).
Странно, неужели только пользователям CVS такая идея приходит в голову? :)
Если вам приходится девелопить сайты в IE, вам будет приятно узнать, что появился аналог
Firebug для IE от Microsoft. Он не умеет изменять стили на лету, но понять, из-за чего в этот раз сглючил IE, и что за элемент сейчас находится под мышкой, теперь можно запросто.
Качаем тут: здесь.
Как и все продукты Microsoft, имеет место непродуманность фич. Было реализовано не самое нужное, не самым лучшим способом — но самое простое: то, что создателю продукта показалось хоть чуть-чуть полезным. (Это я на личном опыте знаю, что бывает, когда делаешь продукты без “обратной связи” — один раз я так в продукте контрол для выбора диска (C: D:) забыл ;))) )
На момент написания этого поста, продукт находится на 62м (!!!) месте по скачиваемости на сайте Microsoft downloads.
Updates:
1) зато стили можно добавлять — через аттрибут тега style.
2) можно стили изменять, но только показываются эффективные стили, а остальные удаляются. Это значит, что обычно надо добавлять !important в элементы вида width: 500px, чтобы ваше изменение не стёрлось.
Firebug для IE от Microsoft. Он не умеет изменять стили на лету, но понять, из-за чего в этот раз сглючил IE, и что за элемент сейчас находится под мышкой, теперь можно запросто.
Качаем тут: здесь.
Как и все продукты Microsoft, имеет место непродуманность фич. Было реализовано не самое нужное, не самым лучшим способом — но самое простое: то, что создателю продукта показалось хоть чуть-чуть полезным. (Это я на личном опыте знаю, что бывает, когда делаешь продукты без “обратной связи” — один раз я так в продукте контрол для выбора диска (C: D:) забыл ;))) )
На момент написания этого поста, продукт находится на 62м (!!!) месте по скачиваемости на сайте Microsoft downloads.
Updates:
1) зато стили можно добавлять — через аттрибут тега style.
2) можно стили изменять, но только показываются эффективные стили, а остальные удаляются. Это значит, что обычно надо добавлять !important в элементы вида width: 500px, чтобы ваше изменение не стёрлось.
Немного меняю формат блога.
Изначально он задумывался просто так, “чтобы был”.
Теперь буду писать раз в неделю (а может и чаще) о том, что вы хотели бы от меня услышать.
Особенно охотно буду писать статьи про Django.
Что бы вы хотели узнать от меня о Django?
О программировании на Python вообще?
О программировании вообще?
О моих других увлечениях?
О жизни/психологии/мотивации/личностном росте?
Предложения пишите в комментариях к этому посту или почтой (чтобы мне не терять список предложений).
Изначально он задумывался просто так, “чтобы был”.
Теперь буду писать раз в неделю (а может и чаще) о том, что вы хотели бы от меня услышать.
Особенно охотно буду писать статьи про Django.
Что бы вы хотели узнать от меня о Django?
О программировании на Python вообще?
О программировании вообще?
О моих других увлечениях?
О жизни/психологии/мотивации/личностном росте?
Предложения пишите в комментариях к этому посту или почтой (чтобы мне не терять список предложений).
Задача, которая встала передо мной на этот раз — немного необычна.
Требуется: достать из таблицы БД postgresql все уникальные первые символы. Алфавитный справочник составляю.
Проблема: postgres работает в режиме sql-ascii, символы могут занимать разное число байт.
Проблема2: postgres не имеет функции конвертации символов, а substr работает с байтами.
Решение:
SELECT DISTINCT
CASE
when ascii(substr(word,1,1))<192 then substr(word,1,1)
when ascii(substr(word,1,1))<224 then substr(word,1,2)
when ascii(substr(word,1,1))<240 then substr(word,1,3)
when ascii(substr(word,1,1))<248 then substr(word,1,4)
when ascii(substr(word,1,1))<252 then substr(word,1,5)
else substr(word,1,6)
END as letter
FROM table;
Требуется: достать из таблицы БД postgresql все уникальные первые символы. Алфавитный справочник составляю.
Проблема: postgres работает в режиме sql-ascii, символы могут занимать разное число байт.
Проблема2: postgres не имеет функции конвертации символов, а substr работает с байтами.
Решение:
SELECT DISTINCT
CASE
when ascii(substr(word,1,1))<192 then substr(word,1,1)
when ascii(substr(word,1,1))<224 then substr(word,1,2)
when ascii(substr(word,1,1))<240 then substr(word,1,3)
when ascii(substr(word,1,1))<248 then substr(word,1,4)
when ascii(substr(word,1,1))<252 then substr(word,1,5)
else substr(word,1,6)
END as letter
FROM table;
07/10: Сегодня великий день
Цитируя Андрея Таранцова:
Сегодня будет великий день! Я начну переход с Eclipse 3.1 на Eclipse 3.3 :)
Пожелаем ему удачи в рефакторинге кода двухлетней давности.
У меня тоже сегодня великий день.
Я сегодня узнал про то, что с полями моделей в Django можно делать преинтереснейшие вещи:
class DomainInfo(Model):
def preview(self):
return ‘<img src=”/media/%s”/>’ % self.screenshot
preview.allow_tags = True
preview.short_description = ‘screenshot’
И после этого в админке можно будет наблюдать поле с названием screenshot, в котором отражаются симпатичные картинки.
Сегодня будет великий день! Я начну переход с Eclipse 3.1 на Eclipse 3.3 :)
Пожелаем ему удачи в рефакторинге кода двухлетней давности.
У меня тоже сегодня великий день.
Я сегодня узнал про то, что с полями моделей в Django можно делать преинтереснейшие вещи:
class DomainInfo(Model):
def preview(self):
return ‘<img src=”/media/%s”/>’ % self.screenshot
preview.allow_tags = True
preview.short_description = ‘screenshot’
И после этого в админке можно будет наблюдать поле с названием screenshot, в котором отражаются симпатичные картинки.
12/30: RuPy.ru
10 февраля в Омске состоится конференция RuPyru, посвящённая Python и Ruby. Я там собираюсь рассказать о том, как писать высокопроизводительные приложения на Python с использованием C, С++ и Pyrex, а так же как можно добавить код на Python в проект, написанный на С.
10/18: Когда приходят ламеры
Винамп после ухода главного программиста стали писать ламера. У меня на компьютере, например, после удаления всех вчера добавленных песен (13112 штук) он просто “выполняет некорректную операцию” и закрывается. Открываю заново, удаляю — все повторяется. Грустно.
В сентябрьском индексе популярности языков программирования TIOBE Programming Community Index Python обогнал С# по популярности и встал на 7е место! Ура!!!!!!!!