SlideShare a Scribd company logo
POWERFUL TOOLS FOR
BUILDING WEB SOLUTIONS
SASS, X2JS, TypeScript, Javascript REPLs, Node.js, Internet
Browsers, OSS, HTTP Proxies, Color Palette Management,
Web fonts, CSS new features, CSS Auto Prefixing
Andrea
Tino
#allrightsreserved #2015 #creativecommons #cc4.0 #attribution #noncommercial #sharealike
#international
Who is this
presentation for?
Everyone with a
minimal background
on web programming
What topics does it
cover?
See previous slide :)
Oh yeah... But how
detailed?
Just a rapid look at
those technologies,
the rest is up to you!
JAVASCRIPT AND CSS ARE WEB’S ASSEMBLY
The world is moving in a certain direction where
Javascript and CSS are not really used for developing
the web today.
1.1
C#’s creator on C#
“Forget about C#...
Javascript is the future”
TypeScript
http://www.typescri
ptlang.org
CoffeeScript
http://coffeescript.org
A developer on CSS
“CSS is the worst thing
ever created”
New abstractions
Do you remember when we used to develop websites using
HTML and Javascript? Well, today you should write not a
single line of Javascript anymore.
Why? Because Javascript allows too many things, too many
hacks. It is also a non typed language, thus it introduces
very few restrictions. It means that there is not much
control when a Javascript program is executed.
X2JS So we created new languages which compile into
Javascript. There are many of them out there: TypeScript,
CoffeeScript, LiveScript also functional languages.
Same for CSS CSS sort of shares the same destiny
of Javascript but for a slightly different reason: CSS
has no limits and can scale to extremely chaotic sets
of overridden rules.
There is need for more consistency and structure.
CONSTRAINTS NEEDED
My thoughts on this.
1.1.2
Me
“X2JS and X2CSS are today’s
attempt to provide Semantics to
two technologies (Javascript and
CSS) that can act as the Assembly
language of our current
applications’ platform: the Web”
Setting limits
These new languages popping up on the Internet every new
day are a clear representatoion of what the community is
seeking: restrictions!
To make things more neat and less chaotic, we need to add
constraints to our programming experience.
X2JS Languages compiled into Javascript use OOP and
types to confine the extreme flexibility of Javascript.
X2CSS Languages compiling into CSS provide a better
syntax structure to specify selectors and create selectors
hierarchies for a less chaotic styling.
My thoughts on this
THE WORLD AROUND JAVASCRIPT
Tools for a better Javascript development experience
2
DISCOVERING TYPESCRIPT
Microsoft’s solution for a better Javascript
programming experience by C#’s creator: Anders
Hejlsberg
2.1
NPM install
npm i -g typescript
Playground
http://www.typescriptl
ang.org/Playground
Handbook
http://www.typescriptl
ang.org/Handbook
TYPE SUPPORT VARIANT TYPE
GENERICS INTERFACES
EXCEPTIONS LAMBDA EXPR
MODULES TYPE INFERENCE
DECL.MERGING INHERITANCE
POLYMORPHISM NODE.JS READY
Like C#
TypeScript is sort of inspired to C#, after all
both languages have the same father :)
The programming experience is very intuitive
and can be seen like a very advanced
ActionScript with full support for OOP and its
principles: Encapsulation, Inheritance and
Polymorphism.
JAVASCRIPT REPL(S)
Most common places to write your Javascript hacks
and try your experiments.
2.2
REPL.IT
http://repl.it/languages/JavaScript
JS Bin
http://jsbin.com
JS Fiddle
https://jsfiddle.net
Script on your browser
A REPL (Read, Eval, Print, Loop) is sort of a shell
available on web. There are many of them supporting
many different languages.
JS Bin This is by all means my favorite. It allows you
to create Javascript hacks and save them in your free
account. You can also share them.
JS Fiddle Probably one of the very first Javascript
REPLs on the web it offers the possibility to integrate
your code with almost all Javascript libraries out
there (possibility to select version!).
Reple It This is an amazing tool for REPLing all
languages. It supports Javascript but also Node.js
and many other languages. It is like having a
platforms with all languages you might need.
BROWSER JAVASCRIPT CONSOLE API
Debugging Javascript can be hard, but browsers
developed many tools for developers.
2.3
Chrome’s console API ref.
http://developer.chrome.com/devtools/docs/
commandline-api
IE’s console API ref.
http://msdn.microsoft.com/en-us/library/ie/h
h772173%28v=vs.85%29.aspx
Firefox’s console API ref.
http://developer.mozilla.org/en-US/docs/Tool
s/Browser_Console
Accessing the console
Althought there is no W3C recommendations or
specification on this, all browsers implement a
Javascript API that allows developers to debug their
web applications.
Element selectors Commands for getting elements
in the DOM. XPath is also supported in some
browsers.
Object inspection Commands for accessing objects
and their properties. Some browsers allow
serialization to and from XML/JSON as well.
Event inspection Commands for listing active event
handlers on objects and handle them.
Monitoring Commands for observing objects’ state
and trigger callbacks when something occurs or
changes.
MUTATION OBSERVERS (EX EVENTS)
Debugging sometimes can be painful in Javascript,
especially with large projects. However a black-box
approach is possible
2.4
W3C DOM Specification
http://www.w3.org/TR/dom
MDN - Mutation Observer API
http://developer.mozilla.org/en/docs/Web/AP
I/MutationObserver
Observing changes
This is a functionality introduced in still draft DOM4
W3C specification and replaces old Mutation Events
API. It is design for development, but this feature
can be actually pretty handy when debugging large
Javascript projects with many lines of code.
Trigger when something changes Usage is quite
straightforward: An object is provided (must be Node
in the DOM) and an observer is created by providing
also the list of changes to listen to (like Sensitivity
Lists in VHDL). When one of these changes occur, the
observer will execute the callback provided.
Better debug It is a good functionality when trying
to figure out what side effects some components are
introducing in the DOM.
PROFILING JAVASCRIPT
What the user experiences is all the Javascript in your
browser (except turnarounds due to http non-AJAX
reqs), thus profiling your JS is good practice!
2.5
IE’s memory profiler
http://msdn.microsoft.com/en-us/library/ie/d
n255003%28v=vs.85%29.aspxChrome’s Flame Chart
http://developer.chrome.com/devtools/docs/
cpu-profiling
Modern browsers have very nice tools for profiling
web applications and discover slow components in
order to enhance them or take reasonable action.
Chrome: function deep
Chrome has a very interesting functionality: the
Flame Chart in the “Profiles” section. It allows
programmers to visually identify which functions are
executing for a long time
IE: find memory leaks
IE delivers the Memory Profiler as part of its F12
developer tool. It enabes the possibility to take
snapshots and, thus, it is very good, among the other
things, for locating memory leaks.
EVENT AWARENESS
In large applications, handling events is
important as they trigger events when in the
capture phase and also when bubbling.
2.6
IE’s memory profiler
http://msdn.microsoft.com/en-us/library/ie/d
n255003%28v=vs.85%29.aspx
Events can be like little lizards moving
everywhere, keeping track of them is crucial!
Browsers themselves offer some solutions,
however some external tools can be handy.
SpryMedia Visual Event
This lightweight and extremely easy-to-use tool lets
you visually identify which events an element in the
DOM has subscribed to.
Different types As it is possible to use jQuery and
other ways to subscribe to events, Visual Event is able
to recognize which method the developer used to
subscribe to events for a specific element.
Chrome’s event monitor ref.
http://developer.chrome.com/devtools/docs/
console#monitoring-events
Console API: event monitor
Chrome and other browsers, as part of the console
API, offers the possibility to monitor events.
monitorEvents(document.body,”click”);
unmonitorEvents(document.body);
monitorEvents(document.body);
TRACKING EVENTS: DIY
Instead of using external tools and libraries doing
magic, you can develop easily a way to track
events in every web application.
2.6.2
<head>
...
<script src=”...”></script>
<script src=”mylib.js”></script>
</head>
1. Define the library
Create a separate js file and put there the
function. This file must be included as LAST
library in your web application.
2. Override subscription
Override event subscription functions.
HTMLElement.prototype.addEventListener =
function(type,listener,useCapture) {...};
HTMLElement.prototype.removeEventListener =
function(type,listener,useCapture) {...};
3. Implement logging logic
Log everytime the event traverses an element.
// Attention: Pseudo-Code!
var log = function(fun) {...}
function(type,listener,uc) {
this.oldAEL(type,function(){log(fun)},uc);
for (ancenstor in this.ancestors) {
ancestor.oldAEL(type,log,uc);
}
};
TODO
My thoughts on this
TOWARDS A BETTER STYLING EXPERIENCE
What the world out there can offer to improve styling
web applications with CSS
3
DISCOVERING SASS AND LESS
A very useful tool to create better CSS stylesheets
without the chaos of CSS.
3.1
SASS
http://sass-la
ng.com
LESS
http://lesscss.
org
SASS Playground
http://sassmeister.com/
SASS vs LESS
https://css-tricks.com/sass-vs-less/
LESS Playground
http://lesscssismore.com
Higher level CSS
SASS Syntactically Awesome
StyleSheets provides developers with a
more structured language. Sadly is that
it cannot be installed through NPM :(
gem install sass
LESS aka Less CSS. Same as SASS
but with some different features
and slightly different syntax. Ah, it
is NPM ready :)
npm install -g less
GOOD COND.STRUCT.BETTER SYNTAX
BETTER CSS OUTPUT BETTER DOC
TOWARDS OBJECT ORIENTED CSS
OO principles applied to CSS or what?
3.2
:( :)
OOCSS
http://www.smashingmagazine.co
m/2011/12/12/an-introduction-to-
object-oriented-css-oocss/
Writing better CSS
.button {
width: 200px; height: 50px;
padding: 10px;
border: solid 1px #ccc;
}
.box {
width: 400px; height: 100px;
border: solid 1px #000;
background-color: #fff;
}
.widget {
width: 500px; height: 200px;
border: solid 1px #ccc;
background-color: #fce;
}
Avoid duplication Like in OOP, it is good to act
by the principle of less possible redundancy.
.button {
width: 200px; height: 50px;
}
.box {
width: 400px; height: 100px;
}
.widget {
width: 500px; height: 200px;
}
Separate concerns Identify what’s specific to
each object and remove non-specific rules.
:) .skin {
padding: 10px;
border: solid 1px #ccc;
background-color: #efe;
}
.button.skin {
background-color:
inherit;
}
Use methods Use common rules changing with context.
.box.skin {
padding: 0;
border-color: #000;
background-color: #fff;
}
.widget.skin {
padding: 0;
background-color: #fce;
}
CRAZY PREFIXING SOLVED
One of the most annoying things about CSS is that
many features arenot fully implemented by browsers,
many rules have prefixes, this makes CSS ugly!
3.3
MDN
https://developer.mozilla.org/en-US
/docs/Web/CSS
Autoprefixer
https://github.com/postc
ss/autoprefixer
Playground
http://jsbin.com/
gufoko/
Playground
http://pleeease.io/
play
Should I prefix?
How can I know whether a CSS rule should be
prefixed or not? Use MDN, search the CSS rule and
find the Browser Compatibility matrix!
Or better do it automatically
There are some tools which perform auto-prefixing on
your CSS sylesheets. These can be used on your CSS,
SASS, Stylus or even LESS files.
Autoprefixer Very efficient and fast tool.
SASS
Pleeease
http://pleeease.io
Pleeease Flexible and does everything.
npm install -g autoprefixer
LESS STYLUS npm install -g pleeease-cli
MANAGE YOUR COLOR PALETTES
Very important tools for UX designers to style web
applications and keep color palettes always in order.
3.4
Adobe Color CC
https://color.adobe.com/
Color Hex
http://www.color
-hex.com/
For professionals
Adobe sure delivers amazing applications for
designers and Color CC (formerly knows as Kuler) is
one of these.
Not so advanced ones...
Other solutions which are not as good as Adobe’s but provide
a very good level of color palette handling in the Cloud.
COLOR RULES
SHARINGFROM IMAGE
COLOR WHEEL
Color-Hex This provides basic features.
ColourLovers
http://www.colourlo
vers.com/
Color-Hex This provides basic features.
PATTERNS
My thoughts on this
IMPROVING PRODUCTIVITY
A miscellaneous of tools on the Web to improve
development experience in general
4
INSPECT HTTP COMMUNICATIONS
When developing web applications, AJAX calls are
something more than common (especially in SPAs), some
tools can help you see what’s going on the channel.
4.1
Telerik Fiddler
http://www.telerik.com/fiddler
SERVER
127.0.0.1:80
CLIENT
Browser
Debugging AJAX calls
Web applications will naturally send and
receive information with the server. AJAX calls
are also quite a common thing, but
sometimes we need to debug data and
having a look at what’s going on on the
channel is a very good thing to have!
Fiddler By Telerik, it is one of the most used
HTTP proxy and sniffer. It has many
capabilities ad can be customized using a
programming language.
JSCRIPT PRGRMMBLE
REVERSE PROXY
CUSTOM RULES
DISCOVERING ADOBE EDGE ANIMATE
Creating Javascript based animations with a timeline
based tool is like having Adobe Flash... without the need
of the SWF Player :)
4.2
Adobe Edge Animate
https://creative.adobe.com/product
s/animate
Animating like in Flash
I started developing Flash presentations
when Flash was still Macromedia’s (5.0). Now
unfortunately the market has moved away
from it, but with Edge Animate it is still
possible to have the same authoring
experience, and this is awesome!
width:
height:
x:
y:
Timeline based
animation design
is a very effective
way to create
animations.
Javascript The very nice thing of Animate is that the
output is a bunch of Javascript, CSS and HTML files.
Adobe guarantees that animations are cross browser :)
DOES MY BROWSER SUPPORT IT?
The most popular tool to discover which browser is
implementing whatever feature.
4.3
Can I Use?
http://caniuse.com/
HTML5 Test
https://html5test.com/
Can I Use?
Does Chrome fully support multiple columns?
Does IE support CSS animations? Yes? What
about IE10? And FireFox? Opera?
All those questions can have an answer by
simply using CanIUse!
Always updates CanIUse is always updated
with latest info about support of standards by
browsers. Some tools even use CanIUse to
keep their database updated.
HTML5 Test
Support for newly come HTML5 features can
be something important to keep in track. The
nice thing of HTML5Test is that you will not
be presented with a support matrix, the tool
will run a set of tests on your browser and
give you results for that specific version!
Other browsers The tool also offers the
possibility to evaluate other browsers and
even compare support!
My thoughts on this
DEVELOPING CROSS PLATFORM HYBRID APPS
Today’s most popular tools for creating apps on
different stores with the same code base
5
THE WORLD AROUND HYBRID APPS
The main actors on the stage of cross platform apps
5.1
Cordova
https://cordova.apach
e.org/
Hybrid app
Developed in HTML +
CSS + JS mostly
PhoneGap
http://phonegap.com
Appium
http://appium.io/
Selenium
http://www.seleniumhq.org/
HTML5 + CSS + JS
Supported platforms’SDKs
https://developer.android.
com/sdk/index.html
https://developer.apple.c
om/xcode/
Specialization
Used to develop
HOW AN HYBRID APP IS BUILT
Once upon a time...
5.2
WebView
Native app
Webview
A mini-browser
hosted by apps
From web applications
Hybrid apps basically originate from web
applications. The process simply consists in
considering a web applications and then
building apps which embody a Webview
connecting to the same server to download
the HTML content.
Tooling Cordova, while generating the
apps, will also include libraries to handle
communications between the native layer
and the webview.
WHAT CORDOVA DOES
Actually, nothing so somplicated.
5.3
Android Webview
webkit.WebView
iOS Webview
UIView::UIWebView
Win Webview
WebView
Unix
Android
MacOS
Android
iOS
Windows
Android
Win
Creating
an app
Cordova will generate a
very simple app consisting
in a Canvas element
together with a WebView
element on top covering all
the screen.
Since the app to build is
always the same, instead of
having developers do that,
Cordova automates this
process.
npm install -g cordova
HOW TO CREATE APPS WITH CORDOVA
From command line, just a few commands and there you
can go.
5.3.2
For Windows
cordova prepare windows
cordova compile windows
For Android
cordova prepare android
cordova compile android
For iOS
cordova prepare ios
cordova compile ios
Win output
myapp.appx
Android output
myapp.apk
iOS output
myapp.ipa
Configuration
package.json
config.xml
This work is distributed under the Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International license.
THANK YOU
Twitter: @_atino
E-Mail: andry.tino@hotmail.com
The end

