AboutPC
Реклама в журнале
Главная 
Hi-Tech 
Интернет 
Безопасность 
Антиспам 
Железо 
КПК 
Мобильники 
Windows 
*nix 
Софт 
Игры 
Веб-дизайн 
Кодинг 
Заработок 
Юмор 
Отдыхай с PC 
Разное
:: о журнале
:: друзья
:: партнеры
:: авторам
:: читателям
:: веб-мастеру
:: copyright
:: рассылки
:: реклама
:: мыло
:: сайт

Раздел "Кодинг". Содержание:

Статьи:

PHP - Простое кэширование
Генератор паролей
Регулярные выражения в PHP
PHP против ASP - делайте ставки, господа!

 

Раздел "Кодинг". Рассылка от ведущего раздела "Кодинг":

 

Раздел "Кодинг". Статьи:

PHP - Простое кэширование

Mike
mike.nov.ru

В данной статье рассматривается один из самых простых способов кэширования подкачиваемых файлов, SQL запросов и других медленно создаваемых частей ваших страниц. Язык программирования: PHP

Что должно быть на главной странице ?? Правильно, там должно быть понемножку от каждого раздела сайта. И конечно Ваша страница строится автоматически, исходя из содержимого форумов, новостных лент и других разделов сайта.

Сколько SQL запросов выполняется при загрузке главной страницы ?? Сколько блоков подкачивается с других сайтов ??

Сейчас мы рассмотрим простой и эффективный способ кэширования данных такого рода.

В качестве примера рассмотрим случай импорта новостей с внешнего сервера: http://news.novgorod.ru/ultramode.txt

Наша задача получить этот файл, обработать его и вывести его пользователю. Программа делающая это, выглядит следующим образом:

<?
$d=@file("http://news.novgorod.ru/ultramode.txt");
for ($i=0;$i<11;$i++) {
$msg=$d[2+$i*8];
	$url=$d[3+$i*8];
	$date=$d[4+$i*8];
	print "<a href='http://news.novgorod.ru".trim($url)."'>";
	print trim($msg)."</a> (".$date.")";
	}
?>

При каждой загрузке нашей страницы происходит обращение к внешнему серверу news.novgorod.ru, оттуда по протоколу HTTP скачивается файл ultramode.txt. А теперь представим ситуацию, что сервер находится на другом конце планеты и соединение, а тем более передача файла занимает достаточно больше время. Или более того, сервер может быть временно недоступен.

Вывод. Зачем каждый раз подгружать файл ultamode.txt, если новости обновляются не чаще одного раза в два-три часа?? Правильно. Надо кэшировать.

А делать мы это будем очень просто. Как вы могли заметить, в первой строке файла хранится комментарий. Комментарий нам не нужен и на его месте можно замечательно разместить дату последнего обновления файла.

Алгоритм работы следующий:

  1. Считываем кэшированную версию
  2. Если кэшированная версия устарела, то на ее место считываем файл http://news.novgorod.ru/ultramode.txt, заменяем первую строку на текущее время и сохраняем в кэш.
  3. Оформляем и выводим данные пользователю.

Ниже приведен код проделывающий все это:

<?
// считываем файл из кэша
$d=@file("/tmp/news.cache");
$fs=trim($d[1]);
// Если файл не обновлялся 3600 секунд (1 час) или файл пуст,
// то обновляем его
if (intval($d[0])<time()-600 || empty($fs)) {
	$d=@file("http://news.novgorod.ru/ultramode.txt");
	$fs=trim($d[1]);
	// Сохраняем новую версю в кэше
	if (!empty($fs)) {
		$fw=fopen("/tmp/news.cache","wt");
		flock($fw, LOCK_EX);
		// В первую строку запишем текущее время
		fputs($fw,time()."\n");
		// Сохраним остальные строки
		for ($i=1;$i<count($d);$i++) fputs($fw,trim($d[$i])."\n");
		fclose($fw);
		}
	// Если, почему-то, файл не был скачан,
	// то воспользуемся кэшированной версией
	else $d=@file("/tmp/news.cache");
	}

