Створення CGI на Delphi, Delphi, Програмування, статті

www.delphi.agava.ru

Останнім часом у зв’язку зі зростаючою популярністю мережі Інтернет все частіше стає необхідна розробка додатків, які б могли працювати безпосередньо в www середовищі. Тобто такі, які б повністю інтегрувалися в вже звичні нам веб-сторінки. По суті справи робота з таким додатком відбувається повністю через улюблений браузер користувача і нічим не відрізняється від серфінгу по сторінках. Введення даних так само як і видача оброблених результатів відбувається через html-форми веб-сторінок. Обробка ж даних відбувається на веб-сервері. Таким чином, ми отримаємо саме що ні є клієнт-серверний додаток в його самому класичному розумінні.

Необхідно відзначити, що CGI-додатки розробляються в середовищах розробки орієнтованих на Win32 системи, у тому числі і в Дельфи, а вірніше серверна частина такого програми може працювати тільки під Win32 сервером, наприклад IIS з NT або Personal Web Server з Windows98. Що стосується клієнтської частини, то тут жодних проблем сумісності не повинно бути в принципі, тому що клієнтська частина являє собою згенерований HTML код, який підтримується будь-яким браузером, не важливо яку платформу використовує користувач, будь то Win32, OS / 2, Unix і ін

Таким чином, програмісту пишушей CGI-додатки доведеться зіткнутися з двома основними завданнями – це розробка веб-інтерфейсу і розробка безпосередньо математичної частини програми.

Що стосується веб-інтерфейсів, то тут бажано знати хоча б основи мови HTML. Тут ми не будемо приділяти цьому особливу увагу, хоча знання HTML для програміста CGI-додатків дуже бажано. Зараз же для нас буде цілком достатнім знання таких основопологающих тегів як , та конструкції

.

Ну а тепер будемо розбиратися безпосередньо з тілом CGI-додатки. По-перше, що таке CGI-додаток розробляється в Win32 середовищі розробки? Ця програма типу Win32 CONSOLE, тобто консольний додаток Win32. Тільки от для такого програми на відміну від класичної Win32 консолі стандартним пристроєм введення є або поля введення HTML форми або рядок адреси браузера, а в якості стандартного пристрою виводу використовується вікно браузера. Активізація програми відбувається безпосередньо з небудь HTML сторінки, наприклад так My Application Як ми вже з’ясували таке CGI-додаток буде представляти собою виконувану Win32 програму (exe), таким веб-додаткам прийнято давати розширення CGI, хоча це і не принципово.

Для початку розглянемо приклад найпростішої CGI-програмки видає у вікно користувацького браузера текст “HELLO WORLD”.

===cut===
program MyApp {$ APPTYPE CONSOLE} / / тип програми Win32 консоль {$ E cgi} / / Розширення програми cgi
begin
  WriteLn('Content-Type: text/html');
  WriteLn;
  WriteLn;
  WriteLn('<HTML>');
  WriteLn('<HEAD>'); WriteLn (' Найпростіше CGI додаток </ TITLE>');
  WriteLn('<META http-equiv="Content-Type" content="text/html;' +
                                ' charset=windows-1251">');
  WriteLn('</HEAD>');
  WriteLn('<BODY>'); WrОтiteLn ('<H1> HELLO WORLD </ H1>');
  WriteLn('</BODY>');
  WriteLn('</HTML>');
