Серверне програмування. Вибір методу розв'язання задачі. Я хочу бути розробником повного циклу

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

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

Спокій зараз колективний розум зробить вибір за вас.

У першій частині поговоримо про мови веб-простору. Який передмовний розклад треба знати і який порядок вивчення? Про це далі.

Передова, тил та неочевидний вибір

Перший вибір, який треба зробити – сфера відповідальності.

Front-end розробники
Іноді їх називають веб-дизайнерами, але це неправильно. Завдання front-end розробника зводиться до створення інтерфейсу, він відповідає за те, щоб веб-сторінка завантажувалася швидко, не гальмувала і код на ній працював правильно.

Backend-розробники
Люди, відповідальні за приховану від очей функціональність та обробку даних. Їхня робота - написання серверного коду.

Full-stack фахівці
Вони затребувані найбільш просто тому, що здатні поодинці виконати всі побажання замовника.

Звичайно, найпростіше поставити собі завдання розібратися з усім, але це лише розвіє вашу увагу на ранніх етапах, а на пізніших ви і так пізнаєте необхідність хоча б поверхового вивчення всіх процесів. Тому підемо по порядку та почнемо з front-end.

Особа, яку треба продати

Найголовніше, що не треба робити людині, яка бажає стати front-end розробником, так це шукати мінімальний список вимог до фахівця. У цьому випадку великий ризик натрапити на статті, подібні до статті «Frontend-розробники повинні бути в темі всього». Все що там написано – абсолютна правда, але прийти до цього треба починаючи з малого, а мале – це 3 основні кити frontend-а: HTML, CSS та JavaScript. Базу для подальшого навчання ви можете отримати на .

Ще кілька років тому, вивчивши HTML та CSS у форматі кількох розумних книг, а JS на рівні jQuery, можна було всерйоз претендувати на позицію junior-a. Однак сьогодні часи змінилися, а вимоги значно зросли. Втім, знання HTML і CSS, як і раніше, можна вкласти в пару хороших книг:

  • «Вивчаємо HTML5» Брюс Лоусон, Ремі Шарп,
  • “CSS. Рецепти програмування » Крістофер Шмітт.

На JavaScript доведеться витратити чимало часу. Тут мало буде вивчити теорію, наприклад, за книгою «JavaScript: Сильні сторони». Необхідно кілька місяців набивати руки та тренувати мізки на практиці, у тому числі використовуючи згаданий jQuery.

Крім теоретичних та практичних знань, front-end фахівець має дуже добре знати останні інтернет-тенденції та вміти професійно їх застосовувати. Адже це саме та зона відповідальності, за якою переважна більшість замовників оцінюватиме весь проект на момент здачі.

Обробити, прикрутити та створити

Базова мова для будь-якого back-end розробника – PHP. Це деяка основа, знати яку досконало, як і робити основним інструментом, зовсім не обов'язково, але на базовому рівні розуміти. Для цього можна хоча б уважно вивчити книгу "PHP: правильний шлях".

Що стосується актуальних мов, то вибирати швидше за все доведеться з Ruby та Python, причому вибір цей – чиста смаківщина. Навіть тут на періодично спалахують суперечки, але навіть у суперечці за зручність вивчення однозначного переможця знайти неможливо. За Python корисно буде прочитати книгу з нехитрою назвою «Вивчаємо Python», за Ruby – «Rails 4. Гнучка розробка веб-додатків».

Ще одна мова з розряду must know - той самий JavaScript з його похідними jQuery і Ajax. У даному випадку цікавить саме back-end розробка, тому витрачати час на загальне вивчення мови немає сенсу, а ось відвідування ресурсів на кшталт блогу Антона Шевчука може виявитися вкрай корисним.

Ну і звичайно знадобиться знання в області баз даних. Як мінімум, це означає вивчення SQL, як максимум – досвід роботи з популярними БД.

Один за всіх

Правда професії веб-розробника в тому, що так званих «сферичних» фахівців тут практично немає, та й рядові замовники далеко не завжди розуміють ці поділки, тому в тому чи іншому вигляді до full-stack доведеться прийти досить швидко. Відповідно перечитайте попередні 2 розділи, відвідайте ще раз і починайте гризти граніт програмної науки.

Знання не про мови

Крім самих мов, необхідно вивчати всі профільні надбудови, що додаються. Особливо це стосується JavaScript (AngularJS, Knockout, Backbone) та CSS (Bootstrap, Foundation). Крім того, вам необхідно набити руку з системами контролю версій Git і SVN.

Для того, щоб досягти великих успіхів у веб-розробці - запасіться терпінням, рухайтеся крок за кроком до своєї мети, вибираючи ту доріжку, яка видається вам максимально цікавою. І зовсім не важливо, якщо вона відрізняється від описаної вище або в якійсь іншій статті. Любіть те, що робите, присвячуйте цьому час, вкладайте душу, і успіх не забариться.

Що? Яке ще серверне програмування? Що це за біда? І навіщо вона нам потрібна?

Ми начебто навчилися створювати Web-сторінки в середовищі Dreamweaver. Ми навіть навчилися створювати з його допомогою цілі Web-сайти та публікувати їх на Web-сервері. Ми вивчили два різновиди дизайну сторінок: кадровий, коли сайти будуються на основі наборів кадрів, та табличний, коли вміст сторінки міститься у велику складну таблицю. Ми познайомилися з таблицями стилів, метатегами та серверними директивами. І, нарешті, дізналися про Web-програмування та Web-сценарії, що дозволяють додати "життя" нашим статичним сторінкам. Що ще треба для щастя?

Так, раніше вивченого нам цілком вистачить, щоб створювати цілком пристойні сайти. Багато веб-дизайнерів на цьому і зупиняються. Але ж ми хочемо більшого, чи не так?

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

Але давайте по порядку. І почнемо ми з того, що з'ясуємо, навіщо ці серверні програми потрібні.

Що таке серверне програмування

Справді, що це таке та з чим його їдять?

Навіщо потрібні серверні програми

