15.03.2009

Электропочта

Инбокс

Для меня инбокс — это фактически туду-лист. Пока я не решил затронутую в письме проблему, письмо сидит в инбоксе. Как только по письму все сделано, оно немедленно отправляется в папку (или в Gmail навешивается метка и архивируется). Я часто сам себе пишу письма чтобы что-то не забыть, потому что знаю — если есть в инбоксе, то задача не промандится. Вообще не понимаю, как живут и работают люди, у которых все письма хранятся в инбоксе.

Фильтры

У меня настроено множество фильтров, с помощью которых все второстепенные, не имеющие непосредственного отношения к работе, письма минуют инбокс и расфасовываются по папкам, где они ждут, когда для них появится свободная минута. Прежде всего, это всевозможные рассылки и уведомления.

Периодичность проверки почты

Часто почта отвлекает и мешает плодотворной работе. Особенно, когда приходит новое письмо — так и тянет пойти посмотреть что же там пришло. Поэтому я выставляю достаточно большой интервал проверки новых писем, минимум — 30 минут. А когда требуется полное погружение в решение задачи или я чувствую, что работа спорится и не хочу отвлекаться, то вообще вырубаю почту.

Еще есть обратная болезнь — постоянно заходить в почту и нажимать на кнопку «Доставить почту». Эта зараза нападает, когда не охота что-то делать, и ищешь повод хоть немного отложить решение насущной проблемы. Лекарство — воспитывать силу воли.

Черновики

Активно пользуюсь черновиками. Помимо незаконченных писем, храню в них заготовки писем, различные варианты подписей, а также использую просто как записную книжку для записывания мыслей, идей, составления листа желаний.

--

А у вас какие приемы работы с почтой для повышения собственной эффективности?

Передача параметров из HTML в JavaScript

Часто при инициализации JS-компонента нужно найти определенный DOM-элемент с которым компонент будет работать, а также достать из HTML параметры (настройки). О способах хранения и передачи в JS этих параметров я и хотел бы поговорить.

Раньше я решал эту задачу так: простые параметры передавал через классы, сложные — через дополнительные (не всегда валидные) атрибуты или дочерние элементы.

Предположим, у нас есть DOM-элемент:

<span id="test">тест</span>

При клике на этот элемент мы хотим показывать некий попап. Для показа попапа нужно задать следующие параметры: ширина, высота, таскаемость попапа и текст. Раньше я написал бы примерно следующее:

<span id="test" class="width_250 height_150 draggable"><span class="text">Трам-парам!</span>тест</span>

Потом я бы долго и муторно получал значения этих параметров путем выпарсивания их из классов и доставания из дочерних элементов.

Так бы и мучился дальше, если бы мой коллега Дима Филатов не подсказал гораздо более элегантное решение — прописать атрибут onclick в котором возвращать объект с настройками.

<span id="test" onclick="return {width: 250, height: 150, draggable: true, text: 'Трам-парам!'};">тест</span>

Как достать этот объект:

var element = document.getElementById('test');

// Забираем параметры
var options = element.onclick instanceof Function ? element.onclick() : {};

// Заметаем следы - обнуляем onclick
element.onclick = null;
element.removeAttribute('onclick');

// Навешиваем обработчик onclick для показа попапа
element.onclick = function () {
    showPopup(options);
};

По сути, для передачи настроек используется формат JSON в котором есть шесть типов значений: объект, массив, строка, число, булевское значение и null. Используя эти типы, можно передавать довольно сложную структуру данных, немыслимую для передачи через классы.

По-моему, очень круто. Блин, почему я сам не додумался до этого? :)