SlideShare a Scribd company logo
1 of 81
Download to read offline
LITTLE
BIG
ПРОЕКТ
Акт 1
:
Нам нужна игра
Нажмите любую клавишу
15 декабря 2020
Раз в год мы делаем конференцию
.
.
.
Все устали от онлайна, но мы хотим:
Затащить всех в онлайн на неделю


Наполнить чат людьми и сообщениями


Вернуть всех в день конференции
CTF
CTF — Capture The F
l
ag
Соревнования по поиску уязвимостей


Task-Based, Web
-
only


Каждая задача приносит флаг


Кто первым взял все флаги — победил
Привет. Предлагаю
сделать CTF на


Я💛фронтенд
А когда он будет?
В феврале
Я в деле!
Концепция
Делаем силами 2-3 человек + дизайнеры + редактор


Только фронтенд
-
технологии


Клиент: CRA


Бэкенд: Node.js


Задачи(загадки)
:
На чём быстрее
7 февраля 2021
Ща бэк буду
деплоить первый
раз
Вроде работает,
начинаем пилить
Акт 2
:
Успеть за 2 недели
Нажмите любую клавишу
https:
/
/
twitter.com/bobuk/status/636252417089212416
Метод Микеланджело
DevOps
Хостинг: VPS (так привычнее)


Флоу разработки: Trunk Based Development (так быстрее)


Автоматизация: GitHub Actions (так дешевле)


Демонизация Node.js: PM2 (так проще)


SSL
:
Certbot (быстро и бесплатно!)
Автоматизация и тесты!
@bluecoders
William Erhel
Монорепозиторий
Шеринг контрактов


Общий конфиг


Единовременный деплой


Простота локальной разработки
Монорепозиторий это просто! (Папочки и никакого тулинга)
./backend


./frontend


./tasks


