ShareSci: A Research Paper Networking Site
|
|
- Victoria Brook Terry
- 6 years ago
- Views:
Transcription
1 ShareSci: A Research Paper Networking Site Mike D'Arcy Status Report - April 25, 2017 Utkarsh Patel Introduction We proposed ShareSci, a research paper library site where users can find, discuss, and contribute scholarly articles. Our primary goal is to improve on existing sites like ResearchGate by putting a greater focus on content than on users, and streamlining the process of finding and interacting with the uploaded articles and data. In this document, we will report the end-of-semester status of the project, and provide detailed documentation on how to replicate the site on a different server. Site Status In our proposal, we stated the core features that we wanted to implement this semester, which form the basis for a functioning site. These can be broadly divided into the user account system and the article management system. For user accounts, we had aimed to create a system in which users could log in with their username and password, and could manage all of their account information such as changing their password, , name, institution, or personal biography. For articles, we had aimed to find a method for obtaining existing article metadata in bulk, allowing users to upload their own articles, allowing users to view/download articles, and performing a keyword search on our article database. We are pleased to report that all of these features have been completed. Tools and Setup We used a variant of a MEAN stack for our site. NodeJS Express was used for the webserver, MongoDB for the article database, and AngularJS for the frontend. PostgreSQL was used for our user database, as we deemed ACID compliance more important for this type of data than the horizontal scalability and flexible schema offered by MongoDB. The site runs on an Ubuntu server, although it should be capable of running on any Linux based server. Beyond this core framework, we also used Git for version control and deployment. We will now describe the setup 1 procedures for each tool individually, along with the main references we consulted to use them. Note that the setup of the base OS is beyond the scope of this document, but there is effectively no deviation from the official Ubuntu installation instructions found at: 1 Only the major references are listed in this section. For a complete list, see the References section at the end of the report.
2 Git Primary references: We created a repository on GitHub to act as the central repository for our project. To enable deployment to our production server, we created a webhook on GitHub that automatically sends a JSON request to our server whenever a commit is pushed to the repository. We created a script on the server that listens for this request, and then automatically pulls the latest stable server code from the master branch and starts the site server. The instructions for setting up a GitHub webhook can be found in the second reference listed above, and the script we used to receive the webhook events is available in our source code repository: NodeJS (v4.2.6) Primary references: Setting up NodeJS consisted primarily of using package managers. We first installed NodeJS and NPM with the command: sudo apt install nodejs npm. We then installed the necessary community-developed NodeJS modules. We specify these in a package.json file in our repository (to ensure consistent versioning and for convenient installation), which can be found in our source code repository. With this file, we can simply run npm install to update all of our dependencies. One caveat due to the way AngularJS is set up is that there are actually two package.json files; one in the root of our repository, and one under the clients/ directory. The npm install command must be run from both locations to install the necessary modules for both Angular 2 and the core server. MongoDB (v2.6.10) Primary reference: There was very little setup here. Just run: sudo apt install mongodb. Our data collection procedure will be described separately. After collecting data, we enabled full text search of articles by indexing our article collection: db.papers.createindex({"$**": "text"). PostgreSQL (v9.5.6) Primary reference: Again, setup was simple: sudo apt install postgresql. Then we ran psql to create a new user for our database: CREATE ROLE sharesci WITH LOGIN ENCRYPTED PASSWORD 'sharesci';. Create the database: CREATE DATABASE sharesci;. Finally: GRANT ALL ON DATABASE sharesci TO sharesci;. The database can now be used with the connection string: postgres://sharesci:sharesci@localhost/sharesci. The creation of our schema and stored
3 procedures was automated, and can be found in our source code under scripts/pg_db_schema_setup.sql. The schema can be generated by running psql < scripts/pg_db_schema_setup.sql. Angular 2 Primary reference: Setting up Angular for local development is relatively complex procedure. The standard procedure is explained in detail at After following the standard setup of Angular 2, we installed community developed node components for Angular. The list of all required components can be found in clients/npm-shrinkwrap.json from our source repository. Hosting Our site is currently hosted on a DigitalOcean cloud server (1 CPU, 1 GB RAM, 20 GB disk). There isn't much else to say about the hosting, but we explain some of our domain security in the HTTPS section below. HTTPS Primary reference: Our site uses HTTPS to ensure the security of our users, which requires obtaining a pair of public and private keys for use by the SSL/TLS protocol. The public key must be digitally signed by a trusted certificate authority (CA) to verify the authenticity of the site. We purchased a domain (sharesci.org) from Google Domains and obtained our certificates from Let's Encrypt. This consisted of simply following the instructions from their website, and the procedure may vary for different platforms so we will not reprint it here. The most vital note in this process is that the private key should be kept absolutely secret to ensure security. Only highly trusted administrator accounts should have permissions to read it. CAs will usually not provide certificates for connecting to the site via IP address, so if the server is run without owning a domain name the administrator should generate their own keys and self-sign them. This is inconvenient for the end user because most browsers will automatically block access to sites using self-signed certificates and require the user to manually override the authenticity check. Because we got certificates from a CA, we will omit instructions for self-signing, but interested readers may find the following link helpful:
4 Final Setup After all of the above tools have been installed and configured, the server can be started by changing to the root of the source tree and running sudo nodejs server.js (sudo is needed to allow the server to bind to ports 80 and 443, as well as access the TLS certificates). It is likely desirable to seed the article database as part of the setup process, for which we point readers to the Data Collection section. Server Side Implementation Code Structure To manage the complexity of our site, we have attempted to maintain a modular code structure. In the root of our source tree, we have several directories, each containing a different part of the site's functions. The clients/ directory holds all the files for Angular 2 and the client-side components of the site. The controllers/ directory contains the code for all of our REST API endpoints. The routes/ directory is responsible solely for assigning each incoming request to an appropriate controller. The util/ directory contains code that is used by multiple separate components. The scripts/ directory contains miscellaneous script files that are not directly included in the core site, but are useful for administration (these include the arxiv harvesting script and the script triggered by the Github webhook). Finally, the uploads/ directory is simply an empty directory to be used by the server for storing uploaded PDFs and other large data items. User Accounts Our REST API contains endpoints for several account-related features, including account creation, login, logout, profile updating and changing password. Account creation and profile updates are simply wrappers around the database, so there would be little merit to explaining them here over simply reading the relevant source code. Logins are session-based, and we manage sessions using the express-session module for NodeJS. We securely store the users' passwords in the database, using bcrypt for salting and hashing. Logging in consists of sending credentials to the server, which then returns a session cookie. Logging out simply deletes the session on the server side. One technicality that arises from the session-based login scheme is that a few of our REST API endpoints are not actually RESTful. Requests such as changing a user's password require being logged in, which means these requests are not entirely stateless. This has no significant consequences at this stage of development, but in the future we may consider using token-based authentication to create a truly stateless and RESTful API.
5 Article Searching We use the built-in text indexing and searching features in MongoDB to enable searching for articles. An unfortunate drawback is that MongoDB allows only one text index per collection, so there is no way to make the search granular to the level of separating title, author, or full-text searches. However, using the built-in algorithm allowed us to develop the site much more quickly and resulted in a more robust and powerful algorithm than we likely could have developed in just a few weeks. Improving upon this search algorithm is a potential topic of future research. When a request is sent to the search endpoint of the API, the backend code feeds the query to MongoDB, which searches based on all textual fields in each document. This most notably includes title, author, abstract, and full text. It then sorts based on the relevance score for each result. We included parameters to the API for controlling the number of results returned, so the client could request only the 10 most relevant results, for example. This is very important for improving load times, as there are often over 100,000 results for a query. Article Uploading Article uploads are handled in part by the Multer middleware for NodeJS/Express. File uploads in POST requests require using the multipart/form-data encoding, as opposed to the default urlencoded encoding. Multer parses this encoding and stores the uploaded file in our uploads/ directory. Then, we insert the filename of the upload along with the metadata into MongoDB. We additionally store the original filename and the MIME type of the data (which are typically given in the file upload request). Storing these allows us to maintain the user's original filename and filetype, while allowing Multer to assign a unique filename to each upload. We want users to be able to find their articles, so after a PDF is uploaded, we use the pdftotextjs NodeJS module to extract text from the PDF. This module is simply a wrapper around the pdftotext application for Linux. It currently supports embedded text only (no OCR), but we believe it is very feasible to add OCR capabilities in the future. The extracted text is stored in MongoDB, so that it will be indexed and enable searching for the uploaded article. Article Downloading This is relatively simple. Given an article ID, we can find the filename in the database and serve it to the client. The main point of note is that we must adjust the Content-Type response header to indicate the original type of the file, and the Content-Disposition response header with the filename= parameter specified to indicate the original filename for download.
6 Client Side Implementation Code Structure Primary Reference: We are following the recommended angular 2 styleguide to structure our client side code. We are also following the standard naming conventions specified in the angular 2 style guide to name all the client side files. Due to the small size of our application, all the components of angular application are currently under one root module. As our application grows we will refactor our code and separate each feature in a different angular module. Components Our application is a single page application. All the views are part of a single HTML page, and the view is dynamically updated as user interacts with the application. The application has total of seven views and each view is controlled by a separate component and styled by a separate stylesheet. All the components are listed below. 1. Home 2. Login 3. Account 4. Search-Results 5. Article 6. Upload 7.Create-Account Besides the seven main component listed above, we also have a navbar component which is used by all the main components. Services The client communicates with the server through angular services. All the components consume these services to send and receive data from server. Currently, client has total of four services that communicates with server. The Authentication Service is used to login and logout user. The article service is used to get the metadata and the pdf of article by posting the artcle_id to the article API. The search_result service is used to get the list of articles from server based on the user search query. The account service is used to get the user account information such as name, username, institution etc. and to modify these information. Besides these four main services, we also developed an internal service to share data between components. This internal service does not communicate with server and is solely used to exchange data between different components. Entities The server API sends the data to client in a specific format. The structure of all the server side entities is also defined on client side using typescript interfaces. Having a common definition of entities on both server side and client side makes it easier to transform a json object sent by server
7 into a typescript interface, and also reduces the possibility of error. The client has currently three entities defined: Article, User and Search-Results. Data Collection Primary reference: For our testing, we collected metadata for 800,000 papers from the arxiv article database using the Open Archive Initiative's Protocol for Metadata Harvesting (OAI-PMH). These papers were inserted into our MongoDB instance. OAI-PMH is an open protocol designed to facilitate metadata exchange in a more efficient way than web scraping, to save resources for both servers and harvesters. The data returned by requests to an OAI-PMH API is in XML format, which means we had to convert it to JSON for use with MongoDB. We used the cheerio module to do some preliminary XPath selection and pruning of the responses, which were returned in batches of 1000 papers (the protocol specifies "resumption tokens" so large result sets can be downloaded in batches). This module allowed us to select the relevant sections article metadata from the result set and prepare them for conversion to JSON. We then used xml2js to convert the data to JSON and inserted it into the database. Lastly, because we were harvesting such an extreme amount of data, we wanted to avoid putting too much of a load on the arxiv server, so we limited our requests to once per 30 seconds. In this way, we were able to get metadata for all the papers since 2010 by allowing the script to run overnight. We might have obtained more, but decided not to because we were using a low-powered server. The full harvesting script can be found in our source code under scripts/harvest_arxiv.js. Conclusion We have created ShareSci, a content-focused research paper sharing site. While there are numerous paths for future improvement, including (but not limited to) the higher-tier features listed in our original proposal, we have made significant progress as we developed the site throughout the semester. In this report, we have documented the tools used, setup procedures, and the high-level design and implementation strategies we used in building the site. For readers interested in the precise details of the implementation, we recommend taking a look at our source code repository on 2 Github : 2 Note that we do not include the source code in the print submission, as it is more than 100 pages in length. In our electronic submission, we will include a PDF compilation of the source code.
8 References Naturally, it would not be feasible to provide links to every single source viewed during the development of this site, but here we do provide links to sources and documentation which were actively consulted in the design and implementation. File structure and routing pattern partially inspired by: pg-promise NodeJS module documentation: PostgreSQL documentation: MongoDB NodeJS module documentation: ResearchGate had an important role in some design decisions: Angular 2 documentation: NodeJS Express reference: Sessions for Express: Cheerio documentation: Xml2js documentation: Bcrypt NodeJS documentation: Multer documentation: Body-parser for Express: Let's Encrypt Getting Started: OAI-PMH specification: arxiv OAI-PMH interface: Postman (for API testing): Force HTTPS: NodeJS documentation: Promises in JavaScript: mise Best practices and tool selection: Angular 2 Pagination:
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 ./server.js Page 1 const express = require('express'), express_session = require('express session'), https = require('https'), http = require('http'), fs = require('fs'), rootrouter = require('./routes/index'); const app = express(); var https_ok = true; var https_options = {; try { var https_options = { key: fs.readfilesync('/etc/letsencrypt/live/sharesci.org/privkey.pem'), cert: fs.readfilesync('/etc/letsencrypt/live/sharesci.org/cert.pem') ; catch (err) { https_ok = false; if (err.errno === 13 && err.syscall === 'open') { console.error('access permissions denied to SSL certificate files.' + ' HTTPS will not be available. Try running as root.'); else { console.error(err); app.use('/', (req, res, next) => { if(!req.secure && https_ok) { return res.redirect([' req.get('host'), req.url].join('')); next(); ); app.use(express_session({ secret: require('crypto').randombytes(64).tostring('base64'), resave: false, saveuninitialized: false, httponly: true, secure: true, ephemeral: true, cookie: { maxage: 16*60*60*1000 )); app.use('/', rootrouter); app.use('/', express.static( dirname + '/client')); http.createserver(app).listen(80); if (https_ok) { https.createserver(https_options, app).listen(443);
27 ./README.md Page 1 # ShareSci ShareSci is a research publication publication and discussion website, currently being developed as a school project by Mike D'Arcy and Utkarsh Patel. We aim to make it easier for researchers to find papers related to their field of study, to discuss the contributions and flaws of studies, and to publish their own studies (even negative results).
28 ./controllers/account.js Page 1 const pgdb = require('../util/sharesci pg db'), bcrypt = require('bcrypt'), validator = require('../util/account_info_validation'); function index(req, res) { // TODO: change the redirect based on whether the user is logged in res.redirect('/login'); function createaction(req, res) { var responseobj = { errno: 0, errstr: "" ; function oninsertcomplete(data){ responseobj.errno = 0; responseobj.errstr = ""; res.json(responseobj); res.end(); e function oninsertfailed(err) { if (err.code === '23505') { // Violated 'UNIQUE' constraint, so username was already in us responseobj.errno = 8; responseobj.errstr = "Account already exists"; res.json(responseobj); else { console.error(err); responseobj.errno = 1; responseobj.errstr = "Unknown error"; res.json(responseobj); res.end(); valuespromise = new Promise((resolve, reject) => {values_from_request(req, res olve, reject);); valuespromise.then((values)=>{ return new Promise((resolve, reject)=>{insertvalues(values, resolve, r eject);); ).then(oninsertcomplete).catch(oninsertfailed); valuespromise.catch((err) => { responseobj.errno = err.errno; responseobj.errstr = err.errstr; res.json(responseobj); res.end(); ); function insertvalues(values, resolve, reject) { const query = 'INSERT INTO account (username, passhash, firstname, lastname, s elf_bio, institution) VALUES (${username, ${passhash, ${firstname, ${lastname, ${s elf_bio, ${institution);'; pgdb.any(query, values).then((data) => { resolve(data); ).catch((err) => { reject(err); );
29 ./controllers/account.js Page 2 // Sets up values for insertion into the database // and validates them. Calls `resolve` with a JSON // object containing the values on success, calls // `reject` with a JSON object containing error info // on failure. function values_from_request(req, resolve, reject) { if(!req.body.password) { reject({errno: 6, errstr: 'Missing password'); return; var passsalt = bcrypt.gensaltsync(10); var passhash = bcrypt.hashsync(req.body.password, passsalt); var values = { 'username': req.body.username, 'passhash': passhash, 'firstname': req.body.firstname, 'lastname': req.body.lastname, 'self_bio': req.body.self_bio, 'institution': req.body.institution ; for (key in values) { if(typeof values[key] === 'undefined') { values[key] = null; // Validate values if (!validator.is_valid_username(values['username'])) { reject({errno: 2, errstr: 'Invalid username'); return; if (!validator.is_valid_password(req.body.password)) { reject({errno: 3, errstr: 'Invalid password'); return; if (!validator.is_valid_firstname(values['firstname'])) { reject({errno: 6, errstr: 'Invalid firstname'); return; if (!validator.is_valid_lastname(values['lastname'])) { reject({errno: 6, errstr: 'Invalid lastname'); return; if (!validator.is_valid_institution(values['institution'])) { reject({errno: 6, errstr: 'Invalid institution'); return; if (!validator.is_valid_self_bio(values['self_bio'])) { reject({errno: 6, errstr: 'Invalid self biography'); return; resolve(values); module.exports = { index: index, createaction: createaction ;
30 ./controllers/login.js Page 1 const pgdb = require('../util/sharesci pg db'), bcrypt = require('bcrypt'); function loginaction(req, res) { var responseobj = { errno: 0, errstr: "" ; if(req.session.user_id) { responseobj.errno = 4; responseobj.errstr = "Already logged in"; res.json(responseobj); res.end(); pgdb.func('get_user_passhash', [req.body.username]).then((data) => { if (bcrypt.comparesync(req.body.password, data[0]['passhash']) ) { req.session.user_id = req.body.username; responseobj.errno = 0; responseobj.errstr = ""; res.json(responseobj); else { responseobj.errno = 3; responseobj.errstr = "Incorrect password"; res.json(responseobj); res.end(); ).catch((err) => { if(err.received === 0) { console.log('invalid username \'' + req.body.username + '\' tried to log in.'); responseobj.errno = 2; responseobj.errstr = "Incorrect username"; else { console.error(err); responseobj.errno = 1; responseobj.errstr = "Unknown error"; res.json(responseobj); res.end(); ); function loginpage(req, res) { res.redirect('/'); res.end(); module.exports = { loginaction: loginaction, loginpage: loginpage ;
31 ./controllers/logout.js Page 1 function logoutaction(req, res) { delete req.session['user_id']; req.session.destroy(); if (req.body.successredirect) { res.redirect(req.body.successredirect); else { res.redirect('/'); module.exports = { logoutaction: logoutaction, ;
DreamFactory Security Guide
DreamFactory Security Guide This white paper is designed to provide security information about DreamFactory. The sections below discuss the inherently secure characteristics of the platform and the explicit
More informationCookies, sessions and authentication
Cookies, sessions and authentication TI1506: Web and Database Technology Claudia Hauff! Lecture 7 [Web], 2014/15 1 Course overview [Web] 1. http: the language of Web communication 2. Web (app) design &
More informationBack-end architecture
Back-end architecture Tiberiu Vilcu Prepared for EECS 411 Sugih Jamin 2 January 2018 https://education.github.com/pack 1 2 Outline HTTP 1. HTTP and useful web tools 2. Designing APIs 3. Back-end services
More informationCertified Secure Web Application Secure Development Checklist
www.certifiedsecure.com info@certifiedsecure.com Tel.: +31 (0)70 310 13 40 Loire 128-A 2491 AJ The Hague The Netherlands About Certified Secure Checklist Certified Secure exists to encourage and fulfill
More informationOverview of BC Learning Network SMS2 Introduction
Overview of BC Learning Network SMS2 Introduction This guide is designed to be a cumulative overview of the SMS2 web application. SMS2 is a student management system which integrates with Moodle, a learning
More informationNode.js. Node.js Overview. CS144: Web Applications
Node.js Node.js Overview JavaScript runtime environment based on Chrome V8 JavaScript engine Allows JavaScript to run on any computer JavaScript everywhere! On browsers and servers! Intended to run directly
More informationPersistence. SWE 432, Fall 2017 Design and Implementation of Software for the Web
Persistence SWE 432, Fall 2017 Design and Implementation of Software for the Web Today Demo: Promises and Timers What is state in a web application? How do we store it, and how do we choose where to store
More informationBitnami MEAN for Huawei Enterprise Cloud
Bitnami MEAN for Huawei Enterprise Cloud Description Bitnami MEAN Stack provides a complete development environment for mongodb and Node.js that can be deployed in one click. It includes the latest stable
More informationFull Stack boot camp
Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building
More informationGuides SDL Server Documentation Document current as of 05/24/ :13 PM.
Guides SDL Server Documentation Document current as of 05/24/2018 04:13 PM. Overview This document provides the information for creating and integrating the SmartDeviceLink (SDL) server component with
More informationThis tutorial is meant for software developers who want to learn how to lose less time on API integrations!
CloudRail About the Tutorial CloudRail is an API integration solution that speeds up the process of integrating third-party APIs into an application and maintaining them. It does so by providing libraries
More informationFrom the Beginning: Your First Node.js Web Service
From the Beginning: Your First Node.js Web Service P. Venkatramen Data Access Development Oracle Database 10 April 2018 Copyright 2017, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement
More informationIERG 4210 Tutorial 08
IERG 4210 Tutorial 08 Securing web page (II): - In principle: Cookie related security issues - In practice: Point by point checklist for Phase 4A Shizhan Zhu Logistics Content for today: Provide sample
More informationMicroservices with Node.js
Microservices with Node.js Objectives In this module we will discuss: Core Node.js concepts Node Package Manager (NPM) The Express Node.js package The MEAN stack 1.1 What is Node.js? Node.js [ https://nodejs.org/
More informationWhat is Node.js? Tim Davis Director, The Turtle Partnership Ltd
What is Node.js? Tim Davis Director, The Turtle Partnership Ltd About me Co-founder of The Turtle Partnership Working with Notes and Domino for over 20 years Working with JavaScript technologies and frameworks
More informationAlteryx Technical Overview
Alteryx Technical Overview v 1.5, March 2017 2017 Alteryx, Inc. v1.5, March 2017 Page 1 Contents System Overview... 3 Alteryx Designer... 3 Alteryx Engine... 3 Alteryx Service... 5 Alteryx Scheduler...
More informationNETWRIX GROUP POLICY CHANGE REPORTER
NETWRIX GROUP POLICY CHANGE REPORTER ADMINISTRATOR S GUIDE Product Version: 7.2 November 2012. Legal Notice The information in this publication is furnished for information use only, and does not constitute
More informationIERG 4210 Tutorial 07. Securing web page (I): login page and admin user authentication Shizhan Zhu
IERG 4210 Tutorial 07 Securing web page (I): login page and admin user authentication Shizhan Zhu Content for today Phase 4 preview From now please pay attention to the security issue of your website This
More informationAutomation with Meraki Provisioning API
DEVNET-2120 Automation with Meraki Provisioning API Courtney M. Batiste, Solutions Architect- Cisco Meraki Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1.
More informationFirst Step Into Cloud
First Step Into Cloud Aaron Bartell Director of IBM i Innovation Copyright 2015 Aaron Bartell albartell@krengeltech.com Solutions for the Modern IBM i Developer RPG, XML, & Web Services Featured Product:
More informationPega Co-Browse. Installation Guide 7.4
Pega Co-Browse Installation Guide 7.4 2018 Pegasystems Inc., Cambridge, MA All rights reserved. Trademarks For Pegasystems Inc. trademarks and registered trademarks, all rights reserved. All other trademarks
More informationLGTM Enterprise System Requirements. Release , August 2018
Release 1.17.2, August 2018 Semmle Inc 180 Sansome St San Francisco, CA 94104 Copyright 2018, Semmle Ltd. All rights reserved. LGTM Enterprise release 1.17.2 Document published August 30, 2018 Contents
More informationDCLI User's Guide. Data Center Command-Line Interface
Data Center Command-Line Interface 2.10.2 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments about this documentation, submit
More informationARCHITECTURE GUIDE. Campaign Manager 6.0
ARCHITECTURE GUIDE Campaign Manager 6.0 VERSION CONTROL Version Date Author Changes 1.0 28 April 2017 D Cooper Release RELATED DOCUMENTS The related documents are located in the Alterian product help.
More informationAnsible Tower Quick Setup Guide
Ansible Tower Quick Setup Guide Release Ansible Tower 2.4.5 Red Hat, Inc. Jun 06, 2017 CONTENTS 1 Quick Start 2 2 Login as a Superuser 3 3 Import a License 4 4 Examine the Tower Dashboard 6 5 The Setup
More informationDeveloping ASP.NET MVC Web Applications (486)
Developing ASP.NET MVC Web Applications (486) Design the application architecture Plan the application layers Plan data access; plan for separation of concerns, appropriate use of models, views, controllers,
More informationTRAINING GUIDE. Lucity Web Services APIs
TRAINING GUIDE Lucity Web Services APIs Lucity Web Services APIs Lucity offers several web service APIs. This guide covers the Lucity Citizen Portal API as well as the. Contents How it Works... 2 Basics...
More informationCertified Secure Web Application Security Test Checklist
www.certifiedsecure.com info@certifiedsecure.com Tel.: +31 (0)70 310 13 40 Loire 128-A 2491 AJ The Hague The Netherlands Certified Secure Checklist About Certified Secure exists to encourage and fulfill
More informationMEAN Stack. 1. Introduction. 2. Foundation a. The Node.js framework b. Installing Node.js c. Using Node.js to execute scripts
MEAN Stack 1. Introduction 2. Foundation a. The Node.js framework b. Installing Node.js c. Using Node.js to execute scripts 3. Node Projects a. The Node Package Manager b. Creating a project c. The package.json
More informationVMware AirWatch Content Gateway for Linux. VMware Workspace ONE UEM 1811 Unified Access Gateway
VMware AirWatch Content Gateway for Linux VMware Workspace ONE UEM 1811 Unified Access Gateway You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/
More informationCPM. Quick Start Guide V2.4.0
CPM Quick Start Guide V2.4.0 1 Content 1 Introduction... 3 Launching the instance... 3 CloudFormation... 3 CPM Server Instance Connectivity... 3 2 CPM Server Instance Configuration... 4 CPM Server Configuration...
More informationTTerm Connect Installation Guide
Host Connectivity. Any Host, Any Device. TTerm Connect Installation Guide What is TTerm Connect? TTerm Connect is Turbosoft s web based terminal emulator. Built on common web technologies such as HTML5,
More informationCS193X: Web Programming Fundamentals
CS193X: Web Programming Fundamentals Spring 2017 Victoria Kirst (vrk@stanford.edu) CS193X schedule Today - Middleware and Routes - Single-page web app - More MongoDB examples - Authentication - Victoria
More informationCPM Quick Start Guide V2.2.0
CPM Quick Start Guide V2.2.0 1 Content 1 Introduction... 3 1.1 Launching the instance... 3 1.2 CPM Server Instance Connectivity... 3 2 CPM Server Instance Configuration... 3 3 Creating a Simple Backup
More informationGuides SDL Server Documentation Document current as of 04/06/ :35 PM.
Guides SDL Server Documentation Document current as of 04/06/2018 02:35 PM. Overview This document provides the information for creating and integrating the SmartDeviceLink (SDL) server component with
More informationNasuni Data API Nasuni Corporation Boston, MA
Nasuni Corporation Boston, MA Introduction The Nasuni API has been available in the Nasuni Filer since September 2012 (version 4.0.1) and is in use by hundreds of mobile clients worldwide. Previously,
More informationUpland Qvidian Proposal Automation Single Sign-on Administrator's Guide
Upland Qvidian Proposal Automation Single Sign-on Administrator's Guide Version 12.0-4/17/2018 Copyright Copyright 2018 Upland Qvidian. All rights reserved. Information in this document is subject to change
More informationPersistence & State. SWE 432, Fall 2016 Design and Implementation of Software for the Web
Persistence & State SWE 432, Fall 2016 Design and Implementation of Software for the Web Today What s state for our web apps? How do we store it, where do we store it, and why there? For further reading:
More informationLibelium Cloud Hive. Technical Guide
Libelium Cloud Hive Technical Guide Index Document version: v7.0-12/2018 Libelium Comunicaciones Distribuidas S.L. INDEX 1. General and information... 4 1.1. Introduction...4 1.1.1. Overview...4 1.2. Data
More informationEarly Data Analyzer Web User Guide
Early Data Analyzer Web User Guide Early Data Analyzer, Version 1.4 About Early Data Analyzer Web Getting Started Installing Early Data Analyzer Web Opening a Case About the Case Dashboard Filtering Tagging
More information(System) Integrity attacks System Abuse, Malicious File upload, SQL Injection
Pattern Recognition and Applications Lab (System) Integrity attacks System Abuse, Malicious File upload, SQL Injection Igino Corona igino.corona (at) diee.unica.it Computer Security April 9, 2018 Department
More informationmaxecurity Product Suite
maxecurity Product Suite Domain Administrator s Manual Firmware v2.2 ii Table of Contents BASICS... 1 Understanding how maxecurity products work in your company... 1 Getting started as a Domain Administrator...
More informationAbout 1. Chapter 1: Getting started with odata 2. Remarks 2. Examples 2. Installation or Setup 2. Odata- The Best way to Rest 2
odata #odata Table of Contents About 1 Chapter 1: Getting started with odata 2 Remarks 2 Examples 2 Installation or Setup 2 Odata- The Best way to Rest 2 Chapter 2: Azure AD authentication for Node.js
More informationMongoDB Web Architecture
MongoDB Web Architecture MongoDB MongoDB is an open-source, NoSQL database that uses a JSON-like (BSON) document-oriented model. Data is stored in collections (rather than tables). - Uses dynamic schemas
More informationTopic 15: Authentication
Topic 15: Authentication CITS3403 Agile Web Development Getting MEAN with Mongo, Express, Angular and Node, Chapter 11 Semester 1, 2018 Secure web apps Security is a primary concern for anyone developing
More informationSAML-Based SSO Configuration
Prerequisites, page 1 SAML SSO Configuration Task Flow, page 5 Reconfigure OpenAM SSO to SAML SSO Following an Upgrade, page 9 SAML SSO Deployment Interactions and Restrictions, page 9 Prerequisites NTP
More informationNasuni Data API Nasuni Corporation Boston, MA
Nasuni Corporation Boston, MA Introduction The Nasuni API has been available in the Nasuni Filer since September 2012 (version 4.0.1) and is in use by hundreds of mobile clients worldwide. Previously,
More informationAirBespoke Inventory Tracking System
Colorado School of Mines Field Session AirBespoke Inventory Tracking System Client: Kylen McClintock Written by: Peter Palumbo, Kyle Thistlewood, Nhan Tran, Minh Vu June 22, 2016 Contents 1 Introduction
More informationRed Hat Quay 2.9 Deploy Red Hat Quay - Basic
Red Hat Quay 2.9 Deploy Red Hat Quay - Basic Deploy Red Hat Quay Last Updated: 2018-09-14 Red Hat Quay 2.9 Deploy Red Hat Quay - Basic Deploy Red Hat Quay Legal Notice Copyright 2018 Red Hat, Inc. The
More informationZipRecruiter Apply Webhook Documentation. ZR ATS Integration Team. Version 1.1,
ZipRecruiter Apply Webhook Documentation ZR ATS Integration Team Version 1.1, 2017-10-12 Table of Contents Introduction................................................................................ 1
More informationDCLI User's Guide. Modified on 20 SEP 2018 Data Center Command-Line Interface
Modified on 20 SEP 2018 Data Center Command-Line Interface 2.10.0 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments about
More informationDCLI User's Guide. Data Center Command-Line Interface 2.9.1
Data Center Command-Line Interface 2.9.1 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments about this documentation, submit
More informationSingle Sign-On for PCF. User's Guide
Single Sign-On for PCF Version 1.2 User's Guide 2018 Pivotal Software, Inc. Table of Contents Table of Contents Single Sign-On Overview Installation Getting Started with Single Sign-On Manage Service Plans
More informationTableau Server - 101
Tableau Server - 101 Prepared By: Ojoswi Basu Certified Tableau Consultant LinkedIn: https://ca.linkedin.com/in/ojoswibasu Introduction Tableau Software was founded on the idea that data analysis and subsequent
More informationAuthentication and Authorization of End User in Microservice Architecture
Journal of Physics: Conference Series PAPER OPEN ACCESS Authentication and Authorization of End User in Microservice Architecture To cite this article: Xiuyu He and Xudong Yang 2017 J. Phys.: Conf. Ser.
More informationRelease notes for version 3.9.2
Release notes for version 3.9.2 What s new Overview Here is what we were focused on while developing version 3.9.2, and a few announcements: Continuing improving ETL capabilities of EasyMorph by adding
More informationCLEO VLTrader Made Simple Guide
CLEO VLTrader Made Simple Guide Table of Contents Quick Reference... 3 Miscellaneous Technical Notes... 3 CLEO VLTrader at a Glance... 3 Introduction... 5 Application Page Layout... 5 Preconfigured Hosts...
More informationEveBox Documentation. Release. Jason Ish
EveBox Documentation Release Jason Ish Jan 25, 2018 Contents: 1 Installation 1 2 Server 3 2.1 Running................................................. 3 2.2 Oneshot Mode..............................................
More informationBitnami Node.js for Huawei Enterprise Cloud
Bitnami Node.js for Huawei Enterprise Cloud Description Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. It uses an event-driven, non-blocking
More informationF5 BIG-IP Access Policy Manager: SAML IDP
Agility 2018 Hands-on Lab Guide F5 BIG-IP Access Policy Manager: SAML IDP F5 Networks, Inc. 2 Contents: 1 Welcome 5 2 Class 1: SAML Identity Provider (IdP) Lab 7 2.1 Lab Topology & Environments...................................
More informationGetting MEAN. with Mongo, Express, Angular, and Node SIMON HOLMES MANNING SHELTER ISLAND
Getting MEAN with Mongo, Express, Angular, and Node SIMON HOLMES MANNING SHELTER ISLAND For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher
More informationSAML-Based SSO Configuration
Prerequisites, page 1 SAML SSO Configuration Workflow, page 5 Reconfigure OpenAM SSO to SAML SSO After an Upgrade, page 9 Prerequisites NTP Setup In SAML SSO, Network Time Protocol (NTP) enables clock
More informationFull Stack Web Developer Nanodegree Syllabus
Full Stack Web Developer Nanodegree Syllabus Build Complex Web Applications Before You Start Thank you for your interest in the Full Stack Web Developer Nanodegree! In order to succeed in this program,
More informationSchool of Computing Science Gitlab Platform - User Notes
School of Computing Science Gitlab Platform - User Notes Contents Using Git & Gitlab... 1 Introduction... 1 Access Methods... 2 Web Access... 2 Repository Access... 2 Creating a key pair... 2 Adding a
More informationUsing the VMware vcenter Orchestrator Client. vrealize Orchestrator 5.5.1
Using the VMware vcenter Orchestrator Client vrealize Orchestrator 5.5.1 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments
More informationScan Report Executive Summary. Part 2. Component Compliance Summary Component (IP Address, domain, etc.):
Scan Report Executive Summary Part 1. Scan Information Scan Customer Company: Date scan was completed: Vin65 ASV Company: Comodo CA Limited 02/18/2018 Scan expiration date: 05/19/2018 Part 2. Component
More informationSystem and Software Architecture Description (SSAD)
System and Software Architecture Description (SSAD) Perfecto Coffee Xpress Consistent Perfection Team 5 Chloe Good Yekaterina Glazko Edwards Hays Yucheng Hsieh Atreya Lahiri Jaimin Patel Yun Shen Andrew
More informationNoSQL & Firebase. SWE 432, Fall Web Application Development
NoSQL & Firebase SWE 432, Fall 2018 Web Application Development Review: Nouns vs. Verbs URIs should hierarchically identify nouns describing resources that exist Verbs describing actions that can be taken
More informationRESTful API Design APIs your consumers will love
RESTful API Design APIs your consumers will love Matthias Biehl RESTful API Design Copyright 2016 by Matthias Biehl All rights reserved, including the right to reproduce this book or portions thereof in
More informationCOMP 2406: Fundamentals of Web Applications. Fall 2013 Mid-Term Exam Solutions
COMP 2406: Fundamentals of Web Applications Fall 2013 Mid-Term Exam Solutions 1. ( false ) HTTP cookies are only sent to a web server when explicitly requested. 2. ( false ) Cookies are normally parsed
More informationVMware Identity Manager Administration
VMware Identity Manager Administration VMware Identity Manager 2.4 This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new
More informationA Simple Course Management Website
A Simple Course Management Website A Senior Project Presented to The Faculty of the Computer Engineering Department California Polytechnic State University, San Luis Obispo In Partial Fulfillment Of the
More informationAttacks Against Websites 3 The OWASP Top 10. Tom Chothia Computer Security, Lecture 14
Attacks Against Websites 3 The OWASP Top 10 Tom Chothia Computer Security, Lecture 14 OWASP top 10. The Open Web Application Security Project Open public effort to improve web security: Many useful documents.
More informationApplication Security Introduction. Tara Gu IBM Product Security Incident Response Team
Application Security Introduction Tara Gu IBM Product Security Incident Response Team About Me - Tara Gu - tara.weiqing@gmail.com - Duke B.S.E Biomedical Engineering - Duke M.Eng Computer Engineering -
More informationUsing the VMware vrealize Orchestrator Client
Using the VMware vrealize Orchestrator Client vrealize Orchestrator 7.0 This document supports the version of each product listed and supports all subsequent versions until the document is replaced by
More informationLab 2 Third Party API Integration, Cloud Deployment & Benchmarking
Lab 2 Third Party API Integration, Cloud Deployment & Benchmarking In lab 1, you have setup the web framework and the crawler. In this lab, you will complete the deployment flow for launching a web application
More informationWHITE PAPER. Authentication and Encryption Design
WHITE PAPER Authentication and Encryption Design Table of Contents Introduction Applications and Services Account Creation Two-step Verification Authentication Passphrase Management Email Message Encryption
More informationDeveloping Microsoft Azure Solutions (70-532) Syllabus
Developing Microsoft Azure Solutions (70-532) Syllabus Cloud Computing Introduction What is Cloud Computing Cloud Characteristics Cloud Computing Service Models Deployment Models in Cloud Computing Advantages
More informationReference Requirements for Records and Documents Management
Reference Requirements for Records and Documents Management Ricardo Jorge Seno Martins ricardosenomartins@gmail.com Instituto Superior Técnico, Lisboa, Portugal May 2015 Abstract When information systems
More informationInstalling and Configuring VMware Identity Manager Connector (Windows) OCT 2018 VMware Identity Manager VMware Identity Manager 3.
Installing and Configuring VMware Identity Manager Connector 2018.8.1.0 (Windows) OCT 2018 VMware Identity Manager VMware Identity Manager 3.3 You can find the most up-to-date technical documentation on
More informationNETWRIX ACTIVE DIRECTORY CHANGE REPORTER
NETWRIX ACTIVE DIRECTORY CHANGE REPORTER ADMINISTRATOR S GUIDE Product Version: 7.2 January 2013. Legal Notice The information in this publication is furnished for information use only, and does not constitute
More informationTalend Component tgoogledrive
Talend Component tgoogledrive Purpose and procedure This component manages files on a Google Drive. The component provides these capabilities: 1. Providing only the client for other tgoogledrive components
More informationBitnami OSQA for Huawei Enterprise Cloud
Bitnami OSQA for Huawei Enterprise Cloud Description OSQA is a question and answer system that helps manage and grow online communities similar to Stack Overflow. First steps with the Bitnami OSQA Stack
More informationRelease Notes. NetBrain Integrated Edition 7.0
NetBrain Integrated Edition 7.0 Release Notes Version 7.0b1 Last Updated 2017-11-22 Copyright 2004-2017 NetBrain Technologies, Inc. All rights reserved. Contents 1. Highlights... 3 2. Feature Summary...
More informationInland Revenue. Build Pack. Identity and Access Services. Date: 04/09/2017 Version: 1.5 IN CONFIDENCE
Inland Revenue Build Pack Identity and Access Services Date: 04/09/2017 Version: 1.5 IN CONFIDENCE About this Document This document is intended to provide Service Providers with the technical detail required
More informationUser Manual. Admin Report Kit for IIS 7 (ARKIIS)
User Manual Admin Report Kit for IIS 7 (ARKIIS) Table of Contents 1 Admin Report Kit for IIS 7... 1 1.1 About ARKIIS... 1 1.2 Who can Use ARKIIS?... 1 1.3 System requirements... 2 1.4 Technical Support...
More informationPAS for OpenEdge Support for JWT and OAuth Samples -
PAS for OpenEdge Support for JWT and OAuth 2.0 - Samples - Version 1.0 November 21, 2017 Copyright 2017 and/or its subsidiaries or affiliates. All Rights Reserved. 2 TABLE OF CONTENTS INTRODUCTION... 3
More informationMicrosoft Unified Access Gateway 2010
RSA SecurID Ready Implementation Guide Partner Information Last Modified: March 26, 2013 Product Information Partner Name Web Site Product Name Version & Platform Product Description Microsoft www.microsoft.com
More informationSymantec Mobile Management for Configuration Manager 7.2 MR1 Release Notes
Symantec Mobile Management for Configuration Manager 7.2 MR1 Release Notes Symantec Mobile Management for Configuration Manager 7.2 MR1 Release Notes This document includes the following topics: About
More informationVodafone Secure Device Manager Administration User Guide
Vodafone Secure Device Manager Administration User Guide Vodafone New Zealand Limited. Correct as of June 2017. Vodafone Ready Business Contents Introduction 3 Help 4 How to find help in the Vodafone Secure
More informationSmashing Node.JS: JavaScript Everywhere
Smashing Node.JS: JavaScript Everywhere Rauch, Guillermo ISBN-13: 9781119962595 Table of Contents PART I: GETTING STARTED: SETUP AND CONCEPTS 5 Chapter 1: The Setup 7 Installing on Windows 8 Installing
More informationManagement Tools. Management Tools. About the Management GUI. About the CLI. This chapter contains the following sections:
This chapter contains the following sections:, page 1 About the Management GUI, page 1 About the CLI, page 1 User Login Menu Options, page 2 Customizing the GUI and CLI Banners, page 3 REST API, page 3
More informationEveBox Documentation. Jason Ish
Jason Ish May 29, 2018 Contents: 1 Installation 1 2 Server 3 2.1 Running................................................. 3 2.2 Oneshot Mode.............................................. 4 2.3 Authentication..............................................
More informationThe Salesforce Migration Playbook
The Salesforce Migration Playbook By Capstorm Table of Contents Salesforce Migration Overview...1 Step 1: Extract Data Into A Staging Environment...3 Step 2: Transform Data Into the Target Salesforce Schema...5
More informationIBM Endpoint Manager Version 9.0. Software Distribution User's Guide
IBM Endpoint Manager Version 9.0 Software Distribution User's Guide IBM Endpoint Manager Version 9.0 Software Distribution User's Guide Note Before using this information and the product it supports,
More informationIng. José A. Mejía Villar M.Sc. Computing Center of the Alfred Wegener Institute for Polar and Marine Research
Ing. José A. Mejía Villar M.Sc. jmejia@awi.de Computing Center of the Alfred Wegener Institute for Polar and Marine Research 29. November 2011 Contents 1. Fedora Commons Repository 2. Federico 3. Federico's
More informationIntegration Service. Admin Console User Guide. On-Premises
Kony MobileFabric TM Integration Service Admin Console User Guide On-Premises Release 7.3 Document Relevance and Accuracy This document is considered relevant to the Release stated on this title page and
More informationMASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M
MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M COURSE OBJECTIVES Enable participants to develop a complete web application from the scratch that includes
More informationThe Now Platform Reference Guide
The Now Platform Reference Guide A tour of key features and functionality START Introducing the Now Platform Digitize your business with intelligent apps The Now Platform is an application Platform-as-a-Service
More informationZumobi Brand Integration(Zbi) Platform Architecture Whitepaper Table of Contents
Zumobi Brand Integration(Zbi) Platform Architecture Whitepaper Table of Contents Introduction... 2 High-Level Platform Architecture Diagram... 3 Zbi Production Environment... 4 Zbi Publishing Engine...
More information