More Related Content

What's hot

Angular 1.x reloaded: improve your app now! and get ready for 2.0
Angular 1.x reloaded:  improve your app now! and get ready for 2.0Angular 1.x reloaded:  improve your app now! and get ready for 2.0
Angular 1.x reloaded: improve your app now! and get ready for 2.0
Carlo Bonamico
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
Carlo Bonamico
 
Javascript handbook
Javascript handbook Javascript handbook
Using java interop in your xamarin.android apps
Using java interop in your xamarin.android appsUsing java interop in your xamarin.android apps
Using java interop in your xamarin.android apps
Willem Meints
 
JavaScript Tools Overview
JavaScript Tools OverviewJavaScript Tools Overview
JavaScript Tools Overview
Scott Povlot
 
AJAX vs. Flex, 2007
AJAX vs. Flex, 2007AJAX vs. Flex, 2007
AJAX vs. Flex, 2007
Evgenios Skitsanos
 
Intoduction to java
Intoduction to javaIntoduction to java
Intoduction to java
jalinder123
 
Java 10 - Key Note
Java 10 - Key NoteJava 10 - Key Note
Java 10 - Key Note
Nikhil Hiremath
 
Building your next big thing on Liferay DXP
Building your next big thing on Liferay DXPBuilding your next big thing on Liferay DXP
Building your next big thing on Liferay DXP
Andrea Di Giorgi
 
What Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 AppsWhat Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 Apps
Doris Chen
 
JavaScript Presentation Frameworks and Libraries
JavaScript Presentation Frameworks and LibrariesJavaScript Presentation Frameworks and Libraries
JavaScript Presentation Frameworks and Libraries
Oleksii Prohonnyi
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instruments
Ivano Malavolta
 
Writing Android Libraries
Writing Android LibrariesWriting Android Libraries
Writing Android Libraries
emanuelez
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJS
Philipp Burgmer
 
Frontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In BanglaFrontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In Bangla
Stack Learner
 
Gwt ppt
Gwt pptGwt ppt
Gwt ppt
Monica Bubna
 
Tellurium At Rich Web Experience2009
Tellurium At Rich Web Experience2009Tellurium At Rich Web Experience2009
Tellurium At Rich Web Experience2009
John.Jian.Fang
 
Netbeans gui tutorial
Netbeans gui tutorialNetbeans gui tutorial
Netbeans gui tutorial
stephan EL'wiin Shaarawy
 
T 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By GwtT 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By Gwt
supertoy2015
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
JAX London
 

What's hot (20)

Angular 1.x reloaded: improve your app now! and get ready for 2.0
Angular 1.x reloaded:  improve your app now! and get ready for 2.0Angular 1.x reloaded:  improve your app now! and get ready for 2.0
Angular 1.x reloaded: improve your app now! and get ready for 2.0
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
Javascript handbook
Javascript handbook Javascript handbook
Javascript handbook
 
Using java interop in your xamarin.android apps
Using java interop in your xamarin.android appsUsing java interop in your xamarin.android apps
Using java interop in your xamarin.android apps
 
