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

Web-дизайн для всех! Искусство Web-мастеринга #1


Информационный Канал Subscribe.Ru

Выпуск 1 [14.08.2005]
Web-дизайн для всех!
Подписчиков: 57

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

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

Прежде всего: рассылка будет и впредь выходить на службе Subscribe, но с отктрытием статейного сайта, я введу в использование самописную службу рассылок - БЕЗ РЕКЛАМЫ. Она будет работать параллельно с этой, а кто захочет - сможет подписаться, ибо и рассылка будет происходить быстрее, и никакой грязи к письму цепляться не будет. Открытие статейного сайта намечено на осень/конец лета. Так как сайт этот полностью рукотворен и наполняется контентом только моими силами, то я посчитал нужным переписать некоторые статьи, некогда публиковавшиеся в этой рассылке (2,5 года назад) еще на службе content.mail.ru. Почему это необходимо? Трезвый взгляд помогает четко определить, что начальные статьи не претендуют на полноту и правильность изложения, однако темы, которые я пытался там освещать заслуживают внимания. Некоторое время в рассылке будут публиковаться переписанные материалы, а потом, как прежде, эксклюзив. Сегодня в выпуске: одна переписанная статья, а также новая - "Почему PHP плох для начинающего программиста".
---
Наверх


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

Знал я одного человека, который решил попробовать себя в разработке программных приложений. Естественно, у него возникла проблема первого шага: с чего начать? Рекомендовать новичку Си в познавательных целях я не стал, но предложил ему поразбираться с PHP. Дело в том, что знакомство наше было сугубо сетевым, и мой собеседник не на шутку увлекся вебмастерингом. Таким образом, мне показалось, что изучение PHP поможет ему убить сразу 2-х зайцев: и с сайтом станет попроще, да и навыки программирования появятся, но вышло все несколько печальней. Спустя пару месяцев, у нас вновь завязался разговор, в ходе которого я выяснил, что мой приятель уже способен писать некоторые программы, работающие с БД и файловой системой. Тогда я порекомендовал ему начать изучение языка Си: PHP имеет очень много сходств с ним в синтаксисе (он на нем и написан), и осваивать его на этой почве должно быть проще. Но все дальнейшее выявило полный провал: создание сколько-нибудь серьезных приложений стало для моего товарища настоящей пыткой на волне непонимания даже самых элементарных вещей. PHP не просто не помог, но даже, как это ни странно, навредил.