end.
===cut===
</pre>
<p>Откомпілліруйте цей вихідний код в середовищі Дельфи, помістіть скомпонований виконуваний код у ваш CGI-BIN каталог (в каталог, де дозволено виконання скриптів), напишіть невеличку веб сторінку для активізації нашого CGI-додатки, наприклад, таку: </p>
<pre>===cut==
<HTML>
<HEAD> <TITLE> Форма для активізації CGI-додатки </ TITLE>
</HEAD>
<BODY>
<A HREF="http://localhost/cgi-bin/myapp.cgi"> Натисни сюди для запуску програми </ A>
</BODY>
</HTML>
===cut==
</pre>
<p>Тепер відкрийте нашу веб-сторінку і перейдіть за посиланням “Натисни сюди для запуску додатка “. Якщо ви все зробили правильно, то на екрані у вікні вашого улюбленого браузера з’явитися текст “HELLO WORLD”. </p>
<p>Як бачите все досить просто! Однак, для повноцінної роботи програми, воно повинно вміти не тільки виводити якісь дані, але отримувати дані від користувача, тобто забезпечувати введення інформації. Введення даних у разі CGI-додатки, як ми вже говорили, буде здійснюватися за засобам інтерфейсу організованого веб-формою. Така форма може передавати дані двома способами, залежно від значення атрибута “METHOD”. </p>
<p>У разі <FORM METHOD="GET" ...> … дані передаються через рядок адреси браузера і записуються в змінну системного оточення QUERY_STRING, а розмір рядка даних в змінну<br />
CONTENT_LENGTH. </p>
<p>У разі <FORM METHOD="POST" ...> … передані дані в рядку адреси не відображаються, передаються через стандартний потік вводу консольної програми. </p>
<p>Таким чином задача отримання даних CGI-додатком зводиться до читання певної змінної оточення. Треба зазначити, що передані веб-формою дані мають наступний формат:
</p>
<p>Завдання програміста зводиться до вилучення значень потрібних атрибутів з отриманої від браузера рядки і перетворення цих значень з виду URLencoded в звичайні текстові дані. Суть URLencoded формату полягає в тому, що деякі символи, що містяться в значенні поля, замінюються на% і наступним за ним шістнадцятковому кодом символу, а пробіл замінюється на +. </p>
<p>А зараз давайте розглянемо приклад CGI додатки, яке б виробляло подобу деякої ідентифікації користувача системи. </p>
<pre>===cut== <! - HTML форма введення пароля ->
<HTML>
<HEAD> <TITLE> Авторизація доступу </ TITLE>
</HEAD>
<BODY>
<FORM method="POST" action="http://localhost/cgi-bin/chkpaswd.cgi"> Введіть пароль: 
  <input type="text" name="paswd" size=20> <input type="submit" value="Найті"> <input type="reset" value="Очістіть">
</FORM>
</BODY>
</HTML>
===cut==
</pre>
<p>Далі йде приклад безпосередньо CGI додатки. Слід зазначити, що наведений в цьому прикладі спосіб отримання даних від веб форми (безпосереднє читання пристрої стандартного введення STD_INPUT) є найбільш наочним, але не самим зручним, в Дельфі передбачені більш зручні механізми, яких ми перейдемо пізніше. </p>
<pre>===cut== {Файл проекту CGIApp2}
program CGIApp2;
{$APPTYPE CONSOLE}
uses 
  MainUn in 'MAinUn.pas';
{$E cgi}
begin
  Main;
end.
program MainUn;
interface
uses
  SysUtils, Windows, Classes;
implementation
 / / Функція перекладу шестнадцетірічного символу в число
function HexToInt(CH : char): integer;
begin
  Result:=0;
  case CH of
    '0'..'9': Result:=Ord(CH)-Ord('0');
    'A'..'F': Result:=Ord(CH)-Ord('A')+10;
    'a'..'f': Result:=Ord(CH)-Ord('a')+10;
  end;
end;
 / / Перетворює символи, записані у вигляді URLencoded
function Decode(Value: string): string;
var
  i, L: integer;
begin
  Result:='';
  L:=0;
  for i := 1 to Length(Value) do
  begin
    if(Value[i] <> '%') and (Value[i] <> '+') and (L<1) then
    begin
      Result := Result + Value[i];
    end
    else
    begin
      if(Value[i] = '+') then
        Result := Result + ' '
      else if(Value[i] = '%') then
      begin
        L := 2;
        if(i < Length(Value) - 1) then
        begin
          Result := Result + Chr(HexToInt(Value[i+1]) * 16 + 
					HexToInt(Value[i+2]));
        end;
      end
      else
        Dec(L);
    end;
  end;
end;
 / / Фнкцій повертає значення атрибута заданого  / / Як параметр функції з рядка даних  / / Ліченої з пристрою стандартів введення.
function ParamByName(Name: string): string;
var
  SS, ST : string;
  K : integer;
