Slug - короткое название статьи.

У Django есть нужные средства. Но стоит ли нагружать сервер? Да ладно, нагрузки там почти никакой, но удобно ли? Иногда хочется исправить то, что сделано автоматически.

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

Оказалось довольно просто: в change_form.html надо заменить

{% if adminform and add %}
<script type="text/javascript">
document.getElementById("{{ adminform.first_field.auto_id }}").focus();
</script>
{% endif %}

на

{% if adminform and add %}
   <script type="application/x-javascript"
     src="http://myfreeweb.ru/media/mfwjs/jquery.1.3.2.min.js"></script>
   <script type="application/x-javascript"
    src="http://myfreeweb.ru/media/mfwjs/jquery.synctranslit.min.js"></script>
   <script type="text/javascript">
    document.getElementById("{{ adminform.first_field.auto_id }}").focus();
    $(document).ready(function () {
    if ($('#id_slug') && $('#id_name')) {
    $('#id_name').syncTranslit({destination: 'id_slug', urlSeparator: '_'});
    }
    });</script>
{% endif %}

И все хорошо :) Конечно, если поля называются не name и slug (самые очевидные названия), то надо поменять их.

2009-11-13 17:34:38 Теги: web20 django javascript | Комментарии

Пришло приглашение на тест 2 альфа-версии Jolicloud - ОС для нетбуков. Давно хотел что-нибудь подобное... дождался :)

Для пользователя - это такой линукс, у которого красивый интерфейс, можно поставить веб-приложения, Google Chrome 4.x, Skype, Dropbox и даже Spotify (!!!) одной кнопкой. Технически - это Ubuntu Netbook Remix с другим оформлением и программой Dashboard. Нет, не маковский с виджетами, а панель для установки тех самых приложений (и зачем-то показывает, какие приложения установили друзья).

InternetAppDir

Веб-приложения - это "закладки" Mozilla Prism. То есть просто окно, занятое полностью тем приложением.

Flickr

Firefox неплохо допилен (а на самом деле это одно расширение) и не занимает так много места ;) А если убрать панель закладок - вообще отлично.

Firefox

Короче, это та самая система для нетбуков. Если бы с ней продавались Eee PC, никто бы не ставил на них венду. А то у Xandros не все в порядке с юзабилити и обновлением софта.

И самое главное! Есть 9 инвайтов, почту в коментарии.

2009-11-07 22:25:11 Теги: test beta web20 linux apps | Комментарии

(для тех, кто не знает: krosswordr.ru - мой проект, словарь кроссвордных понятий)

Вот я подумал, а почему бы не добавить на krosswordr.ru немножко wiki-стиля? Не в смысле всеобщего редактирования - всего лишь ссылки между страницами. Но добавлять руками - лень, да и вообще маразм какой-то. По базе скрипт прогонять? Тоже лень, да и попортить можно.

И сделал я это прямо в шаблоне. Template Tags делаются просто. Нагрузка на сервер, скорость рендеринга? Ну так кеш же. Все работает предельно просто:

Krosswordr Autowiki

Попробовать можно, например, тут.

Постовой: расчет каско. Все страховые компании. Бесплатно.
2009-11-07 17:52:39 Теги: services web20 django | Комментарии

Я тут недавно разговаривал о создании сайта с одним человеком. И посоветовал ему Drupal. Причем я его никогда не пробовал :) Только видел сайты на нем. Например, ubuntu.com.

Решил таки проверить популярную CMS, которую все выбирают. Зашел в демо админки. И увидел кучу ссылок... однако, в них все понятно!

drupal admin

Это намного проще, чем писать CMS на Django (хотя на Django лучше ;) не будет лишнего) или модифицировать Wordpress под не-совсем-блог.

Однако, популярность Drupal удивляет. При том, что там много лишнего и сайты на нем при высокой нагрузке отключаются (Apache/PHP не умеют то, что умеют Nginx/Tornado - выдерживать тысячи запросов), им пользуются почти все. Википедию вам в помощь: NASA, FedEx, White House... Друпалом занимаются очень многие студии веб-дизайна, друпал разработчики.

2009-11-02 13:02:54 Теги: test web20 blog apps | Комментарии
да картинки включи!
Постовой:

Избавляйтесь от хлама. куплю лежалую трубу.

9 октября ждем игру по Star Wars: The Clone Wars. игровые новости 2009

2009-11-01 19:44:14 Теги: web20 apps | Комментарии

