SlideShare a Scribd company logo
От экспериментов с инфраструктурой
до внедрения в продакшен
Дмитрий Махнёв
Работаю в ok.ru
Делаю m.ok.ru
О себе
Автоматизация
Концентрация на новых задачах
Снижение порога входа
Улучшение стабильности
.sidebar {

...

}

.sidebar.__active {

...

}



.sidebar_item {

...

}

.sidebar_item.__selected {

...

}
∞
∞
∞
∞
/*



sidebar __active

sidebar_item (__selected)



*/
CSSG
.sidebar {

...

}

.sidebar.__active {

...

}



.sidebar_item {

...

}

.sidebar_item.__selected {

...

}
/*



sidebar __active

sidebar_item (__selected)



*/
HTML Parse
CSSG Tree
CSSG Render
HTML Parse
CSSG Tree
CSSG Render
CSS Parse …
Write in File
HTML Parse
<div class="sidebar __active">

<div class="sidebar_item">Item 1</div>

<div class="sidebar_item __selected">Item 2</div>

<div class="sidebar_item">Item 3</div>
<div class="sidebar_item">Item 4</div>
<div class="sidebar_item">Item 5</div>

</div>
Testing
describe('math test', function () {


it('sum works correct', function () {

expect(sum(1, 1)).toBe(2);

});


it('difference works correct', function () {

expect(difference(1, 1)).toBe(0);

});


});


describe('tests types', function () {



it('sync', function () {

expect(true).toBeTruthy();

});



it('async', function (done) {

setTimeout(function () {

expect(true).toBeTruthy();

done();

}, 100);

});


});
Link coming soon…
Unit Testing
Test Driven Development (TDD)
Black Box Testing
✓ Testing
describe('password security level', function () {



it('50%', function () {



expect(passwordSecurityLevel('qwerty')).toBe(50);



});



});
Testing Private Methods
Black
Box
Input Output
describe('one div with attributes', function () {



var simpleDOMResult = parse(
'<div class="block" data-foo="bar"></div>'
);


var div = simpleDOMResult.childNodes[0];



defaultDivTests(div);



});
Testing Private Methods
/**

*

* @param {ContextOfParse} contextOfParse

* @param {String} char

*/

processings[TEXT] = function (contextOfParse, char) {

addCharForBuffer(contextOfParse, char);



switch (char) {

case '<':

contextOfParse.state = TAG_START;

break;

default:

contextOfParse.textBuffer += char;

}

};
/*@defaultTesting.exports*/


processingsExport.processingText = processings[TEXT];

/*@/defaultTesting.exports*/
/**

*

* @param {String} xml

* @return {Object} simpleDOM

*/

module.exports = function (xml) {

var contextOfParse = new ContextOfParse(),

i = 0,

iMax = xml.length,

result;



for (; i < iMax; i += 1) {

processings[contextOfParse.state](contextOfParse, xml.charAt(i));

}



processingResultState(contextOfParse);



result = contextOfParse.result;

contextOfParse.destructor();



return result;

};
Tests Runners
✓ Testing
✓ Black Box Testing
Karma — Test Runner for JavaScript
Link coming soon…
Runner Workflow
var config = readConfig();



config.browsers.each(function(browser){



var result = startBrowser(browser, config.code);



console.output(processingResult(result));



});
Dependency manager
✓ Testing
✓ Black Box Testing
✓ Tests Runners
require('module');
Package Managers
Front-endBack-end & Console
require('../../../../src/default-lib');
Link coming soon…
var cycle = require('default-lib').cycle;
var webpack = require('webpack');



module.exports = {

entry: './entry.js',

output: {

path: __dirname,

filename: 'bundle.js'

}

};
webpack.config.js
var defaultLib = {};



defaultLib.getGlobal = require('./utils/getGlobal');

defaultLib.typesDetection = require('./utils/typesDetection');

defaultLib.getObjectKeys = require('./utils/getObjectKeys');

defaultLib.getObjectLength = require('./utils/getObjectLength');

defaultLib.cycleKeys = require('./utils/cycle/cycleKeys');

defaultLib.cycle = require('./utils/cycle/cycle');

defaultLib.reversiveCycle = require('./utils/cycle/reversiveCycle');

defaultLib.getObjectSafely = require('./utils/getObjectSafely');

defaultLib.onload = require('./utils/onload');



module.exports = defaultLib;
Entry Point
/* 0 */

/***/ function(module, exports, __webpack_require__) {



document.write(__webpack_require__(1));

document.body.addEventListener('click', function () {

});



/***/ },

