SlideShare a Scribd company logo
AngularJS: Good parts
Евгений Жарков
DOOR3
@2j2e
eu.zharkov@gmail.com
Watchers ]:>
Track Watchers
Angular adds a watcher to the digest cycle for each of these:
• {{expression}} — templates
• $scope.$watch — in the code
Track Watchers
function	getWatchers(root)	{	
		root	=	angular.element(root	||	document.documentElement);	
		var	watcherCount	=	0;	
		
		function	getElemWatchers(element)	{	
				var	isolateWatchers	=	getWatchersFromScope(element.data().$isolateScope);	
				var	scopeWatchers	=	getWatchersFromScope(element.data().$scope);	
				var	watchers	=	scopeWatchers.concat(isolateWatchers);	
				angular.forEach(element.children(),	function	(childElement)	{	
						watchers	=	watchers.concat(getElemWatchers(angular.element(childElement)));	
				});	
				return	watchers;	
		}	
			
		function	getWatchersFromScope(scope)	{	
				if	(scope)	{	
						return	scope.$$watchers	||	[];	
				}	else	{	
						return	[];	
				}	
		}	
		
		return	getElemWatchers(root);	
}	
https://gist.github.com/kentcdodds/31c90402750572107922
Track Watchers
//	get	all	watchers	on	the	whole	page	
getWatchers();	
//	get	watchers	of	a	specific	element	(and	its	children)	
getWatchers(document.body);	
//	select	the	element	of	interest	in	Chrome	Dev	tools	
getWatchers($0);
Евгений Жарков AngularJS: Good parts
Track Watchers
Евгений Жарков AngularJS: Good parts
Евгений Жарков AngularJS: Good parts
Евгений Жарков AngularJS: Good parts
https://github.com/kentcdodds/ng-stats
AngularJS > ES6
ES6, require.js
function	MainController	()	{	
……………	
			
}	
export	{	MainController	}	
—————————————————————————————————————	
import	{	MainController	}	from	‘./path/to/MainController';	
……………
ES6, require.js
class	MainController	{	
				constructor(searchService)	{	
								this.searchService	=	searchService;	
				}	
				search	()	{	
								this.searchService	
												.fetch(this.searchTerm)	
												.then(response	=>	{	
																this.items	=	response.data.items;	
												});	
				}	
}	
export	{	MainController	}
ES6, require.js
import	{	MainController	}	from	'./MainController';	
import	{	SearchService	}	from	'./SearchService';	
angular	
				.module('app',	[])	
				.controller('mainController',	MainController)	
				.service('searchService',	SearchService);
