Please use this identifier to cite or link to this item: https://er.chdtu.edu.ua/handle/ChSTU/8981
Title: Автоматизована інформаційно-аналітична система соціальної мережі «КНИГОЛЮБ»
Authors: Чичужко, Марина Володимирівна
Шульга, Данило Вікторович
Issue Date: Jun-2022
Abstract: В ході роботи була зроблена характеристика існуючих рішень та обґрунтування вибору прийнятого принципу побудови додатку, досліджено і описано функції наведеної теми. Створений програмний продукт може використовуватись будь-ким в любому місці де є підключення до інтернету.
URI: https://er.chdtu.edu.ua/handle/ChSTU/8981
Appears in Collections:174 Автоматизація, комп'ютерно-інтегровані технології та робототехніка (Автоматизація та комп'ютерно-інтегровані системи та компоненти)

Files in This Item:
File Description SizeFormat 
Б_174_2022_Шульга.pdf
  Restricted Access
1.44 MBAdobe PDFView/Open Request a copy


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОІЧНИЙ УНІВЕРСИТЕТ 
 
Факультет інформаційних технологій і систем 
 
Кафедра робототехніки та спеціалізованих комп’ютерних систем 
         
 
 
 
Пояснювальна записка 
до кваліфікаційної роботи 
освітнього ступеня «бакалавр» 
 
  
на тему: 
АВТОМАТИЗОВАНА ІНФОРМАЦІЙНО-АНАЛІТИЧНА СИСТЕМА 
СОЦІАЛЬНОЇ МЕРЕЖІ «КНИГОЛЮБ» 
 
 
 
 
Виконав:студент __4__курсу, групи АКІТС-2099 
 
Спеціальність  
151 «Автоматизація та комп'ютерно-інтегровані 
технології» 
(шифр і назва напряму підготовки) 
 
Студент_________Шульга Д.В.______________ 
                                                       ( прізвище та ініціали)    
 
Керівник _________Чичужко М.В._____________ 
                                                       ( прізвище та ініціали)  
  
Рецензент _________Пономар Л.Л.__________ 
                                                             (прізвище та ініціали) 
 
 
 
 
 
 
 
 
 
Черкаси 2022 року 
 
 
ЗМІСТ 
СПИСОК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ ................................... 4 
ВСТУП ......................................................................................................................... 5 
1 ПРИЗНАЧЕННЯ ТА ОБЛАСТЬ ЗАСТОСУВАННЯ ПРОГРАМИ ............... 8 
1.1 Стисла характеристика області та умов застосування програми, що 
розробляється ............................................................................................................... 8 
1.2 Постановка задачі ................................................................................................ 11 
1.2.1 Опис функцій програми ................................................................................... 11 
1.3 Розробка завдання у вигляді варіантів використання ...................................... 11 
1.4 Формування технічних вимог до системи ........................................................ 14 
2 ОГЛЯД ІСНУЮЧИХ РІШЕНЬ ТА ОБҐРУНТУВАННЯ ВИБОРУ 
ПРИЙНЯТОГО ПРИНЦИПУ ПОБУДОВИ ДОДАТКУ .................................. 15 
2.1 Огляд існуючих рішень ....................................................................................... 15 
2.2 Характеристика програмних засобів ................................................................. 19 
2.3 Вибір платформи реалізації ................................................................................ 20 
2.4 Вибір системи управління базами даних .......................................................... 21 
2.5 Вибір мови програмування................................................................................. 26 
2.6 Вибір інструментальних засобів програмування ............................................. 30 
3 ОПИС ТА ОБҐРУНТУВАННЯ ОБРАНИХ ПРОЕКТНИХ РІШЕНЬ ТА 
КОНСТРУКЦІЙ ...................................................................................................... 32 
3.1 Структура бази даних .......................................................................................... 32 
3.2 Загальна структура програми ............................................................................. 35 
3.3 Модуль ведення каталогу книг ........................................................................... 38 
4 РОЗРАХУНКИ ТА ЕКСПЕРИМЕНТАЛЬНІ МАТЕРІАЛИ, ЩО 
ПІДТВЕРДЖУЮТЬ ПРАЦЕЗДАТНІСТЬ ТА НАДІЙНІСТЬ 
ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ................................................................... 42 
5 ОПИС ОРГАНІЗАЦІЇ РОБІТ, ЩО ПОВ’ЯЗАНІ ІЗ ЗАСТОСУВАННЯМ 
ВИРОБУ .................................................................................................................... 45 
5.1 Інструкція користувача ....................................................................................... 45 
ВИСНОВОК ............................................................................................................. 49 
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ ...................................................... 50 
Додаток А .................................................................................................................. 55 
 
 
 ЧДТУ.222088.001 ПЗ 
Змн. Лист № докум. Підпис Дата 
 Розроб. Шульга Автоматизована інформаційно- Літ. Лист Листів 
 Перевір. Чичужко аналітична система соціальної У 2 70 
 Реценз.  мережі «Книголюб» 
 Н. Контр.  Пояснювальна записка ЧДТУ, АКІТС-2099 
 Затверд. Лукашенко 
 
СПИСОК СКОРОЧЕНЬ ТА УМОВНИХ ПОЗНАЧЕНЬ 
 
   
СУБД – Система управління базами даних 
SQL – Structured query language – мова структурованих запитів 
БД – база даних 
Гб – гігабайт, кратна одиниця виміру кількості інформації, що 
дорівнює 1024 мегабайтам 
JSP – технологія, що дозволяє веб-розробникам динамічно 
генерувати HTML, XML та інші веб-сторінки 
ПЗ – програмне забезпечення 
ПП – програмний продукт 
ТЗ – технічне завдання 
ПК - персональний комп’ютер 
ІУС - інформаційно-управляюча система 
 
 
 
Лист 
ЧДТУ. 222088.001 ПЗ 
4 
Змн. Лист № докум. Підпис Дата 
 
ВСТУП 
Темою кваліфікаційної роботи освітнього ступеня «бакалавр» 
являється розробка проекту «Автоматизована інформаційно-аналітична 
система соціальної мережі «Книголюб»”. 
Соціальна мережа – це соціальна структура, що складається з окремих 
вузлів, пов'язаних між собою одним або декількома зв’язками за допомогою 
соціальних взаємин (прикладами вузлів можуть бути окремі люди, різні групи 
людей або співтовариства) [1]. 
В Інтернеті соціальна мережа – це програмно-апаратний сервіс, 
майданчик для різнобічної взаємодії людей (індивідів, користувачів) у групі 
або в різних групах. Теоретично як соціальну мережу можна вважати будь-
яке онлайнове співтовариство, учасники якого приймають участь, наприклад, 
у обговореннях на форумі. Соціальна мережа також будується читачами 
тематичного співтовариства на сервісі блогів. Багато професійних 
співтовариств стали інструментом пошуку людей, рекомендації по пошуку 
співробітників і пошуку роботи. Соціальні мережі в їхньому сучасному 
вигляді мають набір додаткових можливостей порівняно зі створеними 
раніше можливостями спілкування користувачів. 
Першу сходинку у фундаменті нового напрямку веб-сервісів заклав 
амерканський сайт Classmates.com, котрий утворився ще у 1995 році, 
пропонуючи відшукати своїх однокласників та старих друзів. Через десять 
років, у 2005, шалений успіх MySpace призвів до стрімкого розростання 
соціальних мереж та збільшення популярності подібних сервісів серед 
користувачів [1,2]. 
Особливо цікаві в цьому плані тематично спрямовані соціальні мережі 
– котрі займають певну нішу в своєму секторі, і пропонують для спілкування 
всі підручні засоби. Last.fm – музична соціальна мережа – будує зв’язки між 
різними користувачами за принципом їхніх музичних уподобань, 
Лист 
ЧДТУ. 222088.001 ПЗ 
5 
Змн. Лист № докум. Підпис Дата 
 
використовуючи при цьому оригінальні засоби – різні віджети для блогів, 
утиліти для онлайн прослуховування музики, а також будує чарти з 
прослуханої відвідувачами музики. Autokadabra – соціальна мережа 
автолюбителів. Марки авто розподілені по різним клубам, в яких і 
відбувається спілкування учасників чату [3]. 
Загальнотематичні соцмережі, такі як Facebook, та його молодші брати 
– Вконтакте і Connect, також мають шалену популярність, хоча і не 
пропонують майже нічого особливого. Ці сайти акумулювали в себе 
величезну базу різних контактів та профілів, з яких можна дізнатися багато 
інформації про людину та її уподобання [3,4]. 
Феномен успіху соціальних мереж полягає в тому, що повальна 
інтернетизація світу, а особливо України, продовжується досить стрімкими 
темпами. А у світі, де все менше часу залишається на живе спілкування, 
найлегшим видається спосіб знайти людину за своїми особистими 
уподобаннями або інтересами. У випадку Однокласників – бере гору 
ностальгія та бажання отримати інформацію про долю людей, з якими колись 
вчився. У випадку Вконтакте – "сконтактуватись" з новими знайомими, яких 
знайдеш на сайті, а також знайомими знайомих, і так далі [5]. 
Головною особливістю соціальної мережі є в формуванні послуги 
нового покоління, а саме інструменту пошуку необхідних контактів і 
встановлення зв'язків між людьми. 
За допомогою цих можливостей соціальної мережі кожен її користувач 
може створити свій віртуальний портрет – сформувати профайл, у якому 
вказати інформацію про себе, свій досвід роботи, захоплення, інтереси й цілі. 
Тобто кожен учасник мережі одержує ніби то власне „місце проживання” в 
Інтернеті, причому навіть близько не схоже на власні сайти, що так 
поширилися на початку Інтернету [6]. 
Рівень розвитку соціальних мереж майже набув свого піку, і в цей час 
можна ледве не щодня спостерігати створення нових соціальних мереж. 
Лист 
ЧДТУ. 222088.001 ПЗ 
6 
Змн. Лист № докум. Підпис Дата 
 
Останнім часом це стали саме спеціалізовані соціальні мережі. Досить часто 
можна зустріти цікаві теми, іноді повністю абсурдні. Ця тенденція була 
викликана заповненням ринку загальними мережами „для всіх”.  
Лист 
ЧДТУ. 222088.001 ПЗ 
7 
Змн. Лист № докум. Підпис Дата 
 
1 ПРИЗНАЧЕННЯ ТА ОБЛАСТЬ ЗАСТОСУВАННЯ ПРОГРАМИ 
1.1 Стисла характеристика області та умов застосування 
програми, що розробляється 
Зараз, в епоху інформаційних технологій, все частіше і частіше 
з'являються нові типи спілкування. Спочатку такий спосіб була електронна 
пошта, наступним шагом у розвитку стали месенджери (найбільшою 
популярністю з яких користується ICQ), які з неймовірно стрімкою 
швидкістю завоювали популярність значної аудиторії, а на сьогоднішній день 
стають все більш масовим соціальні мережі. 
 Позитивних моментів в такому виді спілкування багато, а кількість 
недоліків незначна. Переваги в першу чергу слід вбачати з основної ідеї їх 
створення - онлайн спілкування різних людей. Такий вид спілкування 
дозволяє знайти старих, давно забутих друзів і відшукати нових цікавих 
людей. 
На цьому позитивні моменти не закінчуються, детальна інформація на 
особистій сторінці кожного користувача дає можливість вибрати собі 
компаньйона для спілкування близького за життєвими інтересами та 
поглядам. Різноманіття і функціональність онлайн сервісу дозволяє 
прикрасити процес спілкування і внести такі можливості, як обмін 
фотографіями, відео трансляція, розміщення різних оголошень, проведення 
різних опитувань і т. д.  
 Процедура реєстрації займе у вас незначний час, але надалі зможе 
зіграти величезну роль у вашому житті шляхом пошуку нових друзів. 
Загалом, соціальні мережі ліквідують всі можливі рамки спілкування між 
користувачами, надаючи вам абсолютно повноцінну свободу думок і слова. 
 Первинним призначенням соціальних мереж було об'єднання груп 
людей. Завдяки їм з'явилася можливість організувати зв'язок на відстані. 
Багато відшукали своїх дальніх родичів, однокласників, друзів з дитинства. 
Лист 
ЧДТУ. 222088.001 ПЗ 
8 
Змн. Лист № докум. Підпис Дата 
 
