12 февр. 2009 г.

Создатели GTD инструментов останутся без своих копеечных заработков

В катому выводу я прихожу разглядывая изучая новый сервис от google (доступный уже давно в виду компоненты gmail) - Google tasks. Пользоваться этой штучкой можно из интерфейса gmail и с мобилы, а так как google взял уверенный курс на синхронизацию всего и вся, то синхронизация с PDA, например, подоспеет скоро.

Синхронизация с PDA в http://www.rememberthemilk.com/ - платная услуга, а создатели RTM'а всячеки глушат все попытки бесплатной синхронизации, видимо это их единственный способ отбить копеечку. Скоро и этого способа не останется.

ЗЫ. Лучший GTD инструмент для синхронизации КПК с windows mobile, S60 телефона и Персоналки с виндой попрежнему - Outlook 2007/2003 + Nokia PC Suite :), если кончено не считать стоимость приобретения.

9 февр. 2009 г.

Вышел Plone 3.2.1 и TsoguNG

Вышел очередной релиз Plone, а я кака-то давно уже отстал от этих странных релизов. Самый новый плон, которым я пользуюсь 3.0.4, который вышел 12 октября аж 2007 года.

Новая версия, похоже, только для улчшение устанавливаемости (судя по списку изменений). Забавно, что Plone 3.3 (Unreleased) тоже направлен на решении похожих задач, и не мудрено: Plone вырос в такой огромный и монстроузный проект, что разобраться в нем все сложней и сложней. Новые приложения создаются все реже, а, меж тем, старое умеет далеко не полный набор "коробочных возможностей" современных CMS. Хотя, Plone никогда не был просто CMS... Гуру, однако, попрежнему сидять на 2.5.x (видимо, 2.5.5).

А вспомниля про плон в связи с тем, что Информационная служба ТюмГНГУ, а точней Лаборатория WEB-технологий (в которой я больше не работаю) начала делать новый вариант движка сайта на django - TsoguNG (статья в wiki - Проектирование CMS TsoguNG). Раньше об этом писать особого смысла не было, но теперь, похоже, движок умеет уже достаточно, чтобы можно было назвать его новым tsogu сайтом.

Кстати, что такое "NG" в навзвании TsoguNG? Нефть и газ?

8 февр. 2009 г.

Некоторые подробности о Google Latitude

 

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

Google Latitude. грядет волна антиглобалистских митингов

Не смотря на пост http://googlemobile.blogspot.com/2009/02/locate-your-friends-in-real-time-with.html, рунет пока не лихорадит от выпадок параноиков-антиглобалистов по поводу захвата гуглом всего мира.

Latitude is a new feature of Google Maps for mobile, as well as an iGoogle gadget, that allows you to share your location with your friends and to see their approximate locations, if they choose to share them with you.

Latitude - новая фишка гугл карт для мобил (и для iGoogle), которая позволяет опубликовать ваше местоположение для ваших друзей (а также ФСБ, ФБР, ЦРУ, гугл и пр. :) ), и узнать где примерно находятся ваши друзья (а также выслать к ним представителей военкомата, милиции, ФСБ, ФБР и пр... :) ), если конечно они вам разрешили это знать (а некоторым и не нужно разрешение :) ).

# TODO: Надо сделать в блоге категорию "записки параноика-антиглобалиста".

PS. А ещё Google Earth 5.0 умеет импортировать трэк с GPS устройства.

7 февр. 2009 г.

HTML валидация в Middleware Django

В djangosnippets появилось два новых полезных сниппета:

1. HTML Validation Middleware

2. More flexible "Partial Template"

Можно было и не изобретать велосипед с "Псевдорекурсия в шаблонах Django", а тупо использовать второй.

Псевдорекурсия в шаблонах Django

Не первый раз уже сталкиваюсь с необходимостью создания деревьев на YUI. Прошлый раз дерево было тоже ненавязчивым, и как и прежде, я строил дерево из разметки. Но в прошлый раз данные для исходного ul строил хитрый sql скрипт использующий всю мощь oracle. В этот раз данные генерирует Django ORM, а значит и обрабатывать их надо по "джанговски".

Первый шаблон - итерация по списку категорий:

<div id="markup">
    <ul>
        {% for category in categorys %}
            <li>
                {% if category.parent %}
                {% else %}
                    {% include "category_intree.html" %}
                {% endif%}
            </li>
        {% endfor %}
    </ul>
</div>

Второй (вложенный) - итерация по вложенному списку категорий:

<a href="{% url category category.pk %}">{{ category }}</a>
{% ifnotequal category.child_category_count 0 %}
    <ul class="subcategory-list">
        {% for subcategory in categorys %}
            {% ifequal subcategory.parent category %}
                {% with subcategory as category %}
                    <li>{% include "category_intree.html"%}</li>
                {% endwith%}
            {% endifequal %}
        {% endfor %}
    </ul>
{% endifnotequal %}

Но, ведь, у дерева может быть несколько уровней. Вот для этого, как раз, во втором шаблоне красуется инструкция

{% with subcategory as category %}

которая переопределяет локальный "контекст" шаблона.

Фактически, имеем рекурсивный вызов вложенного шаблона. Код, конечно, далеко не идеален, но сама возможность создания таких штук очень радует.