Inheritance
class	PageController	{	
				constructor(title)	{	
								this._title	=	title;	
				}	
				title	()	{	
								return	'Title:	'	+	this._title;	
				}	
}	
export	{	PageController	}
Inheritance
import	{	PageController	}	from	'./PageController';	
class	ProductPageController	extends	PageController	{	
				constructor()	{	
								super('ES6	inheritance	with	Angular’);	
				}	
}	
export	{	ProductPageController	}
Inheritance
import	{	ProductPageController	}	from	'./ProductPageController';	
angular	
				.module('app',	[])	
				.controller('ProductPageController',	ProductPageController);
Service Inheritance
myModule.service(fn)	
YES, instantiated with the new operator under the hood
myModule.factory(fn)
NO
Don’t forget about minification
MainController.$inject	=	['SearchService'];
and/or ng-annotate
export	default	class	NameService	{	
		/*@ngInject*/	
		constructor($q)	{	..	}	
}
ES6 Babel Browserify Boilerplate
https://github.com/thoughtram/es6-babel-browserify-boilerplate
Angular ES6
https://github.com/michaelbromley/angular-es6
AngularJS > ES6 > Tests
ES5, Karma, Jasmine, PhantomJS
describe('TodoService',	function()	{	
				var	TodoService,	InitialTodosMock;	
				//	Instantiate	Angular	JS	context	
				beforeEach(module("app"));	
				//	Register	mocks	in	Angular	JS	context	
				beforeEach(module(function($provide)	{	
								InitialTodosMock	=	[	
												{	
																label:	'Test	todo',	
																done:	false	
												}	
								];	
								$provide.value('initialTodos',	InitialTodosMock);	
				}));	
				//	Get	instance	of	TodoService	with	mocked	dependencies	from	Angular	JS	context	
				beforeEach(inject(function	(_TodoService_)	{	
								TodoService	=	_TodoService_;	
				}));	
				//	Oh,	...	do	the	actual	testing	!!!	
				it('should	have	initial	todo',	function()	{	
								expect(TodoService.todos.length).toBe(1);	
								expect(TodoService.todos[0].label]).toBe('Test	todo');	
								expect(TodoService.todos[0].done]).toBe(false);								
				});	
});
ES5, Karma, Jasmine, PhantomJS
describe('TodoController',	function()	{	
				var	scope,	$rootScope,	$controller;	
				//	Instantiate	Angular	JS	context	
				beforeEach(module('app'));	
				//	Register	mocks	in	Angular	JS	context		
				//	(sometimes	not	necessary,	we	can	use	real	services	too,	but	the	Angular	context	grows...)	
				beforeEach(module(function($provide)	{	
								var	TodoServiceMock	=	{	
												todos:	[],	
												addTodo:	function()	{	/*……*/	},	
												toggleTodo:	function()	{	/*……*/	},	
												removeDoneTodost()	{	/*……*/	}	
								};	
								$provide.value('TodoService',	TodoServiceMock);	
				}));	
				//	Get	instance	of	TodoController,	you	know,	create	new	$scope	from	$rootScope	by	yourself	and	stuff...	
				//	It	is	possible	to	not	use	$scope	when	using	'controllerAs'	syntax,		
				//	but	you	still	have	to	use	at	least	$controller	to	get	the	refference	to	controller	itself	
				beforeEach(inject(function(_$rootScope_,	_$controller_,	_TodoService_){	
								$controller	=	_$controller_;	
								$rootScope	=	_$rootScope_;	
								scope	=	$rootScope.$new();	
								$controller('TodoController',	{	
												$scope:	scope	
												TodoService:	_TodoService_	
								});	
				}));	
					
				//	Oh,	...	do	the	actual	testing	!!!	
				it('should	have	initial	todos',	function()	{	
								expect(scope.todos.length).toBe(1);	
				});	
});
Issues
• Angular context module(‘app’) must be instantiated to be able to do any
testing. Without Angular context you can’t get access (reference) to your
controllers / services.
• Angular and all other used libraries must be included during testing so that it
is even possible to instantiate Angular context.
• Angular context can grow quite large so that it’s creation will consume
considerable amount of time for every test file.

• Karma exclusion syntax doesn’t follow standard node glob pattern which
can make you go crazy when you try to solve timeout errors caused by
insufficient memory on PhantomJS by splitting test execution into
multiple batches, while supporting dev mode single test execution
(karma uses extra exclude property instead of supporting standard “!”)
ES6, Mocha, chai
import	{	assert	}	from	'chai';	
import	TodoService	from	'./todo.service.js';	
let	service;	
describe('TodoService',	function()	{	
				beforeEach(function()	{	
								service	=	TodoService();	
				});	
				it('should	contain	empty	todos	after	initialization',	function	()	{	
								assert.equal(service.todos.length,	0);	
				});	
				it('should	toggle	todo',	function	()	{	
								service.addTodo('Finish	example	project');	
								assert.equal(service.todos[0].done,	false);	
								service.toggleTodo('Finish	example	project');	
								assert.equal(service.todos[0].done,	true);	
								service.toggleTodo('Finish	example	project');	
								assert.equal(service.todos[0].done,	false);	
				});	
});
ES6, Mocha, chai
import	{	assert	}	from	'chai';	
import	SomeComponent	from	‘./some-component';	
let	component;	
describe('some-component',	function()	{	
				beforeEach(function()	{	
								component	=	new	SomeComponent();	
				});	
				it('should	start	with	counter	value	20',	function	()	{	
								assert.equal(component.counter,	20);	
				});	
				it('should	accept	initial	counter	value	as	dependency',	function	()	{	
								component	=	new	SomeComponent(30);	
								assert.equal(component.counter,	30);	
				});	
				it('should	increment	counter	value	after	increment	is	called',	function	()	{	
								assert.equal(component.counter,	20);	
								component.increment();	
								assert.equal(component.counter,	21);	
				});	
});
Dependencies are passed explicitly as a parameter of function
Dig, read, criticise
• Pagination