begin
  Result := '';
  SS := InParams;
  while Length(SS) <> 0 do
   begin
    K := Pos('&',SS);
    if (K <> 0) then
    begin
      ST := Copy(SS,1,K-1);
      SS := Copy(SS,K+1,10000);
    end
     else
     begin
      ST :=SS;
      SS:='';
    end;
    K := Pos('=',ST);
    if(K <> 0) then
    begin
      if(Name = Copy(ST,1,K-1)) then
      begin
        Result := Decode(Copy(ST,K+1,6000));
      end;
    end;
  end;
end;
procedure Main;
var
  STR : string;
  StdIn, Size, Actual : cardinal; 
  InParams : string;
const
  UserPassword : String = 'MyPass';
begin
  StdIn := GetStdHandle(STD_INPUT_HANDLE);
  Size := SetFilePointer(StdIn, 0, nil, FILE_END);
  SetFilePointer(StdIn, 0, nil, FILE_BEGIN);
  SetLength(STR,Size+1);
  if (Size <= 0) then
    Exit; / / Читаємо дані зі стандартного пристрою вводу
  ReadFile(StdIn, STR[1], Size, Actual, nil); 
  STR[Size+1] := #0;
  InParams := PChar(@STR[1]);
  
  APasswd := ParamByName('paswd');
  WriteLn('Content-Type: text/html');
  WriteLn;
  WriteLn;
  WriteLn('<HTML>');
  WriteLn('<HEAD>'); WriteLn ('<TITLE> Ідентифікація користувача </ TITLE>');
  WriteLn('<META http-equiv="Content-Type" content="text/html;'+
					' charset=windows-1251">');
  WriteLn('</HEAD>');
  WriteLn('<BODY>');
  if APasswd = UserPassword then WriteLn ('<H1> Успішна ідентифікація! </ H1>')
  else WriteLn ('<H1> Пароль введено невірно! </ H1>')
  WriteLn('</BODY>');
  WriteLn('</HTML>');
  
end;
===cut==
</pre>
<p>Ну, от поки що все. Але це зовсім не означає, що ми повністю охопили все, що стосується розробки CGI додатків на Дельфі. У самий Найближчим часом я обов’язково продовжу це оповідання, адже попереду ще стільки цікавої та корисної інформації. Так що, до зустрічі!</p>

<div class="ad-top2">
<!-- Top article #956715 -->
<script>(function(e){var t="DIV_DA_"+e+"_"+parseInt(Math.random()*1e3); document.write('<div id="'+t+'" class="directadvert-block directadvert-block-'+e+'"></div>'); if("undefined"===typeof loaded_blocks_directadvert){loaded_blocks_directadvert=[]; function n(){var e=loaded_blocks_directadvert.shift(); var t=e.adp_id; var r=e.div; var i=document.createElement("script"); i.type="text/javascript"; i.async=true; i.charset="windows-1251"; i.src="//code.directadvert.ru/data/"+t+".js?async=1&div="+r+"&t="+Math.random(); var s=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]; s.appendChild(i); var o=setInterval(function(){if(document.getElementById(r).innerHTML&&loaded_blocks_directadvert.length){n(); clearInterval(o)}},50)} setTimeout(n)}loaded_blocks_directadvert.push({adp_id:e,div:t})})(956715)</script>
</div>

