Clean Code in Small Companies
|
|
- Domenic Williams
- 5 years ago
- Views:
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. 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 informationLyna 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 informationIntroduction 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 information5. 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 informationPHP: 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 informationDocumentation 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 informationAnnouncements. 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 informationIntroduction 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 informationInstructor 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 informationLaravel: 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 informationI 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 informationProgramming 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 informationCSC 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 informationWEB 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 informationLarge 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 informationIELM 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 informationMySQL: 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 informationL6 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 informationBig 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 informationDevelop 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 informationWeb 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 informationCS108 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 informationFive 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 informationSilex 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 informationCS 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 informationPrincess 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 informationCOS 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 informationMigration 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 informationAndroid 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 informationXMPP 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 informationCS 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 informationHow 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 informationA 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 informationCS 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 informationNET 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 informationChapter. 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 informationDevelopment 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 informationProgramming 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 informationNext: 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 informationMore 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 informationUnderstanding 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 informationPlatform 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 informationPHP-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 informationMySQL. 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 informationSecurity 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 informationA 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 informationWEB 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 informationRails + 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 informationLaravel 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 informationPHP. 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 informationVersion 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 informationVb 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 informationIXP 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 informationTHE 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 informationHydra 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 informationDemystifying 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 informationAn 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 informationAPIs - 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 informationSample 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 informationCSCE 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 informationPHP 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 informationCS317 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 informationEFFECTIVE 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 informationMysql 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 informationANZTB 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 informationA 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 informationWhat 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 informationDatabases/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 informationCreating 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 informationFiz: 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 informationCOS 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 informationAdvanced 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 informationDomain-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 informationJedox 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 information7401ICT 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 informationCSE 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 informationDuo 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 informationMagento 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 informationUsing 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 informationArangoDB 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 informationTen 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 informationClickToCall 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 informationweb.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 informationSYMFONY2 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 informationThe 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 informationNick 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 informationServer-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 informationJoomla 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 informationA 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 informationSmart 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 informationINF 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 informationReal 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 informationMagento 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 informationCode 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 informationAn 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 informationWebMatrix: 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 informationFamily 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 informationWEB 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 informationHolistic 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 informationAWS 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