https://github.com/michaelbromley/angularUtils/tree/master/src/directives/pagination
• angular-formly 

http://angular-formly.com/
• angular-translate

https://angular-translate.github.io
• LumX (material design) 

http://ui.lumapps.com

angular-formly
<formly-form	model="vm.user"	fields="vm.userFields">	
		<button	type="submit"	class="btn	btn-default"		
ng-click="vm.submit(vm.user)">Submit</button>	
</formly-form>
angular-formly
vm.userFields	=	[	
				{	
						key:	'email',	
						type:	'input',	
						templateOptions:	{	
								type:	'email',	
								label:	'Email	address',	
								placeholder:	'Enter	email'	
						}	
				},	{	
						key:	'password',	
						type:	'input',	
						templateOptions:	{	
								type:	'password',	
								label:	'Password',	
								placeholder:	'Password'	
						}	
				},		
{	
						key:	'file',	
						type:	'file',	
						templateOptions:	{	
								label:	'File	input',	
								description:	'Example	block-
level	help	text	here',	
								url:	'https://example.com/
upload'	
						}	
				},	{	
						key:	'checked',	
						type:	'checkbox',	
						templateOptions:	{	
								label:	'Check	me	out'	
						}	
				}	
		];
Pagination
<ANY	
				dir-paginate="expression	|	itemsPerPage:	(int|
expression)	[:	paginationId	(string	literal)]"	
				[current-page=""]	
				[pagination-id=""]	
				[total-items=""]>	
				...	
				</ANY>
Pagination
<dir-pagination-controls	
				[max-size=""]	
				[direction-links=""]	
				[boundary-links=""]	
				[on-page-change=""]	
				[pagination-id=""]	
				[template-url=""]	
				[auto-hide=""]>	
				</dir-pagination-controls>
Евгений Жарков AngularJS: Good parts

More Related Content

What's hot (17)

PPTX
The redux saga begins
Daniel Franz
 
PDF
Using Android Things to Detect & Exterminate Reptilians
Nilhcem
 
PPTX
Client-side Rendering with AngularJS
David Lapsley
 
PDF
Art & music vs Google App Engine
thomas alisi
 
PDF
Side effects-con-redux
Nicolas Quiceno Benavides
 
PPTX
Owl: The New Odoo UI Framework
Odoo
 
PDF
Redux Sagas - React Alicante
Ignacio Martín
 
PPTX
Async Redux Actions With RxJS - React Rally 2016
Ben Lesh
 
PDF
Dpilot Source Code With ScreenShots
DeepAnshu Sharma
 
PDF
Source Code for Dpilot
Nidhi Chauhan
 
PDF
Swift Montevideo Meetup - iPhone, una herramienta medica
Washington Miranda
 
PDF
Tweaking the interactive grid
Roel Hartman
 
PDF
Redux saga: managing your side effects. Also: generators in es6
Ignacio Martín
 
PDF
The evolution of redux action creators
George Bukhanov
 
PDF
You will learn RxJS in 2017
名辰 洪
 
PPTX
Get started with YUI
Adam Lu
 
PDF
Home Automation with Android Things and the Google Assistant
Nilhcem
 
The redux saga begins
Daniel Franz
 
Using Android Things to Detect & Exterminate Reptilians
Nilhcem
 
Client-side Rendering with AngularJS
David Lapsley
 
Art & music vs Google App Engine
thomas alisi
 
Side effects-con-redux
Nicolas Quiceno Benavides
 