<div style="float:right">
<div class="yashare-auto-init" data-yashareL10n="ua" data-yashareType="icon" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,moikrug,gplus"></div>
</div>
<h4>Схожі статті:</h4><ul><li><a href="http://easy-code.com.ua/2010/12/chas-vikonannya-sql-zapitiv/" title="Час виконання SQL запитів.">Час виконання SQL запитів.</a> (0)</li><li><a href="http://easy-code.com.ua/2010/12/no-spam-php/" title="No spam.php">No spam.php</a> (0)</li><li><a href="http://easy-code.com.ua/2011/02/vidklyuchennya-ryadka-mittyevogo-poshuku-v-internet-explorer-7/" title="Відключення рядка миттєвого пошуку в Internet Explorer 7">Відключення рядка миттєвого пошуку в Internet Explorer 7</a> (0)</li><li><a href="http://easy-code.com.ua/2011/02/korporativnij-ie8-stvoryuyemo-vlasnu-zbirku/" title="Корпоративний IE8: створюємо власну збірку">Корпоративний IE8: створюємо власну збірку</a> (0)</li><li><a href="http://easy-code.com.ua/2011/02/process-explorer-v-11-0-download/" title="Process Explorer v.11.0 (download)">Process Explorer v.11.0 (download)</a> (0)</li><li><a href="http://easy-code.com.ua/2011/05/pereglyad-yarusiv-tier-view/" title="Перегляд ярусів (Tier View)">Перегляд ярусів (Tier View)</a> (0)</li><li><a href="http://easy-code.com.ua/2011/03/perevirka-orfografi%d1%97-v-firefox/" title="Перевірка орфографії в Firefox">Перевірка орфографії в Firefox</a> (0)</li></ul>	<!--for paginate posts-->
		
	<hr/>
	
	<p><strong><em>
    Сподобалася стаття? Ви можете <a href="#comments"> залишити відгук </a> або <a href = "http://easy-code.com.ua/feed/" > підписатися на RSS </a>, щоб автоматично отримувати інформацію про нові статтях.
	    </em></strong></p>

	<!--Post Meta-->
	<div class="post-meta">
	<strong>Метки: </strong><a href="http://easy-code.com.ua/tag/result/" rel="tag">$result</a>, <a href="http://easy-code.com.ua/tag/begin/" rel="tag">begin</a>, <a href="http://easy-code.com.ua/tag/cgi-dodatki/" rel="tag">CGI-додатки</a>, <a href="http://easy-code.com.ua/tag/writeln/" rel="tag">WriteLn</a>, <a href="http://easy-code.com.ua/tag/bezposeredno/" rel="tag">безпосередньо</a>, <a href="http://easy-code.com.ua/tag/brauzera/" rel="tag">браузера</a>, <a href="http://easy-code.com.ua/tag/programi/" rel="tag">програми</a><br />	<strong>Рубрики:</strong> <a href="http://easy-code.com.ua/category/delphi/" rel="category tag">Delphi</a>	</div>		
		
	<!--include comments template-->
	<div id="comments-wrap">

	<p>Коментарів поки що немає.</p>

<!--
<p><a href="http://easy-code.com.ua/2012/08/stvorennya-cgi-na-delphi-delphi-programuvannya-statti/feed/">RSS-стрічка коментарів.</a> 
	<a href="http://easy-code.com.ua/2012/08/stvorennya-cgi-na-delphi-delphi-programuvannya-statti/trackback/" rel="trackback">Адреса для трекбек</a>
</p>
-->

<h3 class="postcomment">Ваш отзыв</h3>

<p>Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <code><a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> </code></p>

<form action="http://easy-code.com.ua/wp-comments-post.php" method="post" id="commentform">
	
	<p>
	<input type="text" name="author" id="author" class="textarea" value="" size="28" tabindex="1" />
	<label for="author">Им'я</label> *	</p>

	<p>
	<input type="text" name="email" id="email" value="" size="28" tabindex="2" />
	<label for="email">E-mail</label> *	</p>

	<p>
	<input type="text" name="url" id="url" value="" size="28" tabindex="3" />
	<label for="url">Сайт</label>
	</p>

	
	<p>
	<label for="comment">Повідомлення</label>
	<br />
	<textarea name="comment" id="comment" cols="60" rows="10" tabindex="4"></textarea>
	</p>

	<p>
	<input name="submit" id="submit" type="submit" tabindex="5" value="відправити" />
	<input type="hidden" name="comment_post_ID" value="8371" />
	<input type="hidden" name="redirect_to" value="/2012/08/stvorennya-cgi-na-delphi-delphi-programuvannya-statti/" />
	</p>
	<p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="194af0d977" /></p><p style="display: none;"><input type="hidden" id="ak_js" name="ak_js" value="249"/></p></form>

</div>
	
	<!--do not delete-->
		
	
<!--single.php end-->
</div>

<!--include sidebar-->
<!--sidebar.php-->
<div id="sidebar">

	<div class="sidebar-rss">
	<h3>Подписка через RSS</h3>
	<p><a href="http://easy-code.com.ua/feed/"><img src="http://easy-code.com.ua/wp-content/themes/elegantblue/images/rss.jpg" alt="Подписка на RSS" ></img></a>Якщо вам сподобалася інформація на нашому сайті, ви можете підписатися на оновлення через RSS.</p>
	</div>