// Вывод данных
for ($i=0;$i<11;$i++) {
$msg=$d[2+$i*8];
    $url=$d[3+$i*8];
    $date=$d[4+$i*8];
    print "<a href='http://news.novgorod.ru".trim($url)."'>";
	print trim($msg)."</a> (".$date.")";
    }
?>

Вот и все. Таким же образом можно кэшировать и SQL запросы. Используя этот механизм мне удалось уменьшить время создания главной страницы с 1.5 сек до 0.05 сек

 Наверх

Генератор паролей

Mike
mike.nov.ru

Почти на каждом сайте с регистрацией есть форма "Вспомнить пароль", с ее помощью можно получить забытый пароль не E-Mail. Высылать пароль не совсем безопасно, так как зачастую пользователи используют один пароль в нескольких местах.

По этому, хорошим тоном является замена старого пароля на новый, созданный автоматически.

Ниже приведен достаточно простой и интересный способ его создания:

<?
$d=Array("ba", "be", "bo", "di", "du", "do", "de", "ku",
         "ka", "ke", "si", "su", "re", "ru", "ro", "ra",
          "la", "le", "li", "lo", "ve", "zde", "ka");

$str="";
for ($i=0;$i<rand(3,4);$i++) $str.=$d[rand(0,count($d))];
print $str;
?>

Получаются достаточно интерестные и легко запоминающиеся пароли: Например:

kakamaka
turuda
kamana
sukika
и т.п.

 Наверх

Регулярные выражения в PHP

www.codenet.ru

Регулярные выражения - черезвычайно мощный инструмент работы со строками. С их помощью можно проводить анализ и изменение строк на основе заданного шаблона.

Рассмотрим простые (далеко не все) правила формирования шаблона.

Шаблон состовляется из набора модификаторов, некоторые из которых приведены в нижеследующей таблице.

\ - Следующий символ является специальным. Так же применяется для указания символов, которые могут использоваться в качестве модификаторов. \n - соответствует символу перевода строки
\* - символ "*", а * - модификатор
^ - Маркер начала строки. ^abc - строка, начинающаяся с "abc".
$ - Маркер конца строки. abc$ - строка, заканчивающаяся на "abc".
* - Предыдущий символ встречается 0 или больше раз. Шаблону w* соответствуют строки what, buka, agwt
+ - Предыдущий символ встречается 1 или больше раз. Шаблону w+ соответствуют строки what, agwt.
Строка buka уже не соответствует.
? - Предыдущий символ встречается 0 или 1 раз. Шаблону w?r соответствуют строки ara, awra.
. - Соответствует любому символу, отличному от "\n".  

Это простейшие модификаторы, знания которых нам пока хватит.

В PHP существует несколько функций для работы с регулярными выражениями: ereg(), ereg_replace(), eregi(), ereg_replacei() и split().

Функции с суффиксом i представляют из себя аналоги функций без этого суффикса, не чувствтительные к регистру операндов.

Рассмотрим функцию ereg(), синтаксис которой:

int ereg(string pattern, string string, array [regs]);

Рассмотрим некоторый адрес maxx@mail.ru. Очевидно, что правдоподобный адрес должен иметь вид "слово@слово.слово". В терминах шаблонов произвольный символ обозначается знаком "." (мы не будем сейчас учитывать тот факт, что в адресах допустимы не все символы). В каждом слове должен быть по крайней мере один символ, таким образом, шаблон слова будет иметь вид ".+". Вспомним теперь, что "." - это модификатор, и для явного указания точки (в качестве символа) нужно писать "\.".

Таким образом шаблон будет иметь вид ".+@.+\..+".

Наша проверка будет иметь следующий вид:

if (ereg(".+@.+\..+", $email)) {
    echo "Адрес, вроде, правильный";
    }
else {
    echo "Введите, батенька, адрес заново";
    }

После такой проверки мы можем быть уверены, что e-mail адрес имеет вид "слово@слово.слово".

 Наверх

PHP против ASP - делайте ставки, господа!

www.simplywebdesign.com
Гнездо
Green Kakadu