/* 1 */

/***/ function(module, exports, __webpack_require__) {



module.exports = 'It works from content.js';



/***/ }
Part of webpack Bundle
webpack: {

resolve: {

root: [

path.join(__dirname, 'bower_components'),

path.join(__dirname, 'src')

]

},

plugins: [

new webpack.ResolverPlugin(

new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin(
'bower.json',
['main']
)

)

]

}
webpack for karma.config.js
files: [

'tests/specs/simple-dom.js',

'tests/specs/modules/nodes.js',

'tests/specs/modules/parse/defaultTesting.exports.simpleDOM.parse/'

+ 'defaultTesting.exports.simpleDOM.parse.js',

'tests/specs/modules/parse/defaultTesting.exports.simpleDOM.parse/'

+ 'contextOfParse.js',

'tests/specs/modules/parse/defaultTesting.exports.simpleDOM.parse/'

+ 'microhelpers/**/*.js',

'tests/specs/modules/parse/defaultTesting.exports.simpleDOM.parse/'

+ 'builders/**/*.js',

'tests/specs/modules/parse/defaultTesting.exports.simpleDOM.parse/'

+ 'processings/**/*.js',

'tests/specs/modules/parse/parse.js',

'tests/specs/modules/selectors/parseSelector.js'

]
var path = require('path');

var webpack = require('webpack');

var bowerConfig = require('./bower');



module.exports = {



entry: path.resolve(bowerConfig.main),



output: {

path: path.resolve(bowerConfig.dist),

filename: bowerConfig.umdName + '.js',

libraryTarget: 'umd',

library: bowerConfig.umdName

},



plugins: [

new webpack.ResolverPlugin(

new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin(

'bower.json',

['main']

)

),

new webpack.optimize.UglifyJsPlugin()

]

};
webpack.config.js
/*@defaultTesting.exports*/

processingsExport.processingText = processings[TEXT];

/*@/defaultTesting.exports*/
/**

*

* @param {ContextOfParse} contextOfParse

* @param {String} char

*/

processings[TEXT] = function (contextOfParse, char) {

addCharForBuffer(contextOfParse, char);



switch (char) {

case '<':

contextOfParse.state = TAG_START;

break;

default:

contextOfParse.textBuffer += char;

}

};



/*@defaultTesting.exports*/

processingsExport.processingText = processings[TEXT];

/*@/defaultTesting.exports*/
/* 0 */

/***/ function(module, exports, __webpack_require__) {



document.write(__webpack_require__(1));

document.body.addEventListener('click', function () {

});



/***/ },

/* 1 */

/***/ function(module, exports, __webpack_require__) {



module.exports = 'It works from content.js';



/***/ }
Part of webpack Bundle
webpack Workflow
var config = readConfig();

var files = [config.entry];

var bundleParts = [];



while (files.length !== 0) {



var file = loadFile(files.shift());



var ast = parseToASR(

file, 

function (linkOnFile) {

files.push(linkOnFile)

}

);



bundleParts.push(ast);



}



createBundle(bundleParts);
module: {

loaders: [

//loader removes code for testing

{

test: /^.*$/,

loader: 'regexp',

rules: [

{

'for': /regExpRule/g,

'do': ''

}

]

}

]

}
webpack.config.js loader
/*@defaultTesting.{{mode}}*/



/*@/defaultTesting.{{mode}}*/
Tasks Runner
✓ Testing
✓ Black Box Testing
✓ Tests Runners
✓ Dependency manager
Tasks Runners
Synchronously
I/Oⁿ
Streams
JS
Run Tests
Build bundle
JS
Run Tests
Build bundle Generate Doc
Commit Publish Publish × 2
gulp-run-sequence
var runSequence = require('gulp-run-sequence');



gulp.task('default', function () {

runSequence(

'build:test',

['build:dist', 'build:commit', 'build:docs'],

'build:publish'

);

});
Environment
✓ Testing
✓ Black Box Testing
✓ Tests Runners
✓ Dependency manager
✓ Tasks Runner
npm i
it('key input add 2 symbols ', function (done) {

define('',

[

'/res/js/modules/dom/domTraverse.js',

'/res/js/modules/inputWithCounter.js'

],

function (traverse, inputWithCounter) {

var initedInput = initInputWithCounterFor(

inputWithCounter,

tmpl2CountersAndWrapper

);

var counterTextNode = findCounter(initedInput, 0, traverse.getTextNode);

var counter2TextNode = findCounter(initedInput, 1, traverse.getTextNode);

var instance = initedInput.instance;

var input = instance.input;

var startValueLength = instance.valueLength;

var valueLength;



effroi.mouse.focus(input);

effroi.keyboard.hit('1', '1');



valueLength = instance.valueLength;

expect(valueLength - startValueLength).toBe(2);

expect(valueLength).toBe(+counterTextNode.nodeValue);

expect(valueLength).toBe(+counter2TextNode.nodeValue);



done();

}

);

});
inputWithCounter Test From m.ok.ru
var keyboard = require('effroi').keyboard;