<BR>


<div class="something">
<a href='http://easy-code.com.ua/tag/download/' class='tag-link-563 tag-link-position-1' title='648 topics' style='font-size: 12.328358208955pt;'>Download</a>
<a href='http://easy-code.com.ua/tag/microsoft/' class='tag-link-66 tag-link-position-2' title='772 topics' style='font-size: 13.522388059701pt;'>Microsoft</a>
<a href='http://easy-code.com.ua/tag/oracle/' class='tag-link-18322 tag-link-position-3' title='357 topics' style='font-size: 8.4477611940299pt;'>Oracle</a>
<a href='http://easy-code.com.ua/tag/windows/' class='tag-link-18319 tag-link-position-4' title='1,383 topics' style='font-size: 17.253731343284pt;'>Windows</a>
<a href='http://easy-code.com.ua/tag/internet/' class='tag-link-132 tag-link-position-5' title='366 topics' style='font-size: 8.5970149253731pt;'>Інтернет</a>
<a href='http://easy-code.com.ua/tag/merezhi/' class='tag-link-143 tag-link-position-6' title='438 topics' style='font-size: 9.7910447761194pt;'>Мережі</a>
<a href='http://easy-code.com.ua/tag/modeli/' class='tag-link-530 tag-link-position-7' title='360 topics' style='font-size: 8.5970149253731pt;'>моделі</a>
<a href='http://easy-code.com.ua/tag/mozhete/' class='tag-link-3 tag-link-position-8' title='569 topics' style='font-size: 11.582089552239pt;'>можете</a>
<a href='http://easy-code.com.ua/tag/mozhut/' class='tag-link-311 tag-link-position-9' title='384 topics' style='font-size: 9.044776119403pt;'>можуть</a>
<a href='http://easy-code.com.ua/tag/dopomogoyu/' class='tag-link-273 tag-link-position-10' title='731 topics' style='font-size: 13.074626865672pt;'>допомогою</a>
<a href='http://easy-code.com.ua/tag/dozvolyaye/' class='tag-link-542 tag-link-position-11' title='664 topics' style='font-size: 12.477611940299pt;'>дозволяє</a>
<a href='http://easy-code.com.ua/tag/kompani%d1%97/' class='tag-link-554 tag-link-position-12' title='546 topics' style='font-size: 11.283582089552pt;'>компанії</a>
<a href='http://easy-code.com.ua/tag/koristuvachiv/' class='tag-link-137 tag-link-position-13' title='337 topics' style='font-size: 8.1492537313433pt;'>користувачів</a>
<a href='http://easy-code.com.ua/tag/potribno/' class='tag-link-18 tag-link-position-14' title='566 topics' style='font-size: 11.432835820896pt;'>потрібно</a>
<a href='http://easy-code.com.ua/tag/programi/' class='tag-link-387 tag-link-position-15' title='1,547 topics' style='font-size: 18pt;'>програми</a>
<a href='http://easy-code.com.ua/tag/prosto/' class='tag-link-99 tag-link-position-16' title='328 topics' style='font-size: 8pt;'>просто</a>
<a href='http://easy-code.com.ua/tag/vikoristannya/' class='tag-link-690 tag-link-position-17' title='368 topics' style='font-size: 8.7462686567164pt;'>використання</a>
<a href='http://easy-code.com.ua/tag/vikoristovuvati/' class='tag-link-890 tag-link-position-18' title='427 topics' style='font-size: 9.6417910447761pt;'>використовувати</a>
<a href='http://easy-code.com.ua/tag/znachennya/' class='tag-link-198 tag-link-position-19' title='1,003 topics' style='font-size: 15.164179104478pt;'>значення</a>
<a href='http://easy-code.com.ua/tag/roboti/' class='tag-link-123 tag-link-position-20' title='1,104 topics' style='font-size: 15.761194029851pt;'>роботи</a>
<a href='http://easy-code.com.ua/tag/rozrobki/' class='tag-link-1235 tag-link-position-21' title='328 topics' style='font-size: 8pt;'>розробки</a>
<a href='http://easy-code.com.ua/tag/sistemi/' class='tag-link-476 tag-link-position-22' title='1,131 topics' style='font-size: 15.910447761194pt;'>системи</a>
<a href='http://easy-code.com.ua/tag/upravlinnya/' class='tag-link-556 tag-link-position-23' title='760 topics' style='font-size: 13.373134328358pt;'>управління</a>
<a href='http://easy-code.com.ua/tag/server/' class='tag-link-197 tag-link-position-24' title='650 topics' style='font-size: 12.328358208955pt;'>сервер</a>
<a href='http://easy-code.com.ua/tag/stvorennya/' class='tag-link-439 tag-link-position-25' title='460 topics' style='font-size: 10.089552238806pt;'>створення</a>
<a href='http://easy-code.com.ua/tag/tablici/' class='tag-link-496 tag-link-position-26' title='469 topics' style='font-size: 10.238805970149pt;'>таблиці</a>
<a href='http://easy-code.com.ua/tag/tilki/' class='tag-link-6 tag-link-position-27' title='1,295 topics' style='font-size: 16.805970149254pt;'>тільки</a>
<a href='http://easy-code.com.ua/tag/fajliv/' class='tag-link-293 tag-link-position-28' title='410 topics' style='font-size: 9.3432835820896pt;'>файлів</a>
<a href='http://easy-code.com.ua/tag/funkci%d1%97/' class='tag-link-218 tag-link-position-29' title='439 topics' style='font-size: 9.7910447761194pt;'>функції</a>
<a href='http://easy-code.com.ua/tag/informaci%d1%97/' class='tag-link-24 tag-link-position-30' title='368 topics' style='font-size: 8.7462686567164pt;'>інформації</a></div>
	<!--l_sidebar.php-->
