Pull to refresh
0
0
SergeyKish @SergeyKish

User

Send message
> Да, это выглядит, как строка поиска, но это, скорее, навигационное меню.
Смотрите шире. Поиск это фильтрация по запросу

> Поиск информации представляет собой процесс выявления в некотором множестве документов (текстов) всех тех, которые посвящены указанной теме (предмету), удовлетворяют заранее определенному условию поиска (запросу) или содержат необходимые (соответствующие информационной потребности) факты, сведения, данные.

> Я не хочу тратить своё время на настройку окружения.
И не тратьте. Всё уже сделано разработчиками браузеров, пользователи привыкли, пользуются. Купера можно не цитировать.

> Вы ставите на первое место эффективность и гибкость, а я — простоту и удобство.
Я ставлю на первое место простоту и удобство. А также конструктивный диалог. Утверждать что либо о собеседнике — плохой тон.

Пользователи не ламеры и не тупые, единственный кто это утверждает — Купер. Людей оценивают не по тому что они говорят о себе, а по результатам работы. Такие люди как Денис Ритчи, Кен Томпсон, Дональд Кнут, Джеф Раскин, Билл Гейтс, Стив Джобс и тысячи других оставили след в истории. Хороший или плохой, но заметный. А Купер написал пару книг. Его же сайт www.cooper.com/ нарушает стандартную навигацию браузера. Это «удобное готовое решение» жутко прыгает в моём браузере. Как можно верить человеку слова которого расходятся с делом?
Алан Купер из программиста превратился в продажника. И тут же возненавидел свою прежнюю профессию. В первой части «Психбольницы» описаны верные идеи, во второй ужасаешься бахвальством и ограниченностью кругозора автора. А что делать? Надо себя продавать, это бизнес.

Рекомендую прочитать хорошую, добрую книгу по интерфейсам Джефа Раскина en.wikipedia.org/wiki/The_Humane_Interface

Его идеи получили развитие в проектах www.humanized.com/
Enso (предшественник Ubiquity) это больше чем загрузчик. Скорее shell с человеческим интерфейсом.
Создавать простые, чистые интерфейсы сложно. Как GUI, так и CLI. Примеры shell это подтверждают. Что если их переписать?


$ from some.html |html-links |select ogg$ |download
$ list *.haml *.sass |notify close |make

Acme — редактор, в котором исполняются команды shell. Он требует их написания так же как и vim требует написания vim-скриптов. Но в отличии от vim команды применимы за пределами редактора.

Да, в сложных системах проще делать ошибки. И с этим можно и нужно бороться. С помощью интерактивного, визульного редактирования, туториалов. Потому что пользователь это не тупой мешок с деньгами, как нас пытаются убедить корпорации, а человек зачастую лишённый возможности что-либо изменить.
Вы не посмотрели на Vimperator, не так ли? Его Hint Mode облегчает перемещение по линкам без использования клавиатуры. Но и это решение не спасает от флуда линков.

На данной странице в момент написания

> document.getElementsByTagName('a').length
587
В том то и дело что предоставить поиск по сайту очень легко. OpenSearch реализован в Firefox (поле поиска как на картинке en.wikipedia.org/wiki/OpenSearch), Chrome, IE, и даже Gnome Do. Объявлен на множестве сайтов, например stackoverflow.com

<link rel=«search» type=«application/opensearchdescription+xml» title=«Stack Overflow» href="/opensearch.xml">

Стандарт прост в реализации. В описании поиска нас интересует шаблон URL

<Url type=«text/html» method=«get» template=«stackoverflow.com/search?q={searchTerms}»></Url>

Наполнение которого реализуем в bash

urlencode () {
perl -pe's/([^-_.~A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg';
}

stackoverflow () {
$BROWSER stackoverflow.com/search?q=`echo -n $* |urlencode`;
}

Проверяем

$ BROWSER=echo stackoverflow bash urlencode
stackoverflow.com/search?q=bash%20urlencode

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