JavaScript Tools Overview
JavaScript Tools OverviewJavaScript Tools Overview
JavaScript Tools Overview
 
AJAX vs. Flex, 2007
AJAX vs. Flex, 2007AJAX vs. Flex, 2007
AJAX vs. Flex, 2007
 
Intoduction to java
Intoduction to javaIntoduction to java
Intoduction to java
 
Java 10 - Key Note
Java 10 - Key NoteJava 10 - Key Note
Java 10 - Key Note
 
Building your next big thing on Liferay DXP
Building your next big thing on Liferay DXPBuilding your next big thing on Liferay DXP
Building your next big thing on Liferay DXP
 
What Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 AppsWhat Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 Apps
 
JavaScript Presentation Frameworks and Libraries
JavaScript Presentation Frameworks and LibrariesJavaScript Presentation Frameworks and Libraries
JavaScript Presentation Frameworks and Libraries
 
Cordova: APIs and instruments
Cordova: APIs and instrumentsCordova: APIs and instruments
Cordova: APIs and instruments
 
Writing Android Libraries
Writing Android LibrariesWriting Android Libraries
Writing Android Libraries
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJS
 
Frontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In BanglaFrontend Development Bootcamp - React [Online & Offline] In Bangla
Frontend Development Bootcamp - React [Online & Offline] In Bangla
 
Gwt ppt
Gwt pptGwt ppt
Gwt ppt
 
Tellurium At Rich Web Experience2009
Tellurium At Rich Web Experience2009Tellurium At Rich Web Experience2009
Tellurium At Rich Web Experience2009
 
Netbeans gui tutorial
Netbeans gui tutorialNetbeans gui tutorial
Netbeans gui tutorial
 
T 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By GwtT 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By Gwt
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
 

Viewers also liked

How to Develop Cross-Platform Apps
How to Develop Cross-Platform AppsHow to Develop Cross-Platform Apps
How to Develop Cross-Platform Apps
Andrea Tino
 
Building a next generation web application
Building a next generation web applicationBuilding a next generation web application
Building a next generation web application
Narenda Wicaksono
 
Lecture 11 client_server_interaction
Lecture 11 client_server_interactionLecture 11 client_server_interaction
Lecture 11 client_server_interaction
Serious_SamSoul
 
Network & internet presentation
Network & internet presentationNetwork & internet presentation
Network & internet presentation
Rati agarwal
 
History & Basic Structure of the Internet
History & Basic Structure of the InternetHistory & Basic Structure of the Internet
History & Basic Structure of the Internet
Villa Santa Maria
 
History of the internet
History of the internetHistory of the internet
History of the internet
Betchie Aguinaldo
 
DNS - Domain Name System
DNS - Domain Name SystemDNS - Domain Name System
DNS - Domain Name System
Peter R. Egli
 
The History Of The Internet Presentation
The  History Of The  Internet  PresentationThe  History Of The  Internet  Presentation
The History Of The Internet Presentation
dgieseler1
 
Domain Name System DNS
Domain Name System DNSDomain Name System DNS
Domain Name System DNS
Akshay Tiwari
 
Introduction to computer network
Introduction to computer networkIntroduction to computer network
Introduction to computer network
Ashita Agrawal
 
BASIC CONCEPTS OF COMPUTER NETWORKS
BASIC CONCEPTS OF COMPUTER NETWORKS BASIC CONCEPTS OF COMPUTER NETWORKS
BASIC CONCEPTS OF COMPUTER NETWORKS
Kak Yong
 

Viewers also liked (11)

How to Develop Cross-Platform Apps
How to Develop Cross-Platform AppsHow to Develop Cross-Platform Apps
How to Develop Cross-Platform Apps
 
Building a next generation web application
Building a next generation web applicationBuilding a next generation web application
Building a next generation web application
 
Lecture 11 client_server_interaction
Lecture 11 client_server_interactionLecture 11 client_server_interaction
Lecture 11 client_server_interaction
 
Network & internet presentation
Network & internet presentationNetwork & internet presentation
Network & internet presentation
 
History & Basic Structure of the Internet
History & Basic Structure of the InternetHistory & Basic Structure of the Internet
History & Basic Structure of the Internet
 
History of the internet
History of the internetHistory of the internet
History of the internet
 
DNS - Domain Name System
DNS - Domain Name SystemDNS - Domain Name System
DNS - Domain Name System
 
The History Of The Internet Presentation
The  History Of The  Internet  PresentationThe  History Of The  Internet  Presentation
The History Of The Internet Presentation
 
Domain Name System DNS
Domain Name System DNSDomain Name System DNS
Domain Name System DNS
 
Introduction to computer network
Introduction to computer networkIntroduction to computer network
Introduction to computer network
 
BASIC CONCEPTS OF COMPUTER NETWORKS
BASIC CONCEPTS OF COMPUTER NETWORKS BASIC CONCEPTS OF COMPUTER NETWORKS
BASIC CONCEPTS OF COMPUTER NETWORKS
 

Similar to Powerful tools for building web solutions

Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
JohnTaieb
 
Top 11 Front-End Web Development Tools To Consider in 2020
 Top 11 Front-End Web Development Tools To Consider in 2020 Top 11 Front-End Web Development Tools To Consider in 2020
Top 11 Front-End Web Development Tools To Consider in 2020
Katy Slemon
 
That’s not your var – JavaScript best practices for C# developers
That’s not your var – JavaScript best practices for C# developersThat’s not your var – JavaScript best practices for C# developers
That’s not your var – JavaScript best practices for C# developers
György Balássy
 
Ajax toolkit framework
Ajax toolkit frameworkAjax toolkit framework
Ajax toolkit framework
Sunil Kumar
 
Js frameworks
Js frameworksJs frameworks
Js frameworks
ParagKhalas
 
INTRODUCTION.docx
INTRODUCTION.docxINTRODUCTION.docx
INTRODUCTION.docx
KaiSane1
 
Busy developer-html5-javaee7
Busy developer-html5-javaee7Busy developer-html5-javaee7
Busy developer-html5-javaee7
Geertjan Wielenga
 
Cross Platform Mobile Technologies
Cross Platform Mobile TechnologiesCross Platform Mobile Technologies
Cross Platform Mobile Technologies
Talentica Software
 
Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction
WebStackAcademy
 
Web Application Development Tools for Creating Perfect User Experience
Web Application Development Tools for Creating Perfect User ExperienceWeb Application Development Tools for Creating Perfect User Experience
Web Application Development Tools for Creating Perfect User Experience
ChromeInfo Technologies
 
Web development ppt
Web development pptWeb development ppt
Web development ppt
ParasJain222
 
