Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Сайтостроение - самые эффективные решения


Спонсор Рассылки: Клуб Желающих Создать и Развивать Свой Сайт.


Здравствуйте.

Действуйте сейчас, если хотите создать сайт за Час..

PHP. Практика создания Web-сайтов
Самоучитель. Создание Web-сайтов: + 2 видеокурса на двух CD: Adobe Flash CS3 & Adobe Dreamweaver CS3
Видеосамоучитель. Создание Web-страниц
PHP, MySQL и Dreamweaver. Разработка интерактивных Web-сайтов


Ловля ошибок в PHP


Источник: http://wm-help.net/

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

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

Кроме того, именно эта служебная информация обычно помогает злым хакерам ломать сайт. В качестве классического примера можно привести вариант с выводом запроса при ошибке: "you have an error in query near WHERE id= "... Большое спасибо. Подставляем после "WHERE id=..." строку "0 OR 1>0" и запрос выполняется по всей таблице. Если запрос на удаление, то...сами понимаете, весело =). Поэтому я всегда переменные в запросах заключаю в кавычки. На всякий случай...

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

Начнем, пожалуй, с краткого обзора видов ошибок в РНР.

Таблица 1. Описания ошибок в PHP4 (оригинальный список)

Числовое
значение
Константа Описание Ловится/нет
1 E_ERROR Фатальные ошибки. Например, ошибка при обращении к памяти. Выполнение скрипта при этом прерывается. нет
2 E_WARNING Предупреждения (не фатальные ошибки). Выполнение скрипта не прерывается. да
4 E_PARSE Ошибки во время анализа синтаксиса. Генерируются парсером. нет
8 E_NOTICE Замечания (менее серьезные ошибки, чем предупреждения). Указывают на ситуацию, которая может стать причиной более серьезной ошибки, но могут случаться и в процессе нормальной работы скрипта. да
16 E_CORE_ERROR Ошибки во время загрузки РНР. Аналог E_ERROR, генерируется ядром РНР. нет
32 E_CORE_WARNING Предупреждения во время загрузки РНР Аналог E_WARNING, генерируется ядром РНР. нет
64 E_COMPILE_ERROR Фатальные ошибки во время компиляции кода. Аналог E_ERROR, генерируется зендовским движком. нет
128 E_COMPILE_WARNING Предупреждения во время компиляции кода. Аналог E_WARNING, генерируется зендовским движком. нет
256 E_USER_ERROR Пользовательская ошибка. да
512 E_USER_WARNING Пользовательское предупреждение. да
1024 E_USER_NOTICE Пользовательское замечание да

Нас интересуют те ошибки, которые мы можем перехватить. К ним относятся: E_WARNING, E_NOTICE и E_USER_*. Остальные виды ошибок перехвату не поддаются либо из-за того, что происходят они еще до окончания загрузки самого ядра РНР, либо из-за того, что происходят на этапе синтаксического анализа и компилирования РНР-кода, поэтому их вывод придется просто отключить:

ini_set('display_errors',0);

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

По умолчанию уровень ошибок в РНР имеет значение E_ALL & ~E_NOTICE (или 2039 в числовой форме), что означает, что мы пропускаем мимо ушей замечания, но сообщаем о всех остальных ошибках.

Кстати, сами разработчики рекомендуют включать на стадии разработки и E_NOTICE - помогает обнаружить потенциально опасные места.

Поэтому изменим уровень вывода ошибок на E_ALL:

error_reporting(E_ALL);

Теперь переопределим хэндлер ошибок и подставим вместо него нашу функцию user_log(), которая и будет заниматься теперь обработкой ошибок:

set_error_handler('user_log');

Рассмотрим эту функцию подробней. Ей передаются 5 параметров:

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

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

Итак, код с комментариями:

<?php
/* Наша функция-хэндлер */
function user_log ($errno, $errmsg, $file, $line) {
// время события
$timestamp = time();
//формируем новую строку в логе
$err_str = $timestamp.'||';
$err_str .= $errno.'||';
$err_str .= $file.'||';
$err_str .= $line.'||';
$err_str .= $errmsg."\n";
//проверка на максимальный размер
if (is_file(LOG_FILE_NAME) AND filesize(LOG_FILE_NAME)>=(LOG_FILE_MAXSIZE*1024)) {
//проверяем настройки, если установлен лог_ротэйт,
//то "сдвигаем" старые файлы на один вниз и создаем пустой лог
//если нет - чистим и пишем вместо старого лога
if (LOG_ROTATE===true) {
$i=1;
//считаем старые логи в каталоге
while (is_file(LOG_FILE_NAME.'.'.$i)) { $i++; }
$i--;
//у каждого из них по очереди увеличиваем номер на 1
while ($i>0) {
rename(LOG_FILE_NAME.'..'.$i,LOG_FILE_NAME. '.' .(1+$i--));
}
rename (LOG_FILE_NAME,LOG_FILE_NAME.'.1');
touch(LOG_FILE_NAME);
}
elseif(is_file(LOG_FILE_NAME)) {
//если пишем логи сверху, то удалим
//и создадим заново пустой файл
unlink(LOG_FILE_NAME);
touch(LOG_FILE_NAME);
}
}
/*
проверяем есть ли такой файл
если нет - можем ли мы его создать
если есть - можем ли мы писать в него
*/
if(!is_file(LOG_FILE_NAME)) {
if (!touch(LOG_FILE_NAME)) {
return 'can\'t create log file';
}
}
elseif(!is_writable(LOG_FILE_NAME)) {
return 'can\'t write to log file';
}
//обратите внимание на функцию, которой мы пишем лог.
error_log($err_str, 3, LOG_FILE_NAME);
}
?>

Весь код вы можете посмотреть тут или взять все в архиве.

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

Собственно, это все. Остальное, я думаю, не составит для вас труда, особенно, если пользоваться функциями file(); & explode();. А если все-таки составит, то вы можете воспользоваться [вот этим кодом].

Предвидя вопрос "почему я не использовал CSV, который, казалось бы, логично использовать в этой ситуации?", отвечаю: сообщения об ошибках могут содержать неизвестное количество служебных символов (ака запятых и точек с запятой), что явно затруднило бы разбор CSV. Да и не собираюсь я просматривать лог в Экселе.

Еще разные мысли на эту тему:

  • при устаревании лога gz'иповать файл и складывать его в архив;
  • то же, но с посылкой на почту;
  • при возникновении критических ошибок - слать мэйл (см. пример из мануала по функции set_error_handler);
  • для мазохистов можно использовать при этом XML(см. тут);

Вздохнули спокойно? Я надеюсь, что нет. Ибо переопределение еррор-хэндлера - это никак не панацея, просто одна из удобных фич РНР.

Кто предупрежден, тот защищен - так ведь?

ps Признаю, немного параноидален. Но лучше два раза проверить, чем один раз сделать ошибку.

ps/2 По просьбе Maxim Naumenko добавляю комменты к статье:

Q: Ну и чем это лучше, чем просто в php.ini указать error_log = "log_file.log" ?


A: Файл пишется в нашем формате. Нам же потом этот файл смотреть надо. Плюс - можно делать что угодно с этими ошибками (файл - это просто для примера). А в случае с error_log = "" - они ТОЛЬКО пишутся в файл и ничего более. Да и не везде вас пустят к php.ini.



Для нового сайта я рекомендую вам вот эту компанию платного хостинга

Задать свой вопрос: sitesozdatu(собака)yandex.ru






Как стать дизайнером?


Источник: http://webstudent.ru

Автор: Поликарпов Роман

 