Ви колись відвідували інтернет-магазин? Наприклад, найпопулярніший "Озон" (http://www.ozon.ru).Пам'ятаєте, як виконується замовлення товару?

Якщо не пам'ятаєте чи взагалі не знаєте, що таке інтернет-магазин, давайте згадаємо (або дізнаємось).

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

Що при цьому відбувається? Як обробляються введені вами дані? Невже самим Web-браузером?

Не. Ці дані обробляються на веб-сервері.

Інтернет-магазин - просто один із прикладів, що прийшли в голову автору, що є шанувальником та постійним клієнтом вищезгаданого "Озона". Так само працюють сервери електронної пошти, заснованої на Web, пошукові машини, електронні дошки оголошень, форуми, взагалі, будь-які Web-сайти, які приймають від відвідувача якісь дані та обробляють їх. У всіх цих випадках Web-браузер приймає від відвідувача дані та відправляє їх Web-серверу, який обробляє їх і видає результат обробки у вигляді автоматично сформованої Web-сторінки.

Як це відбувається насправді? Нині ми це з'ясуємо. І насамперед відповімо на запитання...

Як Web-сервер обробляє дані користувача

Отже, яким чином програма Web-сервера обробляє дані, відправлені їй користувачем?

Та ніяк. Web-сервер не пристосований їх обробляти. Його завдання: прийом від Web-браузера запиту на файли (Web-сторінки, таблиці стилів, графічні зображення, фільми, звуки, архіви, файли, що виконуються тощо), пошук цих самих файлів на жорстких дисках серверного комп'ютера і відправка знайдених файлів назад Web-браузеру. Це його основне завдання. Звичайно, деякі особливо потужні сервери можуть виконувати додаткові дії над файлами, що надсилаються перед власне їх відправкою (зокрема, виконувати серверні директиви). Є і програми-"багатоверстатники", що виконують функції не тільки Web-сервера, але і сервера FTP, пошти, новин UseNet і бог знає чого ще. Але основна функція: проста видача файлів за вимогами клієнтів -і не більше.

Секрет у тому, що дані відвідувача обробляються не самим Web-сервером. Для цього застосовуються спеціальні програми, що працюють разом із Web-сервером на тому самому серверному комп'ютері. Вони називаються серверними програмами,не мають інтерфейсу користувача та "спілкуються" тільки з Web-сервером, приймають від нього введені користувачем дані та повертають йому результат. Цим вони докорінно відрізняються від клієнтських програм, що працюють безпосередньо з користувачем. (До клієнтських програм відноситься, зокрема, ваш улюблений Web-браузер.)

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

Ось тут і починається найцікавіше. Справа в тому, що результат, який повертається серверною програмою Web-серверу, - це не що інше, як звичайний HTML-код! Фактично серверна програма повертає готову Web-сторінку, сформовану з урахуванням даних, введених відвідувачем. Така сторінка називається динамічної,на відміну від статичнихсторінок, написаних Web-дизайнером та збережених у файлах на дисках серверного комп'ютера. А цю динамічну сторінку Web-сервер і направляє клієнту як відповідь на введені дані.

Серверні програми поділяються на чотири види.

  1. Виконувані програми, що працюють через інтерфейс CGI(Common Gateway Interface – загальний інтерфейс обміну), так звані CGI-npoграми.Цей різновид серверних програм - найстаріший, проте аж ніяк не застарілий.
  2. Розширення Web-сервера(Додатки формату ISAPI, NSAPI, модулі розширення Apache тощо). Новий спосіб, що дозволяє вбудовувати серверні програми в сам Web-сервер, роблячи їх складовими частинами. Вперше запропонований фірмою Microsoft для їхнього сервера Microsoft Internet Information Server (інтерфейс ISAPI) та розробниками популярного безкоштовного Web-сервера Apache.
  3. Активні серверні сторінки(ASP, JSP та ін.). Фактично це звичайні статичні Web-сторінки, збережені у файлах, які, крім звичайного HTML-коду, включають команди, оброблювані або самим Web-сервером, або його розширенням. Також новий спосіб вперше запропонований Microsoft для того ж Internet Information Server.
  4. Серверні сценарії,написані мовою, що інтерпретується (Perl, Python, VBScript, JavaScript та ін.). Звичайні сценарії, які працюють через інтерфейс CGI або ISAPI на стороні сервера.

Тепер розглянемо все це розмаїття докладніше.

CGI-програми являють собою звичайні виконувані файли, написані будь-якою мовою програмування і відкомпільовані в машинний код процесора. Вони не мають інтерфейсу користувача (як і всі серверні програми), а працюють з Web-сервером, отримують від нього вхідні дані і йому пересилають результати своєї роботи. Запускаються вони самим Web-сервером, коли вони виникає потреба (коли необхідно обробити отримані від користувача дані), і працюють під управлінням операційної системи серверного комп'ютера. При цьому, якщо Web-сервер надходить одночасно кілька запитів на обробку даних від користувачів, він запускає відповідну кількість копій CGI-програми.

До переваг CGI-програм можна віднести легкість створення (багато середовищ розробки програм підтримують створення таких додатків, зокрема найпопулярніший Borland Delphi, починаючи з версії 3) і простоту налагодження. Також, оскільки CGI-додатки є незалежними програмами, вони виконуються окремо від Web-сервера (як кажуть програмісти та системні адміністратори, виконуються в іншому адресному просторі). Це означає, що при збої в CGI-програмі завершується лише вона – сам Web-сервер залишається "на плаву". А недолік CGI-програм лише один: велика витрата системних ресурсів, оскільки для обробки кожного набору даних запускається окрема копія серверної програми. І якщо Web-сервер надійде занадто багато запитів на обробку даних, серверний комп'ютер може і зависнути.

Розширення Web-сервера - більш новий різновид серверних програм. Вони є звичайні бібліотеки DLL, у яких реалізована вся логіка серверної програми. Такі бібліотеки хіба що вбудовуються у програму Web-сервера і як її невід'ємна частина. Оскільки бібліотеки DLL працюють тільки в середовищі Windows, щоб створювати розширення в інших операційних системах, були придумані й інші формати. Зокрема, модулі розширення сервера Apache не є бібліотеками DLL,

Саме як бібліотек DLL створюються розширення Web-серверів Internet Information Server фірми Microsoft і Netscape Web Server фірми Netscape. У першому випадку розширення мають формат ISAPI(Internet Server Application Programming Interface - інтерфейс програмування програм інтернет-сервера), а в другому - NSAPI(Netscape Server Application Programming Interface - інтерфейс програмування додатків сервера Netscape). Формат модулів розширення Apache так і називається – модулі Apache.

Гідність у розширень Web-сервера одна: дбайлива витрата системних ресурсів. Справа в тому, що для обробки всіх наборів даних користувача запускається всього один екземпляр розширення, який забирає істотно менше ресурсів, ніж безліч запущених CGI-програм. Однак розширення важче створювати та налагоджувати, до того ж вони не такі безпечні.

Як CGI-програми. Оскільки вони працюють як частина Web-сервера, будь-яка помилка розширення призведе до зависання сервера.

Обидва описані вище види серверних програм мають один величезний недолік. Перш ніж вони зможуть працювати, вони повинні бути написані мовою програмування та відкомпільовані в машинні коди процесора, що забирає багато часу, особливо при налагодженні. Звичайно, відкомпільовані програми працюють швидше за інтерпретованих, тобто тих, де кожна інструкція читається, розшифровується і обробляється спеціальною програмою-інтерпретатором. Але в інтерпретованих програм є свої переваги, головними з яких є простота і швидкість написання. Два наступні різновиди серверних програм, які будуть описані, якраз інтерпретуються.

Як мовилося раніше, активні серверні сторінки - це звичайні Web-сторінки, які включають особливі серверні сценарії,виконувані самим Web-сервером або спеціальною серверною програмою (CGI-додатком або розширенням Web-сервера). Зокрема, ASP(Active Server Pages - активні серверні сторінки), що підтримуються Microsoft Internet Information Server, та JSP(Java Server Pages - серверні сторінки, написані на JavaScript), що підтримуються рядом інших Web-серверів, працюють саме таким чином. Серверні сторінки ASP пишуться на мовах JavaScript та VBScript, а JSP – лише на JavaScript.

Переваги активних серверних сторінок ви знаєте: легкість і швидкість написання і простота налагодження. Крім того, оскільки активні серверні сторінки - це звичайні Web-сторінки з "вкрапленнями" програмного коду, їх написання легко освоїть усі, хто знайомий з HTML. Недолік: відносна повільність та підвищені вимоги до системних ресурсів.

Серверні сценарії подібні до активних серверних сторінок тим, що є інтерпретованими, однак є "чистим" програмним кодом, без HTML-""домішок". Інтерпретатор практично завжди є CGI-програмою, проте ніщо не заважає розробити його у вигляді розширення Web-сервера Сценарії зазвичай пишуться мовою програмування Perl, спеціально призначеною для обробки тексту, також використовуються мови Python, JavaScript, VBScript і навіть (як кажуть) мову командних файлів MS-DOS.Фактично писати сценарії можна будь-якою мовою програмування, для якого є інтерпретатор.

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

У табл. 15.1 наведено розширення файлів серверних програм.

Таблиця 15.1. Розширення файлів серверних програм

Вигляд серверних програм

Підвид

Розширення

CGI-програми

-

exe

Розширення Web-сервера

ISAPI та NSAPI Модулі Apache

dll Немає розширення

Активні серверні сторінки

Серверні сценарії

ASP JSP

asp jsp

Мова Perl JavaScript VBScript Інші мови

pl, cgi js, cgi vbs, cgi cgi

Ось ми розглянули, як Web-сервер обробляє (точніше, не обробляє) дані користувача. Тепер перемістимося на початок ланцюжка і розглянемо, як Web-браузер відправляє дані користувача серверній програмі.

Як Web-браузер відправляє введені дані

На початку цього розділу ми говорили про те, що для збору даних відвідувача використовуються елементи управління, які розміщуються на самих Web-сторінках. Це звичайні елементи керування, знайомі вам за додатками Windows: поля введення, кнопки, списки, прапорці та ін. Відвідувач сайту вводить в них дані та натискає особливу кнопку, яка запускає відправлення даних Web-серверу, а отже, і серверній програмі.

Елементи управління, призначені для введення даних відвідувача, містяться у форму. Форма -це особливий елемент сторінки, що виконує власне кодування даних та пересилання їх Web-серверу. (Можна сказати, що форма є батьком для елементів управління.) Самі ж елементи управління приймають дані від відвідувача, але не кодують і не передають їх.

Кожен елемент управління, що у формі, повинен мати унікальне ім'я. Ці імена використовуються Web-браузером для того, щоб представити введені у форму дані в легкочитаному для серверної

Наприклад:

Тут ми розглянули ідеальний випадок, коли значення кожного елемента керування містять лише допустимі зточки зору протоколу HTTP символи: літери латинського алфавіту, цифри, тире, підкреслення та деякі інші знаки. (Як ви пам'ятаєте, HTTP - протокол передачі файлів, що використовується Web-сервером.) Якщо ж ви передаєте дані, що містять неприпустимі символи, скажімо, прогалини або літери російського алфавіту, кожен такий символ буде представлений у вигляді шістнадцяткового коду, якому передує знак відсотка, наприклад, так (закодовані символи пропуску виділені напівжирним шрифтом):

Завдяки такому формату даних написання серверних програм, що їх обробляють, стає дуже простим. Зокрема, мова Perl має інтегровані засоби розшифровки для цього формату.

Подані у вищезгаданому вигляді дані згодом кодуються з використанням одного з наперед визначених методів кодуванняі надсилаються по Мережі серверної програми. Усім цим фактично займається форма (але не елементи управління).

Сам процес надсилання даних починається після того, як користувач натисне спеціальну кнопку. Ця кнопка має назву Відправити(Submit -в англомовних програмах) і обов'язково має бути у формі. Також у формі може бути кнопка Скидання(Reset), що обнулює введені користувачем дані. Як правило, ці кнопки розташовуються в самому низу форми.

Ви можете вважати, що форма - це подібність звичайного діалогового вікна Windows-додатки, що приймає дані від користувача, що кодує їх певним чином і відсилає основного вікна. (Діалогові вікна додатків Windows також обов'язково мають дві кнопки: ОКі Відміна(Cancel).) Але якщо у випадку звичайного Windows-програми програміст повинен явно задати, як будуть шифруватися і пересилатися дані, у випадку з Web-формою цього робити не потрібно. Вам необхідно буде лише задати три обов'язкові параметри:

  • інтернет-адреса серверної програми, яка оброблятиме дані форми;
  • метод кодування даних, що відправляються;
  • один із двох методів відправлення даних.

Про методи надсилання даних ми поговоримо трохи пізніше. А зараз з'ясуємо все про два інші обов'язкові параметри форми.

Інтернет-адреса серверної програми дуже схожа на інтернет-адресу будь-якого іншого файлу, наприклад Web-сторінки. Подивіться самі - так виглядатиме адреса CGI-програми:

http://www. somesite. ru/bin/program.exe Так - адреса розширення Web-сервера: http://www.somesite.ru/bin/extension.dll Це - адреса активної серверної сторінки:

http://www. somesite. ru/asps/active_page . asp

А це – адреса програми-сценарію, написаної мовою Perl:

http://www. somesite. ru/scripts/perl_script.pl

Як бачите, нічого складного у цьому немає. Серверна програма - звичайний файл, поміщений на жорстких дисках серверного комп'ютера, і посилання на нього також не має нічого особливого.

Для кодування даних, що передаються по Мережі, зазвичай використовуються три найбільш популярні методи: application/x-www-form-urlencoded,multipart/form-data та (значно рідше) text/plain. Можливе застосування інших способів кодування, але в абсолютній більшості випадків використовуються три перерахованих. Крім того, ці три методи кодування підтримуються більшістю програм Web-браузерів.

Примітка

Якщо ви ще пам'ятаєте, що таке тип даних MIME, то, глянувши на наведені вище назви методів кодування даних, відразу побачите, що це типи MIME. Саме з їхньою допомогою задаються методи кодування.

У переважній більшості випадків використовується метод кодування application/x-www-form-uriencoded. До речі, саме він застосовується за умовчанням, якщо метод кодування не заданий. Метод кодування multipart/form-data використовується, якщо ви збираєтеся надіслати файли на Web-сервер; він забезпечує відповідне такому випадку перетворення двійкових даних. Останній метод - text/plain - представляє дані у вигляді звичайного тексту, що може бути корисно, якщо дані форми будуть відправлятися електронною поштою (іноді застосовується і такий спосіб передачі даних).

Отже, із кодуванням даних розібралися. Залишається з'ясувати, як ці дані передаються каналами Мережі.

Як дані передаються по Мережі

Як ви вже знаєте, для пересилання даних через Інтернет, та й по будь-якій локальній або глобальній комп'ютерній мережі, використовується особливий набір. протоколом.Протокол визначає, яким чином дані шифруватимуться і упаковуватимуться для подальшої передачі по мережі. Природно, що і передавальна, і приймаюча програми повинні підтримувати той самий протокол, щоб "зрозуміти" один одного. (Інакше виникне так звана несумісність за протоколом передачі даних, штука дуже неприємна.) Власне, вже йшлося про інтернет-протоколи і повторюватися зараз немає сенсу.

Також ви знаєте, що для пересилання по Мережі Web-сторінок та пов'язаних з ними файлів (графічних зображень, звуків, архівів тощо) використовується протокол HTTP. Він же застосовується і для передачі даних, причому для цього передбачено два методу передачіданих. Обидва способи широко використовуються в інтернет-програмуванні та мають свої переваги та недоліки. Давайте їх розглянемо.

Перший спосіб має назву GETза значенням відповідного параметра форми. При його використанні дані передаються як частина інтернет-адреси у запиті HTTP.

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

Візьмемо, наприклад, такий набір даних, наведений трохи вище:

name1 = Ivan surname = Ivanovich name2 = Ivanov age = 30

Тепер підготуємо його для пересилання за методом GET (самі дані виділені напівжирним шрифтом):

http://www.somesite.ru/bin/program.exe? name1=Ivan&surname2=Ivanovich&name2=Ivanov&age=30

Як бачите, дані, що пересилаються за методом GET, розміщуються в самий кінець інтернет-адреси і відокремлюються від нього знаком питання. При цьому пари "ім'я" = "значення" відокремлюються один від одного знаком "комерційне" ("&"). Все дуже просто та наочно.

Така простота та наочність подання даних – основна перевага методу GET. Як кажуть, все на увазі. Також значно спрощується налагодження Web-сторінок: оскільки адреса, що передається Web-серверу, відображається в рядку адреси Web-браузера, ви завжди зможете побачити, що саме було передано. (Однак, як ви розумієте, конфіденційні дані таким методом не передаси - їх побачать усі, хто стоїть за вашою спиною.)

http://www.mysite.ru/bin/choose.exe?chapter=3

Як бачите, це посилання на серверну програму, що містять один параметр chapter і його значення. Це означає, що всі інші сторінки такого сайту формуються серверною програмою динамічно, виходячи з отриманих параметрів. За таким принципом часто-густо будуються сайти-довідники, сайти-каталоги програм, електронні магазини та інші сайти, що містять велику кількість класифікованої інформації.

На жаль, метод GET має величезний недолік: з його допомогою неможливо передавати великі обсяги даних. Це відбувається через обмеження, яке накладається стандартами на довжину інтернет-адреси: не більше 256 символів. Відніміть звідси довжину власне адреси серверної програми і ви отримаєте максимально допустимий розмір ваших даних. Другий недолік методу GET – зворотний бік його гідності. Дані, які вони надсилають, відкриті для загального огляду і можуть бути легко прочитані в рядку адреси Web-браузера.

Метод GET варто використовувати, якщо дані, що пересилаються серверній програмі, свідомо невеликі і не є секретними. Зокрема, він використовується для пересилання ключових слів пошуковим машинам у сайтах, побудованих на основі серверної програми. (див. вище)і т. п. Якщо вам потрібно пересилати об'ємні чи конфіденційні дані, використовуйте другий спосіб передачі, званий POST.

Метод POSTпередає дані серверній програмі у тому ж HTTP-запиті, але не частиною інтернет-адреси, а вигляді так званих додаткових даних. Оскільки розмір додаткових даних не обмежений (принаймні він може бути дуже великий), ви можете передавати все, що завгодно, в будь-яких кількостях. Зокрема саме цим способом Web-серверу можуть передаватися навіть файли.

Переваги методу POST: відсутність обмеження на обсяг даних, що передаються, і "невидимість" їх. Недоліки: складність розшифровки даних та труднощі налагодження. Методом POST передаються, наприклад, анкетні дані, адреси покупців в електронних магазинах, літературні виробидення на сайти http://www.stihi.ru і http://www.proza.ru і т. п. Загалом, те, що має великі обсяги.

Як кажуть, комітет WWWC має намір взагалі згодом відмовитись від методу GET і всі дані передавати за допомогою методу POST. Поки що метод GET просто оголошений не рекомендованим для використання у новостворених сайтах, реально він ще підтримується Web-браузерами.

Ось ми і з'ясували все про серверні програми. Ну, може, не всі, але поки що нам цього достатньо. Тепер поговоримо про те, наскільки повно це підтримується Dreamweaver MX.

Серверне програмування – підхід Dreamweaver

Чи важко писати серверні програми? Да важко. Ймовірно, навіть складніше, ніж Web-сторінки.

Однак, пригадайте, чи часто нам доводилося писати HTML-код вручну? Дуже рідко, чи не так? А все тому, що Dreamweaver дбайливо оберігав нас від цього, надаючи зручний інтерфейс для візуального створення сторінок. Ми просто писали текст, форматували його, поміщали на сторінку зображення, таблиці, застосовували до елементів сторінки поведінки тощо. Одним словом, почувалися комфортно.

І невже нам тепер доведеться писати серверні програми вручну? Ні, зовсім не обов'язково.

Вже згадувалося, що Dreamweaver надає недосвідченим користувачам і взагалі тим, хто не хоче мати справи із JavaScript-кодом, так звані поведінки. Поведінка- це вже готовий сценарій, написаний професійними програмістами і розміщений в коді Web-сторінки самим Dreamweaver після того, як користувач вибере цю поведінку в меню поведінки панелі Behaviors.Користувачеві не потрібно дбати про те, що у певне місце коду сторінки необхідно помістити сценарій, який виконує ту чи іншу дію, йому не потрібно буде перевіряти цей сценарій на наявність помилок та узгоджувати його з іншими сценаріями. Все це за нього робить Dreamweaver.

Насправді, набір операцій, які застосовуються в серверному програмуванні, дуже невеликий. Відкрити базу даних, отримати з неї якісь дані, вивести їх на сторінці, записати нові дані – що ще потрібно!

Звичайно, якщо ви хочете реалізувати якісь хитромудрі дії, вам доведеться писати серверні сторінки "врукопашну". Але, погодьтеся, таке буває нечасто.

Отже, ми з'ясували дві речі. По-перше, Dreamweaver MX підтримує створення серверних веб-сторінок. По-друге, для влаштування в них сценаріїв використовуються добре знайомі вам поведінки. Dreamweaver пропонує великий набір поведінок для серверних сценаріїв, яких вам вистачить спочатку.

Залишилося з'ясувати, які серверні сторінки дозволяє створювати Dreamweaver. Точніше, які технології створення серверних сторінок дозволяє використовувати. Таких технологій чотири, і зараз їх буде перераховано.

  1. ASP. Ця технологія вам вже знайома.
  2. ASP.NET. Подальший розвиток ASP.
  3. PHP. Безкоштовна технологія, що розповсюджується з відкритими текстами. Досить популярна і часто використовується з безкоштовними Web-серверами, наприклад Apache.
  4. Macromedia ColdFusion. Власна технологія фірми Macromedia.

Яку з них вибрати? Адже нам потрібно буде створювати приклади Web-сторінок.

Давайте виберемо ASP. І ось чому.

Для того, щоб працювати з серверними сторінками, нам знадобиться Web-сервер. Без нього серверні сторінки просто не працюватимуть. А можливо, ви знаєте, що з усіма більш-менш новими версіями Windows поставляється невеликий Web-сервер. У системах Windows 95/98/ME це Personal Web Server, а Windows NT/2000/XP - Internet Information Server. Його можливостей нам цілком вистачить для експериментів із серверним програмуванням.

Так от цей Web-сервер повноцінно підтримує технологію ASP. Ви можете писати активні серверні сторінки та виконувати їх під ним. І вам не доведеться завантажувати жодних додаткових компонентів - все, що вам потрібно вже включено до складу дистрибутивного комплекту Windows. Саме тому і було обрано ASP.

Технологію ASP.NET поки не підтримує практично жоден Web-сервер; фірма Microsoft поки що не випустила жодного продукту з підтримкою цієї технології. Для роботи з PHP-сторінками вам доведеться шукати та завантажувати по Мережі досить великий дистрибутивний комплект, що містить обробник РНР, а потім довго налаштовувати його. Що стосується технології ColdFusion, то навряд чи ви можете викласти за неї кілька тисяч доларів. Тож варіантів у нас практично немає.

Введення до баз даних

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

Що таке база даних?Нічого особливого, звичайний файл або групу файлів, що містять дані, організовані особливим чином. Якщо база даних складається з множини файлів, вона все одно залишається єдиним цілим. Дані, що містяться в базі, обробляються за допомогою спеціальної програми, яка називається процесор баз даних.Процесор баз даних може бути як окремою програмою, що працює на тому ж комп'ютері, що і використовує дані програма, так і входити до її складу.

Бази даних може бути організовані по-різному. Але переважна більшість баз даних, що експлуатуються в даний час, є реляційними.Дані у таких базах організуються як таблиць. Кожна така база даних може включати одну або більше таблиць; Складні бази даних, як правило, мають багато таблиць, пов'язаних між собою.

Кожна таблиця у свою чергу складається з набору рядків, розділених на осередки, причому в кожному осередку містяться дані певного типу: текст, числа, логічні величини, дати тощо. Рядки таблиць баз даних називаються записами,а комірки, на які ділиться кожен запис, - полями.Як уже говорилося, кожне поле має певний тип і обов'язково має ім'ям,за яким програма, що працює з даними, та здійснює доступ до цього поля.

На рис. 15.1 наведено приклад такої таблиці. Як бачите, ця таблиця має три поля:

  • NAME - назва технології створення серверних сторінок, текстова;
  • PRICE - ціна програми-обробника, числова;
  • USING - чи підтримується ця технологія нині, логічне ( "так-ні").

Крім того, ця таблиця має чотири записи, що відповідають технологіям, що підтримуються Dreamweaver MX: ASP, ASP.NET, PHP та ColdFusion.

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

Приклад таблиці, що входить до бази даних

Як отримати доступ до окремого поля, ви вже знаєте, - на його ім'я. А як отримати доступ до потрібного запису?

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

Також програма може використовувати пошукнеобхідної записи за яким-небудь критерієм. Найчастіше такий пошук виконується за значенням ключового поля.

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

У загальному випадку, послідовність роботи з даними, що містяться в базі, виглядає так:

  1. Програма відкриваєбазу даних, виконуючи операцію відкриття. Це необхідна операція, без якої неможливо отримати доступ до бази.
  2. Програма відкриває необхідну таблицю бази. Після цього процесор повертає їй так званий набір записів(англійською - recordset), з яким і працює програма.
  3. Програма виконує роботу з даними.
  4. Програма закриваєтаблицю, після чого процесор прибирає відповідний програмі набір записів з пам'яті.
  5. Програма закриває базу даних, розриваючи зв'язки з нею.

Врахуйте, що дві останні операції – закриття таблиці та бази даних – виконувати так само необхідно, як і відкриття. Справа в тому, що набір записів та інші структури даних, що формуються процесором у пам'яті для програми, що працює з даними, забирають багато системних ресурсів. Тому, коли ви закінчили роботу з таблицею або базою даних, відразу ж закрийте її, щоб звільнити ресурси для інших користувачів.

Останнім часом велику популярність-набули сервери бази даних.Це звичайні процесори даних, але реалізовані як серверних програм і які працюють на серверних комп'ютерах. Їхні переваги перед звичайними процесорами даних:

  • вони працюють на серверному комп'ютері, який, як правило, потужніший за клієнтський, тому їх продуктивність вища;
  • вони забезпечують більшу захищеність даних за рахунок розмежування доступу та деяких інших механізмів;
  • вони просто потужніше, у сенсі, підтримують більше різних нововведень, що з'явилися останнім часом.

Щоб отримати доступ до сервера баз даних і даних, клієнтська програма посилає йому спеціальні команди. Для складання таких команд була розроблена мова опису запитів SQL(Structured Query Language -мова структурованих запитів). За допомогою команд, складених цією мовою, клієнтська програма може відкрити потрібну таблицю, вважати дані, додати, змінити, видалити запис і, зрештою, закрити базу даних, коли потреба відпаде.

Сервери баз даних застосовуються зараз дуже часто, а в Web-програмуванні майже повсюдно. До найпопулярніших можна віднести Oracle, Microsoft SQL Server, Sybase, найпотужніший IBM DB2, Borland InterBase (у Росії він продається під назвою IBase), що набирає популярності PostgressSQL і безкоштовний сервер MySQL, що поширюється з відкритими вихідними текстами. Останній сервер, до речі, дуже часто використовується у зв'язку з Web-сервером Apache та технологією серверних сторінок РНР.

На цьому розповідь про бази даних і серверне програмування можна вважати закінченим.

Вже говорилося, що відправлення даних серверної програми виконують спеціальні елементи Web-сторінок - форми. Саме про форми та роботу з ними в Dreamweaver ми з вами говоритимемо в наступному розділі. А вже потім перейдемо власне до серверного програмування.

Заздалегідь вдячний за коментарі, оцінки та виправлення (з урахуванням, що цільова аудиторія - чайники).

Якщо всім користувачам за будь-яких обставин потрібно показувати те саме, то відповідний файл можна просто покласти на сервер, але зазвичай цього недостатньо і хочеться якогось розмаїття. У такому разі на сервері потрібно запустити програму, яка створюватиме HTML-текст необхідний у даному конкретному випадку. Написання цих «серверних» програм (скриптів) і є основна справа веб-розробки, саме в них зазвичай ховається 90% складності та вартості будь-якого проекту. Оскільки програма виконується на нашому сервері, а не на комп'ютері користувача, то вибір інструментарію повністю за нами і немає якоїсь однієї мови, якою такі програми пишуться.

Перше і найважливіше рішення, яке слід прийняти - операційна система нашого сервера. Теоретично це може бути будь-що, на практиці в Росії в 93% випадків використовують Unix, в 6.99% - Windows, в 0.01% - щось інше. Я не зовсім об'єктивний, але не бачу жодного аргументу на користь Windows та два на користь Unix, відповідно рекомендую завжди вибирати його. Аргумент перший: те, що поширеніше, завжди зручніше, простіше знайти хостинг, простіше знайти спеціаліста, простіше знайти готове рішення якоїсь підзавдання. Аргумент другий: вартість ліцензій на Windows/MS SQL/...; гроші там не позамежні, але все ж таки відмінні від нуля. Якщо як ОС ми вибрали Unix, то наступне природне питання - яку його реалізацію використовувати - абсолютно незначне і може бути вирішене виходячи з особистих переваг системного адміністратора.

Друге важливе рішення - мова програмування. Вибір тут досить великий. По-перше, є цілий клас мов, що ідеально підходять для типових завдань web-програмування (а один з них спеціально для нього і придуманий) - "скриптові мови". Зараз це як мінімум PHP, Perl, Ruby та Python. Саме на них написана переважна більшість сайтів від найпростіших інтернет-магазинів до vkontakte.ru, наприклад. За можливостями, зручністю, продуктивністю, засобами розробки, якимись іншими теоретичними показниками вони приблизно рівні між собою, основна різниця в наявності програмістів. Прямо зараз виміряні показники ринку такі: на 100 резюме PHP-програмістів у Росії припадає 10 Perl і по 2-3 Ruby та Python-резюме. З іншого боку, з усіх людей, які називають себе PHP-програмістами, до коду на гарматний постріл не можна підпускати 80%, для перловиків цей показник у районі половини, а для Ruby та Python ще менше. Зрозуміло, що перші цифри об'єктивні і взяті з робочих сайтів, а другі умовна суб'єктивна оцінка і прямо перемножувати їх не можна, але в будь-якому випадку кількість і програмістів, і хороших програмістів упорядковано саме в такому порядку: PHP, Perl, Ruby або Python, а середній їх рівень у прямо протилежному. Таким чином, якщо у нас промисловий проект, з великою кількістю розробників та плинністю кадрів, то з Web-мов вибирати потрібно PHP (припустимо використання Perl у разі якихось дуже важливих локальних причин). Якщо ж проект короткий, програміст точно буде один і не змінюватиметься ніколи, то вибір можна довірити йому, при цьому вибір Ruby/Python може навіть виявитися оптимістичним фактором.

Крім розглянутих близнюків-братів скриптових мов (вибір між якими суто соціальний), є мови та інші, що мають інші технічні характеристики і, відповідно, інші ніші для застосування.

Мова C. Мова, що вимагає максимальної акуратності програміста, найбільш складна у пошуку помилок, з найменшою кількістю доступних готових рішень та з найнижчою швидкістю розробки. Всі ці мінуси він компенсує лише одним плюсом: продуктивністю, яка на кілька порядків краща за продуктивність PHP та його аналогів. В принципі залізо зараз дешеве, а робоча сила дорога, плюс цей важливий досить рідко. Умовно, якщо в проекті передбачається менше мільйона показів на добу, то про C можна забути сміливо, але, якщо більше показів, про нього слід тільки думати, а не приймати беззастережно. На C написано, наприклад, лічильник liveinternet.ru.

Мова С++. Має всі ті ж недоліки, що і С, але в менш явній формі, натомість дає порівнянну, але меншу продуктивність. Зазвичай застосовується там, де продуктивність все ж таки потрібна, а бізнес-логіка дуже складна і знаходиться на межі науковості. Класичний приклад – пошукові послуги. Важливий недолік, що не дає йому повністю витіснити на його ніші, це велика свобода для непідтримуваного коду. Як і у випадку табличної верстки, на С всі пишуть приблизно однаково, і якщо код задовольняє формальним і перевіреним вимогам якості (не допускає витоку пам'яті, коректно обробляє помилки тощо), то він швидше за все буде на цілком прийнятному рівні неформалізованим, але важливим характеристикам типу «зрозумілості» та «зв'язності». А ось на C++ можна дотримуючись всіх формальних вимог написати, як чудово, так і огидно. І звичайно друге зустрічається частіше.

Мова Java. З технічної точки зору відрізняється від C++ приблизно так само, як C++ відрізняється від C. Т. е. Перехід від C++ на Java це втрата ще половини порядку продуктивності, але новий виграш у швидкості розробки і бібліотека готових рішень вже можна порівняти зі скриптовими мовами. З точки зору соціальної, кількість програмістів на Java менше і кількості програмістів на C++, і кількості програмістів на PHP, при цьому вони в середньому дорожчі і, на мій суб'єктивний погляд, в середньому гірші за ті й інші. Причина такого дивного розкладу – у досить великому ринку Java-розробки корпоративних систем, який з одного боку піднімає зарплати, а з іншого прищеплює свою культуру та підхід до програмування, який лише шкідливий у Інтернеті. У результаті я не бачу жодної ситуації, коли застосування Java у веб-розробці було б обґрунтовано. (Але проте odnoklassniki.ru написані саме на Java і успішно працюють.)

Якщо ми встигли зробити помилку і вибрали як операційну систему Windows, то крім перелічених мов (всі вони в принципі більше орієнтовані на Unix, але можуть бути використані скрізь) з'являються ще два варіанти: це VBScript (якийсь аналог PHP) і C# (аналог Java ). Оскільки я не бачу виграшу від Windows, то їх рекомендувати не можу.

Переліченими варіантами різноманіття серверних мов програмування не обмежується, але сумарна популярність решти всього близька до нуля і раціональних причин для вибору екзотики я не знаю.

Усі існуючі (принаймні всі популярні) інструменти є універсальними. На кожному з них можна реалізувати абсолютно все, що завгодно, питання тільки в тому, що з деякими інструментами це буде швидше і дешевше, а з іншими дорожче і повільніше. У принципі, ніхто не забороняє використовувати в одному проекті дві різні серверні мови, але зазвичай це призводить до погіршення керованості проекту - ми залежимо від двох спеціалістів (або двох груп фахівців) замість одного, які крім власне проектної роботи повинні витрачати зусилля на узгодження як чисто соціальне (спілкування між собою), і технічне. Єдине виключення, що виправдовує себе, це зв'язка однієї зі скриптових мов з кимось з пари C/C++. "Поверхнева" частина коду, що відповідає за інтерфейс, пишеться на скриптовому, а найбільш критична до продуктивності внутрішня - на С або С + +. При цьому співвідношення між частинами в різних проектах може бути різним. Наприклад, ulov-umov.ru являє собою дуже алгоритмічно складний C++ проект, що реалізує по суті власну пошукову систему і невелику Perl-обгортку, що малює інтерфейс користувача з буквально 10 сторінок. А всередині PHP-шного readme.ru є один маленький C-шний модуль, який за готовими даними швидко-швидко малює інформери. Важливо, що продуктивна мова завжди «всередині», а яку частку від обсягу він займає - залежить від локальних факторів.

Чим клієнтські мови веб-програмування відрізняються від серверних.

Дата: 2012-10-04

Всі мови веб-програмування можна розділити на дві великі групи: клієнтськіі серверні. Щоб розібратися і зрозуміти: що це за мови, як вони працюють і чим відрізняються один від одного, потрібно розібратися ще у двох визначеннях: Сервері Клієнт.

Сервер– це той комп'ютер, на якому працює сайт в Інтернеті (зберігаються файли та папки сайту). Ще під терміном Серверрозуміють спеціальну програму, встановлену на комп'ютері, яка обробляє запити браузера користувача будь-якого web-документу (наприклад, ).

Клієнт- це сам користувач, а точніше браузер, встановлений на вашому комп'ютері. Коли користувач Інтернету звертається із запитом до сервера, він є клієнтом.

Клієнтські мови.

Клієнтські мови виконуються на комп'ютері користувача (клієнта). Якщо говорити точніше, їх виконує сам браузер. Зазвичай клієнтські мови вбудовуються в HTML-код web-сторінки. Таким чином, щоб побачити код, достатньо відкрити веб-сторінку за допомогою будь-якого текстового редактора чи браузера.

Так як клієнтські мови виконуються на комп'ютері користувача, то тільки користувач вирішує, потрібні вони йому чи ні. Він може просто їх відключити і браузер нічого не виконуватиме.

Один з основних недоліків клієнтських мов полягає в тому, що вони не можуть взаємодіяти із сервером, на якому розташований сайт. Немає можливості зберігати та завантажувати інформацію з нього. Це значно обмежує застосування клієнтських мов. Наприклад, про такі програми, які повинні зберігати та завантажувати певну інформацію з /на сервер: гостьові книги, блоки коментарів, рейтинги, голосування тощо. можна взагалі забути.

Крім того, якщо будь-який користувач може дуже легко переглянути код програми, то про безпеку можна також забути. Якщо Ви захочете закрити доступ до деяких файлів за допомогою таких мов, це навряд чи вдасться. Дуже просто переглянути HTML - код web-сторінки, щоб дізнатися всю захищену інформацію та паролі.

Однак, якщо клієнтські мови досягли такої популярності, то у них мають бути й переваги. Так, переваги є і ще якісь!

1) Вони не надсилають дані на сервер, що робить їх роботу значно швидше.

2) Не потрібно жодного додаткового програмного забезпечення, все необхідне є у браузері клієнта.

3) За користування серверними мовами компанія, що надає хостинг, вимагає грошей (платний хостинг), а за клієнтськими ні.

Найпоширенішими клієнтськими мовами є: JavaScriptі VisualBasicScript (VBS). Для того щоб браузер міг їх розуміти і виконувати в нього вбудований спеціальний інструмент - інтерпретатор.

JavaScript, розроблений компанією Netscapeі спочатку використовувався лише для браузера Netscape Navigator. В даний час ця мова отримала дуже велику популярність. VisualBasicScript (VBS)це аналог клієнтської мови від компанії Microsoft.

Як уже говорилося раніше, всі ці мови працюють у звичайних браузерах без жодних додаткових модулів та плагінів. Найпоширеніші браузери це: Internet Explorer, Opera, Mozilla та ін.

Серверні мови.

Серверні мови виконуються безпосередньо на сервері, спеціальною програмою. Це означає, що для того, щоб вони працювали не важливо, яким браузером користується користувач, все одно обчислення будуть проходити на віддаленому комп'ютері (сервері).

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

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

Найбільшу популярність серед серверних мов набули: і Perl.

Т.к. серверні мови взаємодіють із віддаленим комп'ютером (сервером), виникає необхідність десь зберігати результати цієї взаємодії. Постає питання: як і де зберігати ці дані?

Наприклад, гостьова книга передбачає збереження на сервері інформації про ім'я користувача та дані залишеного ним повідомлення. Якщо даних не дуже багато, можна зберігати їх у звичайному текстовому файлі. Але зі зростанням будь-якого сайту, доводиться зберігати величезну кількість інформації. Саме для цієї мети існує База даних (БД).

Це свого роду бібліотека, де вся інформація акуратно розкладена по поличках. Але просто однієї БДще мало. Коли інформації стає багато, знайти те, що нам необхідно ставати дуже важко, не кажучи вже, вже про те, щоб всю інформацію обробити або отримати тільки потрібні дані. То чому б не доручити це комп'ютеру? Так і вчинили. Нині БД успішно обробляються комп'ютерами. Системи, які за все це відповідають, називаються Системами управління базами даних (СУБД).

  • Переклад
  • Tutorial

Дорога довга і важка, але цікава та корисна!

Стаття замислювалася як практичний посібник для бажаючих стати професійним веб-розробником. Я вже понад 20 років пишу код для Інтернету. Я щодня працюю з веб-розробниками та допомагаю їм. У статті я опишу, що вам потрібно вивчити, коли вам потрібно вивчити це і де взяти інформацію (найчастіше навіть безкоштовно). Потім я дам пораду щодо отримання реального досвіду, і що найважливіше – щодо отримання грошей за написання коду.

За статтею розкидано безліч посилань на безкоштовні та важливі ресурси. Для простоти я зібрав їх у PDF та розбив за категоріями. Мені не платять за згадки сайтів, посилання на які я навів – я лише хочу порекомендувати вам найкращі ресурси, щоб допомогти вам досягти вашої мети.

Що потрібно пам'ятати:

1. Статтю дозволяється перегортати

Посібник може допомогти вам незалежно від вашого положення на дорозі до професійної розробки. Прокрутіть його до того заголовка, який найкраще описує ваше сьогоднішнє становище, і читайте звідти. Якщо ви тільки почали цей шлях, або поки розмірковуєте про це - підіть пораді Короля з «Аліси в країні чудес»:

Почніть з початку, і продовжуйте, доки не дійдете до кінця; і там уже зупиніться.

2. Спробуйте потроху, а потім вибирайте спеціалізацію.

Гроші – не найважливіше. Вам необхідно ЛЮБИТИ ваше заняття! Але ви не дізнаєтесь, що вам подобається, доки не спробуєте.


Знайдіть свою пристрасть, а потім монетизуйте її

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

Я вирішив написати код. Мені подобається веб. Я не знаю з чого почати


У вас все вийде!

Вітаю! Це серйозний перший крок і початок чогось дуже захоплюючого. Але це може бути дуже складним. Не хвилюйтесь, я допоможу.

Спочатку потрібно швидко познайомитися з основами всіх областей веб-розробки («повний цикл»). Навчання буде різноманітним, але неглибоким. Це потрібно для того, щоб знайти область, яка вам подобається, а також набути основних навичок у різних областях. Тоді ви зможете розуміти та працювати з великим набором завдань, незалежно від того, на чому ви зупините свій вибір.

Вивчіть основи HTML

Мова гіпертекстової розмітки, Hypertext Markup Language (HTML), контролює вміст і розмітку того, що ви бачите в браузері. Почавши з нього, ви отримуєте інтерфейс користувача, з яким можна взаємодіяти, та бачите результати роботи свого коду. При вивченні складніших мов його важливість зростатиме. Адже вам не потрібно кодувати наосліп.

Ось що вам потрібно вивчити на тему HTML:

Я вже знаю основи HTML

Круто! Це дуже важливий крок. Тепер вивчіть основи JavaScript.

Вивчіть основи JavaScript

JavaScript – мова Інтернету, і всі основні браузери (Chrome, Firefox, Safari, IE, багато інших) підтримують його. Кожен сайт, кожен веб-додаток, яким ви користувалися, швидше за все, містить величезну кількість JS-коду. Не кажучи вже про те, що мова набирає населення і на інших платформах – сервери, настільні комп'ютери, інші пристрої.

Поки що вам потрібні основи, і для цього підійдуть такі ресурси:

Я знаю основи JavaScript та HTML

Приголомшливо! Тепер додамо до ваших навичок CSS

Вивчіть CSS

CSS або Cascading Style Sheets (каскадні таблиці стилів). Використовуються для налаштування зовнішнього вигляду елементів HTML на сторінці. Ознайомтеся з безкоштовним навчальним матеріалом від Mozilla, а потім звертайтеся до ресурсу CSS-Tricks для вирішення найскладніших проблем (праворуч є пошук).

Переходимо до бекенду

Досі ми з вами розглядали те, що називають "фронтендом" веб-розробки. Ви ознайомилися з основними мовами, які працюють у браузері. Час переходити до бекенду – коду, що працює на сервері. Не хвилюйтеся, сервер вам не знадобиться – ваш комп'ютер упорається з цим.

Мов для бекенда маса, але оскільки ви знайомі з JavaScript, я порекомендую вивчити використання Node.js. Він дозволяє запускати JS-код на сервері, а не у браузері.

На додаток до цього необхідно вивчити Express і MongoDB.

Express
Це бібліотека, за допомогою якої Node.JS може працювати веб-сервером (слухати запити від сторінок та надсилати їм відповіді).
MongoDB
Це база даних, яка дозволяє вам зберігати та витягувати інформацію.

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

Мені потрібно вибрати між «фронтенд», «бекенд» та розробкою повного циклу

Після того, як ви спробували обидва варіанти розробки, настав час робити вибір. Якщо ви не встигли спробувати їх – зверніться до попереднього розділу статті, щоб заповнити прогалини у ваших знаннях.

На цей момент ви писали два типи коду. Один призначений взаємодії з користувачем, інший – з даними. Що ви віддаєте перевагу?

Взаємодія з користувачем? Вітаю, ви фронтенд-розробник!

Взаємодія із даними? Вітаю, ви бекенд-розробник!

Обидва? Вітаю, ви розробник повного циклу!

Нічого не сподобалось? Вітаю, веб-технологія – це не для вас. Порадійте, що ви зрозуміли це зараз, і не втратили купу часу та грошей. Чи не готові здаватися? Може, вам не трапилася мова, яка припала б вам до душі? Спробуйте вивчити інші мови у розділі «Я хочу бути бекенд-розробником».

Я хочу бути розробником повного циклу

Круто. Вам потрібно ознайомитися з усім вмістом розділів «Я хочу бути бекенд-розробником» та «Я хочу бути фронтенд-розробником».

Я хочу бути фронтенд-розробником і знаю основи JavaScript, HTML і CSS

Для ефективної роботи фронтенд-розробником вам необхідно досконало опанувати HTML, CSS та клієнтський JavaScript. Також вам потрібно буде добре розібратися у кількох важливих фреймворках. Ви отримаєте навички, які роботодавці та клієнти очікують знайти у розробниках фронтенду.

До цього моменту ви повинні знати основи HTML. В іншому випадку поверніться до розділу «Вивчіть основи HTML».

Вивчіть проміжний і просунутий HTML
Ознайомтеся з навчальним матеріалом проміжним HTML, а потім – просунутим .
Вивчіть просунутий клієнтський JavaScript


Відмінна серія книг з JS, при цьому безкоштовна

Для підняття вашого рівня володіння JavaScript, я рекомендую серію книг You Don't Know JS за авторством Кайла Сімпсона. Автор виклав всю серію в онлайн абсолютно безкоштовно:

Крім того, вашим найкращим другом має стати і MDN JavaScript.

[Також абсолютно безкоштовно вам доступний чудовий переклад відмінної книги "Виразний JavaScript" - прим.перев.]

Знати «трійцю фронтенда», HTML, CSS та JavaScript – це, звичайно, чудово. Але для заробляння грошей доведеться познайомитися з деякими фреймворками.

Вивчіть jQuery
Це найпопулярніша бібліотека JS всіх часів. Хоча через деякі нові фреймворки важливість jQuery трохи зменшилася, якщо ви шукаєте роботу, велика ймовірність, що jQuery буде присутня в описі необхідних навичок (і згадуватися на співбесіді) ще багато років.

Рекомендую вивчити jQuery за допомогою матеріалів FreeCodeCamp – це швидкий та ефективний метод. Після цього вирушайте на офіційний навчальний сайт – там ви знайдете додаткові інструкції.

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

Чи не раз на тиждень з'являється новий фреймворк, який пророкують на місце нового стандарту розробки. Вам потрібно буде прошерстити сайти з вакансіями та чимало погуглити, щоб з'ясувати, який фреймворк популярний на вашому ринку. Також рекомендую інструмент від Hacker News щодо оцінки тенденцій ринку вакансій.

Під час написання цієї статті наступні фреймворки користувалися популярністю:

Вибравши найбільш підходящий фреймворк і добре ознайомившись з ним, варто вивчити CSS-фреймворк, що йде в парі з ним. Два найбільші гравці на цьому ринку сьогодні – Bootstrap і Material Design.

Bootstrap
Bootstrap зробили розробники Twitter і він вже досить дорослий і популярний. Версії Bootstrap існують для Angular, Angular 2 та React.
Material
Material – це набір правил дизайну, розроблений у Google. Він набирає популярності, існують його версії для Angular та React. Оскільки Angular – це теж дітище Google, поєднується Material із ним чудово.

Ось вам кілька посилань:

Вітаю! У вас є ключові навички фронтенд-розробника!


Ви тільки подивіться на нього!

Я хочу бути бекенд-розробником

Прекрасно! Перший крок – вибір мови. Для роботи з бекендом існує багато мов, і у кожного є свої переваги та недоліки. Ознайомтеся з таблицею програмованих мов, відсортованих за популярністю. Усі вони вже десять років входять до десятки найкращих. Позначені зеленим – це веб-мови, які з роками набирають популярності.


TIOBE Index of Programming Languages, www.tiobe.com/tiobe_index?page=index

Концентруйтеся мовами, чиї назви я обвів зеленою рамкою. Якщо ви не знаєте їх, починайте зверху таблиці та йдіть униз. Зупиняйтесь, коли знайдете те, що вам подобається, та копайте вглиб!

Якщо ви знайомі з одним із зазначених зеленим кольором мов, і він вам подобається - концентруйтеся на ньому.

Підкачайте необхідні для інтерв'ю вміння
Вам потрібно підготуватися не лише до написання коду. У добрій статті з Life Hacker описано багато корисної та цінної інформації.
Головне – закріпитись на ринку
Не сильно переживайте щодо отримання роботи мрії у роботодавця мрії із зарплатою мрії. Спочатку просто досягніть отримання роботи, де ви писатимете код за гроші. Здобувши більше досвіду, зможете планувати наступний крок.
Хочу бути фрілансером
Сам собі господар – це добре, але це водночас і величезний тиск і великі складнощі. Найкраще джерело інформації з фрілансу з усіх, що я бачив - DoubleYourFreelancing.com. У нього є серія статей, які допоможуть вам стати фрілансером краще, ніж це вийшло б у мене. Читайте.

Ще один варіант, якщо ви впевнені - сервіс Toptal . Вони приймають лише 3% усіх, хто подає заявки, і цей процес дуже складний, але якщо ви потрапите туди – у вас буде доступ до добре оплачуваних робіт, над якими ви зможете працювати віддалено.

Я почав роботу, але відчуваю, що зайшов у глухий кут
Розумію. Це нелегко, і якщо хтось говорив вам протилежне - він або цим не займався, або намагається виманити гроші. Якщо ви відчуваєте, що зайшли в глухий кут, спробуйте такі варіанти:
Освіжіть ваш первісний намір
Запитайте себе, запишіть на папері, чому ви вирішили йти цим шляхом. Чи в силі все ще ваша відповідь? Якщо так – то навіщо зупинятися? Вперед!