Да, ты правильно всё читаешь. Microsoft выпустили My Phone - противоугонку для комуникатора, которая умеет выкладывать фотографии на Facebook, Flickr и MySpace.

включи картинки!включи картинки!

Это ещё одно приложение для синхронизации, которое работает отдельно от ActiveSync. Синхронизирует всё - SMS, контакты, фотографии (которые можно потом выложить на Facebook/Flickr), музыку, документы, задачи, календарь и всё такое. Но самое главное - последнее местоположение телефона. Похоже на Mobile Me от Apple, да? Да это оно и есть, только для WM. Клон самый настоящий ;)

включи картинки!

Однако Mobile Me бесплатно работает только 60 дней, а MyPhone вообще бесплатный. Там некуда платить. Сервис дает такой маленький Dropbox'ик - на 200 MB. Туда всё выше перечисленное синхронизируется. Поскольку у меня уже работает Google Sync (Google -> Exchange -> ActiveSync), почту/контакты/календарь он у меня отказался брать. Ну и правильно - этим пусть занимается Гугл. А вот для местоположения и фотографий - пользуюсь, да.

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

2009-10-07 12:50:20 Теги: services web20 apps winmobile | Комментарии

Недавно на Хабрахабре проскакивала новость про обновление jQTouch. Это такой плагин к известному JavaScript-фреймворку jQuery, позволяющий очень просто создавать веб-приложения для тачфонов - телефонов с сенсорным экраном, причём с пальцеориентированным интерфейсом. Каким и является iPhone. А так же HTC Hero, Dream, Magic - на Android - и куча разных WM-коммуникаторов с оболочками. Вот последнее у меня есть.

iphone_screenshot_3

Показывать буду на примере тач-версии этого блога. (Кстати, айфонщики, добавляйте. Будете читать.) Веб-приложение представляет из себя простую html-страницу, в которую нужно подключить jQuery и jQTouch, а так же тему для второго.

Я добавил в head вот это:

<script type="application/x-javascript" src="/media/jqtouch/jquery.1.3.2.min.js" charset="utf-8"></script>
<script type="application/x-javascript" src="/media/jqtouch/jqtouch.min.js" charset="utf-8"></script>
<style type="text/css" media="screen">@import "/media/themes/jqt/theme.min.css";
@import "/media/jqtouch/jqtouch.min.css";</style>

разве что тема другая. плюс ещё свой стиль для поста. Тебе надо будет не прямо это скопировать, а ещё поправить пути.

После подключения надо инициализировать интерфейс. Это делается функцией $.jQTouch() - и всё, больше ничего не надо писать на JS. Если, конечно, не надо AJAX'ом подгружать ничего. У меня вот так:

$.jQTouch({
    icon: 'http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/128px-Feed-icon.svg.png',
    statusBar: 'black-translucent',
    preloadImages: [
        '/media/themes/jqt/img/chevron_white.png',
 *пути_к_всяким_картинкам*
        ]
});

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

Теперь можно просто использовать обычные XHTML-теги. Но сначала расскажу о самом главном. Страницы - главное в приложении. Страница представляет из себя простой блок (div) c (понятным) id. Первый див будет первой страницей, которая будет открываться при нажатии на иконку в телефоне. Чтобы переходить между страницами, на первой должна быть ссылка на вторую, то есть a href="#id_страницы".

Для создания верхнего бара делаем вложенный в страницу div class="toolbar". Заголовок в нём - просто обычный h1. Кнопка "назад" - a class="back button" href="#id_задней_страницы". Вообще, чтобы узнать больше о элементах интерфейса, смотрите исходный код демки.

А теперь самое главное - интеграция с Django. Мы же делаем тач-версию блога, так? Я не знаю, как у тебя устроены модели и виды, но у меня список постов - content.object_list. Просто делаем шаблон, в котором в head вся инициализация, описанная выше, а в body... Особая Django'вская магия ;) Начнём с главной страницы. Это - список постов блога. По нажатию на один из них - страница с самим постом. Логично, да?

<div id="main">
  <div class="toolbar"><h1>MyFreeWeb Touch</h1></div>
  <div id="content">
    <ul>
      {% for post in content.object_list %}
      <li class="arrow"><a href="#{{ post.slug }}">{{ post.name }}</a></li>
       {% endfor %}
    </ul>
  </div>
</div>

Мало кода, да? Просто заголовок и список постов. А теперь делаем настоящую магию. Для каждого поста создаём свою страницу с id равным его slug (короткое имя на латинице, с _ вместо пробелов, и без лишних символов. Переводить как это слово - не знаю.) - мы ссылались на эти страницы в главной.

