вебдев
27 заметок
терапия
Сейчас этот блог в основном про психотерапию.
как правильно
Слушайте меня, я вас научу правильно жить.
психология
Буржуазная лже-наука, пытающаяся выявить закономерности в людях.
практика
Случаи и выводы из психотерапевтической практики.
кино
Фильмы и сериалы.
книги
Это как кино, но только на бумаге.
nutshells
«В двух словах», обо всем.
дорогой дневник
Записи из жизни (скорее всего, не интересные).
беллетристика
Мои литературные произведения и идеи.
духовный рост
Когда физический рост кончается, начинается этот.
дивинация
Как предсказывать будущее.
половой вопрос
Про секс и сексуальность.
заяижопа
Творческий дуэт с моей женой.
магия
«Магическое — другое название психического».
Карл Юнг
игровой дизайн
Раньше я делал игры.
игры
Компьютерные игры.
язык
Слова там всякие.
людишки
Уменьшительно-ласкательно и с любовью.
культ личности
Про великих людей (то есть, в основном про меня).
hwyd
Уникальная Система Прививания Привычек.
буклет
я
идеи
блоги
spectator.ru
дети
wow
вебдев
музыка
контент
программирование
религия
дейтинг
диалоги
яндекс
кулинария
coub
fitness
символы
йога
шаманизм
tiny
ребенок

Wiki 2.0

17 лет назад в категориях вебдев контент

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

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

С другой стороны, я сейчас работаю с вики, время от времени у меня рождаются мысли, как всё исправить, но носят они в основном мирный характер «всё закопать и переделать».

На мой взгляд, человеческая система совместной работы с документами должна обладать следующими признаками:

1. WYSIWYG.

Да-да, именно оно. Вики-синтаксис – это полумера, half-assed решение для полугиков. Выделять наклон, как //а вот это наклон// якобы интуитивно понятней, чем тэги, но на самом же деле это такая очень странная реализация WYSIWYG для бедных: «палочки-то наклонные».

Другое дело, что почти все WYSIWYG системы делали тоже какие-то странные люди и почему-то с прицелом на хомячков.

Такая банальная вещь, как проставление ссылки, например, везде реализована одинаково неудобно: при редактировании ссылка должна выглядеть, как ссылка, но никто не говорит, что она должна вести себя так же.

Ибо оно все-таки WYSIWYG, а не WYGIWYGD (What you get is what you get, duh).

2. Отделение метаинформации от котлет.

HTML-тэги являются «невидимым» мета-слоем текста («разметкой»). Желающие могут взять любой несуществующий тэг, например, и посмотреть его в браузере. Выдается что? Правильно — пустота.

Другое дело, что так исторически сложилось, что правим мы документ сразу вместе со включенной в него разметкой, хотя самый первый html-редактор был, конечно же, WYSIWYG’ным. Если бы html был бинарным форматом, а не текстовым – всё могло бы сложиться хорошо.

Это было лирическое отступление.

Есть текст, к нему есть метаинформация, например, те же комментарии. Текст – отдельно, метаинформация – отдельно. Должным образом это реализовано, например, в MS Word’е в режиме правки текста: исходный текст, а к нему – правка. Их можно сливать, но это все равно разные слои.

Правка текста – это и есть дополнение текста актуальной метаинформацией.

В вики же популярный способ коллективной правки совсем варварский: включаем красненький текст и прямо по чужому тексту фигачим, вставляя свою подпись.

Да здравствует анти-семантика.

Минусы очевидны: когда нам вдруг понадобится «просто текст», пусть даже и не в самой утвержденной версии, придется отчищать текст от правок. Ну, или брать старую версию. (Механизм версий, кстати, — это единственная правильная вещь, которая есть в Вики).

«Комментарии к тексту» не работают: люди комментируют обычно какую-то одну конкретную мысль из текста; комментировать весь текст целиком можно только в виде «спасибо, прочитал».

Вполне очевидно, что доступ к созданию метаинформации и доступ к ее закреплению в документе – это два разных доступа. Как и доступ на чтение метаинформации и доступ на чтение документа вообще.