<div id="l_sidebar">
	<ul>
<br>
	<!--favorite posts-->
	<li>
    	<h2>Нове на сайті</h2>
        <ul>
        	<li><a href='http://easy-code.com.ua/2015/11/keruyuchi-klavishi-i-menyu-informix/'>Керуючі клавіші і меню INFORMIХ</a></li>
	<li><a href='http://easy-code.com.ua/2015/10/vipushheno-reliz-fastreport-fmx/'>Випущено реліз FastReport FMX</a></li>
	<li><a href='http://easy-code.com.ua/2015/10/oracle/'>Oracle</a></li>
	<li><a href='http://easy-code.com.ua/2015/09/func-hgi-35i-vertolit-z-keruvannyam-vid-iphone/'>Func HGI-35i: вертоліт з керуванням від iPhone</a></li>
	<li><a href='http://easy-code.com.ua/2015/08/faq-po-grafiku-i-animaciyu-dlya-web/'>FAQ по графіку і анімацію для Web</a></li>
	<li><a href='http://easy-code.com.ua/2015/07/funkciya-viznachennya-kilkosti-robochix-dniv/'>Функція визначення кількості робочих днів</a></li>
	<li><a href='http://easy-code.com.ua/2015/07/inshi-mozhlivosti-obyednannya-fajliv/'>Інші можливості об’єднання файлів</a></li>
	<li><a href='http://easy-code.com.ua/2015/07/oglyad-navushnikiv-z-aktivnim-shumozaglushennyam-asus-nc1/'>Огляд навушників з активним шумозаглушенням ASUS NC1</a></li>
	<li><a href='http://easy-code.com.ua/2015/06/net-service-oriented-architecture-soa/'>.NET: Service Oriented Architecture (SOA)</a></li>
	<li><a href='http://easy-code.com.ua/2015/06/oglyad-behold-betab-7004/'>Огляд Behold BeTAB 7004</a></li>
        </ul>
	</li>
	<li>
    	<h2>Реклама</h2>
        <ul>