./nginx
:
)
Главный контракт — это файл конфигурации
{


"initialLevelName": "home.morging",


"levels": {


"home.morging": {


"keys": ["god", "plague", "hacker"],


"redirectURL": "/",


"folder": "level_1",


"nextLevel": "off
i
ce.afternoon"


},


.
.
.


}
Главный контракт — это файл конфигурации
{


"initialLevelName": "home.morging",


"levels": {


"home.morging": {


"keys": ["god", "plague", "hacker"],


"redirectURL": "/",


"folder": "level_1",


"nextLevel": "off
i
ce.afternoon"


},


.
.
.


}
Главный контракт — это файл конфигурации
{


"initialLevelName": "home.morging",


"levels": {


"home.morging": {


"keys": ["god", "plague", "hacker"],


"redirectURL": "/",


"folder": "level_1",


"nextLevel": "off
i
ce.afternoon"


},


.
.
.


}
Главный контракт — это файл конфигурации
{


"initialLevelName": "home.morging",


"levels": {


"home.morging": {


"keys": ["god", "plague", "hacker"],


"redirectURL": "/",


"folder": "level_1",


"nextLevel": "off
i
ce.afternoon"


},


.
.
.


}
Главный контракт — это файл конфигурации
{


"initialLevelName": "home.morging",


"levels": {


"home.morging": {


"keys": ["god", "plague", "hacker"],


"redirectURL": "/",


"folder": "level_1",


"nextLevel": "off
i
ce.afternoon"


},


.
.
.


}
Главный контракт — это файл конфигурации
{


"initialLevelName": "home.morging",


"levels": {


"home.morging": {


"keys": ["god", "plague", "hacker"],


"redirectURL": "/",


"folder": "level_1",


"nextLevel": "off
i
ce.afternoon"


},


.
.
.


}
Главный контракт — это файл конфигурации
{


"initialLevelName": "home.morging",


"levels": {


"home.morging": {


"keys": ["god", "plague", "hacker"],


"redirectURL": "/",


"folder": "level_1",


"nextLevel": "off
i
ce.afternoon"


},


.
.
.


}
Фронтенд
Каждый уровень — SPA


Выдача заданий


Проверка флагов
Бэкенд
Выдача нужного уровня (и защита от читерства)


Проверка флагов


Логирование


Метрики
Уровень (дешёвое решение)
Независимое SPA


Не знает о текущем состоянии приложения


Не знает о пользователе


Бизнес
-
логика на сервере
Борис
Решил все задачи первый
Богдан
Получил ссылку от Бориса
на последний уровень
Никаких состояний в URL
Защита
Все уровни выдаются по одному URL (корневому)


На одном URL выдаются разные SPA


Сервер решает, какой index.html отдать


Перескочить между уровнями подменой URL невозможно
Где будем хранить состояние?
В базе данных — дорого
:
(


Делать авторизацию — долго
:
(


Cookie — дёшево и быстро! =)
Борис
Решил все задачи первый
Богдан
Получил cookie от Бориса
и попал на последний
уровень
Cookie легко сломать
Решение в лоб
Хранение отпечатка браузера — дорого и хрупко
:
(


Мусорные Cookie
-
обманки


Cookie
-
метка и запись в логах
@Get('')


	
getLevel(@Req() req: Request, @Res() res: Response) {


	
	
const levelCookie = req.cookies[LEVEL_COOKIE];


	
	
const userCookie = req.cookies[USER_COOKIE];


	
	
if (!userCookie) { res.cookie(USER_COOKIE, uuidv4()); }


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/index.html`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
	
})


	
}


Бизнес
-
логика выдачи уровня
@Get('')


	
getLevel(@Req() req: Request, @Res() res: Response) {


	
	
const levelCookie = req.cookies[LEVEL_COOKIE];


	
	
const userCookie = req.cookies[USER_COOKIE];


	
	
if (!userCookie) { res.cookie(USER_COOKIE, uuidv4()); }


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/index.html`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
	
})


	
}


Бизнес
-
логика выдачи уровня
@Get('')


	
getLevel(@Req() req: Request, @Res() res: Response) {


	
	
const levelCookie = req.cookies[LEVEL_COOKIE];


	
	
const userCookie = req.cookies[USER_COOKIE];


	
	
if (!userCookie) { res.cookie(USER_COOKIE, uuidv4()); }


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/index.html`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
	
})


	
}


Бизнес
-
логика выдачи уровня
@Get('')


	
getLevel(@Req() req: Request, @Res() res: Response) {


	
	
const levelCookie = req.cookies[LEVEL_COOKIE];


	
	
const userCookie = req.cookies[USER_COOKIE];


	
	
if (!userCookie) { res.cookie(USER_COOKIE, uuidv4()); }


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/index.html`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
	
})


	
}


Бизнес
-
логика выдачи уровня
@Get('')


	
getLevel(@Req() req: Request, @Res() res: Response) {


	
	
const levelCookie = req.cookies[LEVEL_COOKIE];


	
	
const userCookie = req.cookies[USER_COOKIE];


	
	
if (!userCookie) { res.cookie(USER_COOKIE, uuidv4()); }


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/index.html`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
	
})


	
}


Бизнес
-
логика выдачи уровня
@Get('')


	
getLevel(@Req() req: Request, @Res() res: Response) {


	
	
const levelCookie = req.cookies[LEVEL_COOKIE];


	
	
const userCookie = req.cookies[USER_COOKIE];


	
	
if (!userCookie) { res.cookie(USER_COOKIE, uuidv4()); }


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/index.html`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
	
})


	
}


Бизнес
-
логика выдачи уровня
@Get('')


	
getLevel(@Req() req: Request, @Res() res: Response) {


	
	
const levelCookie = req.cookies[LEVEL_COOKIE];


	
	
const userCookie = req.cookies[USER_COOKIE];


	
	
if (!userCookie) { res.cookie(USER_COOKIE, uuidv4()); }


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/index.html`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
	
})


	
}


Бизнес
-
логика выдачи уровня
Статика (классический вариант)
ctf.ilovefrontend.ru
Node.js
SSR HTML
FS
JS, CSS, etc.
Nginx
@Get('static/:type/:f
i
lename')


	
getStatic(


	
	
@Res() res: Response,


	
	
@Param('type') type: string,


	
	
@Param('f
i
lename') f
i
lename: string


	
) {


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/static/${type}/${f
i
lename}`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
})}


Статика (наш случай)
@Get('static/:type/:f
i
lename')


	
getStatic(


	
	
@Res() res: Response,


	
	
@Param('type') type: string,


	
	
@Param('f
i
lename') f
i
lename: string


	
) {


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/static/${type}/${f
i
lename}`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
})}


Статика (наш случай)
@Get('static/:type/:f
i
lename')


	
getStatic(


	
	
@Res() res: Response,


	
	
@Param('type') type: string,


	
	
@Param('f
i
lename') f
i
lename: string


	
) {


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/static/${type}/${f
i
lename}`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
})}


Статика (наш случай)
@Get('static/:type/:f
i
lename')


	
getStatic(


	
	
@Res() res: Response,


	
	
@Param('type') type: string,


	
	
@Param('f
i
lename') f
i
lename: string


	
) {


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/static/${type}/${f
i
lename}`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
})}


Статика (наш случай)
@Get('static/:type/:f
i
lename')


	
getStatic(


	
	
@Res() res: Response,


	
	
@Param('type') type: string,


	
	
@Param('f
i
lename') f
i
lename: string


	
) {


	
	
const levelFolder = this.levelService.getLevelFolder(levelCookie);


	
	
const f
i
lepath = `${levelFolder}/static/${type}/${f
i
lename}`;


	
	
fs.access(f
i
lepath, fs.constants.F_OK, (err)
=
>
{


	
	
	
fs.createReadStream(f
i
lepath).pipe(res);


	
})}


Статика (наш случай)
API
/check
-
key Проверка отдельного флага


/check
-
level
-
done Проверка всех флагов уровня
Задания
Nginx
a.ilovefrontend.ru


b.ilovefrontend.ru
Задание B
HTML, CSS, etc.
Задание A
HTML, CSS, etc.
Задания
«Чистый» HTML/CSS


Логика на Express/Fastify (не интересно)


Логика на Nginx (быстро и дёшево!)
location / {


if ($arg_keyword = qwerty) {


return 302 /zbfg56ffh03445561hd.html;


}


try_f
i
les $uri $uri/ =404;


root /var/
w
w
w
/tasks/mona/mona
-
main;


}


«Serverless» на Nginx
location / {


if ($arg_keyword = qwerty) {


return 302 /zbfg56ffh03445561hd.html;


}


try_f
i
les $uri $uri/ =404;


root /var/
w
w
w
/tasks/mona/mona
-
main;


}


«Serverless» на Nginx
location / {


if ($arg_keyword = qwerty) {


return 302 /zbfg56ffh03445561hd.html;


}


try_f
i
les $uri $uri/ =404;


root /var/
w
w
w
/tasks/mona/mona
-
main;


}


«Serverless» на Nginx
map $http_user_agent $too_new {


default 1;


"~MSIE [1-9]." 0;


"~MSIE 10" 0;


"~rv:11.0" 0;


}


location / {


if ($too_new = 1) {


rewrite ^ /browser.html redirect;


}


}


Проверка браузера на Nginx (Вход только для IE)
map $http_user_agent $too_new {


default 1;


"~MSIE [1-9]." 0;


"~MSIE 10" 0;


"~rv:11.0" 0;


}


location / {


if ($too_new = 1) {


rewrite ^ /browser.html redirect;


}


}


Проверка браузера на Nginx (Вход только для IE)
Акт 3
:
Игровые механики
Нажмите любую клавишу
Задачи
Подсадить пользователя на крючок первых уровней


Не дать заскучать однообразными заданиями


Задержать прокачанных в CTF шустриков


Дать удовольствие от сложности
userService
authenticationService
authenticationService
userService
контент
Акт 4
:
Запуск и последствия
Нажмите любую клавишу
20 февраля 2021
Самая дешёвая метрика — это логи
tail
-
f ctf
-
back
-
out.log
Наблюдаем в реальном времени
grep
-
r "flag" . | wc
-
l
Считаем взятия флага
this.logger.log(`user: ${userCookie} keys: ${keys.toString()}`);
Размечаем событие в логах
27 февраля 2021
384 раз


игра была пройдена
* На момент времени: 26 февраля, пятница, 20
:
45, 2021 год
Статистика прохождений по уровням
Какой доклад был самым интересным?


Разбор заданий Capture the flag и награждение победителей
Фронтендеры — вы невероятные!
Отдельное спасибо Никите Прокопову
{flag_see_you_space_cowboy}
Теперь питание компьютера
можно отключить

More Related Content

What's hot

A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleTom Croucher
 
Node js presentation
Node js presentationNode js presentation
Node js presentationmartincabrera
 
Web Crawling with NodeJS
Web Crawling with NodeJSWeb Crawling with NodeJS
Web Crawling with NodeJSSylvain Zimmer
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I thinkWim Godden
 
Building your first Node app with Connect & Express
Building your first Node app with Connect & ExpressBuilding your first Node app with Connect & Express
Building your first Node app with Connect & ExpressChristian Joudrey
 
Future Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NETFuture Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NETGianluca Carucci
 
Node js introduction
Node js introductionNode js introduction
Node js introductionAlex Su
 
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...Domenic Denicola
 
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
 
Why and How Powershell will rule the Command Line - Barcamp LA 4
Why and How Powershell will rule the Command Line - Barcamp LA 4Why and How Powershell will rule the Command Line - Barcamp LA 4
Why and How Powershell will rule the Command Line - Barcamp LA 4Ilya Haykinson
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js PlatformDomenic Denicola
 
Testing Backbone applications with Jasmine
Testing Backbone applications with JasmineTesting Backbone applications with Jasmine
Testing Backbone applications with JasmineLeon van der Grient
 
Asynchronous programming done right - Node.js
Asynchronous programming done right - Node.jsAsynchronous programming done right - Node.js
Asynchronous programming done right - Node.jsPiotr Pelczar
 
Avoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAvoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAnkit Agarwal
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with ExamplesGabriele Lana
 

What's hot (20)

A million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scaleA million connections and beyond - Node.js at scale
A million connections and beyond - Node.js at scale
 
Node js presentation
Node js presentationNode js presentation
Node js presentation
 
Web Crawling with NodeJS
Web Crawling with NodeJSWeb Crawling with NodeJS
Web Crawling with NodeJS
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I think
 
Building your first Node app with Connect & Express
Building your first Node app with Connect & ExpressBuilding your first Node app with Connect & Express
Building your first Node app with Connect & Express
 
Introduction to Flask Micro Framework
Introduction to Flask Micro FrameworkIntroduction to Flask Micro Framework
Introduction to Flask Micro Framework
 
Future Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NETFuture Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NET
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
 
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
 
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
Why and How Powershell will rule the Command Line - Barcamp LA 4
Why and How Powershell will rule the Command Line - Barcamp LA 4Why and How Powershell will rule the Command Line - Barcamp LA 4
Why and How Powershell will rule the Command Line - Barcamp LA 4
 
Understanding the Node.js Platform
Understanding the Node.js PlatformUnderstanding the Node.js Platform
Understanding the Node.js Platform
 
Pycon - Python for ethical hackers
Pycon - Python for ethical hackers Pycon - Python for ethical hackers
Pycon - Python for ethical hackers
 
Testing Backbone applications with Jasmine
Testing Backbone applications with JasmineTesting Backbone applications with Jasmine
Testing Backbone applications with Jasmine
 
Beyond Phoenix
Beyond PhoenixBeyond Phoenix
Beyond Phoenix
 
Asynchronous programming done right - Node.js
Asynchronous programming done right - Node.jsAsynchronous programming done right - Node.js
Asynchronous programming done right - Node.js
 
ES6 is Nigh
ES6 is NighES6 is Nigh
ES6 is Nigh
 
Avoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAvoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promises
 
Node ppt
Node pptNode ppt
Node ppt
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
 

Similar to "The little big project. From zero to hero in two weeks with 3 front-end engineers only" Andrey Melikhov

What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?Trisha Gee
 
All a flutter about Flutter.io
All a flutter about Flutter.ioAll a flutter about Flutter.io
All a flutter about Flutter.ioSteven Cooper
 
IndexedDB and Push Notifications in Progressive Web Apps
IndexedDB and Push Notifications in Progressive Web AppsIndexedDB and Push Notifications in Progressive Web Apps
IndexedDB and Push Notifications in Progressive Web AppsAdégòkè Obasá
 
From Ruby to Node.js
From Ruby to Node.jsFrom Ruby to Node.js
From Ruby to Node.jsjubilem
 
Building with Watson - Serverless Chatbots with PubNub and Conversation
Building with Watson - Serverless Chatbots with PubNub and ConversationBuilding with Watson - Serverless Chatbots with PubNub and Conversation
Building with Watson - Serverless Chatbots with PubNub and ConversationIBM Watson
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8Giovanni Bassi
 
Measuring Your Code
Measuring Your CodeMeasuring Your Code
Measuring Your CodeNate Abele
 
Measuring Your Code 2.0
Measuring Your Code 2.0Measuring Your Code 2.0
Measuring Your Code 2.0Nate Abele
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.Mike Brevoort
 
Taking Web Apps Offline
Taking Web Apps OfflineTaking Web Apps Offline
Taking Web Apps OfflinePedro Morais
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Michelangelo van Dam
 
Background Tasks in Node - Evan Tahler, TaskRabbit
Background Tasks in Node - Evan Tahler, TaskRabbitBackground Tasks in Node - Evan Tahler, TaskRabbit
Background Tasks in Node - Evan Tahler, TaskRabbitRedis Labs
 
Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023Scott Keck-Warren
 
2019 11-bgphp
2019 11-bgphp2019 11-bgphp
2019 11-bgphpdantleech
 
San Francisco Java User Group
San Francisco Java User GroupSan Francisco Java User Group
San Francisco Java User Groupkchodorow
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch
 
Nodejsexplained 101116115055-phpapp02
Nodejsexplained 101116115055-phpapp02Nodejsexplained 101116115055-phpapp02
Nodejsexplained 101116115055-phpapp02Sunny Gupta
 

Similar to "The little big project. From zero to hero in two weeks with 3 front-end engineers only" Andrey Melikhov (20)

What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?
 
All a flutter about Flutter.io
All a flutter about Flutter.ioAll a flutter about Flutter.io
All a flutter about Flutter.io
 
IndexedDB and Push Notifications in Progressive Web Apps
IndexedDB and Push Notifications in Progressive Web AppsIndexedDB and Push Notifications in Progressive Web Apps
IndexedDB and Push Notifications in Progressive Web Apps
 
From Ruby to Node.js
From Ruby to Node.jsFrom Ruby to Node.js
From Ruby to Node.js
 
NodeJS
NodeJSNodeJS
NodeJS
 
Building with Watson - Serverless Chatbots with PubNub and Conversation
Building with Watson - Serverless Chatbots with PubNub and ConversationBuilding with Watson - Serverless Chatbots with PubNub and Conversation
Building with Watson - Serverless Chatbots with PubNub and Conversation
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8
 
Measuring Your Code
Measuring Your CodeMeasuring Your Code
Measuring Your Code
 
Measuring Your Code 2.0
Measuring Your Code 2.0Measuring Your Code 2.0
Measuring Your Code 2.0
 
Novidades do c# 7 e 8
Novidades do c# 7 e 8Novidades do c# 7 e 8
Novidades do c# 7 e 8
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.
 
Taking Web Apps Offline
Taking Web Apps OfflineTaking Web Apps Offline
Taking Web Apps Offline
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 
Background Tasks in Node - Evan Tahler, TaskRabbit
Background Tasks in Node - Evan Tahler, TaskRabbitBackground Tasks in Node - Evan Tahler, TaskRabbit
Background Tasks in Node - Evan Tahler, TaskRabbit
 
Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023
 
2019 11-bgphp
2019 11-bgphp2019 11-bgphp
2019 11-bgphp
 
San Francisco Java User Group
San Francisco Java User GroupSan Francisco Java User Group
San Francisco Java User Group
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
Hardcore PHP
Hardcore PHPHardcore PHP
Hardcore PHP
 
Nodejsexplained 101116115055-phpapp02
Nodejsexplained 101116115055-phpapp02Nodejsexplained 101116115055-phpapp02
Nodejsexplained 101116115055-phpapp02
 

More from Fwdays

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...Fwdays
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...Fwdays
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...Fwdays
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...Fwdays
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...Fwdays
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...Fwdays
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...Fwdays
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra MyronovaFwdays
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...Fwdays
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...Fwdays
 

More from Fwdays (20)

"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T..."How Ukrainian IT specialist can go on vacation abroad without crossing the T...
"How Ukrainian IT specialist can go on vacation abroad without crossing the T...
 
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ..."The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
"The Strength of Being Vulnerable: the experience from CIA, Tesla and Uber", ...
 
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu..."[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
"[QUICK TALK] Radical candor: how to achieve results faster thanks to a cultu...
 
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care..."[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
"[QUICK TALK] PDP Plan, the only one door to raise your salary and boost care...
 
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"..."4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
"4 horsemen of the apocalypse of working relationships (+ antidotes to them)"...
 
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast..."Reconnecting with Purpose: Rediscovering Job Interest after Burnout",  Anast...
"Reconnecting with Purpose: Rediscovering Job Interest after Burnout", Anast...
 
"Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others..."Mentoring 101: How to effectively invest experience in the success of others...
"Mentoring 101: How to effectively invest experience in the success of others...
 
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova"Mission (im) possible: How to get an offer in 2024?",  Oleksandra Myronova
"Mission (im) possible: How to get an offer in 2024?", Oleksandra Myronova
 
"Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv..."Why have we learned how to package products, but not how to 'package ourselv...
"Why have we learned how to package products, but not how to 'package ourselv...
 
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin..."How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
"How to tame the dragon, or leadership with imposter syndrome", Oleksandr Zin...
 

Recently uploaded

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Recently uploaded (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

"The little big project. From zero to hero in two weeks with 3 front-end engineers only" Andrey Melikhov