Можливість листуватися в мережі суттєво економить кошти на 
мобільному рахунку, особливо, якщо обсяг послуг інтернету безлімітний, 
адже вам не потрібно телефонувати в іншу країну. Зручно вирішувати 
питання без перешкод, до того ж можна листуватися відразу з багатьма 
людьми одночасно. 
Позитивною відмінністю соціальних мереж стала можливість 
створення груп за інтересами. Кожен має можливість знайти те, що йому до 
душі, починаючи від офіційних груп улюблених музичних виконавців, 
закінчуючи обговоренням тропічних метеликів або супер модних новинок. 
Зручні такі групи для сучасної молоді, адже завдяки їм завжди можна 
дізнатися новини про освіту, розклад або завдання з предметів. 
Дана робота є тематична соціальна мережа любителів книг.  Цю 
тематику обрано тому, що  перед нами простягається необмежений 
дивовижний світ книг, в якому навіть великих творів більше, ніж може 
прочитати людина. Кожне з них гідно пильного вивчення і дарує читачеві 
радість пізнання і розвитку. 
Для читання таких книг необхідно багато часу і сил, тому не варто 
витрачати години на читання другосортної літератури - час має занадто 
високу цінність. Завдяки сучасним технологіям, ми не виходячи з дому 
можемо мати доступ до мільйонів оцифрованих книг і вибрати найкращі 
книги, відповідні нашим життєвим і професійним цілям. Знайти орієнтири в 
нескінченному різноманітті книг і визначити, яка книга виявиться наступною 
в нас у руках, - складне завдання. 
Зробивши цей складний вибір, ми стикаємося з викликом нашому 
інтелекту і терпінню - необхідно прочитати книгу ефективно, вдумливо, 
поняти все, що вона може нам дати. Однією з умов певного розуміння книги є 
обмін відгуками і думками з іншими людьми, обговорення книги з цікавими 
співрозмовниками. Дискусії про прочитані книги створюють нові ідеї, 
розвивають мислення і мову, вчать розуміти співрозмовників у спорі і, як 
Лист 
ЧДТУ. 222088.001 ПЗ 
9 
Змн. Лист № докум. Підпис Дата 
 
наслідок, досягати взаєморозуміння з багатьма людьми. 
Книжкові веб-сервіси та соціальні мережі допомагають нам 
реалізовувати ці завдання: вибирати електронні книги для читання на основі 
рекомендацій від знавців цікавої літератури і знаходити співрозмовників для 
обговорення прочитаних книг. 
Електронна книга — версії книги в електронному (цифровому) 
вигляді. Такі книжки можна читати з використанням комп’ютерів, мобільних 
телефонів чи спеціалізованих пристроїв. 
В англомовних країнах для позначення цифрових версій книг, для 
розповсюдження яких використовують відкриті формати, засновані на 
звичайних текстових файлах, застосовують також термін e-text (електронний 
текст). Електронними текстами називають також учбові електронні 
посібники, до складу яких, окрім тексту, належать різноманітні зображення, 
приклади даних, вправи, спеціально наведені коментарі і відповіді на 
можливі запитання. 
На основі аналізу завдань, алгоритмів їх вирішення, вхідних потоків 
інформації можна встановити вимоги до набору основних технічних 
характеристик і програмного забезпечення комп'ютера для кваліфікаційної 
роботи. Кожен реальний комп'ютер володіє визначеними значеннями 
основних технічних характеристик. Однак сучасні персональні комп'ютери 
характеризуються великим числом різних технічних, технологічних, 
експлуатаційних і економічних параметрів і показників. Повністю врахувати 
всі характеристики комп'ютера неможливо. Доцільно визначити мінімальний 
набір базових технічних характеристик, що допускають кількісне 
трактування, щоб була можливість встановити значення кожної 
характеристики. Для обгрунтування вибору комп'ютера необхідно зрівняти 
основні технічні характеристики комп'ютера з параметрами, необхідними для 
вирішення кзаданого завдання. 
Лист 
ЧДТУ. 222088.001 ПЗ 
10 
Змн. Лист № докум. Підпис Дата 
 
1.2 Постановка задачі 
1.2.1 Опис функцій програми 
Одна з головних функцій,  реалізувалася у бакалаврській роботі є 
ведення каталогу книг, тобто: 
1. перегляд каталогу літератури;   
2. додавання нової літератури; 
3. зміна даних про книгу; 
4. залишати коментарі про літературу; 
5. проводити пошук серед книг; 
Крім неї є і допоміжні функції такі як: 
1. створювати повідомлення іншим користувачам; 
2. проводити роботу з поточною сесією (вхід в систему, вихід зі 
системи). 
Основна  властивість програми полягає в тому що товари просто 
сортувати по категоріям (по полицям), що є достатньо зручним для 
користувача.  
В модулі ведення каталога користувач повинен бути передбачено 
можливість редагувати, додавати, видаляти книги.  Це надає можливість 
користувачу простого ведення каталогу книг і ручного перегляду їх. 
1.3 Розробка завдання у вигляді варіантів використання 
Користувачі: 
Читач: 
- виконує додавання, видалення, редагування книг; 
- додавання ріних категорій (полиць) для книг; 
- завантажує на компьютер книги інших користувачів; 
- відправляє різні повідомлення; 
- створює коментарії до книг. 
Лист 
ЧДТУ. 222088.001 ПЗ 
11 
Змн. Лист № докум. Підпис Дата 
 
Функції програми:  
1. Функція «Пошуку» 
Запит: Користувач заносить в поле пошуку символи 
Реакція: Програма обробляє введенні дані і відбирає необхідні книги 
Запит: Користувач обирає книгу з отриманого списку і відсилає запит 
на його перегляд 
Реакція: Система надає дані обраної книги 
2. Функція “Перегляду і редагування книги” 
Запит : Користувач вибирає книгу з списку книг в каталогах  
Реакція:Виводься загальна інформація про книгу 
Запит: Із переліку книг Користувач вибирає книгу, яка йому цікава і 
натискає кнопку «Редагувати» 
Реакція: Система покаже сторінку цієї книги, де знаходиться форма 
редагування книг 
3. Функція «Завантаження книги» 
Запит: Користувач натискає кнопку «Завантажити» 
Реакція: Система реалізує запит на збереження книги на локальному 
комп’ютері 
Запит: Користувач натискає кнопку «ОК», для збереження книги на 
ПК. 
Реакція: Система реалізує повідомлення «Завантаження виконано» 
Запит: Користувач може натискати кнопку «Відміна», для скасування 
завантаження 
Реакція: Система вертає користувача на сторінку книги 
4. Функція «Коментарі» 
Запит: Користувач для перегляду та створення коментарів про книгу 
натискає кнопку «Коментарі». 
Реакція: Програма виводить на екран всі створені користувачами 
коментарі, в випадку якщо коментарі відсутні - на екрані з’являється 
Лист 
ЧДТУ. 222088.001 ПЗ 
12 
Змн. Лист № докум. Підпис Дата 
 
повідомлення «Коментарі відсутні» 
Запит: Для того щоб зробити коментар користувач заповнює форму 
коментаря і натискає кнопку «Залишить коментарій» 
Реакція: Система додає коментар в БД 
 6. Функція «Нова книга» 
Запит: Користувач натискає кнопку “Додати книгу” 
Реакція: Система відкриває меню створення нової книги 
Запит:Користувач вводить інформацію про нову книгу, вибирає 
категорію і натискає кнопку «Додати» 
Реакція : Система зберігає нову книгу в БД 
7. Функція «Редагування» 
Запит:Редагування інформації про книгу. Користувач редагує певну 
інформацію натиснувши кнопку «Редагувати», змінює данні і натискає 
«Готово»  
Реакція: Система редагує інформацію і зберігає зміни в БД 
8. Функція «Видалення» 
Запит: Користувач натискає кнопку видалити книгу  
Реакція: Система виводить підтвердження на видалення книги, при 
натисненні Користувачем кнопки «Добре» - система видаляє книгу з БД 
9. Функція «Загрузки фотографії книги» 
Запит: Користувач для загрузки фото натискає кнопку «Редагувати», 
потім кнопку «Завантажити фото» 
Реакція: Система зберігає фото в БД 
10. Функція «Відправки повідомлень» 
Запит: Користувач для створення повідомлень натискає кнопку 
«Написати повідомлення» на сторінці іншого користувача, заповнивши 
форму повідомлення, натискає кнопку «Відправити повідомлення» 
Реакція: Система зберігає повідомлення в БД і відправляє користувачу. 
Лист 
ЧДТУ. 222088.001 ПЗ 
13 
Змн. Лист № докум. Підпис Дата 
 
1.4 Формування технічних вимог до системи 
Програмне забезпечення повинно забезпечувати виконання всіх 
функцій і мати засоби реалізації всіх необхідних процесів оброблення, 
передавання та архівування даних в усіх регламентованих режимах 
функціонування. 
Програмне забезпечення повинно бути: 
- універсальним; 
- функціонально достатнім (повним); 
- надійним;   
-  адаптивним; 
- здатним до модернізації та масштабування; 
- модульним; 
- мати інтуїтивно зрозумілий для користувача інтерфейс; 
- захищеним від зовнішніх чинників; 
- інформувати персонал, що обслуговує систему, про проблеми 
документування або відновлення у разі виникнення відмов [7]. 
Системне програмне забезпечення базується на платформі, яка 
повинна забезпечити: 
- підтримку "клієнт-серверної" технології обробки даних; 
- розмежування доступу до системних ресурсів та даних; 
- резервування   та  захист   інформації,   (захист   цілісності   баз  
даних), підтримувати режими роботи з холодним / гарячим резервом [7,8]. 
Програмне забезпечення повинно розроблятися із застосуванням 
принципів структурного і модульного програмування. Кожна із задач, яка 
входить в систему має бути максимально незалежною від інших. 
Програмне забезпечення повинно бути  стійким до хибних дій  
користувача (помилки у діях користувачів не повинні приводити до збоїв 
(відмов) у роботі програмного забезпечення). Повино забезпечувати 
гарантований контроль вхідної та вихідної інформації [7-11].
Лист 
ЧДТУ. 222088.001 ПЗ 
14 
Змн. Лист № докум. Підпис Дата 
 
2 ОГЛЯД ІСНУЮЧИХ РІШЕНЬ ТА ОБҐРУНТУВАННЯ ВИБОРУ 
ПРИЙНЯТОГО ПРИНЦИПУ ПОБУДОВИ ДОДАТКУ 
2.1 Огляд існуючих рішень 
Facebook - в даний час наймаштабніша соціальна мережа в світі. Була 
заснована в 2004 році Марком Цукербергом і його сусідами по кімнаті під час 
навчання в Гарвардському університеті - Едуардо Саверіном, Дастіном 
Московіцем і Крісом Хьюзом [9]. 
Спочатку веб-сайт був названий Thefacebook і був у доступі лише для 
студентів Гарвардського університету, потім реєстрацію відкрили для різних 
університетів Бостона, а потім і для студентів будь-яких вузів США, що 
мають електронну адресу в домені .edu. Починаючи з вересня 2006 року сайт 
доступний для абсолютно всіх користувачів Інтернету у віці від 13 років, які 
зареєстрували адресу електронної пошти. 
Facebook дозволяє створити особистий профіль з фотографією та 
інформацією про себе, запрошувати друзів, обмінюватися з ними текстовими 
повідомленнями, змінювати свій статус, залишати нові повідомлення на своїй 
і чужій «стінах», завантажувати любі фотографії і відеозаписи, створювати 
групи (спільноти за інтересами). 
У 2007 році Facebook запропонував стороннім програмістам 
розробляти додатки (ігри, засоби обміну музикою, фотографіями і т. д.) і 
заробляти на цьому. Завдяки цій функції відвідуваність сайту підвищилася 
[3,10]. 
Facebook пропонує безліч функцій, за допомогою яких відвідувачі 
можуть взаємодіяти між собою. Серед найбільш вживаних - віртуальне 
підморгування, фотоальбоми і «стіна», на якій друзі користувача можуть 
залишати повідомлення. 
Користувач може контролювати правила доступу до інформації, 
опублікованої в його профілі, і обирати, хто має доступ до тієї чи іншої 
Лист 
ЧДТУ. 222088.001 ПЗ 
15 
Змн. Лист № докум. Підпис Дата 
 