Каждый год многие тысячи школ нашей страны выпускают миллионы человек перед которыми во весь рост встает проблема выбора своего будущего пути по жизни. Так и этой весной многие читатели сайта и рассылки будут куда-то поступать, а раз уж проект у нас тематический, то и сказать надо хоть пару слов по теме. Итак, давайте уж вместе разбираться что же это за такая новомодная профессия "Дизайнер" и где в России учат дизайнеров.

Надо сказать, тема оказалась еще шире чем я думал, так что еще в процессе подготовки выпуска стало ясно, что нельзя охватить необъятное. Поэтому, изначально позиционирую эту публикацию как небольшой обзор возможностей и направлений, а уж дальнейший путь вам без труда подскажет "Яндекс".

Куда ни глянь - везде дизайн…

Вовсе не секрет, что профессия дизайнера сейчас входит в число наиболее модных и престижных. А что? Вроде бы и не пыльно и не трудно - не надо ни землю копать, ни мешки таскать. Да и денег, говорят, платят очень даже немало. Такой подход буквально "пошел в массы", спрос вызвал предложение, и в 90-х годах, теперь уже прошлого века, по всей стране как грибы после дождя появились множество учреждений, которые большими розовыми буквами на светло-зеленом фоне своих буклетов расписывают каких замечательных дизайнеров они готовы выпускать.

Понятно, что если вы действительно хотите не просто стать "продавцом-дизайнером" (реальное название вакансии в газете!), а специалистом своей области, то к выбору ВУЗа надо подойти обдуманно. Тут же окажется, что и ремесло дизайнера не такое уж простое, как кажется на первый взгляд…

Такой разный дизайн

На свете существует немало вещей к которым приложил руку дизайнер. Более того, очень сложно назвать что-то, с чем не работал специалист-дизайнер. Логично, что и видов дизайна существует несколько. А уж если говорить о более узких специализациях, то их уж точно не меньше 20-30, часть из которых явно выходит за рамки технической профессии и скорее относится к области философии. И не даром - изначально, слово "дизайн" ассоциировалось именно с чем-то из чисто творческой области, как весь спектр работы художника. Сейчас термин приобрел несколько иную окраску и понимается как совокупность теории (технической эстетики) и практики (художественное конструирование). Целью работы специалиста является создание неких материальных объектов и их систем с такими свойствами, которые удовлетворяли бы как технические так и эстетические требования человека к этому изделию.

Говоря проще, дизайнер делает вещи удобными и красивыми. Посмотри на мышку, которую держишь в руке, на стену, на которой обои радуют глаз, на автомобили, которые ездят за окном - все вокруг является предметом деятельности дизайнера!

Вот неполный список специализаций дизайнера:

  • Промышленный дизайн
  • Графический дизайн
  • Дизайн упаковки
  • Стайлинг-дизайн
  • Web-дизайн
  • Фито-дизайн
  • Эргодизайн
  • Дизайн костюма
  • Проектирование интерьеров, мебели, художественный текстиль
  • Рекламный дизайн
  • Психо-дизайн

Некоторые направления являются подразделами других областей, или образуются на стыке с другими науками. Чтобы определиться с будущей специализацией, давайте разберемся кто чем занимается.

Промышленный дизайн

Это дизайн промышленных товаров, рассчитанный на массовое производство. Это самая обширная область, в кузнице промдизайна рождается будущий облик почти всех предметов, которые нас окружают: от кружки из которой ты пьешь кофе во время бессонных ночей перед компьютером, до этих самых ПК, со всеми их эргономическими наворотами. Это наиболее приближенная к практике дисциплина, т.к целью является создание форму для массового продукта, чтобы он хорошо продавался, был удобен и красив и стоил не слишком дорого, а значит приносил прибыль. Как следствие - больше практики - поменьше простора для фантазии и креатива. Здесь наиболее полно применяются профессиональные навыки и опыт дизайнера, требуется мастерство во многих областях.

Графический дизайн

