Архив на месяц Сентябрь, 2008

Novice

Для начала хотелось бы поздравить всех читателей нашего блога с днем РУнета! Следует заметить, что под рунетом подразумевается вся русскоговорящая часть Интернета.

Именно 30 сентября принято считать этим праздником. История которого начинается в далеком 1998 году (в прошлом веке еще короче), когда компания “IT Infoart Stars” выступила с двумя инициативами – сделать 30 сентября днем Интернета и провести перепись населения русскоязычного Интернета.

На тот момент они насчитали 1 млн. человек (в настоящий момент число превышает старые данные как минимум в 25 раз).

Есть правда, мнения, что праздновать нужно 7 или 4 апреля, в день вознесения некого Исидора Севильского, который написал первый свод всех человеческих знаний в 20 томах. Но, я думаю, три праздника, лучше, чем один, поэтому холивар тут развивать не следует.
Читать далее »

Novice

Начнем с того, что сформулируем такое правило: аргументы функций нельзя модифицировать. Это путает того, кто читает Ваш код.

Вот, например, рассмотрим следующий кусок кода:

<?
function fn($val, $qty, $year) {
	if ($val > 70) $val -= 2;
	...
?>

Как видим, тут кто-то взял и изменил значение аргумента функции (наверно, я :) ). Причем заметим, что в PHP без явного указания аргументы всегда передаются по значению, а не по ссылке. Если по правилу, то мы должны были сделать вот так:

<?
function fn($val, $qty, $year) {
	$res = $val;
	if ($val > 70) $res -= 2;
	...
?>

Читать далее »

Novice

Вы хоть раз задумывались, как устроены такие поисковые системы как Яндекс или Google? Если бы перед Вами стояла задача написать поисковую систему с нуля, с чего бы Вы начали? Наверняка многие из Вас уже писали простые контентные сайты с внутренней системой поиска для них, А поиск реализовывали очень просто – командой LIKE синтаксиса SQL. Думаете, Яндекс тоже так работает? :)

Рассказать про все механизмы, реализованные в современных поисковых системах – это явно задача не для одного поста (да и рассказать-то я много не смогу :) ), поэтому здесь я расскажу про самую значимую и неизвестную для многих часть поисковиков – индекс. Но не будем торопиться.

Вообще, всю поисковую систему можно условно разделить на 3 части: интерфейс пользователя, поисковый агент и индекс.

Интерфейс пользователя знаком всем – google.com, ya.ru. Обычно это просто строка поиска. Поисковый агент – программа, которая ползает по сайтам, собирая тексты страниц и url с них. Поисковый агент сохраняет собранную информацию в индексе.
Ну, а самая важная часть – это индекс, или поисковая база данных.
Читать далее »

Novice

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

Сразу перейдем к примеру.

Допустим, у нас есть следующая функция, которая ищет в массиве нужных людей, и, если находит, возвращает имя человека, а если не находит – возвращает пустую строку:

<?
	…

	function findPerson($people) {
		foreach ($people as $person) {
			if ($person == 'Alex') {
				return 'Alex';
			}
			if ($person == 'Michael') {
				return 'Michael';
			}
			if ($person == 'Sergey') {
				return 'Sergey';
			}
		}

		return '';
	}

	…
?>

Читать далее »

Novice

Несмотря на свою легкость и универсальность, php является очень функциональным языком. Он не такой гибкий, как C конечно, но и у него есть свои хитрости. Я еще не матерый профессионал в области программирования на php, но уже успел нахвататься несколько php трюков и хитростей при работе на php.

В этом посте я составил небольшую подборку, которая будет полезна как новичкам, так и некоторым профессионалам.

Меняем массив через foreach.

Почти в любом php-скрипте используются массивы, а следовательно, и циклы. Самым популярным является цикл foreach. При обработке массивов этим циклом, очень часто приходится их изменять, но как, вы уже успели заметить, если сделать так:

foreach ($categories as $cat) {
    $cat['name'] = 'some cat';
}

То ни один элемент массива $categories не пострадает :) Другими словами, поле name у каждого элемента останется прежним, а не изменится на “some cat”.
Читать далее »

Novice

Этой статьей я начинаю рассматривать различные приемы рефакторинга. Сегодня рассмотрим то, как правильно обращаться с переменными, а именно: как избавиться от временных переменных.

Рассмотрим следующую ситуацию: у нас есть временная переменная, которая принимает больше чем одно значение (значение присваивается ей не однократно). При этом допустим, что эта переменная не имеет отношения к циклу:

<?
	$temp = 2 * ($height + $width);
	echo $temp;
	$temp = $height * $width;
	echo $temp;
?>

Читать далее »

Novice

В настоящее время уже все, кто хоть как-то связан с областью веб-технологий, наслышаны о таком понятии как Веб 2.0. Появление этого явления обычно ассоциируют с публикацией статьи «Tim O’Reilly — What Is Web 2.0», русский перевод которой можно прочитать здесь: http://i-novice.net/gout/DkIQRQgcSxMSRxkGWF5FFBdTQ0YCGkdNFk1fCwhdF1dVAlUFAhw=/.

А если коротко, то Веб 2.0 – это новая версия платформы веба. То есть там все происходит по другим правилам. Если раньше мы старались создать огромное кол-во уникального контента сайта вручную и тем самым привлечь как можно больше пользователей, то сейчас пользователи сами генерируют контент. Чем больше пользователей у сайта, тем больше контента на нем появляется, и тем популярней он становится. Если раньше мы разбивали разделы сайта по категориям, то сейчас каждому элементу присваивают ключевые слова (теги) и ключевым элементом навигации становятся они. Именно такие принципы лежат в основе веба 2.0. Некие задатки, так сказать, самоорганизующейся системы. Некоторые конечно приписывают еще и технологию Ajax к движущим силам веб 2.0, но я так не думаю.

Кроме того, начинает набирать популярность синдикация информации (многие знают про RSS – это одно из проявлений синдикации). Синдикация стирает привязанность информации к конкретному ресурсу и делает ее доступной из любой точки (из которой удобнее ее получать пользователю, например). Другими словами информация теперь доставляется пользователям, как beer`ка к пиву ;)
Читать далее »


Страница 1 из 3123»


© 2008 - 2010 i-novice.net | Все права защищены.