Owl: The New Odoo UI Framework
Odoo
 
Redux Sagas - React Alicante
Ignacio Martín
 
Async Redux Actions With RxJS - React Rally 2016
Ben Lesh
 
Dpilot Source Code With ScreenShots
DeepAnshu Sharma
 
Source Code for Dpilot
Nidhi Chauhan
 
Swift Montevideo Meetup - iPhone, una herramienta medica
Washington Miranda
 
Tweaking the interactive grid
Roel Hartman
 
Redux saga: managing your side effects. Also: generators in es6
Ignacio Martín
 
The evolution of redux action creators
George Bukhanov
 
You will learn RxJS in 2017
名辰 洪
 
Get started with YUI
Adam Lu
 
Home Automation with Android Things and the Google Assistant
Nilhcem
 

Viewers also liked (20)

PDF
Алексей Волков "Интерактивные декларативные графики на React+D3"
Fwdays
 
PDF
"Frameworks in 2015" Андрей Листочкин
Fwdays
 
PDF
4 puchnina.pptx
Fwdays
 
PDF
Андрей Шумада | Tank.ly
Fwdays
 
PDF
Анатолий Попель: "Формы оплаты и платёжные шлюзы"
Fwdays
 
PDF
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Fwdays
 
PDF
Илья Прукко: "Как дизайнеру не становиться художником"
Fwdays
 
PDF
Designing for Privacy
exultantwarning51
 
PDF
Fighting Fat Models (Богдан Гусев)
Fwdays
 
PPTX
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
Fwdays
 
PDF
Александр Воронов | Building CLI with Swift
Fwdays
 
PDF
Евгений Обрезков "Behind the terminal"
Fwdays
 
PPTX
Швейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
Fwdays
 
PDF
Michael North "The Road to Native Web Components"
Fwdays
 
PDF
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Fwdays
 
PDF
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Fwdays
 
PPT
"Spring Boot. Boot up your development" Сергей Моренец
Fwdays
 
PPTX
"Красная книга веб-разработчика" Виктор Полищук
Fwdays
 
PDF
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
Fwdays
 
PPTX
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Fwdays
 
Алексей Волков "Интерактивные декларативные графики на React+D3"
Fwdays
 
"Frameworks in 2015" Андрей Листочкин
Fwdays
 
4 puchnina.pptx
Fwdays
 
Андрей Шумада | Tank.ly
Fwdays
 
Анатолий Попель: "Формы оплаты и платёжные шлюзы"
Fwdays
 
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Fwdays
 
Илья Прукко: "Как дизайнеру не становиться художником"
Fwdays
 
Designing for Privacy
exultantwarning51
 
Fighting Fat Models (Богдан Гусев)
Fwdays
 
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
Fwdays
 
Александр Воронов | Building CLI with Swift
Fwdays
 
Евгений Обрезков "Behind the terminal"
Fwdays
 
Швейцарія, масштабування Scrum і розподілені команди от Романа Сахарова
Fwdays
 
Michael North "The Road to Native Web Components"
Fwdays
 
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Fwdays
 
Павел Тайкало: "Optimistic Approach : How to show results instead spinners wi...
Fwdays
 
"Spring Boot. Boot up your development" Сергей Моренец
Fwdays
 
"Красная книга веб-разработчика" Виктор Полищук
Fwdays
 
"После OOD: как моделировать предметную область в пост-объектном мире" Руслан...
Fwdays
 
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Fwdays
 
Ad

Similar to Евгений Жарков AngularJS: Good parts (17)

PPTX
Optimizing a large angular application (ng conf)
A K M Zahiduzzaman
 
PDF
Javascript Memory leaks and Performance & Angular
Erik Guzman
 
PPT
angularjsmeetup-150303044616-conversion-gate01
Teo E
 
PPT
Angular js meetup
Pierre-Yves Gicquel
 
PPTX
AngularJS Best Practices
Narek Mamikonyan
 
PPTX
Scope demystified - AngularJS
Sumanth krishna
 