orcreatehappyusers
orcreatehappyusersorcreatehappyusers
orcreatehappyusers
tutorialsruby
 
orcreatehappyusers
orcreatehappyusersorcreatehappyusers
orcreatehappyusers
tutorialsruby
 
Unit - 1: ASP.NET Basic
Unit - 1:  ASP.NET BasicUnit - 1:  ASP.NET Basic
Unit - 1: ASP.NET Basic
KALIDHASANR
 
The Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsThe Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.js
Nicholas Jansma
 
Front-End Web Development
Front-End Web DevelopmentFront-End Web Development
Front-End Web Development
Yash Sati
 
quantum_leap_angularjs_tools_redefining_development_in_2023.pptx
quantum_leap_angularjs_tools_redefining_development_in_2023.pptxquantum_leap_angularjs_tools_redefining_development_in_2023.pptx
quantum_leap_angularjs_tools_redefining_development_in_2023.pptx
sarah david
 
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
ITCamp
 
CLR_via_CSharp_(Jeffrey_Richter_4th_Edition).pdf
CLR_via_CSharp_(Jeffrey_Richter_4th_Edition).pdfCLR_via_CSharp_(Jeffrey_Richter_4th_Edition).pdf
CLR_via_CSharp_(Jeffrey_Richter_4th_Edition).pdf
ssuserbe139c
 
SWT - Technical Deep Dive
SWT - Technical Deep DiveSWT - Technical Deep Dive
SWT - Technical Deep Dive
Eclipse Day India
 

Similar to Powerful tools for building web solutions (20)

Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
Top 11 Front-End Web Development Tools To Consider in 2020
 Top 11 Front-End Web Development Tools To Consider in 2020 Top 11 Front-End Web Development Tools To Consider in 2020
Top 11 Front-End Web Development Tools To Consider in 2020
 
That’s not your var – JavaScript best practices for C# developers
That’s not your var – JavaScript best practices for C# developersThat’s not your var – JavaScript best practices for C# developers
That’s not your var – JavaScript best practices for C# developers
 
Ajax toolkit framework
Ajax toolkit frameworkAjax toolkit framework
Ajax toolkit framework
 
Js frameworks
Js frameworksJs frameworks
Js frameworks
 
INTRODUCTION.docx
INTRODUCTION.docxINTRODUCTION.docx
INTRODUCTION.docx
 
Busy developer-html5-javaee7
Busy developer-html5-javaee7Busy developer-html5-javaee7
Busy developer-html5-javaee7
 
Cross Platform Mobile Technologies
Cross Platform Mobile TechnologiesCross Platform Mobile Technologies
Cross Platform Mobile Technologies
 
Angular - Chapter 1 - Introduction
 Angular - Chapter 1 - Introduction Angular - Chapter 1 - Introduction
Angular - Chapter 1 - Introduction
 
Web Application Development Tools for Creating Perfect User Experience
Web Application Development Tools for Creating Perfect User ExperienceWeb Application Development Tools for Creating Perfect User Experience
Web Application Development Tools for Creating Perfect User Experience
 
Web development ppt
Web development pptWeb development ppt
Web development ppt
 
orcreatehappyusers
orcreatehappyusersorcreatehappyusers
orcreatehappyusers
 
orcreatehappyusers
orcreatehappyusersorcreatehappyusers
orcreatehappyusers
 
Unit - 1: ASP.NET Basic
Unit - 1:  ASP.NET BasicUnit - 1:  ASP.NET Basic
Unit - 1: ASP.NET Basic
 
The Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.jsThe Happy Path: Migration Strategies for Node.js
The Happy Path: Migration Strategies for Node.js
 
Front-End Web Development
Front-End Web DevelopmentFront-End Web Development
Front-End Web Development
 
quantum_leap_angularjs_tools_redefining_development_in_2023.pptx
quantum_leap_angularjs_tools_redefining_development_in_2023.pptxquantum_leap_angularjs_tools_redefining_development_in_2023.pptx
quantum_leap_angularjs_tools_redefining_development_in_2023.pptx
 
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
30 Tools for Modern .NET Web Development in 60 Minutes (Jonathan Tower)
 
CLR_via_CSharp_(Jeffrey_Richter_4th_Edition).pdf
CLR_via_CSharp_(Jeffrey_Richter_4th_Edition).pdfCLR_via_CSharp_(Jeffrey_Richter_4th_Edition).pdf
CLR_via_CSharp_(Jeffrey_Richter_4th_Edition).pdf
 
SWT - Technical Deep Dive
SWT - Technical Deep DiveSWT - Technical Deep Dive
SWT - Technical Deep Dive
 

More from Andrea Tino

Our Journey: from Waterfall to Agile to DevOps
Our Journey: from Waterfall to Agile to DevOpsOur Journey: from Waterfall to Agile to DevOps
Our Journey: from Waterfall to Agile to DevOps
Andrea Tino
 
Development & GDPR (v2)
Development & GDPR (v2)Development & GDPR (v2)
Development & GDPR (v2)
Andrea Tino
 
Development & GDPR
Development & GDPRDevelopment & GDPR
Development & GDPR
Andrea Tino
 
Cutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in ITCutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in IT
Andrea Tino
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
Andrea Tino
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
Andrea Tino
 
Modern Trends in UI Decoupling Design
Modern Trends in UI Decoupling DesignModern Trends in UI Decoupling Design
Modern Trends in UI Decoupling Design
Andrea Tino
 
Javascript cheatsheet
Javascript cheatsheetJavascript cheatsheet
Javascript cheatsheet
Andrea Tino
 
Workshop on Cryptography - Frequency Analysis (basic)
Workshop on Cryptography - Frequency Analysis (basic)Workshop on Cryptography - Frequency Analysis (basic)
Workshop on Cryptography - Frequency Analysis (basic)
Andrea Tino
 
Master Thesis - A Distributed Algorithm for Stateless Load Balancing
Master Thesis - A Distributed Algorithm for Stateless Load BalancingMaster Thesis - A Distributed Algorithm for Stateless Load Balancing
Master Thesis - A Distributed Algorithm for Stateless Load Balancing
Andrea Tino
 
Modern web applications
Modern web applicationsModern web applications
Modern web applications
Andrea Tino
 
Visual Studio Tools for Cordova
Visual Studio Tools for CordovaVisual Studio Tools for Cordova
Visual Studio Tools for Cordova
Andrea Tino
 
Microsoft + Agile (light)
Microsoft + Agile (light)Microsoft + Agile (light)
Microsoft + Agile (light)
Andrea Tino
 
Microsoft + Agile
Microsoft + AgileMicrosoft + Agile
Microsoft + Agile
Andrea Tino
 