3. Работа с атомарными единицами.

Как правильно отделить метаинформацию от остального не понятно до тех пор, пока мы не решим, что является минимальной неделимой единицей текста.

Ей является абзац. А не документ.

Смотри Библию. До тех пор, пока не наступит просветление. После того, как мы осознали эту мысль и смирились с ней, всё становится совсем просто:

  • Каждый абзац можно комментировать.
  • К каждому абзацу можно предложить правку. (Исправление опечаток смысловой правкой не является и должно быть реализовано через ОРФУС-подобную систему).
  • На каждый абзац можно сослаться (ну, это само собой).
  • К каждому абзацу можно поставить сноску (сносками к каждому слову можно пожертвовать). Сноска, впрочем, всего лишь расширение следующего: каждый абзац может иметь ссылки/связи, типа «смотри также» или «читай до этого», — типы связей, строго говоря, могут быть совсем разные. Ссылки отдельно от текста нужны, если нельзя поставить ссылку в тексте без ущерба для смысла или лаконичности. (Это функционал совсем для гиков, он не обязателен, но показывает общее направление мысли).
  • Каждому абзацу можно выставить статус. Статус «переписать, устарело» у абзаца гораздо более осмысленен, чем у всего текста.

    Ну и так далее. Перемещение, добавление, удаление абзацев отслеживается легко.

    При этом у нас WYSIWYG (помните?), поэтому внутренности, типа

    пользователь не увидит. Самые умные уже догадались, как осуществляется контроль версий. Да, тоже поабзацно. (Он и сейчас так осуществляется, но только потому, что так проще).

    На уровне дизайна реализовать это всё тоже легко: у каждого абзаца есть «плюсик», раскрывающий всю метаинформацию о нем и дающий доступ ко всем инструментам. Там же – индикатор, что крестик не пустой, «этот абзац имеет 4 новых комментария и статус КГ/AM».

    Опять-таки, ajax и прочий вебдваноль.

    Когда все плюсики закрыты, текст является нормальным «человеческим» текстом, который и людям показать не стыдно. Опция expand all тоже есть.

    При этом – хаха – вики должна быть настраиваема для работы на двух мониторах: в первом текст, во втором (окне браузера) – содержание «плюсиков».

    Главное, в чем стоит отдавать отчет: текст для совместной работы – совсем не художественный текст, а писать в формате «абзац = мысль» нормальный человек обучается быстро. А если не обучается – то атата по попе ему, по попе.

    Деление на абзацы — не искусственное «ограничение» на уровне движка, оно должно поддерживаться авторами на уровне структуры текста и быть всегда в голове.

    Правка же чужого текста в формате «если ты такой крутой, предложи абзац другой» гораздо более продуктивна.

    4. Автоматизация связей и гипертекстовость.

    Все мы не любим очень умные программы, так ведь? Однако же.

    Создал я в Вики два документа: something/terrible и something/awful. Что должно быть по адресу something/, если там ничего не было? Правильно — список документов в something/*, с возможностью его перезаписать на что-то свое, а не «ой, тут ничего нет, хотите создать?». Раз уж мы имитируем папочную структуру.

    Вообще, у возможности легко создавать страницу с любым адресом минусов больше, чем плюсов: это полный аналог вебдвальных тэгов на массовых сервисах, когда есть и «кошки» и «коты» и «котята» и всё это – разное.

    Не могут люди нецентрализованно создать структурообразующую вещь. А она нужна, потому что иначе не навигация, а каша.

    Выхода три: либо закреплять правила адресации на уровне договоренности, либо – на уровне «движка», либо нужен «модератор».

    Из удобных «автоматизаторских» возможностей в Вики есть только автоматическое создание оглавления — {{TOC}}. Хотя по такому же принципу можно было сделать много полезного: список всех внешних/внутренних ссылок в тексте, например.

    Ну и прочие мелочи. Например, при расстановке ссылок, если описание ссылки не задано, то надо считывать содержимое title указанной страницы и ставить его в описание. Title и есть заголовок страницы, алё!

    Итого:

    Есть текст. К тексту есть обновляемая метаинформация. Слияние текста и метаинформации и есть работа над текстом. У текста есть минимальная смысловая единица (абзац), все действия производятся, прежде всего, над ней.

    Ну и в конце – почему это все не будет работать. Дело в том, что есть – увы – интерфейс в разы лучше. Называется он «говорить голосом». Ничего более эффективного, чем «человек пишет текст – мы собираемся и обсуждаем текст вслух – человек дорабатывает текст и потирает жопу» не придумать всё равно.

    Поэтому «пугающие» цифры, типа «85% страниц в Вики были написаны авторами в одиночку» — отражение вполне нормального и эффективого способа, с учетом внешней коммуникации.

    Баксокарма

    Некие (видимо, хорошие) люди попросили у меня придумать им «карму» на сайт (ссылку дам, как запустят). Ну, я придумал за 2 часа вечерком (идею просьба не тырить, пока не заплатили).

    Разрешение на публикацию, однако, есть (информация должна быть свободной, ага). Главный вопрос — сколько это может стоить? То есть сколько просить бабок за мой офигенный талант «и все такое»?

    ПОСТАНОВКА ЗАДАЧИ:

    Сделать на «вебдванольном» сайте систему поощрения активности пользователей, некий рейтинг, за который будут выдаваться раз в месяц реальные призы.

    АКСИОМЫ:

    1. Карма — не позитивна, так как быстро превращается в механизм наказания и чморения («карму заминусовали»).
    2. Валюта — позитивна, так как насильно отобрать бабки ни у кого нельзя. Но делиться бабками можно. А делиться — это позитивно.
    3. Для любой виртуальной экономики главное — отсутствие инфляции («удешевления денег»), поэтому нужен прежде всего money sink (средство для слива денег).
    4. Система не должна поощрять одних и тех же людей постоянно.

    ВАЛЮТА И КОШЕЛЕК

    Валюта — баксы с центами. Название не принципиально, главное — с центами.

    У каждого пользователя есть максимальный размер кошелька. По умолчанию он равен 100$*. Все поступления выше максимального размера кошелька пропадают «в никуда».
    Когда пользователь «дает бакс» другим, максимальный размер его кошелька увеличивается на 1$.
    Когда пользователь тратит деньги на аукционе, максимальный размер его кошелька уменьшается на такую же сумму, но максимальный размер кошелька не может быть меньше 100$.
    Максимальный размер кошелька — это просто потенциальная его вместимость.

    «ДАТЬ БАКС»

    Каждая сущность, у которой есть автор («пост», «статья», «комментарий» и прочее) имеют следующую кнопку: «+1» (видимо, с изображением монетки) и сколько денег всего заработала эта сущность всего.

    При нажатии на кнопку «+1» с твоего кошелька списывается 1.1$*, на кошелек автора зачисляется 1$, максимальный размер твоего кошелька увеличивается на 1$.

    Один пользователь может «дать бакс» одной сущности всего один раз. Дело это анонимное.

    ЗАРАБОТОК ДЕНЕГ

    Заработок денег — это «невидимая» часть. Логично, что для того, чтобы бабками делиться, нужно их зарабатывать.

    За каждый не-твой комментарий к твоей комментообразующей сущности (твоя сущность = там, где ты автор, если это форум, то твоя сущность — это тред, который создал ты) тебе зачисляется 30 центов*.

    Заработанные деньги тупо и молча поступают в кошелек, логи не ведутся. (Лучше вообще зачислять их раз в день, чтобы людям меньше было информации «за что и сколько дали»).

    МОДЕРАЦИЯ

    Модераторы тоже могут давать бакс, на общих основаниях (бакс за сущность), только баксы у них не кончаются. При удалении сущности баксы («сколько денег заработала эта сущность всего» и 30 центов*, если это комментарий) удаляюся со счета игрока. Те, кто эти баксы давал, обратно ничего не получает. Вот вам и борьба с накрутками.

    То есть вся модерация — это обычное тупое удаление, как и обычно. Просто бабки отбираются.

    КАК ЭТО РАБОТАЕТ

    В конечном итоге для пользователя все сводится к одной кнопке «+1» везде (One button to rule them all™). Нажимать на нее полезно, потому что максимальный размер твоего кошелька растет.

    В профайле можно посмотреть свой кошелек и его заполненность. Виртуалы могут хоть занажиматься на «+1» — пока у них нету бабок, это не работает. Если какой-то дурак вдруг заведет активного виртуала — ну и пусть, это полезно для сайта.

    АУКЦИОН

    Раз в месяц на аукционе разыгрываются ценные призы.
    Аукцион — это money sink. То есть человек накопил бабки, слил их все за месяц (люди азартны) — выиграл приз. В следующем месяце у него 0 баксов — появляется шанс выиграть на аукционе у других.

    Добавление от авторов сайта:

    делать аукцион раз в месяц большой, скажем, 3 лота от спонсора
    и раз в неделю в пятницу ящик пива
    ты бы повёлся? :)

    КОНСТАНТЫ

    * — с этим значением можно поиграться.

    Заголовки нужны

    Заголовки нужны. Dixi.

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

    Да и вообще, заголовок банально идентифицирует текст. Вплоть до того, что я помню некоторые заголовки и могу их найти в поиске.

    Потом по этим граблям пробежался Болк, а теперь вот и Бирман.

    Бирман, верни заголовки. Когда я читаю «Молодец, Рони! Ну, нужно ещё раз сделать 147, чтобы утереть нос Хендри :-)» вот так сразу и без заголовка, я понимаю, что это буржуазное развлечение снукер только потому, что я знаю о любви Ильи к.

    Белогривые лошадки

    Про облако тэгов хотелось бы понудеть.

    Движки, которые выводят облако тэгов на каждой странице, не кэшируя его — ущербны. Например, Wordpress генерирует страницу «пост с комментариями» с помощью 28 (!) запросов к базе данных. Поэтому посещаемые сайты на wordpress-е (не будем показывать пальцем) тормозят безбожно.

    Совершенно же логично, что для генерации поста с комментариями — например, в этом блоге — нужно максимум три MySql запроса: 1) вывод поста, 2) вывод комментариев, 3) вывод навигации «Вы сейчас здесь».

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

    Тут и кроется самый смешной нюанс — тэги у всех разные. Натурально, разные слова. Начинаются на разную букву. У кого-то ключевое слово «имбецилы», у кого-то — «идиоты», а тема-то одна и та же. Не говоря уже о том, что везде наблюдается смесь английского и русского, которая довольно нелепо сортируется по алфавиту.

    От сайта к сайту «оно всё разное». Запоминать ваши тэги/ключслова ни один посетитель не будет, не обольщайтесь. Сортировка по алфавиту бессмысленна.

    Сортировка по дате чуть более осмысленна, но а) интуитивно не понятна, б) часто пересекается с сортировкой по популярности (логично же, что чем больше постов по теме X, тем больше вероятность, что про эту тему недавно писалось, в) последние ключслова и так находятся под заметками на первой странице.

    «Там решено было цветом выделять последнее, хорошая мысль» — мысль вовсе не хорошая. Цветом нужно выделять только посещенные ссылки. Это принятно, интуитивно понятно, и, что самое главное — это гораздо полезней. Разноцветные ссылки — никому не понятное уебище. Даже если и подписано «Bright Color = Newer» — я захожу на сайт читать, а не оттенки цвета угадывать.

    То же самое и с размерами — размеры шрифта — показатель на самый точный. Сколько разных и различимых размеров можно запихать в одно облако? Десяток максимум. Сложнее всего быстро пробежать все «облако» глазами, ибо глаз в любом случае застревает на самых крупных элементах и дальше не идет. И это не плюс, это минус.

    Никому никогда не интересны все ключслова. Потому что часто бывает ситуация, когда есть «случайные» ключслова, принадлежащие одному-двум документам.

    Как надо

    В своем личном блоге проще всего отобрать штук пять ключслов, которые «наиболее характеризуют». И разместить их любым удобным способом. Например, как у меня справа. Вам самому безо всякой «автоматизации» лучше знать, какие ключслова «круче», без привязки к их частоте.

    На массовых «социальных сервисах» облако тэгов неинформативно, но нужно для того, чтобы круто выглядеть, и чтобы пальцем не показывали. И для того, чтобы направить леммингов по ими же протоптанной тропинке. В этом случае можно вместо «букав» просто использовать прямоугольники разных размеров и цветов, так как кликнут все равно на тот, который больше. А надписи никто не читает.

    Bonus track

    Хранить тэги в таблице надо так:

    1. В таблице с постами. Отдельное поле «ключслова через запятую».
    2. В отдельной таблице связей, которая имеет вид «ID поста — ID тэга».

    Это не два способа, а один, то есть хранить надо и так и так одновременно. Ценой небольшой избыточности информации мы получаем гораздо больший простр для. Минус только один: при редактировании надо редактировать и то и то, разумеется.

  • Мой инструмент по развитию силы воли и прививанию полезных привычек.

    Изобретение вебдваноля

    There was a second part of the dream, too, dependent on the Web being so generally used that it became a realistic mirror (or in fact the primary embodiment) of the ways in which we work and play and socialize. Вебдваноль изобрел — правильно! — Тим Бернес-Ли. Он же вел первый блог — сразу после основания интернета. (еще 96 слов)

    Гипертекст, веб и html

    Гипертекст — идея хорошая. Прочитать про нее можно (и нужно) в моем дипломе. Но конкретно так называемый «веб» и html — предельно кривая ее реализация. Вот только некоторые «родовые травмы»: 1. Односторонние ссылки. Абсолютный и полный бред. Если я связываю документ А с документом Б, то велика вероятность, что документ Б тоже как-то связан с документом А. (еще 915 слов)

    Last.fm

    Один из немногих гениальных сайтов «в стиле web 2.0» — это, конечно же, last.fm. Гениальность этого сайта заключается в том, что пользователям не дается возможности генерировать этот самый поносный user-generated content. Вместо этого анализируется отношение пользователей уже к существующему контенту, и на этом основании строятся хитрые связи и чарты. (еще 95 слов)

    Ajax vs gzip

    Ajax — незаслуженно раздутая технология. Не, получить ответ с сервера, не перезагружая страницу, иногда может быть полезным. (На skill.ru, например, при голосовании страница не перезагружается, а грузится маленькая хэтэмэлька в iframe, которая выводит окошечко, типа «спасибо, ваш голос засчитан». (еще 126 слов)

    CSS и борьба со спамом

    Изящный способ борьбы со спамом веб формах с помощью CSS. Хитрость заключается вот в чем: надо создать фиктивное поле в форме, скрытое с помощью CSS. Человек, пользующийся обычным браузером, это поле не увидит и не заполнит, в отличие от спам-бота, которые в большинстве своем CSS вообще не понимают. (еще 156 слов)

    Версия для печали

    На одном сайте у статей есть «печатная версия».
    Видимо, все остальное по умолчанию — непечатное.

    True story.

    Оптимизация картинок

    Бирман открыл для себя программу PureJPEG, начитавшись буржуя Joel-я, который на днях про нее написал. Программа эта убирает из jpeg-ов служебный мусор, уменьшая их размер. И ведь нет пророка в своем отечестве, ибо во-первых, Bolk давно еще писал программу photoshop crap remover, которая делает то же самое, а во-вторых, использовать фотошоп для оптимизации картинок для веба — черезвычайно глупо, так как он в jpeg-и столько говна пихает, что страшно. (еще 128 слов)

    Фетиш ЧПУ

    ЧПУ — вещь, безусловно, неплохая и местами полезная. Однако, и она превратилась в фетиш. Проблема с ЧПУ по большому счету одна: URL не может содержать русские буквы. И она никак не лечится. Есть два способа как это обойти: 1. Использовать английский язык. Способ не так уж и плох, когда используются УРЛы, типа /about. (еще 263 слова)