Автор будет очень признателен, если Вы кликнете по одной из белых ссылок выше.
Вам это ничего не стоит, а автору сайта будет приятно ;)
Найдено страниц: 26 [показано 10]
Файлы vs базы данных.
Степень соответствия запросу: 75,35%
Фрагменты текста поста : ... Первое на что хотелось бы обратить внимание — это тот факт, что подобную структуру не удастся (по крайней мере целиком) уложить в одну таблицу, а это значит будут использованы несколько связанных таблиц ( реляционная структура )... ... При нормальном (читай « грамотном ») подходе тут будут использованы аж три таблицы: в первой будут храниться хосты поисковиков (по одному на запись), во второй — запросы с хостов (каждый запрос в отдельной записи), ну и в третьей — собственно количество посетителей по дням для каждой из искалок по каждому из запросов... ... каждой записи из первой таблицы соответствуют несколько записей из второй, каждой из которых соответствуют несколько записей из третьей... ... :-) Структура, например, такая: Структура таблиц Таблица se_hosts -------------------- ID1 — уникальный числовой номер (используется для связи таблиц) Host — имя хоста поисковика Таблица se_query --------------------- ID2 — уникальный числовой номер (используется для связи таблиц) SH_ID — уникальный номер для ссылки на первую таблицу Query — текст искомой фразы Таблица se_hits ------------------- Q_ID — уникальный номер для ссылки на вторую таблицу Date — кво-дней с 1 января 2000 года Hits — количество хитов за этот день Естественно первая и третья таблицы будут иметь индексы по первым двум полям, а вторая — по всем... ... Итак, сперва производим поиск в первой таблице... ... Если не использовать индексы, то для выполнения этой операции придется провести сравнение имен хоста с содержимым поля Host первой таблицы для части (а в худшем случае всех ) записей... ... Индексный файл содержит копию проиндексированного поля (или полей) из таблицы БД, но в отсортированном виде... ... Весь диапазон значений (количество записей в таблице) делится пополам и сравнение искомого значения происходит со значением поля сразу из середины таблицы... ... Таким образом, одной операцией сравнения мы сразу определяем в какой из половин таблицы находится нужная нам запись, т... ... Затем оставшийся диапазон (половина таблицы) снова делится пополам и все повторяется до тех пор, пока мы не найдем нужную запись, либо убедимся, что ее нет... ... Для примера, в таблице из 100 записей для поиска любого значения в наихудшем случае понадобится всего 7 сравнений... ... Как нетрудно догадаться поиск во второй таблице нам даст уже экономию времени в 15*10 = 150 раз... ... во второй таблице при поиске будет использоваться фильтрация по SH_ID (нам же нужны фразы только с найденного хоста, а не все подряд)... ... Ну и третья таблица — ускорение в 150*10 = 1500 раз... ... Нам нужно загрузить ТОЛЬКО ОДНУ ЗАПИСЬ , а вовсе не всю таблицу... ... В нашем случае размер записи (для третьей таблицы) составляет 12 байт , ведь там только три поля — Q_ID , Date и Hits , каждое из которых представляет собой 32-битное число и занимает 4 байта... ... Естественно, размер записей в первых двух таблицах (а их нам тоже придется загружать в процессе поиска) немного больше, но все равно он измеряется десятками байт , а не мега байт... ... Запись считали, увеличили на единицу и снова записали НА ТОЖЕ МЕСТО в файле таблицы... ... Поскольку записи в нашей третьей таблице (в данном случае) также будут иметь фиксированную длину, то поиск нужной внутри файла также сведется к одному сложению и одному умножению, а уж прочесть и снова записать на тоже место 12 байт — милисекундное дело (даже с учетом автоматической коррекции индексного файла)... ... Да еще про кэширование вспомним :-) Кстати, если ваш сайт достаточно посещаем, то файл статистики будет расти как на дрожжах и каждое обращение к скрипту будет вызывать чтение/парсинг/поиск/сохранение всех этих десятков мегабайт, а при использовании БД при любом количестве посетителей нам все так же будет нужно читать всего несколько сотен байт (три записи из таблиц), а записать - только 12 байт... ... Ну и конечно не забудьте о том, что поиск можно производить не в каждой таблице по отдельности, а сразу во всех, одной командой: Пример запроса SELECT Hits FROM se_hosts, se_query, se_hits WHERE ID1 = SH_ID AND ID2 = Q_ID AND Date = 3085 что еще даст еще больший выигрыш, т... ... записи из первых двух таблиц не нужно будет передавать в скрипт, а мотор СУБД обработает их сам и очень-очень быстро... ... В реальных же реляционных СУБД, где работают десятки (а то и сотни) связанных между собой таблиц этот выигрыш измеряется уже далеко не тысячами... Подробнее: http://fit-media.com/post_1222679684.htmlГрамотный интерфейс: поля ввода
Степень соответствия запросу: 10,93%
Фрагменты текста поста : ... Грамотный интерфейс: поля ввода Очень часто в программах данные вводятся в формах, содержащих множество полей: поле фамилии, имени, адреса, номера паспорта, размера обуви... ... Наиболее популярное на данный момент - разбить форму с десятком полей ввода на несколько форм, по два-три поля в каждом... ... Для интернета это оказывается удобным, но в оффлайновых программах, где вводимых данных гораздо больше, возникает масса проблем: необходимо предусмотреть в каждой следующей форме отображение введенных данных из предыдущих форм, чтобы пользователь мог видеть, что он уже ввел ранее... ... для изменения ранее введенных данных (например неверно введенной фамилии) необходимо сделать в формах навигацию "вперед - назад"... ... проблема "раздутия проекта" из-за создания множества по-сути бесполезных форм... ... для поиска нужного поля они будут ориентироваться по цвету, а не читать все подряд надписи на форме... ... Раскрасим формы В продолжение идеи предлагаю раскрашивать и формы, в зависимости от выполняемых действий... ... Суть состоит в том, что для ввода новой записи в базу и для редактирования уже введенной записи как правило используется одна и та же форма... ... Так вот, если во время редактирования придать фону формы какой-нибудь оттенок (например сделать ее слегка красноватой), то пользователь, занимающийся только вводом новых данных, сразу же заметит это изменение цвета и не введет по ошибке новые данные поверх старых... ... Когда на форме расположено множество полей, то из-за усталости глаз, не очень хорошего зрения, слишком высокого разрешения монитора и многих других проблем возникает ситуация, когда пользователь не может сразу отпределить позицию коретки ввода - моргающая полоска может быть не заметна... Подробнее: http://fit-media.com/post_1205142560.htmlЗалепа №13. О грамотном проектировании и неграмотном IDE.
Степень соответствия запросу: 3,89%
Фрагменты текста поста : ... Естественно в ней куча таблиц, большинство из которых представляют собой достаточно простые справочники... ... такое решение, при котором наша программа не превратится в кашу из кучи классов, лишних открытых методов, свойств и форм... ... Для целей добавления/редактирования будет использоваться еще одно окошко - форма редактирования пользователя... ... Итак, получаем как минимум две формы, которые должны напрямую обращаться к внутренней структуре класса CUserMgr , т... ... создание глобальных классов нужных нам форм ни к чему хорошему не приведет: о существовании этих форм должен знать только CUserMgr , остальные о них не должны даже подозревать, т... ... Чтобы формы могли обратиться к внутренней структуре класса CUserMgr придется внутреннюю структуру сделать открытой, т... ... Решение сводится к созданию классов, представляющих сущности используя в качестве базы класс формы... ... Наш класс менеджера также должен быть наследником класса формы ( Form )... ... Но в IDE вы не сможете использовать визуальный редактор для форм, которые являются вложенными в другие классы (в нашем случае это CUserEdit и CUserList ) - IDE вместо отображения формы просто будет материться по-английски... Подробнее: http://fit-media.com/post_1204892317.htmlAJAX — WEB 2.0 за 5 минут
Степень соответствия запросу: 2,37%
Фрагменты текста поста : ... ) идентификатор или имя класса в формате CSS... ... ) Проблема встает, когда ваша форма содержит десятки элементов ввода &mdash... ... /html> Как видите, теперь я создал форму и использовал два поля &mdash... ... считывать данные из полей, этим займется метод serialize(), который сам соберет все данные из формы и упакует их в формат, понятный для метода post()... ... Теперь, если вам нужно передать на сервер больше данных, то просто добавьте в форму сколько угодно полей различных типов (радио-кнопки, текстовые области, пароли, чек-боксы)... ... Здесь нам это нужно, чтобы указать плагину, какую именно форму ему придется обрабатывать... ... выбираем форму и задаем для нее две функции... ... ) плагин возьмет из формы... Подробнее: http://fit-media.com/post_1262093659.htmlИдея глобального контента
Степень соответствия запросу: 1,99%
Фрагменты текста поста : ... По теме проектирования баз данных написано множество книг и статей, но все они содержат больше технической информации (описания систем индексации, поиска и связывания таблиц) и предлагают дробить всю информацию на множество таблиц, не забыв склеить все это в тугой узел с помощью связей (relations) и зависимостей... ... Проанализировав описанное выше, можно легко сделать вывод, что при проектировании CMF логично создать всего одну (большую) универсальную таблицу в базе данных для хранения практически любого вида контента... ... Разработчику модуля нужно лишь сообщить системе, какие именно поля будет использовать его модуль и система сама сможет создать все необходимые формы для ввода/редактирования данных, с необходимой валидацией... ... ), то она запросто может сканировать его и строить необходимые для реализации поиска по сайту таблицы... ... БД постоянно будет использовать одну таблицу, а значит часть ее всегда будет торчать в памяти (кэше), соответственно запросы должны выполняться гораздо быстрее... ... форма таблиц БД%%%  ... Подробнее: http://fit-media.com/post_1242742678.htmlWindows с маленькой буквы w
Степень соответствия запросу: 1,31%
Фрагменты текста поста : ... С помощью выяснения целей пользователя мы естественным образом подходим к наиболее подходящей форме программы... ... В Visual Basic, Delphi, C# и других языках легко создавать формы, которые представляют собой независимые окна верхнего уровня... ... Стратегия создания приложения в виде набора форм была довольно спорной, и не применялась широко до тех пор, пока среды разработки не дали возможность создавать окна легко и просто... ... Один программист на Visual Basic однажды с гордостью заявил мне, что его программу было особенно тяжело разрабатывать, потому что в ней содержится 57 форм... ... Каждая форма может быть превосходной сама по себе, но все вместе это просто кошмар... Подробнее: http://fit-media.com/post_1204300625.htmlМаксимум производительности
Степень соответствия запросу: 1,26%
Фрагменты текста поста : ... Избегайте требования от пользователя мысленного преобразования задачи в форму, приемлемую для машины... ... Например, можно вводить информацию с бумажных форм в компьютер, используя сканер и программу оптического распознавания текста... ... Если нужно передать длинную форму после того, как пользователь нажмет Submit , это нужно сделать в фоновом режиме, пока пользователь переходит к следующей форме... ... Когда ожидаемая задержка менее 2 секунд, показывать оставшееся время бессмысленно, поэтому просто измените форму курсора на "... ... Измените форму курсора на "... Подробнее: http://fit-media.com/post_1207048697.htmlВежливый интерфейс, или принципы создания диалогов
Степень соответствия запросу: 1,13%
Фрагменты текста поста : ... Представим, что этот поиск необходим для заполнения одного из полей на форме пользователя, как например адрес человека, кому вы должны послать ее, полученный из адресной книги... ... Если форма достаточно большая, пользователь может в это время находиться в другом разделе, поэтому поместите где-нибудь индикатор состояния для всей формы... ... Индикатор статуса в форме иконки может обозначать следующее: "где-то на этой форме поле помечено красным... ... Когда пользователь закончит заполнять форму и увидит зеленый индикатор, он поймет, что можно идти дальше... Подробнее: http://fit-media.com/post_1204699098.htmlПользовательский интерфейс
Степень соответствия запросу: 0,96%
Фрагменты текста поста : ... То есть из всего разнообразия изобразительных средств - формы, размера, цвета, текста - в кнопках диалогов используется только текст... ... Одновременно сменилась форма текстового курсора, и, что очень важно, он начал подмигивать... ... В конце концов, во многих приложениях используются разные формы динамики изображения, которые называются модным словом " мультимедиа "... ... Две анимированные среды интерфейса разработаны в той самой фирме XEROX PARC , которой мы обязаны появлением идеи оконного интерфейса (и даже в группе того самого Стюарда Карда , которому принадлежит авторство этой идеи)... ... При выполнении программой длительных действий курсор мыши приобретает форму песочных часов... ... Предположим, что ваша фирма выходит на рынок с новой моделью аудиомагнитофона, отличающейся от всех остальных некой возможностью А... Подробнее: http://fit-media.com/post_1204019048.htmlMySQL: MyISAM хотят заменить на новый движок Maria
Степень соответствия запросу: 0,81%
Фрагменты текста поста : ... Движок Maria - это расширенная версия MyISAM, которая поддерживает весь основной функционал MyISAM и в дополнение к этому предлагает: поддержку восстановления данных после сбоев (data auto-recovery, crash safe), полное логирование (включая операции CREATE, DROP, RENAME и TRUNCATE) и новый формат строк PAGE... ... INSERT и INSERT (множество строк), ALTER TABLE LOAD INDEX может пропускать неиспользуемые индексные блоки Новый блочный формат строк, в котором данные хранятся ввиде страниц При использовании блочного формата строк (выбираемого теперь по умолчанию) строковые данные могут кешироваться Блочные тесты большинства элементов Поддержка как отказоустойчивых (crash safe, транзакциональных) так и нетранзакциональных таблиц... ... (Нетранзакцональные таблицы не логируются и для строк используется меньше места): CREATE TABLE foo (... ... ) TRANSACTIONAL=0|1 PAGE используется только для тказоустойчивого/транзакционального строкового формата PAGE формат должен дать заметное увеличение скорости на системах с плохим кешированием данных... ... Не поддерживается INSERT DELAYED Не поддерживается кеширование составных ключей Устранение недостатков до следующих релизов Хранение очень малых строк Не поддерживаются MERGE таблицы Различия, которые вероятно не будут устранены Страницы данных в блоковом формате увеличивают размеры: 10 байт на страницу и 5 байт на строки... ... MyISAM поддерживает различные размеры страниц для индексов Индексный номер требует один экстра байт на индексную страницу Не поддерживается внутренний MySQL RAID (выключен и в MyISAM) Минимальный размер файла данных формата PAGE 16К (со страницей на 8K) Обзор Maria:... Подробнее: http://fit-media.com/post_1202730586.html
