Meteor in Action

Total Page:16

File Type:pdf, Size:1020Kb

Meteor in Action MANNING Stephan Hochhaus Manuel Schoebel FOREWORD BY Matt DeBergalis www.it-ebooks.info Meteor in Action Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> Meteor in Action STEPHAN HOCHHAUS MANUEL CHRISTOPH SCHOEBEL MANNING SHELTER ISLAND Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: orders@manning.com ©2016 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editor: Dan Maharry 20 Baldwin Road Technical development editor Kostas Passadis PO Box 761 Copyeditor: Liz Welch Shelter Island, NY 11964 Proofreader: Barbara Mirecki Technical proofreader: Al Krinker Typesetter: Dennis Dalinnik Cover designer: Marija Tudor ISBN: 9781617292477 Printed in the United States of America 12345678910–EBM–201918171615 Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> brief contents PART 1LOOK—A SHOOTING STAR! ...........................................1 1 ■ A better way to build apps 3 2 ■ My fridge! A reactive game 31 PART 23, 2, 1—IMPACT!.........................................................49 3 ■ Working with templates 51 4 ■ Working with data 76 5 ■ Fully reactive editing 105 6 ■ Users, authentications, and permissions 130 7 ■ Exchanging data 153 8 ■ Routing using Iron.Router 176 9 ■ The package system 203 10 ■ Advanced server methods 227 PART 3LEAVING THE CRATER................................................251 11 ■ Building and debugging 253 12 ■ Going into production 281 v Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> contents foreword xiii preface xv acknowledgments xvii about this book xix about the cover illustration xxiii PART 1LOOK—A SHOOTING STAR!................................1 A better way to build apps 3 1 1.1 Introducing Meteor 4 The story behind Meteor 4 ■ The Meteor stack 5 Isomorphic frameworks: full-stack JavaScript 7 Processing in the browser: running on distributed platforms 9 Reactive programming 11 1.2 How Meteor works 12 Core projects 14 ■ Isobuild and the CLI tool 17 Client code vs. server code 17 1.3 Strengths and weaknesses 19 Where Meteor shines 19 ■ Challenges when using Meteor 21 1.4 Creating new applications 24 Setting up a new project 24 ■ Starting the application 25 vii Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> viii CONTENTS 1.5 Dissecting the default project 25 helloWorld.css 26 ■ helloWorld.html 26 ■ helloWorld.js 27 1.6 Summary 29 My fridge! A reactive game 31 2 2.1 Application overview 32 2.2 Initial setup 32 Setting up a new project 33 2.3 Creating a layout 34 Setting the styles 34 ■ Adding the templates 35 2.4 Adding content to the database in real time 38 Storing items in the database 38 ■ Connecting data to templates 40 ■ Adding a defined set of products 43 2.5 Moving items into the fridge 44 Adding jQuery-UI to the project 44 ■ Defining drop targets for items 44 ■ Allowing items to be draggable 47 2.6 Deploying to meteor.com and using the fridge 48 2.7 Summary 48 PART 2 3, 2, 1—IMPACT! .............................................49 Working with templates 51 3 3.1 Introduction to templates 52 3.2 Working with templates 53 The Blaze engine 53 ■ Organizing template files 54 3.3 Creating dynamic HTML templates 55 Double and triple-braced tags (expressions) 55 ■ Inclusion tags (partials) 57 ■ Block tags 60 ■ Helpers 63 3.4 Handling events 68 Template event maps 69 ■ Event propagation 70 Preventing the browser’s default behavior 71 3.5 The template life cycle 72 3.6 Summary 74 Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> CONTENTS ix Working with data 76 4 4.1 Meteor’s default data sources 79 What makes a data source reactive? 80 ■ How reactive data is connected to functions 81 4.2 Building a house-sitter app 82 Setting up templates 84 ■ Connecting to a database and declaring collections 85 4.3 Working with the Session object 86 The Session object 86 ■ Using Session to store selected drop-down values 87 ■ Creating a reactive context using Tracker.autorun 89 4.4 Working with MongoDB collections 89 Querying documents in MongoDB 91 ■ Working with Meteor collections 92 ■ Initializing a collection 93 Querying collections 94 ■ Display collection data in a template 95 ■ Updating data in a collection 98 Inserting new data into a collection 101 ■ Removing data from a collection 102 4.5 Summary 104 Fully reactive editing 105 5 5.1 The reactive editing workflow 106 5.2 Reactive front ends vs. DOM manipulation 107 5.3 Staging changes in a local collection 111 5.4 Displaying collection data within a form 115 Adding array index information to an #each loop 116 5.5 Reactive updates using a local collection 118 Event map for the houseForm template 119 ■ Event map for the plantFieldset template 121 5.6 Implementing a simple notifications system 124 Adding a notifications template 125 ■ Adding a status property 125 ■ Using a Session variable to trigger notifications 127 5.7 Summary 129 Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> x CONTENTS Users, authentications, and permissions 130 6 6.1 Adding users to an application 131 Adding password authentication 132 ■ Registration and password reset 133 ■ Setting up email 137 6.2 Authenticating users with OAuth 141 An introduction to OAuth 141 ■ Integrating Facebook authentication 143 ■ Integrating other OAuth providers 147 6.3 Managing user permissions, roles, and groups 148 Managing permissions with allow/deny 149 6.4 Summary 152 Exchanging data 153 7 7.1 Publications and subscriptions 155 publish() and subscribe() 155 ■ Global subscriptions 157 Template-level subscriptions 158 ■ Parameterizing subscriptions 159 ■ Publishing aggregated data to a client-only collection 162 ■ Turning an aggregation publication into a reactive data source 165 ■ Limiting data visibility by user ID 167 7.2 Meteor methods 169 Removing the insecure package 170 ■ Using methods to write data to collections 171 7.3 Summary 174 Routing using Iron.Router 176 8 8.1 Routing in web applications 177 8.2 Client-side routing 180 Adding Iron.Router 180 ■ Creating your first routes 181 Defining a layout depending on a route 183 ■ Setting the data context depending on a route 187 ■ Data subscriptions with Iron.Router 190 8.3 Advanced routing methods 192 Using named routes and link helpers 192 ■ Working with active routes for better navigation links 194 ■ Waiting for external libraries to load 195 ■ Organizing routes as controllers 196 Extending the route process using hooks 197 ■ Creating an Iron.Router plug-in 199 8.4 Server-side routing with a REST API 200 8.5 Summary 202 Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> CONTENTS xi The package system 203 9 9.1 The foundation of all applications 204 9.2 Using Isopacks 205 Version Solver and semantic versioning 205 ■ Finding packages 206 ■ Adding and removing Isopacks 210 Updating packages 212 9.3 Using npm packages 212 9.4 Creating an Isopack 213 Creating a package 214 ■ Declaring package metadata 215 Adding package functionality 217 ■ Testing Isopacks using tinytest 220 ■ Publishing 224 9.5 Summary 225 Advanced server methods 227 10 10.1 Reintroducing Node.js 227 Synchronous code 228 ■ Asynchronous code 230 10.2 Asynchronous functions using fibers 232 Introducing multitasking to the event loop 232 Binding callbacks to a fiber with wrapAsync 235 Unblocking method calls for a single client 237 Creating fibers with bindEnvironment 238 10.3 Integrating external APIs 240 Making RESTful calls with the http package 241 Using a synchronous method to query an API 242 Using an asynchronous method to call an API 242 10.4 Uploading files to a collection 244 Uploading files to the database 246 10.5 Summary 249 PART 3LEAVING THE CRATER ....................................251 Building and debugging 253 11 11.1 The Meteor build process 254 Build stages 256 ■ Running with the --production flag 259 Load order 260 ■ Adding build stages via packages 262 Adding a custom build stage 264 Licensed to Markwww.it-ebooks.info Watson <nordickan@gmail.com> xii CONTENTS 11.2 Accessing running applications 266 Using the interactive server shell 266 ■ Debugging using node-inspector 267 11.3 Creating browser applications 270 Application configuration using Meteor.settings 270 Building Meteor projects 271 11.4
Recommended publications
  • THE FUTURE of SCREENS from James Stanton a Little Bit About Me
    THE FUTURE OF SCREENS From james stanton A little bit about me. Hi I am James (Mckenzie) Stanton Thinker / Designer / Engineer / Director / Executive / Artist / Human / Practitioner / Gardner / Builder / and much more... Born in Essex, United Kingdom and survived a few hair raising moments and learnt digital from the ground up. Ok enough of the pleasantries I have been working in the design field since 1999 from the Falmouth School of Art and onwards to the RCA, and many companies. Ok. less about me and more about what I have seen… Today we are going to cover - SCREENS CONCEPTS - DIGITAL TRANSFORMATION - WHY ASSETS LIBRARIES - CODE LIBRARIES - COST EFFECTIVE SOLUTION FOR IMPLEMENTATION I know, I know, I know. That's all good and well, but what does this all mean to a company like mine? We are about to see a massive change in consumer behavior so let's get ready. DIGITAL TRANSFORMATION AS A USP Getting this correct will change your company forever. DIGITAL TRANSFORMATION USP-01 Digital transformation (DT) – the use of technology to radically improve performance or reach of enterprises – is becoming a hot topic for companies across the globe. VERY DIGITAL CHANGING NOT VERY DIGITAL DIGITAL TRANSFORMATION USP-02 Companies face common pressures from customers, employees and competitors to begin or speed up their digital transformation. However they are transforming at different paces with different results. VERY DIGITAL CHANGING NOT VERY DIGITAL DIGITAL TRANSFORMATION USP-03 Successful digital transformation comes not from implementing new technologies but from transforming your organisation to take advantage of the possibilities that new technologies provide.
    [Show full text]
  • Wines by the Glass
    WINES BY THE GLASS SPARKLING 2013 Domaine Carneros, Brut 16 2012 Frank Family, Brut Rosé, Carneros 25 WHITE 2016 Albariño, Cave Dog, Stewart Ranch, Carneros 14 2014 Sauvignon Blanc / Sémillon, Tramuntana, 'Beyond the Mountains' 17 2014 Sauvignon Vert / Sémillon / Golden Chasselas / Green Hungarian, DeSante, 'The Old 15 Vines' 2013 Chardonnay, Massican, 'Gemina' 20 2015 Chardonnay, HdV, 'Le Debut', Hyde Vineyard, Carneros 19 2014 Chardonnay / Grenache Blanc / Ribolla Gialla / etc., Durant & Booth, Blanc 20 ROSÉ 2016 Cabernet Sauvignon / Petite Syrah, Wingspan, 'Saturn Return' 16 RED 2013 Pinot Noir, Mira, Stanly Ranch, Carneros 15 2014 St. Laurent, Forlorn Hope, 'Ost-Intrigen', Ricci Vineyard, Carneros 15 2014 Grenache / Charbono / Petite Sirah, Shypoke, 'Keep', Calistoga 17 2006 Cabernet Sauvignon, Notre Vin, 'L'Etrier' 24 2014 Cabernet Sauvignon, Paul Hobbs, 'Crossbarn' 26 2014 Cabernet Sauvignon, Clos du Val, 'Estate', Stags Leap District 25 DESSERT 2009 Fore Family, Late Harvest, (Sauvignon Blanc) 375 ml 20 2010 Far Niente 'Dolce' Late Harvest (Sauvignon Blanc, Semillon) 375 ml 25 2008 Philip Togni, 'Ca' Togni' (Black Hamburgh) 375 ml 25 2010 Gandona, 'Fraga do Arco', Touriga Nacional 25 PORT / SHERRY / MADEIRA NV Cockburn’s, 20 Year Tawny Port 500 ml 17 NV Ramos Pintos, Ruby Port 9 2009 Dow’s, Late Bottled Vintage 15 1977 Fonseca Vintage Port 38 NV Equipo Navazos, Fino, Bota #35 28 NV Equipo Navazos, Amontillado, #58 29 NV Equipo Navazos, Amontillado, 'Bota NO' #61 500 ml 34 NV Equipo Navazos, Manzanilla Pasada, 'Bota Punta' #60 500
    [Show full text]
  • SSC - Communication and Networking
    SSC - Communication and Networking SSC - Web applications and development Introduction to Java Servlet (I) Shan He School for Computational Science University of Birmingham Module 06-19321: SSC SSC - Communication and Networking Outline Outline of Topics What will we learn Web development Java servlet Java servlet: our first example SSC - Communication and Networking What will we learn What is web applications and development? I Java Servlet: basic concepts, configure, install and use servlet based web applications, basic implementation. I Session management and Servlet with JDBC I Model View Controller (MVC) for Java Servlet and Java Serve Pages I Advanced topics: Multithreaded Servlet SSC - Communication and Networking Web development What is web applications and development? I Web-based application: an application that uses a web browser as a client, e.g., google calendar or GMail. I Web development: work involved in developing a web site for the Internet or intranet, which include: I web design I web content development I client-side/server-side coding I Web development coding (platforms or languages): I Client side: HTML5, JavaScript, Ajax (Asynchronous JavaScript), Flash, JavaFX, etc. I Server side: PHP, Python, Node.js, Java servlet I Client-side/Server-side: Google Web Toolkit, Opa I Full stack web frameworks { built on the development platforms wtih a higher level set of functionality: Meteor, Yahoo! Mojito, MEAN SSC - Communication and Networking Java servlet What is Java servlet? I Java servlet: a Java platform technology \for
    [Show full text]
  • Natur Pur Native Apps Native
    06/2018 Apps mit React Native und Nativescript entwickeln Programmieren Natur pur Native Apps Native 74 Die Javascript-Frameworks React Native und Nativescript versuchen eine Brücke zwischen Webapp-Entwick- lung und nativer App-Entwicklung zu bauen. Worin die Vorteile dieser Native Frameworks liegen, betrachtet der Artikel vor dem Hintergrund des klassischen App-Framework Meteor. Andreas Möller, Kristian Kißling www.linux-magazin.de schafft wegen der Code-Redundanz zu- sätzliche Fehlerquellen. Klassische Webapps nutzen hingegen HTML, CSS und Javascript und laufen plattformübergreifend im Browser jedes Systems. Allerdings beschränken die Plattformen den Zugriff auf das System mit Hilfe der so genannten Browser- Sandbox und geben APIs nur punktuell frei, was die Fähigkeiten von Webapps beschränkt. 2009 erschien dann Phone Gap (heute Apache Cordova). Mit ihm lassen sich Webapps besser an das System anbin- den. Unter Cordova laufen Apps in einer Webansicht auf dem System wie in einem Browser. Plugins erweitern den Zugriff © Leonid Tit, 123RF Tit, © Leonid auf das System für die Apps. Die beiden quelloffenen Javascript- intern über C oder C++ auf nativen Code E Meteor Frameworks React Native [1] und Nati- zugreifen, stützen sich Entwickler dafür vescript [2] erlauben es, mit Hilfe eige- beispielsweise auf das Java Native Inter- Ein Vertreter dafür ist das Javascript- ner IDEs mit Javascript native Apps für face (JNI, [6]). Die Entwicklungsumge- Framework Meteor [3]. Es hat sich von Android und I-OS zu entwickeln. Der bungen Android Studio [7] und Xcode einem Framework zum Entwickeln echt- Ansatz hat Vorteile gegenüber dem Weg [8] helfen ihnen dabei, die Anwendung zeitfähiger Webapps [9] zu einer Open- der klassischen Webapp-Entwicklung, zu programmieren und in die entspre- Source-Plattform entwickelt, die von sich den etwa das Javascript-Framework Me- chenden App-Stores zu bringen.
    [Show full text]
  • Scalability in Web Apis
    Worcester Polytechnic Institute Scalability in Web APIs Ryan Baker Mike Perrone Advised by: George T. Heineman 1 Worcester Polytechnic Institute 1 Introduction 2 Background 2.1 Problem Statement 2.2 Game Services and Tools 2.2.1 Graphics Engine 2.2.2 Map Editor 2.2.3 Friend Network 2.2.4 Achievements 2.2.5 Leaderboards 2.3 Our Service Definition 2.3.1 Leaderboards 2.4 Service Requirements 2.4.1 Administrative Ease 2.4.2 Security 2.4.3 Scalability 2.5 Internal Service Decisions 2.5.1 Application Framework 2.5.2 Cloud Computing 3 Methodology 3.1 Decisions of Design and Architecture 3.1.1 Leaderboards 3.1.2 API Documentation 3.1.3 Developer Console 3.1.4 Admin Console 3.1.5 Java Client Package 3.1.6 Logging 3.2 Decisions of Implementation 3.2.1 Enterprise vs Public 3.2.2 Front End Implementation 3.2.3 Cloud Computing Provider (AWS) 3.2.4 Web Application Framework Implementation (Flask) 3.2.5 Continuous Integration Service 3.2.6 API 3.2.7 Logging 3.2.8 Database Schema 4 Success Metrics 4.1 Resiliency 4.1.1 Simulated Traffic 4.1.2 Load Testing and Scalability 4.2 Design 4.2.1 Client Perspective 2 4.2.3 Admin Perspective 5 Conclusions & Future Work 5.1 Client Conclusions 5.2 Administrator Conclusions 5.3 The Future 6 References 7 Appendix A ­ Why we chose Leaderboards B ­ Facebook’s Game Development API C ­ Playtomic’s API D ­ Front End Tooling Decision E ­ API Documentation Tool F ­ Elastic Beanstalk 3 1 Introduction Game developers, especially those that make social games, undertake a large amount of work to create them.
    [Show full text]
  • N2O Most Powerful Erlang Web Framework @5HT How Do I Shot Web? Micro REST
    N2O Most Powerful Erlang Web Framework @5HT How do I shot Web? Micro REST Python Flask Ruby Sinatra PHP Silex Scala Scalatra Concurrency in Mind Ruby Celluloid PHP React PHP phpDaemon Java+Scala Play SPA Angular Meteor Ember Chaplin Brunch D3 Knockout React Backbone jQuery Functional DSL Scala Lift Erlang Nitrogen Haskell BlazeHtml OCaml Ocsigen F# WebSharper Clojure Laser Enlive Compojure Ring Hiccup ClojureScript Om http-kit aleph noir JVM Elixir Weber def action(_, conn) do {:render, [project: "simpleTodo"], []} end def add([body: body], _conn) do {:json, [response: "ok"], [{"Content-Type", "application/json"}]} end def wrong(_, _) do {:redirect, "/"} end Erlang ChicagoBoss DTL Engine Database Connectivity PubSub Ruby on Rails like Nitrogen N2O ~2000 LOC One Process per Connection Binary Page Construction Zero Bridge GProc Pub/Sub WebSockets, KVS DB Tuned Layers static and dynamic Routing Path cleaned Query Parser Session Cookies stored in ETS cached DTL Templates optimized Nitrogen DSL rendering HTML Elements binaries JavaScript Actions deferred Layers Performance components TCP conn (K) PHP5 FCGI Simple Script <?php ?> 5 Nitrogen No session, No DSL, DTL 1 N2O Sessions, DSL, DTL 7 N2O Sessions, no DSL, DTL 10 N2O No Sessions, no DSL, DTL 13 On same machine raw webserver performance measured with wrk: NGINX -- 60K Cowboy -- 30K Measuring Tools requests pages/sec latency (ms) wrk 15K 13628.86 18.88 ab 10K 5464.63 190 httperf 10K 3623.50 200 siege 1K 884.51 430 On same machine raw webserver performance measured with wrk: NGINX -- 60K Cowboy -- 30K Decreasing Latency From 2x to ∞ Deliver HTML ASAP Deferred JavaScript delivery after WebSocket connection established <script> TransitionProcess = '<0.7780.5>' </script> socket.send(["N2O",TransitionProcess]).
    [Show full text]
  • Andrew-Macnider-Resume-2018-Bz84.Pdf
    1600Andrew Fell Street Apt. 307, Macnider San Francisco, CA 94117 (415) 885-9517 • amacnider@gmail.com • www.andrew-macnider.com Experience Kiip - www.kiip.me Frontend Engineer - Feb. ‘16 to present – Responsible for modernizing advertising platform FE stack from JavaScript/MooTools to React/Redux, currently in beta – Refactored visual marketing website https://table.kiip.me from Meteor to pure react; packaged for production utilizing webpack, babel – Developed client ad platform onboarding flows from prototype to production while collaborating closely with design team, utilizing JavaScript, MooTools, Tornado, Sass – Lead developer for multiple for multiple marketing homepage redesigns utilizing JavaScript, jQuery, MooTools, Sass, CSS Animations; responsible for cross-browser testing –Improve pure JavaScript mobile ad unit as needed e.g. adding keyboard events for connected-tv streaming devices – Create internal tools for better management of advertising campaigns and developer applications – Developing pixel-perfect marketing splash pages under tight deadlines – Producing and testing email marketing templates for cross-device and cross-client viewability Kiip - www.kiip.me Marketing Producer & Customer Happiness - Jan. ‘13 to Feb ‘16 - Created promotional content, conducted player interviews and coordinated PR strategy for Guinness World Records-sponsored mobile gaming championship event - Developed copy for website redesign, in coordination with marketing, design and executive teams - Writing clean, understandable documentation for Kiip
    [Show full text]
  • Comparison of Different Orthographies for Machine
    Comparison of Different Orthographies for Machine Translation of Under-Resourced Dravidian Languages Bharathi Raja Chakravarthi Insight Centre for Data Analytics, Data Science Institute, National University of Ireland Galway, IDA Business Park, Lower Dangan, Galway, Ireland https://bharathichezhiyan.github.io/bharathiraja/ bharathi.raja@insight-centre.org Mihael Arcan Insight Centre for Data Analytics, Data Science Institute, National University of Ireland Galway, IDA Business Park, Lower Dangan, Galway, Ireland michal.arcan@insight-centre.org John P. McCrae Insight Centre for Data Analytics, Data Science Institute, National University of Ireland Galway, IDA Business Park, Lower Dangan, Galway, Ireland https://john.mccr.ae/ john.mccrae@insight-centre.org Abstract Under-resourced languages are a significant challenge for statistical approaches to machine translation, and recently it has been shown that the usage of training data from closely-related languages can improve machine translation quality of these languages. While languages within the same language family share many properties, many under-resourced languages are written in their own native script, which makes taking advantage of these language similarities difficult. In this paper, we propose to alleviate the problem of different scripts by transcribing the native script into common representation i.e. the Latin script or the International Phonetic Alphabet (IPA). In particular, we compare the difference between coarse-grained transliteration to the Latin script and fine-grained IPA transliteration. We performed experiments on the language pairs English-Tamil, English-Telugu, and English-Kannada translation task. Our results show improvements in terms of the BLEU, METEOR and chrF scores from transliteration and we find that the transliteration into the Latin script outperforms the fine-grained IPA transcription.
    [Show full text]
  • Understanding the Factors That Impact the Popularity of Github Repositories
    Understanding the Factors that Impact the Popularity of GitHub Repositories Hudson Borges, Andre Hora, Marco Tulio Valente ASERG Group, Department of Computer Science (DCC) Federal University of Minas Gerais (UFMG), Brazil E-mail: fhsborges, hora, mtovg@dcc.ufmg.br Abstract—Software popularity is a valuable information to developers because they want to know whether their systems modern open source developers, who constantly want to know are attracting new users, whether the new releases are gaining if their systems are attracting new users, if new releases are acceptance, whether their systems are as popular as competitor gaining acceptance, or if they are meeting user’s expectations. In this paper, we describe a study on the popularity of software systems, etc. Unfortunately, we have few studies about the systems hosted at GitHub, which is the world’s largest collection popularity of GitHub systems. The exceptions are probably of open source software. GitHub provides an explicit way for an attempt to differentiate popular and unpopular Python users to manifest their satisfaction with a hosted repository: repositories using machine learning techniques [5] and a the stargazers button. In our study, we reveal the main factors study on the effect of project’s popularity on documentation that impact the number of stars of GitHub projects, including programming language and application domain. We also study quality [6]. By contrast, popularity is extensively studied on the impact of new features on project popularity. Finally, we other social platforms, like YouTube [7], [8] and Twitter [9], identify four main patterns of popularity growth, which are [10]. These studies are mainly conducted to guide content derived after clustering the time series representing the number generators on producing successful social media content.
    [Show full text]
  • Developing Dynamic Single Page Web Applications Using Meteor
    Asabeneh Shitahun Yetayeh Developing Dynamic Single Page Web Applications Using Meteor Comparing JavaScript Frameworks: Blaze and React Helsinki Metropolia University of Applied Sciences Bachelor of Engineering Information Technology Thesis 2.6.2017 Abstract Author Asabeneh Shitahun Yetayeh Title Developing Dynamic Single Page Web Applications Using Meteor Number of Pages 31 pages + 3 appendices Date 2 June, 2017 Degree Bachelor of Engineering Degree Programme Information Technology Specialisation option Software Engineering Instructors Patrick Ausderau, Lecturer Sonja Holappa, Lecturer This paper studies Meteor which is a JavaScript full-stack framework to develop inter- active single page web applications. Meteor allows building web applications entirely in JavaScript. Meteor uses Blaze, React or AngularJS as a view layer and Node.js and MongoDB as a back-end. The main purpose of this study is to compare the performance of Blaze and React. A multi-user Blaze and React web applications with similar HTML and CSS were developed. Both applications were deployed on Heroku’s web server and compared based on the size of the development community, the programming pattern, the available packages and the page loading speed. This study showed that React has a higher number of development community and available packages than Blaze. The speed test showed that React web application is faster and lighter than Blaze. Both Blaze and React have similar features and user interfaces. This paper concludes that Meteor with React is a better option to develop interactive single page applications because of higher popularity, smaller page size, faster page loading speed and more available packages. For next study, this paper recommends to integrate VueJS as Meteor view layer which will give developers more options to choose from and in return it will increase Meteor’s development community.
    [Show full text]
  • CS50 Seminar November 2016 Technology
    Meteor.js + ReactJS MongoDB + d3.js Flask API + Python Alan Xie ‘16 CS50 Seminar November 2016 Technology React allows us to focus on building components and automatically manages UI updates Meteor.js full-stack framework allows rapid prototyping with pre-built functionality and works with React + Node.js MongoDB provides JSON-format storage on the Meteor back-end and works with Python data science pipeline Build fast & deploy fast…but a few caveats on scale. Meteor is usually overkill. MongoDB documents might not be right for you. Setup Meteor automatically installs MongoDB. We can install React via the meteor or node package managers (along with fun things like jQuery and d3). $ meteor npm install --save react react-dom $ meteor add mizzao:jquery-ui https://github.com/alan-xie/cs50seminar- meteor-react Default boilerplate. No real content but all CSS lives here. Calls imports/startup/client. dump folder created by mongodump. Think of these files as being “imported” into main.html. imports/startupis called at startup. imports/ui/components is where we build things. Not accessible except via Meteor server methods. Accessible via client. Calls imports/startup/server. Robomongo Setup http://localhost:3000 Let’s look at code. /imports/ui/layouts/App.jsx /imports/ui/layouts/App.jsx /imports/ui/layouts/App.jsx /imports/startup/server/films.js /imports/ui/components/Actor_RevChart.jsx Next Steps Jupyter and the numpy/scipy/pandas/scikit-learn stack allow us to perform rigorous data processing and machine learning in Python Flask allows us to serve our machine learning as an API that interacts with Meteor via a server-side Meteor.method AWS allows us to easily deploy our Flask API and Meteor app (as well as our MongoDB instance) to appropriately provisioned servers with the required libraries Questions?.
    [Show full text]
  • Towards Left Duff S Mdbg Holt Winters Gai Incl Tax Drupal Fapi Icici
    jimportneoneo_clienterrorentitynotfoundrelatedtonoeneo_j_sdn neo_j_traversalcyperneo_jclientpy_neo_neo_jneo_jphpgraphesrelsjshelltraverserwritebatchtransactioneventhandlerbatchinsertereverymangraphenedbgraphdatabaseserviceneo_j_communityjconfigurationjserverstartnodenotintransactionexceptionrest_graphdbneographytransactionfailureexceptionrelationshipentityneo_j_ogmsdnwrappingneoserverbootstrappergraphrepositoryneo_j_graphdbnodeentityembeddedgraphdatabaseneo_jtemplate neo_j_spatialcypher_neo_jneo_j_cyphercypher_querynoe_jcypherneo_jrestclientpy_neoallshortestpathscypher_querieslinkuriousneoclipseexecutionresultbatch_importerwebadmingraphdatabasetimetreegraphawarerelatedtoviacypherqueryrecorelationshiptypespringrestgraphdatabaseflockdbneomodelneo_j_rbshortpathpersistable withindistancegraphdbneo_jneo_j_webadminmiddle_ground_betweenanormcypher materialised handaling hinted finds_nothingbulbsbulbflowrexprorexster cayleygremlintitandborient_dbaurelius tinkerpoptitan_cassandratitan_graph_dbtitan_graphorientdbtitan rexter enough_ram arangotinkerpop_gremlinpyorientlinkset arangodb_graphfoxxodocumentarangodborientjssails_orientdborientgraphexectedbaasbox spark_javarddrddsunpersist asigned aql fetchplanoriento bsonobjectpyspark_rddrddmatrixfactorizationmodelresultiterablemlibpushdownlineage transforamtionspark_rddpairrddreducebykeymappartitionstakeorderedrowmatrixpair_rddblockmanagerlinearregressionwithsgddstreamsencouter fieldtypes spark_dataframejavarddgroupbykeyorg_apache_spark_rddlabeledpointdatabricksaggregatebykeyjavasparkcontextsaveastextfilejavapairdstreamcombinebykeysparkcontext_textfilejavadstreammappartitionswithindexupdatestatebykeyreducebykeyandwindowrepartitioning
    [Show full text]