Top Banner
78

MeteorJS Meetup

Feb 15, 2017

Download

Software

Involved IT
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MeteorJS Meetup
Page 2: MeteorJS Meetup
Page 3: MeteorJS Meetup
Page 4: MeteorJS Meetup

the webapp1

the process and tools

some impediments

2

3

Page 5: MeteorJS Meetup

the webapp1

the process and tools

some impediments

2

3

Page 6: MeteorJS Meetup
Page 7: MeteorJS Meetup

• Kanaal Z

Page 8: MeteorJS Meetup
Page 9: MeteorJS Meetup
Page 10: MeteorJS Meetup

Preparedness Readiness

Page 11: MeteorJS Meetup
Page 12: MeteorJS Meetup
Page 13: MeteorJS Meetup

Raise awareness about fatigue.

Get people to buy the book.

Page 14: MeteorJS Meetup
Page 15: MeteorJS Meetup
Page 16: MeteorJS Meetup
Page 17: MeteorJS Meetup
Page 18: MeteorJS Meetup
Page 19: MeteorJS Meetup

Meaningful algorithmQuestionnaire

Attractive results Retest

ReportingStatistics

Be responsiveLook good

User registration

Facebook share

AnalyticsMaintainable

Monitoring Easily deployable

Page 20: MeteorJS Meetup
Page 21: MeteorJS Meetup

Demo.http://www.rustenishetnieuwesporten.be/

http://www.lereposestlenouveausport.com/

http://www.restisthenewsport.com/

Page 22: MeteorJS Meetup

the webapp1

the process and tools

some impediments

2

3

Page 23: MeteorJS Meetup

Git

TeamCity Server Docker Server

Test Server

Production Server

Docker Engine

Meteor Application Container

MongoDBContainer

Docker Engine

Meteor Application Container

MongoDBContainer

CI Build Deploy Test Smoketest- Compile- Inspect- Unit Test- Tag Source

- Deploy package to server

- Verify test server

Deploy Prod. Smoketest

- Deploy package to server

- Verify production server

Create Package

- From tagged source

Page 24: MeteorJS Meetup

NASANI

Page 25: MeteorJS Meetup
Page 26: MeteorJS Meetup
Page 27: MeteorJS Meetup
Page 28: MeteorJS Meetup
Page 29: MeteorJS Meetup

meteor add zodiase:mdl

Page 30: MeteorJS Meetup
Page 31: MeteorJS Meetup
Page 32: MeteorJS Meetup
Page 33: MeteorJS Meetup

Last week renamed to Meteor Devtools

Page 34: MeteorJS Meetup
Page 35: MeteorJS Meetup

Git

TeamCity Server Docker Server

Test Server

Production Server

Docker Engine

Meteor Application Container

MongoDBContainer

Docker Engine

Meteor Application Container

MongoDBContainer

CI Build Deploy Test Smoketest- Compile- Inspect- Unit Test- Tag Source

- Deploy package to server

- Verify test server

Deploy Prod. Smoketest

- Deploy package to server

- Verify production server

Create Package

- From tagged source

Page 36: MeteorJS Meetup
Page 37: MeteorJS Meetup
Page 38: MeteorJS Meetup
Page 39: MeteorJS Meetup
Page 40: MeteorJS Meetup
Page 41: MeteorJS Meetup

1 2 3 TEST

Page 42: MeteorJS Meetup
Page 43: MeteorJS Meetup
Page 44: MeteorJS Meetup

meteor add accounts-passwordmeteor add accounts-facebookmeteor add accounts-googlemeteor add kctang:useraccounts-mdlmeteor add useraccounts:iron-routingmeteor add softwarerero:accounts-t9n

Page 45: MeteorJS Meetup
Page 46: MeteorJS Meetup
Page 47: MeteorJS Meetup
Page 48: MeteorJS Meetup
Page 49: MeteorJS Meetup
Page 50: MeteorJS Meetup
Page 51: MeteorJS Meetup

meteor add datariot:ganalytics

Page 52: MeteorJS Meetup
Page 53: MeteorJS Meetup

meteor add gabrielhpugliese:logentries

Page 54: MeteorJS Meetup
Page 55: MeteorJS Meetup

meteor add meteorhacks:kadirameteor add meteorhacks:zones

Page 56: MeteorJS Meetup
Page 57: MeteorJS Meetup
Page 58: MeteorJS Meetup
Page 59: MeteorJS Meetup
Page 60: MeteorJS Meetup
Page 61: MeteorJS Meetup
Page 62: MeteorJS Meetup

the webapp1

the process and tools

some impediments

2

3

Page 63: MeteorJS Meetup

Software development is not a science...

Page 64: MeteorJS Meetup

… software development is a craft.

Page 65: MeteorJS Meetup