keyboard.focus(element);



keyboard.hit('a'); 

keyboard.hit('b','c','d');



keyboard.combine(keyboard.CTRL, 'v');
describe('angularjs homepage todo list', function () {

it('should add a todo', function () {

browser.get('http://www.angularjs.org');



element(by.model('todoText')).sendKeys('write a protractor test');

element(by.css('[value="add"]')).click();



var todoList = element.all(by.repeater('todo in todos'));

expect(todoList.count()).toEqual(3);

expect(todoList.get(2).getText()).toEqual('write a protractor test');

});

});
wallaby.js
Ссылки
http://bit.ly/fdc_dm

More Related Content

What's hot

AngularJS.part1
AngularJS.part1AngularJS.part1
AngularJS.part1
Andrey Kolodnitsky
 
Magento20100226
Magento20100226Magento20100226
Magento20100226
Hirokazu Nishi
 
IndexedDB - Querying and Performance
IndexedDB - Querying and PerformanceIndexedDB - Querying and Performance
IndexedDB - Querying and Performance
Parashuram N
 
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code ExampleMaven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
Nikhil Bhalwankar
 
Using of TDD practices for Magento
Using of TDD practices for MagentoUsing of TDD practices for Magento
Using of TDD practices for Magento
Ivan Chepurnyi
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your projectMichelangelo van Dam
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
Eyal Vardi
 
Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Ivan Chepurnyi
 
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Marco Tusa
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
Nishan Subedi
 
AngularJs $provide API internals & circular dependency problem.
AngularJs $provide API internals & circular dependency problem.AngularJs $provide API internals & circular dependency problem.
AngularJs $provide API internals & circular dependency problem.
Yan Yankowski
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shintutorialsruby
 
Backbone js
Backbone jsBackbone js
Backbone js
Rohan Chandane
 
Magento Indexes
Magento IndexesMagento Indexes
Magento Indexes
Ivan Chepurnyi
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
Sergey Bolshchikov
 
Drupal Module Development
Drupal Module DevelopmentDrupal Module Development
Drupal Module Development
ipsitamishra
 

What's hot (20)

Zend
ZendZend
Zend
 
AngularJS.part1
AngularJS.part1AngularJS.part1
AngularJS.part1
 
Magento20100226
Magento20100226Magento20100226
Magento20100226
 
IndexedDB - Querying and Performance
IndexedDB - Querying and PerformanceIndexedDB - Querying and Performance
IndexedDB - Querying and Performance
 
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code ExampleMaven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
 
Using of TDD practices for Magento
Using of TDD practices for MagentoUsing of TDD practices for Magento
Using of TDD practices for Magento
 
Django
DjangoDjango
Django
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
 
AngularJS Architecture
AngularJS ArchitectureAngularJS Architecture
AngularJS Architecture
 
Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)Making Magento flying like a rocket! (A set of valuable tips for developers)
Making Magento flying like a rocket! (A set of valuable tips for developers)
 
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
Accessing Data Through Hibernate; What DBAs Should Tell Developers and Vice V...
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
 
RicoLiveGrid
RicoLiveGridRicoLiveGrid
RicoLiveGrid
 
Alfredo-PUMEX
Alfredo-PUMEXAlfredo-PUMEX
Alfredo-PUMEX
 
AngularJs $provide API internals & circular dependency problem.
AngularJs $provide API internals & circular dependency problem.AngularJs $provide API internals & circular dependency problem.
AngularJs $provide API internals & circular dependency problem.
 
td_mxc_rubyrails_shin
td_mxc_rubyrails_shintd_mxc_rubyrails_shin
td_mxc_rubyrails_shin
 
Backbone js
Backbone jsBackbone js
Backbone js
 
Magento Indexes
Magento IndexesMagento Indexes
Magento Indexes
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
 
Drupal Module Development
Drupal Module DevelopmentDrupal Module Development
Drupal Module Development
 

Similar to От экспериментов с инфраструктурой до внедрения в продакшен

Modern frontend development with VueJs
Modern frontend development with VueJsModern frontend development with VueJs
Modern frontend development with VueJs
Tudor Barbu
 
