Clean Code in Small Companies

Size: px
Start display at page:

Download "Clean Code in Small Companies"

Transcription

1 Clean Code in Small Companies

2

3 Stock photo, not actual developer

4 Stock photo, not actual developer

5

6 Stock photo, not actual developer

7 Robert C. Martin Uncle Bob

8

9 1. Reading code is hard

10 1. Reading code is hard 2. We all have to read code

11 1. Reading code is hard 2. We all have to read code 3. Surprises are bad

12 Code in these Slides

13 $iamavariable

14 class UserController extends Controller { Class name Parent class name

15 class UserController extends Controller { private $membervariable; Access modifier

16 class UserController extends Controller { public function somemethod( Request $request ) { Method name Parameter type hint

17

18 A few words on testing... More on this later

19 class UserController { public function construct( UserBusinessLogic $userbusinesslogic ) {

20 function testregistration() {

21 function testregistration() { $userbusinesslogic = new UserBusinessLogicFake();

22 function testregistration() { $userbusinesslogic = new UserBusinessLogicFake(); $usercontroller = new UserController( $userbusinesslogic );

23 function testregistration() { $userbusinesslogic = new UserBusinessLogicFake(); $usercontroller = new UserController( $userbusinesslogic ); //Test the user controller

24 Dependency Injection Don t look for things!

25 class UserController extends Controller { /** name="user_account") */ public function accountaction(request $request) { if ( $this->container ->get('security.authorization_checker') ->isgranted('role_super_admin') ) { return $this->redirecttoroute('admin_dashboard'); // Other stuff here

26 class UserController extends Controller { /** name="user_account") */ public function accountaction(request $request) { if ( $this->container ->get('security.authorization_checker') ->isgranted('role_super_admin') ) { return $this->redirecttoroute('admin_dashboard'); // Other stuff here

27 $this->container ->get('security.authorization_checker') ->isgranted('role_super_admin')

28 $this->container ->get('security.authorization_checker') ->isgranted('role_super_admin')

29 $this->container ->get('security.authorization_checker') ->isgranted('role_super_admin')

30 $this->container ->get('security.authorization_checker') ->isgranted('role_super_admin')

31 UserController

32 UserController Magic?

33 UserController Magic? security.authorization_checker

34

35 class UserController extends Controller {

36 class UserController extends Controller {

37 class UserController { public function construct( ) {

38 class UserController { public function construct( SecurityAuthorizationChecker $securityauthorizationchecker ) {

39 class UserController { private $securityauthorizationchecker; public function construct( SecurityAuthorizationChecker $securityauthorizationchecker ) { $this->securityauthorizationchecker = $securityauthorizationchecker ;

40 class UserController { private $securityauthorizationchecker; public function construct( SecurityAuthorizationChecker $securityauthorizationchecker ) { $this-> securityauthorizationchecker = $securityauthorizationchecker; /** name="user_account") */ public function accountaction(request $request) { if ($this->securityauthorizationchecker->isgranted( 'ROLE_SUPER_ADMIN')) { return $this->redirecttoroute( 'admin_dashboard');

41 class UserController { private $securityauthorizationchecker; public function construct( SecurityAuthorizationChecker $securityauthorizationchecker ) { $this-> securityauthorizationchecker = $securityauthorizationchecker; /** name="user_account") */ public function accountaction(request $request) { if ($this->securityauthorizationchecker->isgranted( 'ROLE_SUPER_ADMIN')) { return $this->redirecttoroute( 'admin_dashboard');

42 Dependency Injectors Moving the Magic out of your Program

43 UserController UserBusinessLogic UserStorage

44 class UserController { public function construct( UserBusinessLogic $userbusinesslogic ) {

45 class UserController { public function construct( UserBusinessLogic $userbusinesslogic ) { class UserBusinessLogic { public function construct( UserStorage $userstorage ) {

46 class UserController { public function construct( UserBusinessLogic $userbusinesslogic ) { class UserBusinessLogic { public function construct( UserStorage $userstorage ) { class UserStorage {

47 $uc = new UserController( new UserBusinessLogic( new UserStorage() ) );

48 $injector = new Injector();

49 $injector = new Injector(); $uc = $injector->make(usercontroller::class);

50 class MySQLConnection { public function construct( string $server, string $username, string $password, string $db ) {

51 $injector->define(mysqlconnection::class, [ 'server' => 'localhost', 'user' => 'root', 'password' => 'changeme', 'db' => 'app' ]);

52 PHP: Auryn, Laravel Service Container, Symfony Service Container Java: Gource, Dagger, Dagger2, Opsbears Web Components DIC Python: dependency_injector Javascript: InversifyJS

53 class UserController extends Controller { /** name="user_account") */ public function accountaction(request $request) { if ( $this->container ->get('security.authorization_checker') ->isgranted('role_super_admin') ) { return $this->redirecttoroute('admin_dashboard'); // Other stuff here

54 class UserController extends Controller { /** name="user_account") */ public function accountaction(request $request) { if ( $this->container ->get('security.authorization_checker') ->isgranted('role_super_admin') ) { return $this->redirecttoroute('admin_dashboard'); // Other stuff here

55 class UserController extends Controller { /** name="user_account") */ public function accountaction(request $request) { if ( $this->injector ->make(securityauthorizationchecker::class) ->isgranted('role_super_admin') ) { return $this->redirecttoroute('admin_dashboard'); // Other stuff here

56 class UserController extends Controller { /** name="user_account") */ public function accountaction(request $request) { if ( $this->injector ->make(securityauthorizationchecker::class) ->isgranted('role_super_admin') ) { return $this->redirecttoroute('admin_dashboard'); // Other stuff here

57 Static Function Calls Might Be Bad For Your Code Quality

58 class UserController extends Controller { /** name="user_account") */ public function accountaction(request $request) { if ( $this->injector ->make(securityauthorizationchecker::class) ->isgranted('role_super_admin') ) { return $this->redirecttoroute('admin_dashboard'); // Other stuff here

59 class UserController extends Controller { /** name="user_account") */ public function accountaction(request $request) { if ( SecurityAuthorizationChecker ::isgranted('role_super_admin') ) { return $this->redirecttoroute('admin_dashboard'); // Other stuff here

60 $uc = new UserController();

61 Immutable Objects Avoiding Surprises

62 class User { private $id; public function setid($id) { $this->id = $id; public function getid() { return $this->id;

63 new User()

64 class User { private $id; public function setid($id) { $this->id = $id; public function getid() { return $this->id;

65 class User { private $id; public function setid($id) { $this->id = $id; public function getid() { return $this->id;

66 class User { private $id; public function construct($id) { $this->id = $id; public function getid() { return $this->id;

67 class UserStorage { private $users = []; public function store(user $user) { $this->users[$user->getid()] = $user;

68 class UserStorage { private $users = []; public function store(user $user) { $this->users[$user->getid()] = $user; public function retrieve($id) { if (isset($this->users[$id])) { return $this->users[$id]; else { throw new UserNotFoundException($id);

69 Less Code in One Class Your All-In-One Weightloss Program

70 class UserController { public function register() { public function search() { public function get() { public function update() { public function delete() {

71 Route::get( '/users', function ( ); ) { return 'User list';

72 Route::get( '/users', function ( UserBusinessLogic $userbusinesslogic ) { return 'User list'; );

73 class UserRegisterController { public function construct( UserBusinessLogic $userbusinesslogic ) { public function register() {

74 Static Typing Saves you from a **** ton of issues

75 function search( $needle, $haystack ) {

76 function search( string $needle, array $haystack ) {

77 JavaScript PHP Python Java Typescript phpstan mypy builtin

78 Strict Typing Because your String is not an Integer

79 PHP <?php declare(strict_types=1);

80 PHP <?php declare(strict_types=1); JavaScript Typescript

81 Structuring your Code Because your Code is not a Clown Car

82 /controller UserRegisterController.php UserListController.php /model /view

83 /user /controller UserRegisterController.php UserListController.php /business /storage /blog /controller /business /storage

84 Testing You test your code, right?

85 Application

86 User Interface Application

87 Test Code User Interface Application

88 Test Code User Interface Application Database Connector

89 Test Code User Interface Application Database Connector Test Database

90 Test Code User Interface Application Database Connector Test Database

91 Application

92 Test Code Application

93 Test Code Application Fake Database Connector

94 Test Code Application Fake Database Connector

95 Test Code User Interface Fake Application

96 function testgetshouldreturnuser(){ //region Setup $userstorage = new UserStorageFake(); $userstorage->backingstorage['test-user'] = UserFactory::create( "test-user", "Test User", "test@example.com", "*" ); $business = new UserGetBusinessLogicImpl($userStorage); //endregion //region Execute... //region Asset...

97 function testgetshouldreturnuser(){ //region Setup... //region Execute $user = $business->getbyid("test-user"); //endregion //region Assert assertequals("test-user", $user->getid()); //endregion

98 Putting it together Building an actual system

99 Many thanks to: Cristina Laskar

100

101

102

103 Single Page Application HTTP API Business Logic Storage MySQL or HSQLDB

104 Single Page Application HTTP Routing / Object Decoding API Business Logic Storage DataMapper / ORM MySQL or HSQLDB

105

106 Non-technical Ways Customer Communication is Important

107 UX design

108 More information Because one talk is not enough

109

PHP: Databases and Classes. CS174. Chris Pollett. Sep 29, 2008.

PHP: Databases and Classes. CS174. Chris Pollett. Sep 29, 2008. PHP: Databases and Classes. CS174. Chris Pollett. Sep 29, 2008. Outline. Databases. Classes. Connecting to MySQL from PHP. To start a connect to a MySQL database one can issue the command: $db = mysql_connect();

More information

Lyna Framework Documentation

Lyna Framework Documentation Lyna Framework Documentation Release 0.1 Nicolas Bounoughaz June 12, 2015 Contents 1 Features 3 2 Contribute 5 3 Support 7 4 License 9 5 Get started 11 5.1 Installation................................................

More information

Introduction to MySQL. Database Systems

Introduction to MySQL. Database Systems Introduction to MySQL Database Systems 1 Agenda Bureaucracy Database architecture overview SSH Tunneling Intro to MySQL Comments on homework 2 Homework #1 Submission date is on the website.. (No late arrivals

More information

5. Application Layer. Introduction

5. Application Layer. Introduction Book Preview This is a sample chapter of Professional PHP - Building maintainable and secure applications. The book starts with a few theory chapters and after that it is structured as a tutorial. The

More information

PHP: Cookies, Sessions, Databases. CS174. Chris Pollett. Sep 24, 2008.

PHP: Cookies, Sessions, Databases. CS174. Chris Pollett. Sep 24, 2008. PHP: Cookies, Sessions, Databases. CS174. Chris Pollett. Sep 24, 2008. Outline. How cookies work. Cookies in PHP. Sessions. Databases. Cookies. Sometimes it is useful to remember a client when it comes

More information

Documentation for PHP ORMapper. version 2.0

Documentation for PHP ORMapper. version 2.0 Documentation for PHP ORMapper version 2.0 Table of Contents Licensing...3 Requirements and installation...4 The Author...4 The Classes...5 Code examples...7 Licensing This project is released under the

More information

Announcements. PS 3 is out (see the usual place on the course web) Be sure to read my notes carefully Also read. Take a break around 10:15am

Announcements. PS 3 is out (see the usual place on the course web) Be sure to read my notes carefully Also read. Take a break around 10:15am Announcements PS 3 is out (see the usual place on the course web) Be sure to read my notes carefully Also read SQL tutorial: http://www.w3schools.com/sql/default.asp Take a break around 10:15am 1 Databases

More information

Introduction to MySQL. Database Systems

Introduction to MySQL. Database Systems Introduction to MySQL Database Systems 1 Agenda Bureaucracy Database architecture overview Buzzwords SSH Tunneling Intro to MySQL Comments on homework 2 Homework #1 Submission date is on the website..

More information

Instructor s Notes Web Data Management Web Client/Server Concepts. Web Data Management Web Client/Server Concepts

Instructor s Notes Web Data Management Web Client/Server Concepts. Web Data Management Web Client/Server Concepts Instructor s Web Data Management Web Client/Server Concepts Web Data Management 152-155 Web Client/Server Concepts Quick Links & Text References Client / Server Concepts Pages 4 11 Web Data Mgt Software

More information

Laravel: From Apprentice To Artisan

Laravel: From Apprentice To Artisan Laravel: From Apprentice To Artisan Advanced Architecture With Laravel 4 Taylor Otwell This book is for sale at http://leanpub.com/laravel This version was published on 2013-09-04 This is a Leanpub book.

More information

I n p u t. This time. Security. Software. sanitization ); drop table slides. Continuing with. Getting insane with. New attacks and countermeasures:

I n p u t. This time. Security. Software. sanitization ); drop table slides. Continuing with. Getting insane with. New attacks and countermeasures: This time Continuing with Software Security Getting insane with I n p u t sanitization ); drop table slides New attacks and countermeasures: SQL injection Background on web architectures A very basic web

More information

Programming for the Web with PHP

Programming for the Web with PHP Aptech Ltd Version 1.0 Page 1 of 11 Table of Contents Aptech Ltd Version 1.0 Page 2 of 11 Abstraction Anonymous Class Apache Arithmetic Operators Array Array Identifier arsort Function Assignment Operators

More information

CSC System Development with Java. Database Connection. Department of Statistics and Computer Science. Budditha Hettige

CSC System Development with Java. Database Connection. Department of Statistics and Computer Science. Budditha Hettige CSC 308 2.0 System Development with Java Database Connection Budditha Hettige Department of Statistics and Computer Science Budditha Hettige 1 From database to Java There are many brands of database: Microsoft

More information

WEB SECURITY: SQL INJECTION

WEB SECURITY: SQL INJECTION WEB SECURITY: SQL INJECTION CMSC 414 FEB 15 2018 A very basic web architecture Client Server A very basic web architecture Client Server A very basic web architecture Client Server A very basic web architecture

More information

Large Scale MySQL Migration

Large Scale MySQL Migration to PostgreSQL! May 17, 2012 Content 1 Presentation Former Architecture A Wind of Change 2 PostgreSQL Architecture 3 4 In production Any question? Content 1 Presentation Former Architecture A Wind of Change

More information

IELM 511 Information Systems Design Labs 5 and 6. DB creation and Population

IELM 511 Information Systems Design Labs 5 and 6. DB creation and Population IELM 511 Information Systems Design Labs 5 and 6. DB creation and Population In this lab, your objective is to learn the basics of creating and managing a DB system. One way to interact with the DBMS (MySQL)

More information

MySQL: Access Via PHP

MySQL: Access Via PHP MySQL: Access Via PHP CISC 282 November 15, 2017 phpmyadmin: Login http://cisc282.caslab. queensu.ca/phpmyadmin/ Use your NetID and CISC 282 password to log in 2 phpmyadmin: Select DB Clicking on this

More information

L6 Application Programming. Thibault Sellam Fall 2018

L6 Application Programming. Thibault Sellam Fall 2018 L6 Application Programming Thibault Sellam Fall 2018 Topics Interfacing with applications Database APIs (DBAPIS) Cursors SQL!= Programming Language Not a general purpose programming language Tailored for

More information

Big Modular Java with Guice

Big Modular Java with Guice Big Modular Java with Guice Jesse Wilson Dhanji Prasanna May 28, 2009 Post your questions for this talk on Google Moderator: code.google.com/events/io/questions Click on the Tech Talks Q&A link. 2 How

More information

Develop Mobile Front Ends Using Mobile Application Framework A - 2

Develop Mobile Front Ends Using Mobile Application Framework A - 2 Develop Mobile Front Ends Using Mobile Application Framework A - 2 Develop Mobile Front Ends Using Mobile Application Framework A - 3 Develop Mobile Front Ends Using Mobile Application Framework A - 4

More information

Web Account Information

Web Account Information Web Account Information Google Admin Account, Webmaster Tools, and Analytics user: admin@aprepacademy.org pw: telle1314 Wordpress Back-End Login achievementprep.org/wp-admin username: admin password: B3th3Dr3am!

More information

CS108 Lecture 19: The Python DBAPI

CS108 Lecture 19: The Python DBAPI CS108 Lecture 19: The Python DBAPI Sqlite3 database Running SQL and reading results in Python Aaron Stevens 6 March 2013 What You ll Learn Today Review: SQL Review: the Python tuple sequence. How does

More information

Five Tips To Make Good Object- Oriented Code Better By Brandon Savage

Five Tips To Make Good Object- Oriented Code Better By Brandon Savage Five Tips To Make Good Object- Oriented Code Better By Brandon Savage Getting Started Welcome To The World Premiere! Who Am I? Who Am I? Resident of Washington, DC Freelancer and jobhunting PHP developer

More information

Silex and Twig. Jon Ginn

Silex and Twig. Jon Ginn Silex and Twig Jon Ginn Silex and Twig Jon Ginn Silex and Twig Alex Ross and Dave Hulbert Alex Dave @rossey Senior engineer at Base* @dave1010 Tech lead at Base* *we re hiring wearebase.com Alex Dave

More information

CS 520 Theory and Practice of Software Engineering Fall 2018

CS 520 Theory and Practice of Software Engineering Fall 2018 Logistics CS 520 Theory and Practice of Software Engineering Fall 2018 Best and worst programming practices September 11, 2018 Reminder Recap: software architecture vs. design Class website: https://people.cs.umass.edu/~brun/class/2018fall/cs520/

More information

Princess Nourah bint Abdulrahman University. Computer Sciences Department

Princess Nourah bint Abdulrahman University. Computer Sciences Department Princess Nourah bint Abdulrahman University Computer Sciences Department 1 And use http://www.w3schools.com/ PHP Part 3 Objectives Creating a new MySQL Database using Create & Check connection with Database

More information

COS 333: Advanced Programming Techniques. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University

COS 333: Advanced Programming Techniques. Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University COS 333: Advanced Programming Techniques Copyright 2017 by Robert M. Dondero, Ph.D. Princeton University 1 Agenda Introductions Course Overview Resources Topics Assignments Project (briefly) Schedule (briefly)

More information

Migration Tool. User Guide. SHOPIFY to MAGENTO. Copyright 2014 LitExtension.com. All Rights Reserved.

Migration Tool. User Guide. SHOPIFY to MAGENTO. Copyright 2014 LitExtension.com. All Rights Reserved. SHOPIFY to MAGENTO Migration Tool User Guide Copyright 2014 LitExtension.com. All Rights Reserved. Shopify to Magento Migration Tool: User Guide Page 1 Contents 1. Preparation... 3 2. Set-up... 3 3. Set-up...

More information

Android Best Practices

Android Best Practices Android Best Practices Agenda Introduction The clean architecture Testing Support library Libraries we can depend on What's next Introduction Introduction Android Studio Gradle Material Design Lollipop

More information

XMPP testing with Escalus

XMPP testing with Escalus . March 2, 2012 What is Escalus? Escalus is a library for acceptance testing XMPP servers. some code that makes doing certain things easier What is Escalus? Escalus is a library for acceptance testing

More information

CS 520 Theory and Practice of Software Engineering Fall 2017

CS 520 Theory and Practice of Software Engineering Fall 2017 Logistics CS 520 Theory and Practice of Software Engineering Fall 2017 Best and worst programming practices September 12, 2017 Recap: software architecture vs. design Recap: software architecture examples

More information

How to crack asp login page. How to crack asp login page.zip

How to crack asp login page. How to crack asp login page.zip How to crack asp login page How to crack asp login page.zip With an Office 365 subscription, you get the latest Office apps both the desktop and the online versions and updates when they happen. It's on

More information

A simple, scalable app architecture with Android Annotations Luke Sleeman Freelance Android developer lukesleeman.com.au

A simple, scalable app architecture with Android Annotations Luke Sleeman Freelance Android developer lukesleeman.com.au A simple, scalable app architecture with Android Annotations Luke Sleeman Freelance Android developer lukesleeman.com.au Image CC: https://flic.kr/p/6oqczb Luke Sleeman - Freelance developer specialising

More information

CS 520 Theory and Practice of Software Engineering Fall 2017

CS 520 Theory and Practice of Software Engineering Fall 2017 CS 520 Theory and Practice of Software Engineering Fall 2017 Best and worst programming practices September 12, 2017 Logistics Recap: software architecture vs. design Specification Architecture Development

More information

NET 311 INFORMATION SECURITY

NET 311 INFORMATION SECURITY NET 311 INFORMATION SECURITY Networks and Communication Department Lec12: Software Security / Vulnerabilities lecture contents: o Vulnerabilities in programs Buffer Overflow Cross-site Scripting (XSS)

More information

Chapter. Accessing MySQL Databases Using PHP

Chapter. Accessing MySQL Databases Using PHP Chapter 12 Accessing MySQL Databases Using PHP 150 Essential PHP fast Introduction In the previous chapter we considered how to create databases using MySQL. While this is useful, it does not enable us

More information

Development Technologies. Agenda: phpmyadmin 2/20/2016. phpmyadmin MySQLi. Before you can put your data into a table, that table should exist.

Development Technologies. Agenda: phpmyadmin 2/20/2016. phpmyadmin MySQLi. Before you can put your data into a table, that table should exist. CIT 736: Internet and Web Development Technologies Lecture 10 Dr. Lupiana, DM FCIM, Institute of Finance Management Semester 1, 2016 Agenda: phpmyadmin MySQLi phpmyadmin Before you can put your data into

More information

Programming Languages

Programming Languages CSE 130 : Spring 2011 Programming Languages Lecture 13: What s in a Name? Ranjit Jhala UC San Diego Next: What s in a name? More precisely: How should programmer think of data What does a variable x really

More information

Next: What s in a name? Programming Languages. Data model in functional PL. What s in a name? CSE 130 : Fall Lecture 13: What s in a Name?

Next: What s in a name? Programming Languages. Data model in functional PL. What s in a name? CSE 130 : Fall Lecture 13: What s in a Name? Next: What s in a name? CSE 13 : Fall 211 Programming Languages Lecture 13: What s in a Name? More precisely: How should programmer think of data What does a variable x really mean? Ranjit Jhala UC San

More information

More loops. Control structures / flow control. while loops. Loops / Iteration / doing things over and over and over and over...

More loops. Control structures / flow control. while loops. Loops / Iteration / doing things over and over and over and over... Control structures / flow control More loops while loops if... else Switch for loops while... do.. do... while... Much of this material is explained in PHP programming 2nd Ed. Chap 2 Control structures

More information

Understanding the Dark Side

Understanding the Dark Side Understanding the Dark Side An Analysis of Drupal (and Other!) Worst Practices Kristen Pol Understanding the Dark Side An Analysis of Drupal (and Other!) Worst Practices Kristen Pol Image Source: http://bit.ly/1pb9en9

More information

Platform Support Guide

Platform Support Guide Platform Support Guide with Technical Reference SR3 Jedox Platform Support Guide with Technical Reference SR3 Jedox AG Dated: 18-Mar-2014 Copyright Jedox AG Copyright Reserved. Reproduction including electronic

More information

PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017

PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017 PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON Alexander Lichter June 27, 2017 Content of this lesson 1. Recap 2. Composer 3. JSON 4. Collections (next lesson) 1 Recap Recap Recap Recap

More information

MySQL. The Right Database for GIS Sometimes

MySQL. The Right Database for GIS Sometimes MySQL The Right Database for GIS Sometimes Who am I? Web/GIS Software Engineer with Cimbura.com BS in IT, MGIS Michael Moore I like making and using tools (digital or physical) GIS Web Services I m most

More information

Security issues. Unit 27 Web Server Scripting Extended Diploma in ICT 2016 Lecture: Phil Smith

Security issues. Unit 27 Web Server Scripting Extended Diploma in ICT 2016 Lecture: Phil Smith Security issues Unit 27 Web Server Scripting Extended Diploma in ICT 2016 Lecture: Phil Smith Criteria D3 D3 Recommend ways to improve web security when using web server scripting Clean browser input Don

More information

A simple, scalable app architecture with Android annotations Luke Sleeman Freelance Android developer lukesleeman.com.au

A simple, scalable app architecture with Android annotations Luke Sleeman Freelance Android developer lukesleeman.com.au A simple, scalable app architecture with Android annotations Luke Sleeman Freelance Android developer lukesleeman.com.au Image CC: https://flic.kr/p/6oqczb Agenda Introduction The architecture - an overview

More information

WEB SECURITY WORKSHOP TEXSAW Presented by Solomon Boyd and Jiayang Wang

WEB SECURITY WORKSHOP TEXSAW Presented by Solomon Boyd and Jiayang Wang WEB SECURITY WORKSHOP TEXSAW 2014 Presented by Solomon Boyd and Jiayang Wang Introduction and Background Targets Web Applications Web Pages Databases Goals Steal data Gain access to system Bypass authentication

More information

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp So the main thing I want you to take away from this talk is... Please don t do it! Questions? Just kidding. The point

More information

Laravel and AngularJS

Laravel and AngularJS Laravel and AngularJS Learn how to build apps with AngularJS in the client and Laravel on server Daniel Schmitz and Daniel Pedrinha Georgii This book is for sale at http://leanpub.com/laravel-and-angularjs

More information

PHP. How Web Applications interact with server side databases CRUD. Connecting and using mysql from PHP PHP provides many mysql specific functions

PHP. How Web Applications interact with server side databases CRUD. Connecting and using mysql from PHP PHP provides many mysql specific functions PHP How Web Applications interact with server side databases CRUD Connecting and using mysql from PHP PHP provides many mysql specific functions mysql_connect mysql_select_db mysql_query mysql_fetch_array

More information

Version Control. Kyungbaek Kim. Chonnam National University School of Electronics and Computer Engineering. Original slides from James Brucker

Version Control. Kyungbaek Kim. Chonnam National University School of Electronics and Computer Engineering. Original slides from James Brucker Version Control Chonnam National University School of Electronics and Computer Engineering Kyungbaek Kim Original slides from James Brucker What is version control Manage documents over time Keep a history

More information

Vb Net Tutorial For Beginners Visual Studio 2010 Create Web Service

Vb Net Tutorial For Beginners Visual Studio 2010 Create Web Service Vb Net Tutorial For Beginners Visual Studio 2010 Create Web Service In this article I will explain a tutorial to create a simple Windows Service with sample Net Web Application using Visual Studio 2010

More information

IXP Manager Workshop. Grapher - Anatomy of a Request. Barry O Donovan - INEX 28th Euro-IX Forum April 24th 2016 Luxembourg

IXP Manager Workshop. Grapher - Anatomy of a Request. Barry O Donovan - INEX 28th Euro-IX Forum April 24th 2016 Luxembourg IXP Manager Workshop 28th Euro-IX Forum April 24th 2016 Luxembourg Grapher - Anatomy of a Request Barry O Donovan - INEX barry.odonovan@inex.ie Prologue This slide deck was originally presented by Barry

More information

THE IMPORTANCE OF NICHE TECHNOLOGIES IN BUSINESS ANALYSIS. - Kat Okwera Jan 2019

THE IMPORTANCE OF NICHE TECHNOLOGIES IN BUSINESS ANALYSIS. - Kat Okwera Jan 2019 THE IMPORTANCE OF NICHE TECHNOLOGIES IN BUSINESS ANALYSIS - Kat Okwera Jan 2019 HEY THERE I M A BA TOO! Kat Okwera Programmer Systems Designer Web Developer Project Manager Business Analyst E-Learning

More information

Hydra Installation Manual

Hydra Installation Manual Hydra Installation Manual Table of Contents 1. Introduction...1 2. Download...1 3. Configuration...1 4. Creating the Database...2 5. Importing WordNets...2 6. Known Issues...3 7. Detailed installation

More information

Demystifying Angular 2. SPAs for the Web of Tomorrow

Demystifying Angular 2. SPAs for the Web of Tomorrow Demystifying Angular 2 SPAs for the Web of Tomorrow Philipp Tarasiewicz, JavaLand, 08.03.2016 Web Dev / Distributed Systems 15 yr. About Me Philipp Tarasiewicz Consultant / Trainer / Developer philipp.tarasiewicz@googlemail.com

More information

An Introduction to JavaScript & Bootstrap Basic concept used in responsive website development Form Validation Creating templates

An Introduction to JavaScript & Bootstrap Basic concept used in responsive website development Form Validation Creating templates PHP Course Contents An Introduction to HTML & CSS Basic Html concept used in website development Creating templates An Introduction to JavaScript & Bootstrap Basic concept used in responsive website development

More information

APIs - what are they, really? Web API, Programming libraries, third party APIs etc

APIs - what are they, really? Web API, Programming libraries, third party APIs etc APIs - what are they, really? Web API, Programming libraries, third party APIs etc Different kinds of APIs Let s consider a Java application. It uses Java interfaces and classes. Classes and interfaces

More information

Sample Title. Magento 2 performance comparison in different environments. DevelopersParadise 2016 / Opatija / Croatia

Sample Title. Magento 2 performance comparison in different environments. DevelopersParadise 2016 / Opatija / Croatia Sample Title Magento 2 performance comparison in different environments Yaroslav Rogoza CTO - Atwix Fixing a bad (slow) code Software tweaks Hardware changes Bad code

More information

CSCE 548 Building Secure Software SQL Injection Attack

CSCE 548 Building Secure Software SQL Injection Attack CSCE 548 Building Secure Software SQL Injection Attack Professor Lisa Luo Spring 2018 Previous class DirtyCOW is a special type of race condition problem It is related to memory mapping We learned how

More information

PHP WITH ANGULAR CURRICULUM. What you will Be Able to Achieve During This Course

PHP WITH ANGULAR CURRICULUM. What you will Be Able to Achieve During This Course PHP WITH ANGULAR CURRICULUM What you will Be Able to Achieve During This Course This course will enable you to build real-world, dynamic web sites. If you've built websites using plain HTML, you realize

More information

CS317 File and Database Systems

CS317 File and Database Systems CS317 File and Database Systems http://dilbert.com/strips/comic/2010-01-18/ Lecture 14 Network Client Access to DBMS November 15, 2017 Sam Siewert Reminders PLEASE FILL OUT COURSE EVALUATIONS ON CANVAS

More information

EFFECTIVE CODE REVIEW DAVE LIDDAMENT

EFFECTIVE CODE REVIEW DAVE LIDDAMENT EFFECTIVE CODE REVIEW DAVE LIDDAMENT Dave Liddament @daveliddament Lamp Bristol 15+ years software development (PHP, Java, Python, C) Organise PHP-SW user group and Bristol PHP Training ??

More information

Mysql Manual Order By Multiple Columns Example

Mysql Manual Order By Multiple Columns Example Mysql Manual Order By Multiple Columns Example If there is an ORDER BY clause and a different GROUP BY clause, or if the ORDER BY or GROUP BY contains columns from tables other than the first table. Multiple

More information

ANZTB SIGIST May 2011 Perth OWASP How minor vulnerabilities can do very bad things. OWASP Wednesday 25 th May The OWASP Foundation

ANZTB SIGIST May 2011 Perth OWASP How minor vulnerabilities can do very bad things. OWASP Wednesday 25 th May The OWASP Foundation ANZTB SIGIST May 2011 Perth OWASP How minor vulnerabilities can do very bad things Christian Frichot / David Taylor (Some of) Perth OWASP s Chapter Leads OWASP Wednesday 25 th May 2011 Copyright The OWASP

More information

A bit more on Testing

A bit more on Testing A bit more on Testing Admin Some thoughts on the project You are reading data from the web. If you know knowing about http 1.x read at least about get and put Maybe here: https://code.tutsplus.com/tutorials/a-beginners-guide

More information

What s New in CloudKit

What s New in CloudKit System Frameworks #WWDC15 What s New in CloudKit Session 704 Olivier Bonnet icloud Client Eric Krugler icloud Server 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted

More information

Databases/JQuery AUGUST 1, 2018

Databases/JQuery AUGUST 1, 2018 Databases/JQuery AUGUST 1, 2018 Databases What is a Database? A table Durable place for storing things Place to easily lookup and update information Databases: The M in MVC What is a Database? Your Model

More information

Creating and Updating Websites In-Service Training Supplement

Creating and Updating Websites In-Service Training Supplement Creating and Updating Websites 2013 In-Service Training Supplement Editing Official Websites (ie Departments) Official Websites Who to talk to: Confusing? Here s what you need to know: Webpage content

More information

Fiz: A Component Framework for Web Applications. John Ousterhout Stanford University

Fiz: A Component Framework for Web Applications. John Ousterhout Stanford University Fiz: A Component Framework for Web Applications John Ousterhout Stanford University My Background Academia Industry Academia U.C. Berkeley Sun Scriptics Electric Cloud Stanford 1980 1990 2000 2010 VLSI

More information

COS 333: Advanced Programming Techniques

COS 333: Advanced Programming Techniques COS 333: Advanced Programming Techniques Robert M. Dondero, Ph.D. Princeton University Please pick up handouts at the back of the room 1 COS 333: Course Overview Copyright 2018 by Robert M. Dondero, Ph.D.

More information

Advanced Web Technology 10) XSS, CSRF and SQL Injection

Advanced Web Technology 10) XSS, CSRF and SQL Injection Berner Fachhochschule, Technik und Informatik Advanced Web Technology 10) XSS, CSRF and SQL Injection Dr. E. Benoist Fall Semester 2010/2011 1 Table of Contents Cross Site Request Forgery - CSRF Presentation

More information

Domain-Driven Design Activity

Domain-Driven Design Activity Domain-Driven Design Activity SWEN-261 Introduction to Software Engineering Department of Software Engineering Rochester Institute of Technology Entities and Value Objects are special types of objects

More information

Jedox Suite. Platform Support Guide

Jedox Suite. Platform Support Guide Jedox Suite Platform Support Guide with Technical Reference Jedox Suite Platform Support Guide with Technical Reference Jedox AG Dated: 23-Oct-2012 Copyright Jedox AG Copyright Reserved. Reproduction including

More information

7401ICT eservice Technology. (Some of) the actual examination questions will be more precise than these.

7401ICT eservice Technology. (Some of) the actual examination questions will be more precise than these. SAMPLE EXAMINATION QUESTIONS (Some of) the actual examination questions will be more precise than these. Basic terms and concepts Define, compare and discuss the following terms and concepts: a. HTML,

More information

CSE 127: Computer Security SQL Injection. Vector Li

CSE 127: Computer Security SQL Injection. Vector Li CSE 127: Computer Security SQL Injection Vector Li November 14, 2017 A Magic Trick The functional specification only allowed seeing one user s posts at a time Current user s posts on view.php without

More information

Duo Travel Guide. duo.com

Duo Travel Guide. duo.com Duo Travel Guide duo.com Overview As a member of an organization protected by Duo, you already have secure access to applications and assets. This guide is designed to help you maintain that trusted access

More information

Magento Migration Tool. User Guide. Shopify to Magento. Bigcommerce to Magento. 3DCart to Magento

Magento Migration Tool. User Guide. Shopify to Magento. Bigcommerce to Magento. 3DCart to Magento Magento Migration Tool User Guide Shopify to Magento Bigcommerce to Magento 3DCart to Magento Copyright 2015 LitExtension.com. All Rights Reserved. Page 1 Contents 1. Preparation... 3 2. Setup... 4 3.

More information

Using the MySQL Document Store

Using the MySQL Document Store Using the MySQL Document Store Alfredo Kojima, Sr. Software Dev. Manager, MySQL Mike Zinner, Sr. Software Dev. Director, MySQL Safe Harbor Statement The following is intended to outline our general product

More information

ArangoDB Foxx. Creating APIs for Single Page Web Applications by Lucas Dohmen

ArangoDB Foxx. Creating APIs for Single Page Web Applications by Lucas Dohmen ArangoDB Foxx Creating APIs for Single Page Web Applications by Lucas Dohmen moonglum moonbeamlabs RWTH Aachen, Computer Science Student on branch master triagens GmbH, Developer Single Page Web Applications

More information

Ten interesting features of Google s Angular Project

Ten interesting features of Google s Angular Project Ten interesting features of Google s Angular Project - 1 Ten interesting features of Google s Angular Project Copyright Clipcode Ltd 2018 All rights reserved Ten interesting features of Google s Angular

More information

ClickToCall SkypeTest Documentation

ClickToCall SkypeTest Documentation ClickToCall SkypeTest Documentation Release 0.0.1 Andrea Mucci August 04, 2015 Contents 1 Requirements 3 2 Installation 5 3 Database Installation 7 4 Usage 9 5 Contents 11 5.1 REST API................................................

More information

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment.

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. web.py Tutorial Tom Kelliher, CS 317 1 Acknowledgment This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment. 2 Starting So you know Python and want to make

More information

SYMFONY2 WEB FRAMEWORK

SYMFONY2 WEB FRAMEWORK 1 5828 Foundations of Software Engineering Spring 2012 SYMFONY2 WEB FRAMEWORK By Mazin Hakeem Khaled Alanezi 2 Agenda Introduction What is a Framework? Why Use a Framework? What is Symfony2? Symfony2 from

More information

The Lifetime of Android API vulnerabilities: case study on the JavaScript-to-Java interface

The Lifetime of Android API vulnerabilities: case study on the JavaScript-to-Java interface The Lifetime of Android API vulnerabilities: case study on the JavaScript-to-Java interface Daniel R. Thomas 1 Alastair R. Beresford 1 Thomas Coudray 2 Tom Sutcliffe 2 Adrian Taylor 2 1 Computer Laboratory,

More information

Nick Terkay CSCI 7818 Web Services 11/16/2006

Nick Terkay CSCI 7818 Web Services 11/16/2006 Nick Terkay CSCI 7818 Web Services 11/16/2006 Ning? Start-up co-founded by Marc Andreeson, the co- founder of Netscape. October 2005 Ning is an online platform for painlessly creating web apps in a jiffy.

More information

Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University

Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University Server-Side Web Programming: Python (Part 2) Copyright 2017 by Robert M. Dondero, Ph.D Princeton University 1 Objectives You will learn about: Python WSGI programming Web app frameworks in general (briefly)

More information

Joomla 3.X Global Settings Part III Server Settings

Joomla 3.X Global Settings Part III Server Settings Joomla 3.X Global Settings Part III Server Settings Diagram 1 Path to Temp Folder: This is a text box adjacent to this prompt which holds the path to Joomla s temp folder on the web server. This is the

More information

A Separation of Concerns Clean Architecture on Android

A Separation of Concerns Clean Architecture on Android A Separation of Concerns Clean Architecture on Android Kamal Kamal Mohamed Android Developer, //TODO Find Better Title @ Outware Mobile Ryan Hodgman Official Despiser of Utils Classes @ Outware Mobile

More information

Smart Pointers, deleted functions, and 2-3 trees

Smart Pointers, deleted functions, and 2-3 trees Smart Pointers, deleted functions, and 2-3 trees But first Any questions about your current homework assignment? Due Thursday night by 11:59pm Make-up oral exam: I will have a sign-up sheet on Thursday

More information

INF 102 CONCEPTS OF PROG. LANGS ADVERSITY. Instructors: James Jones Copyright Instructors.

INF 102 CONCEPTS OF PROG. LANGS ADVERSITY. Instructors: James Jones Copyright Instructors. INF 102 CONCEPTS OF PROG. LANGS ADVERSITY Instructors: James Jones Copyright Instructors. Approaches to failure Let it fail Good in development: understand failure mode Defend against the possible and

More information

Real Life Web Development. Joseph Paul Cohen

Real Life Web Development. Joseph Paul Cohen Real Life Web Development Joseph Paul Cohen joecohen@cs.umb.edu Index 201 - The code 404 - How to run it? 500 - Your code is broken? 200 - Someone broke into your server? 400 - How are people using your

More information

Magento Technical Guidelines

Magento Technical Guidelines Magento Technical Guidelines Eugene Shakhsuvarov, Software Engineer @ Magento 2018 Magento, Inc. Page 1 Magento 2 Technical Guidelines Document which describes the desired technical state of Magento 2

More information

Code review guide. Notice: Read about the language that you will test its code, if you don t have an idea about the language this will be difficult.

Code review guide. Notice: Read about the language that you will test its code, if you don t have an idea about the language this will be difficult. Code review guide Author: Jameel Nabbo Website: www.jameelnabbo.com Table of contents Introduction Code review Checklist Steps to perform on code review task Tips for code review Starting the Code review

More information

An introduction for the novice. David Lawrence, JLab. 5/8/07 MySQL David Lawrence 1/36

An introduction for the novice. David Lawrence, JLab. 5/8/07 MySQL David Lawrence 1/36 An introduction for the novice David Lawrence, JLab 5/8/07 MySQL David Lawrence 1/36 What is a Database? Store information(data) in a reliable, accessible way Allow access to data over a network to multiple

More information

WebMatrix: Why PHP Developers Should Pay Attention

WebMatrix: Why PHP Developers Should Pay Attention WebMatrix: Why PHP Developers Should Pay Attention Gone are the days when PHP developers had to turn away business because the clients used Windows Servers. If you are a PHP developer and have been looking

More information

Family Map Server Specification

Family Map Server Specification Family Map Server Specification Acknowledgements The Family Map project was created by Jordan Wild. Thanks to Jordan for this significant contribution. Family Map Introduction Family Map is an application

More information

WEB SECURITY p.1

WEB SECURITY p.1 WEB SECURITY 101 - p.1 spritzers - CTF team spritz.math.unipd.it/spritzers.html Disclaimer All information presented here has the only purpose to teach how vulnerabilities work. Use them to win CTFs and

More information

Holistic Database Security

Holistic Database Security Holistic Database Security 1 Important Terms Exploit: Take advantage of a flaw or feature Attack Surface: Any node on the network that can be attacked. That can be the UI, People, anything that touches

More information

AWS Mobile Hub. Build, Test, and Monitor Your Mobile Apps. Daniel Geske, Solutions Architect 31 May 2017

AWS Mobile Hub. Build, Test, and Monitor Your Mobile Apps. Daniel Geske, Solutions Architect 31 May 2017 AWS Mobile Hub Build, Test, and Monitor Your Mobile Apps Daniel Geske, Solutions Architect 31 May 2017 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. What to Expect from the Session

More information