частини сторінки. 
Негативні риси цієї соціальної мережі: 
1. Не запобігання суїциду - згідно з існуючою інформацією, люди, 
що публікують свої суїцидальні наміри в мережі Інтернету, рідко отримують 
якусь допомогу. 
2. Порушення інтелектуальної власності - Незважаючи на те що, зі 
слів засновника Цукерберга, «Наша філософія полягає в тому, що інформація 
належить користувачам, як і контроль над її розповсюдженням», Facebook 
заявляє про свої права на об’єкти інтелектуальної власності, відмовляючись 
повертати відвідувачам їх же власний контент з віддалених з різних причин 
сторінок, тим самим відчуджуючи теоретично невідчужуване авторське право 
і йдучи врозріз з нормами міжнародного права, що торкається охорони 
авторських та суміжних прав. 
3. Порушення конфіденційності. 
На підставі угоди користувача, Фейсбук залишає за собою право 
вільно і на свій розсуд поводитись з інформацією користувача навіть після 
видалення користувацького аккаунта з мережі (раніше, користувальницький 
контент зберігався на серверах компанії досить довгий час навіть після 
видалення відповідного аккаунта). 
Крім того, Facebook схильний на свій розсуд використовувати 
контактну інформацію відвідувачів (адреси електронної пошти та номери 
телефонів). 
ВМережі — соціальна мережа, турецький аналог сервісу «Facebook». За 
Даними сайту Alexa.com станом на березень 2013, другий за відвідуваністю 
сайт в Азії, другий в Пакістані, сьомий в Казахстані  та 35-й в світі. У червні 
2013 щоденна аудиторія соціальної мережі досягала 100 мільйонів осіб. 
Користувачам «ВМережі» доступний характерний для багатьох 
соціальних мереж опцій: зареєструвати профіль з інформацією про себе, 
розробляти і поширювати контент, гнучко управляти процесами доступу, 
Лист 
ЧДТУ. 222088.001 ПЗ 
16 
Змн. Лист № докум. Підпис Дата 
 
взаємодіяти з іншими відвідувачами приватно (через приватні повідомлення) 
і публічно (за допомогою заміток на «стіні» , а також через механізм груп і 
зустрічей), відстежувати через меню новин різну активність друзів і 
співтовариств. 
Окрім можливості створювати нові повідомлення користувач може 
залишати коментарі під уже розміщеним контентом. Існує можливість до 
своїх повідомленнь «прикріплювати» фотографії, аудіо-треки та відео-записи 
(у тому числі і довгі фільми), графіті та опитування. 
Можливість закачувати на сайт особисті записи і використовувати 
файли, завантажені різними користувачами, робить «ВКонтакте» одним з 
найбільших медіа-архівів Рунета. З усіх присутніх на сайті файлів користувач 
може створювати у своєму профілі власну колекцію записів, при бажанні 
групуючи їх в окремі альбоми. При цьому введено граничний обсяг для 
одного альбому - 500 зображень (фото). 
«ВМережі» пропонує стороннім ресурсів використовувати додатково 
розроблені інструменти - віджети - для глибокої інтеграції з соціальною 
мережею. Ці рішення дають можливість вбудовувати в сайти систему різних 
коментарів для користувачів, спільноти, систему опитувань, а також 
можливість просто поділитися посиланням на матеріал з іншими 
користувачами і залогуватися на сайті. 
Інтерфейс «ВМережі» доступний більш ніж на 30 мовах; в якості 
альтернативних пропонуються (мається на увазі стиль подання) «У Азії», 
«Дореволюційний». 
У сайту є мобільна версія, розташована за адресою m.vm.com. У 
деяких супутникових операторів доступна «безкоштовна» (без оплати 
трафіку) мобільна версія - 0.vm.com (полегшена версія без відтворення відео, 
аудіо та фото). 
Також є програми «ВМережі» на різних мобільних платформах (iOS, 
Android, Windows Phone). 
Лист 
ЧДТУ. 222088.001 ПЗ 
17 
Змн. Лист № докум. Підпис Дата 
 
Поширена думка, що «ВМережі», як і деякі інші іншомовні соціальні 
мережі, відтворює не тільки ідею Facebook, але також дизайн  і архітектуру 
сайту. Часто його називають дублєм англомовної мережі. Власник у відповідь 
на звинувачення стверджував, що дійсно вперше ознайомився з алгоритмами 
соціальної мережі на прикладі Facebook, але реалізація сайту вимагала 
адаптації концепції під азійську систему освіти, а також написання власного 
програмного коду. Схожість дизайну пояснюється використанням відкритої 
концепції стилів, наведеної, зокрема, у книзі «The CSS Anthology: 101 
Essential - Tips, Tricks & Hacks». Крім того, у відповідь на критику автори 
заявляють, що деякі ідеї та механізми, реалізуємі в соціальних мережах, 
вперше були реалізовані саме у «ВМережі». 
Ряд психологів відзначає появу форми інтернет-залежності від 
віртуального спілкування в соціальних мережах. 
У листопаді 2010 року «ВМережі» був названий другим сайтом в 
списку піратських розповсюджувачів музики, опублікованому 
Американською асоціацією звукозаписних компаній. За заявою Асоціації, «ці 
сайти-шахраї поповнюють кишені своїх операторів [за умови оплати за 
трафік], не сплачуючи правовласникам контенту». Очолив список китайський 
пошуковий сайт Baidu.  
1 березня 2011 влада США звинуватила соціальну мережу «ВМережі» 
у піратстві. 
List.Au (також з 2012 року - ListA.com) - великий комунікаційний 
портал австралійського Інтернету, щомісячна аудиторія якого за даними на 
листопад 2012 року перевищує 31,9 млн чоловік. Ресурс займає 31-е місце за 
популярністю в світі і 3-є - у Америці. Кількість працівників становить 2100 
осіб. 
Ключовий сервіс порталу - поштова служба Почта@List.Au, був 
створений в 1999 році в заснованій австралійськими емігрантами 
американської софтверної компанії DataArt. Програмісти офісу РataArtу 
Лист 
ЧДТУ. 222088.001 ПЗ 
18 
Змн. Лист № докум. Підпис Дата 
 
створили нове програмне забезпечення для поштового веб-сервера, яке в 
подальшому повинно продавати західним компаніям. Щоб протестувати 
сервіс, його тимчасово виклали у вільний доступ в листопаді 1998 року для 
світових користувачів, і сервіс раптом став стрімко набирати популярність. 
Користувачі соціальної мережі Мій світ@List.Au були помічені у 
поширенні порнографії (у тому числі і дитячої), яка миттєво ж не видалялася 
модераторами, а тільки після того, як про це ставало доступно іншим 
користувачам, у зв'язку з чим 9 квітня 2009 в СКП надійшли повідомлення 
від ряду громадян. При цьому Власник не виключає, що скандал може бути 
комерційним замовленням. 
У квітні 2012 року цивільний активіст Руда Костіков  заявив, що 
поштові сервіси List.Au блокують повідомлення з посиланням на сайт на 
захист групи Pussy Riot freepussyriot.org. Потім в офіційних ЗМІ і Твіттері 
Руда з'явилося спростування цієї інформації. 
2.2 Характеристика програмних засобів 
MySQL - вільна реляційна система керування базами даних. Розробку 
та підтримку MySQL реалізує корпорація Oracle, що отримала права на 
торговельну марку разом з компанією Sun Microsystems, яка раніше придбала 
шведську компанію MySQL AB. Продукт поширюється як під GNU General 
Public License, так і під особистою комерційною ліцензією. Крім цього, 
розробники створюють функціональність за вимогами ліцензійних 
користувачів, саме завдяки такому замовленню майже в старих версіях 
з'явився механізм реплікації [35]. 
MySQL є оптимальним рішенням для малих і середніх додатків. 
Входить до складу серверів WAMP, AppServ, LAMP і в тріальній збірці 
серверів Денвер, XAMPP. Зазвичай MySQL використовується як сервер, до 
якого підключаються локальні або видалені клієнти, проте в дистрибутив 
Лист 
ЧДТУ. 222088.001 ПЗ 
19 
Змн. Лист № докум. Підпис Дата 
 
входять процедури внутрішнього сервера, що дозволяє включати MySQL в 
автономні програми [30-35]. 
PostgreSQL - вільна об'єктно-реляційна система керування базами 
даних (СКБД). 
Існує в реалізаціях для безлічі UNIX-like платформ, включаючи AIX, 
різні BSD-системи, HP-UX, IRIX, Linux, Mac OS X, Solaris / OpenSolaris, 
Tru64, QNX, а також для системи Microsoft Windows. 
Сильними рисами PostgreSQL вважаються: 
- підтримка БД практично любого розміру; 
- потужні та надійні механізми транзакцій і реплікації; 
- розширювана мережа вбудованих мов програмування: у стандартній 
поставці підтримуються PL / pgSQL, PL / Perl, PL / Python і PL / Tcl, 
Java, PL / PHP, PL / Py, PL / R, PL / Ruby; 
- спадкування; 
- легка розширюваність. 
2.3 Вибір платформи реалізації 
Платформа – апаратний і / або програмний комплекс, який є базою для 
різних обчислювальних систем.. 
Одною із таких платформ є операційна система. Дана бакалаврська 
робота підтримується більшістю операційних систем, які підтримують веб-
браузери. Тобто такі, як Windows 7, Windows XP, Windows Vista, Windows 8, 
Windows 2000, Mac OS, Linux, UNIX та інші схожі. 
Системне програмне забезпечення створено на платформі, яка 
повинна забезпечити: 
- підтримку "клієнт-серверної" технології обробки даних; 
Лист 
ЧДТУ. 222088.001 ПЗ 
20 
Змн. Лист № докум. Підпис Дата 
 
- розмежування доступу до системних ресурсів та даних; 
- резервування   та  захист пакету  інформації,   (захист   цілісності   
баз  даних). 
Іншою платформою для роботи є веб-браузер, тому що наведена 
програма запускається за його допомогою. 
Web-браузер - програмне забезпечення для персонального 
комп'ютера або іншого електронного пристрою, як правило, підключеного 
до Інтернету, що дає можливість користувачеві працювати з текстом, 
малюнками або іншою цікавою інформацією на гіпертекстовій веб-сторінці. 
Тексти та малюнки можуть містити ссилки на інші веб-сторінки, розташовані 
на тому ж веб-сайті або на різних веб-сайтах. Веб-переглядач за допомогою 
посилань дозволяє користувачеві швидко та легко отримувати інформацію, 
розміщену на багатьох веб-сторінках. 
Бакалаврська робота підтримується любим браузером в якому є 
підтримка HTML5, CSS3, AJAX. Тобто можна робити в любому з цього 
списку: Opera, Mozilla Firefox, Safari (Apple Computer), Google Chromе. 
2.4 Вибір системи управління базами даних 
MySQL - вільна реляційна система управління базами даних. Розробку 
та підтримку MySQL реалізує корпорація Oracle, що отримала права на 
торговельну марку разом з поглиненої Sun Microsystems, яка раніше придбала 
шведську компанію MySQL AB. Продукт поширюється як під GNU General 
Public License, так і під особистою комерційною ліцензією. Крім цього, 
розробники створюють функціональність за замовленням ліцензійних 
користувачів, саме завдяки такому розвитку майже в старих версіях з'явився 
механізм реплікації. 
Механізм реплікація - механізм синхронізації даних декількох копій 
об'єкта (наприклад, вмісту бази даних). Реплікація - це процес, під яким 
Лист 
ЧДТУ. 222088.001 ПЗ 
21 
Змн. Лист № докум. Підпис Дата 
 
