Автор будет очень признателен, если Вы кликнете по одной из белых ссылок выше.
Вам это ничего не стоит, а автору сайта будет приятно ;)
Найдено страниц: 64 [показано 10]
Файлы vs базы данных.
Степень соответствия запросу: 32,62%
Фрагменты текста поста : ... Файлы vs базы данных... ... В последнее время все чаще нахожу в интернете статьи, которые расхваливают сайтовые движки, созданные без использования баз данных , т... ... сохраняющие данные в файлах... ... Непонятно почему, но народ истово верит в то, что именно такой подход (отказ от использования систем управления базами данных и хранение данных в файлах) дает гораздо большую производительность... ... автор скрывает исходники, шифруя все в байт-код с помощью Zend-Guard), но общие выводы можно сделать просто проанализировав содержимое файлов, хранящих статистические данные... ... Пользователям скриптов других производителей, также использующих файлы в качестве хранилища данных этот пост также должен быть интересен... ... Нам гораздо важнее узнать, насколько оптимально использовать для этой работы файлы и действительно ли это быстрее, чем работа с базой данных... ... Особенность хранения данных Lasto-блогом такова, что статистика хранится в нескольких файлах: hits... ... db — данные о хитах (метка времени хита, IP-адрес источника, User-Agent клиента, хост источника, страница сайта к которой обратился клиент)... ... Странно, что Lasto не встроил какого-либо культурного просмотрщика и анализатора этих ценных данных... ... db — данные об обращениях RSS-ридеров... ... В данный момент нам эта инфа не интересна... ... В нем хранятся те данные, которые выводятся на странице статистики блога... ... Структура такова: allsein — данные о заходах с поисковиков по разным запросам хост | искомая фраза дата, количество заходов... ... agent — данные о броузерах и ботах user-agent броузера дата, количество заходов... ... pages — данные о посещенных страницах страница дата, количество заходов... ... rss_agent — данные о запросах от RSS-ридеров user-agent ридера дата, количество заходов... ... source — данные об источниках трафика URL страницы-источника дата, количество заходов... ... В первом «разделе» (данных о поисковиках и искомых фразах) разделителем данных является символ вертикальной черты... ... Прикол в том, что unserialize восстанавливает точную копию исходного массива , даже если он многомерный, даже если его элементы представляют собой тоже массивы, которые в свою очередь тоже содержат массивы... ... Случаи когда с данной поисковой машины еще не было посетителей и нужно создавать целую ветку массива рассматривать не будем... ... тут затронута обработка данных только из одного «раздела» статистики (а ведь скрипт еще должен скорректировать данные и в остальных), не описан блок, который проверяет доступность сайта для данного юзер-агента и хоста-источника (а он жрет времени тоже немало), не учтены потери на выделение/освобождение памяти и копирование целых веток массива, если автор решил (для упрощения программирования) отделить часть массива например так: Пример кода $as = $ar['allsein']... ... // выделяем данные о заходах с искалок в отдельный массив Все это уже не столь важно... ... Для данного примера также будем рассматривать работу только с одним «разделом» статистики — данных о поисковых запросах... ... Скрипт должен получить данные из базы о количестве хитов «за сегодня»... ... :-) %%%базы данных, файловые движки, CMS, оптимизация скорости работы%%%... Подробнее: http://fit-media.com/post_1222679684.htmlГрамотный интерфейс: поля ввода
Степень соответствия запросу: 21,49%
Фрагменты текста поста : ... Грамотный интерфейс: поля ввода Очень часто в программах данные вводятся в формах, содержащих множество полей: поле фамилии, имени, адреса, номера паспорта, размера обуви... ... Частично решить эту проблему позволяют контролы, принимающие ввод по маске ( MaskEdit или MaskEditBox ), но, честно говоря, им не хватает гибкости... ... Гораздо лучше изначально создать такие условия ввода данных, чтобы подобные ошибки просто не возникали... ... Наиболее популярное на данный момент - разбить форму с десятком полей ввода на несколько форм, по два-три поля в каждом... ... Для интернета это оказывается удобным, но в оффлайновых программах, где вводимых данных гораздо больше, возникает масса проблем: необходимо предусмотреть в каждой следующей форме отображение введенных данных из предыдущих форм, чтобы пользователь мог видеть, что он уже ввел ранее... ... для изменения ранее введенных данных (например неверно введенной фамилии) необходимо сделать в формах навигацию "вперед - назад"... ... Определимся с задачей Нам нужно, чтобы интерфейс каким-то образом подсказывал пользователю, что именно от него (пользователя) требуется в данный момент... ... Раскрасим поля ввода... ... На мой взгляд для решения вышеописанной проблемы необходимо разукрасить фон полей ввода... ... Но не стоит делать их яркими как новогодняя елка, а нужно просто слегка изменить цвет, чтобы каждое поле приобрело свой уникальный легкий цветовой оттенок... ... Суть состоит в том, что для ввода новой записи в базу и для редактирования уже введенной записи как правило используется одна и та же форма... ... Так вот, если во время редактирования придать фону формы какой-нибудь оттенок (например сделать ее слегка красноватой), то пользователь, занимающийся только вводом новых данных, сразу же заметит это изменение цвета и не введет по ошибке новые данные поверх старых... ... Ну и чтоб поставить жирную точку в вопросе путаницы при вводе и редактировании данных опишу еще одно простое, но очень полезное улучшение интерфейса... ... Когда на форме расположено множество полей, то из-за усталости глаз, не очень хорошего зрения, слишком высокого разрешения монитора и многих других проблем возникает ситуация, когда пользователь не может сразу отпределить позицию коретки ввода - моргающая полоска может быть не заметна... ... Помочь пользователям в этом случае можно раскрасив текст в текущем поле ввода... ... Программируется такое поведение сверх-просто: как только фокус ввода передается какому-то контролу, значение его свойства " цвет текста " ( ForeColor , TextColor ) меняется на " красный " ( Color... ... Это простое дополнение даст возможность пользователю всегда точно знать, где именно находится коретка ввода и что именно нужно сейчас вводить... Подробнее: http://fit-media.com/post_1205142560.htmlAJAX — WEB 2.0 за 5 минут
Степень соответствия запросу: 14,27%
Фрагменты текста поста : ... на мой взгляд примеры настолько просты и примитивны, что повторить их на своей локальной машине дело пары минут... ... Если у вас есть трудности с javascript, смело вставляйте в свои страницы команду загрузки jQuery и забудьте о своих проблемах... ... Для примера вставим внутрь своей страницы такой код: Пример кода <... ... наш контейнер, в который мы и будем загружать данные... ... Но эти данные кто-то должен предоставить... ... Ему в качестве параметра передается URL, с которого необходимо получить данные... ... Гораздо чаще встречается ситуация, когда нужно отправить серверу какие-то данные и получить ответ, который, затем необходимо всунуть в контейнер... ... Решается эта задача так же просто, но сперва давайте создадим серверный скрипт, который будет получать данные с нашей страницы и отправлять ответ... ... > Мы будем отправлять данные (введенное имя) в скрипт методом POST (а почему бы и нет... ... добавим поле для ввода имени: Поле ввода имени Enter your name: <... ... } Первой командой мы считываем значение атрибута value из нашего поля ввода и сохраняем его в переменной nnn, а второй командой вызываем наш серверный скрипт с передачей ему считанного имени и занесением ответа в наш контейнер... ... ) Проблема встает, когда ваша форма содержит десятки элементов ввода &mdash... ... радио-кнопок, чек-боксов, полей ввода и т... ... К тому же далеко не всегда полученные данные нужно тупо поместить в контейнер, гораздо чаще требуется провести еще кое-какую обработку полученной информации уже на стороне клиента... ... передает данные на сервер и получает ответ, но при этом он не изменяет содержимое DOM... ... Вместо этого он позволяет создать функцию-обработчик полученных данных... ... считывать данные из полей, этим займется метод serialize(), который сам соберет все данные из формы и упакует их в формат, понятный для метода post()... ... В свою очередь, метод post() (в отличии от load()) не требует обязательного определения целевого контейнера... ... Вместо этого он принимает третьим параметром функцию, которая будет обрабатывать полученные с сервера данные... ... Теперь, если вам нужно передать на сервер больше данных, то просто добавьте в форму сколько угодно полей различных типов (радио-кнопки, текстовые области, пароли, чек-боксы)... ... фреймворк сам определит количество и типы полей и сам соберет из них данные для отправки... ... Он упрощает отправку данных на сервер до предела &mdash... ... вам вообще ничего не придется программировать :) Не станем здесь городить огород с реальной загрузкой файлов, просто выведем данные о загруженном файле... ... Первая будет вызвана перед началом отправки данных (в данном примере она покажет alert-окно с надписью 'start uploading'), а вторая &mdash... Подробнее: http://fit-media.com/post_1262093659.html14 принципов создания вежливых программ
Степень соответствия запросу: 11,32%
Фрагменты текста поста : ... Эти студенты были высокообразованными, зрелыми индивидуумами, но не смотря на это все без исключения отрицали, что благодаря своим познавательным способностям программы воздействуют на них эмоционально, хотя результаты наблюдений являлись неопровержимым доказательство обратного... ... Из этого исследования следует важный вывод: Если мы хотим, чтобы наша программа понравилась пользователям, мы должны сделать ее поведение похожим на поведение человека... ... Если программа скупа на информацию, скрывает результаты своей работу, заставляет пользователя искать где находятся простейшие функции, и винит его в своих собственных неудачах, то пользователю она точно не понравится... ... Любой человек, предлагающий какие-либо услуги, попытается запомнить имена и лица своих клиентов... ... Нет ничего страшного в том, чтобы программа выразила свое мнение о том, что я сделал ошибку, но она ни в коем случае не должна судить мои действия... ... Например, программа может утверждать, что я не могу отправить заказ, пока не введу свой номер социального страхования, но если я все таки захочу отправить заказ без него, программа должна сделать так как я сказал... ... Если я спрашиваю у служащего аэропорта, через какой выход пройти на рейс 729, я ожидаю, что он не только ответит на мой вопрос, но и даст мне важную информацию о том, что вылет рейса 729 задерживается на 20 минут... ... Если я попрошу свой текстовый процессор распечатать документ, он никогда не сообщит мне, что бумаги осталось мало, или что в очереди уже находятся 40 других документов... ... Хотя любой хороший ресторан позволит вам побывать на своей кухне, но когда вы впервые входите в него, официант, руководствуясь здравым смыслом, проводит вас в обеденный зал... ... Многие из запущенных программ, включая Windows 95, реагируют на смену разрешения изменением размера, формы и положения на экране своих окон... ... Однако когда я меняю разрешение обратно, окна не возвращаются к своим размерам... ... Вежливая программа умалчивает о своих проблемах... ... В баре, салоне и психиатрическом кабинете бармен, парикмахер и доктор будут умалчивать о своих проблемах и показывать интерес в ваших... ... Программы тоже должны молчать о своих проблемах и интересоваться вашими... ... Я не хочу слышать свист модема или наблюдать информацию о скорости передачи данных, так же как я не хочу слышать о разводе бармена, сломанном автомобиле парикмахера или алиментах доктора... ... Из этого следуют два вывода... ... Программа не только должна молчать о своих проблемах, но и должна уметь решать их сама... ... Владельцы магазинов должны держать своих покупателей в курсе того, что может их заинтересовать... ... Программы постоянно предлагают мне варианты выбора, которые, по разным причинам, в данный момент недоступны... ... Я хочу, чтобы он имел смелость в своих убеждениях и удалил файл... ... В любом случае, программа должна быть уверенной в своих действиях, а не перекладывать ответственность на меня... ... Чаще всего система компьютеризируется для увеличения объемов обрабатываемой информации, а не для изменения свой функциональности... ... Хотя автоматизированная система ввода заказов может обработать в миллион раз больше заказов, чем простой служащий, служащий всегда может подстроить работу системы... ... Для того, чтобы быть подстраиваемой система должна сделать свой внутренний процесс доступным опытному пользователю... ... В реальном мире на это закрывают глаза, потому что это специальный случай, и подразумевается что тот, кто "подстроил" систему приведет все счета в порядок до конца рабочего для или данной работы... ... Поэтому программисты создают свои программы точно такими же... ... Я доверяю банковскому служащему, потому что он улыбается мне, но я всегда пересчитываю свои деньги после банкомата, потому что попросту не доверяю тупой машине... Подробнее: http://fit-media.com/post_1203349390.htmlМаксимум производительности
Степень соответствия запросу: 5,33%
Фрагменты текста поста : ... Например, производительность работы человека увеличивается, если все необходимые данные находятся "... ... Один из методов решения этой проблемы - предварительная загрузка данных... ... Так как заранее неизвестно, какие именно данные потребуются, может возникнуть необходимость загрузки большого объема данных, которые никогда не будут использованы - вот вам и противоречие между производительностью человека и компьютера... ... Три операции, которые можно упростить Работая на компьютере, пользователи выполняют три основных операции: Принимают решения на основе информации, касающейся текущей задачи Собирают данные, необходимые для выполнения текущей задачи Манипулируют компьютером с помощью элементов управления Например, пользуясь автомобилем, пользователи вначале решают, куда они хотят ехать... ... Если рассмотреть каждый из этих шагов, уменьшая количество решений, которые необходимо принимать человеку, позволяя компьютеру самому собирать данные, и уменьшая количество манипуляций, необходимых для достижения цели, то производительность человека при работе с компьютером значительно увеличится... ... Уменьшение необходимости ввода данных Следующие методы могут увеличить производительность ввода данных, уменьшая количество необходимой для ввода информации: Автоматически заполняйте поля новой записи значениями предыдущей... ... Минимизируйте, либо полностью устраните необходимость ввода информации... ... Можно ли получить информацию на основе логического вывода... ... Второй подход - минимизация ввода информации - может быть довольно сложным для применения по довольно неожиданной причине... ... Как только большинство клиентов поймет, что новая система может сберечь их время и деньги, они попытаются уменьшить ее эффективность насколько это возможно, тем самым получая обратно свое время и деньги... ... свод правил"... Подробнее: http://fit-media.com/post_1207048697.htmlИдея глобального контента
Степень соответствия запросу: 3,48%
Фрагменты текста поста : ... Идея глобального контента Как хранить данные в БД... ... По теме проектирования баз данных написано множество книг и статей, но все они содержат больше технической информации (описания систем индексации, поиска и связывания таблиц) и предлагают дробить всю информацию на множество таблиц, не забыв склеить все это в тугой узел с помощью связей (relations) и зависимостей... ... Список полей: Уникальный идентификатор ( id ) Идентификатор статьи с в блоге, к которой относится данный комментарий ( parent_id ) Заголовок ( title ) Собственно текст ( content ) Идентификатор автора ( user_id ) Дата создания ( created ) Флаг промодерированности ( published ) Как видим, поля всё теже, что и для статичной страницы, отличие лишь в количестве... ... Проанализировав описанное выше, можно легко сделать вывод, что при проектировании CMF логично создать всего одну (большую) универсальную таблицу в базе данных для хранения практически любого вида контента... ... При этом для разработчиков модулей можно упростить многие рутинные операции, такие как, программирование ввода одних и тех же данных в разных модулях ( created , modified , title , decsription , keywords и т... ... Разработчику модуля нужно лишь сообщить системе, какие именно поля будет использовать его модуль и система сама сможет создать все необходимые формы для ввода/редактирования данных, с необходимой валидацией... ... Так же этот вариант хранения данных позволяет сделать "... ... %%%контент сайта, проектирование CMF, виды контента CMS, базы данных,  ... Подробнее: http://fit-media.com/post_1242742678.htmlВсе ли CMS одинаково полезны?
Степень соответствия запросу: 3,16%
Фрагменты текста поста : ... И потому, каждый, мало-мальски уважающий себя предприниматель, буквально считает своим долгом разместить в сети информацию о себе любимом и своем не менее любимом бизнесе... ... И потому современный мани-мейкер зачастую имеет в своем распоряжении десятки самых разных ресурсов в разных секторах сети, каждый из которых занимается своим делом: от вполне реальной торговли реальными товарами до виртуальной (но не менее прибыльной) "торговли воздухом"... ... Причем каждая искалка имеет свой неповторимый "характер" и потому не существует универсального способа нравиться всем и каждому - к каждому поисковику нужен индивидуальный подход... ... Процесс "законного отнимания банковских билетов" предусматривает пропускание через свой сайт десятков тысяч посетителей за сутки и каждый из них должен быть "обслужен" максимально быстро, ибо ленивы и капризны оне... ... Четвертый недостаток - использование баз данных... ... В крайнем случае можно несколько дней попотеть и прикрутить свой уникальный дизайн... ... Для популяризации и распространения своей CMS создатели должны наделить ее максимумом возможностей, сделать как можно более универсальной... ... Вывод напрашивается сам собой - надо писать свой CMS... ... И вот, что я хочу от него добиться: Максимальная оптимизация под поисковые системы ("управляемое" расположение контента в странице, облегченный дизайн, генерация псевдо-статических страниц) Минимальные размеры как движка, так и хранимых на сервере данных... ... Оптимизация всех операций, кэширование, индексация данных для ускоренного доступа... ... Отсутствие необходимости использования баз данных (MySQL)... ... Все данные будут храниться в обычных файлах на сервере... Подробнее: http://fit-media.com/post_1200405197.htmlWindows с маленькой буквы w
Степень соответствия запросу: 2,92%
Фрагменты текста поста : ... Если я подам вам и попрошу пожать свою руку, вы наверное посчитаете странным, если я вдруг отдерну ее и скажу "Подожди, давай пройдем для этого в другую комнату"... ... Современные средства разработки программ позволяют создавать диалоговые окна, но добавление своих элементов управления или создание идиом непосредственной манипуляции (direct manipulation) в них обычно не поддерживается, поэтому разработчик, желающий создать качественный интерфейс, вынужден создавать свои элементы управления... ... Например, полная очистка базы данных – это вовсе не обычное действие... ... Остальные части программы могут служить для обычных задач, таких как ввод и проверка записей... ... Эти инструменты должны быть встроены в рабочую область программы, точно так как художник разложил бы все свои карандаши, ручки, ножи, резинки и другие инструменты под рукой, на своем столе... ... Если же пользователь решил вставить в свой рисунок другую готовую картинку, эта задача все еще достаточно связана с целью художника – создать красивый рисунок, но для этого нужны другие функции, не относящиеся к рисованию... ... Когда пользователь закончил рисование, он достиг своей начальной цели... ... Он неслучайно оставляет свои инструменты для рисования на столе – он не хочет, чтобы на них попал фиксатор, или краска случайно испортила картину... ... И пусть каждая служит для достижения своей цели... Подробнее: http://fit-media.com/post_1204300625.htmlСтатичные файлы vs скрипты. Невидимое зло.
Степень соответствия запросу: 2,86%
Фрагменты текста поста : ... Например, многие современные CMS грешат тем, что хранят в БД те данные, которым там совсем не место - шаблоны страниц, стили и т... ... Ведь система однопользовательская и кроме вашей софтины (грубо говоря) ничего на данный момент не выполняется... ... Модная нынче тенденция хранить стили в БД оборачивается тем, что при каждом запросе клиентского приложения (броузера) серверу приходится запускать PHP-скрипт, который в свою очередь должен пропарсить запрос, определить какие именно стили требуются клиенту, затем "... ... Сторонники хранения стилей в базе данных приводят два (весьма спорных) аргумента в защиту такого подхода... ... Во-вторых, возможность редактирования файлов через админку вовсе не обязует хранить данные в БД &mdash... ... парсить запрос, определять из каких именно шаблонов состоит страница (а для этого придется вызывать все модули, формирующие контент данной страницы, которые, в свою очередь, будут парсить запрос или шаблоны, рыться в БД и т... ... Проблема ужесточается тем, что времена когда страница сайта строилась из одного шаблона, давно прошли и ныне страницы современных сайтов собираются из кучи мелких шаблончиков - под каждый блок сайта свой шаблон и, возможно, не один... ... Только чтобы потешить свое ЧСВ, типа идем в ногу со временем и активно используем передовую идею запихивания хлама в БД... Подробнее: http://fit-media.com/post_1283692130.htmlПошлите серфера на три веселых цифры!
Степень соответствия запросу: 2,55%
Фрагменты текста поста : ... Каждый из нас старается держать свою лень в узде, т... ... Ну, а если позволить ей вылезти наружу и остаться там дольше положенного срока, то есть нехилый риск поиметь значительные потери в своем привычном быте, доходе, карьере и социальном статусе... ... Это хорошо и полезно и вызывает любовь поисковиков, но разработчик КМС, во время этой самой разработки, дал волю своей лени и не стал обрабатывать ситуацию, когда обращение происходит не в корень сайта, а в какой-нить каталог в глубине... ... То есть при вводе в браузере любого из этих адресов: http://www... ... Оправдав тем самым свою разгулявшуюся ленцу перед всем миром (и, в первую очередь, перед самим собой), он не стал разгребать сложные многопапочные запросы, а просто вырезал имя html-файла из строки адреса и этот файл и выдал в броузер... ... И как раз при построении этих внутренностей любой вэб-мастер с удовольствием выпускает свою лень на прогулку, чтоб не скулила под ухом и не отвлекала от работы... ... На том вроде конфликт и исчерпан... ... Поисковики, засекая новые страницы в серпах друг-друга, с удовольствием сканируют "новый" сегмент сайта и вносят его в свои базы... ... Например, левую страницу может заметить какой-нить счетчик (типа LiveInternet) и внести в свой рейтинг посещаемости, а оттуда ее вытянет бот... ... Первый вход в псевдо-папку так же может быть разным... ... Потому, при строительстве своих интернет-ресурсов всегда выполняйте как минимум два условия: не экономьте время при построении дизайнов - вставляйте всегда и везде только полные адреса... Подробнее: http://fit-media.com/post_1200930244.html
