<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0AGSHozeyp7ImA9WhRbGEU.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069</id><updated>2012-02-10T18:02:09.483+02:00</updated><category term="Линуксятина" /><category term="Zend Framework" /><category term="PHP" /><category term="PayPal" /><category term="jQuery" /><category term="iPad" /><category term="мобильные телефоны" /><category term="Fun" /><category term="реклама" /><category term="HTML" /><title>Блогоблог</title><subtitle type="html">Личный блог о насущных проблемах</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ikuznetsov.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/EUdev" /><feedburner:info uri="blogspot/eudev" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0AGSHoyfCp7ImA9WhRbGEU.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-1389543485504452611</id><published>2012-02-10T18:01:00.000+02:00</published><updated>2012-02-10T18:02:09.494+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T18:02:09.494+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Fun" /><title>Nudebording</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aQnDX2A_hXhj-lM9BQsRvCJ8UO4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aQnDX2A_hXhj-lM9BQsRvCJ8UO4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aQnDX2A_hXhj-lM9BQsRvCJ8UO4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aQnDX2A_hXhj-lM9BQsRvCJ8UO4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Это жжесть! Nudebording! Строго 18+!&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="291" mozallowfullscreen="" src="http://player.vimeo.com/video/34640258?title=0&amp;amp;byline=0&amp;amp;portrait=0" webkitallowfullscreen="" width="517"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;a href="http://vimeo.com/34640258"&gt;Snowboarding (nude)&lt;/a&gt; from &lt;a href="http://vimeo.com/user9895942"&gt;jonte sunda&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-1389543485504452611?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/wgv_t2r8RQo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/1389543485504452611/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=1389543485504452611&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/1389543485504452611?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/1389543485504452611?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/wgv_t2r8RQo/nudebording-18-snowboarding-nude-from.html" title="Nudebording" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2012/02/nudebording-18-snowboarding-nude-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYCQH44eSp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-5431051727362948068</id><published>2012-02-10T12:00:00.001+02:00</published><updated>2012-02-10T12:02:41.031+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:02:41.031+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="HTML" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>Как облегчить жизнь при верстке большого количества однотипных страниц</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4dPqf4eBjz_dlAMZT6uM2pI0Ofk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4dPqf4eBjz_dlAMZT6uM2pI0Ofk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4dPqf4eBjz_dlAMZT6uM2pI0Ofk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4dPqf4eBjz_dlAMZT6uM2pI0Ofk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Возьмем типичное рабочее окружение верстальщика: зоопарк браузеров, IDE или текстовый редактор и Photoshop. Обычному верстальщику обычно больше и не надо.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
На каком-то этапе становится понятно, что надо что-то добавить, чтобы было удобнее верстать большие проекты с большим количеством страниц. Основная проблема в том, что когда верстаешь большое количество страниц, то приходится поддерживать одинаковый код в разных местах страницы.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Классически проблема решается путем так называемых "include-ов". Но для &amp;nbsp;этого нужно учить PHP (или другой серверный язык программирования), что безусловно неплохо, но отнимает массу времени.&amp;nbsp;Также есть такая штука как SSI (server side includes), но вариант с jQuery мне нравится больше по 2м причинам:&lt;/div&gt;
&lt;div&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Перед сдачей работы заказчику (или перед передачей программисту в работу) меньше телодвижений по очистке кода от include-ов&lt;/li&gt;
&lt;li&gt;Результат можно посмотреть на любом веб-сервере (без поддержки экзотического SSI)&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;Идея&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Размещаем повторяющиеся куски кода в отдельных&amp;nbsp;html-файлах. Пишем малюсенький jquery-скрипт, который будет через AJAX вставлять эти файлы в нужные места верстаемой страницы. Теперь, если нам надо, к примеру, в шапке документа что-то поправить, то мы правим в 1 файле и изменения применяются ко всем страницам&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;Технические трудности&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
Основной трудностью является тот факт, что подобные AJAX-запросы работать будут только при использовании веб-сервера. Если просто открыть файл из браузера — работать не будет. Браузеры (что вполне разумно) запрещают такие фокусы ибо никому неохота чтобы можно было из браузера получить доступ к локальным документам пользователя. В Chrome и IE можно отключить этот запрет, но мы такой вариант по причине его неуниверсальности рассматривать не будем.&lt;br /&gt;
&lt;br /&gt;
Веб-сервер подойдет любой. Простой&amp;nbsp;Apache, Nginx, IIS, Денвер, XAMPP и т.д. Поставить 1 раз и забыть&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;Пример кода&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;pre class="brush: html"&gt;



&amp;lt;!DOCTYPE html&amp;gt;

&amp;lt;html&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;lt;head&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;title&amp;gt;Title of the document&amp;lt;/title&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;script type="text/javascript" language="javascript"&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $(document).ready(function() {

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $('#sidebar').load('sidebar.html');

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $('#header').load('header.html');

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/script&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;lt;/head&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;lt;body&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div id="wrapper"&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div id="header"&amp;gt;&amp;lt;/div&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div id="content"&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;div id="sidebar"&amp;gt;&amp;lt;/div&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Content

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;

&amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
Не забудте создать sidebar.html и header.html с любым контентом внутри&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-5431051727362948068?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/WuF_TcsTmk4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/5431051727362948068/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=5431051727362948068&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/5431051727362948068?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/5431051727362948068?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/WuF_TcsTmk4/blog-post_10.html" title="Как облегчить жизнь при верстке большого количества однотипных страниц" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2012/02/blog-post_10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08MQHwzfyp7ImA9WhRbF0Q.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-5590763417086403399</id><published>2012-02-09T10:22:00.003+02:00</published><updated>2012-02-09T15:58:01.287+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-09T15:58:01.287+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PayPal" /><title>Про PayPal. Вывод денег</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t-1Rx54myy4UNmIuIIIo2NjtlFU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t-1Rx54myy4UNmIuIIIo2NjtlFU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t-1Rx54myy4UNmIuIIIo2NjtlFU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t-1Rx54myy4UNmIuIIIo2NjtlFU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
Сам по себе PayPal очень тесно связан с банковской системой. Открыть PayPal без карты невозможно (точнее можно, но без карты аккаунт&amp;nbsp;совершенно бесполезен). Для разных стран у PayPal разная политика — в каких-то странах можно только платить, в других можно и получать и платить, в третих вообще нельзя ей пользоваться. Список поддерживаемых стран можно найти &lt;a href="https://www.paypal.com/cgi-bin/webscr?cmd=_display-country-functionality-outside"&gt;тут&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-8u9IqzZNmbE/TzN80z0kQ7I/AAAAAAAACM8/s2M7PfSGQIw/s1600/paypal-russia" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://1.bp.blogspot.com/-8u9IqzZNmbE/TzN80z0kQ7I/AAAAAAAACM8/s2M7PfSGQIw/s320/paypal-russia" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-NgkzhFRNtSE/TzN81R8bE1I/AAAAAAAACNA/iEM1G0mLmnU/s1600/paypal-ukraine" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="127" src="http://2.bp.blogspot.com/-NgkzhFRNtSE/TzN81R8bE1I/AAAAAAAACNA/iEM1G0mLmnU/s320/paypal-ukraine" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Также, палка &lt;a href="https://personal.paypal.com/us/cgi-bin/?cmd=_render-content&amp;amp;content_ID=marketing_us/debit_card"&gt;выпускает&lt;/a&gt; собственные дебетовые карты, которые позволяют снимать деньги прямо с палкового счета (без процедуры выведения). Карту присылают по почте.&lt;br /&gt;
&lt;br /&gt;
В России платить и получать, а в Украине только платить PayPal-ом стало возможно совсем недавно. Если вы находитесь в стране, в которой нет возможности вывода денег, то возможны такие варианты:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Можно открыть счет в банке страны, в которой работает палка и привязать ее к этому счету. PayPal легко даст вам это сделать, но аккаунт будет ограничен до тех пор, пока вы не покажете ему документы, подтверждающие что вы резидент этой страны. Лимит что-то порядка 2500€ в год. Лучше чем ничего. Пример: летом был в Болгарии и в UniCredit Bulbank-е мне выпустили мгновенную карту в течение недели.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Если лимит нужно поднять, то можно в разных странах открыть несколько таких счетов и диверсифицировать средства.&lt;/li&gt;
&lt;li&gt;Также, можно воспользоваться услугами &lt;a href="http://www.google.com.ua/search?aq=f&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=paypal+%D0%BE%D0%B1%D0%BC%D0%B5%D0%BD%D0%BD%D0%B8%D0%BA"&gt;обменников&lt;/a&gt; и &lt;a href="http://mmgp.ru/forumdisplay.php?f=87"&gt;частных менял&lt;/a&gt;. Но проценты они берут дикие (~17%)&lt;/li&gt;
&lt;li&gt;На крайний случай зарегистрировать счет можно на знакомого или родственника в другой стране. Со всеми вытекающими &amp;nbsp;проблемами :)&lt;/li&gt;
&lt;li&gt;Как вариант можно рассмотреть сервис &lt;a href="http://www.2checkout.com/"&gt;2checkout&lt;/a&gt;. С его помощью можно принимать платежи от клиентов у себя на сайте не имея PayPal вообще&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
В комментах можно оставить вопрос по PayPal и я постараюсь на него ответить&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-5590763417086403399?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/afxTaUpb2h0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/5590763417086403399/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=5590763417086403399&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/5590763417086403399?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/5590763417086403399?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/afxTaUpb2h0/paypal.html" title="Про PayPal. Вывод денег" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-8u9IqzZNmbE/TzN80z0kQ7I/AAAAAAAACM8/s2M7PfSGQIw/s72-c/paypal-russia" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2012/02/paypal.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYMRHs-fyp7ImA9WhRbFE4.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-4258485444868798053</id><published>2012-02-05T10:21:00.001+02:00</published><updated>2012-02-05T10:23:05.557+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T10:23:05.557+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Zend Framework" /><title>Как удобно хранить настройки</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Fd8kprN6GeJwr9Cw67wuzPBmj0I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fd8kprN6GeJwr9Cw67wuzPBmj0I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Fd8kprN6GeJwr9Cw67wuzPBmj0I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fd8kprN6GeJwr9Cw67wuzPBmj0I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
При разработке веб-сайта часто бывает такая ситуация: есть как минимум 2 версии (девелоперская и продакшн), которые отличаются настройками доступа к БД и прочими параметрами конфигурации.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Перенося файлы на продакшн нужно либо менять конфиги либо извращаться с локом файла в репозитории либо еще как. Каждый раз приходится выполнять одни и те же действия, что надоедает и не исключает человеческий фактор.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Идею решения этой проблемы я почерпнул из документации по Zend Framework, но это никак не мешает подобным образом решить ее для любого проекта.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Идея&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
в конфиг-файле создаем несколько групп записей, для каждого случая отдельно. Каждой группе записей даем имя. Пример:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
config.ini&lt;br /&gt;
&lt;script class="brush: html" type="syntaxhighlighter"&gt;
&lt;![CDATA[
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
resources.db.adapter = "PDO_PGSQL"
resources.db.params.dbname = "buhzok"
resources.db.params.username = "postgres"
resources.db.params.password = "1234qwer"
resources.db.params.host = "buhzok.artmyweb.com"
resources.locale.default = "en_US"
smtp.auth = "login"
smtp.host = "mail.boosthost.net"
smtp.port = 25
smtp.username = "artmyweb.com"
smtp.password = "amwwpass"
smtp.ssl = "tls"
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
]]&gt;
&lt;/script&gt;
&lt;/div&gt;
Далее нужно сделать механизм, который определял бы автоматически где проект запустился (на девелоперском сервере или на продакшене) и включал бы нужную группу настроек. Проще всего на девелоперском сервере создать переменную окружения с именем группы, а в коде сделать простую проверку.&lt;br /&gt;
&lt;br /&gt;
Конфиг апача

&lt;script class="brush: html" type="syntaxhighlighter"&gt;
&lt;![CDATA[
export APPLICATION_ENV development
]]&gt;
&lt;/script&gt;


&lt;br /&gt;
index.php&lt;br /&gt;
&lt;script class="brush: php" type="syntaxhighlighter"&gt;
&lt;![CDATA[

&lt;?php

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));


]]&gt;
&lt;/script&gt;