А главное — стандартизация интрефейса, а не представления. Невозможно создать реализацию, удовлетворяющую всех пользователей. Но стоит дать возможность каждому создать комфортное окружение.
Сайты предоставляют контент, навигация — задача браузера. Собственные средства навигации клавиатурой так же глупы как и собственный интерфейс брайля. А столь желаемая функциональность реализована в Vimperator для всех сайтов.

Демонстрационный сайт, отображает с помощью JavaScript окно поиска, а объявить Open Search opensearch.org не догадались. Функциональность доступна зрячим, использующим один из больших браузеров. А ведь люди бывают разные и браузеры разные — я использую браузер без поддержки JavaScript.

Первые абзацы — GUI vs CLI — похожи на троллинг. Сравните en.wikipedia.org/wiki/Command-line_interface и en.wikipedia.org/wiki/Text_user_interface
Vim (приведённый как пример) это TUI (в консоли) или GUI (gvim) приложение.

> A command-line interface (CLI) is a mechanism for interacting with a computer operating system or software by typing commands to perform specific tasks.
Запускалики — тоже CLI.

CLI любят за гибкость. Shell это язык, его комманды — слова, они объединяются в предложения:

$ cat some.html | extract-links | grep ogg$ | wget-list
$ while true; do inotifywait -q -e close --format %w *.haml *.sass; make; done

Эти строки могут быть непонятны, возможно имеет смысл отразить их графически как это сделано в Yahoo! Pipes en.wikipedia.org/wiki/Yahoo!_Pipes или Nuke en.wikipedia.org/wiki/Nuke_(software).

Ну а самые чудеса творятся в редакторе Acme acme.cat-v.org/.
Как все наверное знают, десктопные ОС поддерживают множество платформ. Для Debian это i386, amd64, m68k, sparc, alpha, powerpc, arm, mips, hppa, ia64.

NetBSD поддерживает 57 платформ. Разработать приложение, которое будет работать на всех системах, возможно. И этим занимаются на протяжении десятилетий.

«Разработка только под одну платформу и игнорирование других.» это не кроссплатформенная разработка. Оффтопик.

«Кроссплатформенные фреймворки» и «Использование виртуальной машины» — построение приложения вокруг стандартизированных интерфейсов.

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

Прежде чем создавать велосипед стоит оглянуться.
К тому что пример хреновый
Бесполезная кнопка меняющая свой текст не нужна. Если очень хочется:

$('input').click(function() {
this.text = 'clicked';
});

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

Чего нельзя сделать статическими файлами, так это обработку непредсказуемых данных. Скажем обработку ввода пользователя или данных датчиков. Хорошие примеры — поиск, голосование.
В этом случае сервер отдаст кучу мусора — куски javascript, шаблоны.
Но не контент.

HTML, содержащий только контент, можно читать как есть:

$ curl example.com/сепульки
<head>Сепульки — Космическая энциклопедия</head>
<body>
<h1>Сепульки</h1>
Важный элемент цивилизации <a href="/адриты">ардритов</a> с планеты <a href="/энтеропия">Энтеропия</a>
<h2>См. также</h2>
<ul>
<li><a href="/сепулькарии">Сепулькарии</a></li>
</ul>
</body>

Или прогнать через простейший фильтр:

$ function get() { curl $1 | html2md`host $1`; }
$ get example.com/сепульки
Сепульки
========

