• Главная
  • Оглавление
  • Обратная связь
  • Лента RSS
  • Правила
Что здесь уже нашли

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




Найдено страниц: 57 [показано 10]

  1. Грамотный интерфейс: поля ввода

    Степень соответствия запросу: 31,87%
    Фрагменты текста поста :
    ... Грамотный интерфейс: поля ввода Очень часто в программах данные вводятся в формах, содержащих множество полей: поле фамилии, имени, адреса, номера паспорта, размера обуви... ... Проблема состоит в том, что внешне эти поля очень похожи друг на друга и рано или поздно оператор (из-за усталости, по неопытности или по какой другой причине) вобьет фамилию в поле номера паспорта или адрес в поле отчества... ... Частично решить эту проблему позволяют контролы, принимающие ввод по маске ( MaskEdit или MaskEditBox ), но, честно говоря, им не хватает гибкости... ... Гораздо лучше изначально создать такие условия ввода данных, чтобы подобные ошибки просто не возникали... ... Наиболее популярное на данный момент - разбить форму с десятком полей ввода на несколько форм, по два-три поля в каждом... ... для изменения ранее введенных данных (например неверно введенной фамилии) необходимо сделать в формах навигацию "вперед - назад"... ... после нескольких часов работы они начинают дико раздражать... ... Раскрасим поля ввода... ... На мой взгляд для решения вышеописанной проблемы необходимо разукрасить фон полей ввода... ... Но не стоит делать их яркими как новогодняя елка, а нужно просто слегка изменить цвет, чтобы каждое поле приобрело свой уникальный легкий цветовой оттенок... ... Поработав пару часов с таким интерфейсом, человек уже на уровне подсознания будет знать, что в розовое поле нужно вводить фамилию, а в голубое - адрес... ... Окрашивание полей имеет и еще один плюс - если разработчики в будущем поменяют расположение полей, но при этом сохранят их цветовое соответствие (фамилия - розовый, адрес - голубой), то пользователям будет намного легче приспособиться новому виду, т... ... для поиска нужного поля они будут ориентироваться по цвету, а не читать все подряд надписи на форме... ... Суть состоит в том, что для ввода новой записи в базу и для редактирования уже введенной записи как правило используется одна и та же форма... ... Так вот, если во время редактирования придать фону формы какой-нибудь оттенок (например сделать ее слегка красноватой), то пользователь, занимающийся только вводом новых данных, сразу же заметит это изменение цвета и не введет по ошибке новые данные поверх старых... ... Ну и чтоб поставить жирную точку в вопросе путаницы при вводе и редактировании данных опишу еще одно простое, но очень полезное улучшение интерфейса... ... Когда на форме расположено множество полей, то из-за усталости глаз, не очень хорошего зрения, слишком высокого разрешения монитора и многих других проблем возникает ситуация, когда пользователь не может сразу отпределить позицию коретки ввода - моргающая полоска может быть не заметна... ... Обычно в таких случаях пользователь хватает мышь и "тычет" ей в нужное поле... ... Помочь пользователям в этом случае можно раскрасив текст в текущем поле ввода... ... Программируется такое поведение сверх-просто: как только фокус ввода передается какому-то контролу, значение его свойства " цвет текста " ( ForeColor , TextColor ) меняется на " красный " ( Color... ... Это простое дополнение даст возможность пользователю всегда точно знать, где именно находится коретка ввода и что именно нужно сейчас вводить... Подробнее: http://fit-media.com/post_1205142560.html


  2. AJAX — WEB 2.0 за 5 минут

    Степень соответствия запросу: 26,08%
    Фрагменты текста поста :
    ... сервер возвращает простой HTML, вместо XML, как того требует технология AJAX... ... Итак, первое, что нужно сделать &mdash... ... html <... ... html (но вы, естественно, можете дать любое имя)... ... html')... ... html... ... после выполнения функции mytest() внутри контейнера будет помещено содержимое нашего файла (в данном примере это будет надпись "... ... html <... ... html> <... ... html')... ... /html> Сохраните файлы index... ... html, jquery... ... html в одной папке, откройте index... ... html в вашем любимом броузере, кликните по ссылку Run... ... html')... ... добавим поле для ввода имени: Поле ввода имени Enter your name: <... ... } Первой командой мы считываем значение атрибута value из нашего поля ввода и сохраняем его в переменной nnn, а второй командой вызываем наш серверный скрипт с передачей ему считанного имени и занесением ответа в наш контейнер... ... ) Проблема встает, когда ваша форма содержит десятки элементов ввода &mdash... ... радио-кнопок, чек-боксов, полей ввода и т... ... html <... ... html> <... ... /html> Как видите, теперь я создал форму и использовал два поля &mdash... ... И теперь эти поля не имеют идентификаторов, зато имеют имена... ... считывать данные из полей, этим займется метод serialize(), который сам соберет все данные из формы и упакует их в формат, понятный для метода post()... ... Теперь, если вам нужно передать на сервер больше данных, то просто добавьте в форму сколько угодно полей различных типов (радио-кнопки, текстовые области, пароли, чек-боксы)... ... фреймворк сам определит количество и типы полей и сам соберет из них данные для отправки... ... html - загрузка файлов <... ... html> <... ... /html> Чуть комментариев к коду... ... всего навсего указывает функцию, которую необходимо выполнить сразу после загрузки страницы... ... после получения ответа (она поместит ответ в наш контейнер)... ... все, больше ничего делать не нужно... ... Всю необходимую информацию (список полей, их типы, адрес серверного скрипта и т... Подробнее: http://fit-media.com/post_1262093659.html


  3. Залепа №9. Microsoft друзей не признает.

    Степень соответствия запросу: 18,68%
    Фрагменты текста поста :
    ... Голуба "Правила программирования в С и С++" (речь идет именно о C++): Цитата: Как-то раз я видел интерфейс, в котором объект "календарь" позволял пользователю интерактивно выбирать дату, щелкая мышью на каком-либо из дней, показанных на изображении календаря... ... "Календарь" затем экспортирует эту дату в другие части программы, помещая ее в объект "дата", который возвращается из сообщения get_date()... ... При выполнении должным образом единственным видимым в других частях программы объектом был бы объект "дата"... ... "Дата" использовала бы объект "календарь" для реализации сообщения "инициализируй_себя" (которое могло бы быть конструктором), но "календарь" бы содержался внутри "даты"... ... Определение класса "календарь" можно было бы даже вложить в определение класса "дата"... ... Объект "дата" также мог бы поддерживать другие инициализирующие сообщения, такие как "инициализируй_себя_от_редактируемого_ввода" или "инициализируй_себя_из_строки", но во всех случаях объект "дата" отвечает за нужное для инициализации взаимодействие с пользовательским интерфейсом... ... Остальная часть программы просто бы непосредственно использовала "дату"... ... никто, кроме "даты", даже бы не знал о существовании объекта "календарь"... ... То есть вы бы объявили "дату" и приказали ей себя инициализировать... ... Затем вы можете передавать объект "дата" всюду, куда необходимо... ... Конечно, "дата" должна также уметь себя вывести, переслать в файл или из файла, сравнить себя с другими датами и так далее... ... Следуя описанному выше работа с классом "дата" должна выглядеть примерно так: Пример кода: CDate cd = new CDate()... ... // создали объект "дата" с текущей датой внутри cd = new CDate("15... ... // сохранили дату в файл cd... ... // прочи дату из файла int days = cd - new CDate("28... ... // получили дату, на год большую исходной int dw = cd... ... // отображение календаря для ввода даты пользователем... ... Итак, упростим задачу до предела: есть класс CDate , представляющий ни что иное как обычную календарную дату... ... есть класс CCalendar , представляющий собой вспомогательное окно, отображающее календарь и принимающее ввод от юзера... ... Требования к реализации: 1) все операции касающиеся даты, должны выполняться в классе CDate... ... Если же скомпоновать наш класс в сборку (assembly), то класс календаря можно сделать ненаследуемым, но при таком подходе пользователю уже не удастся сделать программу из одного exe-файла - придется тягать за собой еще и нашу сборку... Подробнее: http://fit-media.com/post_1199568462.html


  4. Файлы vs базы данных.

    Степень соответствия запросу: 9,51%
    Фрагменты текста поста :
    ... автор скрывает исходники, шифруя все в байт-код с помощью Zend-Guard), но общие выводы можно сделать просто проанализировав содержимое файлов, хранящих статистические данные... ... Структура такова: allsein — данные о заходах с поисковиков по разным запросам хост | искомая фраза дата, количество заходов... ... хост | искомая фраза дата, количество заходов... ... agent — данные о броузерах и ботах user-agent броузера дата, количество заходов... ... user-agent броузера дата, количество заходов... ... pages — данные о посещенных страницах страница дата, количество заходов... ... страница дата, количество заходов... ... rss_agent — данные о запросах от RSS-ридеров user-agent ридера дата, количество заходов... ... user-agent ридера дата, количество заходов... ... source — данные об источниках трафика URL страницы-источника дата, количество заходов... ... URL страницы-источника дата, количество заходов... ... В качестве дат (видимо для оптимизации) используются целочисленные значения, равные количеству дней, прошедших с некой фиксированной даты (1 января 2000 года)... ... html в определенный день, нужно сперва вычислить сколько дней прошло с 1 января 2000 года до искомой даты, затем «заглянуть» в ячейку массива Пример кода $ar['pages']['/stat... ... При обращении серфера к странице, скрипт собирает всю необходимую информацию (имя страницы, URL страницы-источника, user-agent, дата обращения и т... ... она требует перебора части (а в худшем случае всех ) элементов массива и для каждого из них необходимо сделать сравнение достаточно длинных текстовых строк... ... Тут можно немного оптимизировать процесс и сделать обращение вида Пример кода $ar['allsein']['google... ... :-) Структура, например, такая: Структура таблиц Таблица se_hosts -------------------- ID1 — уникальный числовой номер (используется для связи таблиц) Host — имя хоста поисковика Таблица se_query --------------------- ID2 — уникальный числовой номер (используется для связи таблиц) SH_ID — уникальный номер для ссылки на первую таблицу Query — текст искомой фразы Таблица se_hits ------------------- Q_ID — уникальный номер для ссылки на вторую таблицу Date — кво-дней с 1 января 2000 года Hits — количество хитов за этот день Естественно первая и третья таблицы будут иметь индексы по первым двум полям, а вторая — по всем... ... Если не использовать индексы, то для выполнения этой операции придется провести сравнение имен хоста с содержимым поля Host первой таблицы для части (а в худшем случае всех ) записей... ... Индексный файл содержит копию проиндексированного поля (или полей) из таблицы БД, но в отсортированном виде... ... Весь диапазон значений (количество записей в таблице) делится пополам и сравнение искомого значения происходит со значением поля сразу из середины таблицы... ... Благодаря тому, что мы проиндексировали поле с именем хоста, мы находим нужную запись в 15 раз быстрее, чем в массиве (буду брать наихудший вариант)... ... После того как мы нашли с помощью индексов нужную запись, ее требуется загрузить в память... ... В нашем случае размер записи (для третьей таблицы) составляет 12 байт , ведь там только три поля — Q_ID , Date и Hits , каждое из которых представляет собой 32-битное число и занимает 4 байта... Подробнее: http://fit-media.com/post_1222679684.html


  5. 14 принципов создания вежливых программ

    Степень соответствия запросу: 3,7%
    Фрагменты текста поста :
    ... Из этого исследования следует важный вывод: Если мы хотим, чтобы наша программа понравилась пользователям, мы должны сделать ее поведение похожим на поведение человека... ... Они борются с идеей сделать компьютеры более похожими на людей, потому что они считают людей слабыми и несовершенными компьютерными устройствами... ... Может ли компьютер дать вам другой ответ, чем только что кому-то еще... ... Если хозяин отказывается сделать это, я скорее всего покину этот ресторан и поищу другой, где мои желания имеют приоритет перед желаниями владельца... ... Например, программа может утверждать, что я не могу отправить заказ, пока не введу свой номер социального страхования, но если я все таки захочу отправить заказ без него, программа должна сделать так как я сказал... ... Легче остановить запрос, если он окажется ненужным, чем ждать его выполнения... ... Из этого следуют два вывода... ... Я хочу знать заранее, что объем партии ограничен и заказ нужно сделать заранее... ... Очень часто после длительной работы с документом я нажимаю кнопку "Печать" и ухожу выпить чашечку кофе, пока документ распечатается... ... Подавать до или после главного блюда... ... Хотя автоматизированная система ввода заказов может обработать в миллион раз больше заказов, чем простой служащий, служащий всегда может подстроить работу системы... ... Для того, чтобы быть подстраиваемой система должна сделать свой внутренний процесс доступным опытному пользователю... ... Принцип здесь простой – позволить пользователю делать все что он захочет, но подробно записывать все его действия, так что ответственность остается... ... Мы можем сделать программы значительно более вежливыми, если они будут работать для того, чтобы предоставить пользователю всю возможную информацию без значительных усилий с его стороны... ... Я доверяю банковскому служащему, потому что он улыбается мне, но я всегда пересчитываю свои деньги после банкомата, потому что попросту не доверяю тупой машине... ... Как показывает приведенный список характеристик, в большинстве случаев сделать вежливую программу ничуть не труднее, чем невежливую... Подробнее: http://fit-media.com/post_1203349390.html


  6. Пользовательский интерфейс

    Степень соответствия запросу: 2,32%
    Фрагменты текста поста :
    ... Теперь нам нужно сделать концептуальный дизайн интерфейса... ... В рамках нашей метафоры мы должны разработать систему интерфейсных элементов, своего рода алфавит взаимодействия, изучив который пользователь сможет легко делать то, что ему нужно... ... При переходе от алфавитно-цифровых дисплеев к графическим поле дисплея казалось непомерно большим и проблема синхронизации точки взаимодействия была самой сложной... ... Поле экрана разбивалось на прямоугольники-окна и вся работа велась только в одном из них - так называемом активном окне... ... Поиск же курсора мыши при его потере из поля внимания пользователь (до сих пор) выполняет подергиванием мыши... ... Пользователь может сделать средним любой отрезок стены, причем это тоже происходит в режиме анимации... ... В этот интервал входит не только время вывода новой картинки на экран, но и время осознания ее пользователем, ведь определенное время и усилия тратятся пользователем на то, чтобы понять, как каждая следующая картинка соотносится с предыдущей... ... Динамические визуальные сигналы - это изменение изображения на экране с целью дать пользователю дополнительную информацию... ... Вне зависимости от активности пользователя программе, построенной на анимационном интерфейсе, всегда есть что делать (например, менять фазу мигания)... ... На каждом такте работы такой программы заново строится изображение на экране, а события, инициированные пользователем, например ввод с клавиатуры, отрабатываются всего лишь изменением состояния программы... ... После выработки сквозного визуального решения необходимо прорисовать картинки, называемые у аниматоров "фонами"... ... Так, самое модное сейчас применение компьютеров - блуждание по Сети - имеет тот интерфейс, который вытекает из языка HTML, а он, в свою очередь, производит впечатление "времянки", которая, как теперь ясно, пришла всерьез и надолго... Подробнее: http://fit-media.com/post_1204019048.html


  7. Идея глобального контента

    Степень соответствия запросу: 2,18%
    Фрагменты текста поста :
    ... Идентификатор родительского элемента сайта ( parent_id - мы же строим иерархическую систему) Заголовок ( title ) Описание ( description ) Краткое содержание ( summary - используется в качестве анонса) Собственно текст старницы ( content ) Ключевые слова ( keywords ) Идентификатор автора ( user_id ) Дата создания ( created ) Дата последнего изменения ( modified ) Флаг опубликованности ( published ) Идентификатор логического раздела ( category ) Вроде ничего не забыл... ... Соответственно набор полей тот же, что и у статической страницы... ... Список полей: Уникальный идентификатор ( id ) Идентификатор статьи с в блоге, к которой относится данный комментарий ( parent_id ) Заголовок ( title ) Собственно текст ( content ) Идентификатор автора ( user_id ) Дата создания ( created ) Флаг промодерированности ( published ) Как видим, поля всё теже, что и для статичной страницы, отличие лишь в количестве... ... Лишь будет иметь одно дополнительное поле: Дата, начиная с которой новость уже не актуальна ( expiried ) Товар в магазине... ... Используются все теже поля, что и для записи в новостях, но с небольшими дополнениями: цена единицы товара ( price ) количество товара на складе ( number ) картинка товара, лишь для удобства - никто не запрещает ее вставить в само описание товара ( image ) Итог... ... Проанализировав описанное выше, можно легко сделать вывод, что при проектировании CMF логично создать всего одну (большую) универсальную таблицу в базе данных для хранения практически любого вида контента... ... При этом для разработчиков модулей можно упростить многие рутинные операции, такие как, программирование ввода одних и тех же данных в разных модулях ( created , modified , title , decsription , keywords и т... ... Разработчику модуля нужно лишь сообщить системе, какие именно поля будет использовать его модуль и система сама сможет создать все необходимые формы для ввода/редактирования данных, с необходимой валидацией... ... Так же этот вариант хранения данных позволяет сделать "... Подробнее: http://fit-media.com/post_1242742678.html


  8. Максимум производительности

    Степень соответствия запросу: 2,05%
    Фрагменты текста поста :
    ... Например, пользователь решил сделать определенный шов... ... Такие фотоаппараты устраняют необходимость принятия решений низкого уровня, которые мог бы сделать профессионал... ... После этого: Уменьшайте число манипуляций, насколько это возможно... ... Уменьшение необходимости ввода данных Следующие методы могут увеличить производительность ввода данных, уменьшая количество необходимой для ввода информации: Автоматически заполняйте поля новой записи значениями предыдущей... ... Минимизируйте, либо полностью устраните необходимость ввода информации... ... Можно ли получить информацию на основе логического вывода... ... Второй подход - минимизация ввода информации - может быть довольно сложным для применения по довольно неожиданной причине... ... Скорее всего, сделать неправильный выбор... ... Если нужно передать длинную форму после того, как пользователь нажмет Submit , это нужно сделать в фоновом режиме, пока пользователь переходит к следующей форме... Подробнее: http://fit-media.com/post_1207048697.html


  9. Миф о метафоре

    Степень соответствия запросу: 1,81%
    Фрагменты текста поста :
    ... Самая большая проблема заключается в том, что метафоры жестко прибивают гвоздями наши концептуальные ноги к полу, навсегда ограничивая возможности наших программ... ... Эффективность этого метода огромна, потому что она использует грозное оружие человеческого ума - способность делать логические выводы... ... Процессор этого делать не умеет... ... Толковый словарь Вебстера определяет интуицию как "способность достижения непосредственного знания без какой-либо очевидной разумной мысли или логического вывода"... ... Он и не должен делать этого, потому что большинство идиом вообще не имеют метафорического смысла... ... Но для таких часто используемых в программах понятий как процессы, связи, службы и преобразования это сделать трудно или даже невозможно... ... Следование метафоре дает пользователю значительный прирост производительности в первый раз, когда они используют буфер обмена, но это стоит им многого после того как они откроют слабость этого механизма... ... В физическом мире это нормально, но в программе нет нужды заставлять пользователя делать все старыми неуклюжими методами... ... Почему бы не отказаться от рабского поклонение метафоре и дать пользователю все средства, не выходя на улицу... ... Но они не могут сделать этого, будучи ограниченными мрачной реальностью электрических цепей и пластмассовых корпусов... ... Почему наши коммуникационные устройства не позволяют делать несколько звонков одновременно или же звонить по указанным организациям... Подробнее: http://fit-media.com/post_1206190085.html


  10. Оптимизируем мышиную возню

    Степень соответствия запросу: 1,8%
    Фрагменты текста поста :
    ... Как уже было сказано в предыдущих постах, чем большим количеством устройств ввода приходится пользоваться юзеру для работы с программой, тем менее удобен такой интерфейс... ... Меню должны иметь как можно меньше вложенных подменю Лучше сделать больше пунктов главного меню с одной выпадающей менюшкой в каждом пункте,чем все команды загнать в одно меню с кучей вложенных подменю... ... Но зато для переключения в другие режимы (например для наклона объекта) приходится делать правый клик по объекту и выбирать нужный режим из выпадающего меню... ... Насколько я знаю, в PhotoShop такую операцию мышью сделать нельзя... ... Например, если пользователь ввел курсор мыши в поле контрола DropDownList (который не поддерживает ввод с клавиатуры, а просто позволяет выбирать варианты из списка возможных), то почему бы этому контролу не развернуться не дожидаясь пока пользователь кликнет по нему... ... Точно так же, он должен сам свернуться, как только курсор мыши покинул его - пользователь видимо передумал делать выбор... ... Идея состоит в том, чтобы окно меню исчезало не сразу после клика по его пунктам, а с некоторой задержкой... ... Меню должно исчезнуть только после того, как мышь его покинет... ... сделать его независимым и не исчезающим... Подробнее: http://fit-media.com/post_1199978157.html


История внешних поисковых запросов

Меню

  • Главная страница
  • Оглавление блога
  • Лента новостей
  • Обратная связь
  • Правила блога

Анонсы по темам

  • Все посты блога
  • С миру по нитке
  • Мысли вслух
  • Графика и фото
  • Кривизна платформы .NET
  • Грамотные интерфейсы
  • WEB-программирование
  • FlatCMS - шустрая и гибкая
  • Доработки Lasto-блога

Категории

  • Все посты по порядку
  • С миру по нитке
  • Графика и фото
  • Кривизна платформы .NET
  • Грамотные интерфейсы
  • WEB-программирование
  • FlatCMS - шустрая и гибкая
  • Доработки Lasto-блога

Сервисы

  • Поиск по блогу
  • Поиск по всему сайту
  • Шпионское досье

Реклама


Стоимость сайта

Мой вебсайт стоит 865 404,18 руб

Статистика

    Widgetize!
  • Время работы: 0,57484 сек.
  • Память: 17 664 кБт
  • Статистика привратника
Copyright FIT-Media.com, © 2007-2012
Главная | Общее оглавление | Обратная связь | Правила блога | Лента RSS