Таким образом, если есть переменная окружения APPLICATION_ENV, то мы на ее основе врубаем нужные настройки, если переменной нет. то мы считаем что это продакшн&lt;br /&gt;
&lt;br /&gt;
Благодаря такому подходу код можно перемещать с девелопмента на продакшн и обратно практически не задумываясь. Ну и, конечно, никто нас не ограничивает 2мя серверами -- можно, например, еще testing добавить&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-4258485444868798053?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/RHZD_A_FAQ4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/4258485444868798053/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=4258485444868798053&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/4258485444868798053?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/4258485444868798053?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/RHZD_A_FAQ4/blog-post.html" title="Как удобно хранить настройки" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2012/02/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUEQXo5fCp7ImA9WhRbFE4.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-185558181219392235</id><published>2012-02-03T10:35:00.002+02:00</published><updated>2012-02-05T10:23:20.424+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-05T10:23:20.424+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Zend Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>Как из Zend Framework убрать лишние файлы</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xYQe-LoDth1T_KNFCfh_rAezmAA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xYQe-LoDth1T_KNFCfh_rAezmAA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xYQe-LoDth1T_KNFCfh_rAezmAA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xYQe-LoDth1T_KNFCfh_rAezmAA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Zend Framework включает в себя большое количество библиотек для работы со всем на свете. Начиная с поддержки Google API и заканчивая экзотикой типа Zend_Ldap. Я уже не говорю о Zend_Locale, Zend_Currency, Zend_Date и т.п. В этом есть и плюсы и минусы.&lt;br /&gt;
&lt;br /&gt;
Бывают, к примеру, ситуации, когда из всего этого многообразия используется совсем небольшое количество классов. Небольшой блог без поддержки разных локалей и тому подобных плюшек весит, предположим, 1 мегабайт. А фрэймворк при этом затягивает на все 40.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы есть сервис специальный. Существует уже давненько, но сегодня я его ели нагуглил. Потому, собственно и пишу.&lt;br /&gt;
&lt;br /&gt;
Ссылка:&amp;nbsp;&lt;a href="http://epic.codeutopia.net/pack/"&gt;http://epic.codeutopia.net/pack/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Сервис позволяет по имени любого класса получить архив с его зависимостями.&lt;br /&gt;
&lt;br /&gt;
Если, к примеру, выбрать Zend_Controller_Action, то получим такой список зависимостей:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Zend/Controller/Action.php&lt;br /&gt;
Zend/Controller/Action/HelperBroker.php&lt;br /&gt;
Zend/Controller/Action/HelperBroker/PriorityStack.php&lt;br /&gt;
Zend/Controller/Action/Exception.php&lt;br /&gt;
Zend/Controller/Exception.php&lt;br /&gt;
Zend/Exception.php&lt;br /&gt;
Zend/Loader.php&lt;br /&gt;
Zend/Loader/Autoloader.php&lt;br /&gt;
Zend/Loader/PluginLoader.php&lt;br /&gt;
Zend/Loader/PluginLoader/Interface.php&lt;br /&gt;
Zend/Loader/PluginLoader/Exception.php&lt;br /&gt;
Zend/Loader/Exception.php&lt;br /&gt;
Zend/Controller/Action/Interface.php&lt;br /&gt;
Zend/Controller/Front.php&lt;br /&gt;
Zend/Controller/Plugin/Broker.php&lt;br /&gt;
Zend/Controller/Plugin/Abstract.php&lt;br /&gt;
Zend/Controller/Router/Rewrite.php&lt;br /&gt;
Zend/Controller/Router/Abstract.php&lt;br /&gt;
Zend/Controller/Router/Interface.php&lt;br /&gt;
Zend/Controller/Router/Route.php&lt;br /&gt;
Zend/Controller/Router/Route/Abstract.php&lt;br /&gt;
Zend/Controller/Router/Route/Interface.php&lt;br /&gt;
Zend/Config.php&lt;br /&gt;
Zend/Config/Exception.php&lt;br /&gt;
Zend/Controller/Router/Route/Chain.php&lt;br /&gt;
Zend/Controller/Router/Exception.php&lt;br /&gt;
Zend/Controller/Router/Route/Module.php&lt;br /&gt;
Zend/Controller/Dispatcher/Standard.php&lt;br /&gt;
Zend/Controller/Dispatcher/Abstract.php&lt;br /&gt;
Zend/Controller/Dispatcher/Interface.php&lt;br /&gt;
Zend/Controller/Request/Abstract.php&lt;br /&gt;
Zend/Controller/Response/Abstract.php&lt;br /&gt;
Zend/Controller/Response/Exception.php&lt;br /&gt;
Zend/Controller/Dispatcher/Exception.php&lt;br /&gt;
Zend/Controller/Plugin/ErrorHandler.php&lt;br /&gt;
Zend/Controller/Action/Helper/ViewRenderer.php&lt;br /&gt;
Zend/Controller/Action/Helper/Abstract.php&lt;br /&gt;
Zend/View.php&lt;br /&gt;
Zend/View/Abstract.php&lt;br /&gt;
Zend/View/Interface.php&lt;br /&gt;
Zend/View/Exception.php&lt;br /&gt;
Zend/View/Stream.php&lt;br /&gt;
Zend/Filter/Inflector.php&lt;br /&gt;
Zend/Filter.php&lt;br /&gt;
Zend/Filter/Interface.php&lt;br /&gt;
Zend/Filter/Exception.php&lt;br /&gt;
Zend/Filter/PregReplace.php&lt;br /&gt;
Zend/Filter/Word/UnderscoreToSeparator.php&lt;br /&gt;
Zend/Filter/Word/SeparatorToSeparator.php&lt;br /&gt;
Zend/Controller/Request/Http.php&lt;br /&gt;
Zend/Uri.php&lt;br /&gt;
Zend/Uri/Exception.php&lt;br /&gt;
Zend/Controller/Request/Exception.php&lt;br /&gt;
Zend/Controller/Response/Http.php&lt;/blockquote&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-185558181219392235?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/M74SVIz3gHg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/185558181219392235/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=185558181219392235&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/185558181219392235?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/185558181219392235?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/M74SVIz3gHg/zend-framework.html" title="Как из Zend Framework убрать лишние файлы" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2012/02/zend-framework.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MMQHY7fSp7ImA9WhRbEUQ.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-1398785462945967866</id><published>2012-02-02T17:11:00.001+02:00</published><updated>2012-02-02T17:11:21.805+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-02T17:11:21.805+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PHP" /><title>О PHP фрэймворках и паттернах (шаблонах) проектирования</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n-waFnj5j4A9JIvBLeCO9NiRDgA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n-waFnj5j4A9JIvBLeCO9NiRDgA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n-waFnj5j4A9JIvBLeCO9NiRDgA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n-waFnj5j4A9JIvBLeCO9NiRDgA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Классная штука -- фрэймворки (Zend Framework, CodeIgniter, CakePHP и др). Готовый набор велосипедов и все такое. Но прежде чем браться за их изучение есть смысл поговорить о еще одном уровне абстракции -- о паттернах проектирования.&lt;br /&gt;
&lt;br /&gt;
Wikipedia:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;В&amp;nbsp;&lt;/span&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: none; background-origin: initial; color: #0645ad; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; text-decoration: none;" title="Проектирование программного обеспечения"&gt;разработке программного обеспечения&lt;/a&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;b style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;шаблон проектирования&lt;/b&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;&amp;nbsp;или&amp;nbsp;&lt;/span&gt;&lt;b style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;паттерн&lt;/b&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;&amp;nbsp;(&lt;/span&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: none; background-origin: initial; color: #0645ad; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; text-decoration: none;" title="Английский язык"&gt;англ.&lt;/a&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;&amp;nbsp;&lt;/span&gt;&lt;i style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;&lt;span lang="en" xml:lang="en"&gt;design pattern&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;) — повторимая&amp;nbsp;&lt;/span&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: none; background-origin: initial; color: #0645ad; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; text-decoration: none;" title="Архитектура программного обеспечения"&gt;архитектурная конструкция&lt;/a&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;, представляющая собой решение проблемы&amp;nbsp;&lt;/span&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" style="background-attachment: initial; background-clip: initial; background-color: white; background-image: none; background-origin: initial; color: #0645ad; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto; text-decoration: none;" title="Проектирование"&gt;проектирования&lt;/a&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19px; text-align: -webkit-auto;"&gt;&amp;nbsp;в рамках некоторого часто возникающего контекста.&lt;/span&gt;&lt;/blockquote&gt;
Грубо говоря, паттерн (шаблон) проектирования -- это набор деталек для изготовления велосипеда под гордым названием &lt;b&gt;фрэймворк&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Понимание паттернов проектирования &lt;b&gt;очень сильно облегчит&lt;/b&gt; процесс изучения любого фреймворка поскольку они там везде!&lt;br /&gt;
&lt;br /&gt;
Ниже даю названия паттернов, которые на мой взгляд обязательны для понимания:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;&lt;a href="http://habrahabr.ru/blogs/php/31270/"&gt;MVC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9E%D0%B4%D0%B8%D0%BD%D0%BE%D1%87%D0%BA%D0%B0_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D0.BD.D0.B0_PHP_5"&gt;Singleton&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://i-novice.net/shablon-proektirovaniya-iterator/"&gt;Iterator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B1%D0%BB%D1%8E%D0%B4%D0%B0%D1%82%D0%B5%D0%BB%D1%8C_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)"&gt;Observer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Другие паттерны можно найти &lt;a href="http://dron.by/post/patterny-shablony-proektirovanie-v-php-vvedenie/"&gt;тут&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-1398785462945967866?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/S3UCdPqXFpY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/1398785462945967866/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=1398785462945967866&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/1398785462945967866?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/1398785462945967866?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/S3UCdPqXFpY/php.html" title="О PHP фрэймворках и паттернах (шаблонах) проектирования" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2012/02/php.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUDRHY8fip7ImA9WhRbEUQ.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-237124196798206094</id><published>2012-02-02T15:09:00.000+02:00</published><updated>2012-02-02T16:17:55.876+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-02T16:17:55.876+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPad" /><title>Переходник USB для iPad/iPad2. Apple iPad USB adapter.</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kppxnRTVTpjHR01bDlkYl0oteO8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kppxnRTVTpjHR01bDlkYl0oteO8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kppxnRTVTpjHR01bDlkYl0oteO8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kppxnRTVTpjHR01bDlkYl0oteO8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Есть такая штука:&amp;nbsp;USB-переходник для iPad. Чтобы можно было к iPad подрубить флэшку, например.&lt;br /&gt;
&lt;br /&gt;
Купить можно на eBay за $3 вместе с доставкой. &lt;a href="http://www.ebay.com/itm/USB-Female-Camera-Connection-Reader-Adapter-Kit-Apple-iPad-iPad-2-/350498939758?pt=US_Tablet_Accessories&amp;amp;hash=item519b5d636e"&gt;Ссылка&lt;/a&gt;&lt;br /&gt;
Работает с iPad и iPad2.&lt;br /&gt;
&lt;br /&gt;
Как это выглядит:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/9qDrDC-HD-M/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9qDrDC-HD-M&amp;fs=1&amp;source=uds" /&gt;

&lt;param name="bgcolor" value="#FFFFFF" /&gt;