Важный элемент цивилизации [ардритов](http://example.com/адриты) с планеты [Энтеропия](http://example.com/энтеропия)

## См. также

* [Сепулькарии](http://example.com/сепулькарии)

А можно преобразовать в latex и отрендерить в ps/pdf, используя авторский CSS. Или заменить эти (обычно кривые) стили своими. Такое богатство возможностей обеспечено простотой конструкции.

«Современные» браузеры — лишь одна из возможных моделей интерфейса сети. Её сложность понимаешь лишь в попытке реализации. Нет, я говорю не о написании интерфейса к webkit, а о реализации рендера, javascript и DOM.

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

$ nc lifehacker.com 80
GET / HTTP/1.1

HTTP/1.1 400 Bad Request
Date: Tue, 15 Feb 2011 16:28:46 GMT
Server: Apache

Новые механизмы работают только на очень сложных браузерах. Контент недоступен для пользователей иных операционных систем, браузеров. Ничем не лучше зависимости от ActiveX.

Зачем? Мне это тоже не понятно.
Пример создан специально для людей не любящих HTML, JavaScript и статические страницы.
Зато фреймворк! Его использование позволило не заморачиваться с созданием заголовка, сделать единую навигацию с линками указывающими на текущую страницу. Тот же копипаст, но программно.

Мне кажется так человечнее gist.github.com/801135
Отсутсвие абстракций освобождает от проблем возникающих при их протекании.
Решаю замечательный квест — создание загрузочного Frenzy FreeBSD USB средствами Linux (dd, fdisk, cp, mount).
У меня таких много могу подкинуть.
А теперь самое интересное — команды getxkbcurrent не существует. Ближайший ее аналог — members.dslextreme.com/users/jbromley/files/ruby-xkb.tar.bz2
Нас интересует только получение текущей группы и символов (setxkbmap -print иногда выдает неверные данные оО).

$ ./getxkbgroupsymbols
1
pc+us(dvorak-de)+ru(winkeys-ua):2+inet(evdev)+capslock(grouplock)

Теперь подменяем интересующую часть, например первый параметр на «us»

$ echo «pc+us(dvorak-de)+ru(winkeys-ua):2+inet(evdev)+capslock(grouplock)» | sed 's/+[^+]*/+us/'
pc+us+ru(winkeys-ua):2+inet(evdev)+capslock(grouplock)

И отправляем строку обратно

$ setxkbmap -symbol 'pc+us+ru(winkeys):2+inet(evdev)+capslock(grouplock)'
И снова setxkbmap спешит на помощь!
Активные раскладки это функция от аргумента и состояния иксов.

$ cat switch
#!/bin/sh
setxkbmap `getxkbcurrent` $1

Так что создаем несколько скриптов вроде

$ cat ru
#!/bin/sh
switch ru

или указываем раскладки в менюшке.
Очень хотел переключение раскладок по Caps Lock на маке. Не бывает, по крайней мере без покупки пары приложений.
Даже для windows решение есть.
Конфигурацию xkbmap очень легко менять из скриптов.
В моем случае это переключение между с dvorak на qwerty и обратно для предоставления доступа к терминалу смертным.

$ cat dvorak
#!/bin/sh
setxkbmap us,ru dvorak-de,winkeys-ua grp:caps_toggle

$ cat qwerty
#!/bin/sh
setxkbmap us,ru ,winkeys-ua grp:caps_toggle

Скрипты вызываются любым удобным способом. В моем случае они лежат в ~/.wmii/
Результат — переключение между кирилицей и латиницей по Caps Lock, между dvorak и qwerty — `win+a dv` и `win+a qw` соответственно. Упомянутые выше dvorak-de и winkeys-ua расшарены gist.github.com/650839

Для ввода китайского и японского посмотрите на SCIM и Anthy.
… а сегодня Google Docs и Gmail, но я все же мечтаю о просты и чистых интерфейсах. И, конечно, потихоньку пишу.
Нет я не о нейспейсах. Для человека

foo::Foo* myFoo = new foo::Foo(bla, bla);

Означает то же что и

myFoo = new foo::Foo(bla, bla);

Тип переменной выводится из конструктора. То же касается указания типа параметров.

Самая жесть — отдельные секции описания и реализации. Это никак не DRY со всеми вытекающими.

Хуже может быть только C++ с венгерской нотацией. Бессмысленно и беспощадно.

HRESULT hResult = someCall();
Вопрос не в написании, а в чтении.
Все эти «foo» нужны компилятору, а не программисту.
1
23 ...

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity