Автор будет очень признателен, если Вы кликнете по одной из белых ссылок выше.
Вам это ничего не стоит, а автору сайта будет приятно ;)
Найдено страниц: 51 [показано 10]
Файлы vs базы данных.
Степень соответствия запросу: 60,4%
Фрагменты текста поста : ... Файлы 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 страницы-источника дата, количество заходов... ... В первом «разделе» (данных о поисковиках и искомых фразах) разделителем данных является символ вертикальной черты... ... При обращении серфера к странице, скрипт собирает всю необходимую информацию (имя страницы, URL страницы-источника, user-agent, дата обращения и т... ... Скрипт считывает в память ВЕСЬ файл статистики, не взирая на размер ( если посещаемость высокая или статистика собирается за большой срок, то это могут быть десятки или даже сотни мегабайт )... ... Просто одной командой вы можете превратить ваш супер запутанный массив в текст, а второй точно также вернуть все обратно... ... приходится парсить (разбирать) огромный объем текста, выискивая в нем те самые спец-символы, по ним восстанавливать значения исходных ячеек и клеить их в результирующий массив... ... Итак, скрипт загружает текстовый файл и преобразует его в массив... ... Скрипт должен найти ячейку с данными по определенному в первом пункте поисковику и запросу... ... Я уже описывал, как именно это происходит и вы уже убедились, что это тоже не быстрая операция, т... ... Случаи когда с данной поисковой машины еще не было посетителей и нужно создавать целую ветку массива рассматривать не будем... ... тут затронута обработка данных только из одного «раздела» статистики (а ведь скрипт еще должен скорректировать данные и в остальных), не описан блок, который проверяет доступность сайта для данного юзер-агента и хоста-источника (а он жрет времени тоже немало), не учтены потери на выделение/освобождение памяти и копирование целых веток массива, если автор решил (для упрощения программирования) отделить часть массива например так: Пример кода $as = $ar['allsein']... ... // выделяем данные о заходах с искалок в отдельный массив Все это уже не столь важно... ... А значит парсинг текста и построение массива, равно как и последующая склейка все равно будут выполняться при каждом обращении к скрипту (сайту)... ... К тому же не стоит забывать, что пока одна копия запущенного скрипта копается в вашем (пусть и прокэшированном) файле, все другие будут тихо и мирно курить в сторонке... ... Для данного примера также будем рассматривать работу только с одним «разделом» статистики — данных о поисковых запросах... ... :-) Структура, например, такая: Структура таблиц Таблица se_hosts -------------------- ID1 — уникальный числовой номер (используется для связи таблиц) Host — имя хоста поисковика Таблица se_query --------------------- ID2 — уникальный числовой номер (используется для связи таблиц) SH_ID — уникальный номер для ссылки на первую таблицу Query — текст искомой фразы Таблица se_hits ------------------- Q_ID — уникальный номер для ссылки на вторую таблицу Date — кво-дней с 1 января 2000 года Hits — количество хитов за этот день Естественно первая и третья таблицы будут иметь индексы по первым двум полям, а вторая — по всем... ... Куда ж без них :-) Итак, серфер пришел, что происходит в скрипте... ... Скрипт должен получить данные из базы о количестве хитов «за сегодня»... ... Ни один скрипт тут рядом не стоял... ... Да еще про кэширование вспомним :-) Кстати, если ваш сайт достаточно посещаем, то файл статистики будет расти как на дрожжах и каждое обращение к скрипту будет вызывать чтение/парсинг/поиск/сохранение всех этих десятков мегабайт, а при использовании БД при любом количестве посетителей нам все так же будет нужно читать всего несколько сотен байт (три записи из таблиц), а записать - только 12 байт... ... записи из первых двух таблиц не нужно будет передавать в скрипт, а мотор СУБД обработает их сам и очень-очень быстро... ... :-) %%%базы данных, файловые движки, CMS, оптимизация скорости работы%%%... Подробнее: http://fit-media.com/post_1222679684.htmlAJAX — WEB 2.0 за 5 минут
Степень соответствия запросу: 23,46%
Фрагменты текста поста : ... И в этой паре килобайт текста я вам дам всю необходимую информацию, чтобы начать использовать AJAX, даже если ваш сайт не имеет движка и состоит только из статичных HTML-страниц... ... наш контейнер, в который мы и будем загружать данные... ... Но эти данные кто-то должен предоставить... ... Теперь вернемся к нашей странице и добавим в нее функцию загрузки содержимого: Скрипт загрузки контента <... ... : CSS замены цвета фона #my_container { background: red... ... Ему в качестве параметра передается URL, с которого необходимо получить данные... ... Не стану изобретать велосипед и просто добавлю на страницу ссылку, кликнув по которой пользователь запустит наш скрипт... ... Код: Ссылка для запуска скрипта <... ... Гораздо чаще встречается ситуация, когда нужно отправить серверу какие-то данные и получить ответ, который, затем необходимо всунуть в контейнер... ... Решается эта задача так же просто, но сперва давайте создадим серверный скрипт, который будет получать данные с нашей страницы и отправлять ответ... ... Наш скрипт будет получать со страницы имя пользователя и отправлять назад приветствие... ... > Мы будем отправлять данные (введенное имя) в скрипт методом POST (а почему бы и нет... ... } Первой командой мы считываем значение атрибута value из нашего поля ввода и сохраняем его в переменной nnn, а второй командой вызываем наш серверный скрипт с передачей ему считанного имени и занесением ответа в наш контейнер... ... Этот пример использует серверный скрипт, поэтому на вашей локальной машине (без установленного вэб-сервера и интерпретатора PHP) он не сработает... ... Писать код, считывающий все эти значения, чтобы передать их скрипту &mdash... ... К тому же далеко не всегда полученные данные нужно тупо поместить в контейнер, гораздо чаще требуется провести еще кое-какую обработку полученной информации уже на стороне клиента... ... передает данные на сервер и получает ответ, но при этом он не изменяет содержимое DOM... ... Вместо этого он позволяет создать функцию-обработчик полученных данных... ... Начнем, как и раньше, с серверного скрипта... ... считывать данные из полей, этим займется метод serialize(), который сам соберет все данные из формы и упакует их в формат, понятный для метода post()... ... Вместо этого он принимает третьим параметром функцию, которая будет обрабатывать полученные с сервера данные... ... Теперь, если вам нужно передать на сервер больше данных, то просто добавьте в форму сколько угодно полей различных типов (радио-кнопки, текстовые области, пароли, чек-боксы)... ... фреймворк сам определит количество и типы полей и сам соберет из них данные для отправки... ... Он упрощает отправку данных на сервер до предела &mdash... ... вам вообще ничего не придется программировать :) Не станем здесь городить огород с реальной загрузкой файлов, просто выведем данные о загруженном файле... ... Код скрипта (файл file... ... Первая будет вызвана перед началом отправки данных (в данном примере она покажет alert-окно с надписью 'start uploading'), а вторая &mdash... ... Всю необходимую информацию (список полей, их типы, адрес серверного скрипта и т... Подробнее: http://fit-media.com/post_1262093659.htmlГрамотный интерфейс: поля ввода
Степень соответствия запросу: 4,89%
Фрагменты текста поста : ... Грамотный интерфейс: поля ввода Очень часто в программах данные вводятся в формах, содержащих множество полей: поле фамилии, имени, адреса, номера паспорта, размера обуви... ... Гораздо лучше изначально создать такие условия ввода данных, чтобы подобные ошибки просто не возникали... ... Наиболее популярное на данный момент - разбить форму с десятком полей ввода на несколько форм, по два-три поля в каждом... ... Для интернета это оказывается удобным, но в оффлайновых программах, где вводимых данных гораздо больше, возникает масса проблем: необходимо предусмотреть в каждой следующей форме отображение введенных данных из предыдущих форм, чтобы пользователь мог видеть, что он уже ввел ранее... ... для изменения ранее введенных данных (например неверно введенной фамилии) необходимо сделать в формах навигацию "вперед - назад"... ... Определимся с задачей Нам нужно, чтобы интерфейс каким-то образом подсказывал пользователю, что именно от него (пользователя) требуется в данный момент... ... Суть состоит в том, что для ввода новой записи в базу и для редактирования уже введенной записи как правило используется одна и та же форма... ... Так вот, если во время редактирования придать фону формы какой-нибудь оттенок (например сделать ее слегка красноватой), то пользователь, занимающийся только вводом новых данных, сразу же заметит это изменение цвета и не введет по ошибке новые данные поверх старых... ... Ну и чтоб поставить жирную точку в вопросе путаницы при вводе и редактировании данных опишу еще одно простое, но очень полезное улучшение интерфейса... ... Раскрасим текст... ... Когда на форме расположено множество полей, то из-за усталости глаз, не очень хорошего зрения, слишком высокого разрешения монитора и многих других проблем возникает ситуация, когда пользователь не может сразу отпределить позицию коретки ввода - моргающая полоска может быть не заметна... ... Помочь пользователям в этом случае можно раскрасив текст в текущем поле ввода... ... Программируется такое поведение сверх-просто: как только фокус ввода передается какому-то контролу, значение его свойства " цвет текста " ( ForeColor , TextColor ) меняется на " красный " ( Color... ... Red ), а при потере фокуса контролом цвет текста восстанавливается на стандартный ( SystemColors... Подробнее: http://fit-media.com/post_1205142560.htmlИдея глобального контента
Степень соответствия запросу: 2,75%
Фрагменты текста поста : ... Идея глобального контента Как хранить данные в БД... ... По теме проектирования баз данных написано множество книг и статей, но все они содержат больше технической информации (описания систем индексации, поиска и связывания таблиц) и предлагают дробить всю информацию на множество таблиц, не забыв склеить все это в тугой узел с помощью связей (relations) и зависимостей... ... Идентификатор родительского элемента сайта ( parent_id - мы же строим иерархическую систему) Заголовок ( title ) Описание ( description ) Краткое содержание ( summary - используется в качестве анонса) Собственно текст старницы ( content ) Ключевые слова ( keywords ) Идентификатор автора ( user_id ) Дата создания ( created ) Дата последнего изменения ( modified ) Флаг опубликованности ( published ) Идентификатор логического раздела ( category ) Вроде ничего не забыл... ... Список полей: Уникальный идентификатор ( id ) Идентификатор статьи с в блоге, к которой относится данный комментарий ( parent_id ) Заголовок ( title ) Собственно текст ( content ) Идентификатор автора ( user_id ) Дата создания ( created ) Флаг промодерированности ( published ) Как видим, поля всё теже, что и для статичной страницы, отличие лишь в количестве... ... Проанализировав описанное выше, можно легко сделать вывод, что при проектировании CMF логично создать всего одну (большую) универсальную таблицу в базе данных для хранения практически любого вида контента... ... При этом для разработчиков модулей можно упростить многие рутинные операции, такие как, программирование ввода одних и тех же данных в разных модулях ( created , modified , title , decsription , keywords и т... ... Разработчику модуля нужно лишь сообщить системе, какие именно поля будет использовать его модуль и система сама сможет создать все необходимые формы для ввода/редактирования данных, с необходимой валидацией... ... Так же этот вариант хранения данных позволяет сделать "... ... %%%контент сайта, проектирование CMF, виды контента CMS, базы данных,  ... Подробнее: http://fit-media.com/post_1242742678.htmlВизуальный редактор для Lasto-Blog-B
Степень соответствия запросу: 2,67%
Фрагменты текста поста : ... Визуальный редактор для Lasto-Blog-B Автор скрипта Lasto-Blog-B (на котром работает этот блог), Вадим Ласто , к сожалению, не потрудился встроить в свое творение сколько-нибудь нормальный редактор текста... ... Оно и понятно - хотя это скрипт блога, назначение у него все же несколько иное... ... Как показывает практика и наблюдения, все же существуют в природе люди, которые (как и я) используют этот скрипт по прямому его назначению - в качестве обычного блога... ... Правды ради стоит упомянуть, что в комплекте Lasto-Blog-B идет скрипт, который позволяет очищать статьи из Microsoft Word (сохраненные в формате HTML) ... ... До сих пор я использовал различные оффлайновые редакторы для подготовки статей, перепробовал множество разных, и, наконец, пришел к выводу, что наилучшее решение - старый добрый полноценный визуальный редактор текста... ... Поскольку автор скрипта посчитал излишним тратить время на такой "... ... Вот как оно выглядит в этом блоге: Особенности (возможности): Работа с буфером обмена (вставка текста с форматированием и без) Автоматическое преобразование форматированного текста из MS Word в HTML Отмена / повтор последних операций Поиск и замена в существующем тексте Удаление старого форматирования Работа с таблицами (создание, редактирование, удаление) Вставка смайлов ... ... и спец-символов Возможность работы в полноэкранном режиме (на всю ширину окна броузера) Автоматическая загрузка картинок и флеш-роликов на сервер Отбивка по левому / правому краю и по центру Поддержка всех стандартных тэгов форматирования ( жирный , курсив , подчеркнутый , зачернутый , индекс , степень ) Поддержка двух видов списков (нумерованный и ненумерованный) Смена цвета текста и фона текста Вставка и редактирование гиперссылок и якорей Поддержка стилей и текстовых форматов для быстрого редактирования Встраиваемость в дизайн Ласто-блога и т... ... %%%визуальный редактор для ласто-блога, FCKeditor, скрипт, закгрузка картинок на сервер%%%... Подробнее: http://fit-media.com/post_1224871025.htmlЕсли не хочется кусать локти
Степень соответствия запросу: 1,34%
Фрагменты текста поста : ... Именно человеческая лень чаще всего служит причиной отсутствия резервной копии данных... ... Наилучший вариант — создание копии важных данные на сменных носителях... ... Если в вашей системе установлено несколько винчестеров и оригинальные (важные) данные расположены на первом из них, то копия всегда должна быть расположена на втором, третьем, четвертом винчестере, но только не на том, где лежит оригинал... ... Если винчестер выйдет из строя, то информации вы все равно лишитесь, но такой вариант все же позволит вам в некоторых случаях спасти данные... ... В этом случае копия данных должна располагаться в отдельной папке... ... Пояснять тут нечего — если уничтожите оригинал, то сможете поднять данные из резервной папки, но любое более серьезное происшествие (вирус, форматирование, выход из строя носителя) практически 100%-но лишит вас и оригинала и копии... ... Для резервирования данных создана масса специальных программ-бэкаперов — пару минут общения с любым поисковиком и вы найдете ссылки на десятки примеров такого софта... ... Есть даже одна, встроенная прямо в Windows ( Пуск — Программы — Стандартные — Служебные — Архивация данных )... ... Запустите блокнот, наберите в нем такой текст: Пример BAT-файла del f:\arhiv\*... ... Итак, условимся, что оригинальные данные находятся в папках c:\texts\ , c:\private\passwords\ и d:\work\prikaz\... Подробнее: http://fit-media.com/post_1203529769.htmlОптимизация PHP-кода
Степень соответствия запросу: 1,34%
Фрагменты текста поста : ... Если вам необходимо определить время, когда скрипт был запущен, лучше используйте $_SERVER[&rsquo... ... Если функции замены строк, может принимать в качестве аргументов как массивы, так и одиночные символы, и если ваш список аргументов не слишком длинный, подумайте над тем, чтобы записать несколько одинаковых выражений замены, проходя один символ за раз, вместо одной строки кода, которая принимает массив поиска и замены Лучше использовать конструкции else if , чем несколько конструкций if... ... PHP ищет переменные внутри текста в двойных кавычках... ... Ваши PHP-скрипты компилируются каждый раз, если скрипты они не кэшируются... ... Кэшированный микрокод полезен тем, что позволяет вашему скрипту не перекомпилироваться заново для каждого запроса... ... Не определяйте каждую структуру данных в виде класса - массивы бывают намного полезнее... ... модуль Apache , который позволяет сжимать ваши данные на лету и может существенно уменьшить объем передаваемых клиенту данных... Подробнее: http://fit-media.com/post_1207831883.htmlMySQL: MyISAM хотят заменить на новый движок Maria
Степень соответствия запросу: 1,16%
Фрагменты текста поста : ... MySQL: MyISAM хотят заменить на новый движок Maria Инициативная группа MySQL AB Maria, состоящая из шести человек и возглавляемая Michael "Monty" Widenius (создатель MySQL и MyISAM), выпустила тестовую версию нового движка хранения данных Maria... ... Движок Maria - это расширенная версия MyISAM, которая поддерживает весь основной функционал MyISAM и в дополнение к этому предлагает: поддержку восстановления данных после сбоев (data auto-recovery, crash safe), полное логирование (включая операции CREATE, DROP, RENAME и TRUNCATE) и новый формат строк PAGE... ... X Основные замечания касательно сравнения Maria и MyISAM Преимущества перед MyISAM Восстановление данных и индексов после сбоев Откат, после сбоя, в предыдущее состояние или к состоянию после последней команды LOCK TABLES Полное логирование операций, включая: CREATE/DROP/RENAME/TRUNCATE TABLES, LOAD DATA INFILE, SELECT... ... INSERT и INSERT (множество строк), ALTER TABLE LOAD INDEX может пропускать неиспользуемые индексные блоки Новый блочный формат строк, в котором данные хранятся ввиде страниц При использовании блочного формата строк (выбираемого теперь по умолчанию) строковые данные могут кешироваться Блочные тесты большинства элементов Поддержка как отказоустойчивых (crash safe, транзакциональных) так и нетранзакциональных таблиц... ... ) TRANSACTIONAL=0|1 PAGE используется только для тказоустойчивого/транзакционального строкового формата PAGE формат должен дать заметное увеличение скорости на системах с плохим кешированием данных... ... Не поддерживается INSERT DELAYED Не поддерживается кеширование составных ключей Устранение недостатков до следующих релизов Хранение очень малых строк Не поддерживаются MERGE таблицы Различия, которые вероятно не будут устранены Страницы данных в блоковом формате увеличивают размеры: 10 байт на страницу и 5 байт на строки... ... Транзакции и поддержка конкурирующих записей приведут к увеличению: 7 байт на новые строки, 14 байт для удаленных строк Отсутствие внешнего блокирования (MyISAM имеет внешнее блокирование, но оно редко используется) Использование одинакового размера страниц для индекса и данных... ... MyISAM поддерживает различные размеры страниц для индексов Индексный номер требует один экстра байт на индексную страницу Не поддерживается внутренний MySQL RAID (выключен и в MyISAM) Минимальный размер файла данных формата PAGE 16К (со страницей на 8K) Обзор Maria:... Подробнее: http://fit-media.com/post_1202730586.htmlМаксимум производительности
Степень соответствия запросу: 1,07%
Фрагменты текста поста : ... Например, производительность работы человека увеличивается, если все необходимые данные находятся "... ... Один из методов решения этой проблемы - предварительная загрузка данных... ... Так как заранее неизвестно, какие именно данные потребуются, может возникнуть необходимость загрузки большого объема данных, которые никогда не будут использованы - вот вам и противоречие между производительностью человека и компьютера... ... Три операции, которые можно упростить Работая на компьютере, пользователи выполняют три основных операции: Принимают решения на основе информации, касающейся текущей задачи Собирают данные, необходимые для выполнения текущей задачи Манипулируют компьютером с помощью элементов управления Например, пользуясь автомобилем, пользователи вначале решают, куда они хотят ехать... ... Если рассмотреть каждый из этих шагов, уменьшая количество решений, которые необходимо принимать человеку, позволяя компьютеру самому собирать данные, и уменьшая количество манипуляций, необходимых для достижения цели, то производительность человека при работе с компьютером значительно увеличится... ... Уменьшение необходимости ввода данных Следующие методы могут увеличить производительность ввода данных, уменьшая количество необходимой для ввода информации: Автоматически заполняйте поля новой записи значениями предыдущей... ... Например, можно вводить информацию с бумажных форм в компьютер, используя сканер и программу оптического распознавания текста... Подробнее: http://fit-media.com/post_1207048697.htmlПользовательский интерфейс
Степень соответствия запросу: 0,92%
Фрагменты текста поста : ... Сама номенклатура принятых в среде Windows интерфейсных элементов вызывает большие сомнения в том, что на ее базе можно создать действительно удобные интерфейсы... ... То есть из всего разнообразия изобразительных средств - формы, размера, цвета, текста - в кнопках диалогов используется только текст... ... Считается хорошим тоном иметь кнопки одного размера и аккуратно расположенные, чтобы вынудить пользователя каждый раз прочитывать текст... ... Исключением, подтверждающим правило, является кнопка OK, которая смотрится не как текст, а как изображение (иероглиф)... ... В них кнопки разбросаны в кажущемся беспорядке, имеют разный размер, большинство обозначено пиктограммами, а текст остальных очень короток (например, Play) и тоже скорее играет роль пиктограммы... ... Но дизайнеры этого интерфейса сочли эти элементы исключением из правил, хотя на их базе можно строить очень неплохие среды, конечно оставляя главные элементы "видимыми"... ... Выучив алфавит, можно читать любой текст... ... Для дизайна конкретной программы требуется разработка собственной среды взаимодействия (направленной на реализацию конкретной функциональности) на базе общепринятой системы динамических визуальных сигналов... Подробнее: http://fit-media.com/post_1204019048.html
