<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>art.7e-nebo.ru</title>
	<link>http://art.7e-nebo.ru</link>
	<description>Блог о web-дизайне студии "Седьмое небо"</description>
	<pubDate>Sat, 03 Apr 2010 10:46:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>
	<language>en</language>
			<item>
		<title>Печём пирожки или начало работы с CakePHP по-русски</title>
		<link>http://art.7e-nebo.ru/2007/02/02/cakephp/</link>
		<comments>http://art.7e-nebo.ru/2007/02/02/cakephp/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 13:06:19 +0000</pubDate>
		<dc:creator>Deus</dc:creator>
		
	<category>php</category>
		<guid isPermaLink="false">http://art.7e-nebo.ru/2007/02/02/%d0%9f%d0%b5%d1%87%d1%91%d0%bc-%d0%bf%d0%b8%d1%80%d0%be%d0%b6%d0%ba%d0%b8-%d0%b8%d0%bb%d0%b8-%d0%bd%d0%b0%d1%87%d0%b0%d0%bb%d0%be-%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%8b-%d1%81-cakephp-%d0%bf%d0%be-%d1%8/</guid>
		<description><![CDATA[Скоро товарищей, пишущих по старинке веб-страницы на голом php, можно будет показывать в зоопарках 
Наступает эра Фреймворков. И это хорошо, потому что программист избавлен от множества рутинных задач,
и может сосредоточиться на создании логики приложения.
В CakePHP используется подход MCV (Model - View - Controller). Теперь вместо одного файла *.php на одну
страничку их будет целых три минимум [...]]]></description>
			<content:encoded><![CDATA[<p>Скоро товарищей, пишущих по старинке веб-страницы на голом php, можно будет показывать в зоопарках <img src='http://art.7e-nebo.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Наступает эра Фреймворков. И это хорошо, потому что программист избавлен от множества рутинных задач,<br />
и может сосредоточиться на создании логики приложения.<br />
В CakePHP используется подход MCV (Model - View - Controller). Теперь вместо одного файла *.php на одну<br />
страничку их будет целых три минимум %)  - один для модели (описывает связь формы с базой данных, имеет<br />
расширение php), thtml файл будет описывать внешний вид страницы (view), третий (контроллер страницы с<br />
расширением php будет реализовывать логику формы и будет содержать методы, дополняющие функциональность<br />
родительского класса AppController.<br />
Что ж, начнем печь приложения как пирожки )) Но для этого придется преступить через себя и принять новый подход к программированию. Оно того стоит ^_^</p>
<h2>Установка</h2>
<p>Вам нужен Apache с установленным mod_rewrite и mod_php, php4 или php5, а также база данных (в нашем примере используется MySQL). Первым делом<br />
разживитесь на <a href="http://www.cakephp.org">www.cakephp.org</a> свежей версией CakePHP. Там же расположен неплохой<br />
мануал, которому я во многом буду следовать. Распакуйте архив в корневую директорию веб-сервера и наберите в браузере адрес сайта. Должна появиться приветственная страничка </p>
<blockquote><p>
Your database configuration file is not present.
</p>
</blockquote>
<p>Нужно прописать соединение с базой данных. Делается это в директории <strong>app/config</strong> - берем за основу <strong>database.php.default</strong> и переименовываем его в <strong>database.php</strong>. Прописываем в файле параметры соединения с базой. Если все ОК то CakePHP сообщит об этом. </p>
<blockquote><p>
Your database configuration file is present. </p>
<p>Cake is able to connect to the database.
</p>
</blockquote>
<p>Все готово для творчества. </p>
<h2>Модуль новостей</h2>
<p>Напишем простейший модуль новостей, чтобы проиллюстрировать технологию создания сайтов на Фреймворке. Создадим в базе данных таблицу posts, в которой будут храниться новости.</p>
<pre>
CREATE TABLE `posts` (

  `id` bigint(20) NOT NULL auto_increment,

  `post_date` date NOT NULL default '0000-00-00',

  `post_header` varchar(255) NOT NULL default '',

  `post_text` text NOT NULL,

  `archived` tinyint(4) NOT NULL default '0',

  PRIMARY KEY  (`id`)

)
</pre>
<p>Вопрос: почему бы таблицу не назвать &#8220;news&#8221;? Таблица должна иметь имя сущности во множественном числе.<br />
В английском &#8220;новости&#8221; news всегда употребляется во множественном числе, тем более слово new является<br />
ключевым в php, что приводит к ошибке.</p>
<h2>Модель</h2>
<p>В папке <b>app/models</b> создадим файл модели <b>post.php</b></p>
<pre>
&lt;?php
class Post extends AppModel

{

    var $name = 'Post';

