Бло
г- 6 Червня 2018
- Volodymyr Hodiak
- Різне
Анотація. В статті розглянуті особливості створення веб-аплікацій за допомогою сучасних веб-технологій, аспекти вибору інструментів для досягнення мети та переваги MEAN.
Постановка проблеми. Великі продукти вимагають ретельний підбір технологій та інструментів для розробки. В багажі сучасних веб-технологій їх більш ніж достатньо для будь-якого рішення. Якщо десять років тому сайт можна було вважати чимось єдиним та цілим, то сьогодні це чітко поділені частини, кожна з яких вимагає ряд технологій та спеціалізованих працівників.
Аналіз останніх досліджень і публікацій. Протягом усього часу стрімкого розвитку веб-технологій було випущено велику кількість книг та публікацій, зокрема праці Маріо Кашіаро, Арі Лернер та Саймон Холмс.
Постановка завдання. Основним завданням, яке поставлене при написанні статті, є аналіз веб-технологій та переваги використання MEAN для створення веб-аплікацій.
Виклад основного матеріалу. Популярність та зручність всесвітньої павутини спровокувала рушійний поштовх для розвитку Web-Технологій. Створюються нові інструменти для розробки, мови програмування, фреймворки, що дозволяють розробляти дивовижні речі, які можна використовувати через вікно браузера. Всі провідні розробники програмного забезпечення стараються розробити Web версії своїх продуктів для бізнесу, комунікації та розваг суспільства.
По мірі розвитку Інтернету бізнес-компанії почали прискіпливіше ставитися до того, як вони представлені суспільству. Для цього потрібно було приділяти більше уваги клієнтській частині веб-аплікації. Доводилось витрачати багато часу для написання каскадних таблиць стилів та клієнтського JavaScript, щоб зробити сайт цікавішим та складнішим. Ці події дали поштовх для розподілення розробки на частини. Саме тоді стали розділяти розробників прикладної та клієнтської частини.
В той час, як розробники прикладної частини акцентують свою увагу на закулісній магії, розробники клієнтської частини роблять все для приємної взаємодії користувача з сайтом.
Великий вплив на розвиток веб-технологій внесла поява різноманітних фреймворків та бібліотек. Це супроводжує тенденцію перенесення логіки аплікації з серверної частини в клієнтську. Можна розглядати це, як програмування прикладної частини в клієнтській. Найбільшу популярність серед фреймворків, які використовують цей підхід, стали – Angular, Backbone та Ember.
Однією з причини популярності такого підходу є зниження навантаження серверної частини, шляхом перенесення логіки на клієнтську. Зменшуються витрати на серверне забезпечення, так як обчислювальні роботи переносяться на сторонку клієнтського браузера.
Ці фактори вплинули на колосальний прорив у розвитку та популярності клієнтських технологій, невід’ємним інструментом яких стає JavaScript.
JavaScript, наразі, є однією з найпопулярніших мов програмування в інтернеті. Але спочатку багато професійних програмістів скептично ставилися до мови, цільова аудиторія якої складалася з програмістів-любителів. Поява AJAX змінила ситуацію та повернула увагу професійної спільноти до мови, а подальші модифікації мови за стандартами ES2015 та ES2017 внесли багато корисних можливостей, яких не вистачало для ефективного програмування. В результаті, були розроблені та покращені багато практик використання JavaScript (зокрема, тестування та налагодження), створені бібліотеки та фреймворки, поширилося використання JavaScript поза браузером.
MEAN - це абревіатура яка з складається з MongoDB, ExpressJs, Angular і NodeJs. Це набір комплексного програмного забезпечення, який використовують для веб розробки.
Плюсом MEAN є те, що він використовує в зв’язці ряд найкращих в своїй ніші веб-технологій. Та основну роль відіграє використання спільної мови програмування JavaScript. Звичайно, що кожна з відокремлених частин аплікації вимагає досконалих знавців своєї справи, але цей стек дає велику перевагу людям, які прагнуть впливати на всю розробку та зекономити час для вивчення інших мов програмування. Розглянемо кожну з цих технологій детальніше.
Node.js призначений для відокремленого виконання високопродуктивних мережних застосунків на мові JavaScript. Функції платформи не обмежені створенням серверних скриптів для веб, платформа може використовуватися і для створення звичайних клієнтських і серверних мережевих програм. Для забезпечення виконання JavaScript-коду використовується розроблений компанією Google рушій V8.
Для забезпечення обробки великої кількості паралельних запитів у Node.js використовується асинхронна модель запуску коду, заснована на обробці подій в неблокуючому режимі та визначенні обробників зворотніх викликів (callback). Як способи мультиплексування з'єднань підтримується epoll, kqueue, /dev/poll і select. Для мультиплексування з'єднань використовується бібліотека libuv, для створення пулу потоків (thread pool) задіяна бібліотека libeio, для виконання DNS-запитів у неблокуючому режимі інтегрований c-ares. Всі системні виклики, що спричиняють блокування, виконуються всередині пула потоків і потім, як і обробники сигналів, передають результат своєї роботи назад через неіменовані канали (pipe). За своєю суттю Node.js схожий на фреймворки Perl AnyEvent, Ruby Event Machine і Python Twisted, але цикл обробки подій (event loop) у Node.js прихований від розробника і нагадує обробку подій у веб-застосунку, що працює в браузері. При написанні програм для Node.js необхідно враховувати специфіку подієво-орієнтованого програмування, наприклад, замість виконання.
Express.js, або просто Express — програмний каркас розробки веб-застосунків для Node.js, реалізований як вільне і відкрите програмне забезпечення під ліцензією MIT. Він спроектований для створення веб-застосунків і API. Де-факто є стандартним каркасом для Node.js. Автор фреймворка, TJ Holowaychuk, описує його як створений на основі написаного на мові Ruby каркаса Sinatra, маючи на увазі, що він мінімалістичний, але має велику кількість плаґінів, що підключаються. Express є бекендом для програмного стека MEAN, разом з базою даних MongoDB і каркасом AngularJS для фронтенду.
MongoDB — документо-орієнтована система керування базами даних (СКБД) з відкритим сирцевим кодом, яка не потребує опису схеми таблиць. MongoDB займає нішу між швидкими і масштабованими системами, що оперують даними у форматі ключ/значення, і реляційними СКБД, функціональними і зручними у формуванні запитів. Код MongoDB написаний на мові C++ і поширюється в рамках ліцензії AGPLv3. MongoDB підтримує зберігання документів в JSON-подібному форматі, має досить гнучку мову для формування запитів, може створювати індекси для різних збережених атрибутів, ефективно забезпечує зберігання великих бінарних об'єктів, підтримує журналювання операцій зі зміни і додавання даних в БД, може працювати відповідно до парадигми Map/Reduce, підтримує реплікацію і побудову відмовостійких конфігурацій. У MongoDB є вбудовані засоби із забезпечення шардінгу (розподіл набору даних по серверах на основі певного ключа), комбінуючи який реплікацією даних можна побудувати горизонтально масштабований кластер зберігання, в якому відсутня єдина точка відмови (збій будь-якого вузла не позначається на роботі БД), підтримується автоматичне відновлення після збою і перенесення навантаження з вузла, який вийшов з ладу. Розширення кластера або перетворення одного сервера на кластер проводиться без зупинки роботи БД простим додаванням нових машин.
Angular — JavaScript-фреймворк з відкритим програмним кодом, який розробляє Google. Призначений для розробки односторінкових додатків, що складаються з одної HTML сторінки з CSS і JavaScript. Його мета — розширення браузерних застосунків на основі шаблону Модель-вид-контролер (MVC), а також спрощення їх тестування та розробки. Фреймворк працює зі сторінкою HTML, що містить додаткові атрибути і пов'язує області вводу або виводу сторінки з моделлю, яка є звичайними змінними JavaScript. Значення цих змінних задаються вручну або отримуються зі статичних або динамічних JSON-даних.
Обравши правильні технології для розробки, ми маємо гарантію того, що наша аплікаціє буде розроблена правильним шляхом. Інструменти MEAN дуже добре працюють в зв’язці та ідеально підходять для досягнення мети. Підсумовуючи можна сказати, що MEAN може підійти не для всіх рішень, через свої особливості, наприклад через документно-орієнтовану СУБД, але для конкретних завдань виправдовує довіру.
- 1 Червня 2016
- Khrystia Novak
- Різне
5 років тому Сергій, Володя, Галя, Макс та Богдан зрозуміли, що так далі жити не можна))) І вирішили, що найкращий спосіб зробити світ кращим – робити те, що приносить кайф, і те, що найкраще вдається.
"І що вони зробили?", запитаєте Ви. Вони заснували OTAKOYI.
І тут почалося...
- 21 Грудня 2015
- Volodymyr Hodiak
- Розробка
- Різне
Ця стаття призначена для наших клієнтів, в яких "... не зберігаються сторінки. Я вношу назву, натискаю "Перекласти". Натискаю "Зберегти" і отримую "Помилка валідації"."
Пояснення читайте в статті.
- 19 Березня 2015
- Khrystia Novak
- Дизайн
- Різне
В старих газетах мені найбільше подобається розглядати рекламні блоки — як на мене, це класне джерело для натхнення. От нещодавно я натрапила на кілька газет — «Діло», «Рада» та «Буковина».
- 15 Березня 2015
- Volodymyr Hodiak
- Різне
Замітка для убунтівців-початківців. Як ми знаємо, компанія Adobe призупинила підтримку плеєра. Встановлення чи оновлення версії Adobe Flash Player займе не більше 2-х хвилин.
- 22 Грудня 2014
- Halyna Kharambura
- Різне
Якщо ви вирішили відкрити свій інтернет-магазин, вам варто визначитись із системою оподаткування. Адже ведення бізнесу це не лише отримання доходів, а й сплата податків та зборів. Загалом вибір стоїть між загальною та спрощеною системами оподаткування. В цій статті ми опишемо особливості спрощеної системи оподаткування для інтернет-магазинів.
- 30 Серпня 2014
- Halyna Kharambura
- Різне
Опитування інтернет користувачів показують, що 70% відвідувачів сайту звертають увагу на відгуки інших користувачів, з них більша частина приймає рішення про покупку власне на основі відгуків. Можна навіть виділити сфери діяльності, які найбільше залежні від відгуків покупців здебільшого - це інтернет-магазини, сфера HoReCa та все що пов’язано з туризмом.
- 10 Серпня 2014
- Halyna Kharambura
- Різне
Перелік фаворитів ринку електронної комерції, на яких варто рівнятись та з яких варто брати приклад.
- 10 Серпня 2014
- Halyna Kharambura
- Дизайн
- Різне
Інтернет-торгівля розвивається шаленими темпами. Одні онлайн-магазини з'являються, інші йдуть з поля бою, так і не зрозумівши, що вони зробили не так. В інтернеті можна знайти кількаденні тренінги/семінари, які в результаті обіцяють навчити успіху в онлайн-продажах. Звісно, що однієї єдиної правильної відповіді, як зробити ваш онлайн-бізнес успішним не існує.
- 9 Серпня 2014
- Volodymyr Hodiak
- Розробка
- Різне
Якщо у вас виникла потреба встановити curl в ubuntu, це не проблема! Ось шматок коду, який вирішить ваші питання.