&lt;embed width="320" height="266"  src="http://www.youtube.com/v/9qDrDC-HD-M&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-237124196798206094?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/GFAav3mmpFA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/237124196798206094/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=237124196798206094&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/237124196798206094?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/237124196798206094?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/GFAav3mmpFA/ipad-usb-adapter-usb-ipad.html" title="Переходник USB для iPad/iPad2. Apple iPad USB adapter." /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2012/02/ipad-usb-adapter-usb-ipad.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHc6eCp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-7371813045131167444</id><published>2008-05-06T13:42:00.005+03:00</published><updated>2012-02-10T12:08:21.910+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.910+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="реклама" /><title>6 способов разрекламировать что угодно от Михаила Дряшина</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lJiZu8Bl8KX8aTEhUzg5QCfrGVA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lJiZu8Bl8KX8aTEhUzg5QCfrGVA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lJiZu8Bl8KX8aTEhUzg5QCfrGVA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lJiZu8Bl8KX8aTEhUzg5QCfrGVA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_b8k5dlyLKt4/SCA-Lt_X19I/AAAAAAAAAFc/mn8IKzybEh0/s1600-h/%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D1%88%D0%BA%D0%B0.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 234px; height: 127px;" src="http://4.bp.blogspot.com/_b8k5dlyLKt4/SCA-Lt_X19I/AAAAAAAAAFc/mn8IKzybEh0/s320/%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D1%88%D0%BA%D0%B0.jpg" alt="" id="BLOGGER_PHOTO_ID_5197222341030434770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_b8k5dlyLKt4/SCA94t_X18I/AAAAAAAAAFU/3rPDukSiW8s/s1600-h/%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D1%88%D0%BA%D0%B0.jpg"&gt;&lt;/a&gt;Наткнулся на очень занимательную &lt;a href="http://old.e-xecutive.ru/friday/article_6010/"&gt;статью&lt;/a&gt; о том, как раскрутить обычную открывалку для консервных банок. Автор очень живо и интересно пишет. Для тех, кому лень ходить по ссылкам, приведу здесь основную часть статьи.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Итак,  как «раскрутить» открывалку для консервных банок?  &lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;i&gt;Путь первый &lt;/i&gt;&lt;/b&gt;–&lt;b&gt;&lt;i&gt;  «Уникум».&lt;/i&gt; &lt;/b&gt;Товар содержит в своем составе нечто особенное, уникальное и удивительное –  плод многолетнего напряжения лучших умов передового края мировой науки, открытие,  перевернувшее мир. Но ведь ничего такого в открывалке нет и в помине, возразите  вы. Это-то как раз совершенно не важно. Даже хорошо, что нет. Никто  и не придерется. Предположим, что в той самой открывалке с деревянной ручкой  воплощена запатентованная чудо-формула Сигма-эффекта. Звучит? Сигма-эффект  уже используется в рекламе стирального порошка? Не страшно. Изменим  букву и слово, пусть будет уникальная Эпсилон-технология. Итак, &lt;b&gt;консервный ключ произведен по уникальной  Эпсилон-технологии!&lt;/b&gt; &lt;/p&gt; &lt;p&gt;Меня  всегда волновала судьба альфа-каротина. И провитаминов. Не «про витамины», а  «провитаминов» – одним словом. Ну да ладно, эти термины еще хоть что-то да  означают. Керамиды помните? А наносомы? А проретинол, который всегда почему-то  «А»? Я уж не говорю о сода-триэффекте или крошках Sortie (у них теперь, кстати, война –  интенсив-гранулы борются с турбо-крошками), или о таком шедевре, как Экспертная  система Микродермобразии.&lt;/p&gt; &lt;p&gt;Но  истинный перл – это хлоринол. Заметьте, не какая-нибудь банальная, набившая  оскомину хлорка, а хлоринол. И это при том, что хлоринол из них – самый честный,  он всего лишь хлор, который придумал себе новое красивое  имя.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;i&gt;Путь второй &lt;/i&gt;&lt;/b&gt;–&lt;b&gt;&lt;i&gt;  «Гарантия».&lt;/i&gt;&lt;/b&gt; Открывалка срок годности имеет? Она же вечная, как вы  понимаете. Особенно если ручка не деревянная, а стальная и составляет с ножом  единое целое. Что с таким консервным ключом произойти может через год, два,  десять? Ровным счетом ничего. &lt;/p&gt; &lt;p&gt;Декларируем: &lt;b&gt;Уникальный консервный нож &lt;/b&gt;–&lt;b&gt; 100 лет гарантии при соблюдении правил  эксплуатации, в противном случае мы вернем деньги. Вам или вашим внукам.  &lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;i&gt;Путь третий &lt;/i&gt;&lt;/b&gt;–&lt;b&gt;&lt;i&gt;  «Безвредность».&lt;/i&gt;&lt;/b&gt;&lt;i&gt; &lt;/i&gt;Если в первом  варианте мы декларировали наличие в изделии некоего уникального ингредиента, то  теперь наоборот. Мы уверяем покупателя, что в товаре определенный продукт  отсутствует полностью. Например, на батоне хлеба пишем «Без цианидов!», и все  тут. Понятно, что все остальные булки, на которых ничего не написано, тоже без  цианидов. Но это только нам с вами понятно. Масло растительное с гордой надписью  «Без холестерина! С витамином D!» встречали? И, главное, истинная  правда – абсолютно без холестерина и с витамином D. Ни за какую недостоверную рекламу  притянуть невозможно. Конкуренты плачут. Если мы пишем, что у нас без  холестерина, значит у них как? &lt;/p&gt; &lt;p&gt;Теперь  переходим непосредственно к нашему товару. Пусть консервный ключ не будет  содержать, допустим, изотопов стронция. А что? Ярко и образно! В наших  открывалках ведь нет изотопов стронция. &lt;/p&gt; &lt;p&gt;&lt;b&gt;Супер-открывалка – уникальный сплав – без изотопов  стронция!&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;i&gt;Путь четвертый &lt;/i&gt;&lt;/b&gt;–&lt;b&gt;&lt;i&gt;  «Рекомендация».&lt;/i&gt; &lt;/b&gt;Тут все еще проще. Учреждаем некое юрлицо с научным  уклоном в названии. Реальный бюрократический статус новоявленной структуры может  быть любым, пусть будет, предположим, НКО или АНО, да, в конце концов, ЗАО с  уставным капиталом в рубль. Вот и получился у нас на бумаге (конечно, лишь на  бумаге) ПБОЮЛ, хотя это уже слишком, АНО «ВНИИКонсКлюч». Буква «В» пусть  обозначает «Внедренческий». Но это знаем только мы. А вы полагали  «Всероссийский»? Ну и полагайте себе дальше, разубеждать не будем. Вы ведь  думаете, что и «НИ» расшифровывается как «научно-исследовательский»?  Ну-ну…&lt;/p&gt; &lt;p&gt;Что  потом? Потом в рекламе нашего ключика пишем большими буквами: &lt;b&gt;Консервный нож рекомендован лучшими  специалистами ВНИИКонсКлюч&lt;/b&gt; (или &lt;b&gt;ВНИИКК&lt;/b&gt;, если  угодно).&lt;/p&gt; &lt;p&gt;Заметьте, ни о каком ПБОЮЛ, простите, АНО ни слова.  Соврали? Ни капельки! Чистая правда. В конце концов, всегда предъявить можем  лучшего специалиста института, по совместительству и его учредителя – вахтера  дядю Васю. И сам институт зарегистрирован, адрес имеет: ул. Товарищей Алисы и  Базилио, д. 13, стр. 92, вход со двора через  помойку.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;i&gt;Путь пятый &lt;/i&gt;&lt;/b&gt;–&lt;b&gt;&lt;i&gt;  «Явление Буратино».&lt;/i&gt;&lt;/b&gt; Нанимаем аниматора и рисуем деревянный персонаж с  жестяным носом. Озвучиваем его бодрым голосом полена. Персонаж появляется всегда  неожиданно и постоянно сует свой нос во все дыры, особенно  если:&lt;/p&gt; &lt;p&gt;&lt;i&gt;- до  прихода гостей пять минут, а нечем открыть  «Ессентуки»;&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;-  выломаны все зубы и выбит глаз при попытке откупорить бутылку «Нарзана» (пива,  если ролик идет поздно);&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;-  миловидная белозубая хозяйка, виртуозная кулинарка и гастрономическая мастерица,  пытается открыть консервную банку с ужином для всей семьи, и  т.д.&lt;/i&gt;&lt;/p&gt; &lt;p&gt;Тут-то  из звездного вихря, на радость визжащей от восторга общественности и появляется  наш стоеросовый герой, и, о чудо, все спасены!&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;i&gt;Путь шестой &lt;/i&gt;&lt;/b&gt;–&lt;b&gt;&lt;i&gt;  «Фанера над Нью-Йорком».&lt;/i&gt;&lt;/b&gt; Тут главное – габариты. Изображаем открывалку  размером с небоскреб и запускаем ее летать над мегаполисом, тоже обязательно с  небоскребами. Чтоб полнеба закрывала. А то и попросту впечатываем в самый центр  города, так, что от стоявших на месте приземления зданий лишь рожки да ножки.  Крупным мегаполисам не привыкать, они вообще рекламой покалеченные: то  сигаретные пачки летят, солнце закрывая, то батончики с жвачками, а то и пивная  банка размером с Эверест грохнется. И слоган такой же глобально-космический,  что-нибудь вроде «Эра ключа наступает!», а еще лучше патриотически-агрессивное -  «Атака русского ключа!», «Наш ответ Чемберлену!» или нечто подобное.  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-7371813045131167444?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/52P3BDOVELY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/7371813045131167444/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=7371813045131167444&amp;isPopup=true" title="Комментарии: 7" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/7371813045131167444?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/7371813045131167444?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/52P3BDOVELY/6.html" title="6 способов разрекламировать что угодно от Михаила Дряшина" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_b8k5dlyLKt4/SCA-Lt_X19I/AAAAAAAAAFc/mn8IKzybEh0/s72-c/%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D1%88%D0%BA%D0%B0.jpg" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2008/05/6.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHc7eyp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-6685241928652443210</id><published>2008-04-18T15:42:00.007+03:00</published><updated>2012-02-10T12:08:21.903+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.903+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Линуксятина" /><title>Решение проблемы с Ubuntu Hardy (8.04, beta)  и Photoshop CS2</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fiAXEJXx93JkZpwHNc2KULsYtyI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fiAXEJXx93JkZpwHNc2KULsYtyI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fiAXEJXx93JkZpwHNc2KULsYtyI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fiAXEJXx93JkZpwHNc2KULsYtyI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_b8k5dlyLKt4/SAiaMhtTESI/AAAAAAAAAFM/do9nc5uyBkk/s1600-h/Screenshot-1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_b8k5dlyLKt4/SAiaMhtTESI/AAAAAAAAAFM/do9nc5uyBkk/s400/Screenshot-1.png" alt="" id="BLOGGER_PHOTO_ID_5190568110541967650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Недавно обновил Ubuntu Gutsy (7.10) до бэты Hardy Heron (8.04). После чего у меня отвалился, работающий под wine Photoshop CS2 (кстати, он теперь устанавливается без всяких «костылей», из коробки). Сэкономлю вам время и поделюсь рецептом.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Симптомы:&lt;/span&gt; При попытке запустить Photoshop получаем ошибку: «An error has been detected with a required application library and the product cannot continue. Please reinstall the application.». Собственно, вышеуказанный reinstall никак не помогает.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Лекарство:&lt;/span&gt; Открываем консоль. и пишем:&lt;br /&gt;&lt;blockquote&gt;#sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;&lt;/blockquote&gt;Теперь без всяких перезагрузок и шаманств запускаем Photoshop как обычно и наслаждаемся. Действует это лекарство до перезагрузки системы.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-6685241928652443210?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/9_AaRQBRisc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/6685241928652443210/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=6685241928652443210&amp;isPopup=true" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/6685241928652443210?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/6685241928652443210?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/9_AaRQBRisc/ubuntu-hardy-804-beta-photoshop-cs2.html" title="Решение проблемы с Ubuntu Hardy (8.04, beta)  и Photoshop CS2" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_b8k5dlyLKt4/SAiaMhtTESI/AAAAAAAAAFM/do9nc5uyBkk/s72-c/Screenshot-1.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2008/04/ubuntu-hardy-804-beta-photoshop-cs2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHc5eSp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-9078744420820419317</id><published>2008-04-17T14:30:00.007+03:00</published><updated>2012-02-10T12:08:21.921+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.921+02:00</app:edited><title>Променял.Ру приглашает блоггеров на тестирование своего сервиса</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PzhhVIyRRW2UDkIGGwQ16mmVoe8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PzhhVIyRRW2UDkIGGwQ16mmVoe8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PzhhVIyRRW2UDkIGGwQ16mmVoe8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PzhhVIyRRW2UDkIGGwQ16mmVoe8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Сегодя в одной из RSS-лент, которые я каждый день читаю наткнулся на анонс довольно интересного проекта &lt;a href="http://www.promenyal.ru/"&gt;Променял.Ру&lt;/a&gt;. Проект представляет из себя социальную сеть, которую сами разработчики позиционируют как &lt;span style="font-style: italic;"&gt;«первую и единственную полезную социальную сеть в российском сегменте интернета, где можно поменять что угодно на что угодно».&lt;/span&gt; Подробнее можно почитать &lt;a href="http://promenyal.ru/about/"&gt;тут&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Идея проекта у разработчиков возникла на основе истории канадца Кайли Макдональда, которому в 2005 году удалось поменять красную пластиковую скрепку на бесплатное проживание в течение года в коттедже в Колорадо с помощью Интернета и своего блога.&lt;br /&gt;&lt;br /&gt;На данном этапе, проект раздает инвайты только блоггерам, как самым активным пользователям в сети. Причем то, что вы блоггер, нужно подтвердить, разместив в своем блоге заметку о проекте и, по желанию, высказав свое мнение о идее проекта. Чем я, собственно, и занимаюсь =)&lt;br /&gt;&lt;br /&gt;На мой взгляд, идея вполне живая и интересная. Единственное, что пока не совсем понятно — как будет организован сам обмен. Наверняка, сразу после старта проекта появятся всевозможные «кидалы» (куда ж без них), с которыми нужно будет как-то бороться. При обмене серъезными (более-менее дорогими) вещами нужны гарантии, а это не так просто. Если после написания этой статьи мне удастся получить доступ к тестированию проекта, то я непременно поделюсь с вами подробностями и скриншотами — следите за новыми выпусками.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPD:&lt;/span&gt; А у разработчиков есть неплохое чувство юмора. Повеселили:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_b8k5dlyLKt4/SAdC_BtTERI/AAAAAAAAAFE/kYRihr6L3z8/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_b8k5dlyLKt4/SAdC_BtTERI/AAAAAAAAAFE/kYRihr6L3z8/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5190190746125406482" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-9078744420820419317?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/DHYg58kgyAU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/9078744420820419317/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=9078744420820419317&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/9078744420820419317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/9078744420820419317?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/DHYg58kgyAU/blog-post_17.html" title="Променял.Ру приглашает блоггеров на тестирование своего сервиса" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_b8k5dlyLKt4/SAdC_BtTERI/AAAAAAAAAFE/kYRihr6L3z8/s72-c/Screenshot.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2008/04/blog-post_17.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHc6cCp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-8734754041543281289</id><published>2008-04-10T14:04:00.003+03:00</published><updated>2012-02-10T12:08:21.918+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.918+02:00</app:edited><title>Яндекс исправляет ошибки</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/a2rv5cg9UnLArwf3qK4p_pYB4hY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a2rv5cg9UnLArwf3qK4p_pYB4hY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/a2rv5cg9UnLArwf3qK4p_pYB4hY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/a2rv5cg9UnLArwf3qK4p_pYB4hY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Буквально только что произошла интересная штука. На Хабре &lt;a href="http://habrahabr.ru/blog/yandex/39606.html"&gt;появился пост&lt;/a&gt; о том как Яндекс дает свою рекламу в Гугловом AdWords. Причем, не как-нибуть, а с грамматическими ошибками.&lt;br /&gt;&lt;br /&gt;Не прошло и получаса — и в блоге разработчиков Яндекс.Поиск &lt;a href="http://webmaster.ya.ru/replies.xml?item_no=594&amp;amp;ncrnd=9314"&gt;появилась заметка&lt;/a&gt; о том, что Яндекс умеет исправлять грамматические ошибки в строке поиска, причем в некоторых случаях делает это автоматически.&lt;br /&gt;&lt;br /&gt;Хм... Забавно =)&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-8734754041543281289?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/U4L7UswxgB0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/8734754041543281289/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=8734754041543281289&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8734754041543281289?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8734754041543281289?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/U4L7UswxgB0/blog-post_10.html" title="Яндекс исправляет ошибки" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2008/04/blog-post_10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQH06eyp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-3174250250398015204</id><published>2008-04-10T09:51:00.005+03:00</published><updated>2012-02-10T12:09:01.313+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:09:01.313+02:00</app:edited><title>sIFR — расширяем возможности типографики xhtml</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MFiHeqc4BcXtjGgLBUbiNxuoLZQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MFiHeqc4BcXtjGgLBUbiNxuoLZQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MFiHeqc4BcXtjGgLBUbiNxuoLZQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MFiHeqc4BcXtjGgLBUbiNxuoLZQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_b8k5dlyLKt4/R_269xX8cpI/AAAAAAAAAEk/CB7m5G1IADI/s1600-h/sifr.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_b8k5dlyLKt4/R_269xX8cpI/AAAAAAAAAEk/CB7m5G1IADI/s400/sifr.gif" alt="" id="BLOGGER_PHOTO_ID_5187507916189233810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;В этой заметке пойдет речь о довольно интересной технологии sIFR (Scalable Inman Flash Replacement). Путем комбинации Flash JavaScript и CSS на вашей XHTML-страничке можно создать текст, выполненный абсолютно любым шрифтом. При этом xhtml абсолютно валиден, текст будет выделяться, а отсутствие flash или JavaScript приведет всего лишь к отображению текста стандарным шрифтом с CSS стилями.&lt;br /&gt;&lt;br /&gt;Заметка не претендует на абсолютно полное описание технологии, но в конце вас ждут ссылки на документацию и небольшой пример, который вы сможете скачать одним файлом и «поиграться» с ним на досуге&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Использовать sIFR очень просто. Все завязано на том, что после загрузки страницы JavaScript заменяет нужные XHTML элементы на Flash, который содержит в себе необходимый шрифт.   &lt;ul class="decimal"&gt;&lt;li&gt;Страница загружается в браузер&lt;/li&gt;&lt;li&gt;Java Script-ом проверяется наличие Flash плеера и затем ищутся указанные тэги или классы.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Если у клиента нет Flash или отключен JavaScript — ничего страшного не произойдет.  Клиент увидит обычный текст со стилями.&lt;/li&gt;&lt;li&gt;Если всего хватает, то JavaScript для каждого указанного элемента создаст Flash-объект и призведет замену.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Встроенный во Flash Actionscript загрузит нужный шрифт размером 6pt и  растянет до нужного размера.&lt;/li&gt;&lt;/ul&gt;  Для каждого шрифта нужен всего один созданный специальным образом Flash-файлик.&lt;br /&gt;&lt;br /&gt;Думаю, достоинства этого метода очивидны, а вот из недостатков стоит отметить:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Заменённые таким образом элементы не участвуют в общем выделении (если, к примеру, вы нажали CTRL+A в браузере). Не критично, но пережить можно.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Не всегда работает прозрачность фона. Если, к примеру, под заголовком находится какой-нибуть сложный фон. Похоже, это зависит от версии flash-плэера.&lt;/li&gt;&lt;/ol&gt;Материал на русском:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.umade.ru/log/2005/07/90.html"&gt;Любой шрифт на вашем сайте. sIFR&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://flack.ru/2006/02/17/how-and-when-to-use-sifr/"&gt;Как и когда использовать sIFR&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://designcollector.ru/sifr"&gt;Статьи и практикум&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; Материал на английском:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mikeindustries.com/blog/sifr/"&gt;sIFR 2.0: Rich Accessible Typography for the Masses&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mikeindustries.com/blog/archive/2004/08/sifr" target="_blank"&gt;Introducing sIFR: The Healthy Alternative to Browser Text&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.novemberborn.net/sifr"&gt;sIFR Documentation &amp;amp; FAQ&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://depositfiles.com/files/4650871"&gt;Мой собственный пример&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 id="post-80"&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-3174250250398015204?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/vM-28IZXmMI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/3174250250398015204/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=3174250250398015204&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/3174250250398015204?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/3174250250398015204?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/vM-28IZXmMI/sifr-xhtml.html" title="sIFR — расширяем возможности типографики xhtml" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_b8k5dlyLKt4/R_269xX8cpI/AAAAAAAAAEk/CB7m5G1IADI/s72-c/sifr.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2008/04/sifr-xhtml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YBQHw8fSp7ImA9WxZUFkU.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-4290162052943965597</id><published>2008-04-08T20:43:00.005+03:00</published><updated>2008-04-08T21:59:11.275+03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-08T21:59:11.275+03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Линуксятина" /><category scheme="http://www.blogger.com/atom/ns#" term="мобильные телефоны" /><title>Утилита GNUBOX для мобильного — ходим в интернет через большого брата</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QHevVryDiL4SvCD72z67e-nIgn4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QHevVryDiL4SvCD72z67e-nIgn4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QHevVryDiL4SvCD72z67e-nIgn4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QHevVryDiL4SvCD72z67e-nIgn4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Однажды я задался вопросом: "Если можно компьютер пустить в интернет, используя мобильный телефон(смартфон), то можно ли сделать наоборот?". Оказалось, что можно. В этой статье я поделюсь своими иызысканиями в этом вопросе и помогу избежать некоторых проблем, если вы, конечно, захотите с этим возиться. А конце статьи вы найдете ссылки по теме.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Как это работает?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Основной проблемой является создание альтернативной точки доступа в мобильном телефоне. Стандартных методов для ее решения в большинстве устройств не предусмотрено, но есть замечательная программка &lt;a href="http://www.blogger.com/http//gnubox.dnsalias.org/gnubox/"&gt;GNUBOX&lt;/a&gt;, которая нам поможет (список поддерживаемых устройств ниже). Установив эту программку в телефон, мы с ее помощью можем создать точку доступа для USB, Bluetooth или IrDA подключения. На самом процессе настройки я останавливаться не буду — ниже представлены ссылки на руководства.&lt;br /&gt;&lt;br /&gt;Далее, остается только настроить маскарадинг на большом брате (компьютере, который имеет bluetooth и выход в интернет).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Как это можно использовать?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Я использую такую схему для общения по Skype. В телефоне установлен &lt;a href="http://fring.com/"&gt;Fring&lt;/a&gt; и, соответственно, &lt;a href="http://http//gnubox.dnsalias.org/gnubox/"&gt;GNUBOX&lt;/a&gt;. В компьютере (под управлением Ubuntu) торчит bluetooth донгл и настроен маскарад. Т.е. мой телефон полностью заменяет мне наушники и микрофон. Я могу спокойно общаться по скайпу прогуливаясь по офису (в пределах действия bluetooth). Таким образом, я использую дешевый качественный интернет по оптике, а не дорогой и глючный EDGE/GPRS и в то же время пользуюсь привычным устройством «телефон», которое изначально предназначено для разговоров.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Список поддерживаемых телефонов:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;UIQ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SonyEricsson P800&lt;/li&gt;&lt;li&gt;SonyEricsson P900&lt;/li&gt;&lt;li&gt;SonyEricsson P910&lt;/li&gt;&lt;li&gt;Motorola A920&lt;/li&gt;&lt;li&gt;Motorola A925&lt;/li&gt;&lt;li&gt;Motorola A1000&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Series60 v1, v2&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nokia 3600&lt;/li&gt;&lt;li&gt;Nokia 3650&lt;/li&gt;&lt;li&gt;Nokia 6600, 7650&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Series60 v2 feature pack 1&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nokia 3230&lt;/li&gt;&lt;li&gt;Nokia 6260&lt;/li&gt;&lt;li&gt;Nokia 6620&lt;/li&gt;&lt;li&gt;Nokia 6670&lt;/li&gt;&lt;li&gt;Nokia 7610&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Series60 v2 feature pack 2&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nokia 6630, 6680, 6681&lt;/li&gt;&lt;li&gt;Nokia 6682&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Series60 v2 feature pack 3&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nokia N70&lt;/li&gt;&lt;li&gt;Nokia N90&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Series90 phones&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nokia 7710&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Список взят с официального сайта, но он не полный. Это только список тех телефонов, для которых скомпилены готвые бинарники (также, есть исходники). Мне удалось нагуглить скомпиленый кем-то бинарник для моей Nokia E50 (s60v3), но его нужно было перед установкой подписать.&lt;br /&gt;&lt;br /&gt;Для подписки вашего телефона (еще раз напомню, это только для S60v3)&lt;br /&gt;понадобится IMAI. Помучавшись немного с получением сертификатов и попыткой сделать это вручную, я воспользовался бесплатным сервисом &lt;a href="https://www.symbiansigned.com/app/page"&gt;www.symbiansigned.com&lt;/a&gt;. Там все просто: скормил свой IMEI, залил к ним нужное приложение и примерно через минуту мне на email пришла ссылка на скачку уже подписанного под мой телефон файлика. Очень удобно — рекомендую.&lt;br /&gt;&lt;br /&gt;Также, стоит отметить, что GNUBOX давно не развивался, последнее обновление исходников на официальном сайте датировано 2007-01-31.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ссылки по теме:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://gnubox.dnsalias.org/gnubox/"&gt;http://gnubox.dnsalias.org/gnubox/&lt;/a&gt; - Официальный сайт (англ.)&lt;/li&gt;&lt;li&gt;&lt;a href="http://slawek.mikula.googlepages.com/nokiae50gnuboxandfring"&gt;http://slawek.mikula.googlepages.com/nokiae50gnuboxandfring&lt;/a&gt; - «Nokia E50 Gnubox and Fring» (англ.)&lt;/li&gt;&lt;li&gt;&lt;a href="http://forum.allnokia.ru/viewtopic.php?t=8141&amp;amp;start=0"&gt;http://forum.allnokia.ru/viewtopic.php?t=8141&amp;amp;start=0&lt;/a&gt; - «&lt;span class="postbody"&gt;Использование интернета компа через gnubox на 6630&lt;/span&gt;» (рус.)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.symbiansigned.com/"&gt;http://www.symbiansigned.com/&lt;/a&gt; - онлайн-сервис подписки приложений для смартфонов s60v3 (англ.)&lt;/li&gt;&lt;/ul&gt;Комментарии и уточнения приветствуются.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-4290162052943965597?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/dIDfN3v3VN8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/4290162052943965597/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=4290162052943965597&amp;isPopup=true" title="Комментарии: 2" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/4290162052943965597?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/4290162052943965597?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/dIDfN3v3VN8/gnubox.html" title="Утилита GNUBOX для мобильного — ходим в интернет через большого брата" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2008/04/gnubox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHYyeyp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-137859807161547842</id><published>2008-04-08T17:00:00.006+03:00</published><updated>2012-02-10T12:08:21.893+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.893+02:00</app:edited><title>Идеальное времяпровождение</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0Sbr8OsyDM7lrow7mpVxixgRhYc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0Sbr8OsyDM7lrow7mpVxixgRhYc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0Sbr8OsyDM7lrow7mpVxixgRhYc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0Sbr8OsyDM7lrow7mpVxixgRhYc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_b8k5dlyLKt4/R_udVtFy9MI/AAAAAAAAAEc/QVO8mQFxj0I/s1600-h/suicid.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_b8k5dlyLKt4/R_udVtFy9MI/AAAAAAAAAEc/QVO8mQFxj0I/s400/suicid.jpg" alt="" id="BLOGGER_PHOTO_ID_5186912392053978306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;"Все будет охуенно!&lt;br /&gt;Непременно все будет охуенно!"&lt;br /&gt;© Павел Воля&lt;br /&gt;&lt;br /&gt;Вот уже который год пиздячу без передыху. И, что самое страшное — просвета невидать. С каждым днем все больше проблем и все больше нехватает денег. Наверняка я что-то делаю не так, но ничего с этим поделать не могу — банально нехватает времени =)&lt;br /&gt;&lt;br /&gt;С каждым новым проектом кажется: вот-вот, сейчас все наладится, станет больше времени, больше средств на реализацию каких-то преинтереснейших вещей, которыми давно хотел заняться. Ан нет, проблема на проблеме. Там по срокам затянул, там проебал, там еще какая-то фигня, налоговая, пенсионный фонд — депресняк...&lt;br /&gt;&lt;br /&gt;Вконец разозлившись, я решил немножко пофантазировать и представить, что мой распорядок дня наладился, счет в банке перестал стремиться к нулю и теперь я делаю только то, что хочу и тогда, когда я хочу.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Я стал высыпаться. По настоящему! Просыпаюсь от того, что я выспался, а не от того, что какая-то сволочь все утро звонит и звонит.&lt;/li&gt;&lt;li&gt;Я выкинул все телефоны, заблокировал все номера. Оставил только Jabber, который включаю тогда, когда хочу.&lt;/li&gt;&lt;li&gt;Ха! Я забыл все пароли от всех рабочих компов, мой мозг очистился от мусора и теперь я по-настоящему свободен!&lt;/li&gt;&lt;li&gt;Я наконец-то расплатился с долгами. О Боже, наконец-то!&lt;/li&gt;&lt;li&gt;Кажется, у меня появилась девушка. И, возможно, не одна. Здорово, черт возьми!&lt;/li&gt;&lt;li&gt;Я теперь гуляю где хочу и сколько хочу. Прощай, вонючий офис! Ноутбук в рюкзак — и вперед (черт, никак от этой шайтан-железки не отвыкну).&lt;/li&gt;&lt;li&gt;Я встретился со всеми своими друзьями, даже с теми, кого давно не видел и не слышал. Потрепался на все возможные и невозможные темы. Ого! А друзей то у меня оказывается валом!&lt;/li&gt;&lt;li&gt;На работе появляюсь только для того, чтобы выдать ценные указания работникам или тряхнуть стариной и запрограммить какой-нибудь жутко интересный кусок кода. Как я об этом мечтал!&lt;/li&gt;&lt;/ol&gt;Но тут раздался телефонный звонок и наваждение пропало. Пора пиздячить...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-137859807161547842?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/o6j5_zRp2aU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/137859807161547842/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=137859807161547842&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/137859807161547842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/137859807161547842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/o6j5_zRp2aU/blog-post.html" title="Идеальное времяпровождение" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_b8k5dlyLKt4/R_udVtFy9MI/AAAAAAAAAEc/QVO8mQFxj0I/s72-c/suicid.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2008/04/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHc6fSp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-8050900461311459927</id><published>2008-02-20T17:23:00.003+02:00</published><updated>2012-02-10T12:08:21.915+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.915+02:00</app:edited><title>Памятка для частного предпринимателя в Украине</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Slq0OXEB2m4ZATlu7UgmCUiUEjw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Slq0OXEB2m4ZATlu7UgmCUiUEjw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Slq0OXEB2m4ZATlu7UgmCUiUEjw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Slq0OXEB2m4ZATlu7UgmCUiUEjw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Будучи частным предпринимателем в Украине (единщиком, без наемных работников) и при этом неутомимым раздолбаем поимел некоторые проблемы с Налоговой и Пенсионным фондом связанные, восновном, с несвоевременной сдачей отчетов и т.п.&lt;br /&gt;&lt;br /&gt;Дабы не становиться на одни и те же грабли несколько раз, решил составить себе памятку куда и когда надо ходить и какие отчеты сдавать. Собственно, этой памяткой я и хочу поделиться с общественностью.&lt;br /&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:130%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:130%;"&gt;Налоговая:   &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;С 1 по 5 апреля&lt;/span&gt; — Додаток 3 «Звіт суб`єкта малого підприємництва-фізичної особи-платника єдиного податку». &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;С 1 по 5 июля&lt;/span&gt; — Додаток 3 «Звіт суб`єкта малого підприємництва-фізичної особи-платника єдиного податку». &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;С 1 по 5 октября&lt;/span&gt; — Додаток 3 «Звіт суб`єкта малого підприємництва-фізичної особи-платника єдиного податку». &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;С 1 по 5 января&lt;/span&gt; — Додаток 3 «Звіт суб`єкта малого підприємництва-фізичної особи-платника єдиного податку». &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Раз в год, до 15-го декабря&lt;/span&gt; — Продление свидетельства плательщика единого налога. Необходимы:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="margin-left: 40px;"&gt;&lt;li&gt;- бланк заявления установленного образца; &lt;/li&gt;&lt;li&gt;- оригинал самого свидетельства за текущий год;&lt;/li&gt;&lt;li&gt;- копии паспорта и идентификационного кода;&lt;/li&gt;&lt;li&gt;- копия свидетельства о государственной регистрации;&lt;/li&gt;&lt;li&gt;- копия квитанции об уплате единого налога за январь будущего года. &lt;/li&gt;&lt;/ul&gt;          &lt;span style="font-size:130%;"&gt;Пенсионный фонд:   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Раз в год, до 31 марта&lt;/span&gt; — отдел персонификации.  Необходимы:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;- «Ярлик-розписка»;&lt;/li&gt;&lt;li&gt;- «Індивідуальні відомості про застраховану особу»;&lt;/li&gt;&lt;li&gt;- Додаток 26.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p style="margin-left: 3.27cm; text-indent: -0.03cm; margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;Памятку можно скачать в форматах &lt;a href="http://rafinad.net/share/pamyatka_ikuznetsov.blogspot.com.odt"&gt;ODT&lt;/a&gt;, &lt;a href="http://rafinad.net/share/pamyatka_ikuznetsov.blogspot.com.doc"&gt;DOC&lt;/a&gt;, &lt;a href="http://rafinad.net/share/pamyatka_ikuznetsov.blogspot.com.rtf"&gt;RTF&lt;/a&gt;, &lt;a href="http://rafinad.net/share/pamyatka_ikuznetsov.blogspot.com.pdf"&gt;PDF&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0cm;" align="center"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size: 11pt;font-size:85%;" &gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;Памятка подготовлена при участии пользователя &lt;span style="font-weight: bold;"&gt;Ksysha&lt;/span&gt; форума &lt;a href="http://www.chp.com.ua/forums/"&gt;www.chp.com.ua/forums/&lt;/a&gt;.   За что ей огромное спасибо.&lt;p style="margin-bottom: 0cm;" align="center"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size: 11pt;font-size:85%;" &gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-8050900461311459927?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/_hFnFWR10qE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/8050900461311459927/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=8050900461311459927&amp;isPopup=true" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8050900461311459927?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8050900461311459927?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/_hFnFWR10qE/blog-post.html" title="Памятка для частного предпринимателя в Украине" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2008/02/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHYzcSp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-1231314054080617180</id><published>2007-12-29T09:17:00.000+02:00</published><updated>2012-02-10T12:08:21.889+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.889+02:00</app:edited><title>Агентство интернет рекламы I-media</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pmNbttxBsAZ2jb8tyB6-JGZ4MJU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pmNbttxBsAZ2jb8tyB6-JGZ4MJU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pmNbttxBsAZ2jb8tyB6-JGZ4MJU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pmNbttxBsAZ2jb8tyB6-JGZ4MJU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: right; font-style: italic;"&gt;&lt;blockquote&gt;Проектировать нужно сверху, а не снизу.&lt;br /&gt;А строить — наоборот — нужно снизу, а не сверху.&lt;br /&gt;И нельзя путать проектирование со строительством.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.i-media.ru/"&gt;агентство интернет рекламы&lt;/a&gt; I-media&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.i-media.ru/"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www.i-media.ru/images/design/logo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Наткнулся на интересный проект — &lt;a href="http://www.i-media.ru/"&gt;рекламное интернет агентство&lt;/a&gt;, которое на профессиональном уровне занимается всем что касается рекламы в интернете. На титульной странице гордо красуются логотипы Яндекса, Рамблера и Бегуна с припиской «i-Media - официальный авторизованный партнер».&lt;br /&gt;&lt;br /&gt;Меня, как человека не совсем далекого от создания и раскрутки сайтов, заинтересовали не столько услуги этой компании, сколько увлекательное и интересное наполнение самого сайта. Чего только стоят перлы вроде эпиграфа к этой статье!&lt;br /&gt;&lt;br /&gt;Рекомендую этот сайт для изучения всем, кто собирается создавать интернет-проект любой тематики либо уже имеет таковой. Особенно ценным мне показался &lt;a href="http://www.i-media.ru/services/site/"&gt;этот раздел.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-1231314054080617180?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/p-uOzlJXorw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/1231314054080617180/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=1231314054080617180&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/1231314054080617180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/1231314054080617180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/p-uOzlJXorw/i-media.html" title="Агентство интернет рекламы I-media" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/12/i-media.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHc7fyp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-7289122966913211687</id><published>2007-12-27T16:27:00.000+02:00</published><updated>2012-02-10T12:08:21.907+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.907+02:00</app:edited><title>Blogun.ru — как блоггеру заработать денег?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D0Mq2XtexLF5PbPbFxFOEXFgO7s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D0Mq2XtexLF5PbPbFxFOEXFgO7s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D0Mq2XtexLF5PbPbFxFOEXFgO7s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D0Mq2XtexLF5PbPbFxFOEXFgO7s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Недавно наткнулся на интересный проект &lt;a href="http://blogun.ru/"&gt;blogun.ru&lt;/a&gt;. Этот проект призван помочь блоггерам зарабатывать деньги. Ссылочка на него была в статье&lt;br /&gt;&lt;a href="http://www.liveidea.ru/content/2432"&gt;Первые деньги с BLOGUN или Как заработать 20 $ за Час!!!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Имея собственный, хоть чуточку раскрученый, блог(абсолютно неважно где) , Вы можете начать зарабатывать деньги примерно по такой схеме:&lt;br /&gt;&lt;br /&gt;1 идем на &lt;a href="http://blogun.ru/"&gt;blogun.ru&lt;/a&gt; и регистрируем ссылку на свой блог.&lt;br /&gt;2 Создаем в своем блоге статью (вроде той, которую сейчас читаете), в которой пишем что-нибуть интересное о проекте blogun.ru&lt;br /&gt;3 В эту же статью вставляем маленький невидимый счетчик, который сообщит сколько раз  статью прочитали. На основе этих данных будет принято решение о принятии блога в проект.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://blogun.ru/it.000000.001593.i.gif" height="1" width="1" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-7289122966913211687?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/vztR2vyhV4Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/7289122966913211687/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=7289122966913211687&amp;isPopup=true" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/7289122966913211687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/7289122966913211687?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/vztR2vyhV4Y/blogunru.html" title="Blogun.ru — как блоггеру заработать денег?" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/12/blogunru.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQH0_fyp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-8647800725451580371</id><published>2007-09-26T11:03:00.000+03:00</published><updated>2012-02-10T12:09:01.347+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:09:01.347+02:00</app:edited><title>Пример скрипта для загрузки файлов с помощью PHP</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tdwhBczMGGgrkP48uddFITnGxV4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tdwhBczMGGgrkP48uddFITnGxV4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tdwhBczMGGgrkP48uddFITnGxV4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tdwhBczMGGgrkP48uddFITnGxV4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="mainText"&gt;Ниже представлен PHP скрипт загрузки файла, который предназначен для обработки данных из формы &lt;/span&gt;&lt;span class="mainText"&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/xhtml-mp.html"&gt;XHTML MP документа&lt;/a&gt;. PHP-скрипт выводит информацию, полученную с помощью HTTP запроса и сохраняет загруженный файл в директорию &lt;/span&gt;&lt;span class="mainText"&gt;"/file_uploads" WAP сервера.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="right"&gt;&lt;span class="mainText"&gt;(&lt;a href="http://www.developershome.com/examples/wap/wapUpload/file_upload.php.txt"&gt;file_upload.php&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&amp;lt;?php header('Content-type: application/vnd.wap.xhtml+xml'); ?&amp;gt;&lt;br /&gt;&amp;lt;?php echo '&amp;lt;?xml version="1.0"?' . '&amp;gt;'; ?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;title&amp;gt;File Upload Example&amp;lt;/title&amp;gt;&lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;h1&amp;gt;Data Received at the Server&amp;lt;/h1&amp;gt;&lt;br /&gt;    &amp;lt;hr/&amp;gt;&lt;br /&gt;    &amp;lt;p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;foreach ($_POST as $key =&amp;gt; $value){&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Name-value Pair Info:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;Field name: &amp;lt;?php echo $key; ?&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;Field value: &amp;lt;?php echo $value; ?&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$optionalFileName = $_POST['filename'];&lt;br /&gt;&lt;br /&gt;if ($_FILES['myFile']['error'] == UPLOAD_ERR_OK){&lt;br /&gt;  $fileName = $_FILES['myFile']['name'];&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;Uploaded File Info:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;Content type: &amp;lt;?php echo $_FILES['myFile']['type']; ?&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;Field name: myFile&amp;lt;br/&amp;gt;&lt;br /&gt;File name: &amp;lt;?php echo $fileName; ?&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;File size: &amp;lt;?php echo $_FILES['myFile']['size']; ?&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;  /* Save the uploaded file if its size is greater than 0. */&lt;br /&gt;  if ($_FILES['myFile']['size'] &amp;gt; 0){&lt;br /&gt;    if ($optionalFileName == "")&lt;br /&gt;      $fileName = basename($fileName);&lt;br /&gt;    else&lt;br /&gt;      $fileName = $optionalFileName;&lt;br /&gt;&lt;br /&gt;    $dirName = '/file_uploads/';&lt;br /&gt;&lt;br /&gt;    if (move_uploaded_file($_FILES['myFile']['tmp_name'], $dirName . $fileName)){&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;The uploaded file has been saved successfully.&amp;lt;/b&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;    }&lt;br /&gt;    else{&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;b&amp;gt;An error occurred when we tried to save the uploaded file.&amp;lt;/b&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;/p&amp;gt;&lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Вот скриншоты, которые вы увидите в телефоне Nokia 6230:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;img style="clear:both;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_1967dd40.png" name="image10" align="left" border="0" height="130" width="131" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="clear:both;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_m2a245acb.png" name="image11" align="left" border="0" height="130" width="131" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="clear:both;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_m49c4f872.png" name="image12" align="left" border="0" height="130" width="131" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="clear:both;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_m734eb420.png" name="image13" align="left" border="0" height="130" width="131" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="clear:both;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_m3ff8af64.png" name="image14" align="left" border="0" height="130" width="131" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="clear:both;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_db69705.png" name="image15" align="left" border="0" height="130" width="131" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="clear:both;"&gt;&lt;span class="mainText"&gt;Представленный выше пример PHP-скрипта очень прост. Большинство кода было рассмотренно раньше. А вот некоторые строки, которые могут быть непонятны.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;Строка:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="codeText"&gt;&lt;blockquote&gt;&amp;lt;?php header('Content-type: application/vnd.wap.xhtml+xml'); ?&amp;gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="mainText"&gt;используется для выставления типа PHP документа в MIME. "application/vnd.wap.xhtml+xml" - это MIME тип XHTML MP.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;Строка:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="codeText"&gt;&lt;blockquote&gt;&amp;lt;?php echo '&amp;lt;?xml version="1.0"?' . '&amp;gt;'; ?&amp;gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="mainText"&gt;используется для вывода XML декларации "&amp;lt;?xml version="1.0"?&amp;gt;". Мы должны вывести ее таким образом, поскольку "&amp;lt;?" и "?&amp;gt;" XML декларации также являются открывающим и закрывающим тэгом языка PHP. Если мы включим XML декларацию непосредственно в документ PHP, вроде такого:&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&amp;lt;?php header('Content-type: application/vnd.wap.xhtml+xml'); ?&amp;gt;&lt;b&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"&amp;gt;&lt;span class="codeText"&gt;&lt;br /&gt;...&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="codeText"&gt;&lt;/span&gt;мы получим ошибку скрипта&lt;span class="mainText"&gt;.&lt;/span&gt; &lt;p&gt;&lt;span class="mainText"&gt;Строка:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="codeText"&gt;&lt;blockquote&gt;$fileName = basename($fileName);&lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="mainText"&gt;необходима в примере PHP скрипта, поскольку некоторые браузеры подставляют полный путь загруженного файла в HTTP запрос, что означает, что $_FILES['myFile']['name'] может содержать полный путь, а не только имя файла. Следовательно, мы должны использовать функцию PHP &lt;i&gt;basename()&lt;/i&gt;, которая выделит имя файла из пути. К примеру, &lt;i&gt;basename('/files/myFile.txt')&lt;/i&gt; и &lt;i&gt;basename('myFile.txt')&lt;/i&gt; вернут строку "myFile.txt".&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;Поскольку XHTML MP совместим с HTML/XHTML, результирующий XHTML MP документ сгенерированный скриптом PHP может быть также просмотрен в вэб-браузерах Microsoft Internet Explorer и Mozilla Firefox(и других, прим. переводчика). Единственное, что вам нужно сделать - убрать следующую строку из скрипта PHP:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="codeText"&gt;&lt;blockquote&gt;&amp;lt;?php header('Content-type: application/vnd.wap.xhtml+xml'); ?&amp;gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="mainText"&gt;Это нужно потому, что в отличие от браузеров &lt;/span&gt;&lt;span class="mainText"&gt;WAP 2.0 в мобильных устройствах, &lt;/span&gt;&lt;span class="mainText"&gt;Internet Explorer 6 и Mozilla Firefox 2.0 не понимают MIME тип XHTML MP. Вместо того, чтобы отобразить XHTML MP документ, они выдадут всплывающее диалоговое окно с предложением выбора программы для открытия документа и предложат сохранить документ на диск.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;Скриншоты того как это выглядит в Mozilla Firefox 2.0:&lt;/span&gt;&lt;/p&gt;  &lt;table border="0" cellpadding="4" cellspacing="0" width="100%"&gt;  &lt;col width="256*"&gt;  &lt;thead&gt;   &lt;tr&gt;    &lt;td valign="top" width="100%"&gt;     &lt;p&gt;&lt;img src="http://www.developershome.com/wap/wapUpload/wap_upload_html_m54f9ba3.png" name="image24" align="left" border="0" height="460" width="478" /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;     &lt;p&gt;&lt;img src="http://www.developershome.com/wap/wapUpload/wap_upload_html_690f6888.png" name="image25" align="left" border="0" height="460" width="478" /&gt;&lt;br /&gt;&lt;span class="mainText"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-8647800725451580371?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/EQWR86JI5U0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/8647800725451580371/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=8647800725451580371&amp;isPopup=true" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8647800725451580371?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8647800725451580371?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/EQWR86JI5U0/php_26.html" title="Пример скрипта для загрузки файлов с помощью PHP" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/09/php_26.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQH04fCp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-7408482088434684585</id><published>2007-09-25T12:56:00.000+03:00</published><updated>2012-02-10T12:09:01.334+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:09:01.334+02:00</app:edited><title>Сохранение загруженного файла в файловой системе с помощью PHP (функция PHP move_uploaded_file())</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZnX-11ud0QmLdodQ7ZAIEb2fuMI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZnX-11ud0QmLdodQ7ZAIEb2fuMI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZnX-11ud0QmLdodQ7ZAIEb2fuMI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZnX-11ud0QmLdodQ7ZAIEb2fuMI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="mainText"&gt;&lt;br /&gt;Теперь допустим, что код ошибки, который вернул PHP равняется &lt;/span&gt;&lt;span class="mainText"&gt;UPLOAD_ERR_OK и мы хотим сохранить загруженный файл в файловой системе без уточнения его содержимого. Мы можем использовать функцию &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;move_uploaded_file() &lt;/i&gt;для перемещения временного файла в нужное нам место. Пример:&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="codeText"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span class="codeText"&gt;move_uploaded_file($_FILES['myFile']['tmp_name'], '/upload_files/myFile.txt');&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если все прошло нормально, временный файл перемещается в &lt;/span&gt;&lt;span class="mainText"&gt;/upload_files/myFile.txt" и функция &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;move_uploaded_file() &lt;/i&gt;возвращает &lt;span style="font-style: italic;"&gt;true&lt;/span&gt;. PHP перезапишит файл &lt;/span&gt;&lt;span class="mainText"&gt;"myFile.txt", если он существует.&lt;/span&gt;&lt;/p&gt;Перед перемещением файла функция &lt;span class="mainText"&gt;&lt;i&gt;move_uploaded_file() &lt;/i&gt;проверит, действительно ли это файл загруженный через HTTP POST для того, чтобы предотвратить перемещение системных файлов или файлов с паролями, которые не предназначены для перемещения. Если файл не прошел проверку или случилась какая другая ошибка - файл не перемещается и функция &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;move_uploaded_file()&lt;/i&gt;&lt;/span&gt;&lt;span class="mainText"&gt; вернет &lt;span style="font-style: italic;"&gt;false&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;span&gt;&lt;br /&gt;Обработка содержания загруженного файла с помощью PHP&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если вы не хотите перемещать файл непосредственно в директорию, а хотите обработать его - вам помогут функции PHP &lt;span style="font-style: italic;"&gt;f&lt;/span&gt;&lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;ile_get_contents()&lt;/i&gt; and &lt;i&gt;fread(). &lt;/i&gt;&lt;/span&gt;&lt;span class="mainText"&gt;&lt;span style="font-style: italic;"&gt;f&lt;/span&gt;&lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;ile_get_contents() &lt;/i&gt;возвращает строку, которая содержит все данные загруженного файла:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;if (is_uploaded_file($_FILES['myFile']['tmp_name']))&lt;span class="codeText"&gt;  $fileData = file_get_contents($_FILES['myFile']['tmp_name']);&lt;/span&gt;&lt;/blockquote&gt;  &lt;p&gt;&lt;span class="mainText"&gt;Функция &lt;i&gt;is_uploaded_file()&lt;/i&gt; поможет определить действительно ли загруженный файл является загруженным со стороны клиента с помощью HTTP POST. Если так, то функция &lt;i&gt;is_uploaded_file()&lt;/i&gt; вернет &lt;i&gt;true&lt;/i&gt;, иначе вернет &lt;i&gt;false&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;Удостоверьтесь, что файл, который вы хотите обработать проходит эту проверку. Это необходимо для предотвращения обработки нежелательных файлов (системных или файлов с паролями).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если все прошло успешно, переменная $fileData будет содержать данные из загруженного файла. (Иначе будет содержать булеву &lt;span style="font-style: italic;"&gt;false&lt;/span&gt;.) Теперь вы можете делать все что угодно с этими файлами. К примеру, чтобы заменить все символы "A" символом "B" вы можете сделать нечто подобное:&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span class="codeText"&gt;$fileData = str_replace("A", "B", $fileData);&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="codeText"&gt;&lt;/span&gt;  &lt;p&gt;&lt;span class="mainText"&gt;Если загруженный файл большой по размеру, возможно вы не захотите загружать весь файл в память с помощью функции &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;file_get_contents(). &lt;/i&gt;В таком случае вам поможет функция &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;fread(). &lt;/i&gt;Она считывает заданное количество байт из потока. &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;fread() &lt;/i&gt;используется вместе с такими функциями php как &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;fopen()&lt;/i&gt;, &lt;i&gt;feof()&lt;/i&gt;, &lt;i&gt;fclose() &lt;/i&gt;и т.д.&lt;i&gt; &lt;/i&gt;Вот пример PHP скрипта:&lt;/span&gt;&lt;span class="mainText"&gt; &lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;if (is_uploaded_file($_FILES['myFile']['tmp_name'])){&lt;br /&gt;&lt;p&gt;&lt;span class="codeText"&gt;  $filePointer = fopen($_FILES['myFile']['tmp_name'], "rb");&lt;br /&gt;&lt;br /&gt;if ($filePointer!=false){&lt;br /&gt; while (!feof($filePointer)){&lt;br /&gt;   $fileData = fread($filePointer, 4096);&lt;br /&gt;&lt;br /&gt;   // Тут обрабатываем содержимое загруженного файла&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; fclose($filePointer);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="mainText"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span class="mainText"&gt;Прежде чем мы можем прочитать содержимое файла с помощью &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;fread()&lt;/i&gt;&lt;/span&gt;&lt;span class="mainText"&gt;, нам прежде нужно открыть поток. Этого можно добиться с помощью функции PHP &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;fopen()&lt;/i&gt;. Эта функция на входе принимает 2 параметра - имя файла и флаг для управления типом доступа. В приведенном выше примере PHP скрипта мы в качестве флага указали &lt;/span&gt;&lt;span class="mainText"&gt;"rb". &lt;/span&gt;&lt;span class="mainText"&gt;"r" означает что мы хотим открыть файл для чтения, а &lt;/span&gt;&lt;span class="mainText"&gt;"b" означает что мы хотим читать файл в бинарном режиме. Если загруженный файл успешно открылся, &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;fopen()&lt;/i&gt; вернет указатель на файл, иначе вернет &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;false&lt;/i&gt;.&lt;/span&gt;&lt;span class="mainText"&gt; &lt;/span&gt; &lt;/p&gt;&lt;span class="mainText"&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="mainText"&gt;Функция PHP &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;feof() &lt;/i&gt;используется для проверки достиг ли указатель файла конца файла (&lt;/span&gt;&lt;span class="mainText"&gt;EOF (end-of-file)&lt;/span&gt;&lt;span class="mainText"&gt;). Если да, то функция &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;feof() &lt;/i&gt;вернет&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;true&lt;/i&gt;, иначе вернет &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;false&lt;/i&gt;. В приведенном выше PHP скрипте, мы использовали цикл while для постоянной проверки достижения конца файла. Если конец файла не достигнут - мы продолжаем читать данные из файла с помощью &lt;span style="font-style: italic;"&gt;fread()&lt;/span&gt;, иначе мы закроем файл.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="mainText"&gt;Функция PHP &lt;span style="font-style: italic;"&gt;fread()&lt;/span&gt;, используется для чтения заданного количества байт. На входе она требует 2 параметра - указатель файла и целое число, которое указывает на количество байт для чтения за раз. В приведенном выше PHP скрипте, мы каждый раз считываем &lt;/span&gt;&lt;span class="mainText"&gt;4096 байт. К примеру, если размер загруженного фвйла 5000 байт, &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;fread() &lt;/i&gt;считает 4096 байт данных при первом вызове и 904 байта данных при втором. Если&lt;/span&gt;&lt;span class="mainText"&gt; &lt;i&gt;fread()&lt;/i&gt; не может прочитать данные - он вернет &lt;i&gt;false&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;Функция PHP &lt;i&gt;fclose()&lt;/i&gt; используется для закрытия потока файла.&lt;/span&gt;&lt;/p&gt; Для более детальной информации&lt;span class="mainText"&gt;, обратитесь к &lt;a href="http://www.php.net/manual/ru/"&gt;документации PHP&lt;/a&gt; и разделу &lt;a href="http://www.php.net/manual/ru/ref.filesystem.php"&gt;функции файловой системы&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a name="2"&gt;&lt;/a&gt;&lt;span class="mainText"&gt;&lt;span style="font-weight: bold;"&gt;Получение значений полей формы с помощью PHP&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="mainText"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если ваша HTML/XHTML форма содержит обычные поля ввода вроде &amp;lt;input type="text"&amp;gt; рядом с &amp;lt;input type="file"&amp;gt;, вы можете использовать  массив$_POST для извлечения значений полей ввода. Примерно так:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="codeText"&gt;&lt;blockquote&gt;$_POST[&lt;i&gt;value_of_name_attribute&lt;/i&gt;]&lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="mainText"&gt;В приведенной выше строке, &lt;i&gt;value_of_name_attribute&lt;/i&gt; соответствует значению атрибута &lt;i&gt;name&lt;/i&gt; элемента &amp;lt;input&amp;gt;. К примеру, можно использовать PHP код:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="codeText"&gt;&lt;blockquote&gt;$_POST['filename']&lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="mainText"&gt;для извлечения значения поля:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span class="codeText"&gt;&lt;blockquote&gt;&amp;lt;input name="filename" type="text"/&amp;gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-7408482088434684585?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/SgPmuCerEgQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/7408482088434684585/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=7408482088434684585&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/7408482088434684585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/7408482088434684585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/SgPmuCerEgQ/php-php-moveuploadedfile.html" title="Сохранение загруженного файла в файловой системе с помощью PHP (функция PHP move_uploaded_file())" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/09/php-php-moveuploadedfile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQH05fip7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-6890739815261471554</id><published>2007-09-24T14:33:00.000+03:00</published><updated>2012-02-10T12:09:01.326+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:09:01.326+02:00</app:edited><title>Проверка ошибок</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CdroT_DmX5qObl0PoB-eBodykD4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CdroT_DmX5qObl0PoB-eBodykD4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CdroT_DmX5qObl0PoB-eBodykD4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CdroT_DmX5qObl0PoB-eBodykD4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Одна из важных вещей, которую вам нужно энать - как проверить были ли ошибки в процессе загрузки файла через HTTP запрос. Если приключилась ошибка, PHP вернет код ошибки, который можно получить, используя следующие строки скрипта(тут мы подразумеваем, что атрибут &lt;span style="font-style: italic;"&gt;name&lt;/span&gt; этемента &amp;lt;input type="file"&amp;gt; равен myFile):&lt;br /&gt;&lt;span class="codeText"&gt;&lt;blockquote&gt;$errorCode = $_FILES['myFile']['error'];&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если все работает нормально - значение &lt;/span&gt;&lt;span class="mainText"&gt;$errorCode будет равно константе &lt;/span&gt;&lt;span class="mainText"&gt;UPLOAD_ERR_OK. Если произошла ошибка - значение &lt;/span&gt;&lt;span class="mainText"&gt;$errorCode будет равно одной и следующих констант:&lt;/span&gt;&lt;/p&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;h3&gt;UPLOAD_ERR_INI_SIZE Error Code&lt;/h3&gt; &lt;p&gt;&lt;span class="mainText"&gt;Размер загруженного файла больше, чем значение директивы &lt;i&gt;upload_max_filesize&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="2"&gt;&lt;/a&gt; UPLOAD_ERR_FORM_SIZE Error Code (Используется с полем формы MAX_FILE_SIZE)&lt;/h3&gt; &lt;p&gt;&lt;span class="mainText"&gt;Код ошибки UPLOAD_ERR_FORM_SIZE никогда не появится, если не указано скрытое поле&lt;/span&gt;&lt;span class="mainText"&gt;&lt;/span&gt;&lt;span class="mainText"&gt; формы MAX_FILE_SIZE/&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;MAX_FILE_SIZE используется так:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="codeText"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span class="codeText"&gt;&amp;lt;form action="file_upload.php" method="post" enctype="multipart/form-data"&lt;/span&gt;&lt;span class="codeText"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="mainText"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="codeText"&gt;&amp;lt;&lt;/span&gt;p&lt;span class="codeText"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="codeText"&gt;    &lt;/span&gt;&lt;span class="codeText"&gt;&amp;lt;&lt;/span&gt;&lt;span class="codeText"&gt;&lt;b&gt;input name="MAX_FILE_SIZE" value="1048576" type="hidden"/&lt;/b&gt;&lt;/span&gt;&lt;span class="codeText"&gt;&amp;gt;&lt;/span&gt;&lt;span class="codeText"&gt;&lt;br /&gt;   &lt;/span&gt;&lt;span class="codeText"&gt;&amp;lt;&lt;/span&gt;&lt;span class="codeText"&gt;input name="myFile" type="file"/&lt;/span&gt;&lt;span class="codeText"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="codeText"&gt;    &lt;/span&gt;&lt;span class="codeText"&gt;&amp;lt;&lt;/span&gt;&lt;span class="codeText"&gt;input type="submit"/&lt;/span&gt;&lt;span class="codeText"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="codeText"&gt;  &lt;/span&gt;&lt;span class="codeText"&gt;&amp;lt;&lt;/span&gt;&lt;span class="codeText"&gt;/p&lt;/span&gt;&lt;span class="codeText"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="codeText"&gt;&amp;lt;&lt;/span&gt;&lt;span class="codeText"&gt;/form&lt;/span&gt;&lt;span class="codeText"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;span class="codeText"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;В этом примере &lt;/span&gt;&lt;span class="mainText"&gt;HTML/XHTM кода, поле формы &lt;/span&gt;&lt;span class="mainText"&gt;MAX_FILE_SIZE регламентирует, что размер загружаемого файла должен быть не более &lt;/span&gt;&lt;span class="mainText"&gt;1048576 байт. Если браузер поддерживает это поле формы - он не позволит пользователю выбрать файл который больше этого значения по размеру.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="mainText"&gt;Таким образом, пользователю не нужно ждать загрузки файла на сервер, чтобы узнать что он слишком велик. Однако, на момент написания этой статьи, мы не смогли найти ни одного WAP браузера, который бы поддерживал это поле. Также, &lt;/span&gt;&lt;span class="mainText"&gt;IE 6 и Firefox 2.0 не понимают этого значения поля формы.&lt;/span&gt;&lt;/p&gt;Не имеет значения понимает ли WAP - браузер поле формы &lt;span class="mainText"&gt;MAX_FILE_SIZE или нет. Если PHP определит, что размер загруженного файла больше чем указано в &lt;/span&gt;&lt;span class="mainText"&gt;MAX_FILE_SIZE - он вернет код ошибки &lt;/span&gt;&lt;span class="mainText"&gt;UPLOAD_ERR_FORM_SIZE&lt;/span&gt;&lt;br /&gt;&lt;span class="mainText"&gt;&lt;br /&gt;Важно отметить, что значение поля &lt;/span&gt;&lt;span class="mainText"&gt;MAX_FILE_SIZE может быть легко подделано на стороне клиента. Таким образом, &lt;/span&gt;&lt;span class="mainText"&gt;MAX_FILE_SIZE не является абсолютно надежным способом ограничения размера загружаемого файла. Лучше использовать директиву &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;upload_max_filesize, &lt;/i&gt;которая рассматривается в разделе&lt;/span&gt;&lt;span&gt;&lt;span&gt; "&lt;a href="http://ikuznetsov.blogspot.com/2007/09/php_22.html"&gt;Директивы PHP, которые влияют на загрузку (больших) файлов&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mainText"&gt;"  этого руководства.&lt;/span&gt;&lt;p&gt;&lt;span class="mainText"&gt;Учтите что элемент &amp;lt;input type="file"&amp;gt; должен быть расположен после поля формы MAX_FILE_SIZE.&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;a name="3"&gt;&lt;/a&gt;&lt;h3&gt; UPLOAD_ERR_PARTIAL Error Code&lt;/h3&gt; &lt;p&gt;&lt;span class="mainText"&gt;Сервер получил только часть загруженного файла.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="4"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;UPLOAD_ERR_NO_FILE Error Code&lt;/h3&gt; &lt;p&gt;&lt;span class="mainText"&gt;HTTP запрос не содержит файла.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3&gt;&lt;a name="5"&gt;&lt;/a&gt; UPLOAD_ERR_NO_TMP_DIR Error Code&lt;/h3&gt; &lt;p&gt;&lt;span class="mainText"&gt;Отсутствует временная директория.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;h3&gt;&lt;a name="6"&gt;&lt;/a&gt; UPLOAD_ERR_CANT_WRITE Error Code&lt;/h3&gt; &lt;p&gt;&lt;span class="mainText"&gt;Невозможно записать на диск загруженный файл.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-6890739815261471554?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/6_DA2LWAq8g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/6890739815261471554/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=6890739815261471554&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/6890739815261471554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/6890739815261471554?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/6_DA2LWAq8g/blog-post_24.html" title="Проверка ошибок" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/09/blog-post_24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQH06fip7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-3506578782012768167</id><published>2007-09-22T16:49:00.000+03:00</published><updated>2012-02-10T12:09:01.316+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:09:01.316+02:00</app:edited><title>Директивы PHP, которые влияют на загрузку (больших) файлов</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cu8m47LFT87WUH2ZIg4cK24CAZg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cu8m47LFT87WUH2ZIg4cK24CAZg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cu8m47LFT87WUH2ZIg4cK24CAZg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cu8m47LFT87WUH2ZIg4cK24CAZg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="mainText"&gt;Директивы используются для конфигурации PHP. Они расположены в конфигурационном файле php.ini. Мы рассмотрим директивы, которые относятся к загрузке файлов и могут быть для вас полезными (чаще всего вы можете оставить дефолтные значения и не менять их). Следующая таблица содержит директивы и короткое описание каждой из них.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="mainText"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;table style="clear:both;" border="1" cellpadding="4" cellspacing="0" width="100%"&gt;&lt;thead&gt;&lt;tr valign="top"&gt;&lt;th width="33%"&gt;&lt;p&gt;&lt;span class="mainText"&gt;Директива PHP&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;    &lt;th width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Короткое описание&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;    &lt;th width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Пример&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;   &lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;   &lt;tr valign="top"&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;file_uploads&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Регламентирует возможность загрузки файлов в PHP.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Значение по умолчанию &lt;i&gt;On&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Возможно вам придется связаться с администратором чтобы уточнить что директива &lt;i&gt;file_uploads&lt;/i&gt; установлена в &lt;i&gt;On&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt;     &lt;/li&gt;&lt;/ul&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="codeText"&gt;file_uploads     = Off&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;upload_tmp_dir&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Регламентирует директорию, в которой временно хранятся загруженные файлі&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;По умолчанию не указана.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если не указана,  PHP будет использовать системную временную директорию.&lt;/span&gt;&lt;/p&gt;     &lt;/li&gt;&lt;/ul&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="codeText"&gt;upload_tmp_dir     = "/temp"&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;А вот некоторые директивы PHP, которые вам возможно придется сменить, чтобы включить поддержку загрузки больших файлов. По умолчанию файлы больше 2MB не "пролезут".&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;table border="1" cellpadding="4" cellspacing="0" width="100%"&gt;  &lt;col width="85*"&gt;  &lt;col width="85*"&gt;  &lt;col width="85*"&gt;  &lt;thead&gt;   &lt;tr valign="top"&gt;    &lt;th width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;PHP     Directive&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;    &lt;th width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Brief     Description&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;    &lt;th width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Example&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;   &lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;   &lt;tr valign="top"&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;upload_max_filesize&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Регламентирует максимальный размер файла (в байтах) который примет PHP.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Значение по умолчанию 2M (2 * 1048576 байт).&lt;/span&gt;&lt;/p&gt;     &lt;/li&gt;&lt;/ul&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="codeText"&gt;upload_max_filesize     = 4096&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;post_max_size&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Регламентирует максимальный размер (в байтах)  HTTP POST запроса.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Значение по умолчанию 8M (8 * 1048576 байт).&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Удостоверьтесь что это число болшьше чем у директивы &lt;i&gt;upload_max_filesize&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt;     &lt;/li&gt;&lt;/ul&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="codeText"&gt;post_max_size     = 10M&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;memory_limit&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Регламентирует максимальный объем памяти (в байтах) доступный для скрипта PHP.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Значение по умолчанию 16M (16 *      1048576 байт).&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Это значение должно быть больше директивы &lt;i&gt;post_max_size&lt;/i&gt;.&lt;/span&gt;&lt;/p&gt;     &lt;/li&gt;&lt;/ul&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="codeText"&gt;memory_limit     = 20M&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;max_input_time&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Регламентирует максимальное количество времени (в секундах) которое доступно для каждого PHP скрипта для получения клиентского HTTP запроса.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Значение по умолчанию 60.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если вам нужна поддержка загрузки больших файлов, вам придется увеличить это значение для предотвращения таймаутов.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Обратите внимание, что у некоторых пользователей может быть медленное соединение. Вам нужно иметь это в в иду.&lt;/span&gt;&lt;/p&gt;     &lt;/li&gt;&lt;/ul&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="codeText"&gt;max_input_time     = 90&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;max_execution_time&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Регламентирует максимальное количество времени (в секундах) доступное для выполнения каждого PHP скрипта.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Значение по умолчанию 30.&lt;/span&gt;&lt;/p&gt;      &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если вам нужно обработать большие загруженные файлы в PHP, вам придется увеличить это значение для предотвращения таймаутов.&lt;/span&gt;&lt;/p&gt;     &lt;/li&gt;&lt;/ul&gt;    &lt;/td&gt;    &lt;td width="33%"&gt;     &lt;p&gt;&lt;span class="codeText"&gt;max_execution_time     = 60&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-3506578782012768167?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/1-Ap0o8P4Ec" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/3506578782012768167/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=3506578782012768167&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/3506578782012768167?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/3506578782012768167?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/1-Ap0o8P4Ec/php_22.html" title="Директивы PHP, которые влияют на загрузку (больших) файлов" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/09/php_22.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQH0_fSp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-8110877797378406050</id><published>2007-09-22T12:52:00.000+03:00</published><updated>2012-02-10T12:09:01.345+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:09:01.345+02:00</app:edited><title>Обработка выгрузки файлов через форму с помощью PHP</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T_zZqaizKaJnr9QuPHTLk6sHNcw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T_zZqaizKaJnr9QuPHTLk6sHNcw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T_zZqaizKaJnr9QuPHTLk6sHNcw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T_zZqaizKaJnr9QuPHTLk6sHNcw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В этом разделе мы рассмотрим как обработать основанную на форме загрузку файла с помощью PHP скрипта. Технически это относится и к HTML и XHTML. На момент написания этой статьи последняя версия PHP 5.2.0. В этом руководстве мы будем пользоваться ею. Для других версий PHP процедура должна быть очень похожей. Если вы не очень знакомы с PHP рекомендуем предварительно &lt;a href="http://www.google.com.ua/custom?hl=ru&amp;client=pub-0668945045080920&amp;channel=2366963899&amp;cof=FORID%3A1%3BGL%3A1%3BLBGC%3A336699%3BLC%3A%230000ff%3BVLC%3A%23663399%3BGFNT%3A%230000ff%3BGIMP%3A%230000ff%3BDIV%3A%23336699%3B&amp;domains=ikuznetsov.blogspot.com&amp;q=%D1%81%D1%82%D0%B0%D1%82%D1%8C%D0%B8+%D0%BE+PHP&amp;btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&amp;sitesearch=&amp;meta="&gt;прочесть несколько вводных статей&lt;/a&gt; об этой технологии.&lt;br /&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Обработка данных из формы и получение отчета о выгрузке с помощью PHP&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="mainText"&gt;Чтобы "выдернуть" загруженный файл из HTTP запроса нам нужно обработать данные из формы, которые закодированы(encoded) в формате &lt;/span&gt;&lt;span class="mainText"&gt;multipart/form-data". В PHP это происходит автоматически. Механизм PHP сохраняет информацию о загруженных файлах в массиве $_FILES.&lt;/span&gt;&lt;/p&gt;Предположим, значение атрибута &lt;span class="mainText"&gt;&lt;i&gt;name &lt;/i&gt;элемента &lt;/span&gt;&lt;span class="mainText"&gt;&amp;lt;input type="file"&amp;gt; указанного &lt;/span&gt;&lt;span class="mainText"&gt;HTML/XHTML/XHTML MP&lt;/span&gt;&lt;span class="mainText"&gt; документа равняется &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;myFile&lt;/i&gt;. Чтобы получить информацию о загруженном файле используйте такие строчки PHP скрипта:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;/* Получаем размер загруженного файла в байтах. */&lt;br /&gt;$fileSize = $_FILES['myFile']['size'];&lt;br /&gt;&lt;br /&gt;/* Получаем имя (включая информацию о пути) временного файла созданного PHP, который содержит ту же информацию что и загруженный. */&lt;br /&gt;$tmpFile = $_FILES['myFile']['tmp_name'];&lt;br /&gt;&lt;br /&gt;/* Получаем имя загруженного файла на стороне клиента. Некоторные браузеры вставляют полный путь (напр. e:\files\myFilфe.txt), т.е. нужно выудить имя файла. Эта информация предоставляется браузером клиента - будте осторожны, информация может быть ошибочно введена нерадивым пользователем. */&lt;br /&gt;$fileName = $_FILES['myFile']['name'];&lt;br /&gt;&lt;br /&gt;/* Получаем тип содержания (MIME тип) загруженного файла. Эта информация предоставляется браузером клиента - будте осторожны, информация может быть ошибочно введена нерадивым пользователем. */&lt;br /&gt;$contentType = $_FILES['myFile']['type'];&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="mainText"&gt;Телефоны Nokia такие как Nokia 6230 определяют тип содержания (MIME тип) выгружаемого файла по его расширению. Следующая таблица содержит некоторые типы файлов, которые распознает Nokia 6230:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;table border="1" cellpadding="4" cellspacing="0" width="100%"&gt;  &lt;col width="128*"&gt;  &lt;col width="128*"&gt;  &lt;thead&gt;   &lt;tr valign="top"&gt;    &lt;th width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Расширение файла&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;    &lt;th width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Тип содержимого / MIME тип&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;   &lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;.jpg&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;image/jpeg&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;.gif&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;image/gif&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;.png&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;image/png&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;.wbmp&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;image/vnd.wap.wbmp&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;.txt&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;text/plain&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;&lt;span class="mainText"&gt;Если телефон Nokia 6230 не распознал расширение файла, он укажет "application/octet-stream" в качестве типа содержимого / MIME типа файла HTTP запроса.&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-8110877797378406050?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/TEKzSs7rHaI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/8110877797378406050/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=8110877797378406050&amp;isPopup=true" title="Комментарии: 1" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8110877797378406050?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8110877797378406050?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/TEKzSs7rHaI/php.html" title="Обработка выгрузки файлов через форму с помощью PHP" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/09/php.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHYyfip7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-1656654690484891517</id><published>2007-09-21T13:20:00.000+03:00</published><updated>2012-02-10T12:08:21.896+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:08:21.896+02:00</app:edited><title>Как сделать скриншот с экрана мобильного телефона, КПК, смартфона, PDA?</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xMaRON6MQfjRyUacJ80Q5ysaXao/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xMaRON6MQfjRyUacJ80Q5ysaXao/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xMaRON6MQfjRyUacJ80Q5ysaXao/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xMaRON6MQfjRyUacJ80Q5ysaXao/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;Есть 2 пути для того, чтобы сделать скриншот с экрана мобильного телефона, КПК, смартфона, PDA:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Первый путь&lt;/span&gt; банален и напрашивается сам собой. Берем телефон и вульгарно фотографируем его цифровой фотокамерой или любым другим устройством, которое умеет фотографировать.&lt;br /&gt;Плюсы:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;быстро&lt;/li&gt;&lt;li&gt;скриншот можно сделать с любого устройства&lt;/li&gt;&lt;/ul&gt;Минусы:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;тяжело добиться хорошего качества, нужен опыт фотогрвфии&lt;/li&gt;&lt;li&gt;устройство для фотосьемки должно быть хорошего качества&lt;br /&gt;&lt;/li&gt;&lt;li&gt;нужно редактировать фотографии графическим редактором&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Второй путь&lt;/span&gt; заключается в установке програмного обеспечения на телефон или другое устройство. Тут все зависит от производителя телефона, его модели и используемой операционной системы. Не все устройства способны на это!&lt;br /&gt;&lt;br /&gt;На данный момент я отыскал 2 программы для смартфонов:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Screenshot for Symbian OS (S60/UIQ)&lt;br /&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Ximplify SeleQ&lt;/li&gt;&lt;/ul&gt;&lt;span class="pn-normal"&gt;С их помощью можно снимать скриншоты с некоторых телефонов Nokia, Sony Ericsson, Motorola&lt;br /&gt;&lt;br /&gt;Для Windows Mobile:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HauteCapture 2.0&lt;/li&gt;&lt;li&gt;SmartControl&lt;/li&gt;&lt;li&gt;CapturePro&lt;/li&gt;&lt;li&gt;Pocket Controller Pro&lt;/li&gt;&lt;/ul&gt;&lt;span class="pn-normal"&gt;&lt;br /&gt;Плюсы:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;нет необходимости в дополнительном оборудовании&lt;/li&gt;&lt;li&gt;не нужно использовать графический редактор&lt;/li&gt;&lt;/ul&gt;Минусы:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;долго искать и устанавливать ПО&lt;br /&gt;&lt;/li&gt;&lt;li&gt;не все устройства поддерживают&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-1656654690484891517?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/a3erpsO47YQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/1656654690484891517/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=1656654690484891517&amp;isPopup=true" title="Комментарии: 3" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/1656654690484891517?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/1656654690484891517?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/a3erpsO47YQ/pda.html" title="Как сделать скриншот с экрана мобильного телефона, КПК, смартфона, PDA?" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/09/pda.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQH05eSp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-6247814531910939899</id><published>2007-09-21T12:01:00.000+03:00</published><updated>2012-02-10T12:09:01.321+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:09:01.321+02:00</app:edited><title>XHTML MP пример, демонстрирующий выгрузку файлов</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b6HkD-54TinSvWZ7cR7cJ95AGWQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b6HkD-54TinSvWZ7cR7cJ95AGWQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/b6HkD-54TinSvWZ7cR7cJ95AGWQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b6HkD-54TinSvWZ7cR7cJ95AGWQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Следующий пример демонстрирует как выгрузить файл с мобильного телефона Nokia 6230. &lt;a href="http://www.developershome.com/examples/wap/wapUpload/uploadFileEg1.xhtml"&gt;Тут представлен пример XHTML MP документа&lt;/a&gt;. Поскольку XHTML MP совместим с HTML/XHTML, этот документ может быть также открыт с помощью таких браузеров как Microsoft Internet Explorer и Mozilla Firefox(а также других браузеров. прим. переводчика).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;File Upload Example&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;Welcome to our photo album.&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    &amp;lt;form action="file_upload.php" method="post" enctype="multipart/form-data"&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt; Choose a photo to upload to the WAP server:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        &amp;lt;input name="myFile" type="file"/&amp;gt;&amp;lt;br/&amp;gt;&lt;/span&gt;&lt;br /&gt; On the WAP server, save the file as: (Enter something here if you want the file to be saved in a different file name.)&lt;br /&gt; &amp;lt;input name="filename" type="text"/&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;hr/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&lt;br /&gt; &amp;lt;input type="submit"/&amp;gt;&lt;br /&gt; &amp;lt;input type="reset"/&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="mainText"&gt;Этот пример позволяет пользователю выбрать фото для выгрузки, а также, при необходимости, позволяет указать другое имя для файла.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span class="mainText"&gt;Если вы читали &lt;a href="http://www.developershome.com/wap/xhtmlmp/"&gt;XHTML MP руководство&lt;/a&gt;, тэги и атрибуты в приведенном примере должны быть для вас знакомы, за исключением атрибута &lt;i&gt;enctype&lt;/i&gt; тэга &amp;lt;form&amp;gt;. Атрибут &lt;i&gt;enctype&lt;/i&gt; используется для указания как данные из формы должны быть кодированы(encoded) в HTTP запросе когда атрибут &lt;i&gt;method&lt;/i&gt; равен &lt;i&gt;post&lt;/i&gt;. По умолчанию, атрибут &lt;i&gt;enctype&lt;/i&gt; равен "application/x-www-form-urlencoded". Его надо заменить на "multipart/form-data" для включения возможности выгрузки.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="mainText"&gt;В большинстве случаев это все что нам надо знать про &lt;/span&gt;&lt;span class="mainText"&gt;"multipart/form-data", поскольку мы не будем обрабатывать данные из формы вручную, а будем использовать функции, предоставленные технологией на стороне мервера. Написание собственных функций влечет вылавливание ошибок и не рекомендуется. Если вам нужно изучить детали формата &lt;/span&gt;&lt;span class="mainText"&gt;"multipart/form-data", обратитесь к документу &lt;/span&gt;&lt;span class="mainText"&gt;&lt;a href="http://www.ietf.org/rfc/rfc1867.txt"&gt;Form-based File Upload in HTML (RFC 1867)&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="mainText"&gt;Учтите, что приведенный нами пример не соответствует спецификации &lt;/span&gt;&lt;span class="mainText"&gt;XHTML MP, поскольку "file" не есть правильным значением атрибута &lt;/span&gt;&lt;span class="mainText"&gt;&lt;i&gt;type &lt;/i&gt;тэга &amp;lt;input&amp;gt;. Таким образом, документ не может пройти проверку через валидатор &lt;/span&gt;&lt;span class="mainText"&gt;XHTML MP.&lt;/span&gt;&lt;/p&gt;Приведенные ниже скриншоты отображают этот документ на экране мобильного телефона &lt;span class="mainText"&gt;Nokia 6230:&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_mf4d002c.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_mf4d002c.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_b458bb9.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_b458bb9.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_20261981.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_20261981.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Если вы выберите поле выбора файла, то увидите нечто вроде:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_4a5413c9.png"&gt;&lt;img style="cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_4a5413c9.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_3557204b.png"&gt;&lt;img style="cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_3557204b.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_m470e2881.png"&gt;&lt;img style="cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_m470e2881.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="mainText"&gt;Выберите "Карта памяти" в меню и вы увидите нечто вроде:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_1b49bf48.png"&gt;&lt;img style="cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_1b49bf48.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="mainText"&gt;Выберите софтовую клавишу "Опции" в нижнем левом углу экрана мобильного телефона и вы увидите:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_m541262f6.png"&gt;&lt;img style="cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_m541262f6.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Выберите опцию "Выбрать". Мобильный браузер вернется на первую страницу и в поле выбора файла отобразится имя выбранного файла, вот так:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developershome.com/wap/wapUpload/wap_upload_html_63242344.png"&gt;&lt;img style="cursor: pointer;" src="http://www.developershome.com/wap/wapUpload/wap_upload_html_63242344.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="mainText"&gt;&lt;/span&gt;&lt;br /&gt;Если вы выберите кнопку подтверждения формы, данные отправятся на веб-сервер.&lt;br /&gt;&lt;p&gt;&lt;span class="mainText"&gt;Теперь осталось только написать серверное приложение для обработки загруженного посредством HTTP запроса файла и сохранения его на локальной файловой системе или в базе данных.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="mainText"&gt;В последующих разделах мы расскажем как обработать загрузку файла с помощью &lt;/span&gt;&lt;span class="mainText"&gt;PHP и Java Servlet / JSP. Если вы используете другую технологию - код может отличаться, но идея остается той же.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-6247814531910939899?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/MBGAlyxuXmU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/6247814531910939899/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=6247814531910939899&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/6247814531910939899?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/6247814531910939899?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/MBGAlyxuXmU/xhtml-mp.html" title="XHTML MP пример, демонстрирующий выгрузку файлов" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/09/xhtml-mp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQH0-eCp7ImA9WhRbGEs.&quot;"><id>tag:blogger.com,1999:blog-1375423906386267069.post-8685491751042627510</id><published>2007-09-20T11:59:00.000+03:00</published><updated>2012-02-10T12:09:01.350+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T12:09:01.350+02:00</app:edited><title>Выгрузка файла с мобильного телефона с поддержкой WAP</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/boyCrILsIji6QhXWq411JZbbR2E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/boyCrILsIji6QhXWq411JZbbR2E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/boyCrILsIji6QhXWq411JZbbR2E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/boyCrILsIji6QhXWq411JZbbR2E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="1"&gt;&lt;/a&gt;&lt;div  style="text-align: center; color: rgb(0, 0, 0);font-family:arial;"&gt;&lt;span style="font-weight: bold;"&gt;Введение&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Множество беспроводных устройств вроде мобильных телефонов могут быть использованы в качестве цифровой камеры или музыкального плэера. С их помощью вы можете делать фотографии, записывать видео клипы и прослушивать свои любимые MP3 песни в любое время и в любом месте.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Тем не менее, ваш мобильный телефон может не иметь достаточно места чтобы сохранить все ваши фот/видео/аудио материалы и т.д. Для решения этой проблемы вы можете выгрузить некоторые файлы на сервер через WAP соединение. Когда они вам понадобятся, вы сможете загрузить их обратно в свой телефон.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;К примеру, если вы путешествуете в красивую страну, вы наверняка сделаете много фотографий и запишите много видео клипов с помощью своего мобильного телефона. Вы можете выгрузить некоторые картинки и видео на сервер для того, чтобы показать их друзьям и в то же время для освобождения места для боьшего количества видео и фото на протяжении поездки.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;Некоторые телефоны поддерживают как выгрузку файлов так и 3G беспроводную сеть. Скорость выгрузки во втором случае будет очень быстрой.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="2"&gt;&lt;/a&gt;&lt;div style="text-align: center; font-weight: bold; color: rgb(0, 0, 0); font-family: arial;"&gt;Как выгружать файлы с мобильных телефонов с поддержкой WAP&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="font-weight: normal; text-align: left;"&gt;&lt;span class="mainText"&gt;Как WML (язык разметки WAP 1.x) так и XHTML MP (язык разметки WAP 2.0) не поддерживают выгрузку файлов. Но, к счастью, браузеры в некоторых телефонах с поддержкой WAP 2.0 поддерживают элемент &amp;lt;input type="file" &amp;gt;как расширение XHTML MP. &lt;/span&gt;&lt;span class="mainText"&gt;Некоторые совместимые с HTML WAP браузеры  также поддерживают элемент &amp;lt;input type="file"&amp;gt;.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="font-weight: normal; text-align: left;"&gt;&lt;span class="mainText"&gt;Элемент &amp;lt;input type="file"&amp;gt;будет отображен как кнопка в WAP браузере. При нажатии на нее будет отображени список файлов размещенных на беспроводном устройстве либо карте памяти. Затем вы можете выбрать файл для выгрузки на сервер.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;p style="font-weight: normal; text-align: left;"&gt;&lt;span class="mainText"&gt;На строрне сервера вы используете технологию вроде &lt;/span&gt;&lt;span class="mainText"&gt;ASP / ASP.NET, ColdFusion, Java Servlet / JSP, Perl или PHP для обработки HTTP - запроса как будто это обычная загрузка файла через форму. После этого вы можете сохранить файл в директорию или записать в базу данных.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left; font-weight: normal;"&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a name="3"&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-weight: bold;"&gt;Телефоны Nokia, которые поддерживают выгрузку через WAP&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;Ниже отображена сводная таблица некоторых телефонов Nokia, которые поддерживают выгрузку через WAP (последнее обновление: &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;23 Ноября 2006&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;table border="1" cellpadding="4" cellspacing="0" width="100%"&gt;&lt;thead&gt;&lt;tr valign="top"&gt;&lt;th width="50%"&gt;&lt;p style="text-align: left;"&gt;&lt;span class="mainText"&gt;Модель телефона&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;    &lt;th width="50%"&gt;&lt;div style="text-align: left;"&gt;     &lt;/div&gt;&lt;p style="text-align: left;"&gt;&lt;span class="mainText"&gt;Платформа&lt;/span&gt;&lt;/p&gt;    &lt;/th&gt;   &lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     2650&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 1st Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     3200&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 1st Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     3220&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     3250&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     5140&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6020&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6021&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6030&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6060&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6070&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6101&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6103&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6111&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6112&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6125&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 3rd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6131&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 3rd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6136&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 3rd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6170&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6220&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 1st Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6230&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6230i&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6233&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 3rd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6270&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 3rd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6280&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6282&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 3rd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6630&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 2nd Edition Feature Pack 2 (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6680&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 2nd Edition Feature Pack 2 (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6681&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 2nd Edition Feature Pack 2 (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6682&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 2nd Edition Feature Pack 2 (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6810&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 1st Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6820&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 1st Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     6822&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     7200&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 1st Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     7250i&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 1st Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     7260&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     7270&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     7360&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     7370&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 3rd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     7380&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 3rd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     7600&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 1st Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     8800&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     40 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     9300&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     80 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     9500&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Series     80 Platform 2nd Edition&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     E60&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     E61&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     E70&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N70&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 2nd Edition Feature Pack 3 (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N71&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N72&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 2nd Edition Feature Pack 3 (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N73&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N80&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N90&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 2nd Edition Feature Pack 3 (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N91&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N92&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;   &lt;tr valign="top"&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;Nokia     N93&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;    &lt;td width="50%"&gt;     &lt;p&gt;&lt;span class="mainText"&gt;S60     Platform 3rd Edition (formerly called Series 60)&lt;/span&gt;&lt;/p&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://ikuznetsov.blogspot.com/2007/09/wap.html#contents"&gt;&lt;span style="font-weight: normal;"&gt;СОДЕРЖАНИЕ&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1375423906386267069-8685491751042627510?l=ikuznetsov.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/EUdev/~4/BS86-ZHhrUU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://ikuznetsov.blogspot.com/feeds/8685491751042627510/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1375423906386267069&amp;postID=8685491751042627510&amp;isPopup=true" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8685491751042627510?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1375423906386267069/posts/default/8685491751042627510?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/EUdev/~3/BS86-ZHhrUU/wap_20.html" title="Выгрузка файла с мобильного телефона с поддержкой WAP" /><author><name>Ivan Kuznetsov</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-4E6f_d61TuU/AAAAAAAAAAI/AAAAAAAACC4/l5KnZy0sH8A/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ikuznetsov.blogspot.com/2007/09/wap_20.html</feedburner:origLink></entry></feed>