    var $validate = array(

        'post_header'  => VALID_NOT_EMPTY,

        'post_text'   => VALID_NOT_EMPTY,

        'post_date'   => VALID_NOT_EMPTY 

    );

}

?>
</pre>
<p>В массиве $validate описываются ограничения накладываемые логикой приложения на данные. Мы запретили пустые поля<br />
Текст, Заголовок и Дата.</p>
<h2>Контроллер</h2>
<p>В папке <strong>app/controllers</strong> создадим файл <strong>posts_controller.php</strong>. Создадим объект, который реализует основные функции<br />
модуля новостей: отображение списка (index), просмотр новости (view), удаление новости (delete), добавления новости (add).</p>
<pre>
&lt;?php

class PostsController extends AppController // наследуемся
// от AppController

{

    var $name = 'Posts';

    function index() // эта функция должна быть обязательно

    {

         $this->set('posts', $this->Post->findAll()); // выборка всех записей
         //из таблицы

         $this->pageTitle = 'Новости';

    }

    function view($id) // просмотр новости

    {

        $this->Post->id = $id;

        $this->set('post', $this->Post->read());

    }

    function add() // добавление новости

    {

        if (!empty($this->data))

        {

            if ($this->Post->save($this->data))

            {

                $this->flash('Новость была успешно добавлена','/posts');
// flash выдает сообщение пользователю в виде ссылки на страницу,
указанной во втором аргументе функции

            }

        }

    }

    function delete($id) // удаление новости

        {

            $this->Post->del($id);

            $this->flash('Новость была удалена', '/posts');

        }

    function edit($id = null) // редактирование новости

    {

       if (empty($this->data))

       {

           $this->Post->id = $id;

           $this->data = $this->Post->read();

       }

       else

       {

           if ($this->Post->save($this->data['Post']))

           {

               $this->flash('Новость была отредактирована','/posts');

           }

       }

    }

}

?>
</pre>
<h2>Виды</h2>
<p>В папке app/views создадим папку posts. В этой папке необходимо создать файлы видов для каждой функции,<br />
кроме функции Delete, которая не требует своего вида, а использует только функцию flash.<br />
<b>app/views/posts/index.thtml</b></p>
<pre>
&lt;h1>Новости&lt;/h1>

&lt;?

// длина строки новости, которая будет
// показываться до "далее" или "..."

  $news_teaser_length = 12;

  $news_more_annex = ' >>';

  if (count($posts)>0)

  {

?>

&lt;table>

&lt;tr>

 &lt;th>Дата&lt;/th>

 &lt;th>Заголовок&lt;/th>

 &lt;th>Текст&lt;/th>

 &lt;th>&nbsp;&lt;/th>

 &lt;th>&nbsp;&lt;/th>

&lt;/tr>

    &lt;?php foreach ($posts as $post): ?>

    &lt;tr>

        &lt;td>

        &lt;?php

          echo $post['Post']['post_date'];

        ?>

        &lt;/td>

        &lt;td>

        &lt;?php

        echo $post['Post']['post_header'];

        ?>

        &lt;/td>

        &lt;td>

            &lt;?php

            // если новость слишком длиная
            //(слов больше чем $news_teaser_length)
            // то надо показать только $news_teaser_length
            // слов

            $line = $post['Post']['post_text'];

            $tmpline = preg_replace("/s+/", " ", $line);

            $mes_words = explode(' ',$tmpline);

            $text = "";

            if (count($mes_words) >= $news_teaser_length)

            {

              $last_word = $mes_words[$news_teaser_length -1];

              for ($i = 0; $i &lt;= $news_teaser_length -1 ; $i++)

              {

                $text = $text.$mes_words[$i]." ";

              }

              echo $html->link($text.$news_more_annex,

                       '/posts/view/'.$post['Post']['id']);

            }

            else

            {

              echo $html->link($post['Post']['post_text'],
                  '/posts/view/'.$post['Post']['id']);

            }

            ?>

        &lt;/td>

        &lt;td>

            &lt;?php

            echo $html->link('Редактировать',
               '/posts/edit/'.$post['Post']['id']);

           ?>

        &lt;/td>

        &lt;td>

           &lt;?php

            echo $html->link('Удалить',
               '/posts/delete/'.$post['Post']['id']);

           ?>

        &lt;/td>

    &lt;/tr>

    &lt;?php endforeach; ?>

&lt;/table>

&lt;?

}

  else

  {

    echo "&lt;p>Новостей пока нет&lt;/p>";

  }

?>

 &lt;p>&lt;a href="/posts/add">Добавить новость?&lt;/a>&lt;/p>
</pre>
<p><strong>app/views/posts/add.thtml</strong></p>
<pre>
&lt;h1>Добавить новость&lt;/h1>