Это понятие наиболее универсальное. Под него можно подвести множество совершенно различных областей дизайн-индустрии. Предметом специалиста станет проектирование символов-знаков, логотипов, полиграфия, стайлинг (создание фирменного стиля для бренда) и, как подраздел, веб-дизайн. Не стоит думать, что это просто создание красивых картинок, это очень обширная область со своей, если хотите, философией, и даже не одной! Так, например, полиграфия и веб-дизайн на первый взгляд очень близки, но на деле, учитывая совершенно разную техническую реализацию продуктов, оказывается, что между ними целая пропасть!

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

Веб-дизайн, как ни странно, - всего лишь ветвь графического дизайна, перенесенная в интерактивную среду. Однако, серьезное создание сайта невозможно без глубокого знания теории цвета, композиции и наличия художественного вкуса.

Дизайн и реклама

Эта дисциплина как раз на стыке области маркетинга и рекламы и сферы графического дизайна. Дизайн в рекламе - открытки, листовки, буклеты, плакаты, растяжки. Творчество на заказ. В жестких рамках: тему и задачу диктует маркетолог, сроки - клиент. А ты - весь из себя такой креативный-креативный - должен создать гениальный изобразительный ряд! Чтобы выделиться, привлечь внимание и продать товар. На самом деле, интересная специальность, востребованная и популярная.

Эко-дизайн

Эко-дизайн это экологический дизайн жилища человека (квартиры, дома , дачи, офиса и т.д.) Современный дом должен быть красивым и удобным, а еще иметь душу.

Особенность экодизайна и в том, что он учитывает характер, возраст, социальный статус и даже темперамент жильцов. Экологический дизайн высвобождает и направляет положительную энергию, правильно располагает мебель в доме и выбирает оптимальное сочетание цветов. А также нейтрализует в квартире патогенные зоны, устраняет влияние отрицательной энергии. Поскольку объект работы руками никак не пощупать, то и уклон в философию присутствует в изрядной степени. Особое внимание композиции, цвету и пространству.

Направления эко-дизайна:

Ландшафтный дизайн - особый вид деятельности, направленный на создание искусственной среды для жизнедеятельности человека путем активного использования природных компонентов (рельеф, вода, растительность и т. д.) Иначе говоря, работа с парками, садами, клумбами… В общем, "Растительная жизнь" во всей красе.

Фито-дизайн - работа с зеленым материалым. Нет, не с долларами :) Специалисты работают с зелеными растениями, которые помогают сделать помещение уютнее, скрыть недостатки и вцелом улучшить настроение работников. Ну что за дом без фиалок на подоконнике и где найти офис без пальмы в коридоре? Вот он - фито-дизайн :)

Аква-дизайн - оформление интерьеров c использованием маленьких фонтанов, водоёмчиков очень благоприятно влияет на психику людей, их здоровье и настроение. Вода обладает особенной притягательной силой.

Участок жилого пространства без декоративного водоёма (пруда, фонтана, ручья, водопада) обычно выглядит сухо и скучно. Фантазии при устройстве водоёма нет предела, поэтому окончательный облик таких композиций зависит от дизайнерских предложений, пожеланий заказчика и определяется проектом...

Эргодизайн - дизайн вещей с которыми удобно работать. Основной лозунг: "Все для человека!" Наука создавать вещи удобными, понятными и красивыми.

Ну и еще много других областей, например дизайн мебели или дизайн одежды. Я думаю, если захотите, вам уже будет не сложно и самим разобраться.

Где учат?

Самым старым и авторитетным учебным заведением в России является Строгановское училище в Москве (Московская государственная художественно-промышленная академия Российской Академии художеств), более известная как "строгановка". По праву считается одним из лучших ВУЗов в стране по данной специализации. Готовит специалистов по таким предметам как промышленный дизайн, графический дизайн, суперграфика и реклама, дизайн транспортных средств, проектирование интерьеров, мебели, художественный текстиль. В качестве вступительных испытаний: рисунок фигуры человека, рисунок головы с плечевым поясом, живопись, композиция, русский язык (письменно). Конкурс, естественно, высок, поступить очень непросто.