розуміється копіювання бази даних з одного джерела на інший (або на безліч 
інших) і навпаки. 
При реплікації зміни, зроблені в одній базі об'єкта, можуть бути 
поширені в інші копії. 
MySQL є оптимальним рішенням для малих і середніх додатків. 
Входить до складу серверів WAMP, AppServ, LAMP і в портативні збірки 
серверів Денвер, XAMPP. Зазвичай MySQL використовується як сервер, до 
якого підключаються локальні або віддалені клієнти, проте в дистрибутив 
входить бібліотека внутрішнього сервера, що дозволяє включати MySQL в 
автономні програми. 
Гнучкість СУБД MySQL забезпечується підтримкою великої кількості 
видів таблиць: користувачі можуть вибрати як таблиці типу MyISAM, що 
реалізують повнотекстовий пошук, так і таблиці InnoDB, що реалізують 
транзакції на рівні окремих записів. Більше того, СУБД MySQL 
поставляється із спеціальним видом таблиць EXAMPLE, що демонструє 
принципи побудови нових типів таблиць. Завдяки відкритій архітектурі і 
GPL-ліцензуванню, в СУБД MySQL постійно з'являються нові типи таблиць. 
26 лютого 2008 Sun Microsystems придбала MySQL AB за $ 1 млрд., 27 
січня 2010 Oracle придбала Sun Microsystems за $ 7,4 млрд. і додала MySQL в 
свою лінійку СУБД. 
Спільнотою розробників MySQL створені різні додатки, такі як 
Drizzle, OurDelta, Percona Server, і MariaDB. Всі ці відгалуження вже існували 
на момент об’єднання компанії Sun корпорацією Oracle. 
MySQL має API для мов Delphi, C, C + +, Ейфель, Java, Лісп, Perl, PHP, 
Python, Ruby, Smalltalk, Компонентний Паскаль і Tcl, бібліотеки для мов 
програмування платформи .NET, а також забезпечує підтримку для ODBC за 
допомогою ODBC-драйвера MyODBC. 
Максимальний розмір таблиць в MySQL 3.22 становить до 4 ГБ, в 
наступних версіях максимальний розмір становить до 8 млн ТБ (2 в 63 
Лист 
ЧДТУ. 222088.001 ПЗ 
22 
Змн. Лист № докум. Підпис Дата 
 
степені байт). 
Розмір таблиці обмежений її видом. У загальному випадку тип 
MyISAM обмежений граничним об’ємом файлу у файловій системі 
операційної системи. Наприклад в NTFS цей розмір теоретично може 
складати до 32 ексабайт. У разі InnoDB одна таблиця може зберігатися в 
декількох файлах, які становлять єдиний табличний простір. Розмір його 
може досягати 64 терабайт. 
На відміну від MyISAM в InnoDB є значне обмеження на розмір 
стовпців, яке можна додати в одну таблицю. Розмір сторінки пам'яті за 
замовчуванням складає 16 кілобайт, з яких під дані відведено 8123 байта. 
Розмір вказівника на динамічні поля складає 20 байт. Таким чином, у разі 
застосування динамічного формату рядка (ROW_FORMAT = DYNAMIC), 
одна таблиця може складати максимум 409 стовпців типу blob або text. 
Підтримує великий набір внутрішніх типів даних: 
Текстові типи показані в таблиці 2.1. 
Таблиця 2.1 - Текстові типи даних СУБД MySQL 
Тип Опис 
CHAR(size) Містить рядок фіксованої довжини (може містити 
букви, цифри, та інші символи). Фіксована довжина 
задається в дужках. Може зберігати до 255 символів. 
VARCHAR(size) Містить рядок змінної довжини. Найбільша довжина 
задається в дужках. Може зберігати до 255 символів. 
Примітка: Якщо ви покладете туди значення більше за 255, 
тип буде перетворений на TEXT. 
TINYTEXT Рядок з найбільшою довжиною 255 символів 
TEXT Зберігає рядок з найдовшою довжиною 65,535 
символів 
BLOB Великий двійковий об'єкт (Binary Large OBject). 
Зберігає до 65,535 байт даних 
Лист 
ЧДТУ. 222088.001 ПЗ 
23 
Змн. Лист № докум. Підпис Дата 
 
MEDIUMTEXT Зберігає рядок з максимальною довжиною в 
16,777,215 символів. 
MEDIUMBLOB Великий двійковий об'єкт. 16 Мегабайт даних 
LONGTEXT Рядок з найбільшою довжиною в 4,294,967,295 
символів. 
LONGBLOB Великий двійковий об'єкт. 4 Гігабайти даних 
ENUM(x,y,z,і Дозволяє ввести список можливих значень. Можна 
т.д.) перелічити до 65535 різних значень типу. Якщо значення 
що вставляють в поле не буде належати списку, вставиться 
порожнє значення. 
Зауваження: Значення будуть відсортовані в тому 
порядку в якому ви їх запишете. 
Можливі значення вводяться в такому форматі: 
ENUM('X','Y','Z') 
SET Подібно до ENUM окрім того, що SET може містити 
до 64 значень списку, і не може зберігати більше одного 
вибору. 
 
Числові типи показані в таблиці 2.2: 
Таблиця 2.2 - Числові типи СУБД MySQL  
Тип Опис 
TINYINT(size) Цілий від -128 до 127 . Від 0 до 255 UNSIGNED. 
Максимальне число цифр задається в дужках. 
SMALLINT(size) Від -32768 до 32767. Від 0 до 65535 UNSIGNED. 
Максимальне число цифр задається в дужках. 
MEDIUMINT(size) Від -8388608 до 8388607. Від 0 до 16777215 
UNSIGNED. Максимальне число цифр задається в 
Лист 
ЧДТУ. 222088.001 ПЗ 
24 
Змн. Лист № докум. Підпис Дата 
 
дужках. 
INT(size) Від -2147483648 до 2147483647. Від 0 до 
4294967295 UNSIGNED. Максимальне число цифр 
задається в дужках. 
BIGINT(size) Від -9223372036854775808 до 
9223372036854775807. Від 0 до 18446744073709551615 
UNSIGNED. Максимальне число цифр задається в 
дужках. 
FLOAT(size,d) Число з плаваючою крапкою. Максимальне число 
цифр задається в параметрі size. Максимальне число 
цифр після десяткової крапки задається в параметрі d. 
DOUBLE(size,d) Точшіше число з плаваючою крапкою. 
Максимальне число цифр задається в параметрі size. 
Максимальне число цифр після десяткової крапки 
задається в параметрі d. 
DECIMAL(size,d) DOUBLE що зберігається як рядок з фіксованою 
крапкою.. Максимальне число цифр задається в 
параметрі size. Максимальне число цифр після 
десяткової крапки задається в параметрі d. 
Типи дати і часу показані в таблиці 2.3. 
Таблиця 2.3 - Типи дати і часу СУБД MySQL 
Тип Опис 
DATE() Дата. Формат: YYYY-MM-DD.  
Зауваження: Підтримується діапазон від '1000-01-01' 
до '9999-12-31' 
DATETIME() Формат: YYYY-MM-DD HH:MM:SS. 
Зауваження: Підтримується діапазон від '1000-01-01 
Лист 
ЧДТУ. 222088.001 ПЗ 
25 
Змн. Лист № докум. Підпис Дата 
 
00:00:00' до '9999-12-31 23:59:59' 
TIMESTAMP() Значення TIMESTAMP зберігаються як кількість 
секунд з початку епохи Unix ('1970-01-01 00:00:00' UTC). 
Формат: YYYY-MM-DD HH:MM:SS 
Зауваження: Підтримується діапазон від '1970-01-01 
00:00:01' UTC до '2038-01-09 03:14:07' UTC 
TIME() Час. Формат: HH:MM:SS 
Зауваження: Підтримується діапазон від '-838:59:59' 
до '838:59:59' 
YEAR() Рік в двоцифровому, або чотирицифровому форматі. 
Зауваження: Значення, що дозволені в 
чотирицифровому форматі: від 1901 до 2155. Значення 
дозволені в двоцифровому форматі: від 70 до 69, що 
відповідає 1970 та 2069. 
2.5 Вибір мови програмування 
В своїй акалаврській роботі я використовую мову програмування Ruby 
і фреймворк для розробки web-додатків Ruby on Rails. 
Ruby - динамічна, рефлективна, інтерпретована високорівнева мова 
програмування для легкого і зручного об'єктно-орієнтованого програмування. 
Мова має незалежну від типу операційної системи реалізацією 
багатопоточності, сувору динамічну типізацію, складальник необхідного і 
багато інших можливостей. Ruby близький за правилами синтаксису до мов 
Perl і Eiffel, з об'єктно-орієнтованого підходу - до Smalltalk. Також деякі риси 
Лист 
ЧДТУ. 222088.001 ПЗ 
26 
Змн. Лист № докум. Підпис Дата 
 
мови перейнято з Python, Lisp, Dylan та CLU. 
Ruby - повністю об'єктно-орієнтована мова. У мові всі дані є 
об'єктами, на відміну від багатьох інших мов, де розміщено примітивні типи. 
Кожна функція — метод. Змінні Ruby передаються за посиланням. Для 
програміста, який працював з поширении гібридними мовами 
програмування, деякі ефекти такого рішення часто здаються несподіваними. 
Можливості Ruby: 
- Має лаконічний і простий синтаксис, місцями розроблений під 
впливом Ада, Eiffel і Python.  
- Дозволяє обробляти процедури в стилі Java і Python.  
- Дозволяє перевизначати оператори, які в дійсності є методами.  
- Повністю об'єктно-орієнтована мова програмування. Всі дані в 
Ruby є об'єктами в вигляді Smalltalk. Єдиний виняток - керуючі конструкції, 
які в Ruby на відміну від Smalltalk не є об'єктами. Наприклад, число «1» - це 
екземпляр класу Fixnum. Також підтримується внесення методів в клас і 
навіть в конкретний екземпляр під час виконання програми.  
- Не підтримує множинне спадкування, але замість цього може 
використовуватися концепція «домішок», заснована в даній мові на механізмі 
модулів.  
- Містить автоматичний формувач сміття. Він працює для всіх 
об'єктів Ruby, в тому числі для зовнішніх бібліотек.  
- Створювати розширення для Ruby на С дуже просто частково 
через формувач сміття, частково через нескладного і зручного API.  
- Підтримує замикання з абсолютною прив'язкою до змінних.  
- Підтримує блоки коду (код полягає в {...} або do ... end). Блоки 
можуть застосовуватись в методах або перетворюватися в замикання.  
- Цілі змінні в Ruby автоматично конвертуються між типами 
Fixnum (32-розрядні) і Bignum (більше 32 розрядів) окремо від їх значення, 
що дозволяє виробляти цілочисельні математичні розрахунки зі заданою 
Лист 
ЧДТУ. 222088.001 ПЗ 
27 
Змн. Лист № докум. Підпис Дата 
 