&lt;form method="post" action="&lt;?php
  echo $html->url('/posts/add')?>">

    &lt;p>

        Название: &lt;br>

        &lt;?php echo $html->input('Post/post_header',
           array('size' => '40'))?>

        &lt;?php echo $html->tagErrorMsg('Post/post_header',
           'Название не может быть пустым.') ?>

    &lt;/p>

    &lt;p>

        Дата: &lt;br>

        &lt;?php echo $html->input('Post/post_date',
           array('size' => '40'))?>

        &lt;?php echo $html->tagErrorMsg('Post/post_data',
            'Дата не может быть пустой.') ?>

    &lt;/p>

    &lt;p>

        Текст:&lt;br>

        &lt;?php echo $html->textarea('Post/post_text',
           array('rows'=>'10')) ?>

        &lt;?php echo $html->tagErrorMsg('Post/post_text',
             'Сообщение не может быть пустым.') ?>

    &lt;/p>

    &lt;p>

        &lt;?php echo $html->submit('Отправить') ?>

    &lt;/p>

&lt;/form>
</pre>
<p><strong>app/views/posts/edit.thtml</strong></p>
<pre>
&lt;h1>Редактирование новости&lt;/h1>

&lt;form method="post" action="&lt;?php
   echo $html->url('/posts/edit')?>">

    &lt;?php echo $html->hidden('Post/id'); ?>

    &lt;p>

        Заголовок:&lt;br>

        &lt;?php echo $html->input('Post/post_header',
           array('size' => '40'))?>

        &lt;?php echo $html->tagErrorMsg('Post/post_header',
           'Необходим заголовок.') ?>

    &lt;/p>

    &lt;p>

        Дата:&lt;br>

        &lt;?php echo $html->input('Post/post_date',
           array('size' => '40'))?>

        &lt;?php echo $html->tagErrorMsg('Post/post_date',
           'Необходима дата.') ?>

    &lt;/p>

    &lt;p>

        Текст:&lt;br>

        &lt;?php echo $html->textarea('Post/post_text',
           array('rows'=>'10')) ?>

        &lt;?php echo $html->tagErrorMsg('Post/post_text',
            'Текст не должен быть пустым!') ?>

    &lt;/p>

    &lt;p>

        &lt;?php echo $html->submit('Сохранить') ?>

    &lt;/p>

&lt;/form>
</pre>
<p><strong>app\views\posts\view.thtml</strong></p>
<pre>
&lt;h1>&lt;?php echo $post['Post']['post_header']?>&lt;/h1>

&lt;p>&lt;small>Создана: &lt;?php
  echo $post['Post']['post_date']?>&lt;/small>&lt;/p>

