Автор будет очень признателен, если Вы кликнете по одной из белых ссылок выше.
Вам это ничего не стоит, а автору сайта будет приятно ;)
Найдено страниц: 17 [показано 10]
Файлы vs базы данных.
Степень соответствия запросу: 58,9%
Фрагменты текста поста : ... Первое на что хотелось бы обратить внимание — это тот факт, что подобную структуру не удастся (по крайней мере целиком) уложить в одну таблицу, а это значит будут использованы несколько связанных таблиц ( реляционная структура )... ... При нормальном (читай « грамотном ») подходе тут будут использованы аж три таблицы: в первой будут храниться хосты поисковиков (по одному на запись), во второй — запросы с хостов (каждый запрос в отдельной записи), ну и в третьей — собственно количество посетителей по дням для каждой из искалок по каждому из запросов... ... каждой записи из первой таблицы соответствуют несколько записей из второй, каждой из которых соответствуют несколько записей из третьей... ... :-) Структура, например, такая: Структура таблиц Таблица 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Если бы microsoft не была такой ленивой...
Степень соответствия запросу: 35%
Фрагменты текста поста : ... Даже подумываю утилитку написать, которая будет это реализовывать... ... После окончания проверки и перед тем как окно Ворда будет убито, оно странным образом появляется на экране, хотя при создании ему ясно указали быть невидимым... ... Следствие – моргание полноэкранного окна ворда поверх вашей программы при каждой проверке орфографии... ... связь с вордом устанавливается еще в момент запуска программы (ранне связывание) и, если на машине клиента вдруг ворда не кажется или окажется, но другой версии, то ваша программа покажет пользователю большую фигу в виде фолта... ... Следствие – катастрофическая зависимость от наличия определенной версии ворда в системе... ... Сама RCW представляет собой не что иное как DLL-файл , который придется таскать вместе с программой (без него тоже получите фолт, причем уже вне зависимости от наличия ворда на машине клиента)... ... Для работы программа использовала бы только одну копию ворда, т... ... при старте программы он загружается, при завершении программы – выгружается Никаких внешних признаков присутствия ворда – окошек, мограний и т... ... Нормальная обработка отсутствия ворда в системе... ... Иначе запущенная копия ворда останется в памяти ( привет нормальным пацанам из microsoft и их гениальному сборщику мусора ) и будет болтаться там до перезапуска системы... ... добавили вы в словарь слово в ворде и его уже опознают все остальные программы... Подробнее: http://fit-media.com/post_1205882168.htmlЗалепа №10 Cупер-хренорезка может все. Только хрен не режет.
Степень соответствия запросу: 2,19%
Фрагменты текста поста : ... :) Продолжение предыдущего пункта - метод GetNextControl , выдающий следующий из списка дочерних контролов... ... Ну коль уж так хочется напихать в календарь еще и прогресс-баров с радио-кнопками и полями ввода RTF-текста, то почему их нельзя перебрать просто как массив... ... Созданы специально для ленивых, которым влом написать a = dtp... Подробнее: http://fit-media.com/post_1202303173.htmlЗалепа №5. Мы строили, строилаи и ... ничего не построили :(
Степень соответствия запросу: 1,23%
Фрагмент текста поста : ... Возникает вопрос: если на момент компиляции мы можем написать любую чушь, и в откомпилированной версии все равно будет присутствовать проверка правильности типа, а ошибки начнут вылазить только когда CLR проверит эти самые типы, то почему нельзя просто записать MyClass x = o... Подробнее: http://fit-media.com/post_1197736202.html14 принципов создания вежливых программ
Степень соответствия запросу: 1,23%
Фрагменты текста поста : ... Насс и Ривз использовали для тестов множество студентов-компьютерщиков, достаточно опытных для того чтобы самим написать тестовую программу... ... Я не хочу слышать ее нытье о том, что она не уверена, в какое место на диске записать файл... Подробнее: http://fit-media.com/post_1203349390.htmlWindows с маленькой буквы w
Степень соответствия запросу: 0,53%
Фрагменты текста поста : ... Было бы еще более неразумным, если после рукопожатия мы бы вернулись в предыдущую комнату для продолжения разговора... ... После изменения этого значения программа для продолжения работы возвращается к главному окну... Подробнее: http://fit-media.com/post_1204300625.htmlГрамотный интерфейс: поля ввода
Степень соответствия запросу: 0,53%
Фрагменты текста поста : ... Отследить программно такого рода ошибки бывает довольно сложно: попробуйте написать модуль который бы смог отличить имя человека от названия населенного пункта или номер телефона от номера паспорта... ... Раскрасим формы В продолжение идеи предлагаю раскрашивать и формы, в зависимости от выполняемых действий... Подробнее: http://fit-media.com/post_1205142560.htmlЗалепа №2. Билли не любит точку с запятой.
Степень соответствия запросу: 0,13%
Фрагмент текста поста : ... Вы можете абсолютно безнаказанно написать например i = value + 15... Подробнее: http://fit-media.com/post_1197489252.htmlЗалепа №3. Майкрософт - антиглобалист!
Степень соответствия запросу: 0,13%
Фрагмент текста поста : ... Смысл этого отказа остается непонятным - без глобальных объектов просто невозможно написать ни одной программы, в крайнем случае хотя бы один объект но все же будет глобальным... Подробнее: http://fit-media.com/post_1197554266.htmlУрок информатики для мелкософта (пояснение к залепе №8)
Степень соответствия запросу: 0,13%
Фрагмент текста поста : ... Только лишь для того, чтобы программист мог написать различные варианты, оптимизированные для обоих случаев... Подробнее: http://fit-media.com/post_1198760520.html