The World of Stylesheet Languages
The World of Stylesheet LanguagesThe World of Stylesheet Languages
The World of Stylesheet Languages
Andrea Tino
 
The Asynchronous Pattern (for beginners)
The Asynchronous Pattern (for beginners)The Asynchronous Pattern (for beginners)
The Asynchronous Pattern (for beginners)
Andrea Tino
 
Designing an effective hybrid apps automation framework
Designing an effective hybrid apps automation frameworkDesigning an effective hybrid apps automation framework
Designing an effective hybrid apps automation framework
Andrea Tino
 
7 tips for more effective morning SCRUM
7 tips for more effective morning SCRUM7 tips for more effective morning SCRUM
7 tips for more effective morning SCRUM
Andrea Tino
 
Working with Agile technologies and SCRUM
Working with Agile technologies and SCRUMWorking with Agile technologies and SCRUM
Working with Agile technologies and SCRUM
Andrea Tino
 
Creating a compiler for your own language
Creating a compiler for your own languageCreating a compiler for your own language
Creating a compiler for your own language
Andrea Tino
 

More from Andrea Tino (20)

Our Journey: from Waterfall to Agile to DevOps
Our Journey: from Waterfall to Agile to DevOpsOur Journey: from Waterfall to Agile to DevOps
Our Journey: from Waterfall to Agile to DevOps
 
Development & GDPR (v2)
Development & GDPR (v2)Development & GDPR (v2)
Development & GDPR (v2)
 
Development & GDPR
Development & GDPRDevelopment & GDPR
Development & GDPR
 
Cutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in ITCutting Edge on Development Methodologies in IT
Cutting Edge on Development Methodologies in IT
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
Modern Trends in UI Decoupling Design
Modern Trends in UI Decoupling DesignModern Trends in UI Decoupling Design
Modern Trends in UI Decoupling Design
 
Javascript cheatsheet
Javascript cheatsheetJavascript cheatsheet
Javascript cheatsheet
 
Workshop on Cryptography - Frequency Analysis (basic)
Workshop on Cryptography - Frequency Analysis (basic)Workshop on Cryptography - Frequency Analysis (basic)
Workshop on Cryptography - Frequency Analysis (basic)
 
Master Thesis - A Distributed Algorithm for Stateless Load Balancing
Master Thesis - A Distributed Algorithm for Stateless Load BalancingMaster Thesis - A Distributed Algorithm for Stateless Load Balancing
Master Thesis - A Distributed Algorithm for Stateless Load Balancing
 
Modern web applications
Modern web applicationsModern web applications
Modern web applications
 
Visual Studio Tools for Cordova
Visual Studio Tools for CordovaVisual Studio Tools for Cordova
Visual Studio Tools for Cordova
 
Microsoft + Agile (light)
Microsoft + Agile (light)Microsoft + Agile (light)
Microsoft + Agile (light)
 
Microsoft + Agile
Microsoft + AgileMicrosoft + Agile
Microsoft + Agile
 
The World of Stylesheet Languages
The World of Stylesheet LanguagesThe World of Stylesheet Languages
The World of Stylesheet Languages
 
The Asynchronous Pattern (for beginners)
The Asynchronous Pattern (for beginners)The Asynchronous Pattern (for beginners)
The Asynchronous Pattern (for beginners)
 
Designing an effective hybrid apps automation framework
Designing an effective hybrid apps automation frameworkDesigning an effective hybrid apps automation framework
Designing an effective hybrid apps automation framework
 
7 tips for more effective morning SCRUM
7 tips for more effective morning SCRUM7 tips for more effective morning SCRUM
7 tips for more effective morning SCRUM
 
Working with Agile technologies and SCRUM
Working with Agile technologies and SCRUMWorking with Agile technologies and SCRUM
Working with Agile technologies and SCRUM
 
Creating a compiler for your own language
Creating a compiler for your own languageCreating a compiler for your own language
Creating a compiler for your own language
 

Recently uploaded

Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 

Recently uploaded (20)

Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 

