Бло

г
Особливості створення Web-орієнтованих систем з допомогою MEAN стек

Анотація. В статті розглянуті особливості створення веб-аплікацій за допомогою сучасних веб-технологій, аспекти вибору інструментів для досягнення мети та переваги 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 може підійти не для всіх рішень, через свої особливості, наприклад через документно-орієнтовану СУБД, але для конкретних завдань виправдовує довіру.


 

Laravel для ларадроч..айників. Перший запуск

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

Вісім правил для створення чудового UX дизайну

Що для Вас означає поняття «досвід користування» (UX)? Для мене це те, що користувач відчуває в процесі експлуатації продукту. Ці відчуття включають в себе емоції від побаченого, суб’єктивні переконання людини, уподобання та два найголовніші фактори – поведінку користувача та досягнення мети.

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

Створення ідеального сповіщення

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

Як встановити Varnish + Apache2 на Ubuntu 16

Varnish — це гнучкий інструмент для прискорення роботи сервера. Не буду писати багато тексту про нього, цієї інформації більш ніж достатньо в інтернеті.

Тут я опишу процес встановлення, проблеми, які можуть виникнути і рішення.

Gulp: Епізод 3 - Повернення Джедая

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

Повернемося до питання швидкодії, про яку я згадував на самому початку - порівняємо швидкість виконання задач у трьох випадках - при використанні SASS на Ruby, про який було написано в нашій статті, Grunt та Gulp. Завданням буде скомпілювати набір .scss - файлів.

Gulp: Епізод 2 - Нова надія

У попередній статті ми отримали трохи теорії, тому зараз можна перейти до практики - напишемо наш перший таск.

Gulp: Епізод 1 - Прихована загроза

Сьогодні ми поговоримо про менеджер задач (task manager) на ім'я Gulp, а також налаштуємо його для основних задач, які необхідно буде виконувати frontend- розробнику.

Встановлення і налаштування веб-сервера Apache2 + php + mysql + phpmyadmin на Ubuntu16.04

Попередня саття про встановлення і базове налаштування сервера на ubuntu користується великим попитом, незважаючи на те що вона вже морально устаріла. Тому я вирішив поділитись з вами досвідом встановлення софта на Ubuntu 16.04.

Я вирішив продублювати частину інструкції з попередньої статті

Довго встановлюється windows на ноутбук з ssd.

Вирішив зробити абгрейд одного робочого ноутбука (HP ProBook 4540s Intel i5 / 6gb / 750 Gb / Radeon 2gb). Докупили планку памяті kingston на 8Gb та ssd intel на 120. 

Хтось мусив це зробити!

Медична платформа "PeteHealth"

 

Дизайн обкладинки для книги "Столітній чоловік, що виліз у вікно і зник"

 

Платформа для референцій "LEGAL MATES"

 

FundFlow - онлайн платформа для подій

 
Розкажіть нам про свій проект!