Не уступают по почетности и другие московские ВУЗы, такие как Московский государственный архитектурный институт, Художественно-технологический институт, Национальный институт союза дизайнеров России и училище им. В. И. Мухиной (Санкт-Петербургская государственная художественно-промышленная академия) в Питере.

Вступительные испытания везде примерно одинаковые - творческий конкурс и русский язык.

Есть также и региональные школы, такие как факультет индустриального дизайна Уральской государственной художественной академии в Екатеринбурге, а также Нижнетагильский архитектурный институт, Ханты-Мансийский институт дизайна и прикладных искусств и Институт дизайна в Тюмени.

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

Также следует упомянуть Кафедру дизайна ННГАСУ в Нижнем Новгороде, которая также выпускает специалистов по направлению "дизайн". Кафедра была создана в 1988 году, а первый выпуск состоялся в 1990-м. Её выпускники успешно работают в различных отраслях промышленности, в том числе на предприятиях авиационной, судостроительной, мебельной и радиопромышленности. Многие занимаются графическим и выставочным дизайном. Кафедра художественного проектирования интерьера того же универститета ведет подготовку дизайнеров по интерьеру.

Как же все остальные?

Этот обзор составлялся мной на основе сканирования информации из Интернета и на основе мнений в тематических сообществах. Это значит, что он вовсе не является безусловной правдой и все остальное - отстой. Наверняка по стране существует множество других _достойных_ учреждений, если это и правда так, то присылайте свои комментарии к статье.

В то же время существует множество коммерческих ВУЗов, которые сами плохо представляют кого именно они готовят, так что и качество образования у них соответствующее… На вас, вероятно, хотят просто заработать деньги, т.к образование и так не дешевое, а в области дизайна еще дороже и бюджетных мест практически нигде нет.

Также существует множество курсов, с программой от 3 месяцев до года, которые обычно охватывают какую-либо узкую область, например веб-дизайн. Несмотря на то, что они выдают какой-то документ по окончании курса, фундаментальным образованием это быть не может, т.к дизайн, как ты уже наверное понял, вещь глубокая и обширная. Многие ходят на такие курсы как на хобби, или для повышения квалификации, для освоения новой области на базе полного высшего образования. Выбирайте курсы с умом, чтобы не попасть в контору, где вам за ваши кровные деньги будут полгода рассказывать про панель инструментов в Photoshop.

Напутственное слово

Хочу посоветовать всем будущим абитуриентам тщательно подойти к выбору своей профессии, полистать не только справочник ВУЗов, но еще и книжки по будущей профессии, чтобы понять понравится она вам или нет. Как ни банально это звучит, но это выбор на всю жизнь. В любом случае, ни один - даже самый лучший - вуз, ни один - даже самый талантливый - педагог не смогут превратить студента в дизайнера. Если посмотреть биографии известных западных дизайнеров, несложно заметить: чаще всего в них упомянуты два или три учебных заведения плюс работа в чьей-то мастерской (что на самом деле является продолжением той же учебы). Потому что где бы дизайнер ни начинал образование, заканчивает он его гораздо позже защиты дипломного проекта.



Задать свой вопрос: sitesozdatu(собака)yandex.ru






Создание Web-сайтов в Microsoft Expression Web
Создание Web-страниц для "чайников"
Использование 3D-технологии при создании WEB-сайтов
Building.org. Руководство менеджера по созданию успешных веб-сайтов для международных организаций


Полезные АудиоМатериалы


Поиск платного хостинга

Почему Платный хостинг php

Интернет магазин шаг 1

Архив Аудиоматериалов

Спонсор Рассылки: Клуб Желающих Создать и Развивать Свой Сайт.




В избранное