Lecture: Webpack 4
Lecture: Webpack 4Lecture: Webpack 4
Lecture: Webpack 4
Sergei Iastrebov
 
Custom gutenberg block development in react
Custom gutenberg block development in reactCustom gutenberg block development in react
Custom gutenberg block development in react
Imran Sayed
 
! Modernizr v2.0.6 httpwww.modernizr.com Copyri.docx
!  Modernizr v2.0.6  httpwww.modernizr.com   Copyri.docx!  Modernizr v2.0.6  httpwww.modernizr.com   Copyri.docx
! Modernizr v2.0.6 httpwww.modernizr.com Copyri.docx
MARRY7
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
Astrails
 
case3h231diamond.gifcase3h231energy.jpgcase3h231moder.docx
case3h231diamond.gifcase3h231energy.jpgcase3h231moder.docxcase3h231diamond.gifcase3h231energy.jpgcase3h231moder.docx
case3h231diamond.gifcase3h231energy.jpgcase3h231moder.docx
tidwellveronique
 
Javascript ui for rest services
Javascript ui for rest servicesJavascript ui for rest services
Javascript ui for rest services
Ioan Eugen Stan
 
Code Splitting in Practice - Shanghai JS Meetup May 2016
Code Splitting in Practice - Shanghai JS Meetup May 2016Code Splitting in Practice - Shanghai JS Meetup May 2016
Code Splitting in Practice - Shanghai JS Meetup May 2016
Wiredcraft
 
Desbravando Web Components
Desbravando Web ComponentsDesbravando Web Components
Desbravando Web Components
Mateus Ortiz
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
David Gibbons
 
How to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI ComponentsHow to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI Components
cagataycivici
 
Private slideshow
Private slideshowPrivate slideshow
Private slideshowsblackman
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
Richard Leland
 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e bigAndy Peterson
 
The new static resources framework
The new static resources frameworkThe new static resources framework
The new static resources framework
marcplmer
 
Custom gutenberg block development with React
Custom gutenberg block development with ReactCustom gutenberg block development with React
Custom gutenberg block development with React
Imran Sayed
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
Richard Leland
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
Richard Leland
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
Richard Leland
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
Richard Leland
 

Similar to От экспериментов с инфраструктурой до внедрения в продакшен (20)

Modern frontend development with VueJs
Modern frontend development with VueJsModern frontend development with VueJs
Modern frontend development with VueJs
 
Lecture: Webpack 4
Lecture: Webpack 4Lecture: Webpack 4
Lecture: Webpack 4
 
Custom gutenberg block development in react
Custom gutenberg block development in reactCustom gutenberg block development in react
Custom gutenberg block development in react
 
! Modernizr v2.0.6 httpwww.modernizr.com Copyri.docx
!  Modernizr v2.0.6  httpwww.modernizr.com   Copyri.docx!  Modernizr v2.0.6  httpwww.modernizr.com   Copyri.docx
! Modernizr v2.0.6 httpwww.modernizr.com Copyri.docx
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
 
case3h231diamond.gifcase3h231energy.jpgcase3h231moder.docx
case3h231diamond.gifcase3h231energy.jpgcase3h231moder.docxcase3h231diamond.gifcase3h231energy.jpgcase3h231moder.docx
case3h231diamond.gifcase3h231energy.jpgcase3h231moder.docx
 
Javascript ui for rest services
Javascript ui for rest servicesJavascript ui for rest services
Javascript ui for rest services
 
Code Splitting in Practice - Shanghai JS Meetup May 2016
Code Splitting in Practice - Shanghai JS Meetup May 2016Code Splitting in Practice - Shanghai JS Meetup May 2016
Code Splitting in Practice - Shanghai JS Meetup May 2016
 
Desbravando Web Components
Desbravando Web ComponentsDesbravando Web Components
Desbravando Web Components
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
 
How to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI ComponentsHow to Mess Up Your Angular UI Components
How to Mess Up Your Angular UI Components
 
Private slideshow
Private slideshowPrivate slideshow
Private slideshow
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e big
 
The new static resources framework
The new static resources frameworkThe new static resources framework
The new static resources framework
 
Custom gutenberg block development with React
Custom gutenberg block development with ReactCustom gutenberg block development with React
Custom gutenberg block development with React
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 
Django at the Disco
Django at the DiscoDjango at the Disco
Django at the Disco
 

Recently uploaded

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 

Recently uploaded (20)

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 

От экспериментов с инфраструктурой до внедрения в продакшен