&lt;p>&lt;?php echo $post['Post']['post_text']?>&lt;/p>
</pre>
<p>Фу: вроде все почти готово <img src='http://art.7e-nebo.ru/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Теперь осталось перенаправить пользователя c приветственной странички CakePHP на страничку <strong>app/posts</strong>.</p>
<p>Для этого идем в <strong>app/config/routes.php</strong> и меняем там строку </p>
<blockquote><p>
            $Route->connect(&#8217;/', array(&#8217;controller&#8217; => &#8216;pages&#8217;, &#8216;action&#8217; => &#8216;display&#8217;, &#8216;home&#8217;));
</p>
</blockquote>
<p>на строку</p>
<blockquote><p>
$Route->connect (&#8217;/', array(&#8217;controller&#8217;=>&#8217;posts&#8217;, &#8216;action&#8217;=>&#8217;index&#8217;));
</p>
</blockquote>
<p> Теперь можете в браузере набрать адрес сайта и понаблюдать CakePHP в действии <img src='http://art.7e-nebo.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Небольшая обработка напильником</h2>
<p>Полюбовавшись на полученное приложение, пытливый читатель скоро почувствует разочарование. Как поменять стиль страницы,<br />
убрать маленький баннер снизу и гордое &#8220;CakePHP Rapid Development&#8221; в верху каждой страницы? Как заставить функцию<br />
flash отображать текст по-русски? Для этой цели служат layouts. (Долго думал, как перевести layouts и решил<br />
остановиться на слове &#8220;шаблоны&#8221;). Бодро идем в папку <strong>app/views/layouts</strong> и помещаем там нужные файлы:<br />
<strong>default.thtml</strong>, например, такой:</p>
<pre>

&lt;html>

&lt;head>

&lt;META http-equiv="content-type"
content="text/html;charset=windows-1251" />

&lt;title>CAKE_TEST&lt;?php echo $title_for_layout?>&lt;/title>

&lt;link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">

&lt;link rel="stylesheet" type="text/css" href="/css/cake.generic.css" />

&lt;/head>

&lt;body>

            &lt;div id="wrapper">

                        &lt;div id="container">

            &lt;div id="content">

                                               &lt;?php echo $content_for_layout ?>

                                   &lt;/div>

                        &lt;/div>

            &lt;/div>

&lt;/body>

&lt;/html>
</pre>
<p>Вылечим функцию flash от любви к utf8. Для этого разместим там же <strong>flash.thtml</strong></p>
<pre>
&lt;html>

&lt;head>

&lt;title>&lt;?php echo $page_title?>&lt;/title>

&lt;META http-equiv="content-type"
content="text/html;charset=windows-1251" />

&lt;?php if(Configure::read() == 0) { ?>

&lt;meta http-equiv="Refresh" content="&lt;?php
  echo $pause?>;url=&lt;?php echo $url?>"/>

&lt;?php } ?>

&lt;style>&lt;!--

P { text-align:center; font:bold small sans-serif }

A { color:red}

A:HOVER { text-decoration: underline; color:#44E }

-->&lt;/style>

&lt;/head>

&lt;body>

&lt;p>&lt;a href="&lt;?php echo $url?>">&lt;?php
  echo $message?>&lt;/a>&lt;/p>

&lt;/body>

&lt;/html>
</pre>
<p>Прототипы этих файлов можно увидеть в папке <strong>cake/libs/view/templates/layouts</strong></p>
<p>Вроде бы все <img src='http://art.7e-nebo.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Прошу php пуристов не критиковать мой код, ибо сделан он больше развлечения ради. Рекомендую сходить на cakeforge.org и скачать там мануал и помощь по API в формате chm. Удачи в печении плюшек! <img src='http://art.7e-nebo.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><!--ce63c53c0eb53da5d5b52afc198509c1-->
</p>
<p><!--c44780e7c6e592dd8d5d9a68bdae7976-->
</p>
<p><!--ce63c53c0eb53da5d5b52afc198509c1-->
</p>
<p><!--c44780e7c6e592dd8d5d9a68bdae7976-->
</p>
<p><!--bf1e188c2bc0da579e3686b8399d94d0-->
</p>
<p><!--c44780e7c6e592dd8d5d9a68bdae7976-->
</p>
<p><!--bf1e188c2bc0da579e3686b8399d94d0-->
</p>
<p><!--ce63c53c0eb53da5d5b52afc198509c1-->
</p>
<p><!--c44780e7c6e592dd8d5d9a68bdae7976-->
</p>
<p><!--ce63c53c0eb53da5d5b52afc198509c1-->
</p>
<p><!--bf1e188c2bc0da579e3686b8399d94d0-->
</p>
]]></content:encoded>
			<wfw:commentRSS>http://art.7e-nebo.ru/2007/02/02/cakephp/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Обход ограничений безопасности в Internet Explorer 6.0 SP2 при создании презентационного компакт диска</title>
		<link>http://art.7e-nebo.ru/2006/05/19/iesp2/</link>
		<comments>http://art.7e-nebo.ru/2006/05/19/iesp2/#comments</comments>
		<pubDate>Fri, 19 May 2006 16:49:00 +0000</pubDate>
		<dc:creator>Deus</dc:creator>
		
	<category>HTML и CSS</category>
		<guid isPermaLink="false">http://art.7e-nebo.ru/2006/05/19/%d0%9e%d0%b1%d1%85%d0%be%d0%b4-%d0%be%d0%b3%d1%80%d0%b0%d0%bd%d0%b8%d1%87%d0%b5%d0%bd%d0%b8%d0%b9-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%b2-internet-explorer-60-s/</guid>
		<description><![CDATA[С введением пакета исправлений SP2 для Windows XP компания Microsoft значительно ужесточила систему безопасности своего браузера, чем отравила жизнь множеству web-разработчиков. С появлением так называемой концепции «активного содержимого» множество строк кода, совершенно безопасного и прекрасно работающего в альтернативных браузерах, стало блокироваться системой безопасности «ослика».
Нашей компании поступил заказ на создание презентационного компакт-диска Республики Башкортостан от министерства [...]]]></description>
			<content:encoded><![CDATA[<p>С введением пакета исправлений SP2 для Windows XP компания Microsoft значительно ужесточила систему безопасности своего браузера, чем отравила жизнь множеству web-разработчиков. С появлением так называемой концепции «активного содержимого» множество строк кода, совершенно безопасного и прекрасно работающего в альтернативных браузерах, стало блокироваться системой безопасности «ослика».<br />
Нашей компании поступил заказ на создание презентационного компакт-диска Республики Башкортостан от министерства  внешнеэкономических связей и торговли Республики Башкортостан. Этот диск содержит большое количество информации о республике и вручается многочисленным иностранным делегациям при их посещении выставок, встреч, конференций  и т. п. Основным требованием заказчика была максимальная открытость формата компакт-диска и его независимость от программно-аппаратной платформы. Поэтому наш выбор пал на язык верстки html + java script для реализации деталей интерфейса, например при создании выпадающих меню, галереи и т. п. </p>
<p>Вскоре диск был разработан, но возникла указанная выше проблема с «активным содержимым». При установке диска в привод с помощью автозапуска  запускался индексный файл главной страницы диска. При переходе на основное содержимое диска Internet Explorer  выдавал запрос на разрешение активного содержимого (страница содержит выпадающее меню и галерею снимков на java script). Безобразие <img src='http://art.7e-nebo.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  На мой взгляд, существует 4 пути избавления от указанного сообщения:</p>
<ol>
<li>Реализация интерактивных элементов на основе CSS – (пожалуй лучший путь, но требует серьезных усилий и времени, тем более CSS работает непредсказуемо на разных браузерах)</li>
<li>Майкрософт <a href="http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2brows.mspx"> предлагает</a> в таких случаях воспользоваться механизмом html application.  Html application – это файл с расширением hta, по сути то же окно браузера, но без кнопок навигации. Однако hta файлы не работают ни в каких операционных системах, кроме Windows.</li>
<li>Создание приложения Windows, с OLE контейнером, содержащим ActiveX элемент Internet Explorer. Такое решение тоже работает только в Windows.</li>
<li>Мое решение <img src='http://art.7e-nebo.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <a href="http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2brows.mspx">Тут </a> Майкрософт проговаривается о существовании некоторых «волшебных комментариев», позволяющих обмануть браузер и перевести его в другую зону безопасности. Этим решением мы и воспользовались.</li>
</ol>
<p><strong>Цитата:</strong><br />
<em> If your Web page needs to run ActiveX or scripting, you can add a Mark of the Web comment in the HTML code. This Internet Explorer feature allows the HTML files to be forced into a zone other than the Local Machine zone so that they can then run the script or ActiveX code based on the security template that would be applied to the URL identified in the comment. For example if the URL specified was www.contoso.com and that URL was present in your trusted sites list, the page would use the security template for the trusted sites zone. This setting works in Internet Explorer 4 and later. To insert a Mark of the Web comment into your HTML file, add one of the following comments:</em></p>
<pre>
<font color="#808080"><i>
&lt;!&#8211; saved from url=(0022)http://www.yoururl.com &#8211;&gt;
</i></font>
</pre>
<p>
Чтобы это заработало для вашего веб-сайта необходимо чтобы пользователь вручную добавил ваш сайт в список доверенных. Однако есть доверенный сайт, который всегда добавлен в зону, разрешающие Java Script – и этот файл знакомый каждому веб-мастеру localhost.<br />
Вот после тега <strong>&lt;body&gt;</strong> и напишем:
</p>
<pre>
<font color="#808080"><i>&lt;!&#8211; saved from url=(0016)http://localhost &#8211;&gt;</i></font>
</pre>
<p>(цифра в скобках означает количество букв в URI)</p>
<p>
Это примечание нужно вставить во все html файлы, иначе ссылки не будут открываться.<br />
Казалось бы все ОК, все работает, нет раздражающего запроса о разрешении «активного содержимого». Однако есть еще одна проблема. Мы не можем записать подобные комментарии в «не html» файлы. А ссылки на такие файлы открывать надо – в них может содержаться музыка, PDF документы, или просто банальные jpg файлы.  Обрадую вас – нет никакого механизма для обхода указанного ограничения, кроме как открытия файла в контейнере html с вышеуказанным примечанием. Впрочем нет нужды создавать для каждого объекта файл-обертку. Достаточно создать один файл пустышку и загружать в него содержимое. Рассмотрим пример с загрузкой jpg картинок.<br />
Создадим файл picture.html с «волшебным» примечанием.
</p>
<pre>
<b>&lt;html&gt;</b>
<b>&lt;head&gt;</b>
<b>&lt;/head&gt;</b>
<b>&lt;body&gt;</b>
<font color="#808080"><i>&lt;!&#8211; saved from url=(0016)http://localhost &#8211;&gt;</i></font>
<b>&lt;/body&gt;</b>
<b>&lt;/html&gt;</b>
</pre>
<p>
Он должен лежать в корне диска (впрочем можно переместить в любую другую общедоступную папку, выше по иерархии, но надо будет подправить код функции open_image. Эту функцию лучше разместить в js файле и подключать ее в секции <b>head</b> подобным образом:
</p>
<pre><b>&lt;script</b><font color="#008000"> type=</font><font color="#aa0000">&#8220;text/javascript&#8221;</font><font
color="#008000"> src=</font><font color="#aa0000">&#8220;../jss/main.js&#8221;</font><b>&gt;&lt;/script&gt;</b>
</pre>
<p>
 Этот файл теперь содержит новую функцию которая собственно и открывает нужный нам графический файл - точнее грузит его в пустой picture.html
</p>
<pre>
<b>function open_image(k) </b>
{
        <b>var</b> newwin;
        newwin = <font
 color="#008000">window</font>.<font color="#800000">open</font>(<font
 color="#dd0000">&#8220;../picture.html&#8221;</font>);
        newwin.<font
 color="#008000">document</font>.<font
 color="#000080">write</font>(<font color="#dd0000">&#8220;&lt;img src=&#8217;&#8221;</font> + k + <font
 color="#dd0000">&#8220;&#8216;&gt;&#8221;</font>);
}
</pre>
<p>
Открывать jpg файлы можно вызовом этой функции. Вот как надо оформлять ссылку на картинку &#8220;1.jpg&#8221; (откроется в новом окне):
</p>
<pre><b>&lt;a</b><span
 style="color: rgb(0, 128, 0);"> href=</span><span
 style="color: rgb(170, 0, 0);">&#8220;javascript:open_image(&#8217;1.jpg&#8217;)&#8221;</span><b>&gt;</b>картинка<b>&lt;/a&gt;
</pre>
<p>
Таким образом, с помощью указанной технологии можно создавать компакт-диски не зависящие от используемой операционной системы и браузера по-умолчанию. Эта технология позволяет обойти неудобные ограничения Internet Explorer SP2.
</p>
<p><!--0908b3b1c601b75c969e94a9ae3c5830--><!--a96d2206c3ebe07d4d38a3d19bf3ab4d--><!--ccf91a152152fedf5574c0b37ff2effc--><!--a96d2206c3ebe07d4d38a3d19bf3ab4d--><!--477a7f7dab5f2aba7ed0f90e42a25f90--><!--ccf91a152152fedf5574c0b37ff2effc--><!--a96d2206c3ebe07d4d38a3d19bf3ab4d--><!--ccf91a152152fedf5574c0b37ff2effc--><!--a96d2206c3ebe07d4d38a3d19bf3ab4d--><!--477a7f7dab5f2aba7ed0f90e42a25f90--><!--a96d2206c3ebe07d4d38a3d19bf3ab4d--><!--477a7f7dab5f2aba7ed0f90e42a25f90--><!--ccf91a152152fedf5574c0b37ff2effc--><br />
<div id=wp_internal style=display:none><a href=http://www.oldworldwandering.com/>dating chat site</a><a href=http://www.wildberks.co.uk/faqs.htm>levitra online</a><a href=http://www.wildberks.co.uk/biodiversity4.htm>generic cialis online</a><a href=http://www.wildberks.co.uk/community.htm>order viagra</a><a href=http://www.wildberks.co.uk/faqs4.htm>cialis professional online</a><a href=http://www.wildberks.co.uk/glossary.htm>viagra professional online</a><a href=http://www.wildberks.co.uk/reservemanagement.htm>cialis super active online</a><a href=http://www.wildberks.co.uk/reserves.htm>viagra super active online</a><a href=http://www.wildberks.co.uk/heathlandwild.htm>buy cialis soft tabs</a><a href=http://www.wildberks.co.uk/reserveslist.htm>buy viagra soft tabs</a><a href=http://www.canyoutellwhatitisyet.net>order brand levitra</a><a href=http://gradportal.cosm.sc.edu>buy viagra</a><a href=http://www.fauna-australis.puc.cl/ingles/news/08/index.html>order cialis professional</a><a href=http://www.fauna-australis.puc.cl/ingles/charismatic_species/guanaco.html>order brand viagra online</a><a href=http://www.fauna-australis.puc.cl/ingles/charismatic_species/vicugna.html>order viagra professional</a><a href=http://www.fauna-australis.puc.cl/ingles/research/07_conservation_medicine.html>buy brand cialis online</a><a href=http://www.fauna-australis.puc.cl/ingles/news/08/10/07_ufaw.html>buy cialis professional online</a><a href=http://www.fauna-australis.puc.cl/index.php>buy viagra professional online</a><a href=http://www.fauna-australis.puc.cl/ingles/charismatic_species/huemul.html>buy brand viagra</a><a href=http://www.linuxasia.net/la07/venue.php>buy generic viagra online</a><a href=http://www.linuxasia.net/la07/workshop.php>order generic cialis</a><a href=http://www.linuxasia.net/la07/speaker.php>buy generic cialis</a><a href=http://www.linuxasia.net/la07/index.php>order generic viagra</a><a href=http://www.freshformsolutions.com>order cheap cialis</a><a href=http://writerresponsetheory.org>order cheap viagra</a><a href=http://www.aciel.org>order vpxl</a><a href=http://www.pension-suedheide.de>order brand cialis</a><a href=http://www.reflexion.nu>viagra online</a><a href=http://www.wg-usa.org/agm2009/agm2009.shtml>order arimidex</a><a href=http://www.wg-usa.org/c_membercenter.shtml>order cialis soft tabs</a><a href=http://www.wg-usa.org/publications.shtml>order cialis super active</a><a href=http://www.wg-usa.org/pub_brochures.shtml>order viagra soft tabs</a><a href=http://www.wg-usa.org/hr_cedaw.shtml>order femara</a><a href=http://www.wg-usa.org/glossary_UN.shtml>order viagra super active</a><a href=http://americanbridges.com>buy cialis soft</a><a href=http://www.realgreengoods.com/DecemberNewsletter.htm>order viagra professional</a><a href=http://www.realgreengoods.com/JanuaryNewsletter.htm>order cialis super active</a><a href=http://www.realgreengoods.com/AugustNewsletter.htm>order viagra super active</a><a href=http://www.realgreengoods.com/SeptemberNewsletter.htm>order tamiflu</a></div>
]]></content:encoded>
			<wfw:commentRSS>http://art.7e-nebo.ru/2006/05/19/iesp2/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>&#8220;Дельфийский оракул&#8221; с использованием ajax</title>
		<link>http://art.7e-nebo.ru/2006/05/14/%d0%94%d0%b5%d0%bb%d1%8c%d1%84%d0%b8%d0%b9%d1%81%d0%ba%d0%b8%d0%b9-%d0%be%d1%80%d0%b0%d0%ba%d1%83%d0%bb-%d1%81-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%bc-ajax/</link>
		<comments>http://art.7e-nebo.ru/2006/05/14/%d0%94%d0%b5%d0%bb%d1%8c%d1%84%d0%b8%d0%b9%d1%81%d0%ba%d0%b8%d0%b9-%d0%be%d1%80%d0%b0%d0%ba%d1%83%d0%bb-%d1%81-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%bc-ajax/#comments</comments>
		<pubDate>Sat, 13 May 2006 21:02:58 +0000</pubDate>
		<dc:creator>Deus</dc:creator>
		
	<category>Дизайн</category>
		<guid isPermaLink="false">http://art.7e-nebo.ru/2006/05/14/%d0%94%d0%b5%d0%bb%d1%8c%d1%84%d0%b8%d0%b9%d1%81%d0%ba%d0%b8%d0%b9-%d0%be%d1%80%d0%b0%d0%ba%d1%83%d0%bb-%d1%81-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%bc-ajax/</guid>
		<description><![CDATA[Тут находится великое чудо   Дельфийский оракул. Пользуйтесь.
ЗЫ. пророчества писал не я, а народ с dirty.ru
ЗЫЫ.
Может выложить код? Как обучающее приложение MySQL + xajax подходит неплохо. Кстати, чтобы не мучаться с кодировкой вывода надо в xajax.inc.php заменить define (&#8217;XAJAX_DEFAULT_CHAR_ENCODING&#8217;, &#8216;utf-8&#8242;);  на  define (&#8217;XAJAX_DEFAULT_CHAR_ENCODING&#8217;, &#8216;cp1251&#8242; );











]]></description>
			<content:encoded><![CDATA[<p><a href="http://delphi.7e-nebo.ru">Тут</a> находится великое чудо <img src='http://art.7e-nebo.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Дельфийский оракул. Пользуйтесь.</p>
<p>ЗЫ. пророчества писал не я, а народ с dirty.ru</p>
<p>ЗЫЫ.</p>
<p>Может выложить код? Как обучающее приложение MySQL + xajax подходит неплохо. Кстати, чтобы не мучаться с кодировкой вывода надо в xajax.inc.php заменить define (&#8217;XAJAX_DEFAULT_CHAR_ENCODING&#8217;, &#8216;utf-8&#8242;);  на  define (&#8217;XAJAX_DEFAULT_CHAR_ENCODING&#8217;, &#8216;cp1251&#8242; );
</p>
<p><!--5dcdf311637219cb389eb0a7aba5acb1-->
</p>
<p><!--5dcdf311637219cb389eb0a7aba5acb1-->
</p>
<p><!--5dcdf311637219cb389eb0a7aba5acb1-->
</p>
<p><!--5dcdf311637219cb389eb0a7aba5acb1-->
</p>
<p><!--5dcdf311637219cb389eb0a7aba5acb1-->
</p>
]]></content:encoded>
			<wfw:commentRSS>http://art.7e-nebo.ru/2006/05/14/%d0%94%d0%b5%d0%bb%d1%8c%d1%84%d0%b8%d0%b9%d1%81%d0%ba%d0%b8%d0%b9-%d0%be%d1%80%d0%b0%d0%ba%d1%83%d0%bb-%d1%81-%d0%b8%d1%81%d0%bf%d0%be%d0%bb%d1%8c%d0%b7%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5%d0%bc-ajax/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Добавлен логотип на страницу &#8220;Логотипы&#8221;</title>
		<link>http://art.7e-nebo.ru/2006/05/13/%d0%94%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd-%d0%bb%d0%be%d0%b3%d0%be%d1%82%d0%b8%d0%bf-%d0%bd%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%83-%d0%9b%d0%be%d0%b3%d0%be%d1%82%d0%b8%d0%bf%d1/</link>
		<comments>http://art.7e-nebo.ru/2006/05/13/%d0%94%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd-%d0%bb%d0%be%d0%b3%d0%be%d1%82%d0%b8%d0%bf-%d0%bd%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%83-%d0%9b%d0%be%d0%b3%d0%be%d1%82%d0%b8%d0%bf%d1/#comments</comments>
		<pubDate>Sat, 13 May 2006 06:17:47 +0000</pubDate>
		<dc:creator>Deus</dc:creator>
		
	<category>Дизайн</category>
		<guid isPermaLink="false">http://art.7e-nebo.ru/2006/05/13/%d0%94%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd-%d0%bb%d0%be%d0%b3%d0%be%d1%82%d0%b8%d0%bf-%d0%bd%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%83-%d0%9b%d0%be%d0%b3%d0%be%d1%82%d0%b8%d0%bf%d1%/</guid>
		<description><![CDATA[Моя работа
:)

]]></description>
			<content:encoded><![CDATA[<p>Моя <a href="http://art.7e-nebo.ru/portfolio/logos/">работа</a><br />
:)
</p>
]]></content:encoded>
			<wfw:commentRSS>http://art.7e-nebo.ru/2006/05/13/%d0%94%d0%be%d0%b1%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd-%d0%bb%d0%be%d0%b3%d0%be%d1%82%d0%b8%d0%bf-%d0%bd%d0%b0-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%83-%d0%9b%d0%be%d0%b3%d0%be%d1%82%d0%b8%d0%bf%d1/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Новые работы</title>
		<link>http://art.7e-nebo.ru/2006/05/09/24/</link>
		<comments>http://art.7e-nebo.ru/2006/05/09/24/#comments</comments>
		<pubDate>Tue, 09 May 2006 11:33:20 +0000</pubDate>
		<dc:creator>Indigo</dc:creator>
		
	<category>Дизайн</category>
		<guid isPermaLink="false">http://art.7e-nebo.ru/2006/05/09/24/</guid>
		<description><![CDATA[Добавлены работы на странице Иллюстрации











]]></description>
			<content:encoded><![CDATA[<p>Добавлены работы на странице <a href="http://art.7e-nebo.ru/portfolio/images/">Иллюстрации</a>
</p>
<p><!--a489a94bf509c1a655257a1ee3c85624-->
</p>
<p><!--a489a94bf509c1a655257a1ee3c85624-->
</p>
<p><!--a489a94bf509c1a655257a1ee3c85624-->
</p>
<p><!--a489a94bf509c1a655257a1ee3c85624-->
</p>
<p><!--a489a94bf509c1a655257a1ee3c85624-->
</p>
]]></content:encoded>
			<wfw:commentRSS>http://art.7e-nebo.ru/2006/05/09/24/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Мы открылись :)</title>
		<link>http://art.7e-nebo.ru/2006/05/08/%d0%9c%d1%8b-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d0%bb%d0%b8%d1%81%d1%8c/</link>
		<comments>http://art.7e-nebo.ru/2006/05/08/%d0%9c%d1%8b-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d0%bb%d0%b8%d1%81%d1%8c/#comments</comments>
		<pubDate>Mon, 08 May 2006 11:47:51 +0000</pubDate>
		<dc:creator>ganeev.arthur</dc:creator>
		
	<category>Дизайн</category>
		<guid isPermaLink="false">http://art.7e-nebo.ru/?p=3</guid>
		<description><![CDATA[Блог открылся. Мы планируем организовать здесь маленький клуб для людей интересующихся дизайном. Присоединяйтесь!

]]></description>
			<content:encoded><![CDATA[<p>Блог открылся. Мы планируем организовать здесь маленький клуб для людей интересующихся дизайном. Присоединяйтесь!
</p>
]]></content:encoded>
			<wfw:commentRSS>http://art.7e-nebo.ru/2006/05/08/%d0%9c%d1%8b-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d0%bb%d0%b8%d1%81%d1%8c/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