"ASP - это функциональная, удобная технология, но я выбираю PHP.." - примерно так начинается небольшая статья-размышление на тему "кто самее", найденная мной на сайте SimplyWebDesign.com (статья: Why PHP is Better than ASP). Я подумал, что возможно кому-то из наших посетителей тоже захочется пофилософствовать на эту тему, и потому предлагаю вам перевод этой статьи. Свое мнение, я выскажу в конце. Не стоит относиться ко всему нижеизложенному очень серьезно, кипятиться по пустякам, обзывать меня зеленым недоношенным ламером - я всего лишь переводчик (aka Promt ;)) ..

ASP? PHP?

Active Server Pages (ASP) - это технология Microsoft, позволяющая создавать динамические web страницы. ASP поддерживает несколько языков программирования, наиболее распространенным является VBScript (опять же разработка Microsoft). Соответственно, ASP - это технология для Windows систем. (Подробнее об ASP: Что за зверь, этот ASP? )

PHP - аналог ASP, который может работать как в среде UNIX так и в Windows. PHP - это система разработки скриптов, включающая в себя CGI - интерфейс, интерпретатор языка и набор функций для доступа к базам данных и различным объектам WWW. (Подробнее о PHP: PHP - система разработки скриптов )

Так кто же из этих двоих лучше? По мнению автора статьи, PHP выигрывает у ASP как в плане технических (функциональных) возможностей, так и по критерию популярности/общедоступности. Скорость.

ASP никогда не станет резвее PHP! ASP технология основана на модели COM (COM - Component Object Model), т.е. работать вы будете с объектами и компонентами.

Например, для вывода информации по запросу клиента задействуется объект Response, при обращении к базе данных, задействуется еще один объект, для работы с файлами вызывается третий объект и т.д. Таким образом, подобное нагромождение замедляет работу ASP приложения. При использовании модулей PHP, мы работаем в едином пространстве памяти PHP, и это несколько быстрее, чем использование разрозненных объектов, задействованных в различных процессах. Испытание Бэ Дэ Проверка скорости работы с MS SQL 7.0.

PHP: используя интерфейс ODBC ( Open Database Connectivity) доступ к базе данных - 9.54 сек.

ASP: Используя COM интерфейс для работы с ODBC - 17.28 сек (т.е. на 80% дольше).

OLEDB - микрософтская COM разработка для взаимодействия с базами данных, она "быстрее" ODBC, но если мы задействуем интерфейс PHP MYSQL, то выигрыш (на 200%) опять за PHP.

Это только говорит о том, что открытость кода PHP, а значит свободный доступ всех желающих к разработке и тестированию движка PHP - все это позволило создать более совершенную технологию, нежели ту, которая разрабатывалась в недрах Microsoft. А как вы используете память? Если вы работаете под IIS4, и ASP вставка header.asp инклудится в 20 web страниц, то 20 копий этих самых header.asp будут содержаться в памяти. Подобного беспредела уже нет в IIS5, который имеет улучшенную модель управления памятью, но такие радости жизни IIS5 доступны лишь для пользователей Windows 2000.

В отличии от этого, PHP грузит и инклудит только те файлы, которые непосредственно требуются. Деньги давай!

Что? Вам необходимы возможности шифрования? Покупайте ASPEncrypt!

Хотите работать с E-Mail? Купите ServerObject's Qmail!

Хотите загрузку файлов? Предлагаем купить Software Artisans SA-FileUp!

Вот так обстоят дела с ASP.. А PHP? Халява, сэр! (Green Kakadu: стоит отметить, что как для ASP, так и для PHP существует множество платных и бесплатных разработок, в случае ASP - это разработки не только Microsofta, но и сторонних фирм. Советую заглянуть на HotScripts.com) И что?

А то, что PHP может работать как на Windows сервере, так и на UNIX'ном, а вот ASP только на Windows. Причем, как вы догадались, желательно чтоб это был IIS5, который позволяет нормально работать с памятью. А цены? Из-за того, что Microsoft'кий софт денег стоит, то и Windows хостинг стоит несколько дороже, чем UNIX'ный! Ваше мнение?

 Наверх

 
design: ФуксЪ 
Реклама в журнале