Ну вот, скажет кто-то, набросал камней в огород PHP-программистов, теперь давай аргументируй. На самом деле, никаких дискредетирующих целей моя статья не преследует. Сами сетевые программисты, я уверен, солидарны со мной в постановке вопроса и имеют относительно него здравое мнение. Теперь перейдем непосредственно к делу. На время написания данной статьи у меня под рукой оказался давным-давно написанный скрипт. Его задача - выяснять, жива ли прямая ссылка. Т.к. статья пишется преимущественно для новичков, я полагаю, не все знают, что такое "прямая ссылка". Ответ не достоен того, чтобы его искали в недрах Яндекса: прямая ссылка - это ссылка, указывающая прямо на файл. Тавтология здесь оправдана по той причине, что привести более точную формулировку я вряд ли смогу. Другими словами, если при нажатии на ссылку, сразу происходит обращение к файлу (тому, ради которого вы ее и нажимали), то ссылка называется прямой, если же управление сначала передается какому-либо скрипту или еще какой-то умной штуке, то ссылка уже прямой не является. Простой пример: "http://xxxxxxx.ru/archive.zip". Мой скрипт выясняет, можно ли скачать тот или иной архив, или же данная ссылка некорректна (как говорят, "умерла"). Для наглядности приведу кусок кода:

 if(!IsSet($base)) { //если переменная $base (строковая) существует
    echo $form; //выводим кусок кода
   die;
  }
 else { //в противном случае
    $base = str_replace('..\\', '', $base); //берем переменную $base и удаляем оттуда всякие пакости
    $base = str_replace('\..', '', $base);
    trim($base); //в целях безопасности убиваем лишние пробелы в начале и конце строки $base
      for($i=0; $i         if(strpos($base,$NotAllow[$i])!==false) echo die("
Вы пытаетесь использовать в качестве базы недопустимый файл!
\n");
     }
 }

На самом деле, пример не самый показательный, но ничего лучше на тот момент у меня не нашлось. Здесь явно прослеживаются основные алгоритмические конструкции, как цикл (повторяем один кусок алгоритма указанное количество раз), условный оператор (если/иначе) и некоторые другие вещи. Если говорить о практическом предназначении данного куска, то он создан в целях безопасности, чтобы не дать пытливому юзеру задать в переменной $base путь к файлу "все_пароли.txt".Здесь нас интересует лишь небольшая часть приведенного исходника: 6 и 7 строки. Ну а все остальное я не стал убирать, чтобы было более-менее понятно назначение этих вещей. Итак, функция str_replace($p1,$p2,$str) берет строковую переменную $str, ищет там символы, указанные в $p1, заменяет их на $p2 и возвращает то, что осталось от $str. Казалось бы, прекрасная штука, избавляет от лишего геморроя. Стоп! А откуда новичку знать, от какого именно геморроя она его избавляет? Известно ли начинающему программисту, что такая операция поиска/замены по логике гораздо сложнее, чем написание одной единственной строчки? Предположим все-таки, что операция поиска уже предусмотрена, и нам не нужно изобретать велосипед. Как тогда будет выглядеть алгоритм работы функции str_replace('Маша','Дима','Вася+Маша=Семья')?

1. Берем строчку "Вася+Маша=Семья".
2. Ищем в ней подстроку "Маша". Получаем позицию (назовем ее N) первой буквы этой подстроки в исходной строке (у нас: 6).
3. Вычисляем длину (назовем ее L1) слова "Маша" (для особо ленивых: 4).
4. Начиная с позиции N, удаляем в строке "Вася+Маша=Семья" L символов. Получаем "Вася+=Семья".
5. Берем строчку "Дима" и считаем ее длину (назовем ее L2. Она тоже равна 4).
6. Начиная с позиции N, передвигаем подстрочку "=Семья" на L2 позиции вправо.
7. Начиная с позиции N, заполняем образовавшуюся пустоту словом "Дима".

Хочется однако заметить, что даже этот более-менее подробный алгоритм не претендует на полноту. Во-первых, мы не оговорились, как на шаге 2 вообще что-то искать (приняли это за данность)? Во-вторых, каким образом вычислять длину слова? В-третьих, как удалять подстроку или вставлять туда пробелы? Компьютер - машина "глупая", ей нужно объяснить каждый шаг. Удаление в его обывательском понимании означает сдвиг всей следующей за удаляемым символом строки на одну позицию влево. Казалось бы, это очевидно - нажал BackSpace и готово, но компьютеру это надо популярно объяснить. Большинство языков на сегодняшний день предоставляют возможности для выполнения практически всех шагов в приведенном алгоритме без описанных выше оговорок. А PHP имеет встроенные средства для выполнения всего алгоритма одним махом. Естественно, новичок даже не задумывается о том, "как оно работает?" (об этом вообще никто не задумывается -)), и в иной ситуации не сможет реализовать алгоритм замены вручную. Т.е. получается страшная зависимость от интерпретатора PHP, ведь, если нашему новичку дать задание сделать то же самое на языке Pascal (к примеру), то не нужно будет удивляться, увидев выражение его лица: он просто не будет знать. Теперь копнем немного глубже.

$testing = @fopen($stroke,'r'); //пробуем соединение с файлом, указанным в строковой переменной $testing
   if($testing != 0) { //если соединение удалось установить
     $whatisthis = fgets($testing,3); //читаем первые 2 байта из файла
       if($whatisthis == "Ra" || $whatisthis == "PK") echo $stroke." - OK! Обнаружен архив "; //проверяем на признак архива
       else echo $stroke." - Ссылка валидна, но не ссылается на файл. Возможен редирект. "; //если признак не выполнен - выводим на экран фразу о неудаче
   }

