Ruby on Rails – висхідна зірка комп’ютерних інформаційних технологій (еволюція інструментальних технологій в середовищі Ruby on Rails

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2009
Тип роботи:
Завдання
Предмет:
Інформаційні технології
Група:
КН-30

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" ІНСТИТУТ КОМП’ЮТЕРНИХ НАУК ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ Курсове проектування На тему: Ruby on Rails – висхідна зірка комп’ютерних інформаційних технологій (еволюція інструментальних технологій в середовищі Ruby on Rails) Завдання Для виконання курсової роботи з дисципліни «Методи і засоби комп’ютерних інформаційних технологій» Студентці групи КН-30 Сало В. М. Тема: Ruby on Rails – висхідна зірка комп’ютерних інформаційних технологій (еволюція інструментальних технологій в середовищі Ruby on Rails). Задано: дослідити програмний інструментарій спеціалізованої мови Ruby для здійснення веб ужитків; дослідити: принципи побудови; основні функціональні можливості; засоби до функціонування; напрямки найбільш вдалих застосувань; Завдання видав: доцент Фабрі Людвіг Павлович Прийняла до виконання: студентка групи КН-30 Сало В. М. Дата видачі завдання: 5.10.09 Зміст Вступ 4 Розділ І: еволюція інструментальних технологій в середовищі Ruby on Rails 5 1. Знайомство з Ruby on Rails 5 2. Поговоримо про Ruby 5 3. Філософія Ruby 6 4. Можливості Ruby 6 5. Переваги Rails 7 6. Філософія Ruby on Rails 9 7. Як працює MVC в Ruby on Rails? 10 8. Active Record 13 9. Скаффолдинг 14 10. AJAX (Asynchronous JavaScript and XML) 15 Розділ ІІ: RoR і Django: хто кого? 18 1. Популярність серед користувачів 20 2. Мови програмування 21 3. Концептуальна суть Rails та Django 22 4. Модель і база даних 23 5. URL Роутинг та контроллери 24 6. Контроллер, вид 24 7. Шаблон і форма 24 8. Адміністрування користувача 25 9. AJAX 25 10. Засоби для тестування 26 Висновок (ще одна думка) 27 Корисна література: 30 Вступ Сьогодення усе частіше й частіше шокує нас своїм темпом життя. Все нові і нові винаходи не дають людству стояти на місці. Нові прогресивні технології щораз із більшою активністю заповнюють наш простір. Не так уже й давно ще новинка, буквально за мізерний період часу стає звичним, побутовим явищем. Великим чином це стосується інформаційних технологій. Подивимось, все починалось з величезних за об’ємом і затратами ЕОМ. А зараз – все менші, портативніші, потужніші рішення приходять їм на зміну. Разом із прогресом апаратного складу проходить еволюція програмного забезпечення... Актуальною на сьогоднішній день є тема, пов’язана з веб-технологіями. Розширення мережної інфраструктури – приєднання все більшої кількості користувачів з новими побажаннями, вимогами – диктує напрямки розвитку нових рішень. Значне місце серед них посідає розробка веб-ужитків. І тут на допомогу приходять нові інструментарії – втілення прогресивних технологій. В першу чергу інструментарій повинен дозволяти не тільки якісну, але й швидку розробку, відповідно поставлених вимог. Вже існуючі платформи щораз удосконалюючись, вступають в потужну конкуренцію. На їх фоні виникають нові, які не зважаючи на те, що молоді, претендують бути першими. Так з’являються зірки комп’ютерних інформаційних технологій. Серед таких висхідних зірок знаходиться Ruby on Rails. Саме ця платформа найбільш мене зацікавила. Тому уся подальша мова йтиме саме про неї. У своїй роботі я намагатимусь детально та зрозуміло описати основні переваги Rails – те, що зробило її популярною на цілий світ. А також проведу аналіз-порівняння із ще однією потужною платформою – Django. І, звісно, поділюся власними враженнями про розробку в середовищі Ruby on Rails… Розділ І: еволюція інструментальних технологій в середовищі Ruby on Rails 1. Знайомство з Ruby on Rails “Rails is the most well thought-out web development framework I’ve ever used. And that’s in a decade of doing web applications for a living. I’ve built my own frameworks, helped develop the Servlet API, and have created more than a few web servers from scratch. Nobody has done it like this before.” -James Duncan Davidson, Creator of Tomcat and Ant На сьогоднішній час Ruby on Rails (RoR) – один з найвідоміших фреймворків для проектування веб-аплікацій. Він був розроблений провідною ІТ фірмою «37signals» (Чикаго, Іллінойс). А його батьком став Девід Хейнемер Ханссон. У липні 2004 року як безплатний продукт у світ вийшла перша версія Ruby on Rails 1.0. Вона набула широкої популярності серед розробників невеликих та середніх веб-ужитків. І дійсно, з того часу стрімко зростає цікавість програмістів до Ruby on Rails. До прикладу кількість запитів в Google становить 13 млн., в той час, коли Struts – найвідоміший з фреймворків світу Java – 19 млн. 2. Поговоримо про Ruby Коли ми говоримо про Rails, неможливо стороною оминути Ruby. Це спричинено не тільки тим, що каркас Rails був написаний на Ruby але і тим, що вони працюють як одне ціле. Ідея написання Ruby виникла 23 лютого 1993 року, коли талановитий програміст Юкіхіро Мацумото розмовляв зі своїми колегами. Він планував написати таку сценарну мову, яка була б повністю об’єктно-орієнтованою, без будь-якого «іграшкового присмаку». На той час автор добре знав Perl, Pyton. Тому, без сумніву від них він запозичив все найкраще. Як сам пише про себе автор: «Мені, як мовному ман’якові і фанату об’єктно-орієнтованого програмування з п’ятнадцятилітнім стажем надзвичайно хотілося, щоб існувала істинно об’єктно-орієнтована, легка у вживанні мова програмування…». В грудні 1995 року світ побачив Ruby 0.95. Але так, як уся документація була Японською, доступ до розуміння отримало надзвичайно мало людей. Лише в 1997 році вийшла англійська версія, а 1998 року відкрився форум «Ruby-talk». З цього часу починається стрімке зростання поширення Ruby. 3. Філософія Ruby Ruby в перекладі означає рубін. Яка вдала назва для для такої молодої і настільки перспективної мови, що як висхідна зірка засяяла на небосхилі програмування. Отже, основне призначення Ruby – швидкість і простота розробки програми, зрозумілість і доступність синтаксису. При цьому швидкість роботи самої програми не береться до уваги. Мова Ruby працює за принципом «найменшої неочікуваності». Це означає , що програма поводить себе саме так, як очікує цього програміст. Звісно, цю рису мають можливість спостерігати люди, які більш глибше працюють з ужитком. Основною ціллю розробки було звільнення програміста від рутинної роботи, яку, однак, за нього тепер швидше і якісніше виконує комп’ютер. Наприклад опрацювання текстів чи адміністрування. 4. Можливості Ruby “Before Ruby on Rails, web programming required a lot of verbiage, steps and time. Now, web designers and software engineers can develop a website much faster and more simply, enabling them to be more productive and effective in their work.” -Bruce Perens, Open Source Luminary Ruby ідеально поєднує в собі найкращі риси, запозичені з інших мов. До прикладу, від Perl Ruby наслідує можливість досягнення однієї і тієї ж мети кількома способами. І це прекрасний варіант. Є безліч людей і безліч думок, навряд чи однакових, і кожна по своєму геніальна. Лаконічний і простий синтаксис – вплив Ада, Эйфель і Python. Обробка виключень в стилі Java і Python. Ruby – повністю об’єктно-орієнтована мова програмування. Всі дані в являються об’єктами в розумінні Smalltalk. Єдине виключення — керуючі конструкції, які в Ruby на відміну від Smalltalk не обєктами. Наприклад, число «1» — це екземпляр класу Шаблон :RDoc. Також можна добавляти методи в клас і навіть в конкретний екземпляр під час виконання програми. Проте не підтримується множинна спадковість. Містить автоматичний прибиральник сміття. Він працює для всіх об'єктів Ruby, в том числі для зовнішніх бібліотек. До прикладу, створення розширень для Ruby на C дуже просто завдяки збору сміття, та нескладного і зручного API. Ruby Підтримує блок коду (код взятий в { … } або do … end). Блоки можуть використовуватись в методах або перетворюватись в цикли. Цілі змінні в Ruby автоматично конвертуються між типами Шаблон:RDoc (32-розрядні) і Шаблон:RDoc (більше 32 разрядів) в залежності від їх значення, що дозволяє виконувати цілочисельні математичні розрахунки з нескінченою точністю. Не вимагає попереднього оголошення змінних, хоча для інтерпретатора бажано, щоб змінні присвоювалось порожнє значення nil (тоді інтерпретатор знає, що ідентифікатор вказує на змінну, а не на ім’я методу). Мова використовує прості домовленості для визначення області видимості. Наприклад: просто var — локальна змінна, @var — змінна екземпляру (член або поле об’єкту класу), @@var — змінна класу, $var — глобальна змінна. В Ruby безпосередньо в мові реалізовано багато шаблонів програмування, так, наприклад, «одинак» (англ. singleton) може бути реалізований додаванням потрібних методів одному конкретному обєкту. Ruby достатньо гнучка до платформи ОС. Вона розроблялася на GNU/Linux, але працює на багатьох версіях Unix, DOS, Microsoft Windows (частково, Win32), Mac OS, BeOS, OS/2 і т. д. 5. Переваги Rails “Ruby on Rails is a breakthrough in lowering the barriers of entry to programming. Powerful web applications that formerly might have taken weeks or months to develop can be produced in a matter of days.” -Tim O'Reilly, Founder of O'Reilly Media До цього часу багато було сказано про плюси RoR. Та мимоволі постає питання: яким чином йому вдається процвітати не маючи в своєму активі обширних бібліотек, як це потрібно в інших мовах? Пропоную розглянути саме ці аспекти, що надають Rails такої гнучкості. Безперечно, всі розробники Веб-ужитків, що працюють з Rails повинні дотримуватись двох концепцій: DRY і домовленість по конфігурації. Хотілося б докладніше розглянути їх. Отже, DRY – “Don’t Repeat Yourself” в перекладі означає «Не повторюйся». А саме, кожна стрічка коду повинна бути унікальною. І якщо хоча б два методи мають одинакові стрічки, то їх неодмінно потрібно об’єднувати в окремий метод. Наприклад: якщо у методах add_to_cart, empty_cart потрібно використати flash[:notice] = msg redirect_to :action => :index то простіше помістити їх в окремий метод redirect_to_index(msg). Такий прийом надає коду лаконічності та зменшує ресурсні затрати ужитку вцілому. class StoreController < ApplicationController def add_to_cart begin product = Product.find(params[:id]) rescue ActiveRecord::RecordNotFound logger.error("Try to get nil product #{params[:id]}") redirect_to_index("Wrong product's id ") else @cart = find_cart @cart.add_product(product) redirect_to_index end end def empty_cart session[:cart] = nil redirect_to_index("Now your cart is empty") end private def redirect_to_index(msg) flash[:notice] = msg redirect_to :action => :index end end Ще одна цікава річ – це домовленість по конфігурації. Тобто, розробнику пропонується певний набір правил для написання того чи іншого елементу програми. З одного боку одразу всі правила тяжко запам’ятати. А з іншого – ця концепція є ідеальним методом для використання всіх автоматичних кодів, що на інших платформах мають вигляд повсякчасної рутинної роботи. Серед таких конфігурацій, наприклад: Ім’я контроллера завжди повинне бути в однині, так як платформа по замовчуванню створює базу даних на основі контроллера, але в множині; Ім’я класу повинне починатися з великої букви, при чому, якщо воно має декілька слів, то, відповідно, вони писатимуться разом і кожне слово з великої букви; такий стиль написання називають «верблюжим стилем» (“Camel casing”). Для розділення слів при найменуванні методів, таблиць баз даних, колонок, атрибутів та символів потрібно використовувати нижнє підкреслення. Наприклад, щоб представити клас з іменем ChunkyBacon можна використати символ :chunky_bacon. Та це не все!!! Саме цікаве ще попереду… 6. Філософія Ruby on Rails “Rails is the killer app for Ruby.” Yukihiro Matsumoto, Creator of Ruby Уже декілька розділів підряд пов’язані з філософією. А що ж дійсно ховається за словом «філософія». У нашому випадку це ті методи, точніше кажучи принципи, за якими працює програма. Rails побудований на філософії MVC – Model-View-Controller. Що ж собою по суті являє MVC? MVC в перекладі означає Модель-Вид-Контроллер. Це архітектурний шаблон, який використовується при проектуванні та розробці програмного забезпечення. Він ділить програму на три частини. У тріаді до обов'язків компоненту Модель (Model) входить зберігання даних і забезпечення інтерфейсу до них. Вигляд (View) відповідальний за представлення цих даних користувачеві. Контролер (Controller) керує компонентами, отримуючи сигнали у вигляді реакції на дії користувача, і повідомляючи про зміни модель компоненту. Така внутрішня структура в цілому розбиває систему на самостійні частини і розподіляє відповідальність на різні компоненти. MVC ділить дану частину системи на три самостійні частини: введення даних, компонент обробки даних і виведення інформації. Модель, як вже було відмічено, інкапсулює ядро даних і основний функціонал з їхньої обробки. Також компонент Модель не залежить від процесу введення або виведення даних. Компонент виводу Вигляд може бути декілька взаємозв'язаних областей, наприклад, різні таблиці і поля форм, в яких відображається інформація. У функції Контролера входить моніторинг за подіями, що виникають в результаті дій користувача (зміна положення курсора миші, натиснення кнопки або введення даних в текстове поле). Зареєстровані події транслюються в різні запити, що направляються компонентам Моделі або об'єктам, відповідальним за відображення даних. Розділення моделі від представлення даних дозволяє незалежно використовувати різні компоненти для відображення інформації. Таким чином, якщо користувач через Контролер внесе зміни в Модель даних, то інформація, представлена одним або декількома візуальними компонентами, буде автоматично відкоректована відповідно до змін, що відбулися. Мета шаблону — гнучкий дизайн програмного забезпечення, який повинен полегшувати подальші зміни чи розширення програм, а також надавати можливість повторного використання окремих компонент програми. Крім того використання даного шаблону в великих системах приводить їх до певної впорядкованої структури і робить зрозумілішими завдяки зменшенню їх складності. Наприклад, у мові програмування Java концепція MVC підтримується на рівні стандартних класів-бібліотек. В результаті використання парадигми MVC програміст отримує в своє розпорядження могутню структуру об'єктів-компонентів, функції яких строго розмежовані, що гарантує надійність і розширюваність системи, що розробляється. 7. Як працює MVC в Ruby on Rails? Класи моделей в RoR будуються на основі бібліотеки Active Record, яка, в свою чергу, реалізує об’єктно-реляційне відображення даних, що зберігаються в БД. Для відображення користувацького інтерфейсу передбачений клас ActionView, який вдало реалізує шаблонну систему. Класи взаємодії з користувачем будуються на основі класів ActionController. Саме в контролері оприділяються методи, які в подальшому стають доступними через веб за URL типу http://example.com/app/class/method. По замовчуванню, з кожним методом зв’язаний шаблон виду /app/views/class/method.html.erb. В ActionController визначаються різноманітні допоміжні методи для управління всіма аспектами взаємодії з користувачем та генерації коду, який дуже часто використовується, наприклад для операцій Create, Remove, Update, Delete (CRUD) та при роботі з базою даних. HTTP HTTP Пропоную на конкретному прикладі розглянути як працює MVC. І заразом ближче познайомитися з Ruby. Controller: class ProductsController < ApplicationController # GET /products/new # GET /products/new.xml def new @product = Product.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @product } end end # POST /products # POST /products.xml def create @product = Product.new(params[:product]) respond_to do |format| if @product.save flash[:notice] = 'Product was successfully created.' format.html { redirect_to(@product) } format.xml { render :xml => @product, :status => :created, :location => @product } else format.html { render :action => "new" } format.xml { render :xml => @product.errors, :status => :unprocessable_entity } end end end end Model: class Product < ActiveRecord::Base def self.find_products_for_sale find(:all, :order => "title") end validates_presence_of :title, :description, :image_url validates_numericality_of :price validates_uniqueness_of :title validates_format_of :image_url, :with => %r{\.(gif|jpg|png)$}i, :message => "Must be name of format" protected def validate errors.add(:price, "Must be >0") if price.nil? || price < 0.01 end end View: <h1>New product</h1> <% form_for(@product) do |f| %> <%= f.error_messages %> <p> <%= f.label :title %><br /> <%= f.text_field :title %> </p> <p> <%= f.label :description %><br /> <%= f.text_area :description %> </p> <p> <%= f.label :image_url %><br /> <%= f.text_field :image_url %> </p> <p> <%= f.label :price %><br /> <%= f.text_field :price %> </p> <p> <%= f.submit 'Create' %> </p> <% end %> <%= link_to 'Back', products_path %> Клієнт подає запит на сервер. Останній, в свою чергу, формує повідомлення в контролер, який містить в собі методи. Контролер відшукує серед своїх методів потрібний для відповіді на запит. Певний метод має своє відображення, тому точно присутній у виді. Не завжди він відображається в моделі. Модель служить своєрідною маскою через яку проходять результати обробки даних методом контролера. І, нарешті, з виду повідомлення потрапляє назад до клієнта. У даному прикладі є контролер Products з визначеними методами new create. У виді відображаються поля для вводу інформації, що надсилається у контроллер. Особливістю моделі є те, що вона, у даному випадку, провіряє на присутність інформації у полях та правильності її написання відповідно до умови. Якщо хоч одна з цих умов не виконується – програма далі не виконується. У моделі також можуть реалізуватися функції підрахунку тих чи інших товарів, їхньої загальної кількості (відносно прикладу, показаного вище), та багато інших аспектів. 8. Active Record У загальному випадку Active Record представляє собою надбудову, яку пропонує середовище Rails для забезпечення об’єктно-реляційного відображення (ORM – Object-relational mapping). Що ж таке об’єктно-реляційне відображення і для чого воно використовується? Насамперед потрібно сказати, що ORM – це бібліотеки, що представляють таблиці бази даних у вигляді класів. До прикладу, є база даних і таблиця розмішена у ній під назвою orders. Тоді сама програма буде мати клас, який називається order. Рядки таблиці відповідають об’єктам класу. У межах самого об’єкту для отримання доступу до окремих стовпців використовуються властивості. На рівні класу знаходяться методи, які виконують операції на рівні таблиць. Active Record містить методи CRUD (Create, Read, Update, Delete – створити, прочитати, обновити, видалити). Повернемось до Active Record. За допомогою конфігурацій по замовчуванню розробнику потрібно якнайменше прикладати зусиль, щоб отримати очікуваний результат. Та це не все. Active Record є надзвичайно могучим інструментом який складає одне ціле з рештою середовища виконання Rails. Якщо веб-форма відсилає прикладні дані, які відносяться до бізнес-об’єкту, Active Record може вийняти їх і помістити у модель. Він підтримує удосконалену перевірку правильності даних моделі, і, за наявності помилки у формі вводу даних, Rails виймає і форматує помилки, при цьому використовуючи всього лиш одну стрічку коду. До прикладу: ActiveRecord::Base.establish_connection(:adapter => "mysql", :host => "localhost", :database => "railsdb" ) class Order < ActiveRecord::Base end order.Order.find(123) oder.name = "Dave Thomas" order.save У даному прикладі таблиця, що знаходиться в базі даних MySQL переноситься в Active Record. Програма відшукує товар з конкретним ідентифікатором, замінює ім’я покупця і обновлює попередній рядок. При цьому, як бачимо, жодної конфігураційної інформації не знадобилося (крім тої, яка потрібна для підключення бази даних). 9. Скаффолдинг Scaffolding в перекладі означає будівничі ліси. І тут вже із самої назви зрозуміло для чого призначена ця можливість. Унікальна особливість скаффолдингу дозволяє оприділяти певну структуру програми ще на початку розробки. Противники Rails трактують цю можливість як штучну надбудову, яку необхідно викинути із фреймворку. З одного боку вони праві. Але погляньмо на цю ситуацію очима молодих розробників. І одразу можна побачити переваги такі як: скаффолдинг дає можливість швидко відобразити код перед користувачем для зворотнього зв’язку; швидко добитися бажаного результату; на основі згенерованого коду краще дізнатися як працює Rails; дозволяє використовувати метапрограмування, яке автоматично обновлюється при зміні структури бази даних. Одним словом за допомогою скаффолдингу можна просто за лічені секунди створити користувацький інтерфейс. Звісно, він не буде відрізнятися винахідливістю і шармом, проте щоб пройти велику дорогу потрібно зробити перший маленький крок. З попередніх слів ми вже маємо певне уявлення про скаффолдинг. Проте я пропоную ближче познайомитися з ним на прикладі програмного коду. Та перед тим як перейти до програмування хочу наголосити на те, що даний приклад буде працювати лише на нових версіях Rails, починаючи з 2.0. Справа в тому що розробники нової версії не включили методу scaffold у свої розробки. Це не означає, що його узагалі надалі не буде. Ні, навпаки! Удосконалений скаффолдинг набагато спрощує і автоматизує роботу програміста. Якщо раніше для цього необхідно було створювати модель, редагувати її, мігрувати, розробляти контроллер та прописувати в ньому scaffold :”модель”, то тепер це виглядатиме приблизно так: ruby>generate scaffold «назва контроллера» «поля в базі» «тип». Хіба не простіше? Та річ якраз в тому, що цією простотою досягається швидкість розробки. Адже в наш час темп життя збільшується і, відповідно, програміст повинен працювати не лише якісно, але й швидко. В описі переваг скаффолдингу я вжила нове слово – метапрограмування. І тому саме зараз хотіла б конкретніше пояснити його значення. Техніка метапрограмування використовує програми для написання прогам. Наприклад інші каркаси використовують генерацію обшириних кусків тексту, що дає можливість користувачу просунутись лише на один крок вперед. Або скрипти налаштування, за допомогою яких можна добавляти власні команди, проте лише в обмедену кількість правильно підібраних точок. Метапрограмування замінює ці дві примітивні техніки, тим самим вилучаючи їх недоліки. Ruby є однією з найкращих мов для мета програмування, а Rails, в свою чергу, успішно використовує цю можливість (звісно, Rails також використовує генерацію команд, але лише у нескладних операціях). 10. AJAX (Asynchronous JavaScript and XML) Досить недавно (кілька років тому) вважалось, що браузери не в змозі самостійно обробляти дані. При створенні ужитку, який використовує браузер, тому ж самому браузеру направлялися дані – і це єдиний час коли про нього згадували. Час від часу користувачу потрібно було заповнити поля форми чи клікнути на гіперпосилання, тим самим пробуджуючи програму від сплячки вхідним запитом. У відповідь вона відсилала користувачу готову сторінку, а увесь рутинний процес вертався у своє русло. Проте, можливості браузера набагато більші, ніж ми собі уявляємо. Він вміє працювати з програмним кодом (майже всі браузери працюють з JavaScript та підтримують flash-технології). Виявляється , також, що JavaScript на браузері може у фоновому режимі взаємодіяти з програмою на сервері, обновляючи, таким чином інформацію, призначену для користувача. Jesse James Garret (вчений-дослідник із Флориди, який керував проектом по розробці AJAX, один з розробників Google Maps) назвав такий метод взаємодії AJAX, що колись означало Asynchronous JavaScript and XML. А зараз – це потужна технологія, що дозволяє зменшити потреби браузера. Цей напрям розвитку веб ужитків яскраво демонструє те, що програми не повинні бути повільними, але навпаки – скорочувати час реакції браузера на певні дії користувача. За допомогою AJAX частково пришвидшується перехід від настільних до веб ужитків. Отже, AJAX – це техніка побудови більш інтерактивних, динамічних та цікавих сторінок. Наприклад, мені потрібно відобразити на сторінці певний елемент, який після кожної конкретної дії буде обновлюватися. Проте нелогічно буде якщо для досягнення цього результату я буду обновлювати цілу сторінку замість цього елементу. Саме у такому випадку приходить на допомогу AJAX (прикладом елементів може бути годинник, корзина покупця, частина таблиці, що змінилася у ході роботи та ін.). AJAX є асинхронним, тобто, бібліотеки JavaScript можуть з’єднуватися з сервером в будь-який момент, а веб сторінка тим часом не завмирає в очікуванні відповіді. Він використовує JavaScript на браузері, будь-яку мову програмування на сервері, та XML для задання повідомлень. Як же ж саме працює AJAX на Rails? Зазвичай, використання AJAX потребує достатньо великих навиків як у дизайні, так і у програмуванні. Але коли ми маємо справу з Rails – все зводиться до простого використання цієї технології до такої степені, що використовувати її – те саме, що не використовувати. Отже, розглянемо особливості реалізації AJAX на Rails. Як тільки браузер сформував і відобразив початкову сторінку, дії користувача заставляють його відображати нову веб сторінку (така суть закладена у будь-яку веб програму). Та за допомогою лише кількох кроків можна позбутися цього: активація тригера: тригер активується в тому випадку, коли користувач нажав кнопку, посилання чи заповнив поля форми; виклик веб клієнтом сервера: метод JavaScript, що називається XMLHttpRequest, відсилає дані, які зв’язані з тригером, обробнику подій на сервері. Даними можуть виступати ID прапорця, текст в полі вводу, або ж і ціла форма; сервер пророблює деякі дії: обробник дії зі сторони сервера (а в нашому випадку це контроллер дії Rails) пророблює певні операції з даними і повертає HTML фрагмент веб клієнту; клієнт отримує відповідь: JavaScript зі сторони клієнта, який Rails створює автоматично, отримує фрагмент HTML і використовує його для обновлення певної наперед визначеної частини поточної сторінки HTML. Найчастіше зміни відбуваються у тегу <div>. Окрім цих кроків можна трохи біше потрудитись, і тоді можна заставити сервер повертати будь-який вид даних у відповідь на AJAX запит. Для реалізації підтримки AJAX браузером Rails використовує бібліотеки JavaScript Prototype та script.aculo.us. Ці бібліотеки можна використовувати по за середовищем Rails. Проте у ньому вони настільки майстерно вбудовані, що, напевне, нікому цього робити і не захочеться. Розділ ІІ: RoR і Django: хто кого? "Any sufficiently advanced technology looks like magic" – A. C. Clarke Насамперед хочу розпочати із знайомства з Django. Django (Джанго) — високорівневий OpenSource Python-фреймворк для розробки веб-застосунків. Названо його було на честь джазмена Джанго Рейнхардта (у відповідності до музичних смаків одного зі засновників проекту). Aрхітектура Django подібна на «Модель-Вид-Контролер» (MVC). Однак, те що називається «контролером» в класичній моделі MVC, в Django називається «вид» (англ. view), а те, що мало б бути «видом», називається «шаблон» (англ. template). Таким чином, MVC розробники Django називають MTV ("Модель-Шаблон-Вид"). Першочергово Django був створений для управління сайтами новин LJWorld.com, lawrence.com и KUsports.com компанії The World сompany (Лоуренс, Канзас (en), США). Не зважаючи на те, що розроблявся ще 2003 року, вийшов у світ аж 2005. Але з моменту початку розповсюждення його у статусі програмного забезпечення з відкритими вихідними кодами отримав величезну популярність в усьому світі як платформа до багаточисельних застосунків. Розробники - засновники проекту: Адріан Головатий (англ. Adrian Holovaty), Саймон Віллісон (англ. Simon Willison), Джекоб Каплан-Мосс (англ. Jacob Kaplan-Moss), Вілсон Майнер (англ. Wilson Miner). Наразі знайомство з Django закінчимо, так як воно неявно продовжуватиметься у процесі порівняння його з платформою RoR. Порівнюючи дві молоді, але дуже потужні і перспективні технології, однозначного рішення щодо того яка із них краща, звісно, тяжко досягнути. Тим більше, що з Python і Django я не працювала. Однак, не зважаючи на це, я старатимуся зробити такий аналіз на основі певних теоретичних фактів, а також користуватися досвідом видатного науковця Jonathan S. Linowes із Parkerhill Technology Group LLC та його працею Evaluating Web Development Frameworks: Rails and Django. Насамперед для порівняння потрібно вибрати певні критерії – пункти, за якими буде оцінюватися той чи інший фреймворк. Критерій Rails Django  Технічний    Мова програмування Ruby Python  Концепція Догматична, розумна, «магічний» результат Вільно з’єднана, явний результат програмування  Структура розміщення файлів Строга, функціональна Розкидана, гнучка  База даних/модель Заповнення таблиці за допомогою міграцій; Три таблиці бази даних (розробка, тесування, публікація) вбудовані Заповнення таблиці відбувається вручну; Немає такої можливості  URL роутинг routes.rb – централізований, описовий; зворотне відображення завершене urls.py – розширений, стандартизований; зворотне відображення обмежене  Контроллер/вид Контроллер/вид Вид/шаблон  Форма/шаблон Використовує Ruby Спеціальна шаблонна мова Django  Адміністрування даних Використання plug-in Вбудований інструментарій для адміна  Адміністрування користувача (аутентифікація, сесії) Реєстрацію повинен писати програміст; підтримання сесії; пересилання повідомлень за допомогою “flash” Реєстрацію повинен писати програміст; підтримання сесії; пересилання повідомлень за допомогою сесії  AJAX Вбудований За бажанням  RSS/Atom/XML Підтримує Підтримує  Поширеність (локація) За допомогою lug-in Розроблений більш, ніж дюжиною мов  Підтримка    Проект/вихід у світ як відкритий ресурс як реліз версії 1.0  липень 2004 грудень 2005  липень 2005 Вересень 2008  Документація Багато користувацьких довідників та туторіалів; API посилання – хороші; багато книг, користувацьких блогів, відеоуроків; Багато користувацьких довідників та туторіалів; API посилання – хороші; Декілька книг, користувацьких блогів, відеоуроків;  Засоби для тестування Вбудовані Не використовує тестові фікстури (проекти)  Підтримка Широкий хостинг; в Україні - обмежений Широкий хостинг; в Україні - обмежений   1. Популярність серед користувачів Певні особливості поширення Ruby on Rails і Django яскраво висвітлені у GoogleTrands(заадресоюhttp://www.google.com/trends?q=ruby+rails,+django+python&ctab=0&geo=all&date=all) і представлені у вигляді графіків:  ruby rails    django python    На даний момент існує безліч форумів, груп, присвячених Ruby on Rails і Django. І всі вони висвітлені на різними мовах. А це свідчить про розповсюдженість у всьому світі. І трохи статистики: на середину 2007 року у Google групі Ruby on Rails: Talk налічувалось 7485 учасників, на початок 2010 року їх кількість становить 20209. Щодо Django-users, то у 2007 році їх 4180, а на початок 2010 – 16642. Крім веб підтримки кожна із платформ володіє доволі вагомою базою книг, які призначені як для початківця, так і для досвідченого програміста. Серед активу Rails: Aglie Web Development with Rails (Second edition), Ruby on Rails (Up and Running), Rails Recipes, Programming Ruby 1.9 та інші. Django налічує: The Django Book, Python Web Development with Django,  The Definitive Guide to Django: Web Development Done Right. Обидві платформи користуються послугами Plug-in, Tutorials, Supports. Але у Rails їх значно більше. Збільшення популярності платформ – це добре, але у деяких випадках воно призводить до масового нерозумного використання такого потужного інструментарію. І, як результат, неякісні програмні продукти. Хоча з часом з’являється все більше й більше досвідчених людей, які вміють, знають і можуть надалі розвивати веб технології. 2. Мови програмування Щоб висловити свою думку про мову програмування потрібно порівнювати її з іншою. Розглянемо перелік найрейтинговіших мов програмування на кінець 2009 р.- початок 2010. Position Jan 2010 Position Jan 2009 Delta in Position Programming Language Ratings Jan 2010 Delta Jan 2009 Status  1 1  Java 17.482% -1.54%   A  2 2  C 16.215% +0.28%   A  3 5  PHP 10.071% +1.19%   A  4 3  C++ 9.709% -0.41%   A  5 4  (Visual) Basic 7.354% -1.81%   A  6 6  C# 5.767% +0.16%   A  7 7  Python 4.453% -0.28%   A  8 8  Perl 3.562% -0.74%   A  9 9  JavaScript 2.707% -0.65%   A  10 11  Ruby 2.474% -0.67%   A  11 10  Delphi 2.392% -0.91%   A  12 37  Objective-C 1.379% +1.24%   A  13 -  Go 1.247% +1.25%   A--  14 14  SAS 0.809% +0.01%   A  15 13  PL/SQL 0.718% -0.29%   A  16 18  ABAP 0.641% +0.10%   A--  17 15  Pascal 0.624% -0.04%   B  18 23 
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!