PDF
Data binding in AngularJS, from model to view
Thomas Roch
 
PPTX
AngularJS, More Than Directives !
Gaurav Behere
 
PPTX
5 angularjs features
Alexey (Mr_Mig) Migutsky
 
PDF
Dragos Rusu - Angular JS - Overcoming Performance Issues - CodeCamp-10-may-2014
Codecamp Romania
 
PDF
AngularJS - Overcoming performance issues. Limits.
Dragos Mihai Rusu
 
PDF
AngularJS Basics
Ravi Mone
 
PPTX
AngularJs presentation
Phan Tuan
 
PPTX
AngularJS.part1
Andrey Kolodnitsky
 
PPTX
Angular workshop - Full Development Guide
Nitin Giri
 
PPTX
JavaScripters Event Oct 22, 2016 · 2:00 PM: Common Mistakes made by Angular D...
JavaScripters Community
 
PDF
AngularJS Workshop
Gianluca Cacace
 
Optimizing a large angular application (ng conf)
A K M Zahiduzzaman
 
Javascript Memory leaks and Performance & Angular
Erik Guzman
 
angularjsmeetup-150303044616-conversion-gate01
Teo E
 
Angular js meetup
Pierre-Yves Gicquel
 
AngularJS Best Practices
Narek Mamikonyan
 
Scope demystified - AngularJS
Sumanth krishna
 
Data binding in AngularJS, from model to view
Thomas Roch
 
AngularJS, More Than Directives !
Gaurav Behere
 
5 angularjs features
Alexey (Mr_Mig) Migutsky
 
Dragos Rusu - Angular JS - Overcoming Performance Issues - CodeCamp-10-may-2014
Codecamp Romania
 
AngularJS - Overcoming performance issues. Limits.
Dragos Mihai Rusu
 
AngularJS Basics
Ravi Mone
 
AngularJs presentation
Phan Tuan
 
AngularJS.part1
Andrey Kolodnitsky
 
Angular workshop - Full Development Guide
Nitin Giri
 
JavaScripters Event Oct 22, 2016 · 2:00 PM: Common Mistakes made by Angular D...
JavaScripters Community
 
AngularJS Workshop
Gianluca Cacace
 
Ad

More from Fwdays (20)

PDF
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
Fwdays
 
PDF
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
PPTX
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
Fwdays
 
PPTX
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
PPTX
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
PDF
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
PPTX
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
PDF
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
PDF
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
PPTX
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
PPTX
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
PPTX
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
PPTX
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
Fwdays
 
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
Fwdays
 
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 

Recently uploaded (20)

PDF
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
PPTX
Top Managed Service Providers in Los Angeles
Captain IT
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
HydITEx corporation Booklet 2025 English
Георгий Феодориди
 
PDF
Bitcoin+ Escalando sin concesiones - Parte 1
Fernando Paredes García
 
PDF
HR agent at Mediq: Lessons learned on Agent Builder & Maestro by Tacstone Tec...
UiPathCommunity
 
PDF
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
PDF
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
PDF
Rethinking Security Operations - SOC Evolution Journey.pdf
Haris Chughtai
 
PDF
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
PDF
How Current Advanced Cyber Threats Transform Business Operation
Eryk Budi Pratama
 
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
Top Managed Service Providers in Los Angeles
Captain IT
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
CloudStack GPU Integration - Rohit Yadav
ShapeBlue
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
HydITEx corporation Booklet 2025 English
Георгий Феодориди
 
Bitcoin+ Escalando sin concesiones - Parte 1
Fernando Paredes García
 
HR agent at Mediq: Lessons learned on Agent Builder & Maestro by Tacstone Tec...
UiPathCommunity
 
Why Orbit Edge Tech is a Top Next JS Development Company in 2025
mahendraalaska08
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
Rethinking Security Operations - SOC Evolution Journey.pdf
Haris Chughtai
 
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
How Current Advanced Cyber Threats Transform Business Operation
Eryk Budi Pratama
 

Евгений Жарков AngularJS: Good parts