Что тут проиходит, наглядно описывают комментарии к каждой строке. Принципиально лишь то, что здесь мы работаем с файлом, указанным в строчке $testing. Общий принцип я описывать не стану, скажу лишь, что нам неизвестен тип файла (текстовый ли он, или, может быть, бинарный, записеориентированный), нам не особо важно закрывать с ним соединение и вообще владеть элементарными принципами работы с файловой системой. Мы просто знаем, что есть файл, знаем, что с ним надо делать и как интерпретировать те или иные ситуации при обработке (выводить "ОК" или какую-нибудь гадость в зависимости от прочитанной из файла строки). Для новичка останется тайной, что такое поток, каким он может быть, почему нельзя записать в файл ту или иную информацию (о правах доступа, правда, знает довольно много начинающих). И лишь потом, когда наш новичок-программист примется постигать основы локальных языков, все недосказаное при изучении PHP обрушится на него, как снежный ком. Ведь раньше достаточно было просто сказать интерпретатору, что ты хочешь сделать, не вникая в суть этого действия, а теперь это уже не пройдет.

Этим и плох PHP. Это язык, который способен внести в разум начинающего кажущуюся простоту, внушить, что программирование, в принципе, не такая уж и сложная штука. Это не так. Конечно, сразу начинать с Си тоже смахивает на крайность, но лучше уж однажды перетрудиться, чем потом бессонными ночами ломать голову над реализацией того или иного алгоритма. PHP - хороший язык, замечательный язык, но он не способен научить мыслить. А без этого программист не может. Язык - это лишь оболочка, средство для реализации той или иной задачи. Хороший программист должен уметь писать сложные конструкции вне зависимости от того, на чем ему приходится это делать. Использование таких роскошный вещей, как вольная работа со строками и прочими вещами, коими богат PHP, позволительно лишь тому программисту, который знает, как они устроены и способен описать их на любом языке. Именно для этого и создан PHP - чтобы облегчить программисту задачу написания сложных конструкций в отрасли сетевого программирования, где такие вещи просто незаменимы. Новичку не нужно знать, что такое HTTP и как с ним работает интерпретатор. Ему не нужно знать и того, как работает встроенная в PHP возможность отсылки электронных сообщений. А сетевой программист просто обязан владеть этими знаниями.

Иными словами, если вы не ставите своей задачей в будущем перейти к локальному программированию, и преследуете цель создать некий сценарий или даже сложнейший сетевой комплекс (вроде форума или движка сайта), смело беритесь за дело. Но если перед вами стоит выбор, с чего начать, чтобы впоследствии стать программистом (даже сетевым), возьмитесь лучше за Perl или Си - вы только выиграете. И в будущем, с большим удовольствием (а может негодованием), вы будете писать различные PHP-скрипты, но уже со знанием дела и чувством собственного превосходства над глупым транслятором.
---
| Наверх | К началу статьи |


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

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

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

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

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

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

1. Сайт не должен строиться на анимации, а лишь дополняться ей в актуальных местах.
2. Анимация не должна "цеплять" глаза и навязывать свое присутствие посетителю, а являться частью композиции.
3. Перед публикацией необходимо оптимизировать все анимированные объекты.
4. Не использовать бегущие строки - они раздражают и не несут никакой информативной ценности, отвлекая пользователя.
5. За редким исключением анимация применяется только в особых случаях. Среди статического окружения, ролик выглядит живым и концентрирует на себе внимание. Следовательно применять анимированные элементы следует только в тех местах, где посетитель должен остановить свой взгляд.

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


Ну вот все на сегодня! Макет будущего сайта можно посмотреть здесь. Буду очень рад услышать ваши мнения как по дизайну, так и по нашей рассылке. Пишите мне по адресу dagger@dezigner.ru, и всего наилучшего!

Рассылку подготовил Dagger (Сляднев Сергей) dagger@dezigner.ru


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: inet.webbuild.webmind
Отписаться
Вспомнить пароль

В избранное