{% for post in content.object_list %}
<div id="{{ post.slug }}">
  <div class="toolbar">
    <a class="back button" href="#main">Назад</a>
      <h1>MFW:{{ post.name }}</h1>
  </div>
  <div class="post">{{ post.text|safe|urlize }}</div>
  <div class="info">Написан {{ post.date }}{% if post.tags %} | 
Теги (открываются в обычной версии):{% for tag in post.tags.filter %}
<a href="/tag/{{tag.name}}">{{ tag.name }}</a> {% endfor %}{% endif %}</div>
</div>
{% endfor %}

Да вот и всё. Вот так Это выглядит на моём AnyDATA ASP-505A:

asp_screenshot_1asp_screenshot_2

А вот как на iPhone, спасибо @_corwin_ (follow! follow!!!):

iphone_screenshot_0iphone_screenshot_1iphone_screenshot_2

Короче, теперь веб-приложения для iPhone и коммуникаторов вообще делать очень просто. Вот такие дела.

Постовой:
Дома лучше, а то вдруг пробки. вызов ветеринара на дом
Прорезные карманы
2009-09-01 17:40:49 Теги: web20 django blog apps javascript markup | Комментарии

Эх, давно я не писал сюда... Лень такая лень, да. Иногда лени не было, но всегда я не знал, о чем писать. Но вот только что мне пришла в голову идея, и вот она:

Я надеюсь, что все мои читатели уже пользуются Evernote? (Кстати, я давно там зарегистрировался и попал в первый миллион русскоговорящих пользователей, но активно использовать начал только сейчас) Так вот, там букмарклет выдается. "Добавить в Evernote", позволяет добавить в блокнот веб-страницу или её часть. Короче, веб-клиппер.

Идея в том, чтобы читатель далеко (на панель закладок) за ним не ходил. Блоггер... может встроить его в блог! Под постом. Вот как здесь:

Добавить в Evernote #TODO: Сделать для всех постов (в шаблоне)
2009-07-11 01:47:30 Теги: services web20 blog evernote | Комментарии
Digg.com - англоязычный сервис социальных новостей, чем-то похожий на русский всем известный Хабрахабр, однако у него есть одно отличие - весь контент на нём - ссылки. Никаких постов. Только ссылки, за которые можно голосовать. И комментировать, конечно. Казалось бы всё хорошо, но нам нужен русскоязычный. Пойдём искать. //некоторые из них я знал раньше, некоторые мне доставил твиттер. привет @a_pap и @Copoket :) и да, это не все //пост не проплачен, но хотелось бы...Блогун - монетизируем блоги
  1. News 2.0. На нём я уже давно "сидел". Приличный сервис, спам весь фильтруется, новости интересные. Хороший интерфейс и дизайн, можно входить через OpenID. А мой новый OpenID, который я зарегистрировал на myOpenId и прописал в шаблоне блога, сервис определил не как прописанный (myfreeweb.ru - который я ввёл), а как myfreeweb.myopenid.com :( news2_mainpage
  2. СМИ2. Сервис похож на News2.0 - те же причины для неодобрения новости, та же ошибка с OpenID. Разве что дизайн круглее и зеленее. Зато можно выбрать тип новости! А ещё по клику на новость открывается не сам источник, а страница smi2.ru с элементами (одобрить, комментарии, etc.) и фреймом, содержащим источник. Но для тех, кто через такие сайты раскручивается, это не плюс :) smi2_mainpagesmi2_add smi2_add2
  3. progg.ru. Единственный тематический сервис в этом обзоре. Дело в том, что тематика подходит :) Стандартный функционал, простой дизайн, максимально похожая на Digg'овскую кнопка голосования. С OpenID всё отлично. progg_mainpage
  4. Ваау! (да, да русскими буквами. самому кажется, что английское Bay - бухта, особенно после событий с The Pirate Bay) Технически всё отлично, удобная навигация, но... Что это? Скачать фильм такой, такой, какой? Да ну, всё в спаме. vaau_mainpage
  5. Reddit на русском. Ну что тут говорить, просто сервис. Среднего качества новости, интерфейс слегка странноват. reddit_mainpage
Итак, все сервисы хороши, но больше всего мне понравился News 2.0 - популярность среди адекватных людей (не спаммеров) и удобный интерфейс делают своё. И реклама там контекстная, а не баннер :)
2009-05-12 17:38:43 Теги: digg services web20 | Комментарии