<div class="adcontentcen1">
<!-- Sidebar 160x600 #956693 -->
<script>(function(e){var t="DIV_DA_"+e+"_"+parseInt(Math.random()*1e3); document.write('<div id="'+t+'" class="directadvert-block directadvert-block-'+e+'"></div>'); if("undefined"===typeof loaded_blocks_directadvert){loaded_blocks_directadvert=[]; function n(){var e=loaded_blocks_directadvert.shift(); var t=e.adp_id; var r=e.div; var i=document.createElement("script"); i.type="text/javascript"; i.async=true; i.charset="windows-1251"; i.src="//code.directadvert.ru/data/"+t+".js?async=1&div="+r+"&t="+Math.random(); var s=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0]; s.appendChild(i); var o=setInterval(function(){if(document.getElementById(r).innerHTML&&loaded_blocks_directadvert.length){n(); clearInterval(o)}},50)} setTimeout(n)}loaded_blocks_directadvert.push({adp_id:e,div:t})})(956693)</script>
</div>

        </ul>
	</li>

	
	</ul>
</div>
<!--l_sidebar.php end-->	<!--r_sidebar.php-->
<div id="r_sidebar">
	<ul>

<br>
<li>
<h2>Популярне</h2>
<ul>
<!-- 2017-08-17 23:00:04 -->
<li><a href="http://easy-code.com.ua/2011/04/avtomatizaciya-biznes-procesiv-svitle-majbutnye-vitchiznyanix-kompanij/">Автоматизація бізнес-процесів – світле майбутнє вітчизняних компаній (12)</a></li>
<li><a href="http://easy-code.com.ua/2011/01/recenzuvannya-dokumentiv-u-word/">Рецензування документів у Word (7)</a></li>
<li><a href="http://easy-code.com.ua/2012/09/elementi-modeli-sutnist-zvyazok-integraciya-dodatkiv-i-danix-bazi-danix-statti/">Елементи моделі "сутність-зв'язок", Інтеграція додатків і даних, Бази даних, статті (7)</a></li>
<li><a href="http://easy-code.com.ua/2012/08/nalashtuvannya-ekrannix-zastavok-v-windows-7-za-dopomogoyu-reyestru-windows-operacijni-sistemi-statti/">Налаштування екранних заставок в Windows 7 за допомогою реєстру, Windows, Операційні системи, статті (16)</a></li>
<li><a href="http://easy-code.com.ua/2014/07/kalkulyator-teplotexnichnij-rozraxunok/">Калькулятор «Теплотехнічний розрахунок» (17)</a></li>
<li><a href="http://easy-code.com.ua/2014/11/pereklad-pdf-dokumentiv-za-dopomogoyu-google-translate/">Переклад PDF-документів за допомогою Google Translate (7)</a></li>
<li><a href="http://easy-code.com.ua/2012/08/suputnikovij-internet-ta-telebachennya-na-noutbuci-za-dopomogoyu-prof-dvb-s-1100-usb-gadzheti-oglyadi/">Супутниковий інтернет та телебачення на ноутбуці за допомогою Prof DVB-S 1100 USB, Гаджети, огляди (13)</a></li>
<li><a href="http://easy-code.com.ua/2012/06/formatuvannya-abzaciv-u-word-2010-ms-office-programni-kerivnictva-statti/">Форматування абзаців у Word 2010, MS Office, Програмні керівництва, статті (28)</a></li>
<li><a href="http://easy-code.com.ua/2012/08/gibernaciya-son-i-gibridnij-splyachij-rezhim-v-windows-7-pitannya-i-vidpovidi-windows-operacijni-sistemi-statti/">Гібернація, сон і гібридний сплячий режим в Windows 7 – питання і відповіді, Windows, Операційні системи, статті (13)</a></li>
<li><a href="http://easy-code.com.ua/2011/02/ustanovka-movnix-paketiv-windows-7-vruchnu/">Установка мовних пакетів Windows 7 вручну (9)</a></li>
<li><a href="http://easy-code.com.ua/2011/10/suputnikovij-internet-bez-tarilki-efirne-cifrove-movlennya-za-standartom-dvb-t-gadzheti-oglyadi/">Супутниковий інтернет без тарілки – ефірне цифрове мовлення за стандартом DVB-T, Гаджети, огляди (6)</a></li>
<li><a href="http://easy-code.com.ua/2011/03/serverni-operacijni-sistemi-providnix-virobnikiv/">Серверні операційні системи провідних виробників (11)</a></li>
<li><a href="http://easy-code.com.ua/2012/09/uroki-photoshop-yak-pokrashhiti-foto-znyate-na-mobilnik-fotoobroblennya-programi-dlya-roboti-z-grafikoyu-programni-kerivnictva-statti/">Уроки Photoshop: Як покращити фото зняте на мобільник, фотооброблення, Програми для роботи з графікою, Програмні керівництва, статті (8)</a></li>
<!-- 2017-08-17 23:00:04 --></ul>
</li>


	</ul>
