Автор будет очень признателен, если Вы кликнете по одной из белых ссылок выше.
Вам это ничего не стоит, а автору сайта будет приятно ;)
Найдено страниц: 61 [показано 10]
Максимум производительности
Степень соответствия запросу: 29,7%
Фрагменты текста поста : ... За последние 20 лет сложилась странная ситуация - в то время как мощность компьютеров увеличилась в несколько тысяч раз, скорость работы пользователя в некоторых случаях даже замедлилась из-за непомерно раздутых операционных систем и программ... ... Например, производительность работы человека увеличивается, если все необходимые данные находятся "... ... Один из методов решения этой проблемы - предварительная загрузка данных... ... Так как заранее неизвестно, какие именно данные потребуются, может возникнуть необходимость загрузки большого объема данных, которые никогда не будут использованы - вот вам и противоречие между производительностью человека и компьютера... ... Производительность человека Существуют два метода, которые ведут к значительному увеличению производительности человека: Полное отстранение пользователя от работы... ... Эффективное использование времени пользователя Хотя с этими методами никто не спорит, применение их на практике может оказаться не таким уж простым делом... ... Три операции, которые можно упростить Работая на компьютере, пользователи выполняют три основных операции: Принимают решения на основе информации, касающейся текущей задачи Собирают данные, необходимые для выполнения текущей задачи Манипулируют компьютером с помощью элементов управления Например, пользуясь автомобилем, пользователи вначале решают, куда они хотят ехать... ... Например, пользователь решил сделать определенный шов... ... Вместо того, чтобы непосредственно управлять машиной, как это было в случае с автомобилем, для большинства действий пользователь использует колесо с ручкой... ... Выбор определенного типа шва представляет собой решение пользователя о том, в каком случае одежда будет выглядеть наиболее привлекательно... ... Манипуляции пользователя сводятся к передвижению ткани, тогда как машина двигает иглу... ... Если рассмотреть каждый из этих шагов, уменьшая количество решений, которые необходимо принимать человеку, позволяя компьютеру самому собирать данные, и уменьшая количество манипуляций, необходимых для достижения цели, то производительность человека при работе с компьютером значительно увеличится... ... Единственное решение, которое необходимо принять обычному его пользователю &ndash... ... Программы часто демонстрируют такую же механическую сложность, как и реальные механизмы, требуя, чтобы пользователь служил им, а не наоборот... ... Любой, кто хотя бы раз обновлял системное программное обеспечение, знает, насколько сложной может быть эта задача, хотя для этого пользователю не нужно принимать практически никаких решений... ... Такая система все еще будет поддерживать способность пользователя к принятию решений, в то же время устраняя ту часть операции, где необходимы манипуляции с механизмом... ... Избегайте требования от пользователя мысленного преобразования задачи в форму, приемлемую для машины... ... Уменьшение необходимости ввода данных Следующие методы могут увеличить производительность ввода данных, уменьшая количество необходимой для ввода информации: Автоматически заполняйте поля новой записи значениями предыдущей... ... В противном случае все сбереженное время сойдет на нет, когда пользователь будет сравнивать старые значения с новыми... ... Все что пользователю необходимо знать &ndash... ... Если есть, пользователь может уточнить то, что ему нужно... ... Ограничение принятия решений Необходимость принятия решений можно снизить следующим образом: Не воспринимайте пользователя как "... ... Быстро и точно предоставляйте пользователю информацию, необходимую для принятия решений... ... На втором шаге удостоверьтесь, что оставшиеся решения действительно относятся к задаче пользователя, а не машины... ... Если пользователь должен решить, выполнять запрос или нет - это относится к задаче... ... Большинство разработчиков не советуют ограничивать пользователя единственным способом выполнения задачи... ... Действительно, свобода графического интерфейса заключается в том, что разработчик создает среду, а пользователь решает, как ее использовать... ... предоставить пользователям выбирать наиболее удобный для них способ работы... ... Этот метод значительно отличается от ситуации, когда пользователь, достигнув очередной развилки на дороге, постоянно решает куда повернуть теперь... ... удостовериться, что пользователю предоставлена вся необходимая информация для принятия решения... ... Часто можно видеть, что программа задает пользователю вопрос, на который он не может ответить, не обратившись за информацией куда-то еще... ... Такая программа скорее всего никогда не тестировалась на пользователях... ... Что же остается бедному пользователю... ... Опытные пользователи в конце концов научатся различать сигнал от шума, верный путь от зияющей пропасти, независимо от тога, насколько загроможденным будет интерфейс... ... Шаг 5 : Пользователи должны легко различать наиболее вероятный вариант ответа... ... Не задавайте также пользователю вопрос о какой-нибудь настройке, смысл которой неясен... ... Чтобы ответить на этот вопрос и решить, нужна ему эта настройка или нет, пользователю придется узнать все о ней... ... Используйте фоновый режим выполнение задач Выполняя все асинхронные операции в фоновом режиме, можно отделить задачи пользователя от задач компьютера, позволяя пользователю работать без перерывов... ... Пользователи нажимали кнопку "... ... Над проблемой печати стали работать в первую очередь, потому что Печать отнимает много времени Печать не требует вмешательства пользователя Общее время выполнения задачи предсказать нельзя Следующее задача пользователя обычно не связана с результатами печати Если принтер подключен к высокоскоростной сети и в очереди печати нет заданий, все происходит довольно быстро... ... Загрузка страниц занимает длительное время, не требуя вмешательства пользователя в этот процесс, и предугадать, будет ли она длиться 5 секунд или минуту, невозможно... ... Если нужно передать длинную форму после того, как пользователь нажмет Submit , это нужно сделать в фоновом режиме, пока пользователь переходит к следующей форме... ... Уменьшайте субъективное время восприятия Все вышеописанные подходы касаются измеряемого времени, которое требуется пользователю для выполнения задачи... ... Однако пользователи часто жалуются, что им "... ... Классический пример произошел в Нью-Йорке в 1930 году, когда пользователи нового офисного здания постоянно жаловались на долгое время ожидания лифтов... ... Все пользователи выполнили задание с помощью мыши примерно на 50% быстрее... ... Тестируйте программу на пользователях... ... Основная стратегия уменьшения субъективного времени восприятия: Пользователи должны быть постоянно заняты Когда в процессе работы возникает неизбежная пауза, например, потому что программа должна обратиться к серверу, убедитесь, что пользователь занят и развлечен... ... Перед тем, как обращаться к серверу, дайте пользователю прочесть что-нибудь, что подготовит его для следующей задачи... ... Когда оставшееся время предугадать невозможно, покажите анимированный объект, который даст пользователям понять, что система не зависла... ... Покажите, когда пользователь может продолжать... ... Привлеките внимание пользователя Укажите время ожидания точно или приблизительно... ... Выведите индикатор Покажите, когда пользователь может продолжать... ... Привлеките внимание пользователя... ... Сообщите пользователю, насколько долгим будет ожидание... ... Даже довольно широкого диапазона (от 3 до 15 минут) пользователю может быть достаточно для принятия решения &ndash... ... Четко и ясно сообщите пользователю, когда он может продолжать... Подробнее: http://fit-media.com/post_1207048697.htmlФайлы vs базы данных.
Степень соответствия запросу: 18,56%
Фрагменты текста поста : ... Файлы vs базы данных... ... В последнее время все чаще нахожу в интернете статьи, которые расхваливают сайтовые движки, созданные без использования баз данных , т... ... сохраняющие данные в файлах... ... Непонятно почему, но народ истово верит в то, что именно такой подход (отказ от использования систем управления базами данных и хранение данных в файлах) дает гораздо большую производительность... ... автор скрывает исходники, шифруя все в байт-код с помощью Zend-Guard), но общие выводы можно сделать просто проанализировав содержимое файлов, хранящих статистические данные... ... Пользователям скриптов других производителей, также использующих файлы в качестве хранилища данных этот пост также должен быть интересен... ... Итак, последовательность действий модуля сбора статистики Lasto-блога примерно такова: при обращении серфера к любой странице сайта запускается один и тот же скрипт, который должен собирать статистическую информацию: кто пришел (серфер или бот), откуда он пришел (сайт-источник), куда он пришел (страница нашего сайта) и т... ... Вся эта информация сохраняется в файл и позже, на ее основе, генерируются графики посещаемости по дням, «хит-парад» страниц сайта, сайтов-источников трафика и используемых для просмотра броузеров и прочая мега-полезная отчетность... ... Принципы работы достаточно ясны и понятны, вся информация легко-доступна для любого скрипта и интереса не вызывает... ... Нам гораздо важнее узнать, насколько оптимально использовать для этой работы файлы и действительно ли это быстрее, чем работа с базой данных... ... Особенность хранения данных Lasto-блогом такова, что статистика хранится в нескольких файлах: hits... ... db — данные о хитах (метка времени хита, IP-адрес источника, User-Agent клиента, хост источника, страница сайта к которой обратился клиент)... ... Кстати, анализируя этот файл можно увидеть, какие страницы сайта проиндексированы какими поисковыми системами (были посещены поисковыми ботами) и когда это произошло... ... Странно, что Lasto не встроил какого-либо культурного просмотрщика и анализатора этих ценных данных... ... db — данные об обращениях RSS-ридеров... ... В данный момент нам эта инфа не интересна... ... В нем хранятся те данные, которые выводятся на странице статистики блога... ... Структура такова: allsein — данные о заходах с поисковиков по разным запросам хост | искомая фраза дата, количество заходов... ... agent — данные о броузерах и ботах user-agent броузера дата, количество заходов... ... pages — данные о посещенных страницах страница дата, количество заходов... ... страница дата, количество заходов... ... rss_agent — данные о запросах от RSS-ридеров user-agent ридера дата, количество заходов... ... source — данные об источниках трафика URL страницы-источника дата, количество заходов... ... В первом «разделе» (данных о поисковиках и искомых фразах) разделителем данных является символ вертикальной черты... ... Таким образом, чтобы узнать, сколько человек посетило страницу stat... ... html'][к-во дней] Число, которое мы «увидим» в этой ячейке и будет искомым количеством посетителей нашей страницы... ... При обращении серфера к странице, скрипт собирает всю необходимую информацию (имя страницы, URL страницы-источника, user-agent, дата обращения и т... ... Скрипт считывает в память ВЕСЬ файл статистики, не взирая на размер ( если посещаемость высокая или статистика собирается за большой срок, то это могут быть десятки или даже сотни мегабайт )... ... Итак, скрипт загружает текстовый файл и преобразует его в массив... ... Скрипт должен найти ячейку с данными по определенному в первом пункте поисковику и запросу... ... Случаи когда с данной поисковой машины еще не было посетителей и нужно создавать целую ветку массива рассматривать не будем... ... тут затронута обработка данных только из одного «раздела» статистики (а ведь скрипт еще должен скорректировать данные и в остальных), не описан блок, который проверяет доступность сайта для данного юзер-агента и хоста-источника (а он жрет времени тоже немало), не учтены потери на выделение/освобождение памяти и копирование целых веток массива, если автор решил (для упрощения программирования) отделить часть массива например так: Пример кода $as = $ar['allsein']... ... // выделяем данные о заходах с искалок в отдельный массив Все это уже не столь важно... ... Главное то, что ПРИ ЛЮБОМ ХИТЕ (даже переходе серфера с одной страницы сайта на другую) происходят ВСЕ описанные операции — чтение, разбор, поиск, склейка, запись и выполняются они над ВСЕМ содержимым файла статистики... ... А значит парсинг текста и построение массива, равно как и последующая склейка все равно будут выполняться при каждом обращении к скрипту (сайту)... ... К тому же не стоит забывать, что пока одна копия запущенного скрипта копается в вашем (пусть и прокэшированном) файле, все другие будут тихо и мирно курить в сторонке... ... Для данного примера также будем рассматривать работу только с одним «разделом» статистики — данных о поисковых запросах... ... Куда ж без них :-) Итак, серфер пришел, что происходит в скрипте... ... Скрипт должен получить данные из базы о количестве хитов «за сегодня»... ... Ни один скрипт тут рядом не стоял... ... Да еще про кэширование вспомним :-) Кстати, если ваш сайт достаточно посещаем, то файл статистики будет расти как на дрожжах и каждое обращение к скрипту будет вызывать чтение/парсинг/поиск/сохранение всех этих десятков мегабайт, а при использовании БД при любом количестве посетителей нам все так же будет нужно читать всего несколько сотен байт (три записи из таблиц), а записать - только 12 байт... ... записи из первых двух таблиц не нужно будет передавать в скрипт, а мотор СУБД обработает их сам и очень-очень быстро... ... :-) %%%базы данных, файловые движки, CMS, оптимизация скорости работы%%%... Подробнее: http://fit-media.com/post_1222679684.htmlAJAX — WEB 2.0 за 5 минут
Степень соответствия запросу: 14,18%
Фрагменты текста поста : ... 0, строить сайты из статичных страниц просто пошло... ... А это значит, что страницы сайта должны реагировать на "... ... (команды пользователя) без такой привычной и такой всем давно надоевшей полной перезагрузки... ... Если у вас есть трудности с javascript, смело вставляйте в свои страницы команду загрузки jQuery и забудьте о своих проблемах... ... подключить фреймворк к вашей странице... ... head> страницы... ... загрузки контента внутрь нашей страницы... ... Для примера вставим внутрь своей страницы такой код: Пример кода <... ... наш контейнер, в который мы и будем загружать данные... ... Но эти данные кто-то должен предоставить... ... Теперь вернемся к нашей странице и добавим в нее функцию загрузки содержимого: Скрипт загрузки контента <... ... Ему в качестве параметра передается URL, с которого необходимо получить данные... ... Не стану изобретать велосипед и просто добавлю на страницу ссылку, кликнув по которой пользователь запустит наш скрипт... ... Код: Ссылка для запуска скрипта <... ... и насладитесь динамической загрузкой контента БЕЗ перезагрузки самой страницы... ... Думаю не стоит упоминать, что таким способом вы можете загружать контент в любой контейнер вашей страницы будь то div, span или любой другой тэг... ... вы полностью замените все содержимое вашей страницы... ... Гораздо чаще встречается ситуация, когда нужно отправить серверу какие-то данные и получить ответ, который, затем необходимо всунуть в контейнер... ... Решается эта задача так же просто, но сперва давайте создадим серверный скрипт, который будет получать данные с нашей страницы и отправлять ответ... ... Наш скрипт будет получать со страницы имя пользователя и отправлять назад приветствие... ... > Мы будем отправлять данные (введенное имя) в скрипт методом POST (а почему бы и нет... ... Слегка модифицируем нашу страницу &mdash... ... } Первой командой мы считываем значение атрибута value из нашего поля ввода и сохраняем его в переменной nnn, а второй командой вызываем наш серверный скрипт с передачей ему считанного имени и занесением ответа в наш контейнер... ... Этот пример использует серверный скрипт, поэтому на вашей локальной машине (без установленного вэб-сервера и интерпретатора PHP) он не сработает... ... Имейте это в виду прежде чем материться в комментах :) Ну вот мы уже имеем полностью интерактивную страницу с запрограммированным поведением... ... Писать код, считывающий все эти значения, чтобы передать их скрипту &mdash... ... К тому же далеко не всегда полученные данные нужно тупо поместить в контейнер, гораздо чаще требуется провести еще кое-какую обработку полученной информации уже на стороне клиента... ... передает данные на сервер и получает ответ, но при этом он не изменяет содержимое DOM... ... Вместо этого он позволяет создать функцию-обработчик полученных данных... ... Начнем, как и раньше, с серверного скрипта... ... Теперь он будет получать два значения: имя пользователя и его возраст и возвращать приветствие и год рождения пользователя (текущий год минус возраст)... ... > Код страницы так же будет изменен... ... считывать данные из полей, этим займется метод serialize(), который сам соберет все данные из формы и упакует их в формат, понятный для метода post()... ... Вместо этого он принимает третьим параметром функцию, которая будет обрабатывать полученные с сервера данные... ... Теперь, если вам нужно передать на сервер больше данных, то просто добавьте в форму сколько угодно полей различных типов (радио-кнопки, текстовые области, пароли, чек-боксы)... ... Больше никаких изменений в странице производить не нужно &mdash... ... фреймворк сам определит количество и типы полей и сам соберет из них данные для отправки... ... Он упрощает отправку данных на сервер до предела &mdash... ... вам вообще ничего не придется программировать :) Не станем здесь городить огород с реальной загрузкой файлов, просто выведем данные о загруженном файле... ... Код скрипта (файл file... ... > И полный код страницы: index... ... Первая будет вызвана перед началом отправки данных (в данном примере она покажет alert-окно с надписью 'start uploading'), а вторая &mdash... ... Всю необходимую информацию (список полей, их типы, адрес серверного скрипта и т... Подробнее: http://fit-media.com/post_1262093659.htmlПользовательский интерфейс
Степень соответствия запросу: 10,92%
Фрагменты текста поста : ... Во-первых, в понятие пользовательского интерфейса (ПИ) входит не только, и даже не столько, картинка на экране - трехмерная, анимированная, просто выполненная в модном дизайне, - а способы взаимодействия пользователя с системой... ... Первое и важное замечание - необходимо отличать профессионального пользователя (т... ... пользователя, выполняющего на компьютере свою профессиональную работу и, грубо говоря, получающего за это деньги) от пользователя развлекающегося и уж, во всяком случае, не приговоренного к сидению за дисплеем... ... Прирастать пользователи будут только любителями... ... Обстановка на экране и способы взаимодействия с системой должны апеллировать к ситуации, хорошо знакомой пользователю... ... Использованием метафоры убивается сразу несколько зайцев: Во-первых, пользователю легче понимать и интерпретировать изображение на экране... ... В-третьих, у пользователя возникает чувство психологического комфорта, характерного для встречи с чем-то хорошо знакомым... ... В рамках нашей метафоры мы должны разработать систему интерфейсных элементов, своего рода алфавит взаимодействия, изучив который пользователь сможет легко делать то, что ему нужно... ... В сущности, на время работы с системой пользователь погружается в среду интерфейса подобно тому, как приехав на сафари, турист погружается в среду дикой природы... ... Считается хорошим тоном иметь кнопки одного размера и аккуратно расположенные, чтобы вынудить пользователя каждый раз прочитывать текст... ... При этом пользователи этого интерфейса как раз те самые, для кого мы задумываем наш новый интерфейс с компьютером... ... Если среда по виду и некоторым опорным элементам будет напоминать пользователю что-то уже знакомое, он сможет быстрее приспособиться к ней... ... А фотографическая похожесть может спровоцировать пользователя на то, чтобы пользоваться этой искусственной средой в точности как той, которую она напоминает... ... В первый же раз, когда пользователь натолкнется на различие, он испытает тяжелый психологический шок, который может привести к полному отторжению системы... ... А вот другие игры, скажем Тетрис и столь же популярные Color Lines (шарики), имеют очень простую и условную среду, обеспечивающую психологический комфорт пользователя... ... Пользователь простит вам обман, заключающийся в том, что простая на первый взгляд программа постепенно приоткрывает свои новые (в том числе и интерфейсные) возможности... ... Это может получиться случайно, когда пользователь по привычке попробует прием, освоенный в общении с другой программой, и с радостным удивлением обнаружит, что ваша программа правильно разобралась в том, чего он хотел... ... Похожий эффект может стать и естественным развитием среды, когда из освоенных простых действий пользователь сделает заключение, что должно существовать и некое сложное, и программа снова обрадует его взаимопониманием... ... Таким образом, картинка на экране остается прежней, а возможности пользователя расширяются... ... Чтобы пользователю легко было с ними взаимодействовать, они должны занимать на экране заметное место (а то трудно будет попасть в них мышью)... ... Основной проблемой в интерфейсе с пользователем является синхронизация точки внимания пользователя и точки активности системы... ... С одной стороны, пользователь должен уметь сказать системе, где и что он хочет изменить (обычно это делается щелчком мыши в нужном месте)... ... С другой стороны, система должна уметь привлечь внимание пользователя к месту наиболее актуальных изменений... ... Поиск же курсора мыши при его потере из поля внимания пользователь (до сих пор) выполняет подергиванием мыши... ... Но главным способом локализации внимания пользователя было геометрическое разбиение экрана, в частности потому, что более активное использование анимации в то время казалось фантастикой... ... Сегодня же не видно никакой причины не привлекать внимание пользователя движением в нужной точке экрана... ... Пользователь может сделать средним любой отрезок стены, причем это тоже происходит в режиме анимации... ... Для Карда анимация - принципиальный момент, так как " анимация сохраняет в восприятии пользователя идентичность объекта ", то есть пользователь легко соотносит объекты в конечной точке движения с объектами в начальной... ... В графическом интерфейсе пользователь имеет дело с последовательностью картинок... ... Однако психологи, занимающиеся интерфейсом, говорят о совсем другом времени, - времени, когда пользователь может начать взаимодействие с новой картинкой на экране... ... В психологическом смысле новой картинки и не существует, существует преобразованная старая, а так как все преобразования шли "на глазах у изумленных зрителей", то пользователь практически немедленно готов к взаимодействию... ... Динамические визуальные сигналы - это изменение изображения на экране с целью дать пользователю дополнительную информацию... ... Это - сигнал о том, что на действия пользователя система временно реагировать не будет... ... Это - сигнал о том, что система считает, что пользователь взаимодействует именно с этой кнопкой... ... Однако, решая многие проблемы для пользователя, анимационный интерфейс, как это часто бывает, ставит тяжелые проблемы перед программистом и дизайнером... ... Вне зависимости от активности пользователя программе, построенной на анимационном интерфейсе, всегда есть что делать (например, менять фазу мигания)... ... При этом, естественно, она должна постоянно быть доступной для взаимодействия, но, в отличие от многих сегодняшних мультимедиа-программ, не прерывать отображаемый поток, а плавно изменять его в соответствии с воздействием пользователя... ... Попытки потрясти мир могут привести к быстрой утомляемости пользователя и, как следствие, отторжению системы... ... Пользователю, который ничего этого не заметит, но зато будет гораздо проще и быстрее взаимодействовать с системой... Подробнее: http://fit-media.com/post_1204019048.htmlКак создать хороший интерфейс пользователя?
Степень соответствия запросу: 9,92%
Фрагменты текста поста : ... Как создать хороший интерфейс пользователя... ... Я думаю нужен, и вот почему: Пользователи думают, что интерфейс - это и есть программа... ... Чтобы пользователи работали более продуктивно, программа должна быть простой в использовании... ... Пользователи становятся все более привередливыми... ... Рекомендую вам уделить одинаковое внимание следующим пунктам: Пользователи: их опыт работы с компьютером, мотивы, размер/важность групп пользователей, образцы (типовые ситуации) использования Задачи: что послужило причиной создания проекта, этапы создания проекта, какие результаты должны быть получены, какая информация необходима и когда Технология разработки и платформа , на которой будут работать пользователи Среда , в которой будет создаваться и использоваться проект (физическая, рыночная, организационная и культурная) Используйте эту информацию для определения и расстановки приоритетов... ... Например, для графического интерфейса пользователя выбор следующий: Множественные окна MDI (много-документный интерфейс) Множественные фреймы Неструктурированное взаимодействие: экраны с гиперссылками Различные структуры взаимодействия обеспечивают разные степени гибкости для пользователей... ... Обычно, чем гибче структура, тем больше она требует от пользователя обучения, понимания, и времени на работу с окнами (открыть, закрыть, разместить и т... ... Основывайте ваш выбор на той собранной вами информации о пользователях и ситуациях, в которых они работают, а не просто делайте вашу программу похожей на среду разработки... ... Под концептуальной моделью я имею в виду чертеж, схему, которая показывает главные элементы, процессы и связи в программе с точки зрения пользователя... ... абсолютный минимум, который пользователь может понять о программе, и тем не менее успешно пользоваться ею"... ... Ваш дизайн - ваши окна, меню и текст - должен передать это понимание пользователю... ... Если у вас есть только нечеткая модель того, что вы пытаетесь сказать пользователю, он в конце концов останется с еще более нечеткой идеей того что делает ваша программа и как она работает... ... Навигационная модель определяет как пользователям смогут перемещаться как между различными задачами так и внутри отдельной задачи... ... Чтобы оценить концептуальную модель программы, вы можете просто показать ее схему пользователям и попросить объяснить ее вам... ... Если у них возникнут трудности, значит вы еще не достигли точки зрения пользователя в понимании проблемы... ... Если вы пропустите раннюю фазу разработки, ваш интерфейс может страдать от следующих проблем: Несоответствие группам пользователей Сложность в обучении Неадекватная степень гибкости Нецелостное или непредсказуемое использование разных типов окон Разработка на основе задач пользователя Итак, ваши окна пока не имеют содержания... ... Вы знаете для чего нужно каждое, но для того чтобы наполнить их элементами управления, вам необходимо четкое понимание задач пользователя... ... Когда вы проводите интервью, задавайте открытые вопросы, чтобы пользователь мог дать вам ответ на основе своих действий... ... Для создания дизайна, представьте в деталях, как бы пользователь выполнил данную задачу от начала до конца... ... Исходная программа, которую я оценивала, имела ориентированный на расписание подход, встроенный в базу данных, так что учителя могли планировать уроки только назначив их дату и время... ... Если вы не будете использовать этот подход, вы рискуете создать программу, в которой пользователи будут перемещаться от одного окна к другому для того, чтобы выполнить свою задачу... ... Процесс разработки, основанный на задачах пользователей особенно важен, когда ваша программа предназначена для того, чтобы помогать пользователям работать быстрее и эффективнее... ... Визуальный дизайн: использование компонентов На этом этапе вы должны правильно использовать компоненты визуального дизайна чтобы показать пользователю для чего нужно каждое окно, и как им пользоваться... ... Пользователь должен сразу распознавать какие данные можно редактировать, какие нет... ... Чтобы выполнить этот этап, вы должны понимать, как пользователь воспринимает различные элементы управления... ... Поля ввода, например, приглашают пользователя ввести любое текстовое или числовое значение... ... Если вы будете пренебрегать визуальным дизайном, ваша программа будет посылать хаотические сигналы, что приведет к увеличению ошибок, путанице и раздражению пользователя... ... Проверка на пользователях Половина процесса разработки - это анализ и создание... ... Если вы хотите быть уверенным что ваша программа понравится пользователям, собирайте мнения потенциальных пользователей во время процесса разработки... ... Тестирование на пользователях даст вам наиболее верную информацию... ... Так же как и в визуальном дизайне существуют люди, чья профессиональная работа - проводить тестирование на пользователях... ... Тестирование на пользователях это не обсуждение дизайна с пользователями... ... В тестировании вы предлагаете пользователю выполнить определенное задание на некоторой версии вашей программы (рисунок одного окна, бумажный прототип, или рабочая система)... ... Тестируя бумажные прототипы на нескольких разных пользователях, вы можете выявить множество серьезных usability-проблем еще до того, как приступите к кодированию... ... Тестируя готовую программу до ее официального выпуска вы можете найти и подчистить небольшие проблемы, которые могут стать причиной раздражения пользователя... ... Запомните - все системы тестируются на пользователях... Подробнее: http://fit-media.com/post_1205661604.htmlПошлите серфера на три веселых цифры!
Степень соответствия запросу: 6,87%
Фрагменты текста поста : ... Эта CMS обладает полезной особенностью - она все генерируемые страницы "выплевывает" в виде статичных HTML-документов... ... html серфер получает одну и туже страницу... ... Правильный CMS должен был бы первый запрос обработать нормально (выплюнуть страницу с инфой), а в ответ на остальные показать серферу (да и и всему остальному миру) большую фигу с вытатуированным брутальным готическим шрифтом волшебным кодом "404"... ... Но разработчик решил так: мой скрипт все страницы представляет лежащими в корне сайта, поэтому ссылок вглубь иерархии папок быть не должно, если их только не наделает тупой вэб-мастер, но в этом случае он сам виноват... ... Но страница при этом все же будет сгенерирована... ... Это когда в коде страницы вместо: присутствует куцый вариант ссылки: В обычных условиях описанный подход тоже абсолютно безопасен... ... Браузер сам подставит имя домена перед именем страницы из ссылки и получит грамотный, правильный URL... ... купленная им CMS генерит все страницы в корень сайта и ссылок куда-то глубже быть просто не должно... ... Потому, уверенный в полной безопасности такого подхода, этот html-кодер выгуливает ленцу по-полной - на странице полными оказываются ссылки только на сторонние ресурсы, все же внутренние переходы делаются по сокращенным ссылкам... ... Сайт набит сотнями страниц (надо же чем-то его наполнить), спущен на воду (иначе зачем его строили), обвешан рекламными блоками (должен же он приносить прибыль) и скормлен роботам поисковых систем (ну а как еще привлечь народные массы для исследования сего бесценного ресурса... ... Через некоторое время происходит индексация, искалки довольны статичными страницами, вэб-мастер доволен позициями в серпах, админ сайта доволен посещаемостью, короче все радуются и пьют шампанское... ... Но тут происходит что-то невероятное: какого-то серфера заносит на несуществующую страницу, находящуюся якобы не в корне сайта, а в папочке... ... Соответственно и ломанулся этот кул-хацкер на страницу http://www... ... "Умная" CMS, получив такой неожиданный запрос и не найдя в нем указания конкретной страницы, выплюнула просто главную и умыла руки... ... Расположенный на сайте скрипт от Гугль-аналитикс, (или любой другой конторы по подсчету статистики) засекает этот хит и вносит в статистику посещаемости новую, ранее невиданную, страницу с адресом http://www... ... Естественно Гугль изо всех сил спешит проиндексировать новую страницу, заходит туда и... ... все те сотни страниц, которые размещены на сайте и доступны из корня, теперь найдены роботом вторично, но уже не в корне, а в папке по адресу http://www... ... Довольный робот индексирует все, до чего только может добраться и поисковая система получает полную коллекцию дубликатов страниц, на которые она (по одной ей известным причинам) начинает так же активно отправлять некоторое количество посетителей... ... Тем самым как бы закрепляется эффект существования дубля, ведь все тот же скрипт аналитика регулярно отчитывается, что указанные страницы существуют в природе и исправно посещаются... ... Так вот, для оценки "качества" страницы, на которой такая система собирается поставить ссылку, она (система) кроме сканирования самого сайта-площадки делает еще и запросы в разные поисковики, с целью узнать, что, кем, когда и где проиндексировано... ... Естественно, получив с того же гугля список левых страниц из несуществующей папки download , система тоже внесет его в базу и добросовестно будет демонстрировать каждому посетителю... ... Поисковики, засекая новые страницы в серпах друг-друга, с удовольствием сканируют "новый" сегмент сайта и вносят его в свои базы... ... Например, левую страницу может заметить какой-нить счетчик (типа LiveInternet) и внести в свой рейтинг посещаемости, а оттуда ее вытянет бот... ... Очень быстро в списках проиндексированных страниц этого сайта появились монстры типа: http://site... ... Возможно процесс остановится уже после второй фазы, а может он будет развиваться как все в природе - по спирали: кто-нить как-нить создаст запрос к страницам еще глубже вложенным в иерархию папок и вызовет тем самым новый виток индексации "новых" псевдо-страниц... ... Но, в любом случае, поисковые системы, обнаружив даже по одному 100%-му клону всех страниц в пределах одного сайта, решат, что что-то здесь не ладно и очень похоже на попытку искусственного воздействия на результаты ранжирования и, как следствие, позицию в серпе... ... И потому их вердикт будет весьма строгим: в лучшем случае - нехилое падение в этом самом серпе (с первой страницы на, скажем, двадцатую), в худшем - бан сайта на неопределенный срок... ... проверяйте используемые CMS-ы на нормальную реакцию при обращении к несуществующим страницам... Подробнее: http://fit-media.com/post_1200930244.htmlГрамотный интерфейс: поля ввода
Степень соответствия запросу: 3,01%
Фрагменты текста поста : ... Грамотный интерфейс: поля ввода Очень часто в программах данные вводятся в формах, содержащих множество полей: поле фамилии, имени, адреса, номера паспорта, размера обуви... ... Гораздо лучше изначально создать такие условия ввода данных, чтобы подобные ошибки просто не возникали... ... Наиболее популярное на данный момент - разбить форму с десятком полей ввода на несколько форм, по два-три поля в каждом... ... Для интернета это оказывается удобным, но в оффлайновых программах, где вводимых данных гораздо больше, возникает масса проблем: необходимо предусмотреть в каждой следующей форме отображение введенных данных из предыдущих форм, чтобы пользователь мог видеть, что он уже ввел ранее... ... для изменения ранее введенных данных (например неверно введенной фамилии) необходимо сделать в формах навигацию "вперед - назад"... ... достаточно сложно управлять таким интерфейсом, используя только клавиатуру - время от времени пользователю все же придется хватать в руки мышь, а это не есть хорошо... ... Программировать такой интерфейс - сплошная морока, да и пользователи от него не в восторге... ... Определимся с задачей Нам нужно, чтобы интерфейс каким-то образом подсказывал пользователю, что именно от него (пользователя) требуется в данный момент... ... И очень желательно, чтобы эти подсказки не отвлекали и в тоже время были достаточно заметными, чтоб пользователь не смог их проигнорировать... ... Окрашивание полей имеет и еще один плюс - если разработчики в будущем поменяют расположение полей, но при этом сохранят их цветовое соответствие (фамилия - розовый, адрес - голубой), то пользователям будет намного легче приспособиться новому виду, т... ... Суть состоит в том, что для ввода новой записи в базу и для редактирования уже введенной записи как правило используется одна и та же форма... ... Так вот, если во время редактирования придать фону формы какой-нибудь оттенок (например сделать ее слегка красноватой), то пользователь, занимающийся только вводом новых данных, сразу же заметит это изменение цвета и не введет по ошибке новые данные поверх старых... ... Ну и чтоб поставить жирную точку в вопросе путаницы при вводе и редактировании данных опишу еще одно простое, но очень полезное улучшение интерфейса... ... Когда на форме расположено множество полей, то из-за усталости глаз, не очень хорошего зрения, слишком высокого разрешения монитора и многих других проблем возникает ситуация, когда пользователь не может сразу отпределить позицию коретки ввода - моргающая полоска может быть не заметна... ... Обычно в таких случаях пользователь хватает мышь и "тычет" ей в нужное поле... ... Помочь пользователям в этом случае можно раскрасив текст в текущем поле ввода... ... Это простое дополнение даст возможность пользователю всегда точно знать, где именно находится коретка ввода и что именно нужно сейчас вводить... Подробнее: http://fit-media.com/post_1205142560.htmlВсе ли CMS одинаково полезны?
Степень соответствия запросу: 2,59%
Фрагменты текста поста : ... Так, например, Joomla после установки на сервер "сожрет" около 10-15 мегабайт (и это только пустой мотор, без единого документа, не имеющий ни одной страницы)... ... Все, что он делает - это просто прикручивает кусок HTML-ного шаблона к пользовательскому контенту, получая таким образом готовую страницу сайта... ... Большинство разработчиков "серьезных" CMS едины в одном: они ориентируются на неподготовленного пользователя своих продуктов... ... Давно известно, что искалки совершенно по-разному относятся к статическим страницам сайта и к динамическому (изменяющемуся) контенту... ... А вот страницы, что генерирует большинство CMS'ов, как раз являются динамическими... ... Вторым аспектом гарантированной беззаветной любви search engines к сайту является физическое расположение контента внутри страницы... ... Но даже при таком подходе, движек обычно накладывает некоторые ограничения и поэтому гибкости и свободы в расположении контента на странице все равно недостаточно... ... Часто выходит так, что для приведения генерируемых CMS страниц к более-менее удобоваримому, с точки зрения SEO, виду, надо переписать половину движка... ... Четвертый недостаток - использование баз данных... ... Смотрите сами, для сайта, который будет содержать 4-5 сотен страниц совсем не обязательно покупать полу-гектарный хостинг... ... Выходит что, если для сайта-дора нужен движек, который просто будет "держать" несколько сотен статичных страниц, то в этом движке становятся абсолютно лишними всякие функции голосования, комментирования, а также блоги, форумы, магазины, порталы и прочая шняга... ... Про всякие поисковые запросы, источники трафика и анализ популярности страниц можно даже не вспоминать... ... Поставил CMS - зарегистрируй сайт в куче каталогов, обвешай страницы счетчиками и будет тебе счастье... ... Кроме того, ни один из приклеенных к страницам счетчиков не покажет вам, сколько и каких ботов посетило ваш сайт и какие именно страницы они нюхали и когда это произошло... ... И вот, что я хочу от него добиться: Максимальная оптимизация под поисковые системы ("управляемое" расположение контента в странице, облегченный дизайн, генерация псевдо-статических страниц) Минимальные размеры как движка, так и хранимых на сервере данных... ... Оптимизация всех операций, кэширование, индексация данных для ускоренного доступа... ... Отсутствие необходимости использования баз данных (MySQL)... ... Все данные будут храниться в обычных файлах на сервере... ... Все должно быть предельно просто и позволять очень быстро адаптировать практически любой скрипт для работы "под движком"... ... Максимальная оптимизация под поисковые системы ("управляемое" расположение контента в странице, облегченный дизайн, генерация псевдо-статических страниц) В завершение скажу, что работа по созданию этого чуда уже начата... Подробнее: http://fit-media.com/post_1200405197.html14 принципов создания вежливых программ
Степень соответствия запросу: 2,21%
Фрагменты текста поста : ... Из этого исследования следует важный вывод: Если мы хотим, чтобы наша программа понравилась пользователям, мы должны сделать ее поведение похожим на поведение человека... ... Если программа скупа на информацию, скрывает результаты своей работу, заставляет пользователя искать где находятся простейшие функции, и винит его в своих собственных неудачах, то пользователю она точно не понравится... ... Если же программа уважает пользователя и помогает ему, то она обязательно ему понравится... ... Программист считает реальный мир миром информации, так что как только программе требуется какая-либо информация, она просто требует ее от пользователя... ... Невежливая программа контролирует действия пользователя, которые кажутся ей некомпетентными... ... Мой web-браузер проводит большую часть своего времени в пустом ожидании, пока я просматриваю загруженные страницы... ... Почему бы не использовать это время, чтобы предварительно загрузить страницы, ссылки на которые видны в окне... ... Я не хочу слышать свист модема или наблюдать информацию о скорости передачи данных, так же как я не хочу слышать о разводе бармена, сломанном автомобиле парикмахера или алиментах доктора... ... Программы постоянно предлагают мне варианты выбора, которые, по разным причинам, в данный момент недоступны... ... Другие пользователи работают с программами в маленьком окне, чтобы видеть Рабочий Стол... ... Так просто для программы понять это и предугадать действия пользователя... ... Adobe Photoshop например осыпает пользователя множеством ненужных маленьких вопросов, каждый в отдельном окне... ... Но пользователь должен иметь возможность слегка "подправить" систему... ... Для того, чтобы быть подстраиваемой система должна сделать свой внутренний процесс доступным опытному пользователю... ... В реальном мире на это закрывают глаза, потому что это специальный случай, и подразумевается что тот, кто "подстроил" систему приведет все счета в порядок до конца рабочего для или данной работы... ... Для предотвращения мошенничества можно воспользоваться возможностями компьютера следить за всеми действиями пользователя и показывать эту информацию специальному наблюдателю... ... Принцип здесь простой – позволить пользователю делать все что он захочет, но подробно записывать все его действия, так что ответственность остается... ... Их программы заставляют пользователя вводить всю возможную информацию, а сами и пальцем не пошевелят... ... Мы можем сделать программы значительно более вежливыми, если они будут работать для того, чтобы предоставить пользователю всю возможную информацию без значительных усилий с его стороны... Подробнее: http://fit-media.com/post_1203349390.htmlЗалепа №13. О грамотном проектировании и неграмотном IDE.
Степень соответствия запросу: 2,04%
Фрагменты текста поста : ... Задача: Есть некая программа, работающая с базами данных... ... Для простоты будем рассматривать только один из таких справочников - справочник пользователей... ... Каждая запись справочника содержит данные об одном пользователе: его логин, пароль для входа в систему и какие-то дополнительные атрибуты... ... В программе, кроме основных функций, должна быть возможность как редактирования списка пользователей так и изменения параметров отдельных пользователей... ... Здравый смысл подсказывает, что справочник должен быть представлен неким классом (назовем его CUserMgr ), который позволяет основной программе получить все необходимые данные о пользователе и скрывает всю внутреннюю структуру внутри себя... ... Опять же для простоты решим, что программе нужно получать только лишь логин и пароль пользователя по его идентификатору... ... Ну и конечно вызывать редактор пользователей... ... } // вызвать редактор пользователей public void ShowEditor() {... ... } } Так же класс должен содержать еще набор закрытых методов для редактирования пользователей: добавление нового пользователя, удаление существующего, изменение параметров пользователя, загрузку и сохранение списка пользователей и т... ... Редактор пользователей должен отобразить на экране окно списка пользователей, в котором можно добавить нового пользователя и удалить или отредактировать существующего... ... Для целей добавления/редактирования будет использоваться еще одно окошко - форма редактирования пользователя... ... Нам необходимо создать отдельный класс, представляющий собой запись из БД (информацию об отдельном пользователе)... ... Причем этот класс должен быть порожден от класса Form , чтобы он мог отобразить себя для редактирования данных пользователя... ... } // вызов редактора пользователя public void Edit() {... ... } // загрузка и сохранение данных о пользователе public bool Load() {... ... Теперь нашему окну редактирования пользователя (классу CUser ) уже не нужно обращаться к классу CUserMgr за информацией - все необходимое он содержит в себе... ... В этом случае он сможет так же отобразить себя для редактирования общего списка пользователей... ... список пользователей (объектов класса CUser ) он содержит внутри себя... ... Он их будет создавать и удалять (редактирование списка пользователей), получать из них информацию и передавать ее в основную программу... ... Для справочника пользователей, которых не больше сотни этот подход будет работать более-менее нормально... ... Внутренняя структура нашего менеджера пользователей полностью скрыта (инкапсуляция торжествует... Подробнее: http://fit-media.com/post_1204892317.html