Powerful tools for building web solutions

  • 1. POWERFUL TOOLS FOR BUILDING WEB SOLUTIONS SASS, X2JS, TypeScript, Javascript REPLs, Node.js, Internet Browsers, OSS, HTTP Proxies, Color Palette Management, Web fonts, CSS new features, CSS Auto Prefixing Andrea Tino #allrightsreserved #2015 #creativecommons #cc4.0 #attribution #noncommercial #sharealike #international
  • 2. Who is this presentation for? Everyone with a minimal background on web programming What topics does it cover? See previous slide :) Oh yeah... But how detailed? Just a rapid look at those technologies, the rest is up to you!
  • 3. JAVASCRIPT AND CSS ARE WEB’S ASSEMBLY The world is moving in a certain direction where Javascript and CSS are not really used for developing the web today. 1.1 C#’s creator on C# “Forget about C#... Javascript is the future” TypeScript http://www.typescri ptlang.org CoffeeScript http://coffeescript.org A developer on CSS “CSS is the worst thing ever created” New abstractions Do you remember when we used to develop websites using HTML and Javascript? Well, today you should write not a single line of Javascript anymore. Why? Because Javascript allows too many things, too many hacks. It is also a non typed language, thus it introduces very few restrictions. It means that there is not much control when a Javascript program is executed. X2JS So we created new languages which compile into Javascript. There are many of them out there: TypeScript, CoffeeScript, LiveScript also functional languages. Same for CSS CSS sort of shares the same destiny of Javascript but for a slightly different reason: CSS has no limits and can scale to extremely chaotic sets of overridden rules. There is need for more consistency and structure.
  • 4. CONSTRAINTS NEEDED My thoughts on this. 1.1.2 Me “X2JS and X2CSS are today’s attempt to provide Semantics to two technologies (Javascript and CSS) that can act as the Assembly language of our current applications’ platform: the Web” Setting limits These new languages popping up on the Internet every new day are a clear representatoion of what the community is seeking: restrictions! To make things more neat and less chaotic, we need to add constraints to our programming experience. X2JS Languages compiled into Javascript use OOP and types to confine the extreme flexibility of Javascript. X2CSS Languages compiling into CSS provide a better syntax structure to specify selectors and create selectors hierarchies for a less chaotic styling.
  • 5. My thoughts on this THE WORLD AROUND JAVASCRIPT Tools for a better Javascript development experience 2
  • 6. DISCOVERING TYPESCRIPT Microsoft’s solution for a better Javascript programming experience by C#’s creator: Anders Hejlsberg 2.1 NPM install npm i -g typescript Playground http://www.typescriptl ang.org/Playground Handbook http://www.typescriptl ang.org/Handbook TYPE SUPPORT VARIANT TYPE GENERICS INTERFACES EXCEPTIONS LAMBDA EXPR MODULES TYPE INFERENCE DECL.MERGING INHERITANCE POLYMORPHISM NODE.JS READY Like C# TypeScript is sort of inspired to C#, after all both languages have the same father :) The programming experience is very intuitive and can be seen like a very advanced ActionScript with full support for OOP and its principles: Encapsulation, Inheritance and Polymorphism.
  • 7. JAVASCRIPT REPL(S) Most common places to write your Javascript hacks and try your experiments. 2.2 REPL.IT http://repl.it/languages/JavaScript JS Bin http://jsbin.com JS Fiddle https://jsfiddle.net Script on your browser A REPL (Read, Eval, Print, Loop) is sort of a shell available on web. There are many of them supporting many different languages. JS Bin This is by all means my favorite. It allows you to create Javascript hacks and save them in your free account. You can also share them. JS Fiddle Probably one of the very first Javascript REPLs on the web it offers the possibility to integrate your code with almost all Javascript libraries out there (possibility to select version!). Reple It This is an amazing tool for REPLing all languages. It supports Javascript but also Node.js and many other languages. It is like having a platforms with all languages you might need.
  • 8. BROWSER JAVASCRIPT CONSOLE API Debugging Javascript can be hard, but browsers developed many tools for developers. 2.3 Chrome’s console API ref. http://developer.chrome.com/devtools/docs/ commandline-api IE’s console API ref. http://msdn.microsoft.com/en-us/library/ie/h h772173%28v=vs.85%29.aspx Firefox’s console API ref. http://developer.mozilla.org/en-US/docs/Tool s/Browser_Console Accessing the console Althought there is no W3C recommendations or specification on this, all browsers implement a Javascript API that allows developers to debug their web applications. Element selectors Commands for getting elements in the DOM. XPath is also supported in some browsers. Object inspection Commands for accessing objects and their properties. Some browsers allow serialization to and from XML/JSON as well. Event inspection Commands for listing active event handlers on objects and handle them. Monitoring Commands for observing objects’ state and trigger callbacks when something occurs or changes.
  • 9. MUTATION OBSERVERS (EX EVENTS) Debugging sometimes can be painful in Javascript, especially with large projects. However a black-box approach is possible 2.4 W3C DOM Specification http://www.w3.org/TR/dom MDN - Mutation Observer API http://developer.mozilla.org/en/docs/Web/AP I/MutationObserver Observing changes This is a functionality introduced in still draft DOM4 W3C specification and replaces old Mutation Events API. It is design for development, but this feature can be actually pretty handy when debugging large Javascript projects with many lines of code. Trigger when something changes Usage is quite straightforward: An object is provided (must be Node in the DOM) and an observer is created by providing also the list of changes to listen to (like Sensitivity Lists in VHDL). When one of these changes occur, the observer will execute the callback provided. Better debug It is a good functionality when trying to figure out what side effects some components are introducing in the DOM.
  • 10. PROFILING JAVASCRIPT What the user experiences is all the Javascript in your browser (except turnarounds due to http non-AJAX reqs), thus profiling your JS is good practice! 2.5 IE’s memory profiler http://msdn.microsoft.com/en-us/library/ie/d n255003%28v=vs.85%29.aspxChrome’s Flame Chart http://developer.chrome.com/devtools/docs/ cpu-profiling Modern browsers have very nice tools for profiling web applications and discover slow components in order to enhance them or take reasonable action. Chrome: function deep Chrome has a very interesting functionality: the Flame Chart in the “Profiles” section. It allows programmers to visually identify which functions are executing for a long time IE: find memory leaks IE delivers the Memory Profiler as part of its F12 developer tool. It enabes the possibility to take snapshots and, thus, it is very good, among the other things, for locating memory leaks.
  • 11. EVENT AWARENESS In large applications, handling events is important as they trigger events when in the capture phase and also when bubbling. 2.6 IE’s memory profiler http://msdn.microsoft.com/en-us/library/ie/d n255003%28v=vs.85%29.aspx Events can be like little lizards moving everywhere, keeping track of them is crucial! Browsers themselves offer some solutions, however some external tools can be handy. SpryMedia Visual Event This lightweight and extremely easy-to-use tool lets you visually identify which events an element in the DOM has subscribed to. Different types As it is possible to use jQuery and other ways to subscribe to events, Visual Event is able to recognize which method the developer used to subscribe to events for a specific element. Chrome’s event monitor ref. http://developer.chrome.com/devtools/docs/ console#monitoring-events Console API: event monitor Chrome and other browsers, as part of the console API, offers the possibility to monitor events. monitorEvents(document.body,”click”); unmonitorEvents(document.body); monitorEvents(document.body);
  • 12. TRACKING EVENTS: DIY Instead of using external tools and libraries doing magic, you can develop easily a way to track events in every web application. 2.6.2 <head> ... <script src=”...”></script> <script src=”mylib.js”></script> </head> 1. Define the library Create a separate js file and put there the function. This file must be included as LAST library in your web application. 2. Override subscription Override event subscription functions. HTMLElement.prototype.addEventListener = function(type,listener,useCapture) {...}; HTMLElement.prototype.removeEventListener = function(type,listener,useCapture) {...}; 3. Implement logging logic Log everytime the event traverses an element. // Attention: Pseudo-Code! var log = function(fun) {...} function(type,listener,uc) { this.oldAEL(type,function(){log(fun)},uc); for (ancenstor in this.ancestors) { ancestor.oldAEL(type,log,uc); } }; TODO
  • 13. My thoughts on this TOWARDS A BETTER STYLING EXPERIENCE What the world out there can offer to improve styling web applications with CSS 3
  • 14. DISCOVERING SASS AND LESS A very useful tool to create better CSS stylesheets without the chaos of CSS. 3.1 SASS http://sass-la ng.com LESS http://lesscss. org SASS Playground http://sassmeister.com/ SASS vs LESS https://css-tricks.com/sass-vs-less/ LESS Playground http://lesscssismore.com Higher level CSS SASS Syntactically Awesome StyleSheets provides developers with a more structured language. Sadly is that it cannot be installed through NPM :( gem install sass LESS aka Less CSS. Same as SASS but with some different features and slightly different syntax. Ah, it is NPM ready :) npm install -g less GOOD COND.STRUCT.BETTER SYNTAX BETTER CSS OUTPUT BETTER DOC
  • 15. TOWARDS OBJECT ORIENTED CSS OO principles applied to CSS or what? 3.2 :( :) OOCSS http://www.smashingmagazine.co m/2011/12/12/an-introduction-to- object-oriented-css-oocss/ Writing better CSS .button { width: 200px; height: 50px; padding: 10px; border: solid 1px #ccc; } .box { width: 400px; height: 100px; border: solid 1px #000; background-color: #fff; } .widget { width: 500px; height: 200px; border: solid 1px #ccc; background-color: #fce; } Avoid duplication Like in OOP, it is good to act by the principle of less possible redundancy. .button { width: 200px; height: 50px; } .box { width: 400px; height: 100px; } .widget { width: 500px; height: 200px; } Separate concerns Identify what’s specific to each object and remove non-specific rules. :) .skin { padding: 10px; border: solid 1px #ccc; background-color: #efe; } .button.skin { background-color: inherit; } Use methods Use common rules changing with context. .box.skin { padding: 0; border-color: #000; background-color: #fff; } .widget.skin { padding: 0; background-color: #fce; }
  • 16. CRAZY PREFIXING SOLVED One of the most annoying things about CSS is that many features arenot fully implemented by browsers, many rules have prefixes, this makes CSS ugly! 3.3 MDN https://developer.mozilla.org/en-US /docs/Web/CSS Autoprefixer https://github.com/postc ss/autoprefixer Playground http://jsbin.com/ gufoko/ Playground http://pleeease.io/ play Should I prefix? How can I know whether a CSS rule should be prefixed or not? Use MDN, search the CSS rule and find the Browser Compatibility matrix! Or better do it automatically There are some tools which perform auto-prefixing on your CSS sylesheets. These can be used on your CSS, SASS, Stylus or even LESS files. Autoprefixer Very efficient and fast tool. SASS Pleeease http://pleeease.io Pleeease Flexible and does everything. npm install -g autoprefixer LESS STYLUS npm install -g pleeease-cli
  • 17. MANAGE YOUR COLOR PALETTES Very important tools for UX designers to style web applications and keep color palettes always in order. 3.4 Adobe Color CC https://color.adobe.com/ Color Hex http://www.color -hex.com/ For professionals Adobe sure delivers amazing applications for designers and Color CC (formerly knows as Kuler) is one of these. Not so advanced ones... Other solutions which are not as good as Adobe’s but provide a very good level of color palette handling in the Cloud. COLOR RULES SHARINGFROM IMAGE COLOR WHEEL Color-Hex This provides basic features. ColourLovers http://www.colourlo vers.com/ Color-Hex This provides basic features. PATTERNS
  • 18. My thoughts on this IMPROVING PRODUCTIVITY A miscellaneous of tools on the Web to improve development experience in general 4
  • 19. INSPECT HTTP COMMUNICATIONS When developing web applications, AJAX calls are something more than common (especially in SPAs), some tools can help you see what’s going on the channel. 4.1 Telerik Fiddler http://www.telerik.com/fiddler SERVER 127.0.0.1:80 CLIENT Browser Debugging AJAX calls Web applications will naturally send and receive information with the server. AJAX calls are also quite a common thing, but sometimes we need to debug data and having a look at what’s going on on the channel is a very good thing to have! Fiddler By Telerik, it is one of the most used HTTP proxy and sniffer. It has many capabilities ad can be customized using a programming language. JSCRIPT PRGRMMBLE REVERSE PROXY CUSTOM RULES
  • 20. DISCOVERING ADOBE EDGE ANIMATE Creating Javascript based animations with a timeline based tool is like having Adobe Flash... without the need of the SWF Player :) 4.2 Adobe Edge Animate https://creative.adobe.com/product s/animate Animating like in Flash I started developing Flash presentations when Flash was still Macromedia’s (5.0). Now unfortunately the market has moved away from it, but with Edge Animate it is still possible to have the same authoring experience, and this is awesome! width: height: x: y: Timeline based animation design is a very effective way to create animations. Javascript The very nice thing of Animate is that the output is a bunch of Javascript, CSS and HTML files. Adobe guarantees that animations are cross browser :)
  • 21. DOES MY BROWSER SUPPORT IT? The most popular tool to discover which browser is implementing whatever feature. 4.3 Can I Use? http://caniuse.com/ HTML5 Test https://html5test.com/ Can I Use? Does Chrome fully support multiple columns? Does IE support CSS animations? Yes? What about IE10? And FireFox? Opera? All those questions can have an answer by simply using CanIUse! Always updates CanIUse is always updated with latest info about support of standards by browsers. Some tools even use CanIUse to keep their database updated. HTML5 Test Support for newly come HTML5 features can be something important to keep in track. The nice thing of HTML5Test is that you will not be presented with a support matrix, the tool will run a set of tests on your browser and give you results for that specific version! Other browsers The tool also offers the possibility to evaluate other browsers and even compare support!
  • 22. My thoughts on this DEVELOPING CROSS PLATFORM HYBRID APPS Today’s most popular tools for creating apps on different stores with the same code base 5
  • 23. THE WORLD AROUND HYBRID APPS The main actors on the stage of cross platform apps 5.1 Cordova https://cordova.apach e.org/ Hybrid app Developed in HTML + CSS + JS mostly PhoneGap http://phonegap.com Appium http://appium.io/ Selenium http://www.seleniumhq.org/ HTML5 + CSS + JS Supported platforms’SDKs https://developer.android. com/sdk/index.html https://developer.apple.c om/xcode/ Specialization Used to develop
  • 24. HOW AN HYBRID APP IS BUILT Once upon a time... 5.2 WebView Native app Webview A mini-browser hosted by apps From web applications Hybrid apps basically originate from web applications. The process simply consists in considering a web applications and then building apps which embody a Webview connecting to the same server to download the HTML content. Tooling Cordova, while generating the apps, will also include libraries to handle communications between the native layer and the webview.
  • 25. WHAT CORDOVA DOES Actually, nothing so somplicated. 5.3 Android Webview webkit.WebView iOS Webview UIView::UIWebView Win Webview WebView Unix Android MacOS Android iOS Windows Android Win Creating an app Cordova will generate a very simple app consisting in a Canvas element together with a WebView element on top covering all the screen. Since the app to build is always the same, instead of having developers do that, Cordova automates this process. npm install -g cordova
  • 26. HOW TO CREATE APPS WITH CORDOVA From command line, just a few commands and there you can go. 5.3.2 For Windows cordova prepare windows cordova compile windows For Android cordova prepare android cordova compile android For iOS cordova prepare ios cordova compile ios Win output myapp.appx Android output myapp.apk iOS output myapp.ipa Configuration package.json config.xml
  • 27. This work is distributed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license. THANK YOU Twitter: @_atino E-Mail: andry.tino@hotmail.com The end