</div>
<!--r_sidebar.php end-->

</div>
<!--sidebar.php end--><!--include footer-->
</div>
<div id="footer">
<p>
При використанні матеріалів даного сайту пряме і явне посилання на сайт <a href="http://www.easy-code.com.ua/"> www.easy-code.com.ua </a> є обов'язковим.
</p>
<!--footer.php-->
<div id="footer-wrap">
<noindex>
<!--LiveInternet counter--><script type="text/javascript"><!--
document.write("<a href='http://www.liveinternet.ru/click' "+
"target=_blank><img src='//counter.yadro.ru/hit?t19.6;r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"":
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random()+
"' alt='' title='LiveInternet: показано число просмотров за 24"+
" часа, посетителей за 24 часа и за сегодня' "+
"border='0' width='88' height='31'><\/a>")
//--></script><!--/LiveInternet-->
<!-- Yandex.Metrika counter -->
<div style="display:none;"><script type="text/javascript">
(function(w, c) {
    (w[c] = w[c] || []).push(function() {
        try {
            w.yaCounter10604395 = new Ya.Metrika({id:10604395, enableAll: true});
        }
        catch(e) { }
    });
})(window, "yandex_metrika_callbacks");
</script></div>
<script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript" defer="defer"></script>
<noscript><div><img src="//mc.yandex.ru/watch/10604395" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->

<script type="text/javascript" src="//yandex.st/share/share.js"
charset="utf-8"></script>
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">
  {lang: 'ru'}
</script>
</noindex>
<BR><strong>ЕasyСode</strong>	

                 
<!--necessary-->
<script type='text/javascript' src='http://easy-code.com.ua/wp-content/plugins/akismet/_inc/form.js?ver=3.3'></script>
<script type='text/javascript' src='http://easy-code.com.ua/wp-includes/js/wp-embed.min.js?ver=4.7.5'></script>
<script type='text/javascript' src='http://easy-code.com.ua/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
<script type='text/javascript' src='http://easy-code.com.ua/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1'></script>
<script type='text/javascript' src='http://easy-code.com.ua/wp-content/plugins/easy-fancybox/fancybox/jquery.fancybox-1.3.8.min.js?ver=1.5.8.2'></script>
<script type='text/javascript' src='http://easy-code.com.ua/wp-content/plugins/easy-fancybox/js/jquery.easing.min.js?ver=1.3.2'></script>
<script type='text/javascript' src='http://easy-code.com.ua/wp-content/plugins/easy-fancybox/js/jquery.mousewheel.min.js?ver=3.1.12'></script>
<script type="text/javascript">
jQuery(document).on('ready post-load', function(){ jQuery('.nofancybox,a.pin-it-button,a[href*="pinterest.com/pin/create/button"]').addClass('nolightbox'); });
jQuery(document).on('ready post-load',easy_fancybox_handler);
jQuery(document).on('ready',easy_fancybox_auto);</script>
</div>
</div>
<div class="soc-buttons">
<div  class="yashare-auto-init" data-yashareL10n="ru" data-yashareQuickServices="vkontakte,facebook,twitter,odnoklassniki,moimir,gplus" data-yashareTheme="counter"></div>
</div>
<script>!window.jQuery && document.write('<script src="http://yastatic.net/jquery/2.1.3/jquery.min.js"><\/script>');</script>
<script src="http://easy-code.com.ua/wp-content/themes/elegantblue/js/jquery.hc-sticky.min.js"></script>
<script>
jQuery(document).ready(function($){
$('.soc-buttons').hcSticky({
    top: 25,
    bottomEnd: 90,
    wrapperClassName: 'sidebar-sticky2',
    noContainer: false
});
});
</script>
<script type="text/javascript" src="//yastatic.net/share/share.js" charset="utf-8"></script>
</body>
</html>