великою точністю.  
- Не вимагає попереднього визначення змінних, але для 
інтерпретатора бажано, щоб змінним присвоювалося пустє значення nil (тоді 
інтерпретатор знає, що ідентифікатор позначає змінну, а не ім'я методу). Мова 
використовує прості угоди для позначення області видимості. Приклад: 
просто var - локальна змінна, @ var - змінна екземпляра (член або поле 
об'єкта класу), @ @ var - змінна класу, $ var - глобальна змінна.  
- У Ruby безпосередньо в мові реалізовані багато варіантів 
проектування, так, наприклад, «одинак» (singleton) може бути (хоча і не 
зобов'язаний) реалізований додаванням заданих методів до одного 
конкретного об'єкту.  
- Може динамічно завантажувати розширення, якщо це реалізує 
операційна система.  
- Має незалежну від ОС підтримку невитісняючої 
багатопоточності.  
- Перенесено на безліч платформ. Спочатку розроблявся на Linux, 
але працює на багатьох версіях Unix, DOS, Microsoft Windows (зокрема, 
Win32), Mac OS, BeOS, OS / 2 і т. д.   
 Ruby on Rails - фреймворк, реалізований на мові програмування 
Ruby. Ruby on Rails надає архітектурний зразок Model-View-Controller 
(модель-представлення-контролер) для веб-додатків, а також забезпечує їх 
повну інтеграцію з веб-сервером і сервером бази даних. 
 Ruby on Rails визначає такі принципи розробки додатків: 
- Надає механізми повторного використання, що дозволяють 
мінімізувати дублювання коду в додатках (принцип Don't repeat yourself). 
- За замовчуванням використовуються угоди по конфігурації, 
властиві для більшості додатків (принцип Convention over configuration). Явна 
специфікація конфігурації потрібна лише в нестандартних випадках. 
Основними компонентами додатків Ruby on Rails є модель (model), 
Лист 
ЧДТУ. 222088.001 ПЗ 
28 
Змн. Лист № докум. Підпис Дата 
 
представлення (view) і контролер (controller). Ruby on Rails застосовує REST-
стиль побудови веб-додатків. 
Модель надає різним компонентам програми об'єктно-орієнтоване 
відображення даних (таких як каталог продуктів або список замовлень). 
Об'єкти моделі можуть реалізовувати завантаження і збереження даних в 
реляційної базі даних, а також реалізують бізнес-логіку. 
Для зберігання об'єктів моделі в реляційної СУБД за умовчанням в 
Rails 3 використана бібліотека ActiveRecord. Існуючий аналог — DataMapper. 
Існують плагіни для роботи з нереляціоннимі базами даних, як варіант 
Mongoid для роботи з MongoDB. 
Представлення створює користувальницький інтерфейс з 
використанням отриманих від контролера даних. Представлення також 
передає запити користувача на обробку даними в контролер (як правило, 
представлення не змінює безпосередньо модель). 
У Ruby on Rails уявлення реалізується за допомогою шаблонів ERB. 
Вони являють собою файли HTML з додатковими компонентами фрагментів 
коду Ruby (Embedded Ruby або ERb). Висновок, згенерований вбудованим 
кодом Ruby, включається в текст шаблону, після чого сторінка HTML 
повертається користувачеві. Крім ERB можливо використовувати ще близько 
20 шаблонів, в тому числі Haml. 
Контролер у Rails - це набір логіки, що працює після отримання 
HTTP-запиту сервером. Контролер відповідає за виклик різних методів 
моделі і запускає формування уявлення. 
Відповідність інтернет-адреси з контролером задається у файлі config / 
routes.rb. Контролером в Ruby on Rails є клас, успадкований від 
ActionController :: Base. Відкриті методи контролера є уявними діями 
(actions). Action часто відповідає окремому представлення. Наприклад, за 
запитом користувача admin / list буде викликаний метод list класу 
AdminController і потім використано уявлення list.html.erb. 
Лист 
ЧДТУ. 222088.001 ПЗ 
29 
Змн. Лист № докум. Підпис Дата 
 
2.6 Вибір інструментальних засобів програмування 
Sublime Text - кросплатформенний, написаний з використанням python 
текстовий редактор і редактор вихідних текстів програм. Програма була 
розроблена як багатофункціональне розширення Vim. Sublime Text не є 
вільним програмним забезпеченням або програмним забезпеченням з 
відкритим вихідним кодом, проте деякі його додатки поширюються по 
вільній ліцензії, а також розробляються і підтримуються спільнотою 
розробників. 
Основні функції: 
- Міні-карта: попередній перегляд повного вихідного коду - 
користувачі читають весь свій код в правому верхньому куті екрану і при 
виборі нього можуть переходити на різні його частини. 
- Можливість вибору декількох розділів коду 
- Редагування в декількох панелях 
- Закладки у файлах 
- Вбудована підтримка 27 мов програмування (44 у Sublime Text 2) 
- C,    C++, C#, CSS, D, Dylan, Erlang, HTML, Groovy, Haskell, Java, JavaScript, 
LaTeX, Lisp, Lua, Markdown, MATLAB, OCaml, Perl, PHP, Python, R, Ruby, 
SQL, TCL, Textile і XML. 
- Автозбереження 
- Пошук і заміна, реалізована на регулярних виразах 
- Повністю підлаштовується підсвічування синтаксису - темний 
фон Sublime Text призначений для збільшення контрастності тексту. Основні 
елементи синтаксису виділені базовими кольорами, які краще поєднуються з 
темним фоном, ніж зі світлим. 
Лист 
ЧДТУ. 222088.001 ПЗ 
30 
Змн. Лист № докум. Підпис Дата 
 
- Відповідність дужок, автозаповнення - коли користувач створює 
код, Sublime Text, залежно від використовуваної мови, буде застосовувати 
різні варіанти для завершення запису. Він також автоматично завершує 
створені користувачем змінні. 
- Підтримка макросів і плагінів на Python'е. 
- Користувальницькі гарячі клавіші. 
- Автозаповнення - коли користувач набирає код, Sublime Text, 
залежно від використовуваної мови, буде надавати різні варіанти для 
завершення запису. Він також автоматично завершує створені користувачем 
змінні. 
Sublime Text може мати встроєний менеджер пакетів, який дозволяє 
користувачеві знаходити, встановлювати, оновлювати і видаляти пакети без 
перезавантаження Sublime Text. Менеджер пакетів включає встановлені 
пакети  з автоматичним оновленням та завантаженням пакетів з GitHub, 
BitBucket і звичайний JSON канал/репозиторій системи. Він також реалізує 
оновлення пакетів клонованих з GitHub і BitBucket допомогою Git і Hg, а 
також надання команд для включення і відключення пакетів. Менеджер 
пакетів, також поєднує в собі команди для об'єднання будь-якого пакета в 
каталог. 
Лист 
ЧДТУ. 222088.001 ПЗ 
31 
Змн. Лист № докум. Підпис Дата 
 
3 ОПИС ТА ОБҐРУНТУВАННЯ ОБРАНИХ ПРОЕКТНИХ РІШЕНЬ ТА 
КОНСТРУКЦІЙ 
3.1 Структура бази даних 
Створення бази даних було реалізовано на СКБД MySQL. MySQL 
базується на мові SQL, програма досить зручна і має безліч можливостей. 
Робота, яку було виконано складається із створенні таблиць, зазначення 
ключових полів і визначенні зв'язків. У деяких ситуаціях потрібно 
повідомити про обмеження, що накладаються на можливі значення поля (на 
домен [35]).  
Структура бази даних (рисунок 3.1). 
 
Рисунок 3.1 - Структура бази даних 
Отже, база даних складається з 6 таблиць, опишемо кожну окрему 
таблицю за такою схемою: кожній таблиці дамо простий опис, зазначимо 
список полів, а для кожного поля відзначимо, чи є воно ключовим, його тип, 
розмір і дамо йому короткий опис, в якому вкажемо сенс, покладений в 
Лист 
ЧДТУ. 222088.001 ПЗ 
32 
Змн. Лист № докум. Підпис Дата 
 
наведене поле. 
Таблиця «users» - ця таблиця використовується для збереження 
користувачів. 
Поля: 
- id: тип – bigint, NOT NULL, autoincrement. Первинний ключ.  
- email: тип String, NOT NULL. Поле з електронним адресом 
користувача, застосовується для входу в систему. 
- password: тип String, NOT NULL. Пароль для входу в систему. 
- confirm password: тип String, NOT NULL. Підтвердження пароля 
при реєстрації. 
  Таблиця «users_info» - ця таблиця використовується для 
збереження додаткової інформації про клієнта. 
Поля: 
- id: тип – bigint, NOT NULL, autoincrement. Первинний ключ.  
- name: тип String. Ім’я клієнта. 
- surname: тип String. Прізвище клієнта. 
- interes: тип String. Інтереси клієнта. 
- telephone: тип String. Телефон клієнта. 
- ava: тип File. Аватар клієнта. 
- birthday: тип Date. Дата народження клієнта. 
- films: тип String. Улюблені фільми клієнта. 
- musics: тип String. Улюблена музика клієнта. 
- books: тип String. Улюблені книги клієнта. 
Таблиця «messages» - ця таблиця використовується для збереження 
повідомлень клієнта. 
Поля: 
-      id: тип – bigint, NOT NULL, autoincrement. Первинний ключ.  
- user_id: тип bigint, NOT NULL. Код клієнта, що відправив 
повідомлення. 
Лист 
ЧДТУ. 222088.001 ПЗ 
33 
Змн. Лист № докум. Підпис Дата 
 
- user_id1: тип bigint, NOT NULL. Код одержувача повідомлення. 
- tema: тип String. Тема повідомлення. 
- text: тип String, NOT NULL. Текст повідомлення. 
- read: тип boolean, NOT NULL. Булеве поле, яке визначає чи 
прочитане повідомлення. 
Таблиця «categories» - ця таблиця використовується для збереження 
категорій клієнтів. 
Поля: 
-      id: тип – bigint, NOT NULL, autoincrement. Первинний ключ.  
- user_id: тип bigint, NOT NULL. Код клієнта, що створив 
категорію. 
- name: тип String, NOT NULL. Назва категорії. 
  Таблиця «books» - ця таблиця використовується для збереження  
книг. 
- Поля: 
- id: тип – bigint, NOT NULL, autoincrement. Первинний ключ.  
- anotation: тип String. Анотації до книг. 
- book_url: тип – String, NOT NULL. Адрес книги на хостингу.  
- name: тип String. Назва книги. 
- img_book: тип – String, NOT NULL. Картинка книги. 
- category_id: тип – Integer, NOT NULL. Категорія, в якій книга 
знаходиться.  
- user_id: тип Integer. Код клієнта, що додав книгу. 
  Таблиця «coments» - ця таблиця використовується для збереження 
коментарів до книг. 
Поля: 
- id: тип – bigint, NOT NULL, autoincrement. Первинний ключ.  
- user_id: тип bigint, NOT NULL. Код клієнта, що написав 
коментарій. 
Лист 
ЧДТУ. 222088.001 ПЗ 
34 
Змн. Лист № докум. Підпис Дата 
 
- book_id: - тип Integer. Код книги до якої написаний коментарій. 
- Text: - тип String. Текст коментарія. 
3.2 Загальна структура програми 
Структура бакалаврської роботи побудована за шаблоном Model-view-
controller. Моде́ль-вид-контро́лер (або Модель-вигляд-контролер, англ. Model-
view-controller, MVC) — архітектурний шаблон, який використовується під 
час проектування та розробки програмного забезпечення (рисунок 3.2). 
 
Рисунок 3.2 - MVC модель 
Цей шаблон поділяє середовище на три частини: модель даних, вигляд 
даних та керування. Застосовується для відокремлення даних (модель) від 
інтерфейсу клієнта (вигляду) так, щоб зміни інтерфейсу клієнта мінімально 
впливали на роботу з даними, а зміни в моделі даних могли здійснюватися без 
змін інтерфейсу клієнта. 
Мета шаблону — гнучкий дизайн програмного забезпечення, який 
Лист 
ЧДТУ. 222088.001 ПЗ 
35 
Змн. Лист № докум. Підпис Дата 
 
повинен полегшувати подальші доробки чи розширення програм, а також 
надавати можливість повторного використання окремих компонент програми. 
Крім того застосування цього шаблону у великих системах призводить до 
певної впорядкованості їх структури і робить їх зрозумілішими завдяки 
зменшенню складності. 
Архітектурний шаблон Модель-Вид-Контролер (MVC) поділяє 
програму на три частини. У вимозі до обов'язків компоненту Модель (Model), 
який знаходиться в папці app/model, входить зберігання даних і забезпечення 
інтерфейсу до них. Вигляд (View) знаходиться в папці app/views, цей 
компонент реалізує представлення цих даних користувачеві. Контролер 
(Controller), знаходиться в папці app/controllers, керує компонентами, отримує 
дані у вигляді реакції на дії користувача, і повідомляє про зміни компоненту 
Модель. Така внутрішня структура в цілому поділяє систему на самостійні 
частини і розподіляє відповідальність між різними компонентами. 
MVC поділяє цю частину системи на три окремі частини: введення 
даних, компонент обробки даних і виведення інформації. Модель, як вже було 
зазначено, інкапсулює ядро даних і основний функціонал з їх обробки. Також 
компонент Модель не залежить від процедури введення або виведення даних. 
Компонент виводу Вигляд може мати різні взаємопов'язані області, 
наприклад, різні таблиці і поля форм, в яких відображається інформація. До 
функцій Контролера належить моніторинг за подіями, що виникають в 
результаті дій користувача (зміна положення курсора миші, натиснення 
кнопки або введення даних в текстове поле). 
Зареєстровані події перетворюються в різні запити, що спрямовуються 
компонентам Моделі або об'єктам, які реалізуютьа відображення даних. 
Відокремлення моделі від вигляду даних дозволяє окремо використовувати 
різні компоненти для відображення інформації. Таким чином, якщо 
користувач через Контролер реалізує зміни до Моделі даних, то інформація, 
представлена одним або декількома візуальними компонентами, буде 
Лист 
ЧДТУ. 222088.001 ПЗ 
36 
Змн. Лист № докум. Підпис Дата 
 
автоматично змнена відповідно до змін, що відбулися. 
Структурна схема бакалаврської роботи (рисунок 3.3): 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Рисунок 3.3 - Структура програми 
Каталог «app/» складається з таких каталогів: 
- assets/ — вміщує в себе java скрипти, css стилі і картинки. 
- controllers/ — файли-контролери проекту. 
- helpers/ — довідки проекту. 
- models/ — файли-моделі проекту. 
- views/ — файли-представлення проекту. 
Інші каталоги проекту: 
- config/ - конфігурації проекту 
- db/ - файли для роботи з базою даних 
- doc/ - документація для програми 
Лист 
ЧДТУ. 222088.001 ПЗ 
37 
Змн. Лист № докум. Підпис Дата 
 
- lib/ - модулі бібліотек 
- log/ - log-файли 
- public/ - поблічні доступні файли 
- test/ - тестові файли 
- tmp/ - тимчасові файли 
- vendor/ - плагіни, геми 
 Файли, що знаходяться у рут каталозі проекту: 
- .gitignore — перелік файлів, які будуть ігноруватись 
системою контролю версій Git 
- Gemfile — список гемів, необхідних для запуску програми 
- Rakefile — службові задачі 
- README — опис програми, інструкція по використанню. 
3.3 Модуль ведення каталогу книг 
Модуль ведення каталогу товарів – це частина бакалаврської роботи за 
допомогою якого ведеться облік книг (дивитись рисунок 3.4) 
В ній присутні три каталоги : 
- каталог всіх книг сайту; 
- каталог книг конкретного клієнта; 
- книги конкретного каталога; 
Лист 
ЧДТУ. 222088.001 ПЗ 
38 
Змн. Лист № докум. Підпис Дата 
 
 
Рисунок 3.4 - Модуль ведення каталогу книг 
В цьому модулі повністю реалізовано додавання, редагування, 
видалення категорій і книг. Також можна дивитись і редагувати коментарі. 
Алгоритм додавання / редагування / видалення запису (замітки) 
категорії, книги чи коментаря: 
Є клієнт який виконує в рамках транзакції такі операції з сутностями: 
Додавання в базу даних: 
 def new 
    @book = Book.new 
    respond_to do |format| 
      format.html # new.html.erb 
      format.json { render :json => @book } 
    end 
  end 
 def create 
    @book = Book.new(params[:book]) 
    @book.user_id = current_user.id 
    respond_to do |format| 
Лист 
ЧДТУ. 222088.001 ПЗ 
39 
Змн. Лист № докум. Підпис Дата 
 
      if @book.save 
       format.html { redirect_to @book, :notice => 'Book was successfully 
created.' } 
        format.json { render :json => @book, :status => :created, :location => 
@book } 
      else 
       format.html { render :action => "new" } 
        format.json { render :json => @book.errors, :status => 
:unprocessable_entity } 
      end 
    end 
  end 
Редагування:  
def edit 
    @book = Book.find(params[:id]) 
  end 
Видалення: 
 def destroy 
    @book = Book.find(params[:id]) 
    @book.destroy 
    respond_to do |format| 
      format.html { redirect_to books_url } 
      format.json { head :no_content } 
    end 
  end 
Також, клієнта може шукати книгу по назві: 
def seach 
     if params[:query] 
      @books = Book.where( 'name LIKE ?', '%'+params[:query]+'%' ) 
Лист 
ЧДТУ. 222088.001 ПЗ 
40 
Змн. Лист № докум. Підпис Дата 
 
 respond_to do |format| 
      format.html # show.html.erb 
      format.json { render :json => @book } 
    end 
    else 
      @books = [] 
    end 
  end 
Коли клієнта натискає кнопки для збереження, пошуку, редагування 
або видалення сутності - викликається відповідний метод у відповідному 
контролері. 
Записи сутностей з бази даних з’являються на сайті. 
 
Лист 
ЧДТУ. 222088.001 ПЗ 
41 
Змн. Лист № докум. Підпис Дата 
 
4 РОЗРАХУНКИ ТА ЕКСПЕРИМЕНТАЛЬНІ МАТЕРІАЛИ, ЩО 
ПІДТВЕРДЖУЮТЬ ПРАЦЕЗДАТНІСТЬ ТА НАДІЙНІСТЬ 
ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 
Програмне забезпечення (ПЗ) сучасних обчислювальних систем та 
інформаційно-управляючих систем (ІУС) повинне відповідати не лише своїм 
функціональним параметрам. При його розробці створюються певні 
обмеження на вартість і час, а також висуваються певні вимоги до надійності, 
безпеки, готовності, цілісності та, відповідно, якості функціонування, 
оскільки відмова ПЗ може викликати небажані наслідки. Таким чином, 
виникає проблема створення ПЗ з заданою якістю. 
Задана якість ПЗ - це комплексна проблема, розв’язання якої вимагає 
проведення комплексного дослідження та відповідних ресурсів - розробників, 
ресурсів та часу. З огляду на сутність проблеми наведені дослідження 
повинні концентруватися навколо: 
- розробки засобів аналізу й оцінки якості ПЗ на певних етапах його 
життєвого циклу (ЖЦ); 
- виділення і управління параметрами, які мають вплив на якість ПЗ на 
всіх етапах його ЖЦ. 
Якість ПЗ визначається різними показниками, серед яких надійність 
ПЗ виділяють як основну формалізовану характеристику. Тому виникає 
необхідність у забезпеченні надійності, починаючи з самих ранніх фаз ЖЦ 
ПЗ, з урахуванням сучасних тенденцій у проектуванні і реалізації ПЗ ІУС, 
таких як: компонентно-базований підхід до програмування; уніфіковані 
технології проектування типу RUP і концептуальне моделювання. 
Розробка тестів для перевірки працездатності додатку: 
Функція «Пошуку» 
Запит: Клієнт не вводить ніяких символів, але натискає кнопку 
пошуку 
Лист 
ЧДТУ. 222088.001 ПЗ 
42 
Змн. Лист № докум. Підпис Дата 
 
Очікування реакція: Система показує всі книги 
Функція «Перегляду книг» 
Запит : Клієнт вибирає книгу з переліку книг в глобальному каталозі  і 
хочу відредагувати її, але він її на сайт не додав, дописавши в строці адреси 
книги “/edit”  
Очікувана реакція:Виводиться на екран сторінка помилки 505.html 
Функція «Коментарі» 
Запит: Для того щоб залишить коментар клієнт заповнює форму 
коментарія такими даними: 
Поле з текстом коментарія: залишає не заповненим і натискає кнопку 
«Залишити коментарій» 
Очікувана реакція: Система виводить повідомлення про помилку і 
повертає клієнта на сторінку книги 
 Функція «Нова книга» 
Запит: Клієнт не вводить назву книги, не вибирає категорію  чи не 
завантажує книги і натискає кнопку «Додати»,  
Очікувана реакція: Система виводить попередження про те, щоб 
клієнт заповнив всі поля 
Функція «Загрузка фотографії книги» 
Запит: Клієнт для загрузки фото натискає кнопку «Редагувати», потім 
кнопку «Загрузить фото» і вибирає фотографію не правильного формату чи 
занадто великого розміру 
Очікувана реакція: Система виводить повідомлення про помилку і 
повертає клієнта в форму редагування книги 
Функція «Відправки повідомлень» 
Запит: Клієнт для відправки повідомлень натискає кнопку «Написати 
повідомлення» на сторінці іншого Клієнта, не написавши тексту  
повідомлення, натискає кнопку «Відправити повідомлення» 
Очікувана реакція: Система виводить повідомлення про помилку і 
Лист 
ЧДТУ. 222088.001 ПЗ 
43 
Змн. Лист № докум. Підпис Дата 
 
очікує зміни тексту повідомлення. 
Виконавши всі вище сказані тести, ми отримали заданий результат. 
Лист 
ЧДТУ. 222088.001 ПЗ 
44 
Змн. Лист № докум. Підпис Дата 
 
5 ОПИС ОРГАНІЗАЦІЇ РОБІТ, ЩО ПОВ’ЯЗАНІ ІЗ 
ЗАСТОСУВАННЯМ ВИРОБУ 
5.1 Інструкція користувача 
Bookspace.herokuapp.com («Планета книг») - соціальна мережа 
любителів книг. Проект пропонує своїм клієнтам допомогу у веденні 
особистого читацького щоденника, включаючи туди прочитане і бажане до 
прочитання, пошук нових книг, спілкування з однодумцями, колекцію 
рецензій та цитат. 
Для коректного відображення всіх сторінок сайта і відповідному 
функціонуванні всіх модулів потрібно встановити web-браузер з підтримкою 
HTML5, CSS3 і AJAX, наприклад, Google Chrome 44.0.1312.69. 
Переходимо по адресу bookspace.herokuapp.com. При першому візиті 
сайта, клієнт не може виконувати якісь функції на сайті: перегляд книг, 
сторінок клієнтів, коментарі. Перший раз і кожного разу коли закінчується 
сесія клієнта, останнього контролер переправляє на сторінку аунтефікації 
(рисунок 5.1). 
 
Лист 
ЧДТУ. 222088.001 ПЗ 
45 
Змн. Лист № докум. Підпис Дата 
 
Рисунок 5.1 - Сторінка аунтифікації клієнта 
Якщо клієнт не зареєстрований в системі і намагається ввійти на сайт, 
всі все одно буде переходити на первинну сторінку реєстрації. 
Для реєстрації клієнт має ввести email і пароль в форму реєстрації 
(рисунок 5.2) і натиснути кнопку “Зареєтруватись”. Якщо всі поля були 
коректно заповнені, клієнт перейде на свою особисту сторінку (рисунок 5.3). 
 
Рисунок 5.2 - Форма реєстрації 
Те саме відбудеться, якщо клієнт ввійде на сайт через форму входу. 
На особистій сторінці користувача є 4 кнопки переходу по іншим 
сторінкам: “Змінити профіль”, “Нова полиця”, “Нова книга”, “Мої книги”. 
При натиснені кнопки “Змінити профіль”, клієнт перейде на сторінку зміни 
профілю за адресою http://bookspace.herokuapp.com/user_infos/1/edit (рисунок 
5.4) 
 
Лист 
ЧДТУ. 222088.001 ПЗ 
46 
Змн. Лист № докум. Підпис Дата 
 
Рисунок 5.3 - Сторінка користувача 
Рисунок 5.4 - Сторінка редагування даних про клієнта 
 
Змінивши дані своєї анкети, клієнт може їх зберегти, натиснувши 
кнопку “Оновити дані”. Після редагування анкети клієнт перейшов на власну 
особисту сторінку. 
Натиснувши кнопку “Нова полиця” або “Нова книга” перед клієнтом 
з’являється модальне вікно з формою створення полиці або книги. Щоб їх 
створити необхідно заповнити форму даними і натиснути кнопку “Створити”. 
Після натиснення кнопки “Мої книги”, відкривається сторінка з 
книгами клієнта. 
Лист 
ЧДТУ. 222088.001 ПЗ 
47 
Змн. Лист № докум. Підпис Дата 
 
Кнопка “Всі книги” - відкриває сторінку з книгами всіх клієнтів. 
Кнопка “Користувачі” - переносить на сторінку з усіма користувачами сайта. 
Щоб знайти конкретну книгу на сайті, потрібно натиснути кнопку 
“Пошук” у верхній частині сайта, перед клієнтом відкриється сторінка 
пошуку (рисунок 5.5):  
Рисунок 5.5 - Сторінка пошуку книг 
 
 
 
 
 
 
 
 
 
 
 
 
Лист 
ЧДТУ. 222088.001 ПЗ 
48 
Змн. Лист № докум. Підпис Дата 
 
ВИСНОВОК 
В даній бакалаврській кваліфікаційній роботі розглядалося створення 
програмного додатку “Соціальна мережа книголюб”.  В ході роботи була 
зроблена характеристика існуючих рішень та обґрунтування вибору 
прийнятого принципу побудови додатку, досліджено і описано функції 
наведеної теми. Створений програмний продукт може використовуватись 
будь-ким в любому місці де є підключення до інтернету. 
Було зроблено постановку задачі, в рамках якої було проведено вибір 
функцій для програмного продукту, розроблено завдання у вигляді варіантів 
застосування, формування технічних вимог до системи, досліджено 
технологію обробки і перетворення інформації, зформовано технічні вимоги 
до системи. 
 Реалізовано розробку програмного продукту, а саме структуру бази 
даних, загальну структуру програми, модуль ведення каталогу книг та модуль 
роботи з клієнтами. 
 В ході роботи було обрано мову на якій побудовано програму, 
платформу реалізації, систему управління базою даних, інші технології та 
бібліотеки, а також інструментальні засоби розробки. 
 Програмне забезпечення може бути модернізоване, але тільки в 
наведеній сфері використання, тобто в програму можна додати функції, які 
доповнять дану програму та розширити в БД інформацію, сформувати нові 
необхідні для клієнта сторінки, зробивши для них певні права доступу. 
 
 
 
Лист 
ЧДТУ. 222088.001 ПЗ 
49 
Змн. Лист № докум. Підпис Дата 
 
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ 
1. Advatages of Java at ibm.com. [Електронний ресурс].–  Режим 
доступу: 
https://www.ibm.com/support/knowledgecenter/en/ssw_aix_71/performance/advan
tages_java.html 
2. CSS Flexible Box LАyout Module [Electronic resource] // Офіцйний 
сайт W3C. – Mode of Аccess: https://www.w3.org/TR/css-flexbox-1/. 
3. Dixit S. Аn introduction to the Web Bluetooth АPI [Electronic 
resource] // Dev.operА: OperА SoftwАre АSА. – Mode of Аccess: 
https://dev.operА.com/Аrticles/web-bluetooth-intro/  
4. Djiraj. JWT Role Based Authorization with Spring Security. 
[Електронний ресурс].–  Режим доступу: https://www.devglan.com/spring-
security/jwt-role-based-authorization. 
5. Golovko O. V. FormulАtion of the Problem of MАximum Clique 
DeterminАtion in Non-Oriented GrАphs. InternАtionАl JournАl of Engineering & 
Technology. Vol. 7, no. 4.3 (2018): SpeciАl Issue 3. P. 293–297. 
6. Introduction to Web Technologies for FrontPАge Users [Electronic 
resource] // Офіційний ресурс MSDN. – Mode of Аccess: https 
https://msdn.microsoft.com/en-us/librАry/office/АА218647(v=office.11).Аspx. 
7. JАckson B. 100+ Аwesome Development Tools Аnd Resources / 
BriАn JАckson // Офіційний сайт keycdn [Electronic resource]. – Mode of 
Аccess: https://www.keycdn.com/blog/web-development-tools/. 
8. JАvАScript-тренды, на которые стоит обратить внимание в 2019-м 
// Блог компании RUVDS.com / Офіційний сайт hАbrАhАbr [Електронний 
ресурс]. — Режим доступу: https://hАbrАhАbr.ru/compАny/ruvds/blog/319162/. 
9. Listrovoy S. V. Development of method of definition mАximum 
clique in А nonoriented grАph. EАsternEuropeАn JournАl of Enterprise 
Technologies. 2018. Vol. 5, № 4 (89). – P. 12–17. EID: 2-s2.0-85032585697. 
Лист 
ЧДТУ. 222088.001 ПЗ 
50 
Змн. Лист № докум. Підпис Дата 
 
10. Michael Hartl. Ruby on Rails Tutorial (Addison-Wesley Professional 
Ruby Series) 6th Edition. - Amazon.com Services LLC, 2018. – 208 с. 
11. MVC Design Pattern – JournalDev. [Електронний ресурс].–  Режим 
доступу: https://www.journaldev.com/16974/mvc-design-pattern 
12. MVC Pattern -Anshul vyas - Medium. [Електронний ресурс].–  
Режим доступу: https://medium.com/@anshul.vyas380/mvc-pattern-
3b5366e60ce4 
13. MVC для початківців та інтернету [Електронний ресурс]. - Режим 
доступа: http://chtivo.webhost.ru/articles/mvc.php. 
14. MАnifesto for Аgile SoftwАre Development [Электронный ресурс] 
// Веб-портал АgilemАnifesto.org. – Режим доступу: 
http://www.АgilemАnifesto.org/ 
15. PostgreSQL : About. [Електронний ресурс].–  Режим доступу: 
https://www.postgresql.org/about/ 
16. Programming Ruby 1.9 (3rd edition): The Pragmatic Programmers' 
Guide, Dave Thomas, Chad Fowler, Andy Hunt, 2019  
17. Scrum | Digital Humanities LAB at CVCE powered by uni.lu. 
[Електронний ресурс].–  Режим доступу: 
https://cvcedhlab.hypotheses.org/tag/scrum 
18. Spring | Home. [Електронний ресурс].–  Режим доступу: 
https://spring.io/ 
19. Timothy M. O'Brien "Jakarta Commons Cookbook". O'Reilly; ISBN 
0-596-00706-X 
20. Topical Guide | Spring Security Architecture. [Електронний 
ресурс].–  Режим доступу: https://spring.io/guides/topicals/spring-security-
architecture 
21. Website security – Learn web development | MDN. [Електронний 
ресурс].–  Режим доступу: https://developer.mozilla.org/en-
US/docs/Learn/Server-side/First_steps/Website_security 
Лист 
ЧДТУ. 222088.001 ПЗ 
51 
Змн. Лист № докум. Підпис Дата 
 
22. What is REST – Learn to create timeless REST APIs. [Електронний 
ресурс].–  Режим доступу: https://restfulapi.net/ 
23. Бегг К. Бази даних. Проектування, реалізація і супровід. Теорія та 
практика / К. Бегг, Т. Конноллі. – 2017. – 1238 с. 
24. Берюх И. С. Вибір технології розробки програмного забезпечення 
інформаційних систем. ScienceRise. Харкsв, 2018. № 5/2. С. 40–43 
25. Брюс У. Javaсервлети і JSP. Збірник рецептів. [Текст] / У. Брюс. — 
Львів, Захід-Прес, 2019 — 768 с. 
26. Васильєв Н. Об'єктно-орієнтоване програмування. [Текст] / Н. 
Васильєв. — К. Львів: «Афіша», 2018 — 400 с. 
27. Вендров А. М. Сучасні технології створення програмного забезпечення 
[Електронний ресурс] / А. М. Вендров // Портал “CITFORUM”. – 
Режим доступа: http://citforum.ru/progrАmming/ 
АpplicАtion/progrАm/index.shtml#v 
28. Вольфсон Б. Гнучкі методології розробки [Електронний ресурс] / Б. 
Вольфсон // Електронна бібліотека Аdm-lib.ru. – Режим доступа: 
http://Аdm-lib.ru/books/10/Gibkie-metodologii.pdf 
29. Інтернет-бізнес в Україні [Електронний ресурс] // Український 
інтернет-журнал АIN.UА – Режим доступу: http://Аin.uА/5-trendov-
progrАmmirovАniyА-kotorye-izmenyАt-industriyu (дата звернення 13.11.2019). 
30. Інженерія якості програмного забезпечення: навч. посібник / Г.В 
Табунщик, Р.К. Кудерметов, Т.І. Брагіна. - Запоріжжя: ЗНТУ, 2013. - 180 с.  
31. Кеннеді Б. Вивчаємо HTML / Б. Кеннеді, Ч. Маскиано. – 2018. – 
272 с. 
32. Концепція розвитку цифрової економіки та суспільства України 
на 2018-2020 роки: Розпорядженням Кабінету Міністрів України від 17 січня 
2018 р. № 67-р. URL : https://zakon.rada.gov.ua/laws/show/67-2018-%D1%80. 
(дата звернення: 17.10.20). 
Лист 
ЧДТУ. 222088.001 ПЗ 
52 
Змн. Лист № докум. Підпис Дата 
 
33. Лоусон Б. HTML і XHTML. Детальне керівництво / Б. Лоусон, Р. 
Шарп. – 2017. – 752 с. 
34. МатовО.Я., ХрамоваІ.О. Сучасні технології інтеграції 
інформаційних ресурсів. Реєстрація, зберігання і обробка даних. 2019, Т. 11, 
№ 1. С.33-42. 
35. Офіційний сайт MySQL [Електронний ресурс]. - Режим 
доступа: http://dev.mysql.com/ 
36. Панченко С. В. Математичне моделювання в розподілених 
інформаційних системах: Монографія. Харків: ФОП Бровін О. В., 2017. – 
220с. 
37. Політек-софт – Пакет програм "ПС-Адміністратор". 
[Електронний ресурс].–  Режим доступу: http://www.politek-
soft.kiev.ua/index.php?do=products&product=ps-administrator 
38. Пурьев М. Тренди програмування в 2019 році // Офіційний сайт 
GeekBrАins [Електронний ресурс] – Режим доступу: 
https://geekbrАins.ru/posts/2018_techcrunch_trends (дата звернення 05.11.2019). 
39. СОУ-Н ДКА 0061:2012. Настанова Державного космічного 
агентства України. Галузева система управління якістю. Процеси  життєвого 
циклу програмного забезпечення програмно-технічних комплексів 
критичного призначення. – К.: ДКА  України, 2020. – 111 с. 
40. Тенденции развития веб-технологий в 2020 году [Електронний 
ресурс] // Офіційний сайт компанії SITE ELITE. – Режим доступу: http://st-
lt.ru/blog/useful/tendenczii-rАzvitiyА-veb-texnologij-v-2020-godu.html (дата 
звернення 13.10.2019). 
41. Технології створення програмних продуктів та інформаційних 
систем : навч. посібник / М. Ю. Карпенко, Н. О. Манакова, І. О. Гавриленко ; 
Харків. нац. ун-т міськ. госп-ва ім. О. М. Бекетова. - Харків : ХНУМГ ім. О. 
М.Бекетова, 2017. - 93 с.  
Лист 
ЧДТУ. 222088.001 ПЗ 
53 
Змн. Лист № докум. Підпис Дата 
 
42. Томсон Л. Разробка web додатків на РНР и MySQL. – 2 е вид., – Львів.: 
Полюс, 2018. – 672 с 
43. Тренди та події у світі веб-технологій у 2019 році [Електронний ресурс] 
// Блог компании HTML АcАdemy / Офіційний сайт hАbrАhАbr. – 
Режим доступу: 
https://hАbrАhАbr.ru/compАny/htmlАcАdemy/blog/317558/. 
44. Фернандес О. Шлях Rails. Докладне керівництво по створенню 
додатків в середовищі Ruby on Rails. — К.: Символ-Плюс, 2018. — 224 с. 
45. Хаф Л. Методологии разработки ПО. Часть 5. Microsoft Solutions 
FrАmework [Электронный ресурс] / Л. Хаф. // Компьютер Пресс. – № 7. – 
2004. – Режим доступа: www.compress.ru/Аrchive/CP/2014/7/29/ 
46. Шевчук І. Б. Інформаційні технології в регіональній економіці: 
теорія і практика впровадження та використання : монографія. Львів : 
Видавництво ННВК "АТБ", 2018. 448 с. 
47. Шпион А. Web технології развиваются клиєнтами [Електронний 
ресурс] // Офіційний сайт АRT Lemon. – Режим доступу: https://Аrt-
lemon.com/web-tech. 
Лист 
ЧДТУ. 222088.001 ПЗ 
54 
Змн. Лист № докум. Підпис Дата 
 
Додаток А 
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
АВТОМАТИЗОВАНА ІНФОРМАЦІЙНО-АНАЛІТИЧНА СИСТЕМА 
СОЦІАЛЬНОЇ МЕРЕЖІ «КНИГОЛЮБ» 
 
Лістинг програми 
 
 
UA.ЧДТУ.222082-01 12 01 
 
 
Листів 14 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2022 
Лист 
ЧДТУ. 222088.001 ПЗ 
55 
Змн. Лист № докум. Підпис Дата 
 
 
books_controller.rb 
require 'upload_progress' 
class BooksController < ApplicationController 
  # GET /books 
  # GET /books.json 
  upload_status_for  :create, :status => :custom_status 
 
  def index 
    @books = current_user.books 
    respond_to do |format| 
      format.html # index.html.erb 
      format.js  
    end 
  end 
 
  def allshow 
    @books = Book.all 
  end 
 
  # GET /books/1 
  # GET /books/1.json 
  def show 
    @book = Book.find(params[:id]) 
 
    respond_to do |format| 
      format.html # show.html.erb 
      format.json { render :json => @book } 
    end 
  end 
 
  # GET /books/new 
  # GET /books/new.json 
  def new 
    @book = Book.new 
     
    respond_to do |format| 
      format.html # new.html.erb 
      format.js 
    end 
  end 
Лист 
ЧДТУ. 222088.001 ПЗ 
56 
Змн. Лист № докум. Підпис Дата 
 
 
  def edit 
    @book = Book.find(params[:id]) 
  end 
 
  # POST /books 
  # POST /books.json 
  def create 
    @book = Book.new(params[:book]) 
    @book.user_id = current_user.id 
    respond_to do |format| 
      if @book.save 
       format.html { redirect_to '/books', :notice => 'Book was 
successfully created.' } 
        format.js 
      else 
       format.html { render :action => "new" } 
        format.js 
      end 
    end 
  end 
 
  # PUT /books/1 
  # PUT /books/1.json 
  def update 
    @book = Book.find(params[:id]) 
    respond_to do |format| 
      if @book.update_attributes(params[:book]) 
        format.html { redirect_to @book, :notice => 'Book was 
successfully updated.' } 
        format.json { head :no_content } 
      else 
        format.html { render :action => "edit" } 
        format.json { render :json => @book.errors, :status => 
:unprocessable_entity } 
      end 
    end 
  end 
 
  # DELETE /books/1 
  # DELETE /books/1.json 
  def destroy 
Лист 
ЧДТУ. 222088.001 ПЗ 
57 
Змн. Лист № докум. Підпис Дата 
 
    @book = Book.find(params[:id]) 
    @book.destroy 
    respond_to do |format| 
      format.html { redirect_to books_url } 
      format.json { head :no_content } 
    end 
  end 
 
 
 
  def seach 
     if params[:query] 
      @books = Book.where( 'name LIKE ?', '%'+params[:query]+'%' ) 
 respond_to do |format| 
      format.html # show.html.erb 
      format.json { render :json => @book } 
    end  
    else 
      @books = [] 
    end 
  end  
end 
 
categories_controller.rb 
class CategoriesController < ApplicationController 
  # GET /categories 
  # GET /categories.json 
  def index 
    @categories = current_user.categories 
    respond_to do |format| 
      format.html # index.html.erb 
      format.json { render :json => @categories } 
    end 
  end 
 
  # GET /categories/1 
  # GET /categories/1.json 
  def show 
    @category = current_user.categories.find(params[:id]) 
    respond_to do |format| 
      format.html # show.html.erb 
Лист 
ЧДТУ. 222088.001 ПЗ 
58 
Змн. Лист № докум. Підпис Дата 
 
      format.json { render :json => @category } 
    end 
  end 
 
  # GET /categories/new 
  # GET /categories/new.json 
  def new 
    @category = Category.new 
    respond_to do |format| 
      format.html # new.html.erb 
      format.js 
    end 
  end 
 
  # GET /categories/1/edit 
  def edit 
     @category = current_user.categories.find(params[:id]) 
  end 
 
  # POST /categories 
  # POST /categories.json 
  def create 
    @category = Category.new(params[:category]) 
@category.user_id=current_user.id 
    respond_to do |format| 
      if @category.save 
        format.html { redirect_to "/categories", :notice => 'Category 
was successfully created.' } 
        format.json { render :json => @category, :status => :created, 
:location => @category } 
      else 
        format.html { render :action => "new" } 
        format.json { render :json => @category.errors, :status => 
:unprocessable_entity } 
      end 
    end 
  end 
 
  # PUT /categories/1 
  # PUT /categories/1.json 
  def update 
    @category = Category.find(params[:id]) 
Лист 
ЧДТУ. 222088.001 ПЗ 
59 
Змн. Лист № докум. Підпис Дата 
 
    respond_to do |format| 
      if @category.update_attributes(params[:category]) 
        format.html { redirect_to @category, :notice => 'Category was 
successfully updated.' } 
        format.json { head :no_content } 
      else 
        format.html { render :action => "edit" } 
        format.json { render :json => @category.errors, :status => 
:unprocessable_entity } 
      end 
    end 
  end 
 
  # DELETE /categories/1 
  # DELETE /categories/1.json 
  def destroy 
    @category = Category.find(params[:id]) 
    @category.destroy 
    respond_to do |format| 
      format.html { redirect_to categories_url } 
      format.json { head :no_content } 
    end 
  end 
end 
books_controller.rb 
require 'upload_progress' 
 
class BooksController < ApplicationController 
  # GET /books 
  # GET /books.json 
  upload_status_for  :create, :status => :custom_status 
  def index 
    @books = current_user.books 
    respond_to do |format| 
      format.html # index.html.erb 
      format.js  
    end 
  end 
 
 
  def allshow 
    @books = Book.all 
Лист 
ЧДТУ. 222088.001 ПЗ 
60 
Змн. Лист № докум. Підпис Дата 
 
  end 
 
  # GET /books/1 
  # GET /books/1.json 
  def show 
    @book = Book.find(params[:id]) 
    respond_to do |format| 
      format.html # show.html.erb 
      format.json { render :json => @book } 
    end 
  end 
 
  # GET /books/new 
  # GET /books/new.json 
  def new 
    @book = Book.new 
    respond_to do |format| 
      format.html # new.html.erb 
      format.js 
    end 
  end 
   
  def edit 
    @book = Book.find(params[:id]) 
  end 
 
  # POST /books 
  # POST /books.json 
  def create 
    @book = Book.new(params[:book]) 
    @book.user_id = current_user.id 
    respond_to do |format| 
      if @book.save 
       format.html { redirect_to '/books', :notice => 'Book was 
successfully created.' } 
        format.js 
      else 
       format.html { render :action => "new" } 
        format.js 
      end 
    end 
  end 
Лист 
ЧДТУ. 222088.001 ПЗ 
61 
Змн. Лист № докум. Підпис Дата 
 
 
  # PUT /books/1 
  # PUT /books/1.json 
  def update 
    @book = Book.find(params[:id]) 
    respond_to do |format| 
      if @book.update_attributes(params[:book]) 
        format.html { redirect_to @book, :notice => 'Book was 
successfully updated.' } 
        format.json { head :no_content } 
      else 
        format.html { render :action => "edit" } 
        format.json { render :json => @book.errors, :status => 
:unprocessable_entity } 
      end 
    end 
  end 
 
  # DELETE /books/1 
  # DELETE /books/1.json 
  def destroy 
    @book = Book.find(params[:id]) 
    @book.destroy 
    respond_to do |format| 
      format.html { redirect_to books_url } 
      format.json { head :no_content } 
    end 
  end 
 
  def seach 
     if params[:query] 
      @books = Book.where( 'name LIKE ?', '%'+params[:query]+'%' ) 
 respond_to do |format| 
      format.html # show.html.erb 
      format.json { render :json => @book } 
    end 
    else 
      @books = [] 
    end 
  end  
end 
Лист 
ЧДТУ. 222088.001 ПЗ 
62 
Змн. Лист № докум. Підпис Дата 
 
 
messages_controller.rb 
class MessagesController < ApplicationController 
  # GET /messages 
  # GET /messages.json 
  def index 
    @messages = current_user.messages 
    respond_to do |format| 
      format.html # index.html.erb 
      format.json { render :json => @messages } 
    end 
  end 
 
  # GET /messages/1 
  # GET /messages/1.json 
  def show 
    @message = Message.find(params[:id]) 
    respond_to do |format| 
      format.html # show.html.erb 
      format.json { render :json => @message } 
    end 
  end 
 
  # GET /messages/new 
  # GET /messages/new.json 
  def new 
    @message = Message.new 
@user = User.find(params[:user]) 
    respond_to do |format| 
      format.html # new.html.erb 
      format.json { render :json => @message } 
    end 
  end 
 
  # GET /messages/1/edit 
  def edit 
    @message = Message.find(params[:id]) 
  end 
 
  # POST /messages 
  # POST /messages.json 
Лист 
ЧДТУ. 222088.001 ПЗ 
63 
Змн. Лист № докум. Підпис Дата 
 
  def create 
    @message = Message.new(params[:message]) 
    @message.user_id = current_user.id 
 
    respond_to do |format| 
      if @message.save 
        format.html { redirect_to @message, :notice => 'Message was 
successfully created.' } 
        format.json { render :json => @message, :status => :created, 
:location => @message } 
      else 
        format.html { render :action => "new" } 
        format.json { render :json => @message.errors, :status => 
:unprocessable_entity } 
      end 
    end 
  end 
 
  # PUT /messages/1 
  # PUT /messages/1.json 
  def update 
    @message = Message.find(params[:id]) 
 
    respond_to do |format| 
      if @message.update_attributes(params[:message]) 
        format.html { redirect_to @message, :notice => 'Message was 
successfully updated.' } 
        format.json { head :no_content } 
      else 
        format.html { render :action => "edit" } 
        format.json { render :json => @message.errors, :status => 
:unprocessable_entity } 
      end 
    end 
  end 
 
  # DELETE /messages/1 
  # DELETE /messages/1.json 
  def destroy 
    @message = Message.find(params[:id]) 
    @message.destroy 
    respond_to do |format| 
Лист 
ЧДТУ. 222088.001 ПЗ 
64 
Змн. Лист № докум. Підпис Дата 
 
      format.html { redirect_to messages_url } 
      format.json { head :no_content } 
    end 
  end 
 
def sent 
  redirect_to '/' 
end 
end 
user_controller.rb 
require 'ftools' 
class UserController < ApplicationController 
 before_filter :auth_user 
  def auth_user 
    redirect_to new_user_registration_url unless user_signed_in? 
  end 
  def index 
        if(!current_user) 
    redirect_to new_user_registration_url unless user_signed_in? 
  end 
    if(current_user.user_info) 
   @info = current_user.user_info 
    @users = User.all 
    @books = Book.all 
  else 
    redirect_to new_user_info_path 
  end   
  end 
 
  def show 
   @user = User.find(params[:id])  
  end 
 
  def accounts 
    @users = User.all 
  end 
 
  def sent 
    @user = User.find(params[:user]) 
    respond_to do |format| 
      format.html # show.html.erb 
Лист 
ЧДТУ. 222088.001 ПЗ 
65 
Змн. Лист № докум. Підпис Дата 
 
      format.json { render :json => @book } 
    end 
  end 
 
  def create_mes 
     @message = Message.new(params[:tema, :mess]) 
  end 
end 
user_infos_controller.rb 
class UserInfosController < ApplicationController 
  # GET /user_infos 
  # GET /user_infos.json 
  def index 
    @user_infos = UserInfo.all 
    respond_to do |format| 
      format.html # index.html.erb 
      format.json { render :json => @user_infos } 
    end 
  end 
 
  # GET /user_infos/1 
  # GET /user_infos/1.json 
  def show 
    @user_info = UserInfo.find(params[:id]) 
    respond_to do |format| 
      format.html # show.html.erb 
      format.json { render :json => @user_info } 
    end 
  end 
 
  # GET /user_infos/new 
  # GET /user_infos/new.json 
  def new 
    @user_info = UserInfo.new 
    respond_to do |format| 
      format.html # new.html.erb 
      format.json { render :json => @user_info } 
    end 
  end 
 
  # GET /user_infos/1/edit 
Лист 
ЧДТУ. 222088.001 ПЗ 
66 
Змн. Лист № докум. Підпис Дата 
 
  def edit 
    @user_info = UserInfo.find(params[:id]) 
  end 
 
  # POST /user_infos 
  # POST /user_infos.json 
  def create 
    @user_info = UserInfo.new(params[:user_info]) 
    @user_info.user_id = current_user.id 
    respond_to do |format| 
      if @user_info.save 
        format.html { redirect_to '/' } 
        format.json { render :json => @user_info, :status => :created, 
:location => @user_info } 
      else 
        format.html { render :action => "new" } 
        format.json { render :json => @user_info.errors, :status => 
:unprocessable_entity } 
      end 
    end 
  end 
 
  # PUT /user_infos/1 
  def update 
    @user_info = UserInfo.find(params[:id]) 
    respond_to do |format| 
      if @user_info.update_attributes(params[:user_info]) 
        format.html { redirect_to '/' } 
        format.json { head :no_content } 
      else 
        format.html { render :action => "edit" } 
        format.js 
      end 
    end 
  end 
 
  # DELETE /user_infos/1 
  # DELETE /user_infos/1.json 
  def destroy 
    @user_info = UserInfo.find(params[:id]) 
    @user_info.destroy 
    respond_to do |format| 
Лист 
ЧДТУ. 222088.001 ПЗ 
67 
Змн. Лист № докум. Підпис Дата 
 
      format.html { redirect_to user_infos_url } 
      format.json { head :no_content } 
    end 
  end 
end 
 
Головна сторінка application.html.erb 
<!DOCTYPE html> 
<html> 
<head> 
<p> 
  <title>Social</title> 
 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
 
  <%= stylesheet_link_tag    "application", :media => "all" %> 
  <%= stylesheet_link_tag    "bootstrap", :media => "all" %> 
  <%= javascript_include_tag    "bootstrap" %> 
  <%= javascript_include_tag "application" %> 
  <%= javascript_include_tag :defaults %> 
  <%= csrf_meta_tags %> 
</head> 
<body> 
  <div class="row"> 
    <div class="span1"></div> 
    <div class="span5"> 
   <h1><a href="/"><%= image_tag("logo1.png")%></a></h1> 
  </div> 
   <% if current_user %> 
       <div id="auth_user" class="span3"> 
        Емейл:  <%= current_user.email %> 
        <%= link_to 'Выйти', destroy_user_session_path %> 
    <% else %>   
<div id="auth_user"> 
<%= form_for(resource, :html => { :class => 'form-inline'}, :as => 
resource_name, :url => session_path(resource_name)) do |f| %> 
  <%= f.label :email %> 
  <%= f.email_field :email, :autofocus => true %> 
  <%= f.label :password %> 
  <%= f.password_field :password %> 
<br><br> 
<div class="row"> 
Лист 
ЧДТУ. 222088.001 ПЗ 
68 
Змн. Лист № докум. Підпис Дата 
 
  <div class="span3 offset3"> 
  <% if devise_mapping.rememberable? -%> 
    <div><%= f.check_box :remember_me %> <%= f.label :запам’ятати_мене 
%>  <%= f.submit "Ввійти" %></div> 
  </div> 
  <% end %> 
</div> 
</div> 
 
<% end %> 
    <% end %> 
</div> 
    </div>   
 <%= link_to 'Всі читачі', allusers_path, :class => "btn" %> 
  <%= link_to 'Всі книги', all_path, :class => "btn" %> 
 <div class="main"> 
  <%= link_to 'Пошук книг', seach_path, :class => "btn btn-block" %> 
  <br> 
<%= yield %> 
</div> 
</p> 
</body> 
</html> 
 
 
 
Лист 
ЧДТУ. 222088.001 ПЗ 
69 
Змн. Лист № докум. Підпис Дата