Meteor.publish("statistics-counts", function () { var self = this; var usersId = 'users'; var resultsId = 'results'; var usersCount = 0; var resultsCount = 0; var initializing = true;

var usersHandle = Meteor.users.find().observeChanges({ added: function () { usersCount++; if (!initializing) self.changed("counts", usersId, {count: usersCount}); }, removed: function () { usersCount--; if (!initializing) self.changed("counts", usersId, {count: usersCount}); } });

var resultsHandle = Results.find({current: true}).observeChanges({ added: function () { resultsCount++; if (!initializing) self.changed("counts", resultsId, {count: resultsCount}); }, removed: function () { resultsCount--; if (!initializing) self.changed("counts", resultsId, {count: resultsCount}); } });

usersCount = Meteor.users.find().count(); self.added("counts", usersId, {count: usersCount});

resultsCount = Results.find({current: true}).count(); self.added("counts", resultsId, {count: resultsCount});

initializing = false;

self.ready();

self.onStop(function () { usersHandle.stop(); resultsHandle.stop(); });});

Page 66: MeteorJS Meetup

Meteor.rbtFunctions.saveLanguage = function (language) { if (Meteor.userId() && Meteor.user()) { if (Meteor.user().hasOwnProperty("profile") && Meteor.user().profile.hasOwnProperty("language") && Meteor.user().profile.language === language) { return; } Meteor.users.update({_id: Meteor.userId()}, { $set: { "profile.language": language } } ); }};

Meteor.rbtFunctions.loadLanguage = function () { if (Meteor.userId() && Meteor.user()) { if (Meteor.user().hasOwnProperty("profile") && Meteor.user().profile.hasOwnProperty("language")) { var language = Meteor.user().profile.language; T9n.setLanguage(language); Session.set('language', language); } else { var lng = Session.get('language'); if (lng) Meteor.rbtFunctions.setLanguage(lng); } }};

Meteor.rbtFunctions.setLanguage = function (language) { Meteor.rbtFunctions.setLanguageWithoutSave(language); Meteor.rbtFunctions.saveLanguage(language); Logger.log(LogLevelEnum.Info, 'setlanguage', language);};

Meteor.rbtFunctions.setLanguageWithoutSave = function (language) { T9n.setLanguage(language); Session.set('language', language); document.title = T9n.get('appTitle');};

Page 67: MeteorJS Meetup

Router.route('QuestionIndex', { path: '/questions', name: 'question.index', waitOn: function () { return [ Meteor.subscribe('questions'), Meteor.subscribe('answers') ]; } });

Page 68: MeteorJS Meetup
Page 69: MeteorJS Meetup

var saveFormData = function () { var profileData = getProfileData();

if (!checkProfileData(profileData)) { clientAlert(T9n.get('fillOutForm'), 'updateUser', 'fillOutForm'); return; }

checkEmail(profileData.email); saveProfileData(profileData); continueUiFlow();};

Template.AccountIndex.onRendered(function () { if ($('[type="date"]').prop('type') !== 'date') { initLegacyDate(['dateOfBirth'], 1900, moment().year()); }

this.autorun(function () { initLegacyDate(['dateOfBirth'], 1900, moment().year()); });

var body = document.getElementsByTagName('body')[0]; body.onkeydown = function (e) { if (e.keyCode === 13 && saveFormData) { saveFormData(); } };});

Page 70: MeteorJS Meetup
Page 71: MeteorJS Meetup
Page 72: MeteorJS Meetup

• Meteor 1.3• Angular or React i.o. Blaze• Javascript modules• Full npm support• Testing

• Full Material Design i.o. Material Design Lite

• RxJS (reactive extensions for javascript)

• Apollo (GraphQL)

• MantraJS

Page 73: MeteorJS Meetup

3 takeways

Page 74: MeteorJS Meetup
Page 75: MeteorJS Meetup

Git

TeamCity Server Docker Server

Test Server

Production Server

Docker Engine

Meteor Application Container

MongoDBContainer

Docker Engine

Meteor Application Container

MongoDBContainer

CI Build Deploy Test Smoketest- Compile- Inspect- Unit Test- Tag Source

- Deploy package to server

- Verify test server

Deploy Prod. Smoketest

- Deploy package to server

- Verify production server

Create Package

- From tagged source

Page 76: MeteorJS Meetup
Page 77: MeteorJS Meetup

Mind “out-of-the-box”1

Create your own ALM (remember Nasani)Monitor (logging is invaluable, Kadira is priceless)

2

3

Page 78: MeteorJS Meetup

Send us a message• E-mailYou can contact us [email protected] me directly [email protected]

• Our addressVeldkant 33a 2550 Kontich

• On the webwww.involved-it.betwitter.com/involved_itlinkedin.com/involved