diff --git a/.gitattributes b/.gitattributes
index 952acfe54c180a1d244aed81c1502afcda57237e..a3b2a4b1af0341f117708399a0602be4d478cf1e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -89,3 +89,12 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
105[[:space:]]-[[:space:]]Behavioral[[:space:]]Diagrams/003[[:space:]]Activity[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
105[[:space:]]-[[:space:]]Behavioral[[:space:]]Diagrams/004[[:space:]]State[[:space:]]Machine[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
105[[:space:]]-[[:space:]]Behavioral[[:space:]]Diagrams/005[[:space:]]Communication[[:space:]]Diagram[[:space:]](formerly[[:space:]]known[[:space:]]as[[:space:]]Collaboration[[:space:]]Diagram).mp4 filter=lfs diff=lfs merge=lfs -text
+105[[:space:]]-[[:space:]]Behavioral[[:space:]]Diagrams/006[[:space:]]Timing[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
+105[[:space:]]-[[:space:]]Behavioral[[:space:]]Diagrams/007[[:space:]]Interaction[[:space:]]Overview[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
+106[[:space:]]-[[:space:]]Structural[[:space:]]Diagrams/002[[:space:]]Object[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
+106[[:space:]]-[[:space:]]Structural[[:space:]]Diagrams/003[[:space:]]Component[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
+106[[:space:]]-[[:space:]]Structural[[:space:]]Diagrams/001[[:space:]]Class[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
+106[[:space:]]-[[:space:]]Structural[[:space:]]Diagrams/004[[:space:]]Package[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
+106[[:space:]]-[[:space:]]Structural[[:space:]]Diagrams/005[[:space:]]Deployment[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
+106[[:space:]]-[[:space:]]Structural[[:space:]]Diagrams/006[[:space:]]Composite[[:space:]]Structure[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
+106[[:space:]]-[[:space:]]Structural[[:space:]]Diagrams/007[[:space:]]Profile[[:space:]]Diagram.mp4 filter=lfs diff=lfs merge=lfs -text
diff --git a/105 - Behavioral Diagrams/006 Timing Diagram.mp4 b/105 - Behavioral Diagrams/006 Timing Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..04187b4d551a9d69b27064a398f6e7300c4195d7
--- /dev/null
+++ b/105 - Behavioral Diagrams/006 Timing Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f118126d731443c8936eedfd483a77d786504db0f0dafa777d13553aec7d3e91
+size 222338582
diff --git a/105 - Behavioral Diagrams/007 Interaction Overview Diagram.mp4 b/105 - Behavioral Diagrams/007 Interaction Overview Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..6c346014d9a2275b0342b373a9c842507683c2d1
--- /dev/null
+++ b/105 - Behavioral Diagrams/007 Interaction Overview Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8226ac5b52f95798d153a3a0b264051455f0046eb15b507dfeeedacbf2ba9263
+size 201634032
diff --git a/106 - Structural Diagrams/001 Class Diagram.mp4 b/106 - Structural Diagrams/001 Class Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..cd73564e432f6dabc1fbea984791d55417c1c898
--- /dev/null
+++ b/106 - Structural Diagrams/001 Class Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57ceb1e5e927ed18514f570a3850e56ab458381395cfd8556683a4b11d7d003c
+size 385910723
diff --git a/106 - Structural Diagrams/002 Object Diagram.mp4 b/106 - Structural Diagrams/002 Object Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..7b403fc05d40343c23ecd2b2b1a4cf45561ce88d
--- /dev/null
+++ b/106 - Structural Diagrams/002 Object Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d831eb765a4c31ef6e53cad455808196c05242ded60c8b9cd9dfeeec96e42cc3
+size 175147798
diff --git a/106 - Structural Diagrams/003 Component Diagram.mp4 b/106 - Structural Diagrams/003 Component Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..7667dca31f818653667f4dbdf27b6c1ad92d3469
--- /dev/null
+++ b/106 - Structural Diagrams/003 Component Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:17fcb6ac2c03592fd2bd46b5aed1b31b65fc1a81c4ef1f5effcf29912312a3fb
+size 235433944
diff --git a/106 - Structural Diagrams/004 Package Diagram.mp4 b/106 - Structural Diagrams/004 Package Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..513850c48c0b0bfbed291af58900eb00df41c8ce
--- /dev/null
+++ b/106 - Structural Diagrams/004 Package Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d834a03dd636fd3141a0a6afaf5ff9aa5610be5e576c8ae85b77e7071a8d3f72
+size 225825704
diff --git a/106 - Structural Diagrams/005 Deployment Diagram.mp4 b/106 - Structural Diagrams/005 Deployment Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..b1fa72024de55ee8b63d60834c548077b2eebd1d
--- /dev/null
+++ b/106 - Structural Diagrams/005 Deployment Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c971a2d982623e23a650e9074b850772f2a4262b47ee4d660755f89047f3e449
+size 233742108
diff --git a/106 - Structural Diagrams/006 Composite Structure Diagram.mp4 b/106 - Structural Diagrams/006 Composite Structure Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..75c0896bfd10476b2465ae00e181713f8628e285
--- /dev/null
+++ b/106 - Structural Diagrams/006 Composite Structure Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ca1c87b70b136c25d4036ab565c2f178642aeb0c3cdac63fa49d849885bbdf6
+size 251997427
diff --git a/106 - Structural Diagrams/007 Profile Diagram.mp4 b/106 - Structural Diagrams/007 Profile Diagram.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..fffadb2b1478b8667913843fea93a536b665bea6
--- /dev/null
+++ b/106 - Structural Diagrams/007 Profile Diagram.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7563870cf5201f72ad5598b01a7ba0e6a1331d26af44673f58007edf3d513f6a
+size 215367523
diff --git a/46 - Databases Overview and Environment Setup/005 Guide-How-to-install-PostgreSQL-on-Mac.url b/46 - Databases Overview and Environment Setup/005 Guide-How-to-install-PostgreSQL-on-Mac.url
new file mode 100644
index 0000000000000000000000000000000000000000..a38dc05c182165275b36af3d8f49c81849cd50b2
--- /dev/null
+++ b/46 - Databases Overview and Environment Setup/005 Guide-How-to-install-PostgreSQL-on-Mac.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://www.postgresqltutorial.com/install-postgresql-macos/
\ No newline at end of file
diff --git a/46 - Databases Overview and Environment Setup/005 PostgreSQL Overview & Installation (including pgAdmin installation)_en.srt b/46 - Databases Overview and Environment Setup/005 PostgreSQL Overview & Installation (including pgAdmin installation)_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..78e6453d4286715bdfc57faaf4a6189e26686446
--- /dev/null
+++ b/46 - Databases Overview and Environment Setup/005 PostgreSQL Overview & Installation (including pgAdmin installation)_en.srt
@@ -0,0 +1,852 @@
+1
+00:00:06,000 --> 00:00:10,000
+Hello, dissonance in previous lesson, we hold an overview of my sequel.
+
+2
+00:00:10,000 --> 00:00:17,000
+Also, we installed it on our laptops, but in this lesson, I would like to refuse you another popular
+
+3
+00:00:17,000 --> 00:00:21,000
+database management system that is called PostgreSQL.
+
+4
+00:00:22,000 --> 00:00:29,000
+We're going to study this lesson from general overview of PostgreSQL and its main features after you
+
+5
+00:00:29,000 --> 00:00:32,000
+become a little bit familiar to this relational database management system.
+
+6
+00:00:33,000 --> 00:00:35,000
+We'll proceed with practical cause of the lesson.
+
+7
+00:00:36,000 --> 00:00:43,000
+We're going to install is you progress SQL Server e.g. admin stack builder and come online tools.
+
+8
+00:00:43,000 --> 00:00:49,000
+The goal of our lesson is to make sure that your environment is ready for further learning of databases.
+
+9
+00:00:50,000 --> 00:00:54,000
+So I will explain you how to connect the database using Pidgey admin.
+
+10
+00:00:55,000 --> 00:01:00,000
+I'm going to show you how to create new connections to other PostgreSQL servers.
+
+11
+00:01:00,000 --> 00:01:01,000
+And then there was a lesson.
+
+12
+00:01:01,000 --> 00:01:06,000
+You will also understand how to manage progress SQL Windows service.
+
+13
+00:01:06,000 --> 00:01:08,000
+We have a lot of plans for this lesson.
+
+14
+00:01:08,000 --> 00:01:10,000
+Let's get it started.
+
+15
+00:01:11,000 --> 00:01:17,000
+PostgreSQL is a powerful open source object, relational database management system that uses and extends
+
+16
+00:01:17,000 --> 00:01:20,000
+the sequel then which combined with many features.
+
+17
+00:01:21,000 --> 00:01:25,000
+Let's safely store and skills the most complicated data workloads.
+
+18
+00:01:25,000 --> 00:01:33,000
+It's also worth dimensions of possibly a sequel has come a long way since 1986, when it was part of
+
+19
+00:01:33,000 --> 00:01:40,000
+the PostgreSQL project as the University of California at Berkeley and has more than 30 years of active
+
+20
+00:01:40,000 --> 00:01:42,000
+development on the core platform.
+
+21
+00:01:42,000 --> 00:01:48,000
+What a sequel is not controlled by any corporation or other private entity, and the source code is
+
+22
+00:01:48,000 --> 00:01:50,000
+available free of charge.
+
+23
+00:01:50,000 --> 00:01:57,000
+PostgreSQL is loved by many developers across all over the world because it has earned a strong reputation
+
+24
+00:01:57,000 --> 00:02:04,000
+for its proven architecture, reliability, data integrity, robust feature, set extensibility and
+
+25
+00:02:04,000 --> 00:02:10,000
+so dedication of the open source community behind the software to consistently deliver performant and
+
+26
+00:02:10,000 --> 00:02:11,000
+innovative solutions.
+
+27
+00:02:12,000 --> 00:02:16,000
+The sequel is cross-platform, and it runs on all major operating systems.
+
+28
+00:02:17,000 --> 00:02:24,000
+Also, it is Transaction's compliant since 2001, and this powerful add ons such as the popular post
+
+29
+00:02:24,000 --> 00:02:27,000
+use spatial database extender.
+
+30
+00:02:27,000 --> 00:02:33,000
+It is no surprise that possibly a sequel has become the open source relational database of choice for
+
+31
+00:02:33,000 --> 00:02:35,000
+many people and organizations.
+
+32
+00:02:35,000 --> 00:02:36,000
+It was great.
+
+33
+00:02:36,000 --> 00:02:43,000
+Sequel comes with many features aimed to help developers build applications administrators to protect
+
+34
+00:02:43,000 --> 00:02:49,000
+data integrity and build fault tolerant environments and help you manage your data no matter how big
+
+35
+00:02:49,000 --> 00:02:51,000
+or small the data set.
+
+36
+00:02:51,000 --> 00:02:58,000
+And on top of all things that we have already discussed about possible SQL, it is also highly extensible.
+
+37
+00:02:58,000 --> 00:03:00,000
+What does this mean?
+
+38
+00:03:00,000 --> 00:03:07,000
+For example, you can define your own data types, build out custom functions, even write code from
+
+39
+00:03:07,000 --> 00:03:11,000
+different programming languages without compiling your database.
+
+40
+00:03:11,000 --> 00:03:16,000
+Pretty cool features, don't you think so is a lesson about my school?
+
+41
+00:03:16,000 --> 00:03:23,000
+We also discussed on the high level existence standards for sequel structured query language, and also
+
+42
+00:03:23,000 --> 00:03:27,000
+we mention is that each database management system may have its own dialect.
+
+43
+00:03:28,000 --> 00:03:35,000
+Dialect includes some minor differences in syntax lack of the stated on the PostgreSQL Oracle website,
+
+44
+00:03:35,000 --> 00:03:42,000
+possibly a tries to conform with the school's standards where such conformance doesn't contradict traditional
+
+45
+00:03:42,000 --> 00:03:46,000
+features or could lead to pure architectural decisions.
+
+46
+00:03:47,000 --> 00:03:52,000
+Still, it is not always clear how syntax differences may impact on architectural decisions.
+
+47
+00:03:52,000 --> 00:03:54,000
+My subjective opinion?
+
+48
+00:03:54,000 --> 00:03:59,000
+This is just inheritance from times when there were no standards for school.
+
+49
+00:03:59,000 --> 00:04:06,000
+And as you already know, PostgreSQL is not a new project as a conclusion of dialogue differences.
+
+50
+00:04:06,000 --> 00:04:12,000
+I'd like to say that many of the features required by the school standards are supported, though sometimes
+
+51
+00:04:12,000 --> 00:04:15,000
+with slightly different syntax or function.
+
+52
+00:04:16,000 --> 00:04:18,000
+Let's review core features of a sequel.
+
+53
+00:04:19,000 --> 00:04:26,000
+Among the features, it is worse dimensions next one's data types, customizations, composite custom
+
+54
+00:04:26,000 --> 00:04:34,000
+types just in time compilation of expressions Sophisticated Keyword Planner Optimizer Index only scans
+
+55
+00:04:35,000 --> 00:04:45,000
+multi columns statistics advanced indexing point in time recovery active standbys replication asynchronous
+
+56
+00:04:45,000 --> 00:04:53,000
+synchronous logical right that log in syndication features multifactor authentication with certificates
+
+57
+00:04:54,000 --> 00:04:58,000
+and an additional massive support of procedural languages.
+
+58
+00:04:59,000 --> 00:05:07,000
+Sequel Jason Pass Expressions for data wrappers connect to other databases or streams was a standard
+
+59
+00:05:07,000 --> 00:05:14,000
+sequel interface many extensions that provide additional functionality, including Porzingis.
+
+60
+00:05:14,000 --> 00:05:18,000
+These are just some of the features that you can find in possibly a sequel.
+
+61
+00:05:19,000 --> 00:05:19,000
+Probably.
+
+62
+00:05:19,000 --> 00:05:24,000
+We can say that you already have an impression about PostgreSQL, and yes, you are right.
+
+63
+00:05:25,000 --> 00:05:27,000
+This is also called database management system.
+
+64
+00:05:28,000 --> 00:05:34,000
+This is one of the reasons why it's become popular, so let's now install it on our computers.
+
+65
+00:05:35,000 --> 00:05:40,000
+The first thing that we need to do is to download distribution back for your operating system.
+
+66
+00:05:41,000 --> 00:05:45,000
+You can find a link to the download page in attachments to this lesson.
+
+67
+00:05:45,000 --> 00:05:52,000
+You can find isn't active installer or zip archive was binaries for this tutorial and personally for
+
+68
+00:05:52,000 --> 00:05:55,000
+myself, I would download Interactive Installer.
+
+69
+00:05:56,000 --> 00:06:00,000
+I don't want to play hacker game and console to extract binaries.
+
+70
+00:06:00,000 --> 00:06:03,000
+Also, all examples from the slide off of Windows.
+
+71
+00:06:04,000 --> 00:06:07,000
+The similar stabs during the installation for Mac OS.
+
+72
+00:06:08,000 --> 00:06:10,000
+But just in case you can also.
+
+73
+00:06:10,000 --> 00:06:14,000
+Lines and attachments guide on how to install PostgreSQL on Mac.
+
+74
+00:06:15,000 --> 00:06:21,000
+Basically, after you selected your operating system, there is a separate page where you can select
+
+75
+00:06:21,000 --> 00:06:25,000
+what you would like to do, not binaries or installer.
+
+76
+00:06:25,000 --> 00:06:29,000
+You can make a cup of tea because downloading may take some time.
+
+77
+00:06:30,000 --> 00:06:31,000
+Once downloading is finished.
+
+78
+00:06:31,000 --> 00:06:35,000
+Runs interactive installer on the first step.
+
+79
+00:06:35,000 --> 00:06:36,000
+There is nothing special.
+
+80
+00:06:36,000 --> 00:06:37,000
+Just welcome message.
+
+81
+00:06:38,000 --> 00:06:39,000
+Click Next button.
+
+82
+00:06:40,000 --> 00:06:44,000
+On the next step, make sure you say it's a installation directory.
+
+83
+00:06:44,000 --> 00:06:47,000
+Once you are ready, click the next button.
+
+84
+00:06:48,000 --> 00:06:53,000
+On this step, we have to select PostgreSQL components that we want to install.
+
+85
+00:06:53,000 --> 00:06:56,000
+Let me explain you a little bit about each of this.
+
+86
+00:06:57,000 --> 00:07:01,000
+Well, PostgreSQL server, it is our core component.
+
+87
+00:07:01,000 --> 00:07:03,000
+You can treat it as databases.
+
+88
+00:07:03,000 --> 00:07:09,000
+So DG Admin is a client you are to interact with supposedly a SQL server.
+
+89
+00:07:10,000 --> 00:07:16,000
+The Stack Builder utility provides a graphical interface that simplifies the process of downloading
+
+90
+00:07:16,000 --> 00:07:21,000
+and installing modules that complement your Cosmos sequel installation.
+
+91
+00:07:22,000 --> 00:07:28,000
+When you install a module with Stack Builder, Stack Builder automatically resolves any software dependencies.
+
+92
+00:07:29,000 --> 00:07:36,000
+So this nice tool to have installed just in case and another component is a command line tools that
+
+93
+00:07:36,000 --> 00:07:40,000
+they use to interact with PostgreSQL with the help of command line.
+
+94
+00:07:41,000 --> 00:07:44,000
+I recommend you also to install this just in case.
+
+95
+00:07:45,000 --> 00:07:47,000
+After that, click next button.
+
+96
+00:07:47,000 --> 00:07:53,000
+After that, you have opportunity to configure passed as a folder where your data will be stored.
+
+97
+00:07:54,000 --> 00:08:00,000
+By default, you will be offered to create a data folder in PostgreSQL Installation Directory.
+
+98
+00:08:01,000 --> 00:08:04,000
+If this is OK for you, then just press next button.
+
+99
+00:08:05,000 --> 00:08:13,000
+On the next step, please write a password for a super user who has all rights in database having access
+
+100
+00:08:13,000 --> 00:08:19,000
+to this user, you can start creation of other users, schemas, tables and so on.
+
+101
+00:08:19,000 --> 00:08:21,000
+Please remember this password.
+
+102
+00:08:22,000 --> 00:08:23,000
+This is important.
+
+103
+00:08:24,000 --> 00:08:31,000
+Was Great Article is an app that will be running on our computer and to get connected to the PostgreSQL,
+
+104
+00:08:31,000 --> 00:08:34,000
+we need to know port number on this computer.
+
+105
+00:08:35,000 --> 00:08:40,000
+And the biggest lesson when we installed my I explained what is port number.
+
+106
+00:08:41,000 --> 00:08:46,000
+Also, I have separate course about that programming where I cover network concept.
+
+107
+00:08:46,000 --> 00:08:48,000
+Just to remind you a few words about Port.
+
+108
+00:08:48,000 --> 00:08:49,000
+No.
+
+109
+00:08:49,000 --> 00:08:52,000
+We are going to use it as part of address.
+
+110
+00:08:52,000 --> 00:09:00,000
+One will connect to the possible SQL server, and if IP address is an address of our machines network,
+
+111
+00:09:01,000 --> 00:09:05,000
+then port number is an address of the app on this specific machine.
+
+112
+00:09:06,000 --> 00:09:14,000
+The default port, of course, with a sequel, is 54 so that you can change it if you wish.
+
+113
+00:09:14,000 --> 00:09:20,000
+And if for some reason this sport is already captured by other app, in my case, I just click next
+
+114
+00:09:21,000 --> 00:09:24,000
+select lock collar that works the best for you.
+
+115
+00:09:25,000 --> 00:09:29,000
+This configuration will impact all the collaboration settings of the app.
+
+116
+00:09:29,000 --> 00:09:32,000
+Don't worry, you will be able to change this later, too.
+
+117
+00:09:33,000 --> 00:09:40,000
+You can keep the folder color option and click Next button on this snap check installation information.
+
+118
+00:09:40,000 --> 00:09:46,000
+And if everything looks good to you, press it to the next step and start installation.
+
+119
+00:09:47,000 --> 00:09:52,000
+If installation finished successfully, you would see a notification about installation completion.
+
+120
+00:09:53,000 --> 00:09:55,000
+You will be offered the launch stack builder.
+
+121
+00:09:56,000 --> 00:09:58,000
+You can keep this checkbox marked if you wish.
+
+122
+00:09:59,000 --> 00:10:02,000
+And afterwards, just press finish button.
+
+123
+00:10:02,000 --> 00:10:03,000
+And that's it.
+
+124
+00:10:03,000 --> 00:10:09,000
+Congrats, PostgreSQL installed on your computer with all other components.
+
+125
+00:10:09,000 --> 00:10:15,000
+So in case you kept chequebooks smart, you would have struggled to open.
+
+126
+00:10:15,000 --> 00:10:18,000
+But what to do with it in the future?
+
+127
+00:10:18,000 --> 00:10:25,000
+You can run it separately in case you want to install some advanced PostgreSQL, for example.
+
+128
+00:10:25,000 --> 00:10:29,000
+On the slide, you can see just an example of what can be installed.
+
+129
+00:10:30,000 --> 00:10:33,000
+We don't need anything from this list at this moment.
+
+130
+00:10:33,000 --> 00:10:35,000
+Sewa Just Glow Stack Builder.
+
+131
+00:10:36,000 --> 00:10:43,000
+Let's understand now how to run PostgreSQL, and let's test that interaction with databases is configured
+
+132
+00:10:43,000 --> 00:10:43,000
+properly.
+
+133
+00:10:44,000 --> 00:10:50,000
+And various lessons, I also explained you what Windows service is just to remind you.
+
+134
+00:10:50,000 --> 00:10:58,000
+Windows services are core components of the Microsoft Windows operating system and enables the creation
+
+135
+00:10:58,000 --> 00:11:02,000
+and management of long running processes right after installation.
+
+136
+00:11:03,000 --> 00:11:06,000
+You have PostgreSQL Windows service up and running.
+
+137
+00:11:06,000 --> 00:11:10,000
+You can check this by opening services on your Windows machine.
+
+138
+00:11:10,000 --> 00:11:16,000
+Also in this place, you can either stop the service or configure startup time.
+
+139
+00:11:16,000 --> 00:11:23,000
+For example, I keep my school service started automatically, started that and my PostgreSQL service
+
+140
+00:11:23,000 --> 00:11:29,000
+I keep in manual starts up because I don't see a lot of reasons to load.
+
+141
+00:11:29,000 --> 00:11:32,000
+My machine was to databases run in Perl.
+
+142
+00:11:32,000 --> 00:11:36,000
+Definitely for this demo I turned PostgreSQL service on.
+
+143
+00:11:37,000 --> 00:11:40,000
+Now you know the place where this may be configured.
+
+144
+00:11:41,000 --> 00:11:41,000
+Great.
+
+145
+00:11:42,000 --> 00:11:46,000
+Now, let's learn how to work with supposedly equals through the nice UI.
+
+146
+00:11:46,000 --> 00:11:53,000
+We have separate applications that we have also already installed and that the so-called admin to start
+
+147
+00:11:53,000 --> 00:11:57,000
+at least navigate to the installation directory of possible sequel.
+
+148
+00:11:58,000 --> 00:12:01,000
+You're going to find a separate folder was named A.G. Admin.
+
+149
+00:12:02,000 --> 00:12:06,000
+Open it and find the executable file with the same name.
+
+150
+00:12:07,000 --> 00:12:11,000
+Double click it and Beijing admin app will start loading.
+
+151
+00:12:12,000 --> 00:12:16,000
+On the first start up, you will be asked to set and must have passwords for page admin.
+
+152
+00:12:17,000 --> 00:12:23,000
+This is needed because potentially you can have multiple connections and server configuration stored
+
+153
+00:12:23,000 --> 00:12:26,000
+in the app to secure the setup on each startup.
+
+154
+00:12:26,000 --> 00:12:34,000
+This app will ask you a master password, so also remember the password and press OK button?
+
+155
+00:12:35,000 --> 00:12:38,000
+The next thing that we need to do is to connect through an existing server.
+
+156
+00:12:38,000 --> 00:12:40,000
+We have page admin.
+
+157
+00:12:40,000 --> 00:12:47,000
+You just need to expand servers in the left panel and you will find the server that's already exists
+
+158
+00:12:47,000 --> 00:12:48,000
+on your local hosts.
+
+159
+00:12:49,000 --> 00:12:52,000
+This is exactly the server that we have just installed.
+
+160
+00:12:52,000 --> 00:12:59,000
+Click on it and you will be prompted to enter your password and to share passwords with you, said during
+
+161
+00:12:59,000 --> 00:13:00,000
+the installation.
+
+162
+00:13:01,000 --> 00:13:04,000
+You can save passwords in page admin if you wish.
+
+163
+00:13:04,000 --> 00:13:06,000
+And press OK button.
+
+164
+00:13:07,000 --> 00:13:08,000
+Congrats, team.
+
+165
+00:13:08,000 --> 00:13:10,000
+We managed to connect to our Sara.
+
+166
+00:13:11,000 --> 00:13:17,000
+That is great on the home page, you can see some charts and information about performance.
+
+167
+00:13:17,000 --> 00:13:21,000
+There are also a lot of other things that we can do from this point.
+
+168
+00:13:21,000 --> 00:13:25,000
+But all of this will be discussed in separate lessons in details.
+
+169
+00:13:26,000 --> 00:13:31,000
+The most important thing is that you successfully managed to connect as a possible SQL server.
+
+170
+00:13:32,000 --> 00:13:34,000
+Let me show you one more interesting thing.
+
+171
+00:13:34,000 --> 00:13:40,000
+You can always connect the remote database knowing the exact address of the PostgreSQL.
+
+172
+00:13:41,000 --> 00:13:48,000
+Let me show you now how to add new silver collection service and then click Add New Server.
+
+173
+00:13:49,000 --> 00:13:56,000
+Now we need just some information about servers that we want to connect on the general tap.
+
+174
+00:13:56,000 --> 00:14:01,000
+Just enter the names that would be easy to recognize for you and Server Group.
+
+175
+00:14:01,000 --> 00:14:07,000
+You can group different service together to navigate easily between them later when needed.
+
+176
+00:14:08,000 --> 00:14:14,000
+After that, you need to choose connection type to the server and configure it separately in the top
+
+177
+00:14:14,000 --> 00:14:14,000
+bar.
+
+178
+00:14:14,000 --> 00:14:16,000
+You can see different apps.
+
+179
+00:14:16,000 --> 00:14:18,000
+They are connection.
+
+180
+00:14:18,000 --> 00:14:20,000
+This one is for connections.
+
+181
+00:14:20,000 --> 00:14:23,000
+We are TCP IP Protocol SSL.
+
+182
+00:14:24,000 --> 00:14:27,000
+This step is to configure connection with SSL.
+
+183
+00:14:28,000 --> 00:14:30,000
+SSL stands for Secure Sockets Layer.
+
+184
+00:14:31,000 --> 00:14:34,000
+And again, we're going to learn web in a separate course.
+
+185
+00:14:35,000 --> 00:14:40,000
+This protocol runs on top of this IP protocol as a secret tunnel.
+
+186
+00:14:41,000 --> 00:14:44,000
+On that one tab, you can configure SSL connection.
+
+187
+00:14:45,000 --> 00:14:52,000
+In no particular case, I want to use Connection tab to configure connection with TCP IP protocol in
+
+188
+00:14:52,000 --> 00:14:53,000
+host address.
+
+189
+00:14:53,000 --> 00:14:55,000
+You should put the address of the host.
+
+190
+00:14:55,000 --> 00:14:57,000
+Usually, this is an IP address.
+
+191
+00:14:58,000 --> 00:15:01,000
+In this example, I'm going to connect to my localhost.
+
+192
+00:15:02,000 --> 00:15:07,000
+This IP always refers to the local host, or you can just use local hostname.
+
+193
+00:15:07,000 --> 00:15:14,000
+In this particular example, localhost is a hostname which refers to the current computer used to access
+
+194
+00:15:14,000 --> 00:15:14,000
+it.
+
+195
+00:15:15,000 --> 00:15:23,000
+I use default port for possible sequel, so I put value 50 four course suited to in the ports field
+
+196
+00:15:23,000 --> 00:15:25,000
+in maintenance database.
+
+197
+00:15:25,000 --> 00:15:28,000
+Put Pause Grass What is maintenance database?
+
+198
+00:15:28,000 --> 00:15:34,000
+Zip Postgres database is also created when a database cluster is initialized.
+
+199
+00:15:35,000 --> 00:15:41,000
+This database is meant as a default database for users and applications to connect to.
+
+200
+00:15:41,000 --> 00:15:45,000
+After that, we need to specify a name of the user.
+
+201
+00:15:45,000 --> 00:15:49,000
+The name of our admin user by default is progress.
+
+202
+00:15:50,000 --> 00:15:53,000
+Also, we have to use the password for this user.
+
+203
+00:15:53,000 --> 00:15:58,000
+And after all configurations are on, please just click Save button.
+
+204
+00:15:59,000 --> 00:16:02,000
+That's all what I wanted to share with you in this lesson.
+
+205
+00:16:02,000 --> 00:16:08,000
+Let's recap what we have learned today in this lesson we hold PostgreSQL over.
+
+206
+00:16:08,000 --> 00:16:10,000
+You removed its main features.
+
+207
+00:16:11,000 --> 00:16:15,000
+After that, we proceed with the practice space to prepare environment.
+
+208
+00:16:15,000 --> 00:16:21,000
+We installed Postgres, SQL Server, PJ Admin, Stack Builder and command line tools.
+
+209
+00:16:22,000 --> 00:16:25,000
+I showed you an example How to connect to Postgres SQL Server.
+
+210
+00:16:25,000 --> 00:16:30,000
+We are Pidgey admin and how to create a new server inside paging admin.
+
+211
+00:16:31,000 --> 00:16:37,000
+Also, I explained how and where you can configure Windows servers for Postgres sequel.
+
+212
+00:16:38,000 --> 00:16:40,000
+Thank you all team for your attention.
+
+213
+00:16:40,000 --> 00:16:43,000
+Have a great day and see you in the next lesson.
+
diff --git a/46 - Databases Overview and Environment Setup/005 PostgreSQL-download.url b/46 - Databases Overview and Environment Setup/005 PostgreSQL-download.url
new file mode 100644
index 0000000000000000000000000000000000000000..d7c0054f6f64a92e94bfa8a0e988f527e0a1fe20
--- /dev/null
+++ b/46 - Databases Overview and Environment Setup/005 PostgreSQL-download.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://www.postgresql.org/download/
\ No newline at end of file
diff --git a/46 - Databases Overview and Environment Setup/external-links.txt b/46 - Databases Overview and Environment Setup/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8d81caca074901453b4d2c74ec6929ab93d0fbe9
--- /dev/null
+++ b/46 - Databases Overview and Environment Setup/external-links.txt
@@ -0,0 +1,12 @@
+
+004 Microsoft-MySQL-Installer
+https://dev.mysql.com/downloads/installer/
+
+004 How-to-Install-MySQL-on-MacOS
+https://dev.mysql.com/doc/refman/8.0/en/macos-installation-pkg.html
+
+005 PostgreSQL-download
+https://www.postgresql.org/download/
+
+005 Guide-How-to-install-PostgreSQL-on-Mac
+https://www.postgresqltutorial.com/install-postgresql-macos/
diff --git a/47 - Relational databases/001 Relational Databases Basic Concepts_en.srt b/47 - Relational databases/001 Relational Databases Basic Concepts_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..bf0cb8d84d8c271b9f83685ba2b41fdece0d934c
--- /dev/null
+++ b/47 - Relational databases/001 Relational Databases Basic Concepts_en.srt
@@ -0,0 +1,1320 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:10,000
+And this last one, we're going to start learning the relational databases.
+
+3
+00:00:11,000 --> 00:00:17,000
+We're going to start from understanding of basic concepts and gradually we'll move to more complicated
+
+4
+00:00:17,000 --> 00:00:17,000
+topics.
+
+5
+00:00:18,000 --> 00:00:26,000
+We're going to start our lesson with learning such basic terms a stable entity, absolute chapel records,
+
+6
+00:00:26,000 --> 00:00:32,000
+etc. separate focus on the good and the differences between database and schema.
+
+7
+00:00:32,000 --> 00:00:38,000
+Because very often my students ask me what is schema and how it is different from database.
+
+8
+00:00:39,000 --> 00:00:43,000
+After that, we are going to learn such important concept as primary key.
+
+9
+00:00:43,000 --> 00:00:48,000
+I will share with you different examples, and that will help you to understand the difference between
+
+10
+00:00:48,000 --> 00:00:52,000
+simple and compound key, natural and surrogate key.
+
+11
+00:00:53,000 --> 00:00:58,000
+Also, you will learn what alternate care is to understand relationships in databases.
+
+12
+00:00:58,000 --> 00:01:05,000
+We need to learn what foreign key is, and once we learn all these terms will start none of the relationships
+
+13
+00:01:05,000 --> 00:01:06,000
+in relational databases.
+
+14
+00:01:07,000 --> 00:01:12,000
+You're going to understand what types of relationship we have and how they're different from each other.
+
+15
+00:01:13,000 --> 00:01:19,000
+Let's start our lesson before we start dive deeper into the details of relational databases.
+
+16
+00:01:20,000 --> 00:01:25,000
+Let's learn some basic terms that we are going to use during today's lesson and future lessons.
+
+17
+00:01:25,000 --> 00:01:29,000
+Let's go over each channel one by one database.
+
+18
+00:01:30,000 --> 00:01:35,000
+We use this term usually to refer to a set of tables with some data in them.
+
+19
+00:01:36,000 --> 00:01:36,000
+Is that clear?
+
+20
+00:01:37,000 --> 00:01:38,000
+I believe there is one more question.
+
+21
+00:01:39,000 --> 00:01:40,000
+What are tables?
+
+22
+00:01:41,000 --> 00:01:47,000
+Tables and metrics with data of the specified format in table, you have rows and columns.
+
+23
+00:01:47,000 --> 00:01:49,000
+Each column has name.
+
+24
+00:01:49,000 --> 00:01:56,000
+Also, each column has data that we can specify what kind of data will be stored in this column.
+
+25
+00:01:57,000 --> 00:02:03,000
+Topple in relational databases, we use this term to describe one records of data.
+
+26
+00:02:03,000 --> 00:02:06,000
+OK, so what is the records?
+
+27
+00:02:06,000 --> 00:02:09,000
+Records is one row in table.
+
+28
+00:02:09,000 --> 00:02:16,000
+Let's continue with other terms is we need to be familiar with entity and entity is distinguishable.
+
+29
+00:02:16,000 --> 00:02:23,000
+The real world object that exists and the object should not be considered as an entity until it can
+
+30
+00:02:23,000 --> 00:02:27,000
+be easily identified from all other objects of the real world.
+
+31
+00:02:28,000 --> 00:02:36,000
+In other simple words, if you can't identify sets of characteristics that define some object in a unique
+
+32
+00:02:36,000 --> 00:02:43,000
+way, which allows you to store data about objects or if you are not going to retrieve data about some
+
+33
+00:02:43,000 --> 00:02:48,000
+object, then there is no point in creating that entity in a database.
+
+34
+00:02:49,000 --> 00:02:50,000
+Does it make sense?
+
+35
+00:02:51,000 --> 00:02:58,000
+Attribute Attribute is a characteristic in a database management system and attributes refers to database
+
+36
+00:02:58,000 --> 00:03:05,000
+field attributes, describes the characteristics or properties of an entity in a database table and
+
+37
+00:03:05,000 --> 00:03:10,000
+the entity in a database table is defined was a fixed set of actions.
+
+38
+00:03:11,000 --> 00:03:16,000
+For example, you will have to define a user entity that we can define.
+
+39
+00:03:16,000 --> 00:03:20,000
+It was a set of attributes like email, name, etc..
+
+40
+00:03:21,000 --> 00:03:27,000
+The attribute values of each user entity will define its characteristics in the table.
+
+41
+00:03:28,000 --> 00:03:36,000
+In most simple words, attributes are columns in database tables, and each row has set of common values.
+
+42
+00:03:36,000 --> 00:03:40,000
+Those are attributes, but this is very simplified definition.
+
+43
+00:03:41,000 --> 00:03:48,000
+There is also one more chance that we have learned to use often today in the lesson schema analysis
+
+44
+00:03:48,000 --> 00:03:53,000
+schema is an abstract designs its represent the storage of your data in a database.
+
+45
+00:03:53,000 --> 00:04:01,000
+It describes both zircon zation of data and the relationships between tables in a given database.
+
+46
+00:04:01,000 --> 00:04:07,000
+Sometimes you can find that people use schema and database as interchangeable terms.
+
+47
+00:04:07,000 --> 00:04:09,000
+But this is not correct.
+
+48
+00:04:09,000 --> 00:04:16,000
+The fundamental difference between them is that the database is an organized collection of internal
+
+49
+00:04:16,000 --> 00:04:23,000
+data data, and on the other hand, the schema is a logical representation or description of an entire
+
+50
+00:04:23,000 --> 00:04:23,000
+database.
+
+51
+00:04:24,000 --> 00:04:31,000
+Schema contains the structure of tables, attributes that types, constraints and how they relate to
+
+52
+00:04:31,000 --> 00:04:32,000
+other tables.
+
+53
+00:04:32,000 --> 00:04:35,000
+Do you feel the difference between these two terms?
+
+54
+00:04:36,000 --> 00:04:38,000
+These are just basic terms.
+
+55
+00:04:38,000 --> 00:04:39,000
+Tsarist jumps were.
+
+56
+00:04:39,000 --> 00:04:42,000
+I go on to those examples as we go.
+
+57
+00:04:42,000 --> 00:04:43,000
+Is that clear?
+
+58
+00:04:44,000 --> 00:04:46,000
+If yes, then let's proceed.
+
+59
+00:04:47,000 --> 00:04:50,000
+Another important term in a relational databases is a primary key.
+
+60
+00:04:51,000 --> 00:04:58,000
+I decided to dedicate a separate slide to reviews the definition so primary key is a specific choice
+
+61
+00:04:58,000 --> 00:05:00,000
+of minimal set of attributes.
+
+62
+00:05:00,000 --> 00:05:07,000
+And you already know that attributes many columns that uniquely identify, topple and you learn, you
+
+63
+00:05:07,000 --> 00:05:11,000
+know, that tadpole is a synonym to row in the table.
+
+64
+00:05:11,000 --> 00:05:19,000
+In most simple words, primary key is an attribute or unique set of attributes that can identify specific
+
+65
+00:05:19,000 --> 00:05:21,000
+rule in the book, among others.
+
+66
+00:05:22,000 --> 00:05:28,000
+And if you would ask me to come up with even simple definition, I would say is its primary key is a
+
+67
+00:05:28,000 --> 00:05:29,000
+unique idea.
+
+68
+00:05:30,000 --> 00:05:35,000
+We are going to build a relationship between tables and being more specific.
+
+69
+00:05:35,000 --> 00:05:41,000
+We would build relationships with the two in one table with data in another table.
+
+70
+00:05:41,000 --> 00:05:49,000
+That means we need to find a way to uniquely identify each role in each table to connect them between
+
+71
+00:05:49,000 --> 00:05:49,000
+each other.
+
+72
+00:05:50,000 --> 00:05:53,000
+That's why primary key is so important.
+
+73
+00:05:53,000 --> 00:05:56,000
+Let's come up with the ideas of primary key.
+
+74
+00:05:57,000 --> 00:06:03,000
+The first goal is to uniquely identify to people in the database table, and the second goal is to ensure
+
+75
+00:06:03,000 --> 00:06:04,000
+connection between tables.
+
+76
+00:06:05,000 --> 00:06:06,000
+Is that clear?
+
+77
+00:06:06,000 --> 00:06:13,000
+And always remember that in case of any questions exam, you can put your question below this reader
+
+78
+00:06:13,000 --> 00:06:15,000
+and I will be happy to answer it.
+
+79
+00:06:16,000 --> 00:06:23,000
+But how to choose the primary key, among other attributes, what rules should be applied or what is
+
+80
+00:06:23,000 --> 00:06:30,000
+the best practices zero of some is to select the shortest possible field if you understand what I mean.
+
+81
+00:06:30,000 --> 00:06:33,000
+What's the shortest possible combination of fields?
+
+82
+00:06:33,000 --> 00:06:36,000
+By saying this, I pursue one goal.
+
+83
+00:06:36,000 --> 00:06:39,000
+Primary key should be simple enough to work.
+
+84
+00:06:39,000 --> 00:06:44,000
+It should be atomic and shouldn't consist from multiple values inside one field.
+
+85
+00:06:45,000 --> 00:06:50,000
+It should be unique, and achieving this uniqueness shouldn't be hard thing to do.
+
+86
+00:06:51,000 --> 00:06:58,000
+I mean is easy to find, not unique first name, and it is impossible to find the same email.
+
+87
+00:06:58,000 --> 00:07:05,000
+That means that achieving uniqueness for email field is more simple, and it is better option to use
+
+88
+00:07:05,000 --> 00:07:06,000
+for primary key.
+
+89
+00:07:06,000 --> 00:07:10,000
+And obviously, primary key can't be no value.
+
+90
+00:07:11,000 --> 00:07:12,000
+To send my point.
+
+91
+00:07:13,000 --> 00:07:21,000
+Another important classification is its primary key may be simple and compound interest and in simple
+
+92
+00:07:21,000 --> 00:07:25,000
+words, simple primary key consists of the one people felt.
+
+93
+00:07:25,000 --> 00:07:34,000
+This can be an email I the best for no or anything else what is unique for each row in table and fits
+
+94
+00:07:34,000 --> 00:07:35,000
+in one field?
+
+95
+00:07:36,000 --> 00:07:44,000
+On the other hand, Compound's primary key consists of two or more fields, so the combination of these
+
+96
+00:07:44,000 --> 00:07:46,000
+fields should be unique.
+
+97
+00:07:47,000 --> 00:07:54,000
+For example, I have online courses and each course has I.D. That is, of course, primary key.
+
+98
+00:07:54,000 --> 00:08:01,000
+Also, I have students and each student has its own unique identifier, and let's imagine that I need
+
+99
+00:08:01,000 --> 00:08:04,000
+to store information about enrollments.
+
+100
+00:08:04,000 --> 00:08:12,000
+In my course, I have an enrollment table that has Compound's primary key that consists of two values,
+
+101
+00:08:12,000 --> 00:08:21,000
+namely courses plus student I.D. And there is information that people like the date of enrollment,
+
+102
+00:08:21,000 --> 00:08:29,000
+growth, speed, discount applied or any other possible field can be easily connected and identified
+
+103
+00:08:29,000 --> 00:08:31,000
+with this compound primary key.
+
+104
+00:08:31,000 --> 00:08:32,000
+Does it make sense?
+
+105
+00:08:33,000 --> 00:08:39,000
+To be honest, Compound's primary keys are less often than simple primary kiss.
+
+106
+00:08:39,000 --> 00:08:47,000
+But still they exist, and I'm going to teach you how to create compounds primary keys in the database.
+
+107
+00:08:47,000 --> 00:08:50,000
+In a separate lesson, you're in the practice exercise.
+
+108
+00:08:51,000 --> 00:08:55,000
+And that's the classification of primary key depends on its origins.
+
+109
+00:08:56,000 --> 00:09:04,000
+Primary key may be natural a surrogate surrogate primary keys also called synthetic, sometimes in simple
+
+110
+00:09:04,000 --> 00:09:05,000
+words, is a natural primary.
+
+111
+00:09:05,000 --> 00:09:09,000
+Key is a field that stores useful information.
+
+112
+00:09:09,000 --> 00:09:14,000
+For example, desperate number may be unique for a person, but this is also values.
+
+113
+00:09:14,000 --> 00:09:18,000
+It contains information related to specific person.
+
+114
+00:09:18,000 --> 00:09:19,000
+This is real.
+
+115
+00:09:19,000 --> 00:09:24,000
+Data is accurate naturally, and just records the same situation with email.
+
+116
+00:09:25,000 --> 00:09:28,000
+Email may be considered as national primary key.
+
+117
+00:09:29,000 --> 00:09:32,000
+National keys have one logical advantage, in my opinion.
+
+118
+00:09:32,000 --> 00:09:35,000
+It sounds like this is it the search.
+
+119
+00:09:36,000 --> 00:09:42,000
+Since Natural Ki contains some valuable information, it is easier for you to understand this information.
+
+120
+00:09:42,000 --> 00:09:49,000
+For example, it will be hard to remember sequence number for each user to search user, but it's the
+
+121
+00:09:49,000 --> 00:09:56,000
+but instead it will be easier to memorize user email and search user by its email.
+
+122
+00:09:56,000 --> 00:10:04,000
+Natural primary keys have some disadvantages, though the most important are take more memory to store
+
+123
+00:10:04,000 --> 00:10:06,000
+rather than surrogate key.
+
+124
+00:10:07,000 --> 00:10:14,000
+This means that you will require more memory to store the data, and also this means is a joint request
+
+125
+00:10:14,000 --> 00:10:22,000
+on multiple tables might take more time because usually natural keys are strings but not integers,
+
+126
+00:10:22,000 --> 00:10:25,000
+and it takes time to compare strings.
+
+127
+00:10:26,000 --> 00:10:29,000
+Requires cascading update in case of changing.
+
+128
+00:10:29,000 --> 00:10:38,000
+Imagine that you use email as a primary key and user decided to change email, we forbid him to do so.
+
+129
+00:10:39,000 --> 00:10:40,000
+Of course not.
+
+130
+00:10:40,000 --> 00:10:42,000
+He changes email.
+
+131
+00:10:42,000 --> 00:10:49,000
+After that, we have to update email everywhere where we used his primary key to build relationships
+
+132
+00:10:50,000 --> 00:10:52,000
+basically in other tables.
+
+133
+00:10:52,000 --> 00:10:59,000
+Definitely, this operation will take some time dependent on a number of changes that we have to make.
+
+134
+00:11:00,000 --> 00:11:03,000
+But why should we do these cascading changes?
+
+135
+00:11:03,000 --> 00:11:10,000
+If we could avoid doing them at all and one more problems that you might face with while using natural
+
+136
+00:11:10,000 --> 00:11:16,000
+key, there might be cases when you just don't have all the necessary information all the time.
+
+137
+00:11:16,000 --> 00:11:21,000
+Imagine that in the application, you also supports registration with a phone number.
+
+138
+00:11:22,000 --> 00:11:29,000
+User can choose whether he or she wants to use phone number or email for authorization.
+
+139
+00:11:29,000 --> 00:11:31,000
+And what should we do in this case?
+
+140
+00:11:32,000 --> 00:11:33,000
+It is hard to answer.
+
+141
+00:11:33,000 --> 00:11:40,000
+You would have to come up with some email that you don't have in order to fill out the primary key.
+
+142
+00:11:40,000 --> 00:11:46,000
+And what will happen when you start sending you say that you are going to send an email to the false
+
+143
+00:11:46,000 --> 00:11:47,000
+address?
+
+144
+00:11:47,000 --> 00:11:54,000
+Well, the see what problems may appear to address all issues mentioned above.
+
+145
+00:11:54,000 --> 00:11:56,000
+You can just use surrogate key.
+
+146
+00:11:57,000 --> 00:12:04,000
+On the contrary to natural case surrogates, kid doesn't have a natural relationship with the rest data
+
+147
+00:12:04,000 --> 00:12:05,000
+in the record.
+
+148
+00:12:05,000 --> 00:12:13,000
+That's why, no matter how records will change, your surrogate key will stay the same because its only
+
+149
+00:12:13,000 --> 00:12:17,000
+goal is to identify records in the table.
+
+150
+00:12:17,000 --> 00:12:19,000
+That's it, and nothing more.
+
+151
+00:12:20,000 --> 00:12:27,000
+Usually, this is integer value that is incremented with each new row, and you are not Borsa at Wiscasset
+
+152
+00:12:27,000 --> 00:12:31,000
+in need or thinking about any false value.
+
+153
+00:12:31,000 --> 00:12:36,000
+I recommend it to use surrogate keys, but this will be only up to you.
+
+154
+00:12:36,000 --> 00:12:41,000
+Summarizing limbo, let's come up with advantages of surrogates.
+
+155
+00:12:41,000 --> 00:12:47,000
+Case surrogate Qi has no any business related information built in it.
+
+156
+00:12:47,000 --> 00:12:50,000
+This makes sinks easier.
+
+157
+00:12:50,000 --> 00:12:54,000
+We shouldn't worry about updating it in all related tables.
+
+158
+00:12:55,000 --> 00:13:01,000
+Performing cascading operations in case some business related information from primary key has been
+
+159
+00:13:01,000 --> 00:13:02,000
+changed.
+
+160
+00:13:02,000 --> 00:13:10,000
+Also, this type of case takes less memory because usually we use integer time for surrogate keys,
+
+161
+00:13:10,000 --> 00:13:12,000
+and this is only four bytes.
+
+162
+00:13:12,000 --> 00:13:17,000
+Usually, requests on different tables also completed faster.
+
+163
+00:13:17,000 --> 00:13:23,000
+Usually, there are no reasons to change surrogate qi because it is just and then the fire.
+
+164
+00:13:24,000 --> 00:13:29,000
+Thus, there is no need in cascading need of the value in all related tables.
+
+165
+00:13:30,000 --> 00:13:37,000
+And the only drawback is that I see in using surrogate integer key is that it can limit the number of
+
+166
+00:13:37,000 --> 00:13:43,000
+rows in the table because at the end of the day, we have limited amount of memory reserved for data
+
+167
+00:13:43,000 --> 00:13:47,000
+of integer type that is four bytes only.
+
+168
+00:13:47,000 --> 00:13:52,000
+But on the other hand, you can use unsigned integer value.
+
+169
+00:13:53,000 --> 00:13:59,000
+This gives you opportunity to use one low need to store additional information, and in total, you
+
+170
+00:13:59,000 --> 00:14:02,000
+can create more than four billion the rules.
+
+171
+00:14:03,000 --> 00:14:08,000
+And believe me, if you have more than four million records in your table, you're going to have a lot
+
+172
+00:14:08,000 --> 00:14:11,000
+of other problems besides limit of integer value.
+
+173
+00:14:12,000 --> 00:14:18,000
+And if you have four billion users registered in your app, you have enough resources to apply workarounds
+
+174
+00:14:18,000 --> 00:14:18,000
+for this issue.
+
+175
+00:14:19,000 --> 00:14:24,000
+One was a solution, maybe is to create table was big and start for primary care.
+
+176
+00:14:25,000 --> 00:14:30,000
+This data type use eight bytes to store information, which should be enough.
+
+177
+00:14:31,000 --> 00:14:37,000
+And after that, you can copy and paste rows from one table to another and update the last tidy value
+
+178
+00:14:37,000 --> 00:14:42,000
+for all the increment in order you can proceed, adding new ideas for new records.
+
+179
+00:14:43,000 --> 00:14:48,000
+Don't worry, I'm going to show you how to do this on practice in the following lessons.
+
+180
+00:14:49,000 --> 00:14:54,000
+We already know what's primary case and learned different classifications of primary case.
+
+181
+00:14:55,000 --> 00:15:04,000
+Now let me explain what alternate care is there also called sometimes secondary case alternate case
+
+182
+00:15:04,000 --> 00:15:11,000
+as those candidates case, which are not the primary care since there's only one primary care for a
+
+183
+00:15:11,000 --> 00:15:11,000
+table.
+
+184
+00:15:11,000 --> 00:15:19,000
+Other fields that are also unique and can be used for Typekit identification are called alternate case.
+
+185
+00:15:19,000 --> 00:15:25,000
+For example, imagine that you have table was users and you decided to use surrogate primary care,
+
+186
+00:15:25,000 --> 00:15:29,000
+but you also have another column that contains only unique values.
+
+187
+00:15:30,000 --> 00:15:33,000
+It can be common with emails, for example.
+
+188
+00:15:33,000 --> 00:15:38,000
+Indeed, it is impossible that users will have the same email the system.
+
+189
+00:15:39,000 --> 00:15:43,000
+But database administrator decided to use it as a primary key.
+
+190
+00:15:44,000 --> 00:15:51,000
+We unique restriction to a mail column and still can use it to extract user when needed.
+
+191
+00:15:51,000 --> 00:15:55,000
+But this attribute may be considered as an alternate care.
+
+192
+00:15:55,000 --> 00:15:56,000
+Is that clear?
+
+193
+00:15:57,000 --> 00:15:59,000
+Now let's look at another important term.
+
+194
+00:15:59,000 --> 00:16:02,000
+Let me explain what foreign key is.
+
+195
+00:16:02,000 --> 00:16:09,000
+One key is an attribute which is primary key in its parent table, but is included as an action.
+
+196
+00:16:09,000 --> 00:16:16,000
+But in another table with the goal to establish connection between entities, we already know that in
+
+197
+00:16:16,000 --> 00:16:24,000
+relational database we may have different tables and tables will be connected with each other to avoid
+
+198
+00:16:24,000 --> 00:16:30,000
+data duplication and to ensure the most efficient and consistent data storage neutrally.
+
+199
+00:16:30,000 --> 00:16:36,000
+In the minute, you're going to see examples how relationships between different tables are established.
+
+200
+00:16:37,000 --> 00:16:40,000
+So now you know what primary key and foreign key is.
+
+201
+00:16:41,000 --> 00:16:47,000
+That means we can learn type of relationships and understand technical side of establishing connections
+
+202
+00:16:47,000 --> 00:16:48,000
+between tables.
+
+203
+00:16:49,000 --> 00:16:52,000
+First of all, let's understand what relationship is.
+
+204
+00:16:53,000 --> 00:17:00,000
+There is a definition from a relational database theory that was defined by Edgar Frankel, inventor
+
+205
+00:17:00,000 --> 00:17:03,000
+of relational model database management.
+
+206
+00:17:03,000 --> 00:17:09,000
+But instead of reading that definition, I'm going to explain you what relationship is, in simple words,
+
+207
+00:17:10,000 --> 00:17:16,000
+relationship in a relational database management system using an association of records from two or
+
+208
+00:17:16,000 --> 00:17:17,000
+more tables.
+
+209
+00:17:18,000 --> 00:17:23,000
+Let me also explain the relationship on example from real life user has a car.
+
+210
+00:17:24,000 --> 00:17:30,000
+This is a relationship between the user of the car and dependent on the number of objects from each
+
+211
+00:17:30,000 --> 00:17:31,000
+side of this relationship.
+
+212
+00:17:32,000 --> 00:17:35,000
+Then different types of relationship is that clear.
+
+213
+00:17:36,000 --> 00:17:39,000
+In the relational database, there are three types of relationships.
+
+214
+00:17:40,000 --> 00:17:42,000
+They are one to many.
+
+215
+00:17:43,000 --> 00:17:48,000
+That is when one user math many cars matter to many.
+
+216
+00:17:48,000 --> 00:17:57,000
+One user may have a lot of cars and one car may be owned by two users, by two co-owners and one to
+
+217
+00:17:57,000 --> 00:17:58,000
+one.
+
+218
+00:17:58,000 --> 00:18:03,000
+This relationship one one user can own one car only.
+
+219
+00:18:04,000 --> 00:18:10,000
+And now I'd like you to understand each of these relationship types, one by one in details, we'll
+
+220
+00:18:10,000 --> 00:18:13,000
+try to understand that logical first.
+
+221
+00:18:13,000 --> 00:18:20,000
+And after that, I will provide technical explanation on how this is implemented on database level one
+
+222
+00:18:20,000 --> 00:18:27,000
+to many means that one object from one table may be related to many objects from another table.
+
+223
+00:18:28,000 --> 00:18:31,000
+Now, a particular example was user and car.
+
+224
+00:18:31,000 --> 00:18:34,000
+We can apply want the money relationship in the next week?
+
+225
+00:18:34,000 --> 00:18:40,000
+One user may own multiple cars, but each car has only one user.
+
+226
+00:18:41,000 --> 00:18:43,000
+This is equal to one to many relationship.
+
+227
+00:18:44,000 --> 00:18:46,000
+One user owning many cars.
+
+228
+00:18:46,000 --> 00:18:47,000
+Does it make sense?
+
+229
+00:18:48,000 --> 00:18:53,000
+If you understood it logically, let's learn how this is implemented on database level.
+
+230
+00:18:54,000 --> 00:19:01,000
+Each relationship is implemented by migration of primary care from parent table in the direction of
+
+231
+00:19:01,000 --> 00:19:01,000
+another table.
+
+232
+00:19:02,000 --> 00:19:07,000
+The fields that we received after this migration is called foreign key.
+
+233
+00:19:08,000 --> 00:19:11,000
+In this example, we have table user and table car.
+
+234
+00:19:12,000 --> 00:19:16,000
+We add new column and table car that is called user I.D..
+
+235
+00:19:17,000 --> 00:19:23,000
+This will be a column as a source for Enki and for each car of specific user.
+
+236
+00:19:24,000 --> 00:19:29,000
+We pulled his I.D. and that's it was successfully established relationship.
+
+237
+00:19:30,000 --> 00:19:33,000
+Now you can query these two tables together.
+
+238
+00:19:33,000 --> 00:19:42,000
+For example, your query may sound like this return we can manufacture of each car that belongs to the
+
+239
+00:19:42,000 --> 00:19:50,000
+user was a new one and user email, and you have enough information to map records from two tables between
+
+240
+00:19:50,000 --> 00:19:51,000
+each other.
+
+241
+00:19:52,000 --> 00:19:53,000
+Do you understand?
+
+242
+00:19:54,000 --> 00:20:00,000
+In our sequel lesson, I will teach you how to grade school queries to retrieve this kind of information.
+
+243
+00:20:01,000 --> 00:20:03,000
+But is it clear for you, at least on the high level?
+
+244
+00:20:04,000 --> 00:20:11,000
+Remember, understanding the concept is much more important rather than understanding of detailed query,
+
+245
+00:20:11,000 --> 00:20:18,000
+because syntax of sequel is something you can always learn and something what you can always find on
+
+246
+00:20:18,000 --> 00:20:19,000
+the internet.
+
+247
+00:20:19,000 --> 00:20:27,000
+But deep understanding this assumption was belongs only to you and can be found in the internet.
+
+248
+00:20:27,000 --> 00:20:34,000
+So I suppose for a minute, if needed to understand this, once you feel sure that you understood this.
+
+249
+00:20:34,000 --> 00:20:35,000
+Let's proceed.
+
+250
+00:20:36,000 --> 00:20:43,000
+On the dining room, we usually mark this relationship with asterisk and one digit asterisk stands for
+
+251
+00:20:43,000 --> 00:20:44,000
+many.
+
+252
+00:20:44,000 --> 00:20:46,000
+And one stands for one.
+
+253
+00:20:47,000 --> 00:20:50,000
+Again, one user and many cars.
+
+254
+00:20:50,000 --> 00:20:52,000
+Each car has only one user.
+
+255
+00:20:53,000 --> 00:21:00,000
+One more thing in case you are going to use object, relational map and framework in your programming
+
+256
+00:21:00,000 --> 00:21:06,000
+language, you may find that sometimes there is a difference between one to many and many to one relationship.
+
+257
+00:21:07,000 --> 00:21:15,000
+Basically, these are the same relationship types, but the difference in what is read here in the current
+
+258
+00:21:15,000 --> 00:21:22,000
+object between the related other objects, for example, in the same case, relationship will be named
+
+259
+00:21:22,000 --> 00:21:30,000
+one to many in the user entity, and it will be managed to one incur entity do feel the difference.
+
+260
+00:21:31,000 --> 00:21:31,000
+That's great.
+
+261
+00:21:32,000 --> 00:21:32,000
+Let's move on.
+
+262
+00:21:34,000 --> 00:21:40,000
+And the next relationship that we are going to review today is managed to manage this kind of relationship
+
+263
+00:21:40,000 --> 00:21:47,000
+defiance as a situation when one records from one table may be connected to as many records from another
+
+264
+00:21:47,000 --> 00:21:52,000
+table and one records from another table may be connected to as many records from the first table.
+
+265
+00:21:53,000 --> 00:21:56,000
+I can say that many to many relationship.
+
+266
+00:21:56,000 --> 00:22:02,000
+It is also humans name, and technically this is just too one.
+
+267
+00:22:02,000 --> 00:22:07,000
+Too many relationships implemented in two directions doesn't make sense.
+
+268
+00:22:08,000 --> 00:22:11,000
+Let's try to understand how to implement this.
+
+269
+00:22:11,000 --> 00:22:14,000
+Imagine that we have students and different courses.
+
+270
+00:22:15,000 --> 00:22:22,000
+Each student may enroll in multiple courses, and basically each course may ask multiple students.
+
+271
+00:22:22,000 --> 00:22:30,000
+We have bidirectional one to many relationship between these two tables or, in other words, many too
+
+272
+00:22:30,000 --> 00:22:31,000
+many.
+
+273
+00:22:31,000 --> 00:22:39,000
+In this case, we can't just put foreign key into tables because we need to build many relationships
+
+274
+00:22:39,000 --> 00:22:45,000
+on one side and many relationships for each record on another side.
+
+275
+00:22:45,000 --> 00:22:50,000
+So technically, this is impossible to do with two tables only.
+
+276
+00:22:51,000 --> 00:22:56,000
+That's why to organize money into money relationships between two tables when it degrades a set table.
+
+277
+00:22:57,000 --> 00:23:05,000
+This table will contain foreign keys from one and the second tables and will map them between each other.
+
+278
+00:23:06,000 --> 00:23:13,000
+In this particular case, each student was I.D. one in the world, and some course we map these, of
+
+279
+00:23:13,000 --> 00:23:16,000
+course, and student in the SEC table.
+
+280
+00:23:16,000 --> 00:23:21,000
+And even this course has also students was I need to hand suite.
+
+281
+00:23:21,000 --> 00:23:25,000
+We also specify this in the table here.
+
+282
+00:23:25,000 --> 00:23:31,000
+We have Compound's primary key combination of these two fields has to be unique in each step.
+
+283
+00:23:32,000 --> 00:23:38,000
+Regarding naming convention for such tables, it depends on the final purpose of this table.
+
+284
+00:23:38,000 --> 00:23:45,000
+If we just want to establish connection between two entities, then we can use and the two names and
+
+285
+00:23:45,000 --> 00:23:48,000
+the verb that describes connection between them.
+
+286
+00:23:48,000 --> 00:23:56,000
+In this case, we can names a stable student has course or even should a student course, in case we
+
+287
+00:23:56,000 --> 00:24:04,000
+would add another business related info in each sample like date of enrollment, price information about
+
+288
+00:24:04,000 --> 00:24:09,000
+discounts and in case we're going to operate with this entity, as was a separate one.
+
+289
+00:24:10,000 --> 00:24:17,000
+In this case, we can give some business variable name to this table, for example, enrollment is that
+
+290
+00:24:17,000 --> 00:24:18,000
+clear.
+
+291
+00:24:19,000 --> 00:24:22,000
+And we have one more type of relationship to discuss.
+
+292
+00:24:23,000 --> 00:24:25,000
+I'm talking about one to one relationship.
+
+293
+00:24:25,000 --> 00:24:29,000
+This is the rarest type of relationship, to be honest.
+
+294
+00:24:29,000 --> 00:24:36,000
+Based on my experience, you would face was one too many and many, too many relationships more often
+
+295
+00:24:36,000 --> 00:24:38,000
+than was one to one.
+
+296
+00:24:38,000 --> 00:24:45,000
+Because this type of relationship describes very specific business case one one records in one table
+
+297
+00:24:45,000 --> 00:24:49,000
+is related with only one record from another table.
+
+298
+00:24:49,000 --> 00:24:52,000
+Can you think of cases like this?
+
+299
+00:24:52,000 --> 00:24:53,000
+It is hard to do.
+
+300
+00:24:53,000 --> 00:24:54,000
+Is that preparation?
+
+301
+00:24:55,000 --> 00:24:56,000
+And I can understand you.
+
+302
+00:24:57,000 --> 00:25:00,000
+I come up with some example for this type of relationship.
+
+303
+00:25:01,000 --> 00:25:06,000
+Imagine one transaction and you have table was all transactions in that.
+
+304
+00:25:07,000 --> 00:25:09,000
+And also there is transaction info table.
+
+305
+00:25:10,000 --> 00:25:13,000
+There is more detailed information about each transaction.
+
+306
+00:25:13,000 --> 00:25:19,000
+And it also stores sensitive information, and not all the users can read it.
+
+307
+00:25:19,000 --> 00:25:25,000
+That's why there is a need to store some attributes and values in secure table.
+
+308
+00:25:26,000 --> 00:25:32,000
+But still, there is a connection between these two tables, and each transaction is connected with
+
+309
+00:25:32,000 --> 00:25:36,000
+only one recording transaction in a table and vice versa.
+
+310
+00:25:37,000 --> 00:25:42,000
+Each transaction infrared connected to only one transaction.
+
+311
+00:25:42,000 --> 00:25:48,000
+To implement this connection, you can use two strategies you can use a use share key.
+
+312
+00:25:48,000 --> 00:25:56,000
+That means that the primary key in one table is equal to primary key in another table, or you can create
+
+313
+00:25:56,000 --> 00:26:02,000
+joint column and declare field where primary key will be exported in the table.
+
+314
+00:26:03,000 --> 00:26:09,000
+Most options are good in this case because they allow you to build the relationship between two tables.
+
+315
+00:26:10,000 --> 00:26:18,000
+I would just put a stress one more time on the fact that so many cases for one to one relationship heaven,
+
+316
+00:26:18,000 --> 00:26:24,000
+one to one relationship without clear argumentation is an indicator of pure database design.
+
+317
+00:26:25,000 --> 00:26:28,000
+That's all what I wanted to share with you in this lesson.
+
+318
+00:26:29,000 --> 00:26:36,000
+Now let's recap what we have learned today in this lesson of the grant basic terms in the relational
+
+319
+00:26:36,000 --> 00:26:37,000
+databases.
+
+320
+00:26:37,000 --> 00:26:43,000
+Now, you know the difference between such terms as database and schema you used in details of what
+
+321
+00:26:43,000 --> 00:26:45,000
+primary care is.
+
+322
+00:26:45,000 --> 00:26:52,000
+Also, we have learned different classifications of primary keys, such as single and compound, natural
+
+323
+00:26:52,000 --> 00:26:53,000
+and surrogate.
+
+324
+00:26:54,000 --> 00:26:59,000
+I explained to you what Ultimate Kit is after that.
+
+325
+00:26:59,000 --> 00:27:03,000
+We learned such an important concept in relational database as foreign key.
+
+326
+00:27:04,000 --> 00:27:08,000
+And at the end of the lesson, we've got three main types of relationship.
+
+327
+00:27:09,000 --> 00:27:15,000
+Now, you know the difference between one of the many, many too many and one to one relationships.
+
+328
+00:27:16,000 --> 00:27:17,000
+Thanks a lot for your attention, team.
+
+329
+00:27:18,000 --> 00:27:19,000
+Have a great day.
+
+330
+00:27:19,000 --> 00:27:20,000
+See you in the next lesson.
+
diff --git a/47 - Relational databases/002 Create Schema & Table Naming, Collation, Engines, Types, Column Properties_en.srt b/47 - Relational databases/002 Create Schema & Table Naming, Collation, Engines, Types, Column Properties_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..2d6a4a1b5a986b20c7b8c2f087a5d238038a3389
--- /dev/null
+++ b/47 - Relational databases/002 Create Schema & Table Naming, Collation, Engines, Types, Column Properties_en.srt
@@ -0,0 +1,1888 @@
+1
+00:00:06,000 --> 00:00:07,000
+Hello came by this moment.
+
+2
+00:00:07,000 --> 00:00:12,000
+Now, of course, you already have some surgical knowledge about the relational databases.
+
+3
+00:00:12,000 --> 00:00:16,000
+And in this lesson, we're going to have more practice activities.
+
+4
+00:00:17,000 --> 00:00:22,000
+This lesson will be dedicated to learning of basic operations with database management system.
+
+5
+00:00:23,000 --> 00:00:26,000
+We are going to create schema and table in database.
+
+6
+00:00:26,000 --> 00:00:30,000
+And as we go, we'll learn a lot of interest in sinks.
+
+7
+00:00:31,000 --> 00:00:36,000
+We're going to have super interesting lessons because we'll start from practice activities.
+
+8
+00:00:36,000 --> 00:00:41,000
+And we're going to learn just enough series to achieve all of the lessons learned.
+
+9
+00:00:41,000 --> 00:00:44,000
+The lesson will perform operations in my school workbench.
+
+10
+00:00:44,000 --> 00:00:48,000
+And you will gradually start learning it step by step.
+
+11
+00:00:48,000 --> 00:00:54,000
+I would explain you what main buttons are and that will hold a live demo was explaining off each step
+
+12
+00:00:54,000 --> 00:00:55,000
+that I'm doing.
+
+13
+00:00:56,000 --> 00:01:02,000
+The main goal of the course in general and this lesson in particular, is orientation on skills that
+
+14
+00:01:02,000 --> 00:01:08,000
+you would need on practice and you already know enough theory to proceed with this lesson.
+
+15
+00:01:08,000 --> 00:01:15,000
+If you watched all previous lessons, now will not have one more serious lesson because I understand
+
+16
+00:01:15,000 --> 00:01:21,000
+that it will be hard to remember so much information without understanding how this information may
+
+17
+00:01:21,000 --> 00:01:22,000
+help you.
+
+18
+00:01:22,000 --> 00:01:25,000
+And why do you need to know it at all?
+
+19
+00:01:26,000 --> 00:01:31,000
+That's why in this lesson, we'll just create a schema and one table with you.
+
+20
+00:01:31,000 --> 00:01:37,000
+That's it sounds like not a lot of things to do, but still a lot of things to understand.
+
+21
+00:01:37,000 --> 00:01:40,000
+I will put separate focus on naming convention.
+
+22
+00:01:40,000 --> 00:01:43,000
+We'll talk about charset and collation.
+
+23
+00:01:43,000 --> 00:01:46,000
+Also, we are going to review my SQL storage engines.
+
+24
+00:01:47,000 --> 00:01:49,000
+One will start create columns in our table.
+
+25
+00:01:49,000 --> 00:01:53,000
+You will need to understand different data types and column properties.
+
+26
+00:01:54,000 --> 00:01:55,000
+Be prepared.
+
+27
+00:01:55,000 --> 00:01:58,000
+This is going to be interesting and useful lesson.
+
+28
+00:01:58,000 --> 00:01:59,000
+Let's start.
+
+29
+00:02:00,000 --> 00:02:02,000
+Let me start from the screen sharing straightaway.
+
+30
+00:02:03,000 --> 00:02:08,000
+As I already said, they were going to have a lot of practice activities in this lesson.
+
+31
+00:02:08,000 --> 00:02:10,000
+We're going to work in my school workbench.
+
+32
+00:02:10,000 --> 00:02:17,000
+In case you don't have neither my skill nor workbench installed, please refer to the previous lessons.
+
+33
+00:02:18,000 --> 00:02:24,000
+I have separate lesson where I explained how to install my school apps on your computer and configure
+
+34
+00:02:24,000 --> 00:02:26,000
+connection to my SQL server.
+
+35
+00:02:26,000 --> 00:02:35,000
+So here is how our connected server looks like we are my SQL workbench, he writes about interface once
+
+36
+00:02:35,000 --> 00:02:37,000
+connections within my SQL server is established.
+
+37
+00:02:37,000 --> 00:02:39,000
+You have a separate topic here.
+
+38
+00:02:40,000 --> 00:02:43,000
+You can return back on the home page if you wish.
+
+39
+00:02:43,000 --> 00:02:49,000
+By clicking on this icon and vice versa menu options are located here on top.
+
+40
+00:02:50,000 --> 00:02:54,000
+One of the most frequently used operations depicted, we are icons here.
+
+41
+00:02:55,000 --> 00:02:56,000
+We're going to use them and learn.
+
+42
+00:02:56,000 --> 00:02:58,000
+During the work was workbench.
+
+43
+00:02:58,000 --> 00:03:07,000
+Some of them are great SQL query, tap, create schema, create table inactive database, create a new
+
+44
+00:03:07,000 --> 00:03:09,000
+view and others.
+
+45
+00:03:09,000 --> 00:03:16,000
+Gradually, we'll have practice with each of these options potentially set in navigator view.
+
+46
+00:03:16,000 --> 00:03:20,000
+You have two taps, layer administration and schemas.
+
+47
+00:03:21,000 --> 00:03:27,000
+Since this is our first practical lesson, I wouldn't start from administration tab because I believe
+
+48
+00:03:27,000 --> 00:03:30,000
+we need to start from something more simple in this moment.
+
+49
+00:03:31,000 --> 00:03:37,000
+We're going to have also a separate lesson where I will explain how the administrator database, including
+
+50
+00:03:37,000 --> 00:03:43,000
+data imports and exports users and privileges configuration, server performance monitoring and others.
+
+51
+00:03:44,000 --> 00:03:51,000
+So in this lesson, let's perform our first steps in order to create our database and fill it out with
+
+52
+00:03:51,000 --> 00:03:51,000
+data.
+
+53
+00:03:52,000 --> 00:03:55,000
+The first thing that we need to do is to create schema.
+
+54
+00:03:56,000 --> 00:03:59,000
+Find this, I can hear it will help us to create schema.
+
+55
+00:04:00,000 --> 00:04:03,000
+We need to specify name of our schema.
+
+56
+00:04:03,000 --> 00:04:08,000
+Let's call it learning TDB and the first rule here.
+
+57
+00:04:08,000 --> 00:04:14,000
+While this is not a strict rule and you will grigg's a database, it is still strongly recommended to
+
+58
+00:04:14,000 --> 00:04:20,000
+follow the naming convention and naming convention is a set of unwritten rules.
+
+59
+00:04:20,000 --> 00:04:27,000
+We all should use if you want an increase in the ability of the whole data model will apply these rules
+
+60
+00:04:27,000 --> 00:04:35,000
+while naming A.I. inside the database tables, columns, primary and foreign keys, stored procedures,
+
+61
+00:04:35,000 --> 00:04:43,000
+functions, views, etc. While most rules are pretty logical, you could go with some you have invented
+
+62
+00:04:43,000 --> 00:04:45,000
+and that is completely up to you.
+
+63
+00:04:45,000 --> 00:04:52,000
+For example, when name any data be subject, it is recommended to use lower letters in case when you
+
+64
+00:04:52,000 --> 00:04:54,000
+to have multiple words and name.
+
+65
+00:04:54,000 --> 00:05:00,000
+We use underscore like in this case, for example, learn, underscore key.
+
+66
+00:05:00,000 --> 00:05:02,000
+Underscore me is a clear.
+
+67
+00:05:03,000 --> 00:05:10,000
+I believe that it is clear for you how to use Underscores, but probably the only one things that are
+
+68
+00:05:10,000 --> 00:05:16,000
+still not clear for you is why we need to follow naming convention and what benefits we expect to get.
+
+69
+00:05:16,000 --> 00:05:23,000
+For example, why we just can't follow the same naming convention as we have in Java and use camel case.
+
+70
+00:05:24,000 --> 00:05:27,000
+Let me name a few reasons to follow naming convention.
+
+71
+00:05:28,000 --> 00:05:28,000
+Reason number one.
+
+72
+00:05:29,000 --> 00:05:31,000
+Simplicity of the base model.
+
+73
+00:05:31,000 --> 00:05:35,000
+Usually, you don't have just one or two tables in your database.
+
+74
+00:05:36,000 --> 00:05:42,000
+Users are much more of them in your database, and having consistent naming would simplify navigation
+
+75
+00:05:42,000 --> 00:05:44,000
+between the tables and data.
+
+76
+00:05:44,000 --> 00:05:49,000
+Because to avoid total mass, you have to follow up this summer organizational rules.
+
+77
+00:05:49,000 --> 00:05:52,000
+The second reason is database stability.
+
+78
+00:05:52,000 --> 00:05:58,000
+If you decided to use the same naming convention as a programming language of your application, you
+
+79
+00:05:58,000 --> 00:06:04,000
+have to remember one more rule usually that the base is one of the most stable components in your app.
+
+80
+00:06:05,000 --> 00:06:09,000
+Changes and database layer one and only done with it is necessary.
+
+81
+00:06:10,000 --> 00:06:16,000
+Imagine that you would like to use Java naming convention for a database, but in one year you decided
+
+82
+00:06:16,000 --> 00:06:24,000
+to have other modules or even on loads of vital each, and those modules also interact with this database.
+
+83
+00:06:25,000 --> 00:06:26,000
+What will you do?
+
+84
+00:06:26,000 --> 00:06:33,000
+You can constantly change naming convention just because you changed main programming language in your
+
+85
+00:06:33,000 --> 00:06:35,000
+app that understands this.
+
+86
+00:06:36,000 --> 00:06:42,000
+In case you follow database naming convention, you can expect that even after you change the programming
+
+87
+00:06:42,000 --> 00:06:46,000
+language of your app, you still have stable database there.
+
+88
+00:06:47,000 --> 00:06:51,000
+This will help you to keep your database well, organized and structured.
+
+89
+00:06:52,000 --> 00:06:57,000
+And the last, but not the least reason with the ability of data monitoring by each team member.
+
+90
+00:06:57,000 --> 00:07:03,000
+Once you have specific paths that you follow, it will be easier for you and what is also important?
+
+91
+00:07:03,000 --> 00:07:07,000
+It would be easier for colleagues of yours to query a database.
+
+92
+00:07:07,000 --> 00:07:15,000
+What it often work Broken teams no small or big, and very often with support databases created not
+
+93
+00:07:15,000 --> 00:07:16,000
+by us.
+
+94
+00:07:16,000 --> 00:07:20,000
+That's why following common rules would simplify our lives.
+
+95
+00:07:21,000 --> 00:07:21,000
+Is that clear?
+
+96
+00:07:22,000 --> 00:07:28,000
+Even in case you still have any questions, please put your questions below this video, and I will
+
+97
+00:07:28,000 --> 00:07:30,000
+be happy to answer those.
+
+98
+00:07:31,000 --> 00:07:34,000
+So we specified name for our new schema.
+
+99
+00:07:34,000 --> 00:07:36,000
+What else we need to specify here?
+
+100
+00:07:36,000 --> 00:07:41,000
+Let's check together the next thing that we need to specify here.
+
+101
+00:07:41,000 --> 00:07:43,000
+I charset and collation.
+
+102
+00:07:43,000 --> 00:07:47,000
+Let's have you one by one and we'll start from Charset first.
+
+103
+00:07:48,000 --> 00:07:53,000
+And my second character set is a set of characters that are legal in a string.
+
+104
+00:07:53,000 --> 00:08:00,000
+For example, imagine that we have English alphabet from A to Z, and then we assign each letter to
+
+105
+00:08:00,000 --> 00:08:00,000
+a number.
+
+106
+00:08:00,000 --> 00:08:04,000
+We have a equal to one be equal to do and so on.
+
+107
+00:08:05,000 --> 00:08:07,000
+In this case, a is a symbol.
+
+108
+00:08:08,000 --> 00:08:15,000
+And number one that is associated with the letter A is encoded is a combination of all letters from
+
+109
+00:08:15,000 --> 00:08:20,000
+A to Z and Zach responding in accordance is a character set.
+
+110
+00:08:20,000 --> 00:08:21,000
+This makes sense.
+
+111
+00:08:22,000 --> 00:08:25,000
+Can you understand now what the charset is?
+
+112
+00:08:25,000 --> 00:08:30,000
+Let's select in charset UTF eight and B for?
+
+113
+00:08:31,000 --> 00:08:37,000
+Because we need Typekit UTF eight and coding sets use for bytes to store character.
+
+114
+00:08:37,000 --> 00:08:46,000
+By default, most people use UTF eight as Alice off UTF eight and B three is its only source and maximum
+
+115
+00:08:46,000 --> 00:08:48,000
+of three bytes per quarter point.
+
+116
+00:08:49,000 --> 00:08:54,000
+On the official website of my school, it is referred as deprecated and it is mentioned that it will
+
+117
+00:08:54,000 --> 00:08:55,000
+be removed.
+
+118
+00:08:55,000 --> 00:09:03,000
+Instead, it is recommended to use UTF eight and B for each character set has one or more correlations.
+
+119
+00:09:03,000 --> 00:09:04,000
+Is it defined?
+
+120
+00:09:04,000 --> 00:09:10,000
+A set of rules for comparing characters within the character set and my school collation is a set of
+
+121
+00:09:10,000 --> 00:09:14,000
+rules used to compare characters in the particular character.
+
+122
+00:09:14,000 --> 00:09:21,000
+Set each character set in my school as at least one default collation, and it can have more than one
+
+123
+00:09:21,000 --> 00:09:22,000
+collation.
+
+124
+00:09:23,000 --> 00:09:29,000
+However, the character sets cannot have the same collation, usually as there is a default collation
+
+125
+00:09:29,000 --> 00:09:32,000
+associated with each other set.
+
+126
+00:09:32,000 --> 00:09:39,000
+But during the creation of our schema, we can select a collation for our charset by convention.
+
+127
+00:09:40,000 --> 00:09:45,000
+Collation for a current set begins with the character, set name and ends with.
+
+128
+00:09:46,000 --> 00:09:55,000
+As I just stands for case insensitive, CSA stands for case sensitive or being as it stands for binary.
+
+129
+00:09:56,000 --> 00:10:04,000
+My school allows you to specify a character set and collation at levels server, database, table and
+
+130
+00:10:04,000 --> 00:10:04,000
+column.
+
+131
+00:10:05,000 --> 00:10:11,000
+Currently, we can set up collation and database level, and if you are wondering which collation to
+
+132
+00:10:11,000 --> 00:10:19,000
+choose, I recommend you to go with UTF rmv for Unicode psi so that sorting is always handled properly.
+
+133
+00:10:19,000 --> 00:10:22,000
+It was minimal and noticeable performance drawbacks.
+
+134
+00:10:23,000 --> 00:10:29,000
+Anyway, you can see there are really a lot of different variations of collation here, and you can
+
+135
+00:10:29,000 --> 00:10:35,000
+check documentation to select the ones that works best for you in case you're also experiencing issues.
+
+136
+00:10:35,000 --> 00:10:41,000
+Was interface here like I do, and you can see the whole name of just selection.
+
+137
+00:10:41,000 --> 00:10:42,000
+Don't worry.
+
+138
+00:10:42,000 --> 00:10:48,000
+In my school revenge area operations that you are going to perform, this translates into SQL quick
+
+139
+00:10:49,000 --> 00:10:52,000
+and you can check query before execution of any command.
+
+140
+00:10:53,000 --> 00:10:57,000
+By the way, this is also one of the ways to learn sequel better.
+
+141
+00:10:58,000 --> 00:11:02,000
+I click a plain button here and here you can see SQL query.
+
+142
+00:11:02,000 --> 00:11:04,000
+This is not the lesson about a sequel.
+
+143
+00:11:05,000 --> 00:11:11,000
+My goal was to let you understand what operations we need and we can do in general.
+
+144
+00:11:11,000 --> 00:11:15,000
+Our database and only after that jump to none in the sequel.
+
+145
+00:11:15,000 --> 00:11:20,000
+Because when I started learning SQL School with students straight away, they just couldn't understand
+
+146
+00:11:20,000 --> 00:11:23,000
+why they need this and what they're doing with it.
+
+147
+00:11:24,000 --> 00:11:31,000
+As you can see here, we use great operator to create schema with name 90 DB with default character
+
+148
+00:11:31,000 --> 00:11:36,000
+set UTF eight and before and collation UTF eight and before in the courtyard.
+
+149
+00:11:37,000 --> 00:11:44,000
+Even in case you select the wrong option because you were not able to use a full name and drop down.
+
+150
+00:11:45,000 --> 00:11:47,000
+You can adjust name of collation here.
+
+151
+00:11:48,000 --> 00:11:50,000
+Now, query looks good to me.
+
+152
+00:11:50,000 --> 00:11:51,000
+That's executed.
+
+153
+00:11:52,000 --> 00:11:58,000
+In case operation was successful, you can see a sequel statement has been executed successfully.
+
+154
+00:11:58,000 --> 00:12:03,000
+Click Finish Button now on Sikkema Step on the left.
+
+155
+00:12:03,000 --> 00:12:06,000
+We can see that we have a new schema in the list here.
+
+156
+00:12:07,000 --> 00:12:13,000
+Nemo Creek was mouse left click and once the name of the database is in bold, that means you selected
+
+157
+00:12:13,000 --> 00:12:16,000
+the specific database and you can work with it.
+
+158
+00:12:17,000 --> 00:12:22,000
+Inside, you can see that we may have tables, views, stored procedures, functions.
+
+159
+00:12:23,000 --> 00:12:28,000
+We are going to learn how to create all these database objects and how to work with them.
+
+160
+00:12:28,000 --> 00:12:33,000
+But in this lesson, let's create table and perform basic operations with it.
+
+161
+00:12:34,000 --> 00:12:38,000
+We can create table people using the workbench interface in different ways.
+
+162
+00:12:38,000 --> 00:12:45,000
+You can use one of the many items here is at the school to create new table or you can use menu.
+
+163
+00:12:46,000 --> 00:12:50,000
+I do mouse right click on tables and select Create Table.
+
+164
+00:12:51,000 --> 00:12:54,000
+Let me walk you through the configuration here.
+
+165
+00:12:55,000 --> 00:12:59,000
+The first thing we need to specify here is stable name.
+
+166
+00:12:59,000 --> 00:13:06,000
+Let's imagine that we want to create user table user table will contain information about users.
+
+167
+00:13:06,000 --> 00:13:10,000
+And now we're in sync about naming convention for tables.
+
+168
+00:13:11,000 --> 00:13:17,000
+One of the arguable questions is whether you need to use plural and the naming of tables or singular.
+
+169
+00:13:17,000 --> 00:13:24,000
+For example, if you're going to store users in this table, isn't it logical to name table users in
+
+170
+00:13:24,000 --> 00:13:24,000
+plural?
+
+171
+00:13:25,000 --> 00:13:27,000
+So different points of view on this?
+
+172
+00:13:28,000 --> 00:13:28,000
+Let me explain.
+
+173
+00:13:30,000 --> 00:13:33,000
+The first option is to use Singapore four table name.
+
+174
+00:13:33,000 --> 00:13:35,000
+That is what I would recommend you to.
+
+175
+00:13:36,000 --> 00:13:41,000
+I prefer to use the uninfected noun, which in English happens to be singular.
+
+176
+00:13:42,000 --> 00:13:48,000
+If your name and entities that represent real world facts, you should use nouns.
+
+177
+00:13:49,000 --> 00:13:54,000
+These are tables like employee, customer, city and country, for example.
+
+178
+00:13:55,000 --> 00:14:00,000
+If possible, use a single word that exactly describes what is in the table.
+
+179
+00:14:01,000 --> 00:14:05,000
+Let's try to understand what benefits this brings to us.
+
+180
+00:14:05,000 --> 00:14:12,000
+The first reason is logical and semantic, and really understands that this is also maybe considered
+
+181
+00:14:12,000 --> 00:14:13,000
+as arguable point.
+
+182
+00:14:14,000 --> 00:14:21,000
+For example, at your home, if you have back with socks, you would put a label on it that says sucks,
+
+183
+00:14:22,000 --> 00:14:24,000
+but not Sock and Single-A.
+
+184
+00:14:24,000 --> 00:14:29,000
+But another question why you should apply naming convention from socks to a database?
+
+185
+00:14:30,000 --> 00:14:30,000
+Just joking.
+
+186
+00:14:30,000 --> 00:14:37,000
+But indeed, naming people in plural form also contains some logical hosts, because if you want to
+
+187
+00:14:37,000 --> 00:14:42,000
+name people in plural, why would don't ask us questions about grammar too?
+
+188
+00:14:43,000 --> 00:14:49,000
+For example, we also might be thinking about questions like this, since we're usually doing something
+
+189
+00:14:49,000 --> 00:14:50,000
+with zeros.
+
+190
+00:14:50,000 --> 00:14:55,000
+Why not to put the name in the accusative case or another question?
+
+191
+00:14:55,000 --> 00:15:03,000
+If we have a tables that will write to laws and we agree, why not put the name indeed, if it is table
+
+192
+00:15:03,000 --> 00:15:04,000
+of Simpson?
+
+193
+00:15:04,000 --> 00:15:06,000
+Why not use genitive?
+
+194
+00:15:07,000 --> 00:15:07,000
+And you know what?
+
+195
+00:15:08,000 --> 00:15:12,000
+We will not constantly address all of these questions because we will end up with a mess.
+
+196
+00:15:13,000 --> 00:15:15,000
+The table is defined as an abstract.
+
+197
+00:15:15,000 --> 00:15:20,000
+Content exists regardless of its state or usage uses.
+
+198
+00:15:20,000 --> 00:15:26,000
+An unaffected noun is simple, logical, regular and language independent.
+
+199
+00:15:27,000 --> 00:15:28,000
+The second reason is convenience.
+
+200
+00:15:29,000 --> 00:15:32,000
+It is easy to come out with a single names.
+
+201
+00:15:32,000 --> 00:15:33,000
+Xen was plural.
+
+202
+00:15:33,000 --> 00:15:41,000
+Once objects can have irregular plurals, are not normal at all, but will always have a single one.
+
+203
+00:15:41,000 --> 00:15:43,000
+With few exceptions like news.
+
+204
+00:15:44,000 --> 00:15:46,000
+Another reason is simplicity.
+
+205
+00:15:46,000 --> 00:15:51,000
+One little gem to learn in the sequel, you are going to use table names for queries.
+
+206
+00:15:51,000 --> 00:15:58,000
+Also, we're going to refer to attributes of a table like, for example, to get the value of name attributes
+
+207
+00:15:58,000 --> 00:15:58,000
+and use.
+
+208
+00:15:58,000 --> 00:16:04,000
+Our table will use user not name, but not users, not name.
+
+209
+00:16:04,000 --> 00:16:07,000
+And it seems logical and simple.
+
+210
+00:16:07,000 --> 00:16:08,000
+Don't you think so?
+
+211
+00:16:08,000 --> 00:16:13,000
+You extract the name of specific user, but not all users.
+
+212
+00:16:14,000 --> 00:16:14,000
+Definitely.
+
+213
+00:16:14,000 --> 00:16:19,000
+I can find the workarounds for these two more experienced students.
+
+214
+00:16:19,000 --> 00:16:24,000
+While watching this video may mention that we can use Alliss for table names.
+
+215
+00:16:24,000 --> 00:16:26,000
+But why we need to do this?
+
+216
+00:16:26,000 --> 00:16:29,000
+You could just can name table in singular.
+
+217
+00:16:29,000 --> 00:16:29,000
+And that's it.
+
+218
+00:16:30,000 --> 00:16:35,000
+I'm the guy who always finds a way to simplify everything to the possible degree.
+
+219
+00:16:35,000 --> 00:16:37,000
+And this is one of the cases.
+
+220
+00:16:37,000 --> 00:16:43,000
+One more reason is that often consider it's not like an important one, but still it's worth of your
+
+221
+00:16:43,000 --> 00:16:43,000
+attention.
+
+222
+00:16:44,000 --> 00:16:45,000
+It is globalization.
+
+223
+00:16:45,000 --> 00:16:51,000
+We often work in multinational teams, and we're often for many of team members.
+
+224
+00:16:51,000 --> 00:16:58,000
+English is not native language and having a repository table instead of repositories or having status
+
+225
+00:16:58,000 --> 00:17:00,000
+table instead of statuses.
+
+226
+00:17:00,000 --> 00:17:07,000
+We'll save your team a lot of time and minimize errors because of typos and similar linguistic issues.
+
+227
+00:17:07,000 --> 00:17:13,000
+Probably this is not like the most critical reason to use single names for tables.
+
+228
+00:17:13,000 --> 00:17:15,000
+But promise me just to think about it.
+
+229
+00:17:16,000 --> 00:17:23,000
+And that's a point to think about, you know, the table names may consist of multiple words separated
+
+230
+00:17:23,000 --> 00:17:27,000
+by underscore this would raise additional questions from your team.
+
+231
+00:17:27,000 --> 00:17:30,000
+What words should be in plural and which not?
+
+232
+00:17:31,000 --> 00:17:37,000
+For example, or the detail if you use single zone, no questions at all.
+
+233
+00:17:37,000 --> 00:17:42,000
+It is simple to write queries because you remember that everything isn't singular.
+
+234
+00:17:43,000 --> 00:17:46,000
+But in case you would like to follow some grammar, how far will you go?
+
+235
+00:17:47,000 --> 00:17:54,000
+Really use all the details or some key members, many things that you should name this table as order
+
+236
+00:17:54,000 --> 00:17:55,000
+details.
+
+237
+00:17:55,000 --> 00:18:01,000
+Believe me, this might happen and this will happen in big multinational team, and they give you a
+
+238
+00:18:01,000 --> 00:18:05,000
+chance to think about it right now before you start that new project.
+
+239
+00:18:06,000 --> 00:18:10,000
+And always remember the tables are the subjects of the database.
+
+240
+00:18:10,000 --> 00:18:14,000
+Thus, they announce again, Single-A.
+
+241
+00:18:15,000 --> 00:18:21,000
+There might be different reasons to use single for table names, but in my opinion, these are the most
+
+242
+00:18:21,000 --> 00:18:21,000
+important ones.
+
+243
+00:18:22,000 --> 00:18:23,000
+I wouldn't like to use that.
+
+244
+00:18:23,000 --> 00:18:30,000
+I always worked on the projects where tables were named as singular, sometimes so rotten project where
+
+245
+00:18:30,000 --> 00:18:36,000
+we use plural for database tables, names and remember the main sink in.
+
+246
+00:18:36,000 --> 00:18:38,000
+Each naming convention is consistency.
+
+247
+00:18:39,000 --> 00:18:44,000
+The whole team agreed to follow some specific naming convention and different generation of programmers.
+
+248
+00:18:44,000 --> 00:18:50,000
+Since this project also understands this and agreed with this, then you don't have any problem at all.
+
+249
+00:18:50,000 --> 00:18:56,000
+And then comes a day your team might find logical the name container or froze with plural if container
+
+250
+00:18:56,000 --> 00:18:58,000
+contains users.
+
+251
+00:18:58,000 --> 00:19:05,000
+It is obvious that we have to name it users, but we also reviewed point of use that explains why this
+
+252
+00:19:05,000 --> 00:19:08,000
+might not always be the best way to name a table.
+
+253
+00:19:09,000 --> 00:19:14,000
+To be honest, it is hard for me to come up with other advantages of using plural names for tables.
+
+254
+00:19:15,000 --> 00:19:19,000
+Remember, it is always up to you what naming convention you are going to follow.
+
+255
+00:19:20,000 --> 00:19:26,000
+But the most important here is consistency in naming across different parts of your app.
+
+256
+00:19:26,000 --> 00:19:32,000
+I believe I answer to all concerns regarding the naming convention and why I named the bill in singular
+
+257
+00:19:32,000 --> 00:19:33,000
+form.
+
+258
+00:19:33,000 --> 00:19:34,000
+Let's proceed.
+
+259
+00:19:34,000 --> 00:19:40,000
+So you already know that you can set charset and collation on table level two.
+
+260
+00:19:40,000 --> 00:19:44,000
+Another interesting configuration here is an engine.
+
+261
+00:19:44,000 --> 00:19:45,000
+Let's talk about it now.
+
+262
+00:19:46,000 --> 00:19:50,000
+Let me explain you more about search engines in my school.
+
+263
+00:19:50,000 --> 00:19:57,000
+The search engine is a software module that database management system uses for me operations with data
+
+264
+00:19:58,000 --> 00:20:00,000
+such as Create, Read, Update, Delete.
+
+265
+00:20:01,000 --> 00:20:08,000
+Generally speaking, there are two types of storage engines in my school transactional and non transactional.
+
+266
+00:20:08,000 --> 00:20:11,000
+In my school, we have nine types of storage engines.
+
+267
+00:20:12,000 --> 00:20:15,000
+Two campuses was a school bus.
+
+268
+00:20:15,000 --> 00:20:17,000
+With schools, there's one storage engine.
+
+269
+00:20:18,000 --> 00:20:24,000
+It is very important to select the right search engine because this is strategic decision that will
+
+270
+00:20:24,000 --> 00:20:25,000
+impact future development.
+
+271
+00:20:25,000 --> 00:20:32,000
+The default search engine in my school is in the B from version five point five and later.
+
+272
+00:20:32,000 --> 00:20:34,000
+Previously, it was my is some.
+
+273
+00:20:35,000 --> 00:20:38,000
+Let me very briefly cover each storage engine in order.
+
+274
+00:20:38,000 --> 00:20:40,000
+You could understand the difference.
+
+275
+00:20:41,000 --> 00:20:46,000
+In a debate is the most widely used storage engine with transaction support.
+
+276
+00:20:46,000 --> 00:20:53,000
+It is an acid compliant storage engine as it compliant means it meets requirements for transactions
+
+277
+00:20:54,000 --> 00:20:59,000
+as it is an acronym that stands for atomic consistent, independent, durable.
+
+278
+00:21:00,000 --> 00:21:04,000
+These are properties of transactions that we are going to cover in detail.
+
+279
+00:21:04,000 --> 00:21:11,000
+A lesson about transactions in a the B supports roll level locking crash recovery and motivation version
+
+280
+00:21:11,000 --> 00:21:13,000
+concurrency control.
+
+281
+00:21:13,000 --> 00:21:18,000
+It is the only engine which provides foreign key, referential integrity constrained.
+
+282
+00:21:19,000 --> 00:21:26,000
+Oracle recommends using Unity B for tables except for specialized use cases, and thus the search engine
+
+283
+00:21:26,000 --> 00:21:27,000
+is my is.
+
+284
+00:21:27,000 --> 00:21:31,000
+The main difference from Inada be it is not transactional one.
+
+285
+00:21:32,000 --> 00:21:34,000
+It is a relatively fast storage engine.
+
+286
+00:21:35,000 --> 00:21:39,000
+But as we already said, it doesn't support transactions.
+
+287
+00:21:39,000 --> 00:21:42,000
+My ISA provides stable level locking.
+
+288
+00:21:42,000 --> 00:21:45,000
+It is used mostly in lab and data warehousing.
+
+289
+00:21:46,000 --> 00:21:49,000
+Let me say now a few words about memory storage engine.
+
+290
+00:21:50,000 --> 00:21:56,000
+It is named, so because it creates tables in memory, it is the fastest engine.
+
+291
+00:21:56,000 --> 00:21:58,000
+It provides stable level locking.
+
+292
+00:21:59,000 --> 00:22:01,000
+It doesn't support transactions.
+
+293
+00:22:01,000 --> 00:22:06,000
+Memory storage engine is ideal for creating temporary tables or quick look ups.
+
+294
+00:22:07,000 --> 00:22:10,000
+The data is lost when the database is restarted.
+
+295
+00:22:10,000 --> 00:22:16,000
+Different news There are not so many use cases for the search engine because each application requires
+
+296
+00:22:16,000 --> 00:22:17,000
+persistent storage.
+
+297
+00:22:18,000 --> 00:22:21,000
+See, a Swiss storage engine has specific formats of the stored data.
+
+298
+00:22:22,000 --> 00:22:24,000
+It stores data in CSP files.
+
+299
+00:22:24,000 --> 00:22:31,000
+It provides great flexibility because data in this format is easily integrated into other applications.
+
+300
+00:22:31,000 --> 00:22:35,000
+Match operates on underlying might e some tables.
+
+301
+00:22:35,000 --> 00:22:39,000
+Match tables help manage large volume of data more easily.
+
+302
+00:22:40,000 --> 00:22:46,000
+It logically groups a series of identical might use some tables and references them as one object.
+
+303
+00:22:46,000 --> 00:22:53,000
+Good for data warehousing environments Archive search engine is optimized for high speed and certain
+
+304
+00:22:54,000 --> 00:22:56,000
+it compresses data as it is inserted.
+
+305
+00:22:57,000 --> 00:22:59,000
+It doesn't support transactions.
+
+306
+00:22:59,000 --> 00:23:07,000
+It is a yield for storing and retrieving large amounts of seldom referenced historical archive data.
+
+307
+00:23:08,000 --> 00:23:14,000
+The black hole search engine accepts but doesn't store data which reveals always written and them to
+
+308
+00:23:14,000 --> 00:23:16,000
+set critical feature.
+
+309
+00:23:16,000 --> 00:23:17,000
+Don't you think so?
+
+310
+00:23:17,000 --> 00:23:18,000
+And I understand your feeling.
+
+311
+00:23:19,000 --> 00:23:25,000
+Probably it is not so easy to come up with the use case for such storing engine, but I have few use
+
+312
+00:23:25,000 --> 00:23:28,000
+cases when this might come in handy.
+
+313
+00:23:28,000 --> 00:23:34,000
+The French analogy can be used in distributed database design, where data is automatically replicated
+
+314
+00:23:34,000 --> 00:23:37,000
+but not stored locally and also does.
+
+315
+00:23:37,000 --> 00:23:42,000
+This search engine can be used to execute performance tests or other testing.
+
+316
+00:23:43,000 --> 00:23:49,000
+Federated Search Engine offers the ability to separate my Secret Service to create one logical database
+
+317
+00:23:49,000 --> 00:23:51,000
+from many physical service.
+
+318
+00:23:51,000 --> 00:23:57,000
+Queries on the local server are automatically executed on the remote federated tables.
+
+319
+00:23:57,000 --> 00:24:00,000
+No data is stored on the local tables.
+
+320
+00:24:00,000 --> 00:24:07,000
+It is good for distributed environments, and the B cluster is an in-memory storage engine, offering
+
+321
+00:24:07,000 --> 00:24:10,000
+high availability and data persistence features.
+
+322
+00:24:11,000 --> 00:24:18,000
+The engine cluster storage engine can be configured with a range or fail over and load balancing options.
+
+323
+00:24:18,000 --> 00:24:25,000
+Using SQL notes is the most common way of executing queries, and SQL note is the same as an instance
+
+324
+00:24:25,000 --> 00:24:33,000
+of my SQL server was the NDB storage engine compiled in the NDB search engine provides a breach from
+
+325
+00:24:33,000 --> 00:24:34,000
+my SQL server.
+
+326
+00:24:34,000 --> 00:24:41,000
+List of data nodes and DB search engine is implemented using a distributed shared nutzen architecture,
+
+327
+00:24:42,000 --> 00:24:47,000
+which causes it to behave differently from anybody b in a number of ways.
+
+328
+00:24:47,000 --> 00:24:55,000
+For those unaccustomed to work and was NDB, unexpected behaviors can arise is distributed nature with
+
+329
+00:24:55,000 --> 00:25:01,000
+regard to transactions for in case table limits and other characteristics.
+
+330
+00:25:01,000 --> 00:25:07,000
+This is not so easy to explain in a few sentences, but in general, if you are interested, you can
+
+331
+00:25:07,000 --> 00:25:12,000
+ask is a specific question about the search engine or find documentation on my SQL side.
+
+332
+00:25:13,000 --> 00:25:17,000
+So what search engine to choose among such variety?
+
+333
+00:25:17,000 --> 00:25:23,000
+It depends on the up to you and business problem you are trying to address and once saying you should
+
+334
+00:25:23,000 --> 00:25:29,000
+remember for sure, there is no perfect search engine littered with works the best in all possible cases.
+
+335
+00:25:29,000 --> 00:25:35,000
+Some of them better under certain conditions and perform worse in other situations, and some of them
+
+336
+00:25:35,000 --> 00:25:36,000
+vice versa.
+
+337
+00:25:37,000 --> 00:25:41,000
+In software engineering, it is always a matter of tradeoffs and.
+
+338
+00:25:41,000 --> 00:25:43,000
+Most secure solution takes more resources.
+
+339
+00:25:44,000 --> 00:25:48,000
+Thus, it might be slower, take more CPU time and disk space.
+
+340
+00:25:49,000 --> 00:25:54,000
+But you should understand that you have not one but nine storage engines.
+
+341
+00:25:54,000 --> 00:26:00,000
+And my sequel is very flexible in the fact that it provides several different storage engines.
+
+342
+00:26:00,000 --> 00:26:05,000
+Some of them, like archive engine, are created to be used in specific situations.
+
+343
+00:26:06,000 --> 00:26:13,000
+In some cases, the answer is clear whenever we're dealing with some payment systems, we are obligated
+
+344
+00:26:13,000 --> 00:26:15,000
+to use the transactional storage.
+
+345
+00:26:15,000 --> 00:26:21,000
+We cannot afford to lose such sensitive data in a debate is the way to go.
+
+346
+00:26:22,000 --> 00:26:27,000
+If we want full text search, then we can choose is a mighty sum or in the be.
+
+347
+00:26:28,000 --> 00:26:33,000
+Now, you know, the difference between different storage engines in our particular case.
+
+348
+00:26:33,000 --> 00:26:38,000
+Let's keep the default one here, so I keep an eye on the Beast search engine.
+
+349
+00:26:38,000 --> 00:26:41,000
+After that, we can proceed with declaring columns.
+
+350
+00:26:41,000 --> 00:26:42,000
+Let's use surrogate.
+
+351
+00:26:42,000 --> 00:26:48,000
+Primary key was name I.D. for each row, and let's make it of type in.
+
+352
+00:26:49,000 --> 00:26:53,000
+You have to fill out column name, data type and set column properties.
+
+353
+00:26:54,000 --> 00:26:59,000
+We are going to learn more about each column property right after we finish a discussion about data
+
+354
+00:26:59,000 --> 00:26:59,000
+types.
+
+355
+00:27:00,000 --> 00:27:06,000
+As you see, each column will have its own data type, then different types and different relational
+
+356
+00:27:06,000 --> 00:27:11,000
+database management systems, but more or less this similar in my cycle.
+
+357
+00:27:11,000 --> 00:27:19,000
+All data types might be grouped into the next categories numeric data types date and time data types
+
+358
+00:27:20,000 --> 00:27:29,000
+string data types spatial data types My circle supports geometry types of point lines, string, polygon
+
+359
+00:27:29,000 --> 00:27:37,000
+multipoint, multi-line string, multi polygon and Geometry Collection OSR geometry types are not supported.
+
+360
+00:27:38,000 --> 00:27:44,000
+JSON data type most likely will not go over each and every possible data type.
+
+361
+00:27:44,000 --> 00:27:52,000
+In my school, I prepared slides to cover the most popular numeric date and time and string data types.
+
+362
+00:27:53,000 --> 00:27:59,000
+On this slide, you can find numeric data types, I suppose, for a minute if you want to read comments
+
+363
+00:27:59,000 --> 00:28:05,000
+for each particular data type here, but in most cases you are going to use and type.
+
+364
+00:28:06,000 --> 00:28:09,000
+That is my opinion, probably sometimes.
+
+365
+00:28:09,000 --> 00:28:11,000
+So I'm going to use other data types too.
+
+366
+00:28:11,000 --> 00:28:19,000
+But in time is generally enough, especially if we use unsigned and you have one more additional beat
+
+367
+00:28:19,000 --> 00:28:26,000
+to store information and attention in this list, you have both integers and floating point numbers,
+
+368
+00:28:26,000 --> 00:28:32,000
+so you can select data type for your columns that meets business needs to store value.
+
+369
+00:28:32,000 --> 00:28:40,000
+On this slide, you can find data types that will help you to represent date and time in database humorists
+
+370
+00:28:40,000 --> 00:28:47,000
+or date or time separately, or you can store data time looking with date and time.
+
+371
+00:28:47,000 --> 00:28:49,000
+And what original app always was a patent?
+
+372
+00:28:50,000 --> 00:28:50,000
+Why?
+
+373
+00:28:51,000 --> 00:28:58,000
+First of all, for Martin, during the storm and database and retrieved from database, it seems to
+
+374
+00:28:58,000 --> 00:28:59,000
+be like a simple scene.
+
+375
+00:28:59,000 --> 00:29:06,000
+But I promise you, at least someone from your team will mess up was for the second things that might
+
+376
+00:29:06,000 --> 00:29:08,000
+be challenging time zones.
+
+377
+00:29:09,000 --> 00:29:12,000
+Team, believe me, time zones are very, very painful.
+
+378
+00:29:13,000 --> 00:29:20,000
+Some engineers use time stamp to store a number of seconds since Unix epoch, but there is a specific
+
+379
+00:29:20,000 --> 00:29:23,000
+range of data that is supported by my SQL by default.
+
+380
+00:29:23,000 --> 00:29:30,000
+So one of us options, probably it is not super duper popular, but still look around.
+
+381
+00:29:30,000 --> 00:29:31,000
+It deserves to leave.
+
+382
+00:29:32,000 --> 00:29:40,000
+You can use even in data types to serve milliseconds from Unix epoch heaven, time and milliseconds.
+
+383
+00:29:40,000 --> 00:29:46,000
+You can convert it in any app any day during the conversion in both direction.
+
+384
+00:29:46,000 --> 00:29:48,000
+You can consider time zone of the user.
+
+385
+00:29:49,000 --> 00:29:53,000
+In this case, all milliseconds would be according to UTC.
+
+386
+00:29:53,000 --> 00:29:56,000
+The Understand what I'm talking about.
+
+387
+00:29:56,000 --> 00:29:58,000
+Remember this workaround?
+
+388
+00:29:58,000 --> 00:30:03,000
+It might help you some day and no matter what application you will work with.
+
+389
+00:30:03,000 --> 00:30:09,000
+And also, if you want to learn more about date and time in Java, please refer to my Java course.
+
+390
+00:30:09,000 --> 00:30:15,000
+I have separate lessons, dedicated time zones and working with date and time in Java programs.
+
+391
+00:30:15,000 --> 00:30:21,000
+And on this slide, you can see a list of data types that you can use to store text values.
+
+392
+00:30:21,000 --> 00:30:27,000
+One of the differences between all these types is amount of memory that is reserved to stores.
+
+393
+00:30:27,000 --> 00:30:33,000
+The value in this field bressan course if you want to check comments for each day that that.
+
+394
+00:30:34,000 --> 00:30:37,000
+So we learned what data types might be used for columns.
+
+395
+00:30:38,000 --> 00:30:40,000
+Now let's learn another thing.
+
+396
+00:30:40,000 --> 00:30:42,000
+Let's talk about column properties.
+
+397
+00:30:43,000 --> 00:30:45,000
+You can see different letters here.
+
+398
+00:30:45,000 --> 00:30:49,000
+And also the checkbox here they are the same.
+
+399
+00:30:50,000 --> 00:30:52,000
+Let's learn what those they meant.
+
+400
+00:30:53,000 --> 00:30:59,000
+K stands for primary key and N stands for Not Now You.
+
+401
+00:30:59,000 --> 00:31:01,000
+Q stands for unique.
+
+402
+00:31:01,000 --> 00:31:03,000
+This creates unique index.
+
+403
+00:31:03,000 --> 00:31:06,000
+We're going to learn about indexes in the separate lesson.
+
+404
+00:31:07,000 --> 00:31:10,000
+B stands for binary stores data as binary strings.
+
+405
+00:31:11,000 --> 00:31:18,000
+There is no character set so certain, and comparison is based on the numerical values of the bytes
+
+406
+00:31:18,000 --> 00:31:21,000
+in the values you and stands for.
+
+407
+00:31:21,000 --> 00:31:21,000
+And.
+
+408
+00:31:22,000 --> 00:31:27,000
+That is property for all no data types that allows you to store only positive numbers.
+
+409
+00:31:28,000 --> 00:31:30,000
+ZF stands for zero field.
+
+410
+00:31:30,000 --> 00:31:32,000
+This is an interesting one.
+
+411
+00:31:32,000 --> 00:31:39,000
+I need to demo this will use zero field property for one of the fields just in demo purposes.
+
+412
+00:31:39,000 --> 00:31:44,000
+In short, it feels with zero all the lengths reserved for value.
+
+413
+00:31:44,000 --> 00:31:47,000
+Eight AI stands for auto increment.
+
+414
+00:31:47,000 --> 00:31:50,000
+No value can be increased by one.
+
+415
+00:31:50,000 --> 00:31:55,000
+Usually, this one is used for surrogate primary keys in order that the base can generate unique number
+
+416
+00:31:55,000 --> 00:32:05,000
+for ID field by increment in values with each new record inserted and G stands for generated, the value
+
+417
+00:32:05,000 --> 00:32:09,000
+is generated by a formula based on other columns.
+
+418
+00:32:10,000 --> 00:32:17,000
+If the field is primary key, that means that this field will have only unique values, not new values.
+
+419
+00:32:17,000 --> 00:32:21,000
+Additionally, I recommend you to at all to increment property.
+
+420
+00:32:21,000 --> 00:32:27,000
+This will automatically increment your I.D. integer value on each new insertion.
+
+421
+00:32:28,000 --> 00:32:30,000
+In this case, you shouldn't be to.
+
+422
+00:32:30,000 --> 00:32:32,000
+It's a generation of unique I.D..
+
+423
+00:32:33,000 --> 00:32:39,000
+Also, I want to use unsigned integer values in order to increase range of positive numbers that can
+
+424
+00:32:39,000 --> 00:32:40,000
+be used as I.D..
+
+425
+00:32:41,000 --> 00:32:44,000
+Let's also create a few more fields of virtual time.
+
+426
+00:32:45,000 --> 00:32:50,000
+We're going to create first name, last name and email to create each new field.
+
+427
+00:32:50,000 --> 00:32:53,000
+Just press on empty space.
+
+428
+00:32:55,000 --> 00:33:02,000
+I will create unique index for email column to make performance of extract any user by email data and
+
+429
+00:33:02,000 --> 00:33:03,000
+cluster.
+
+430
+00:33:06,000 --> 00:33:12,000
+According to naming convention, we use lowercase and the words are separated, which underscores their
+
+431
+00:33:12,000 --> 00:33:17,000
+tension that you have to specify maximum length of zero hour char.
+
+432
+00:33:17,000 --> 00:33:25,000
+By default, this forty five characters you can just click in data era type and change this limit.
+
+433
+00:33:26,000 --> 00:33:31,000
+And as I said, let me demo zero field property for our property.
+
+434
+00:33:31,000 --> 00:33:34,000
+We would adjust lengths of data time to five.
+
+435
+00:33:35,000 --> 00:33:38,000
+Also, we will select the checkbox.
+
+436
+00:33:38,000 --> 00:33:45,000
+So when you're ready, you can click Apply button sequel query will be shown for you to approve.
+
+437
+00:33:46,000 --> 00:33:48,000
+We're going to learn SQL in a separate lessons.
+
+438
+00:33:48,000 --> 00:33:54,000
+We'll also cover create table statements, but you already can start at least watching at these queries.
+
+439
+00:33:55,000 --> 00:33:56,000
+Click Apply Button.
+
+440
+00:33:57,000 --> 00:34:03,000
+Now, when our query is applied, we can find our table on the tables in our databases.
+
+441
+00:34:04,000 --> 00:34:07,000
+Let's expand that, and here's how I use our table.
+
+442
+00:34:07,000 --> 00:34:09,000
+Congratulations.
+
+443
+00:34:09,000 --> 00:34:11,000
+We have created our first table.
+
+444
+00:34:12,000 --> 00:34:19,000
+The looks are zeroes, mouse, right click select rows, and you can see separate up was sequel query
+
+445
+00:34:19,000 --> 00:34:22,000
+executed and representation of your table.
+
+446
+00:34:22,000 --> 00:34:25,000
+You can play with the stable by entering different values.
+
+447
+00:34:26,000 --> 00:34:27,000
+There are tensions.
+
+448
+00:34:27,000 --> 00:34:34,000
+Its values in email column should be unique, and you don't need to populate the column because it is
+
+449
+00:34:34,000 --> 00:34:35,000
+all the it.
+
+450
+00:34:42,000 --> 00:34:49,000
+Once you adjust that table, click Apply button again, you will see preview of insert statements,
+
+451
+00:34:49,000 --> 00:34:51,000
+click Apply one more time.
+
+452
+00:34:52,000 --> 00:34:58,000
+And now you can see that I.D. values have been generated and pay attention to the format.
+
+453
+00:34:58,000 --> 00:35:05,000
+The lengths of these five digits enumeration is going according to the regular number sequence, and
+
+454
+00:35:05,000 --> 00:35:07,000
+the rest digits are filled with zero.
+
+455
+00:35:08,000 --> 00:35:10,000
+That's what zero field property does.
+
+456
+00:35:11,000 --> 00:35:15,000
+But to be honest, I don't use this option very often.
+
+457
+00:35:15,000 --> 00:35:17,000
+But at least now you know what it does.
+
+458
+00:35:18,000 --> 00:35:19,000
+Wow.
+
+459
+00:35:19,000 --> 00:35:21,000
+We have learned a lot for the.
+
+460
+00:35:21,000 --> 00:35:24,000
+Let's recap what we have learned in this lesson.
+
+461
+00:35:25,000 --> 00:35:28,000
+In this lesson, we created our schema.
+
+462
+00:35:28,000 --> 00:35:33,000
+We learned what charset and collation is and which one I recommend to use.
+
+463
+00:35:34,000 --> 00:35:39,000
+You're in the lesson recovery topic of naming conventions for database objects.
+
+464
+00:35:39,000 --> 00:35:43,000
+Now, you know, recommended rules to follow during the naming of schemas.
+
+465
+00:35:43,000 --> 00:35:44,000
+Tables and columns.
+
+466
+00:35:45,000 --> 00:35:48,000
+After this lesson, you know what search engines are.
+
+467
+00:35:48,000 --> 00:35:54,000
+And you know, the difference between nine search engines in my school would have used different data
+
+468
+00:35:54,000 --> 00:35:55,000
+types in my school.
+
+469
+00:35:56,000 --> 00:36:02,000
+And at the end of the lesson, we learned column properties and create a table in database.
+
+470
+00:36:02,000 --> 00:36:04,000
+Thanks a lot for your attention.
+
+471
+00:36:04,000 --> 00:36:05,000
+Have a great day.
+
+472
+00:36:05,000 --> 00:36:07,000
+See you in the next lesson.
+
diff --git a/47 - Relational databases/003 Referential Integrity Foreign Key Constraint & Cascading Operations_en.srt b/47 - Relational databases/003 Referential Integrity Foreign Key Constraint & Cascading Operations_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..fff891a21c3a625ed4527a9482fd2835026721a5
--- /dev/null
+++ b/47 - Relational databases/003 Referential Integrity Foreign Key Constraint & Cascading Operations_en.srt
@@ -0,0 +1,1064 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:12,000
+Today we're going to proceed our practical activities combined with some new piece of theory.
+
+3
+00:00:12,000 --> 00:00:18,000
+In this video, we proceed working with our first database tables that we created in the previous lesson.
+
+4
+00:00:19,000 --> 00:00:25,000
+We are going to learn more about referential integrity, foreign key constraints and cascading operations.
+
+5
+00:00:26,000 --> 00:00:32,000
+We'll start our lesson from understanding of referential integrity and potential consequences in case
+
+6
+00:00:32,000 --> 00:00:33,000
+it will be broken.
+
+7
+00:00:33,000 --> 00:00:39,000
+After that, we'll focus our attention on the solution for broken, referential integrity and how to
+
+8
+00:00:39,000 --> 00:00:41,000
+what is happening in your database.
+
+9
+00:00:42,000 --> 00:00:48,000
+We are going to review what cascading operations are and understand different types of cost-cutting
+
+10
+00:00:48,000 --> 00:00:49,000
+operations.
+
+11
+00:00:49,000 --> 00:00:56,000
+After that and practice, we are going to configure a foreign key constraint after review of all examples.
+
+12
+00:00:56,000 --> 00:01:02,000
+And by the end of this lesson, I am sure you will understand such concepts as data consistency, data
+
+13
+00:01:02,000 --> 00:01:05,000
+integrity, data quality and data validity.
+
+14
+00:01:06,000 --> 00:01:07,000
+Let's start the lesson.
+
+15
+00:01:08,000 --> 00:01:14,000
+And before we start altering our database table, let's try to understand problems that we are going
+
+16
+00:01:14,000 --> 00:01:15,000
+to avoid.
+
+17
+00:01:15,000 --> 00:01:18,000
+Let's talk about referential integrity.
+
+18
+00:01:19,000 --> 00:01:25,000
+Referential integrity is one of the most important and mandatory property in the relational database
+
+19
+00:01:25,000 --> 00:01:28,000
+that ensures that all references are valid.
+
+20
+00:01:29,000 --> 00:01:35,000
+So in case one attribute of a relational table reference is the value of another attribute, then the
+
+21
+00:01:35,000 --> 00:01:38,000
+reference value must exist.
+
+22
+00:01:39,000 --> 00:01:40,000
+In simple words.
+
+23
+00:01:40,000 --> 00:01:48,000
+Then it means that there are no references made by foreign keys to non-existent typos and to simplify
+
+24
+00:01:48,000 --> 00:01:49,000
+it even more.
+
+25
+00:01:49,000 --> 00:01:52,000
+It prohibits relations between tables using foreign keys.
+
+26
+00:01:53,000 --> 00:02:00,000
+We have to be sure that foreign key is referencing to valid and existing data because otherwise it is
+
+27
+00:02:00,000 --> 00:02:07,000
+not clear how to build relations between entities and case parent entity is not present in database
+
+28
+00:02:07,000 --> 00:02:08,000
+anymore.
+
+29
+00:02:09,000 --> 00:02:11,000
+Why referential integrity is important.
+
+30
+00:02:11,000 --> 00:02:16,000
+There are different issues that mafia during the corruption of referential integrity.
+
+31
+00:02:17,000 --> 00:02:23,000
+But the root cause of all issues is lost data because of corrupted integrity.
+
+32
+00:02:23,000 --> 00:02:31,000
+A lack of referential integrity in the database can lead to incomplete data being churned, sometimes
+
+33
+00:02:31,000 --> 00:02:33,000
+even with no indication of an error.
+
+34
+00:02:34,000 --> 00:02:41,000
+This could result in the records being lost in the database because there's never a chance inquiries
+
+35
+00:02:41,000 --> 00:02:44,000
+or reports, and the consequences might be different.
+
+36
+00:02:45,000 --> 00:02:50,000
+Your existing queries may not transcend specific fields from other tables.
+
+37
+00:02:50,000 --> 00:02:58,000
+Neurons across tune queries and this will produce some system error because the logic in court is usually
+
+38
+00:02:58,000 --> 00:03:04,000
+built in rounds of data to modify it and to process and use some data is absent.
+
+39
+00:03:05,000 --> 00:03:07,000
+Required logic is not triggered.
+
+40
+00:03:07,000 --> 00:03:16,000
+So I want you to understand that this is not just data consistency issue referential integrity potentially
+
+41
+00:03:16,000 --> 00:03:19,000
+may lead to not expected program behavior.
+
+42
+00:03:20,000 --> 00:03:25,000
+Let's review example of a problem, and let's try to find a solution for it.
+
+43
+00:03:25,000 --> 00:03:27,000
+Imagine that we have two tables.
+
+44
+00:03:28,000 --> 00:03:30,000
+They are user and roll.
+
+45
+00:03:31,000 --> 00:03:33,000
+Each user should have a role.
+
+46
+00:03:33,000 --> 00:03:38,000
+It can be user admin or content editor or employee or client.
+
+47
+00:03:39,000 --> 00:03:44,000
+There might be different roles here, but what is important?
+
+48
+00:03:44,000 --> 00:03:49,000
+There is one too many relationships between the role table and user table.
+
+49
+00:03:49,000 --> 00:03:55,000
+Each user may have only one role and each role may be assigned to multiple users.
+
+50
+00:03:56,000 --> 00:04:03,000
+And now imagine that we decided to remove content editor role and we decided to introduce different
+
+51
+00:04:03,000 --> 00:04:07,000
+roles in Step Media Editor and contributor.
+
+52
+00:04:08,000 --> 00:04:14,000
+Well, not that depends a business domain, because anyway, I want you to focus not on the specific
+
+53
+00:04:14,000 --> 00:04:22,000
+business issue, but on the technical one and step one of the role of TOPO is it contained information
+
+54
+00:04:22,000 --> 00:04:23,000
+about content editor.
+
+55
+00:04:23,000 --> 00:04:27,000
+What shall we do with foreign keys in our user table?
+
+56
+00:04:27,000 --> 00:04:31,000
+They still reference to the table that doesn't exist anymore.
+
+57
+00:04:32,000 --> 00:04:33,000
+Do understands the problem.
+
+58
+00:04:34,000 --> 00:04:41,000
+In case I would need to get full name for all users, what will I get for users that have known about
+
+59
+00:04:41,000 --> 00:04:42,000
+its reference?
+
+60
+00:04:42,000 --> 00:04:47,000
+This is exactly the problem that is caused by corruption of referential integrity.
+
+61
+00:04:48,000 --> 00:04:53,000
+How to prevent this happen, we need to set up foreign key constraint.
+
+62
+00:04:54,000 --> 00:04:56,000
+Let's understand now what it is.
+
+63
+00:04:57,000 --> 00:05:03,000
+The foreign key constraint is used to prevent actions that will destroy links between tables.
+
+64
+00:05:04,000 --> 00:05:11,000
+A foreign key is a field or collection of fields in one table that refers to the primary key in another
+
+65
+00:05:11,000 --> 00:05:12,000
+table.
+
+66
+00:05:12,000 --> 00:05:18,000
+The table with foreign key is called the child table, and the table was the primary.
+
+67
+00:05:18,000 --> 00:05:22,000
+Key is called the reference or parent table.
+
+68
+00:05:22,000 --> 00:05:29,000
+In our particular example, user table contains column was named after a user role.
+
+69
+00:05:29,000 --> 00:05:36,000
+This is exactly foreign key that allows us to build relationships between user and role tables.
+
+70
+00:05:37,000 --> 00:05:43,000
+Now, let's think how we can figure that issue was foreign key constraint and how exactly it will prevent
+
+71
+00:05:43,000 --> 00:05:45,000
+corruption of referential integrity.
+
+72
+00:05:46,000 --> 00:05:51,000
+Let me suggest a few ideas how to avoid corruption of referential integrity.
+
+73
+00:05:51,000 --> 00:05:59,000
+The first option is just to forbid removal and the date of Toptal in case some other tables contains
+
+74
+00:05:59,000 --> 00:06:00,000
+a reference to it.
+
+75
+00:06:00,000 --> 00:06:08,000
+In this case, we can't remove content editor role or update its I-D until some references exist.
+
+76
+00:06:09,000 --> 00:06:12,000
+The second option is to remove all related records.
+
+77
+00:06:12,000 --> 00:06:19,000
+For example, if I remove content editor role, then keeping content editor users in the system makes
+
+78
+00:06:19,000 --> 00:06:22,000
+no sense, and I also remove related users.
+
+79
+00:06:23,000 --> 00:06:31,000
+Now, imagine that instead of removing Content Editor, you just decided to update it and you change
+
+80
+00:06:31,000 --> 00:06:33,000
+the primary key and the role name.
+
+81
+00:06:33,000 --> 00:06:37,000
+In this case, we update all references was updated primary key.
+
+82
+00:06:38,000 --> 00:06:42,000
+Another option is to set null values instead of all references.
+
+83
+00:06:43,000 --> 00:06:50,000
+You may also consider this option, but again, in this case, you have to have logical place that process
+
+84
+00:06:50,000 --> 00:06:54,000
+null values that you would receive in response instead of required data.
+
+85
+00:06:55,000 --> 00:07:02,000
+And all value is a special marker used in school to indicate that a data value doesn't exist in the
+
+86
+00:07:02,000 --> 00:07:03,000
+database.
+
+87
+00:07:04,000 --> 00:07:11,000
+In other words, it is just a placeholder to denote values that missing was that we don't know.
+
+88
+00:07:12,000 --> 00:07:19,000
+And last but not least, is setting default value instead of all references, for example, in this
+
+89
+00:07:19,000 --> 00:07:22,000
+case, one content editor role has been removed.
+
+90
+00:07:23,000 --> 00:07:26,000
+We can set default reference to employee role records.
+
+91
+00:07:27,000 --> 00:07:34,000
+That means that all references to Content Editor role will be substituted with references to employee
+
+92
+00:07:34,000 --> 00:07:34,000
+role.
+
+93
+00:07:36,000 --> 00:07:39,000
+All these options are called cascading operations.
+
+94
+00:07:40,000 --> 00:07:47,000
+These operations are special kind of database restrictions that describe his behavior in case of removal
+
+95
+00:07:47,000 --> 00:07:53,000
+record from parent table or in case updating of its primary key.
+
+96
+00:07:53,000 --> 00:07:54,000
+Does it make sense?
+
+97
+00:07:55,000 --> 00:08:02,000
+And then the lesson we are going to learn how to set up these restrictions in our table on practice.
+
+98
+00:08:03,000 --> 00:08:10,000
+So to sum it up, we can configure foreign key constraint on update or on the lead off primary key in
+
+99
+00:08:10,000 --> 00:08:11,000
+parent table.
+
+100
+00:08:12,000 --> 00:08:17,000
+Foreign key constraint may be of the following types restrict.
+
+101
+00:08:17,000 --> 00:08:25,000
+This restricts any cost current operations, so we have to make sure first that we removed all references
+
+102
+00:08:25,000 --> 00:08:33,000
+to this table and only after that remove or update the primary key in parent table cascade.
+
+103
+00:08:34,000 --> 00:08:41,000
+This option will update foreign key in child tables in case it was updated and will remove double from
+
+104
+00:08:41,000 --> 00:08:46,000
+child table in case primary key and parent table has been removed.
+
+105
+00:08:46,000 --> 00:08:53,000
+Set now based on the name, you can make an assumption what does assumption that it sets?
+
+106
+00:08:53,000 --> 00:08:58,000
+Now, instead of foreign key, it's the last one was either updated or removed.
+
+107
+00:08:59,000 --> 00:09:00,000
+No action.
+
+108
+00:09:01,000 --> 00:09:03,000
+Is this a so-so options of disposable tissues?
+
+109
+00:09:03,000 --> 00:09:10,000
+But I'm not sure whether you will need it, because the whole idea of foreign key constraint is to set
+
+110
+00:09:10,000 --> 00:09:16,000
+up a constraint, but not just select no action option and ignore things, said default.
+
+111
+00:09:17,000 --> 00:09:21,000
+You can substitute reference to the foreign key was the default value.
+
+112
+00:09:22,000 --> 00:09:28,000
+While this is also one of the foreign key constraints, you won't be able to find this option in my
+
+113
+00:09:28,000 --> 00:09:29,000
+school workbench.
+
+114
+00:09:30,000 --> 00:09:37,000
+Also, you wouldn't be able to set said default option or be a sequel query because it is simply not
+
+115
+00:09:37,000 --> 00:09:41,000
+supported by inadequate storage engine in my school.
+
+116
+00:09:41,000 --> 00:09:47,000
+Still, there is a workaround was usage of triggers in my school, but we haven't learned how to work
+
+117
+00:09:47,000 --> 00:09:49,000
+with triggers in a separate lesson.
+
+118
+00:09:50,000 --> 00:09:53,000
+And now there's exactly time for the live demo.
+
+119
+00:09:53,000 --> 00:09:56,000
+Let's learn in practice how to set foreign key constraint.
+
+120
+00:09:58,000 --> 00:10:05,000
+Bruce Larson, we created with you user table in case you didn't watch that lesson and don't know how
+
+121
+00:10:05,000 --> 00:10:06,000
+to create tables.
+
+122
+00:10:06,000 --> 00:10:09,000
+Please watch it if you have a user table.
+
+123
+00:10:10,000 --> 00:10:13,000
+We are going to proceed for the sake of the demo.
+
+124
+00:10:13,000 --> 00:10:15,000
+We need one more table.
+
+125
+00:10:15,000 --> 00:10:17,000
+Let's create role table now.
+
+126
+00:10:18,000 --> 00:10:23,000
+I already created this table before the lesson to save the time during the video lesson.
+
+127
+00:10:24,000 --> 00:10:30,000
+If you need time to create a table grasp, pause for a minute and then resume VIDEO when you are ready.
+
+128
+00:10:31,000 --> 00:10:33,000
+This table has only two fields.
+
+129
+00:10:33,000 --> 00:10:36,000
+They are ID and role name.
+
+130
+00:10:36,000 --> 00:10:37,000
+That's it.
+
+131
+00:10:38,000 --> 00:10:42,000
+When you created this table, please calculated, was valleys.
+
+132
+00:10:42,000 --> 00:10:45,000
+It is not critically important what would be a role name?
+
+133
+00:10:46,000 --> 00:10:50,000
+The main thing here is to have at least a few roles for demo purposes.
+
+134
+00:10:51,000 --> 00:10:57,000
+If you wish, you can create the values as I have, and when you add its values into the role table,
+
+135
+00:10:58,000 --> 00:10:59,000
+we are done with it.
+
+136
+00:10:59,000 --> 00:11:05,000
+And again, if you don't know how to add value in table, we are my school workbench.
+
+137
+00:11:06,000 --> 00:11:08,000
+Please refer to the previous lesson.
+
+138
+00:11:09,000 --> 00:11:13,000
+Now we need to establish relationships between the role and user tables.
+
+139
+00:11:14,000 --> 00:11:20,000
+If you remember lesson about relational database basic concepts, then you should remember that one
+
+140
+00:11:20,000 --> 00:11:25,000
+too many relationships is implemented by adding foreign key into another table.
+
+141
+00:11:26,000 --> 00:11:28,000
+We need to adjust our user table now.
+
+142
+00:11:29,000 --> 00:11:35,000
+I do mouse right click on the user table and I select Alter Table Option.
+
+143
+00:11:35,000 --> 00:11:40,000
+In this view, we need to add one more column for foreign key.
+
+144
+00:11:40,000 --> 00:11:47,000
+There is an agreed naming convention for the name of the foreign key, while you still can name it as
+
+145
+00:11:47,000 --> 00:11:48,000
+you want.
+
+146
+00:11:48,000 --> 00:11:57,000
+I would recommend you two fellows and next partner f k that stands for foreign key, followed by Underscore,
+
+147
+00:11:58,000 --> 00:12:00,000
+followed by foreign key table name.
+
+148
+00:12:00,000 --> 00:12:06,000
+In our case for table name is a target table xCurrent one.
+
+149
+00:12:06,000 --> 00:12:14,000
+Thus, I like to use R after f k after that again goes underscore, and this time it is followed by
+
+150
+00:12:14,000 --> 00:12:16,000
+primary key table.
+
+151
+00:12:16,000 --> 00:12:20,000
+This is our source table in this particular case.
+
+152
+00:12:20,000 --> 00:12:22,000
+This is roll table.
+
+153
+00:12:23,000 --> 00:12:28,000
+This is why we have such name for a foreign key column f k user role.
+
+154
+00:12:29,000 --> 00:12:36,000
+Considering that we use surrogate primary key in the role table, we have to use each type for the foreign
+
+155
+00:12:36,000 --> 00:12:37,000
+key column to.
+
+156
+00:12:39,000 --> 00:12:44,000
+When we are done with creation of the calling for the foreign key, let's open another tap.
+
+157
+00:12:44,000 --> 00:12:46,000
+I open foreign key staff.
+
+158
+00:12:47,000 --> 00:12:52,000
+This is exactly the type where we can configure foreign key constraint on the database level.
+
+159
+00:12:53,000 --> 00:12:55,000
+Specify foreign key name.
+
+160
+00:12:55,000 --> 00:13:00,000
+This is just a name for foreign key constraint in reference tables.
+
+161
+00:13:00,000 --> 00:13:03,000
+Select the parent table the tables.
+
+162
+00:13:03,000 --> 00:13:10,000
+It contains primary keys that we are referencing to, and after that you have opportunity to select.
+
+163
+00:13:10,000 --> 00:13:16,000
+The column was foreign key in the current table and specify reference column in the parent table.
+
+164
+00:13:17,000 --> 00:13:20,000
+Now why do we consider that connection?
+
+165
+00:13:20,000 --> 00:13:23,000
+Let me specify foreign key options here.
+
+166
+00:13:23,000 --> 00:13:30,000
+Usually, you can specify constraints on update and on delete operations in parenting mode for the sake
+
+167
+00:13:30,000 --> 00:13:31,000
+of the demo.
+
+168
+00:13:31,000 --> 00:13:34,000
+Let me set restrict options here.
+
+169
+00:13:34,000 --> 00:13:36,000
+I click apply by them.
+
+170
+00:13:36,000 --> 00:13:40,000
+You also can check SQL queries it is going to be executed.
+
+171
+00:13:41,000 --> 00:13:44,000
+Don't worry, one will come to learn in the sequel.
+
+172
+00:13:44,000 --> 00:13:47,000
+We are going to also cover alter table queries.
+
+173
+00:13:47,000 --> 00:13:51,000
+But still, it is good for you to be at least familiar with squares.
+
+174
+00:13:52,000 --> 00:13:59,000
+My concept of the Asian database is to let you understand operations that we need to execute against
+
+175
+00:13:59,000 --> 00:14:02,000
+database and when we need to execute them.
+
+176
+00:14:02,000 --> 00:14:11,000
+This gives my students understanding of end to end flow, and one will understand this will go to details
+
+177
+00:14:11,000 --> 00:14:13,000
+and will learn SQL itself.
+
+178
+00:14:13,000 --> 00:14:18,000
+I hope this approach will also help you to learn the topic faster.
+
+179
+00:14:19,000 --> 00:14:27,000
+In our user, a table, we have new fields now, let's put foreign keys for each user just to help you
+
+180
+00:14:27,000 --> 00:14:34,000
+understand I I.D. of Topo from rolls table to establish one to many relationships.
+
+181
+00:14:35,000 --> 00:14:39,000
+It isn't critically important in which one role will be assigned to each user.
+
+182
+00:14:40,000 --> 00:14:45,000
+Since this is all fake data, that's why I put these in random order.
+
+183
+00:14:45,000 --> 00:14:50,000
+Here is the interest in seeing the demo in roundtable.
+
+184
+00:14:50,000 --> 00:14:56,000
+We have maximum and equal to six basically Z values from one to six.
+
+185
+00:14:57,000 --> 00:15:05,000
+What will happen if I would try to set, for example, value 10 in foreign key column, I put Dan and
+
+186
+00:15:06,000 --> 00:15:07,000
+click Apply.
+
+187
+00:15:08,000 --> 00:15:13,000
+You can see that the reason there because was set, that'd be something like this.
+
+188
+00:15:13,000 --> 00:15:18,000
+This database, I want to establish relationships between two tables.
+
+189
+00:15:18,000 --> 00:15:23,000
+And this column will be used as foreign key to reference the parent table primary key.
+
+190
+00:15:24,000 --> 00:15:29,000
+And our database listen to us and do what we asked it to do.
+
+191
+00:15:29,000 --> 00:15:36,000
+That's why you can't add reference to non-existent primary key and parent table.
+
+192
+00:15:37,000 --> 00:15:38,000
+Let me open the roll table.
+
+193
+00:15:39,000 --> 00:15:45,000
+In case I'd like to remove all the participating relationships was record from another table.
+
+194
+00:15:45,000 --> 00:15:47,000
+I wouldn't be able to do that.
+
+195
+00:15:48,000 --> 00:15:51,000
+I can't do miles right click on the road and select the lead role.
+
+196
+00:15:52,000 --> 00:16:00,000
+After that, I click Apply button that the base doesn't let me remove zero because we restrict its removal
+
+197
+00:16:00,000 --> 00:16:04,000
+in this case, if you want to remove Roe was a new one.
+
+198
+00:16:04,000 --> 00:16:11,000
+We have to remove all references to this record in other tables, and only after that we will be able
+
+199
+00:16:11,000 --> 00:16:14,000
+to remove this rule does it make sense.
+
+200
+00:16:15,000 --> 00:16:19,000
+So our SQL query wasn't executed successfully.
+
+201
+00:16:19,000 --> 00:16:22,000
+That's why I click on Execute Query.
+
+202
+00:16:22,000 --> 00:16:27,000
+I can hear one more time, and here's our row back again.
+
+203
+00:16:28,000 --> 00:16:35,000
+It is still stored in Libby and is always guys not shy to ask questions and comments on this, we knew
+
+204
+00:16:35,000 --> 00:16:36,000
+in case you have any.
+
+205
+00:16:37,000 --> 00:16:39,000
+I always will be happy to answer.
+
+206
+00:16:40,000 --> 00:16:47,000
+Now, let's demo another thing I need to all to use a table one more time to demo you and not just sing.
+
+207
+00:16:48,000 --> 00:16:55,000
+Now, in certain key options, I'm going to select Cascade, what we expect now on that date.
+
+208
+00:16:55,000 --> 00:16:58,000
+Foreign key should be updated on remove.
+
+209
+00:16:58,000 --> 00:17:00,000
+Related records will be removed.
+
+210
+00:17:01,000 --> 00:17:06,000
+Let's get back to the table in his updated primary key for one record.
+
+211
+00:17:07,000 --> 00:17:09,000
+It will be updated in another table.
+
+212
+00:17:13,000 --> 00:17:15,000
+Let me open user table now.
+
+213
+00:17:16,000 --> 00:17:21,000
+You also can see that foreign key has been changed once I refreshed table.
+
+214
+00:17:22,000 --> 00:17:28,000
+So refresh table, you need to execute select queries, it was prepared by my school workbench one more
+
+215
+00:17:28,000 --> 00:17:28,000
+time.
+
+216
+00:17:29,000 --> 00:17:34,000
+Let me open the roll table again and let me remove zero plays its role.
+
+217
+00:17:35,000 --> 00:17:39,000
+I execute this query, no error so far.
+
+218
+00:17:39,000 --> 00:17:46,000
+And once this query is executed and Temple is removed from parent table with triggered cascading operation
+
+219
+00:17:46,000 --> 00:17:49,000
+in a related table on the delete event.
+
+220
+00:17:49,000 --> 00:17:53,000
+All related rows should be also removed in cascade cascading manner.
+
+221
+00:17:54,000 --> 00:17:59,000
+Let me refresh your user table and you can see that throws the reference to the tackles that we have
+
+222
+00:17:59,000 --> 00:18:01,000
+just removed is also removed.
+
+223
+00:18:02,000 --> 00:18:04,000
+Let's adjust foreign key constraint.
+
+224
+00:18:04,000 --> 00:18:07,000
+And this time we'll select said no.
+
+225
+00:18:13,000 --> 00:18:15,000
+Once we apply, it all changes.
+
+226
+00:18:15,000 --> 00:18:22,000
+I assume you can understand what will happen in case a remove role in parent table or update primer
+
+227
+00:18:22,000 --> 00:18:26,000
+key Zen related values in foreign key will be set up.
+
+228
+00:18:27,000 --> 00:18:33,000
+That's all possible because current operations is that you can perform in my school in tables was not
+
+229
+00:18:33,000 --> 00:18:34,000
+in the engine.
+
+230
+00:18:34,000 --> 00:18:35,000
+I don't know them.
+
+231
+00:18:35,000 --> 00:18:38,000
+You last for restrictions at the schools.
+
+232
+00:18:38,000 --> 00:18:43,000
+No action because I assume you are smart enough to understand what will happen.
+
+233
+00:18:44,000 --> 00:18:50,000
+And if you want to remove foreign key constraint, just open table configurations by selecting all the
+
+234
+00:18:50,000 --> 00:18:57,000
+table one more time and click the lead, select it on the foreign key constraint and take the kids query.
+
+235
+00:18:57,000 --> 00:18:58,000
+That's it.
+
+236
+00:18:59,000 --> 00:19:05,000
+On this example, I believe you already understood what data, consistency and data validity means.
+
+237
+00:19:06,000 --> 00:19:11,000
+In other words, this is nothing more than referential integrity and internal consistency.
+
+238
+00:19:12,000 --> 00:19:19,000
+Data consistency means that there is consistency in measurement of variables throughout data sets.
+
+239
+00:19:20,000 --> 00:19:28,000
+Data integrity is the overall accuracy and consistency of data and database can be set to be data consistent.
+
+240
+00:19:28,000 --> 00:19:36,000
+Once the content and the question doesn't give us a chance to infer a contradiction directly or indirectly,
+
+241
+00:19:37,000 --> 00:19:41,000
+data can be entirely consistent, but entirely wrong.
+
+242
+00:19:41,000 --> 00:19:46,000
+So the phrase data integrity is about the quality of data.
+
+243
+00:19:46,000 --> 00:19:53,000
+Database management systems provide data consistency tools, which can help around data integrity.
+
+244
+00:19:54,000 --> 00:20:00,000
+These are the parameters which are used to indicate the condition of data, such as data quality.
+
+245
+00:20:01,000 --> 00:20:04,000
+Data quality is a measurement of the condition of data.
+
+246
+00:20:04,000 --> 00:20:12,000
+Considering factors such as accuracy, completeness, consistency, data integrity is not about data
+
+247
+00:20:12,000 --> 00:20:13,000
+quality.
+
+248
+00:20:13,000 --> 00:20:20,000
+Data quality answer some questions, such as meetings or defined standards of an organization.
+
+249
+00:20:20,000 --> 00:20:23,000
+Data quality is a part of data integrity.
+
+250
+00:20:24,000 --> 00:20:32,000
+Data integrity includes all aspects of data quality and also force rules and includes review one more
+
+251
+00:20:32,000 --> 00:20:34,000
+term like data validity.
+
+252
+00:20:35,000 --> 00:20:41,000
+It is worth to say that this is just an aspect of data quality consistent in its settings.
+
+253
+00:20:41,000 --> 00:20:46,000
+This is a natural process of data obsolescence increase in time.
+
+254
+00:20:47,000 --> 00:20:48,000
+Stay tuned.
+
+255
+00:20:48,000 --> 00:20:54,000
+We'll have a lot of lessons where we'll discuss tools and techniques to ensure the best data quality.
+
+256
+00:20:54,000 --> 00:20:56,000
+That's all for this lesson.
+
+257
+00:20:56,000 --> 00:21:03,000
+Let's recap what we have learned today in this lesson, we have learned what referential integrity is
+
+258
+00:21:03,000 --> 00:21:04,000
+now.
+
+259
+00:21:04,000 --> 00:21:07,000
+You know what consequences of broken, referential integrity are.
+
+260
+00:21:08,000 --> 00:21:13,000
+We learned the concept of cascading operations and practice activities.
+
+261
+00:21:13,000 --> 00:21:16,000
+We can figure foreign key constraint in our tables.
+
+262
+00:21:16,000 --> 00:21:22,000
+I am sure that after this lesson, you have a clear understanding of what data consistency, data integrity,
+
+263
+00:21:23,000 --> 00:21:25,000
+data quality and data related to is.
+
+264
+00:21:26,000 --> 00:21:27,000
+Thanks a lot for your attention.
+
+265
+00:21:28,000 --> 00:21:29,000
+Have a great day.
+
+266
+00:21:29,000 --> 00:21:31,000
+See you in the next lesson.
+
diff --git a/47 - Relational databases/004 Indexes in Databases_en.srt b/47 - Relational databases/004 Indexes in Databases_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..b17d5253720ba6caff9c264f79f394baf7202eb2
--- /dev/null
+++ b/47 - Relational databases/004 Indexes in Databases_en.srt
@@ -0,0 +1,988 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello.
+
+2
+00:00:06,000 --> 00:00:10,000
+Yes, tenants in this lesson, we're going to learn indexes and databases.
+
+3
+00:00:10,000 --> 00:00:13,000
+I will explain you what they are and why we need them.
+
+4
+00:00:14,000 --> 00:00:16,000
+Also, we'll have practiced during the lesson.
+
+5
+00:00:16,000 --> 00:00:22,000
+We'll create a few indexes for our existing tables that we created in previous videos.
+
+6
+00:00:23,000 --> 00:00:28,000
+In the lesson, we're going to learn definition of index, and I will explain you what it is.
+
+7
+00:00:28,000 --> 00:00:32,000
+One example you're going to understand why we need indexes.
+
+8
+00:00:33,000 --> 00:00:40,000
+Also, we're going to give you a different index types Ziya primary, secondary and clustering.
+
+9
+00:00:41,000 --> 00:00:45,000
+Also, we're going to have a practice during the lesson in my school workbench.
+
+10
+00:00:45,000 --> 00:00:51,000
+We're going to learn how to create indexes kind of figures, work with different properties and delays.
+
+11
+00:00:52,000 --> 00:00:58,000
+And as a summary, at the end of the lesson, we're going to review advantages and disadvantages of
+
+12
+00:00:58,000 --> 00:00:59,000
+using indexes.
+
+13
+00:01:00,000 --> 00:01:01,000
+Let's start our lesson.
+
+14
+00:01:02,000 --> 00:01:10,000
+We're going to start our lesson with definition of indexes, so what indexes indexes, the data structures,
+
+15
+00:01:10,000 --> 00:01:17,000
+it improves the speed of data retrieval operations on a database table and the cost of additional rights
+
+16
+00:01:17,000 --> 00:01:18,000
+and storage space.
+
+17
+00:01:19,000 --> 00:01:21,000
+The main things are index data structure.
+
+18
+00:01:22,000 --> 00:01:28,000
+Indexes are used to quickly allocate data without having to search every row in a database table.
+
+19
+00:01:28,000 --> 00:01:31,000
+Every time and database table is accessed.
+
+20
+00:01:32,000 --> 00:01:40,000
+Indexes can be created using one or more columns of a database table provides a basis for both rapid
+
+21
+00:01:40,000 --> 00:01:47,000
+random lookups, and the efficient access of order records in the minutes will explain what lookups
+
+22
+00:01:47,000 --> 00:01:49,000
+are then distant.
+
+23
+00:01:49,000 --> 00:01:50,000
+What is an index?
+
+24
+00:01:51,000 --> 00:01:56,000
+In most simple words, and index is a small table having only two columns.
+
+25
+00:01:56,000 --> 00:02:00,000
+The first column is a copy of the primary key off a table.
+
+26
+00:02:00,000 --> 00:02:08,000
+The second column contains a set of pointers for holding the address of the disk block, whereas it's
+
+27
+00:02:08,000 --> 00:02:10,000
+specific related to accurate is stored.
+
+28
+00:02:11,000 --> 00:02:14,000
+In some cases, index is sorted and extracted.
+
+29
+00:02:14,000 --> 00:02:18,000
+The reference to the records become easier thing to do.
+
+30
+00:02:18,000 --> 00:02:23,000
+An operation is significantly faster rather than going over each row.
+
+31
+00:02:24,000 --> 00:02:28,000
+Before we move further was none of indexes in details.
+
+32
+00:02:28,000 --> 00:02:34,000
+I promised you to explain what lookup tables are in computer science.
+
+33
+00:02:34,000 --> 00:02:41,000
+A lookup table isn't the rate that replaces runtime computation with a simpler rate indexing operation.
+
+34
+00:02:42,000 --> 00:02:49,000
+The savings in processing time can be significant because retrieving a value from memory is often faster
+
+35
+00:02:49,000 --> 00:02:54,000
+than carrying out an expensive computation or input output operation.
+
+36
+00:02:55,000 --> 00:02:59,000
+The tables may be calculated and stored in static storage.
+
+37
+00:03:00,000 --> 00:03:06,000
+This assumption doesn't require for a separate lesson, but still important for you to know this chunk.
+
+38
+00:03:07,000 --> 00:03:14,000
+Sometimes you're going to create such lookup tables or just how easy called lookups in your database
+
+39
+00:03:15,000 --> 00:03:21,000
+and definitely indexing will help you significantly improve performance of your app by reducing the
+
+40
+00:03:21,000 --> 00:03:24,000
+time of computation to find the value you need.
+
+41
+00:03:25,000 --> 00:03:30,000
+That was a small step aside to make sure you understood all terms I mentioned.
+
+42
+00:03:31,000 --> 00:03:36,000
+Let's understand now in more detail what does indexing do and why?
+
+43
+00:03:36,000 --> 00:03:39,000
+It is important and deserves a separate lesson.
+
+44
+00:03:40,000 --> 00:03:47,000
+Indexing is a way to get an order table into an order that will maximize the query efficiency.
+
+45
+00:03:47,000 --> 00:03:55,000
+While searching one table is an index is the order of the rows will likely not to be discernable by
+
+46
+00:03:55,000 --> 00:04:03,000
+the query as optimized in any way, and your query will therefore have to search through the rows leniently.
+
+47
+00:04:03,000 --> 00:04:10,000
+In other words, the queries will have to search through every rule to find zeros matching the conditions.
+
+48
+00:04:11,000 --> 00:04:14,000
+As you can imagine, this can take a long time.
+
+49
+00:04:14,000 --> 00:04:18,000
+Looking through every single row is not very efficient.
+
+50
+00:04:18,000 --> 00:04:26,000
+Imagine that you have a list of users in your database and that 100000 of them and you need to find
+
+51
+00:04:26,000 --> 00:04:27,000
+the user by its email.
+
+52
+00:04:28,000 --> 00:04:34,000
+You can pass users email as a search query to a database, but to find zeros.
+
+53
+00:04:34,000 --> 00:04:36,000
+It's a unique database will go over each row.
+
+54
+00:04:36,000 --> 00:04:41,000
+Compare and email in a search query was the actual email in each table.
+
+55
+00:04:42,000 --> 00:04:45,000
+How much time will it take to iterate over each couple?
+
+56
+00:04:46,000 --> 00:04:46,000
+Would this soon?
+
+57
+00:04:47,000 --> 00:04:55,000
+Well, believe me, it will take time in the sense of post to improve the performance of the database
+
+58
+00:04:55,000 --> 00:05:00,000
+while reading data from an index causes the database to create a data structure.
+
+59
+00:05:01,000 --> 00:05:07,000
+In this data structure, with a search term and pointer to the actual records in the database, for
+
+60
+00:05:07,000 --> 00:05:11,000
+example, index can be created for email column.
+
+61
+00:05:11,000 --> 00:05:16,000
+In this case, index will consist from the email value and point that does.
+
+62
+00:05:16,000 --> 00:05:22,000
+A table associated with this email pointer is, simply speaking, the reference information for the
+
+63
+00:05:22,000 --> 00:05:26,000
+location of the additional information in memory.
+
+64
+00:05:26,000 --> 00:05:33,000
+Basically, the index holds is a search term and that particular rows home address on the memory disk
+
+65
+00:05:34,000 --> 00:05:41,000
+index records comprise such key values and data pointers, multilevel indexes, stores and the disk,
+
+66
+00:05:41,000 --> 00:05:43,000
+along with the actual database files.
+
+67
+00:05:44,000 --> 00:05:48,000
+As the size of the database grows, so does the size of the indexes.
+
+68
+00:05:49,000 --> 00:05:56,000
+There is an immense need to keep the index records in the main memory so as to speed up the search operations.
+
+69
+00:05:56,000 --> 00:06:03,000
+If single level indexes used in the large size index can not be kept in memory, which leads to multiple
+
+70
+00:06:03,000 --> 00:06:11,000
+disk accesses, Multilevel Index helps in breaking down the index into several smaller indexes in order
+
+71
+00:06:11,000 --> 00:06:18,000
+to make the outermost level so small that it can be saved in a single disk block, which can easily
+
+72
+00:06:18,000 --> 00:06:21,000
+be accommodated anywhere in the main memory.
+
+73
+00:06:22,000 --> 00:06:25,000
+The index data structure tarp is very likely and B three.
+
+74
+00:06:26,000 --> 00:06:26,000
+What is it?
+
+75
+00:06:27,000 --> 00:06:32,000
+In case you are not familiar with this kind of the destruction, I will briefly explain the main points
+
+76
+00:06:32,000 --> 00:06:32,000
+now.
+
+77
+00:06:33,000 --> 00:06:35,000
+Well, the advantage of the big three are numerous.
+
+78
+00:06:36,000 --> 00:06:42,000
+The main advantage for our purposes is that it is searchable when the data structure is sorted in order.
+
+79
+00:06:42,000 --> 00:06:45,000
+It makes our search more efficient for obvious reasons.
+
+80
+00:06:46,000 --> 00:06:53,000
+So the definition of victory sounds like this mitre is a self-balancing tree data structure that maintains
+
+81
+00:06:53,000 --> 00:06:55,000
+source data and allows searches.
+
+82
+00:06:56,000 --> 00:07:04,000
+Sequential access insertions and deletions in logarithmic time and arbitrary is a balanced binary search
+
+83
+00:07:04,000 --> 00:07:07,000
+tree that follows a multilevel index format.
+
+84
+00:07:07,000 --> 00:07:11,000
+The leaf nodes of a tree denote actual data point.
+
+85
+00:07:11,000 --> 00:07:17,000
+This V3 ensures that all leaf must remain as the same height.
+
+86
+00:07:17,000 --> 00:07:18,000
+Thus, balance.
+
+87
+00:07:19,000 --> 00:07:23,000
+Additionally, the leaf nodes are linked using Eliquis.
+
+88
+00:07:24,000 --> 00:07:29,000
+Therefore, Arbitrary can support random access as well as sequential access.
+
+89
+00:07:30,000 --> 00:07:35,000
+If you want to run this data structure in details, I have a course where I reviewed different data
+
+90
+00:07:35,000 --> 00:07:38,000
+structures on examples of containers in Java.
+
+91
+00:07:39,000 --> 00:07:40,000
+But the general idea is the same.
+
+92
+00:07:41,000 --> 00:07:44,000
+You can check my Java Collections framework course if you wish.
+
+93
+00:07:45,000 --> 00:07:49,000
+I also explained in details would be connotation is in that course.
+
+94
+00:07:50,000 --> 00:07:53,000
+Now let's proceed with learning of indexes.
+
+95
+00:07:54,000 --> 00:07:58,000
+I'm going to explain in now different types of indexes the three types of Zen.
+
+96
+00:07:59,000 --> 00:08:07,000
+They are primary secondary clustering, primary index and turn maybe dance or sparse.
+
+97
+00:08:07,000 --> 00:08:14,000
+Primary index refers to an index stored in sorted order on the certain key of data storage and blocks
+
+98
+00:08:15,000 --> 00:08:16,000
+to look up a value.
+
+99
+00:08:17,000 --> 00:08:23,000
+You do a binary search on the index, which will produce a pointer to the blog, and then you can do
+
+100
+00:08:23,000 --> 00:08:26,000
+a binary search on the data in the block.
+
+101
+00:08:26,000 --> 00:08:28,000
+Let's start from the primary index.
+
+102
+00:08:29,000 --> 00:08:35,000
+Primary indexes and orders file, which is fixed length size, which still feels and like we have previously
+
+103
+00:08:35,000 --> 00:08:36,000
+discussed.
+
+104
+00:08:36,000 --> 00:08:43,000
+The first field is the same as index value, and second is a pointer to that specific data block.
+
+105
+00:08:43,000 --> 00:08:50,000
+We can say that there is always one to one relationship between the entries in the index table you already
+
+106
+00:08:50,000 --> 00:08:52,000
+know from previous slide.
+
+107
+00:08:52,000 --> 00:09:00,000
+The primary index member is a dense or sparse and dense indexing database is an index was pairs of keys
+
+108
+00:09:00,000 --> 00:09:02,000
+and pointers for every records.
+
+109
+00:09:02,000 --> 00:09:08,000
+Every key in this file is associated with a particular point that the record in the source of data file.
+
+110
+00:09:09,000 --> 00:09:15,000
+This means that the number of records in the index table is the same as the number of records in the
+
+111
+00:09:15,000 --> 00:09:16,000
+main table.
+
+112
+00:09:17,000 --> 00:09:24,000
+Obviously, this type of index needs more space to store index records itself in comparison with sparse
+
+113
+00:09:24,000 --> 00:09:25,000
+primary index.
+
+114
+00:09:26,000 --> 00:09:29,000
+The Spurs primary index is somewhat different.
+
+115
+00:09:29,000 --> 00:09:34,000
+It is an index record that appears for only some of the values in the file.
+
+116
+00:09:35,000 --> 00:09:41,000
+Sparse Index helps you to resolve the issues of dense index and database management system.
+
+117
+00:09:42,000 --> 00:09:49,000
+Following this indexing technique, a range of index columns stores the same data block address, and
+
+118
+00:09:49,000 --> 00:09:53,000
+when data needs to be retrieved, the block address will be fetched.
+
+119
+00:09:54,000 --> 00:09:57,000
+This is key difference between dance and sports in this.
+
+120
+00:09:58,000 --> 00:10:03,000
+Let me repeat one more time, in other words, and pay attention to the visualisation of the slide.
+
+121
+00:10:03,000 --> 00:10:07,000
+To understand this better, we have blocks that source.
+
+122
+00:10:07,000 --> 00:10:15,000
+A range of data is a clear and based on the search query, I get access to the block of data.
+
+123
+00:10:16,000 --> 00:10:20,000
+After that, we'll go over the data and look linearly till we get the requested data.
+
+124
+00:10:21,000 --> 00:10:28,000
+Also, in comparison to dancing, surpassing the source index records for only some search key values.
+
+125
+00:10:28,000 --> 00:10:35,000
+Thus, its advantage in requiring less space, less maintenance overhead for insertion and deletions.
+
+126
+00:10:36,000 --> 00:10:40,000
+So as you already understood, sparse index is called.
+
+127
+00:10:40,000 --> 00:10:47,000
+So because we need less number of pointers from index, the records of database all records are arranged
+
+128
+00:10:47,000 --> 00:10:55,000
+based on order is key, and hence we can quickly access the record by going to block first and then
+
+129
+00:10:55,000 --> 00:11:00,000
+access the following records without having individual index for each of the records.
+
+130
+00:11:00,000 --> 00:11:01,000
+Does it make sense?
+
+131
+00:11:02,000 --> 00:11:08,000
+We are done with primary in this, even in case you have any questions related to primary index.
+
+132
+00:11:08,000 --> 00:11:15,000
+Please do not hesitate to ask your questions in the comments to this video, and I will be happy to
+
+133
+00:11:15,000 --> 00:11:15,000
+answer.
+
+134
+00:11:16,000 --> 00:11:18,000
+Let's move on now.
+
+135
+00:11:18,000 --> 00:11:20,000
+Let's discuss and learn what secondary indexes.
+
+136
+00:11:21,000 --> 00:11:28,000
+In the index in database management system can be generated by a field which has a unique value for
+
+137
+00:11:28,000 --> 00:11:31,000
+each record, and it should be a candidate key.
+
+138
+00:11:32,000 --> 00:11:38,000
+If you don't remember what candidate K is this similar turn to alternate key?
+
+139
+00:11:38,000 --> 00:11:43,000
+Please review one more time lesson about basic terms in a relational databases.
+
+140
+00:11:44,000 --> 00:11:51,000
+Imagine that you have a table of users, and most likely you're going to have a column that will be
+
+141
+00:11:51,000 --> 00:11:55,000
+used as primary key and primary index for records in this table.
+
+142
+00:11:56,000 --> 00:12:02,000
+But you know that according to your business, logic user may be often requested by email.
+
+143
+00:12:03,000 --> 00:12:06,000
+That's why you decide to create one more index for email.
+
+144
+00:12:07,000 --> 00:12:13,000
+Email column contains also unique values and may be treated as candidate key.
+
+145
+00:12:13,000 --> 00:12:14,000
+Does it make sense?
+
+146
+00:12:15,000 --> 00:12:16,000
+Let me explain now.
+
+147
+00:12:16,000 --> 00:12:24,000
+Cluster Index If you all understood what's primary and secondary indexes are, it will be easier for
+
+148
+00:12:24,000 --> 00:12:26,000
+you to understand clustering index.
+
+149
+00:12:27,000 --> 00:12:33,000
+Imagine that you want to improve performance of reading the records, querying them by column that may
+
+150
+00:12:33,000 --> 00:12:35,000
+contain similar values and multiple rows.
+
+151
+00:12:36,000 --> 00:12:42,000
+For example, in the same scenario with users, in case you want to search user by their last name,
+
+152
+00:12:43,000 --> 00:12:47,000
+you should understand is it last name may not always be unique.
+
+153
+00:12:48,000 --> 00:12:56,000
+Z.Z Use Case of Clustering Index In order to identify the records first, it will look two or more columns
+
+154
+00:12:56,000 --> 00:13:00,000
+together to get the values and create index out of them.
+
+155
+00:13:00,000 --> 00:13:06,000
+Pay attention to this because it is critically important to have unique search query, and this is impossible
+
+156
+00:13:06,000 --> 00:13:09,000
+to create index on non unique values.
+
+157
+00:13:10,000 --> 00:13:16,000
+So you still would need to identify a combination of columns that will give you Zanik value for each
+
+158
+00:13:16,000 --> 00:13:19,000
+step and create index based on that.
+
+159
+00:13:19,000 --> 00:13:26,000
+This method is called a clustering index, basically records with similar characteristics and grouped
+
+160
+00:13:26,000 --> 00:13:29,000
+together, and indexes are created for these groups.
+
+161
+00:13:30,000 --> 00:13:34,000
+I believe they learned enough theory to jump the practice activities.
+
+162
+00:13:35,000 --> 00:13:39,000
+We're going to use our user tables that we created in previous lessons.
+
+163
+00:13:39,000 --> 00:13:42,000
+In case you don't know how to create a table.
+
+164
+00:13:42,000 --> 00:13:43,000
+Want to create a similar one?
+
+165
+00:13:44,000 --> 00:13:46,000
+Please make sure you watch the previous lesson.
+
+166
+00:13:47,000 --> 00:13:53,000
+When we created our first table and database do mouse, right click over the table and select Alter
+
+167
+00:13:53,000 --> 00:13:57,000
+Table Select Indexes set up here.
+
+168
+00:13:58,000 --> 00:14:03,000
+This is a tab that allows us to create, configure and remove indexes.
+
+169
+00:14:04,000 --> 00:14:11,000
+Each index has name to create new index, click in an empty row and time and a name.
+
+170
+00:14:11,000 --> 00:14:13,000
+After that, select in the start.
+
+171
+00:14:14,000 --> 00:14:16,000
+Let me review Is you each of this?
+
+172
+00:14:17,000 --> 00:14:18,000
+This is my SQL index types.
+
+173
+00:14:19,000 --> 00:14:26,000
+They're similar from the relational database theory that we have discussed, but definitely this ones
+
+174
+00:14:26,000 --> 00:14:29,000
+have specifics related to my school database management system.
+
+175
+00:14:29,000 --> 00:14:37,000
+Only primary index is created by default for each primary key, and you see the one was already created.
+
+176
+00:14:38,000 --> 00:14:42,000
+My school creates the index by default for primary key column.
+
+177
+00:14:43,000 --> 00:14:46,000
+You can click on existing index to explore the details.
+
+178
+00:14:47,000 --> 00:14:55,000
+For example, you can learn which column is used to create this index and column, or I send them all
+
+179
+00:14:55,000 --> 00:14:55,000
+this send.
+
+180
+00:14:56,000 --> 00:15:04,000
+In this time may be used for secondary indexes, that means that values in this column may not be unique.
+
+181
+00:15:05,000 --> 00:15:10,000
+For example, you can see that my school automatically created index for foreign key.
+
+182
+00:15:11,000 --> 00:15:12,000
+I didn't do that.
+
+183
+00:15:12,000 --> 00:15:14,000
+This was done by my school.
+
+184
+00:15:15,000 --> 00:15:19,000
+Unique index type created four columns was only unique values.
+
+185
+00:15:20,000 --> 00:15:24,000
+For example, you may have unique properties set for email column.
+
+186
+00:15:24,000 --> 00:15:28,000
+That means that it is possible to create unique index for this column.
+
+187
+00:15:28,000 --> 00:15:32,000
+To discuss reading operations from user table.
+
+188
+00:15:32,000 --> 00:15:36,000
+Using user email in search query will become faster.
+
+189
+00:15:36,000 --> 00:15:44,000
+Full text indexes are used for full text searches on in the BE and might use some storage engines,
+
+190
+00:15:44,000 --> 00:15:50,000
+support full text indexes and only for Char Bircher and text columns.
+
+191
+00:15:51,000 --> 00:15:56,000
+Indexing always takes place over the entire column and column preface.
+
+192
+00:15:57,000 --> 00:16:01,000
+Also, we can create indexes on spatial data types.
+
+193
+00:16:01,000 --> 00:16:10,000
+My Esam and in B supports our three indexes on special types as a search engines use matrix for index
+
+194
+00:16:10,000 --> 00:16:17,000
+and special types, except for archive, which doesn't support special type indexing.
+
+195
+00:16:19,000 --> 00:16:25,000
+On this slide, you can see the characteristics of different index types in energy B storage engine
+
+196
+00:16:25,000 --> 00:16:26,000
+of my school.
+
+197
+00:16:27,000 --> 00:16:31,000
+Each index also has a different set of properties.
+
+198
+00:16:31,000 --> 00:16:38,000
+Let's review each of them for string columns, indexes may use only as a leading part of column values
+
+199
+00:16:39,000 --> 00:16:40,000
+using blanks property.
+
+200
+00:16:41,000 --> 00:16:47,000
+This allows us to create index only for prefixes and other properties that can be used.
+
+201
+00:16:47,000 --> 00:16:55,000
+Here is a key block source for my use some tables Key block size optionally specifies the size in bytes
+
+202
+00:16:55,000 --> 00:16:57,000
+to use for index key blocks.
+
+203
+00:16:58,000 --> 00:17:03,000
+The value is treated as a hint and different size could be used if necessary.
+
+204
+00:17:04,000 --> 00:17:10,000
+Akeem Look Source value specified for an individual index definition overrides a table level key block
+
+205
+00:17:10,000 --> 00:17:11,000
+size value.
+
+206
+00:17:12,000 --> 00:17:15,000
+It is not supported at the index level for any DB tables.
+
+207
+00:17:16,000 --> 00:17:21,000
+Also only for full text indexes, you can specify parser.
+
+208
+00:17:22,000 --> 00:17:29,000
+It associates a person plug in with the index if full text indexing and search and operations need special
+
+209
+00:17:29,000 --> 00:17:34,000
+handling in London, B and My s some supports full text parser plugins.
+
+210
+00:17:34,000 --> 00:17:40,000
+If you are interested, you can find more information in official documentation of my SQL about full
+
+211
+00:17:40,000 --> 00:17:47,000
+text parser plugins for this specific case, I believe that topic lies outside of the scope of this
+
+212
+00:17:47,000 --> 00:17:48,000
+lesson.
+
+213
+00:17:48,000 --> 00:17:51,000
+Also, you can specify index visibility.
+
+214
+00:17:51,000 --> 00:17:53,000
+You have separate checkbox here.
+
+215
+00:17:54,000 --> 00:18:01,000
+You can place a tweak to make index visible and you can remove it take to make index invisible.
+
+216
+00:18:01,000 --> 00:18:04,000
+My cycle supports invisible indexes.
+
+217
+00:18:04,000 --> 00:18:08,000
+That is, indexes that are not used by the optimizer.
+
+218
+00:18:09,000 --> 00:18:13,000
+The feature applies to indexes, pauses and primary keys.
+
+219
+00:18:13,000 --> 00:18:18,000
+Using explicit or implicit indexes are visible by default.
+
+220
+00:18:19,000 --> 00:18:27,000
+After you configure it all what you need, just click apply button and execute generated SQL query to
+
+221
+00:18:27,000 --> 00:18:32,000
+remove indexes that you created, do most right click on the index and click Delete selected.
+
+222
+00:18:33,000 --> 00:18:33,000
+That's it.
+
+223
+00:18:34,000 --> 00:18:40,000
+By this moment in our lesson, I believe you already have both theoretical and practical understanding
+
+224
+00:18:40,000 --> 00:18:41,000
+of indexes.
+
+225
+00:18:42,000 --> 00:18:47,000
+And now we will be able to come up with advantages and disadvantages of indexes.
+
+226
+00:18:47,000 --> 00:18:48,000
+Together with me.
+
+227
+00:18:49,000 --> 00:18:55,000
+And one advantage advantages of indexing it is worth to mention the following once it helps to reduce
+
+228
+00:18:55,000 --> 00:19:02,000
+the total number of input output operations needed to retrieve that data offers faster search and retrieval
+
+229
+00:19:02,000 --> 00:19:03,000
+of data.
+
+230
+00:19:04,000 --> 00:19:10,000
+So we can say that performance of raid operations is increased and we shouldn't forget about the next
+
+231
+00:19:10,000 --> 00:19:19,000
+disadvantages additional disk memory space needed to store index decreased performance of write operations,
+
+232
+00:19:19,000 --> 00:19:27,000
+slower insert, update and delete operations because besides removal of trouble, it is also required
+
+233
+00:19:27,000 --> 00:19:30,000
+to recalculate index to keep it in sorted state.
+
+234
+00:19:31,000 --> 00:19:34,000
+That's all what I wanted to discuss with you today in this lesson.
+
+235
+00:19:34,000 --> 00:19:36,000
+Let's recap what we have learned today.
+
+236
+00:19:37,000 --> 00:19:41,000
+In this lesson, we have learned a lot of interesting things about indexes.
+
+237
+00:19:42,000 --> 00:19:44,000
+They learned what indexing database is.
+
+238
+00:19:45,000 --> 00:19:48,000
+I believe that you understood why we need indexes.
+
+239
+00:19:49,000 --> 00:19:54,000
+Also, I put separate focus on the details to help you understand how it works.
+
+240
+00:19:55,000 --> 00:20:03,000
+You also know what be tree data structure is and how logarithmic connotation of elements retrieval from
+
+241
+00:20:03,000 --> 00:20:07,000
+collection may be achieved via a view of different index types.
+
+242
+00:20:08,000 --> 00:20:11,000
+Those include primary secondary clustering.
+
+243
+00:20:11,000 --> 00:20:18,000
+I showed you how to create and remove indexes in database, and at the end of the lesson, we have reviewed
+
+244
+00:20:18,000 --> 00:20:21,000
+advantages and disadvantages of using indexes.
+
+245
+00:20:22,000 --> 00:20:23,000
+That's all for this lesson.
+
+246
+00:20:24,000 --> 00:20:26,000
+Thanks a lot for your attention, Tim.
+
+247
+00:20:26,000 --> 00:20:29,000
+Have a great day and see you in the next lesson.
+
diff --git a/47 - Relational databases/005 Database Normalization & Denormalization_en.srt b/47 - Relational databases/005 Database Normalization & Denormalization_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..2de4daffbc81e23b702873745222809ff6553607
--- /dev/null
+++ b/47 - Relational databases/005 Database Normalization & Denormalization_en.srt
@@ -0,0 +1,1576 @@
+1
+00:00:06,000 --> 00:00:11,000
+Hello, yes, tenants in this lesson, we're going to learn more advanced concepts in the relational
+
+2
+00:00:11,000 --> 00:00:12,000
+databases.
+
+3
+00:00:12,000 --> 00:00:17,000
+We're going to talk about database normalization and normalization.
+
+4
+00:00:17,000 --> 00:00:20,000
+Believe me, this is a really important lesson.
+
+5
+00:00:20,000 --> 00:00:26,000
+And knowing the rules that I'm going to share with you in this lesson, you will be able to create scalable
+
+6
+00:00:26,000 --> 00:00:28,000
+database architecture.
+
+7
+00:00:28,000 --> 00:00:31,000
+And also, this will help you a lot in your career.
+
+8
+00:00:32,000 --> 00:00:37,000
+We are going to study the lesson from understanding of what data anomalies are.
+
+9
+00:00:38,000 --> 00:00:44,000
+I'm going to explain what insertion date and deletion anomaly is known as a problem.
+
+10
+00:00:44,000 --> 00:00:46,000
+We'll learn how to avoid it.
+
+11
+00:00:46,000 --> 00:00:53,000
+And after understanding of basics of dependency theory, we'll jump to our main topic today.
+
+12
+00:00:53,000 --> 00:00:59,000
+I'm talking about normalization and normal forms that we are going to review with examples.
+
+13
+00:00:59,000 --> 00:01:03,000
+Anthem's and obsolescent will discuss what the normalization is.
+
+14
+00:01:04,000 --> 00:01:05,000
+Let's start our lesson.
+
+15
+00:01:06,000 --> 00:01:12,000
+And before we even jump to discussion of what normalization is, let's understand what problem we have
+
+16
+00:01:12,000 --> 00:01:13,000
+learned to address.
+
+17
+00:01:13,000 --> 00:01:16,000
+Let me explain you what data anomalies are.
+
+18
+00:01:17,000 --> 00:01:24,000
+Data anomalies are inconsistencies in the data stored in the database as a result of an operation such
+
+19
+00:01:24,000 --> 00:01:27,000
+as update insertion and or deletion.
+
+20
+00:01:28,000 --> 00:01:34,000
+Such inconsistencies may arise when we have a particular records stored in multiple locations, and
+
+21
+00:01:34,000 --> 00:01:42,000
+not all of the corpus are updated generally and with relational database design must capture all of
+
+22
+00:01:42,000 --> 00:01:45,000
+the necessary attributes and associations.
+
+23
+00:01:46,000 --> 00:01:53,000
+The design should do this was a minimal amount of storage information and no redundant data in database
+
+24
+00:01:53,000 --> 00:01:54,000
+design.
+
+25
+00:01:54,000 --> 00:02:01,000
+Redundancy is generally undesirable because it causes problems maintaining consistency after updates.
+
+26
+00:02:02,000 --> 00:02:08,000
+We are going to learn such term as normalization later today, but I already can say that normalization
+
+27
+00:02:08,000 --> 00:02:14,000
+can help us to reduce data redundancy and minimize risks of data anomalies.
+
+28
+00:02:14,000 --> 00:02:18,000
+But sometimes we want to add data redundancy on purpose.
+
+29
+00:02:19,000 --> 00:02:26,000
+We need to do this carefully and was clear understanding of why we are doing this and what benefits
+
+30
+00:02:26,000 --> 00:02:27,000
+we expect to get.
+
+31
+00:02:28,000 --> 00:02:31,000
+Redundancy can sometimes leave the performance improvements.
+
+32
+00:02:32,000 --> 00:02:36,000
+We are going to discuss how this may improve our performance.
+
+33
+00:02:36,000 --> 00:02:41,000
+One will talk about the normalization Xen different, anomalous.
+
+34
+00:02:41,000 --> 00:02:42,000
+Let's review some of them.
+
+35
+00:02:43,000 --> 00:02:47,000
+I'm going to show different types of anomalies on example.
+
+36
+00:02:47,000 --> 00:02:49,000
+Let's look at this example first.
+
+37
+00:02:50,000 --> 00:02:53,000
+Imagine that we have a table with suppliers.
+
+38
+00:02:53,000 --> 00:02:59,000
+We also store information about them like address and products they produce.
+
+39
+00:02:59,000 --> 00:03:04,000
+There is also information about quantity of each product and its price.
+
+40
+00:03:04,000 --> 00:03:05,000
+Is that clear?
+
+41
+00:03:06,000 --> 00:03:08,000
+What do you think about this table?
+
+42
+00:03:08,000 --> 00:03:10,000
+Is it looks good to you.
+
+43
+00:03:11,000 --> 00:03:17,000
+Well, we're going to review in detail what is wrong in such kind of tables.
+
+44
+00:03:17,000 --> 00:03:20,000
+You already see huge data redundancy in this table.
+
+45
+00:03:21,000 --> 00:03:27,000
+Also, I believe we can notice is that the relationships between a key attribute and other data you
+
+46
+00:03:27,000 --> 00:03:29,000
+topple is not always logical.
+
+47
+00:03:30,000 --> 00:03:34,000
+Let me show you in detail what problems may be caused by this data redundancy.
+
+48
+00:03:35,000 --> 00:03:42,000
+And the first anomalies that we are going to learn is insertion anomaly imagines that we need that new
+
+49
+00:03:42,000 --> 00:03:42,000
+supplier.
+
+50
+00:03:43,000 --> 00:03:45,000
+We know its name.
+
+51
+00:03:45,000 --> 00:03:49,000
+We know it's address, but we don't know.
+
+52
+00:03:49,000 --> 00:03:51,000
+These are products that it produces.
+
+53
+00:03:51,000 --> 00:03:53,000
+No prices for these brothers.
+
+54
+00:03:53,000 --> 00:03:56,000
+We just started cooperation with them.
+
+55
+00:03:56,000 --> 00:03:58,000
+A company has been just registered.
+
+56
+00:03:59,000 --> 00:04:03,000
+And what should I put in product quantity and price columns?
+
+57
+00:04:03,000 --> 00:04:06,000
+I have to put empty, of course, data.
+
+58
+00:04:06,000 --> 00:04:09,000
+In this case, I have to base is a No.
+
+59
+00:04:10,000 --> 00:04:12,000
+Zero in different columns.
+
+60
+00:04:12,000 --> 00:04:13,000
+But is this correct?
+
+61
+00:04:14,000 --> 00:04:21,000
+Why I obligated to come up with values for columns that I don't need to use in this moment?
+
+62
+00:04:21,000 --> 00:04:29,000
+What if I just not aware about their products or why after companies established that was information
+
+63
+00:04:29,000 --> 00:04:30,000
+about their products?
+
+64
+00:04:30,000 --> 00:04:35,000
+If I just could add new rows was a product a lot of questions.
+
+65
+00:04:36,000 --> 00:04:42,000
+Another type of anomaly is update anomaly imagines that we decided to update supplier name.
+
+66
+00:04:43,000 --> 00:04:48,000
+Probably because of company reorganization, they decided to change their public name.
+
+67
+00:04:49,000 --> 00:04:56,000
+And now we need to execute the query to update all tables where we used suppliers name.
+
+68
+00:04:56,000 --> 00:05:01,000
+And we have really a lot of records where we need to accommodate supplier snake.
+
+69
+00:05:02,000 --> 00:05:10,000
+But what if we accidentally forgot it for some records during insertion, we added out, and for some
+
+70
+00:05:10,000 --> 00:05:10,000
+not.
+
+71
+00:05:11,000 --> 00:05:18,000
+What if accidentally SSEG different amount of space characters and some records still will be not updated?
+
+72
+00:05:18,000 --> 00:05:26,000
+In this case, I'm going to face that anomaly because after object, I will have inconsistent and not
+
+73
+00:05:26,000 --> 00:05:27,000
+valid data.
+
+74
+00:05:28,000 --> 00:05:30,000
+Do not accidentally forget the date throws.
+
+75
+00:05:30,000 --> 00:05:38,000
+It would be better if we could organize the restructure in a way when we have only one place where we
+
+76
+00:05:38,000 --> 00:05:43,000
+store supplier's name, then the risk of facing an added anomaly is minimal.
+
+77
+00:05:44,000 --> 00:05:46,000
+Let's have the deletion anomaly now.
+
+78
+00:05:47,000 --> 00:05:54,000
+This type of anomaly may occur when we remove information and together with it, or remove information
+
+79
+00:05:54,000 --> 00:05:55,000
+that shouldn't be removed.
+
+80
+00:05:56,000 --> 00:06:04,000
+For example, we stopped cooperation with one supplier or we need just to remove information about delivery.
+
+81
+00:06:04,000 --> 00:06:11,000
+And in case we remove information about delivery, we lose information about our supplier and vice versa.
+
+82
+00:06:12,000 --> 00:06:15,000
+All this information is important for our accounting department.
+
+83
+00:06:16,000 --> 00:06:20,000
+We also might need to use this information to create different reports.
+
+84
+00:06:21,000 --> 00:06:25,000
+What we should do in this case, it is hard question to answer.
+
+85
+00:06:26,000 --> 00:06:30,000
+Do you see what problems may be caused by data redundancy in our table?
+
+86
+00:06:30,000 --> 00:06:32,000
+How to fix this.
+
+87
+00:06:32,000 --> 00:06:39,000
+The best approach to create tables without anomalies is to ensure that the tables are normalized, and
+
+88
+00:06:39,000 --> 00:06:43,000
+that's accomplished by understanding functional dependencies.
+
+89
+00:06:43,000 --> 00:06:49,000
+Functional dependency ensures that all attributes in the table belong to that table.
+
+90
+00:06:50,000 --> 00:06:54,000
+In other words, it will eliminate redundancies and anomalies.
+
+91
+00:06:55,000 --> 00:07:02,000
+Let me show you as a solution for our example and what structure would help us to avoid the two anomalies.
+
+92
+00:07:02,000 --> 00:07:07,000
+Let's change our tables and create two tables instead of one.
+
+93
+00:07:08,000 --> 00:07:12,000
+We create supply a table and also a great delivery table.
+
+94
+00:07:13,000 --> 00:07:17,000
+In one table, we can store all information related to supply.
+
+95
+00:07:17,000 --> 00:07:23,000
+And in another table, we're going to store all information related to delivery.
+
+96
+00:07:23,000 --> 00:07:26,000
+And we establish relationships between these two tables.
+
+97
+00:07:27,000 --> 00:07:31,000
+So avoid data duplication, for example, for each delivery.
+
+98
+00:07:31,000 --> 00:07:33,000
+There is a specific supply.
+
+99
+00:07:33,000 --> 00:07:36,000
+Each supplier can have many deliveries.
+
+100
+00:07:37,000 --> 00:07:39,000
+Each delivery is provided by one supplier.
+
+101
+00:07:40,000 --> 00:07:45,000
+Is it clear we want to add information about is delivery or supply?
+
+102
+00:07:46,000 --> 00:07:52,000
+We are not obligated to add false information or information that we don't have in this moment.
+
+103
+00:07:53,000 --> 00:07:56,000
+No dummy values are needed during the insertion.
+
+104
+00:07:56,000 --> 00:08:04,000
+This resource, our insertion anomaly in the case, we want to add the name of supplier or its address.
+
+105
+00:08:04,000 --> 00:08:07,000
+We shouldn't do this in hundredths rose.
+
+106
+00:08:07,000 --> 00:08:14,000
+We do this in one place and the reference to the supply is still the same in delivery table in case
+
+107
+00:08:14,000 --> 00:08:19,000
+we want to remove information about delivery but don't want to remove information about supply.
+
+108
+00:08:20,000 --> 00:08:27,000
+We just do so we can do that both from delivery table without losing data from supply table.
+
+109
+00:08:27,000 --> 00:08:28,000
+Isn't this cool?
+
+110
+00:08:29,000 --> 00:08:35,000
+That's why, though, would this anomalous, you need to know what normalization is and its main rules.
+
+111
+00:08:36,000 --> 00:08:42,000
+But before starting to learn normal forms and normalization, we need to learn a little bit more theory
+
+112
+00:08:43,000 --> 00:08:49,000
+because you need to know at least some key concepts from dependencies theory in order you could understand
+
+113
+00:08:49,000 --> 00:08:57,000
+normalization dependency theory is a sub field of database theory, which status, implication and optimization
+
+114
+00:08:57,000 --> 00:09:02,000
+problems related to logical constraints, commonly called dependencies.
+
+115
+00:09:02,000 --> 00:09:10,000
+On that basis, the best known class of such dependencies are functional dependencies, which forms
+
+116
+00:09:10,000 --> 00:09:13,000
+the foundation of keys on database relations.
+
+117
+00:09:13,000 --> 00:09:18,000
+And in this lesson, we are going to review excerpts from dependency theory.
+
+118
+00:09:18,000 --> 00:09:19,000
+Let's start.
+
+119
+00:09:20,000 --> 00:09:26,000
+And as a result, you said one of the main concept in the theory is functional dependency.
+
+120
+00:09:27,000 --> 00:09:34,000
+Financial dependency tells us that if we have two attributes X and Y of some relationship, then wise
+
+121
+00:09:34,000 --> 00:09:45,000
+functional dependence on X if in any moment of time each X value matches, only one y value X is set
+
+122
+00:09:45,000 --> 00:09:47,000
+to functionally determine Y.
+
+123
+00:09:48,000 --> 00:09:54,000
+Functional dependency is a constraint between two sets of attributes in the relation from a database,
+
+124
+00:09:55,000 --> 00:10:03,000
+for example, bus number and last name of the person employee and his corporate email.
+
+125
+00:10:03,000 --> 00:10:10,000
+We can say that there is a functional dependency between these attributes is the determination of functional
+
+126
+00:10:10,000 --> 00:10:17,000
+dependencies is an important part of designing databases in a relational model and in database standardization
+
+127
+00:10:17,000 --> 00:10:19,000
+and generalization.
+
+128
+00:10:19,000 --> 00:10:26,000
+This is important to understand because during the normalization of our tables will investigate functional
+
+129
+00:10:26,000 --> 00:10:32,000
+dependencies between attributes, and it is crucial to identify which attributes that's in mind as the
+
+130
+00:10:32,000 --> 00:10:33,000
+ones.
+
+131
+00:10:34,000 --> 00:10:37,000
+Now, let's understand some more details.
+
+132
+00:10:37,000 --> 00:10:45,000
+Functional dependency between X and Y may be called complete functional dependency and Case Y is determined
+
+133
+00:10:45,000 --> 00:10:47,000
+by all subset of X.
+
+134
+00:10:47,000 --> 00:10:54,000
+And again, I'm trying to simplify these concepts as much as they can, because in cuz I would tell
+
+135
+00:10:54,000 --> 00:10:58,000
+you definition from Wikipedia, it wouldn't bring more sense.
+
+136
+00:10:59,000 --> 00:11:06,000
+For example, imagine that you have subsets of attributes like place of dispatch delivery, destination
+
+137
+00:11:06,000 --> 00:11:08,000
+type of cargo, cargo weight.
+
+138
+00:11:09,000 --> 00:11:12,000
+All these attributes determine price of delivery.
+
+139
+00:11:12,000 --> 00:11:13,000
+I agree.
+
+140
+00:11:14,000 --> 00:11:20,000
+You can easily check this by removing any attribute from the subset and check whether the relationship
+
+141
+00:11:20,000 --> 00:11:28,000
+is still valid because in case of cargo weight from subset of attributes, then the total price of delivery
+
+142
+00:11:28,000 --> 00:11:29,000
+will be completely different.
+
+143
+00:11:30,000 --> 00:11:36,000
+That's how easily I can check and ensure that there is complete functional dependency between set of
+
+144
+00:11:36,000 --> 00:11:38,000
+judgments and another attribute.
+
+145
+00:11:39,000 --> 00:11:39,000
+Does it make sense?
+
+146
+00:11:40,000 --> 00:11:46,000
+And last but not the least important thing I'd like you to know about functional dependency is clear
+
+147
+00:11:46,000 --> 00:11:49,000
+understanding of transitive dependency.
+
+148
+00:11:49,000 --> 00:11:50,000
+Let me explain.
+
+149
+00:11:51,000 --> 00:12:00,000
+Functional dependency X from Y may be called transitive if dependencies between X and Z and Z and Y,
+
+150
+00:12:01,000 --> 00:12:07,000
+but there is no direct dependency between X and Y, and this case dependency will be called transitive.
+
+151
+00:12:08,000 --> 00:12:14,000
+For example, there might be dependency between idea of employee and the DH of office, whereas this
+
+152
+00:12:14,000 --> 00:12:21,000
+employee works and there is another dependency between Officer NI and number of whom is that office.
+
+153
+00:12:22,000 --> 00:12:27,000
+So that means is a dependency between ideal employee and his office.
+
+154
+00:12:27,000 --> 00:12:28,000
+Phone number is transitive.
+
+155
+00:12:29,000 --> 00:12:29,000
+Is it clear?
+
+156
+00:12:31,000 --> 00:12:33,000
+Now, when we know what functional dependence it is.
+
+157
+00:12:33,000 --> 00:12:37,000
+Well, good to proceed with learning of normalization and normal forms.
+
+158
+00:12:38,000 --> 00:12:44,000
+Let's understand first what is normalization that at least normalization is a process of structure.
+
+159
+00:12:44,000 --> 00:12:52,000
+The database usually a relational database in accordance with serious of so-called normal forms in order
+
+160
+00:12:52,000 --> 00:12:56,000
+to reduce data redundancy and improve data integrity.
+
+161
+00:12:57,000 --> 00:13:02,000
+It was first proposed by Andrew Card as a part of his relational model.
+
+162
+00:13:03,000 --> 00:13:06,000
+That the definition of database normalization may sound like this.
+
+163
+00:13:07,000 --> 00:13:13,000
+Naming normalization is grouping and or distribution of attributes between different relationships to
+
+164
+00:13:13,000 --> 00:13:21,000
+eliminate data anomalies during their operations was database guarantee and data integrity and consistency
+
+165
+00:13:22,000 --> 00:13:23,000
+and optimization of DB.
+
+166
+00:13:24,000 --> 00:13:29,000
+In the definition of normalization, we use such term as normal forms.
+
+167
+00:13:30,000 --> 00:13:31,000
+What are normal forms?
+
+168
+00:13:32,000 --> 00:13:39,000
+A normal form is a property of a relationship in the relational data model that describes it from the
+
+169
+00:13:39,000 --> 00:13:45,000
+point of redundancy that can potentially lead to mistakes during the data insertion reading written
+
+170
+00:13:46,000 --> 00:13:47,000
+data deletion.
+
+171
+00:13:48,000 --> 00:13:54,000
+You already know about data anomalies and the other you saw examples based on this.
+
+172
+00:13:54,000 --> 00:13:59,000
+I make a conclusion that you understand our motivation to learn normal forms.
+
+173
+00:14:00,000 --> 00:14:02,000
+There are different normal forms.
+
+174
+00:14:02,000 --> 00:14:04,000
+We can say that three of them.
+
+175
+00:14:04,000 --> 00:14:05,000
+I mean, once.
+
+176
+00:14:06,000 --> 00:14:12,000
+But we also learn to hold an overview of different normal forms in this lesson to help you understand
+
+177
+00:14:12,000 --> 00:14:13,000
+this topic better.
+
+178
+00:14:14,000 --> 00:14:19,000
+We're going to review normal forms from the least normalized to most normalized.
+
+179
+00:14:20,000 --> 00:14:25,000
+In the other based harmonization and normalized form, it is also maybe referred as you, NF.
+
+180
+00:14:26,000 --> 00:14:31,000
+Also known as normalized relation or non first normal form.
+
+181
+00:14:31,000 --> 00:14:38,000
+This is a database data model which does meet any of the conditions of database normalization defined
+
+182
+00:14:38,000 --> 00:14:39,000
+by the relational model.
+
+183
+00:14:40,000 --> 00:14:48,000
+Database systems, which supports a normalized data, is sometimes called non relational or no SQL databases
+
+184
+00:14:48,000 --> 00:14:54,000
+in the relational model and normalized relations can be considered a starting point for a process of
+
+185
+00:14:54,000 --> 00:14:55,000
+normalization.
+
+186
+00:14:56,000 --> 00:15:02,000
+It should not be confused with the normalization when normalization is deliberately compromised for
+
+187
+00:15:02,000 --> 00:15:06,000
+selected tables in relational database normalization.
+
+188
+00:15:06,000 --> 00:15:12,000
+The first form requires initial data to be viewed as relations in database systems.
+
+189
+00:15:12,000 --> 00:15:14,000
+Relations are represented as tables.
+
+190
+00:15:15,000 --> 00:15:19,000
+The relation view implies some constraints on the tables.
+
+191
+00:15:20,000 --> 00:15:25,000
+No duplicates Ross Combs have unique names was in the same table.
+
+192
+00:15:25,000 --> 00:15:30,000
+Each column has data type, which defines allowed values in the column.
+
+193
+00:15:31,000 --> 00:15:34,000
+All rows in table have the same set of columns.
+
+194
+00:15:35,000 --> 00:15:36,000
+As you can see.
+
+195
+00:15:36,000 --> 00:15:40,000
+Most of the requirements are familiar to us and seems to be logical.
+
+196
+00:15:40,000 --> 00:15:46,000
+But from the theoretical point of view, this is just a starting point following normalization, and
+
+197
+00:15:46,000 --> 00:15:50,000
+the requirement is it should be mapped before we start applying even first normal form.
+
+198
+00:15:51,000 --> 00:15:54,000
+You can see an example of a normalized form on the slide.
+
+199
+00:15:55,000 --> 00:16:01,000
+This table represents a relation where transactions column is itself relation value.
+
+200
+00:16:01,000 --> 00:16:08,000
+This is relative relation but doesn't conform to first normal form, which doesn't allow nested relations.
+
+201
+00:16:09,000 --> 00:16:12,000
+The table is therefore a normalized.
+
+202
+00:16:12,000 --> 00:16:15,000
+If this is clear, then let's move on.
+
+203
+00:16:16,000 --> 00:16:19,000
+Let's see it was done in a basic normal form.
+
+204
+00:16:19,000 --> 00:16:23,000
+The first normal form relation is in the first normal form.
+
+205
+00:16:23,000 --> 00:16:32,000
+If and only if, no attribute domain has relations as elements or more informally, that no table column
+
+206
+00:16:32,000 --> 00:16:34,000
+can have tables as values.
+
+207
+00:16:35,000 --> 00:16:41,000
+But this definition tells us that the most relational databases already in the first normal form by
+
+208
+00:16:41,000 --> 00:16:45,000
+default because it is impossible to have table value in the relational database.
+
+209
+00:16:46,000 --> 00:16:50,000
+That's why I like another definition of the first normal form.
+
+210
+00:16:51,000 --> 00:16:58,000
+Relationship is in first normal form if and only if each its attribute is atomic.
+
+211
+00:16:58,000 --> 00:16:59,000
+What does it mean?
+
+212
+00:17:00,000 --> 00:17:01,000
+I told me catching it.
+
+213
+00:17:02,000 --> 00:17:08,000
+This means that in your business, to me and in business logic of application, there is no need to
+
+214
+00:17:08,000 --> 00:17:13,000
+extract on the specific parts of the attribute to perform some operation, was it?
+
+215
+00:17:14,000 --> 00:17:16,000
+Let me explain, is this on the example?
+
+216
+00:17:17,000 --> 00:17:21,000
+Imagine that you have supply a table and each supplier has its legal address.
+
+217
+00:17:22,000 --> 00:17:28,000
+This address contains Country City Street Building Office Number.
+
+218
+00:17:28,000 --> 00:17:35,000
+But what if your application needs to perform operations with suppliers based on their country location?
+
+219
+00:17:36,000 --> 00:17:43,000
+You need to be able to extract all supplies from Russia or all suppliers from India or Ukraine.
+
+220
+00:17:43,000 --> 00:17:47,000
+Or you say how you can do this with this data model.
+
+221
+00:17:48,000 --> 00:17:55,000
+The only way for you to do this is to extract as a whole address, then pass it inside the program and
+
+222
+00:17:55,000 --> 00:17:57,000
+take on the country well.
+
+223
+00:17:57,000 --> 00:18:02,000
+That's why we can say that this table violates the first normal form.
+
+224
+00:18:03,000 --> 00:18:06,000
+Domains are stable, meet requirements of the first normal form.
+
+225
+00:18:07,000 --> 00:18:09,000
+We need to introduce new columns in the table.
+
+226
+00:18:10,000 --> 00:18:16,000
+Let's have separate columns for country city street building and office number.
+
+227
+00:18:16,000 --> 00:18:22,000
+In this case, even when we need to extract suppliers for a specific city, we can do this easily by
+
+228
+00:18:22,000 --> 00:18:25,000
+using city attributes as a search parameter.
+
+229
+00:18:25,000 --> 00:18:30,000
+Now we can say that our table meets the requirements of the first normal form.
+
+230
+00:18:31,000 --> 00:18:34,000
+Now, it is time for the second normal form.
+
+231
+00:18:35,000 --> 00:18:40,000
+Revelation is in second normal form, if it fulfils is a following two requirements.
+
+232
+00:18:41,000 --> 00:18:46,000
+It is in first normal form and it doesn't have any non-prime attribute.
+
+233
+00:18:47,000 --> 00:18:51,000
+It is functioning dependent on any proper subset of any candidate.
+
+234
+00:18:51,000 --> 00:18:59,000
+Key of the relation and non-prime attribute of a relation is an attribute that is not part of any candidate
+
+235
+00:18:59,000 --> 00:19:00,000
+key of their relation.
+
+236
+00:19:01,000 --> 00:19:08,000
+In simple words, you have to store maintains a table that relates only to the current entity, but
+
+237
+00:19:08,000 --> 00:19:09,000
+not another one.
+
+238
+00:19:10,000 --> 00:19:16,000
+All attributes should depend on the whole primary key, especially if this is compound primary.
+
+239
+00:19:16,000 --> 00:19:23,000
+Key attributes should have complete functional dependency was the whole columns in compound key.
+
+240
+00:19:23,000 --> 00:19:26,000
+But not only on its part.
+
+241
+00:19:26,000 --> 00:19:32,000
+This might sound complicated at the beginning, but in real life it is much simpler than you think.
+
+242
+00:19:33,000 --> 00:19:35,000
+Let me show you this one example.
+
+243
+00:19:35,000 --> 00:19:38,000
+I believe it will be easier to understand.
+
+244
+00:19:38,000 --> 00:19:42,000
+Here's a table of items that we sell in our store.
+
+245
+00:19:42,000 --> 00:19:46,000
+We have category neat discount and product name.
+
+246
+00:19:46,000 --> 00:19:52,000
+There is compound primary key that consists from category and date from this table.
+
+247
+00:19:52,000 --> 00:19:58,000
+We can now discount that should be applied to goods from specific category at specific date.
+
+248
+00:19:59,000 --> 00:20:04,000
+I believe that based on my explanation, you already understood what is wrong here.
+
+249
+00:20:04,000 --> 00:20:08,000
+This gown depends only on the product category and date.
+
+250
+00:20:08,000 --> 00:20:14,000
+That said, there is no direct dependency between discount and specific product.
+
+251
+00:20:15,000 --> 00:20:18,000
+Product depends only on the quiet of the primary key.
+
+252
+00:20:19,000 --> 00:20:21,000
+I mean, only on the category.
+
+253
+00:20:21,000 --> 00:20:27,000
+There is a dependency between discount for products from specific categories at a particular date.
+
+254
+00:20:27,000 --> 00:20:33,000
+Does it make sense because in this case, we have data redundancy?
+
+255
+00:20:33,000 --> 00:20:36,000
+So what would be a solution here?
+
+256
+00:20:36,000 --> 00:20:42,000
+The solution here is to make sure that complete functional dependency exists between all attributes
+
+257
+00:20:43,000 --> 00:20:44,000
+and primary key.
+
+258
+00:20:44,000 --> 00:20:51,000
+In our case, product has functional dependency category, but not with category and date.
+
+259
+00:20:52,000 --> 00:20:56,000
+That's why we create two tables in the first table.
+
+260
+00:20:56,000 --> 00:21:00,000
+We are going to have information about discount for category in particular date.
+
+261
+00:21:00,000 --> 00:21:04,000
+And then the second table, we're going to store all products.
+
+262
+00:21:04,000 --> 00:21:08,000
+This will allow us to have cleaner DB architecture.
+
+263
+00:21:09,000 --> 00:21:15,000
+Let's learn certain amount form, and then the basic relation is set to meet certain normal form standards.
+
+264
+00:21:15,000 --> 00:21:22,000
+If all the I think it's function dependent on Sullivan's primary key without any transitive dependencies,
+
+265
+00:21:23,000 --> 00:21:29,000
+then Xenia of the third normal form is to not store data and tables that can be retrieved from other
+
+266
+00:21:29,000 --> 00:21:30,000
+table attributes.
+
+267
+00:21:31,000 --> 00:21:34,000
+Imagine that we have a table of two users at the university.
+
+268
+00:21:34,000 --> 00:21:36,000
+We have such columns.
+
+269
+00:21:36,000 --> 00:21:42,000
+I need less name, title, salary department and phone number.
+
+270
+00:21:42,000 --> 00:21:45,000
+Is this table in the third normal form?
+
+271
+00:21:45,000 --> 00:21:47,000
+I don't think so.
+
+272
+00:21:47,000 --> 00:21:49,000
+Let's try to visualize dependencies here.
+
+273
+00:21:50,000 --> 00:21:56,000
+Salary depends on the title only it doesn't depend on specific person.
+
+274
+00:21:57,000 --> 00:22:04,000
+Specific tutor has its own title and works in concrete department, and they don't have personal work
+
+275
+00:22:04,000 --> 00:22:10,000
+phone numbers you can contact with them using phone in the department.
+
+276
+00:22:10,000 --> 00:22:18,000
+That's why we can say that there are different transitive dependencies, for example, transitive dependency
+
+277
+00:22:18,000 --> 00:22:26,000
+between concrete tutor department where he or she works, and phone number there is transitive dependency
+
+278
+00:22:26,000 --> 00:22:28,000
+between phone number and tutor.
+
+279
+00:22:28,000 --> 00:22:29,000
+Is it clear?
+
+280
+00:22:30,000 --> 00:22:36,000
+To remove all transitive dependencies and make sure that all relations means a certain normal form.
+
+281
+00:22:36,000 --> 00:22:39,000
+Let's split this data between different tables.
+
+282
+00:22:39,000 --> 00:22:46,000
+We need to create three tables to achieve this cuter table was last name, title and deportment.
+
+283
+00:22:46,000 --> 00:22:53,000
+Title table was titled Name Unrelated Salary Department Table was its name and phone.
+
+284
+00:22:53,000 --> 00:22:56,000
+That's it for some of my students.
+
+285
+00:22:56,000 --> 00:22:58,000
+Nothing is changed as a first glance.
+
+286
+00:22:59,000 --> 00:23:05,000
+We just have more tables and the relationships between different tables rather than storing old data
+
+287
+00:23:05,000 --> 00:23:06,000
+in one table in one place.
+
+288
+00:23:07,000 --> 00:23:09,000
+And you need to understand me, correct?
+
+289
+00:23:09,000 --> 00:23:12,000
+Because you can store everything in one table.
+
+290
+00:23:12,000 --> 00:23:14,000
+This is even has its own name.
+
+291
+00:23:15,000 --> 00:23:16,000
+No sequel.
+
+292
+00:23:16,000 --> 00:23:23,000
+Just to let you know that this is also possible, but you would lose advantage is its relational database
+
+293
+00:23:23,000 --> 00:23:24,000
+is all for you.
+
+294
+00:23:24,000 --> 00:23:30,000
+If you opt for relational databases, you need to clearly understand what advantage you expect to get
+
+295
+00:23:30,000 --> 00:23:31,000
+from it.
+
+296
+00:23:31,000 --> 00:23:39,000
+That's why the rule of thumb is to follow normal forms called later realized that certain normal form
+
+297
+00:23:39,000 --> 00:23:46,000
+did not eliminate all undesirable data anomalies and developed a strong aversion to address this in
+
+298
+00:23:46,000 --> 00:23:51,000
+1974, known as voice called normal form.
+
+299
+00:23:51,000 --> 00:23:56,000
+To be honest, yeah, many other normal forms on top of these that we have just discussed.
+
+300
+00:23:57,000 --> 00:24:03,000
+But in my opinion, this three as the most important ones, I'm still going to make a quick overview
+
+301
+00:24:03,000 --> 00:24:05,000
+of other normal forms, at least on the high level.
+
+302
+00:24:06,000 --> 00:24:12,000
+In case you would be interested in more detailed explanation of all other normal forms, we don't just
+
+303
+00:24:12,000 --> 00:24:16,000
+have any question related to normal forms reviewed in this lesson.
+
+304
+00:24:16,000 --> 00:24:21,000
+Please ask me in the comments below this video, and I will be happy to answer you.
+
+305
+00:24:22,000 --> 00:24:27,000
+Elementary Queen Normal fall is a subtle enhancement on certain minimal form.
+
+306
+00:24:27,000 --> 00:24:32,000
+Thus, E K and AV tables are insert normal form by definition.
+
+307
+00:24:33,000 --> 00:24:38,000
+This happens when there is more than one unique compound key, and they overlap.
+
+308
+00:24:39,000 --> 00:24:43,000
+Such cases can, of course, redundant information in the overlapping columns.
+
+309
+00:24:44,000 --> 00:24:52,000
+A table is an elementary key normal form if and only if all its elementary functional dependencies begin
+
+310
+00:24:52,000 --> 00:24:56,000
+at whole keys or and elementary key attributes.
+
+311
+00:24:57,000 --> 00:25:04,000
+Voice called normal form is slightly stronger version of the third normal form if relational schema
+
+312
+00:25:04,000 --> 00:25:10,000
+is in the called normal form zone, all redundancy based on functional dependency has been removed.
+
+313
+00:25:11,000 --> 00:25:14,000
+Also, other types of redundancy may still exist.
+
+314
+00:25:15,000 --> 00:25:22,000
+Force normal form is concerned was a more general type of dependency known as mutually dependency.
+
+315
+00:25:23,000 --> 00:25:31,000
+A table is enforced normal form if and only if, for every one of its non-travel lots of other dependencies.
+
+316
+00:25:31,000 --> 00:25:39,000
+X y x is a super key that is X. This is a candidate key or a superset zero.
+
+317
+00:25:41,000 --> 00:25:47,000
+Essential double normal form for relations is a relational database where the constraints are given
+
+318
+00:25:47,000 --> 00:25:50,000
+by functional dependencies and joint dependencies.
+
+319
+00:25:51,000 --> 00:25:58,000
+It lies strictly between first and fourth and fifth normal for our relations schema is an essential
+
+320
+00:25:58,000 --> 00:26:07,000
+double normal form if and only if it is invoiced called normal form and some component of every explicitly
+
+321
+00:26:07,000 --> 00:26:12,000
+declared during the pendency of the schema is a superkick thief's normal form.
+
+322
+00:26:13,000 --> 00:26:15,000
+Also known as project joined.
+
+323
+00:26:15,000 --> 00:26:22,000
+Normal form is a level of database normalization designed to reduce redundancy in relational databases,
+
+324
+00:26:22,000 --> 00:26:29,000
+recording multivariate facts but isolate and semantically related to multiple relationships.
+
+325
+00:26:29,000 --> 00:26:37,000
+A table is set to be in the fifth normal form if and only if every non-trivial joint dependency in that
+
+326
+00:26:37,000 --> 00:26:40,000
+table is implied by the candidate keys.
+
+327
+00:26:41,000 --> 00:26:49,000
+The main key normal form is a normal form used in database normalization, which requires the database
+
+328
+00:26:49,000 --> 00:26:56,000
+contains no constraints, Aussies and domain constraints and key constraints and domain constraints
+
+329
+00:26:56,000 --> 00:26:59,000
+insofar as a permissible values for a given attribute.
+
+330
+00:27:00,000 --> 00:27:07,000
+While a key constraint specifies is, it attributes that uniquely identify a role in a given table.
+
+331
+00:27:08,000 --> 00:27:15,000
+The new key normal form is achieved when every constraint on the relation is a logical consequence of
+
+332
+00:27:15,000 --> 00:27:21,000
+the definition of keys and the means and enforcing key and the main, the restraints and conditions
+
+333
+00:27:22,000 --> 00:27:24,000
+causes all constraints to be met.
+
+334
+00:27:24,000 --> 00:27:28,000
+Thus, it avoids all non temporal anomalies.
+
+335
+00:27:29,000 --> 00:27:29,000
+Six.
+
+336
+00:27:29,000 --> 00:27:38,000
+Normal form is intended to decompose relation variables to irreducible components, though this may
+
+337
+00:27:38,000 --> 00:27:41,000
+be relatively unimportant for non temporal relation variables.
+
+338
+00:27:42,000 --> 00:27:48,000
+It can be important when dealing with temporal variables or other internal data.
+
+339
+00:27:48,000 --> 00:27:57,000
+A table is in six normal form if and only if it satisfies no non-trivial joint dependencies at all.
+
+340
+00:27:57,000 --> 00:28:05,000
+Where, as before and during dependencies is trivial if and only if at least one of the projections
+
+341
+00:28:05,000 --> 00:28:10,000
+involved is taken over a set of all attributes of the table concerned.
+
+342
+00:28:11,000 --> 00:28:18,000
+As you see from high level overview, it might be not so easy to understand the practical need and value
+
+343
+00:28:18,000 --> 00:28:22,000
+of each of these normal forms to know how to apply.
+
+344
+00:28:22,000 --> 00:28:26,000
+Those probably separate lesson is needed for each.
+
+345
+00:28:26,000 --> 00:28:32,000
+But considering the fact that they are not so popular in comparison with the first three normal forms,
+
+346
+00:28:32,000 --> 00:28:35,000
+probably I will not cover them in detail in this lesson.
+
+347
+00:28:36,000 --> 00:28:43,000
+I strongly recommend you to apply first three normal forms during database architecture and during creation
+
+348
+00:28:43,000 --> 00:28:44,000
+of each table.
+
+349
+00:28:44,000 --> 00:28:50,000
+I might add, means that knowing of all other normal forms by heart is not so critical.
+
+350
+00:28:50,000 --> 00:28:56,000
+On the slide, you can see comparative analysis and the last, but not the least, things that I wanted
+
+351
+00:28:56,000 --> 00:28:59,000
+to discuss with you today is the normalization.
+
+352
+00:29:00,000 --> 00:29:07,000
+No normalization is a strategy used on the previously normalized database to increase performance in
+
+353
+00:29:07,000 --> 00:29:07,000
+computing.
+
+354
+00:29:07,000 --> 00:29:14,000
+The normalization is a process of trying to improve the performance of a database and the expense of
+
+355
+00:29:14,000 --> 00:29:20,000
+losing some light performance by adding redundant corpus of data all by group and later.
+
+356
+00:29:21,000 --> 00:29:27,000
+The normalization difference from a normalized form means that the normalization benefits can only be
+
+357
+00:29:27,000 --> 00:29:32,000
+fully realized on the data model that is otherwise normalized.
+
+358
+00:29:33,000 --> 00:29:35,000
+So how we can improve performance.
+
+359
+00:29:36,000 --> 00:29:43,000
+Imagine that we have multiple tables, we have table with soccer clubs, we have a table with soccer
+
+360
+00:29:43,000 --> 00:29:50,000
+leagues and we have table was match data that should contain information about me, home team and guests.
+
+361
+00:29:52,000 --> 00:29:55,000
+We also saw a lot of other information about teams and matches.
+
+362
+00:29:56,000 --> 00:30:04,000
+Now imagine that to extract much data for the home, the week moments, we need to query suite tables
+
+363
+00:30:04,000 --> 00:30:06,000
+and database for each row.
+
+364
+00:30:06,000 --> 00:30:11,000
+We may have spouses of matches and not only soccer.
+
+365
+00:30:11,000 --> 00:30:18,000
+I simplified the original example a bit, but imagine that you have multiple sports and you have teams
+
+366
+00:30:18,000 --> 00:30:21,000
+and different sports and much more leagues.
+
+367
+00:30:21,000 --> 00:30:25,000
+This is literally crazy amount of data each day.
+
+368
+00:30:25,000 --> 00:30:33,000
+Making Junqueras findings and mappings in different tables may take some time, while it might be not
+
+369
+00:30:33,000 --> 00:30:36,000
+so dramatic while querying a few records.
+
+370
+00:30:36,000 --> 00:30:44,000
+It is different when you query a lot of records, and that is a day we are receiving benefits by certain
+
+371
+00:30:44,000 --> 00:30:47,000
+entities in different tables without any duplication.
+
+372
+00:30:48,000 --> 00:30:55,000
+But when you query Susan's rose and do join requests with different tables, this might take some time
+
+373
+00:30:56,000 --> 00:31:00,000
+and to save time by not comparing other tables to get data you need.
+
+374
+00:31:00,000 --> 00:31:08,000
+We at data redundancy on purpose and understand know how better performance of reading operations is
+
+375
+00:31:08,000 --> 00:31:08,000
+achieved.
+
+376
+00:31:09,000 --> 00:31:17,000
+Imagine you need to read all matches, data in normalized database and you query in different tables
+
+377
+00:31:17,000 --> 00:31:25,000
+and you normalize database, you request all data from one place, then distanza mean a year of generalization.
+
+378
+00:31:26,000 --> 00:31:30,000
+But remember, this is something what should be done super carefully.
+
+379
+00:31:30,000 --> 00:31:37,000
+You need to be sure what benefits you will get from generalization, and it is recommended to be specific
+
+380
+00:31:37,000 --> 00:31:38,000
+in order.
+
+381
+00:31:38,000 --> 00:31:44,000
+You could understand how many seconds you would win in performance after the normalization.
+
+382
+00:31:44,000 --> 00:31:50,000
+I did this several times in my own projects, and I can say that this is a technique that's really worth
+
+383
+00:31:50,000 --> 00:31:53,000
+of your attention if you are going to use a smart.
+
+384
+00:31:54,000 --> 00:31:57,000
+That's all what I wanted to share with you in this lesson.
+
+385
+00:31:57,000 --> 00:32:01,000
+Let's recap what we have learned to date in this lesson.
+
+386
+00:32:01,000 --> 00:32:08,000
+You've learned what data anomalies are we have learned in session update and deletion anomalies.
+
+387
+00:32:09,000 --> 00:32:12,000
+Also, we reviewed the main concept in dependencies theory.
+
+388
+00:32:13,000 --> 00:32:17,000
+Now you know what a complete, unknown, complete functional dependency is.
+
+389
+00:32:18,000 --> 00:32:26,000
+After that, we learned what normalization is on examples of used normal forms and incentives was lesson
+
+390
+00:32:26,000 --> 00:32:27,000
+I explained.
+
+391
+00:32:27,000 --> 00:32:30,000
+What generalization is that?
+
+392
+00:32:30,000 --> 00:32:31,000
+So for this lesson?
+
+393
+00:32:31,000 --> 00:32:32,000
+Thanks a lot for your attention.
+
+394
+00:32:33,000 --> 00:32:35,000
+Have a great day and see you in the next lesson.
+
diff --git a/48 - SQL/001 MySQL-Documentation-about-statements.url b/48 - SQL/001 MySQL-Documentation-about-statements.url
new file mode 100644
index 0000000000000000000000000000000000000000..d47a553961071488e065eb6495539d8d9a2b0ef9
--- /dev/null
+++ b/48 - SQL/001 MySQL-Documentation-about-statements.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://dev.mysql.com/doc/refman/8.0/en/create-view.html
\ No newline at end of file
diff --git a/48 - SQL/001 Query-Examples-that-were-shown-in-the-lesson.url b/48 - SQL/001 Query-Examples-that-were-shown-in-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..5782d087a3b313682fed57bbedd6102afad0f930
--- /dev/null
+++ b/48 - SQL/001 Query-Examples-that-were-shown-in-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/tree/master/sql_queries/ddl
\ No newline at end of file
diff --git a/48 - SQL/001 SQL General Overview & DDL_en.srt b/48 - SQL/001 SQL General Overview & DDL_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..a9944bf27075c50230aca4983f87819f127ead56
--- /dev/null
+++ b/48 - SQL/001 SQL General Overview & DDL_en.srt
@@ -0,0 +1,976 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Kim.
+
+2
+00:00:06,000 --> 00:00:12,000
+Today, we're going to have a very important lesson in the lesson we are going to learn the basics of
+
+3
+00:00:12,000 --> 00:00:13,000
+structured query language.
+
+4
+00:00:14,000 --> 00:00:18,000
+I'm going to explain you what it is and why it is important to know it.
+
+5
+00:00:19,000 --> 00:00:22,000
+The work was databases will start from the very basics.
+
+6
+00:00:23,000 --> 00:00:25,000
+We'll learn what skill is in general.
+
+7
+00:00:26,000 --> 00:00:30,000
+And after that, we'll focus on data, definition, language and skill.
+
+8
+00:00:31,000 --> 00:00:35,000
+Don't worry, we'll not have only one lesson about sequel.
+
+9
+00:00:35,000 --> 00:00:38,000
+Still, there will be other lessons to learn.
+
+10
+00:00:38,000 --> 00:00:44,000
+But today we're going to build a basement for our further learning in the lesson we're going to learn
+
+11
+00:00:44,000 --> 00:00:45,000
+what sequel is.
+
+12
+00:00:45,000 --> 00:00:47,000
+I will explain what sequels have.
+
+13
+00:00:47,000 --> 00:00:48,000
+Languages are.
+
+14
+00:00:49,000 --> 00:00:52,000
+This will give you insights on what we are going to learn in this course.
+
+15
+00:00:53,000 --> 00:00:58,000
+After holding an overview of sequel language, we'll jump to learning of the first sequel.
+
+16
+00:00:58,000 --> 00:01:04,000
+Sub Language will learn data definition language in this video will review different statements with
+
+17
+00:01:04,000 --> 00:01:08,000
+great alter, rename, truncate and drop statements.
+
+18
+00:01:09,000 --> 00:01:16,000
+Also on the real examples you are going to see how we can create these statements and execute them against
+
+19
+00:01:16,000 --> 00:01:17,000
+our database.
+
+20
+00:01:17,000 --> 00:01:18,000
+Enough docs.
+
+21
+00:01:19,000 --> 00:01:22,000
+US start our lesson and to start our lesson.
+
+22
+00:01:22,000 --> 00:01:26,000
+Let's understand what sequel is and what we are going to learn in this course.
+
+23
+00:01:27,000 --> 00:01:29,000
+Sequel stands for structured query language.
+
+24
+00:01:30,000 --> 00:01:36,000
+It is the main specific language used to manage data held in the relational database management system.
+
+25
+00:01:36,000 --> 00:01:42,000
+Sequel was one of the first commercial languages to use anger cause relational model.
+
+26
+00:01:43,000 --> 00:01:50,000
+The model was described in his influential 1970 paper, a relational model of data for large shared
+
+27
+00:01:51,000 --> 00:01:51,000
+data banks.
+
+28
+00:01:52,000 --> 00:02:00,000
+Despite not entirely adhering to the relational model as described by code, it became most widely used.
+
+29
+00:02:00,000 --> 00:02:03,000
+Database language sequel became a standard.
+
+30
+00:02:03,000 --> 00:02:09,000
+Often, the American National Standards Institute in nineteen eighty six and all was the International
+
+31
+00:02:09,000 --> 00:02:13,000
+Organization for Standardization in 1987.
+
+32
+00:02:13,000 --> 00:02:19,000
+And because standardization of sequel wasn't done since its creation defines relational database management
+
+33
+00:02:19,000 --> 00:02:22,000
+systems invented their own differences.
+
+34
+00:02:22,000 --> 00:02:29,000
+Despite the existence of standards, most sequel code requires at least some minor changes before being
+
+35
+00:02:29,000 --> 00:02:31,000
+ported to different database systems.
+
+36
+00:02:32,000 --> 00:02:39,000
+So SQL itself is set of operators that allow us to interact with database management system, query
+
+37
+00:02:39,000 --> 00:02:42,000
+data in it and perform other operations.
+
+38
+00:02:43,000 --> 00:02:49,000
+These different statements and operators informally can be grouped and classified as different sublineages.
+
+39
+00:02:50,000 --> 00:02:58,000
+Ziya Data Definition Language It is a syntax for creating and modifying database objects such as tables,
+
+40
+00:02:58,000 --> 00:03:06,000
+indexes, etc. DDL statements are similar to a computer programming language for defining data structures,
+
+41
+00:03:06,000 --> 00:03:09,000
+especially database schemas.
+
+42
+00:03:09,000 --> 00:03:14,000
+Common examples of these statements include create, alter and draw.
+
+43
+00:03:15,000 --> 00:03:22,000
+Data manipulation language, is this a set of statements that they used for adding deleting dating data
+
+44
+00:03:22,000 --> 00:03:23,000
+in a database?
+
+45
+00:03:23,000 --> 00:03:27,000
+Common examples of these misstatements include select insert.
+
+46
+00:03:27,000 --> 00:03:29,000
+Update Delete.
+
+47
+00:03:30,000 --> 00:03:37,000
+Data control language, it is a syntax that is used to control access to data stored in a database.
+
+48
+00:03:37,000 --> 00:03:42,000
+Examples of this sale include grant and revoke statements.
+
+49
+00:03:43,000 --> 00:03:47,000
+And last but not least siblings, which is transaction control language.
+
+50
+00:03:47,000 --> 00:03:53,000
+This language group statements to manage transactions in databases and one examples of this.
+
+51
+00:03:53,000 --> 00:03:57,000
+It is worth to mention commit, rollback and safe points.
+
+52
+00:03:58,000 --> 00:04:05,000
+Based on this, we can make a conclusion that the scope of sequel includes data query, data manipulation,
+
+53
+00:04:05,000 --> 00:04:13,000
+data definition, data access control, transaction management and managing database objects in our
+
+54
+00:04:13,000 --> 00:04:14,000
+course on real examples.
+
+55
+00:04:14,000 --> 00:04:18,000
+We are going to learn how to work with different groups of statements.
+
+56
+00:04:19,000 --> 00:04:19,000
+OK.
+
+57
+00:04:20,000 --> 00:04:25,000
+I believe that now you understand what a sequel is and what we are going to learn.
+
+58
+00:04:25,000 --> 00:04:32,000
+And as we announced an agenda of this meeting, let's start learning the deal now and we will start
+
+59
+00:04:32,000 --> 00:04:33,000
+from the first statement.
+
+60
+00:04:34,000 --> 00:04:35,000
+It is a great statement.
+
+61
+00:04:36,000 --> 00:04:42,000
+The general structure of statement is the following you write create first.
+
+62
+00:04:42,000 --> 00:04:49,000
+After that, you specify what you want to create, whether it is a database schema to move you index.
+
+63
+00:04:50,000 --> 00:04:56,000
+After that, you put name of the database object that you want to create and optionally you can put
+
+64
+00:04:56,000 --> 00:04:57,000
+different options.
+
+65
+00:04:58,000 --> 00:04:59,000
+Let's review a few queries with you.
+
+66
+00:05:00,000 --> 00:05:03,000
+Degrade database We need to use the following construct.
+
+67
+00:05:04,000 --> 00:05:06,000
+We start from create keywords.
+
+68
+00:05:06,000 --> 00:05:10,000
+After that, we indicate that we want to create a database.
+
+69
+00:05:11,000 --> 00:05:19,000
+And by the way, in my school you can use both options is a create schema or create database.
+
+70
+00:05:19,000 --> 00:05:20,000
+They are similar.
+
+71
+00:05:21,000 --> 00:05:24,000
+After that, we need to specify name of the database.
+
+72
+00:05:24,000 --> 00:05:29,000
+Usually in sequel, we use single quotes for all string values.
+
+73
+00:05:30,000 --> 00:05:33,000
+That's why I put the name of our DB in quotes.
+
+74
+00:05:34,000 --> 00:05:37,000
+Basically, this is enough to create a database.
+
+75
+00:05:38,000 --> 00:05:41,000
+But additionally, we can add more sinks in the statement.
+
+76
+00:05:42,000 --> 00:05:48,000
+We can add a condition to make sure that we wouldn't even try to create a table if it exists already
+
+77
+00:05:49,000 --> 00:05:49,000
+for this.
+
+78
+00:05:49,000 --> 00:05:57,000
+Optionally, we can add, if not exist and the different create options that can be specified separately.
+
+79
+00:05:58,000 --> 00:06:03,000
+For example, you know that sometimes we also want to specify charset and collation.
+
+80
+00:06:03,000 --> 00:06:09,000
+You can write default character set, followed by Charsadda, that you want to use.
+
+81
+00:06:09,000 --> 00:06:15,000
+And after that, you can write code and specify collation that will be used for this charset.
+
+82
+00:06:16,000 --> 00:06:20,000
+Now this is complete query to be executed against database.
+
+83
+00:06:21,000 --> 00:06:26,000
+Let me start sharing my screen to execute this query together with you.
+
+84
+00:06:26,000 --> 00:06:31,000
+I'm going to show you how you can execute cycle queries from my SQL workbench.
+
+85
+00:06:32,000 --> 00:06:37,000
+If you don't have my SQL server installed and also you don't have my SQL workbench in your computer,
+
+86
+00:06:38,000 --> 00:06:44,000
+please refer to the previous classes where we together installed all required applications for my school
+
+87
+00:06:44,000 --> 00:06:46,000
+relational database management system.
+
+88
+00:06:47,000 --> 00:06:52,000
+You can execute any SQL query you wish directly from sequel editor.
+
+89
+00:06:53,000 --> 00:07:00,000
+Just click on this icon that is called Create New SQL tab for executing queries and Knewthat will be
+
+90
+00:07:00,000 --> 00:07:01,000
+opened.
+
+91
+00:07:01,000 --> 00:07:07,000
+Now you can type any query you wish can save time during this video lesson.
+
+92
+00:07:07,000 --> 00:07:12,000
+I already pasted here's a query removed to create a database.
+
+93
+00:07:12,000 --> 00:07:17,000
+Press a pause for a few seconds if you need to times square it in a sequel editor.
+
+94
+00:07:18,000 --> 00:07:24,000
+One more important thing the mansion here is that sequel is not case sensitive.
+
+95
+00:07:24,000 --> 00:07:31,000
+That means that no matter how you would spell create, it would still mean the same.
+
+96
+00:07:31,000 --> 00:07:35,000
+You can write it with capital letters all lowercase.
+
+97
+00:07:35,000 --> 00:07:38,000
+Technically speaking, and doesn't matter at all.
+
+98
+00:07:38,000 --> 00:07:44,000
+But still, there is a common practice to write all sequel key words with capital letters.
+
+99
+00:07:45,000 --> 00:07:49,000
+If you are ready, let's execute the query to execute all commands.
+
+100
+00:07:49,000 --> 00:07:57,000
+Since this SQL file, you have to click this lightning icon if you want to execute on the selected commands.
+
+101
+00:07:57,000 --> 00:08:03,000
+We have to select first SQL instruction, and after that, click on Lightning Icon.
+
+102
+00:08:04,000 --> 00:08:10,000
+And if you want to execute only one statement on the keyboard's cursor, you have to click this icon.
+
+103
+00:08:11,000 --> 00:08:16,000
+I execute query after it has been successfully executed.
+
+104
+00:08:16,000 --> 00:08:21,000
+I click Refresh Icon and I see that new database is created.
+
+105
+00:08:21,000 --> 00:08:28,000
+Let me select this database to make sure that all other queries will be executed against this database.
+
+106
+00:08:29,000 --> 00:08:36,000
+I am going to save each query that will review today with you in a separate file in attachments to the
+
+107
+00:08:36,000 --> 00:08:39,000
+lesson, you will be able to find all these queries.
+
+108
+00:08:40,000 --> 00:08:43,000
+Now, let's learn how we can create table.
+
+109
+00:08:44,000 --> 00:08:50,000
+I believe you already understood the general structure of great query, but still on the slide you can
+
+110
+00:08:50,000 --> 00:08:53,000
+see specifics of create table statement.
+
+111
+00:08:53,000 --> 00:08:57,000
+This query is much more complicated than create database query.
+
+112
+00:08:57,000 --> 00:09:04,000
+We can come up with some different combinations and variations that it will take more than one slides
+
+113
+00:09:04,000 --> 00:09:05,000
+to describe all of them.
+
+114
+00:09:06,000 --> 00:09:09,000
+That's why I would try to share with you.
+
+115
+00:09:09,000 --> 00:09:15,000
+The most general and high level structure of this statement mentions the most important things, in
+
+116
+00:09:15,000 --> 00:09:16,000
+my opinion.
+
+117
+00:09:16,000 --> 00:09:22,000
+In case you would like to know more details, you can always refer to the official documentation.
+
+118
+00:09:23,000 --> 00:09:31,000
+Basically, when you try to create stable followed by table name and after that parentheses, we have
+
+119
+00:09:31,000 --> 00:09:37,000
+to list all columns with their data types specifying size for each field.
+
+120
+00:09:37,000 --> 00:09:46,000
+If needed, we can specify primary key column name and if we need, we can create index by specifying
+
+121
+00:09:46,000 --> 00:09:54,000
+its style column name sorting that might be easier ascendent understanding and its visibility.
+
+122
+00:09:55,000 --> 00:10:01,000
+Just to remind you that it might be visible or not visible in case you're not familiar with indexes
+
+123
+00:10:01,000 --> 00:10:01,000
+and databases.
+
+124
+00:10:02,000 --> 00:10:08,000
+Please make sure you watched the previous lesson in this course about indexes in databases.
+
+125
+00:10:08,000 --> 00:10:16,000
+We reviewed all properties of indexes, any details on the example you can see and after you listed
+
+126
+00:10:16,000 --> 00:10:20,000
+all columns and added necessary properties to columns.
+
+127
+00:10:20,000 --> 00:10:24,000
+We can specify engine type that we want to use for this table.
+
+128
+00:10:25,000 --> 00:10:32,000
+I believe you remember that we can specify charset and collation on different levels, the specified
+
+129
+00:10:32,000 --> 00:10:35,000
+SHAZAD and collation on the table level.
+
+130
+00:10:35,000 --> 00:10:38,000
+You can put these statements at the end of the query.
+
+131
+00:10:38,000 --> 00:10:39,000
+That's it.
+
+132
+00:10:40,000 --> 00:10:43,000
+Let's execute real query against database.
+
+133
+00:10:44,000 --> 00:10:50,000
+Here, an example you can see SQL create statement that will create separate table for us was named
+
+134
+00:10:50,000 --> 00:10:52,000
+best table in this database.
+
+135
+00:10:53,000 --> 00:10:55,000
+Pay attention to a separate database.
+
+136
+00:10:55,000 --> 00:11:02,000
+Name and table name was Dot in case you selected this database in my school workbench.
+
+137
+00:11:02,000 --> 00:11:10,000
+There is no need to specify the full table name to make sure it will be created in the current database.
+
+138
+00:11:11,000 --> 00:11:16,000
+In this case, this declaration is redundant and you can remove it.
+
+139
+00:11:16,000 --> 00:11:18,000
+Result will be the same.
+
+140
+00:11:19,000 --> 00:11:22,000
+Here is a list of attributes that I want to have in my table.
+
+141
+00:11:23,000 --> 00:11:28,000
+Next to an attribute, I specify all properties related to this column.
+
+142
+00:11:29,000 --> 00:11:36,000
+It is a type and not now and all the incremented first name attribute is of type word.
+
+143
+00:11:36,000 --> 00:11:42,000
+Char was maximum lengths of forty five with no default value and so on.
+
+144
+00:11:43,000 --> 00:11:51,000
+Primary key is ID column I create a unique index was name email, unique for email column with ascending
+
+145
+00:11:51,000 --> 00:11:57,000
+order and also I specify engine charset and collation.
+
+146
+00:11:57,000 --> 00:11:58,000
+Is that clear?
+
+147
+00:11:59,000 --> 00:12:05,000
+And even in case you have any questions, you can always ask your questions in comments to the reader,
+
+148
+00:12:05,000 --> 00:12:07,000
+and I will be happy to answer.
+
+149
+00:12:08,000 --> 00:12:13,000
+Let's execute this query and we seize that query has been successfully executed.
+
+150
+00:12:13,000 --> 00:12:17,000
+After we refresh, we seize a test table is created.
+
+151
+00:12:21,000 --> 00:12:25,000
+You already saw how to create index during the creation of the table.
+
+152
+00:12:26,000 --> 00:12:31,000
+But let's imagine that we create a table and we simply forgot to create an index.
+
+153
+00:12:32,000 --> 00:12:34,000
+We still can create index afterwards.
+
+154
+00:12:35,000 --> 00:12:38,000
+Let's learn how to do this on this slide.
+
+155
+00:12:38,000 --> 00:12:42,000
+You can see structure of create in the statement you're in the creation.
+
+156
+00:12:42,000 --> 00:12:46,000
+We need to specify which type of index we would like to create.
+
+157
+00:12:46,000 --> 00:12:51,000
+The difference between these types was covered in the lesson about indexes.
+
+158
+00:12:52,000 --> 00:13:00,000
+You specify index name and on which table and column you would like to create this and this on the slide.
+
+159
+00:13:00,000 --> 00:13:07,000
+You can also notice that there might be different index options, index types, algorithm options and
+
+160
+00:13:07,000 --> 00:13:08,000
+lock options.
+
+161
+00:13:09,000 --> 00:13:12,000
+Let's grade index for our new table.
+
+162
+00:13:12,000 --> 00:13:17,000
+Just for the sake of example, let's create an index for the first name column.
+
+163
+00:13:18,000 --> 00:13:19,000
+I'm here on the screen.
+
+164
+00:13:19,000 --> 00:13:23,000
+You can see a simplified version of Create Index.
+
+165
+00:13:23,000 --> 00:13:30,000
+I specify name of my index table column in this table and index option.
+
+166
+00:13:30,000 --> 00:13:32,000
+Let me ask the this query.
+
+167
+00:13:33,000 --> 00:13:41,000
+We see the query has been executed successfully, but it is obvious that no rows were affected to make
+
+168
+00:13:41,000 --> 00:13:44,000
+sure that we really created the index when needed.
+
+169
+00:13:44,000 --> 00:13:52,000
+I open all the table and on index type I can see as an index was my name that I have just great.
+
+170
+00:13:53,000 --> 00:13:55,000
+That's how easily I can create indexes.
+
+171
+00:13:56,000 --> 00:14:02,000
+Also, index might be added as part of output table instruction, but we are going to use this later
+
+172
+00:14:02,000 --> 00:14:07,000
+in our lesson when we'll start learning of all the statement and details.
+
+173
+00:14:08,000 --> 00:14:15,000
+One of my main goal as a tutor is not just to teach you each possible combination of swearing, but
+
+174
+00:14:15,000 --> 00:14:22,000
+also I have to teach you how to understand the documentation in order you could easily proceed yourself
+
+175
+00:14:22,000 --> 00:14:23,000
+education.
+
+176
+00:14:23,000 --> 00:14:26,000
+The Gazette reviewed few queries already.
+
+177
+00:14:27,000 --> 00:14:33,000
+And for example, if you need to create view via a sequel, you don't need to open this lesson.
+
+178
+00:14:33,000 --> 00:14:39,000
+You can always open the official documentation of specific relational database management system and
+
+179
+00:14:39,000 --> 00:14:40,000
+check the details.
+
+180
+00:14:41,000 --> 00:14:46,000
+For example, now on the screen, you can see documentation page of my school.
+
+181
+00:14:47,000 --> 00:14:53,000
+From this page, you can find general construction of create, view statement and all possible options.
+
+182
+00:14:54,000 --> 00:15:00,000
+We have just reviewed similar ones, and I believe you'll really understand how to read this syntax
+
+183
+00:15:00,000 --> 00:15:01,000
+by analogy.
+
+184
+00:15:02,000 --> 00:15:08,000
+Press a pause for a minute, if needed, or just feel free to explore attachments to the lesson and
+
+185
+00:15:08,000 --> 00:15:12,000
+find this link to the official documentation that I've shared with you.
+
+186
+00:15:13,000 --> 00:15:18,000
+Additionally, if you scroll down a bit, you can also find examples of SQL queries.
+
+187
+00:15:19,000 --> 00:15:24,000
+You can create your own queries from database and your application by analogy.
+
+188
+00:15:25,000 --> 00:15:29,000
+And at the meantime, let's proceed with another examples.
+
+189
+00:15:30,000 --> 00:15:37,000
+Let's learn now such important statements as all the statements we use, all the statements when we
+
+190
+00:15:37,000 --> 00:15:44,000
+need to update the database object, no matter whether we need to update the database or table, we
+
+191
+00:15:44,000 --> 00:15:50,000
+are going to start query with all the keywords as you already know how to use the commendation.
+
+192
+00:15:50,000 --> 00:15:55,000
+I don't see a lot of reasons to go over each alter statement.
+
+193
+00:15:55,000 --> 00:15:57,000
+I mean, I will not damage you now.
+
+194
+00:15:57,000 --> 00:16:04,000
+All possible variations of all of the statements that includes and in columns and column properties
+
+195
+00:16:04,000 --> 00:16:08,000
+change enough charset and collation and lots more.
+
+196
+00:16:08,000 --> 00:16:12,000
+For the sake of the Namma, I will demo only one case was also in table.
+
+197
+00:16:12,000 --> 00:16:18,000
+In order you could understand how it works, let's adjust this table.
+
+198
+00:16:18,000 --> 00:16:26,000
+We are going to add new column after the first name and adjust first name index to change ordering in
+
+199
+00:16:26,000 --> 00:16:28,000
+there from ascending the descending.
+
+200
+00:16:29,000 --> 00:16:37,000
+I write alter table and after that I specifies a full table name, and after that I put instructions
+
+201
+00:16:37,000 --> 00:16:47,000
+related to my table of the I want to add column was name plus name was version, data type and default.
+
+202
+00:16:47,000 --> 00:16:56,000
+No value after first name column to accommodate index, I need to drop existing index first and after
+
+203
+00:16:56,000 --> 00:16:58,000
+that to add new index was descending.
+
+204
+00:16:58,000 --> 00:17:02,000
+Order Drop Command Remove Index.
+
+205
+00:17:03,000 --> 00:17:07,000
+Let me execute this query query is successfully executed.
+
+206
+00:17:08,000 --> 00:17:11,000
+Let's open table now and here is our new column.
+
+207
+00:17:12,000 --> 00:17:14,000
+We can also check our index.
+
+208
+00:17:15,000 --> 00:17:19,000
+We can see that we have to send an order in our index.
+
+209
+00:17:19,000 --> 00:17:23,000
+Basically, that's all what I wanted to share with you regarding all the query.
+
+210
+00:17:24,000 --> 00:17:29,000
+You can rename table using separate statement from data definition language.
+
+211
+00:17:29,000 --> 00:17:30,000
+It is called Renee.
+
+212
+00:17:31,000 --> 00:17:35,000
+We can easily rename our table to test DB.
+
+213
+00:17:36,000 --> 00:17:40,000
+And after refresh, we seize a table name has been changed.
+
+214
+00:17:41,000 --> 00:17:47,000
+One more interesting statement truncate we can create statements that will empty all table.
+
+215
+00:17:48,000 --> 00:17:54,000
+You to add some fake data in it first, for example, let me add just one row in this table.
+
+216
+00:17:55,000 --> 00:17:56,000
+Give me a few seconds.
+
+217
+00:18:07,000 --> 00:18:15,000
+As you see, now, we have some data in the table, and when I try to extract all the rows from table
+
+218
+00:18:15,000 --> 00:18:19,000
+one more time, I see that my role is in place.
+
+219
+00:18:20,000 --> 00:18:27,000
+If you're interested how to perform such basic operations as data insertion inside workbench, please
+
+220
+00:18:27,000 --> 00:18:30,000
+refer to lesson about my skill workbench.
+
+221
+00:18:31,000 --> 00:18:33,000
+Now we can execute the following statement.
+
+222
+00:18:34,000 --> 00:18:36,000
+TRUNCATE test to.
+
+223
+00:18:37,000 --> 00:18:39,000
+It should remove all rows in table.
+
+224
+00:18:40,000 --> 00:18:43,000
+And you can see that all rows have been removed.
+
+225
+00:18:44,000 --> 00:18:45,000
+Let's move on.
+
+226
+00:18:46,000 --> 00:18:53,000
+And the last, but not the listing for today that I'd like to show you is drop statements, we use drop
+
+227
+00:18:53,000 --> 00:18:56,000
+statement when we need to remove database object.
+
+228
+00:18:56,000 --> 00:19:02,000
+For example, if you want to remove a table or database, you have to use drop statement.
+
+229
+00:19:02,000 --> 00:19:05,000
+Let's review example of the nation of our database.
+
+230
+00:19:06,000 --> 00:19:13,000
+The database we have to execute the following query drop database and database name.
+
+231
+00:19:13,000 --> 00:19:17,000
+Everything is simple according to documentation you can add.
+
+232
+00:19:17,000 --> 00:19:22,000
+If exists, check a database only if it is present.
+
+233
+00:19:23,000 --> 00:19:24,000
+That's all for this lesson.
+
+234
+00:19:25,000 --> 00:19:27,000
+Let's recap what we have learned today.
+
+235
+00:19:28,000 --> 00:19:31,000
+We have learned a lot of different sinks in this lesson.
+
+236
+00:19:31,000 --> 00:19:33,000
+Some of them are now.
+
+237
+00:19:33,000 --> 00:19:36,000
+You know what sequel is after this lesson?
+
+238
+00:19:36,000 --> 00:19:38,000
+You know, sequels, some languages.
+
+239
+00:19:38,000 --> 00:19:47,000
+Zaire did the al DML DCL and to see out on real examples, we learned create statements.
+
+240
+00:19:48,000 --> 00:19:55,000
+Also, I explained all to rename, truncate and drop statements after this lesson, you know how to
+
+241
+00:19:55,000 --> 00:19:57,000
+build queries with mansion statements.
+
+242
+00:19:58,000 --> 00:20:00,000
+That's all for this lesson.
+
+243
+00:20:00,000 --> 00:20:02,000
+Thanks you all for your attention.
+
+244
+00:20:02,000 --> 00:20:05,000
+Have a great day and see you in the next lesson.
+
diff --git a/48 - SQL/002 INSERT-statement-documentation.url b/48 - SQL/002 INSERT-statement-documentation.url
new file mode 100644
index 0000000000000000000000000000000000000000..371d678ce8c046881ac9f00c580232af80e04ccf
--- /dev/null
+++ b/48 - SQL/002 INSERT-statement-documentation.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://dev.mysql.com/doc/refman/8.0/en/insert.html
\ No newline at end of file
diff --git a/48 - SQL/002 Query-Examples-that-were-shown-in-the-lesson.url b/48 - SQL/002 Query-Examples-that-were-shown-in-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..d590362f856df78362c862cb5471682887fe0839
--- /dev/null
+++ b/48 - SQL/002 Query-Examples-that-were-shown-in-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/tree/master/sql_queries/dml
\ No newline at end of file
diff --git a/48 - SQL/002 SQL DML - CRUD Operations (SELECT, INSERT, UPDATE, DELETE)_en.srt b/48 - SQL/002 SQL DML - CRUD Operations (SELECT, INSERT, UPDATE, DELETE)_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..199df3df7639e6a34167a071f5a808bcfe2566a7
--- /dev/null
+++ b/48 - SQL/002 SQL DML - CRUD Operations (SELECT, INSERT, UPDATE, DELETE)_en.srt
@@ -0,0 +1,1380 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Tim.
+
+2
+00:00:06,000 --> 00:00:12,000
+Today we're going to learn data manipulation language will learn main statements from Male Group of
+
+3
+00:00:12,000 --> 00:00:13,000
+Sequel.
+
+4
+00:00:13,000 --> 00:00:19,000
+And will review real examples to help you understand how you can apply this knowledge on practice.
+
+5
+00:00:20,000 --> 00:00:27,000
+We'll start our lesson from understanding of select statements will spend a significant amount of power,
+
+6
+00:00:27,000 --> 00:00:34,000
+our lesson learned select statement considering that this is probably the most popular statement that
+
+7
+00:00:34,000 --> 00:00:42,000
+you are going to use it as different variations and options that I believe you should know that includes
+
+8
+00:00:42,000 --> 00:00:44,000
+order by were close.
+
+9
+00:00:44,000 --> 00:00:48,000
+Distinct search by pardon, et cetera.
+
+10
+00:00:48,000 --> 00:00:54,000
+I'm going to explain you different operators and sequels that you can use in your queries.
+
+11
+00:00:55,000 --> 00:00:59,000
+We'll review aggregate functions that are often used with select statements.
+
+12
+00:01:00,000 --> 00:01:06,000
+You're going to learn how to group result of select statement and apply condition on it.
+
+13
+00:01:06,000 --> 00:01:12,000
+And also, we're going to learn and review aussi important statements from your e-mail.
+
+14
+00:01:12,000 --> 00:01:17,000
+You'll see examples was insert, update and delete statements.
+
+15
+00:01:17,000 --> 00:01:19,000
+Let's start our lesson.
+
+16
+00:01:20,000 --> 00:01:28,000
+During your career as an engineer, you're going to hear very often such acronyms as crap it stands
+
+17
+00:01:28,000 --> 00:01:37,000
+for create, read, update, delete in computer programming crowd operations as a full basic operations
+
+18
+00:01:37,000 --> 00:01:38,000
+of persistent storage.
+
+19
+00:01:39,000 --> 00:01:48,000
+Craft is also sometimes used to describe user interface conventions that facilitate viewing, searching
+
+20
+00:01:48,000 --> 00:01:54,000
+and changing information using computer based forms and reports data manipulation.
+
+21
+00:01:54,000 --> 00:02:02,000
+Language describes syntax that will allow you to perform crud operations on the database layer, basically
+
+22
+00:02:03,000 --> 00:02:10,000
+to create, or, in other words, to insert rows in tables to read data from database or, in other
+
+23
+00:02:10,000 --> 00:02:18,000
+words, to select roles that match conditions to update throws and to delete rows that you don't need
+
+24
+00:02:18,000 --> 00:02:19,000
+anymore.
+
+25
+00:02:19,000 --> 00:02:24,000
+And the first statement that I'd like to review with you today is select statement.
+
+26
+00:02:25,000 --> 00:02:29,000
+This is a really important statement that I believe you are going to use very often.
+
+27
+00:02:29,000 --> 00:02:34,000
+That's why I would like to review different variations of the statement on the slide.
+
+28
+00:02:34,000 --> 00:02:38,000
+You can see how select statement is described in my sequel.
+
+29
+00:02:38,000 --> 00:02:39,000
+Official documentation.
+
+30
+00:02:40,000 --> 00:02:44,000
+As you can see, it contains really a lot of different variations.
+
+31
+00:02:45,000 --> 00:02:47,000
+Some of them, we are going to learn in this lesson.
+
+32
+00:02:48,000 --> 00:02:50,000
+Some of them will keep learning and other lessons.
+
+33
+00:02:51,000 --> 00:02:54,000
+Let me show you a simplified version of Select Statement.
+
+34
+00:02:55,000 --> 00:02:59,000
+On this slide, you see a simplified version of select statements.
+
+35
+00:02:59,000 --> 00:03:01,000
+Let's learn it for now.
+
+36
+00:03:01,000 --> 00:03:04,000
+And we are going to learn even more in practice.
+
+37
+00:03:05,000 --> 00:03:10,000
+You can write select, followed by asterisk from and specify table name.
+
+38
+00:03:11,000 --> 00:03:14,000
+Asterisk stands for all attributes.
+
+39
+00:03:14,000 --> 00:03:20,000
+This is like mask that is used to extract all attributes of selected tuple.
+
+40
+00:03:21,000 --> 00:03:25,000
+Next things you can see on this slide is example of search and query.
+
+41
+00:03:26,000 --> 00:03:32,000
+It is worth to say that searching on the database side is plus, rather than extracting onslaught of
+
+42
+00:03:32,000 --> 00:03:35,000
+data and sources in memory of the app.
+
+43
+00:03:36,000 --> 00:03:43,000
+That's why sometimes this query might come in handy, especially when you want to implement pagination.
+
+44
+00:03:43,000 --> 00:03:51,000
+A little bit later, we're going to talk about pagination, so to search items and database site, you
+
+45
+00:03:51,000 --> 00:03:55,000
+still use the same select statement, but you have to add order.
+
+46
+00:03:55,000 --> 00:04:01,000
+By the end of the query, you should specify column that you are going to use for searching.
+
+47
+00:04:02,000 --> 00:04:05,000
+By default, searching is in ascending order.
+
+48
+00:04:06,000 --> 00:04:12,000
+That's why usually you may need sorting order option if you are good with default sorting.
+
+49
+00:04:13,000 --> 00:04:20,000
+But if you want rows to be sorted in descending order, you have to specify this vividly.
+
+50
+00:04:20,000 --> 00:04:25,000
+You can source all the rows by two or more columns if needed.
+
+51
+00:04:26,000 --> 00:04:31,000
+Just list columns that you want to use for certain separate by comma.
+
+52
+00:04:31,000 --> 00:04:38,000
+Like in the example on the slide, you want to search all the rows by field one in descending order
+
+53
+00:04:39,000 --> 00:04:41,000
+and by field two in ascending order.
+
+54
+00:04:42,000 --> 00:04:50,000
+Besides selecting all roles with all fields, you can be more specific, for example, after select
+
+55
+00:04:50,000 --> 00:04:54,000
+keywords, you can least fields that you want to extract.
+
+56
+00:04:55,000 --> 00:04:59,000
+Also, you can put them close and specify select conditions.
+
+57
+00:05:00,000 --> 00:05:08,000
+In this case, we need to select all roles where field one has to be less than 10, and Field two has
+
+58
+00:05:08,000 --> 00:05:17,000
+to be equal to X and believe you are smart enough to understand the type of data query should match
+
+59
+00:05:17,000 --> 00:05:18,000
+was data type of the column.
+
+60
+00:05:19,000 --> 00:05:22,000
+You can use logical conjunction keywords.
+
+61
+00:05:23,000 --> 00:05:29,000
+You can use IZA and or or keywords when you use and do.
+
+62
+00:05:29,000 --> 00:05:38,000
+Conditions will be very in each Stacpoole and only zone is that much of these conditions will be returned.
+
+63
+00:05:38,000 --> 00:05:47,000
+If you use or that means that in case at least one of these conditions is Matt will return zero.
+
+64
+00:05:47,000 --> 00:05:55,000
+These are not the only logical operators a little bit later today in the lesson we are going to review
+
+65
+00:05:55,000 --> 00:05:57,000
+other operators too.
+
+66
+00:05:57,000 --> 00:06:05,000
+But I would say that most of the times you would use either and or or use every single year so far.
+
+67
+00:06:06,000 --> 00:06:12,000
+Remember that even in case you have any questions, you can always write them in the comments to this
+
+68
+00:06:12,000 --> 00:06:13,000
+video.
+
+69
+00:06:14,000 --> 00:06:20,000
+And if this small piece of theory is clear for you, that means we are going to proceed with real examples
+
+70
+00:06:20,000 --> 00:06:23,000
+and learning of you select statements.
+
+71
+00:06:24,000 --> 00:06:28,000
+Now let's execute these statements against data in database.
+
+72
+00:06:29,000 --> 00:06:34,000
+And as usual, I'm going to save all queries that will be used in this lesson.
+
+73
+00:06:34,000 --> 00:06:38,000
+And you will find them in attachments to the lesson.
+
+74
+00:06:38,000 --> 00:06:45,000
+Having the same queries will allow you to run the same queries on your own computer to understand as
+
+75
+00:06:45,000 --> 00:06:46,000
+a topic better.
+
+76
+00:06:47,000 --> 00:06:52,000
+Before we start execute queries, make sure that your previous lessons.
+
+77
+00:06:52,000 --> 00:06:56,000
+You also created user, themore the same as I did.
+
+78
+00:06:56,000 --> 00:07:00,000
+Also pay attention that we already pasted some information here.
+
+79
+00:07:01,000 --> 00:07:09,000
+I just changed the names and emails here to make it look more realistic because to be able to see how
+
+80
+00:07:09,000 --> 00:07:13,000
+select statements work, you have to have some data first.
+
+81
+00:07:13,000 --> 00:07:20,000
+So as you can see, the simplest query is to select all couples from user table, and it looks like
+
+82
+00:07:20,000 --> 00:07:23,000
+this nice and special and great.
+
+83
+00:07:24,000 --> 00:07:32,000
+If you want to extract on the specific fields, you should list them instead of asterisk, like I did
+
+84
+00:07:32,000 --> 00:07:34,000
+here in this particular example.
+
+85
+00:07:34,000 --> 00:07:38,000
+I want to extract on the first name and last name.
+
+86
+00:07:38,000 --> 00:07:43,000
+Let's sort now fills my last name in descending order.
+
+87
+00:07:43,000 --> 00:07:47,000
+And after that, my first name in descending order.
+
+88
+00:07:48,000 --> 00:07:52,000
+That is needed because we already have a few rows with the same last name.
+
+89
+00:07:53,000 --> 00:07:57,000
+Thus, searching only by last name won't be enough.
+
+90
+00:07:58,000 --> 00:08:02,000
+And we have to come up with additional rule for sorting.
+
+91
+00:08:02,000 --> 00:08:08,000
+I add order by keywords and specify columns that I want to use for sorting.
+
+92
+00:08:09,000 --> 00:08:10,000
+Let's execute this query.
+
+93
+00:08:11,000 --> 00:08:18,000
+Now, let's add condition I'd like to extract all rows where a last name is equal to Ivanov.
+
+94
+00:08:19,000 --> 00:08:22,000
+I write very close and specify condition.
+
+95
+00:08:23,000 --> 00:08:29,000
+And after we executed queries, we received only rows that meets our condition.
+
+96
+00:08:29,000 --> 00:08:34,000
+Regarding operators in my school, you can use different operators.
+
+97
+00:08:35,000 --> 00:08:42,000
+As I said, let's discuss operators as a separate topic and little bit later today, but ensured talking
+
+98
+00:08:42,000 --> 00:08:44,000
+about comparative operators.
+
+99
+00:08:44,000 --> 00:08:53,000
+NASA's special you can use more or less more or equal to less or equal to not equal to operators here
+
+100
+00:08:53,000 --> 00:08:53,000
+in condition.
+
+101
+00:08:54,000 --> 00:09:02,000
+One more important scene to show you is this certain keywords, for example, you need to extract all
+
+102
+00:09:02,000 --> 00:09:07,000
+different last names or names from the table without any duplicates.
+
+103
+00:09:07,000 --> 00:09:12,000
+You can use distinct keywords in the attribute to receive all the different values.
+
+104
+00:09:13,000 --> 00:09:19,000
+Like in this example, when we executed the query, we don't receive any duplicated last names.
+
+105
+00:09:19,000 --> 00:09:20,000
+Does it make sense?
+
+106
+00:09:21,000 --> 00:09:28,000
+Now, let's imagine that you forgot what you are looking for and you don't remember the search parameter.
+
+107
+00:09:29,000 --> 00:09:33,000
+But you remember that last name of the user you started from if.
+
+108
+00:09:34,000 --> 00:09:36,000
+How to find what you need.
+
+109
+00:09:36,000 --> 00:09:40,000
+You can search by specified pattern was like.
+
+110
+00:09:40,000 --> 00:09:41,000
+Operator.
+
+111
+00:09:41,000 --> 00:09:48,000
+The operator is used in a where close to search for a specified partner in the column.
+
+112
+00:09:49,000 --> 00:09:55,000
+There are two wild cards often used in conjunction with like operator Z.
+
+113
+00:09:55,000 --> 00:09:59,000
+Person Sign represents zero one or multiple characters.
+
+114
+00:09:59,000 --> 00:10:08,000
+The underscore sign represents one single character in our specific case one we want to find all rows
+
+115
+00:10:08,000 --> 00:10:14,000
+where our last name is started was safe and we don't know the full last name.
+
+116
+00:10:14,000 --> 00:10:16,000
+We need to use person sign.
+
+117
+00:10:17,000 --> 00:10:25,000
+Look at this query by this and telling us that after if there might be a different number of characters,
+
+118
+00:10:25,000 --> 00:10:28,000
+let's execute this first query.
+
+119
+00:10:28,000 --> 00:10:34,000
+And you can see that I have to tap those returns in as a query.
+
+120
+00:10:34,000 --> 00:10:39,000
+I am saying that zero is one character that is followed by me.
+
+121
+00:10:39,000 --> 00:10:45,000
+And after that, we have a different amount of characters, and I don't know how much.
+
+122
+00:10:45,000 --> 00:10:48,000
+Exactly opposite is it clear?
+
+123
+00:10:49,000 --> 00:10:56,000
+That's not what education nation is and what we need to know to support pagination on the database level,
+
+124
+00:10:57,000 --> 00:11:05,000
+pagination is a matter of divided content into discrete pages, thus presenting content in a limited
+
+125
+00:11:06,000 --> 00:11:07,000
+and digestible manner.
+
+126
+00:11:08,000 --> 00:11:16,000
+We will search result page is a typical example of such a search if you downloaded applications that
+
+127
+00:11:16,000 --> 00:11:19,000
+I created for my students, for mobile phones.
+
+128
+00:11:19,000 --> 00:11:20,000
+Learn it.
+
+129
+00:11:20,000 --> 00:11:24,000
+You can find the example of pagination in the history.
+
+130
+00:11:25,000 --> 00:11:33,000
+If you have a lot of tests and certifications passed and you open history inside the app to explore
+
+131
+00:11:33,000 --> 00:11:41,000
+your previous results, you can scroll test results, but not all test results extracted from the database
+
+132
+00:11:41,000 --> 00:11:42,000
+at once.
+
+133
+00:11:43,000 --> 00:11:47,000
+They are loaded in chunks after you scrolled to the lowest record.
+
+134
+00:11:48,000 --> 00:11:51,000
+I extracted records from a database by small chunks.
+
+135
+00:11:52,000 --> 00:11:59,000
+Instead of extracting all of the latest records at once during the stand, imagine that you have 100
+
+136
+00:11:59,000 --> 00:12:05,000
+or even 1000 test results, but you need to check on the few last ones.
+
+137
+00:12:05,000 --> 00:12:13,000
+In this case, is any sense to extract all rows and pass them from the server into the mobile app.
+
+138
+00:12:14,000 --> 00:12:15,000
+Definitely not.
+
+139
+00:12:15,000 --> 00:12:23,000
+That's why you're in the design of our app before we see that we need pagination support here and to
+
+140
+00:12:23,000 --> 00:12:26,000
+be even more specific in mobile apps.
+
+141
+00:12:26,000 --> 00:12:33,000
+This is called Infinite's crawl, and this allows you to scroll content down without any interruption.
+
+142
+00:12:34,000 --> 00:12:40,000
+Infinite scrolling is a functionality allowing users to scroll down a massive amount of information,
+
+143
+00:12:41,000 --> 00:12:48,000
+presenting it in easy to consume chunks and data is uploaded as you reached the lowest records on the
+
+144
+00:12:48,000 --> 00:12:49,000
+screen.
+
+145
+00:12:49,000 --> 00:12:55,000
+I'm sure you're faced with such design while using other apps in database.
+
+146
+00:12:55,000 --> 00:12:59,000
+We can support pagination by extracting specified range of records.
+
+147
+00:12:59,000 --> 00:13:06,000
+With the help of limit operator, the cycle limit close restricts how many rows are returned from a
+
+148
+00:13:06,000 --> 00:13:07,000
+query.
+
+149
+00:13:07,000 --> 00:13:14,000
+The syntax for the limit close represents how many requests you want to retrieve and starting from which
+
+150
+00:13:14,000 --> 00:13:22,000
+record, for example, you can use is a limit close to retrieves a top five users by number of coins.
+
+151
+00:13:23,000 --> 00:13:30,000
+Or you could extract the user starting from the six position to tance sorted by number of coins.
+
+152
+00:13:31,000 --> 00:13:36,000
+Zeleny The class is only compatible with the sequel select statement.
+
+153
+00:13:36,000 --> 00:13:40,000
+You can use a limit class in SQL Update statement.
+
+154
+00:13:40,000 --> 00:13:44,000
+For instance, your limit number must be positive.
+
+155
+00:13:45,000 --> 00:13:48,000
+Say you want to retrieve records from the bottom of the list.
+
+156
+00:13:49,000 --> 00:13:54,000
+You should use a sequel or buy statement to order them in descending order.
+
+157
+00:13:55,000 --> 00:13:57,000
+Then you should use any misstatement.
+
+158
+00:13:58,000 --> 00:14:01,000
+Let's learn how to work with limited statement on practice.
+
+159
+00:14:02,000 --> 00:14:03,000
+We have three requests here.
+
+160
+00:14:04,000 --> 00:14:09,000
+Let me extract two users sorted by email in ascending order.
+
+161
+00:14:09,000 --> 00:14:13,000
+I write Select all from user order by email.
+
+162
+00:14:14,000 --> 00:14:22,000
+Limit to the last four limit two means that it would return me to records only.
+
+163
+00:14:22,000 --> 00:14:27,000
+Let's execute this query, and you can see that where was these?
+
+164
+00:14:27,000 --> 00:14:30,000
+Three and four have been returned.
+
+165
+00:14:31,000 --> 00:14:35,000
+But as we have already discussed, we can specify offset.
+
+166
+00:14:35,000 --> 00:14:37,000
+We add additional parameter.
+
+167
+00:14:37,000 --> 00:14:46,000
+In the second example, offset is one, so we are skipping the first one returned and will return to
+
+168
+00:14:46,000 --> 00:14:48,000
+records after the first one.
+
+169
+00:14:48,000 --> 00:14:49,000
+Does it make sense?
+
+170
+00:14:50,000 --> 00:14:55,000
+So we return to records after keeping the first records?
+
+171
+00:14:55,000 --> 00:14:59,000
+Basically from the second position of our ordering.
+
+172
+00:15:00,000 --> 00:15:07,000
+And now when we execute this query, we have records with I.D. four and one return.
+
+173
+00:15:07,000 --> 00:15:15,000
+Is it clear for you why this is happening and when you implement queries for your app, you can build
+
+174
+00:15:15,000 --> 00:15:16,000
+them accordingly.
+
+175
+00:15:16,000 --> 00:15:23,000
+For example, you can post as a server parameters of pages that you want to retrieve and the number
+
+176
+00:15:23,000 --> 00:15:26,000
+of trackers and paste them into the query.
+
+177
+00:15:27,000 --> 00:15:29,000
+Anyways, this is not a topic of this lesson.
+
+178
+00:15:29,000 --> 00:15:34,000
+It is just a hint we'll learn how to implement this one.
+
+179
+00:15:34,000 --> 00:15:38,000
+We'll start learning of that application development as of now.
+
+180
+00:15:39,000 --> 00:15:43,000
+I want you to know and remember how to work with that statement.
+
+181
+00:15:44,000 --> 00:15:51,000
+The next thing that I'd like to amuse you is Quarians, and no attributes, just a smile or see them
+
+182
+00:15:51,000 --> 00:15:59,000
+then, but still very important, and a lot of my students do the same mistake when they just start
+
+183
+00:15:59,000 --> 00:16:00,000
+to use in school.
+
+184
+00:16:00,000 --> 00:16:08,000
+If you want to select couples that have no value in some of the attributes, you can just use equal
+
+185
+00:16:08,000 --> 00:16:09,000
+operator.
+
+186
+00:16:10,000 --> 00:16:16,000
+Let me show you if you want to select users is that's no value in the f k user all field.
+
+187
+00:16:17,000 --> 00:16:24,000
+You can't just use equal operator because it won't give you results that you expect.
+
+188
+00:16:24,000 --> 00:16:31,000
+Instead, you have to use another keyword you have to use is now or is not now.
+
+189
+00:16:31,000 --> 00:16:34,000
+This is a specific that you should be aware of.
+
+190
+00:16:35,000 --> 00:16:37,000
+So please don't forget about this.
+
+191
+00:16:38,000 --> 00:16:44,000
+We already removed a few examples, and I believe you understand how to work with select statements,
+
+192
+00:16:44,000 --> 00:16:49,000
+but still and those are things that we need to learn is different operators.
+
+193
+00:16:49,000 --> 00:16:53,000
+Definitely, there is no sense to hold them off.
+
+194
+00:16:53,000 --> 00:16:58,000
+Select statements on real data was each possible operator instead.
+
+195
+00:16:58,000 --> 00:17:02,000
+Problem is, there is a sense to learn different operators now.
+
+196
+00:17:02,000 --> 00:17:06,000
+I will also provide you with examples of how to apply different.
+
+197
+00:17:06,000 --> 00:17:12,000
+Operator Let's start from the first group of operators in sequel arithmetic operators.
+
+198
+00:17:13,000 --> 00:17:20,000
+Basically, there is nothing special and no signs that you didn't learn in elementary school.
+
+199
+00:17:20,000 --> 00:17:24,000
+The only exclusion is modular operator problem.
+
+200
+00:17:24,000 --> 00:17:30,000
+But if you are familiar with one of the most popular programming languages, you already knows that
+
+201
+00:17:30,000 --> 00:17:35,000
+usually person sign is used for operations to extract reminder after division.
+
+202
+00:17:36,000 --> 00:17:40,000
+If you need a few more seconds to review examples, please.
+
+203
+00:17:40,000 --> 00:17:41,000
+Grasset boss.
+
+204
+00:17:42,000 --> 00:17:43,000
+Let's continue.
+
+205
+00:17:43,000 --> 00:17:49,000
+Well, that was a group of operators that we are going to review its comparison operators.
+
+206
+00:17:49,000 --> 00:17:57,000
+Most of them are also familiar to you, probably not equal to operator may look like and you one for
+
+207
+00:17:57,000 --> 00:17:58,000
+some students.
+
+208
+00:17:59,000 --> 00:18:07,000
+Basically, the general rule is not equal to operator is written like this, but also in some relational
+
+209
+00:18:07,000 --> 00:18:08,000
+database management systems.
+
+210
+00:18:08,000 --> 00:18:15,000
+It is also possible to use another syntax of note equal to operator that is more similar to one that
+
+211
+00:18:15,000 --> 00:18:17,000
+we use in programming languages.
+
+212
+00:18:18,000 --> 00:18:25,000
+And on this slide, you can find logical operators will read your review to such logical operators as
+
+213
+00:18:25,000 --> 00:18:27,000
+and or lie.
+
+214
+00:18:28,000 --> 00:18:38,000
+But as you can see, some of them look through the table on this slide, grasp if needed, and ask questions
+
+215
+00:18:38,000 --> 00:18:42,000
+in comments to the video in case someone is still not clear here.
+
+216
+00:18:43,000 --> 00:18:50,000
+Now, let's learn aggregate functions again, then we'll use them with select statements.
+
+217
+00:18:50,000 --> 00:18:57,000
+That's why I believe it is better to use them in conjunction with select statements and aggregate function,
+
+218
+00:18:57,000 --> 00:19:06,000
+performs a calculation on a set of values and returns a single value except for count aggregate functions.
+
+219
+00:19:06,000 --> 00:19:08,000
+Ignore null values.
+
+220
+00:19:08,000 --> 00:19:15,000
+Aggregate functions are often used with the group by close of the select statement, and here in the
+
+221
+00:19:15,000 --> 00:19:22,000
+slide, you can see product table examples that I'm going to use for the explanation of the following
+
+222
+00:19:22,000 --> 00:19:23,000
+aggregate functions.
+
+223
+00:19:24,000 --> 00:19:26,000
+Let's start from the learned man and the.
+
+224
+00:19:27,000 --> 00:19:32,000
+Based on the name of these attribute functions, I believe it is easy to understand.
+
+225
+00:19:32,000 --> 00:19:39,000
+The first one returns minimal value in the column, and the second one returns the maximum value in
+
+226
+00:19:39,000 --> 00:19:39,000
+the column.
+
+227
+00:19:40,000 --> 00:19:45,000
+And on the slide, you can see example of queries executed against stable waste products.
+
+228
+00:19:46,000 --> 00:19:49,000
+We extract max and mean price.
+
+229
+00:19:50,000 --> 00:19:52,000
+The next aggregate function is count.
+
+230
+00:19:53,000 --> 00:19:59,000
+The count function returns a number of roles that matches a specified material.
+
+231
+00:19:59,000 --> 00:20:02,000
+You can also find query example on the slide.
+
+232
+00:20:03,000 --> 00:20:07,000
+The average function returns the average value of a number of column.
+
+233
+00:20:08,000 --> 00:20:12,000
+The sum function returns is a total sum of a number.
+
+234
+00:20:12,000 --> 00:20:14,000
+A column is everything clear.
+
+235
+00:20:15,000 --> 00:20:20,000
+Let's learn now group by keywords that are often used together with aggregate functions.
+
+236
+00:20:21,000 --> 00:20:28,000
+Zeiger by statement groups rows that have the same values in the summary rows, it is often used with
+
+237
+00:20:28,000 --> 00:20:29,000
+aggregate functions.
+
+238
+00:20:30,000 --> 00:20:35,000
+The group by statement groups rows that have the same values in the summary rose.
+
+239
+00:20:35,000 --> 00:20:43,000
+It is often used with aggregate functions like count marks mean some average subgroups, the results
+
+240
+00:20:43,000 --> 00:20:45,000
+said by one or more columns.
+
+241
+00:20:45,000 --> 00:20:47,000
+Let's reverse this on real demo.
+
+242
+00:20:48,000 --> 00:20:52,000
+We are going them a group by statement, an example of user table.
+
+243
+00:20:53,000 --> 00:20:57,000
+Let's find the most used a last name among our users.
+
+244
+00:20:58,000 --> 00:21:05,000
+We know that last name in our app is not unique and we want to understand how much users used the same
+
+245
+00:21:05,000 --> 00:21:06,000
+last name.
+
+246
+00:21:06,000 --> 00:21:13,000
+I want select total count of all rows and displays this count as a mount attribute.
+
+247
+00:21:13,000 --> 00:21:20,000
+And also, I want to extract the last name from user table and group results by a last name.
+
+248
+00:21:20,000 --> 00:21:22,000
+That's executed this query.
+
+249
+00:21:22,000 --> 00:21:26,000
+You can see that we have two people with even our last name.
+
+250
+00:21:26,000 --> 00:21:29,000
+And one user with Komarov last name.
+
+251
+00:21:29,000 --> 00:21:30,000
+And then the results.
+
+252
+00:21:30,000 --> 00:21:33,000
+That count has been returned as a mound column.
+
+253
+00:21:34,000 --> 00:21:41,000
+When I wrote this query, I used this error automatically because when you use aggregate functions,
+
+254
+00:21:41,000 --> 00:21:45,000
+you also ones that column would have meaningful name.
+
+255
+00:21:46,000 --> 00:21:47,000
+The syntax is simple.
+
+256
+00:21:47,000 --> 00:21:53,000
+You use ASCII words and specifies a desert attribute name, sequel aliases.
+
+257
+00:21:53,000 --> 00:21:58,000
+I used to give a table or column in the table at temporary name.
+
+258
+00:21:58,000 --> 00:22:05,000
+Aliases are often used to make column names more readable, and A. only exists for the duration of that
+
+259
+00:22:05,000 --> 00:22:11,000
+query and A. is created was SE keywords in my sequel.
+
+260
+00:22:11,000 --> 00:22:16,000
+I usually omit ASCII word and use else straight away.
+
+261
+00:22:17,000 --> 00:22:23,000
+We grouped our result by last name and managed to receive a result like this hobs.
+
+262
+00:22:23,000 --> 00:22:24,000
+This is clear now.
+
+263
+00:22:25,000 --> 00:22:33,000
+Another interesting saying that when you use group by keywords, you can apply condition to groups.
+
+264
+00:22:33,000 --> 00:22:39,000
+To do this, you have to use havant keywords in very, very simplified words.
+
+265
+00:22:39,000 --> 00:22:47,000
+Heaven is the same as where in regular select statements, the difference is that you can't apply where
+
+266
+00:22:47,000 --> 00:22:55,000
+after group by statement, because where is applied for each sample while reviewing each records, whereas
+
+267
+00:22:55,000 --> 00:22:58,000
+haven't may be applied to the group of tables.
+
+268
+00:22:58,000 --> 00:23:06,000
+Once we iterated over records in table workflows introduces a condition on individual rows, having
+
+269
+00:23:06,000 --> 00:23:09,000
+close introduces a condition on aggregations.
+
+270
+00:23:10,000 --> 00:23:13,000
+Does it make sense from human language?
+
+271
+00:23:13,000 --> 00:23:15,000
+We have few more important statements to learn.
+
+272
+00:23:16,000 --> 00:23:18,000
+Let's learn Insert statement.
+
+273
+00:23:18,000 --> 00:23:23,000
+Basically, this statement is used to insert new records in the table.
+
+274
+00:23:23,000 --> 00:23:32,000
+The general structure of insert statement looks like this insert into table name lists of columns where
+
+275
+00:23:32,000 --> 00:23:33,000
+you want to insert values.
+
+276
+00:23:34,000 --> 00:23:38,000
+After that, gross values, keyword and list of values.
+
+277
+00:23:39,000 --> 00:23:45,000
+This is the most common syntax of insert statement, but definitely is a resource a way to make simple
+
+278
+00:23:45,000 --> 00:23:47,000
+things more complex.
+
+279
+00:23:47,000 --> 00:23:48,000
+Just joking.
+
+280
+00:23:49,000 --> 00:23:55,000
+But indeed, there might be different variations of insert statements in attachments to the media.
+
+281
+00:23:55,000 --> 00:24:00,000
+You will find Link to the official documentation about insert statement in my sequel.
+
+282
+00:24:01,000 --> 00:24:07,000
+Xanax thinks that you have to remember about insert statements inserts, but suffice to table where
+
+283
+00:24:07,000 --> 00:24:11,000
+data will be inserted into we can omit column.
+
+284
+00:24:12,000 --> 00:24:19,000
+If a column is amended, each value must be provided if you include in columns that can be listed in
+
+285
+00:24:19,000 --> 00:24:25,000
+any order value specifies the data that you want to insert into the table.
+
+286
+00:24:26,000 --> 00:24:30,000
+Value is required in certain and I'm just throwing into a word.
+
+287
+00:24:30,000 --> 00:24:34,000
+Char Ortex column inserts a single space.
+
+288
+00:24:35,000 --> 00:24:43,000
+All trading spaces are removed from data inserted into large columns, except in strings that contain
+
+289
+00:24:43,000 --> 00:24:44,000
+only spaces.
+
+290
+00:24:44,000 --> 00:24:47,000
+This strings are truncated to a single space.
+
+291
+00:24:49,000 --> 00:24:57,000
+If an insert statement violates a constraint, default or rule, or if it is wrong data type, the statement
+
+292
+00:24:57,000 --> 00:25:01,000
+fails and sequels, server displays and error message.
+
+293
+00:25:02,000 --> 00:25:09,000
+Let's insert a few rows in our user table on the screen, you can see example often search query.
+
+294
+00:25:09,000 --> 00:25:16,000
+We want to insert the records, but tensions at one record has EFCC use a roll value specified.
+
+295
+00:25:17,000 --> 00:25:24,000
+And another record doesn't have the number of values should margins the number of columns we listed.
+
+296
+00:25:25,000 --> 00:25:32,000
+So let's execute the query insert statement or iTunes has a number of how many rows have been impacted.
+
+297
+00:25:32,000 --> 00:25:37,000
+After execution of this query, we impacted two rows in total.
+
+298
+00:25:37,000 --> 00:25:44,000
+Now we can select all rows in our user table and make sure that we inserted two records.
+
+299
+00:25:45,000 --> 00:25:46,000
+Is it clear?
+
+300
+00:25:47,000 --> 00:25:49,000
+If yes, then let's proceed.
+
+301
+00:25:49,000 --> 00:25:54,000
+The update statement is used to modify the existing records.
+
+302
+00:25:54,000 --> 00:25:56,000
+In the table is a general query.
+
+303
+00:25:56,000 --> 00:25:58,000
+Structure looks like this.
+
+304
+00:25:58,000 --> 00:26:00,000
+You start with update keywords.
+
+305
+00:26:01,000 --> 00:26:08,000
+After that specified table name after set keywords, we need to list pairs of column name and related
+
+306
+00:26:08,000 --> 00:26:09,000
+value.
+
+307
+00:26:09,000 --> 00:26:10,000
+Separate was comma.
+
+308
+00:26:11,000 --> 00:26:17,000
+Optionally, we can specify where a close to select rules that we want to accommodate and we can apply
+
+309
+00:26:17,000 --> 00:26:18,000
+limit.
+
+310
+00:26:19,000 --> 00:26:27,000
+The where clause, if given, specifies the conditions, is that identify which rose to update with
+
+311
+00:26:27,000 --> 00:26:28,000
+nowhere close.
+
+312
+00:26:28,000 --> 00:26:33,000
+All the rules are updated if the order by clause is specified.
+
+313
+00:26:34,000 --> 00:26:42,000
+Zero's updated in the order that a specified the limit clause places a limit on the number of rules
+
+314
+00:26:42,000 --> 00:26:43,000
+that can be updated.
+
+315
+00:26:44,000 --> 00:26:50,000
+In our example, we decided to change email for our user and assign new role for him.
+
+316
+00:26:51,000 --> 00:26:58,000
+An example you can see that I assign new value to email attribute and to f k user role attribute.
+
+317
+00:26:59,000 --> 00:27:05,000
+I use very close to update on the one row I have unique identifier in this table.
+
+318
+00:27:05,000 --> 00:27:08,000
+That's why, in workflows, I use ID.
+
+319
+00:27:09,000 --> 00:27:17,000
+Let me execute this squaring I'mnot statement also returns a number of updated throws with successfully
+
+320
+00:27:17,000 --> 00:27:18,000
+updated one rule.
+
+321
+00:27:18,000 --> 00:27:23,000
+We can check our table to make sure that email and foreign key value is changed.
+
+322
+00:27:24,000 --> 00:27:27,000
+If everything is clear, then let's move on.
+
+323
+00:27:28,000 --> 00:27:34,000
+And the last, but not least for today, the lead statement, the statement is used to delete existing
+
+324
+00:27:34,000 --> 00:27:35,000
+records in the table.
+
+325
+00:27:36,000 --> 00:27:43,000
+One important thing to mention here is that in case you would admit where close, you would remove all
+
+326
+00:27:43,000 --> 00:27:45,000
+records from the table.
+
+327
+00:27:45,000 --> 00:27:48,000
+So be very attentive with this query.
+
+328
+00:27:49,000 --> 00:27:54,000
+According to documentation, you can also use or them by and limit the keywords.
+
+329
+00:27:55,000 --> 00:27:58,000
+In that example, we decided to remove one row.
+
+330
+00:27:58,000 --> 00:28:04,000
+Here is how it look like I specified three of the role that I want to remove.
+
+331
+00:28:05,000 --> 00:28:06,000
+Let's execute this query.
+
+332
+00:28:07,000 --> 00:28:13,000
+And you can see in logs that the lead statement also returns number of rows that were impacted with
+
+333
+00:28:13,000 --> 00:28:13,000
+this query.
+
+334
+00:28:14,000 --> 00:28:17,000
+That's all I wanted to share with you in this lesson.
+
+335
+00:28:17,000 --> 00:28:19,000
+Let's recap what we have learned today.
+
+336
+00:28:20,000 --> 00:28:26,000
+In this lesson, we learned select statements, I showed you select statements with different options,
+
+337
+00:28:27,000 --> 00:28:35,000
+including selecting Rose is ordering wear clothes, distinct selection search by pardon Lehman's a number
+
+338
+00:28:35,000 --> 00:28:39,000
+of rose to be returned grouping and the blind condition on groups.
+
+339
+00:28:40,000 --> 00:28:43,000
+You learned different skill operators.
+
+340
+00:28:44,000 --> 00:28:48,000
+Now you know what aggregate functions are and how to work with them.
+
+341
+00:28:48,000 --> 00:28:52,000
+I showed you how to work with others in school.
+
+342
+00:28:52,000 --> 00:28:57,000
+And also, we discussed insert, update and delete statements.
+
+343
+00:28:58,000 --> 00:28:59,000
+That's all for this lesson.
+
+344
+00:29:00,000 --> 00:29:02,000
+Thanks a lot for your attention.
+
+345
+00:29:02,000 --> 00:29:05,000
+Have a great day and see you in the next lesson.
+
diff --git a/48 - SQL/003 JOIN Queries, UNION & Subqueries_en.srt b/48 - SQL/003 JOIN Queries, UNION & Subqueries_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..6c6691a54ce64cc6c7b01b2d2b010871e0754f11
--- /dev/null
+++ b/48 - SQL/003 JOIN Queries, UNION & Subqueries_en.srt
@@ -0,0 +1,732 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:12,000
+In this lesson, we continue to learn sequel and will focus on such important group of queries as joint
+
+3
+00:00:12,000 --> 00:00:13,000
+queries.
+
+4
+00:00:13,000 --> 00:00:19,000
+Considering the fact we are dealing with relational databases very often we have to create joint queries
+
+5
+00:00:19,000 --> 00:00:20,000
+to multiple tables.
+
+6
+00:00:21,000 --> 00:00:26,000
+And also, we are going to review a few more SQL statements that I didn't cover in previous lesson plans
+
+7
+00:00:26,000 --> 00:00:27,000
+that are too small.
+
+8
+00:00:27,000 --> 00:00:33,000
+For a separate lesson in the lesson, we'll put our focus on Jones sequel statements.
+
+9
+00:00:33,000 --> 00:00:42,000
+We're going to review different types of June queries that includes in the left right cross and full
+
+10
+00:00:42,000 --> 00:00:43,000
+order giants.
+
+11
+00:00:43,000 --> 00:00:47,000
+I also prepare examples for each case to review Is you?
+
+12
+00:00:47,000 --> 00:00:53,000
+You will be able to find all examples that will review each lesson in attachments to the veto.
+
+13
+00:00:54,000 --> 00:01:00,000
+Also, we are going to learn union keyword and understand how it works and that sense of the lesson.
+
+14
+00:01:00,000 --> 00:01:04,000
+I will teach you how to construct queries with sub queries.
+
+15
+00:01:05,000 --> 00:01:06,000
+Let's start our lesson.
+
+16
+00:01:07,000 --> 00:01:12,000
+I believe that you already understood that in relational databases, we split data between different
+
+17
+00:01:12,000 --> 00:01:16,000
+tables and apply normalization with data redundancy.
+
+18
+00:01:17,000 --> 00:01:25,000
+This means that to extract data that you need, sometimes you need to execute so-called joint queries
+
+19
+00:01:25,000 --> 00:01:33,000
+against not one, but multiple tables in step joint query commands, columns from one or more tables
+
+20
+00:01:33,000 --> 00:01:42,000
+into a new table and see standard sequels insofar as five types of joy in the left order, right order,
+
+21
+00:01:42,000 --> 00:01:44,000
+food order and cross.
+
+22
+00:01:45,000 --> 00:01:50,000
+Let's learn how these joints look in theory, and after that, we review practice examples.
+
+23
+00:01:51,000 --> 00:01:58,000
+Further examples will be shown considering these two tables user and role that actions at user table
+
+24
+00:01:58,000 --> 00:02:06,000
+contains foreign key to role table and also Xerri users without rules and also the roles that are not
+
+25
+00:02:06,000 --> 00:02:08,000
+assigned to any user.
+
+26
+00:02:09,000 --> 00:02:14,000
+The same tables I have in my school, we created zones during the previous lessons.
+
+27
+00:02:15,000 --> 00:02:19,000
+If you want to repeat queries after me, make sure you have the same tables.
+
+28
+00:02:20,000 --> 00:02:28,000
+The best visualization of Junqueras is these two circles your circles represent the set of records that
+
+29
+00:02:28,000 --> 00:02:29,000
+exist in two tables.
+
+30
+00:02:30,000 --> 00:02:36,000
+Basically, you can see that one table is on the left and another table is on the right.
+
+31
+00:02:36,000 --> 00:02:44,000
+That tangent that these two circles have intersection zigzag in the records is it can be mapped between
+
+32
+00:02:44,000 --> 00:02:45,000
+each other.
+
+33
+00:02:45,000 --> 00:02:54,000
+In simple words, the area inside these two circles is called in a joint area that includes space without
+
+34
+00:02:54,000 --> 00:02:55,000
+intersection.
+
+35
+00:02:55,000 --> 00:02:58,000
+It's called the left and right or the John.
+
+36
+00:02:59,000 --> 00:03:06,000
+Anyway, we're going to review each of you and type on real examples and one by one, and let's start
+
+37
+00:03:06,000 --> 00:03:07,000
+from Injune.
+
+38
+00:03:07,000 --> 00:03:14,000
+You can imagine it as an intersection between two tables and enjoying requires each row in the two joints
+
+39
+00:03:14,000 --> 00:03:17,000
+tables to have matching column values.
+
+40
+00:03:18,000 --> 00:03:25,000
+This is exactly the moment when we'll use our foreign keys to establish connections between tables in
+
+41
+00:03:25,000 --> 00:03:27,000
+a joint creates and result table.
+
+42
+00:03:27,000 --> 00:03:35,000
+By combining column values of two tables based upon the joint predicate, imagine that we have two tables.
+
+43
+00:03:35,000 --> 00:03:37,000
+Z are A and B.
+
+44
+00:03:37,000 --> 00:03:47,000
+Table Zucchero compares each row of a with each row of D to find all pairs of rows that satisfy the
+
+45
+00:03:47,000 --> 00:03:49,000
+joint pretty good ones.
+
+46
+00:03:49,000 --> 00:03:52,000
+A joint project is satisfied by matching non low values.
+
+47
+00:03:52,000 --> 00:03:59,000
+Common values for each pair of rows of A and B are combined into result.
+
+48
+00:03:59,000 --> 00:04:08,000
+Row six specifies two different syntactical ways to express joints z explicit joint notation and same
+
+49
+00:04:08,000 --> 00:04:14,000
+place adjourn notation simply to join notation is no longer considered the best practice.
+
+50
+00:04:14,000 --> 00:04:17,000
+Also, database system still supported.
+
+51
+00:04:17,000 --> 00:04:26,000
+The explicit annotation uses a joint keyword optionally preceded by a keyword to specify the table to
+
+52
+00:04:26,000 --> 00:04:30,000
+join and the only keyword to specify the precursor for the joint.
+
+53
+00:04:31,000 --> 00:04:34,000
+Today, we're going to review a different query examples.
+
+54
+00:04:35,000 --> 00:04:36,000
+I save all of them.
+
+55
+00:04:36,000 --> 00:04:40,000
+You will be able to find those in attachments to this lesson.
+
+56
+00:04:41,000 --> 00:04:45,000
+Let me show you a demo of in our John Kerry just to remind you.
+
+57
+00:04:45,000 --> 00:04:48,000
+Here is how our user table looks like.
+
+58
+00:04:48,000 --> 00:04:50,000
+Not all users have role.
+
+59
+00:04:51,000 --> 00:04:53,000
+And here's how our old table looks like.
+
+60
+00:04:54,000 --> 00:04:59,000
+Zero rules that are not a science None of the users is that clear.
+
+61
+00:05:00,000 --> 00:05:06,000
+Now let's select last name and role name of all users with their roles.
+
+62
+00:05:06,000 --> 00:05:11,000
+We will not take into account users without rows and rows without users.
+
+63
+00:05:12,000 --> 00:05:16,000
+I write select fields that they need and their attention.
+
+64
+00:05:16,000 --> 00:05:21,000
+I use tables on us to specify which fields from each table I want to extract.
+
+65
+00:05:22,000 --> 00:05:26,000
+After that, I write from users table and pay attention.
+
+66
+00:05:26,000 --> 00:05:34,000
+I specify August here you is just a character that seems for me to be good as an alias for this table.
+
+67
+00:05:35,000 --> 00:05:42,000
+Basically, you last name in our query is a reference to the last name field in user table.
+
+68
+00:05:43,000 --> 00:05:43,000
+Is it clear?
+
+69
+00:05:44,000 --> 00:05:52,000
+After that, I right join Kyra, as we discussed, I can admit you, Akiva, and specify tables that
+
+70
+00:05:52,000 --> 00:05:58,000
+I want to join again and ask for old table is specified next to the role table name.
+
+71
+00:05:59,000 --> 00:06:05,000
+And after that, I need to specify what rule will be used for my records in two different tables.
+
+72
+00:06:06,000 --> 00:06:10,000
+That's why I write on key word and specifies the rule.
+
+73
+00:06:11,000 --> 00:06:17,000
+I do field from rule table should match with the f k zero field from user table.
+
+74
+00:06:17,000 --> 00:06:23,000
+If you followed your course and you didn't miss previous lessons, you should remember that f k is a
+
+75
+00:06:23,000 --> 00:06:25,000
+rule is a foreign key.
+
+76
+00:06:26,000 --> 00:06:33,000
+Now, I am sure that this query will return US ballot information that's executable, and we see two
+
+77
+00:06:33,000 --> 00:06:39,000
+rows return on the last name and roll like we requested any questions.
+
+78
+00:06:39,000 --> 00:06:40,000
+So 14.
+
+79
+00:06:40,000 --> 00:06:45,000
+In case of any questions, please read them in comments below this video.
+
+80
+00:06:46,000 --> 00:06:48,000
+Now, let's discuss Order Jones.
+
+81
+00:06:49,000 --> 00:06:57,000
+So how is this author joining verbs, the Jones table three themes each row, even if no awesome marching
+
+82
+00:06:57,000 --> 00:06:58,000
+rule exists.
+
+83
+00:06:58,000 --> 00:07:07,000
+All author joins Subdivide further into left joints, writes joints and full order joints based on which
+
+84
+00:07:07,000 --> 00:07:09,000
+tables throw you would like to retain.
+
+85
+00:07:10,000 --> 00:07:13,000
+How to understand where is that and where is right table?
+
+86
+00:07:14,000 --> 00:07:21,000
+It depends on which side from joint keyword the name is specified as a result of left or the joint or
+
+87
+00:07:21,000 --> 00:07:22,000
+simply left.
+
+88
+00:07:22,000 --> 00:07:24,000
+Join for tables.
+
+89
+00:07:24,000 --> 00:07:32,000
+A and B always contains all rows of the lap table, even if the joint condition doesn't find any metric
+
+90
+00:07:32,000 --> 00:07:33,000
+row in the right table.
+
+91
+00:07:34,000 --> 00:07:41,000
+This means that these are all close matches, zero rows in the right table for a given row in the left
+
+92
+00:07:41,000 --> 00:07:41,000
+table.
+
+93
+00:07:42,000 --> 00:07:49,000
+The joint will still return a row in the result, but with no in each column from the right table and
+
+94
+00:07:49,000 --> 00:07:51,000
+left or the joint returns.
+
+95
+00:07:51,000 --> 00:07:59,000
+All the values from an integer plus all values in the left table that do not match through the right
+
+96
+00:07:59,000 --> 00:08:03,000
+table, including rows, was now well used in Zelinka column.
+
+97
+00:08:04,000 --> 00:08:09,000
+Is it clear the same principle applies to the right auto joint?
+
+98
+00:08:09,000 --> 00:08:16,000
+But in this case, we return all records from inner joint plus all records from right the bill, even
+
+99
+00:08:16,000 --> 00:08:23,000
+if they don't match to any record in left table and the last stop of order, John is full order junk
+
+100
+00:08:24,000 --> 00:08:32,000
+conceptual at full auto joint combines the effect of applying both left and right, or the joints and
+
+101
+00:08:32,000 --> 00:08:37,000
+throws that don't have Malcolm in the table will have no values in the result set.
+
+102
+00:08:38,000 --> 00:08:41,000
+Let's now review these types of joints one real example.
+
+103
+00:08:42,000 --> 00:08:43,000
+Let's start from the left, Joan.
+
+104
+00:08:44,000 --> 00:08:51,000
+Basically, we would take the same queries that we reviewed neurons in the demo and will add left keema.
+
+105
+00:08:52,000 --> 00:08:55,000
+Let's execute it now and see what will be returned.
+
+106
+00:08:56,000 --> 00:09:04,000
+And you can see that we received all last means from our user table that is on the left from joint keyword
+
+107
+00:09:04,000 --> 00:09:08,000
+and for records where any match wasn't found in row table.
+
+108
+00:09:09,000 --> 00:09:13,000
+We just returned now that's called left joint right.
+
+109
+00:09:13,000 --> 00:09:20,000
+June would look opposite way in this case, which on all road names, even if we don't have users assigned
+
+110
+00:09:20,000 --> 00:09:28,000
+to this row because the table is on the right from June Cleaver and this is right joint query, does
+
+111
+00:09:28,000 --> 00:09:29,000
+it make sense?
+
+112
+00:09:30,000 --> 00:09:32,000
+Now, let me show you a question.
+
+113
+00:09:32,000 --> 00:09:38,000
+We just remove credit cards and leave on the John Key take into account.
+
+114
+00:09:38,000 --> 00:09:42,000
+We have four records in user table and four records in Table.
+
+115
+00:09:43,000 --> 00:09:46,000
+We're going to receive in total 16 records.
+
+116
+00:09:46,000 --> 00:09:52,000
+Basically, each records from one table should be mapped was each row from another table.
+
+117
+00:09:53,000 --> 00:09:57,000
+We receive all possible combinations of wrappers from each table.
+
+118
+00:09:57,000 --> 00:10:04,000
+To be honest, this type of query is interesting to know from series side, but probably it has limited
+
+119
+00:10:04,000 --> 00:10:06,000
+areas for use in in business cases.
+
+120
+00:10:06,000 --> 00:10:11,000
+It is rare seeing when you need to find combinations between all records from two tables.
+
+121
+00:10:12,000 --> 00:10:16,000
+And the last but not least type of joint is full order.
+
+122
+00:10:17,000 --> 00:10:20,000
+In my school, it can be implemented with the help of union keyword.
+
+123
+00:10:21,000 --> 00:10:23,000
+What is Union Keyword?
+
+124
+00:10:23,000 --> 00:10:27,000
+It combines two queries in one single query to the database.
+
+125
+00:10:27,000 --> 00:10:32,000
+In our case, we need to combine two queries with two joints left and right.
+
+126
+00:10:32,000 --> 00:10:35,000
+And you can see that I connect to select statements.
+
+127
+00:10:35,000 --> 00:10:43,000
+Was Union Kuvira that's executed this query, and we can see that we received all full records from
+
+128
+00:10:43,000 --> 00:10:49,000
+user table and all four records from the row table, even despite not all the records have mapping.
+
+129
+00:10:50,000 --> 00:10:52,000
+This makes sense homes.
+
+130
+00:10:52,000 --> 00:10:53,000
+It's now with this example.
+
+131
+00:10:53,000 --> 00:10:58,000
+Things become clearer and we also learned how union works.
+
+132
+00:10:59,000 --> 00:11:03,000
+Usually, union is used when you are dealing with some archived data.
+
+133
+00:11:03,000 --> 00:11:11,000
+When you queries a main table and operational or table was archived data regarding joints important
+
+134
+00:11:11,000 --> 00:11:16,000
+things to know that in this way, you can join two and more tables.
+
+135
+00:11:17,000 --> 00:11:20,000
+This will become important when you will come to the homework task.
+
+136
+00:11:21,000 --> 00:11:24,000
+Imagines that you are dealing with many, many relationships.
+
+137
+00:11:24,000 --> 00:11:29,000
+In this case, you have three tables that the disconnect between each other.
+
+138
+00:11:29,000 --> 00:11:31,000
+This will be part of your home desk.
+
+139
+00:11:32,000 --> 00:11:35,000
+I will also provide you with solutions as a home task.
+
+140
+00:11:35,000 --> 00:11:39,000
+But I just want you to solve this task by itself first.
+
+141
+00:11:39,000 --> 00:11:44,000
+The only one more topics that I'd love to discuss with you today is sub queries.
+
+142
+00:11:44,000 --> 00:11:49,000
+This topic is too small for a separate lesson, but still important to know.
+
+143
+00:11:49,000 --> 00:11:51,000
+I want to explain some queries.
+
+144
+00:11:52,000 --> 00:11:56,000
+What if you would like to create condition was the result of another query.
+
+145
+00:11:57,000 --> 00:11:59,000
+You can do so with the help of sub queries.
+
+146
+00:12:00,000 --> 00:12:04,000
+A sub query is a sequel query nested inside a logic query.
+
+147
+00:12:05,000 --> 00:12:12,000
+Sub query is also called and even a query or in there, so that while the statements contained in the
+
+148
+00:12:12,000 --> 00:12:21,000
+sub query is also called an auto query or to select the inner query executes first before its parent
+
+149
+00:12:21,000 --> 00:12:27,000
+query so that the results of an inner query can be passed to the auto query.
+
+150
+00:12:28,000 --> 00:12:33,000
+You can use a sub query in a select insert, delete or update statements.
+
+151
+00:12:33,000 --> 00:12:39,000
+A sub query is usually added within the very close of another SQL select statement.
+
+152
+00:12:39,000 --> 00:12:45,000
+In our particular example, let's imagine that we want to extract users who have value in money column
+
+153
+00:12:45,000 --> 00:12:53,000
+more than average money value across all users before you would be able to execute this kind of query.
+
+154
+00:12:53,000 --> 00:12:56,000
+Let's make small adjustments in our tables.
+
+155
+00:12:56,000 --> 00:13:02,000
+I need to add money column and fill it out with data to make your life easier.
+
+156
+00:13:03,000 --> 00:13:08,000
+I prepared script for you that would add new column and populated with data.
+
+157
+00:13:09,000 --> 00:13:13,000
+I am going to leave the reference to this script in attachments to this lesson.
+
+158
+00:13:14,000 --> 00:13:19,000
+If you follow the course and you have the same structure, script will be executed without problem.
+
+159
+00:13:20,000 --> 00:13:28,000
+Pay attention to the data type of money column 15 mins amount of decimal digits and two means that only
+
+160
+00:13:28,000 --> 00:13:30,000
+two digits after point will be supported.
+
+161
+00:13:30,000 --> 00:13:38,000
+Considering mass around and rules, OK, so once you executed this script, your user table should look
+
+162
+00:13:38,000 --> 00:13:39,000
+like this.
+
+163
+00:13:40,000 --> 00:13:43,000
+Now let me damari you how sub query works.
+
+164
+00:13:44,000 --> 00:13:46,000
+We create regular select statements.
+
+165
+00:13:46,000 --> 00:13:52,000
+We want to receive rows where money is more than average money amount, and that counts of all users.
+
+166
+00:13:53,000 --> 00:13:59,000
+For this, I need to execute this sub query first understands the amount of money that can be used.
+
+167
+00:13:59,000 --> 00:14:03,000
+In my order query, I put Sequeira in parentheses.
+
+168
+00:14:04,000 --> 00:14:05,000
+Let's execute this query.
+
+169
+00:14:06,000 --> 00:14:13,000
+Our money amount was this specific test data will be around five hundred sixty four and we have two
+
+170
+00:14:13,000 --> 00:14:19,000
+rows returns with money amount higher as an average money amount than this.
+
+171
+00:14:19,000 --> 00:14:22,000
+Now you can work with sub queries.
+
+172
+00:14:23,000 --> 00:14:23,000
+That's all.
+
+173
+00:14:23,000 --> 00:14:24,000
+What I wanted to share.
+
+174
+00:14:24,000 --> 00:14:25,000
+Was you in this lesson?
+
+175
+00:14:26,000 --> 00:14:28,000
+Let's recap what we have learned today.
+
+176
+00:14:29,000 --> 00:14:36,000
+This lesson we learned what joints are after that we focus on different joint types moving around in
+
+177
+00:14:36,000 --> 00:14:40,000
+the water, across joints and reviewed SQL queries.
+
+178
+00:14:41,000 --> 00:14:47,000
+Now you know how to work with union keywords, and the answers will have some of you learned how to
+
+179
+00:14:47,000 --> 00:14:48,000
+work with subwoofers.
+
+180
+00:14:49,000 --> 00:14:50,000
+That's all for this lesson.
+
+181
+00:14:50,000 --> 00:14:52,000
+Thanks a lot for your attention.
+
+182
+00:14:52,000 --> 00:14:53,000
+Have a great day.
+
+183
+00:14:54,000 --> 00:14:55,000
+See you next lesson.
+
diff --git a/48 - SQL/003 Query-Examples-that-were-shown-in-the-lesson.url b/48 - SQL/003 Query-Examples-that-were-shown-in-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..4db60962775d412cefaf538c2413f0fa078dc3fd
--- /dev/null
+++ b/48 - SQL/003 Query-Examples-that-were-shown-in-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/tree/master/sql_queries/dml/joins
\ No newline at end of file
diff --git a/48 - SQL/external-links.txt b/48 - SQL/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..72ebd98ca8e0838fb2ed1089ce2e94c86317a9c0
--- /dev/null
+++ b/48 - SQL/external-links.txt
@@ -0,0 +1,15 @@
+
+001 MySQL-Documentation-about-statements
+https://dev.mysql.com/doc/refman/8.0/en/create-view.html
+
+001 Query-Examples-that-were-shown-in-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/tree/master/sql_queries/ddl
+
+002 INSERT-statement-documentation
+https://dev.mysql.com/doc/refman/8.0/en/insert.html
+
+002 Query-Examples-that-were-shown-in-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/tree/master/sql_queries/dml
+
+003 Query-Examples-that-were-shown-in-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/tree/master/sql_queries/dml/joins
diff --git a/49 - Relational Databases (Advanced)/001 Find-folders-with-Views-Triggers-Stored-Procedures-and-Stored-Functions-SQL-query-examples-here.url b/49 - Relational Databases (Advanced)/001 Find-folders-with-Views-Triggers-Stored-Procedures-and-Stored-Functions-SQL-query-examples-here.url
new file mode 100644
index 0000000000000000000000000000000000000000..5782d087a3b313682fed57bbedd6102afad0f930
--- /dev/null
+++ b/49 - Relational Databases (Advanced)/001 Find-folders-with-Views-Triggers-Stored-Procedures-and-Stored-Functions-SQL-query-examples-here.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/tree/master/sql_queries/ddl
\ No newline at end of file
diff --git a/49 - Relational Databases (Advanced)/001 Views, Triggers, Stored Procedures & Functions_en.srt b/49 - Relational Databases (Advanced)/001 Views, Triggers, Stored Procedures & Functions_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..4cd0f14ca7956e5366008e61b1e2e0d8cf8c6d93
--- /dev/null
+++ b/49 - Relational Databases (Advanced)/001 Views, Triggers, Stored Procedures & Functions_en.srt
@@ -0,0 +1,1548 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:11,000
+And this last one, we're going to learn some new concepts in a relational databases.
+
+3
+00:00:11,000 --> 00:00:16,000
+I would explain what use triggers, stored procedures and stored functions are.
+
+4
+00:00:16,000 --> 00:00:23,000
+Also, you will understand why we need them and how to work with them on practice, because today will
+
+5
+00:00:23,000 --> 00:00:24,000
+have practical part, too.
+
+6
+00:00:25,000 --> 00:00:27,000
+So be prepared for interesting lesson.
+
+7
+00:00:28,000 --> 00:00:30,000
+We are going to go over each topic.
+
+8
+00:00:30,000 --> 00:00:37,000
+One by one and one will focus on practical examples of use triggers, stored procedures and storage
+
+9
+00:00:37,000 --> 00:00:37,000
+functions.
+
+10
+00:00:38,000 --> 00:00:44,000
+I'm going also to explain just some new syntax features like, for example, single line and multi line
+
+11
+00:00:44,000 --> 00:00:47,000
+commonsensical session variables.
+
+12
+00:00:47,000 --> 00:00:53,000
+Also, I'll show you how you can change the limiter between SQL statements in my signal.
+
+13
+00:00:53,000 --> 00:00:55,000
+Let's start our lesson.
+
+14
+00:00:55,000 --> 00:00:59,000
+And the first thing that I'd like to review with you in this video is viewed.
+
+15
+00:01:00,000 --> 00:01:03,000
+Let's understand first what is viewed in databases.
+
+16
+00:01:04,000 --> 00:01:06,000
+We use virtual tables.
+
+17
+00:01:06,000 --> 00:01:10,000
+There are only a structure and contain no data.
+
+18
+00:01:10,000 --> 00:01:15,000
+Their purpose is to allow a user to see a subset of the actual data.
+
+19
+00:01:16,000 --> 00:01:20,000
+You can consist of a subset of one or more tables.
+
+20
+00:01:20,000 --> 00:01:25,000
+What might be the reasons for creating and use zero might be different reasons.
+
+21
+00:01:26,000 --> 00:01:28,000
+Among the advantages of using the use, it is worse.
+
+22
+00:01:28,000 --> 00:01:31,000
+Dimension restricts the view of a table.
+
+23
+00:01:32,000 --> 00:01:39,000
+For example, you can create a view that contains not all fields, but only some of them that don't
+
+24
+00:01:39,000 --> 00:01:40,000
+have any sensitive data.
+
+25
+00:01:41,000 --> 00:01:48,000
+So you can hide some of columns in tables in larger organizations where many developers may be working
+
+26
+00:01:48,000 --> 00:01:49,000
+on a project.
+
+27
+00:01:49,000 --> 00:01:54,000
+We use allowed developers to access unused data they need.
+
+28
+00:01:55,000 --> 00:02:03,000
+June two or more tables and show it as one object to use it instead of constantly right in June, Junqueras,
+
+29
+00:02:03,000 --> 00:02:11,000
+you can create value for most often joins and lets user to watch the whole attributes as one database
+
+30
+00:02:11,000 --> 00:02:11,000
+object.
+
+31
+00:02:12,000 --> 00:02:19,000
+This also simplify life of developers, restricts the access of a table so that nobody can insert zeros
+
+32
+00:02:19,000 --> 00:02:23,000
+into the table is every single year so far.
+
+33
+00:02:23,000 --> 00:02:30,000
+Let's look at examples who you watched previous lessons because in this lesson, we're going to use
+
+34
+00:02:30,000 --> 00:02:33,000
+tables that were created during the course.
+
+35
+00:02:33,000 --> 00:02:37,000
+We're going to create value with you and configure it for our needs.
+
+36
+00:02:38,000 --> 00:02:44,000
+We'll create a view from my school workbench, I'm going to show you sequel queries it will create for
+
+37
+00:02:44,000 --> 00:02:52,000
+you, for us just to remind you, we have two tables here user table and roll table here.
+
+38
+00:02:52,000 --> 00:02:58,000
+How's it look like this great view with user email and droll name?
+
+39
+00:02:58,000 --> 00:03:04,000
+Because this is a dataset I use most often in my app urines and log in.
+
+40
+00:03:04,000 --> 00:03:10,000
+I use user email and also I need to understand user role to use this information for further interaction
+
+41
+00:03:10,000 --> 00:03:12,000
+inside our app.
+
+42
+00:03:12,000 --> 00:03:19,000
+That's why it might be a good year for me to create this view and simplify life of developers to let
+
+43
+00:03:19,000 --> 00:03:19,000
+them.
+
+44
+00:03:19,000 --> 00:03:23,000
+Where is this for you directly instead of creation on Junqueras?
+
+45
+00:03:24,000 --> 00:03:29,000
+And I believe you understood that this is a simple example was two tables only.
+
+46
+00:03:29,000 --> 00:03:37,000
+But in real life, you might create tables that use junk, whereas the five or even more tables, we
+
+47
+00:03:37,000 --> 00:03:44,000
+are going to start simple and let's create this view for two attributes from the tables.
+
+48
+00:03:45,000 --> 00:03:50,000
+The grades have you in my school workbench, I can click on the Create View icon.
+
+49
+00:03:50,000 --> 00:03:57,000
+Technically speaking, my school workbench just help us was one learn or create you statement and after
+
+50
+00:03:57,000 --> 00:04:01,000
+--, we need to specify sequel query for all of you.
+
+51
+00:04:02,000 --> 00:04:06,000
+I click Apply button and I execute this query.
+
+52
+00:04:06,000 --> 00:04:12,000
+Now the great I love you and you can find it here and the use in my school workbench.
+
+53
+00:04:13,000 --> 00:04:20,000
+Basically, you can perform select operations against this view is the same as you do against a table
+
+54
+00:04:21,000 --> 00:04:22,000
+in select statement.
+
+55
+00:04:22,000 --> 00:04:24,000
+You just use your name.
+
+56
+00:04:25,000 --> 00:04:27,000
+Let me now update our regional tables.
+
+57
+00:04:28,000 --> 00:04:33,000
+For example, let's paste one more record in user table was role assigned.
+
+58
+00:04:36,000 --> 00:04:42,000
+One rule is that it lets execute, select all query to our view one more time.
+
+59
+00:04:43,000 --> 00:04:45,000
+And you can see that view is also updated.
+
+60
+00:04:46,000 --> 00:04:47,000
+Isn't that cool?
+
+61
+00:04:48,000 --> 00:04:50,000
+And you don't need to constantly read joint statements.
+
+62
+00:04:51,000 --> 00:04:55,000
+Pay attention that I can't add new rules here in view.
+
+63
+00:04:55,000 --> 00:05:00,000
+So as we discussed, we often use views for select statements.
+
+64
+00:05:01,000 --> 00:05:03,000
+That's all what I wanted to share with you regarding the use.
+
+65
+00:05:04,000 --> 00:05:05,000
+Is it clear?
+
+66
+00:05:06,000 --> 00:05:12,000
+Even in the case you have any questions, please add them in comments below this video, and I will
+
+67
+00:05:12,000 --> 00:05:13,000
+be happy to answer.
+
+68
+00:05:14,000 --> 00:05:16,000
+Let's proceed with a new topic.
+
+69
+00:05:17,000 --> 00:05:24,000
+That's what triggers are and how we can use them, and trigger is a set of instructions that are automatically
+
+70
+00:05:24,000 --> 00:05:30,000
+activated in response to a specific event occurred on a table in the database.
+
+71
+00:05:30,000 --> 00:05:34,000
+The trigger is always associated with a particular table.
+
+72
+00:05:34,000 --> 00:05:39,000
+If the table is deleted, all the associated triggers are also deleted automatically.
+
+73
+00:05:40,000 --> 00:05:49,000
+The trigger is invoked either before or after the following event insert when a euro is inserted hamdard
+
+74
+00:05:49,000 --> 00:05:51,000
+when an existing row is updated.
+
+75
+00:05:51,000 --> 00:05:54,000
+Delete when the row is deleted.
+
+76
+00:05:54,000 --> 00:05:58,000
+When you submit for execution and insert, update or delete statement.
+
+77
+00:05:59,000 --> 00:06:05,000
+Zero Relational Database Management System FAS as a corresponding trigger, always remember is that
+
+78
+00:06:05,000 --> 00:06:11,000
+it can be two triggers with similar action time and event for one table.
+
+79
+00:06:12,000 --> 00:06:20,000
+For example, we can't have two before update triggers for a table, but we can have before update and
+
+80
+00:06:20,000 --> 00:06:28,000
+before insert trigger or before and after they trigger, let's review the structure of the Create Trigger
+
+81
+00:06:28,000 --> 00:06:34,000
+statement we write Great trigger first trigger name should be unique.
+
+82
+00:06:34,000 --> 00:06:40,000
+After that, we specify, was a trigger should be activated before or after some event occurs.
+
+83
+00:06:41,000 --> 00:06:45,000
+Then we need to specify on which event we want to activate.
+
+84
+00:06:45,000 --> 00:06:51,000
+Our instructions is insert the date or the lead in which table.
+
+85
+00:06:51,000 --> 00:06:54,000
+After that, we can specify for each role.
+
+86
+00:06:55,000 --> 00:06:57,000
+This specifies a role level trigger.
+
+87
+00:06:58,000 --> 00:07:02,000
+For example, the trigger will be executed for each role being affected.
+
+88
+00:07:03,000 --> 00:07:05,000
+We can add trigger order.
+
+89
+00:07:05,000 --> 00:07:12,000
+This option might be useful if we have chain of triggers and we need to control that order.
+
+90
+00:07:12,000 --> 00:07:19,000
+And after all this, we need to describe trigger body that is exactly a set of instructions that are
+
+91
+00:07:19,000 --> 00:07:20,000
+needed to be executed.
+
+92
+00:07:21,000 --> 00:07:22,000
+Is everything clear?
+
+93
+00:07:22,000 --> 00:07:27,000
+Let's look at our practical demo and create one trigger as an example.
+
+94
+00:07:28,000 --> 00:07:35,000
+We are going to come up with some imaginary business case, imagine before inserting new actors in user
+
+95
+00:07:35,000 --> 00:07:35,000
+table.
+
+96
+00:07:35,000 --> 00:07:42,000
+We want to check that in case there is no well specified for foreign key F-k user role, fields should
+
+97
+00:07:42,000 --> 00:07:44,000
+be populated in this valley.
+
+98
+00:07:44,000 --> 00:07:44,000
+Six.
+
+99
+00:07:45,000 --> 00:07:49,000
+Yes, I know that for such purpose, we can set up default value for field.
+
+100
+00:07:50,000 --> 00:07:56,000
+But I want you to focus on the syntax right now, and I just want to present your syntax as simple as
+
+101
+00:07:56,000 --> 00:08:00,000
+possible without overcomplicate and business logic.
+
+102
+00:08:00,000 --> 00:08:08,000
+So attention to the syntax and my comments as we go, there is one more syntax specifics.
+
+103
+00:08:09,000 --> 00:08:13,000
+You can see that I specified another the name of the double ampersand.
+
+104
+00:08:14,000 --> 00:08:22,000
+Usually, we use a semicolon to separate those statements when writing SQL statements and MySQL client
+
+105
+00:08:22,000 --> 00:08:29,000
+program such as My SQL Revenge uses limited to separate statements and execute each statement separately.
+
+106
+00:08:30,000 --> 00:08:38,000
+However, for example, a stored procedure or trigger consists of multiple statements separated by semicolon,
+
+107
+00:08:38,000 --> 00:08:45,000
+and it will use my SQL workbench to define a trigger like in this case that contains semicolon characters.
+
+108
+00:08:46,000 --> 00:08:52,000
+The most equal client program will not treat the whole stored procedure, create statement or the whole
+
+109
+00:08:52,000 --> 00:08:58,000
+trigger create statement as a single statement, but many statements.
+
+110
+00:08:59,000 --> 00:09:05,000
+Therefore, we must really finds that the limiter temporarily so that we can pause the whole trigger
+
+111
+00:09:05,000 --> 00:09:08,000
+description to the server as a single statement.
+
+112
+00:09:09,000 --> 00:09:13,000
+That's why I said You didn't DeMatha at the beginning of this statement.
+
+113
+00:09:13,000 --> 00:09:17,000
+Andrew Chan it back to default at the end of the statement.
+
+114
+00:09:18,000 --> 00:09:23,000
+Execute multiple statements which can place trigger body between Begin and and keywords.
+
+115
+00:09:24,000 --> 00:09:28,000
+Basically, you can put here I'm a date insert delete statements.
+
+116
+00:09:28,000 --> 00:09:32,000
+You can address those statements to any table you wish.
+
+117
+00:09:32,000 --> 00:09:41,000
+And also, you can make conditions like I do here, I write, if followed by a predicate, some expressions,
+
+118
+00:09:41,000 --> 00:09:43,000
+a three chance is a true or false.
+
+119
+00:09:43,000 --> 00:09:49,000
+In this particular case, before inserting new value, I verifies its new value as it is going to be
+
+120
+00:09:49,000 --> 00:09:53,000
+inserted is not within the trigger body.
+
+121
+00:09:53,000 --> 00:09:56,000
+We can refer to columns in the subject table.
+
+122
+00:09:57,000 --> 00:10:02,000
+That is the table associated with the trigger by using the aliases.
+
+123
+00:10:02,000 --> 00:10:11,000
+Old and new art and column name refers to column often exists in the road before it is updated or deleted.
+
+124
+00:10:12,000 --> 00:10:19,000
+You and column the very first is a column often, you know, to be inserted or an existing row after
+
+125
+00:10:19,000 --> 00:10:20,000
+it is updated.
+
+126
+00:10:20,000 --> 00:10:21,000
+Does it make sense?
+
+127
+00:10:22,000 --> 00:10:28,000
+In the East Block, we can write any statements we wish, considering that we override the limit, that
+
+128
+00:10:28,000 --> 00:10:35,000
+we can use semicolon here to separate statements between each other at the end of the statement, I
+
+129
+00:10:35,000 --> 00:10:37,000
+should specify and if?
+
+130
+00:10:38,000 --> 00:10:44,000
+Once I declared all statements and about it, I should close triggered by what it was and the keyword.
+
+131
+00:10:45,000 --> 00:10:49,000
+And as we already discussed, I want to return the limits back to the fold.
+
+132
+00:10:50,000 --> 00:10:51,000
+Let's execute the statement.
+
+133
+00:10:52,000 --> 00:10:58,000
+And I see that query has been executed successfully and trigger is created.
+
+134
+00:10:59,000 --> 00:11:04,000
+You can check all existing triggers and this is where my SQL workbench do mouse.
+
+135
+00:11:04,000 --> 00:11:08,000
+Right click on the table and select out a table.
+
+136
+00:11:09,000 --> 00:11:14,000
+And on the three year tab, you can find all existing triggers to delete trigger.
+
+137
+00:11:14,000 --> 00:11:18,000
+You can click Mouse, right click and select Delete Trigger.
+
+138
+00:11:19,000 --> 00:11:25,000
+You can move the order of triggers here if you have multiple triggers, duplicate triggers, if needed,
+
+139
+00:11:25,000 --> 00:11:25,000
+and so on.
+
+140
+00:11:26,000 --> 00:11:28,000
+Let's see how trigger works.
+
+141
+00:11:29,000 --> 00:11:34,000
+So I add new records and deliberately leaving F-k user role at any time.
+
+142
+00:11:35,000 --> 00:11:43,000
+Let me apply changes and after changes applied, you can see that six has been added by default.
+
+143
+00:11:43,000 --> 00:11:51,000
+So before insertion, my triggers set the value to zero records is that I was about to act and only
+
+144
+00:11:51,000 --> 00:11:56,000
+after that insertion happened and I received a result like this.
+
+145
+00:11:57,000 --> 00:12:03,000
+In conclusion of triggers discussion, it is worth to mention some drawbacks of using triggers.
+
+146
+00:12:04,000 --> 00:12:08,000
+The main problem with triggers are they are completely global.
+
+147
+00:12:08,000 --> 00:12:16,000
+If you create a trigger to react on insertion event, that means that this rule will be applied to any
+
+148
+00:12:16,000 --> 00:12:19,000
+kind of insertion event without possibility.
+
+149
+00:12:19,000 --> 00:12:24,000
+Make an exclusion, at least sometimes logic on that the base layer.
+
+150
+00:12:24,000 --> 00:12:32,000
+Remember that creating triggers on the database layer you want your logic, the specific database and
+
+151
+00:12:32,000 --> 00:12:36,000
+then some degree detach your business logic from your app.
+
+152
+00:12:37,000 --> 00:12:44,000
+While triggers not always contain business rules and may be important piece in supporting of data consistency
+
+153
+00:12:44,000 --> 00:12:44,000
+database.
+
+154
+00:12:45,000 --> 00:12:51,000
+This is not always the case, and in case you make decisions, migrate to another database management
+
+155
+00:12:51,000 --> 00:12:52,000
+system.
+
+156
+00:12:52,000 --> 00:12:56,000
+It may become a pain to not lose any important operation.
+
+157
+00:12:56,000 --> 00:12:59,000
+Already scrapped and triggers triggers.
+
+158
+00:12:59,000 --> 00:13:02,000
+I still see by saying this.
+
+159
+00:13:02,000 --> 00:13:09,000
+I mean that it is easy to forget that there until they hurt you with unintended and very mysterious
+
+160
+00:13:09,000 --> 00:13:10,000
+consequences.
+
+161
+00:13:11,000 --> 00:13:14,000
+All this doesn't mean that you should never use triggers.
+
+162
+00:13:14,000 --> 00:13:21,000
+You just need to be aware of about this potential impact and use triggers carefully and wisely.
+
+163
+00:13:22,000 --> 00:13:25,000
+If everything is clear, let's move on.
+
+164
+00:13:26,000 --> 00:13:28,000
+Now, let's talk about stored procedures.
+
+165
+00:13:29,000 --> 00:13:32,000
+Let's learn what are they and how to work with them.
+
+166
+00:13:33,000 --> 00:13:37,000
+The start of procedure is a prepared sequel code is that you can see.
+
+167
+00:13:37,000 --> 00:13:40,000
+So the court can be reused over and over again.
+
+168
+00:13:41,000 --> 00:13:49,000
+So if you have an equal query that you write over and over again, save it as a stored procedure and
+
+169
+00:13:49,000 --> 00:13:51,000
+then just call it to execute it.
+
+170
+00:13:52,000 --> 00:13:59,000
+You can also put parameters to this procedure so that the procedure can act based on the parameter values
+
+171
+00:13:59,000 --> 00:14:00,000
+is at a sparse.
+
+172
+00:14:01,000 --> 00:14:05,000
+So what advantages of storage procedures performance?
+
+173
+00:14:06,000 --> 00:14:13,000
+The SQL server stored procedure when executed for the first time, creates a plan and stores it in the
+
+174
+00:14:13,000 --> 00:14:18,000
+buffer pool so that plan can be reused when it executes next time.
+
+175
+00:14:19,000 --> 00:14:25,000
+Reusable storage procedures can be executed by multiple users or multiple client applications without
+
+176
+00:14:25,000 --> 00:14:27,000
+the need of writing the code again.
+
+177
+00:14:28,000 --> 00:14:30,000
+It can be easily modified.
+
+178
+00:14:30,000 --> 00:14:37,000
+We can easily modify the code inside the stored procedure without the need to restart or deploying the
+
+179
+00:14:37,000 --> 00:14:39,000
+application security.
+
+180
+00:14:40,000 --> 00:14:45,000
+Stored procedures reduce this threat by eliminating direct access to the tables.
+
+181
+00:14:46,000 --> 00:14:53,000
+We can also encrypt the storage procedures while creating them so that source code and signs are stored.
+
+182
+00:14:53,000 --> 00:14:54,000
+Procedures not visible.
+
+183
+00:14:55,000 --> 00:14:57,000
+Reduced network traffic.
+
+184
+00:14:58,000 --> 00:15:04,000
+One When we use stored procedures instead of writing SQL queries as the application level only has a
+
+185
+00:15:04,000 --> 00:15:08,000
+procedure, name is passed over the network instead of the whole cycle code.
+
+186
+00:15:09,000 --> 00:15:13,000
+In of procedures, we can pass in and out parameters.
+
+187
+00:15:14,000 --> 00:15:18,000
+There are three types of parameters that we can pass and start procedures.
+
+188
+00:15:18,000 --> 00:15:27,000
+They are in, out and in, out in is an input only parameters which provide values to the storage procedure.
+
+189
+00:15:28,000 --> 00:15:31,000
+In addition, the value of in parameter is protected.
+
+190
+00:15:32,000 --> 00:15:39,000
+It means that even if you change the value of the parameter inside the stored procedure, its original
+
+191
+00:15:39,000 --> 00:15:43,000
+value is unchanged after the procedure ends.
+
+192
+00:15:44,000 --> 00:15:52,000
+In other words, the third procedure only works on the copy of in parameter and in parameter processing
+
+193
+00:15:52,000 --> 00:15:52,000
+value.
+
+194
+00:15:52,000 --> 00:15:59,000
+In the procedure, the procedure might modify the value, but the modification is not visible to the
+
+195
+00:15:59,000 --> 00:16:02,000
+caller when the procedure returns.
+
+196
+00:16:03,000 --> 00:16:10,000
+Out is output only parameters, which return values from this procedure, there's a Call-In program,
+
+197
+00:16:11,000 --> 00:16:18,000
+the value of an out parameter can be changed inside the stored procedure, and its new value is passed
+
+198
+00:16:18,000 --> 00:16:25,000
+back to IT program an out parameter processing value from the procedure back to the collar.
+
+199
+00:16:25,000 --> 00:16:31,000
+Its initial value is not within the procedure and its value is usable to the collar.
+
+200
+00:16:31,000 --> 00:16:34,000
+Was the procedure a chance you now?
+
+201
+00:16:34,000 --> 00:16:42,000
+It is an input and output parameters which provides values to and returns values from the stored procedure.
+
+202
+00:16:43,000 --> 00:16:46,000
+This is a combination of in and out parameters.
+
+203
+00:16:46,000 --> 00:16:53,000
+It means that the Coghlin program may cost the argument, and the stored procedure can modify the invalid
+
+204
+00:16:53,000 --> 00:17:00,000
+parameter and pass the new value back to the Collins program and out parameter is initialized by the
+
+205
+00:17:00,000 --> 00:17:07,000
+collar can be modified by the procedure, and any change made by the procedure is visible to the caller.
+
+206
+00:17:08,000 --> 00:17:16,000
+Once the procedure returns for each out or in that parameter, boss a user defined variable in the call
+
+207
+00:17:16,000 --> 00:17:23,000
+statement that involves the procedure so that you can obtain its value once the procedure returns.
+
+208
+00:17:23,000 --> 00:17:30,000
+If you are calling the procedure from within and not the stored procedure function, you can also pass
+
+209
+00:17:30,000 --> 00:17:35,000
+a routine parameter or local routine variable as an out or an out parameter.
+
+210
+00:17:36,000 --> 00:17:42,000
+If you are calling the procedure from within a trigger, you can also pass new column name as an out
+
+211
+00:17:42,000 --> 00:17:44,000
+or in that parameter.
+
+212
+00:17:44,000 --> 00:17:50,000
+The parameter leased and close was in parentheses must always be present.
+
+213
+00:17:50,000 --> 00:17:57,000
+If there are no parameters and empty parameters, at least should be used, parameter names are not
+
+214
+00:17:57,000 --> 00:17:58,000
+case sensitive.
+
+215
+00:17:59,000 --> 00:18:04,000
+Each parameter is an in parameter by default to specify otherwise for a parameter.
+
+216
+00:18:04,000 --> 00:18:08,000
+Use the keywords out or in out before the parameter name.
+
+217
+00:18:09,000 --> 00:18:15,000
+Don't worry if you are not feeling confident about understanding of different parameter types, we are
+
+218
+00:18:15,000 --> 00:18:21,000
+going to have them soon and it will be easier to understand was examples if you understood the theory
+
+219
+00:18:21,000 --> 00:18:24,000
+of stored procedures and why we need them.
+
+220
+00:18:24,000 --> 00:18:26,000
+Let's hold a demo.
+
+221
+00:18:27,000 --> 00:18:29,000
+Let's create a simple procedure.
+
+222
+00:18:29,000 --> 00:18:32,000
+Our procedure will select the user by email.
+
+223
+00:18:32,000 --> 00:18:36,000
+You already know why I set different animals are in my school query.
+
+224
+00:18:37,000 --> 00:18:40,000
+The reason is the same as an example with triggers.
+
+225
+00:18:41,000 --> 00:18:43,000
+Here's an example was in parameter.
+
+226
+00:18:44,000 --> 00:18:51,000
+Important thing to remember Bear tensions at the name of the parameter and name of column in where clause
+
+227
+00:18:51,000 --> 00:18:52,000
+should be different.
+
+228
+00:18:52,000 --> 00:18:59,000
+You know, the server would understand where you referred the parameter and where you refer to the column.
+
+229
+00:19:00,000 --> 00:19:06,000
+After that, I right begin keywords and after that go start procedure body.
+
+230
+00:19:06,000 --> 00:19:08,000
+Well, we can specify our instructions.
+
+231
+00:19:09,000 --> 00:19:11,000
+One procedure body is finished.
+
+232
+00:19:11,000 --> 00:19:13,000
+We use and keywords.
+
+233
+00:19:16,000 --> 00:19:24,000
+Now we can easily execute this stored procedure with the help of coal keywords and possibly the email
+
+234
+00:19:24,000 --> 00:19:28,000
+parameter in case we wouldn't pass email parameter.
+
+235
+00:19:28,000 --> 00:19:33,000
+We would see error that would tell us about wrong number of parameters.
+
+236
+00:19:34,000 --> 00:19:38,000
+And here is record with the correct email has been returned.
+
+237
+00:19:38,000 --> 00:19:41,000
+Do understand how to create stored procedure and how to call it.
+
+238
+00:19:42,000 --> 00:19:48,000
+As you can see, there is nothing complex in this, but probably a few questions still in the eye at
+
+239
+00:19:48,000 --> 00:19:51,000
+how the work was out and in parameters.
+
+240
+00:19:51,000 --> 00:19:52,000
+Correct.
+
+241
+00:19:53,000 --> 00:19:53,000
+As I promised you.
+
+242
+00:19:54,000 --> 00:19:57,000
+Let me show a practical example with these types of parameters.
+
+243
+00:19:58,000 --> 00:20:04,000
+Let's create procedure now that will return us average amount of money in our parameter.
+
+244
+00:20:04,000 --> 00:20:08,000
+As you can see, I vividly specifies that this is out parameter.
+
+245
+00:20:09,000 --> 00:20:17,000
+And after that inside procedure, I use into key words to stores the result into the out parameter.
+
+246
+00:20:18,000 --> 00:20:18,000
+Is that clear?
+
+247
+00:20:19,000 --> 00:20:21,000
+You should be familiar with this query.
+
+248
+00:20:22,000 --> 00:20:25,000
+This is aggregate functions that you reviewed in a separate lesson.
+
+249
+00:20:26,000 --> 00:20:32,000
+So in case you want to learn more about average and aggregate functions, feel free to review previous
+
+250
+00:20:32,000 --> 00:20:36,000
+lessons in the same way we create this stored procedure.
+
+251
+00:20:37,000 --> 00:20:43,000
+And now let's learn what is different during the invocation of this stored procedure when we call our
+
+252
+00:20:43,000 --> 00:20:44,000
+stored procedure.
+
+253
+00:20:45,000 --> 00:20:53,000
+We pass so-called session variable as a parameter to receive returns value because we need that reference
+
+254
+00:20:53,000 --> 00:20:56,000
+to the variable to retrieve a result of a storage procedure.
+
+255
+00:20:56,000 --> 00:21:04,000
+Execution A session variable is a user defined variables that starts was at sine doesn't require declaration
+
+256
+00:21:05,000 --> 00:21:12,000
+can be used in any SQL query or statement non-visible to other sessions and exists until the end of
+
+257
+00:21:12,000 --> 00:21:13,000
+the current session.
+
+258
+00:21:14,000 --> 00:21:19,000
+And after that, we can refer to this variable to get the value that was recorded into it.
+
+259
+00:21:20,000 --> 00:21:23,000
+I use simple select statement Does it make sense?
+
+260
+00:21:24,000 --> 00:21:26,000
+Is it not clear now home?
+
+261
+00:21:26,000 --> 00:21:27,000
+That was this example.
+
+262
+00:21:27,000 --> 00:21:30,000
+It is not clear how to use our parameter.
+
+263
+00:21:31,000 --> 00:21:34,000
+It looks like I have one more parameter type to show.
+
+264
+00:21:35,000 --> 00:21:37,000
+Let me show you example of in-out parameter.
+
+265
+00:21:38,000 --> 00:21:42,000
+In this example, we are going to implement counter stored procedure.
+
+266
+00:21:43,000 --> 00:21:49,000
+This procedure will take input parameter, will increase it by the specified amount and will return
+
+267
+00:21:49,000 --> 00:21:54,000
+as a value in the body of our stored procedure will incremento account.
+
+268
+00:21:55,000 --> 00:21:56,000
+That's it.
+
+269
+00:21:57,000 --> 00:22:04,000
+Let's look how we work with this kind of stored procedures and declare a session variable and initialize
+
+270
+00:22:04,000 --> 00:22:05,000
+it with some value.
+
+271
+00:22:06,000 --> 00:22:12,000
+After that, I call my stored procedure a few times by passing the same session variable and incremental
+
+272
+00:22:12,000 --> 00:22:12,000
+value.
+
+273
+00:22:13,000 --> 00:22:18,000
+After all this, I can read my session variable to find that it was incremented.
+
+274
+00:22:19,000 --> 00:22:25,000
+That proves that the state of our counter session variable was modified multiple times is every single
+
+275
+00:22:25,000 --> 00:22:26,000
+year.
+
+276
+00:22:26,000 --> 00:22:33,000
+And by the way, I have never shown you before how to request comments in my school robberies is just
+
+277
+00:22:33,000 --> 00:22:38,000
+below neat in this the different types of comments that you can use in my school.
+
+278
+00:22:39,000 --> 00:22:42,000
+First kind of comments that you can see here is double dash.
+
+279
+00:22:42,000 --> 00:22:45,000
+The comments must be at the end of a line.
+
+280
+00:22:45,000 --> 00:22:49,000
+Your SQL statement was a line break off the list.
+
+281
+00:22:49,000 --> 00:22:56,000
+Mazeltov comment and can only span a single line was in your school statement and must be at the end
+
+282
+00:22:56,000 --> 00:22:57,000
+of the line.
+
+283
+00:22:58,000 --> 00:23:01,000
+Another type of comment is similar to the previous one.
+
+284
+00:23:01,000 --> 00:23:06,000
+Just one more syntax of a single line comment started with a no sign.
+
+285
+00:23:07,000 --> 00:23:10,000
+Also, you can use Mutula in common in multi-line comment.
+
+286
+00:23:10,000 --> 00:23:14,000
+You should specify where a comment is started and where it is finished.
+
+287
+00:23:15,000 --> 00:23:22,000
+I'm not showing you how to alter and drop stored procedures because it is similar to dropping and altering
+
+288
+00:23:22,000 --> 00:23:24,000
+other database objects.
+
+289
+00:23:24,000 --> 00:23:28,000
+Just click mouse rightly constraint procedure that you are interested in.
+
+290
+00:23:29,000 --> 00:23:32,000
+Well, that it's regarding this example.
+
+291
+00:23:33,000 --> 00:23:38,000
+And now let's talk about functions and understand how they're different from stored procedures.
+
+292
+00:23:39,000 --> 00:23:45,000
+A function in my school is a program that is used to perform an action such as complex calculations,
+
+293
+00:23:46,000 --> 00:23:49,000
+for example, and returns the result of an action as a value.
+
+294
+00:23:50,000 --> 00:23:52,000
+Does it look like something similar to you?
+
+295
+00:23:53,000 --> 00:23:55,000
+Something what we have just discussed.
+
+296
+00:23:56,000 --> 00:24:01,000
+You are not the only one who wants to understand the difference between stored procedure and functions
+
+297
+00:24:01,000 --> 00:24:01,000
+and sequel.
+
+298
+00:24:02,000 --> 00:24:06,000
+Wait for a minute, and I will explain in detail what exactly the difference is.
+
+299
+00:24:07,000 --> 00:24:10,000
+There are two types of functions available in my sequel.
+
+300
+00:24:11,000 --> 00:24:15,000
+They are system defined functions and user defined functions.
+
+301
+00:24:16,000 --> 00:24:22,000
+We'll discuss system defined functions and a separate lesson, the function, which is defined by a
+
+302
+00:24:22,000 --> 00:24:25,000
+user, is called a user defined function.
+
+303
+00:24:26,000 --> 00:24:33,000
+My skill user defined functions may or may not have parameters at the optional, but it always returns
+
+304
+00:24:33,000 --> 00:24:35,000
+a single value that is mandatory.
+
+305
+00:24:36,000 --> 00:24:42,000
+The returned value which is returned by then my single function can be often an invalid.
+
+306
+00:24:42,000 --> 00:24:45,000
+My SQL data type regarding parameters and function.
+
+307
+00:24:46,000 --> 00:24:48,000
+Hammerson is much single isn't stored procedures.
+
+308
+00:24:49,000 --> 00:24:56,000
+You don't have different types of parameters like E out or announce all parameters and functions registered
+
+309
+00:24:56,000 --> 00:24:57,000
+as any parameters.
+
+310
+00:24:58,000 --> 00:25:02,000
+Now let's review high level syntax of great function statement.
+
+311
+00:25:02,000 --> 00:25:07,000
+First of all, specifies the name of the search function that you want to create after create function
+
+312
+00:25:07,000 --> 00:25:08,000
+keywords.
+
+313
+00:25:09,000 --> 00:25:15,000
+Secondly, list all parameters of the storage function inside the parentheses, followed by the function
+
+314
+00:25:15,000 --> 00:25:15,000
+name.
+
+315
+00:25:16,000 --> 00:25:21,000
+And as we have discussed by default, all parameters are the end parameters.
+
+316
+00:25:21,000 --> 00:25:30,000
+We can't specify in, out or in that modifies the parameters such centered specifies the data type of
+
+317
+00:25:30,000 --> 00:25:35,000
+the return value in the returns statement, which can be an invalid my school data type.
+
+318
+00:25:36,000 --> 00:25:44,000
+Force specify if a function is deterministic or not, using such deterministic keyword and deterministic
+
+319
+00:25:44,000 --> 00:25:50,000
+function always returns the same result for the same input parameters, whereas a non deterministic
+
+320
+00:25:50,000 --> 00:25:54,000
+function returns different results for the same input parameters.
+
+321
+00:25:55,000 --> 00:26:02,000
+If you don't use deterministic or not deterministic, my cycle uses are not deterministic option by
+
+322
+00:26:02,000 --> 00:26:10,000
+default, fifths rides are caught in the body of the storage function in the begin and block inside
+
+323
+00:26:10,000 --> 00:26:10,000
+them.
+
+324
+00:26:10,000 --> 00:26:11,000
+What is section?
+
+325
+00:26:11,000 --> 00:26:14,000
+You need to specify at least one return statement.
+
+326
+00:26:14,000 --> 00:26:20,000
+Zero chance statements returns a value to the call and programs when there was a written statement is
+
+327
+00:26:20,000 --> 00:26:21,000
+reached.
+
+328
+00:26:21,000 --> 00:26:25,000
+Six Kusum of the storage function is terminated immediately.
+
+329
+00:26:26,000 --> 00:26:31,000
+Let's look at the demo of functions now and after that will somes a difference.
+
+330
+00:26:31,000 --> 00:26:31,000
+A step.
+
+331
+00:26:32,000 --> 00:26:38,000
+And now example, let's create a function that can identify user status based on the amount of money
+
+332
+00:26:38,000 --> 00:26:40,000
+he or she has.
+
+333
+00:26:40,000 --> 00:26:43,000
+The function will take money as method argument.
+
+334
+00:26:43,000 --> 00:26:46,000
+It will return the value of virtual data type.
+
+335
+00:26:47,000 --> 00:26:49,000
+This is deterministic function.
+
+336
+00:26:50,000 --> 00:26:56,000
+We declare a variable and dependent on the amount of money we initialize this variable with one or another
+
+337
+00:26:56,000 --> 00:26:56,000
+value.
+
+338
+00:26:57,000 --> 00:27:04,000
+And at the end of the function body, when returns of value is ever seen clear here, please press a
+
+339
+00:27:04,000 --> 00:27:07,000
+pause if you want to look at all lines more thoroughly.
+
+340
+00:27:08,000 --> 00:27:12,000
+We executed this SQL statement and we have a function created.
+
+341
+00:27:13,000 --> 00:27:20,000
+You can easily list and review all functions that exist in the database, like this show function status
+
+342
+00:27:21,000 --> 00:27:22,000
+and specifies the database.
+
+343
+00:27:23,000 --> 00:27:27,000
+We can see that in our database, only one function is declared so far.
+
+344
+00:27:28,000 --> 00:27:29,000
+Let's invoke it now.
+
+345
+00:27:30,000 --> 00:27:36,000
+And you can already find one more difference between search function and storage procedure different
+
+346
+00:27:36,000 --> 00:27:43,000
+from a stored procedure, you can use a stored function in SQL statements wherever an expression is
+
+347
+00:27:43,000 --> 00:27:44,000
+used.
+
+348
+00:27:44,000 --> 00:27:49,000
+This helps improve the readability and mental ability of the procedural code.
+
+349
+00:27:50,000 --> 00:27:57,000
+In our example, I want to extract last name of user management and get the result of my function for
+
+350
+00:27:57,000 --> 00:27:57,000
+each record.
+
+351
+00:27:58,000 --> 00:28:02,000
+You can see that I invoke function here and post-money value to it.
+
+352
+00:28:03,000 --> 00:28:04,000
+Let's see what we'll get.
+
+353
+00:28:05,000 --> 00:28:09,000
+And you can see that as a result, we get what we expected.
+
+354
+00:28:09,000 --> 00:28:15,000
+Function has been applied to each record and returns us correct status for each user.
+
+355
+00:28:15,000 --> 00:28:16,000
+Then the stent.
+
+356
+00:28:16,000 --> 00:28:19,000
+Now how to create and execute function.
+
+357
+00:28:19,000 --> 00:28:21,000
+If yes, Zenith is great.
+
+358
+00:28:22,000 --> 00:28:28,000
+Now, when you saw functions and stored procedures, let's summarize what the difference is between
+
+359
+00:28:28,000 --> 00:28:28,000
+them.
+
+360
+00:28:29,000 --> 00:28:33,000
+There are numerous differences between storage procedures and storage functions.
+
+361
+00:28:34,000 --> 00:28:34,000
+That's true.
+
+362
+00:28:34,000 --> 00:28:41,000
+Using important ones, the function must return the value, but in standard procedure, it is optional
+
+363
+00:28:41,000 --> 00:28:42,000
+in the procedure.
+
+364
+00:28:42,000 --> 00:28:48,000
+We can return zero or and various functions can have on the input parameters for it.
+
+365
+00:28:49,000 --> 00:28:52,000
+Various procedures can have input or output parameters.
+
+366
+00:28:53,000 --> 00:29:00,000
+Functions can be called from procedure, whereas procedures cannot be called from a function.
+
+367
+00:29:01,000 --> 00:29:09,000
+The procedure allows select as well as insert update delete statements in it, whereas function allows
+
+368
+00:29:09,000 --> 00:29:10,000
+only a select statement in it.
+
+369
+00:29:11,000 --> 00:29:19,000
+Procedures can be utilized in a select statement, whereas function can be embedded in that select statement.
+
+370
+00:29:19,000 --> 00:29:27,000
+Stored procedures can't be used in the sequel statements anywhere in the where having select section
+
+371
+00:29:28,000 --> 00:29:35,000
+various function can be an exception can be handled by try catch block in the procedure, whereas try
+
+372
+00:29:35,000 --> 00:29:38,000
+catch block can't be used in a function.
+
+373
+00:29:39,000 --> 00:29:45,000
+We can use transactions in procedure, whereas we can't use transactions in function.
+
+374
+00:29:46,000 --> 00:29:49,000
+I believe that we captured and review of the main differences.
+
+375
+00:29:50,000 --> 00:29:52,000
+That's all for this lesson.
+
+376
+00:29:52,000 --> 00:29:56,000
+Let's recap what we have learned in the video today.
+
+377
+00:29:56,000 --> 00:29:58,000
+We have learned what views are.
+
+378
+00:29:58,000 --> 00:30:02,000
+We created our custom views and based on our existing tables.
+
+379
+00:30:02,000 --> 00:30:08,000
+I explained to you what triggers are now you know, how to create and work with stored procedures.
+
+380
+00:30:09,000 --> 00:30:16,000
+As we reviewed the examples, we learned different types of comments in Sequel Dilemma during my SQL
+
+381
+00:30:16,000 --> 00:30:17,000
+and session variables.
+
+382
+00:30:18,000 --> 00:30:25,000
+At the end of the lesson, we have learned functions and we learnt differences between functions and
+
+383
+00:30:25,000 --> 00:30:26,000
+stored procedures.
+
+384
+00:30:26,000 --> 00:30:28,000
+That's all for today.
+
+385
+00:30:28,000 --> 00:30:30,000
+Thanks a lot for your attention.
+
+386
+00:30:30,000 --> 00:30:31,000
+Have a great day.
+
+387
+00:30:31,000 --> 00:30:33,000
+See you in the next lesson.
+
diff --git a/49 - Relational Databases (Advanced)/002 MySQL Workbench Administration_en.srt b/49 - Relational Databases (Advanced)/002 MySQL Workbench Administration_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..d141a8cd966bcac46d736e2f64f4f1032e29033c
--- /dev/null
+++ b/49 - Relational Databases (Advanced)/002 MySQL Workbench Administration_en.srt
@@ -0,0 +1,508 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:09,000
+In this lesson, we're going to learn database administration.
+
+3
+00:00:10,000 --> 00:00:15,000
+We're going to learn how to configure users random necessary rights to perform actions and database
+
+4
+00:00:16,000 --> 00:00:21,000
+how to track database performance, manage data expert and data inputs.
+
+5
+00:00:21,000 --> 00:00:27,000
+Definitely, this lesson is going to be interesting and useful for you in this lesson.
+
+6
+00:00:27,000 --> 00:00:32,000
+I'm going to do a lot of screen sharing on the example of my school workbench.
+
+7
+00:00:32,000 --> 00:00:39,000
+I'm going to show you how easily you can perform such basic operations as data import expert, new user
+
+8
+00:00:39,000 --> 00:00:46,000
+creation, configuring the and access for new account and track, or my SQL server performance.
+
+9
+00:00:46,000 --> 00:00:47,000
+Let's stop.
+
+10
+00:00:47,000 --> 00:00:53,000
+And as I already said today, we're going to have a lot of them examples on screen sharing.
+
+11
+00:00:53,000 --> 00:00:55,000
+So let me start sharing my screen.
+
+12
+00:00:56,000 --> 00:00:59,000
+Let's start from learning data expert and data input.
+
+13
+00:01:00,000 --> 00:01:06,000
+First of all, I want to show you a few menus and apps in my school workbench here, where for administration
+
+14
+00:01:06,000 --> 00:01:12,000
+tap and under management section, you can find data experts and data options.
+
+15
+00:01:13,000 --> 00:01:18,000
+Also, you can click on several menu to find data expert and data in-person options.
+
+16
+00:01:18,000 --> 00:01:19,000
+Why we need this.
+
+17
+00:01:20,000 --> 00:01:26,000
+For example, you need to configure a local database and populated with necessary data from production
+
+18
+00:01:26,000 --> 00:01:27,000
+environments.
+
+19
+00:01:28,000 --> 00:01:31,000
+These are for local development, debugging or any other purpose.
+
+20
+00:01:32,000 --> 00:01:40,000
+You do data experts in one place and do data in court in your local database, or imagine that you developed
+
+21
+00:01:40,000 --> 00:01:43,000
+your app and create a database structure.
+
+22
+00:01:43,000 --> 00:01:47,000
+And now it is time to go live and move to a production environment.
+
+23
+00:01:48,000 --> 00:01:54,000
+And as an example, let's imagine that we need to do experts of our learning database and all datasets
+
+24
+00:01:54,000 --> 00:01:56,000
+we created during the previous lessons.
+
+25
+00:01:57,000 --> 00:02:00,000
+Data expert I need to select database.
+
+26
+00:02:01,000 --> 00:02:04,000
+And when I select a database, I can select tables that I want to export.
+
+27
+00:02:05,000 --> 00:02:12,000
+Now, pay attention here if I want to initialize my database and production firm, and I don't need
+
+28
+00:02:12,000 --> 00:02:13,000
+test data at all.
+
+29
+00:02:14,000 --> 00:02:15,000
+I have few options here.
+
+30
+00:02:16,000 --> 00:02:22,000
+Namely, I can dump structure only if you need both data and structure.
+
+31
+00:02:23,000 --> 00:02:27,000
+You can select the option that will tell my school to dump data and structure.
+
+32
+00:02:28,000 --> 00:02:35,000
+Below, you can find check boxes that allow you to indicate whether you are ready to export stored procedures,
+
+33
+00:02:35,000 --> 00:02:37,000
+functions, triggers, events.
+
+34
+00:02:38,000 --> 00:02:44,000
+Below, you can find check boxes that allow you to indicate whether you want to export stored procedures.
+
+35
+00:02:44,000 --> 00:02:48,000
+Functions triggers events in exports options.
+
+36
+00:02:48,000 --> 00:02:54,000
+You can specify Project Folder for the dump in case you would specify Project Folder.
+
+37
+00:02:54,000 --> 00:03:01,000
+Each table will be exported as a separate file in case you select export self-contained file.
+
+38
+00:03:01,000 --> 00:03:05,000
+All instructions will be export that single file.
+
+39
+00:03:05,000 --> 00:03:09,000
+Pay attention that on my screen and probably on your stoop.
+
+40
+00:03:10,000 --> 00:03:13,000
+It is not possible to investigate all possible configurations.
+
+41
+00:03:14,000 --> 00:03:19,000
+Just resize widgets like I do here to see all menus and buttons.
+
+42
+00:03:20,000 --> 00:03:26,000
+You can enable creation of dump in a single transaction and include create schema to.
+
+43
+00:03:27,000 --> 00:03:34,000
+After you configure, it's everything you need, just click Start Export button after exports is finished.
+
+44
+00:03:34,000 --> 00:03:40,000
+You can find the results of your exports is a destination that has been configured as a result of the
+
+45
+00:03:40,000 --> 00:03:48,000
+export is nothing more than sequel instructions that create database abuse and insert waiting tables
+
+46
+00:03:48,000 --> 00:03:48,000
+if needed.
+
+47
+00:03:50,000 --> 00:03:53,000
+Now, let's import data into our database.
+
+48
+00:03:53,000 --> 00:04:01,000
+Select Data Import Specify is a project folder with your sequel queries or select radio bottom to specify
+
+49
+00:04:01,000 --> 00:04:02,000
+self-contained file.
+
+50
+00:04:03,000 --> 00:04:08,000
+You can select schema from where to import data or create a new one.
+
+51
+00:04:08,000 --> 00:04:15,000
+This is needed for cases if your sequel instructions that you are going to import don't contain, create
+
+52
+00:04:15,000 --> 00:04:16,000
+schema statement.
+
+53
+00:04:17,000 --> 00:04:20,000
+After that, just click Start Import button, and that's it.
+
+54
+00:04:21,000 --> 00:04:24,000
+They understand how to export and import data.
+
+55
+00:04:24,000 --> 00:04:31,000
+Now, let's now learn how to create users and grant them privileges in management section.
+
+56
+00:04:31,000 --> 00:04:33,000
+I click on user and privileges.
+
+57
+00:04:33,000 --> 00:04:36,000
+Sure, you can see list of user accounts.
+
+58
+00:04:36,000 --> 00:04:39,000
+As you can see, there are some accounts already created.
+
+59
+00:04:40,000 --> 00:04:41,000
+Let's learn What are they?
+
+60
+00:04:42,000 --> 00:04:50,000
+One part of the Mexico installation process is Data Directory initialization durin data directory initialization.
+
+61
+00:04:50,000 --> 00:04:58,000
+My SQL creates user accounts that should be considered to reserve my SQL info schema localhost used
+
+62
+00:04:58,000 --> 00:05:02,000
+as a definer for information schema of use use of them.
+
+63
+00:05:02,000 --> 00:05:09,000
+My SQL Info Schema account avoids problems that occur if a database administrator rename or removes
+
+64
+00:05:09,000 --> 00:05:10,000
+a root account.
+
+65
+00:05:11,000 --> 00:05:18,000
+Use of the My SQL Info Schema account avoids problems that occur if a database administrator names or
+
+66
+00:05:18,000 --> 00:05:20,000
+removes the root account.
+
+67
+00:05:20,000 --> 00:05:26,000
+This account is logged so that it can be used for client connections.
+
+68
+00:05:27,000 --> 00:05:33,000
+My school session localhost used internally by plug ins to access the server.
+
+69
+00:05:33,000 --> 00:05:38,000
+This account is locked so that it can't be used for client connections.
+
+70
+00:05:38,000 --> 00:05:43,000
+My sequels to Sparklehorse used as a defined the forces schema.
+
+71
+00:05:43,000 --> 00:05:46,000
+Objects use of them are sequels.
+
+72
+00:05:46,000 --> 00:05:52,000
+Sequences account avoids problems that occur if a DP renames or removes their account.
+
+73
+00:05:52,000 --> 00:05:57,000
+This account is locked so that it can't be used for client connections.
+
+74
+00:05:58,000 --> 00:06:06,000
+Root localhost used for administrative purposes, this account has old privileges and can perform any
+
+75
+00:06:06,000 --> 00:06:06,000
+operation.
+
+76
+00:06:07,000 --> 00:06:14,000
+Strictly speaking, this account's name is not reserved in the sense that some installations renamed
+
+77
+00:06:14,000 --> 00:06:20,000
+the root account or something else to avoid exposing a highly privileged account was a well known name.
+
+78
+00:06:21,000 --> 00:06:27,000
+But what to do in case we need to create a new user was a separate set of religious Zahra might be different
+
+79
+00:06:27,000 --> 00:06:28,000
+cases.
+
+80
+00:06:28,000 --> 00:06:33,000
+For example, unions separate account for development purposes and you need to restrict some rights
+
+81
+00:06:33,000 --> 00:06:38,000
+for it or you create a database account for your application.
+
+82
+00:06:38,000 --> 00:06:41,000
+And you deliberately want to keep only read rights.
+
+83
+00:06:41,000 --> 00:06:42,000
+Does it make sense?
+
+84
+00:06:43,000 --> 00:06:46,000
+The great new user click Add Account here.
+
+85
+00:06:46,000 --> 00:06:54,000
+We can change the name of new account, select our syndication type for the standard login password
+
+86
+00:06:54,000 --> 00:06:58,000
+densification select standard that's come up was the passwords.
+
+87
+00:06:59,000 --> 00:07:05,000
+You can even configure account limit, for example, amount of queries that can be executed per hour
+
+88
+00:07:06,000 --> 00:07:09,000
+max number of connections concurrent connections.
+
+89
+00:07:10,000 --> 00:07:14,000
+You can check this step to explore more administrative roles.
+
+90
+00:07:14,000 --> 00:07:17,000
+Tap, in my opinion, very important one.
+
+91
+00:07:17,000 --> 00:07:20,000
+You need to grant privileges to your account.
+
+92
+00:07:20,000 --> 00:07:27,000
+In other words, you'll need to specify what new account can and can't do in the database.
+
+93
+00:07:27,000 --> 00:07:33,000
+You can select one or more predefined rules, or you can select privileges manually.
+
+94
+00:07:34,000 --> 00:07:41,000
+It is only up to you and on the last stop here in skimmer privileges, you may said you are just related
+
+95
+00:07:41,000 --> 00:07:42,000
+to schemas.
+
+96
+00:07:42,000 --> 00:07:49,000
+You can add rules for all schemas schemas that margins are provided foreign and concrete schemas.
+
+97
+00:07:50,000 --> 00:07:55,000
+By the way, you can grant and revoke religious even after you create that user account.
+
+98
+00:07:57,000 --> 00:08:03,000
+After you configure it, everything, just click on the apply button and the user will be created.
+
+99
+00:08:03,000 --> 00:08:07,000
+So we created account with select privileges only.
+
+100
+00:08:08,000 --> 00:08:11,000
+Let's now establish new connection using our new credentials.
+
+101
+00:08:12,000 --> 00:08:14,000
+And let's try to drop some table.
+
+102
+00:08:33,000 --> 00:08:40,000
+And you can see that when I tried to drop a table, the command wasn't executed, command was denied
+
+103
+00:08:40,000 --> 00:08:41,000
+for my user.
+
+104
+00:08:42,000 --> 00:08:46,000
+But I still can select any information I need from this schema.
+
+105
+00:08:46,000 --> 00:08:47,000
+Is that clear?
+
+106
+00:08:48,000 --> 00:08:52,000
+Can we understand now how privileges work and how to configure them?
+
+107
+00:08:53,000 --> 00:08:59,000
+The last thing that I'd like quickly to show you is how to track performance of my SQL server in my
+
+108
+00:08:59,000 --> 00:09:00,000
+school workbench.
+
+109
+00:09:00,000 --> 00:09:03,000
+There is a separate section here, as it is called performance.
+
+110
+00:09:04,000 --> 00:09:07,000
+You can open dashboard and track performance in real time.
+
+111
+00:09:08,000 --> 00:09:14,000
+On the dashboards, you can find network status, my SQL status and energy status.
+
+112
+00:09:14,000 --> 00:09:21,000
+When you have queries executed, you will see that this charts will be defined and you can see some
+
+113
+00:09:21,000 --> 00:09:22,000
+measurements here.
+
+114
+00:09:23,000 --> 00:09:27,000
+There are separate widgets that allow you to track status of the storage engine.
+
+115
+00:09:28,000 --> 00:09:31,000
+Most of the metrics and widgets are self-described.
+
+116
+00:09:32,000 --> 00:09:36,000
+And if you follow this course, there is nothing new for you.
+
+117
+00:09:37,000 --> 00:09:43,000
+You should already know what in the day is, what SQL statements are, what select and search create
+
+118
+00:09:43,000 --> 00:09:45,000
+update alternate means.
+
+119
+00:09:46,000 --> 00:09:49,000
+That's all what I wanted to share with you in this lesson.
+
+120
+00:09:50,000 --> 00:09:52,000
+Let's recap what we have learned today.
+
+121
+00:09:53,000 --> 00:09:59,000
+In this lesson, we learned how to make data expert also use, for example, with data inputs.
+
+122
+00:10:00,000 --> 00:10:01,000
+We created new user with you.
+
+123
+00:10:02,000 --> 00:10:08,000
+We can figure global privileges POIs and also contributes schema privileges and advantages.
+
+124
+00:10:08,000 --> 00:10:11,000
+Larson I showed you performance dashboard in my sequel.
+
+125
+00:10:12,000 --> 00:10:12,000
+That's it.
+
+126
+00:10:13,000 --> 00:10:15,000
+Thank you all for your attention.
+
+127
+00:10:15,000 --> 00:10:18,000
+Have a great day and see you in the next lesson.
+
diff --git a/49 - Relational Databases (Advanced)/external-links.txt b/49 - Relational Databases (Advanced)/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9cdad7bb9c96f3f3f0af5e4589b904fdf3289b87
--- /dev/null
+++ b/49 - Relational Databases (Advanced)/external-links.txt
@@ -0,0 +1,3 @@
+
+001 Find-folders-with-Views-Triggers-Stored-Procedures-and-Stored-Functions-SQL-query-examples-here
+https://github.com/AndriiPiatakha/learnit_java_core/tree/master/sql_queries/ddl
diff --git a/50 - Databases Database Modelling and Architecture/001 Database Modelling & Design Conceptual, Logical and Physical Data Models_en.srt b/50 - Databases Database Modelling and Architecture/001 Database Modelling & Design Conceptual, Logical and Physical Data Models_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..64b2b2e7325d2e06bc0fb65d9f2d12f4f536df8c
--- /dev/null
+++ b/50 - Databases Database Modelling and Architecture/001 Database Modelling & Design Conceptual, Logical and Physical Data Models_en.srt
@@ -0,0 +1,1160 @@
+1
+00:00:05,000 --> 00:00:11,000
+Hello, Kim, in this lesson, we're going to review very important theoretical concepts of data modeling.
+
+2
+00:00:12,000 --> 00:00:17,000
+This lesson will be useful for everyone, no matter whether you architect or database engineer.
+
+3
+00:00:18,000 --> 00:00:24,000
+We need to learn and understand the basic concepts of data modeling on different levels and different
+
+4
+00:00:24,000 --> 00:00:25,000
+phases of our project.
+
+5
+00:00:26,000 --> 00:00:33,000
+The fundamental understanding of this process has helped me to save a lot of time and avoid a lot of
+
+6
+00:00:33,000 --> 00:00:35,000
+mistakes and rework in the past.
+
+7
+00:00:36,000 --> 00:00:39,000
+That's why I believe it is super important me sharing this with you.
+
+8
+00:00:40,000 --> 00:00:46,000
+We are going to learn such terms as data model, data context, database design, probably explaining
+
+9
+00:00:46,000 --> 00:00:49,000
+why data modeling is super important.
+
+10
+00:00:49,000 --> 00:00:55,000
+And I will provide you with tools and algorithms to ensure efficient process on your project.
+
+11
+00:00:55,000 --> 00:01:02,000
+And after that, we are going to dive into specifics of different data model types and use those with
+
+12
+00:01:02,000 --> 00:01:02,000
+examples.
+
+13
+00:01:03,000 --> 00:01:09,000
+Namely, we are going to discuss conceptual data model, logical data model and physical data model.
+
+14
+00:01:10,000 --> 00:01:15,000
+But then the last thing you are going to have a clear understanding about each type of data model and
+
+15
+00:01:15,000 --> 00:01:16,000
+differences between them.
+
+16
+00:01:17,000 --> 00:01:20,000
+Let's understand first what data model is.
+
+17
+00:01:20,000 --> 00:01:28,000
+A data model is an abstract model that organizes elements of data and standardize how they relate to
+
+18
+00:01:28,000 --> 00:01:32,000
+one another and to the properties of the real world with this.
+
+19
+00:01:33,000 --> 00:01:40,000
+For example, a data model may specify that the data elements representing a car be composed of a number
+
+20
+00:01:40,000 --> 00:01:49,000
+of elements, which in turn represent a color and the size of the car and define its own term data model
+
+21
+00:01:49,000 --> 00:01:54,000
+can refer to two distinct but closely related concepts.
+
+22
+00:01:54,000 --> 00:02:01,000
+Sometimes it refers to an absolute formalization of the objects and relationships found, in particular
+
+23
+00:02:01,000 --> 00:02:03,000
+application domain.
+
+24
+00:02:03,000 --> 00:02:11,000
+For example, the customers products and orders found in manufacturing and analyzation, and other times
+
+25
+00:02:11,000 --> 00:02:16,000
+it refers to a set of concepts used in defining such formalization.
+
+26
+00:02:17,000 --> 00:02:22,000
+For example, concepts such as entities, attributes, relations or tables.
+
+27
+00:02:23,000 --> 00:02:29,000
+So is a data model of a banking application may be defined using the entity.
+
+28
+00:02:29,000 --> 00:02:35,000
+Relationship data model and data model explicitly determines the structure of data.
+
+29
+00:02:36,000 --> 00:02:40,000
+The next item is related to the previous one database model.
+
+30
+00:02:41,000 --> 00:02:49,000
+What is a database model that the base model is a type of data model that determines zoological structure
+
+31
+00:02:49,000 --> 00:02:50,000
+of a database.
+
+32
+00:02:50,000 --> 00:02:57,000
+It fundamentally determines in which manner data can be stored, organized and manipulated.
+
+33
+00:02:57,000 --> 00:03:04,000
+The most popular example of database model is a relational model, which uses a table based format.
+
+34
+00:03:05,000 --> 00:03:12,000
+Database model refers to the logical structure, representation all the out of the database and how
+
+35
+00:03:12,000 --> 00:03:17,000
+the data will be stored, managed and processed within it.
+
+36
+00:03:17,000 --> 00:03:26,000
+It helps in designing a database and serves as a blueprint for application developers and database administrators
+
+37
+00:03:26,000 --> 00:03:27,000
+in creating a database.
+
+38
+00:03:28,000 --> 00:03:36,000
+You are more or less already familiar with relational data model, so relational data model is an approach
+
+39
+00:03:36,000 --> 00:03:43,000
+to managing data using a structure and language consistent with logic where all data is represented
+
+40
+00:03:43,000 --> 00:03:51,000
+in terms of tables grouped into relations, and we learn all the different types of relations in a separate
+
+41
+00:03:51,000 --> 00:03:51,000
+lesson.
+
+42
+00:03:52,000 --> 00:03:55,000
+There are three main groups of data models.
+
+43
+00:03:55,000 --> 00:03:59,000
+They are logical, conceptual and physical.
+
+44
+00:04:00,000 --> 00:04:04,000
+In this lesson, we are going to go all of them and understand the difference between them.
+
+45
+00:04:05,000 --> 00:04:11,000
+But before we even try to understand the difference between different groups of data model, let's make
+
+46
+00:04:11,000 --> 00:04:18,000
+sure that we all understand the importance of data modeling and try to understand motivations that stands
+
+47
+00:04:18,000 --> 00:04:19,000
+behind this lesson.
+
+48
+00:04:20,000 --> 00:04:29,000
+Data modeling is a process of creating a visual representation of a whole information system or parts
+
+49
+00:04:29,000 --> 00:04:33,000
+of it to communicate connections between data points and structures.
+
+50
+00:04:34,000 --> 00:04:39,000
+The goal is to illustrate the types of data used and stored within the system.
+
+51
+00:04:39,000 --> 00:04:42,000
+The relationships and ones these data types.
+
+52
+00:04:42,000 --> 00:04:48,000
+The ways that data can be grouped and organized, and its formats and attributes.
+
+53
+00:04:49,000 --> 00:04:50,000
+Why we need data modeling.
+
+54
+00:04:51,000 --> 00:04:52,000
+Can we live without it at all?
+
+55
+00:04:53,000 --> 00:04:55,000
+Well, to answer objectively.
+
+56
+00:04:56,000 --> 00:05:02,000
+But in my opinion, we can't leave without data model unions, the development of our app.
+
+57
+00:05:03,000 --> 00:05:08,000
+It is only a matter of how you will come up with a data model for your app, but you will spend some
+
+58
+00:05:08,000 --> 00:05:13,000
+time on data monitoring for sure, and it will be done in one or another way.
+
+59
+00:05:14,000 --> 00:05:20,000
+And what I like to explain this lesson is to give you standardized tools and approaches for data modeling,
+
+60
+00:05:21,000 --> 00:05:25,000
+because creating proper data models for all app, it is super important task.
+
+61
+00:05:26,000 --> 00:05:32,000
+And sometimes it is hard just to create a few tables straight away and start using specific data structures
+
+62
+00:05:32,000 --> 00:05:34,000
+and build your codes around.
+
+63
+00:05:34,000 --> 00:05:36,000
+Identify dependencies.
+
+64
+00:05:36,000 --> 00:05:41,000
+If you still can't understand how it is important, think about it.
+
+65
+00:05:41,000 --> 00:05:48,000
+Also from different than user development of application is performed by multiple developers.
+
+66
+00:05:48,000 --> 00:05:55,000
+It can be to engineers in case this is early stages of a startup and it can be significantly more engineers
+
+67
+00:05:55,000 --> 00:05:59,000
+if you already have proof of concept and the boat to start feature development.
+
+68
+00:06:00,000 --> 00:06:08,000
+Now, imagine that lack of database design and pure data modeling because the or one or even multiple
+
+69
+00:06:08,000 --> 00:06:09,000
+features.
+
+70
+00:06:09,000 --> 00:06:12,000
+How much money will you spend on salary of engineers?
+
+71
+00:06:12,000 --> 00:06:16,000
+The change also caught is it was built around this data model.
+
+72
+00:06:16,000 --> 00:06:23,000
+Definitely desert techniques of green architecture and introduction of abstraction layer in your app
+
+73
+00:06:23,000 --> 00:06:26,000
+that minimize rewriting of all persistence layer.
+
+74
+00:06:27,000 --> 00:06:35,000
+So definitely, this won't be like dramatic impact, but still sometimes changes in business model mapping
+
+75
+00:06:35,000 --> 00:06:44,000
+may impact business logic and the way how you interact with data inside your app and how you practice
+
+76
+00:06:44,000 --> 00:06:44,000
+it.
+
+77
+00:06:44,000 --> 00:06:50,000
+The ability to correct it and devise a business and adjust ends the way we want it to models.
+
+78
+00:06:50,000 --> 00:06:54,000
+Those relationships is pivotal to good information quality.
+
+79
+00:06:55,000 --> 00:07:02,000
+Most teams and other musicians opt for physical modeling and great application specific schemas that
+
+80
+00:07:02,000 --> 00:07:04,000
+often lack the high level vision.
+
+81
+00:07:04,000 --> 00:07:08,000
+So how is the business really needs to utilize its data?
+
+82
+00:07:09,000 --> 00:07:12,000
+Also, there is one more related term.
+
+83
+00:07:12,000 --> 00:07:13,000
+It is database design.
+
+84
+00:07:14,000 --> 00:07:14,000
+What is it?
+
+85
+00:07:15,000 --> 00:07:17,000
+Database design is organizational data.
+
+86
+00:07:17,000 --> 00:07:25,000
+According to database model, the designer determines what data must be stored and how the data elements
+
+87
+00:07:25,000 --> 00:07:26,000
+interrelate.
+
+88
+00:07:26,000 --> 00:07:29,000
+Database management system manages the data accordingly.
+
+89
+00:07:30,000 --> 00:07:36,000
+Database design involves classifying data and identifying interrelationships.
+
+90
+00:07:36,000 --> 00:07:41,000
+This surgical representation of the data is called an ontology.
+
+91
+00:07:41,000 --> 00:07:49,000
+The ontology is a theory behind the databases design in order to perform data more an inefficient way.
+
+92
+00:07:49,000 --> 00:07:52,000
+We need to have a clear understanding of data context.
+
+93
+00:07:53,000 --> 00:07:59,000
+You can treat data as a puzzle where a puzzle piece is a data entity.
+
+94
+00:07:59,000 --> 00:08:07,000
+If you would like me to be not so specific in concrete terms but define an abstraction instead of data
+
+95
+00:08:07,000 --> 00:08:09,000
+entity, we can use any other terms.
+
+96
+00:08:10,000 --> 00:08:18,000
+So as a piece of Basel, you can use any concept or important thing for business about which we want
+
+97
+00:08:18,000 --> 00:08:27,000
+to collect data and in order to get it pieces and in order to get the pieces to fit together, you need
+
+98
+00:08:27,000 --> 00:08:33,000
+to understand the proper relationship of the piece in question to the other puzzle pieces.
+
+99
+00:08:34,000 --> 00:08:41,000
+The conceptual data model is a picture on the puzzle books that provides a vision of what Information
+
+100
+00:08:41,000 --> 00:08:47,000
+Basel should look like at the end of the day, regardless of whether your solution is a data warehouse,
+
+101
+00:08:47,000 --> 00:08:51,000
+ERP mustard that the management or anything else.
+
+102
+00:08:52,000 --> 00:09:00,000
+Now, let's hear what the conceptual data model is, that conceptual data model is a diagram identifies
+
+103
+00:09:00,000 --> 00:09:07,000
+the business concepts well, like we usually call them, and that is also this type of data model identifies
+
+104
+00:09:07,000 --> 00:09:14,000
+the relationships between these concepts in order to gain, reflect and document understanding of the
+
+105
+00:09:14,000 --> 00:09:16,000
+organization's business from a data perspective.
+
+106
+00:09:17,000 --> 00:09:20,000
+It shows how the business world sees information.
+
+107
+00:09:21,000 --> 00:09:27,000
+It suppresses non-critical details in order to emphasize business rules and user objects.
+
+108
+00:09:28,000 --> 00:09:35,000
+It typically includes on the significant entities which have business meaning, along with their relationships
+
+109
+00:09:35,000 --> 00:09:39,000
+and conceptual data model usually takes the form of an entity.
+
+110
+00:09:39,000 --> 00:09:47,000
+Relationship diagram or object role model is a conceptual data model typically does not contain attributes
+
+111
+00:09:48,000 --> 00:09:55,000
+or if it does on the significant attributes it is important to mention is that the conceptual data model
+
+112
+00:09:55,000 --> 00:09:59,000
+is technology and application independent.
+
+113
+00:09:59,000 --> 00:10:06,000
+The conceptual data model should reflect relationships from a historical longitudinal perspective.
+
+114
+00:10:07,000 --> 00:10:13,000
+For example, a relationship between a store and employee may usually be considered as one too many,
+
+115
+00:10:14,000 --> 00:10:20,000
+but when viewed from a historical perspective, perhaps zero relationships may actually be managed.
+
+116
+00:10:20,000 --> 00:10:28,000
+Many whether the employee begins work at another store, why conceptual data model is important and
+
+117
+00:10:28,000 --> 00:10:34,000
+what issues you may encounter in case you skip trace of conceptual datum or design.
+
+118
+00:10:35,000 --> 00:10:42,000
+You may be constantly stumbling through zealots conceptual data model, but you won't see the big picture.
+
+119
+00:10:43,000 --> 00:10:49,000
+It is hard to identify and understand all possible relationships that are required and miss important
+
+120
+00:10:49,000 --> 00:10:56,000
+seems when you are down in the details of the development and new system from scratch, especially when
+
+121
+00:10:56,000 --> 00:10:59,000
+you work on some complex enterprise solution.
+
+122
+00:10:59,000 --> 00:11:08,000
+The three basic tenets of conceptual data model are entity, a real world, single attribute characteristics
+
+123
+00:11:08,000 --> 00:11:15,000
+or properties of an entity, relationship dependency or association between entities.
+
+124
+00:11:16,000 --> 00:11:20,000
+Conceptual data model, example, customer and product are two entities.
+
+125
+00:11:21,000 --> 00:11:28,000
+Customer number and name attributes of the customer, entity, product, name and price are attributes
+
+126
+00:11:28,000 --> 00:11:29,000
+of product entity.
+
+127
+00:11:29,000 --> 00:11:32,000
+Sale is a relationship between the customer and product.
+
+128
+00:11:33,000 --> 00:11:40,000
+As you can see, this is not like super detailed vision of data model, and therefore this is not ready
+
+129
+00:11:40,000 --> 00:11:46,000
+to use database that is built with the specifics of database management system and logical data model
+
+130
+00:11:46,000 --> 00:11:49,000
+is a data model of a specific problem.
+
+131
+00:11:49,000 --> 00:11:55,000
+The main expressed independently of a particular database management product or storage technology,
+
+132
+00:11:56,000 --> 00:12:03,000
+but nevertheless logical data model is visualized and described in terms of known data structures.
+
+133
+00:12:03,000 --> 00:12:10,000
+For example, logical data model may be described as relational tables and columns, object oriented
+
+134
+00:12:10,000 --> 00:12:12,000
+colossus or similar tax.
+
+135
+00:12:13,000 --> 00:12:18,000
+Sometimes in the literature, you may find that it is referred as logical schema.
+
+136
+00:12:19,000 --> 00:12:26,000
+Logical database design describes the data without any details of how exactly this data will be physically
+
+137
+00:12:26,000 --> 00:12:27,000
+implemented.
+
+138
+00:12:27,000 --> 00:12:35,000
+This database and logical data models It is worse to highlight the next once hierarchical database model.
+
+139
+00:12:36,000 --> 00:12:39,000
+It is the oldest form of database model.
+
+140
+00:12:39,000 --> 00:12:43,000
+It was developed by IBM for Information Management System.
+
+141
+00:12:44,000 --> 00:12:47,000
+It is a set of organized data into structure.
+
+142
+00:12:48,000 --> 00:12:53,000
+DB Record is a three and system of many groups called segments.
+
+143
+00:12:54,000 --> 00:12:56,000
+It uses one to many relationships.
+
+144
+00:12:56,000 --> 00:12:59,000
+The data access is also predictable.
+
+145
+00:13:00,000 --> 00:13:01,000
+Network model.
+
+146
+00:13:02,000 --> 00:13:08,000
+It is a database model conceived as a flexible way of representing objects and their relationships.
+
+147
+00:13:08,000 --> 00:13:17,000
+It's distinguishing feature is that the schema used as a graph in which object types and loads and the
+
+148
+00:13:17,000 --> 00:13:19,000
+relationship types are arcs.
+
+149
+00:13:20,000 --> 00:13:26,000
+It is not restricted to being a hierarchy, a lattice relational model.
+
+150
+00:13:27,000 --> 00:13:33,000
+This is probably one of the most popular data models nowadays, where all data is represented in terms
+
+151
+00:13:33,000 --> 00:13:40,000
+of doubles grouped into relations, and that your relationship model just collapse into the later things
+
+152
+00:13:40,000 --> 00:13:41,000
+of interest.
+
+153
+00:13:42,000 --> 00:13:49,000
+The specific domain of knowledge and basic our model is composed of an entity, Typekit, which classifies
+
+154
+00:13:49,000 --> 00:13:55,000
+as things of interest and specifies relationships that can exist between entities.
+
+155
+00:13:55,000 --> 00:13:57,000
+You can see that on diagram.
+
+156
+00:13:57,000 --> 00:14:04,000
+It is super easy to understand relationships between entities because of reasonable way of depicting
+
+157
+00:14:04,000 --> 00:14:06,000
+all connections and their types.
+
+158
+00:14:07,000 --> 00:14:08,000
+Object model.
+
+159
+00:14:08,000 --> 00:14:15,000
+It is a database management system in which information is represented in the form of object as used
+
+160
+00:14:15,000 --> 00:14:17,000
+in object oriented programming.
+
+161
+00:14:17,000 --> 00:14:22,000
+Object databases are different from relational database, which are table oriented.
+
+162
+00:14:23,000 --> 00:14:26,000
+Object or relational database is a hybrid of both approaches.
+
+163
+00:14:27,000 --> 00:14:35,000
+Documents model, this is data storage system designed for storing, retrieving and managing documents
+
+164
+00:14:35,000 --> 00:14:39,000
+oriented information, also known as semi-structured data.
+
+165
+00:14:39,000 --> 00:14:46,000
+And if you remember our lesson about overview of different database management systems Xeni should remember
+
+166
+00:14:46,000 --> 00:14:53,000
+is a document model is probably one of the main data models that is used in the design of NoSQL database.
+
+167
+00:14:54,000 --> 00:14:56,000
+Entity attributes value model.
+
+168
+00:14:56,000 --> 00:15:03,000
+It is a data model to encode in a space efficient manner, and that is where a number of attributes,
+
+169
+00:15:04,000 --> 00:15:11,000
+properties parameters can be used to describe them is potentially vast, but the numbers it will actually
+
+170
+00:15:11,000 --> 00:15:14,000
+apply to even entity is relatively modest.
+
+171
+00:15:15,000 --> 00:15:22,000
+Such entities correspond to the mathematical notion of sparse markets star schema.
+
+172
+00:15:23,000 --> 00:15:30,000
+It is the simplest style of data more schema and is the approach most widely used to develop data warehouses
+
+173
+00:15:30,000 --> 00:15:32,000
+and dimensional data models.
+
+174
+00:15:33,000 --> 00:15:40,000
+Logical data model is as opposed to a conceptual data model, which describes the semantics of an organization
+
+175
+00:15:40,000 --> 00:15:42,000
+without reference to technology.
+
+176
+00:15:43,000 --> 00:15:46,000
+Logical models are often that romantic in nature.
+
+177
+00:15:47,000 --> 00:15:48,000
+When are they used?
+
+178
+00:15:49,000 --> 00:15:52,000
+Usually, they're most used in business processes.
+
+179
+00:15:53,000 --> 00:16:00,000
+Once validated and approved, the logical data model becomes the basis of a physical data model and
+
+180
+00:16:00,000 --> 00:16:02,000
+for the design of a database.
+
+181
+00:16:02,000 --> 00:16:10,000
+The term logical data model is sometimes used as a synonym of the mean model or as an alternative to
+
+182
+00:16:10,000 --> 00:16:11,000
+the mean model.
+
+183
+00:16:12,000 --> 00:16:19,000
+While the two concepts are closely related and have overlapping goals and the main model is more focused
+
+184
+00:16:19,000 --> 00:16:21,000
+on capturing the concepts, it a problem.
+
+185
+00:16:21,000 --> 00:16:30,000
+The main residence structure of the data associated with the main zoological data model is used to define
+
+186
+00:16:30,000 --> 00:16:35,000
+the structure of data elements and to set relationships between them.
+
+187
+00:16:36,000 --> 00:16:41,000
+Zoological data model adds further information to the conceptual data model elements.
+
+188
+00:16:41,000 --> 00:16:48,000
+The advantage of using a logical data model is to provide the foundation, the forms, the base for
+
+189
+00:16:48,000 --> 00:16:49,000
+the physical model.
+
+190
+00:16:50,000 --> 00:16:53,000
+However, the model structure remains generic.
+
+191
+00:16:54,000 --> 00:17:00,000
+The next things that we are going to learn today is to learn more about the group of physical data models.
+
+192
+00:17:01,000 --> 00:17:08,000
+Let's start from the definition the physical data model is a representation of a data design as implemented
+
+193
+00:17:08,000 --> 00:17:12,000
+or intended to be implemented in a database management system.
+
+194
+00:17:13,000 --> 00:17:20,000
+The feel right is a difference between conceptual and logical data models in the lifecycle of a project.
+
+195
+00:17:20,000 --> 00:17:24,000
+It typically derives from a logical data model.
+
+196
+00:17:24,000 --> 00:17:29,000
+So it may be reverse engineered from a given database implementation.
+
+197
+00:17:29,000 --> 00:17:36,000
+A complete physical data model will include all the database artifacts required, the great relationships
+
+198
+00:17:36,000 --> 00:17:45,000
+between tables or to achieve performance goals such as indexes considering definitions, Lincoln tables,
+
+199
+00:17:45,000 --> 00:17:47,000
+partition tables or clusters.
+
+200
+00:17:48,000 --> 00:17:53,000
+Physical database design represents how the actual database is built in.
+
+201
+00:17:53,000 --> 00:17:59,000
+The first lesson of my course about databases you learned the most popular database management systems.
+
+202
+00:18:00,000 --> 00:18:05,000
+Please refer to that lesson if you want to check specific names and database management systems.
+
+203
+00:18:05,000 --> 00:18:14,000
+There are two main physical data models Inverted Index, and that file inverted index that is also referred
+
+204
+00:18:14,000 --> 00:18:23,000
+to as a custom file or inverted file, is a database in storing and mapping some content, such as words
+
+205
+00:18:23,000 --> 00:18:30,000
+or numbers, to its location, in a table or in a document, or in a set of documents.
+
+206
+00:18:30,000 --> 00:18:35,000
+In this course, you also can find less about indexes and how to book with them.
+
+207
+00:18:36,000 --> 00:18:41,000
+In that lesson, we discuss specifics of interaction with index from its creation until its removal.
+
+208
+00:18:42,000 --> 00:18:50,000
+The purpose of an inverted index is to allow fast, full text searches at the cost of increased processing.
+
+209
+00:18:50,000 --> 00:18:54,000
+When a document would just in Utah, Apple is added to the database.
+
+210
+00:18:54,000 --> 00:19:01,000
+So basically the performance of reading and searching data will be better and will be executed faster.
+
+211
+00:19:02,000 --> 00:19:07,000
+But on the other hand, operations of insertion will take more time.
+
+212
+00:19:07,000 --> 00:19:15,000
+That is because after adding additional rule, autoplay indexes needed to be recalculated to stay sorted
+
+213
+00:19:15,000 --> 00:19:23,000
+and ensure logarithmic connotation for extraction operations, zingers at file may be a database file
+
+214
+00:19:23,000 --> 00:19:25,000
+itself rather than its index.
+
+215
+00:19:26,000 --> 00:19:32,000
+It is the most popular data structure used in document retrieval systems used on the large scale.
+
+216
+00:19:32,000 --> 00:19:35,000
+For example, in search engines.
+
+217
+00:19:35,000 --> 00:19:42,000
+On the other hand, a flat file database is a database stored in the file called a flat file.
+
+218
+00:19:43,000 --> 00:19:50,000
+Records follow a uniform format, and there are no structure for indexing or recognizing relationships
+
+219
+00:19:50,000 --> 00:19:51,000
+between records.
+
+220
+00:19:51,000 --> 00:19:57,000
+This file is simple a flat file can be a plain text file or a binary file.
+
+221
+00:19:58,000 --> 00:20:06,000
+Relationships can be inferred from the data in the database, but the database format itself doesn't
+
+222
+00:20:06,000 --> 00:20:08,000
+make those relationships explicit.
+
+223
+00:20:08,000 --> 00:20:16,000
+The term has generally implied a small database, but very large that the basis can also be flat.
+
+224
+00:20:16,000 --> 00:20:23,000
+If you want an example of a flat file database, you can imagine Linnaeus thought of the sequel data.
+
+225
+00:20:24,000 --> 00:20:29,000
+A physical dating model describes that the base specific implementation of the data model.
+
+226
+00:20:29,000 --> 00:20:34,000
+It offers database abstraction and helps generate the schema.
+
+227
+00:20:34,000 --> 00:20:41,000
+The main difference between logical database design and physical database design is that logical database
+
+228
+00:20:41,000 --> 00:20:45,000
+design helps to define the data elements and their relationships.
+
+229
+00:20:46,000 --> 00:20:52,000
+But physical database design helps to design the actual database based on the requirements gathered
+
+230
+00:20:52,000 --> 00:20:56,000
+doing the logical data design and conceptual data design.
+
+231
+00:20:57,000 --> 00:21:04,000
+We learned what conceptual data model, logical data model and physical data model is to help you understand
+
+232
+00:21:04,000 --> 00:21:06,000
+better the difference between all of these.
+
+233
+00:21:07,000 --> 00:21:09,000
+I want to present use of current slide.
+
+234
+00:21:10,000 --> 00:21:16,000
+So let's recap in one sentence about each type of data model's conceptual data model.
+
+235
+00:21:17,000 --> 00:21:20,000
+This data model defines what the system contains.
+
+236
+00:21:21,000 --> 00:21:26,000
+This model is typically created by business stakeholders and data architects.
+
+237
+00:21:26,000 --> 00:21:32,000
+The purpose is to organize, scope and define business concepts and rules.
+
+238
+00:21:32,000 --> 00:21:39,000
+Logical data model defines how the system should be implemented regardless of the database management
+
+239
+00:21:39,000 --> 00:21:39,000
+system.
+
+240
+00:21:40,000 --> 00:21:45,000
+This model is typically created by data architects and business analysts.
+
+241
+00:21:45,000 --> 00:21:50,000
+The purpose is to develop a technical map of rules and data structures.
+
+242
+00:21:51,000 --> 00:21:58,000
+Physical data model This data model describes how the system will be implemented using a specific database
+
+243
+00:21:58,000 --> 00:21:59,000
+management system.
+
+244
+00:22:00,000 --> 00:22:04,000
+This model is typically created by database architects and developers.
+
+245
+00:22:05,000 --> 00:22:08,000
+The purpose is actual implementation of the database.
+
+246
+00:22:09,000 --> 00:22:15,000
+A conceptual data model identifies the highest level relationships between the different, and that
+
+247
+00:22:15,000 --> 00:22:22,000
+these features of conceptual data model include the important entities and the relationships among them.
+
+248
+00:22:23,000 --> 00:22:24,000
+No attribute is specified.
+
+249
+00:22:24,000 --> 00:22:26,000
+No primary key is specified.
+
+250
+00:22:27,000 --> 00:22:35,000
+A logical data model describes the data in as much detail as possible without regard to how they will
+
+251
+00:22:35,000 --> 00:22:37,000
+be physically implemented in the database.
+
+252
+00:22:37,000 --> 00:22:44,000
+Features of logical data model include all entities and relationships, and also all attributes for
+
+253
+00:22:44,000 --> 00:22:50,000
+each entity are specified is a primary key for each entity is specified.
+
+254
+00:22:50,000 --> 00:22:55,000
+Foreign keys incident defines the relationship between different entities.
+
+255
+00:22:55,000 --> 00:22:59,000
+A specified normalization occurs at this level.
+
+256
+00:23:00,000 --> 00:23:06,000
+The steps for design and the logical data model are as follows Specified primary keys for all entities
+
+257
+00:23:07,000 --> 00:23:09,000
+find the relationships between different entities.
+
+258
+00:23:10,000 --> 00:23:12,000
+Find all attributes for each entity.
+
+259
+00:23:13,000 --> 00:23:17,000
+Resolve many to many relationships normalization.
+
+260
+00:23:17,000 --> 00:23:20,000
+You can learn more about normalization from other lessons.
+
+261
+00:23:20,000 --> 00:23:26,000
+Of course, this is also a very important topic, and I dedicated a lot of time and attention to it.
+
+262
+00:23:27,000 --> 00:23:34,000
+Physical data model represents how the model will be built into database, a physical database model
+
+263
+00:23:34,000 --> 00:23:41,000
+shows all table structures, including column name, column data, type, column constraints, primary
+
+264
+00:23:41,000 --> 00:23:45,000
+key, foreign key and relationships between tables.
+
+265
+00:23:46,000 --> 00:23:51,000
+Features of a physical data model include specification of all tables and columns.
+
+266
+00:23:52,000 --> 00:23:55,000
+Foreign keys are used to identify relationships between tables.
+
+267
+00:23:56,000 --> 00:24:00,000
+The normalization may occur based on user requirements.
+
+268
+00:24:00,000 --> 00:24:06,000
+If you don't know what the normalization is, please refer to the lesson about normalization and normal
+
+269
+00:24:06,000 --> 00:24:09,000
+forms in scope of that lesson.
+
+270
+00:24:09,000 --> 00:24:12,000
+I also described what normalization is.
+
+271
+00:24:13,000 --> 00:24:18,000
+Physical considerations may cause the physical data model to be quite different from the logical data
+
+272
+00:24:18,000 --> 00:24:19,000
+model.
+
+273
+00:24:19,000 --> 00:24:24,000
+Physical data model will be different for different database management systems.
+
+274
+00:24:24,000 --> 00:24:32,000
+For example, data type for a call made the difference between Oracle and DB two, and also there might
+
+275
+00:24:32,000 --> 00:24:33,000
+be other differences.
+
+276
+00:24:33,000 --> 00:24:41,000
+The steps for physical data modal design are as follows Converged entities into tables convert relationships
+
+277
+00:24:41,000 --> 00:24:45,000
+into foreign keys, convert attributes into columns.
+
+278
+00:24:46,000 --> 00:24:50,000
+Modifies the physical data model based on physical constraints.
+
+279
+00:24:50,000 --> 00:24:50,000
+Mark ones.
+
+280
+00:24:51,000 --> 00:24:53,000
+That's all what I wanted to share with you today.
+
+281
+00:24:54,000 --> 00:24:57,000
+You learned a lot of important and interesting things today.
+
+282
+00:24:58,000 --> 00:25:01,000
+Let's review what we have learned in this lesson.
+
+283
+00:25:01,000 --> 00:25:06,000
+We learned what data model and that the base model is what discussed.
+
+284
+00:25:06,000 --> 00:25:08,000
+What database design is.
+
+285
+00:25:08,000 --> 00:25:12,000
+Also, we discussed and understood the importance of data modeling process.
+
+286
+00:25:13,000 --> 00:25:15,000
+After this lesson, you know what?
+
+287
+00:25:15,000 --> 00:25:20,000
+Data context is relative used and learned three main groups of data models.
+
+288
+00:25:21,000 --> 00:25:25,000
+They are conceptual, logical and physical data models.
+
+289
+00:25:26,000 --> 00:25:28,000
+Thanks a lot for your attention.
+
+290
+00:25:28,000 --> 00:25:31,000
+Have a great day and see you in the next lesson.
+
diff --git a/51 - ===== SQL Homework Online Shop =====/001 Homework-with-links-to-solution.url b/51 - ===== SQL Homework Online Shop =====/001 Homework-with-links-to-solution.url
new file mode 100644
index 0000000000000000000000000000000000000000..79116315237c0c2a15defc8c0112e4d6a3bd4897
--- /dev/null
+++ b/51 - ===== SQL Homework Online Shop =====/001 Homework-with-links-to-solution.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://docs.google.com/document/d/10Wz-j_aerkD-Z9A4reYYp9nPS69NF19w71Fq6YU-M50/edit?usp=sharing
\ No newline at end of file
diff --git a/51 - ===== SQL Homework Online Shop =====/001 SQL Homework Task and Solution Review_en.srt b/51 - ===== SQL Homework Online Shop =====/001 SQL Homework Task and Solution Review_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..2f772cd988e9d58092b2c54756fb16c78d964ee9
--- /dev/null
+++ b/51 - ===== SQL Homework Online Shop =====/001 SQL Homework Task and Solution Review_en.srt
@@ -0,0 +1,400 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:07,000 --> 00:00:11,000
+In this video, we're going to review with you your home tasks, the task that I'm going to share with
+
+3
+00:00:11,000 --> 00:00:15,000
+your supposed to help you learn and understand school topic matter.
+
+4
+00:00:16,000 --> 00:00:22,000
+If you are students of my Java from zero, the first job course, you should already know that you're
+
+5
+00:00:22,000 --> 00:00:23,000
+in the course.
+
+6
+00:00:23,000 --> 00:00:26,000
+We work on creation of our own online shop.
+
+7
+00:00:26,000 --> 00:00:31,000
+We also need to have a database to support main operations in our online shop.
+
+8
+00:00:32,000 --> 00:00:38,000
+That's why in today's homework, we are going to have ecommerce terminology anyway.
+
+9
+00:00:38,000 --> 00:00:43,000
+I believe this will be interesting for you because the whole tasks that I would ask you to implement
+
+10
+00:00:43,000 --> 00:00:46,000
+are closely related to real life examples.
+
+11
+00:00:47,000 --> 00:00:52,000
+And the first things that you need to do is to make sure that you have all necessary tables to execute
+
+12
+00:00:52,000 --> 00:00:59,000
+queries from your home, tasks to help you create all necessary tables, foster and populate data.
+
+13
+00:00:59,000 --> 00:01:04,000
+I prepared a special script for you that you just need to execute in your database.
+
+14
+00:01:05,000 --> 00:01:10,000
+Just open this link, copy the script and execute it in your database.
+
+15
+00:01:11,000 --> 00:01:17,000
+Once this script will be executed, you will notice that five tables created in your database take your
+
+16
+00:01:17,000 --> 00:01:19,000
+time to explore those tables.
+
+17
+00:01:19,000 --> 00:01:21,000
+This structure and they things out.
+
+18
+00:01:22,000 --> 00:01:25,000
+Pay attention to the type of the relationships between different entities.
+
+19
+00:01:26,000 --> 00:01:31,000
+Once you have all necessary tables and data in it, we are ready to proceed with home tasks.
+
+20
+00:01:32,000 --> 00:01:38,000
+The first task is to select distinct emails of users who made at least one purchase.
+
+21
+00:01:39,000 --> 00:01:41,000
+Basically, nuts in this complex here.
+
+22
+00:01:42,000 --> 00:01:47,000
+This query was required to create joint query to two tables, purchases and user.
+
+23
+00:01:48,000 --> 00:01:53,000
+The second task would be to create SQL queries that will select product names and purchase ideas for
+
+24
+00:01:53,000 --> 00:01:54,000
+each purchase.
+
+25
+00:01:55,000 --> 00:02:00,000
+Set tasks to create sequel statement to select credit card and product name.
+
+26
+00:02:01,000 --> 00:02:06,000
+You should select credit cards as it was used for purchase of this specific product.
+
+27
+00:02:07,000 --> 00:02:14,000
+One more task is to select last name of user and total amount of purchases made by this user.
+
+28
+00:02:14,000 --> 00:02:16,000
+This is going to be a really interesting one.
+
+29
+00:02:17,000 --> 00:02:22,000
+Select less name of user and total amount of purchases made by this user.
+
+30
+00:02:22,000 --> 00:02:26,000
+Only for users who make two or more purchases.
+
+31
+00:02:27,000 --> 00:02:33,000
+And last but not least, task is to select total amount of money user already spent in our store.
+
+32
+00:02:34,000 --> 00:02:41,000
+As you can see, I tried to come up with real life business cases by implementing this squarish.
+
+33
+00:02:41,000 --> 00:02:44,000
+You will be able to practice your knowledge in aggregate functions.
+
+34
+00:02:44,000 --> 00:02:49,000
+Junqueras groupings are results, applying different conditions and so on.
+
+35
+00:02:50,000 --> 00:02:52,000
+Don't hurry up to check my solution.
+
+36
+00:02:53,000 --> 00:02:56,000
+Try to take your time and come up with your solution first.
+
+37
+00:02:57,000 --> 00:03:04,000
+Try to create queries by analogy because during the course, we already created similar queries in some
+
+38
+00:03:04,000 --> 00:03:04,000
+tasks.
+
+39
+00:03:04,000 --> 00:03:11,000
+From the least, you may need to have multiple joints, press, pause, and once you are done with your
+
+40
+00:03:11,000 --> 00:03:13,000
+solution, resumes the video.
+
+41
+00:03:13,000 --> 00:03:18,000
+And let's compare my and your solution in the first task.
+
+42
+00:03:18,000 --> 00:03:23,000
+I use distinct keywords to extract only distinct user emails.
+
+43
+00:03:24,000 --> 00:03:32,000
+I use joint statement to make joint query on purchase table to make sure that I extract only users that
+
+44
+00:03:32,000 --> 00:03:34,000
+have associated records in purchased table.
+
+45
+00:03:35,000 --> 00:03:40,000
+I use foreign key in purchased table to map records between two tables.
+
+46
+00:03:41,000 --> 00:03:43,000
+Here we have one too many relationships.
+
+47
+00:03:44,000 --> 00:03:50,000
+That's why there is no need in this table, and we can easily implement this relationship with the help
+
+48
+00:03:50,000 --> 00:03:52,000
+of foreign key and purchase table.
+
+49
+00:03:52,000 --> 00:03:53,000
+Does it make sense?
+
+50
+00:03:54,000 --> 00:03:56,000
+Is everything clear so far?
+
+51
+00:03:57,000 --> 00:04:03,000
+And by the way, team, as always, in case you have any questions, please do not hesitate to put your
+
+52
+00:04:03,000 --> 00:04:07,000
+questions and comments below this video, and I will be happy to answer those.
+
+53
+00:04:08,000 --> 00:04:15,000
+Second task is almost similar to the first one in terms that we create joint statements two two tables
+
+54
+00:04:15,000 --> 00:04:16,000
+only.
+
+55
+00:04:16,000 --> 00:04:24,000
+We need to extract information about product and we can extracted from product table and to verify in
+
+56
+00:04:24,000 --> 00:04:26,000
+which purchase this product was purchased.
+
+57
+00:04:27,000 --> 00:04:30,000
+We need to check this in purchased product table.
+
+58
+00:04:31,000 --> 00:04:34,000
+In the search task, we need to create multiple joints.
+
+59
+00:04:34,000 --> 00:04:35,000
+Why?
+
+60
+00:04:35,000 --> 00:04:42,000
+Because we need to extract credit card value that is stored in user table and product names at the storage
+
+61
+00:04:42,000 --> 00:04:43,000
+product table.
+
+62
+00:04:43,000 --> 00:04:49,000
+But to identify which shoes are bought, which products, we need to query purchase table.
+
+63
+00:04:49,000 --> 00:04:53,000
+Because some purchase table, there is an info about users purchases.
+
+64
+00:04:54,000 --> 00:05:00,000
+But to understand which product has been purchased in scope of which purchase, we need to query purchase
+
+65
+00:05:00,000 --> 00:05:06,000
+product table because there is many, too many relationships between product and purchase.
+
+66
+00:05:07,000 --> 00:05:10,000
+Each purchase may consist of multiple products, correct?
+
+67
+00:05:11,000 --> 00:05:17,000
+During the one session, I can buy a laptop and separate keyboards, for example, and each product
+
+68
+00:05:17,000 --> 00:05:19,000
+may be purchased many times.
+
+69
+00:05:19,000 --> 00:05:24,000
+We have hundreds of the same keyboards, or we have hundreds of similar laptops.
+
+70
+00:05:25,000 --> 00:05:30,000
+That's why to implement many to many relationships, one needs a smart table.
+
+71
+00:05:30,000 --> 00:05:37,000
+And in this particular case, we also need to include it in our joint statement to get information that
+
+72
+00:05:37,000 --> 00:05:37,000
+we need.
+
+73
+00:05:38,000 --> 00:05:45,000
+We need to specify conditions that will allow us to map records between different tables, including
+
+74
+00:05:45,000 --> 00:05:46,000
+product table.
+
+75
+00:05:46,000 --> 00:05:50,000
+And when we execute this query, we receive what we expect.
+
+76
+00:05:51,000 --> 00:05:57,000
+In the first task, we are going to use aggregate function to count total number of purchases made by
+
+77
+00:05:57,000 --> 00:06:04,000
+each user after we made select statement to retrieve required information from user and purchase tables.
+
+78
+00:06:04,000 --> 00:06:09,000
+We need to group results by each user in this particular example.
+
+79
+00:06:09,000 --> 00:06:12,000
+I want to group results my last name.
+
+80
+00:06:13,000 --> 00:06:19,000
+You can use analysis if you wish, but probably you already noticed that I use them in all my queries
+
+81
+00:06:19,000 --> 00:06:23,000
+because I used to do them and I find this comfortable.
+
+82
+00:06:24,000 --> 00:06:25,000
+One query is executed.
+
+83
+00:06:26,000 --> 00:06:35,000
+We use user's last name mapped to the total amount of purchases he or she made in our online store in
+
+84
+00:06:35,000 --> 00:06:36,000
+the fifth task.
+
+85
+00:06:36,000 --> 00:06:40,000
+We are going to use the same query as in for stock with small additions.
+
+86
+00:06:40,000 --> 00:06:44,000
+We need to add conditions that will have only records that we need.
+
+87
+00:06:45,000 --> 00:06:47,000
+That's why I have to go by.
+
+88
+00:06:47,000 --> 00:06:53,000
+I write have in close to leaf only users that have more or equal to do purchases.
+
+89
+00:06:54,000 --> 00:06:54,000
+Is it clear?
+
+90
+00:06:55,000 --> 00:06:59,000
+In the six, Starsk, we also use aggregate function.
+
+91
+00:06:59,000 --> 00:07:05,000
+This time we need to find total money amount spent in our online shop by each user.
+
+92
+00:07:06,000 --> 00:07:12,000
+For this, I use some aggregate function to some price of all products that have been purchased by our
+
+93
+00:07:12,000 --> 00:07:13,000
+user.
+
+94
+00:07:14,000 --> 00:07:17,000
+And the same logic we have discussed is applied here.
+
+95
+00:07:18,000 --> 00:07:24,000
+We need to make multiple joints to map all records between each other to extract information we need.
+
+96
+00:07:24,000 --> 00:07:28,000
+In this example, I group result by user last name.
+
+97
+00:07:29,000 --> 00:07:36,000
+Basically, that's all my solution, and that's all homework review, hope that this figure was helpful
+
+98
+00:07:36,000 --> 00:07:41,000
+for you to rack up knowledge nerd in this course and as a reset.
+
+99
+00:07:42,000 --> 00:07:46,000
+Feel free to ask questions in case of any thanks a lot for your attention.
+
+100
+00:07:46,000 --> 00:07:49,000
+Have a great day and see you in the next lesson.
+
diff --git a/51 - ===== SQL Homework Online Shop =====/external-links.txt b/51 - ===== SQL Homework Online Shop =====/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c4dde77de8c7b95698b1251b01a99b8e3c6a327e
--- /dev/null
+++ b/51 - ===== SQL Homework Online Shop =====/external-links.txt
@@ -0,0 +1,3 @@
+
+001 Homework-with-links-to-solution
+https://docs.google.com/document/d/10Wz-j_aerkD-Z9A4reYYp9nPS69NF19w71Fq6YU-M50/edit?usp=sharing
diff --git a/52 - JDBC/001 JDBC Overview Establish connection with DB from Java App_en.srt b/52 - JDBC/001 JDBC Overview Establish connection with DB from Java App_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..7f9301a574730a881fdbc521dc2cddc14016f2f1
--- /dev/null
+++ b/52 - JDBC/001 JDBC Overview Establish connection with DB from Java App_en.srt
@@ -0,0 +1,988 @@
+1
+00:00:06,000 --> 00:00:11,000
+Hello, yes, tenants, I'm happy to announce that the day will start super important topic, we are
+
+2
+00:00:11,000 --> 00:00:12,000
+going to learn the ABC.
+
+3
+00:00:13,000 --> 00:00:17,000
+Definitely it will be hard to learn all to this topic and one single lesson.
+
+4
+00:00:17,000 --> 00:00:23,000
+But the day where I learned to learn basic concepts about the ABC understand what it is.
+
+5
+00:00:23,000 --> 00:00:29,000
+And the first practical exercise to establish connection is a database from our Java program.
+
+6
+00:00:30,000 --> 00:00:37,000
+Since this is our first lesson about GBC will start from GBC overview to help you understand what it
+
+7
+00:00:37,000 --> 00:00:38,000
+is and why we need it.
+
+8
+00:00:39,000 --> 00:00:46,000
+After that, we are going to review different GDC driver types to make sure you understand more about
+
+9
+00:00:46,000 --> 00:00:47,000
+database connectivity.
+
+10
+00:00:47,000 --> 00:00:51,000
+I believe it is important to you and learn what Odyssey is.
+
+11
+00:00:52,000 --> 00:00:57,000
+I want to make sure that after this lesson, you understand how the book works.
+
+12
+00:00:57,000 --> 00:01:05,000
+After this piece will jump to practical exercises, we'll learn how to add a driver into the Java app
+
+13
+00:01:06,000 --> 00:01:11,000
+will establish with your connections as a database to make sure that our environment is ready for the
+
+14
+00:01:11,000 --> 00:01:11,000
+next lessons.
+
+15
+00:01:12,000 --> 00:01:14,000
+We have a lot of things to learn today.
+
+16
+00:01:14,000 --> 00:01:15,000
+Let's start.
+
+17
+00:01:16,000 --> 00:01:22,000
+Let's start today from understanding of what you did, this is genuine persistence for Java that the
+
+18
+00:01:22,000 --> 00:01:29,000
+basic connectivity see API implementation used for connecting to a particular type of a database.
+
+19
+00:01:30,000 --> 00:01:36,000
+It is a standard Java API for database and dependent connectivity between the Java programming language
+
+20
+00:01:37,000 --> 00:01:40,000
+and the wide range of databases in similar words.
+
+21
+00:01:41,000 --> 00:01:48,000
+It is a set of glasses and interfaces that allows Java programs to send sequel statements to database.
+
+22
+00:01:48,000 --> 00:01:49,000
+Why is this a standard?
+
+23
+00:01:50,000 --> 00:01:56,000
+Imagine that you have a lot of different Java programs and also you have a lot of different relational
+
+24
+00:01:56,000 --> 00:01:57,000
+database management systems.
+
+25
+00:01:58,000 --> 00:02:04,000
+The question is, should we use unique application programming interface of each relational database
+
+26
+00:02:04,000 --> 00:02:06,000
+management system to perform operations?
+
+27
+00:02:06,000 --> 00:02:13,000
+Was it different protocols and other specifics, for example, unique masses for establishing connection,
+
+28
+00:02:14,000 --> 00:02:20,000
+unique way to execute SQL queries, unique way to read and modify resulting records, and so on.
+
+29
+00:02:20,000 --> 00:02:21,000
+No way.
+
+30
+00:02:22,000 --> 00:02:29,000
+That's why Community Camp was API standard for Java applications to interact with databases, namely
+
+31
+00:02:30,000 --> 00:02:38,000
+set of interfaces, set of masses and once community agreed on the GDC API, each provider of relation
+
+32
+00:02:38,000 --> 00:02:43,000
+that the waste management system provided its own implementation of GDC Driver.
+
+33
+00:02:43,000 --> 00:02:54,000
+So GDC API is just a standard set of API interfaces, and GDC Driver is a concrete implementation is
+
+34
+00:02:54,000 --> 00:03:01,000
+a clear and thus become area of interest of database providers to create implementation of GDC API,
+
+35
+00:03:02,000 --> 00:03:07,000
+because Java getting a lot of popularity and common unique solution was needed.
+
+36
+00:03:07,000 --> 00:03:11,000
+You know that Java could interact with database management system provided.
+
+37
+00:03:12,000 --> 00:03:16,000
+Z, different bus driver types, let's review each of them one by one.
+
+38
+00:03:17,000 --> 00:03:23,000
+The first time that I'd like to describe contains a mapping to another data access API.
+
+39
+00:03:23,000 --> 00:03:25,000
+It is a database driver implementations.
+
+40
+00:03:25,000 --> 00:03:30,000
+It employs the B C driver to connect to the database.
+
+41
+00:03:31,000 --> 00:03:34,000
+The driver converts B C mass it calls into audio.
+
+42
+00:03:34,000 --> 00:03:38,000
+B C function calls logical question from your cycle.
+
+43
+00:03:38,000 --> 00:03:41,000
+B What is or d b c driver?
+
+44
+00:03:42,000 --> 00:03:43,000
+And this is a good question.
+
+45
+00:03:43,000 --> 00:03:46,000
+What do you b c stands for open database connectivity.
+
+46
+00:03:47,000 --> 00:03:52,000
+It is a standard application programming interface for accessing database management systems.
+
+47
+00:03:52,000 --> 00:04:00,000
+The designers of or D B C aims to make it independent of database systems and operating systems, and
+
+48
+00:04:00,000 --> 00:04:07,000
+application written using on the B C can be reported to other platforms both on the client and server
+
+49
+00:04:07,000 --> 00:04:10,000
+side, with few changes to the data access code.
+
+50
+00:04:11,000 --> 00:04:18,000
+What a b c was originally developed by Microsoft and Simba Technologies during the early 1990s.
+
+51
+00:04:19,000 --> 00:04:27,000
+The driver is platform dependent as it makes use of Oadby C, which in turn depends on native libraries
+
+52
+00:04:27,000 --> 00:04:30,000
+of the underlying operating systems the GVM is running.
+
+53
+00:04:30,000 --> 00:04:34,000
+The full advantage of this type of driver is obvious.
+
+54
+00:04:34,000 --> 00:04:42,000
+Almost any database for which the only B C driver is installed can be accessed and data can be retrieved.
+
+55
+00:04:43,000 --> 00:04:48,000
+Regarding the disadvantages of this type of drama, it is worse than the names of fallen ones that ought
+
+56
+00:04:48,000 --> 00:04:49,000
+to be seen.
+
+57
+00:04:49,000 --> 00:04:54,000
+Driver needs to be installed on the client machine performance of her hat sends.
+
+58
+00:04:54,000 --> 00:05:01,000
+The calls have to go so the GBC bridge to the only busy driver centres, a native database connectivity
+
+59
+00:05:01,000 --> 00:05:05,000
+interface thus may be slower than other types of drivers.
+
+60
+00:05:06,000 --> 00:05:10,000
+Specifically, busy drivers are not always available on all platforms.
+
+61
+00:05:11,000 --> 00:05:14,000
+Hence, visibility of this driver is limited.
+
+62
+00:05:15,000 --> 00:05:17,000
+No support from Jarvis and A.
+
+63
+00:05:18,000 --> 00:05:24,000
+The second type of driver is an implementation that uses client side libraries of the target database.
+
+64
+00:05:25,000 --> 00:05:28,000
+It is also called a native API driver.
+
+65
+00:05:28,000 --> 00:05:33,000
+The driver converts semester's calls into native course of the database API.
+
+66
+00:05:34,000 --> 00:05:38,000
+For example, Oracle or assigned driver, is a Typekit driver.
+
+67
+00:05:39,000 --> 00:05:44,000
+We've got an advantage as we can see that performance is better than a type number one driver.
+
+68
+00:05:44,000 --> 00:05:51,000
+That is because there is no implementation of GDP C or D B C reach, but it is also has numerous of
+
+69
+00:05:51,000 --> 00:05:52,000
+disadvantages.
+
+70
+00:05:52,000 --> 00:05:58,000
+Some of them are the vendor client library needs to be installed on the client machine.
+
+71
+00:05:59,000 --> 00:06:06,000
+Not all databases have a client side line, but this driver is a platform dependent type.
+
+72
+00:06:06,000 --> 00:06:12,000
+Number three uses middleware to convert GBC calls into database specific calls.
+
+73
+00:06:12,000 --> 00:06:21,000
+Also known as a network protocol driver is the middle tyre application server converts because directly
+
+74
+00:06:21,000 --> 00:06:24,000
+or indirectly into vendor specific database protocol.
+
+75
+00:06:25,000 --> 00:06:33,000
+This differs from the type for driver in that the protocol conversion logic resides not a decline.
+
+76
+00:06:33,000 --> 00:06:41,000
+Buttons and middle tyre like type for drivers is a type suite driver is written entirely in Java.
+
+77
+00:06:42,000 --> 00:06:48,000
+Advantages of this type of driver are the following ones since the communication between the client
+
+78
+00:06:48,000 --> 00:06:51,000
+and the middle server is database dependent.
+
+79
+00:06:51,000 --> 00:06:58,000
+There is no need for the database when the library on the client is a client needs not to be changed
+
+80
+00:06:58,000 --> 00:06:59,000
+for a new database.
+
+81
+00:07:00,000 --> 00:07:07,000
+Let me go where Sarah can provide typical middleware services like caching of connections, query results,
+
+82
+00:07:08,000 --> 00:07:16,000
+et cetera, load balancing, logging and auditing a single driver can handle any database provided some
+
+83
+00:07:16,000 --> 00:07:17,000
+the middle less courses.
+
+84
+00:07:18,000 --> 00:07:20,000
+I'm on disadvantages of this type of drama.
+
+85
+00:07:20,000 --> 00:07:26,000
+We shouldn't forget about the next ones, requires database specific coding to be done in the middle
+
+86
+00:07:26,000 --> 00:07:26,000
+tyre.
+
+87
+00:07:27,000 --> 00:07:34,000
+Let me know well there and it may result in additional latency, but is typically overcome by using
+
+88
+00:07:34,000 --> 00:07:35,000
+better middleware services.
+
+89
+00:07:36,000 --> 00:07:43,000
+That four connects directly to the database by converting GDP scores into database specific calls,
+
+90
+00:07:44,000 --> 00:07:53,000
+the B c type four driver, also known as a direct database Pure Java driver, is a database driver implementations
+
+91
+00:07:53,000 --> 00:08:00,000
+that converts basic calls directly into vendor specific database protocol written completely in Java
+
+92
+00:08:01,000 --> 00:08:08,000
+that for drivers as thus platform independent, they install inside the Java virtual machine of the
+
+93
+00:08:08,000 --> 00:08:09,000
+client.
+
+94
+00:08:09,000 --> 00:08:16,000
+This provides better performance isn't the type one and type two drivers, as it doesn't have the overhead
+
+95
+00:08:16,000 --> 00:08:21,000
+of conversion, of course, into B C O Database API calls.
+
+96
+00:08:22,000 --> 00:08:26,000
+Unlike the types three drivers, it doesn't need associated software to work.
+
+97
+00:08:27,000 --> 00:08:32,000
+Advantages are completely implemented in Java to achieve platform independence.
+
+98
+00:08:33,000 --> 00:08:41,000
+These drivers don't translate the requests into intermediary format, such as Odyssey Zygmunt application
+
+99
+00:08:41,000 --> 00:08:48,000
+connects directly to the database server, no translation or middleware layers I use, including performance.
+
+100
+00:08:49,000 --> 00:08:54,000
+The man can manage all aspects of the application to database connection.
+
+101
+00:08:54,000 --> 00:09:01,000
+This can facilitate debugging, and regarding these advantages, we must add that drivers database specific
+
+102
+00:09:02,000 --> 00:09:09,000
+has different database vendors to use widely different and usually proprietary network protocols.
+
+103
+00:09:09,000 --> 00:09:13,000
+But I believe this is not a critical disadvantage, considering all advantages.
+
+104
+00:09:14,000 --> 00:09:20,000
+Also, nowadays, all major databases have their own implementation of GitLab, and the only things
+
+105
+00:09:20,000 --> 00:09:26,000
+that you need to do is to add the basic driver into the class of your Java app.
+
+106
+00:09:27,000 --> 00:09:30,000
+So now, you know, different types of GBC driver.
+
+107
+00:09:31,000 --> 00:09:36,000
+Probably you already understood that we are going to learn how to work was GBC type four?
+
+108
+00:09:36,000 --> 00:09:39,000
+Let's recap one more time how it works.
+
+109
+00:09:39,000 --> 00:09:41,000
+We are going to have program code.
+
+110
+00:09:42,000 --> 00:09:44,000
+This can be any problem codes.
+
+111
+00:09:44,000 --> 00:09:52,000
+It performs operations with persistent storage in my course, Java from zero to the first job we create
+
+112
+00:09:52,000 --> 00:09:54,000
+online shop and the margins.
+
+113
+00:09:54,000 --> 00:10:01,000
+And during the user registration, we ran some codes that should store user before learning databases,
+
+114
+00:10:01,000 --> 00:10:03,000
+we store its users and file.
+
+115
+00:10:03,000 --> 00:10:10,000
+Now that code will interact with GDC API using standard interfaces.
+
+116
+00:10:10,000 --> 00:10:18,000
+GBC API will use implementation of the API, namely GBC driver for specific database management system
+
+117
+00:10:19,000 --> 00:10:24,000
+and Z Driver will set com Monsters database management system to execute sequel queries.
+
+118
+00:10:25,000 --> 00:10:28,000
+Here in the slides, you can see how it works.
+
+119
+00:10:29,000 --> 00:10:36,000
+Let's now have a lot of them, and I will show you how to add the busy driver to your app and establish
+
+120
+00:10:36,000 --> 00:10:37,000
+connection with the database.
+
+121
+00:10:38,000 --> 00:10:44,000
+In this lesson, we are going to do everything from configuration side to be sure that our development
+
+122
+00:10:44,000 --> 00:10:47,000
+environment is all set for the following lessons.
+
+123
+00:10:47,000 --> 00:10:54,000
+The first thing that we have to do is to get busy drivers that we need help to understand what driver
+
+124
+00:10:54,000 --> 00:10:57,000
+we need and where to download it very easily.
+
+125
+00:10:58,000 --> 00:11:01,000
+Just open your browser and make a Google search.
+
+126
+00:11:01,000 --> 00:11:04,000
+You have to type Mavin the wrapper for us.
+
+127
+00:11:04,000 --> 00:11:06,000
+This is a repository is a source.
+
+128
+00:11:06,000 --> 00:11:10,000
+A lot of artifacts libraries for Java development.
+
+129
+00:11:10,000 --> 00:11:15,000
+After that puts the name of your database management system and writes GBC.
+
+130
+00:11:16,000 --> 00:11:21,000
+Google search will show you page that should leave you to name a repository.
+
+131
+00:11:21,000 --> 00:11:24,000
+In our case, we have my school installed.
+
+132
+00:11:24,000 --> 00:11:27,000
+That's why I select my school connector.
+
+133
+00:11:28,000 --> 00:11:34,000
+Depending on the version of database management systems that you installed on your computer, you have
+
+134
+00:11:34,000 --> 00:11:36,000
+to select driver of the same version.
+
+135
+00:11:36,000 --> 00:11:40,000
+It will be enough to know at least major version now.
+
+136
+00:11:40,000 --> 00:11:43,000
+Case you installed my sequel of version eight.
+
+137
+00:11:44,000 --> 00:11:51,000
+That's why I select Here's the latest version available, and here we can download Java, then load
+
+138
+00:11:51,000 --> 00:11:52,000
+it on your PC.
+
+139
+00:11:53,000 --> 00:12:01,000
+Once, to the knowledge, we have to add that into the ClassPass of your project in I.D. In our case,
+
+140
+00:12:01,000 --> 00:12:02,000
+we are going to use Eclipse.
+
+141
+00:12:03,000 --> 00:12:09,000
+Let me quickly show you how to that external John to ClassPass in Eclipse Mouse.
+
+142
+00:12:09,000 --> 00:12:16,000
+Click on your project after that select Built Boss and after that, click on Configure Builds Pass Select
+
+143
+00:12:16,000 --> 00:12:17,000
+Libraries tab.
+
+144
+00:12:18,000 --> 00:12:20,000
+Click on ClassPass Boss.
+
+145
+00:12:20,000 --> 00:12:23,000
+And after that, click on Add External Jar.
+
+146
+00:12:23,000 --> 00:12:26,000
+After we can click Apply Close.
+
+147
+00:12:27,000 --> 00:12:27,000
+Great.
+
+148
+00:12:28,000 --> 00:12:35,000
+Now we have my sequel GBC Driver in our class boss, and we are ready to proceed with writing the code
+
+149
+00:12:35,000 --> 00:12:37,000
+to establish connection with our database.
+
+150
+00:12:38,000 --> 00:12:44,000
+All examples related to GDC will be stored in the separate package that is called GDC.
+
+151
+00:12:45,000 --> 00:12:51,000
+You can find the reference to the court examples that I'm going to show you in this lesson in attachments
+
+152
+00:12:51,000 --> 00:12:52,000
+to the lesson.
+
+153
+00:12:53,000 --> 00:12:55,000
+And now we are going through U.
+
+154
+00:12:55,000 --> 00:12:59,000
+S. Connection example file in this file, we have made massive.
+
+155
+00:13:00,000 --> 00:13:01,000
+And we can run it.
+
+156
+00:13:01,000 --> 00:13:05,000
+Let me go line by line to explain what we have here.
+
+157
+00:13:06,000 --> 00:13:13,000
+If you try to find tutorial in the internet about establishing connection with the database, most likely
+
+158
+00:13:13,000 --> 00:13:20,000
+you will find a lot of tutorials, whereas the first step is uploading driver loss into class boss in
+
+159
+00:13:20,000 --> 00:13:23,000
+a modern environment and in our environments setup.
+
+160
+00:13:24,000 --> 00:13:31,000
+This is not needed since all UBC drivers at the fountains across ClassPass automatically loaded, but
+
+161
+00:13:31,000 --> 00:13:38,000
+just in case I leave comments lines of code that demonstrates how to upload a class into a G.M..
+
+162
+00:13:39,000 --> 00:13:40,000
+Why is this is needed?
+
+163
+00:13:40,000 --> 00:13:49,000
+I mean, the lower driver class when you load driver class like this, or it is loaded into G.M. automatically,
+
+164
+00:13:49,000 --> 00:13:53,000
+according to general rules, static initialization is executed.
+
+165
+00:13:54,000 --> 00:14:00,000
+So let's open driver clusters code and investigate what is in the aesthetic consideration.
+
+166
+00:14:00,000 --> 00:14:05,000
+Love my school connector has open source code available on the top.
+
+167
+00:14:06,000 --> 00:14:11,000
+And here's how a driver class looks like you can find steady consolidation.
+
+168
+00:14:11,000 --> 00:14:17,000
+Look here where driver manager is used to register instance of the current driver.
+
+169
+00:14:18,000 --> 00:14:20,000
+That's why it is enough.
+
+170
+00:14:20,000 --> 00:14:26,000
+This class just to be loaded into the gym to perform all necessary configurations.
+
+171
+00:14:27,000 --> 00:14:34,000
+But as I said in our case, Joe will identify a driver in the class bus automatically and will load
+
+172
+00:14:34,000 --> 00:14:42,000
+driver class driver manager is one out of many classes from Java School Package that will use basically
+
+173
+00:14:42,000 --> 00:14:45,000
+Angeliki all classes related to school.
+
+174
+00:14:45,000 --> 00:14:52,000
+A group into Java School Package Driver Manager is a clause that is responsible for managing GBC.
+
+175
+00:14:52,000 --> 00:14:57,000
+Drivers also will use this class to create objects of connection type.
+
+176
+00:14:57,000 --> 00:15:00,000
+This will be used to execute SQL statements.
+
+177
+00:15:00,000 --> 00:15:06,000
+Once we are sure that driver is uploaded into the JVM, we need to establish connection.
+
+178
+00:15:07,000 --> 00:15:14,000
+Similar to other resources, we need to make sure that all resources are properly closed after they
+
+179
+00:15:14,000 --> 00:15:15,000
+were used.
+
+180
+00:15:16,000 --> 00:15:19,000
+That's why we use drivers resources below.
+
+181
+00:15:19,000 --> 00:15:25,000
+If you're not familiar with this blog, review the details in my complete Java course.
+
+182
+00:15:25,000 --> 00:15:33,000
+In the input output stream, top insured resources declared in Trailers Resources blog will be automatically
+
+183
+00:15:33,000 --> 00:15:36,000
+closed after the blog will be completely executed.
+
+184
+00:15:37,000 --> 00:15:42,000
+Java guarantees this and responsible for proper closure of their sources.
+
+185
+00:15:43,000 --> 00:15:49,000
+You can put on this blog only Typekit that implements articles about interface.
+
+186
+00:15:50,000 --> 00:15:56,000
+We use drama manager to get connection object, get connection mass, it is overloaded and we can use
+
+187
+00:15:56,000 --> 00:15:58,000
+different versions of it.
+
+188
+00:15:59,000 --> 00:16:00,000
+But there is the same.
+
+189
+00:16:01,000 --> 00:16:06,000
+You have to pass host of your SQL server where that the base is located and credentials.
+
+190
+00:16:07,000 --> 00:16:13,000
+You can see that overloaded masses might take is a string, and properties and brokerages says this
+
+191
+00:16:13,000 --> 00:16:16,000
+case will contain information about user and passwords.
+
+192
+00:16:17,000 --> 00:16:18,000
+Or you can pass one concatenate.
+
+193
+00:16:18,000 --> 00:16:23,000
+A string was all acquired information on three separate suites.
+
+194
+00:16:23,000 --> 00:16:25,000
+In our case, we pass three strings.
+
+195
+00:16:26,000 --> 00:16:28,000
+Let's look at what actually would pass here.
+
+196
+00:16:29,000 --> 00:16:33,000
+We concatenate hostname and database name as a first message argument.
+
+197
+00:16:34,000 --> 00:16:36,000
+After that, we pass user and password.
+
+198
+00:16:37,000 --> 00:16:43,000
+Definitely storing database credentials in the source code file is not the best practice, but for demo
+
+199
+00:16:43,000 --> 00:16:46,000
+purposes and for first, the basic program.
+
+200
+00:16:46,000 --> 00:16:48,000
+I believe for this, OK?
+
+201
+00:16:48,000 --> 00:16:54,000
+Later, when we will keep implementing our online store, I will show you where to put credentials.
+
+202
+00:16:55,000 --> 00:17:01,000
+Database name is the one that we created together in the last database.
+
+203
+00:17:01,000 --> 00:17:08,000
+If you remember, we created a database for our online store project here just to use its name.
+
+204
+00:17:09,000 --> 00:17:14,000
+Name of the schema, user and passwords is pretty clear and simple.
+
+205
+00:17:14,000 --> 00:17:22,000
+But let's look at the host name and understand how it looks like it contains that prefix and actually
+
+206
+00:17:22,000 --> 00:17:23,000
+is a euro.
+
+207
+00:17:23,000 --> 00:17:26,000
+This a host where our SQL server is running.
+
+208
+00:17:27,000 --> 00:17:31,000
+In our case, this is localhost and default port.
+
+209
+00:17:32,000 --> 00:17:35,000
+But how did they define which graphics to use?
+
+210
+00:17:35,000 --> 00:17:39,000
+Because it's a little bit different for connection with different database management systems.
+
+211
+00:17:39,000 --> 00:17:44,000
+This year, around establishes a database connection was a Java embedded driver.
+
+212
+00:17:45,000 --> 00:17:53,000
+The Java DB also includes and that's where Client Driver, which uses a different URL typically in the
+
+213
+00:17:53,000 --> 00:17:53,000
+database you.
+
+214
+00:17:54,000 --> 00:18:02,000
+You use the B c word column and database management system name, for example, to create the URL to
+
+215
+00:18:02,000 --> 00:18:04,000
+establish connection with their database.
+
+216
+00:18:05,000 --> 00:18:08,000
+You would write GBC Derbyshire for possibly a.
+
+217
+00:18:09,000 --> 00:18:15,000
+You will use PostgreSQL words here, and we establish in connection to my SQL that the best measurement
+
+218
+00:18:15,000 --> 00:18:16,000
+system.
+
+219
+00:18:16,000 --> 00:18:18,000
+That's why I have my sequel here.
+
+220
+00:18:19,000 --> 00:18:19,000
+Do you understand?
+
+221
+00:18:20,000 --> 00:18:26,000
+Anyway, you can always check this kind of detail in the documentation or by simply searching the internet.
+
+222
+00:18:27,000 --> 00:18:29,000
+The main part and that should be followed here.
+
+223
+00:18:29,000 --> 00:18:33,000
+I describe after we called get a connection method.
+
+224
+00:18:34,000 --> 00:18:36,000
+The connection variable should be initialized.
+
+225
+00:18:37,000 --> 00:18:41,000
+If for some reason it is now, that means connection wasn't that thing.
+
+226
+00:18:42,000 --> 00:18:48,000
+If it is not now, then let's congratulate ourselves with successfully established connection.
+
+227
+00:18:49,000 --> 00:18:55,000
+Let's run our application and we can see that connection established successfully.
+
+228
+00:18:56,000 --> 00:18:59,000
+Your connection may throw a sequel exception.
+
+229
+00:18:59,000 --> 00:19:04,000
+It may be thrown if a database access error occurs was a URL.
+
+230
+00:19:04,000 --> 00:19:10,000
+Is now also a child exception, maybe strong that is sequel to Mount Exception.
+
+231
+00:19:11,000 --> 00:19:17,000
+It may be thrown when the driver has determined that the timeout specified by the set logging timeout
+
+232
+00:19:17,000 --> 00:19:24,000
+method has been ICSI and has at least tried to cancel the current database connection at them.
+
+233
+00:19:25,000 --> 00:19:28,000
+That's why I handle potential SQL exception here.
+
+234
+00:19:29,000 --> 00:19:33,000
+That's it, and you can see that connection is successfully established.
+
+235
+00:19:33,000 --> 00:19:34,000
+Congrats.
+
+236
+00:19:35,000 --> 00:19:38,000
+That's all what I plans to cover in this lesson.
+
+237
+00:19:38,000 --> 00:19:40,000
+Let's recap what we have learned today.
+
+238
+00:19:41,000 --> 00:19:49,000
+In this lesson, we hold GDC overview and learn what is the B C s Valorant different GBC driver types?
+
+239
+00:19:50,000 --> 00:19:51,000
+I explained you.
+
+240
+00:19:51,000 --> 00:19:55,000
+What are the B c es after this lesson?
+
+241
+00:19:55,000 --> 00:19:57,000
+I believe you have understanding how do the do works?
+
+242
+00:19:58,000 --> 00:20:06,000
+And in real life example, I showed you how to add GBC driver into a Java project and establish connection
+
+243
+00:20:06,000 --> 00:20:08,000
+from your Java program with a database.
+
+244
+00:20:08,000 --> 00:20:11,000
+Now we are ready for the next lesson.
+
+245
+00:20:12,000 --> 00:20:13,000
+That's it for this lesson.
+
+246
+00:20:14,000 --> 00:20:15,000
+Thanks a lot for your attention.
+
+247
+00:20:15,000 --> 00:20:18,000
+Have a great day and see you in the next lesson.
+
diff --git a/52 - JDBC/001 Source-code-example-from-the-lesson.url b/52 - JDBC/001 Source-code-example-from-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..c910577e05609da03b72b876ba3e8f33af36b38d
--- /dev/null
+++ b/52 - JDBC/001 Source-code-example-from-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/jdbc
\ No newline at end of file
diff --git a/52 - JDBC/002 Source-code-example-from-the-lesson.url b/52 - JDBC/002 Source-code-example-from-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..c910577e05609da03b72b876ba3e8f33af36b38d
--- /dev/null
+++ b/52 - JDBC/002 Source-code-example-from-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/jdbc
\ No newline at end of file
diff --git a/52 - JDBC/002 Statement, PreparedStatement & CallableStatement_en.srt b/52 - JDBC/002 Statement, PreparedStatement & CallableStatement_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..e4cf92bdbcb0f783298237945f96ad795c12a85c
--- /dev/null
+++ b/52 - JDBC/002 Statement, PreparedStatement & CallableStatement_en.srt
@@ -0,0 +1,1076 @@
+1
+00:00:06,000 --> 00:00:12,000
+Hello again in this lesson, we keep learning GDC, and today we will learn how to execute cycle statements
+
+2
+00:00:12,000 --> 00:00:20,000
+from our application and how we can pass results from the database to process this data further inside
+
+3
+00:00:20,000 --> 00:00:21,000
+our program.
+
+4
+00:00:22,000 --> 00:00:25,000
+We'll start from learn of what statement is.
+
+5
+00:00:25,000 --> 00:00:31,000
+I will show you main message that will help you to execute school queries against anatomies.
+
+6
+00:00:32,000 --> 00:00:36,000
+These mascots are execute, execute, query and execute updates.
+
+7
+00:00:37,000 --> 00:00:40,000
+We're going to review different examples with these masses.
+
+8
+00:00:41,000 --> 00:00:46,000
+Also, I'm going to show you how to read results through chance films that need me with the help of
+
+9
+00:00:46,000 --> 00:00:51,000
+results set and in order, you could read data from results in the proper format.
+
+10
+00:00:51,000 --> 00:00:56,000
+We're going to the mapping between SQL data types and Java data types.
+
+11
+00:00:57,000 --> 00:01:02,000
+After that, I will explain what school injections are and how we can avoid them.
+
+12
+00:01:02,000 --> 00:01:05,000
+With the help of the prepared statement and the answers.
+
+13
+00:01:05,000 --> 00:01:10,000
+The lesson will learn how to invoke stored procedures and what callable statement is.
+
+14
+00:01:11,000 --> 00:01:14,000
+Today we're going to have practical lesson was a lot of examples.
+
+15
+00:01:15,000 --> 00:01:19,000
+So let me start with screen sharing and some code examples.
+
+16
+00:01:20,000 --> 00:01:26,000
+And the first thing that I'd like to start with is executing statements against database from our Java
+
+17
+00:01:26,000 --> 00:01:26,000
+program.
+
+18
+00:01:27,000 --> 00:01:33,000
+In the previous lessons learned how to establish connection to database we GDC driver.
+
+19
+00:01:33,000 --> 00:01:37,000
+Make sure you watch the previous lesson because this is important.
+
+20
+00:01:37,000 --> 00:01:44,000
+And before we learn statement plus and how to work with it, we need to do small refactoring in our
+
+21
+00:01:44,000 --> 00:01:47,000
+code to make sure we are efficient.
+
+22
+00:01:47,000 --> 00:01:53,000
+In the following examples you saw in previous lesson how to get the connection object and take into
+
+23
+00:01:53,000 --> 00:01:54,000
+account.
+
+24
+00:01:54,000 --> 00:01:57,000
+We would need connection, object and a lot of times.
+
+25
+00:01:57,000 --> 00:01:59,000
+Basically, in each our example.
+
+26
+00:02:00,000 --> 00:02:05,000
+That's why it is a good idea to which repeatable code and move it into one plus.
+
+27
+00:02:06,000 --> 00:02:14,000
+Here I have class this code DB utils in a static method get connection that creates objects of connection
+
+28
+00:02:14,000 --> 00:02:17,000
+time and returns as a reference to the object.
+
+29
+00:02:18,000 --> 00:02:25,000
+Having this Glosson, this method would save my time by not writing all this code all the times, including
+
+30
+00:02:25,000 --> 00:02:26,000
+exception handling.
+
+31
+00:02:27,000 --> 00:02:28,000
+Does it make sense?
+
+32
+00:02:28,000 --> 00:02:32,000
+And now let's learn how to work with statement loss.
+
+33
+00:02:32,000 --> 00:02:38,000
+Let me open another example file is called GDC statement select example.
+
+34
+00:02:39,000 --> 00:02:43,000
+We have made massive here that will allow us to start the program.
+
+35
+00:02:44,000 --> 00:02:49,000
+So let's start from review of this massive I connection.
+
+36
+00:02:50,000 --> 00:02:55,000
+After that, I create statement object based on my connection object.
+
+37
+00:02:55,000 --> 00:02:59,000
+I just co-create statement without any parameters.
+
+38
+00:02:59,000 --> 00:03:06,000
+Statement object is used for an aesthetic SQL statement and the returns results it produces.
+
+39
+00:03:07,000 --> 00:03:14,000
+In previous lesson, we learned that we should close connection object the same sync we have to do with
+
+40
+00:03:14,000 --> 00:03:15,000
+statement object.
+
+41
+00:03:15,000 --> 00:03:22,000
+It is a good practice to close statements, to statement time extents at a plausible interface.
+
+42
+00:03:22,000 --> 00:03:25,000
+That's why we can also put it in.
+
+43
+00:03:25,000 --> 00:03:26,000
+The try was resources block.
+
+44
+00:03:27,000 --> 00:03:33,000
+And here is where knowledge of sequel will come in handy because you need to have equal knowledge to
+
+45
+00:03:33,000 --> 00:03:35,000
+create SQL statements.
+
+46
+00:03:35,000 --> 00:03:37,000
+This will be used in statements object.
+
+47
+00:03:38,000 --> 00:03:43,000
+Let's create cyclase select statements of neutrons as all users from user table.
+
+48
+00:03:43,000 --> 00:03:51,000
+If you missed lessons about database or you just figured out our tables look like I will quickly remind
+
+49
+00:03:51,000 --> 00:03:58,000
+you, we created database where we also created tables that will represent our business in our applications
+
+50
+00:03:58,000 --> 00:04:01,000
+that we develop in our online store.
+
+51
+00:04:02,000 --> 00:04:07,000
+And one of such tables is user table that contains information about our users.
+
+52
+00:04:07,000 --> 00:04:12,000
+And here's how it looks like let's fetch information from this table.
+
+53
+00:04:13,000 --> 00:04:18,000
+This seamless query to fetch all data is select all from user.
+
+54
+00:04:19,000 --> 00:04:21,000
+Let's get back to our general application now.
+
+55
+00:04:22,000 --> 00:04:29,000
+Now, we're sea to talk about Statement Object has three main assets to work with.
+
+56
+00:04:30,000 --> 00:04:38,000
+All of them executed SQL statement against database zero execute, execute, query and execute update.
+
+57
+00:04:39,000 --> 00:04:42,000
+Let's find out what is the difference between these methods.
+
+58
+00:04:42,000 --> 00:04:48,000
+All these massive stakes drink massive argument is that a sequel query that we are going to execute?
+
+59
+00:04:49,000 --> 00:04:55,000
+The main difference is in the return values, for example, execute mass returns.
+
+60
+00:04:55,000 --> 00:04:57,000
+Boolean value true is return.
+
+61
+00:04:57,000 --> 00:05:05,000
+If return type is a result, set object and forces return when returns value is an ability to count
+
+62
+00:05:05,000 --> 00:05:06,000
+closer and the results.
+
+63
+00:05:07,000 --> 00:05:13,000
+They remember that when we execute a sequel statements in my school workbench, for example, and we
+
+64
+00:05:13,000 --> 00:05:21,000
+execute that update query or insert query we saw in looks number of rows in proxies was query, and
+
+65
+00:05:21,000 --> 00:05:25,000
+then keys will receive no execute mass that will return false.
+
+66
+00:05:26,000 --> 00:05:31,000
+But when we executed select statement in database, we received table was values.
+
+67
+00:05:31,000 --> 00:05:36,000
+This is called the results set and includes results set is returned.
+
+68
+00:05:36,000 --> 00:05:38,000
+We received two in this message.
+
+69
+00:05:39,000 --> 00:05:45,000
+Technically speaking, you can execute all kinds of queries via execute mass, but execution of select
+
+70
+00:05:45,000 --> 00:05:47,000
+statements totally makes no sense.
+
+71
+00:05:47,000 --> 00:05:55,000
+We execute massive understand why, and also, it is not a lot of sense in execution of queries.
+
+72
+00:05:55,000 --> 00:05:58,000
+If you want to see count of rows in part, that was sequel query.
+
+73
+00:05:59,000 --> 00:06:05,000
+Probably the only case when you might want to use execute method use case when you execute dynamically.
+
+74
+00:06:05,000 --> 00:06:10,000
+Unknown SQL statement If you want to get results, set objects in response.
+
+75
+00:06:11,000 --> 00:06:20,000
+We need to use, execute, query, mass, execute, query mass returns results set as you already understand
+
+76
+00:06:20,000 --> 00:06:26,000
+object of results that will allow you to read all rows as it was returned by database.
+
+77
+00:06:26,000 --> 00:06:31,000
+Line by line and execute these massive returns in value.
+
+78
+00:06:32,000 --> 00:06:35,000
+Nobody understands what is this value?
+
+79
+00:06:35,000 --> 00:06:40,000
+Is it a zero count that was impacted by school statement?
+
+80
+00:06:40,000 --> 00:06:45,000
+Basically, we can receive the same number here in Java program.
+
+81
+00:06:45,000 --> 00:06:51,000
+For example, insert, update or delete statements, which is a number of rows.
+
+82
+00:06:51,000 --> 00:06:53,000
+In fact, it was a query execution.
+
+83
+00:06:53,000 --> 00:07:00,000
+So this massive is not suitable for select statements because again, when we execute select statements,
+
+84
+00:07:01,000 --> 00:07:03,000
+we count on receiving some detailed response.
+
+85
+00:07:04,000 --> 00:07:10,000
+That's why so radically it makes sense to execute, insert, update or delete queries.
+
+86
+00:07:10,000 --> 00:07:11,000
+Execute, update mass.
+
+87
+00:07:12,000 --> 00:07:19,000
+So then the now is the difference between these three masses and what message do we need to use?
+
+88
+00:07:19,000 --> 00:07:21,000
+And then a select statement example.
+
+89
+00:07:21,000 --> 00:07:22,000
+You are right.
+
+90
+00:07:22,000 --> 00:07:24,000
+We need to use, execute, query mass.
+
+91
+00:07:25,000 --> 00:07:27,000
+Let's get back to our demo file.
+
+92
+00:07:28,000 --> 00:07:31,000
+Now, let's talk a little bit more about results set.
+
+93
+00:07:33,000 --> 00:07:41,000
+Results set is a table of data representing that the least result set, this subject maintains a cursor
+
+94
+00:07:41,000 --> 00:07:44,000
+pointing to its current row of data.
+
+95
+00:07:44,000 --> 00:07:49,000
+Initially, the cursor is positioned before the first row.
+
+96
+00:07:49,000 --> 00:07:53,000
+The next massive move the cursor does the next row.
+
+97
+00:07:54,000 --> 00:08:00,000
+Next, mass protests force one zero and no more rows as a result set object.
+
+98
+00:08:00,000 --> 00:08:09,000
+That's why this massive can be used in whilo to iterate over all the rows in results set by default.
+
+99
+00:08:09,000 --> 00:08:15,000
+Only one result said object per statement object can be opened at the same time.
+
+100
+00:08:15,000 --> 00:08:22,000
+Therefore, if the reading of one result set object is interleaved with the reading of the.
+
+101
+00:08:23,000 --> 00:08:29,000
+Each must have been generated by different statement objects, all execution mass.
+
+102
+00:08:29,000 --> 00:08:35,000
+In the statement, the interface implies a close occurrence results at object of the statement.
+
+103
+00:08:35,000 --> 00:08:42,000
+If an open one exists, but nevertheless close enough results, Seth is considered to be a good practice.
+
+104
+00:08:43,000 --> 00:08:45,000
+That's why I put results set in.
+
+105
+00:08:45,000 --> 00:08:53,000
+Try was resources block here, and when we have results set, we can iterate over each row going one
+
+106
+00:08:53,000 --> 00:08:54,000
+by one.
+
+107
+00:08:55,000 --> 00:09:03,000
+I create while loop here and call next mass to move on that there's a next throw and to make sure that
+
+108
+00:09:03,000 --> 00:09:06,000
+the next rule exists in the results set.
+
+109
+00:09:06,000 --> 00:09:15,000
+After that, I can extract values from as a result, said Roe, was get less interested in seeing that
+
+110
+00:09:15,000 --> 00:09:22,000
+you can extract the values of this already in Java, the time there is a map in between sequel data
+
+111
+00:09:22,000 --> 00:09:24,000
+types and Java data types.
+
+112
+00:09:24,000 --> 00:09:25,000
+Let's review.
+
+113
+00:09:27,000 --> 00:09:32,000
+On this slide, you can see mapping between data types that are familiar to you from database management
+
+114
+00:09:32,000 --> 00:09:34,000
+system and from Java.
+
+115
+00:09:35,000 --> 00:09:43,000
+For example, if fields in database is a virtual data type, that means that you can put it in stream
+
+116
+00:09:43,000 --> 00:09:44,000
+data that.
+
+117
+00:09:45,000 --> 00:09:55,000
+If there is a tiny in data type that is equivalent of integer in Java, it makes sense and results that
+
+118
+00:09:55,000 --> 00:09:59,000
+has masses that allow you to extract value of specific data time.
+
+119
+00:10:00,000 --> 00:10:01,000
+Let's get back to our demo.
+
+120
+00:10:03,000 --> 00:10:10,000
+And Nine's data times that you want to extract, you have to promise mess that answers that all matters
+
+121
+00:10:10,000 --> 00:10:19,000
+are overloaded they can take is an argument those three arguments and value will indicate in the course
+
+122
+00:10:19,000 --> 00:10:27,000
+of a column, considering that order of columns may be changed and new columns may be added.
+
+123
+00:10:27,000 --> 00:10:30,000
+This is not something we can always rely on.
+
+124
+00:10:30,000 --> 00:10:37,000
+That's why it is recommended to extract value from column by column name, and you can seize it.
+
+125
+00:10:37,000 --> 00:10:43,000
+I pass column Nathan slabs of values that I need that tensions.
+
+126
+00:10:43,000 --> 00:10:48,000
+This is exactly the name of a column like it is named in the database.
+
+127
+00:10:49,000 --> 00:10:55,000
+I extract the first name, last name and email for each user.
+
+128
+00:10:56,000 --> 00:10:59,000
+Let's run this program and see what we have.
+
+129
+00:10:59,000 --> 00:11:00,000
+And so.
+
+130
+00:11:00,000 --> 00:11:04,000
+And as you can see, we printed information about each user.
+
+131
+00:11:05,000 --> 00:11:08,000
+They understand how we can execute select statements.
+
+132
+00:11:09,000 --> 00:11:11,000
+Muscles super complex agreed.
+
+133
+00:11:12,000 --> 00:11:19,000
+Now, let me show you obvious example, this example has a lot of in common with the previous one.
+
+134
+00:11:20,000 --> 00:11:22,000
+Let's focus on the sea.
+
+135
+00:11:22,000 --> 00:11:23,000
+Is it a different?
+
+136
+00:11:24,000 --> 00:11:26,000
+We have different SQL statements here.
+
+137
+00:11:27,000 --> 00:11:35,000
+This storm, we are going to update the amount of money for User ID 17 and instead of executed query,
+
+138
+00:11:36,000 --> 00:11:38,000
+I call execute update massive.
+
+139
+00:11:39,000 --> 00:11:42,000
+And after that, I agreed to consult amount of rules.
+
+140
+00:11:42,000 --> 00:11:44,000
+Is it the impact that the possibility of wearing?
+
+141
+00:11:45,000 --> 00:11:52,000
+I believe you already understood how this thinks about all the examples from this lesson will be in
+
+142
+00:11:52,000 --> 00:11:53,000
+attachments.
+
+143
+00:11:53,000 --> 00:11:54,000
+There's a lesson.
+
+144
+00:11:54,000 --> 00:11:57,000
+So feel free to investigate this by yourself.
+
+145
+00:11:58,000 --> 00:12:02,000
+You can find those examples was delete and insert statements.
+
+146
+00:12:03,000 --> 00:12:09,000
+I believe that we are more or less clear on how statements are less than prepared statements now.
+
+147
+00:12:10,000 --> 00:12:12,000
+But before the then prepared statements.
+
+148
+00:12:12,000 --> 00:12:18,000
+Let me show you one of the problems that we have learned to solve with the help of prepared statements.
+
+149
+00:12:20,000 --> 00:12:28,000
+One of the malicious attacks in Web applications are sequel injections, sequel injection is a web security
+
+150
+00:12:28,000 --> 00:12:37,000
+vulnerability that allows and target the interfere was Aquaris Z and application makes its database.
+
+151
+00:12:38,000 --> 00:12:44,000
+It generally allows in a pocket to view data that they're not normally able to retrieve.
+
+152
+00:12:44,000 --> 00:12:52,000
+This might include data belonging to Aussie users or any other data as its application self is able
+
+153
+00:12:52,000 --> 00:13:01,000
+to access in many cases, and Typekit can modify as data, causing persistent changes to the applications,
+
+154
+00:13:01,000 --> 00:13:02,000
+content or behaviour.
+
+155
+00:13:03,000 --> 00:13:07,000
+For example, I talked to my query passwords of users.
+
+156
+00:13:07,000 --> 00:13:15,000
+I'll get Aussies sensitive data, zao wide variety of SQL injection vulnerabilities, attacks and techniques
+
+157
+00:13:16,000 --> 00:13:18,000
+which arise in different situations.
+
+158
+00:13:18,000 --> 00:13:26,000
+Some common SQL injection examples include retrieving hidden data where you can modify and SQL query
+
+159
+00:13:26,000 --> 00:13:28,000
+through June additional results.
+
+160
+00:13:29,000 --> 00:13:38,000
+Subverting application logic where you can change a query to interfere with the applications logic union
+
+161
+00:13:38,000 --> 00:13:44,000
+attacks, where you can retrieve data from different that the base tables next to mine is the database
+
+162
+00:13:45,000 --> 00:13:50,000
+where you can extract information about the version and structure of the database.
+
+163
+00:13:51,000 --> 00:13:58,000
+Blind SQL injection was the results of the query control and not returns in the applications responses.
+
+164
+00:13:59,000 --> 00:14:07,000
+Let's imagine now that we have online shop and we pass category name as URL parameter like it is shown
+
+165
+00:14:07,000 --> 00:14:08,000
+on this slide.
+
+166
+00:14:08,000 --> 00:14:17,000
+And imagine that the category parameter is used in our statement in Java code, namely would take value
+
+167
+00:14:17,000 --> 00:14:22,000
+of category parameter and use it to concatenate our SQL statement.
+
+168
+00:14:23,000 --> 00:14:30,000
+This request triggers squaring where I extract all products from category computers, for example,
+
+169
+00:14:30,000 --> 00:14:32,000
+and status status:active.
+
+170
+00:14:33,000 --> 00:14:40,000
+Probably you're seeing what might be wrong here, but what would happen if I would add double five cents
+
+171
+00:14:40,000 --> 00:14:41,000
+in the URL?
+
+172
+00:14:42,000 --> 00:14:47,000
+This means that these double hyphens will be added to the sequel statement.
+
+173
+00:14:47,000 --> 00:14:53,000
+Double hyphens means commas in sequel syntax and amerson.
+
+174
+00:14:53,000 --> 00:14:56,000
+What will go after them will be treated as a commons.
+
+175
+00:14:57,000 --> 00:15:05,000
+Thus, you will extract all products in active and inactive status that understands us now or imagines
+
+176
+00:15:05,000 --> 00:15:08,000
+that the past category parameter was unknown.
+
+177
+00:15:08,000 --> 00:15:15,000
+Keyword and in union statement, you can pass another sequel statement to query the tables.
+
+178
+00:15:16,000 --> 00:15:23,000
+Thus, I talked to my extract information that he or she were not supposed to have access to.
+
+179
+00:15:23,000 --> 00:15:27,000
+Can you imagine now what potential impact might be?
+
+180
+00:15:28,000 --> 00:15:32,000
+That's why securing your app from SQL injections is so important.
+
+181
+00:15:33,000 --> 00:15:38,000
+And let's learn now how we can secure ourselves from SQL injections.
+
+182
+00:15:39,000 --> 00:15:41,000
+Now you know what SQL injection is.
+
+183
+00:15:41,000 --> 00:15:43,000
+Let's find out what we can do with that.
+
+184
+00:15:45,000 --> 00:15:52,000
+One of the ways to avoid SQL injections is to use prepared statement, because prepared statement defines
+
+185
+00:15:52,000 --> 00:16:00,000
+a single query template and lets client only define parameters, values you prepared statement and after
+
+186
+00:16:00,000 --> 00:16:08,000
+that, we only need to populate parameters in that suit by using parametric queries and prepared statement.
+
+187
+00:16:09,000 --> 00:16:17,000
+You prevent many forms of SQL injection because all the parameters passed as part of the placeholders
+
+188
+00:16:17,000 --> 00:16:20,000
+will be escaped automatically by the C driver.
+
+189
+00:16:21,000 --> 00:16:24,000
+But this is not the only advantage of prepared statement.
+
+190
+00:16:25,000 --> 00:16:28,000
+Also, prepared statements have better performance.
+
+191
+00:16:29,000 --> 00:16:36,000
+SQL queries post does a prepared statement Massive got a database for completion immediately.
+
+192
+00:16:36,000 --> 00:16:45,000
+We see drivers course if a dozen zent per compilation occurs when you executes prepared queries, press
+
+193
+00:16:45,000 --> 00:16:52,000
+statement queries operate compile tons of database and access plans will be used to execute further
+
+194
+00:16:52,000 --> 00:16:59,000
+queries, which allows them to execute much faster than normal queries generated by statement object.
+
+195
+00:17:00,000 --> 00:17:06,000
+You should always try to use prepared statement in the production of the B C code to reduce the load
+
+196
+00:17:06,000 --> 00:17:09,000
+on the database in order to get a performance benefit.
+
+197
+00:17:09,000 --> 00:17:17,000
+It is, of course, nothing to use only a parameterized version of SQL query and not with string impersonation.
+
+198
+00:17:18,000 --> 00:17:24,000
+And last but not least, advantage of prepared statement is obvious it allows you to create parameterized
+
+199
+00:17:24,000 --> 00:17:32,000
+SQL queries and sent different parameters by using the same SQL queries you can use question mark and
+
+200
+00:17:32,000 --> 00:17:36,000
+the query as a placeholder is substituted by any other value.
+
+201
+00:17:37,000 --> 00:17:39,000
+Enough CRM a prepared statement.
+
+202
+00:17:40,000 --> 00:17:41,000
+Let's look at examples.
+
+203
+00:17:42,000 --> 00:17:48,000
+I put all examples related to prepared statements in a separate package is that the squad prepared statements,
+
+204
+00:17:49,000 --> 00:17:56,000
+basically, all queries here performs the same operation as an example with statement, but was only
+
+205
+00:17:56,000 --> 00:17:57,000
+one difference.
+
+206
+00:17:57,000 --> 00:18:01,000
+I use prepared statement type instead of statement.
+
+207
+00:18:01,000 --> 00:18:04,000
+Let's review insert example.
+
+208
+00:18:04,000 --> 00:18:11,000
+You can see that I have the same SQL statement as a previous example, but instead of values, I put
+
+209
+00:18:11,000 --> 00:18:13,000
+question marks here.
+
+210
+00:18:14,000 --> 00:18:16,000
+After that, I call prepared statement.
+
+211
+00:18:17,000 --> 00:18:22,000
+Massad gives the reference to the prepared statement object, and after that, I can.
+
+212
+00:18:22,000 --> 00:18:30,000
+Initialize each of these parameters was values I can set values of different types you can use as a
+
+213
+00:18:30,000 --> 00:18:35,000
+suggestion feature in your I.D. Then more info about available masses.
+
+214
+00:18:36,000 --> 00:18:38,000
+But all of them have intuitive meaning.
+
+215
+00:18:39,000 --> 00:18:43,000
+If you need to set string, just call sets three and massive.
+
+216
+00:18:44,000 --> 00:18:52,000
+If you need to set the integer, then need to invoke set end mass and so on that tensions of index number
+
+217
+00:18:52,000 --> 00:18:54,000
+one means the first position.
+
+218
+00:18:54,000 --> 00:18:55,000
+Of course not.
+
+219
+00:18:56,000 --> 00:19:00,000
+So we start not from zero, but from one.
+
+220
+00:19:00,000 --> 00:19:01,000
+Is it clear?
+
+221
+00:19:02,000 --> 00:19:05,000
+I'm here, I said values for each parameter.
+
+222
+00:19:06,000 --> 00:19:13,000
+And after that, I call execute update massive without any arguments and the queries executed.
+
+223
+00:19:14,000 --> 00:19:18,000
+Basically, that's how prepared statements were not complex complex.
+
+224
+00:19:20,000 --> 00:19:22,000
+I believe we had done was prepared statement.
+
+225
+00:19:23,000 --> 00:19:26,000
+And one more scene that I'd like to show you today.
+
+226
+00:19:26,000 --> 00:19:28,000
+It is callable statement.
+
+227
+00:19:28,000 --> 00:19:32,000
+The interface used to execute sequence stored procedures.
+
+228
+00:19:33,000 --> 00:19:39,000
+We learned in details what procedures are in our sequels section of the course.
+
+229
+00:19:40,000 --> 00:19:47,000
+That's why usually I started to see on the after students learned databases because without knowing
+
+230
+00:19:47,000 --> 00:19:53,000
+that, it is hard to understand such terms as stored procedures, for example.
+
+231
+00:19:54,000 --> 00:20:00,000
+Let me just quickly remind you what stored procedures are stored procedures, a group of statements
+
+232
+00:20:00,000 --> 00:20:07,000
+that we compile in the database for some past storage procedures, I've been official one.
+
+233
+00:20:07,000 --> 00:20:14,000
+We are dealing with multiple tables with complex scenario, and rather than sending multiple queries
+
+234
+00:20:14,000 --> 00:20:21,000
+to the database, we can send the required data to the storage procedure and have the logic executed
+
+235
+00:20:21,000 --> 00:20:23,000
+in the database server itself.
+
+236
+00:20:24,000 --> 00:20:31,000
+So to make sure you understand everything what I say, check Larsons databases.
+
+237
+00:20:31,000 --> 00:20:34,000
+In that course, we created stored procedures.
+
+238
+00:20:35,000 --> 00:20:37,000
+Let's not invoke one of them.
+
+239
+00:20:38,000 --> 00:20:46,000
+As usual, we create connection after that, and we'll prepare call massive IPOs SQL statement as it
+
+240
+00:20:46,000 --> 00:20:48,000
+should be my stored procedure.
+
+241
+00:20:49,000 --> 00:20:53,000
+Instead of that argument, I possibly hold it.
+
+242
+00:20:53,000 --> 00:21:01,000
+And after that, similar to a prepared statement, initialize argument with the value in specific position.
+
+243
+00:21:02,000 --> 00:21:09,000
+If you remember stored procedures, Zara might be different argument types in, out and in.
+
+244
+00:21:09,000 --> 00:21:16,000
+Now, in case you want to declare that one of the parameters is out parameter, you have to register
+
+245
+00:21:16,000 --> 00:21:16,000
+it first.
+
+246
+00:21:17,000 --> 00:21:19,000
+Like, here is a command line.
+
+247
+00:21:19,000 --> 00:21:22,000
+Argument index and argument time.
+
+248
+00:21:23,000 --> 00:21:30,000
+Pay attention that you should specify sequel type here, in my case, I have only one argument and it
+
+249
+00:21:30,000 --> 00:21:32,000
+is not out type argument.
+
+250
+00:21:33,000 --> 00:21:36,000
+That's why I keep this one command.
+
+251
+00:21:37,000 --> 00:21:39,000
+And after that, everything goes as usual.
+
+252
+00:21:40,000 --> 00:21:44,000
+We can call execute very massive returns as results set.
+
+253
+00:21:45,000 --> 00:21:52,000
+After that, we work with it, as in previous examples, in this particular case, my stored procedure
+
+254
+00:21:52,000 --> 00:22:00,000
+recount me user by email and in case you have out parameter and you want to read it, you can read it
+
+255
+00:22:00,000 --> 00:22:04,000
+from global statement object after you executed.
+
+256
+00:22:04,000 --> 00:22:06,000
+The query likens this example.
+
+257
+00:22:07,000 --> 00:22:11,000
+You read the Java times that you need to use and get masses.
+
+258
+00:22:12,000 --> 00:22:13,000
+Basically, that's it.
+
+259
+00:22:14,000 --> 00:22:17,000
+That's all what I wanted to learn with you in this lesson.
+
+260
+00:22:18,000 --> 00:22:21,000
+Let's recap what we have learned today.
+
+261
+00:22:22,000 --> 00:22:25,000
+They've announced a lot of things, and we had a lot of them.
+
+262
+00:22:26,000 --> 00:22:32,000
+Now you know what statement is and how to represent yourself, how to work with results, its object
+
+263
+00:22:33,000 --> 00:22:40,000
+when and mapping between cycle data types and Java data types in order to read data from results that
+
+264
+00:22:40,000 --> 00:22:40,000
+properly.
+
+265
+00:22:41,000 --> 00:22:49,000
+Now you know what SQL injection are and how it once was, how well prepared statement and at the end
+
+266
+00:22:49,000 --> 00:22:55,000
+of the lesson we learned with you callable statement, that's all what I wanted to share with you in
+
+267
+00:22:55,000 --> 00:22:56,000
+this lesson.
+
+268
+00:22:57,000 --> 00:22:58,000
+Thanks a lot for your attention.
+
+269
+00:22:58,000 --> 00:23:01,000
+Have a great day and see you in the next lesson.
+
diff --git a/52 - JDBC/003 Source-code-example-from-the-lesson.url b/52 - JDBC/003 Source-code-example-from-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..c910577e05609da03b72b876ba3e8f33af36b38d
--- /dev/null
+++ b/52 - JDBC/003 Source-code-example-from-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/jdbc
\ No newline at end of file
diff --git a/52 - JDBC/003 Transactions, Batch Updates and MetaData_en.srt b/52 - JDBC/003 Transactions, Batch Updates and MetaData_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..40d234e0bacd583767c057141dc33d29ed28cf27
--- /dev/null
+++ b/52 - JDBC/003 Transactions, Batch Updates and MetaData_en.srt
@@ -0,0 +1,1060 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello yesterday.
+
+2
+00:00:07,000 --> 00:00:12,000
+I'm happy watching this lesson, because today we're going to have not very long but super important
+
+3
+00:00:12,000 --> 00:00:15,000
+lessons for advanced usage of GDC.
+
+4
+00:00:15,000 --> 00:00:20,000
+Today, we're going to talk about transactions and virtual dates, a database.
+
+5
+00:00:21,000 --> 00:00:24,000
+We'll start from understanding of what transactions are.
+
+6
+00:00:24,000 --> 00:00:29,000
+We'll learn Siri and such basic requirements to transactions as acid.
+
+7
+00:00:30,000 --> 00:00:35,000
+After Understand the Siri unreal example will create Java program that uses transactions.
+
+8
+00:00:36,000 --> 00:00:42,000
+I'll show you how we can commit our transactions roll back transaction in case of error or roll back
+
+9
+00:00:42,000 --> 00:00:44,000
+all that required safe point.
+
+10
+00:00:44,000 --> 00:00:50,000
+Also in this lesson, I'm going to show you how we can make batch updates to the database to increase
+
+11
+00:00:50,000 --> 00:00:51,000
+performance of our app.
+
+12
+00:00:52,000 --> 00:00:56,000
+And then comes the lesson we'll talk about how to explore this amazing method.
+
+13
+00:00:56,000 --> 00:00:57,000
+Need that programmatically?
+
+14
+00:00:57,000 --> 00:00:59,000
+Let's start our lesson.
+
+15
+00:00:59,000 --> 00:01:02,000
+And the first things that we are going to do in our lesson.
+
+16
+00:01:02,000 --> 00:01:06,000
+Let's define what transaction is in programming.
+
+17
+00:01:06,000 --> 00:01:12,000
+We refer to transaction as a group of related actions that need to be performed as a single action.
+
+18
+00:01:13,000 --> 00:01:20,000
+In other words, a transaction is a logical unit of work whose effect is visible outside the transaction,
+
+19
+00:01:20,000 --> 00:01:23,000
+either in its entirety or not at all.
+
+20
+00:01:23,000 --> 00:01:28,000
+We require this to ensure data integrity and now applications to understand it better.
+
+21
+00:01:29,000 --> 00:01:35,000
+Imagine simple examples if you went through multiple times, I hope this is checkout in online store.
+
+22
+00:01:36,000 --> 00:01:43,000
+You're on the checkout page and you are redirected to the payment gateway ZAPU actions that needed to
+
+23
+00:01:43,000 --> 00:01:43,000
+be done.
+
+24
+00:01:44,000 --> 00:01:50,000
+Let me even simplify things, and let's imagine that we have just three steps reducing money amount
+
+25
+00:01:50,000 --> 00:01:57,000
+on your credit card increasing mountains account of online store creation request for product delivery.
+
+26
+00:01:58,000 --> 00:02:01,000
+An exception might happen on each of these steps.
+
+27
+00:02:01,000 --> 00:02:07,000
+For example, you don't have enough money in your credit card or there is an exception in receiving
+
+28
+00:02:07,000 --> 00:02:09,000
+money on the side of online store.
+
+29
+00:02:09,000 --> 00:02:16,000
+Probably, they forgot to update accounts with relevant bank details or wild transaction has been happening.
+
+30
+00:02:16,000 --> 00:02:22,000
+Your product has been purchased by somebody else and requests for delivery can be created.
+
+31
+00:02:23,000 --> 00:02:29,000
+This is just an example because there might be different cases, and though it cases was missing products
+
+32
+00:02:29,000 --> 00:02:35,000
+for delivery, you can reserve the products for 15 minutes before checkout process has started.
+
+33
+00:02:35,000 --> 00:02:39,000
+But this thing implemented in different ways, in different cases.
+
+34
+00:02:39,000 --> 00:02:46,000
+The only things that I want you to pay attention to is that you may have multiple related steps where
+
+35
+00:02:46,000 --> 00:02:50,000
+we have value only successful completion of all steps.
+
+36
+00:02:50,000 --> 00:02:54,000
+And in the case, at least one of the steps is not completed.
+
+37
+00:02:55,000 --> 00:03:00,000
+We have to restore state of the system as it was before transactions started.
+
+38
+00:03:01,000 --> 00:03:08,000
+Basically, return money to your credit card or additional money from online store or reject requests
+
+39
+00:03:08,000 --> 00:03:09,000
+for product delivery.
+
+40
+00:03:09,000 --> 00:03:14,000
+Then now what transaction is and how it helps us to solve our business cases?
+
+41
+00:03:15,000 --> 00:03:16,000
+Great.
+
+42
+00:03:16,000 --> 00:03:22,000
+The next thing that we are going to learn is a set of properties of a transaction in time that a guaranteed
+
+43
+00:03:22,000 --> 00:03:28,000
+data validity despite errors, power failures and other mishaps.
+
+44
+00:03:28,000 --> 00:03:37,000
+This set of principles is called a set, this acronym that stands for authenticity, consistency, independence,
+
+45
+00:03:37,000 --> 00:03:38,000
+durability.
+
+46
+00:03:38,000 --> 00:03:45,000
+These four properties are the major guarantees of the transaction paradigm, which has influenced many
+
+47
+00:03:45,000 --> 00:03:48,000
+aspects of development in database systems.
+
+48
+00:03:49,000 --> 00:03:52,000
+And now we're going to learn each of these principles.
+
+49
+00:03:52,000 --> 00:03:55,000
+Let's start from the first one at Thomas.
+
+50
+00:03:56,000 --> 00:03:57,000
+What does a Thomas said to me?
+
+51
+00:03:58,000 --> 00:04:01,000
+Transactions are often composed of multiple statements.
+
+52
+00:04:02,000 --> 00:04:07,000
+Our Thomas ensures that all changes we make those a data as part of a transaction.
+
+53
+00:04:08,000 --> 00:04:10,000
+We manage them as a single entity and operation.
+
+54
+00:04:11,000 --> 00:04:18,000
+This effectively means is that the ease of perform, all the changes on none of that and atomic system
+
+55
+00:04:18,000 --> 00:04:26,000
+must guarantee, I promise it, in each and every situation, including power failures, errors and
+
+56
+00:04:26,000 --> 00:04:26,000
+crashes.
+
+57
+00:04:27,000 --> 00:04:30,000
+A guarantee of automaticity prevents updates.
+
+58
+00:04:30,000 --> 00:04:37,000
+That's a basic human only partially, which can cause greater problems than rejection is a whole series
+
+59
+00:04:37,000 --> 00:04:39,000
+outright as a consequence.
+
+60
+00:04:39,000 --> 00:04:46,000
+This transaction cannot be observed to be in progress by another database client at one moment in time.
+
+61
+00:04:46,000 --> 00:04:52,000
+It has not yet happened, and the next it has already occurred in the hall.
+
+62
+00:04:52,000 --> 00:04:53,000
+Almost none happened.
+
+63
+00:04:54,000 --> 00:04:56,000
+The transaction was cancelled in progress.
+
+64
+00:04:56,000 --> 00:05:02,000
+An example of an atomic transaction is monetary transfer from bank account a thorough account.
+
+65
+00:05:03,000 --> 00:05:10,000
+It consists of two operations withdrawing the money from a county and saving it that can be performing
+
+66
+00:05:10,000 --> 00:05:17,000
+these operations in an atomic transaction ensures that the database remains in a consistent state.
+
+67
+00:05:18,000 --> 00:05:19,000
+That is money.
+
+68
+00:05:19,000 --> 00:05:20,000
+Is this devoted?
+
+69
+00:05:20,000 --> 00:05:24,000
+No credited if either of those two operations fail.
+
+70
+00:05:25,000 --> 00:05:33,000
+The next transaction property is consistency and consistency ensures that we execute all the data changes
+
+71
+00:05:33,000 --> 00:05:40,000
+while maintaining a consistent state at the start and end of the transaction and data return to the
+
+72
+00:05:40,000 --> 00:05:48,000
+database must be valid according to all defined rules, including constraints, Cass case triggers and
+
+73
+00:05:48,000 --> 00:05:50,000
+any combinations thereof.
+
+74
+00:05:50,000 --> 00:05:57,000
+This prevents database corruption by an illegal transaction, but doesn't guarantee that the transaction
+
+75
+00:05:57,000 --> 00:05:58,000
+is correct.
+
+76
+00:05:58,000 --> 00:06:03,000
+Referential integrity guarantees the primary a key foreign key relationship.
+
+77
+00:06:04,000 --> 00:06:10,000
+A consistent state of data must conform to all the constraints that we define for data.
+
+78
+00:06:11,000 --> 00:06:18,000
+Let's not talk about his elation property transactions are often executed concurrently, multiple transactions
+
+79
+00:06:18,000 --> 00:06:21,000
+reading and writing to a table at the same time.
+
+80
+00:06:21,000 --> 00:06:28,000
+Isolation insurance is a concurrent execution of transactions, leaves the database in the same state
+
+81
+00:06:28,000 --> 00:06:30,000
+as it would have been obtained using.
+
+82
+00:06:30,000 --> 00:06:32,000
+Transactions were executed sequentially.
+
+83
+00:06:33,000 --> 00:06:40,000
+Isolation ensures that we keep the intermediate states of a transaction invisible to other transactions.
+
+84
+00:06:40,000 --> 00:06:45,000
+This gives concurrently run in transactions and the fact of being serialized.
+
+85
+00:06:46,000 --> 00:06:50,000
+The degree to which a transaction must be isolated from us.
+
+86
+00:06:50,000 --> 00:06:56,000
+A transaction is defined by isolation levels and the last but not the least, property is durability.
+
+87
+00:06:57,000 --> 00:07:03,000
+Your ability guarantees that once the transaction has been committed, it will remain committed even
+
+88
+00:07:03,000 --> 00:07:04,000
+in the case of a system failure.
+
+89
+00:07:05,000 --> 00:07:12,000
+For example, in cases of power outage or crash, and you remember, these are four main properties
+
+90
+00:07:12,000 --> 00:07:13,000
+of transactions.
+
+91
+00:07:13,000 --> 00:07:20,000
+Without these properties, it is hard to name as a transaction just a sequence of work items.
+
+92
+00:07:20,000 --> 00:07:22,000
+Hope that this is clear.
+
+93
+00:07:23,000 --> 00:07:29,000
+Like I said, these are also very important properties of transaction, like isolation levels and propagation.
+
+94
+00:07:29,000 --> 00:07:36,000
+Definitely, we can learn them now, but usually for my students, it is hard to understand this topic
+
+95
+00:07:36,000 --> 00:07:37,000
+was examples.
+
+96
+00:07:37,000 --> 00:07:44,000
+That's why I recommend to postpone learning such things as isolation levels and propagation property.
+
+97
+00:07:44,000 --> 00:07:52,000
+One will come to learn of Java Persistence API GPA because in that case, I will be able to show you
+
+98
+00:07:52,000 --> 00:07:57,000
+Dharma right after explaining Seri, we are transaction manager.
+
+99
+00:07:57,000 --> 00:08:04,000
+But in this lesson, we can focus on the transactions itself and its exit properties.
+
+100
+00:08:05,000 --> 00:08:06,000
+OK, let's move on.
+
+101
+00:08:07,000 --> 00:08:10,000
+Now we learn enough theory to proceed with examples.
+
+102
+00:08:10,000 --> 00:08:13,000
+Let me show you how we can manage transactions.
+
+103
+00:08:13,000 --> 00:08:19,000
+We are Giudice transaction example is located in the B c transaction example file.
+
+104
+00:08:20,000 --> 00:08:24,000
+All examples you will be able to find in attachments to the video.
+
+105
+00:08:25,000 --> 00:08:28,000
+Let's go line by line and see how it works.
+
+106
+00:08:28,000 --> 00:08:35,000
+In this example, we're going to make him money transfer from one user to another here and thought we
+
+107
+00:08:35,000 --> 00:08:37,000
+have to prepare SQL statements.
+
+108
+00:08:37,000 --> 00:08:45,000
+The first one is to update on for specific user I.D. and another one to select a user by its I.D..
+
+109
+00:08:46,000 --> 00:08:55,000
+After that, we configured my name is if we want to transfer user from I.D. and transfer to I.D. now
+
+110
+00:08:55,000 --> 00:08:57,000
+we are ready to make a money transfer.
+
+111
+00:08:57,000 --> 00:08:58,000
+We get connection object.
+
+112
+00:08:59,000 --> 00:09:02,000
+We prepare our statements for select and for update.
+
+113
+00:09:03,000 --> 00:09:09,000
+After that, I declare a reference to the safe point in the order it will be accessible in catch block.
+
+114
+00:09:10,000 --> 00:09:14,000
+Safe Point is an object that contains a state of the transaction.
+
+115
+00:09:14,000 --> 00:09:16,000
+This point was in.
+
+116
+00:09:16,000 --> 00:09:21,000
+The current transaction can be referenced from the rollback mass of connection object.
+
+117
+00:09:21,000 --> 00:09:27,000
+This is exactly the masses that will help us to restore the state of the transaction in a minute.
+
+118
+00:09:27,000 --> 00:09:34,000
+You are going to see how we can use that massive when transaction is rolled back through a sequence
+
+119
+00:09:34,000 --> 00:09:38,000
+of changes made after that save point are undone.
+
+120
+00:09:38,000 --> 00:09:41,000
+Save points can be easily named or unnamed.
+
+121
+00:09:42,000 --> 00:09:49,000
+Basically, during the creation of the save point, we can pass strings, name here and create name
+
+122
+00:09:49,000 --> 00:09:50,000
+save points.
+
+123
+00:09:51,000 --> 00:09:58,000
+After that, I try catch Block to handle all potential exceptions and low back transaction in case of
+
+124
+00:09:58,000 --> 00:09:59,000
+exception.
+
+125
+00:10:00,000 --> 00:10:01,000
+I need this in order.
+
+126
+00:10:01,000 --> 00:10:04,000
+My catching book would be within the tribe was resources block.
+
+127
+00:10:04,000 --> 00:10:11,000
+In order I could still have a reference to the connection object to roll back transaction in cash book.
+
+128
+00:10:12,000 --> 00:10:17,000
+And now I start my transaction in reading B.C. to take control of a transaction.
+
+129
+00:10:17,000 --> 00:10:19,000
+We have to set out to commit to false.
+
+130
+00:10:20,000 --> 00:10:27,000
+If a connection is an utter commitment, then all its sequel statements will be executed and committed
+
+131
+00:10:27,000 --> 00:10:29,000
+as individual transactions.
+
+132
+00:10:30,000 --> 00:10:36,000
+Otherwise, it's sequel statements are grouped into transactions that are terminated by a call to users.
+
+133
+00:10:36,000 --> 00:10:41,000
+A massive commit was the message rolled back manifold.
+
+134
+00:10:41,000 --> 00:10:44,000
+New connections are in order to commit more.
+
+135
+00:10:44,000 --> 00:10:47,000
+But with this set message, we can turn it off.
+
+136
+00:10:48,000 --> 00:10:56,000
+The first thing that I do is reading data about user from to make sure that the user has enough money
+
+137
+00:10:56,000 --> 00:10:57,000
+for money transfer.
+
+138
+00:10:57,000 --> 00:11:00,000
+In any case, user doesn't have enough money.
+
+139
+00:11:00,000 --> 00:11:02,000
+We just go.
+
+140
+00:11:02,000 --> 00:11:08,000
+It's massive and not proceeding was the next steps in case user have enough money for this transaction.
+
+141
+00:11:09,000 --> 00:11:13,000
+We deduct money amount and no data user in the database was reduced.
+
+142
+00:11:13,000 --> 00:11:14,000
+Money amount.
+
+143
+00:11:15,000 --> 00:11:19,000
+Theoretically, after some steps in transaction, you can make a save point.
+
+144
+00:11:20,000 --> 00:11:27,000
+For example, you have some logical steps combined together that makes sense to apply or to roll back
+
+145
+00:11:27,000 --> 00:11:31,000
+to that state and tries the following steps one more time.
+
+146
+00:11:31,000 --> 00:11:35,000
+In this case, you just need to revoke save points, mass.
+
+147
+00:11:36,000 --> 00:11:40,000
+You can pass through here to create name safe point.
+
+148
+00:11:40,000 --> 00:11:47,000
+In our particular case, we have only two steps, and logically, it makes no sense to save the state
+
+149
+00:11:47,000 --> 00:11:50,000
+only after reducing money amount for the first user.
+
+150
+00:11:51,000 --> 00:11:59,000
+After that, I select another user to add money a month to his mining value and update another user
+
+151
+00:11:59,000 --> 00:12:00,000
+in the database.
+
+152
+00:12:00,000 --> 00:12:04,000
+Once I updated users, I kokum, it's massive.
+
+153
+00:12:05,000 --> 00:12:12,000
+And now imagine SQL queries start being executed, and we already updated the first user.
+
+154
+00:12:12,000 --> 00:12:20,000
+But all of a sudden the lights went out and your database appeared to be without power at all.
+
+155
+00:12:20,000 --> 00:12:28,000
+And even more zeolite went out and the server using a Java app without power to you.
+
+156
+00:12:28,000 --> 00:12:30,000
+You don't have time to update the second user.
+
+157
+00:12:31,000 --> 00:12:32,000
+What to do now?
+
+158
+00:12:33,000 --> 00:12:40,000
+Java tracks as transaction, and apparently it detects some exceptional case happen in this case will
+
+159
+00:12:40,000 --> 00:12:42,000
+enter block.
+
+160
+00:12:42,000 --> 00:12:46,000
+And in case you look, I call back my sit on my connection object.
+
+161
+00:12:46,000 --> 00:12:53,000
+This massive insurance is a state that was before the transaction started will be restored in the database.
+
+162
+00:12:54,000 --> 00:12:56,000
+That's what we need in our case.
+
+163
+00:12:57,000 --> 00:13:00,000
+In some cases, you may roll back to the safe point.
+
+164
+00:13:01,000 --> 00:13:08,000
+This is not our case in this particular example, but I will keep this line command just for reference.
+
+165
+00:13:08,000 --> 00:13:11,000
+Basically, that's all we've got in this example.
+
+166
+00:13:12,000 --> 00:13:13,000
+This is how it is.
+
+167
+00:13:13,000 --> 00:13:16,000
+And then we can manage transactions with the help of GBC.
+
+168
+00:13:17,000 --> 00:13:24,000
+And the other thing is that I'd like to show you today is much updates this database and GDP C match
+
+169
+00:13:24,000 --> 00:13:30,000
+update is a bunch of updates grouped together and sent to a database in one much.
+
+170
+00:13:31,000 --> 00:13:38,000
+Rather than sending these updates one by one, sending a bunch of updates to the database in one go
+
+171
+00:13:38,000 --> 00:13:43,000
+is faster than sending them one by one, waiting for each one to finish.
+
+172
+00:13:44,000 --> 00:13:51,000
+There is less network traffic involved in sending one batch of updates only one round trip, and the
+
+173
+00:13:51,000 --> 00:13:55,000
+database might be able to execute some of the updates.
+
+174
+00:13:55,000 --> 00:14:02,000
+In parallel, the speed up compared to execute and set updates one by one can be quite big.
+
+175
+00:14:02,000 --> 00:14:07,000
+You can put on the Barge sequel, insert, update and delete statements.
+
+176
+00:14:08,000 --> 00:14:11,000
+It doesn't make sense to barge select statements.
+
+177
+00:14:12,000 --> 00:14:17,000
+Let me show you how you can execute batch updates is a database with legitimacy.
+
+178
+00:14:17,000 --> 00:14:21,000
+Well, examples from the lesson you can find in attachments to a video.
+
+179
+00:14:22,000 --> 00:14:23,000
+Just to remind.
+
+180
+00:14:24,000 --> 00:14:28,000
+Examples of his watch updates are located in the B c botch example.
+
+181
+00:14:29,000 --> 00:14:30,000
+Ever seen a single hit?
+
+182
+00:14:31,000 --> 00:14:32,000
+I create connection object.
+
+183
+00:14:33,000 --> 00:14:37,000
+Prepare statement we we're going to do three insertions in one batch.
+
+184
+00:14:38,000 --> 00:14:43,000
+In case you want, all insertions would be executed in one transaction.
+
+185
+00:14:43,000 --> 00:14:45,000
+You have to set out to commit the force.
+
+186
+00:14:46,000 --> 00:14:47,000
+But this is optional.
+
+187
+00:14:48,000 --> 00:14:54,000
+It is important to keep in mind is that each update added to the statement or prepared statement is
+
+188
+00:14:54,000 --> 00:14:56,000
+executed separately by the database.
+
+189
+00:14:57,000 --> 00:15:01,000
+That means that some of them may succeed before one of them fails.
+
+190
+00:15:02,000 --> 00:15:08,000
+All the statements that have succeeded are now applied to the database, but the rest of the updates
+
+191
+00:15:08,000 --> 00:15:09,000
+may not be.
+
+192
+00:15:09,000 --> 00:15:13,000
+This can result in an inconsistent data in the database.
+
+193
+00:15:14,000 --> 00:15:18,000
+That's why I recommend the use transactions during that much updates.
+
+194
+00:15:19,000 --> 00:15:26,000
+After that, you will feel out prepared statements was required values for all place holders, and once
+
+195
+00:15:26,000 --> 00:15:32,000
+you're done with each query, just invoke and punch massive and the same way I do with three groups
+
+196
+00:15:32,000 --> 00:15:41,000
+of parameters one I added All I wanted was a much I need to call execute large mass on my prepared statement
+
+197
+00:15:41,000 --> 00:15:45,000
+object and all match will be executed and sent as a database.
+
+198
+00:15:46,000 --> 00:15:47,000
+Is it clear?
+
+199
+00:15:48,000 --> 00:15:52,000
+Anyway, in case you will have any questions, do not hesitate to ask me.
+
+200
+00:15:52,000 --> 00:15:53,000
+Below this video.
+
+201
+00:15:54,000 --> 00:15:59,000
+And the last, but not the least, sing for the days that I'd like to discuss with you is how to explore
+
+202
+00:15:59,000 --> 00:16:01,000
+database method data programmatically.
+
+203
+00:16:02,000 --> 00:16:05,000
+Metadata means data about data.
+
+204
+00:16:05,000 --> 00:16:13,000
+For example, you might need to explore what tables you have in this database or you might want to investigate
+
+205
+00:16:13,000 --> 00:16:16,000
+what columns this or another table has.
+
+206
+00:16:16,000 --> 00:16:19,000
+This will help you to build dynamic queries.
+
+207
+00:16:20,000 --> 00:16:25,000
+My same dynamic queries, I mean, you will be able to investigate the structure of the database on
+
+208
+00:16:25,000 --> 00:16:31,000
+the fly during the program execution, depending on the business logic of your app.
+
+209
+00:16:31,000 --> 00:16:38,000
+This might come in handy sometimes, and definitely you have to know about such possibility in Java.
+
+210
+00:16:39,000 --> 00:16:45,000
+The main interface that provides a variety of methods to obtain information about the database is called
+
+211
+00:16:45,000 --> 00:16:46,000
+database metadata.
+
+212
+00:16:47,000 --> 00:16:49,000
+Let me open its source code.
+
+213
+00:16:50,000 --> 00:16:55,000
+You can explore multiple masses and also you can see that there are really a lot of them here.
+
+214
+00:16:55,000 --> 00:17:02,000
+We are not going to know and review each of these masses, but definitely the amount of mass is listed
+
+215
+00:17:02,000 --> 00:17:08,000
+here is more than enough for building tool or even an application for interactive database interaction
+
+216
+00:17:08,000 --> 00:17:13,000
+because you have opportunity to explore a lot of information about database.
+
+217
+00:17:13,000 --> 00:17:20,000
+Let's open our demo files at scope database metadata example where I prepared for you.
+
+218
+00:17:20,000 --> 00:17:27,000
+All examples related to interaction was a database metadata, and the first thing that I do here is
+
+219
+00:17:27,000 --> 00:17:33,000
+get into the referenced database metadata object using the reference to the connection object.
+
+220
+00:17:34,000 --> 00:17:37,000
+Now, let's extract information about all tables.
+
+221
+00:17:37,000 --> 00:17:41,000
+I call get tables massive of mine method data object.
+
+222
+00:17:42,000 --> 00:17:45,000
+Yeah, different parameters here is that I don't populate.
+
+223
+00:17:46,000 --> 00:17:47,000
+What are they?
+
+224
+00:17:47,000 --> 00:17:51,000
+The first two parameters are catalog and scheme.
+
+225
+00:17:51,000 --> 00:17:55,000
+According the search parameter takes a table name part.
+
+226
+00:17:56,000 --> 00:18:02,000
+For example, if I write, ProArt was person sign similar to the same things that we used in.
+
+227
+00:18:02,000 --> 00:18:09,000
+Like Operator, this will include all the tables whose name starts with prop.
+
+228
+00:18:09,000 --> 00:18:18,000
+The last parameter takes a string array containing the types of tables used use table for user defined
+
+229
+00:18:18,000 --> 00:18:26,000
+tables, so all table types use massive get table types, often locational get tables.
+
+230
+00:18:26,000 --> 00:18:27,000
+Massive will receive results.
+
+231
+00:18:27,000 --> 00:18:35,000
+That was table info, and it will iterate over a result set to get table names and bring it to consult.
+
+232
+00:18:36,000 --> 00:18:38,000
+You can retrieve it by table name.
+
+233
+00:18:38,000 --> 00:18:39,000
+Column name.
+
+234
+00:18:41,000 --> 00:18:44,000
+But let's imagine that you don't know how columns are called.
+
+235
+00:18:45,000 --> 00:18:46,000
+Could it be so?
+
+236
+00:18:47,000 --> 00:18:48,000
+Yes, absolutely.
+
+237
+00:18:49,000 --> 00:18:50,000
+And what to do?
+
+238
+00:18:51,000 --> 00:18:53,000
+You can get the metadata of your results set.
+
+239
+00:18:54,000 --> 00:19:00,000
+Let me show you how you can easily iterate over all columns and then all column names.
+
+240
+00:19:01,000 --> 00:19:06,000
+But on the example of table types, because we also want to see a table.
+
+241
+00:19:07,000 --> 00:19:08,000
+But how did you know?
+
+242
+00:19:08,000 --> 00:19:12,000
+Let's get the results said by Colin, get table types.
+
+243
+00:19:12,000 --> 00:19:17,000
+And after that call, get that data massive on the results that object.
+
+244
+00:19:17,000 --> 00:19:20,000
+Now you will get results set and that the data.
+
+245
+00:19:21,000 --> 00:19:26,000
+Having this result sets method data, I can announce how many columns we have.
+
+246
+00:19:26,000 --> 00:19:34,000
+And after that, I can iterate over each row to get the value from each column by iterating over each
+
+247
+00:19:34,000 --> 00:19:35,000
+column in the results set.
+
+248
+00:19:36,000 --> 00:19:43,000
+And here you can see consoles that can be printed all values from the result set without known column
+
+249
+00:19:43,000 --> 00:19:45,000
+names and the amount of malice at all.
+
+250
+00:19:46,000 --> 00:19:50,000
+Can you see how cool it is to dynamically investigates a database?
+
+251
+00:19:51,000 --> 00:19:58,000
+You can explore even more by navigating through the source code of results, set metadata and database
+
+252
+00:19:58,000 --> 00:19:58,000
+metadata.
+
+253
+00:19:59,000 --> 00:20:01,000
+Take my code examples.
+
+254
+00:20:01,000 --> 00:20:06,000
+Play with this code, and I hope you will be able to learn more about method data in practice.
+
+255
+00:20:07,000 --> 00:20:08,000
+That's it for today.
+
+256
+00:20:09,000 --> 00:20:15,000
+Let's recap what we have learned today in this lesson, we learned what transactions are.
+
+257
+00:20:16,000 --> 00:20:19,000
+Also now, you know, the properties of transactions.
+
+258
+00:20:19,000 --> 00:20:23,000
+We learned what properties are after that.
+
+259
+00:20:23,000 --> 00:20:30,000
+A real example scenario runs how to manage transactions with the B c, you saw examples of commit safe
+
+260
+00:20:30,000 --> 00:20:32,000
+buying and rolled back commands.
+
+261
+00:20:33,000 --> 00:20:36,000
+Review how to execute match updates to the database.
+
+262
+00:20:37,000 --> 00:20:43,000
+And examples amassing in-and how to work with database metadata as a result sets metadata.
+
+263
+00:20:44,000 --> 00:20:45,000
+That's it for today.
+
+264
+00:20:45,000 --> 00:20:47,000
+Thanks a lot for your attention.
+
+265
+00:20:47,000 --> 00:20:50,000
+Have a great day and see you in the next lesson.
+
diff --git a/52 - JDBC/external-links.txt b/52 - JDBC/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dbaff39f3ac3236b02238a79bd5fe2288de78ed6
--- /dev/null
+++ b/52 - JDBC/external-links.txt
@@ -0,0 +1,9 @@
+
+001 Source-code-example-from-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/jdbc
+
+002 Source-code-example-from-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/jdbc
+
+003 Source-code-example-from-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/jdbc
diff --git a/53 - DAO/001 DAO (Data Access Object) Design Pattern_en.srt b/53 - DAO/001 DAO (Data Access Object) Design Pattern_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..7ecb549b5f3ab31c8500204bf97a1a9b7af26d42
--- /dev/null
+++ b/53 - DAO/001 DAO (Data Access Object) Design Pattern_en.srt
@@ -0,0 +1,920 @@
+1
+00:00:06,000 --> 00:00:12,000
+Hello, distance in this lesson we're going to learn now partner and review examples, how to apply.
+
+2
+00:00:13,000 --> 00:00:16,000
+We're going to start the lesson from the problem statement.
+
+3
+00:00:17,000 --> 00:00:23,000
+We'll discuss what problem potentially we might face with and the only after that we'll proceed with
+
+4
+00:00:23,000 --> 00:00:30,000
+Dow Pot and you'll understand our part is and what its main elements.
+
+5
+00:00:31,000 --> 00:00:38,000
+We're going to review a sequence diagram where I will explain you and flow of Dow Pot.
+
+6
+00:00:38,000 --> 00:00:42,000
+Also, we're going to learn what data transfer object this.
+
+7
+00:00:42,000 --> 00:00:49,000
+And on the real example I'm going to show you is a card that demonstrates how Pardon may be implemented
+
+8
+00:00:49,000 --> 00:00:55,000
+in practice all code examples you will be able to find in attachments to the lesson.
+
+9
+00:00:55,000 --> 00:00:56,000
+Let's stop.
+
+10
+00:00:57,000 --> 00:01:02,000
+Let's start from understanding the problems and how parents are supposed to help us to solve.
+
+11
+00:01:03,000 --> 00:01:05,000
+Now stands for data access object.
+
+12
+00:01:06,000 --> 00:01:12,000
+Imagine that you have application during my Java course, together with students, we develop our own
+
+13
+00:01:12,000 --> 00:01:16,000
+online shop and to implement online shop.
+
+14
+00:01:16,000 --> 00:01:23,000
+We need persistent storage in that storage where I want to store application related data like information
+
+15
+00:01:23,000 --> 00:01:27,000
+about our users products, orders and purchases, for example.
+
+16
+00:01:28,000 --> 00:01:35,000
+Well, you learned how to interact with the data is a persistent storage in our database section of
+
+17
+00:01:35,000 --> 00:01:36,000
+the course.
+
+18
+00:01:36,000 --> 00:01:42,000
+Now, you know how to interact with our relational database with the help of GBC API.
+
+19
+00:01:43,000 --> 00:01:50,000
+And if you didn't watch lessons about JTBC API, I recommend it to do so because this is important to
+
+20
+00:01:50,000 --> 00:01:53,000
+understand the code examples from this lesson.
+
+21
+00:01:53,000 --> 00:02:00,000
+Now, in the relational database management systems, you already know that sometimes not very often,
+
+22
+00:02:00,000 --> 00:02:04,000
+but sometimes there is might be different syntax, even in SQL statements.
+
+23
+00:02:05,000 --> 00:02:11,000
+And I'm not even talking about different persistent storages because for relational databases, you
+
+24
+00:02:11,000 --> 00:02:14,000
+are going to use a B C API in one way.
+
+25
+00:02:14,000 --> 00:02:17,000
+But the way how you interact was not relational.
+
+26
+00:02:17,000 --> 00:02:24,000
+Database is different, and you may have different data sources in your app, and you would need actually
+
+27
+00:02:24,000 --> 00:02:27,000
+change in your code impacting your other codes.
+
+28
+00:02:27,000 --> 00:02:34,000
+It relies on this one to make sure that you can fetch and update data in persistent storage.
+
+29
+00:02:35,000 --> 00:02:41,000
+And if you remember well, from my object oriented programming course, when we discussed principles
+
+30
+00:02:41,000 --> 00:02:49,000
+of code design, we learned one important rule that dependency should go in the direction of stability
+
+31
+00:02:50,000 --> 00:02:50,000
+and persistence.
+
+32
+00:02:50,000 --> 00:02:58,000
+They're usually considered as one of the stable layers and a lot of code in your app dependant on your
+
+33
+00:02:58,000 --> 00:02:59,000
+persistence there.
+
+34
+00:03:00,000 --> 00:03:06,000
+And if you decide to modify it or change anyhow, you're going to face with a lot of difficulties.
+
+35
+00:03:07,000 --> 00:03:14,000
+Now, pardon supposed to solve this problem by declaring an abstraction layer that interacts with business
+
+36
+00:03:14,000 --> 00:03:20,000
+objects was down upon you encapsulate the point of access to data in the app.
+
+37
+00:03:20,000 --> 00:03:22,000
+So what do our partners about?
+
+38
+00:03:23,000 --> 00:03:31,000
+Wearing a shirt and in simplified words, now declare a set of interfaces for components in your app
+
+39
+00:03:31,000 --> 00:03:34,000
+to interact with the persistent storage.
+
+40
+00:03:34,000 --> 00:03:41,000
+This API is supposed to stay stable and oriented on business side and terminology of your app.
+
+41
+00:03:42,000 --> 00:03:44,000
+The API should be as simple as possible.
+
+42
+00:03:45,000 --> 00:03:52,000
+For example, nobody cares how many joint queries you should do to fetch or a history of specific user
+
+43
+00:03:52,000 --> 00:03:55,000
+you need to fetch his or that history.
+
+44
+00:03:55,000 --> 00:04:03,000
+And that's it, because in case you migrate to another database, there might even not be anything worse.
+
+45
+00:04:03,000 --> 00:04:06,000
+And there is no reason for joints at all.
+
+46
+00:04:06,000 --> 00:04:11,000
+But the business activity business action, which still remains the same.
+
+47
+00:04:12,000 --> 00:04:16,000
+Your app still need to fetch or a history of specific user.
+
+48
+00:04:17,000 --> 00:04:18,000
+Does it make sense?
+
+49
+00:04:18,000 --> 00:04:27,000
+Implementation of down interfaces count on specifics of systems that we interact with that can be different.
+
+50
+00:04:27,000 --> 00:04:32,000
+Persistent storages and all specifics are described in our implementations.
+
+51
+00:04:33,000 --> 00:04:39,000
+Now, implementations encapsulates and hides all the details from decline.
+
+52
+00:04:40,000 --> 00:04:46,000
+And when you change the source of the data in your app, the actual interfaces remains the same for
+
+53
+00:04:46,000 --> 00:04:47,000
+business components.
+
+54
+00:04:48,000 --> 00:04:51,000
+That's the beauty and reason of using Dolly Parton.
+
+55
+00:04:52,000 --> 00:04:53,000
+Is it more clear now?
+
+56
+00:04:54,000 --> 00:04:57,000
+Now, let's review this part and closer.
+
+57
+00:04:57,000 --> 00:05:01,000
+Let's understand what elements of our partner we are dealing with.
+
+58
+00:05:01,000 --> 00:05:04,000
+You can see class diagram on the screen.
+
+59
+00:05:05,000 --> 00:05:13,000
+We have business object that uses data access object that in turn encapsulates access to our data source.
+
+60
+00:05:13,000 --> 00:05:16,000
+This can be our relational database.
+
+61
+00:05:16,000 --> 00:05:24,000
+For example, data access object creates and uses data transfer object business object receives and
+
+62
+00:05:24,000 --> 00:05:27,000
+adjust our data transfer object.
+
+63
+00:05:27,000 --> 00:05:33,000
+Press pause for a few seconds just to watch this diagram one more time.
+
+64
+00:05:33,000 --> 00:05:39,000
+And don't worry, we're going to look at not a diagram that should address some of your questions.
+
+65
+00:05:40,000 --> 00:05:47,000
+Let's look at the sequence diagram to understand how all these elements are connected to each other.
+
+66
+00:05:47,000 --> 00:05:52,000
+You're in the entrance slope and to help you understand this flow better.
+
+67
+00:05:52,000 --> 00:05:56,000
+Let's imagine that this flow describes user log in process.
+
+68
+00:05:57,000 --> 00:06:00,000
+The first step here goes Who does business object?
+
+69
+00:06:01,000 --> 00:06:01,000
+What it is?
+
+70
+00:06:02,000 --> 00:06:05,000
+Business object is a client of our data.
+
+71
+00:06:06,000 --> 00:06:07,000
+It can be some service.
+
+72
+00:06:07,000 --> 00:06:14,000
+For example, imagine that we have log in service that makes sure that it's credentials provided by
+
+73
+00:06:14,000 --> 00:06:15,000
+user valid.
+
+74
+00:06:16,000 --> 00:06:22,000
+This kind of object requires access to the data source in order to perform its work.
+
+75
+00:06:23,000 --> 00:06:27,000
+First of all, this object aggregates the object inside itself.
+
+76
+00:06:28,000 --> 00:06:35,000
+We can see that the business object creates a reference to the object, but dependent on the technical
+
+77
+00:06:35,000 --> 00:06:37,000
+approach of our application.
+
+78
+00:06:37,000 --> 00:06:46,000
+The object also may exist as a single time and be injected into a business object during its instantiation.
+
+79
+00:06:46,000 --> 00:06:52,000
+We're going to learn later and now, of course, dependency injection and you'll understand what I mean.
+
+80
+00:06:53,000 --> 00:06:58,000
+Anyway, after the first step business object calls or references and object.
+
+81
+00:06:59,000 --> 00:07:05,000
+This object is an abstraction level that provides single and stable application programming interface
+
+82
+00:07:05,000 --> 00:07:10,000
+to our business object to interact with provide an access to the data source.
+
+83
+00:07:11,000 --> 00:07:18,000
+The second step at some point of time business object requests the object to get some data.
+
+84
+00:07:19,000 --> 00:07:23,000
+Now, in turn, encapsulates all low level details.
+
+85
+00:07:23,000 --> 00:07:31,000
+The implementation of the object knows how to interact with a specific data source and in case data
+
+86
+00:07:31,000 --> 00:07:32,000
+source will be changed.
+
+87
+00:07:32,000 --> 00:07:38,000
+You have to change on the implementation of the data object, but not the whole interface.
+
+88
+00:07:39,000 --> 00:07:43,000
+Basically, nothing will be changed for business object.
+
+89
+00:07:44,000 --> 00:07:46,000
+Let's go further now.
+
+90
+00:07:46,000 --> 00:07:49,000
+Object requests the data from data source.
+
+91
+00:07:50,000 --> 00:07:56,000
+Imagine that we extract the user object from the database to check that log in and password provided
+
+92
+00:07:56,000 --> 00:07:59,000
+by business object matches a once stored in the database.
+
+93
+00:08:00,000 --> 00:08:01,000
+No object?
+
+94
+00:08:01,000 --> 00:08:03,000
+Create data transfer object.
+
+95
+00:08:04,000 --> 00:08:08,000
+I will use term detail that stands for data transfer.
+
+96
+00:08:08,000 --> 00:08:16,000
+Object is a clear data transfer object contains action is the data that is needed to our business object.
+
+97
+00:08:17,000 --> 00:08:17,000
+It can be.
+
+98
+00:08:17,000 --> 00:08:25,000
+User data was all information about our user path, and that data is just a data structure.
+
+99
+00:08:26,000 --> 00:08:29,000
+It doesn't have any behavior, actually.
+
+100
+00:08:29,000 --> 00:08:34,000
+It may contain getters and setters, but this is not business related behavior.
+
+101
+00:08:34,000 --> 00:08:39,000
+This reference is an object oriented section of the course to learn more.
+
+102
+00:08:39,000 --> 00:08:43,000
+What is the difference between data structure and object business?
+
+103
+00:08:43,000 --> 00:08:52,000
+Object and charm may set new property value into detail and parse updated detail back to that object
+
+104
+00:08:53,000 --> 00:09:01,000
+and ask that the state of the data and the persistent storage, for example, imagines that the user
+
+105
+00:09:01,000 --> 00:09:05,000
+decided to change his mobile phone number and the profile.
+
+106
+00:09:06,000 --> 00:09:08,000
+We have added the phone number in our detail.
+
+107
+00:09:09,000 --> 00:09:16,000
+This data may be updated by the specific service inside our app, and after that, our business object
+
+108
+00:09:16,000 --> 00:09:18,000
+sends updated details.
+
+109
+00:09:18,000 --> 00:09:23,000
+This the object, and we update the state of this data and our data source.
+
+110
+00:09:24,000 --> 00:09:33,000
+So what would you see now is more or less going now about now pardon and probably zone only things that
+
+111
+00:09:33,000 --> 00:09:37,000
+we are missing now for better understanding of Dolly Parton is a life example.
+
+112
+00:09:38,000 --> 00:09:44,000
+Let's jump a good example and review real life scenario based on our online shop application.
+
+113
+00:09:45,000 --> 00:09:48,000
+Let's start from the definition of the Doll API.
+
+114
+00:09:49,000 --> 00:09:56,000
+In this example, we are going to create together User Doll API is defined in the interface.
+
+115
+00:09:56,000 --> 00:09:59,000
+Let's review what assets are defined here.
+
+116
+00:10:00,000 --> 00:10:06,000
+First of all, I ask myself what business related cases my dolls should address.
+
+117
+00:10:07,000 --> 00:10:08,000
+This is extracting the user by ID.
+
+118
+00:10:09,000 --> 00:10:17,000
+Also, I need to be able to extract user by email because we use email duran's and log in and we need
+
+119
+00:10:17,000 --> 00:10:19,000
+to be able to extract user.
+
+120
+00:10:20,000 --> 00:10:24,000
+Also, we need the possibility to save user and our persistent storage.
+
+121
+00:10:25,000 --> 00:10:28,000
+That's why I have this list of methods.
+
+122
+00:10:28,000 --> 00:10:36,000
+Yet the user by any user, by email and safe user in times that we work with here, I decided to call
+
+123
+00:10:36,000 --> 00:10:40,000
+it user detail because we have just reviewed what data?
+
+124
+00:10:40,000 --> 00:10:41,000
+Transfer object, yes.
+
+125
+00:10:42,000 --> 00:10:47,000
+And in this particular example, I will interact with pure data structure.
+
+126
+00:10:47,000 --> 00:10:51,000
+I want to say that one, you will become experienced developer.
+
+127
+00:10:51,000 --> 00:10:57,000
+You're going to have your own point of view how to name this site because there is a slight difference
+
+128
+00:10:57,000 --> 00:10:57,000
+in naming.
+
+129
+00:10:58,000 --> 00:11:05,000
+For example, you can names the dog not like user data, but just use it, for example, or you can
+
+130
+00:11:05,000 --> 00:11:09,000
+name it, user model fallen and receive part.
+
+131
+00:11:09,000 --> 00:11:13,000
+We're going to talk with MVC partners in the separate lesson.
+
+132
+00:11:14,000 --> 00:11:21,000
+But even different frameworks like Congress from SAP or other eCommerce frameworks that already contain
+
+133
+00:11:21,000 --> 00:11:27,000
+predefined structure and layouts of classes uses the same terminology in different way.
+
+134
+00:11:28,000 --> 00:11:30,000
+So don't judge me here.
+
+135
+00:11:31,000 --> 00:11:34,000
+Just know that there are different points of view on the same since.
+
+136
+00:11:35,000 --> 00:11:39,000
+But the main idea is to understand the sense of what we are doing here.
+
+137
+00:11:40,000 --> 00:11:46,000
+And in this particular case, we need to have some data structures that will transfer data from one
+
+138
+00:11:46,000 --> 00:11:48,000
+layer of our app to another.
+
+139
+00:11:48,000 --> 00:11:51,000
+Let's create our data types now.
+
+140
+00:11:51,000 --> 00:11:56,000
+This type should describe properties that exist in the database.
+
+141
+00:11:56,000 --> 00:12:05,000
+In our specific case, our user has the following properties ID, first name, last name, email role,
+
+142
+00:12:06,000 --> 00:12:09,000
+money, credit card and pay attention.
+
+143
+00:12:09,000 --> 00:12:13,000
+That is, a database user role is just a foreign key.
+
+144
+00:12:13,000 --> 00:12:17,000
+One will learn Java Persistence API GP.
+
+145
+00:12:17,000 --> 00:12:23,000
+You are going to learn that it will be enough just to set correct relationship between different entities
+
+146
+00:12:24,000 --> 00:12:28,000
+and will handle fetch of all related data by foreign key.
+
+147
+00:12:29,000 --> 00:12:37,000
+So we should use real time and user data, but not just in value to store foreign key because inside
+
+148
+00:12:37,000 --> 00:12:46,000
+our app, we are interested in the actual role of the user, but not well and the understand this point.
+
+149
+00:12:47,000 --> 00:12:53,000
+And also imagine that you don't want to store money in double value, but instead you want to operate
+
+150
+00:12:53,000 --> 00:12:55,000
+was big that small money rally in the app.
+
+151
+00:12:56,000 --> 00:13:03,000
+This is also might be considered on this abstraction level, and your down object will be in charge
+
+152
+00:13:03,000 --> 00:13:08,000
+for populating your object with the data that you are interested in and in specified form.
+
+153
+00:13:09,000 --> 00:13:13,000
+Because such kind of details will be described in the Dart implementation.
+
+154
+00:13:14,000 --> 00:13:23,000
+That's why I need to declare also all the oil that will store rolling and will name potentials at the
+
+155
+00:13:23,000 --> 00:13:25,000
+most data or objects that we created.
+
+156
+00:13:26,000 --> 00:13:31,000
+Also have getters and setters and also for debugging purposes.
+
+157
+00:13:31,000 --> 00:13:38,000
+I override the strength massive in order we can seize a state of the object and console you as a demo.
+
+158
+00:13:39,000 --> 00:13:42,000
+So what are we supposed to do next?
+
+159
+00:13:42,000 --> 00:13:47,000
+The next things that we need to do is to implement our dart interface.
+
+160
+00:13:48,000 --> 00:13:49,000
+So that's good.
+
+161
+00:13:50,000 --> 00:13:54,000
+I create my sequel to the PC user now from its name.
+
+162
+00:13:54,000 --> 00:13:57,000
+You already can understand that is down.
+
+163
+00:13:57,000 --> 00:14:03,000
+Pigmentation will consider all specifics of interacting with my school relational database through the
+
+164
+00:14:03,000 --> 00:14:05,000
+GBC API.
+
+165
+00:14:05,000 --> 00:14:13,000
+This class implements my user now, and if you watched my lessons about GDC, you already know how to
+
+166
+00:14:13,000 --> 00:14:17,000
+establish connections as a database and extract results.
+
+167
+00:14:17,000 --> 00:14:18,000
+That was user info.
+
+168
+00:14:19,000 --> 00:14:21,000
+But Sampson will be different.
+
+169
+00:14:21,000 --> 00:14:28,000
+Let's review, for example, gets user body mass of those key cards that you already know where I establish
+
+170
+00:14:28,000 --> 00:14:32,000
+connection, executes sequel query and gets the results set.
+
+171
+00:14:33,000 --> 00:14:40,000
+So once we get results set, we can create our detailed object and populate all fields, setters, masses.
+
+172
+00:14:41,000 --> 00:14:47,000
+Later in this course, we are going to learn how to avoid common, said Mascot for each property using
+
+173
+00:14:47,000 --> 00:14:49,000
+Java Persistence API.
+
+174
+00:14:50,000 --> 00:14:55,000
+But if you use it, we see that is the way to go and from one side.
+
+175
+00:14:55,000 --> 00:14:57,000
+This is very flexible.
+
+176
+00:14:57,000 --> 00:15:04,000
+You have control over each property population in your detail object, but from another site it can
+
+177
+00:15:04,000 --> 00:15:08,000
+be difficult to populate all fields in big objects.
+
+178
+00:15:09,000 --> 00:15:17,000
+The Populates Road property I use rolled down an extractor, all via its I.D. that is also a closet
+
+179
+00:15:17,000 --> 00:15:18,000
+we have to create.
+
+180
+00:15:19,000 --> 00:15:21,000
+The algorithm is the same.
+
+181
+00:15:22,000 --> 00:15:29,000
+We establish connection, execute query to DB populate values from results set in the Java object,
+
+182
+00:15:30,000 --> 00:15:40,000
+and we recount a roll detail from the mess that is set to the user object and when all fields of user.
+
+183
+00:15:40,000 --> 00:15:43,000
+Object of a populated, a return user from mass.
+
+184
+00:15:44,000 --> 00:15:50,000
+Let me open down them a class that I created to demonstrate how these examples are.
+
+185
+00:15:51,000 --> 00:15:52,000
+Let me run this.
+
+186
+00:15:54,000 --> 00:15:54,000
+I agree.
+
+187
+00:15:54,000 --> 00:16:02,000
+My the PC users, though object and one to extract user was its help and income.
+
+188
+00:16:02,000 --> 00:16:08,000
+So you can see that when I extract user Biney, I receive relevant information from the database.
+
+189
+00:16:09,000 --> 00:16:17,000
+But inside my application, I can use not results that object that contains values, but true object.
+
+190
+00:16:18,000 --> 00:16:22,000
+I can pass this object to different mascots as massive argument.
+
+191
+00:16:23,000 --> 00:16:27,000
+I can change its state and interact with it in object oriented way.
+
+192
+00:16:28,000 --> 00:16:29,000
+Does it make sense?
+
+193
+00:16:29,000 --> 00:16:33,000
+Can you understand now how all this code is connected?
+
+194
+00:16:34,000 --> 00:16:41,000
+And from now on, I can inject this now object everywhere I need, no matter whether this is checkouts,
+
+195
+00:16:41,000 --> 00:16:45,000
+service or logging service that contains any business logic.
+
+196
+00:16:45,000 --> 00:16:49,000
+I have a single point of data access that is user Dow.
+
+197
+00:16:50,000 --> 00:16:58,000
+And in case of change in data source zone, the scenes that will be impacted is the implementation.
+
+198
+00:16:59,000 --> 00:17:02,000
+All the Dow interfaces will remain the same.
+
+199
+00:17:03,000 --> 00:17:09,000
+Now, let's quickly review implementation of ASM Mass to make sure that these examples are clear to
+
+200
+00:17:09,000 --> 00:17:09,000
+you.
+
+201
+00:17:10,000 --> 00:17:12,000
+Yeah, it's user by email.
+
+202
+00:17:12,000 --> 00:17:14,000
+Mass at is very, very similar to the previous one.
+
+203
+00:17:15,000 --> 00:17:16,000
+There is only one difference.
+
+204
+00:17:17,000 --> 00:17:19,000
+We use email instead of ID.
+
+205
+00:17:20,000 --> 00:17:20,000
+That's it.
+
+206
+00:17:21,000 --> 00:17:23,000
+The algorithm is the same.
+
+207
+00:17:23,000 --> 00:17:28,000
+And in our demo, you can see how I extracted the same user by email.
+
+208
+00:17:29,000 --> 00:17:31,000
+You said mass, it is slightly different.
+
+209
+00:17:32,000 --> 00:17:34,000
+I have to say if user in the database.
+
+210
+00:17:34,000 --> 00:17:42,000
+How I do that, I pass user data object does it, though, and now will translate the commands from
+
+211
+00:17:42,000 --> 00:17:48,000
+object oriented language in the specific language of instructions or specific persistent storage.
+
+212
+00:17:49,000 --> 00:17:57,000
+In this case, we have different sequel statements to insert new row in the database, and we use user
+
+213
+00:17:57,000 --> 00:18:02,000
+argument to get the data was get their massive to populate in sequel statement.
+
+214
+00:18:03,000 --> 00:18:10,000
+After execution of this mass of information about this user will be stored in the database and the demo
+
+215
+00:18:10,000 --> 00:18:14,000
+clause I call safe user message and drive.
+
+216
+00:18:14,000 --> 00:18:22,000
+After that, I extract the user by the email of our new user, and in console you can see that I successfully
+
+217
+00:18:22,000 --> 00:18:25,000
+extracted the user that I have just added to the database.
+
+218
+00:18:26,000 --> 00:18:27,000
+Is it clear?
+
+219
+00:18:28,000 --> 00:18:35,000
+And that's how easy I can move data around database and my Java application using simple dot interface
+
+220
+00:18:36,000 --> 00:18:40,000
+and the objects as single data access to my persistent storage.
+
+221
+00:18:41,000 --> 00:18:47,000
+In case you still have any questions, you are more than welcome to ask all of your questions in the
+
+222
+00:18:47,000 --> 00:18:48,000
+comments to this video.
+
+223
+00:18:49,000 --> 00:18:50,000
+That's all for this lesson.
+
+224
+00:18:51,000 --> 00:18:59,000
+Let's recap what we have learned today in this lesson, we've learned what our power is, you know,
+
+225
+00:18:59,000 --> 00:19:03,000
+what is the main elements and active parts of our part?
+
+226
+00:19:04,000 --> 00:19:10,000
+Also revealed sequence diagram where a visual artist has an intense flow was now part, and we'll look
+
+227
+00:19:11,000 --> 00:19:12,000
+after this lesson.
+
+228
+00:19:12,000 --> 00:19:19,000
+You already know what data transfer object is and do you of is your real life example was Dolly Parton
+
+229
+00:19:20,000 --> 00:19:22,000
+sings a lot of the students for your attention.
+
+230
+00:19:23,000 --> 00:19:25,000
+Have a great day and see you in the next lesson.
+
diff --git a/53 - DAO/001 Source-code-example-from-the-lesson.url b/53 - DAO/001 Source-code-example-from-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..c36896b4ad7a338094fb49d0f65c213bb1a11bdb
--- /dev/null
+++ b/53 - DAO/001 Source-code-example-from-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/dao
\ No newline at end of file
diff --git a/53 - DAO/external-links.txt b/53 - DAO/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1ce7588e0bc48cec4f87ab8a2464341966a98703
--- /dev/null
+++ b/53 - DAO/external-links.txt
@@ -0,0 +1,3 @@
+
+001 Source-code-example-from-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/dao
diff --git a/54 - ===== JDBC, SQL & Databases Interview Preparation =====/001 Part 1 JDBC & Databases - Questions and Answers.html b/54 - ===== JDBC, SQL & Databases Interview Preparation =====/001 Part 1 JDBC & Databases - Questions and Answers.html
new file mode 100644
index 0000000000000000000000000000000000000000..469f7e04d5665087a26c84cd9f7aae03a19741ee
--- /dev/null
+++ b/54 - ===== JDBC, SQL & Databases Interview Preparation =====/001 Part 1 JDBC & Databases - Questions and Answers.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Part 1 JDBC & Databases - Questions and Answers
+
+
+
+
+
+
+
Part 1 JDBC & Databases - Questions and Answers
+
The JDBC (Java DataBase Connectivity) API is a standard Java application interface for organizing interaction between an application and a DBMS. Interaction is carried out using JDBC drivers, which provide implementations of common interfaces for specific DBMS and specific protocols. JDBC defines four types of drivers.
Steps for working with a database using JDBC:
Connecting a library with a database driver class.
Establishing a connection to the database.
Create an object to send requests.
Execution of a request.
Processing the results of query execution.
Closing the connection, statement
To establish a connection to the database, the static getConnection() method of the java.sql.DriverManager class is called. As parameters to the method we have to pass the database URL, database user login and access password. Loading a database driver class when there is no reference to an instance of this class in JDBC 4.1 occurs automatically when a connection is established by the DriverManager instance. The method returns a Connection object. The database URL, consisting of the type and address of the physical location of the database, can be created as a separate string or retrieved from a resource file.
The Statement object is used to execute SQL queries against the database. There are three types of Statement objects. All three serve as containers for executing SQL statements through this connection: Statement, PreparedStatement, which inherits from Statement, and CallableStatement, which inherits from PreparedStatement. They specialize in different types of queries: Statement is used to execute simple SQL queries without parameters; PreparedStatement is used to execute precompiled SQL queries with or without input (IN) parameters; CallableStatement is used to call stored procedures.
The Statement interface provides basic methods for executing queries and retrieving results. The PreparedStatement interface adds methods for managing input (IN) parameters; CallableStatement adds methods for manipulating OUT parameters.
The PreparedStatement interface inherits from Statement and differs from the latter in the following ways:
Instances of PreparedStatement "remember" compiled SQL statements. That is why they are called "prepared".
SQL statements in a PreparedStatement can have one or more input (IN) parameters. An input parameter is a parameter whose value is not specified when the SQL statement is created. Instead, in the expression, the sign ("?") is put in place of each input parameter. The value of each question mark is set by the setXXX methods before the request is executed.
Stored procedures are a named set of Transact-SQL statements stored on a server. Such a procedure can be easily called from a Java class using special syntax. When calling such a procedure, you must specify its name and define a list of parameters. The name and parameter list are sent over a JDBC connection to the DBMS, which executes the called procedure and returns the result (if any) back using the same connection.
Once the database is no longer needed, the connection is closed. Java 7 introduces try with resources for resource objects that require closures. So, usually, we specify resources in try-with-resources block.
In case you can’t use the mentioned block, resources should be closed in final block.
Transaction isolation levels are defined as interface constants
Connection (ascending restriction level):
TRANSACTION_NONE - informs that the driver does not support transactions;
TRANSACTION_READ_UNCOMMITTED - allows transactions to see uncommitted data changes, which allows dirty, non-repeatable, and phantom reads;
TRANSACTION_READ_COMMITTED - means that any change made to the transaction is not visible outside of it until it is saved. This prevents dirty reads, but allows non-repeatable and phantom reads;
TRANSACTION_REPEATABLE_READ - disables dirty and non-repeating reads, but phantom reads are allowed;
TRANSACTION_SERIALIZABLE Specifies that dirty, non-repeatable, and phantom reads are disabled.
There are several types of reading for transactions errors. They are:
dirty reads occur when transactions are allowed to see unsaved data changes. In other words, changes made in one transaction are visible outside of it before it was saved. If the changes are not saved, then it is likely that other transactions were doing work based on incorrect data;
nonrepeatable reads occur when transaction A reads a row, transaction B modifies that row, transaction A reads the same row and receives the updated data;
phantom reads occur when transaction A reads all rows that satisfy the WHERE condition, transaction B inserts a new row or deletes one of the rows that satisfies this condition, transaction A reads all the rows that satisfy the WHERE condition together again with a new line or missing the old one.
+
+
+
+
diff --git a/54 - ===== JDBC, SQL & Databases Interview Preparation =====/002 Part 2 Databases - Questions and Answers.html b/54 - ===== JDBC, SQL & Databases Interview Preparation =====/002 Part 2 Databases - Questions and Answers.html
new file mode 100644
index 0000000000000000000000000000000000000000..7db19fcbe59c985495ff4b4155648e28e0346a81
--- /dev/null
+++ b/54 - ===== JDBC, SQL & Databases Interview Preparation =====/002 Part 2 Databases - Questions and Answers.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Part 2 Databases - Questions and Answers
+
+
+
+
+
+
+
Part 2 Databases - Questions and Answers
+
A database (DB) is an organized set of information. As an example of the simplest database, we can give a list of goods, each of which has a set of standard characteristics (name, unit of measure, quantity, price, etc.).
Usually, when we speak about databases we mean some specific persistence storage.
Before storing any data in the DBMS, it is necessary to describe their model. According to the type of data model, DBMS are divided into network, object, hierarchical and relational. Relational type DBMS are the most common and frequently used. Examples include Oracle, MySQL, Microsoft SQL Server and others.
The process of bringing a database into a form in which it will conform to the rules of normal forms is called database normalization. Database normalization minimizes the amount of redundant information. Its purpose is to save data only once, but in the right place.
A normalized database eliminates data duplication and multiple maintenance, as well as data integrity issues that arise when the same data is entered repeatedly. Initially, only 3 normal forms were defined by Dr. Edgar Codd. Further development of relational theory led to the emergence of several more forms, and at the moment there are 8 of them. In practice, the compliance of the database with the rules of the 3rd normal form is quite enough.
First normal form states that the information in each field of a table is atomic and cannot be subdivided.
The second normal form states that the table is in 1NF and there are no non-key attributes in the table that depend on part of a complex (multi-column) primary key.
The third normal form states that the table corresponds to the first two NFs, and all non-key attributes depend only on the primary key and are independent of each other.
Linking works by matching data in key columns; usually these are columns with the same name in both tables. In most cases, a relationship maps the primary key of one table, which is the unique identifier for each row in that table, to the foreign key entries of another table.
There are three types of relationships between tables. The type of relationship that is created depends on how the related columns are defined.
One-to-one - in a one-to-one relationship, only one row in table B can match a row in table A, and vice versa. A one-to-one relationship is created if both related keys have primary key or unique constraints defined.
This type of relationship is usually not used because most of the data related in this way can be stored in a single table. A one-to-one relationship can be used to:
Splitting a table with many columns.
Isolate part of the table for security reasons.
Storage of short-term data that can be easily deleted along with the entire table.
Storing data that only applies to part of the main table.
The column that is the primary key in a one-to-one relationship is marked with a key symbol. A column that is a foreign key is also marked with a key symbol.
One-to-many is the most common. In this type of relationship, a row of table A can have multiple matching rows of table B, but each row of table B can match only one row from A. For example, there is a one-to-many relationship between the publishers and books tables: each publisher publishes many books, but each book is published by only one publisher.
Use a one-to-many relationship if only one of the related columns has a primary key or unique constraint.
The column that is the primary key in a one-to-many relationship is marked with a key symbol. A column that is a foreign key in a one-to-many relationship is marked with an infinity symbol.
Many-to-Many - A row in Table A can match multiple rows in Table B, and vice versa. Such relationships are created by defining a third table, called the join table, whose primary key consists of foreign keys A and B.
Such relationships are created by defining a third table, called the join table, whose primary key consists of foreign keys A and B. For example, the many-to-many relationship between the authors and books tables is defined through the one-to-many relationships of each of these tables to the books_authors table. The primary key of the books_authors table is a combination of the au_id column (the primary key of the authors table) and the book_id column (the primary key of the titles table).
Primary key (or master key, primary key, PK) represents a column or collection of columns whose values uniquely identify rows.
Secondary (or foreign key, foreign key, FK) is a column or set of columns that is not a primary key in this table but is a primary key in another table. Foreign key is used to establish a logical relationship between the table rows and the corresponding rows in the another table.
Indexes are special structures in databases that allow you to speed up searching and sorting by a specific field or set of fields in a table, and are also used to ensure the uniqueness of data. The easiest way to compare indexes is with indexes in books. If there is no pointer, then we will have to look through the entire book to find the right place, and with a pointer, the same action can be performed much faster.
Typically, the more indexes, the better the performance of database queries. However, with an excessive increase in the number of indexes, the performance of data modification operations (insert/modify/delete) decreases, the size of the database increases, so adding indexes should be treated with caution.
Some general principles related to creating indexes:
indexes need to be created for columns that are used in joins that are often searched and sorted. It should be noted that indexes are always automatically created for columns that are subject to the primary key constraint. Most often they are also created for columns with a foreign key;
an index is necessarily automatically created for columns that have a unique constraint;
it is best to create indexes for those fields in which - the minimum number of duplicate values and the data is evenly distributed. Oracle has special bitwise indexes for columns with a large number of duplicate values, SQL Server doesn’t provide this kind of index;
if the search is constantly performed on a certain set of columns (simultaneously), then in this case it may make sense to create a composite index (only in SQL Server) - one index for a group of columns;
when changes are made to tables, the indexes imposed on this table are automatically changed. As a result, the index can be highly fragmented, which affects performance. Indexes should be periodically checked for fragmentation and defragmented. When loading a large amount of data, it sometimes makes sense to first remove all indexes, and after the operation is completed, create them again;
Indexes can be created not only for tables, but also for views (only in SQL Server). Advantages - the ability to calculate fields not at the time of the request, but at the time of the appearance of new values in the tables.
Four types of indexes can be created in the database, depending on its functionality: unique, clustered, full-text and primary key index.
Unique index - An index is unique if there cannot be two rows with the same index value. Most databases will not allow a table to be stored with a unique index created on it if there are duplicate key values in the existing data. The database may also be prohibited from adding new data that results in duplicate key values in the table. For example, if you create a unique index on the employee's last name on the employee table, there should not be two employees with the same last name.
Primary Key Index - A database table typically has a column or combination of columns whose values uniquely identify each row in the table. Such a column is called the primary key of the table. Defining a primary key for a table in a database schema automatically creates a primary key index, which is a kind of unique index. This index requires each value of the primary key to be unique. It also provides fast data access when using a primary key index in queries.
Clustered index - in a clustered index, the physical order of the rows in the table is the same as the logical (indexed) order of the key values. A table can have only one clustered index. If the index is not clustered, the physical order of the table rows is different from the logical order of the key values. A clustered index generally provides faster data access than other indexes.
Full-text index - a full-text index is created if you want to perform a full-text search on the text columns of database tables. The full-text index depends on the regular index, so you'll need to create one first. A regular index should be created on a single non-nullable column, and it's best to choose columns with small values rather than large ones.
+
+
+
+
diff --git a/54 - ===== JDBC, SQL & Databases Interview Preparation =====/003 Part 3 SQL - Questions and Answers.html b/54 - ===== JDBC, SQL & Databases Interview Preparation =====/003 Part 3 SQL - Questions and Answers.html
new file mode 100644
index 0000000000000000000000000000000000000000..f7ab8266cc690caf46fd2b72a9a6ea085cf2dc69
--- /dev/null
+++ b/54 - ===== JDBC, SQL & Databases Interview Preparation =====/003 Part 3 SQL - Questions and Answers.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Part 3 SQL - Questions and Answers
+
+
+
+
+
+
+
Part 3 SQL - Questions and Answers
+
SQL (structured query language) is a formal query language used to create, modify and manage data in an arbitrary relational database managed by an appropriate database management system (DBMS). SQL is based on the tuple calculus.
(INNER) JOIN - inner join. The result set contains only records that have the same related field values.
LEFT JOIN - left outer join. The result set contains all records from Table1 and their corresponding records from Table2. If there is no match, the fields from Table2 will be empty.
RIGHT JOIN - right outer join. The result set contains all records from Table2 and their corresponding records from Table1. If there is no match, the fields from Table1 will be empty.
FULL JOIN - full outer join. A combination of the previous two. The result set contains all records from Table1 and their corresponding records from Table2. If there is no match, the fields from Table2 will be empty. Records from Table2 that did not find a match in Table1 will also be present in the result set. In this case, the fields from Table1 will be empty.
CROSS JOIN - Cartesian product. The result set contains all combinations of rows from Table1 and Table2. The connection condition is not specified.
The HAVING section defines a condition that is then applied to groups of strings. Therefore, this clause has the same meaning for a group of rows as the WHERE clause has for the contents of the corresponding table. Syntax of the HAVING clause:
where condition contains aggregate functions or constants.
It is important to understand that the HAVING and WHERE clauses complement each other. First, with the help of WHERE constraints, the final selection is formed, then the breakdown into groups is performed according to the values of the fields specified in GROUP BY. Further, for each group, the group function is calculated and, finally, the HAVING condition is imposed.
SELECT DeptNum, MAX(SALARY) FROM Employees GROUP BY DeptNum HAVING MAX(SALARY) > 1000
In the above example, only departments with a maximum salary greater than 1000 will be included in the result.
DDL(Data Definition Language) - Commands for defining the data structure. The DDL group includes commands that allow you to define the internal structure of the database. Before you save data in the database, you need to create tables in it and, possibly, some other related objects.
For example:
CREATE TABLE
DROP TABLE
ALTER TABLE
DML(Data Manipulation Language) - Data manipulation commands. The DML group contains commands that allow you to enter, modify, delete, and retrieve data from tables.
Examples of DML commands:
TCL(Transaction Control Language) - TCL commands are used to manage data changes produced by DML commands. With their help, several DML commands can be combined into a single logical entity, called a transaction.
In this case, all commands for changing data within one transaction either complete successfully, or all can be canceled in case of any problems with the execution of any of them.
TCL commands examples:
DCL(Data Control Language) - Access control commands. DCL commands control user access to the database and individual objects:
It should be noted that the SQL language, unlike programming languages, has built-in tools to support the absence of any data. This is done using the NULL concept. NULL is not some fixed value stored in a record field instead of the actual data. The NULL value has no defined type. NULL is an indicator that tells the user (and SQL) that there is no data in the record field. Therefore, it cannot be used in comparison operations. To check the fact of the presence or absence of data in SQL, special expressions are introduced.
Then you need to use n-1 join conditions to eliminate the Cartesian join, it may be that more than n-1 join conditions are needed, and completely different join conditions to further reduce the resulting dataset.
A temporary table is a database object that is stored and managed by the database system on a temporary basis. They can be local or global. They are used to store the results of a stored procedure call, reduce the number of rows on joins, aggregate data from different sources, or replace cursors and parameterized views.
When using GROUP BY, all NULL values are considered equal. The NULL value is a special value that can be assigned to a table cell. This value is typically used when the information in a cell is unknown or inappropriate.
The form COUNT(column) counts the number of values in "column". This form of the COUNT function does not take NULL into account when counting the number of values in a column. the COUNT(*) function counts the number of rows in a table, does not ignore NULL, since this function operates on rows, not columns.
DISTINCT Specifies that only unique values in the column are used for calculations. NULL is treated as a single value. If you need to remove only duplicates, it is better to use DISTINCT.
GROUP BY groups the selected set of rows to produce a set of summary rows based on the values of one or more columns or expressions. GROUP BY creates a separate group for all possible values (including null). GROUP BY is best used to define groups of output rows to which aggregate functions (COUNT, MIN, MAX, AVG, and SUM) can be applied.
The UNION operator is used to combine the results of two SQL queries into a single table consisting of similar terms. Both queries must return the same number of columns and compatible data types in the respective columns.
The INTERSECT operator is used to find the intersection of two sets. The result of its execution will be a set of strings that are present in both sets.
The EXCEPT operator is used to find the difference of two sets. The result of the execution is a set of rows from set 1 that are not in set 2.
Execution precedence of operators on sets:
INTERSECT -> EXCEPT -> UNION
It's usually better to use JOIN because it's understandable in most cases and is better optimized by the Database Engine. but not always. Joins take precedence over subqueries when the SELECT query contains columns from more than one table.
Subqueries are best when you need to calculate an aggregate value and use them in outer queries for comparisons.
+
+
+
+
diff --git a/54 - ===== JDBC, SQL & Databases Interview Preparation =====/004 Part 4 SQL - Questions and Answers.html b/54 - ===== JDBC, SQL & Databases Interview Preparation =====/004 Part 4 SQL - Questions and Answers.html
new file mode 100644
index 0000000000000000000000000000000000000000..1a262f31881496bf85bce6b06be874adc0c3c12b
--- /dev/null
+++ b/54 - ===== JDBC, SQL & Databases Interview Preparation =====/004 Part 4 SQL - Questions and Answers.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Part 4 SQL - Questions and Answers
+
+
+
+
+
+
+
Part 4 SQL - Questions and Answers
+
The EXISTS function argument is an inner query. It returns true if the query returns one or more rows, and returns false if the query returns zero rows.
The PIVOT relational operator can be used to modify a table-valued expression in another table. The PIVOT operator expands a table-valued expression, transforming the unique values of one column of the expression into multiple output columns, and optionally concatenates the remaining duplicate column values and displays them in the output.
DATETIME is intended to store an integer: YYYYMMDDHHMMSS. And this time does not depend on the time zone configured on the server. Stores: 8 bytes
TIMESTAMP stores a value equal to the number of seconds that have passed since midnight on January 1, 1970 GMT. When received from the database, it is displayed taking into account the time zone. Stores: 4 bytes.
As operands of addition and subtraction operations, any valid expression of any data type of the numeric category is allowed, except for the bit data type.
A stored procedure is a compiled set of SQL statements that is part of the database and stored on the server. There is a lot in common between Stored Procedures and ordinary programming language procedures: they can have input parameters and output results, they can perform various numerical calculations, as well as perform standard database operations. As with procedures in other programming languages, they can have loops and branches.
The ranking functions return a ranking value for each row in a partition. Depending on the function used, the values of some strings may be the same. The ranking functions are non-deterministic.
Transact-SQL contains the following ranking functions:
RANK
NTILE
DENSE_RANK
ROW_NUMBER
Syntax:
SELECT column_name
RANK() OVER (
PARTITION BY expression
ORDER BY expression [ASC|DESC])
AS 'my_rank' FROM table_name;
In this syntax,
The OVER clause sets the partitioning and ordering of a result before the associated window function is applied.
The PARTITION BY clause divides the output produces by the FROM clause into the partition. Then the function is applied to each partition and re-initialized when the division border crosses partitions. If we have not defined this clause, the function will treat all rows as a single partition.
The ORDER BY is a required clause that determines the order of the rows in a descending or ascending manner based on one or more column names before the function is applied.
Example:
SELECT first_name, last_name, city,
RANK () OVER (ORDER BY city) AS Rank_No
FROM rank_demo;
Yes, it can. If this column is not constrained not null, example: when building a file system tree table, where the foreign key column is a link to the same table, to a tuple with information about the parent directory, then for the root directory of the file system in the parent column directory will be null.
ACID - atomicity, consistency, isolation, durability.
The atomicity property guarantees the indivisibility of a set of statements that modify data in the database and are part of a transaction. This means that either all data changes in the transaction are performed, or in case of any error, all changes already made are canceled.
Consistency ensures that the transaction does not allow the database to contain inconsistent data. In other words, data transformation within a single transaction moves the database from one consistent state to another consistent state.
The isolation property separates all concurrently executing transactions. In other words, no active transaction can see data changes made in a concurrent but not completed transaction. This means that some transactions can be rolled back to provide isolation.
Durability - after its completion, the transaction is stored in the system, which nothing can return to its original (before the start of the transaction) state, i.e. the transaction is committed, meaning that its effect is permanent even if the system fails.
SELECT DISTINCT columnsName FROM tableName;
where: columnsName - one or more real names of columns separated by commas; tableName is the name of the table from which these columns are selected.
If more than one column is included in the SELECT DISTINCT clause, then the uniqueness of any row will be determined by the uniqueness of the corresponding combination of all column values included in the clause on that same row among similar combinations matching other rows.
Although null values are never equal to each other (because they are considered unknown), the DISTINCT clause, on the contrary, considers them duplicates. Therefore, the SELECT DISTINCT command will return only one null value, no matter how many null values it encounters.
A full scan is performed by a multi-block read. Scanning by index - single-block. Also, when accessing by index, the index itself is scanned first, and then blocks are read from the table.
The number of blocks that must be read from the table depends on the clustering factor.
If the total cost of all required single-block reads is greater than the cost of a full scan by multi-block reads, then a full scan is more profitable and is chosen by the optimizer. Thus, a full scan is chosen when the overgrowth predicate selectivity and/or data clustering is weak, or in the case of very small tables.
An aggregate function is a function that returns a single value based on multiple records.
Here is a list of some SQL aggregate functions:
COUNT(*) - Returns the number of rows in the record source
COUNT - Returns the number of values in the specified column
SUM - Returns the sum of the values in the specified column
AVG - Returns the average value in the specified column
MIN - Returns the minimum value in the specified column
MAX - Returns the maximum value in the specified column
Definition of the third normal form of a database.
Any field of any record stores only one value. (1NF) For example, if a field contains a comma-separated list of identifiers, then this is a violation of this definition.
The 1NF condition is met and any non-key field is completely dependent on the key (2NF). For example, we have a record with fields (Identifier, CD Name, Group Name), where the key is the "Identifier" field. At the same time, it is obvious that the "Group Name" field depends not only on the "Identifier" but also on the "CD-Disk Name" field. Therefore, such a database is not in second normal form.
The 2NF condition is met and there are no non-key fields dependent on the value of other non-key fields. For example, we store the region code and its name in the record. It is clear that the name of the region depends on the code, and vice versa, so such a database will not be in the third normal form.
Denormalization is the process of deliberately making a database appear in a way that does not conform to the rules of normalization. This is sometimes necessary to improve performance and data retrieval speed by increasing data redundancy.
If an application needs to frequently perform selects that take too long (for example, joining data from many tables), then denormalization should be considered.
A possible solution is the following: put the results of the sample in a separate table. This will speed up queries, but it also means that this new table needs constant maintenance. Before proceeding with denormalization, you need to make sure that the expected results justify the costs that you have to face.
A trigger is a SQL procedure that fires on some event (INSERT, DELETE or UPDATE). Triggers are stored and managed by the DBMS. Triggers are used to maintain the referential integrity of data in the same manner by responding to data change events. The trigger cannot be called or executed manually, the DBMS automatically calls it after modifying the data in the corresponding table. This is where it differs from stored procedures, which must be executed manually by calling CALL. A trigger can also call other procedures.
A trigger can also contain INSERT, DELETE, and UPDATE calls within itself, thus calling another trigger. Such triggers are called nested.
In computer science, a database cursor is a mechanism that enables traversal over the records in a database. Cursors facilitate subsequent processing in conjunction with the traversal, such as retrieval, addition and removal of database records. The database cursor characteristic of traversal makes cursors akin to the programming language concept of iterator.
Cursors are used by database programmers to process individual rows returned by database system queries. Cursors enable manipulation of whole result sets at once. In this scenario, a cursor enables the sequential processing of rows in a result set.
In SQL procedures, a cursor makes it possible to define a result set (a set of data rows) and perform complex logic on a row by row basis. By using the same mechanics, a SQL procedure can also define a result set and return it directly to the caller of the SQL procedure or to a client application.
A cursor can be viewed as a pointer to one row in a set of rows. The cursor can only reference one row at a time, but can move to other rows of the result set as needed.
A cursor is a database object that allows applications to work with records "one at a time", rather than many at once, as it is done in regular SQL commands.
The procedure for working with a cursor is as follows:
Some of them:
The MERGE operation has officially appeared in the ANSI SQL:2008 standard.
It allows you to insert or modify table records at the same time according to the criteria. When the criterion is met, the rows are changed, otherwise they are inserted. It can be replaced by sequential calls to INSERT and UPDATE. In some databases, a similar operation is called UPSERT.
WHERE is a limiting expression. It is executed before the result of the operation is received.
HAVING is a filter expression. It is applied to the result of the operation and is executed after this result is received, unlike where.
WHERE clauses are used with SELECT, UPDATE, DELETE statements, while HAVING clauses are used only with SELECT and GROUP BY clause.
That is, it is impossible to use WHERE in queries with aggregate functions, and HAVING was introduced for this.
Data integrity is an important property of SQL. When used correctly, it ensures the correctness and validity of the stored data at any given time. Also, they can be used to detect errors in applications that are difficult to find in other ways. Data integrity is maintained through constraints.
There are 4 main restrictions in ANSI SQL: PRIMARY KEY, CHECK, UNIQUE and FOREIGN KEY. They are not required for the table.
PRIMARY KEY - a set of fields (1 or more) whose values form a unique combination and are used to uniquely identify a record in a table. Only one such constraint can be created for a table. This constraint is used to ensure the integrity of the entity described by the table.
CHECK is used to restrict the set of values that can be placed in a given column. This constraint is used to ensure the integrity of the subject area that the tables in the database describe.
A UNIQUE constraint ensures that there are no duplicates in a column or set of columns. The difference between PRIMARY KEY and UNIQUE is described in primary and unique keys, in the question below.
A FOREIGN KEY constraint protects against actions that can break relationships between tables. FOREIGN KEY in one table points to PRIMARY KEY in another. Therefore, this restriction is intended to ensure that there are no FOREIGN KEY entries that do not match the PRIMARY KEY entries. Thus, FOREIGN KEY maintains the referential integrity of the data.
The primary and unique constraints are designed to ensure that the values of the column on which they are defined are unique. But by default, the primary constraint creates a clustered index on the column, while the unique constraint creates a non-clustered one. Another difference is that primary does not allow NULL entries, while unique only allows one NULL entry.
Non-clustered indexes are created by the DBMS by default. The data is physically random, but logically ordered according to the index. This type of index is suitable for tables where values change frequently.
With clustered indexing, the data is physically ordered, which greatly increases the speed of data retrieval (but only in the case of sequential data access). Only one clustered index can be created per table.
+
+
+
+
diff --git a/55 - ===== Exam DAO, Database, JDBC, SQL ======/001 Exam task review and solution_en.srt b/55 - ===== Exam DAO, Database, JDBC, SQL ======/001 Exam task review and solution_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..c154a8b351364a7382ea05e5362d1c6a72614647
--- /dev/null
+++ b/55 - ===== Exam DAO, Database, JDBC, SQL ======/001 Exam task review and solution_en.srt
@@ -0,0 +1,936 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:11,000
+In this lesson, we're going to review the homework that will help you to practice your skills in using
+
+3
+00:00:11,000 --> 00:00:16,000
+Dolly Parton, even B, C and sequel and please, what is this lesson?
+
+4
+00:00:16,000 --> 00:00:20,000
+Because I'm sure this lesson will be super musical for you.
+
+5
+00:00:21,000 --> 00:00:23,000
+Why, I think so.
+
+6
+00:00:23,000 --> 00:00:29,000
+Because exactly in this media, I'm going to feel the gap between the theory and practice, and we'll
+
+7
+00:00:29,000 --> 00:00:35,000
+try to teach you structural thinking in order to achieve better architecture and software design.
+
+8
+00:00:36,000 --> 00:00:42,000
+In this lesson, I am going to share with you a lot of practical things that you wouldn't read on any
+
+9
+00:00:42,000 --> 00:00:46,000
+website and wouldn't find on any forum in the internet.
+
+10
+00:00:46,000 --> 00:00:51,000
+I wish somebody would explain the average student in a similar way when I just started the program.
+
+11
+00:00:52,000 --> 00:00:54,000
+So enjoys the video.
+
+12
+00:00:54,000 --> 00:01:00,000
+Also, if you are a student of my job, of course, you know that during the course we implement online
+
+13
+00:01:00,000 --> 00:01:00,000
+shop.
+
+14
+00:01:01,000 --> 00:01:05,000
+And in this homework, we're going to make the next step towards our goal.
+
+15
+00:01:06,000 --> 00:01:11,000
+Great web application of our online store today will improve our lives.
+
+16
+00:01:11,000 --> 00:01:14,000
+It is responsible for storing information in our app.
+
+17
+00:01:15,000 --> 00:01:17,000
+Let's start from reviewing the task first.
+
+18
+00:01:18,000 --> 00:01:22,000
+First of all, you need to download template of the app to your computer.
+
+19
+00:01:23,000 --> 00:01:26,000
+Here are provided templates application.
+
+20
+00:01:26,000 --> 00:01:30,000
+This is the latest version of our that with together with all students.
+
+21
+00:01:31,000 --> 00:01:36,000
+In case you want to implement the application from scratch or you want to become more familiar with
+
+22
+00:01:36,000 --> 00:01:39,000
+the functionality of the app just in case.
+
+23
+00:01:39,000 --> 00:01:42,000
+Here I also have a description of all functional requirements.
+
+24
+00:01:43,000 --> 00:01:46,000
+You can check them and implement that app by your own.
+
+25
+00:01:47,000 --> 00:01:53,000
+But still, I believe using the template is more than enough to achieve the goals of this homework.
+
+26
+00:01:53,000 --> 00:01:59,000
+Once you are able to run the solution locally, we're going to proceed with the next steps.
+
+27
+00:02:00,000 --> 00:02:03,000
+On the next step, you have to create tables in the database.
+
+28
+00:02:03,000 --> 00:02:09,000
+If you followed the course, then we created almost all necessary tablespoons.
+
+29
+00:02:09,000 --> 00:02:16,000
+Of course, you need just to create one more table and make some minor adjustments by adding additional
+
+30
+00:02:16,000 --> 00:02:16,000
+columns.
+
+31
+00:02:17,000 --> 00:02:24,000
+If you don't have any table created yet, create all necessary tables from scratch at the end of the
+
+32
+00:02:24,000 --> 00:02:25,000
+homework description.
+
+33
+00:02:25,000 --> 00:02:32,000
+Will provide you with the link to my data expert, and you will be able to include the same tables that
+
+34
+00:02:32,000 --> 00:02:34,000
+I have with the same data.
+
+35
+00:02:35,000 --> 00:02:38,000
+After that, you need to implement the types for that.
+
+36
+00:02:39,000 --> 00:02:45,000
+I want you to indentify which star types you have to create by yourself, because this is also part
+
+37
+00:02:45,000 --> 00:02:46,000
+of the task.
+
+38
+00:02:46,000 --> 00:02:53,000
+I will not tell you that you have to implement these these lenses now because this is super simple for
+
+39
+00:02:53,000 --> 00:02:53,000
+your level already.
+
+40
+00:02:54,000 --> 00:03:00,000
+But nevertheless, I will provide you was my solution and you will be able to find what types I create
+
+41
+00:03:01,000 --> 00:03:02,000
+together with no thoughts.
+
+42
+00:03:02,000 --> 00:03:04,000
+You need to create detail or types.
+
+43
+00:03:05,000 --> 00:03:11,000
+And one more important thing I recommend you to create converters between video and business entities.
+
+44
+00:03:12,000 --> 00:03:20,000
+I've explained why now and on example because data transfer objects are nothing more than a reflection
+
+45
+00:03:20,000 --> 00:03:23,000
+of the data from the database in Java objects.
+
+46
+00:03:24,000 --> 00:03:27,000
+But these objects are not true objects.
+
+47
+00:03:27,000 --> 00:03:35,000
+If you understand what I mean, zap pure data structures that don't have any behavior, while existing
+
+48
+00:03:35,000 --> 00:03:40,000
+business objects that are already created in the app may have some behavior.
+
+49
+00:03:41,000 --> 00:03:49,000
+Another point is that database table may contain dozens of rules, but not all the information from
+
+50
+00:03:49,000 --> 00:03:53,000
+each column may be used in existing business scenarios.
+
+51
+00:03:54,000 --> 00:03:59,000
+It might happen that some of the values are used just for consistency purposes.
+
+52
+00:04:00,000 --> 00:04:02,000
+As a column I used not so.
+
+53
+00:04:02,000 --> 00:04:07,000
+I choose a solution of business goals, but to solve some technical aspects of implementation.
+
+54
+00:04:08,000 --> 00:04:14,000
+That's why it is not always a guarantee that all information from the veto will be used in the app.
+
+55
+00:04:15,000 --> 00:04:21,000
+And last but not least, the argument to implement convergence between the data and models is isolation.
+
+56
+00:04:22,000 --> 00:04:26,000
+I will go now and in the future is to reduce coupling between modules.
+
+57
+00:04:27,000 --> 00:04:33,000
+We're about to introduce new persistence layer and instead of rewriting business models and business
+
+58
+00:04:33,000 --> 00:04:40,000
+logic of the app, what we do will is averaging like it was before to minimize the impact of adjustments
+
+59
+00:04:41,000 --> 00:04:45,000
+to make sure that the existing application will work like it's worked before.
+
+60
+00:04:45,000 --> 00:04:52,000
+But together with new persistence layer, we introduce convergence that can convert our digital objects
+
+61
+00:04:53,000 --> 00:04:55,000
+to existing business objects.
+
+62
+00:04:55,000 --> 00:05:02,000
+And in case we can take control over the process of converting objects into business objects and vice
+
+63
+00:05:02,000 --> 00:05:03,000
+versa.
+
+64
+00:05:03,000 --> 00:05:10,000
+And in this case, we can take control of the process of converting digital objects into business objects
+
+65
+00:05:10,000 --> 00:05:11,000
+and vice versa.
+
+66
+00:05:12,000 --> 00:05:16,000
+And now the important thing is the task implementation.
+
+67
+00:05:16,000 --> 00:05:21,000
+Do not hesitate to remove Java files that you see we don't need anymore.
+
+68
+00:05:22,000 --> 00:05:24,000
+We created this solution during the Java course.
+
+69
+00:05:25,000 --> 00:05:31,000
+And sometimes we separate that responsibility as much as we can for demo purposes.
+
+70
+00:05:31,000 --> 00:05:37,000
+Probably you can merge some types together, and some of them completely may be removed.
+
+71
+00:05:38,000 --> 00:05:38,000
+It is up to you.
+
+72
+00:05:39,000 --> 00:05:46,000
+Just want to highlight that during my solution to you are going to see some of the facts are made.
+
+73
+00:05:46,000 --> 00:05:53,000
+And as you may already understand, the main goal of this task is to make sure that our solution works
+
+74
+00:05:53,000 --> 00:06:01,000
+with database and use relational database as main persistent storage z sole task is that you have to
+
+75
+00:06:01,000 --> 00:06:01,000
+work on.
+
+76
+00:06:02,000 --> 00:06:06,000
+So now you can press a pause and start implementation of the task.
+
+77
+00:06:07,000 --> 00:06:11,000
+And when you will be done with implementation, you can review my solution.
+
+78
+00:06:12,000 --> 00:06:12,000
+Yeah.
+
+79
+00:06:12,000 --> 00:06:15,000
+Left reference to commands that contains all changes done.
+
+80
+00:06:16,000 --> 00:06:21,000
+But if you want to look at the solution as a whole, you can find all code of the solutions here.
+
+81
+00:06:22,000 --> 00:06:29,000
+Separately, I left here allocation of scripts in database in case you would like to record a state
+
+82
+00:06:29,000 --> 00:06:29,000
+of SAP.
+
+83
+00:06:30,000 --> 00:06:34,000
+And also let me hold quick walkthrough of the solution of the task.
+
+84
+00:06:35,000 --> 00:06:42,000
+So the first thing that I did, I created the types I didn't implement all across operations for the
+
+85
+00:06:42,000 --> 00:06:50,000
+purpose because usually I would keep records that I don't use and that I decided to rely only on the
+
+86
+00:06:50,000 --> 00:06:57,000
+business behavior and declare masses as it would allow to access just enough data to perform existing
+
+87
+00:06:57,000 --> 00:06:58,000
+business behavior.
+
+88
+00:06:58,000 --> 00:07:07,000
+How I did that, I looked at existing business there, and this application of business logic is concentrated
+
+89
+00:07:07,000 --> 00:07:08,000
+in services.
+
+90
+00:07:08,000 --> 00:07:11,000
+We have separate package was services here.
+
+91
+00:07:12,000 --> 00:07:19,000
+So what I did, I open the services, review them and created a downtimes that would help you to achieve
+
+92
+00:07:19,000 --> 00:07:20,000
+expected results.
+
+93
+00:07:20,000 --> 00:07:22,000
+Let me show you z on one example.
+
+94
+00:07:23,000 --> 00:07:26,000
+For example, the user management service.
+
+95
+00:07:26,000 --> 00:07:28,000
+Let's see what this service does.
+
+96
+00:07:29,000 --> 00:07:30,000
+It registers user.
+
+97
+00:07:31,000 --> 00:07:33,000
+What this means for me.
+
+98
+00:07:33,000 --> 00:07:37,000
+This means that during registration, users should be saved in the.
+
+99
+00:07:38,000 --> 00:07:38,000
+Database.
+
+100
+00:07:39,000 --> 00:07:43,000
+So in my user now I declare massive safe user.
+
+101
+00:07:44,000 --> 00:07:50,000
+But why isn't I don't use registered user as an interface of my DAO implementations?
+
+102
+00:07:51,000 --> 00:07:54,000
+The answer is simple and complex at the same time.
+
+103
+00:07:55,000 --> 00:08:02,000
+I don't use my service as a downer because this service is another layer of abstraction.
+
+104
+00:08:03,000 --> 00:08:07,000
+It isn't easy to understand at first glance, but let me try to explain.
+
+105
+00:08:08,000 --> 00:08:14,000
+And probably in many other languages, in larger price applications, you would ignore this.
+
+106
+00:08:15,000 --> 00:08:16,000
+But not many guys.
+
+107
+00:08:17,000 --> 00:08:20,000
+I'm going to teach you how to create scalable architecture.
+
+108
+00:08:21,000 --> 00:08:26,000
+So this course, user management service is a business there.
+
+109
+00:08:26,000 --> 00:08:27,000
+What does that mean?
+
+110
+00:08:28,000 --> 00:08:35,000
+This means that besides saving user, it is a database and lots of other things may happen.
+
+111
+00:08:35,000 --> 00:08:37,000
+User user registration.
+
+112
+00:08:38,000 --> 00:08:43,000
+What are the things, for example, user user registration you things may happen.
+
+113
+00:08:44,000 --> 00:08:48,000
+The most obvious one we store information about usernames and database.
+
+114
+00:08:49,000 --> 00:08:52,000
+Also, potentially, we sent a welcome email.
+
+115
+00:08:53,000 --> 00:08:58,000
+The user also dependent on the conditions of our affiliate program.
+
+116
+00:08:58,000 --> 00:09:05,000
+We need Three Flags that this user was registered by the reference of another user in order that the
+
+117
+00:09:05,000 --> 00:09:11,000
+user will receive bonuses in the future from the money spent by this user inside the application.
+
+118
+00:09:12,000 --> 00:09:14,000
+And these are just a few examples.
+
+119
+00:09:14,000 --> 00:09:23,000
+Registered user Behera describes some business case business behavior, and on the implementation level,
+
+120
+00:09:23,000 --> 00:09:29,000
+we define how this behavior will be implemented and saving user does it not base?
+
+121
+00:09:29,000 --> 00:09:33,000
+It is just one step means a user registration flow.
+
+122
+00:09:34,000 --> 00:09:35,000
+Do you feel my point now?
+
+123
+00:09:36,000 --> 00:09:40,000
+That's why I strongly recommend to keep this list separately.
+
+124
+00:09:41,000 --> 00:09:45,000
+You already know the benefits that we can get from the low koplan.
+
+125
+00:09:45,000 --> 00:09:46,000
+I wouldn't repeat myself.
+
+126
+00:09:47,000 --> 00:09:53,000
+I would just make a reference here to my in-laws, of course, is the school software architecture Anthony
+
+127
+00:09:53,000 --> 00:10:00,000
+called Design, where I explained and details the benefits of low Koplan and how to achieve scalable
+
+128
+00:10:00,000 --> 00:10:01,000
+architecture.
+
+129
+00:10:02,000 --> 00:10:08,000
+Words that course through if you wish this will extremely beneficial for all software engineers, regardless
+
+130
+00:10:08,000 --> 00:10:10,000
+programming language they use.
+
+131
+00:10:11,000 --> 00:10:19,000
+And similar case with other masses, for example, I have get users behavior in my service and I forget
+
+132
+00:10:19,000 --> 00:10:21,000
+users in my downtime.
+
+133
+00:10:22,000 --> 00:10:30,000
+But here's one more difference in user management service gets users returns a list of user objects,
+
+134
+00:10:30,000 --> 00:10:37,000
+but in mind now all of you get users massive returns, US list of user data objects.
+
+135
+00:10:37,000 --> 00:10:39,000
+Why is this is different?
+
+136
+00:10:39,000 --> 00:10:45,000
+I tried to explain this during a home task description, and I will remind you now.
+
+137
+00:10:46,000 --> 00:10:52,000
+So the detail object is data structure in very, very simplified words.
+
+138
+00:10:52,000 --> 00:10:59,000
+This is a reflection of all fields that the user table has in the database, and not all ways to solve.
+
+139
+00:10:59,000 --> 00:11:02,000
+Our business case is unique to you and data structures.
+
+140
+00:11:03,000 --> 00:11:09,000
+At the end of the day, we need to have places where to put objects related behavior, and this should
+
+141
+00:11:09,000 --> 00:11:13,000
+be business types, but not data structures.
+
+142
+00:11:13,000 --> 00:11:22,000
+Also, as I already said in detail, might be fields that are not used in business logic and exist just
+
+143
+00:11:22,000 --> 00:11:24,000
+to support data consistency.
+
+144
+00:11:24,000 --> 00:11:32,000
+By the way, having separate data and business objects, we can minimize impact and modification of
+
+145
+00:11:32,000 --> 00:11:32,000
+persistence systems.
+
+146
+00:11:33,000 --> 00:11:40,000
+And in a similar way, I analyze the business needs of the app and created the phrases for different
+
+147
+00:11:41,000 --> 00:11:41,000
+types.
+
+148
+00:11:42,000 --> 00:11:47,000
+After that, I had to implement these interfaces not since complex here.
+
+149
+00:11:48,000 --> 00:11:53,000
+Every scene is similar to the approach we discussed during our GDC lessons.
+
+150
+00:11:54,000 --> 00:12:00,000
+Probably the only one interested in seeing that we didn't discuss during lesson is auto generated is
+
+151
+00:12:01,000 --> 00:12:02,000
+usually rated by.
+
+152
+00:12:02,000 --> 00:12:05,000
+That's a base for the new top Ojo's insertion.
+
+153
+00:12:06,000 --> 00:12:12,000
+When this model needed imagines that the insurgents formation that you purchase is a database in one
+
+154
+00:12:12,000 --> 00:12:14,000
+table in purchased table.
+
+155
+00:12:15,000 --> 00:12:22,000
+But also you need to base Newt to oppose and purchase products that implement many, many relationships
+
+156
+00:12:22,000 --> 00:12:26,000
+between product and purchase entities and to implement this.
+
+157
+00:12:27,000 --> 00:12:30,000
+We need the base I.D. of generated purchase.
+
+158
+00:12:31,000 --> 00:12:38,000
+We can extract auto generated from the statement during the creation of the statement.
+
+159
+00:12:38,000 --> 00:12:44,000
+We have to parse that for auto generated case in safe purchase method.
+
+160
+00:12:44,000 --> 00:12:53,000
+We have this example, so you can see that I post custom value from statements close to the school return
+
+161
+00:12:53,000 --> 00:12:55,000
+generated case.
+
+162
+00:12:55,000 --> 00:13:04,000
+This is just a flat single int value, and once we execute this statement, we can get auto generated
+
+163
+00:13:04,000 --> 00:13:13,000
+piece by column yet generated case massive vehicle returns, a result set that will contain auto generated
+
+164
+00:13:13,000 --> 00:13:15,000
+key for each and set it up.
+
+165
+00:13:16,000 --> 00:13:24,000
+And we will use that key to insert trackers in purchase product table, as you can see, I execute this
+
+166
+00:13:24,000 --> 00:13:27,000
+insertions in watch to improve performance.
+
+167
+00:13:28,000 --> 00:13:31,000
+Basically, the rest of the scenes here should be familiar to you.
+
+168
+00:13:32,000 --> 00:13:40,000
+By the way, I remember it's one more thing I need all the management service and order entity into
+
+169
+00:13:40,000 --> 00:13:48,000
+purchase because order is a key word in the database and that is hard to use order as a database name.
+
+170
+00:13:48,000 --> 00:13:56,000
+That's why to address this challenge, I decided to use purchase terminology instead and renamed all
+
+171
+00:13:56,000 --> 00:13:58,000
+related files in our app here.
+
+172
+00:13:59,000 --> 00:14:07,000
+Also, I created Category Table is a database that contains only category name and I.D. because there's
+
+173
+00:14:07,000 --> 00:14:11,000
+a connection between product and category manager one.
+
+174
+00:14:12,000 --> 00:14:16,000
+Different products may be related was one Category two.
+
+175
+00:14:16,000 --> 00:14:20,000
+Implement this We also need to add foreign key in product.
+
+176
+00:14:20,000 --> 00:14:24,000
+Table three Establish connection between each product category.
+
+177
+00:14:25,000 --> 00:14:33,000
+Those are changes that they need in the database and also implements respective types in the app in
+
+178
+00:14:33,000 --> 00:14:41,000
+parallel by implementing different data types to reflect each database entity in Java in object oriented
+
+179
+00:14:41,000 --> 00:14:42,000
+way.
+
+180
+00:14:42,000 --> 00:14:44,000
+Nothing so much interesting here.
+
+181
+00:14:45,000 --> 00:14:47,000
+Just fields, getters and setters.
+
+182
+00:14:48,000 --> 00:14:51,000
+Separate package here is code converter.
+
+183
+00:14:51,000 --> 00:14:59,000
+This package contains all converters that I need in my app to convert your objects to business objects
+
+184
+00:14:59,000 --> 00:15:00,000
+and vice versa.
+
+185
+00:15:01,000 --> 00:15:06,000
+Let's review one of the example product detail converter in our application.
+
+186
+00:15:06,000 --> 00:15:10,000
+We also often work with collections of details and business models.
+
+187
+00:15:11,000 --> 00:15:19,000
+That's why it also makes sense for us to have an API that easily converts least of use the list of business
+
+188
+00:15:19,000 --> 00:15:20,000
+objects and vice versa.
+
+189
+00:15:21,000 --> 00:15:27,000
+Inside the masses, I basically create objects that I need and manually populate data.
+
+190
+00:15:27,000 --> 00:15:32,000
+Probably, you might be wondering why do we need so many classes?
+
+191
+00:15:32,000 --> 00:15:36,000
+It is crazy amount of classes, even on simple example.
+
+192
+00:15:36,000 --> 00:15:42,000
+You are right in some degree, but you always should understand the goals that we want to achieve.
+
+193
+00:15:43,000 --> 00:15:49,000
+Our goal is to make software designs that would allow us easily to scale our application when it will
+
+194
+00:15:49,000 --> 00:15:58,000
+be needed and one more interested in seeing the share such objects as d'etats converters may be auto
+
+195
+00:15:58,000 --> 00:15:58,000
+generated.
+
+196
+00:15:59,000 --> 00:16:06,000
+As you can see, Zen follows similar pattern, and this is also possible to write the code that will
+
+197
+00:16:06,000 --> 00:16:08,000
+auto generate classes like this.
+
+198
+00:16:09,000 --> 00:16:17,000
+Based on our entity's definition in such enterprise, the eCommerce solution as harbors from SAP similar
+
+199
+00:16:17,000 --> 00:16:25,000
+to generation is already implemented and during the build process, such kind of classes create automatically.
+
+200
+00:16:25,000 --> 00:16:33,000
+If you have enough time, you can also implement seamless sync because if you followed my job, of course
+
+201
+00:16:33,000 --> 00:16:40,000
+you already know what your affection is and you know how you can use it to dynamically explore a program
+
+202
+00:16:40,000 --> 00:16:40,000
+is around that.
+
+203
+00:16:42,000 --> 00:16:49,000
+The next thing that they did, I created new implementations of services, we have product management
+
+204
+00:16:49,000 --> 00:16:56,000
+service to products, we have purchase management service to manage purchases and we have user management
+
+205
+00:16:56,000 --> 00:16:57,000
+service to manage users.
+
+206
+00:16:58,000 --> 00:17:00,000
+These are existing interfaces.
+
+207
+00:17:00,000 --> 00:17:06,000
+I just gave them another mutation and created three new services.
+
+208
+00:17:07,000 --> 00:17:11,000
+ZF, the implementations injected into zone.
+
+209
+00:17:12,000 --> 00:17:19,000
+Let me open my school user management service here is registered user massive, not just use dot to
+
+210
+00:17:19,000 --> 00:17:21,000
+save user in the database.
+
+211
+00:17:22,000 --> 00:17:26,000
+It also returns error message in case something is going wrong.
+
+212
+00:17:27,000 --> 00:17:30,000
+For example, such emails already registered.
+
+213
+00:17:31,000 --> 00:17:36,000
+This is also some kind of business logic that couldn't be just moved to the door.
+
+214
+00:17:37,000 --> 00:17:38,000
+Can you understand that?
+
+215
+00:17:39,000 --> 00:17:46,000
+And besides that, some of the scenarios that are not implemented here but potentially can be like welcome
+
+216
+00:17:46,000 --> 00:17:53,000
+email notification or implementation of affiliate program, all this could potentially will be stored
+
+217
+00:17:53,000 --> 00:17:56,000
+here, but not in the.
+
+218
+00:17:57,000 --> 00:18:05,000
+That's why I want you scenes on these services, just designated locations to sit down objects and converters,
+
+219
+00:18:06,000 --> 00:18:07,000
+seek wine.
+
+220
+00:18:08,000 --> 00:18:16,000
+And the last scenes that we have to do is to inject our services inside our menus, right in our general
+
+221
+00:18:16,000 --> 00:18:17,000
+course.
+
+222
+00:18:17,000 --> 00:18:23,000
+I'm going to teach you how to use dependency injection in case we use dependency injection.
+
+223
+00:18:23,000 --> 00:18:30,000
+It is only a matter of consideration to set what concrete implementation of interface you want to inject
+
+224
+00:18:30,000 --> 00:18:31,000
+in one or another object.
+
+225
+00:18:32,000 --> 00:18:39,000
+In our case, we need to make these changes not in the configuration level, but still on the source
+
+226
+00:18:39,000 --> 00:18:40,000
+code level.
+
+227
+00:18:40,000 --> 00:18:48,000
+For example, in check out menu, I need to open it and initialize my service was another implementation
+
+228
+00:18:48,000 --> 00:18:52,000
+of the interface, and I did this for each menu.
+
+229
+00:18:53,000 --> 00:18:59,000
+After this is done, I can run my app and make sure that everything works as expected.
+
+230
+00:19:00,000 --> 00:19:04,000
+And by the way, you already know how to work with G-Unit and locate.
+
+231
+00:19:05,000 --> 00:19:13,000
+So never forget the right this to make sure that you didn't break Arneson hands of Amazon works as expected.
+
+232
+00:19:14,000 --> 00:19:20,000
+That's so what I wanted to share with you in the media, even in case you still have some questions,
+
+233
+00:19:21,000 --> 00:19:28,000
+please do not hesitate to -- in comments below this video since selecting for your attention.
+
+234
+00:19:29,000 --> 00:19:32,000
+Have a great day and see you in the next lesson.
+
diff --git a/55 - ===== Exam DAO, Database, JDBC, SQL ======/001 Homework-description-and-reference-to-the-solution.url b/55 - ===== Exam DAO, Database, JDBC, SQL ======/001 Homework-description-and-reference-to-the-solution.url
new file mode 100644
index 0000000000000000000000000000000000000000..7e1c4ac1c6bade36d33083477401fa2812f4631b
--- /dev/null
+++ b/55 - ===== Exam DAO, Database, JDBC, SQL ======/001 Homework-description-and-reference-to-the-solution.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://docs.google.com/document/d/1o5Y33LTL-5fild3Uii3qTi-Zmc4u6jN-TuYsSibeQoU/edit?usp=sharing
\ No newline at end of file
diff --git a/55 - ===== Exam DAO, Database, JDBC, SQL ======/external-links.txt b/55 - ===== Exam DAO, Database, JDBC, SQL ======/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f9bc97e71b565c7fa0863450730094f10c9aa904
--- /dev/null
+++ b/55 - ===== Exam DAO, Database, JDBC, SQL ======/external-links.txt
@@ -0,0 +1,3 @@
+
+001 Homework-description-and-reference-to-the-solution
+https://docs.google.com/document/d/1o5Y33LTL-5fild3Uii3qTi-Zmc4u6jN-TuYsSibeQoU/edit?usp=sharing
diff --git a/56 - Web/001 OSI Model, HTTP, TCPIP_en.srt b/56 - Web/001 OSI Model, HTTP, TCPIP_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..9430ba0d3b2cf7ec00cc41a7e9d3959439e6ad92
--- /dev/null
+++ b/56 - Web/001 OSI Model, HTTP, TCPIP_en.srt
@@ -0,0 +1,1320 @@
+1
+00:00:06,000 --> 00:00:11,000
+Hello again, in this lesson, we're going to learn the very important topic in general for programming
+
+2
+00:00:11,000 --> 00:00:14,000
+and especially for web development.
+
+3
+00:00:14,000 --> 00:00:20,000
+I know that this topic is not very popular and one other programming courses, and you wouldn't find
+
+4
+00:00:20,000 --> 00:00:23,000
+a similar lesson in all other courses.
+
+5
+00:00:23,000 --> 00:00:28,000
+I just can't understand why other tutors don't pay too much attention to this topic.
+
+6
+00:00:29,000 --> 00:00:35,000
+And in my opinion, learning of also models should be the first thing students have to learn before
+
+7
+00:00:35,000 --> 00:00:39,000
+starting to learn web development and understanding that concepts.
+
+8
+00:00:39,000 --> 00:00:43,000
+So today we're going to learn a site model.
+
+9
+00:00:43,000 --> 00:00:51,000
+We're going to start this lesson from the general overview of what oil size model is and what its primary
+
+10
+00:00:51,000 --> 00:00:52,000
+goal.
+
+11
+00:00:52,000 --> 00:00:57,000
+And I will explain why we need to know or assign model and why I believe it is important.
+
+12
+00:00:58,000 --> 00:01:05,000
+After that, we'll start focusing more on how or assign model averse neurons a lesson you will learn
+
+13
+00:01:05,000 --> 00:01:09,000
+that oil size describes through the seven different and independent layers.
+
+14
+00:01:10,000 --> 00:01:16,000
+So the rest of the lesson we'll talk about each layer, in particular of the Osai model, and we are
+
+15
+00:01:16,000 --> 00:01:21,000
+going to understand the goal of each layer, its functions.
+
+16
+00:01:22,000 --> 00:01:28,000
+Types of data pass through each layer and examples of their implementation.
+
+17
+00:01:29,000 --> 00:01:36,000
+Namely, we're going to talk about physical labeling, network transport, session presentation and
+
+18
+00:01:36,000 --> 00:01:37,000
+application layers.
+
+19
+00:01:38,000 --> 00:01:46,000
+After this lesson, it will become clear for you what actually IP is why this IP often used to gather
+
+20
+00:01:47,000 --> 00:01:48,000
+what is HTP?
+
+21
+00:01:49,000 --> 00:01:57,000
+CPS have to be and all the champs, because very soon in this course we're going to work very closely
+
+22
+00:01:57,000 --> 00:01:58,000
+with these concepts.
+
+23
+00:01:58,000 --> 00:02:01,000
+And you need to understand what they are.
+
+24
+00:02:01,000 --> 00:02:03,000
+Let's start our lesson.
+
+25
+00:02:04,000 --> 00:02:09,000
+Let's start from understanding of what or some model is and why it was developed.
+
+26
+00:02:10,000 --> 00:02:15,000
+The also model stands for Open Systems Interconnection model.
+
+27
+00:02:15,000 --> 00:02:23,000
+It is a conceptual model that resides in certain types of communication functions of a telecommunication
+
+28
+00:02:23,000 --> 00:02:30,000
+or computing system without regard to its underlying internal structure and technology.
+
+29
+00:02:31,000 --> 00:02:39,000
+The also model was developed starting in the late 1970s to support the emergence of the diverse computing
+
+30
+00:02:39,000 --> 00:02:47,000
+and networking masses that were competing for application is a large national network in the Fourth
+
+31
+00:02:47,000 --> 00:02:49,000
+World in the 1980s.
+
+32
+00:02:50,000 --> 00:02:57,000
+The model became a working product of the Open Systems Interconnection Group and the International Organization
+
+33
+00:02:57,000 --> 00:02:58,000
+for Standardization.
+
+34
+00:02:59,000 --> 00:03:06,000
+The model partitions the flow of data in the communications system into seven abstraction layers from
+
+35
+00:03:06,000 --> 00:03:13,000
+the physical implementation of transmitting bits across a communications medium to the highest level
+
+36
+00:03:13,000 --> 00:03:16,000
+representation of data of a distributed application.
+
+37
+00:03:17,000 --> 00:03:23,000
+Each intermediate layer serves a class of French analogy to Zimbabwe and is served by the layer.
+
+38
+00:03:23,000 --> 00:03:31,000
+The lower classes of functionality are realized and software by standardized communication protocols.
+
+39
+00:03:32,000 --> 00:03:37,000
+The beginning of the lesson I already told you that I believe that always model is super important.
+
+40
+00:03:38,000 --> 00:03:46,000
+Most people in this space will likely need to know about the different layers when and learn for the
+
+41
+00:03:46,000 --> 00:03:47,000
+certifications.
+
+42
+00:03:47,000 --> 00:03:53,000
+Much like students who learn, law needs to learn about the three branches of the power in the government
+
+43
+00:03:54,000 --> 00:04:00,000
+because we, as software engineers not always be configured as manually, not always.
+
+44
+00:04:00,000 --> 00:04:07,000
+We're dealing with physical service, but we work with the system on different levels and sometimes
+
+45
+00:04:07,000 --> 00:04:12,000
+we work with those levels directly, sometimes indirectly.
+
+46
+00:04:12,000 --> 00:04:17,000
+And now one of my students understands the big picture, at least on the high level.
+
+47
+00:04:17,000 --> 00:04:22,000
+You know, there's a knowledge that we are going to learn will be structured and you within this, then
+
+48
+00:04:22,000 --> 00:04:25,000
+what else stands behind the scenes?
+
+49
+00:04:26,000 --> 00:04:32,000
+The understanding of the big picture helps with the problems troubleshooting when you want to understand
+
+50
+00:04:32,000 --> 00:04:34,000
+on which layer we have issues.
+
+51
+00:04:35,000 --> 00:04:42,000
+In other words, I can tell based on my experience, my life and my understanding of the computer systems,
+
+52
+00:04:42,000 --> 00:04:48,000
+and especially if that program was not complete and not structure it.
+
+53
+00:04:48,000 --> 00:04:54,000
+And, you know, learn once side model, that's one for all my students offline and online.
+
+54
+00:04:54,000 --> 00:05:00,000
+I teach this lesson as a mandatory first lesson before we start learning that technologies.
+
+55
+00:05:01,000 --> 00:05:02,000
+And on top of that?
+
+56
+00:05:03,000 --> 00:05:10,000
+The time we hear about the oil ceremonial, when vendors are making speeches about where their products
+
+57
+00:05:10,000 --> 00:05:11,000
+work with.
+
+58
+00:05:12,000 --> 00:05:15,000
+Let's start learning more specifics about oil same model.
+
+59
+00:05:16,000 --> 00:05:24,000
+The oil sarin model is divided into two groups of layers upper class and lower layers, like you can
+
+60
+00:05:24,000 --> 00:05:31,000
+see on the slide, sometimes called hustlers and media players or host and network layers.
+
+61
+00:05:31,000 --> 00:05:39,000
+I read different sources of information, and as you can see, sometimes a group of lawyers call differently
+
+62
+00:05:39,000 --> 00:05:40,000
+in general.
+
+63
+00:05:40,000 --> 00:05:50,000
+Zero seven, there's zero physical data link, network transfer session, presentation and application.
+
+64
+00:05:51,000 --> 00:05:55,000
+On the slide, you can see how these layers a grouped into two groups.
+
+65
+00:05:56,000 --> 00:06:04,000
+The upper layer of the assigned model, mainly these was an application related issues and that implemented
+
+66
+00:06:04,000 --> 00:06:12,000
+only in the software application layer is closest to the end user, both the user and the application
+
+67
+00:06:12,000 --> 00:06:15,000
+that interacts with the software applications.
+
+68
+00:06:16,000 --> 00:06:23,000
+The lower layer of the or assigned model use was the data transport issues is the data link layer and
+
+69
+00:06:23,000 --> 00:06:27,000
+the physical layer are implemented in hardware and software.
+
+70
+00:06:28,000 --> 00:06:34,000
+The physical there is the lowest layer of the also model, and it's closest to the physical medium.
+
+71
+00:06:35,000 --> 00:06:42,000
+The physical data is mainly responsible populations information on the physical medium, and now it
+
+72
+00:06:42,000 --> 00:06:49,000
+is time to go deeper and talk about each layer in particular, and we will go in bottom up direction.
+
+73
+00:06:49,000 --> 00:06:53,000
+We are going to start from the physical layer and go further.
+
+74
+00:06:54,000 --> 00:06:57,000
+That's not the key things about physical there.
+
+75
+00:06:57,000 --> 00:07:02,000
+The first thing that is worse dimension is the main function of the physical layer.
+
+76
+00:07:03,000 --> 00:07:10,000
+It is to transmit the individual bits from one note to another note, as you already saw on previous
+
+77
+00:07:10,000 --> 00:07:10,000
+slides.
+
+78
+00:07:11,000 --> 00:07:14,000
+It is the lowest layer of the Orso model.
+
+79
+00:07:14,000 --> 00:07:18,000
+It establishes, maintains and deactivates is a physical connection.
+
+80
+00:07:19,000 --> 00:07:25,000
+It specifies the mechanical, electrical and procedural network interface specifications.
+
+81
+00:07:26,000 --> 00:07:34,000
+Let's understand now functions of the physical layer is a function of the physical there are in defines
+
+82
+00:07:34,000 --> 00:07:37,000
+the way how two or more devices can be connected physically.
+
+83
+00:07:37,000 --> 00:07:41,000
+It defines the transmission mode between the two devices on the network.
+
+84
+00:07:42,000 --> 00:07:45,000
+It defines the way home network devices are arranged.
+
+85
+00:07:46,000 --> 00:07:50,000
+It determines the type of the signal used for transmitting information.
+
+86
+00:07:51,000 --> 00:07:54,000
+So what kind of data is transferred on this level?
+
+87
+00:07:55,000 --> 00:08:02,000
+Critical data units on this land is a bit and believe you know, such digital format of data structure
+
+88
+00:08:02,000 --> 00:08:05,000
+like that, it is just one four zero.
+
+89
+00:08:06,000 --> 00:08:15,000
+Use me, or registered jet that is sometimes called R.G. may serve as example of physical air that seats
+
+90
+00:08:15,000 --> 00:08:16,000
+within physical land.
+
+91
+00:08:16,000 --> 00:08:20,000
+Don't worry, are not granted on how you use me or energy works.
+
+92
+00:08:20,000 --> 00:08:25,000
+Understanding on this level is more than enough for this point in our course.
+
+93
+00:08:26,000 --> 00:08:33,000
+The next layer is that this goes right after the physical that is called datalink, that the key since
+
+94
+00:08:33,000 --> 00:08:41,000
+you need to know about datalink there are its main responsibility is error free transfer of data frames.
+
+95
+00:08:41,000 --> 00:08:45,000
+Also, it defines the format of the data on the network.
+
+96
+00:08:45,000 --> 00:08:50,000
+It provides a reliable and efficient communication between two or more devices.
+
+97
+00:08:51,000 --> 00:08:57,000
+It is mainly responsible for the unique identification of each device that resides on the local network.
+
+98
+00:08:58,000 --> 00:09:06,000
+Data leak contains two sub layers logical link control that that is responsible for transferring the
+
+99
+00:09:06,000 --> 00:09:13,000
+packets to the network layer of the receivers that is receiving it identifies the address of the network.
+
+100
+00:09:13,000 --> 00:09:15,000
+Layer protocol comes ahead.
+
+101
+00:09:16,000 --> 00:09:18,000
+It also provides flow control.
+
+102
+00:09:19,000 --> 00:09:25,000
+And the media access control there, there is a link between the logical link control there and the
+
+103
+00:09:25,000 --> 00:09:27,000
+network's physical.
+
+104
+00:09:27,000 --> 00:09:30,000
+It is used for transferring the packets over the network.
+
+105
+00:09:31,000 --> 00:09:36,000
+Now that some functions of the data link there, the functions are.
+
+106
+00:09:37,000 --> 00:09:44,000
+The data link layer translates as a physical service stream into packets known as frames, the data
+
+107
+00:09:44,000 --> 00:09:51,000
+link that adds a handler and trainer to the frame the handler would just add it to the frame contains
+
+108
+00:09:51,000 --> 00:09:54,000
+the hardware destination and source address.
+
+109
+00:09:55,000 --> 00:10:01,000
+Flow control is the main functionality of the data link there that it is a technique through which is
+
+110
+00:10:01,000 --> 00:10:07,000
+a constant data rate is maintained on both sides so that no data gets corrupted.
+
+111
+00:10:08,000 --> 00:10:16,000
+It ensures that the transmitting station such a server with higher processing speed doesn't exceed the
+
+112
+00:10:16,000 --> 00:10:23,000
+receiving station was lower processing speed when two or more devices are connected to the same communication
+
+113
+00:10:23,000 --> 00:10:24,000
+channel.
+
+114
+00:10:24,000 --> 00:10:31,000
+Then the data link their protocols are used to determine which device has control over the leak at a
+
+115
+00:10:31,000 --> 00:10:32,000
+given time.
+
+116
+00:10:33,000 --> 00:10:40,000
+On this, there was such kind of personal data, and as frames a frame is a simple container for a single
+
+117
+00:10:40,000 --> 00:10:41,000
+network packet.
+
+118
+00:10:42,000 --> 00:10:44,000
+But what does network packet?
+
+119
+00:10:44,000 --> 00:10:48,000
+A packet consists of control information and user data.
+
+120
+00:10:49,000 --> 00:10:51,000
+The is also known as a payload.
+
+121
+00:10:52,000 --> 00:10:58,000
+The payload is a part of the transmitted data that is the actual intended message.
+
+122
+00:10:59,000 --> 00:11:01,000
+Hope I didn't confuse you even more.
+
+123
+00:11:01,000 --> 00:11:07,000
+But just in case you have any question, please let me know in comments below the video and I will be
+
+124
+00:11:07,000 --> 00:11:10,000
+happy Thorsen as example of data.
+
+125
+00:11:10,000 --> 00:11:11,000
+Linkletter.
+
+126
+00:11:11,000 --> 00:11:14,000
+You can always imagine isn't that user?
+
+127
+00:11:14,000 --> 00:11:20,000
+And that is a family of wired computer networking technologies commonly used in local area networks.
+
+128
+00:11:20,000 --> 00:11:27,000
+In simple words, this is a cable that you can connect to your computer for direct internet connection
+
+129
+00:11:28,000 --> 00:11:30,000
+instead of using a wireless connection.
+
+130
+00:11:30,000 --> 00:11:35,000
+Nowadays, it is even getting harder to find laptop with users that's caught in it.
+
+131
+00:11:36,000 --> 00:11:38,000
+And that's an example of datalink.
+
+132
+00:11:38,000 --> 00:11:43,000
+There is a network interface controller, also known as LAN adapter.
+
+133
+00:11:44,000 --> 00:11:49,000
+This is a computer hardware component that connects a computer to a computer network.
+
+134
+00:11:50,000 --> 00:11:55,000
+Let's reviews the next layer right above datalink where we have a network layer.
+
+135
+00:11:56,000 --> 00:12:02,000
+This is the surplus that manages device addressing translocation of devices on the network.
+
+136
+00:12:02,000 --> 00:12:06,000
+It determines the best path to move data from sources.
+
+137
+00:12:06,000 --> 00:12:13,000
+Estimation based on the network conditions is the priority of service and other factors.
+
+138
+00:12:13,000 --> 00:12:19,000
+Well, really learns, said the data link that is responsible for rooting and forwarding zip pockets
+
+139
+00:12:20,000 --> 00:12:28,000
+returns a few minutes ago, and the roads are so located on this level of the Osai model, the protocols
+
+140
+00:12:28,000 --> 00:12:32,000
+to use the roads, the network traffic are known as network layer protocols.
+
+141
+00:12:32,000 --> 00:12:37,000
+Examples of protocols are IP Internet Protocol.
+
+142
+00:12:37,000 --> 00:12:41,000
+I believe that you already understood the main function of this that.
+
+143
+00:12:41,000 --> 00:12:44,000
+But let's review its other functions.
+
+144
+00:12:44,000 --> 00:12:50,000
+The lab highlights the logical connection between different devices and network layer as the source
+
+145
+00:12:50,000 --> 00:12:57,000
+and the destination address to the header of the frame address and is just indentify as a device.
+
+146
+00:12:57,000 --> 00:13:04,000
+Since the internet routing is a major component of the network layer, and it determines the best optimal
+
+147
+00:13:04,000 --> 00:13:08,000
+path out of the political cost from source the destination.
+
+148
+00:13:09,000 --> 00:13:17,000
+On this level, we operate with such kind of data as packets rather denounced what the packet is as
+
+149
+00:13:17,000 --> 00:13:17,000
+a data link.
+
+150
+00:13:17,000 --> 00:13:26,000
+Where we operate with frames and frame is a simple container for a single network back on this level.
+
+151
+00:13:26,000 --> 00:13:29,000
+When we rode the data, the roads packets.
+
+152
+00:13:30,000 --> 00:13:40,000
+The most popular example of the land is IP V for IP v six ICMP that stands for Internet Message Control
+
+153
+00:13:40,000 --> 00:13:42,000
+Protocol and others.
+
+154
+00:13:42,000 --> 00:13:49,000
+It is getting more interesting to agree because I believe you heard about IP addresses, IP addresses.
+
+155
+00:13:49,000 --> 00:13:55,000
+This is exactly both network layer or CI model and the rollout of network packets.
+
+156
+00:13:56,000 --> 00:13:57,000
+Let's move on.
+
+157
+00:13:58,000 --> 00:14:04,000
+The next layer is a transport that is a key function of the force there, and the oil time order is
+
+158
+00:14:04,000 --> 00:14:11,000
+to ensure that messages are transmitted in the order in which they are sent and there is no duplication
+
+159
+00:14:11,000 --> 00:14:16,000
+of data transport that has to transfer the data completely.
+
+160
+00:14:16,000 --> 00:14:23,000
+This layer can be termed as an important layer as it provides a point to point connection between source
+
+161
+00:14:23,000 --> 00:14:27,000
+and distillation to deliver the data reliably.
+
+162
+00:14:28,000 --> 00:14:32,000
+Let's talk about functions of this, that is the functions of the transfer.
+
+163
+00:14:32,000 --> 00:14:39,000
+There are the transmission of data from sources of this nation's happening, not only from one computer
+
+164
+00:14:39,000 --> 00:14:44,000
+to another computer, but also from one courses to another process.
+
+165
+00:14:45,000 --> 00:14:53,000
+There are multiple courts may be up and running on one computer is the transfer is a habit that contains
+
+166
+00:14:53,000 --> 00:14:56,000
+an address known as a service for an address.
+
+167
+00:14:57,000 --> 00:15:03,000
+Of course, the address is the responsibility of the network, that is to transmit the data from one
+
+168
+00:15:03,000 --> 00:15:09,000
+computer to another computer and also to transmit the message to the correct process.
+
+169
+00:15:10,000 --> 00:15:16,000
+Once the transport layer receives the message from the previous that it divides the message into multiple
+
+170
+00:15:16,000 --> 00:15:23,000
+segments, and each segment is assigned a sequence number that uniquely identifies each segment.
+
+171
+00:15:24,000 --> 00:15:30,000
+Once the message has arrived at the destination, then the transport layer assembles a message based
+
+172
+00:15:30,000 --> 00:15:32,000
+on the sequence numbers.
+
+173
+00:15:32,000 --> 00:15:38,000
+Following this, so we can be sure that the messages are transmitted in the order in which they were
+
+174
+00:15:38,000 --> 00:15:46,000
+sent to send the transport layer ensures that message reaches a destination without any error.
+
+175
+00:15:47,000 --> 00:15:53,000
+There are two critical data units that this that works with the received data from the previous land
+
+176
+00:15:53,000 --> 00:15:56,000
+is converted into smaller units known as segments.
+
+177
+00:15:57,000 --> 00:16:00,000
+PCB works with segments.
+
+178
+00:16:00,000 --> 00:16:06,000
+Packet segmentation is the process of dividing a data packet into smaller units for transmission of
+
+179
+00:16:06,000 --> 00:16:07,000
+the network.
+
+180
+00:16:08,000 --> 00:16:13,000
+Also, this landmark work was data graphs UDP protocol works.
+
+181
+00:16:13,000 --> 00:16:14,000
+Was that the graphs?
+
+182
+00:16:15,000 --> 00:16:21,000
+That's a ground set, typically structures in handler and payload sections that are probably the most
+
+183
+00:16:21,000 --> 00:16:23,000
+popular protocols used in this.
+
+184
+00:16:23,000 --> 00:16:32,000
+Their Ziya TCP and UDP that's known as in DCP stands for Transmission Control Protocol.
+
+185
+00:16:32,000 --> 00:16:37,000
+It is a standard protocol that allows the systems to communicate over the internet.
+
+186
+00:16:38,000 --> 00:16:41,000
+It establishes and maintains a connection between hosts.
+
+187
+00:16:42,000 --> 00:16:46,000
+Each segment travels over the internet using multiple roles.
+
+188
+00:16:46,000 --> 00:16:50,000
+And they arrive in different orders as a destination.
+
+189
+00:16:50,000 --> 00:16:57,000
+The transmission control protocol orders the packets in the correct order, and the receiving end is.
+
+190
+00:16:57,000 --> 00:17:04,000
+The main feature of this protocol is to ensure and confirm that message has been delivered in case there
+
+191
+00:17:04,000 --> 00:17:07,000
+is no confirmation that message has been delivered.
+
+192
+00:17:07,000 --> 00:17:10,000
+This is protocol response data one more time.
+
+193
+00:17:11,000 --> 00:17:19,000
+This is a reliable stream delivery service which guarantees that all bytes received will be identical
+
+194
+00:17:19,000 --> 00:17:21,000
+and in the same order as those sent.
+
+195
+00:17:23,000 --> 00:17:26,000
+UDP stands for user data and protocol.
+
+196
+00:17:26,000 --> 00:17:34,000
+It is an unreliable transfer protocol, as in this case receive it doesn't send any acknowledgement.
+
+197
+00:17:34,000 --> 00:17:40,000
+Once a packet is received, the sender doesn't wait for another method.
+
+198
+00:17:41,000 --> 00:17:44,000
+Therefore, this makes the protocol unreliable.
+
+199
+00:17:45,000 --> 00:17:51,000
+UDP uses a simple connection mass communication model with a minimum of protocol mechanisms.
+
+200
+00:17:52,000 --> 00:17:55,000
+UDP provides checksums for data integrity.
+
+201
+00:17:56,000 --> 00:18:03,000
+You might be wondering, then, why we have to use UDP instead of TCP one UDP is applicable at all.
+
+202
+00:18:04,000 --> 00:18:08,000
+UDP is a commonly used for applications that the lossy.
+
+203
+00:18:09,000 --> 00:18:17,000
+In other words, that can handle some packet loss, such as streaming, audio and video, it is also
+
+204
+00:18:17,000 --> 00:18:21,000
+used for quick response applications such as zoom squares.
+
+205
+00:18:22,000 --> 00:18:28,000
+Probably the best visualization of the differences between the DCP and UDP with the managed to find
+
+206
+00:18:28,000 --> 00:18:30,000
+the internet is present on the slide.
+
+207
+00:18:31,000 --> 00:18:39,000
+TCP cares about making sure that message is delivered to the receiver, and UDP just makes sure of sending
+
+208
+00:18:39,000 --> 00:18:45,000
+out chunks of data without getting confirmation of receival and ressemble in case message wasn't received.
+
+209
+00:18:46,000 --> 00:18:53,000
+But how message is delivered, there's a specific application on the computer that can run multiple
+
+210
+00:18:53,000 --> 00:18:56,000
+processes and multiple applications in parallel.
+
+211
+00:18:57,000 --> 00:18:59,000
+That is done with the help of the ports.
+
+212
+00:19:00,000 --> 00:19:01,000
+But what is it worth?
+
+213
+00:19:02,000 --> 00:19:03,000
+I would explain, though.
+
+214
+00:19:03,000 --> 00:19:06,000
+The first is a communications point.
+
+215
+00:19:06,000 --> 00:19:14,000
+The first number is always associate with an IP address of a horse and the type of transport protocol
+
+216
+00:19:14,000 --> 00:19:15,000
+used for communication.
+
+217
+00:19:16,000 --> 00:19:21,000
+It completes its list a nation or origination network address of a message.
+
+218
+00:19:22,000 --> 00:19:30,000
+Specific port numbers are reserved to identify specific services so that an arriving packet can be easily
+
+219
+00:19:30,000 --> 00:19:32,000
+forwarded to run an application.
+
+220
+00:19:32,000 --> 00:19:37,000
+In simple words, Horse is an address of an application on a computer.
+
+221
+00:19:38,000 --> 00:19:45,000
+So by this moment, another lesson, will you know what it is and what this is, but why TCP IP often
+
+222
+00:19:45,000 --> 00:19:50,000
+used together, how this can be explained and what is the difference?
+
+223
+00:19:50,000 --> 00:19:54,000
+Imagine that you need to deliver mail as a receiver.
+
+224
+00:19:55,000 --> 00:19:58,000
+You have a mattress written down on the envelop.
+
+225
+00:19:59,000 --> 00:20:04,000
+You know that you need to deliver mail to a specific address in those countries.
+
+226
+00:20:04,000 --> 00:20:11,000
+This city, concrete street and concrete building, this is similar to your IP address.
+
+227
+00:20:11,000 --> 00:20:15,000
+So with the help of a B address, you can find a destination for your message.
+
+228
+00:20:16,000 --> 00:20:19,000
+The concrete computer is a device.
+
+229
+00:20:19,000 --> 00:20:27,000
+Durant does a network, but when you founds a building, you discover that it has a lot of apartments
+
+230
+00:20:27,000 --> 00:20:36,000
+where your receiver, where you can find the number of apartment and different apartments are equivalent
+
+231
+00:20:36,000 --> 00:20:39,000
+to different applications running on the computer.
+
+232
+00:20:40,000 --> 00:20:41,000
+You need to deliver a message.
+
+233
+00:20:41,000 --> 00:20:49,000
+There's a specific application and the apartment number is a port number, so the course number is an
+
+234
+00:20:49,000 --> 00:20:50,000
+apartment in the building.
+
+235
+00:20:51,000 --> 00:20:52,000
+Is it going so far?
+
+236
+00:20:53,000 --> 00:20:55,000
+Now let's understand what is the be.
+
+237
+00:20:56,000 --> 00:21:02,000
+This, in this example, is a maintenance service that delivers your message to the destination, ensures
+
+238
+00:21:02,000 --> 00:21:07,000
+its message has been delivered and confirms is a delivery.
+
+239
+00:21:08,000 --> 00:21:14,000
+Is it clear this be established connection between the scandal and the receiver?
+
+240
+00:21:14,000 --> 00:21:21,000
+That's why we often say this IP protocol means that we deliver its message to the destination with the
+
+241
+00:21:21,000 --> 00:21:26,000
+help of a typical article and received confirmation about message delivery.
+
+242
+00:21:27,000 --> 00:21:33,000
+This is used in conjunction with the IP in order to maintain the connection between the sender and the
+
+243
+00:21:33,000 --> 00:21:36,000
+target and to ensure packet order.
+
+244
+00:21:36,000 --> 00:21:37,000
+Is it clear now?
+
+245
+00:21:38,000 --> 00:21:38,000
+Great.
+
+246
+00:21:39,000 --> 00:21:42,000
+Let's move on the next layer in oils.
+
+247
+00:21:42,000 --> 00:21:50,000
+Ceremonial is a session that why we need it is used to establish, maintain and synchronize the interaction
+
+248
+00:21:50,000 --> 00:21:54,000
+between communicating devices on different functions of the land.
+
+249
+00:21:54,000 --> 00:22:00,000
+It is worse dimensions in next month's session that acts as a dialogue controller.
+
+250
+00:22:00,000 --> 00:22:08,000
+This creates a dialogue between two processes session and some choke points when transmitting the data
+
+251
+00:22:08,000 --> 00:22:09,000
+in the sequence.
+
+252
+00:22:10,000 --> 00:22:17,000
+If some error occurs in the middle of the transmission of data, then the transmission will take place
+
+253
+00:22:17,000 --> 00:22:19,000
+again from the checkpoint.
+
+254
+00:22:19,000 --> 00:22:26,000
+This process is known as a synchronization and recovery as the protocol data unit that is used to this.
+
+255
+00:22:26,000 --> 00:22:28,000
+We use term data.
+
+256
+00:22:28,000 --> 00:22:31,000
+It is any sequence of 10 or more symbols.
+
+257
+00:22:32,000 --> 00:22:39,000
+APC may be considered as one of the examples of session that Entropy C stands for remote procedure.
+
+258
+00:22:40,000 --> 00:22:47,000
+Call it is when a computer program causes the procedure to execute on a different computer, which is
+
+259
+00:22:47,000 --> 00:22:50,000
+called it as if it were a local procedure.
+
+260
+00:22:50,000 --> 00:22:56,000
+Call without the programmer explicitly, according to the details for the remote interaction.
+
+261
+00:22:56,000 --> 00:22:57,000
+Wow.
+
+262
+00:22:57,000 --> 00:23:02,000
+Well, when you remove the the handgun humorless left to discuss.
+
+263
+00:23:03,000 --> 00:23:10,000
+The next layer is a presentation length presentation that is mainly concerned with the syntax and semantics
+
+264
+00:23:10,000 --> 00:23:14,000
+of the information exchanged between the two systems.
+
+265
+00:23:14,000 --> 00:23:17,000
+It acts as a data translator for a network.
+
+266
+00:23:18,000 --> 00:23:25,000
+This land is a part of the operating system that converts data from one presentation form to another
+
+267
+00:23:25,000 --> 00:23:27,000
+form of representation.
+
+268
+00:23:27,000 --> 00:23:30,000
+Is also known as a single thing.
+
+269
+00:23:31,000 --> 00:23:38,000
+Let's review the functions of the presentation that the processes in the systems exchange the information
+
+270
+00:23:38,000 --> 00:23:42,000
+in the form of cancer, strings, numbers and so on.
+
+271
+00:23:42,000 --> 00:23:45,000
+Different computers use different encoding messages.
+
+272
+00:23:46,000 --> 00:23:51,000
+The presentation they're supposed to resolve issues relate to propose different encoding methods.
+
+273
+00:23:52,000 --> 00:23:59,000
+It converts the data from send the dependent form into a common format and changes the common format
+
+274
+00:23:59,000 --> 00:24:06,000
+into the receiver dependent format as a receiver and encryption is needed to maintain privacy.
+
+275
+00:24:06,000 --> 00:24:13,000
+Encryption is a process of converting to sender transmitted information into another form and sends
+
+276
+00:24:13,000 --> 00:24:18,000
+a results message over the network decryption happening on the receiver side.
+
+277
+00:24:19,000 --> 00:24:26,000
+Data compression is a process of compresses data, then introduces a number of needs to be transmitted.
+
+278
+00:24:27,000 --> 00:24:32,000
+Data compression is a very important in multimedia, such as text, audio and video.
+
+279
+00:24:33,000 --> 00:24:39,000
+The critical data unit on display is the same as on the session where we work with data in this.
+
+280
+00:24:41,000 --> 00:24:49,000
+ASCII jetpack midi as the most popular examples of this that all use a different data form US media
+
+281
+00:24:49,000 --> 00:24:54,000
+for audio jetpack for pictures, ASCII is encoding for text.
+
+282
+00:24:55,000 --> 00:25:01,000
+And the last but not least lands that we are going to down today is an application there, an application
+
+283
+00:25:01,000 --> 00:25:08,000
+that serves as a window for users and application processes to access network service.
+
+284
+00:25:08,000 --> 00:25:12,000
+This letter provides a network services to the end users.
+
+285
+00:25:13,000 --> 00:25:20,000
+Zero next functions of application let an application that allows the user to access the files in the
+
+286
+00:25:20,000 --> 00:25:26,000
+remote computer to retrieve the files from a computer and to manage the files in the remote computing
+
+287
+00:25:27,000 --> 00:25:32,000
+and application layer provides the facility for email forwarding and storage.
+
+288
+00:25:32,000 --> 00:25:35,000
+So was it half of the application layer?
+
+289
+00:25:35,000 --> 00:25:43,000
+Data transferring is happening from the application user interface through NAS application on this that
+
+290
+00:25:43,000 --> 00:25:44,000
+will work with any data.
+
+291
+00:25:45,000 --> 00:25:55,000
+The most popular examples of this there are HTP, HD types SMP, P, P, O, P, ATP and others.
+
+292
+00:25:56,000 --> 00:25:59,000
+I bet you had these names, at least some of them, for sure.
+
+293
+00:26:00,000 --> 00:26:06,000
+We're going to have separate lessons about HTP, where I will explain in detail what HDTV is.
+
+294
+00:26:07,000 --> 00:26:15,000
+Ensure HTP stands for Hypertext Transfer Protocol to share hypertext documents in the web.
+
+295
+00:26:15,000 --> 00:26:20,000
+HD IPS is a secured version of the HDTV protocol.
+
+296
+00:26:20,000 --> 00:26:21,000
+Its extension?
+
+297
+00:26:22,000 --> 00:26:30,000
+It encrypts data on the sender side and decrypted data on the receiver, so it is encrypted using transfer
+
+298
+00:26:30,000 --> 00:26:34,000
+their security, which formerly known as Secure Sockets Layer.
+
+299
+00:26:35,000 --> 00:26:43,000
+Probably heard about this cell F2P is a protocol for sending and receiving files in the lab, as seem
+
+300
+00:26:43,000 --> 00:26:48,000
+to be, and these are protocols to ensure mail system working in the lab.
+
+301
+00:26:48,000 --> 00:26:51,000
+These are protocols of mail servers.
+
+302
+00:26:52,000 --> 00:26:58,000
+So you remember example was the Postal Service and the email and the analogy we made was to supply people
+
+303
+00:26:58,000 --> 00:26:59,000
+the cold.
+
+304
+00:27:00,000 --> 00:27:01,000
+So where is a issue?
+
+305
+00:27:01,000 --> 00:27:02,000
+Be on this site?
+
+306
+00:27:03,000 --> 00:27:04,000
+The email?
+
+307
+00:27:04,000 --> 00:27:10,000
+Our message is that we deliver it to the receiver and the specific format of the response that concerns
+
+308
+00:27:10,000 --> 00:27:11,000
+delivery of our mail.
+
+309
+00:27:12,000 --> 00:27:14,000
+That is HTP in this example.
+
+310
+00:27:15,000 --> 00:27:23,000
+HP defines how request response will look like, how the data will be describe and defines the contract
+
+311
+00:27:23,000 --> 00:27:25,000
+for server client communication.
+
+312
+00:27:26,000 --> 00:27:33,000
+Very often, HP uses hypertext markup language to describe the body of the message, but we are going
+
+313
+00:27:33,000 --> 00:27:38,000
+to have a separate lesson about HDTV and you will understand what it is.
+
+314
+00:27:38,000 --> 00:27:42,000
+HDTV is utilized to access websites.
+
+315
+00:27:42,000 --> 00:27:47,000
+Well, this is a session establishment protocol between the client and server.
+
+316
+00:27:48,000 --> 00:27:53,000
+This is responsible for connection oriented communication between client and server.
+
+317
+00:27:54,000 --> 00:28:01,000
+A CTP is an application layer protocol that is request response between client and the server.
+
+318
+00:28:01,000 --> 00:28:08,000
+Is it clear now what actually is great, and that is all what I wanted to share with you today.
+
+319
+00:28:08,000 --> 00:28:11,000
+Let's recap what we have learned in this lesson.
+
+320
+00:28:12,000 --> 00:28:17,000
+We have learned so much useful since today that it will be hard to summarize on one slide.
+
+321
+00:28:18,000 --> 00:28:20,000
+I hope you enjoyed the lesson today.
+
+322
+00:28:21,000 --> 00:28:25,000
+We all the loving you of oil model, I believe for this year for you.
+
+323
+00:28:25,000 --> 00:28:33,000
+What also model is about and what goals it has love layers of the ozone model in details of a review
+
+324
+00:28:33,000 --> 00:28:35,000
+of each layer of oil.
+
+325
+00:28:35,000 --> 00:28:36,000
+Same model with examples.
+
+326
+00:28:37,000 --> 00:28:45,000
+Also, you know what this IP is, and I believe it is clear for you what actually the key is this is
+
+327
+00:28:45,000 --> 00:28:50,000
+important to understand because in the course for web developers, we are going to do a lot with these
+
+328
+00:28:50,000 --> 00:28:51,000
+concepts.
+
+329
+00:28:52,000 --> 00:28:53,000
+Thanks a lot for your attention.
+
+330
+00:28:54,000 --> 00:28:56,000
+Have a great day and see you in the next lesson.
+
diff --git a/56 - Web/002 Client-Server Architecture. URI, URN, URL_en.srt b/56 - Web/002 Client-Server Architecture. URI, URN, URL_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..3354e4b7f97f42529090eb0faeb1a67ccd3bef54
--- /dev/null
+++ b/56 - Web/002 Client-Server Architecture. URI, URN, URL_en.srt
@@ -0,0 +1,852 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Tim.
+
+2
+00:00:06,000 --> 00:00:13,000
+Well, this lesson about rental clients architecture, considering that web development is one of the
+
+3
+00:00:13,000 --> 00:00:19,000
+key scenes of this course and clients, several architecture is the most popular portal for web applications
+
+4
+00:00:19,000 --> 00:00:19,000
+nowadays.
+
+5
+00:00:20,000 --> 00:00:24,000
+We have to learn it before proceeding with more advanced concepts.
+
+6
+00:00:25,000 --> 00:00:32,000
+You need to understand what client's architecture is and what its advantages and disadvantages.
+
+7
+00:00:32,000 --> 00:00:35,000
+That assumption was we haven't announced in the beginning of the lesson.
+
+8
+00:00:36,000 --> 00:00:42,000
+After that, I will explain the role of ATP protocol in clients server architecture.
+
+9
+00:00:43,000 --> 00:00:50,000
+Besides that, it will be important for us to learn another concept that the so-called Eversource also
+
+10
+00:00:50,000 --> 00:00:55,000
+I will explain here was uteri you ran and you are.
+
+11
+00:00:55,000 --> 00:00:57,000
+And what is the difference between Zen?
+
+12
+00:00:58,000 --> 00:00:59,000
+Let's start our lesson.
+
+13
+00:01:00,000 --> 00:01:05,000
+And the first scene that I like to start with is the client's architecture.
+
+14
+00:01:05,000 --> 00:01:05,000
+Overview.
+
+15
+00:01:06,000 --> 00:01:08,000
+Let's understand what it is.
+
+16
+00:01:09,000 --> 00:01:15,000
+Client server architecture is a popular, network based architecture that is very common nowadays.
+
+17
+00:01:16,000 --> 00:01:26,000
+According to this approach, each computer X sees a server or a a centralized host computer that receives
+
+18
+00:01:26,000 --> 00:01:35,000
+requests for system and provides suitable response that is known as server workstations that initiated
+
+19
+00:01:35,000 --> 00:01:38,000
+the request a called once.
+
+20
+00:01:39,000 --> 00:01:45,000
+For example, the Facebook Facebook Web application is hosted and deployed on the server.
+
+21
+00:01:45,000 --> 00:01:51,000
+I can log in into my account and you can log into your account and do Facebook.
+
+22
+00:01:51,000 --> 00:01:58,000
+My and your computer's a glance of the web application that is hosted and deployed on the server.
+
+23
+00:01:59,000 --> 00:02:07,000
+Server is just another computer that handles requests from different clubs on the receiving the request
+
+24
+00:02:08,000 --> 00:02:16,000
+server processes, it executes the required tasks, generates a response and sends back to the client
+
+25
+00:02:17,000 --> 00:02:24,000
+in client server relationships both as a client and server carries out some data processing tasks,
+
+26
+00:02:25,000 --> 00:02:34,000
+and second server architecture consists from three main components zero client computer, server, computer
+
+27
+00:02:35,000 --> 00:02:36,000
+and network.
+
+28
+00:02:36,000 --> 00:02:44,000
+I hope you will use this and both also model where we give you some details different layers of communication
+
+29
+00:02:44,000 --> 00:02:46,000
+between devices in the network.
+
+30
+00:02:47,000 --> 00:02:52,000
+I believe you already have high level understanding about both clients architecture.
+
+31
+00:02:52,000 --> 00:02:57,000
+Let's try to understand better its advantages and disadvantages.
+
+32
+00:02:57,000 --> 00:03:00,000
+I'm going to start from advantages first.
+
+33
+00:03:00,000 --> 00:03:04,000
+The first advantage is resource sharing.
+
+34
+00:03:05,000 --> 00:03:07,000
+Imagine that you have pre-sentence office.
+
+35
+00:03:08,000 --> 00:03:11,000
+You don't need to buy a printer for each employee, correct?
+
+36
+00:03:11,000 --> 00:03:17,000
+You cannot have one printer person level and civilian agree the same as here.
+
+37
+00:03:18,000 --> 00:03:21,000
+You don't need to host application on multiple servers.
+
+38
+00:03:21,000 --> 00:03:26,000
+All make users install application on their computers.
+
+39
+00:03:26,000 --> 00:03:32,000
+You can create application deployments on the server and the clients from all over the world will start
+
+40
+00:03:32,000 --> 00:03:33,000
+using it.
+
+41
+00:03:33,000 --> 00:03:36,000
+Isn't this school in my course?
+
+42
+00:03:36,000 --> 00:03:43,000
+Jump from zero to the first job, together with my students would create our own web application, our
+
+43
+00:03:43,000 --> 00:03:44,000
+online store.
+
+44
+00:03:44,000 --> 00:03:50,000
+This will help my students to understand how we can take advantage of clients architecture.
+
+45
+00:03:51,000 --> 00:03:55,000
+And there's an important advantage is easiness of maintenance.
+
+46
+00:03:55,000 --> 00:04:00,000
+You have your application installed on the one computer on your server.
+
+47
+00:04:00,000 --> 00:04:07,000
+And this application can handle numerous requests from different points in the world in case you need
+
+48
+00:04:07,000 --> 00:04:10,000
+to introduce some change, improvement or bug face.
+
+49
+00:04:11,000 --> 00:04:15,000
+You just look to implement this change and ready for your web server.
+
+50
+00:04:16,000 --> 00:04:19,000
+Web server is a place where web application is hosted.
+
+51
+00:04:20,000 --> 00:04:21,000
+That's it.
+
+52
+00:04:22,000 --> 00:04:29,000
+In case you were new was desktop application, it wouldn't be so easy, imagine that you need to force
+
+53
+00:04:29,000 --> 00:04:35,000
+millions of people from different countries to install updates of your application.
+
+54
+00:04:35,000 --> 00:04:37,000
+It is something what is really hard to do.
+
+55
+00:04:38,000 --> 00:04:44,000
+That's why we can state that the maintenance and support of web application in some degree easier.
+
+56
+00:04:45,000 --> 00:04:50,000
+We should never forget that maintenance and support of the server comes with additional costs on the
+
+57
+00:04:50,000 --> 00:04:55,000
+hardware and sometimes a special software to administer the server.
+
+58
+00:04:55,000 --> 00:05:02,000
+So somebody might treat this as something that is more complex rather than easy.
+
+59
+00:05:02,000 --> 00:05:09,000
+But still, to sum it up, I believe in general, supporting web applications that this means was client
+
+60
+00:05:09,000 --> 00:05:17,000
+server architecture and that interacts with millions of users in general, simpler rather than supporting
+
+61
+00:05:17,000 --> 00:05:19,000
+desktop with a similar workload.
+
+62
+00:05:20,000 --> 00:05:23,000
+Also, you can manage resources as you wish.
+
+63
+00:05:23,000 --> 00:05:29,000
+You can add resources to the one server instead of cells and computers of the clients.
+
+64
+00:05:29,000 --> 00:05:32,000
+You can remove data resources when it is needed.
+
+65
+00:05:33,000 --> 00:05:36,000
+Delete and with resources clients.
+
+66
+00:05:36,000 --> 00:05:39,000
+Server architecture is more lightweight for the client.
+
+67
+00:05:40,000 --> 00:05:45,000
+Client doesn't need a lot of space and memory of the computer to start using.
+
+68
+00:05:45,000 --> 00:05:50,000
+Your app is the most complex configurations already completed on a server side.
+
+69
+00:05:51,000 --> 00:05:55,000
+The only thing that's going to have is a web browser.
+
+70
+00:05:55,000 --> 00:05:57,000
+Some internet connection.
+
+71
+00:05:57,000 --> 00:05:57,000
+That's it.
+
+72
+00:05:58,000 --> 00:06:06,000
+Cost effectiveness in the local course spent for installation support and religious services was a client
+
+73
+00:06:06,000 --> 00:06:12,000
+server architecture in general was a similar workload would help to reduce costs.
+
+74
+00:06:13,000 --> 00:06:21,000
+I know that after a review of all these advantages, it will be hard to believe that this kind of architecture
+
+75
+00:06:21,000 --> 00:06:25,000
+may have disadvantages, but still, there are some of them.
+
+76
+00:06:26,000 --> 00:06:30,000
+Let's review the distribution of viruses or malware.
+
+77
+00:06:31,000 --> 00:06:38,000
+Imagine that some resources contain the virus, and these resources are in the network now and available
+
+78
+00:06:38,000 --> 00:06:42,000
+for millions of other users from all over the world.
+
+79
+00:06:42,000 --> 00:06:49,000
+Therefore, the risk of negative consequences is much higher in this case, because multiple users may
+
+80
+00:06:49,000 --> 00:06:51,000
+interact with this resource.
+
+81
+00:06:52,000 --> 00:07:00,000
+Data security, how much cases have you heard one personal data was stolen from servers starring a huge
+
+82
+00:07:00,000 --> 00:07:08,000
+amount of data on the web server and providing interface to access it even just for admins means that
+
+83
+00:07:08,000 --> 00:07:12,000
+we have risks of this data being stolen by attackers.
+
+84
+00:07:12,000 --> 00:07:19,000
+That's why invite applications, including server architecture, is there is always extra attention
+
+85
+00:07:19,000 --> 00:07:26,000
+paid to the data security rules and the laws because of least disadvantage of this often impacts different
+
+86
+00:07:26,000 --> 00:07:31,000
+users is the next one service may become a bottleneck.
+
+87
+00:07:32,000 --> 00:07:36,000
+Imagine that millions of users are trying to connect as a server simultaneously.
+
+88
+00:07:37,000 --> 00:07:44,000
+Your application makes millions of calls to the database and physically software, and the hardware
+
+89
+00:07:44,000 --> 00:07:46,000
+can't handle such law.
+
+90
+00:07:47,000 --> 00:07:51,000
+In this case, server may become a bottleneck for all users.
+
+91
+00:07:52,000 --> 00:07:58,000
+That's why, after learning web development, we need to pay attention to the architecture of our server
+
+92
+00:07:59,000 --> 00:08:01,000
+and make sure that we can scale it.
+
+93
+00:08:01,000 --> 00:08:08,000
+Nowadays, cloud providers offers amazing opportunities for the scanning of the hardware components
+
+94
+00:08:08,000 --> 00:08:16,000
+on a request, literally like in few seconds, you can get a few more instances of the service of balancing
+
+95
+00:08:16,000 --> 00:08:19,000
+load between different service in different regions.
+
+96
+00:08:20,000 --> 00:08:24,000
+But I'm also talking about scale and use software detection.
+
+97
+00:08:25,000 --> 00:08:28,000
+Write your code in a way it can scale.
+
+98
+00:08:29,000 --> 00:08:33,000
+That means multithreading should be properly handled.
+
+99
+00:08:34,000 --> 00:08:36,000
+Logs on the database level should be managed.
+
+100
+00:08:36,000 --> 00:08:38,000
+The fact that it's not a block either course.
+
+101
+00:08:39,000 --> 00:08:45,000
+Transaction management should be implemented very careful to not look as operations and lots more.
+
+102
+00:08:46,000 --> 00:08:53,000
+Don't worry, it will not be able to handle everything in one lesson, but gradually we're going to
+
+103
+00:08:53,000 --> 00:08:54,000
+learn more and more.
+
+104
+00:08:55,000 --> 00:08:56,000
+You have to believe me.
+
+105
+00:08:56,000 --> 00:08:59,000
+I will make you a professional software engineer.
+
+106
+00:08:59,000 --> 00:09:01,000
+I needs this already many times.
+
+107
+00:09:02,000 --> 00:09:03,000
+Let's continue.
+
+108
+00:09:04,000 --> 00:09:11,000
+So I believe you understood what the client so architecture is now at this time to learn the details
+
+109
+00:09:11,000 --> 00:09:14,000
+about how clients may interact with the seller.
+
+110
+00:09:14,000 --> 00:09:18,000
+What do we use to change with messages data?
+
+111
+00:09:19,000 --> 00:09:27,000
+What I need to do to access their sources of about HTP protocol is one of the protocols that may be
+
+112
+00:09:27,000 --> 00:09:32,000
+used for communication and exchanging of messages between a client and a server.
+
+113
+00:09:33,000 --> 00:09:38,000
+Let's understand the role of be in the client's architecture.
+
+114
+00:09:38,000 --> 00:09:41,000
+I hope you watch the previous lesson about all this time.
+
+115
+00:09:42,000 --> 00:09:48,000
+If not, please watch it because it is mandatory to understand the scenes.
+
+116
+00:09:48,000 --> 00:09:54,000
+What I will talk about in this lesson in particular, you have to know what this is.
+
+117
+00:09:55,000 --> 00:10:04,000
+Name of protocol units like brackets frames that will learn this lesson was examples, but let me recap
+
+118
+00:10:04,000 --> 00:10:11,000
+briefly what the protocol is on the real examples that we covered and the details in the previous lesson.
+
+119
+00:10:12,000 --> 00:10:16,000
+As you can see on the slides, I want to compare Typekit protocol with the message delivery.
+
+120
+00:10:17,000 --> 00:10:20,000
+We have sender and receiver in other terms.
+
+121
+00:10:21,000 --> 00:10:25,000
+This is our client and the server sender sans course.
+
+122
+00:10:26,000 --> 00:10:33,000
+This is the client receiver receives the request, causes it and returns response.
+
+123
+00:10:34,000 --> 00:10:36,000
+This is a so that it makes sense.
+
+124
+00:10:37,000 --> 00:10:42,000
+Zacharias submits a request message to the seller.
+
+125
+00:10:42,000 --> 00:10:50,000
+The seller, which provides resources such as HMO files and OxyContin, or performs other functions
+
+126
+00:10:50,000 --> 00:10:54,000
+on behalf of the client, which change the response message to the client.
+
+127
+00:10:55,000 --> 00:11:01,000
+The response contains completion status information about the request and may also contain a request
+
+128
+00:11:01,000 --> 00:11:08,000
+to the content and its message via a web browser is an example of user agent.
+
+129
+00:11:08,000 --> 00:11:14,000
+Other types of user agents include indexing software used by search providers.
+
+130
+00:11:15,000 --> 00:11:23,000
+Also called the crawlers was browsers, mobile apps and other software that can access, consume or
+
+131
+00:11:23,000 --> 00:11:25,000
+display web content.
+
+132
+00:11:26,000 --> 00:11:27,000
+Even the concept is clear.
+
+133
+00:11:28,000 --> 00:11:28,000
+That's more.
+
+134
+00:11:29,000 --> 00:11:33,000
+One more chance that we'll really start to use as a source.
+
+135
+00:11:33,000 --> 00:11:42,000
+What is the source of development is a target of an agency request is called a source whose nature is
+
+136
+00:11:42,000 --> 00:11:43,000
+defined frozen.
+
+137
+00:11:44,000 --> 00:11:48,000
+It can be a document before or anything else.
+
+138
+00:11:48,000 --> 00:11:57,000
+So basically, everything is a map that you can access via a protocol is a resource you can create with
+
+139
+00:11:57,000 --> 00:12:02,000
+sources of data, remove and just leave the resources.
+
+140
+00:12:02,000 --> 00:12:04,000
+And we know that things.
+
+141
+00:12:04,000 --> 00:12:06,000
+Of course, we're going to learn to be massive.
+
+142
+00:12:07,000 --> 00:12:14,000
+That allows us to interact with resources now that some of the important things what is.
+
+143
+00:12:14,000 --> 00:12:16,000
+And you're right, you're right.
+
+144
+00:12:16,000 --> 00:12:20,000
+Stands for Uniform Resource Identifier.
+
+145
+00:12:20,000 --> 00:12:25,000
+Each resource is identified by a uniform resource identifier.
+
+146
+00:12:25,000 --> 00:12:30,000
+You're right, used throughout HTP for identifying those sources.
+
+147
+00:12:31,000 --> 00:12:36,000
+There are different examples of if you arrive, some of them you can see on this slide.
+
+148
+00:12:37,000 --> 00:12:45,000
+The first example contains a schema Leave a salty boss query parameters and you are right doesn't need
+
+149
+00:12:45,000 --> 00:12:47,000
+to contain all these components.
+
+150
+00:12:47,000 --> 00:12:52,000
+All it needs is a name and the file boss, which can be empty.
+
+151
+00:12:52,000 --> 00:12:57,000
+The second example to the left is the skin name and the numbers.
+
+152
+00:12:57,000 --> 00:13:06,000
+After a double slash may cubs of certain zip bosses empty, which is why no characters come after the
+
+153
+00:13:06,000 --> 00:13:06,000
+slash.
+
+154
+00:13:07,000 --> 00:13:11,000
+Basically, yeah, two types of you your you.
+
+155
+00:13:12,000 --> 00:13:15,000
+You first source names from you or else.
+
+156
+00:13:16,000 --> 00:13:24,000
+Uniform Resource Locators, a uniform resource name you run using persistent and location independent
+
+157
+00:13:24,000 --> 00:13:30,000
+identifier that follows a U.N. scheme in this context.
+
+158
+00:13:30,000 --> 00:13:37,000
+Persistence means that the run persists in identifying the same resource over time.
+
+159
+00:13:38,000 --> 00:13:44,000
+An example of a U.N. provided by the Arab Sea sitting on eighty six, you can see on this lot.
+
+160
+00:13:45,000 --> 00:13:50,000
+What is Arab C r f c stands for request for comments.
+
+161
+00:13:51,000 --> 00:13:58,000
+The sequence of numbers Arif sees as the published specifications for most internet related standards.
+
+162
+00:13:58,000 --> 00:14:03,000
+Arab Seas Settlement Eighty six is a specification for you.
+
+163
+00:14:03,000 --> 00:14:04,000
+I see this.
+
+164
+00:14:04,000 --> 00:14:06,000
+You can check it if you wish.
+
+165
+00:14:07,000 --> 00:14:11,000
+The knowledge of the U.N. from the real life is Google Docs.
+
+166
+00:14:12,000 --> 00:14:19,000
+If you have ever used Google Docs, you know that the document has a unique identifier and it is not
+
+167
+00:14:19,000 --> 00:14:27,000
+changed no matter in which folder or a source is located, almost even in case you would move the dog
+
+168
+00:14:27,000 --> 00:14:28,000
+to another folder.
+
+169
+00:14:28,000 --> 00:14:31,000
+The Europe will remain the same.
+
+170
+00:14:32,000 --> 00:14:35,000
+Is that clear with regards to you?
+
+171
+00:14:35,000 --> 00:14:42,000
+And to be honest, as the software engineers will not deal with you as often as will deal with zero
+
+172
+00:14:43,000 --> 00:14:44,000
+example few?
+
+173
+00:14:45,000 --> 00:14:46,000
+You can see on the slide.
+
+174
+00:14:47,000 --> 00:14:57,000
+Probably you also heard another show you around what is a euro, you stands for Uniform Resource Locator,
+
+175
+00:14:57,000 --> 00:15:06,000
+a euro user location dependent identifier that is not necessarily persistence, meaning URLs are not
+
+176
+00:15:06,000 --> 00:15:10,000
+required to identify the same source all the time.
+
+177
+00:15:10,000 --> 00:15:14,000
+URLs also do not follow the You Around scheme.
+
+178
+00:15:15,000 --> 00:15:21,000
+The URL is a sequence of characters that defines the network location offers source.
+
+179
+00:15:22,000 --> 00:15:30,000
+Besides identifying the resource, URLs help to locate the resource by describing its prime access location.
+
+180
+00:15:31,000 --> 00:15:40,000
+For example, a funeral might contain F2P A.P. or HTTPS was a resource is a website data.
+
+181
+00:15:40,000 --> 00:15:45,000
+This tells us that the resource can be located and axis.
+
+182
+00:15:45,000 --> 00:15:53,000
+We have file transfer protocol, hypertext transfer protocol or Hypertext Transfer Protocol secure.
+
+183
+00:15:54,000 --> 00:15:58,000
+Also, you may email to graphics user.
+
+184
+00:15:58,000 --> 00:16:01,000
+A source is an email address on the slides.
+
+185
+00:16:01,000 --> 00:16:05,000
+You can see example of the syntax of a euro.
+
+186
+00:16:06,000 --> 00:16:11,000
+You notice that these look similar to the other examples mentioned before.
+
+187
+00:16:12,000 --> 00:16:19,000
+That's because they contain many of the same components, including and query.
+
+188
+00:16:19,000 --> 00:16:25,000
+However, a euro contains unique components such as protocol and domain.
+
+189
+00:16:25,000 --> 00:16:34,000
+To sum it up, the differences between you and your role as a fall into one's euro is a subset of you
+
+190
+00:16:34,000 --> 00:16:42,000
+try to specify a square, a resource exists, and the mechanism for retrieving it while you're right
+
+191
+00:16:42,000 --> 00:16:46,000
+is a superset of euro that identifies the source.
+
+192
+00:16:47,000 --> 00:16:54,000
+The main aim of your role is to get the location or address of a source, whereas the main aim of your
+
+193
+00:16:54,000 --> 00:16:57,000
+right is to find a resource.
+
+194
+00:16:57,000 --> 00:17:06,000
+Euro contains components such as protocol, the main course square kilometers, etc. While you're right,
+
+195
+00:17:06,000 --> 00:17:08,000
+contains components like skiing.
+
+196
+00:17:08,000 --> 00:17:12,000
+I'm sorry to pass, query, etc..
+
+197
+00:17:13,000 --> 00:17:18,000
+Great, since we talked about client server architecture and HTP role in it.
+
+198
+00:17:19,000 --> 00:17:25,000
+I have to explain what it was services and taking into account the nuance was a resources.
+
+199
+00:17:25,000 --> 00:17:30,000
+I had to explain what you're right, you're right and you are.
+
+200
+00:17:30,000 --> 00:17:32,000
+That's all for this lesson.
+
+201
+00:17:32,000 --> 00:17:34,000
+Let's recap what we have announced today.
+
+202
+00:17:36,000 --> 00:17:43,000
+Today they learned what kinds of architecture is I explained the advantages and disadvantages of this
+
+203
+00:17:43,000 --> 00:17:44,000
+type of architecture.
+
+204
+00:17:45,000 --> 00:17:50,000
+After that, I explained the role of HDP protocol in class architecture.
+
+205
+00:17:51,000 --> 00:17:55,000
+We're still going to have a separate class dedicated to HDP only.
+
+206
+00:17:56,000 --> 00:17:57,000
+So stay tuned.
+
+207
+00:17:58,000 --> 00:18:03,000
+Also explain such a popular concept in web development as a resource.
+
+208
+00:18:04,000 --> 00:18:05,000
+Now you know what it is.
+
+209
+00:18:06,000 --> 00:18:12,000
+And at the end of the lesson, we announced what you're right, you ran and you are.
+
+210
+00:18:12,000 --> 00:18:17,000
+I hope that now you understand the difference between these terms.
+
+211
+00:18:18,000 --> 00:18:18,000
+That's it.
+
+212
+00:18:19,000 --> 00:18:20,000
+Thanks a lot for your attention.
+
+213
+00:18:21,000 --> 00:18:24,000
+Have a great day and see you in the next lesson.
+
diff --git a/56 - Web/003 Web Servers Overview_en.srt b/56 - Web/003 Web Servers Overview_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..b5be5ff9d3548058432a582860041cda126b687a
--- /dev/null
+++ b/56 - Web/003 Web Servers Overview_en.srt
@@ -0,0 +1,888 @@
+1
+00:00:06,000 --> 00:00:10,000
+Hello, Jim, in this lesson learned to learn a lot about Web servers.
+
+2
+00:00:10,000 --> 00:00:16,000
+We're going to start from the high level overview and discuss what web servers are up to discussion
+
+3
+00:00:16,000 --> 00:00:17,000
+boards, web servers.
+
+4
+00:00:18,000 --> 00:00:22,000
+I expect it will become clear for you what backhand developers do.
+
+5
+00:00:22,000 --> 00:00:30,000
+We'll talk about separation of concerns between back and the front end, and I know that you know what
+
+6
+00:00:30,000 --> 00:00:31,000
+web browser is.
+
+7
+00:00:31,000 --> 00:00:38,000
+But today we're going to look on such charm as web browser from the technical side and understand its
+
+8
+00:00:38,000 --> 00:00:40,000
+role in Clance architecture.
+
+9
+00:00:40,000 --> 00:00:45,000
+I will explain what is the difference between the static and dynamic web server.
+
+10
+00:00:46,000 --> 00:00:48,000
+We'll learn what DNS servers are.
+
+11
+00:00:48,000 --> 00:00:50,000
+And then there's a lesson.
+
+12
+00:00:50,000 --> 00:00:55,000
+We'll learn what the most popular web service and server containers are.
+
+13
+00:00:55,000 --> 00:00:56,000
+Let's start our lesson.
+
+14
+00:00:58,000 --> 00:01:02,000
+And the first thing was we are going to review today is the concept of the web service.
+
+15
+00:01:02,000 --> 00:01:04,000
+Let's understand what it is.
+
+16
+00:01:04,000 --> 00:01:06,000
+And why do we need them?
+
+17
+00:01:06,000 --> 00:01:14,000
+We need to understand the term web server can refer to the hardware or software or both of them working
+
+18
+00:01:14,000 --> 00:01:19,000
+together if you are talking about web server from the hardware side.
+
+19
+00:01:19,000 --> 00:01:28,000
+And that server is just a regular computer that stores web server software and the websites or web applications.
+
+20
+00:01:28,000 --> 00:01:38,000
+Component files including but not limited to HTML to assess JavaScript, Java, HP media files, database,
+
+21
+00:01:38,000 --> 00:01:45,000
+etc. and web server connected to the internet and can interact with other devices joined as a network.
+
+22
+00:01:46,000 --> 00:01:52,000
+But also, when we talk about a web server, we may think about the software as it is installed on the
+
+23
+00:01:52,000 --> 00:01:53,000
+web server.
+
+24
+00:01:53,000 --> 00:02:00,000
+That allows us to interact with applications installed on the web server over the web, very often using
+
+25
+00:02:00,000 --> 00:02:07,000
+HTP protocol over GCP IP in a separate lesson review or assigned model.
+
+26
+00:02:07,000 --> 00:02:13,000
+And you can learn from that lesson the different levels of communication in computer systems.
+
+27
+00:02:13,000 --> 00:02:19,000
+We can refer to the web server as a software as it implements server side of A.P. protocol.
+
+28
+00:02:20,000 --> 00:02:27,000
+By saying Web server, we can mean a software that actually handles HDP requests and allow us to interact
+
+29
+00:02:27,000 --> 00:02:33,000
+with resources, we'd create, update and delete them should it be.
+
+30
+00:02:33,000 --> 00:02:40,000
+Web Server has its address that consists from API address of the machine, physical devices and network
+
+31
+00:02:40,000 --> 00:02:41,000
+of our web server.
+
+32
+00:02:41,000 --> 00:02:48,000
+Software is installed and supports number of the web server software on the device, usually in the
+
+33
+00:02:48,000 --> 00:02:49,000
+internet.
+
+34
+00:02:49,000 --> 00:02:52,000
+We use domain names to access web servers.
+
+35
+00:02:53,000 --> 00:03:02,000
+Domain names adjust mapping between actually domain name Semtex and the combination of IP address and
+
+36
+00:03:02,000 --> 00:03:03,000
+port number.
+
+37
+00:03:04,000 --> 00:03:07,000
+I'm going to show you how DNS server works on the separate slot.
+
+38
+00:03:08,000 --> 00:03:15,000
+So to sum it up very often on the web server, which means a software as it is installed on the web
+
+39
+00:03:15,000 --> 00:03:17,000
+server handles requests.
+
+40
+00:03:18,000 --> 00:03:23,000
+Of course, this is nonsense responses to the client on the slide.
+
+41
+00:03:23,000 --> 00:03:30,000
+You can see basic representation of a client server connection through HP Protocol, and you can see
+
+42
+00:03:30,000 --> 00:03:31,000
+the decline in the browser.
+
+43
+00:03:32,000 --> 00:03:33,000
+It sends a request.
+
+44
+00:03:34,000 --> 00:03:38,000
+Lip Server handles the request website to store some files.
+
+45
+00:03:39,000 --> 00:03:47,000
+This can be Maingear or DB records, web server ports, assist requests, repairs, response and send
+
+46
+00:03:47,000 --> 00:03:49,000
+response back to the cloud.
+
+47
+00:03:49,000 --> 00:03:55,000
+Now, when you know what web server is, it will be easier for you to understand the difference between
+
+48
+00:03:55,000 --> 00:04:02,000
+the backend and default and software engineers zip back and ports of application is assumption.
+
+49
+00:04:02,000 --> 00:04:11,000
+What is located on the web server, implementation of the server, part of the protocol and thrown down
+
+50
+00:04:11,000 --> 00:04:13,000
+that assumption of what is on the clients.
+
+51
+00:04:14,000 --> 00:04:23,000
+Usually this is HTML since SAS JavaScript files that are sent to the client and stored on the client's
+
+52
+00:04:23,000 --> 00:04:25,000
+side, usually in the web browser.
+
+53
+00:04:26,000 --> 00:04:34,000
+Very often there is a separation between back and forth and developers because the scope of the technology
+
+54
+00:04:35,000 --> 00:04:42,000
+is pretty big, especially if you want to run back and technologies of quantum technologies on the advanced
+
+55
+00:04:42,000 --> 00:04:42,000
+level.
+
+56
+00:04:43,000 --> 00:04:48,000
+But also, there is a trend in 18 dustry for full stack engineers.
+
+57
+00:04:48,000 --> 00:04:52,000
+You can find job descriptions for full stack web developers.
+
+58
+00:04:53,000 --> 00:04:59,000
+Full stack web developer means that the engineer can do everything average implementation of the web
+
+59
+00:04:59,000 --> 00:05:07,000
+server and the backend configuration of the environments that the base is and also most frontend technologies.
+
+60
+00:05:07,000 --> 00:05:15,000
+Some JavaScript frameworks like React Genius or angular, for example, in real life, when you gain
+
+61
+00:05:15,000 --> 00:05:23,000
+more and more experience you with different parts of your application and most likely, you know one
+
+62
+00:05:23,000 --> 00:05:23,000
+stack.
+
+63
+00:05:24,000 --> 00:05:30,000
+For example, Java and the back and stack on advanced level and you know something for the phone then
+
+64
+00:05:30,000 --> 00:05:36,000
+to make adjustments to fix issues, but not to implement frontend solution from scratch.
+
+65
+00:05:36,000 --> 00:05:42,000
+But if you also can do that, you will be priceless on the market as a software engineer.
+
+66
+00:05:43,000 --> 00:05:49,000
+Talking about myself, I know American technologists and frontend technologists, and to become full
+
+67
+00:05:49,000 --> 00:05:55,000
+stack developer, rather, I will share with you also knowledge about frontend development.
+
+68
+00:05:55,000 --> 00:05:57,000
+But I will do this not in this lesson.
+
+69
+00:05:58,000 --> 00:05:59,000
+Let's continue.
+
+70
+00:06:00,000 --> 00:06:04,000
+We already mentioned web browser when we talked about the client side.
+
+71
+00:06:04,000 --> 00:06:07,000
+While for us, it is obvious what the browser is.
+
+72
+00:06:08,000 --> 00:06:12,000
+I would prefer to make sure that we understand the browser in the same way.
+
+73
+00:06:12,000 --> 00:06:15,000
+So what is browser?
+
+74
+00:06:16,000 --> 00:06:23,000
+Web browser is an application that allows us to form requests to the web server in the lesson about
+
+75
+00:06:23,000 --> 00:06:24,000
+should it be protocol.
+
+76
+00:06:24,000 --> 00:06:32,000
+You learned that if you request an issue to be response has specific form that most likely will not
+
+77
+00:06:32,000 --> 00:06:37,000
+create manually every time and will not pass manually response over time.
+
+78
+00:06:38,000 --> 00:06:40,000
+That's why we have special application.
+
+79
+00:06:41,000 --> 00:06:46,000
+That, first of all, helps us to create a request to the server was a comfortable UI.
+
+80
+00:06:47,000 --> 00:06:55,000
+The second saying it helps with presentation of the web server response usually, and users use web
+
+81
+00:06:55,000 --> 00:07:03,000
+browser to see the contents prepared by the web server user some or tax content structured in the specific
+
+82
+00:07:03,000 --> 00:07:04,000
+way.
+
+83
+00:07:04,000 --> 00:07:10,000
+Web browsers can read markup, language and present elements and users in a reasonable way.
+
+84
+00:07:12,000 --> 00:07:15,000
+Now, let's understand what static and dynamic web.
+
+85
+00:07:16,000 --> 00:07:24,000
+Yes, sometimes and the literature, you can find the different types of the content, static and dynamic
+
+86
+00:07:24,000 --> 00:07:24,000
+content.
+
+87
+00:07:25,000 --> 00:07:29,000
+Let's understand what it is and what is the difference.
+
+88
+00:07:30,000 --> 00:07:32,000
+In simple words, static web server.
+
+89
+00:07:33,000 --> 00:07:41,000
+In simple words, static rips rich resources to you as this youth sends a request to get static HTML
+
+90
+00:07:41,000 --> 00:07:44,000
+page web server returns to you.
+
+91
+00:07:45,000 --> 00:07:53,000
+For example, visiting card web site, it holds some static content like addresses at office and phone
+
+92
+00:07:53,000 --> 00:07:57,000
+numbers, and probably less ability to download.
+
+93
+00:07:57,000 --> 00:07:58,000
+Priceless.
+
+94
+00:07:58,000 --> 00:07:59,000
+That's it.
+
+95
+00:08:00,000 --> 00:08:02,000
+Simple single page website.
+
+96
+00:08:03,000 --> 00:08:11,000
+Just an example, Dynamic web server also includes applications and processes, requests to the web
+
+97
+00:08:11,000 --> 00:08:14,000
+server and dynamically creates content.
+
+98
+00:08:14,000 --> 00:08:21,000
+For example, imagine that Facebook once you logged in, you can see an image your name.
+
+99
+00:08:22,000 --> 00:08:26,000
+When somebody else will be locked in, he or she will see another content here.
+
+100
+00:08:27,000 --> 00:08:30,000
+When you open the list of your pages you are subscribed for.
+
+101
+00:08:31,000 --> 00:08:38,000
+You can see a list of pages that is associated with your user because another user will see another
+
+102
+00:08:38,000 --> 00:08:39,000
+information.
+
+103
+00:08:39,000 --> 00:08:46,000
+This is happening because the content is generated on the web server dynamically based on the data from
+
+104
+00:08:46,000 --> 00:08:49,000
+the database and additional logic applied when needed.
+
+105
+00:08:50,000 --> 00:08:56,000
+So Facebook is not in the application was millions of static HTML pages.
+
+106
+00:08:57,000 --> 00:08:57,000
+It is.
+
+107
+00:08:57,000 --> 00:09:00,000
+The application was the HTML templates.
+
+108
+00:09:01,000 --> 00:09:08,000
+This is very in simple words and logic that populates data from the database into place holders hearts
+
+109
+00:09:08,000 --> 00:09:11,000
+and shows blocks based on the conditions to the user.
+
+110
+00:09:12,000 --> 00:09:17,000
+For example, if you are an admin of the group and the Facebook, you can see admin tools.
+
+111
+00:09:18,000 --> 00:09:25,000
+If you are not an admin, then you don't see admin tools during the course will work with you on the
+
+112
+00:09:25,000 --> 00:09:30,000
+online store application, and we are going to create our own online shop.
+
+113
+00:09:31,000 --> 00:09:36,000
+This also will be applications that will dynamically generate content for our users.
+
+114
+00:09:38,000 --> 00:09:46,000
+One more thing that I promise to explain you is DNS server DNS stands for domain name system.
+
+115
+00:09:46,000 --> 00:09:47,000
+What is it?
+
+116
+00:09:48,000 --> 00:09:55,000
+It is an Iraqi code, and this centralized naming system used to identify a computer's services and
+
+117
+00:09:55,000 --> 00:10:01,000
+other resources reachable through the internet or other internet protocol networks.
+
+118
+00:10:02,000 --> 00:10:10,000
+The resource requests contained in the DNS associated domain names with other forms of information.
+
+119
+00:10:11,000 --> 00:10:14,000
+These are most commonly used to map human friends of domain names.
+
+120
+00:10:15,000 --> 00:10:17,000
+This is a numerical IP addresses.
+
+121
+00:10:18,000 --> 00:10:26,000
+Computers need to locate services and devices using the underlying network protocols, but have been
+
+122
+00:10:26,000 --> 00:10:30,000
+extended over time to perform many other functions as well.
+
+123
+00:10:31,000 --> 00:10:38,000
+The domain name system has been an essential component of the functionality of the internet since 1985.
+
+124
+00:10:40,000 --> 00:10:47,000
+For example, when you type the mailing in the Web browser of this line, browser calls DNS resolver
+
+125
+00:10:47,000 --> 00:10:55,000
+and it is responsible for translation of the DNS name into the IP address and when we know IP address
+
+126
+00:10:56,000 --> 00:10:59,000
+request that may be further sent as a destination.
+
+127
+00:10:59,000 --> 00:11:03,000
+Is it a simplified version of how DNS service?
+
+128
+00:11:04,000 --> 00:11:10,000
+This is important to understand, because when you will configure your Web application, this knowledge
+
+129
+00:11:10,000 --> 00:11:15,000
+will come in handy and you will see intense flow of the map app configuration.
+
+130
+00:11:16,000 --> 00:11:19,000
+Now let's you use the most popular web servers.
+
+131
+00:11:20,000 --> 00:11:27,000
+First of all, I have to say that there are really a lot of different web servers, but some main concepts
+
+132
+00:11:27,000 --> 00:11:29,000
+of how they work are similar.
+
+133
+00:11:29,000 --> 00:11:34,000
+The selection of the web server might also depend on the technical stack.
+
+134
+00:11:35,000 --> 00:11:42,000
+For example, if a developer in Java needs a read container in a separate lesson, we are going to learn
+
+135
+00:11:42,000 --> 00:11:50,000
+what servers are but ensure silhouettes are implementation of the server side of it should it be contract.
+
+136
+00:11:51,000 --> 00:11:58,000
+If you plan to create backend vibe HP, then most likely you will select different web server.
+
+137
+00:11:59,000 --> 00:12:03,000
+But still, let me name just a few web servers that are the most popular.
+
+138
+00:12:04,000 --> 00:12:06,000
+Based on my investigations.
+
+139
+00:12:07,000 --> 00:12:12,000
+Probably one of the most popular Web servers is that you have to be server.
+
+140
+00:12:13,000 --> 00:12:20,000
+There are parts of web server, officially known as a cherished to be server, was released in ninety
+
+141
+00:12:20,000 --> 00:12:20,000
+five.
+
+142
+00:12:21,000 --> 00:12:28,000
+Apache is a free, open source web server developed and maintained by Apache Software Foundation.
+
+143
+00:12:29,000 --> 00:12:37,000
+It is one of the most popular web servers around the world, based on to the Apache hosts approximately
+
+144
+00:12:37,000 --> 00:12:39,000
+64 percent of the market.
+
+145
+00:12:40,000 --> 00:12:47,000
+Another web server is and jeans and jinks is an open source, high performance web server.
+
+146
+00:12:47,000 --> 00:12:53,000
+Released in 2004, it has become one of the most used web servers.
+
+147
+00:12:54,000 --> 00:13:00,000
+Together with a patch and jinks is an ideal solution for managing high traffic websites.
+
+148
+00:13:01,000 --> 00:13:09,000
+Many high visibility websites and applications such as Netflix or Pinterest use the engine's web server
+
+149
+00:13:10,000 --> 00:13:20,000
+based on today and holds approximately 33 percent of the market light speed light speeds as a part time
+
+150
+00:13:20,000 --> 00:13:26,000
+web server developed by Lightspeed Technologies, released in 2003.
+
+151
+00:13:27,000 --> 00:13:32,000
+And the most popular web service for General Web applications are TomKat.
+
+152
+00:13:33,000 --> 00:13:35,000
+This is definitely one of the market leaders.
+
+153
+00:13:36,000 --> 00:13:38,000
+It is free, open-source and powerful.
+
+154
+00:13:39,000 --> 00:13:42,000
+Moreover, there are different awesome web servers.
+
+155
+00:13:42,000 --> 00:13:45,000
+Is it a view on the basis of the Tomcat?
+
+156
+00:13:45,000 --> 00:13:51,000
+That's why, in my Java course, we are going to learn Amazon on the example of Tomcat.
+
+157
+00:13:52,000 --> 00:13:58,000
+Tomcat provides Pure Java A2DP web server environment in which Java code can run.
+
+158
+00:13:59,000 --> 00:14:08,000
+Jetty Eclipse Jetty is Gemma WebServer and Gemma Solarz Container, while lip service are usually associated
+
+159
+00:14:08,000 --> 00:14:15,000
+with seven documents, two people jetting out often used for machine to machine communications, usually
+
+160
+00:14:15,000 --> 00:14:17,000
+using largest software frameworks.
+
+161
+00:14:18,000 --> 00:14:22,000
+But what they choose for Java App Jetty or the Tomcat?
+
+162
+00:14:23,000 --> 00:14:30,000
+The fact is, regardless of which side you take in the Tomcat versus jetty comparison, you really can't
+
+163
+00:14:30,000 --> 00:14:32,000
+make a bad decision.
+
+164
+00:14:33,000 --> 00:14:39,000
+Both are widely used and have proven themselves in large scale deployments on hold.
+
+165
+00:14:39,000 --> 00:14:46,000
+The key difference between Tomcat and Jetty is the fact that the patch of Tomcat places great stress
+
+166
+00:14:46,000 --> 00:14:49,000
+on being up to date with the latest specification.
+
+167
+00:14:49,000 --> 00:14:56,000
+While Eclipse Jetty prioritize the needs of the user community, which tends to result on an emphasis
+
+168
+00:14:56,000 --> 00:14:57,000
+on performance.
+
+169
+00:14:58,000 --> 00:15:07,000
+Wildfire worldwide, formerly known as Jane, is an application server authored by JBoss, now developed
+
+170
+00:15:07,000 --> 00:15:08,000
+by Red Hat.
+
+171
+00:15:09,000 --> 00:15:15,000
+World War II is written in Java and implements a Java Platform Enterprise Edition specification.
+
+172
+00:15:16,000 --> 00:15:18,000
+But why so many different web servers?
+
+173
+00:15:18,000 --> 00:15:21,000
+What is the difference between the Tomcat and World War II?
+
+174
+00:15:21,000 --> 00:15:27,000
+For example, the difference between World War II and Tomcat is pretty straightforward.
+
+175
+00:15:27,000 --> 00:15:36,000
+World War II is a full Java EE application server, while Tomcat is a Java server container and a web
+
+176
+00:15:36,000 --> 00:15:37,000
+server.
+
+177
+00:15:37,000 --> 00:15:46,000
+And since, because it doesn't come with an implementation of the Java, it is that it is largely out
+
+178
+00:15:46,000 --> 00:15:46,000
+of the box.
+
+179
+00:15:47,000 --> 00:15:55,000
+So in a nutshell, if you are designing a Germany application that uses, so let's just be stuff you
+
+180
+00:15:55,000 --> 00:15:58,000
+can run, it goes on rails fly and tomcat.
+
+181
+00:15:59,000 --> 00:16:08,000
+If you are using additional Java EE components like e.g. the transaction manager etc, you need an application
+
+182
+00:16:08,000 --> 00:16:10,000
+server like wildfire.
+
+183
+00:16:11,000 --> 00:16:19,000
+WebSphere by IBM WebSphere Application Server is a software products that performs the role of a web
+
+184
+00:16:19,000 --> 00:16:20,000
+application server.
+
+185
+00:16:21,000 --> 00:16:27,000
+More specifically, it is a software framework and middleware that hosts Java based IMAP applications.
+
+186
+00:16:28,000 --> 00:16:32,000
+It is a flagship product within IBM WebSphere software as you.
+
+187
+00:16:33,000 --> 00:16:35,000
+WebLogic by Oracle.
+
+188
+00:16:36,000 --> 00:16:42,000
+Oracle WebLogic Server is a Java application server currently developed by Oracle Corp..
+
+189
+00:16:43,000 --> 00:16:51,000
+Glass Fish, Lost Fish is an open source Jakarta EE platform application server project started by Sun
+
+190
+00:16:51,000 --> 00:17:00,000
+Microsystems, then sponsored by Oracle Corp., and now even as the Eclipse Foundation and supported
+
+191
+00:17:00,000 --> 00:17:03,000
+by Piara, Oracle and Red Hat.
+
+192
+00:17:04,000 --> 00:17:07,000
+Probably these are all market leaders based on today.
+
+193
+00:17:08,000 --> 00:17:13,000
+But again, there are different web service and you can select the one you likes most.
+
+194
+00:17:14,000 --> 00:17:20,000
+Let's now learn one more chums that I have already mentioned during a review of the previous slide.
+
+195
+00:17:21,000 --> 00:17:24,000
+Let's understand what separate container is.
+
+196
+00:17:24,000 --> 00:17:31,000
+I already mentioned that service kind of programs that handles requests to the web server and prepares
+
+197
+00:17:31,000 --> 00:17:35,000
+response for the client in Java.
+
+198
+00:17:35,000 --> 00:17:43,000
+So that's obvious when Sampson new to ensure a server that lifecycle somebody or some some needs to
+
+199
+00:17:43,000 --> 00:17:47,000
+create server objects when application is deployed on the web server.
+
+200
+00:17:48,000 --> 00:17:55,000
+Samsung needs to accept clients request mapping to the object that can be forwarded to the select object
+
+201
+00:17:55,000 --> 00:17:57,000
+and Boston's method argument.
+
+202
+00:17:57,000 --> 00:18:04,000
+Something needs to pass response of the server and send it back to the client, and some some need to
+
+203
+00:18:04,000 --> 00:18:08,000
+destroy so when it will be needed to support service lifecycle.
+
+204
+00:18:09,000 --> 00:18:11,000
+That's why special charm is used.
+
+205
+00:18:12,000 --> 00:18:17,000
+This is not just a web server that handles incoming requests and sends responses.
+
+206
+00:18:18,000 --> 00:18:19,000
+It also manages.
+
+207
+00:18:19,000 --> 00:18:20,000
+So that's a lifecycle.
+
+208
+00:18:21,000 --> 00:18:26,000
+That's why this group of web service called so containers.
+
+209
+00:18:27,000 --> 00:18:35,000
+That's why to deploy Java Web applications, you need service containers like Tomcat, JT, Wild Fly,
+
+210
+00:18:35,000 --> 00:18:36,000
+WebSphere or others.
+
+211
+00:18:37,000 --> 00:18:39,000
+That's all for today.
+
+212
+00:18:39,000 --> 00:18:45,000
+I believe this is just enough theory about web service to proceed with practical activities.
+
+213
+00:18:45,000 --> 00:18:48,000
+Let's recap what we have learned today.
+
+214
+00:18:49,000 --> 00:18:51,000
+Today, we learned what web servers are.
+
+215
+00:18:52,000 --> 00:18:57,000
+Now you understand what developers do and what frontend developers do.
+
+216
+00:18:58,000 --> 00:19:06,000
+Also, we discuss what web browser is and why we need it then and what static and dynamic web server
+
+217
+00:19:06,000 --> 00:19:06,000
+is.
+
+218
+00:19:07,000 --> 00:19:14,000
+Besides what discussed, what DNS servers are generally viewed as the most popular web servers.
+
+219
+00:19:15,000 --> 00:19:20,000
+After this lesson, you also know the difference between the web server and so less container.
+
+220
+00:19:21,000 --> 00:19:22,000
+That's all for today.
+
+221
+00:19:23,000 --> 00:19:24,000
+Thank you all for your attention.
+
+222
+00:19:25,000 --> 00:19:27,000
+Have a great day and see you in the next lesson.
+
diff --git a/56 - Web/004 HTTP Part 1_en.srt b/56 - Web/004 HTTP Part 1_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..6899afabcf1214fa5f10f3f37846d8589c9f206c
--- /dev/null
+++ b/56 - Web/004 HTTP Part 1_en.srt
@@ -0,0 +1,768 @@
+1
+00:00:06,000 --> 00:00:09,000
+Hello again in this lesson, we're going to learn the protocol.
+
+2
+00:00:10,000 --> 00:00:15,000
+Read your review of this and previous lessons on the high level during the discussion of the Osai model
+
+3
+00:00:15,000 --> 00:00:20,000
+and conceptual architecture, but they will learn it in every detail.
+
+4
+00:00:21,000 --> 00:00:27,000
+We'll learn different versions of the protocol and will understand the difference between them.
+
+5
+00:00:27,000 --> 00:00:32,000
+I'm going to explain the protocol specifics and key features.
+
+6
+00:00:32,000 --> 00:00:39,000
+Separate focus I will put on the explanation of the difference between stateful and stateless protocols.
+
+7
+00:00:39,000 --> 00:00:47,000
+Also in this lesson will be how HTP session and cooking mechanism works and why do we need it was a
+
+8
+00:00:47,000 --> 00:00:48,000
+clear visualization.
+
+9
+00:00:48,000 --> 00:00:53,000
+I will explain to the key mechanics and how the protocol works.
+
+10
+00:00:54,000 --> 00:01:02,000
+You will understand what sort of tests we're going to learn different methods, including get both had
+
+11
+00:01:02,000 --> 00:01:07,000
+and assess and understand how they work and why do we need them.
+
+12
+00:01:07,000 --> 00:01:15,000
+And then the core part of the lesson will understand how the request and response look like.
+
+13
+00:01:15,000 --> 00:01:22,000
+I will show you structure of the request and the response and will review separately request in response
+
+14
+00:01:22,000 --> 00:01:28,000
+headers and ascent of the last run HDP status cards that start our lesson.
+
+15
+00:01:29,000 --> 00:01:33,000
+The first thing that I would like to mention is that it is mandatory.
+
+16
+00:01:33,000 --> 00:01:39,000
+You watched previous lessons, especially about old time model, because in this lesson, you are going
+
+17
+00:01:39,000 --> 00:01:43,000
+to hear terms that we learned in that lesson.
+
+18
+00:01:43,000 --> 00:01:46,000
+If you skipped that lesson, please watch it.
+
+19
+00:01:47,000 --> 00:01:49,000
+And after the first hit was this one.
+
+20
+00:01:50,000 --> 00:01:58,000
+And before we go deep in the specifics of the protocol, I'd like to hold a brief overview of the versions
+
+21
+00:01:58,000 --> 00:02:03,000
+in order to give you a high level understanding of differences between versions.
+
+22
+00:02:03,000 --> 00:02:09,000
+Each new version of the protocol does obsolete the previous one.
+
+23
+00:02:09,000 --> 00:02:18,000
+The first version that was ever used in the internet is a version 0.9 that was first implemented in
+
+24
+00:02:18,000 --> 00:02:19,000
+the nineteen eighty nine.
+
+25
+00:02:20,000 --> 00:02:24,000
+This version supported only with operations with resources to the internet.
+
+26
+00:02:25,000 --> 00:02:29,000
+In 1996, version 1.0 was released.
+
+27
+00:02:30,000 --> 00:02:33,000
+This version supported OSI operations was resources.
+
+28
+00:02:34,000 --> 00:02:41,000
+For example, from the version one, we could create sources remotely via be version one.
+
+29
+00:02:41,000 --> 00:02:48,000
+Still require the establishment of the independent connection for execution operation was each source.
+
+30
+00:02:49,000 --> 00:02:58,000
+The first version evolved after the version 1.1 in 1997, and then its specifications were updated in
+
+31
+00:02:58,000 --> 00:03:10,000
+1999 and in 2014, its secure variant, named two, is used by more than 76 percent of websites.
+
+32
+00:03:10,000 --> 00:03:17,000
+This version allowed the data wasn't the one connection established, which improves performance of
+
+33
+00:03:18,000 --> 00:03:19,000
+HTP protocol.
+
+34
+00:03:20,000 --> 00:03:23,000
+H-2B to was published in 2015.
+
+35
+00:03:24,000 --> 00:03:28,000
+It is used by more than 45 percent of websites.
+
+36
+00:03:28,000 --> 00:03:37,000
+It is now supported by almost all web browsers, 96 percent of users and major web servers.
+
+37
+00:03:37,000 --> 00:03:45,000
+It supports push technologies and grants the right to a server to send a data as it wasn't requested
+
+38
+00:03:45,000 --> 00:03:45,000
+by the client.
+
+39
+00:03:46,000 --> 00:03:55,000
+HTP Version three was first presented at the end of 2019 and instantly after presentation, major browsers
+
+40
+00:03:55,000 --> 00:03:56,000
+start adopting it.
+
+41
+00:03:57,000 --> 00:04:00,000
+It is used by more than 20 percent of websites.
+
+42
+00:04:01,000 --> 00:04:09,000
+It is now supported by many web browsers that support 73 percent of users and should it be version suite
+
+43
+00:04:09,000 --> 00:04:10,000
+users quick.
+
+44
+00:04:10,000 --> 00:04:19,000
+This stands for quick UDP Internet Connections developed by Google instead of this API for the underlying
+
+45
+00:04:19,000 --> 00:04:22,000
+transfer protocol like HTP version do.
+
+46
+00:04:22,000 --> 00:04:26,000
+It doesn't upset the previous major versions of the protocol.
+
+47
+00:04:27,000 --> 00:04:34,000
+Support of the PS3 was added to Cloudflare and Google Chrome first and is also enabled in Firefox.
+
+48
+00:04:35,000 --> 00:04:38,000
+Let's proceed now was none of HTP specifics.
+
+49
+00:04:39,000 --> 00:04:47,000
+You already know that HTP is a protocol of an application layer of our or CI model that works over IP
+
+50
+00:04:47,000 --> 00:04:52,000
+protocol to deliver messages between requested and the sender.
+
+51
+00:04:53,000 --> 00:05:02,000
+And this will ensure its work was quick critical in version Suite DCP IP is the most common.
+
+52
+00:05:02,000 --> 00:05:09,000
+Protocol that is used by HCV, but theoretically and practically any other kind of transfer protocol
+
+53
+00:05:09,000 --> 00:05:10,000
+may be used.
+
+54
+00:05:11,000 --> 00:05:18,000
+What else do we know about HCV protocol and should it be stands for Hypertext Transfer Protocol?
+
+55
+00:05:18,000 --> 00:05:25,000
+Hypertext Transfer Protocol is a set of rules which are used for transferring the files like audio,
+
+56
+00:05:26,000 --> 00:05:31,000
+media, graphic image, text and other multimedia files on the world like that.
+
+57
+00:05:32,000 --> 00:05:35,000
+HDP protocol is stateless.
+
+58
+00:05:35,000 --> 00:05:37,000
+What does that mean?
+
+59
+00:05:37,000 --> 00:05:44,000
+Is it any more and more different protocols go into zones and are stateless and stateful protocols?
+
+60
+00:05:45,000 --> 00:05:51,000
+What is the difference between these kinds of protocols that will start explanation from the state less
+
+61
+00:05:51,000 --> 00:05:54,000
+protocol by its name, human guests?
+
+62
+00:05:54,000 --> 00:05:58,000
+The protocols of this thought don't store state.
+
+63
+00:05:58,000 --> 00:06:01,000
+Let me explain you on simple example.
+
+64
+00:06:01,000 --> 00:06:06,000
+Imagine that you sent a request to the server where Facebook app is costing.
+
+65
+00:06:06,000 --> 00:06:11,000
+You want to log in after you send your credentials to the server.
+
+66
+00:06:11,000 --> 00:06:18,000
+You've successfully redirected to the home page, and you can see that this is your personal page,
+
+67
+00:06:18,000 --> 00:06:20,000
+but not a friend of yours.
+
+68
+00:06:21,000 --> 00:06:27,000
+But you send multiple requests to the server where information about the actual state of the connection
+
+69
+00:06:27,000 --> 00:06:28,000
+is stored.
+
+70
+00:06:28,000 --> 00:06:35,000
+I mean, where the exact description of your state as a loading the user is stored because in case you
+
+71
+00:06:35,000 --> 00:06:42,000
+were trying to access home page without being locked in, you will be redirected to the login page that
+
+72
+00:06:42,000 --> 00:06:49,000
+proves that somebody or something might easily identify that you were already locked in.
+
+73
+00:06:49,000 --> 00:06:57,000
+And this information is not stored in the protocol because Asia to be critical doesn't store the state.
+
+74
+00:06:58,000 --> 00:07:06,000
+You can just send a request to the server and get responses, and each you a request doesn't remember
+
+75
+00:07:06,000 --> 00:07:09,000
+Anderson about all previous requests.
+
+76
+00:07:10,000 --> 00:07:11,000
+Then the stanzas.
+
+77
+00:07:12,000 --> 00:07:18,000
+The protocol doesn't have any history of requests or analysis of the previous responses.
+
+78
+00:07:19,000 --> 00:07:21,000
+That is not how it works.
+
+79
+00:07:21,000 --> 00:07:25,000
+And that's why it is called state less protocol.
+
+80
+00:07:26,000 --> 00:07:34,000
+But in this case, I was on Facebook, and the stance that I was locked in and indentify my connection
+
+81
+00:07:35,000 --> 00:07:38,000
+is the most common mechanism of storing this stage in Asia.
+
+82
+00:07:38,000 --> 00:07:41,000
+Deep connections is a session mechanism.
+
+83
+00:07:41,000 --> 00:07:44,000
+We're going to talk about it in a minute and just listen.
+
+84
+00:07:45,000 --> 00:07:49,000
+Let me just finish your explanation of the stateless and stateful protocols.
+
+85
+00:07:50,000 --> 00:07:56,000
+To summarize information about stateless protocol, it is worse to highlight the stateless protocol
+
+86
+00:07:56,000 --> 00:08:03,000
+requires less resources because system does not need to keep track of the multiple communications and
+
+87
+00:08:03,000 --> 00:08:06,000
+the session details and stateless protocol.
+
+88
+00:08:06,000 --> 00:08:12,000
+Each information packet travel on its own without reference to any other package.
+
+89
+00:08:13,000 --> 00:08:20,000
+Each communication and stateless protocol is unrelated to those that receive a fall is a good example
+
+90
+00:08:20,000 --> 00:08:27,000
+of stateless protocol is step like we already discussed is ever simply about stateless protocol.
+
+91
+00:08:28,000 --> 00:08:31,000
+Then let's learn what stateful protocol is.
+
+92
+00:08:32,000 --> 00:08:36,000
+Stateful protocol, on the other hand, stored state.
+
+93
+00:08:37,000 --> 00:08:44,000
+It gives good performance to decline by keeping track of the connection information it requires back
+
+94
+00:08:44,000 --> 00:08:44,000
+in storage.
+
+95
+00:08:45,000 --> 00:08:52,000
+If a transaction is interrupted in stateful protocol, we can pick up where we left off as the context
+
+96
+00:08:52,000 --> 00:08:59,000
+and the Feaster have been stored stateful applications, tracks set in preferences, window location,
+
+97
+00:08:59,000 --> 00:09:05,000
+recent activity, etc. To summarize the main things about stateful protocol, it is worse.
+
+98
+00:09:05,000 --> 00:09:07,000
+The mansions are full of innocents.
+
+99
+00:09:07,000 --> 00:09:11,000
+As we already said, stateful protocols provide that performance.
+
+100
+00:09:11,000 --> 00:09:19,000
+Does a client by keeping track of the connection information stateful applications require back in storage
+
+101
+00:09:19,000 --> 00:09:23,000
+status requests are always dependent on the server side state.
+
+102
+00:09:24,000 --> 00:09:28,000
+An example of stateful protocol is F2P file transfer protocol.
+
+103
+00:09:29,000 --> 00:09:32,000
+FTP Server conducts an interactive session with the user.
+
+104
+00:09:33,000 --> 00:09:39,000
+During the session, a user is provided and needs to be authenticated and set the various variables.
+
+105
+00:09:39,000 --> 00:09:46,000
+Working Directory Transfer mode all stored on the server as a part of the session state.
+
+106
+00:09:47,000 --> 00:09:54,000
+But in case H-2B is a status protocol, how we can ensure smooth interaction of the end user with our
+
+107
+00:09:54,000 --> 00:10:03,000
+web application in order to associate a request or any other requests, you need a way to store user
+
+108
+00:10:03,000 --> 00:10:09,000
+data between API requests, and the solution would be to store this information on the server side.
+
+109
+00:10:10,000 --> 00:10:16,000
+Imagine that on the server you have a piece of data, the source information about the related serious
+
+110
+00:10:16,000 --> 00:10:18,000
+of requests from the one client.
+
+111
+00:10:19,000 --> 00:10:28,000
+We call this data as session, and since server works with multiple clients, we have a lot of sessions
+
+112
+00:10:28,000 --> 00:10:29,000
+understood.
+
+113
+00:10:29,000 --> 00:10:32,000
+Each session has a unique IP.
+
+114
+00:10:33,000 --> 00:10:40,000
+So on this server, we have set of pairs where key is I.D. and the value is a session object.
+
+115
+00:10:41,000 --> 00:10:45,000
+Is it clear to use the first response server a chance?
+
+116
+00:10:45,000 --> 00:10:52,000
+The idea is that this associate was a session to the client and after that, during each request as
+
+117
+00:10:52,000 --> 00:10:58,000
+a server client versus session, i.e. server can easily associate.
+
+118
+00:10:58,000 --> 00:11:05,000
+I was a session object and mobs occurrence request to the states of this associated with this request.
+
+119
+00:11:06,000 --> 00:11:12,000
+But as you can see, ATP protocol itself doesn't store any state.
+
+120
+00:11:12,000 --> 00:11:19,000
+Probably just still doesn't completely answer your question in the part where client stores each session.
+
+121
+00:11:20,000 --> 00:11:23,000
+That's where another mechanism comes into play.
+
+122
+00:11:24,000 --> 00:11:26,000
+Another mechanism is called cookies.
+
+123
+00:11:27,000 --> 00:11:29,000
+Let me explain you what it is.
+
+124
+00:11:30,000 --> 00:11:37,000
+Cookies are tiny pieces of data that zip back and can store in the user's browsers on the client side.
+
+125
+00:11:38,000 --> 00:11:45,000
+User tracking personalization as the most common use cases for cookies back and forth of application
+
+126
+00:11:45,000 --> 00:11:48,000
+actually cause it to be right.
+
+127
+00:11:48,000 --> 00:11:53,000
+We create cookies and lose them as a part of your responses.
+
+128
+00:11:54,000 --> 00:12:00,000
+Cookies have a lot of privacy concerns and have been subject to strict regulation over the years.
+
+129
+00:12:01,000 --> 00:12:09,000
+So server ban sends a response to decline since so-called cookies that is physically the key value pairs
+
+130
+00:12:10,000 --> 00:12:12,000
+that may be stored in the browser.
+
+131
+00:12:13,000 --> 00:12:21,000
+Inside the browser, this data temporary is stored, so sessional is stored as a cookie and urines in
+
+132
+00:12:21,000 --> 00:12:22,000
+your request to the server.
+
+133
+00:12:22,000 --> 00:12:26,000
+We send the information about our cookies and cookies.
+
+134
+00:12:26,000 --> 00:12:33,000
+Usually, we store small pieces of data in order to not lords a network and to not send a lot of data
+
+135
+00:12:33,000 --> 00:12:35,000
+to the client was response.
+
+136
+00:12:35,000 --> 00:12:41,000
+Usually, old heavyweight and sensitive data is stored inside the session on the server.
+
+137
+00:12:42,000 --> 00:12:45,000
+This was just a high level overview about session and cookies.
+
+138
+00:12:46,000 --> 00:12:53,000
+This is just to help you understand what's stateless political is and what is the workaround in HDB
+
+139
+00:12:53,000 --> 00:12:59,000
+stateless protocol to identify requests from the same client as a software engineer.
+
+140
+00:12:59,000 --> 00:13:06,000
+We will be in charge of implementations at court on the server side that actually works with sessions
+
+141
+00:13:06,000 --> 00:13:07,000
+and cookies.
+
+142
+00:13:07,000 --> 00:13:11,000
+But now you can understand what it is, at least since the high level.
+
+143
+00:13:12,000 --> 00:13:19,000
+I believe he already understood that we may have to answer the architecture where we will use be critical,
+
+144
+00:13:19,000 --> 00:13:22,000
+the new messages from the requester, who's a sender?
+
+145
+00:13:23,000 --> 00:13:29,000
+Let's now structure this information and understand the sequence of events during the Asia connection
+
+146
+00:13:30,000 --> 00:13:36,000
+in Clarence Center protocols like HTP, mechanics of interaction consists of three phases.
+
+147
+00:13:37,000 --> 00:13:42,000
+xCurrent establishes a physical connection or the appropriate connection needs.
+
+148
+00:13:42,000 --> 00:13:48,000
+The transport layer is noticeably declined since it's a request and waits for an answer.
+
+149
+00:13:49,000 --> 00:13:56,000
+The seven processes that request sending back its answer, providing a status code and the appropriate
+
+150
+00:13:56,000 --> 00:13:59,000
+data is very, very simplified.
+
+151
+00:13:59,000 --> 00:14:07,000
+As of version 1.1, the connection is no longer closed after completing the CIRC face, and the client
+
+152
+00:14:07,000 --> 00:14:09,000
+is now granted a further request.
+
+153
+00:14:09,000 --> 00:14:15,000
+This means the second and third phases can now be performed any a number of times.
+
+154
+00:14:15,000 --> 00:14:19,000
+Now, let's review the mechanics in more detail to you.
+
+155
+00:14:20,000 --> 00:14:23,000
+On this slide, we have more detailed picture.
+
+156
+00:14:24,000 --> 00:14:30,000
+Let's go over each step one by one in order you would understand what has to happen in order to pass
+
+157
+00:14:30,000 --> 00:14:31,000
+and receives the data.
+
+158
+00:14:31,000 --> 00:14:32,000
+We are TV.
+
+159
+00:14:33,000 --> 00:14:40,000
+The first scenes of this happening circuits on the server side is created U-verse circuit.
+
+160
+00:14:40,000 --> 00:14:41,000
+What is it?
+
+161
+00:14:42,000 --> 00:14:44,000
+A circuit is a software structure.
+
+162
+00:14:44,000 --> 00:14:46,000
+Was it a network node of a computer network?
+
+163
+00:14:47,000 --> 00:14:54,000
+Is it serves as an end point for sending and receiving data across the network, a socket as a one and
+
+164
+00:14:54,000 --> 00:15:01,000
+point off a two way communication link between two programs running on the network a socket.
+
+165
+00:15:01,000 --> 00:15:02,000
+Is it bound to cause?
+
+166
+00:15:02,000 --> 00:15:03,000
+No.
+
+167
+00:15:03,000 --> 00:15:11,000
+So that the TCP you can identify as application, the data is destined to be sent to socket consistent
+
+168
+00:15:11,000 --> 00:15:18,000
+from the network protocol used hosts and cords no use all things mixed together.
+
+169
+00:15:19,000 --> 00:15:30,000
+Usually this cold socket example HTP online from dot com 880 is this socket that the client can connect
+
+170
+00:15:30,000 --> 00:15:37,000
+to in case of a severance application on the Port 880 on the computer was IP Zip.
+
+171
+00:15:37,000 --> 00:15:42,000
+This map on the DNS server was the main name online shop dot com.
+
+172
+00:15:43,000 --> 00:15:48,000
+I know the last sentence may sound complex, but it is what it is.
+
+173
+00:15:48,000 --> 00:15:55,000
+That's why it is important to keep lessons to understand all terminology what DNS servers are.
+
+174
+00:15:56,000 --> 00:16:01,000
+We learned a lesson about the service of the service circuit this created.
+
+175
+00:16:02,000 --> 00:16:08,000
+It just waits for connection in the similar way, with great client sockets on the client side because
+
+176
+00:16:08,000 --> 00:16:12,000
+we need to know address of the requester in order.
+
+177
+00:16:12,000 --> 00:16:18,000
+We could send a response back when connection is established, which sends a request from client to
+
+178
+00:16:18,000 --> 00:16:19,000
+the seller.
+
+179
+00:16:20,000 --> 00:16:22,000
+One request reach the destination.
+
+180
+00:16:22,000 --> 00:16:30,000
+It is processed on the server that is exactly where we, as programmers, write code and logic.
+
+181
+00:16:30,000 --> 00:16:32,000
+How to handle requests.
+
+182
+00:16:33,000 --> 00:16:38,000
+Is it to initiate the flow of the check out or log in the user or anything else?
+
+183
+00:16:38,000 --> 00:16:45,000
+After request requests handle Ziller response is sent back to decline and action is closed.
+
+184
+00:16:46,000 --> 00:16:54,000
+When we will review ACP headers, you are going to learn keep a value of connection and that tells HTP
+
+185
+00:16:54,000 --> 00:16:59,000
+to not lose the connection with this client instantly after each new request.
+
+186
+00:17:00,000 --> 00:17:05,000
+And the last step in this sequence response is handled on the client side.
+
+187
+00:17:06,000 --> 00:17:10,000
+For example, web browser passes and displays information from the response.
+
+188
+00:17:11,000 --> 00:17:18,000
+I believe that after this slide, mechanics of the protocol is via press a pause for a minute.
+
+189
+00:17:18,000 --> 00:17:25,000
+If you want to look at the slides one more time and just recap everything, what I have just in case
+
+190
+00:17:25,000 --> 00:17:27,000
+something similar remains unclear.
+
+191
+00:17:27,000 --> 00:17:30,000
+Let's not hesitate to post your questions to those of you.
+
+192
+00:17:31,000 --> 00:17:35,000
+And if you're ready to proceed, let's learn more about the request now.
+
diff --git a/56 - Web/005 HTTP Part 2_en.srt b/56 - Web/005 HTTP Part 2_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..20014cd948bf97aa9f6f1890528c817bda8fe6ea
--- /dev/null
+++ b/56 - Web/005 HTTP Part 2_en.srt
@@ -0,0 +1,956 @@
+1
+00:00:07,000 --> 00:00:14,000
+The plans request consists of a text directives separated by an empty, long, empty line is represented
+
+2
+00:00:14,000 --> 00:00:21,000
+by secretary return, followed by line seats, characters and should appear request is divided into
+
+3
+00:00:21,000 --> 00:00:22,000
+three blocks.
+
+4
+00:00:22,000 --> 00:00:27,000
+The first line contains a request massive, followed by eight parameters.
+
+5
+00:00:28,000 --> 00:00:33,000
+These are parts of the document as an absolute URL without the protocol or domain name.
+
+6
+00:00:34,000 --> 00:00:36,000
+The HTP protocol version.
+
+7
+00:00:37,000 --> 00:00:40,000
+Subsequent lines represent HCB headers.
+
+8
+00:00:40,000 --> 00:00:48,000
+Given the information about what type of data is appropriate, for example, what language, what I
+
+9
+00:00:48,000 --> 00:00:54,000
+am E-Types, or as a data altering its behavior, for example, not send an answer.
+
+10
+00:00:54,000 --> 00:01:02,000
+If it is already cached, by the way, I am time stands for multi-purpose internet mail extensions.
+
+11
+00:01:02,000 --> 00:01:06,000
+These are many types of data that we can pass within.
+
+12
+00:01:06,000 --> 00:01:13,000
+That one indicates the nature and format of the document, file or assortment of months.
+
+13
+00:01:14,000 --> 00:01:22,000
+And Miami Typekit defined and standardize the RF C sixty eight thirty eight OSes, as described in the
+
+14
+00:01:22,000 --> 00:01:31,000
+B request headers, not only your request has headers, actually b response also has headers, water
+
+15
+00:01:31,000 --> 00:01:34,000
+associations, request response headers.
+
+16
+00:01:34,000 --> 00:01:38,000
+We're also going to learn a little bit late that uses lesson.
+
+17
+00:01:38,000 --> 00:01:46,000
+These actually be headers from a block, which ends was an empty line is the final law is an optional
+
+18
+00:01:46,000 --> 00:01:46,000
+data block.
+
+19
+00:01:47,000 --> 00:01:48,000
+It is called Message Body.
+
+20
+00:01:49,000 --> 00:01:53,000
+This book may contain further data mainly used by subpostmaster.
+
+21
+00:01:54,000 --> 00:01:55,000
+What are HTP methods?
+
+22
+00:01:55,000 --> 00:01:58,000
+We're going to learn in this lesson a little bit later?
+
+23
+00:01:59,000 --> 00:02:01,000
+Let's now review sample of request.
+
+24
+00:02:02,000 --> 00:02:08,000
+Let's Vegetables page of our imaginary online store and does a server as its user agent who prefers
+
+25
+00:02:08,000 --> 00:02:10,000
+a page in French if possible.
+
+26
+00:02:12,000 --> 00:02:13,000
+Yes, they should be.
+
+27
+00:02:13,000 --> 00:02:15,000
+Version one point one.
+
+28
+00:02:16,000 --> 00:02:23,000
+Host Heather is equal to online sort of come and accept language Heather is equal to or that stands
+
+29
+00:02:23,000 --> 00:02:25,000
+for French language.
+
+30
+00:02:26,000 --> 00:02:33,000
+That tensions of this request doesn't have message body, so it ends up with empty line.
+
+31
+00:02:33,000 --> 00:02:34,000
+And that's it.
+
+32
+00:02:35,000 --> 00:02:42,000
+Host and accept the language, others that can be different, Heathers on the separate side in this
+
+33
+00:02:42,000 --> 00:02:49,000
+lesson, we'll review what others are to understand how request was message, but it looks like we can
+
+34
+00:02:49,000 --> 00:02:56,000
+consider the following example for example, sentence the result of a form and what original form is
+
+35
+00:02:56,000 --> 00:02:58,000
+will learn in the separate lesson.
+
+36
+00:02:59,000 --> 00:03:05,000
+On this side, you can see an example of Isaac was done was post massive and message body for logging
+
+37
+00:03:05,000 --> 00:03:11,000
+after post login and password for authentication, we can submit data to the web.
+
+38
+00:03:11,000 --> 00:03:13,000
+Server was a team of forms, for example.
+
+39
+00:03:14,000 --> 00:03:20,000
+This is one of the simplest ways, but review of what this demo forms is out of the scope of this.
+
+40
+00:03:21,000 --> 00:03:27,000
+We will learn and review them in HTML lessons in the first line of action.
+
+41
+00:03:27,000 --> 00:03:30,000
+If your request, you can see that we specify should would be massive.
+
+42
+00:03:31,000 --> 00:03:33,000
+What is it and what should it be?
+
+43
+00:03:33,000 --> 00:03:36,000
+Massive exists and should it be massive?
+
+44
+00:03:36,000 --> 00:03:40,000
+I use to indicate the desert action to be performed.
+
+45
+00:03:40,000 --> 00:03:47,000
+The funds identify the source the version one specification defines and yet have both methods.
+
+46
+00:03:48,000 --> 00:03:56,000
+The issue to be version one point one specification added five new masses zero food delay connect options
+
+47
+00:03:56,000 --> 00:03:59,000
+and choice might be specified in these documents.
+
+48
+00:04:00,000 --> 00:04:04,000
+This semantics are well known and can be dependent on.
+
+49
+00:04:05,000 --> 00:04:11,000
+There is no limit to the number of masses of can be defined, and this allows for future masses to be
+
+50
+00:04:11,000 --> 00:04:15,000
+specified without breaking existing infrastructure methods.
+
+51
+00:04:15,000 --> 00:04:17,000
+Names are case sensitive.
+
+52
+00:04:18,000 --> 00:04:23,000
+This is in contrast to other field names, which are case insensitive.
+
+53
+00:04:24,000 --> 00:04:27,000
+Now let's be clear of using me to debate masses.
+
+54
+00:04:28,000 --> 00:04:29,000
+Yeah, it's massive.
+
+55
+00:04:30,000 --> 00:04:37,000
+We use get massive reads, the resource, gets requests, should only retrieve data and should have
+
+56
+00:04:37,000 --> 00:04:41,000
+no effect yet is an important message.
+
+57
+00:04:42,000 --> 00:04:44,000
+What is the importance?
+
+58
+00:04:45,000 --> 00:04:52,000
+And should it be mass, it is then put down if an identical request can be made once or several times
+
+59
+00:04:52,000 --> 00:04:57,000
+in a row with the same effect, while Lehman's a server in the same state.
+
+60
+00:04:57,000 --> 00:05:04,000
+In other words and impotent mass, it should not have any side effects except of keeping statistics
+
+61
+00:05:05,000 --> 00:05:07,000
+implemented correctly.
+
+62
+00:05:07,000 --> 00:05:13,000
+The gap had good and the mass in them put them, but not as opposed to massive.
+
+63
+00:05:14,000 --> 00:05:21,000
+Important thing to know, God's request doesn't have money, that means in case you want to positive
+
+64
+00:05:21,000 --> 00:05:23,000
+information, log in and password.
+
+65
+00:05:24,000 --> 00:05:28,000
+All parameters will be passed this part of the URL like you see on the screen.
+
+66
+00:05:30,000 --> 00:05:36,000
+You can see that after question mark, we have key value pairs separated by ampersand character.
+
+67
+00:05:36,000 --> 00:05:41,000
+These are called request parameters with HTP get massive.
+
+68
+00:05:42,000 --> 00:05:48,000
+This is the only way you can submit parameters to the seller, which is not very secure in this exact
+
+69
+00:05:48,000 --> 00:05:49,000
+case.
+
+70
+00:05:49,000 --> 00:05:56,000
+But in other cases, like a request and specific page of the search query executed on the side and stored
+
+71
+00:05:56,000 --> 00:06:03,000
+in the search query itself may be very useful for retrieving the resources without making changes,
+
+72
+00:06:03,000 --> 00:06:11,000
+yet is preferred over post as they can be addressed through the euro like you saw in example, which
+
+73
+00:06:11,000 --> 00:06:18,000
+enables bookmarking and sharing and makes the responses eligible for cash and thus can save bandwidth.
+
+74
+00:06:19,000 --> 00:06:24,000
+Both by design is, of course, request mass at the request of the web server.
+
+75
+00:06:24,000 --> 00:06:31,000
+Accept the data enclosed in the body of the request message most likely for storing it.
+
+76
+00:06:32,000 --> 00:06:37,000
+It is often used when uploading the file or when something completed before.
+
+77
+00:06:38,000 --> 00:06:41,000
+For example, user registration process.
+
+78
+00:06:42,000 --> 00:06:48,000
+One user will fill out a registration form, will send the post request to the seller and will pass
+
+79
+00:06:48,000 --> 00:06:54,000
+all information from the form to the web server to store it is a duty.
+
+80
+00:06:54,000 --> 00:07:01,000
+Some examples of how post requests looks like you can find on this line was massive is not in them,
+
+81
+00:07:01,000 --> 00:07:06,000
+but that means it's the multiple identical request might not have the same effect.
+
+82
+00:07:06,000 --> 00:07:14,000
+Sentence means the request on the once post is therefore suitable for request, which change the state
+
+83
+00:07:14,000 --> 00:07:15,000
+each time Zapper performed.
+
+84
+00:07:16,000 --> 00:07:21,000
+To be honest, getting post as the most popular issues have been massive with you are going to use more
+
+85
+00:07:21,000 --> 00:07:24,000
+often than observations of the masses.
+
+86
+00:07:25,000 --> 00:07:28,000
+But still, let's review other masses of the.
+
+87
+00:07:29,000 --> 00:07:38,000
+Oh, it's massive, massive to request that targets resource grades or updates, its state was the state
+
+88
+00:07:38,000 --> 00:07:43,000
+defined by the representation enclosed in the request in message body.
+
+89
+00:07:44,000 --> 00:07:46,000
+But how then this method is different from past.
+
+90
+00:07:47,000 --> 00:07:55,000
+The post mass is used to update or replace an existing resource and the server, while the most massive
+
+91
+00:07:55,000 --> 00:07:58,000
+is used to at a resource in the server.
+
+92
+00:07:58,000 --> 00:08:05,000
+When you make an output request and the requests you arrive points to an existing resource, the server
+
+93
+00:08:06,000 --> 00:08:11,000
+must completely replace that resource with the data on in and body of the request.
+
+94
+00:08:12,000 --> 00:08:18,000
+Even the request UI doesn't want an additional resource the region server may add.
+
+95
+00:08:18,000 --> 00:08:20,000
+The new resource was that you arrive.
+
+96
+00:08:21,000 --> 00:08:29,000
+On the contrary, if you send us to request new resources created just once the second time, you can
+
+97
+00:08:29,000 --> 00:08:30,000
+create the same resource.
+
+98
+00:08:31,000 --> 00:08:31,000
+Is it clear?
+
+99
+00:08:32,000 --> 00:08:39,000
+DeLay the message requests the target resource deletes its state every single year.
+
+100
+00:08:40,000 --> 00:08:48,000
+That's going to have massive and simple rules we use had massive three just headers of the resource
+
+101
+00:08:49,000 --> 00:08:50,000
+you Nazareth's.
+
+102
+00:08:50,000 --> 00:08:51,000
+It is similar to the gets massive.
+
+103
+00:08:52,000 --> 00:08:59,000
+But we just get the response without a response by the NCB had massive requests.
+
+104
+00:08:59,000 --> 00:09:01,000
+They had those that would be returned.
+
+105
+00:09:01,000 --> 00:09:03,000
+It was a hard request.
+
+106
+00:09:03,000 --> 00:09:05,000
+Your role was instead requested.
+
+107
+00:09:05,000 --> 00:09:07,000
+Was the issue to be get massive.
+
+108
+00:09:08,000 --> 00:09:15,000
+For example, if you euro might produce a larger than life ahead, the request could meet its content.
+
+109
+00:09:15,000 --> 00:09:20,000
+Lance had to check the file size without actually downloading the file.
+
+110
+00:09:21,000 --> 00:09:29,000
+And that the next massive starts, two way communication with the requested resource, it can be used
+
+111
+00:09:29,000 --> 00:09:36,000
+to open the tunnel, for example, to connect the massive can be used to access map sites that use SSL
+
+112
+00:09:36,000 --> 00:09:38,000
+in the best protocol.
+
+113
+00:09:39,000 --> 00:09:45,000
+The client asks, and HCB closes the tunnels, the DCP connection to the desert nation.
+
+114
+00:09:46,000 --> 00:09:51,000
+The service then proceeds to make the connection on behalf of the clan.
+
+115
+00:09:51,000 --> 00:09:58,000
+Once the connection has been established by the Seva, Xerox's continues the proxies of DCP stream to
+
+116
+00:09:59,000 --> 00:10:01,000
+and from Zyklon options.
+
+117
+00:10:02,000 --> 00:10:07,000
+We need this kind of request to understand which masses are allowed to interact with the resource.
+
+118
+00:10:08,000 --> 00:10:14,000
+When we send options request we receive response was had their named allow.
+
+119
+00:10:14,000 --> 00:10:20,000
+It contains a list of massive that I can use to interact with this resource.
+
+120
+00:10:20,000 --> 00:10:27,000
+In other words, the HTP options massive the request for immediate communication options for a unilateral
+
+121
+00:10:27,000 --> 00:10:28,000
+posture.
+
+122
+00:10:29,000 --> 00:10:35,000
+In the response example on the slide, we can see that I can send a request to the resource was yet
+
+123
+00:10:35,000 --> 00:10:37,000
+have both massive.
+
+124
+00:10:38,000 --> 00:10:43,000
+Is it clear knowing this information, I can program my logic to execute.
+
+125
+00:10:43,000 --> 00:10:48,000
+The following massive direct was Resource Trace.
+
+126
+00:10:49,000 --> 00:10:56,000
+Trace is a HCB request massive use for the bargain, which echoes back input back to the user.
+
+127
+00:10:57,000 --> 00:11:03,000
+This behaviour is often harmless, but occasionally leads to the disclosure of sensitive information,
+
+128
+00:11:04,000 --> 00:11:09,000
+such as internal litigation tenders upended by reverse proxies.
+
+129
+00:11:10,000 --> 00:11:16,000
+Much support from us at the request of the target of a source modifies its state, according to the
+
+130
+00:11:16,000 --> 00:11:18,000
+partial update.
+
+131
+00:11:18,000 --> 00:11:21,000
+New a representation enclosed in the request.
+
+132
+00:11:22,000 --> 00:11:30,000
+This can save bandwidth by updating a part of the file or document without having to transfer it entirely,
+
+133
+00:11:31,000 --> 00:11:38,000
+which is somewhat analogous to the object concept found in crop create read update relief operations.
+
+134
+00:11:39,000 --> 00:11:47,000
+A budget request is considered a set of instructions on how to modify a resource on the contrast put
+
+135
+00:11:47,000 --> 00:11:48,000
+massive request.
+
+136
+00:11:48,000 --> 00:11:51,000
+The item needs a complete representation of their source.
+
+137
+00:11:52,000 --> 00:11:56,000
+Eye patch is not necessarily in them, but then also it can be.
+
+138
+00:11:57,000 --> 00:12:00,000
+Contrast this with support, which is always important.
+
+139
+00:12:01,000 --> 00:12:06,000
+The word no means of any number of repeated identical requests.
+
+140
+00:12:07,000 --> 00:12:09,000
+Louisa's source in the same state.
+
+141
+00:12:10,000 --> 00:12:17,000
+For example, if an alternate incrementing can't a field is an integral part of the resource, then
+
+142
+00:12:17,000 --> 00:12:25,000
+the port will naturally override it since it overrides traversal, but not necessarily so for patch,
+
+143
+00:12:25,000 --> 00:12:29,000
+much like Post may have side effects on other resources.
+
+144
+00:12:30,000 --> 00:12:38,000
+When you've learned HTP masses, I also promised to explain what's requests Hadassah, let's understand
+
+145
+00:12:38,000 --> 00:12:45,000
+what Hadassah most request and response map so-called tenders should you be.
+
+146
+00:12:45,000 --> 00:12:53,000
+Hadar feels at least of a strings sent and received by both the grant program and server on every HTP
+
+147
+00:12:53,000 --> 00:12:55,000
+request and response.
+
+148
+00:12:55,000 --> 00:13:02,000
+These headers are usually invisible to the end user and are only processed by the server and client
+
+149
+00:13:02,000 --> 00:13:03,000
+applications.
+
+150
+00:13:04,000 --> 00:13:11,000
+They define a lot of different, since some of them are how information sent received through the connection
+
+151
+00:13:11,000 --> 00:13:18,000
+are encoded as in content and code, and had the session verification and identification of the client.
+
+152
+00:13:19,000 --> 00:13:22,000
+For example, was a cool kids and session mechanism.
+
+153
+00:13:22,000 --> 00:13:27,000
+Like we discussed, one would take different cookies, so my request was existing session.
+
+154
+00:13:27,000 --> 00:13:35,000
+Also, we can identify client by user agent how the House should handle data as an do not track.
+
+155
+00:13:35,000 --> 00:13:43,000
+Za h is a time it has resided in a shared cache of the document being downloaded, amongst others and
+
+156
+00:13:43,000 --> 00:13:44,000
+many other things.
+
+157
+00:13:44,000 --> 00:13:50,000
+Problem is, there is no sense to me going over each other explaining What does it mean because there
+
+158
+00:13:50,000 --> 00:13:51,000
+is a huge amount of them?
+
+159
+00:13:52,000 --> 00:13:55,000
+In other words, so where they are located in the request structure?
+
+160
+00:13:56,000 --> 00:14:03,000
+What I would also command and instead is the presence, of course, and to read and loop through the
+
+161
+00:14:03,000 --> 00:14:06,000
+following slides on the slides, I guess.
+
+162
+00:14:06,000 --> 00:14:12,000
+Ah, the most of the requests headers with the description why we need them and examples.
+
+163
+00:14:12,000 --> 00:14:18,000
+I believes this should help them not just spend a few minutes reading these slides attentively.
+
+164
+00:14:18,000 --> 00:14:25,000
+In case you would have any questions while reading, please let me know and when you finish read slides
+
+165
+00:14:25,000 --> 00:14:26,000
+and you will understand them.
+
+166
+00:14:26,000 --> 00:14:30,000
+I suggest the resumes of you and proceed with the next class.
+
+167
+00:14:31,000 --> 00:14:38,000
+Now, let's review H-2B response after client established connection and served its request.
+
+168
+00:14:39,000 --> 00:14:44,000
+Server processes it and returns a response similar to a client's request.
+
+169
+00:14:44,000 --> 00:14:49,000
+A similar response is form of text directives separated by Angelyne.
+
+170
+00:14:50,000 --> 00:14:54,000
+Responses divided into three blocks is the first line.
+
+171
+00:14:54,000 --> 00:15:02,000
+The status line consists of an acknowledgement of an HDP version used followed by a response status
+
+172
+00:15:02,000 --> 00:15:06,000
+code and is brief meaning in human readable text.
+
+173
+00:15:06,000 --> 00:15:10,000
+We're going to learn HDP status codes later in this lesson.
+
+174
+00:15:11,000 --> 00:15:17,000
+Subsequent lines represent specific issues to be headers, even as the client information about the
+
+175
+00:15:17,000 --> 00:15:17,000
+data sent.
+
+176
+00:15:18,000 --> 00:15:25,000
+For example, data source compression algorithm use hints about caching similar to the block of issue
+
+177
+00:15:25,000 --> 00:15:27,000
+to be had is for a client request.
+
+178
+00:15:27,000 --> 00:15:34,000
+These HTP headers form a block and then with an empty line in the minute, we're going to the beat response
+
+179
+00:15:34,000 --> 00:15:35,000
+headers.
+
+180
+00:15:36,000 --> 00:15:39,000
+The final block is a data block, which contains the optional data.
+
+181
+00:15:40,000 --> 00:15:45,000
+Often, it contains a markup of the web page that the described was a demo.
+
+182
+00:15:46,000 --> 00:15:50,000
+What HTML is, we're going to learn in the separate lesson button.
+
+183
+00:15:50,000 --> 00:15:50,000
+Sure.
+
+184
+00:15:51,000 --> 00:15:57,000
+This is four months of the markup the browsers can understand and present the user as the content on
+
+185
+00:15:57,000 --> 00:15:58,000
+the web page.
+
+186
+00:15:59,000 --> 00:16:06,000
+Example of the HCB response you can see on this slide on these slides, I recommend you to in response
+
+187
+00:16:06,000 --> 00:16:07,000
+headers.
+
+188
+00:16:07,000 --> 00:16:13,000
+This doesn't mean that you have to run all them by heart, but at least to be aware about them.
+
+189
+00:16:13,000 --> 00:16:20,000
+I recommend you to do the same thing we did when we reviewed the request headers resource and look at
+
+190
+00:16:20,000 --> 00:16:21,000
+the slides.
+
+191
+00:16:22,000 --> 00:16:28,000
+Once you feel like seeing something here for you, resumes the video and let's proceed with the next
+
+192
+00:16:28,000 --> 00:16:28,000
+slide.
+
+193
+00:16:34,000 --> 00:16:38,000
+I'd like to explain what the status cuts are.
+
+194
+00:16:38,000 --> 00:16:42,000
+You already know that we receive status scores in server response.
+
+195
+00:16:43,000 --> 00:16:50,000
+HTP response status scores indicates the status of a specific issue that your request request may be
+
+196
+00:16:50,000 --> 00:16:54,000
+successfully completed, but also might end up with error.
+
+197
+00:16:55,000 --> 00:17:00,000
+In this case, we also need to modify client is an expected response can be provided.
+
+198
+00:17:01,000 --> 00:17:07,000
+There are five categories of status code that describes the details of different state also requests
+
+199
+00:17:08,000 --> 00:17:14,000
+Ziya informational status codes from 100 to one hundred ninety nine.
+
+200
+00:17:14,000 --> 00:17:18,000
+This gloss, of course, states that request was received.
+
+201
+00:17:18,000 --> 00:17:25,000
+Continuing process successful status scores from 200 to 299.
+
+202
+00:17:26,000 --> 00:17:32,000
+The status quo from these groups states that the request was successfully received, understood and
+
+203
+00:17:32,000 --> 00:17:38,000
+accepted redirection status scores from three hundred to three hundred ninety nine.
+
+204
+00:17:38,000 --> 00:17:43,000
+These courts mean further action needs to be taken in order to complete the request.
+
+205
+00:17:44,000 --> 00:17:49,000
+Client error status quotes from 400 to 499.
+
+206
+00:17:49,000 --> 00:17:56,000
+We can see these status scores in case request contains better syntax or can't be fulfilled.
+
+207
+00:17:56,000 --> 00:18:05,000
+Server error status scores is a fifth plus from five hundred to five hundred ninety nine means the seventh
+
+208
+00:18:05,000 --> 00:18:09,000
+failed to fulfill and apparently there was request.
+
+209
+00:18:10,000 --> 00:18:15,000
+These status codes are defined by section 10 of LFC 20 seats, 16.
+
+210
+00:18:16,000 --> 00:18:23,000
+You can find an updated specification in RF C 72 sit one of the main things that you have to remember
+
+211
+00:18:23,000 --> 00:18:26,000
+for sure is a colossus that I've just described.
+
+212
+00:18:26,000 --> 00:18:33,000
+You will be able to learn concrete response codes that you see most often read as you get more experience.
+
+213
+00:18:34,000 --> 00:18:37,000
+There is no need to learn all codes at this moment.
+
+214
+00:18:37,000 --> 00:18:44,000
+I will share with you all known H-2B status scores with their descriptions on this slide, you can find
+
+215
+00:18:44,000 --> 00:18:45,000
+info codes.
+
+216
+00:18:45,000 --> 00:18:50,000
+You can press a pause for a minute to read the descriptions on this slide.
+
+217
+00:18:50,000 --> 00:18:54,000
+You can find successful status scores or direction status codes.
+
+218
+00:18:55,000 --> 00:18:57,000
+Client error state escorts.
+
+219
+00:19:02,000 --> 00:19:09,000
+And server error status scores, police review slides and in case there will be some questions, even
+
+220
+00:19:09,000 --> 00:19:16,000
+considering a detailed description provided for each set quote, please let me know your question below
+
+221
+00:19:16,000 --> 00:19:18,000
+and I will be happy to answer.
+
+222
+00:19:18,000 --> 00:19:22,000
+That's all what I wanted to know is you in this lesson?
+
+223
+00:19:22,000 --> 00:19:25,000
+Let's recap what we have learned today.
+
+224
+00:19:26,000 --> 00:19:32,000
+We have learned a lot of things in this lesson after this lesson, you know, specifics of different
+
+225
+00:19:32,000 --> 00:19:33,000
+versions of the HP Protocol.
+
+226
+00:19:34,000 --> 00:19:38,000
+You understand the difference between stateful and stateless protocols.
+
+227
+00:19:38,000 --> 00:19:43,000
+Also review and learn what session and cookies are and how they work.
+
+228
+00:19:44,000 --> 00:19:49,000
+I believe that after this lesson, you have a clear understanding of how HDTV works.
+
+229
+00:19:50,000 --> 00:19:57,000
+Since we have used its mechanics in the details, now you know what sockets are we learn the structure
+
+230
+00:19:57,000 --> 00:20:05,000
+for request and response was examples separate focus on the learning of the request and response headers.
+
+231
+00:20:05,000 --> 00:20:09,000
+Now, you know, different issues would be massive new youth.
+
+232
+00:20:09,000 --> 00:20:19,000
+Such issues would be massive as yet those who really have trace options than that much, and as anthems
+
+233
+00:20:19,000 --> 00:20:22,000
+are lessons, we learn what actually be status quo.
+
+234
+00:20:22,000 --> 00:20:29,000
+Are we learning really a lot of useful and important things to me now, you know, ACB protocol on the
+
+235
+00:20:29,000 --> 00:20:30,000
+professional level?
+
+236
+00:20:30,000 --> 00:20:32,000
+And I want to congratulate you with this.
+
+237
+00:20:33,000 --> 00:20:34,000
+Thanks a lot you for your attention.
+
+238
+00:20:35,000 --> 00:20:36,000
+Have a great day.
+
+239
+00:20:36,000 --> 00:20:37,000
+See you in the next lesson.
+
diff --git a/56 - Web/006 Apache Tomcat Overview, Installation and First Run_en.srt b/56 - Web/006 Apache Tomcat Overview, Installation and First Run_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..6e7e99ef58960b9f8573d7e362789b617f17c0dd
--- /dev/null
+++ b/56 - Web/006 Apache Tomcat Overview, Installation and First Run_en.srt
@@ -0,0 +1,1148 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:09,000
+In this lesson, we're going to learn Tomcat Web server.
+
+3
+00:00:10,000 --> 00:00:18,000
+Sometimes it is also called not just a server, but the servers container to make sure you understand
+
+4
+00:00:18,000 --> 00:00:21,000
+the difference about web server and service containers.
+
+5
+00:00:21,000 --> 00:00:25,000
+Please watch previous lesson about web servers.
+
+6
+00:00:26,000 --> 00:00:30,000
+We're going to start from brief overview of what Tomcat is.
+
+7
+00:00:30,000 --> 00:00:34,000
+I'll show you where you can find official documentation.
+
+8
+00:00:35,000 --> 00:00:37,000
+Just in case you want to learn more details.
+
+9
+00:00:38,000 --> 00:00:42,000
+But during the lesson, I will cover main saints and even more.
+
+10
+00:00:42,000 --> 00:00:49,000
+In order you could start using Tomcat like a pro also discussed Tomcat alternatives.
+
+11
+00:00:49,000 --> 00:00:53,000
+Once we're done with this, I will explain Tomcat main components.
+
+12
+00:00:54,000 --> 00:00:59,000
+You're going to understand what Coyote, Catalina and Jasper are.
+
+13
+00:00:59,000 --> 00:01:06,000
+In this lesson, I'm going to hold an overview of different Tomcat versions and explain the difference
+
+14
+00:01:06,000 --> 00:01:06,000
+between them.
+
+15
+00:01:07,000 --> 00:01:13,000
+After all, this will jump to the practical part during a live demo together with you.
+
+16
+00:01:13,000 --> 00:01:17,000
+We will download and install Tomcat on the local computer.
+
+17
+00:01:18,000 --> 00:01:24,000
+I'm going to walk you through the thumb construction so they will make the first rule of thumb cassava
+
+18
+00:01:24,000 --> 00:01:25,000
+on your computer.
+
+19
+00:01:26,000 --> 00:01:30,000
+And the of the lesson, I'm going to show you how to configure Tomcat in Eclipse.
+
+20
+00:01:31,000 --> 00:01:33,000
+Let's start our lesson.
+
+21
+00:01:33,000 --> 00:01:38,000
+Let's start our lesson from the Tomcat overview in simple words.
+
+22
+00:01:39,000 --> 00:01:47,000
+Tom Cat is a web server, but it is even more than that because it isn't just helps clients to access
+
+23
+00:01:47,000 --> 00:01:52,000
+static resources, but also it helps to support Cigarette's lifecycle.
+
+24
+00:01:52,000 --> 00:01:54,000
+What so let's are?
+
+25
+00:01:54,000 --> 00:01:56,000
+We're going to have a separate lesson both.
+
+26
+00:01:56,000 --> 00:02:00,000
+So that's where I will explain in details and examples.
+
+27
+00:02:00,000 --> 00:02:03,000
+What's the what's hot button short?
+
+28
+00:02:03,000 --> 00:02:07,000
+So that is an interface that defines a contract to process.
+
+29
+00:02:07,000 --> 00:02:15,000
+Requests on the server side was implementation of similar interface and namely by extension of Asia
+
+30
+00:02:15,000 --> 00:02:16,000
+to be server.
+
+31
+00:02:16,000 --> 00:02:23,000
+That plus we can write zip code is it will tell how to handle, get and post requests, for example.
+
+32
+00:02:23,000 --> 00:02:30,000
+I hope that you watched less about HTP, where I explained different HDP masses.
+
+33
+00:02:31,000 --> 00:02:38,000
+So in simple words, we describe server side logic was Java code in server less.
+
+34
+00:02:39,000 --> 00:02:45,000
+Some cats implement because of the Germans or prostitution specification, just realizing the right
+
+35
+00:02:45,000 --> 00:02:54,000
+way, but at the same time, very powerful even enterprise solutions use TomKat as this map sever some
+
+36
+00:02:54,000 --> 00:03:02,000
+enterprise solutions grids that oil web service on the basis of the Tomcat because Tomcat is an open
+
+37
+00:03:02,000 --> 00:03:03,000
+source maps.
+
+38
+00:03:04,000 --> 00:03:13,000
+Also, some cats can process GSP files, use IP stands for Java server pages, and it is part of Java
+
+39
+00:03:13,000 --> 00:03:16,000
+Enterprise Edition specification together with servers.
+
+40
+00:03:17,000 --> 00:03:25,000
+We're going to run GCP as a separate license, but you already know that Tomcat supports work with GCP
+
+41
+00:03:25,000 --> 00:03:25,000
+to.
+
+42
+00:03:26,000 --> 00:03:33,000
+Tom Cat will be in charge of creation, server side sockets and police and disaster waiting clients
+
+43
+00:03:33,000 --> 00:03:34,000
+to connect to them.
+
+44
+00:03:35,000 --> 00:03:41,000
+Multiple applications may be deployed on Tomcat and Tom Cat will Roods requests.
+
+45
+00:03:42,000 --> 00:03:46,000
+There's a specific application and dependent on the resource clients requested.
+
+46
+00:03:47,000 --> 00:03:54,000
+Tomcat will redirect requests exactly that one resource needed and dependent on the issue to be massive.
+
+47
+00:03:54,000 --> 00:03:56,000
+I want to use to access that resource.
+
+48
+00:03:57,000 --> 00:04:00,000
+Relevant code deployed on the web server will be executed.
+
+49
+00:04:01,000 --> 00:04:07,000
+You know, the lesson I will share with you, practical tips and trees, but I always recommend you
+
+50
+00:04:07,000 --> 00:04:09,000
+to use official documentation.
+
+51
+00:04:10,000 --> 00:04:15,000
+You can find a link to the official documentation on the slide in attachments to the lesson.
+
+52
+00:04:16,000 --> 00:04:18,000
+There are different versions of Tomcat.
+
+53
+00:04:19,000 --> 00:04:23,000
+You can always find the details in the relevant section of the documentation.
+
+54
+00:04:24,000 --> 00:04:29,000
+On this slide, you can see the screenshot of the home page of the official Tomcats website.
+
+55
+00:04:29,000 --> 00:04:33,000
+There is a separate section with documentation on the site.
+
+56
+00:04:33,000 --> 00:04:38,000
+You can find all necessary documentation for some version of the Tomcat.
+
+57
+00:04:38,000 --> 00:04:44,000
+For example, you can click on the Tomcat version and the documentation section.
+
+58
+00:04:44,000 --> 00:04:51,000
+You will be able to find documents that will assist you in downloading and install an Apache Tomcat.
+
+59
+00:04:52,000 --> 00:04:58,000
+I am going to cover the main sinks in this video, but just in case you want to learn more, you can
+
+60
+00:04:58,000 --> 00:05:00,000
+refer to these documents.
+
+61
+00:05:01,000 --> 00:05:08,000
+Also in the reference section, you can find important specifications and Java doc specifications.
+
+62
+00:05:08,000 --> 00:05:14,000
+Flosser let you speak expression, language, web socket and authentication.
+
+63
+00:05:14,000 --> 00:05:19,000
+This also works to say that the Tomcat is relatively stable.
+
+64
+00:05:19,000 --> 00:05:26,000
+It doesn't means its releasing of new Tomcat version completely changed the way of its configuration
+
+65
+00:05:26,000 --> 00:05:27,000
+or interaction with it.
+
+66
+00:05:28,000 --> 00:05:35,000
+In most cases, improvements are related with internal structure, quality attributes of the Tomcat
+
+67
+00:05:35,000 --> 00:05:38,000
+application and to support new specification.
+
+68
+00:05:39,000 --> 00:05:47,000
+Also, I believe it is worth to mention me, Tomcat competitors very quickly, if for some reasons you
+
+69
+00:05:47,000 --> 00:05:51,000
+don't want to use Tomcat and you look for alternatives.
+
+70
+00:05:51,000 --> 00:05:53,000
+I can recommend you buy grapes jetty.
+
+71
+00:05:54,000 --> 00:05:57,000
+It is also lightweight satellite container.
+
+72
+00:05:58,000 --> 00:06:05,000
+I mean, Jetty and Tomcat support a subset of Germans or price addition, specifications, nameless
+
+73
+00:06:05,000 --> 00:06:06,000
+servers and.
+
+74
+00:06:08,000 --> 00:06:12,000
+You can use any fool, Germans or prosecution server as an alternative.
+
+75
+00:06:12,000 --> 00:06:20,000
+As a full implementation of Germany's specification means that server will support not only surveillance
+
+76
+00:06:20,000 --> 00:06:25,000
+and GSP, but also will support enterprise Java beans and all things.
+
+77
+00:06:26,000 --> 00:06:35,000
+To be honest, while IGB is very powerful, technology was no doubt probably it is not so popular nowadays.
+
+78
+00:06:35,000 --> 00:06:42,000
+Most likely you are going to use open source substitution to achieve the same goals as we need to be.
+
+79
+00:06:43,000 --> 00:06:50,000
+I'm talking about screen framework and by the way, my default screen mode uses Tomcat server.
+
+80
+00:06:51,000 --> 00:06:57,000
+So if you are looking for web services, it's a completely compliant was Java EE specification.
+
+81
+00:06:58,000 --> 00:07:01,000
+I recommend you to look at such service as well.
+
+82
+00:07:01,000 --> 00:07:11,000
+Why WebSphere Web Logic Lost Fish, detailed overview and comparison of this service I hold in the previous
+
+83
+00:07:11,000 --> 00:07:12,000
+lesson about web service.
+
+84
+00:07:13,000 --> 00:07:18,000
+So please, if you are interested in this topic, you can check previous lesson.
+
+85
+00:07:18,000 --> 00:07:20,000
+In the meantime, let's proceed.
+
+86
+00:07:21,000 --> 00:07:28,000
+I'd like to explain TomKat main components is important to understand because sometimes they're going
+
+87
+00:07:28,000 --> 00:07:30,000
+to explore the logs of the web server.
+
+88
+00:07:30,000 --> 00:07:37,000
+Sometimes you're going to see the name of the components and the documentation or on the file systems,
+
+89
+00:07:37,000 --> 00:07:38,000
+you know, the configuration of Tomcat.
+
+90
+00:07:39,000 --> 00:07:45,000
+That's why I believe it is important to you to understand the key components of Tomcat setup.
+
+91
+00:07:46,000 --> 00:07:48,000
+The first component is called Coyote.
+
+92
+00:07:49,000 --> 00:07:53,000
+Coyote is a web connector that implements spatial protocol.
+
+93
+00:07:53,000 --> 00:07:54,000
+Exactly.
+
+94
+00:07:54,000 --> 00:08:01,000
+Coyote helps to establish connection with the client and make sure that the data is transferred over
+
+95
+00:08:01,000 --> 00:08:02,000
+a protocol.
+
+96
+00:08:03,000 --> 00:08:09,000
+A particular instance of this component license for connections on a specific to support number on the
+
+97
+00:08:09,000 --> 00:08:18,000
+server coyote license for incoming connections to the server on a specific support and is a request
+
+98
+00:08:18,000 --> 00:08:24,000
+to the Tomcat engine to process the request and send back a response to the request and plan.
+
+99
+00:08:25,000 --> 00:08:32,000
+And now the important component is a verb container, Catalina, that implements servlet API specification,
+
+100
+00:08:33,000 --> 00:08:41,000
+so that API is a means for all other general web technologies and allows us to create dynamic web content.
+
+101
+00:08:42,000 --> 00:08:50,000
+Catalina is a tomcat, so as Container Catalina implements Sun Microsystems specifications for server
+
+102
+00:08:50,000 --> 00:08:51,000
+and Java server pages.
+
+103
+00:08:53,000 --> 00:08:55,000
+Another important component is Jasper.
+
+104
+00:08:56,000 --> 00:08:57,000
+What is it?
+
+105
+00:08:57,000 --> 00:09:06,000
+Jasper is Tomcats GSP engine just put passes, use profiles to compile them into a associates, which
+
+106
+00:09:06,000 --> 00:09:09,000
+in turn can be handled by Catalina.
+
+107
+00:09:09,000 --> 00:09:15,000
+Its runtime, Jasper detects changes to GSP files and the recompile zone.
+
+108
+00:09:15,000 --> 00:09:22,000
+In the lesson about GCP, I'm going to show you how to use B file is compiled into regular cigarette.
+
+109
+00:09:22,000 --> 00:09:25,000
+This is out of scope of this lesson.
+
+110
+00:09:25,000 --> 00:09:34,000
+As of version five, Tomcat uses just two, which is an implementation of the Sun Microsystems GCP 2.0
+
+111
+00:09:34,000 --> 00:09:37,000
+specification from Jesper the Jesper.
+
+112
+00:09:37,000 --> 00:09:45,000
+Two important features were added like background, GCP compilation and a compilation of GCP during
+
+113
+00:09:45,000 --> 00:09:46,000
+the runtime.
+
+114
+00:09:46,000 --> 00:09:52,000
+The new components were added with the release of Tomcat seven Zaire cluster.
+
+115
+00:09:53,000 --> 00:09:57,000
+This component has been added to manage large applications.
+
+116
+00:09:57,000 --> 00:10:02,000
+It is used for load balancing that can be achieved through many techniques.
+
+117
+00:10:03,000 --> 00:10:09,000
+High availability and high availability feature has been added to facilitate this scanlen of system
+
+118
+00:10:09,000 --> 00:10:10,000
+upgrades.
+
+119
+00:10:11,000 --> 00:10:16,000
+For instance, new releases change requests without affecting the life environment.
+
+120
+00:10:17,000 --> 00:10:24,000
+This is done by dispatching live traffic requests the tampers server on a different port, while the
+
+121
+00:10:24,000 --> 00:10:27,000
+main server is upgraded from the main four.
+
+122
+00:10:27,000 --> 00:10:32,000
+It is very useful in handling user requests on high traffic map applications.
+
+123
+00:10:33,000 --> 00:10:35,000
+That application.
+
+124
+00:10:35,000 --> 00:10:42,000
+It has also added the user as well as system based web applications enhancement to add supports for
+
+125
+00:10:42,000 --> 00:10:45,000
+deployment across a variety of environments.
+
+126
+00:10:45,000 --> 00:10:50,000
+It also tries to manage sessions as well as applications across the network.
+
+127
+00:10:51,000 --> 00:10:53,000
+Comcast has different versions.
+
+128
+00:10:53,000 --> 00:10:56,000
+Some old versions still supported.
+
+129
+00:10:56,000 --> 00:11:00,000
+But what does a difference between them and what version you choose?
+
+130
+00:11:01,000 --> 00:11:08,000
+Definitely, for the sake of this course, we are going to use the latest version of Tomcat, but everything.
+
+131
+00:11:08,000 --> 00:11:14,000
+What I will show you in this course is also applicable while working with other versions of Tomcat.
+
+132
+00:11:15,000 --> 00:11:22,000
+On the slide, you can see short summary of major changes done in different versions, as you can see,
+
+133
+00:11:22,000 --> 00:11:31,000
+Tomcat version 10 is the latest version based on the date that implements latest certifications starting
+
+134
+00:11:31,000 --> 00:11:32,000
+from the Tomcat version.
+
+135
+00:11:32,000 --> 00:11:37,000
+Eight point five Support of it second version of protocol is added.
+
+136
+00:11:38,000 --> 00:11:44,000
+You can press a pause if you want to read the comments for each version, but in the meantime, we're
+
+137
+00:11:44,000 --> 00:11:45,000
+moving forward.
+
+138
+00:11:46,000 --> 00:11:51,000
+And now I want to show you how to install the Tomcat on your computer.
+
+139
+00:11:52,000 --> 00:11:59,000
+I'm going to show you how to identify the latest version available with supportive documents are located
+
+140
+00:11:59,000 --> 00:12:01,000
+and how to work with the official site.
+
+141
+00:12:02,000 --> 00:12:08,000
+The first scenes that they recommended to do is to find Tomcat in any search engine you use on a regular
+
+142
+00:12:08,000 --> 00:12:09,000
+basis.
+
+143
+00:12:10,000 --> 00:12:12,000
+You can type Tomcat the Lord.
+
+144
+00:12:13,000 --> 00:12:19,000
+I recommend you to find the page that leads you to the home page of Tom Cat Apartment Ark, or you can
+
+145
+00:12:19,000 --> 00:12:24,000
+just navigate to this address directly skipping the step of searching it in search engine.
+
+146
+00:12:25,000 --> 00:12:32,000
+Sure, you can find the downloads section, and here you can find documentation section that we already
+
+147
+00:12:32,000 --> 00:12:37,000
+reviewed on the site on the relevant page as a Tomcat version.
+
+148
+00:12:37,000 --> 00:12:41,000
+You can find necessary documentation if you need.
+
+149
+00:12:42,000 --> 00:12:44,000
+Will really discussed different versions.
+
+150
+00:12:44,000 --> 00:12:52,000
+And I would recommend to find the latest version available here because it is also possible that Cat
+
+151
+00:12:52,000 --> 00:12:54,000
+will release version 11.
+
+152
+00:12:54,000 --> 00:13:00,000
+But on the other hand, the latest version, a step known for the process of installation, will be
+
+153
+00:13:00,000 --> 00:13:00,000
+the same.
+
+154
+00:13:01,000 --> 00:13:07,000
+I click on the version, then in the downloads section and navigate to the downloads page.
+
+155
+00:13:07,000 --> 00:13:13,000
+I don't recommend you to download installers while you almost account.
+
+156
+00:13:13,000 --> 00:13:21,000
+I recommend you download this zip archive, and once the law is finished, you can find archive on the
+
+157
+00:13:21,000 --> 00:13:26,000
+file system and extract all the files from your car.
+
+158
+00:13:27,000 --> 00:13:33,000
+For this, I'm going to use seven zip archives as was installed on my computer already.
+
+159
+00:13:34,000 --> 00:13:38,000
+Amazing was successfully extracted, it's all necessary files.
+
+160
+00:13:39,000 --> 00:13:44,000
+Let me open folders that were extracted and here's our Tomcat.
+
+161
+00:13:45,000 --> 00:13:47,000
+Let's learn what these files are.
+
+162
+00:13:48,000 --> 00:13:51,000
+On the screen, you can see the structure of the Tomcat archive.
+
+163
+00:13:52,000 --> 00:13:59,000
+Let me go over each folder one by one and hold the view of each folder and main files that are located
+
+164
+00:13:59,000 --> 00:14:00,000
+there.
+
+165
+00:14:01,000 --> 00:14:09,000
+He's the first director in the lease, is being sold in this folder, contains executable files, scripts
+
+166
+00:14:09,000 --> 00:14:12,000
+for Windows and Linux based systems.
+
+167
+00:14:13,000 --> 00:14:20,000
+That's grieves for windows, shells, creeps, full innards based systems, including my class in this
+
+168
+00:14:20,000 --> 00:14:25,000
+folder, we can find a script for Start Tomcat and for shutting it down.
+
+169
+00:14:25,000 --> 00:14:32,000
+Zarco startup and shutdown, respectively to then use them all.
+
+170
+00:14:32,000 --> 00:14:34,000
+I'm going to show you how the rubber.
+
+171
+00:14:35,000 --> 00:14:41,000
+The next directory is called Folder in this folder, restore all configuration files.
+
+172
+00:14:41,000 --> 00:14:47,000
+Seven example is my configuration file, where you can configure Port of Tomcat server.
+
+173
+00:14:48,000 --> 00:14:51,000
+Ready for some good server reasons the port.
+
+174
+00:14:53,000 --> 00:14:55,000
+But you can change this if you wish.
+
+175
+00:14:55,000 --> 00:15:00,000
+And this can be configured in Server X amount in Tomcat User six.
+
+176
+00:15:00,000 --> 00:15:05,000
+Similarly, you can configure a name and roles associated with a specific user.
+
+177
+00:15:05,000 --> 00:15:11,000
+For example, you can configure name and passwords of user who can access admin panels through the web
+
+178
+00:15:11,000 --> 00:15:17,000
+interface, where we can manage our deployed applications and deploy new applications.
+
+179
+00:15:18,000 --> 00:15:22,000
+WebEx email is a deployment descriptor of Tomcat application.
+
+180
+00:15:22,000 --> 00:15:26,000
+Some configurations also may be stored on this setup.
+
+181
+00:15:26,000 --> 00:15:33,000
+For example, you can declare some security constraints for accessing the Tomcat in the web XML file.
+
+182
+00:15:34,000 --> 00:15:40,000
+X Amount as a file where you can declare resources shared with all applications.
+
+183
+00:15:40,000 --> 00:15:46,000
+For example, you can configure connection pools that will be used for all applications deployed on
+
+184
+00:15:46,000 --> 00:15:47,000
+the web server.
+
+185
+00:15:48,000 --> 00:15:54,000
+We are going to have separate lessons where I will explain you how to configure connection to the database.
+
+186
+00:15:55,000 --> 00:15:58,000
+The next director is in the east is the folder.
+
+187
+00:15:59,000 --> 00:16:06,000
+In this folder, we're going to have all libraries, for example, server, that's API, GSB, API,
+
+188
+00:16:07,000 --> 00:16:14,000
+expression, language API, Tomcat, Coyote, Catalina, Jasper and others.
+
+189
+00:16:15,000 --> 00:16:21,000
+If you want all applications without access to some library, this is a good place to put it.
+
+190
+00:16:22,000 --> 00:16:24,000
+But this is not a very common practice.
+
+191
+00:16:24,000 --> 00:16:31,000
+Usually, we want to keep dependencies connected to the specific application and to not have shared
+
+192
+00:16:31,000 --> 00:16:31,000
+dependencies.
+
+193
+00:16:32,000 --> 00:16:37,000
+That's why I don't see things that you will use this folder very often.
+
+194
+00:16:37,000 --> 00:16:44,000
+But just in case you need to check whether some libraries present or to update the version of the libraries
+
+195
+00:16:44,000 --> 00:16:51,000
+of this present system can by default, or in case you have some conflicts with existing libraries,
+
+196
+00:16:51,000 --> 00:16:55,000
+you know where you can find them in the works folder.
+
+197
+00:16:55,000 --> 00:17:01,000
+You can find logs that describes as a process of Tomcats server execution.
+
+198
+00:17:01,000 --> 00:17:06,000
+That folder is just for temporary files of server and applications.
+
+199
+00:17:07,000 --> 00:17:14,000
+Their Maps folder is the one where our applications will be deployed once we'll create our first web
+
+200
+00:17:14,000 --> 00:17:14,000
+application.
+
+201
+00:17:14,000 --> 00:17:19,000
+I will show you different ways of how you can deploy your application on the web setup.
+
+202
+00:17:20,000 --> 00:17:22,000
+There already is some applications here.
+
+203
+00:17:23,000 --> 00:17:29,000
+The Root folder is a folder that will contain application available by zero zero.
+
+204
+00:17:30,000 --> 00:17:34,000
+Work full is to support the work of the Web server.
+
+205
+00:17:35,000 --> 00:17:43,000
+Compiled GSP files that will be compiled on the fly will be here, serialized user sessions also will
+
+206
+00:17:43,000 --> 00:17:49,000
+be stored here in orders at Server Restart wouldn't logout users from the system, et cetera.
+
+207
+00:17:50,000 --> 00:17:58,000
+Basically, everything what seven needs do as a runtime content of this folder theoretically may be
+
+208
+00:17:58,000 --> 00:17:58,000
+deleted.
+
+209
+00:18:00,000 --> 00:18:08,000
+Now it is time to run TomKat important prerequisite is that you have Java installed in Java home environments
+
+210
+00:18:08,000 --> 00:18:15,000
+variable configure it because Tomcat is going to use Java Home Environment Variable for its work.
+
+211
+00:18:15,000 --> 00:18:21,000
+If you don't have, still, please watch my lesson about JDK installation.
+
+212
+00:18:22,000 --> 00:18:27,000
+I navigate to the new folder and I open the command line in this directory.
+
+213
+00:18:28,000 --> 00:18:30,000
+After that, I educate startup.
+
+214
+00:18:30,000 --> 00:18:37,000
+But come on, let's see what is going to happen next in the new Common Line Open.
+
+215
+00:18:38,000 --> 00:18:40,000
+I see log messages.
+
+216
+00:18:41,000 --> 00:18:48,000
+And when you see a message from Kathleen that gloss silver stars top in specific amount of milliseconds.
+
+217
+00:18:48,000 --> 00:18:51,000
+That means that the server is up and running.
+
+218
+00:18:52,000 --> 00:18:57,000
+Let's check this in browser the server is running on this computer.
+
+219
+00:18:58,000 --> 00:19:04,000
+If you saw the lesson, both configuration in my sequel or possible SQL server on the computer, you
+
+220
+00:19:04,000 --> 00:19:09,000
+should remember that the name of the current computer is the local host.
+
+221
+00:19:10,000 --> 00:19:13,000
+So in Andrew Swann, I have two times the before and sinks.
+
+222
+00:19:13,000 --> 00:19:22,000
+HTP localhost 880 and 88 is the default port of the Tomcat.
+
+223
+00:19:23,000 --> 00:19:28,000
+And finally, we can see page that confirms the Tomcat server is up and running.
+
+224
+00:19:29,000 --> 00:19:37,000
+This is an application to store dozens of web apps, root folders of youth with you just spend a few
+
+225
+00:19:37,000 --> 00:19:40,000
+minutes here by navigating between different links.
+
+226
+00:19:40,000 --> 00:19:47,000
+For example, you can explore that communication if you wish or look through the examples, the different
+
+227
+00:19:47,000 --> 00:19:50,000
+examples of service you can just click around.
+
+228
+00:19:51,000 --> 00:19:58,000
+The stubs of EPS, let's get back to the terminal and invoke another script is the school shut down
+
+229
+00:19:59,000 --> 00:20:00,000
+now?
+
+230
+00:20:00,000 --> 00:20:02,000
+Now Typekit server is stuff.
+
+231
+00:20:08,000 --> 00:20:13,000
+And the last bit of news for this lesson, I'd like to show you how you can configure Tomcat server
+
+232
+00:20:13,000 --> 00:20:15,000
+inside a flipside.
+
+233
+00:20:16,000 --> 00:20:17,000
+Let's open side first.
+
+234
+00:20:18,000 --> 00:20:26,000
+Make sure you select a Java EE perspective on the top right corner here, because Java EE Perspective
+
+235
+00:20:26,000 --> 00:20:28,000
+has server stop by default.
+
+236
+00:20:29,000 --> 00:20:35,000
+In case you still can't see server stop in your clips, click on Windows menu.
+
+237
+00:20:36,000 --> 00:20:37,000
+After that show, you.
+
+238
+00:20:38,000 --> 00:20:40,000
+And here you can see service.
+
+239
+00:20:41,000 --> 00:20:42,000
+Click on this.
+
+240
+00:20:42,000 --> 00:20:48,000
+If you don't have server, stop already open when you navigate it into the service, Stop successfully
+
+241
+00:20:49,000 --> 00:20:54,000
+follows the Schitt's Creek on this text to add new server.
+
+242
+00:20:54,000 --> 00:21:00,000
+Here you have to select Apache and Afters at select Tomcat Version tab.
+
+243
+00:21:01,000 --> 00:21:01,000
+Their attention.
+
+244
+00:21:02,000 --> 00:21:10,000
+In case you have cat version Aussies Tan, you have to select another version after that, click next
+
+245
+00:21:10,000 --> 00:21:17,000
+button on the next step you have to face is it boss to the Tom Cat installation directory?
+
+246
+00:21:18,000 --> 00:21:24,000
+Pay attention not to the folder, but to the directory where the folder is located.
+
+247
+00:21:25,000 --> 00:21:28,000
+In my case, I have the foreign passport you see on the screen.
+
+248
+00:21:29,000 --> 00:21:35,000
+If you want to use specific Java runtime environments to run your web server, you can select it here.
+
+249
+00:21:36,000 --> 00:21:39,000
+I will use Workbench Default Jury.
+
+250
+00:21:40,000 --> 00:21:47,000
+After that, just click next button here, you can select them applications available for deployment.
+
+251
+00:21:47,000 --> 00:21:50,000
+I know you have some of them done for it.
+
+252
+00:21:50,000 --> 00:21:53,000
+We're going to create them together in the following lessons.
+
+253
+00:21:54,000 --> 00:21:56,000
+You can click finish so far.
+
+254
+00:21:57,000 --> 00:21:58,000
+That's it.
+
+255
+00:21:58,000 --> 00:22:04,000
+You edit the server and you are ready to run the applications directly from the eclipse side.
+
+256
+00:22:05,000 --> 00:22:13,000
+You can start and stop it directly from this panel with the help of most likely or buttons on the plane.
+
+257
+00:22:13,000 --> 00:22:13,000
+Here.
+
+258
+00:22:14,000 --> 00:22:16,000
+Let me start the server.
+
+259
+00:22:20,000 --> 00:22:24,000
+In the console output, you can see that my Web server is up and running.
+
+260
+00:22:25,000 --> 00:22:30,000
+That's open our web browser and navigate to the local host 88 now.
+
+261
+00:22:30,000 --> 00:22:38,000
+But we can't see any nice Tomcat pages that we have just saw when we started our Tomcat from that being
+
+262
+00:22:38,000 --> 00:22:38,000
+folder.
+
+263
+00:22:39,000 --> 00:22:46,000
+That is because Eclipse doesn't use web apps folder from the Tomcat installation directory.
+
+264
+00:22:46,000 --> 00:22:53,000
+That's why you will be able to access only those applications that you deployed on the web server search
+
+265
+00:22:53,000 --> 00:22:54,000
+eclipse.
+
+266
+00:22:55,000 --> 00:23:02,000
+But the good thing is that you can see a response from server, so that means server up and running
+
+267
+00:23:03,000 --> 00:23:06,000
+and you can see four or four status code.
+
+268
+00:23:07,000 --> 00:23:08,000
+What is this?
+
+269
+00:23:08,000 --> 00:23:14,000
+If you're somewhere less than about HP, you already know that this is client error.
+
+270
+00:23:14,000 --> 00:23:24,000
+Court resource is not found because Nasim is deployed on our web server, but soon will deploy our first
+
+271
+00:23:24,000 --> 00:23:26,000
+web application on the web server.
+
+272
+00:23:26,000 --> 00:23:27,000
+Stay tuned!
+
+273
+00:23:28,000 --> 00:23:31,000
+And to stop, Sarah, just click Stop Button.
+
+274
+00:23:32,000 --> 00:23:32,000
+That's it.
+
+275
+00:23:33,000 --> 00:23:37,000
+Now you can manage the Web Summit directly from the eclipse.
+
+276
+00:23:38,000 --> 00:23:38,000
+That's it.
+
+277
+00:23:39,000 --> 00:23:42,000
+That's all what I wanted to share with you in this lesson.
+
+278
+00:23:43,000 --> 00:23:45,000
+Let's recap what we have learned today.
+
+279
+00:23:46,000 --> 00:23:52,000
+In this national, we hold General TomKat overview review of TomKat alternatives.
+
+280
+00:23:53,000 --> 00:23:56,000
+I explained TomKat main components.
+
+281
+00:23:56,000 --> 00:24:00,000
+Now you know what priority Catalina and Jasper are.
+
+282
+00:24:00,000 --> 00:24:06,000
+We hold an overview of different Tomcats versions and what is the difference between them?
+
+283
+00:24:07,000 --> 00:24:13,000
+Today we had a live demo and together with another tomcat and installed it on the local computer.
+
+284
+00:24:13,000 --> 00:24:19,000
+We successfully runs a at seven and I showed you how to configure Tomcat in the GRiefs ID.
+
+285
+00:24:20,000 --> 00:24:22,000
+That's all for today.
+
+286
+00:24:22,000 --> 00:24:24,000
+Thanks a lot for your attention.
+
+287
+00:24:24,000 --> 00:24:27,000
+Have a great day and see you in the next lesson.
+
diff --git a/56 - Web/006 Official-Tomcat-website-with-official-documentation-and-possibility-to-download-Tomcat.url b/56 - Web/006 Official-Tomcat-website-with-official-documentation-and-possibility-to-download-Tomcat.url
new file mode 100644
index 0000000000000000000000000000000000000000..60349e26b95cf2c0da67d8a1020d4f07314d436c
--- /dev/null
+++ b/56 - Web/006 Official-Tomcat-website-with-official-documentation-and-possibility-to-download-Tomcat.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://tomcat.apache.org/
\ No newline at end of file
diff --git a/56 - Web/007 Apache Tomcat Hometask with Solution.html b/56 - Web/007 Apache Tomcat Hometask with Solution.html
new file mode 100644
index 0000000000000000000000000000000000000000..9804c56ee37d70c149da99d8dd8426d4a0d8f64e
--- /dev/null
+++ b/56 - Web/007 Apache Tomcat Hometask with Solution.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Apache Tomcat Hometask with Solution
+
+
+
+
+
+
+
Apache Tomcat Hometask with Solution
+
Configure access to:
Server Status
Manager App
Host Manager
![]()
For login I want to use login “admin”, and password “admin”
![]()
Hint: try to remember from the lesson - in which folder all tomcat configurations are stored? Try to guess by the file name which configuration file you need to complete this task.
Configure web authentication for tomcat web server. This means that to access http://localhost:8080/ you need to enter login and password.
Create new role that can access all endpoints on the tomcat server
Assign the role created to the admin user created in task #1
HINT: in scope of this task you need to make changes in web.xml file of Tomcat.
HINT #2: you have to add secuirty-constraint element, and login-config element
THE SOLUTION WILL BE BELOW. Try to solve tasks by yourself and only after that check solution below.
SOLUTION: Task #1
In the file conf/tomcat-users.xml you have to add the following line before closure of “tomcat-users” element:
…
<user username="admin" password="admin" roles="manager-script,manager-gui,manager-jmx,manager-status,admin-gui"/>
</tomcat-users>
After that, just restart the server and try to access Server Status, Manager App, Host manager with credentials “admin” for user and “admin” for password.
SOLUTION: Task #2
In the file conf/web.xlm you have to add the following lines after “servlet-mapping” element:
…
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>Wildcard means whole app requires authentication</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>tomcat</role-name>
</auth-constraint>
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL, INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
…
In the file conf/tomcat-users.xml you have to adjust the following line and add “tomcat” to “roles” attribute:
…
<user username="admin" password="admin" roles="manager-script,manager-gui,manager-jmx,manager-status,admin-gui,tomcat"/>
</tomcat-users>
After that, just restart the server and try to access http://localhost:8080/ with credentials “admin” for user and “admin” for password.
+
+
+
+
diff --git a/56 - Web/007 Hometask-with-Solution.url b/56 - Web/007 Hometask-with-Solution.url
new file mode 100644
index 0000000000000000000000000000000000000000..22901ad1d6eb393f3acefc2b0f2831200de22f8b
--- /dev/null
+++ b/56 - Web/007 Hometask-with-Solution.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://docs.google.com/document/d/1ZACbj-9OBHDAynnUwgqyFq6OvG4DzJ3050tAul-X5T0/edit?usp=sharing
\ No newline at end of file
diff --git a/56 - Web/external-links.txt b/56 - Web/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c0e8583d03c6da7dcfae343a84e959dbf7125e24
--- /dev/null
+++ b/56 - Web/external-links.txt
@@ -0,0 +1,6 @@
+
+006 Official-Tomcat-website-with-official-documentation-and-possibility-to-download-Tomcat
+https://tomcat.apache.org/
+
+007 Hometask-with-Solution
+https://docs.google.com/document/d/1ZACbj-9OBHDAynnUwgqyFq6OvG4DzJ3050tAul-X5T0/edit?usp=sharing
diff --git a/57 - ===== WEB Interview Preparation =====/001 Part 1 WEB Interview - Questions and Answers.html b/57 - ===== WEB Interview Preparation =====/001 Part 1 WEB Interview - Questions and Answers.html
new file mode 100644
index 0000000000000000000000000000000000000000..cddd7e0085fbb97ed035de639b7919973d5a2083
--- /dev/null
+++ b/57 - ===== WEB Interview Preparation =====/001 Part 1 WEB Interview - Questions and Answers.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Part 1 WEB Interview - Questions and Answers
+
+
+
+
+
+
+
Part 1 WEB Interview - Questions and Answers
+
The World Wide Web (abbreviated as the World Wide Web or WWW) is a unity of information resources that are interconnected by means of telecommunications and are based on a hypertext representation of data scattered around the world.
W3C is an abbreviation that stands for the World Wide Web Consortium, an organization whose goal is to develop and implement uniform standards for the operation of the Internet. The main task is the constant implementation of the principles of the global network, the main of which is the full compatibility of all materials posted on the network with the software and hardware of users.
URI, Uniform Resource Identifier (uniform resource identifier) - a sequence of characters that identifies a physical or abstract resource. Moreover, the type of resource to be accessed is determined by the context and / or mechanism. It is usually divided into URL and URN, so URL and URN are parts of URI.
URL, Uniform Resource Locator. You can also find an earlier decoding of the URL abbreviation - Universal Resource Locator - in other words, this is an indicator of the site's location on the Internet, in addition to identifying the resource, determines the location of the resource and how to access it. A URL is a standardized way to store the address of a resource on the Internet, the URL contains the domain name and the path to the page, including the file name of this page.
URN, Uniform Resource Name - is the unique name of the object. The URN includes the name of the namespace and an identifier in that space. URN is part of the URI concept. URNs, unlike URLs, do not include indications of where and how to access a resource. The point of a URN is that it only defines the name of a specific item that can be found in multiple specific places.
The Internet Protocol (Internet Protocol, IP) is a network layer protocol of the OSI (Open Systems Interconnection) network model and refers to protocols that organize connections based on circuit switching. It is one of the most common protocols is a low-level routing network protocol that breaks data into small packets and sends them through the network to a specific address. UDP and TCP protocols are actually in charge of delivering packets to the address but these protocols work over IP protocol.
TCP, the Transmission Control Protocol, is a higher-level network protocol that bundles, sorts, and retransmits packets to ensure the reliable delivery of data.
The TCP/IP protocol stack is a set of network data transfer protocols used in networks, including the Internet. The name TCP/IP comes from the two most important protocols in the family, the Transmission Control Protocol (TCP) and Internet Protocol (IP), which were developed and described first in this standard.
FTP (File Transfer Protocol) is a standard protocol for transferring files over TCP networks (such as the Internet). Uses port 21. FTP is often used to download web pages and other documents from a private development device to public hosting servers.
UDP (User Datagram Protocol) is one of the key elements of data transferring in Internet, the set of network protocols for the Internet. With UDP, computer applications can send messages (in this case called datagrams) to other hosts over an IP network without the need for a prior message to set up special transmission channels or data paths.
HTTP (HyperText Transfer Protocol) is an application layer data transfer protocol (originally in the form of hypertext documents in HTML format, currently used to transfer arbitrary data). The basis of HTTP is the "client-server" technology, that is, it assumes the existence of consumers (clients) that initiate a connection and send a request, and providers (servers) that wait for a connection to receive a request, perform the necessary actions and return back a message with the result.
HTTPS (HyperText Transfer Protocol Secure) is an extension of the HTTP protocol that supports encryption. Data transmitted over the HTTPS protocol is "packaged" in the SSL or TLS cryptographic protocol. Unlike HTTP, HTTPS defaults to TCP port 443.
A communication protocol is a set of logical-level interface conventions that define the exchange of data between different programs. These conventions define a uniform way of transmitting messages and handling errors when software interacts with spaced hardware connected by one interface or another.
HTTP (Hyper Text Transfer Protocol) is a hypertext transfer protocol. The HTTP protocol is used to send Web pages from one computer to another.
FTP (File Transfer Protocol) is a protocol for transferring files from a dedicated file server to a user's computer. FTP allows the subscriber to exchange binary and text files with any computer on the network. By establishing a connection with a remote computer, the user can copy a file from the remote computer to his own or copy a file from his computer to the remote one.
POP (Post Office Protocol) is a standard mail connection protocol. POP servers handle incoming mail, and the POP protocol is designed to handle requests to receive mail from client mailers.
SMTP (Simple Mail Transfer Protocol) is a protocol that defines a set of rules for sending mail. The SMTP server either returns an acknowledgment, an error message or requests additional information.
A web server is a server that accepts HTTP requests from clients, usually web browsers, and provides them with HTTP responses, usually along with an HTML page, image, file, media stream, or other data.
A web application is a client-server application in which the browser is the client and the web server is the server. The web application logic is distributed between the server and the client, data is stored mainly on the server, information is exchanged over the network. One advantage of this approach is the fact that clients are independent of the user's particular operating system, so web applications are cross-platform services.
Application server is a software platform (framework) designed for the efficient execution of procedures (programs, mechanical operations, scripts) that support the construction of applications. The Application Server acts as a set of components available to the software developer through an API (Application Programming Interface) that is defined by the platform itself.
Application server - a server that executes some application programs.
A web server is a server that accepts HTTP requests from clients, usually web browsers, and issues HTTP responses to them. Web server can store just static web content, for example. Whereas Application Server runs application that contains business logic and supports creation of dynamic web content.
GET sends data to the server using a URL, while POST sends data using an HTTP request body.
The length of the URL is limited to 1024 characters, which will be the upper limit for the data that can be sent with a GET. POST can send much larger amounts of data. In addition, POST is more secure than GET, because secret data (such as a password) is not directly displayed in the user's web client (unlike the URL, which is almost always visible).
MIME (Multipurpose Internet Mail Extension) is a specification for transferring files of various types over a network: images, music, texts, videos, archives, etc. Specifying a MIME type is used in HTML, usually when transferring form data and inserting into a page various objects.
Authentication is a verification of the conformity of the subject and who he is trying to impersonate, using some unique information (fingerprints, eyes scan, voice, etc.), in the simplest case, using a login and password.
Authorization is the verification and determination of the authority to perform certain actions (for example, read the /var/mail/lastname file) in accordance with the previously performed authentication.
AJAX is an approach to building interactive user interfaces for web applications, which consists in the "background" exchange of data between the browser and the web server. As a result, when data is updated, the web page is not completely reloaded, and web applications become faster and more convenient.
AJAX is not a standalone technology, but the concept of using several related technologies. AJAX is based on two main principles:
Using the technology of dynamic access to the server "on the fly", without completely reloading the entire page, for example:
using XMLHttpRequest (main object);
through dynamic creation of child frames;
through dynamic creation of the <script> tag.
Using DHTML to dynamically change page content;
The data transfer format is usually JSON or XML.
JSON stands for JavaScript Object Notation. It is a text-based data exchange format based on JavaScript and commonly used with that particular language. Like many other text formats, JSON is easy for humans to read.
It is a communication protocol over a TCP connection designed to exchange messages between a browser and a web server in real-time.
The OSI model is a model for the interaction of open systems (Open Systems Interconnected). It consists of seven layers. The goal of layers is to organize network interaction.
The layers are:
+
+
+
+
diff --git a/58 - Build Automation Tools Overview/001 Build Automation Tools Overview_en.srt b/58 - Build Automation Tools Overview/001 Build Automation Tools Overview_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..a9a342e5bf0503131a753d40f4f2c5926295163b
--- /dev/null
+++ b/58 - Build Automation Tools Overview/001 Build Automation Tools Overview_en.srt
@@ -0,0 +1,700 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:07,000 --> 00:00:14,000
+We start very important and useful topic with this lesson as software engineers, we need to know how
+
+3
+00:00:14,000 --> 00:00:21,000
+to use automated build tools for building our apps, no matter whether we need to build mobile, desktop
+
+4
+00:00:21,000 --> 00:00:23,000
+or web applications.
+
+5
+00:00:23,000 --> 00:00:29,000
+We're going to study this lesson from understanding what actually build application means.
+
+6
+00:00:30,000 --> 00:00:37,000
+This will help us better understand what built those are, what they do and why we need them.
+
+7
+00:00:37,000 --> 00:00:42,000
+Also, I'm going to hold an overview of the most popular build tools for Java.
+
+8
+00:00:42,000 --> 00:00:45,000
+We're going to review MAVEN and Gradle.
+
+9
+00:00:46,000 --> 00:00:53,000
+And as Betty, let's start our lesson and to start our lesson, let's understand first.
+
+10
+00:00:53,000 --> 00:00:57,000
+What actually build application means is super simple.
+
+11
+00:00:58,000 --> 00:01:03,000
+We want to separate the work of compiling and package in our code from creation.
+
+12
+00:01:03,000 --> 00:01:10,000
+That bargain, et cetera, to build application means to perform operations that are required to prepare
+
+13
+00:01:10,000 --> 00:01:17,000
+your application to be executed on target environment, no matter what it's desktop, web server or
+
+14
+00:01:17,000 --> 00:01:17,000
+mobile.
+
+15
+00:01:18,000 --> 00:01:24,000
+For example, imagine that we have web application, our online store.
+
+16
+00:01:24,000 --> 00:01:27,000
+What we need to do was our source files.
+
+17
+00:01:27,000 --> 00:01:29,000
+We need to compile them.
+
+18
+00:01:29,000 --> 00:01:34,000
+What we need to do with our dependencies and other libraries at our code depends on.
+
+19
+00:01:35,000 --> 00:01:40,000
+We need to make sure that proper dependencies of specific versions are loaded.
+
+20
+00:01:40,000 --> 00:01:42,000
+And that was the app.
+
+21
+00:01:43,000 --> 00:01:45,000
+What should we do with our sources?
+
+22
+00:01:45,000 --> 00:01:49,000
+I mean, the service bundles images we need to group them.
+
+23
+00:01:49,000 --> 00:01:52,000
+And also the package was all our executables.
+
+24
+00:01:53,000 --> 00:01:54,000
+What else should we do?
+
+25
+00:01:55,000 --> 00:02:02,000
+Shall we run our unit tests before we even start completion to make sure all unit tests, IPOs and there
+
+26
+00:02:02,000 --> 00:02:03,000
+are no errors?
+
+27
+00:02:04,000 --> 00:02:05,000
+Yes, we should.
+
+28
+00:02:05,000 --> 00:02:09,000
+And by the way, we forgot about this quote and test resources.
+
+29
+00:02:09,000 --> 00:02:11,000
+Do we need it on production?
+
+30
+00:02:11,000 --> 00:02:12,000
+Definitely not.
+
+31
+00:02:13,000 --> 00:02:16,000
+That's why we need to compile test source code and run it.
+
+32
+00:02:17,000 --> 00:02:21,000
+But we shouldn't package compiled files into our final package.
+
+33
+00:02:22,000 --> 00:02:22,000
+Correct.
+
+34
+00:02:23,000 --> 00:02:25,000
+So can you imagine all this?
+
+35
+00:02:25,000 --> 00:02:29,000
+And as a result of the process, you receive archive.
+
+36
+00:02:30,000 --> 00:02:34,000
+Imagine that this is our car with our extension.
+
+37
+00:02:34,000 --> 00:02:37,000
+This archive may be deployed as a web server.
+
+38
+00:02:37,000 --> 00:02:38,000
+Is it clear?
+
+39
+00:02:39,000 --> 00:02:47,000
+And Webster knows how to run and execute this application package in this way or another example?
+
+40
+00:02:47,000 --> 00:02:56,000
+Android mobile applications result of the build process will be a file with APIC extension and automated
+
+41
+00:02:56,000 --> 00:02:58,000
+built to contains instructions.
+
+42
+00:02:58,000 --> 00:03:05,000
+How to build this file is it can be executed first on Android platform, and all of a sudden we have
+
+43
+00:03:05,000 --> 00:03:10,000
+a number of things to do before we can run our application on target environment.
+
+44
+00:03:11,000 --> 00:03:17,000
+Obviously, as people who used to automate different things, we want to automate process of building
+
+45
+00:03:17,000 --> 00:03:18,000
+our app.
+
+46
+00:03:18,000 --> 00:03:25,000
+Margaret and I named just a few simple use cases that we can do with automation build tools, but in
+
+47
+00:03:25,000 --> 00:03:31,000
+real life, XEM much more powerful that water build processes.
+
+48
+00:03:31,000 --> 00:03:33,000
+And that's why we need build tools.
+
+49
+00:03:34,000 --> 00:03:37,000
+I hope that you can really imagine the use case.
+
+50
+00:03:38,000 --> 00:03:44,000
+And you can already understand why we need to build those, especially when you build those when we
+
+51
+00:03:44,000 --> 00:03:47,000
+are dealing with multiple apps that are interconnected.
+
+52
+00:03:47,000 --> 00:03:53,000
+And one application is required for the successful build of another application built.
+
+53
+00:03:53,000 --> 00:04:01,000
+Those serve to make sure that where various people are working on various projects, they don't break
+
+54
+00:04:01,000 --> 00:04:07,000
+anything and to make sure that when you make your changes, they don't break and it's easy.
+
+55
+00:04:08,000 --> 00:04:15,000
+Built tools have evolved over the years, becoming progressively more sophisticated and feature rich.
+
+56
+00:04:16,000 --> 00:04:22,000
+This provides developers was useful additions such as the ability to manage your project dependencies,
+
+57
+00:04:22,000 --> 00:04:26,000
+as well as automate tasks beyond compiling and packaging.
+
+58
+00:04:27,000 --> 00:04:36,000
+Typically, those require two major components build a script and an executable which processes a script.
+
+59
+00:04:37,000 --> 00:04:43,000
+Build scripts should be platform independent and shouldn't depend on the operating systems that are
+
+60
+00:04:43,000 --> 00:04:46,000
+running on the same build.
+
+61
+00:04:46,000 --> 00:04:50,000
+Script can be executed on Windows, Mac OS or Linux.
+
+62
+00:04:51,000 --> 00:04:56,000
+The SmartApp we can see that built those are in charge of the next processes.
+
+63
+00:04:56,000 --> 00:05:02,000
+Source code compilation Hendrina Resource Management Tasks support different.
+
+64
+00:05:03,000 --> 00:05:10,000
+Files, for example, was billed as a mission to we can configure different profiles like for development
+
+65
+00:05:10,000 --> 00:05:12,000
+and production environment.
+
+66
+00:05:12,000 --> 00:05:13,000
+Automate this.
+
+67
+00:05:14,000 --> 00:05:19,000
+Now, let's hold an overview of different build automation tools for Java.
+
+68
+00:05:19,000 --> 00:05:21,000
+The first one to know, at least, is MAVEN.
+
+69
+00:05:22,000 --> 00:05:28,000
+A botched maven probe is the most popular and personally my favorite builds automation tool for Java
+
+70
+00:05:28,000 --> 00:05:30,000
+applications nowadays.
+
+71
+00:05:30,000 --> 00:05:38,000
+It was developed in 2001 and since then has been adopted as a de facto standard for building Java Produce
+
+72
+00:05:39,000 --> 00:05:39,000
+MAVEN.
+
+73
+00:05:39,000 --> 00:05:48,000
+Scalability and accessibility make it an attractive choice for small development teams who need automated
+
+74
+00:05:48,000 --> 00:05:54,000
+builds but don't have a lot of resources allocated over a software engineering overhead.
+
+75
+00:05:55,000 --> 00:06:02,000
+MAVEN follows the principles it sounds like convention over configuration in order to make MAVEN work
+
+76
+00:06:02,000 --> 00:06:02,000
+properly.
+
+77
+00:06:03,000 --> 00:06:07,000
+We should follow some agreed conventions like boss files.
+
+78
+00:06:07,000 --> 00:06:11,000
+For example, source code should be located in the specific source folder.
+
+79
+00:06:12,000 --> 00:06:16,000
+This court should be located in another folder agreed by convention.
+
+80
+00:06:16,000 --> 00:06:22,000
+This brings a lot of benefits like easiness the use in case you follow MAVEN Convention.
+
+81
+00:06:23,000 --> 00:06:27,000
+Developers don't have to mention each and every configuration.
+
+82
+00:06:27,000 --> 00:06:35,000
+Detail MAVEN provides sensible default behavior for produce when the MAVEN project is created.
+
+83
+00:06:35,000 --> 00:06:37,000
+Creates the full project structure.
+
+84
+00:06:38,000 --> 00:06:43,000
+Developers just have to place files according to established convention.
+
+85
+00:06:43,000 --> 00:06:44,000
+And that's it.
+
+86
+00:06:45,000 --> 00:06:54,000
+Also, MAVEN uses in concept and its capabilities are easily extended with plug ins in case of multiple
+
+87
+00:06:54,000 --> 00:06:56,000
+development teams environment.
+
+88
+00:06:56,000 --> 00:07:04,000
+MAVEN can set up a way to work standards in a very short time, as most of the project setups are simple
+
+89
+00:07:04,000 --> 00:07:05,000
+and reusable.
+
+90
+00:07:05,000 --> 00:07:13,000
+MAVEN makes life of developers easier while creating reports, checks, build and and automation setups.
+
+91
+00:07:14,000 --> 00:07:21,000
+MAVEN provides developers ways to manage the following builds documentation, reporting, dependencies,
+
+92
+00:07:21,000 --> 00:07:24,000
+source code management, resources management, etc..
+
+93
+00:07:25,000 --> 00:07:33,000
+To summarize, maven, simplify and standardise the product build process, it handles compilation distribution,
+
+94
+00:07:33,000 --> 00:07:38,000
+documentation, team collaboration and other tasks seamlessly.
+
+95
+00:07:38,000 --> 00:07:42,000
+MAVEN encourages reusability and takes care of them.
+
+96
+00:07:42,000 --> 00:07:44,000
+Most of it builds related tasks.
+
+97
+00:07:45,000 --> 00:07:53,000
+Xanax builds automation to all these issues, and it is also developed by a porch and was super popular
+
+98
+00:07:53,000 --> 00:07:57,000
+a long time ago, but probably not so popular nowadays.
+
+99
+00:07:58,000 --> 00:08:04,000
+But this bills are the mission to create a basement also for such popular tool as gradel.
+
+100
+00:08:05,000 --> 00:08:12,000
+We'll discuss it in a minute and is a Java Library, which helps us to drive the process defined in
+
+101
+00:08:12,000 --> 00:08:13,000
+and build file.
+
+102
+00:08:14,000 --> 00:08:17,000
+You create script that is going to be executed a line by line.
+
+103
+00:08:18,000 --> 00:08:20,000
+You can also use terminal commands.
+
+104
+00:08:20,000 --> 00:08:27,000
+It's supposed to be executed during this career and considering the fact that we need manual to create
+
+105
+00:08:27,000 --> 00:08:31,000
+all necessary for us tasks and is very flexible.
+
+106
+00:08:32,000 --> 00:08:39,000
+Basically, it will perform actions like Z described in the script, but not as they were already predefined.
+
+107
+00:08:40,000 --> 00:08:45,000
+From the one side, you can achieve greater flexibility rather than with me.
+
+108
+00:08:46,000 --> 00:08:52,000
+From Xasa said, it will take more time from you to describe all necessary tasks to be performed in
+
+109
+00:08:52,000 --> 00:08:53,000
+script.
+
+110
+00:08:54,000 --> 00:09:01,000
+And bills are based on sweet blocks, tasks, targets and extension points.
+
+111
+00:09:01,000 --> 00:09:09,000
+A task is a unit of work which should be performed and the constituents of Small Atomic Steps, for
+
+112
+00:09:09,000 --> 00:09:17,000
+example, compiles source code Oak Ridge, Ob-La-Da tasks can be grouped into targets that target can
+
+113
+00:09:17,000 --> 00:09:25,000
+be directly invoked via, and surrogates can specify their dependencies and will automatically execute
+
+114
+00:09:25,000 --> 00:09:27,000
+all dependent targets.
+
+115
+00:09:27,000 --> 00:09:35,000
+For example, if Target's aid depends on BEA and Aunt is instructed to run eight its first runs deep
+
+116
+00:09:35,000 --> 00:09:36,000
+before running a.
+
+117
+00:09:37,000 --> 00:09:44,000
+In your build file, you can specify as a default target and executes as a surrogate.
+
+118
+00:09:45,000 --> 00:09:54,000
+If no explicit target is specified mainly and is used to build Java applications and is very flexible,
+
+119
+00:09:54,000 --> 00:09:58,000
+it doesn't impose any rules like coding conventions.
+
+120
+00:09:59,000 --> 00:10:06,000
+Directory structure like Marvin does and uses another tool for dependency management is the school.
+
+121
+00:10:06,000 --> 00:10:15,000
+Even that's why we're often women in mentioned, and we also mean even managing dependencies for end.
+
+122
+00:10:15,000 --> 00:10:20,000
+It will be fair to say that the budget and is not so popular nowadays.
+
+123
+00:10:20,000 --> 00:10:27,000
+You can still work with and in case you are dealing with, not fresh project you were and is still used
+
+124
+00:10:27,000 --> 00:10:28,000
+for the mission.
+
+125
+00:10:29,000 --> 00:10:32,000
+But I still decided to share with you information about that much.
+
+126
+00:10:32,000 --> 00:10:38,000
+And before we jump the Gradel discussion, the search tool in our list is gradel.
+
+127
+00:10:39,000 --> 00:10:46,000
+Fans of gradel, often like the mansions it is built to selected by Google and used by such popular
+
+128
+00:10:46,000 --> 00:10:47,000
+frameworks spring.
+
+129
+00:10:48,000 --> 00:10:51,000
+And yes, this is super powerful, too.
+
+130
+00:10:52,000 --> 00:10:56,000
+The only question is, was it each card you may handle such power?
+
+131
+00:10:57,000 --> 00:10:58,000
+Just joking.
+
+132
+00:10:58,000 --> 00:11:02,000
+Randall is also used by default for Android projects.
+
+133
+00:11:02,000 --> 00:11:05,000
+That's why gradel also become so popular.
+
+134
+00:11:05,000 --> 00:11:10,000
+At the end of the day, it will be only your choice, which builds to to use.
+
+135
+00:11:11,000 --> 00:11:19,000
+My role in this course provided was enough information to help you make your own decision, but never
+
+136
+00:11:19,000 --> 00:11:24,000
+forget to hold your own investigation of pros and cons before selecting two.
+
+137
+00:11:25,000 --> 00:11:33,000
+I am saying this as wanting to make you cautious about decisions, because in some cases, gradel may
+
+138
+00:11:33,000 --> 00:11:36,000
+be much more powerful than you actually need.
+
+139
+00:11:37,000 --> 00:11:39,000
+That will cause more challenges than benefits.
+
+140
+00:11:40,000 --> 00:11:47,000
+Don't worry, we are going to learn gratitude in our course, and we are going to give you details.
+
+141
+00:11:47,000 --> 00:11:53,000
+The key features of gradel are language for dependency based programming.
+
+142
+00:11:53,000 --> 00:12:00,000
+The declarative language lies on the top of General Purpose Task Graph, which can be fully supported.
+
+143
+00:12:00,000 --> 00:12:06,000
+Instead, build this assumption was you can do this on, but can't do in and.
+
+144
+00:12:08,000 --> 00:12:16,000
+That's one in a very, very simplified manner, we can say that gradel is name and loss because it took
+
+145
+00:12:16,000 --> 00:12:19,000
+something from me, even something from Ms.
+
+146
+00:12:20,000 --> 00:12:22,000
+Where are those scales?
+
+147
+00:12:22,000 --> 00:12:32,000
+Rattle can easily increase productivity from simple and single project bills to huge enterprise to project
+
+148
+00:12:32,000 --> 00:12:37,000
+bills so it can support multiple projects like MAVEN.
+
+149
+00:12:39,000 --> 00:12:47,000
+Rodel is the first built integration to rather is fully supportive for you and tasks maven and even
+
+150
+00:12:47,000 --> 00:12:51,000
+repository infrastructure for publishing and retrieving dependencies.
+
+151
+00:12:51,000 --> 00:12:58,000
+It also provides a converter foot to an email configuration file to read a script.
+
+152
+00:12:59,000 --> 00:13:07,000
+Run or rather run, a rapper allows it to end because it rather builds on machines when Ronaldo is not
+
+153
+00:13:07,000 --> 00:13:07,000
+installed.
+
+154
+00:13:08,000 --> 00:13:14,000
+This is useful for continuous integration of service and also lots of other features.
+
+155
+00:13:15,000 --> 00:13:18,000
+So Grado is really powerful to urines.
+
+156
+00:13:18,000 --> 00:13:22,000
+Of course, we're going to identify in which case it is applicable better.
+
+157
+00:13:22,000 --> 00:13:24,000
+Zoom in on the cases.
+
+158
+00:13:25,000 --> 00:13:31,000
+The force tool in our list is as busy as beauty is of based build two.
+
+159
+00:13:31,000 --> 00:13:39,000
+It is considered to be among the most popular Java builds tools as SBT has many plugins and allows developers
+
+160
+00:13:39,000 --> 00:13:44,000
+to easily create their own custom tasks for specific purposes.
+
+161
+00:13:44,000 --> 00:13:51,000
+The SBT can execute projects in multiple game languages, including rugby and JavaScript.
+
+162
+00:13:52,000 --> 00:13:59,000
+One of the main benefits of using SBT was Java projects is that it can automatically download the dependencies
+
+163
+00:13:59,000 --> 00:14:06,000
+and set up a development environment as beautiful Java has many plugins which are contributed by third
+
+164
+00:14:06,000 --> 00:14:07,000
+party developers.
+
+165
+00:14:08,000 --> 00:14:09,000
+Basically, that's it.
+
+166
+00:14:10,000 --> 00:14:13,000
+Let's recap what we have learned today in this lesson.
+
+167
+00:14:13,000 --> 00:14:20,000
+We learned what actually built application means, and you can understand what built applications are
+
+168
+00:14:20,000 --> 00:14:23,000
+and what girls are going to achieve was help.
+
+169
+00:14:24,000 --> 00:14:31,000
+Also, a brief review is the most popular automated build tools for Java applications and learned their
+
+170
+00:14:31,000 --> 00:14:31,000
+features.
+
+171
+00:14:32,000 --> 00:14:38,000
+I believe that this is enough for all of you, and now you at least can understand why we need to build
+
+172
+00:14:38,000 --> 00:14:41,000
+those and what problems they're supposed to solve.
+
+173
+00:14:41,000 --> 00:14:43,000
+That's it for this lesson.
+
+174
+00:14:43,000 --> 00:14:45,000
+Thanks a lot for your attention.
+
+175
+00:14:45,000 --> 00:14:48,000
+Have a great day and see you next lesson.
+
diff --git a/59 - Apache Maven/001 Apache Maven - Basics_en.srt b/59 - Apache Maven/001 Apache Maven - Basics_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..5ef5265a4e10513d065f982e90eeb0d888f98693
--- /dev/null
+++ b/59 - Apache Maven/001 Apache Maven - Basics_en.srt
@@ -0,0 +1,976 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jean.
+
+2
+00:00:06,000 --> 00:00:13,000
+Was this last of the worst, not an opportune, even in this lesson, we'll recap main features of MAVEN
+
+3
+00:00:13,000 --> 00:00:18,000
+and will identify advantages of it really, really had an overview of different build tools.
+
+4
+00:00:19,000 --> 00:00:24,000
+But in this lesson, I'm going to explain the maven core concepts in more details.
+
+5
+00:00:24,000 --> 00:00:28,000
+We'll talk about maven lifecycle maven phases and maven goals.
+
+6
+00:00:29,000 --> 00:00:35,000
+I will explain the such key principles of MAVEN as convention over configuration and Design.
+
+7
+00:00:35,000 --> 00:00:40,000
+Those are the lessons we're going to install MAVEN on your local computer and configure environment
+
+8
+00:00:40,000 --> 00:00:40,000
+variables.
+
+9
+00:00:41,000 --> 00:00:42,000
+Let's start our lesson.
+
+10
+00:00:43,000 --> 00:00:49,000
+We already hold a high level overview of different builds, automation tools and the review of the advantages
+
+11
+00:00:49,000 --> 00:00:51,000
+of different tools.
+
+12
+00:00:51,000 --> 00:00:53,000
+Let me just quickly remind you some of them.
+
+13
+00:00:54,000 --> 00:01:01,000
+Together, we can understand why MAVEN can become our choice maven, can provide benefits for you and
+
+14
+00:01:01,000 --> 00:01:07,000
+build process by employing standard conventions and practices to accelerate your development cycle,
+
+15
+00:01:08,000 --> 00:01:12,000
+while at the same time helping you achieve a higher rate of success.
+
+16
+00:01:13,000 --> 00:01:16,000
+Some of the key maven features are simplicity.
+
+17
+00:01:17,000 --> 00:01:23,000
+One of the key goals of MAVEN is making the new courses as simple as possible to facilitate the development
+
+18
+00:01:23,000 --> 00:01:24,000
+process.
+
+19
+00:01:25,000 --> 00:01:31,000
+This is achieved by avoiding as many configurations as possible, by supplying project templates that
+
+20
+00:01:31,000 --> 00:01:32,000
+are called archetypes.
+
+21
+00:01:33,000 --> 00:01:40,000
+Also, the main MAVEN Principal Convention over configuration helps us to with manual configuration
+
+22
+00:01:40,000 --> 00:01:43,000
+by just following agreed naming conventions.
+
+23
+00:01:44,000 --> 00:01:51,000
+Dependency management like some of the build information tools for Java, MAVEN supports dependency
+
+24
+00:01:51,000 --> 00:01:53,000
+management out of the box.
+
+25
+00:01:53,000 --> 00:01:54,000
+What does this mean?
+
+26
+00:01:55,000 --> 00:02:02,000
+This means that with the configuration, we can specify all required external dependencies for our project,
+
+27
+00:02:02,000 --> 00:02:04,000
+and MAVEN will manage these dependencies.
+
+28
+00:02:05,000 --> 00:02:09,000
+Namely, it will include dependent libraries into the final product build.
+
+29
+00:02:10,000 --> 00:02:17,000
+It will be in charge of automatic updating downloading them, including downloading sources, validating
+
+30
+00:02:17,000 --> 00:02:21,000
+compatibility, as well as managing transitive dependencies.
+
+31
+00:02:22,000 --> 00:02:23,000
+That is really amazing.
+
+32
+00:02:23,000 --> 00:02:28,000
+Sync about maven passion is that this is done in very simple and intuitive way.
+
+33
+00:02:29,000 --> 00:02:33,000
+I'm going to show you how to manage your dependencies was may run in this course.
+
+34
+00:02:34,000 --> 00:02:36,000
+Central repository system.
+
+35
+00:02:36,000 --> 00:02:41,000
+One of the biggest advantages of using MAVEN is its central repository system.
+
+36
+00:02:42,000 --> 00:02:47,000
+The development community agreed that MAVEN Central is one of the biggest repositories was libraries
+
+37
+00:02:48,000 --> 00:02:51,000
+and creators of different products uploads their libraries.
+
+38
+00:02:52,000 --> 00:02:55,000
+Now let's review Maimon core concepts.
+
+39
+00:02:56,000 --> 00:02:59,000
+The core concept and maven is Project Object Model.
+
+40
+00:03:00,000 --> 00:03:02,000
+That's what Paul stands for.
+
+41
+00:03:03,000 --> 00:03:09,000
+MAVEN has its main configuration file configuration script, which is called Complex Mel.
+
+42
+00:03:10,000 --> 00:03:16,000
+If you have never met before with a similar extension, I can very briefly say that this is extensible
+
+43
+00:03:16,000 --> 00:03:20,000
+markup language that uses Stack's to describe information.
+
+44
+00:03:21,000 --> 00:03:29,000
+One file contains information about all our sources, including external dependencies, ins, details
+
+45
+00:03:29,000 --> 00:03:36,000
+about packaging type and lot of different Aussies things zip file should be located in the directory
+
+46
+00:03:36,000 --> 00:03:38,000
+of the project it belongs to.
+
+47
+00:03:39,000 --> 00:03:46,000
+On the slide, you can see an illustration of how MAVEN uses a configuration file and what's on file
+
+48
+00:03:46,000 --> 00:03:50,000
+primarily contains one of we execute mainland commands to build the project.
+
+49
+00:03:51,000 --> 00:03:56,000
+We need to pass the reference to XML files that Mayweather will analyze.
+
+50
+00:03:56,000 --> 00:04:01,000
+Mayweather will execute commands on the resources identified income file.
+
+51
+00:04:02,000 --> 00:04:07,000
+Usually we call, well, come on things, a directory where upon file is located.
+
+52
+00:04:08,000 --> 00:04:15,000
+Some of the actions that may be done by May, even after reading --, is then load and external libraries
+
+53
+00:04:15,000 --> 00:04:19,000
+into local repository maven creates folder on your computer.
+
+54
+00:04:19,000 --> 00:04:28,000
+This could point to maimon laws, all required dependencies that know the tendencies are not found in
+
+55
+00:04:28,000 --> 00:04:30,000
+the local repository.
+
+56
+00:04:30,000 --> 00:04:36,000
+MAVEN then loads them from its central mailing repository and put them in the local repository.
+
+57
+00:04:37,000 --> 00:04:41,000
+You can also specify which remote repository to use for download and dependencies.
+
+58
+00:04:42,000 --> 00:04:46,000
+All this will be explained in the more details later in this course.
+
+59
+00:04:47,000 --> 00:04:55,000
+MAVEN executes lifecycles, builds phases and goes the new process in MAVEN is split up into milk life
+
+60
+00:04:55,000 --> 00:04:58,000
+cycles, phases and goes and builds.
+
+61
+00:04:58,000 --> 00:05:06,000
+Life cycle consists of a sequence of build phases, and each build phase consists of a sequence of goals.
+
+62
+00:05:06,000 --> 00:05:11,000
+When you're on MAVEN, you pass a command to man.
+
+63
+00:05:11,000 --> 00:05:16,000
+This command is the name of a build life cycle phase.
+
+64
+00:05:16,000 --> 00:05:24,000
+I'll go if the life cycle quest that is executed all build phases in the life cycle are executed.
+
+65
+00:05:25,000 --> 00:05:31,000
+If I build phase request, it is executed all build phases before it in the predefined sequence of build
+
+66
+00:05:31,000 --> 00:05:33,000
+phases executed to.
+
+67
+00:05:34,000 --> 00:05:42,000
+Bill's plugins are used to insert extra girls into the old face if you need to perform a set of actions
+
+68
+00:05:42,000 --> 00:05:47,000
+for your project, which are not covered by the standard maven, build phases and laws.
+
+69
+00:05:48,000 --> 00:05:50,000
+You can add a plug in the zip file.
+
+70
+00:05:51,000 --> 00:05:58,000
+MAVEN has some standards plugins you can use, and you can also implement your own in Java if you need
+
+71
+00:05:58,000 --> 00:06:01,000
+to build profiles.
+
+72
+00:06:01,000 --> 00:06:04,000
+Use if you need to build your project in different ways.
+
+73
+00:06:05,000 --> 00:06:12,000
+When you need this merging, the different configurations should be applied for applications.
+
+74
+00:06:12,000 --> 00:06:18,000
+It is going to be deployed on development environments, key environments or production environments.
+
+75
+00:06:19,000 --> 00:06:20,000
+I want to sync.
+
+76
+00:06:20,000 --> 00:06:26,000
+We're in sync and please remember that having different configurations for different environments is
+
+77
+00:06:26,000 --> 00:06:27,000
+not always a good practice.
+
+78
+00:06:28,000 --> 00:06:28,000
+Why?
+
+79
+00:06:29,000 --> 00:06:32,000
+Because you increase risk of appearance of some defects.
+
+80
+00:06:32,000 --> 00:06:35,000
+Latest was configurations on operating environments.
+
+81
+00:06:36,000 --> 00:06:40,000
+Yes, having the same configurations on all environments very hard to achieve.
+
+82
+00:06:41,000 --> 00:06:45,000
+But you should minimize the differences as much as possible.
+
+83
+00:06:45,000 --> 00:06:50,000
+And MAVEN helps you to configure two different bills to enable different bills.
+
+84
+00:06:51,000 --> 00:06:56,000
+You can add different view profiles to your files when executing MAVEN.
+
+85
+00:06:56,000 --> 00:06:59,000
+You can tell which building profile to use.
+
+86
+00:07:00,000 --> 00:07:04,000
+Also on the slide, you can see higher level structure on file.
+
+87
+00:07:04,000 --> 00:07:09,000
+The profile describes what the bill, but most often not.
+
+88
+00:07:09,000 --> 00:07:16,000
+How to build it, how to build it is up to the name and build phases and goals.
+
+89
+00:07:16,000 --> 00:07:22,000
+You can insert the custom actions goals into the maven build phase if you need it.
+
+90
+00:07:23,000 --> 00:07:31,000
+Each project has a profile zip file is named Tom X Amount and should be located in the root directory
+
+91
+00:07:31,000 --> 00:07:32,000
+of your project.
+
+92
+00:07:33,000 --> 00:07:39,000
+A project divided into SAP projects will typically have one file for the parent project and the one
+
+93
+00:07:40,000 --> 00:07:42,000
+on file for each sub project.
+
+94
+00:07:42,000 --> 00:07:50,000
+This structure allows both the total project to be built in one step or any of the SAP projects to be
+
+95
+00:07:50,000 --> 00:07:51,000
+built separately.
+
+96
+00:07:52,000 --> 00:07:55,000
+You already heard like a mansion lifecycle.
+
+97
+00:07:56,000 --> 00:07:59,000
+Let's learn and understand what this concept is about.
+
+98
+00:08:00,000 --> 00:08:07,000
+Real life cycle means that the process for building and distributing a particular artifact project is
+
+99
+00:08:07,000 --> 00:08:11,000
+clearly defined is a person building a project.
+
+100
+00:08:11,000 --> 00:08:16,000
+This means that it is on and necessary to learn a small set of commands to build.
+
+101
+00:08:16,000 --> 00:08:22,000
+Any MAVEN project ends upon will ensure they get the results Z desired.
+
+102
+00:08:23,000 --> 00:08:32,000
+There, as we build things, build life cycles, default clean, and so the default life cycle handles
+
+103
+00:08:32,000 --> 00:08:39,000
+your project, deployment is a clean life cycle, goes project cleaning, while the side life cycle
+
+104
+00:08:39,000 --> 00:08:42,000
+handles the creation of your project's website.
+
+105
+00:08:42,000 --> 00:08:48,000
+And like you already may guess, news life cycle is made up of phases.
+
+106
+00:08:48,000 --> 00:08:57,000
+Each of these bills life cycles is defined by a different list of build phases wherein and builds phase
+
+107
+00:08:57,000 --> 00:09:00,000
+represents a stage in the life cycle.
+
+108
+00:09:00,000 --> 00:09:07,000
+In attachment is a lesson I learned to provide you with the reference to the official documentation
+
+109
+00:09:07,000 --> 00:09:10,000
+that describes all phases for different life cycles.
+
+110
+00:09:10,000 --> 00:09:19,000
+And for the sake of example, let's review some phases in the default lifecycle validate validate.
+
+111
+00:09:19,000 --> 00:09:23,000
+The project is correct and all necessary information is available.
+
+112
+00:09:23,000 --> 00:09:27,000
+Compile compiles the source code of the project.
+
+113
+00:09:27,000 --> 00:09:33,000
+Dust Task is a compiled source code using the suitable testing framework.
+
+114
+00:09:34,000 --> 00:09:38,000
+These tests should not require the court be packaged or deployed.
+
+115
+00:09:39,000 --> 00:09:48,000
+Package things are compiled code and package it in its distributable format, such as John Avar, for
+
+116
+00:09:48,000 --> 00:09:57,000
+example, verify from any checks on results of integration tests to ensure quality criteria are met.
+
+117
+00:09:58,000 --> 00:10:05,000
+Install the Sosu package into the local repository for use as a dependency in other projects locally.
+
+118
+00:10:06,000 --> 00:10:09,000
+Deploy them in the built environment.
+
+119
+00:10:10,000 --> 00:10:16,000
+Is the final package does a remote repository for sharing with other developers and projects.
+
+120
+00:10:17,000 --> 00:10:24,000
+This lifecycle phases includes that, as shown here, but we didn't talk about or execute it sequentially
+
+121
+00:10:24,000 --> 00:10:26,000
+to complete the default lifecycle.
+
+122
+00:10:27,000 --> 00:10:34,000
+Given the lifecycle phases above, this means that once the default lifecycle is used, May will first
+
+123
+00:10:34,000 --> 00:10:42,000
+validate the project zero will try to compile the source bronzers against test packages of binaries
+
+124
+00:10:42,000 --> 00:10:45,000
+and step by step to the end of the lifecycle.
+
+125
+00:10:46,000 --> 00:10:49,000
+Unions, of course, will use these lifecycle phases.
+
+126
+00:10:50,000 --> 00:10:58,000
+However, even though Bill's face is responsible for a specific step and build life cycle, the manner
+
+127
+00:10:58,000 --> 00:11:02,000
+in which it carries serious responsibility may go awry.
+
+128
+00:11:03,000 --> 00:11:08,000
+And this is done by declaring that logging goes bound to zones and build phases.
+
+129
+00:11:09,000 --> 00:11:12,000
+Grunion goal represents a specific task.
+
+130
+00:11:12,000 --> 00:11:18,000
+Farmers in the field face which contributes to the building and the management of the project.
+
+131
+00:11:19,000 --> 00:11:25,000
+It may be bound to zero or more build phases and go not bound to any build.
+
+132
+00:11:25,000 --> 00:11:31,000
+Phase could be executed outside of the build life lifecycle, but direct invocation.
+
+133
+00:11:31,000 --> 00:11:38,000
+The order of execution depends on the order in which it goals and the build phases are involved.
+
+134
+00:11:39,000 --> 00:11:46,000
+Once the slide, you can see an example is a green and package arguments are build phases, while the
+
+135
+00:11:46,000 --> 00:11:50,000
+dependency copy dependencies is a goal of logging.
+
+136
+00:11:51,000 --> 00:11:59,000
+If this were to be executed, 16 phase will be executed first, meaning it will run all preceding phases
+
+137
+00:11:59,000 --> 00:12:09,000
+of the green lifecycle, plus the green phase itself and then a dependency copy dependencies goal before
+
+138
+00:12:09,000 --> 00:12:11,000
+finally executing the package phase.
+
+139
+00:12:12,000 --> 00:12:16,000
+And all is proceeding build phases of the default lifecycle.
+
+140
+00:12:16,000 --> 00:12:24,000
+Moreover, if a goal is bound to one or more build phases, that goal will be called in all those phases
+
+141
+00:12:25,000 --> 00:12:31,000
+first and more, and build phase can also have zero or more goals bounded.
+
+142
+00:12:31,000 --> 00:12:37,000
+If a build phase has no goals bound to Z, build phase will not execute.
+
+143
+00:12:38,000 --> 00:12:47,000
+But even as one or more goals mounted, it will execute all those goals and even plug in is a group
+
+144
+00:12:47,000 --> 00:12:48,000
+of goals.
+
+145
+00:12:48,000 --> 00:12:53,000
+However, these goals are not necessarily all bound to the same case.
+
+146
+00:12:54,000 --> 00:13:01,000
+One of the key concepts that stands behind the whole MAVEN philosophy is convention over configuration
+
+147
+00:13:02,000 --> 00:13:02,000
+problems.
+
+148
+00:13:02,000 --> 00:13:08,000
+This is not the first time you hear about this concept and this high level overview now a general lesson
+
+149
+00:13:08,000 --> 00:13:12,000
+about the use of animation tools, whether there's time to dive deeper.
+
+150
+00:13:13,000 --> 00:13:19,000
+The concept is simple without requiring unnecessary configuration systems.
+
+151
+00:13:19,000 --> 00:13:26,000
+Should just roll maven incorporate this concept by providing sensible default behavior for projects
+
+152
+00:13:26,000 --> 00:13:28,000
+without any additional configuration.
+
+153
+00:13:29,000 --> 00:13:35,000
+There is an assumption that the following items are located in the related folders, namely like you
+
+154
+00:13:35,000 --> 00:13:36,000
+see on the slide.
+
+155
+00:13:37,000 --> 00:13:44,000
+So schools should be placed in their SIAC main Java source folder, their source code should be placed
+
+156
+00:13:44,000 --> 00:13:46,000
+in C main tests and so on.
+
+157
+00:13:47,000 --> 00:13:55,000
+Tom X-Mode file is located on the top level is a target directory is used to house all output of the
+
+158
+00:13:55,000 --> 00:13:56,000
+built.
+
+159
+00:13:56,000 --> 00:14:04,000
+MAVEN assumes that you want to compile byte code to target classes and then create a distributable jar
+
+160
+00:14:04,000 --> 00:14:06,000
+file in Target's folder.
+
+161
+00:14:07,000 --> 00:14:12,000
+While this might seem trivial, let's compare a bunch of maven with a bar chart.
+
+162
+00:14:12,000 --> 00:14:19,000
+You know that you could feel the difference because here the fact is that most and based bills have
+
+163
+00:14:19,000 --> 00:14:26,000
+to define the locations of these directories, and they should be defined manually by developer and
+
+164
+00:14:26,000 --> 00:14:30,000
+commands to compile code and store compiled losses.
+
+165
+00:14:31,000 --> 00:14:38,000
+This is also a piece of script that should be written manually and doesn't ship with any built in idea
+
+166
+00:14:38,000 --> 00:14:41,000
+of where source code or resources might be in the project.
+
+167
+00:14:42,000 --> 00:14:44,000
+You have to supply this information.
+
+168
+00:14:45,000 --> 00:14:52,000
+If you follow the conventions, maven will require almost zero for just food, your source is a correct
+
+169
+00:14:52,000 --> 00:14:55,000
+directory and MAVEN will take care of the rest.
+
+170
+00:14:56,000 --> 00:15:04,000
+Maimane's adoption of convention over configuration goes for on just simple directory locations may
+
+171
+00:15:04,000 --> 00:15:10,000
+even score plugins, apply a common set of conventions for compiling source code, packaging distributions,
+
+172
+00:15:11,000 --> 00:15:14,000
+generating websites and many hours of processes.
+
+173
+00:15:15,000 --> 00:15:22,000
+One side effect of using systems that follow convention over configuration is that and users might feel
+
+174
+00:15:22,000 --> 00:15:27,000
+that they are forced to use a particular methodology or approach.
+
+175
+00:15:27,000 --> 00:15:33,000
+While it is certainly true that Maimon has some core opinions that shouldn't be challenged, most of
+
+176
+00:15:33,000 --> 00:15:36,000
+the defaults can be customized.
+
+177
+00:15:36,000 --> 00:15:43,000
+For example, the location of project source code and resources can be customized names so jar files
+
+178
+00:15:43,000 --> 00:15:45,000
+can be customized.
+
+179
+00:15:45,000 --> 00:15:52,000
+And so the development of custom plugins almost any behavior can be tailored to your specific environments
+
+180
+00:15:52,000 --> 00:15:53,000
+or requirements.
+
+181
+00:15:53,000 --> 00:15:59,000
+If you don't care to follow conventions, maybe that will allow you to customize defaults in order to
+
+182
+00:15:59,000 --> 00:16:02,000
+adapt to your specific requirements.
+
+183
+00:16:03,000 --> 00:16:03,000
+Great.
+
+184
+00:16:04,000 --> 00:16:10,000
+You learn some theory about MAVEN already, and I feel like you are getting more and more from you,
+
+185
+00:16:10,000 --> 00:16:10,000
+was it?
+
+186
+00:16:11,000 --> 00:16:13,000
+Let's not have a lot of them.
+
+187
+00:16:13,000 --> 00:16:17,000
+And that will show you how you can so maven on your computer.
+
+188
+00:16:18,000 --> 00:16:24,000
+I need to say that now in this media, I'm going to show you how to install and configure MAVEN on the
+
+189
+00:16:24,000 --> 00:16:26,000
+Windows operating system.
+
+190
+00:16:26,000 --> 00:16:34,000
+If you have Makris non-war, you can find special guards in attachments to the media about details of
+
+191
+00:16:34,000 --> 00:16:36,000
+installation on Mac OS.
+
+192
+00:16:36,000 --> 00:16:41,000
+The first things that we need to do, we need to download maven binaries on our computer.
+
+193
+00:16:42,000 --> 00:16:46,000
+You can start by searching in the internet these keywords.
+
+194
+00:16:46,000 --> 00:16:47,000
+Net load maven.
+
+195
+00:16:48,000 --> 00:16:48,000
+That's it.
+
+196
+00:16:49,000 --> 00:16:56,000
+One of the links suggested will need to maven the Porsche org page is a loved one.
+
+197
+00:16:57,000 --> 00:17:03,000
+Depending on your operating system, the loser was binaries for your system.
+
+198
+00:17:04,000 --> 00:17:05,000
+I have Windows operating system.
+
+199
+00:17:06,000 --> 00:17:09,000
+That's why I will download Zip Archive.
+
+200
+00:17:10,000 --> 00:17:12,000
+Our curve is not too big.
+
+201
+00:17:13,000 --> 00:17:15,000
+It is not adjudicate.
+
+202
+00:17:15,000 --> 00:17:18,000
+Once you download is archive extract.
+
+203
+00:17:24,000 --> 00:17:32,000
+And in the bill folder, you can find them via an application that is our maven, similar to configuring
+
+204
+00:17:32,000 --> 00:17:36,000
+posts for Java, we need to configure MAVEN.
+
+205
+00:17:37,000 --> 00:17:42,000
+Let me remind you quickly find environment variables in your startup menu.
+
+206
+00:17:43,000 --> 00:17:45,000
+Click Environments variables here.
+
+207
+00:17:46,000 --> 00:17:51,000
+I have a Russian version of Windows, but you will see environment variables style here.
+
+208
+00:17:52,000 --> 00:18:02,000
+After that great maven home variable that will lead us to maven full attention not yet to be sold to
+
+209
+00:18:02,000 --> 00:18:08,000
+create new variable click great right and then home.
+
+210
+00:18:08,000 --> 00:18:12,000
+And after that, paste boss the MAVEN folder on your computer.
+
+211
+00:18:13,000 --> 00:18:17,000
+After that, we need the added variable.
+
+212
+00:18:18,000 --> 00:18:21,000
+Finds both verbal and clean added button.
+
+213
+00:18:22,000 --> 00:18:30,000
+We need to add a reference to MBM home slash bin in order we can reference to the maven from any place
+
+214
+00:18:30,000 --> 00:18:32,000
+in our directory tree.
+
+215
+00:18:32,000 --> 00:18:39,000
+This is very important because most likely flood of commands for me and you will invoke from console.
+
+216
+00:18:40,000 --> 00:18:48,000
+Yes, integrated development environments have buttons and use to work with MAVEN, but you can compare
+
+217
+00:18:48,000 --> 00:18:51,000
+this to interactive tools for boys get.
+
+218
+00:18:51,000 --> 00:18:59,000
+If you experienced its user, you can understand what I'm talking about, namely, flexibility and level
+
+219
+00:18:59,000 --> 00:19:05,000
+of syncs that you can manage via interactive tools and common lawn is different.
+
+220
+00:19:05,000 --> 00:19:11,000
+That's why I need to make sure that you configured movement in environments, variables and you will
+
+221
+00:19:11,000 --> 00:19:13,000
+be ready to use it for console.
+
+222
+00:19:13,000 --> 00:19:19,000
+Once you made all necessary changes, create, apply and close all these windows.
+
+223
+00:19:20,000 --> 00:19:25,000
+Now let's open command line to make sure that we configure MAVEN properly.
+
+224
+00:19:26,000 --> 00:19:30,000
+Let's navigate one level up from the folder where and then it's stored.
+
+225
+00:19:31,000 --> 00:19:37,000
+This is important because we need to check that envying commands will work from different directories,
+
+226
+00:19:38,000 --> 00:19:42,000
+not only from the directory where maven application is located.
+
+227
+00:19:43,000 --> 00:19:44,000
+OK.
+
+228
+00:19:44,000 --> 00:19:46,000
+One way to navigate it, one level up.
+
+229
+00:19:46,000 --> 00:19:55,000
+I typed Cindy here to open the command prompt and here called MAVEN Program, whose version option I
+
+230
+00:19:55,000 --> 00:20:00,000
+typed in Space Dash version and press.
+
+231
+00:20:00,000 --> 00:20:05,000
+Enter al-Qaeda's latest version of MAVEN that we configure.
+
+232
+00:20:05,000 --> 00:20:06,000
+It is displayed here.
+
+233
+00:20:06,000 --> 00:20:07,000
+Great.
+
+234
+00:20:07,000 --> 00:20:12,000
+This means we configured MAVEN properly, and we are ready for the following lessons.
+
+235
+00:20:13,000 --> 00:20:15,000
+That's all for this lesson.
+
+236
+00:20:15,000 --> 00:20:17,000
+Let's recap what we have learned today.
+
+237
+00:20:18,000 --> 00:20:22,000
+Let me learn why we need to maven and its main features.
+
+238
+00:20:22,000 --> 00:20:29,000
+Also, we learned basic concepts of MAVEN and you understood what Project Object Model is.
+
+239
+00:20:29,000 --> 00:20:33,000
+Also, we discussed the MAVEN life cycle phrases and goals.
+
+240
+00:20:34,000 --> 00:20:41,000
+I explained you what convention over configuration principal means and the basic course in MAVEN Convention.
+
+241
+00:20:42,000 --> 00:20:47,000
+And at the end of the lesson, we download and install MAVEN on your local computer.
+
+242
+00:20:48,000 --> 00:20:50,000
+Now we are ready for the following lessons.
+
+243
+00:20:51,000 --> 00:20:53,000
+Thank you all for your attention.
+
+244
+00:20:53,000 --> 00:20:56,000
+Have a great day and see you in the next lesson.
+
diff --git a/59 - Apache Maven/001 MacOS-Maven-installation-guide.url b/59 - Apache Maven/001 MacOS-Maven-installation-guide.url
new file mode 100644
index 0000000000000000000000000000000000000000..d9079959cc9183f5c803b03e1a23c8a2c7430770
--- /dev/null
+++ b/59 - Apache Maven/001 MacOS-Maven-installation-guide.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://docs.google.com/document/d/1YuZ5UZK9gkODD5dE5i_7kpXz_YEdyjJj_hbbtAKayjU/edit?usp=sharing
\ No newline at end of file
diff --git a/59 - Apache Maven/001 Maven-Lifecycles-reference.url b/59 - Apache Maven/001 Maven-Lifecycles-reference.url
new file mode 100644
index 0000000000000000000000000000000000000000..1dfd4d30284bd1a073d37215d6ae67e471a0befa
--- /dev/null
+++ b/59 - Apache Maven/001 Maven-Lifecycles-reference.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
\ No newline at end of file
diff --git a/59 - Apache Maven/002 The First Maven Project. Archetypes_en.srt b/59 - Apache Maven/002 The First Maven Project. Archetypes_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..c82c9879eb395cc6e442273162c380a1c55ac178
--- /dev/null
+++ b/59 - Apache Maven/002 The First Maven Project. Archetypes_en.srt
@@ -0,0 +1,1288 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:10,000
+In this lesson, we are going to create our first maven project.
+
+3
+00:00:11,000 --> 00:00:14,000
+We'll start with understanding of maven archetypes.
+
+4
+00:00:14,000 --> 00:00:18,000
+I will explain you, what are they and how we can use them?
+
+5
+00:00:18,000 --> 00:00:22,000
+After that, we're going to create our first maven project.
+
+6
+00:00:22,000 --> 00:00:30,000
+You'll understand what a group I.D. and artifact idea is in maven projects will execute simple commands
+
+7
+00:00:30,000 --> 00:00:38,000
+to validate our MAVEN project, and then we'll put all our attention on the actual file structure on
+
+8
+00:00:38,000 --> 00:00:39,000
+the generated project.
+
+9
+00:00:40,000 --> 00:00:45,000
+And the real omics file will investigate what elements are declared there.
+
+10
+00:00:45,000 --> 00:00:50,000
+We'll go over each element and Paul Maximo and I will explain each of them.
+
+11
+00:00:51,000 --> 00:00:55,000
+Also, we'll teach you how to manage dependencies was our performance file.
+
+12
+00:00:55,000 --> 00:00:58,000
+I will explain what scope of dependencies is.
+
+13
+00:00:59,000 --> 00:01:00,000
+Let's start our lesson.
+
+14
+00:01:01,000 --> 00:01:08,000
+And before jumping to screen sharing and practical examples, I'd like to explain you what maven archetypes
+
+15
+00:01:08,000 --> 00:01:15,000
+are, and maven archetype is defined as an original portal or model from which all other scenes of the
+
+16
+00:01:15,000 --> 00:01:16,000
+same kind are made.
+
+17
+00:01:16,000 --> 00:01:23,000
+In simple words, it is a project template which is combined with some user input to produce a working
+
+18
+00:01:23,000 --> 00:01:30,000
+maven project that has been tailored to the user's requirements based on maven archetype.
+
+19
+00:01:30,000 --> 00:01:32,000
+You can create Oz approaches.
+
+20
+00:01:32,000 --> 00:01:36,000
+This includes basic set of files and folders created.
+
+21
+00:01:37,000 --> 00:01:40,000
+Imagine the Typekit 28 The Great Web Application.
+
+22
+00:01:40,000 --> 00:01:47,000
+There is a separate archetype for web project was configured with folders for web sources was the Poneman
+
+23
+00:01:47,000 --> 00:01:53,000
+descriptor with templates of all maximal files that already describes project object model.
+
+24
+00:01:53,000 --> 00:01:58,000
+The builds were archive and all the things, as you may know, really understand.
+
+25
+00:01:58,000 --> 00:02:04,000
+Archetypes help us to start project cluster or jump to development as soon as possible.
+
+26
+00:02:05,000 --> 00:02:07,000
+Is there a set of predefined archetypes?
+
+27
+00:02:07,000 --> 00:02:10,000
+There is also the possibility to create your own archetype.
+
+28
+00:02:11,000 --> 00:02:18,000
+Ones associated using archetypes provides a great way to enable developers quickly in a consistent way
+
+29
+00:02:18,000 --> 00:02:20,000
+following best practices.
+
+30
+00:02:20,000 --> 00:02:27,000
+Example from real life based on my experience, imagine that you have microservices architecture.
+
+31
+00:02:27,000 --> 00:02:33,000
+In simple words, you have set of applications that are interconnected between each other, but that
+
+32
+00:02:33,000 --> 00:02:40,000
+actually separate applications that may be developed separately, that are built separately, that are
+
+33
+00:02:40,000 --> 00:02:45,000
+deployed separately to and we need to create different microservices.
+
+34
+00:02:45,000 --> 00:02:50,000
+In other words, we have to create and develop different Java Web applications.
+
+35
+00:02:51,000 --> 00:02:57,000
+We invested some time in creating common maven architecture, and after that we could parallel our run
+
+36
+00:02:58,000 --> 00:03:04,000
+because each engineer and my team had maven architecture and it was easy for him to set creation of
+
+37
+00:03:04,000 --> 00:03:07,000
+new service and start implementation first.
+
+38
+00:03:08,000 --> 00:03:13,000
+This is a real example of how even architects helped us to boost development at the earliest stages
+
+39
+00:03:13,000 --> 00:03:14,000
+of the project.
+
+40
+00:03:15,000 --> 00:03:19,000
+Once a slide, you can see just a few examples of predefined maven architects.
+
+41
+00:03:20,000 --> 00:03:22,000
+So let's start our demo.
+
+42
+00:03:22,000 --> 00:03:25,000
+We are going to have a lot of practical activities today.
+
+43
+00:03:25,000 --> 00:03:27,000
+We'll start from creation of MAVEN.
+
+44
+00:03:27,000 --> 00:03:34,000
+Project was architect after that will investigate real slow file, and I'm going to teach you how to
+
+45
+00:03:34,000 --> 00:03:35,000
+manage dependencies was.
+
+46
+00:03:36,000 --> 00:03:43,000
+The first things that you need to do is to make sure that MAVEN is installed on your computer in case
+
+47
+00:03:43,000 --> 00:03:44,000
+you don't have MAVEN installed.
+
+48
+00:03:45,000 --> 00:03:47,000
+Please refer to the previous lessons.
+
+49
+00:03:47,000 --> 00:03:52,000
+Of course, in that lesson, I showed how to install MAVEN on a computer.
+
+50
+00:03:53,000 --> 00:04:00,000
+The next thing we need to do is to define what folder you want to use from even project, especially
+
+51
+00:04:00,000 --> 00:04:05,000
+for this lesson I created for the Discord MAVEN Archetype demo.
+
+52
+00:04:05,000 --> 00:04:08,000
+I will performs and next operations in this folder.
+
+53
+00:04:09,000 --> 00:04:11,000
+Now we need to open the command prompt.
+
+54
+00:04:12,000 --> 00:04:16,000
+You can open seemed in this directory, as I showed in previous lesson.
+
+55
+00:04:17,000 --> 00:04:21,000
+Or if you have a good version, still you can use bus terminal.
+
+56
+00:04:22,000 --> 00:04:28,000
+I'm going to use good bus terminal because it has different colors and in my subjective opinion, is
+
+57
+00:04:28,000 --> 00:04:29,000
+better for visualization.
+
+58
+00:04:30,000 --> 00:04:33,000
+Let me open it this folder.
+
+59
+00:04:33,000 --> 00:04:38,000
+We are going to execute zip file and come on man space.
+
+60
+00:04:39,000 --> 00:04:45,000
+Dash the space archetype column generate space.
+
+61
+00:04:46,000 --> 00:04:53,000
+Dash the group I.D. equals compatibles 090 space.
+
+62
+00:04:54,000 --> 00:05:00,000
+Dash the artifact I.D. equals the maven archetype space.
+
+63
+00:05:01,000 --> 00:05:01,000
+That's the.
+
+64
+00:05:02,000 --> 00:05:08,000
+That artifact I.D. equals to maven archetype, we start space.
+
+65
+00:05:08,000 --> 00:05:13,000
+That's the archetype version equals to one point four.
+
+66
+00:05:14,000 --> 00:05:18,000
+Dyslexia here means run in non-interactive mode.
+
+67
+00:05:19,000 --> 00:05:25,000
+We pass all necessary information from memory to generate project for us, and we don't want to interact
+
+68
+00:05:25,000 --> 00:05:27,000
+with anyone by passing additional information.
+
+69
+00:05:28,000 --> 00:05:34,000
+We just create project was considering our settings without additional questions and pauses.
+
+70
+00:05:34,000 --> 00:05:37,000
+It also disables output colors.
+
+71
+00:05:38,000 --> 00:05:45,000
+After that, we use common to generate project based on market that I write archetypal and generate.
+
+72
+00:05:45,000 --> 00:05:48,000
+This is a goal from the archetype plugin.
+
+73
+00:05:49,000 --> 00:05:55,000
+Now, when you pass multiple parameters to bust multiple parameters, we are common line to maven.
+
+74
+00:05:55,000 --> 00:05:57,000
+We have to use Dash.
+
+75
+00:05:57,000 --> 00:06:01,000
+The parameter name equals sign and parameter value.
+
+76
+00:06:02,000 --> 00:06:10,000
+These stands for defined property is the first properties that we posit is called group, i.e. Ward
+
+77
+00:06:10,000 --> 00:06:18,000
+is Group D and how to create the value of any group and uniquely identifies your project across all
+
+78
+00:06:18,000 --> 00:06:18,000
+projects.
+
+79
+00:06:19,000 --> 00:06:22,000
+Group and you should follow Java's package name rules.
+
+80
+00:06:22,000 --> 00:06:31,000
+This means it starts with a reverse domain name you control, for example, or Apache MAVEN or Apache
+
+81
+00:06:31,000 --> 00:06:31,000
+commands.
+
+82
+00:06:32,000 --> 00:06:34,000
+MAVEN doesn't enforce this rule.
+
+83
+00:06:35,000 --> 00:06:41,000
+Many legacy projects that do not follow this convention and instead use single words groupings.
+
+84
+00:06:42,000 --> 00:06:49,000
+However, it will be difficult to get a new single word approved for inclusion and even central repository.
+
+85
+00:06:50,000 --> 00:06:56,000
+You can create as many subgroups as you want, and good way to determine the granularity of the group
+
+86
+00:06:57,000 --> 00:07:03,000
+is to use the project structure that is is the current project is a multiple module approach.
+
+87
+00:07:03,000 --> 00:07:12,000
+It should happen and you identify as the parents were buggy, for example, or Apache MAVEN or Apache
+
+88
+00:07:12,000 --> 00:07:16,000
+MAVEN plug ins or Apache MAVEN reporting and so on.
+
+89
+00:07:17,000 --> 00:07:20,000
+In our case, I am CEO of People's Company.
+
+90
+00:07:21,000 --> 00:07:24,000
+Also, we have our official domain name.
+
+91
+00:07:24,000 --> 00:07:27,000
+Also, my company has different software products.
+
+92
+00:07:28,000 --> 00:07:32,000
+That's why I need to specify more details group for this project.
+
+93
+00:07:33,000 --> 00:07:37,000
+Separate group idea products in my company is related was none.
+
+94
+00:07:37,000 --> 00:07:39,000
+I.D. Online University.
+
+95
+00:07:40,000 --> 00:07:44,000
+That's why my group will become boost learning.
+
+96
+00:07:45,000 --> 00:07:46,000
+Is it clear?
+
+97
+00:07:47,000 --> 00:07:55,000
+The next parameter value is an artifact energy that's known what artifact is, artifact is the name
+
+98
+00:07:55,000 --> 00:07:57,000
+of the jar results version.
+
+99
+00:07:57,000 --> 00:08:05,000
+If you created it, then you can choose whatever name you want was lower case letters and no strange
+
+100
+00:08:05,000 --> 00:08:05,000
+symbols.
+
+101
+00:08:06,000 --> 00:08:11,000
+If it is set by the jar, you have two things the name of the jar as it is distributed.
+
+102
+00:08:12,000 --> 00:08:18,000
+In this particular case, I can say that none of the university has different products.
+
+103
+00:08:19,000 --> 00:08:21,000
+This is mobile application for my students.
+
+104
+00:08:22,000 --> 00:08:26,000
+This is also different courses, different demo projects and so on and so forth.
+
+105
+00:08:27,000 --> 00:08:31,000
+That's why let's come up with unique artifact for this project.
+
+106
+00:08:32,000 --> 00:08:34,000
+Let's call it MAVEN Architect.
+
+107
+00:08:34,000 --> 00:08:35,000
+Great.
+
+108
+00:08:36,000 --> 00:08:39,000
+The next parameter is Archetype Artifact ID.
+
+109
+00:08:40,000 --> 00:08:42,000
+Here we need to pass the idea of the archetype.
+
+110
+00:08:43,000 --> 00:08:48,000
+In other words, moving project template that we are going to use for new project generation.
+
+111
+00:08:49,000 --> 00:08:55,000
+In this case, I use predefined maven archetype that is called MAVEN Archetype Quickstart.
+
+112
+00:08:56,000 --> 00:09:03,000
+And the last, but not this parameter value is archetype version nothing 13 different archetypes may
+
+113
+00:09:03,000 --> 00:09:05,000
+have their own version.
+
+114
+00:09:05,000 --> 00:09:09,000
+This parameter lets us set archetypes version.
+
+115
+00:09:10,000 --> 00:09:13,000
+Now we're going to proceed and execute this.
+
+116
+00:09:13,000 --> 00:09:13,000
+Come on.
+
+117
+00:09:14,000 --> 00:09:17,000
+You have to give some time to let us come on to be executed.
+
+118
+00:09:18,000 --> 00:09:18,000
+That's what.
+
+119
+00:09:19,000 --> 00:09:26,000
+And once command has been executed, that's clubs rush to know and see what we have and our finger.
+
+120
+00:09:26,000 --> 00:09:34,000
+We have a folder with the name of our artifact they decorated and what is inside there in the root of
+
+121
+00:09:34,000 --> 00:09:36,000
+the project, we have all mixed.
+
+122
+00:09:37,000 --> 00:09:40,000
+This configuration file and SLC folder.
+
+123
+00:09:41,000 --> 00:09:47,000
+That means we can check was our main project is valid but executed and commands from this directory
+
+124
+00:09:48,000 --> 00:09:51,000
+that's not engaged in our terminal to this folder.
+
+125
+00:09:52,000 --> 00:09:57,000
+I thought Sydney Space more than first thought.
+
+126
+00:09:57,000 --> 00:10:03,000
+Another other suggestion would finish that folder named after navigating to this directory.
+
+127
+00:10:03,000 --> 00:10:05,000
+I type and then validate.
+
+128
+00:10:06,000 --> 00:10:13,000
+You remember, what validates means this is a phase in Maimon default lifecycle that validates if the
+
+129
+00:10:13,000 --> 00:10:17,000
+project is correct and all necessary information is available.
+
+130
+00:10:17,000 --> 00:10:24,000
+I press enter key and once command is executed, we see it build success massive.
+
+131
+00:10:25,000 --> 00:10:31,000
+That means MAVEN managed to build the app, and that means all necessary information is present.
+
+132
+00:10:32,000 --> 00:10:40,000
+Now let's mitigate together form similar file and what it s what the Fulwell Mr. Gates the signal generated.
+
+133
+00:10:41,000 --> 00:10:44,000
+Let's learn more details about chromosomal structure.
+
+134
+00:10:45,000 --> 00:10:52,000
+Well, when you had an overview of what amount is in previous lesson about Mormon basics, if you didn't
+
+135
+00:10:52,000 --> 00:10:56,000
+watch that lesson, please make sure you watch it.
+
+136
+00:10:57,000 --> 00:11:04,000
+This is important in order to understand this lesson or make similar, contains the project object model
+
+137
+00:11:04,000 --> 00:11:06,000
+for this project.
+
+138
+00:11:06,000 --> 00:11:11,000
+And as you already know, the is a basic unit of work.
+
+139
+00:11:11,000 --> 00:11:18,000
+And maybe this is important to remember because Mamombe is inherently project centric in that Amazon
+
+140
+00:11:18,000 --> 00:11:21,000
+resource around the notion of a project.
+
+141
+00:11:21,000 --> 00:11:27,000
+Ensure ZIP code contains every important piece of information about your project.
+
+142
+00:11:27,000 --> 00:11:32,000
+And there's essentially a single source of truth for finding and assimilated.
+
+143
+00:11:32,000 --> 00:11:36,000
+The accord you understand as a poem is important.
+
+144
+00:11:37,000 --> 00:11:45,000
+Let's learn one more child Super Bowl The super poem is maybe the default upon all forms inherits from
+
+145
+00:11:45,000 --> 00:11:47,000
+a parent or default.
+
+146
+00:11:48,000 --> 00:11:56,000
+Despite explicitly defined or not, this base poem is known as a super poem and contains values and
+
+147
+00:11:56,000 --> 00:11:57,000
+heritage by default.
+
+148
+00:11:58,000 --> 00:12:06,000
+Even use the effective poem configuration from Super Poem must project configuration to execute the
+
+149
+00:12:06,000 --> 00:12:06,000
+relevant goal.
+
+150
+00:12:07,000 --> 00:12:13,000
+It helps developers to specify minimum configuration detail in based or maximal.
+
+151
+00:12:14,000 --> 00:12:21,000
+Also, configurations can be overridden easily and easy way to look at the default configurations of
+
+152
+00:12:21,000 --> 00:12:24,000
+the Super Bowl use by running the following command.
+
+153
+00:12:25,000 --> 00:12:30,000
+IBM How column effective Deshpande.
+
+154
+00:12:31,000 --> 00:12:39,000
+And now let's learn what minimal information we should specify in our projects about the minimum requirements
+
+155
+00:12:39,000 --> 00:12:48,000
+for a pool as a foreign project that this rule affects the next little file should have a single element
+
+156
+00:12:49,000 --> 00:12:50,000
+in this case.
+
+157
+00:12:50,000 --> 00:12:51,000
+This is project.
+
+158
+00:12:51,000 --> 00:12:57,000
+The model version should be set to four point zero point zero.
+
+159
+00:12:58,000 --> 00:12:59,000
+Why exactly?
+
+160
+00:12:59,000 --> 00:13:03,000
+This value model version is the version of project descriptor.
+
+161
+00:13:03,000 --> 00:13:08,000
+Your firm confirms it needs to be included and is set.
+
+162
+00:13:09,000 --> 00:13:15,000
+The value for point zero point zero just indicate that it's compatible with MAVEN Suite.
+
+163
+00:13:16,000 --> 00:13:23,000
+Group I.D. Zaidi of the Projects Group, you don't really know what it is and the fact that you said
+
+164
+00:13:23,000 --> 00:13:30,000
+you have the artifact or, in other words, right of our project, I believe you also remember this
+
+165
+00:13:30,000 --> 00:13:38,000
+parameter when we created our amazing project was article and version is a version of the artifact under
+
+166
+00:13:38,000 --> 00:13:39,000
+the specified group.
+
+167
+00:13:40,000 --> 00:13:42,000
+You can see example earns a slight.
+
+168
+00:13:43,000 --> 00:13:48,000
+Apple requires that its group I.D. artifact, a new version, be configured.
+
+169
+00:13:49,000 --> 00:13:54,000
+These three values forms of products fully qualified artifact name.
+
+170
+00:13:55,000 --> 00:14:00,000
+This is a form of group I.D. called Artifact I.D. version.
+
+171
+00:14:01,000 --> 00:14:04,000
+As for the example above, it's fully qualified.
+
+172
+00:14:04,000 --> 00:14:11,000
+Certified name is Call My Company app my app one.
+
+173
+00:14:12,000 --> 00:14:19,000
+And in case the configuration details are not specified, MAVEN will use its defaults, one of these
+
+174
+00:14:19,000 --> 00:14:22,000
+default values is the packaging type.
+
+175
+00:14:22,000 --> 00:14:25,000
+Every MAVEN project has a packaging type.
+
+176
+00:14:25,000 --> 00:14:31,000
+If it is not specified in zip code zones, the default value jar would be used.
+
+177
+00:14:32,000 --> 00:14:38,000
+Now, let's get back to our poem Axolotl Files that was generated based on that archetype.
+
+178
+00:14:39,000 --> 00:14:46,000
+These were a single bomb, but still displays the key elements every bomb contains, some of them we
+
+179
+00:14:46,000 --> 00:14:51,000
+already reviewed in the journals of Project Generation with the help of Target that put Ford unions
+
+180
+00:14:51,000 --> 00:14:54,000
+a slide review of minimum possible bomb x amount.
+
+181
+00:14:55,000 --> 00:15:02,000
+But still, let's recap this information and see how everything is look like in real form of small file.
+
+182
+00:15:03,000 --> 00:15:08,000
+Let me walk you through each elements to familiarize you with the poem essentials.
+
+183
+00:15:09,000 --> 00:15:15,000
+The first one here is called Prologue that is something specific to ExxonMobil documents in general,
+
+184
+00:15:16,000 --> 00:15:23,000
+but not on the specific poem ExxonMobil in the prologue for what specific version of excellence and
+
+185
+00:15:24,000 --> 00:15:26,000
+quoting project.
+
+186
+00:15:26,000 --> 00:15:30,000
+This is the root element in all mainland comics and files.
+
+187
+00:15:30,000 --> 00:15:38,000
+This stock has different attributes, namely specification of the namespace and schema definition for
+
+188
+00:15:38,000 --> 00:15:39,000
+external validation.
+
+189
+00:15:39,000 --> 00:15:41,000
+We're going to learn this kind of details.
+
+190
+00:15:41,000 --> 00:15:44,000
+One little was you x amount as a separate topic.
+
+191
+00:15:45,000 --> 00:15:51,000
+Another version we already reviewed it just seven months indicates what version of the object model
+
+192
+00:15:51,000 --> 00:15:53,000
+this form is using.
+
+193
+00:15:53,000 --> 00:16:01,000
+The version of the model itself changes very infrequently, but it is mandatory in order to ensure stability
+
+194
+00:16:01,000 --> 00:16:08,000
+of use if and when the maven developers deem it necessary to change the model go by.
+
+195
+00:16:08,000 --> 00:16:12,000
+This element indicates a unique identifier of zircon zation.
+
+196
+00:16:12,000 --> 00:16:14,000
+Or is it created?
+
+197
+00:16:14,000 --> 00:16:21,000
+The project is a group is one of the key identifiers of project and is typically based on the fully
+
+198
+00:16:21,000 --> 00:16:23,000
+qualified domain name of the organization.
+
+199
+00:16:24,000 --> 00:16:29,000
+We already review tools for different examples of group i.e., artifact.
+
+200
+00:16:29,000 --> 00:16:37,000
+This sentiment indicates the name of the primary artifact being generated by this project is a primary
+
+201
+00:16:37,000 --> 00:16:40,000
+artifact for a project is typically a jar file.
+
+202
+00:16:41,000 --> 00:16:47,000
+Second, artifacts like source bundles also use the artifact, i.e. as part of their final name.
+
+203
+00:16:47,000 --> 00:16:55,000
+A typical artifact produced by MAVEN would have the form artifact version extension.
+
+204
+00:16:56,000 --> 00:16:59,000
+For example, my at one point zero jar.
+
+205
+00:17:00,000 --> 00:17:07,000
+Version, this element indicates a version of the artifact generated by the project maven goes a long
+
+206
+00:17:07,000 --> 00:17:13,000
+way to help you as a version management, and you will often see the snapshot designate in a version
+
+207
+00:17:14,000 --> 00:17:17,000
+which indicates that the project is in state of development.
+
+208
+00:17:18,000 --> 00:17:25,000
+Name this settlement indicates that the spray name used for the project, this is often used in MAVEN's
+
+209
+00:17:25,000 --> 00:17:29,000
+generated documentation, you're out.
+
+210
+00:17:29,000 --> 00:17:33,000
+This settlement indicates where the project site can be found.
+
+211
+00:17:34,000 --> 00:17:37,000
+This is often used in Maimane's generating documentation.
+
+212
+00:17:38,000 --> 00:17:39,000
+Here you can get yourself.
+
+213
+00:17:39,000 --> 00:17:42,000
+I mean, there was a common X-amount file.
+
+214
+00:17:43,000 --> 00:17:50,000
+We're also going to stand now, and you're going to learn that syntax for commas is similar for X Amount
+
+215
+00:17:50,000 --> 00:17:51,000
+H stamp.
+
+216
+00:17:52,000 --> 00:17:59,000
+You can use these characters where your comment begins and these characters were your common sense.
+
+217
+00:18:00,000 --> 00:18:06,000
+Properties, this settlement contains value place holders accessible anywhere within the park.
+
+218
+00:18:06,000 --> 00:18:14,000
+You can see that by default, the three properties generated by default, Mallon uses Java version seven
+
+219
+00:18:14,000 --> 00:18:15,000
+for Kampala.
+
+220
+00:18:15,000 --> 00:18:19,000
+We can change the Java version 11 16 17.
+
+221
+00:18:20,000 --> 00:18:22,000
+Whatever works the best for you.
+
+222
+00:18:22,000 --> 00:18:28,000
+Usually, you can specify here properties that you are going to use across your palm axonal.
+
+223
+00:18:28,000 --> 00:18:33,000
+For example, spring version will be used in numerous dependencies.
+
+224
+00:18:33,000 --> 00:18:35,000
+Now, it should stay consistent.
+
+225
+00:18:36,000 --> 00:18:40,000
+You can change the value of one property that is used across your comics, IMO.
+
+226
+00:18:40,000 --> 00:18:47,000
+Dubbed its version of dependencies inside the document, you can refer to property with the help of
+
+227
+00:18:47,000 --> 00:18:48,000
+expression language.
+
+228
+00:18:49,000 --> 00:18:54,000
+You use dollars, so bracket property name and close the bracket.
+
+229
+00:18:55,000 --> 00:18:58,000
+The next element is dependencies.
+
+230
+00:18:58,000 --> 00:19:04,000
+We're going to talk a little bit more about this section since it is used relatively often.
+
+231
+00:19:04,000 --> 00:19:13,000
+This store in itself, least of dependency elements currently under one dependency specified since we
+
+232
+00:19:13,000 --> 00:19:14,000
+have just generated one project.
+
+233
+00:19:15,000 --> 00:19:21,000
+This is the section where you as developer most likely will purchase the grades and most because we
+
+234
+00:19:21,000 --> 00:19:26,000
+they exist parts of summer relatively more often than other parts.
+
+235
+00:19:27,000 --> 00:19:34,000
+There might be two types of dependencies direct transit, direct dependencies, other ones that are
+
+236
+00:19:34,000 --> 00:19:36,000
+explicitly included in the project.
+
+237
+00:19:37,000 --> 00:19:43,000
+These can be included things a project using dependency dogs like we see G-Unit here.
+
+238
+00:19:44,000 --> 00:19:52,000
+Transitive dependencies on the other dependencies required by our direct dependencies required.
+
+239
+00:19:52,000 --> 00:19:56,000
+Transitive dependencies are automatically included in our project by MAVEN.
+
+240
+00:19:57,000 --> 00:20:04,000
+For example, if you're a student, of course, you should remember that when we learned this topic
+
+241
+00:20:04,000 --> 00:20:10,000
+and we wanted to add G-Unit ClassPass, it didn't work with the Congress Library.
+
+242
+00:20:10,000 --> 00:20:15,000
+In this case, Humphreys is a transit dependency.
+
+243
+00:20:15,000 --> 00:20:20,000
+This required for G-Unit and May one will handle its download automatically.
+
+244
+00:20:21,000 --> 00:20:25,000
+In case you want to see the whole dependency graph, there is a separate may.
+
+245
+00:20:25,000 --> 00:20:29,000
+Well, come on, let's see the all dependencies for our project.
+
+246
+00:20:30,000 --> 00:20:36,000
+I open terminal and times of full come on Ambien dependency column three.
+
+247
+00:20:41,000 --> 00:20:49,000
+And you can see that two dependencies now, Ziya direct dependency unit and transitive dependency from
+
+248
+00:20:49,000 --> 00:20:51,000
+Chris, can you see it here?
+
+249
+00:20:52,000 --> 00:20:55,000
+And in our poll maximo, we have only direct dependency.
+
+250
+00:20:55,000 --> 00:20:56,000
+Specify.
+
+251
+00:20:57,000 --> 00:21:04,000
+If you are a student of my job, of course, you should remember that sometimes with a lot of libraries,
+
+252
+00:21:04,000 --> 00:21:11,000
+some even central repository from now on, instead of the learning jars and Eddins and manually Project
+
+253
+00:21:11,000 --> 00:21:15,000
+ClassPass will compel management to download them for us.
+
+254
+00:21:15,000 --> 00:21:17,000
+Let me show you quickly.
+
+255
+00:21:18,000 --> 00:21:22,000
+Let's imagine that we need to market the library to our project.
+
+256
+00:21:22,000 --> 00:21:25,000
+I open Google and type my kids amazement maven wrapper.
+
+257
+00:21:26,000 --> 00:21:29,000
+I open the link suggested I select my paper version.
+
+258
+00:21:30,000 --> 00:21:35,000
+After that, I just click here and minimum configuration is copied as a clipboard.
+
+259
+00:21:36,000 --> 00:21:40,000
+After that, I just paste it in my dependency section of my Palm X amount.
+
+260
+00:21:41,000 --> 00:21:46,000
+That's how easily I can manage dependencies was minimum for learning a little bit.
+
+261
+00:21:47,000 --> 00:21:54,000
+But now I believe we can easily fix for Martin and add or spaces just to keep them beautiful.
+
+262
+00:21:55,000 --> 00:22:02,000
+Each dependency as Group ID, artsy fartsy version and optionally, we can specify scope.
+
+263
+00:22:02,000 --> 00:22:04,000
+What is the scope?
+
+264
+00:22:05,000 --> 00:22:12,000
+Dependency scopes can help us to manage dependencies in different bills, depending on the goal we want
+
+265
+00:22:12,000 --> 00:22:12,000
+to execute.
+
+266
+00:22:13,000 --> 00:22:19,000
+Maimon can understand whether we need to include parents in the bill or we should leave it outside of
+
+267
+00:22:19,000 --> 00:22:20,000
+the final package.
+
+268
+00:22:21,000 --> 00:22:23,000
+Maimon has 60 full dependencies.
+
+269
+00:22:23,000 --> 00:22:31,000
+Scopes Ziya compile provided runtime test system impart.
+
+270
+00:22:31,000 --> 00:22:39,000
+Let's briefly review each of these compile is the full scope one, though, as the scope is provided
+
+271
+00:22:40,000 --> 00:22:47,000
+dependencies with this call available on the ClassPass of the project in all billed tasks and their
+
+272
+00:22:47,000 --> 00:22:55,000
+propagate dependent projects provided scope is used to log dependencies that should be provided at their
+
+273
+00:22:55,000 --> 00:22:57,000
+own time by adjudicate or a container.
+
+274
+00:22:58,000 --> 00:23:06,000
+For example, cigarettes API should be provided by Server Container Rep Server where our application
+
+275
+00:23:06,000 --> 00:23:07,000
+will be deployed.
+
+276
+00:23:07,000 --> 00:23:12,000
+That's why such dependencies so this API will have provided scope.
+
+277
+00:23:13,000 --> 00:23:20,000
+Zip provided dependencies are available only at compile time and is a test across parts of the project.
+
+278
+00:23:21,000 --> 00:23:24,000
+This helps us to avoid compilation errors in our I.D..
+
+279
+00:23:25,000 --> 00:23:32,000
+The work was serviced because Maimane's sees that we are that bugs is dependency and it will get provided
+
+280
+00:23:32,000 --> 00:23:33,000
+later.
+
+281
+00:23:34,000 --> 00:23:41,000
+Is that the process was the wrong timescale required at the wrong time, but then it's needed for completion
+
+282
+00:23:41,000 --> 00:23:41,000
+on the project.
+
+283
+00:23:42,000 --> 00:23:46,000
+Because of that, Dependencies Smart was around time.
+
+284
+00:23:46,000 --> 00:23:53,000
+Scope will present in the runtime and test ClassPass, but Z will be missing from compile ClassPass.
+
+285
+00:23:53,000 --> 00:23:59,000
+Plus a good example of dependencies that should be used as a runtime scope is a b c driver.
+
+286
+00:24:00,000 --> 00:24:07,000
+If you remember GBC topic that's been learned in my Java course when you did a b c driver, one program
+
+287
+00:24:07,000 --> 00:24:11,000
+already started and we need to upload the driver into the given.
+
+288
+00:24:12,000 --> 00:24:19,000
+Is it that Tesco was used to indicate dependency isn't required, a standard runtime of the application,
+
+289
+00:24:20,000 --> 00:24:22,000
+but is used only for tax purposes?
+
+290
+00:24:23,000 --> 00:24:31,000
+That's why they exist only for our fast moving goals and absent in final application built.
+
+291
+00:24:31,000 --> 00:24:37,000
+The standard to use case for this scope is an test library range, a unique application.
+
+292
+00:24:38,000 --> 00:24:41,000
+The system scope is much similar to provide a scope.
+
+293
+00:24:42,000 --> 00:24:49,000
+The main difference between those two scopes is that system requires us to directly point to a specific
+
+294
+00:24:49,000 --> 00:24:50,000
+jar on the system.
+
+295
+00:24:51,000 --> 00:24:53,000
+The system scope is deprecated.
+
+296
+00:24:53,000 --> 00:24:57,000
+The important thing to remember is that millions of project systems go.
+
+297
+00:24:57,000 --> 00:25:05,000
+Dependencies may fail on different machines if dependencies on those present or are located in a different
+
+298
+00:25:05,000 --> 00:25:08,000
+place than the one system, for instance.
+
+299
+00:25:09,000 --> 00:25:16,000
+The input scope was edited in May when two point zero point nine and it's only available for the dependency
+
+300
+00:25:16,000 --> 00:25:17,000
+Tharp form.
+
+301
+00:25:17,000 --> 00:25:20,000
+We're going to do it in the following lessons.
+
+302
+00:25:21,000 --> 00:25:27,000
+Ian Berg indicates that this dependency should be replaced with all affected dependencies declared in
+
+303
+00:25:27,000 --> 00:25:28,000
+the past.
+
+304
+00:25:29,000 --> 00:25:36,000
+Once the slide, you can see examples of different dependency tags that so what you need to know about
+
+305
+00:25:36,000 --> 00:25:37,000
+scope of dependencies.
+
+306
+00:25:38,000 --> 00:25:41,000
+Let's get back to review of our maximum.
+
+307
+00:25:42,000 --> 00:25:48,000
+So we have reviewed almost all elements from our poll mix among the last but not the least of a month,
+
+308
+00:25:48,000 --> 00:25:51,000
+and this file is built among.
+
+309
+00:25:52,000 --> 00:25:58,000
+Neil Diamond handling things like declaring your product directory structure and managing plugins,
+
+310
+00:25:58,000 --> 00:26:00,000
+you can seize it and sign deals.
+
+311
+00:26:00,000 --> 00:26:06,000
+We have plugins element that source array of log elements during the course.
+
+312
+00:26:06,000 --> 00:26:09,000
+We're going to use different plugins here.
+
+313
+00:26:10,000 --> 00:26:11,000
+That's all for this lesson.
+
+314
+00:26:11,000 --> 00:26:19,000
+Let's recap what we have learned today in this lesson we have learned with maven archetypes are we created
+
+315
+00:26:19,000 --> 00:26:20,000
+our first name of code?
+
+316
+00:26:20,000 --> 00:26:22,000
+You know, you'll know what group are you?
+
+317
+00:26:22,000 --> 00:26:27,000
+And Artifacting are also on real example.
+
+318
+00:26:27,000 --> 00:26:34,000
+We learn structure from a single file you learned how to manage dependencies was maimon and the scope
+
+319
+00:26:34,000 --> 00:26:35,000
+of dependencies.
+
+320
+00:26:36,000 --> 00:26:37,000
+That's all for this lesson.
+
+321
+00:26:38,000 --> 00:26:39,000
+Thank you all for your attention.
+
+322
+00:26:39,000 --> 00:26:42,000
+Have a great day and see you in the next lesson.
+
diff --git a/59 - Apache Maven/003 Working with Maven Project_en.srt b/59 - Apache Maven/003 Working with Maven Project_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..79e55c5ec40933ddeb286d6e4a3983905f0625c3
--- /dev/null
+++ b/59 - Apache Maven/003 Working with Maven Project_en.srt
@@ -0,0 +1,984 @@
+1
+00:00:06,000 --> 00:00:08,000
+Hello, Jim, in this lesson we proceed down in.
+
+2
+00:00:09,000 --> 00:00:12,000
+And today we're going to learn a lot of interesting things.
+
+3
+00:00:13,000 --> 00:00:18,000
+Then we're going to learn how to work with maven projects in integrated development environment.
+
+4
+00:00:19,000 --> 00:00:24,000
+You're in Dallas, and I'm going to show you how to create maven projects in Eclipse, how to impersonate
+
+5
+00:00:25,000 --> 00:00:29,000
+projects and how to convert existing general projects into MAVEN.
+
+6
+00:00:29,000 --> 00:00:36,000
+Well, we interviewed directory structure of MAVEN Project, and another important topic that we're
+
+7
+00:00:36,000 --> 00:00:43,000
+going to cover today is how to work with MAVEN builds profiles and what settings ExxonMobile is.
+
+8
+00:00:44,000 --> 00:00:45,000
+Let's start our lesson.
+
+9
+00:00:46,000 --> 00:00:54,000
+First lesson we created was you our first MAVEN project, and I'd like to highlight that this is important
+
+10
+00:00:54,000 --> 00:01:00,000
+to you watching previous lesson because in this video, we're going to use project created in previous
+
+11
+00:01:00,000 --> 00:01:00,000
+lesson.
+
+12
+00:01:01,000 --> 00:01:06,000
+Let me start screen sharing and show you all points from our agenda on real examples.
+
+13
+00:01:07,000 --> 00:01:14,000
+We're going to start from understanding of how we can add MAVEN project in our integrated development
+
+14
+00:01:14,000 --> 00:01:17,000
+environment, then different ways to do so.
+
+15
+00:01:18,000 --> 00:01:22,000
+Some of them are great maven project from scratch.
+
+16
+00:01:22,000 --> 00:01:29,000
+The first things that I'd like to show you is how to create MAVEN project in the IDA, no matter what
+
+17
+00:01:29,000 --> 00:01:30,000
+idea you use.
+
+18
+00:01:30,000 --> 00:01:35,000
+Leap's or intelligent as a way of creating maven projects is similar.
+
+19
+00:01:36,000 --> 00:01:41,000
+As I explained in the intro lesson, I'm going to use Eclipse for demo purposes.
+
+20
+00:01:41,000 --> 00:01:46,000
+You are more than welcome to use Eclipse two or intelligencia if you wish.
+
+21
+00:01:46,000 --> 00:01:51,000
+Whatever you like the most, I recommend you to switch eclipse perspective.
+
+22
+00:01:52,000 --> 00:01:59,000
+If you remember, Eclipse has different set of icons and views, configure it depending on what perspective
+
+23
+00:01:59,000 --> 00:01:59,000
+you use.
+
+24
+00:02:00,000 --> 00:02:06,000
+Standard Java perspective doesn't have too much options related to MAVEN in the standard file menu.
+
+25
+00:02:07,000 --> 00:02:14,000
+That's why let's change perspective together the Java EE the change perspective I have to click on this
+
+26
+00:02:14,000 --> 00:02:17,000
+icon and select Java EE.
+
+27
+00:02:17,000 --> 00:02:25,000
+This is default perspective, but just in case you already had Java perspective open now would change
+
+28
+00:02:25,000 --> 00:02:26,000
+it back to.
+
+29
+00:02:27,000 --> 00:02:36,000
+After changing perspectives, navigate the file menu and let's see what we have on the new Wow.
+
+30
+00:02:36,000 --> 00:02:40,000
+We have really a lot of different options that we didn't have before.
+
+31
+00:02:41,000 --> 00:02:49,000
+Great new GP Project Genie Project Enterprise Application Project And now we have quick access to creation
+
+32
+00:02:49,000 --> 00:02:50,000
+of MAVEN Project from here.
+
+33
+00:02:51,000 --> 00:02:57,000
+Let's click on it, and I'm going to show you how to create MAVEN Project from Eclipse.
+
+34
+00:02:57,000 --> 00:03:02,000
+On the first page, we have to select location for the Future MAVEN project.
+
+35
+00:03:02,000 --> 00:03:10,000
+We can use the location of our workspace employee next year and this list you can select MAVEN Architecture.
+
+36
+00:03:11,000 --> 00:03:15,000
+Give us some time to load in case you see nothing in here.
+
+37
+00:03:15,000 --> 00:03:21,000
+And if you type quick, start the font archetype that you used in previous lesson.
+
+38
+00:03:21,000 --> 00:03:28,000
+You are going to find a lot of different archetypes that contain Quickstart in their names.
+
+39
+00:03:29,000 --> 00:03:34,000
+Can you see this in order to find the same archetype we used in the previous lesson?
+
+40
+00:03:35,000 --> 00:03:38,000
+We need to tabs the whole name of the archetype.
+
+41
+00:03:38,000 --> 00:03:43,000
+Let's style maven dash archetype dash.
+
+42
+00:03:43,000 --> 00:03:49,000
+We start and you can see here's an archetype we were looking for.
+
+43
+00:03:49,000 --> 00:03:52,000
+Let's selected and click next.
+
+44
+00:03:52,000 --> 00:03:56,000
+Here you can configure Group I.D. and Artifact I.D..
+
+45
+00:03:56,000 --> 00:03:59,000
+You don't really know what it is from this lesson.
+
+46
+00:04:00,000 --> 00:04:08,000
+That's why I don't stop here, and once everything is configured, you have to click finish button and
+
+47
+00:04:08,000 --> 00:04:11,000
+new project is created inside it.
+
+48
+00:04:11,000 --> 00:04:13,000
+Yes, it was easy.
+
+49
+00:04:14,000 --> 00:04:21,000
+Now let's known the way how we can add existing maven project into the idea that soon the project will
+
+50
+00:04:21,000 --> 00:04:22,000
+be created.
+
+51
+00:04:23,000 --> 00:04:26,000
+Very often you will impersonate naval projects in your ID.
+
+52
+00:04:27,000 --> 00:04:33,000
+For example, I will share with you a sample of maven projects that we have learned to work with where
+
+53
+00:04:33,000 --> 00:04:41,000
+we'll keep creating our online store that we already started in our Java course was my students or imagined
+
+54
+00:04:41,000 --> 00:04:45,000
+that I will share was unique to any other project.
+
+55
+00:04:45,000 --> 00:04:46,000
+It doesn't matter at this moment.
+
+56
+00:04:47,000 --> 00:04:54,000
+You will clone the project from the GitHub and after that you will import the in your I.D. or at your
+
+57
+00:04:54,000 --> 00:04:55,000
+work.
+
+58
+00:04:55,000 --> 00:05:01,000
+Your tech lead will share with you a link to the big box and will tell you to add the unit as well.
+
+59
+00:05:01,000 --> 00:05:03,000
+Implements new interface.
+
+60
+00:05:03,000 --> 00:05:11,000
+Now, as it does, in any case, you need to be able to name and project into the import project means
+
+61
+00:05:11,000 --> 00:05:18,000
+creating all necessary configurations in order that I would present the project and would allow with
+
+62
+00:05:18,000 --> 00:05:25,000
+the requisite interactive way, providing you with stools that help to save your time significantly
+
+63
+00:05:26,000 --> 00:05:26,000
+to the.
+
+64
+00:05:27,000 --> 00:05:35,000
+I need to click file after that select input and find in this here existing MAVEN project.
+
+65
+00:05:36,000 --> 00:05:42,000
+You can browse your file system to find the folder where comics and all of the projects you want to
+
+66
+00:05:42,000 --> 00:05:43,000
+import is located.
+
+67
+00:05:44,000 --> 00:05:50,000
+In my particular case, I paused the reference to the project that we created during the previous lesson.
+
+68
+00:05:51,000 --> 00:05:55,000
+And the glimpse is smart enough to find POM Exxon-Mobile.
+
+69
+00:05:55,000 --> 00:06:00,000
+Let's make sure that checkbox is in place and click on this button.
+
+70
+00:06:01,000 --> 00:06:01,000
+That's it.
+
+71
+00:06:02,000 --> 00:06:05,000
+That's how a project is easily imported into our ID.
+
+72
+00:06:07,000 --> 00:06:14,000
+And one more option to configure MAVEN project, and the idea is to convert existing Java project to
+
+73
+00:06:14,000 --> 00:06:15,000
+MAVEN one.
+
+74
+00:06:15,000 --> 00:06:22,000
+For example, here you can see Java projects that they use from a Java course was all examples I can
+
+75
+00:06:22,000 --> 00:06:26,000
+mouse right click and figure convert to Marvel project.
+
+76
+00:06:27,000 --> 00:06:34,000
+After clicking this button and another window will be opened and you will need to enter by the artifact
+
+77
+00:06:34,000 --> 00:06:39,000
+I.D. package, packaging name and some other configurations.
+
+78
+00:06:39,000 --> 00:06:47,000
+And after feeding all necessary information, you just click Finish button and treat your project as
+
+79
+00:06:47,000 --> 00:06:48,000
+MAVEN Project.
+
+80
+00:06:49,000 --> 00:06:55,000
+When Eclipse I.D. treats your project as MAVEN Project, you have new menus severable for you.
+
+81
+00:06:56,000 --> 00:06:58,000
+When you mouse, right click on the project.
+
+82
+00:06:58,000 --> 00:07:02,000
+You have separate menu variables at this moment.
+
+83
+00:07:03,000 --> 00:07:06,000
+To be honest, I have never used this menu to match.
+
+84
+00:07:07,000 --> 00:07:11,000
+Usually, I work with MAVEN via console only one option.
+
+85
+00:07:11,000 --> 00:07:14,000
+Here I find it useful for myself.
+
+86
+00:07:14,000 --> 00:07:17,000
+It is called Updates MAVEN Project.
+
+87
+00:07:17,000 --> 00:07:24,000
+This one is useful for you when you want to for some dependencies that are managed by MAVEN.
+
+88
+00:07:24,000 --> 00:07:26,000
+You open this menu.
+
+89
+00:07:26,000 --> 00:07:31,000
+After that, select this checkbox and press OK button.
+
+90
+00:07:32,000 --> 00:07:38,000
+You need to do this as a first sync when, for example, you change the version of the dependency in
+
+91
+00:07:38,000 --> 00:07:40,000
+your poem x amount.
+
+92
+00:07:40,000 --> 00:07:49,000
+And I shows you compilation errors because some inputs can't be resolved because sometimes that information
+
+93
+00:07:49,000 --> 00:07:52,000
+is cached and not updated automatically.
+
+94
+00:07:53,000 --> 00:07:57,000
+And this is a place that you can use to force updates.
+
+95
+00:07:58,000 --> 00:08:05,000
+Now, you know how to add mainland project into your I.D. Let's now work was an important project that
+
+96
+00:08:05,000 --> 00:08:07,000
+we created since a previous lesson.
+
+97
+00:08:08,000 --> 00:08:12,000
+Let's investigate the directory structure of the projects that we have created.
+
+98
+00:08:13,000 --> 00:08:22,000
+I expands the project and you can see that S. S. Main Java is a source folder and associate test.
+
+99
+00:08:22,000 --> 00:08:24,000
+Java is a source for that, too.
+
+100
+00:08:25,000 --> 00:08:32,000
+Inside source folders, we have base package was name of our group I.D. and then signs.
+
+101
+00:08:33,000 --> 00:08:35,000
+Just example of classes.
+
+102
+00:08:36,000 --> 00:08:39,000
+Here we can find from axonal.
+
+103
+00:08:39,000 --> 00:08:46,000
+Let me show you and put in a stink about Bomb X amount when it first time open from X amount, you can
+
+104
+00:08:46,000 --> 00:08:47,000
+be navigated.
+
+105
+00:08:47,000 --> 00:08:48,000
+Do you like this?
+
+106
+00:08:49,000 --> 00:08:54,000
+That tension that you have different stops here in the bottom there.
+
+107
+00:08:54,000 --> 00:09:04,000
+Overview Dependencies Dependency Iraq effective from Column X amount All these stops are different views
+
+108
+00:09:04,000 --> 00:09:11,000
+of different parts of our Poem X amount, just another level of user experience with small maximum.
+
+109
+00:09:12,000 --> 00:09:14,000
+You can play with these views.
+
+110
+00:09:14,000 --> 00:09:19,000
+For example, try to add and remove some dependencies with this view.
+
+111
+00:09:19,000 --> 00:09:22,000
+Create new properties after playing them.
+
+112
+00:09:22,000 --> 00:09:29,000
+Beat with different tops, you will be ready to give your own answer whether you like this view or not.
+
+113
+00:09:30,000 --> 00:09:33,000
+To be honest, I have never used disease stops very often.
+
+114
+00:09:34,000 --> 00:09:42,000
+Usually, I open the roll call maximum and work directly with Paul Maximo, but it is only up to you
+
+115
+00:09:43,000 --> 00:09:46,000
+which way of home modification you will select.
+
+116
+00:09:47,000 --> 00:09:54,000
+The main thing I want to, you understand is that no matter what you you use, you interact with one
+
+117
+00:09:54,000 --> 00:09:58,000
+single file that the school from X-amount.
+
+118
+00:09:59,000 --> 00:10:05,000
+That's why we're open for maximum by clicking here, and you can adjust this file.
+
+119
+00:10:06,000 --> 00:10:10,000
+The same holds keys for for Martin applied in this kind of files.
+
+120
+00:10:11,000 --> 00:10:18,000
+I press control shift the form of dependency we added each year in the previous lesson.
+
+121
+00:10:19,000 --> 00:10:26,000
+So by this moment, you should understand Maimane's project directory structure, how source folder,
+
+122
+00:10:26,000 --> 00:10:29,000
+second cigarette and how complex similar structure.
+
+123
+00:10:30,000 --> 00:10:36,000
+This will help you even to create MAVEN Project manually without any archaic thought in case of moving
+
+124
+00:10:36,000 --> 00:10:37,000
+it.
+
+125
+00:10:38,000 --> 00:10:39,000
+We learned a lot already.
+
+126
+00:10:40,000 --> 00:10:43,000
+And let me explain you now more advanced concepts.
+
+127
+00:10:44,000 --> 00:10:48,000
+Let's learn how to configure, maven and build profiles.
+
+128
+00:10:49,000 --> 00:10:55,000
+I already need a high level overview of what meal prep profiles are when we reviewed features of MAVEN.
+
+129
+00:10:56,000 --> 00:11:01,000
+But now let's review this feature and details and whiz example of configuration.
+
+130
+00:11:02,000 --> 00:11:09,000
+MAVEN profiles can be used to create customized build configurations like targets and a level of discipline
+
+131
+00:11:09,000 --> 00:11:13,000
+and clarity or a specific deployment environment.
+
+132
+00:11:13,000 --> 00:11:20,000
+MAVEN builds profiles enabling you to build your project using different configurations instead of creating
+
+133
+00:11:20,000 --> 00:11:22,000
+two separate profiles.
+
+134
+00:11:22,000 --> 00:11:29,000
+You can just specify a profile was a different view configuration and build your project with this build
+
+135
+00:11:29,000 --> 00:11:31,000
+profile when needed.
+
+136
+00:11:31,000 --> 00:11:38,000
+For example, you can have configuration for development, build configuration for any build configuration
+
+137
+00:11:38,000 --> 00:11:45,000
+for these build, and then want to remind you that heaven builds with different configurations is arguable
+
+138
+00:11:45,000 --> 00:11:50,000
+topic and is not considered in London as a best practice.
+
+139
+00:11:51,000 --> 00:11:54,000
+In the lesson about maven basics, I explained why.
+
+140
+00:11:55,000 --> 00:12:03,000
+MAVEN builds profiles as specified in sites on file inside the profiles element, each build profile
+
+141
+00:12:03,000 --> 00:12:06,000
+is a nested inside the profile element.
+
+142
+00:12:07,000 --> 00:12:13,000
+You can find an example of this, like a build profile describes what changes should be made to the
+
+143
+00:12:14,000 --> 00:12:17,000
+file when executing on the Z build profile.
+
+144
+00:12:18,000 --> 00:12:26,000
+This could be changing the application configuration file to use, etc. The elements inside the profile
+
+145
+00:12:26,000 --> 00:12:29,000
+element will override the values of the elements.
+
+146
+00:12:29,000 --> 00:12:35,000
+It was the same name from the absolute in the column within each profile element.
+
+147
+00:12:35,000 --> 00:12:44,000
+We can configure many elements such as dependencies, plugins, resources, final name inside the profile
+
+148
+00:12:44,000 --> 00:12:44,000
+element.
+
+149
+00:12:44,000 --> 00:12:47,000
+You can see an activation element.
+
+150
+00:12:48,000 --> 00:12:54,000
+This element describes a condition that triggers this builds profile to be used.
+
+151
+00:12:54,000 --> 00:13:00,000
+One way to choose what profile is being executed is in the Settings XML file.
+
+152
+00:13:00,000 --> 00:13:02,000
+What is setting six small file?
+
+153
+00:13:03,000 --> 00:13:06,000
+This is the first time you hear the name of this file in the course.
+
+154
+00:13:07,000 --> 00:13:09,000
+I'm going to explain you in a minute.
+
+155
+00:13:09,000 --> 00:13:13,000
+What if this was the example of build profile?
+
+156
+00:13:13,000 --> 00:13:20,000
+Another way to activate profile is to add DSB profile name to the MAVEN command line.
+
+157
+00:13:21,000 --> 00:13:29,000
+On this slide, you can see example of package command was their profile and the end package that should
+
+158
+00:13:29,000 --> 00:13:30,000
+be death.
+
+159
+00:13:31,000 --> 00:13:35,000
+In the moment, version three, look at profiles in different places.
+
+160
+00:13:36,000 --> 00:13:44,000
+They are project specific profiles go into the projects for maximum file user specific profiles, go
+
+161
+00:13:44,000 --> 00:13:50,000
+into the user settings section of the file and we are going to learn what is Settings XML file in the
+
+162
+00:13:50,000 --> 00:13:51,000
+middle.
+
+163
+00:13:51,000 --> 00:13:59,000
+The global profiles go into the global settings XML file, but remember my recommendations?
+
+164
+00:13:59,000 --> 00:14:05,000
+You have to try to configure profiles and the maximum whenever possible.
+
+165
+00:14:05,000 --> 00:14:14,000
+The reason is that we want to use profiles both on our development machines and on veldt machines.
+
+166
+00:14:14,000 --> 00:14:21,000
+Using the setting sex symbol is more difficult and error prone as we have to distribute it across built
+
+167
+00:14:21,000 --> 00:14:23,000
+environments ourselves.
+
+168
+00:14:24,000 --> 00:14:31,000
+Instead of passing profile as a comment to me, when you can activate one of the profiles by default
+
+169
+00:14:31,000 --> 00:14:38,000
+on this slide, you can see an example of active by default option for depth profile.
+
+170
+00:14:39,000 --> 00:14:47,000
+As in our previous example, you can put profiles below version that besides that you have technical
+
+171
+00:14:47,000 --> 00:14:55,000
+possibility to activate profile based on property and based on the geeky version, some examples you
+
+172
+00:14:55,000 --> 00:14:56,000
+can see on the slide.
+
+173
+00:14:57,000 --> 00:15:04,000
+And the first example you can see that I can activate its profile based on the property in case property
+
+174
+00:15:04,000 --> 00:15:05,000
+is false.
+
+175
+00:15:06,000 --> 00:15:07,000
+Zero The execution of May one.
+
+176
+00:15:07,000 --> 00:15:08,000
+Come on.
+
+177
+00:15:09,000 --> 00:15:11,000
+Zoom profile specified is selected.
+
+178
+00:15:12,000 --> 00:15:17,000
+We can specify reverse condition in case the property is absent.
+
+179
+00:15:18,000 --> 00:15:21,000
+We should apply this profile and pay attention.
+
+180
+00:15:21,000 --> 00:15:25,000
+All these conditions are specified in the Activation tab.
+
+181
+00:15:26,000 --> 00:15:34,000
+We can also configure it in a way to select profile in case property will have specific value or in
+
+182
+00:15:34,000 --> 00:15:41,000
+case value, you will get Aussies and specify I use exclamation mark for inversion.
+
+183
+00:15:42,000 --> 00:15:49,000
+Well, now the examples that you can see on the slide is activation based on the generic version specified
+
+184
+00:15:49,000 --> 00:15:57,000
+in case MAVEN discovers a version of that indicates that the set in activation zip profile will be applied.
+
+185
+00:15:58,000 --> 00:16:02,000
+Also, we can activate profile based on the operating system.
+
+186
+00:16:02,000 --> 00:16:05,000
+You can also find this example in the slide.
+
+187
+00:16:06,000 --> 00:16:14,000
+Alternatively, you can run a profile based on the file if the file exists or absent, and an example
+
+188
+00:16:14,000 --> 00:16:19,000
+of this kind of configuration is also present on the slide.
+
+189
+00:16:20,000 --> 00:16:26,000
+While MAVEN gives us all this flexibility that you as software engineer should be aware of.
+
+190
+00:16:27,000 --> 00:16:34,000
+I am not sure that you will use this flexibility on a daily basis, so don't worry, in case you will
+
+191
+00:16:34,000 --> 00:16:41,000
+not see all these examples with selected profiles based on the operating systems in your real projects.
+
+192
+00:16:41,000 --> 00:16:47,000
+But this assumption what takes less than a minute to share and I believe just to know.
+
+193
+00:16:48,000 --> 00:16:56,000
+Let's imagine that you have a profile set, and for some reasons, you need to deactivate profile how
+
+194
+00:16:56,000 --> 00:16:58,000
+you can do this very easily.
+
+195
+00:16:59,000 --> 00:17:02,000
+You can use is a minus sign or exclamation mark.
+
+196
+00:17:03,000 --> 00:17:11,000
+So in getting to the active death profile, you need to execute the following Come on and then compile.
+
+197
+00:17:12,000 --> 00:17:17,000
+You know, that compile is just a goal that should be minus death.
+
+198
+00:17:18,000 --> 00:17:24,000
+And just in case you want to check profiles of the currently active, you can use the phone, come on.
+
+199
+00:17:24,000 --> 00:17:29,000
+And then how column active dash profiles.
+
+200
+00:17:30,000 --> 00:17:32,000
+Let me show you a quick demo here.
+
+201
+00:17:32,000 --> 00:17:38,000
+I activated their profile in my Form X amount like I showed you on the slide.
+
+202
+00:17:38,000 --> 00:17:42,000
+And now I want to check what profiles are active.
+
+203
+00:17:43,000 --> 00:17:43,000
+Are you open?
+
+204
+00:17:43,000 --> 00:17:51,000
+Get much in my project directory and I call command and and help active profiles.
+
+205
+00:17:52,000 --> 00:18:00,000
+And you can see that maven tells you that one profile is active and it is specified in my project.
+
+206
+00:18:01,000 --> 00:18:01,000
+That's.
+
+207
+00:18:03,000 --> 00:18:10,000
+Let's learn now what's setting six a.m. is while using MAVEN work gives him most of the project's specific
+
+208
+00:18:10,000 --> 00:18:12,000
+configuration in the maximum.
+
+209
+00:18:13,000 --> 00:18:16,000
+But MAVEN provides a general file for settings.
+
+210
+00:18:17,000 --> 00:18:19,000
+It is called Settings X Amount.
+
+211
+00:18:20,000 --> 00:18:24,000
+We can specify which local and remote repositories will use.
+
+212
+00:18:24,000 --> 00:18:28,000
+We can also use it to store settings that we don't want to.
+
+213
+00:18:28,000 --> 00:18:36,000
+Our source code, such as Credentials Setting six single file, is located in the user directory in
+
+214
+00:18:36,000 --> 00:18:37,000
+the AM to folder.
+
+215
+00:18:38,000 --> 00:18:43,000
+On the slide, you can see the path to the Settings XML file on my computer.
+
+216
+00:18:44,000 --> 00:18:52,000
+This file is not created automatically, so if it is absent there, you can create it manually.
+
+217
+00:18:52,000 --> 00:18:56,000
+The setting six simple file configure some even installation.
+
+218
+00:18:57,000 --> 00:19:03,000
+It's similar to Poma XML file, but is defined globally or per user.
+
+219
+00:19:04,000 --> 00:19:08,000
+Let's explore the elements we can configure in the Settings XML file.
+
+220
+00:19:09,000 --> 00:19:16,000
+The main settings element of the Settings Small File can contain nine possible predefined child elements
+
+221
+00:19:16,000 --> 00:19:18,000
+that you can see on the slide.
+
+222
+00:19:19,000 --> 00:19:26,000
+Let's have small demo now and navigated the M.2 folder on my computer and created settings sex symbol.
+
+223
+00:19:27,000 --> 00:19:31,000
+Let me show you how it looks like very simple settings.
+
+224
+00:19:31,000 --> 00:19:34,000
+Six Simple file with one profile identify.
+
+225
+00:19:36,000 --> 00:19:44,000
+You can see that this is the profiles that contains on the I.D. and configuration for active profiles.
+
+226
+00:19:44,000 --> 00:19:52,000
+That said, let's now execute the same commands we already executed during the demo to check active
+
+227
+00:19:52,000 --> 00:19:53,000
+profiles.
+
+228
+00:19:55,000 --> 00:20:00,000
+I call Ambien help active profiles one more time.
+
+229
+00:20:01,000 --> 00:20:09,000
+This time it is shown that we have two active profiles the one from our MAVEN project and the one I
+
+230
+00:20:09,000 --> 00:20:11,000
+declared in global settings.
+
+231
+00:20:12,000 --> 00:20:17,000
+That was a simple example how you can interact and work with certain sex symbol.
+
+232
+00:20:18,000 --> 00:20:24,000
+You are going to learn more about settings, sex symbol and all its possible child elements in the next
+
+233
+00:20:24,000 --> 00:20:24,000
+lesson.
+
+234
+00:20:25,000 --> 00:20:32,000
+And the one more important thing, as I said previously in the lesson, the rule is to use setting six
+
+235
+00:20:32,000 --> 00:20:41,000
+among all these special cases and use project for symbol whenever it is possible because setting six
+
+236
+00:20:41,000 --> 00:20:44,000
+symbols, it is not something we store on.
+
+237
+00:20:44,000 --> 00:20:52,000
+Does it get in and in version control system, it is needed to be configured separately, as you already
+
+238
+00:20:52,000 --> 00:20:52,000
+understood.
+
+239
+00:20:53,000 --> 00:20:58,000
+This file is not auto generated and it should be created manually.
+
+240
+00:20:59,000 --> 00:21:01,000
+That's all what I wanted to say.
+
+241
+00:21:01,000 --> 00:21:04,000
+Let's recap what we have learned in this lesson.
+
+242
+00:21:05,000 --> 00:21:12,000
+Today, we learned how to create MAVEN Project in Eclipse, how to impart MAVEN project, how to convert
+
+243
+00:21:12,000 --> 00:21:14,000
+a Java project into MAVEN one.
+
+244
+00:21:15,000 --> 00:21:22,000
+We learned how to work with MAVEN Build profiles and also we discussed what Settings X-Mode is.
+
+245
+00:21:23,000 --> 00:21:25,000
+Thank you all to you for your attention.
+
+246
+00:21:25,000 --> 00:21:28,000
+Have a great night and see you in the next lesson.
+
diff --git a/59 - Apache Maven/004 Maven settings.xml.html b/59 - Apache Maven/004 Maven settings.xml.html
new file mode 100644
index 0000000000000000000000000000000000000000..cf438a652d5f5a0c77ad9ba6715c5b67b293d9d4
--- /dev/null
+++ b/59 - Apache Maven/004 Maven settings.xml.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Maven settings.xml
+
+
+
+
+
+
+
Maven settings.xml
+
Introduction
Quick Overview
The settings element in the settings.xml file contains elements used to define values which configure Maven execution in various ways, like the pom.xml, but should not be bundled to any specific project, or distributed to an audience. These include values such as the local repository location, alternate remote repository servers, and authentication information.
There are two locations where a settings.xml file may live:
The former settings.xml are also called global settings, the latter settings.xml are referred to as user settings. If both files exists, their contents gets merged, with the user-specific settings.xml being dominant.
Tip: If you need to create user-specific settings from scratch, it's easiest to copy the global settings from your Maven installation to your ${user.home}/.m2 directory. Maven's default settings.xml is a template with comments and examples so you can quickly tweak it to match your needs.
Here is an overview of the top elements under settings:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository/> <interactiveMode/> <offline/> <pluginGroups/> <servers/> <mirrors/> <proxies/> <profiles/> <activeProfiles/> </settings>
The contents of the settings.xml can be interpolated using the following expressions:
${user.home} and all other system properties (since Maven 3.0)
${env.HOME} etc. for environment variables
Note that properties defined in profiles within the settings.xml cannot be used for interpolation.
Settings Details
Simple Values
Half of the top-level settings elements are simple values, representing a range of values which describe elements of the build system that are active full-time.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>${user.home}/.m2/repository</localRepository> <interactiveMode>true</interactiveMode> <offline>false</offline> ...</settings>localRepository: This value is the path of this build system's local repository. The default value is ${user.home}/.m2/repository. This element is especially useful for a main build server allowing all logged-in users to build from a common local repository.
interactiveMode: true if Maven should attempt to interact with the user for input, false if not. Defaults to true.
offline: true if this build system should operate in offline mode, defaults to false. This element is useful for build servers which cannot connect to a remote repository, either because of network setup or security reasons.
Plugin Groups
This element contains a list of pluginGroup elements, each contains a groupId. The list is searched when a plugin is used and the groupId is not provided in the command line. This list automatically contains org.apache.maven.plugins and org.codehaus.mojo.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <pluginGroups> <pluginGroup>org.eclipse.jetty</pluginGroup> </pluginGroups> ...</settings>
For example, given the above settings the Maven command line may execute org.eclipse.jetty:jetty-maven-plugin:run with the truncated command:
mvn jetty:run
Servers
The repositories for download and deployment are defined by the repositories and distributionManagement elements of the POM. However, certain settings such as username and password should not be distributed along with the pom.xml. This type of information should exist on the build server in the settings.xml.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <servers> <server> <id>server001</id> <username>my_login</username> <password>my_password</password> <privateKey>${user.home}/.ssh/id_dsa</privateKey> <passphrase>some_passphrase</passphrase> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> <configuration></configuration> </server> </servers> ...</settings>id: This is the ID of the server (not of the user to login as) that matches the id element of the repository/mirror that Maven tries to connect to.
username, password: These elements appear as a pair denoting the login and password required to authenticate to this server.
privateKey, passphrase: Like the previous two elements, this pair specifies a path to a private key (default is ${user.home}/.ssh/id_dsa) and a passphrase, if required. The passphrase and password elements may be externalized in the future, but for now they must be set plain-text in the settings.xml file.
filePermissions, directoryPermissions: When a repository file or directory is created on deployment, these are the permissions to use. The legal values of each is a three digit number corresponding to *nix file permissions, e.g. 664, or 775.
Note: If you use a private key to login to the server, make sure you omit the <password> element. Otherwise, the key will be ignored.
Password Encryption
A new feature - server password and passphrase encryption has been added to 2.1.0+. See details on this page
Mirrors
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <mirrors> <mirror> <id>planetmirror.com</id> <name>PlanetMirror Australia</name> <url>http://downloads.planetmirror.com/pub/maven2</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ...</settings>
id, name: The unique identifier and user-friendly name of this mirror. The id is used to differentiate between mirror elements and to pick the corresponding credentials from the <servers> section when connecting to the mirror.
url: The base URL of this mirror. The build system will use this URL to connect to a repository rather than the original repository URL.
mirrorOf: The id of the repository that this is a mirror of. For example, to point to a mirror of the Maven central repository (https://repo.maven.apache.org/maven2/), set this element to central. More advanced mappings like repo1,repo2 or *,!inhouse are also possible. This must not match the mirror id.
For a more in-depth introduction of mirrors, please read the Guide to Mirror Settings.
Proxies
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <proxies> <proxy> <id>myproxy</id> <active>true</active> <protocol>http</protocol> <host>proxy.somewhere.com</host> <port>8080</port> <username>proxyuser</username> <password>somepassword</password> <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts> </proxy> </proxies> ...</settings>
id: The unique identifier for this proxy. This is used to differentiate between proxy elements.
active: true if this proxy is active. This is useful for declaring a set of proxies, but only one may be active at a time.
protocol, host, port: The protocol://host:port of the proxy, separated into discrete elements.
username, password: These elements appear as a pair denoting the login and password required to authenticate to this proxy server.
nonProxyHosts: This is a list of hosts which should not be proxied. The delimiter of the list is the expected type of the proxy server; the example above is pipe delimited - comma delimited is also common.
Profiles
The profile element in the settings.xml is a truncated version of the pom.xml profile element. It consists of the activation, repositories, pluginRepositories and properties elements. The profile elements only include these four elements because they concerns themselves with the build system as a whole (which is the role of the settings.xml file), not about individual project object model settings.
If a profile is active from settings, its values will override any equivalently ID'd profiles in a POM or profiles.xml file.
Activation
Activations are the key of a profile. Like the POM's profiles, the power of a profile comes from its ability to modify some values only under certain circumstances; those circumstances are specified via an activation element.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <profiles> <profile> <id>test</id> <activation> <activeByDefault>false</activeByDefault> <jdk>1.5</jdk> <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> <property> <name>mavenVersion</name> <value>2.0.3</value> </property> <file> <exists>${basedir}/file2.properties</exists> <missing>${basedir}/file1.properties</missing> </file> </activation> ... </profile> </profiles> ...</settings>Activation occurs when all specified criteria have been met, though not all are required at once.
jdk: activation has a built in, Java-centric check in the jdk element. This will activate if the test is run under a jdk version number that matches the prefix given. In the above example, 1.5.0_06 will match. Ranges are also supported. See the maven-enforcer-plugin for more details about supported ranges.
os: The os element can define some operating system specific properties shown above. See the maven-enforcer-plugin for more details about OS values.
property: The profile will activate if Maven detects a property (a value which can be dereferenced within the POM by ${name}) of the corresponding name=value pair.
file: Finally, a given filename may activate the profile by the existence of a file, or if it is missing.
The activation element is not the only way that a profile may be activated. The settings.xml file's activeProfile element may contain the profile's id. They may also be activated explicitly through the command line via a comma separated list after the -P flag (e.g. -P test).
To see which profile will activate in a certain build, use the maven-help-plugin.
mvn help:active-profiles
Properties
Maven properties are value placeholder, like properties in Ant. Their values are accessible anywhere within a POM by using the notation ${X}, where X is the property. They come in five different styles, all accessible from the settings.xml file:
env.X: Prefixing a variable with “env.” will return the shell's environment variable. For example, ${env.PATH} contains the $path environment variable (%PATH% in Windows).
project.x: A dot (.) notated path in the POM will contain the corresponding element's value. For example: <project><version>1.0</version></project> is accessible via ${project.version}.
settings.x: A dot (.) notated path in the settings.xml will contain the corresponding element's value. For example: <settings><offline>false</offline></settings> is accessible via ${settings.offline}.
Java System Properties: All properties accessible via java.lang.System.getProperties() are available as POM properties, such as ${java.home}.
x: Set within a <properties /> element or an external files, the value may be used as ${someVar}.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <profiles> <profile> ... <properties> <user.install>${user.home}/our-project</user.install> </properties> ... </profile> </profiles> ...</settings>The property ${user.install} is accessible from a POM if this profile is active.
Repositories
Repositories are remote collections of projects from which Maven uses to populate the local repository of the build system. It is from this local repository that Maven calls it plugins and dependencies. Different remote repositories may contain different projects, and under the active profile they may be searched for a matching release or snapshot artifact.
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <profiles> <profile> ... <repositories> <repository> <id>codehausSnapshots</id> <name>Codehaus Snapshots</name> <releases> <enabled>false</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://snapshots.maven.codehaus.org/maven2</url> <layout>default</layout> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>myPluginRepo</id> <name>My Plugins repo</name> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <url>https://maven-central-eu....com/maven2/</url> </pluginRepository> </pluginRepositories> ... </profile> </profiles> ...</settings>
releases, snapshots: These are the policies for each type of artifact, Release or snapshot. With these two sets, a POM has the power to alter the policies for each type independent of the other within a single repository. For example, one may decide to enable only snapshot downloads, possibly for development purposes.
enabled: true or false for whether this repository is enabled for the respective type (releases or snapshots).
updatePolicy: This element specifies how often updates should attempt to occur. Maven will compare the local POM's timestamp (stored in a repository's maven-metadata file) to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.
checksumPolicy: When Maven deploys files to the repository, it also deploys corresponding checksum files. Your options are to ignore, fail, or warn on missing or incorrect checksums.
layout: In the above description of repositories, it was mentioned that they all follow a common layout. This is mostly correct. Maven 2 has a default layout for its repositories; however, Maven 1.x had a different layout. Use this element to specify which if it is default or legacy.
Plugin Repositories
Repositories are home to two major types of artifacts. The first are artifacts that are used as dependencies of other artifacts. These are the majority of artifacts that reside within central. The other type of artifact is plugins. Maven plugins are themselves a special type of artifact. Because of this, plugin repositories may be separated from other repositories (although, I have yet to hear a convincing argument for doing so). In any case, the structure of the pluginRepositories element block is similar to the repositories element. The pluginRepository elements each specify a remote location of where Maven can find new plugins.
Active Profiles
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> ... <activeProfiles> <activeProfile>env-test</activeProfile> </activeProfiles></settings>
The final piece of the settings.xml puzzle is the activeProfiles element. This contains a set of activeProfile elements, which each have a value of a profile id. Any profile id defined as an activeProfile will be active, regardless of any environment settings. If no matching profile is found nothing will happen. For example, if env-test is an activeProfile, a profile in a pom.xml (or profile.xml with a corresponding id will be active. If no such profile is found then execution will continue as normal.
+
+
+
+
diff --git a/59 - Apache Maven/005 Execute Maven Goals & Advanced Dependency Management_en.srt b/59 - Apache Maven/005 Execute Maven Goals & Advanced Dependency Management_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..18fe342ec9df291f4e61230fcc19d9a64f187759
--- /dev/null
+++ b/59 - Apache Maven/005 Execute Maven Goals & Advanced Dependency Management_en.srt
@@ -0,0 +1,956 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:09,000
+In this lesson, we continue learning maven.
+
+3
+00:00:09,000 --> 00:00:16,000
+We're going to learn how to execute maven goals and also we'll talk about advanced dependency management.
+
+4
+00:00:17,000 --> 00:00:20,000
+We're going to create our first application built.
+
+5
+00:00:20,000 --> 00:00:23,000
+We'll create jar file and we are going to execute it.
+
+6
+00:00:24,000 --> 00:00:28,000
+I will explain you what Manifest File is and why we need it.
+
+7
+00:00:28,000 --> 00:00:35,000
+Also, we'll learn what Sure-Fire plug in this and how we can enable test reporting and our MAVEN project
+
+8
+00:00:35,000 --> 00:00:38,000
+to generate STEM reports about our tests.
+
+9
+00:00:39,000 --> 00:00:44,000
+And at the end of the lesson, we're going to talk about advanced dependency management.
+
+10
+00:00:44,000 --> 00:00:49,000
+Namely, we're going to talk about optional dependencies and dependency exclusion.
+
+11
+00:00:49,000 --> 00:00:52,000
+Let's start our lesson today.
+
+12
+00:00:52,000 --> 00:00:55,000
+We're going to have a lot of real examples and demo.
+
+13
+00:00:55,000 --> 00:00:59,000
+Let me start sharing my screen and we'll cover our topics one by one.
+
+14
+00:01:00,000 --> 00:01:05,000
+In this lesson, we'll use MAVEN project that we created in previous lessons.
+
+15
+00:01:05,000 --> 00:01:10,000
+So in case you skipped previous lessons, please make sure you watch them.
+
+16
+00:01:11,000 --> 00:01:18,000
+The first things that I'm going to do now is to check my auto generated Hello World application in my
+
+17
+00:01:18,000 --> 00:01:19,000
+MAVEN project.
+
+18
+00:01:19,000 --> 00:01:26,000
+In case you generated a project like I do using Maeweather quick start archetype, you already have
+
+19
+00:01:26,000 --> 00:01:27,000
+hello world application.
+
+20
+00:01:27,000 --> 00:01:29,000
+Let's check it together.
+
+21
+00:01:30,000 --> 00:01:36,000
+I open a Sazi main Java source folder and navigate it to the stop loss that was created automatically.
+
+22
+00:01:37,000 --> 00:01:39,000
+And I see that in main message.
+
+23
+00:01:39,000 --> 00:01:41,000
+I print Hello World to consult.
+
+24
+00:01:41,000 --> 00:01:42,000
+Amazing.
+
+25
+00:01:43,000 --> 00:01:46,000
+Now let's tell MAVEN the great package from this program.
+
+26
+00:01:47,000 --> 00:01:48,000
+You know that we could run it separate.
+
+27
+00:01:49,000 --> 00:01:53,000
+But before we would run MAVEN, let's make a small adjustment.
+
+28
+00:01:53,000 --> 00:01:55,000
+Now pull maximum.
+
+29
+00:01:55,000 --> 00:02:03,000
+I don't know how you follow details repeating after me, but in one lesson, we put Java 17 in the full
+
+30
+00:02:03,000 --> 00:02:07,000
+maximum four compiler, source and compiler target.
+
+31
+00:02:07,000 --> 00:02:15,000
+Let's decrease it to the latest stable and long term supported version Java 11 and other adjustments
+
+32
+00:02:15,000 --> 00:02:19,000
+that should be done and put maximum is adjusting of MAVEN Jar plug in.
+
+33
+00:02:20,000 --> 00:02:24,000
+It was present in our auto generated project.
+
+34
+00:02:24,000 --> 00:02:27,000
+We just need to add additional configuration.
+
+35
+00:02:27,000 --> 00:02:28,000
+Let's look at it.
+
+36
+00:02:29,000 --> 00:02:32,000
+Here is what should be written in your Palm X amount.
+
+37
+00:02:32,000 --> 00:02:38,000
+You can present Mawson's of video and write it into your Palm X amount.
+
+38
+00:02:38,000 --> 00:02:47,000
+We need that here configuration element in which we'll specify our car element and where we will define
+
+39
+00:02:47,000 --> 00:02:48,000
+Manifest Element.
+
+40
+00:02:49,000 --> 00:02:55,000
+The Manifest is a special files that can contain information about the files packaged in a jar file.
+
+41
+00:02:56,000 --> 00:03:05,000
+Manifest is a file that contains information about the starting point of our program because John is
+
+42
+00:03:05,000 --> 00:03:13,000
+just in there, cause JAR may contain multiple classes where we have made massive, but what actually
+
+43
+00:03:13,000 --> 00:03:15,000
+is a starting point of our program?
+
+44
+00:03:16,000 --> 00:03:24,000
+That's why we need the manifest file to declare which main mass it, from which class should be considered
+
+45
+00:03:24,000 --> 00:03:26,000
+as a starting point of our program.
+
+46
+00:03:27,000 --> 00:03:34,000
+When you drag this file into our journey, you in the built and then main class element was specified
+
+47
+00:03:34,000 --> 00:03:36,000
+past our main class.
+
+48
+00:03:36,000 --> 00:03:43,000
+Attention is that in case you have different full name of the class where your main mass it is located.
+
+49
+00:03:43,000 --> 00:03:45,000
+After updated here.
+
+50
+00:03:46,000 --> 00:03:54,000
+Now, when we use all necessary configurations, let's proceed with packaging of our solution.
+
+51
+00:03:55,000 --> 00:04:02,000
+I want to interact with me when we console the open terminal and the root folder of my maven project,
+
+52
+00:04:02,000 --> 00:04:04,000
+I click on the root for the first.
+
+53
+00:04:04,000 --> 00:04:09,000
+And after that, I click on this icon that is called Open the Terminal.
+
+54
+00:04:10,000 --> 00:04:14,000
+I select that I want to use again Bosch as a terminal.
+
+55
+00:04:14,000 --> 00:04:15,000
+Nice.
+
+56
+00:04:15,000 --> 00:04:19,000
+Now we open terminal in our project folder.
+
+57
+00:04:20,000 --> 00:04:27,000
+From this folder, I can execute minimal commands because exactly in this folder, my Palm X amount
+
+58
+00:04:27,000 --> 00:04:28,000
+is located.
+
+59
+00:04:29,000 --> 00:04:35,000
+You can work here or you're going to have separate terminal opened the folder for cinema purposes.
+
+60
+00:04:35,000 --> 00:04:40,000
+I will use the bus terminal because I believe that this was the option of the console.
+
+61
+00:04:40,000 --> 00:04:41,000
+Output is better.
+
+62
+00:04:42,000 --> 00:04:48,000
+But you can execute the same commands from Eclipse in my good bus terminal.
+
+63
+00:04:48,000 --> 00:04:51,000
+I am also located inside my project folder.
+
+64
+00:04:52,000 --> 00:04:58,000
+If you remember our lesson about Maimon life cycles and maven phases goals, you can already imagine
+
+65
+00:04:58,000 --> 00:05:02,000
+that I can generate package with the help of different goals.
+
+66
+00:05:02,000 --> 00:05:04,000
+I don't know them or you all the goals.
+
+67
+00:05:05,000 --> 00:05:07,000
+But let me demo you just a few of them.
+
+68
+00:05:07,000 --> 00:05:13,000
+I type in the common line and then Clean Package just to remind you.
+
+69
+00:05:13,000 --> 00:05:21,000
+Green Face removes all files generated by the previous build package face is from the default lifecycle.
+
+70
+00:05:22,000 --> 00:05:30,000
+It takes a compiled code and package it in its distributable format, such as job after execution of
+
+71
+00:05:30,000 --> 00:05:31,000
+this command.
+
+72
+00:05:31,000 --> 00:05:38,000
+I expect that the results of the previous build is a distorting target folder will be removed and new
+
+73
+00:05:38,000 --> 00:05:45,000
+veldt will be created and packaged into the jar file that I will be able to execute.
+
+74
+00:05:45,000 --> 00:05:51,000
+After this comment, execute the Xenu artifacts created in Target's folder.
+
+75
+00:05:51,000 --> 00:05:54,000
+Let's navigate into the target's folder.
+
+76
+00:05:54,000 --> 00:06:04,000
+I typed CD DA and stop for the completion the season content of this directory as at least eight times
+
+77
+00:06:04,000 --> 00:06:08,000
+the following Come on less space dash l.
+
+78
+00:06:08,000 --> 00:06:17,000
+You can see the different folders glasses, generate sources, generate the test sources, etc. And
+
+79
+00:06:17,000 --> 00:06:24,000
+among all these folders, we have our job, our Java, our car that's surrounded.
+
+80
+00:06:25,000 --> 00:06:36,000
+To run our jar file eight times the following Come on, Java space, dash jar mom ah and first stop
+
+81
+00:06:36,000 --> 00:06:37,000
+for auto completion.
+
+82
+00:06:38,000 --> 00:06:43,000
+And after that, I press enter and you can see Hello world and console.
+
+83
+00:06:43,000 --> 00:06:45,000
+We compiled our glasses.
+
+84
+00:06:45,000 --> 00:06:48,000
+We group them into the jar file.
+
+85
+00:06:48,000 --> 00:06:55,000
+Manifest file also was included into the archive and stored the name of the main class.
+
+86
+00:06:55,000 --> 00:07:03,000
+And when we passed Jar File, the Java program, Java executed that tensions that run your files, we
+
+87
+00:07:03,000 --> 00:07:04,000
+had Java.
+
+88
+00:07:04,000 --> 00:07:06,000
+We have to pass jar option.
+
+89
+00:07:07,000 --> 00:07:15,000
+That's how easily you can package your maven solution into the jar was all dependencies for better understanding.
+
+90
+00:07:15,000 --> 00:07:18,000
+Let's explore together a jar file.
+
+91
+00:07:18,000 --> 00:07:22,000
+Actually, this is in our car Java archive.
+
+92
+00:07:23,000 --> 00:07:29,000
+I use 7Z Free, our cover tool to extract archive to the folder.
+
+93
+00:07:30,000 --> 00:07:39,000
+Once all files are created, let's get navigated into Z folder to see what we have in manner in folder.
+
+94
+00:07:39,000 --> 00:07:41,000
+We have our Manifest file.
+
+95
+00:07:42,000 --> 00:07:43,000
+Let me open it.
+
+96
+00:07:44,000 --> 00:07:48,000
+Here is how it looks like MAVEN generated it for us.
+
+97
+00:07:49,000 --> 00:07:56,000
+And here is the full name of our main class, where our main mascot is located in MAVEN folder, where
+
+98
+00:07:56,000 --> 00:08:05,000
+a few nested folders with our Group I.D. and Archetype I.D. and inside we can find our own XML file.
+
+99
+00:08:06,000 --> 00:08:09,000
+Let's get back and in the folder.
+
+100
+00:08:09,000 --> 00:08:17,000
+There's a whole Iraqia of our base package and compile classes, considering we have only one class
+
+101
+00:08:17,000 --> 00:08:18,000
+in our application.
+
+102
+00:08:18,000 --> 00:08:22,000
+Only one class is here and pay attention.
+
+103
+00:08:22,000 --> 00:08:29,000
+There is no and it takes resources nor tests class or G-Unit or locate the libraries.
+
+104
+00:08:29,000 --> 00:08:33,000
+It works better for it and our dependencies unions.
+
+105
+00:08:33,000 --> 00:08:41,000
+Of course, I'm going to extract archived them application to show you how web resources are allocated.
+
+106
+00:08:42,000 --> 00:08:48,000
+This is important because when your face was issues and errors while on your app, you are going to
+
+107
+00:08:48,000 --> 00:08:54,000
+understand understandable course of some of them and you will be able easily to understand what exact
+
+108
+00:08:54,000 --> 00:08:57,000
+configuration you need to tune to fix a mistake.
+
+109
+00:08:58,000 --> 00:09:03,000
+With automated new tools, a lot of things happen without our attention at all.
+
+110
+00:09:04,000 --> 00:09:07,000
+And when we face issue, we don't know what to do.
+
+111
+00:09:08,000 --> 00:09:15,000
+That's why I believe known in the structure of archived applications that are created by automated build
+
+112
+00:09:15,000 --> 00:09:17,000
+tools is important.
+
+113
+00:09:18,000 --> 00:09:22,000
+We are going to know how to create maven web application in the next lessons.
+
+114
+00:09:23,000 --> 00:09:26,000
+Now let me show you a demo of another face.
+
+115
+00:09:27,000 --> 00:09:31,000
+This time, let's run out this resources and create this report.
+
+116
+00:09:32,000 --> 00:09:39,000
+I'm going to execute, test phase and generate this report as a separate HTML file to be able to generate
+
+117
+00:09:39,000 --> 00:09:40,000
+the test report.
+
+118
+00:09:41,000 --> 00:09:45,000
+What we need to do the other way again, the stands where we need to make configurations.
+
+119
+00:09:46,000 --> 00:09:47,000
+Exactly.
+
+120
+00:09:47,000 --> 00:09:54,000
+We need to configure our plugins and to add new plugin zero different plugins that can help you to generate
+
+121
+00:09:55,000 --> 00:09:56,000
+HTML test reports.
+
+122
+00:09:57,000 --> 00:10:01,000
+But one of the plugins that I'm going to use today is a demo is sure.
+
+123
+00:10:02,000 --> 00:10:05,000
+Let me show you how and where.
+
+124
+00:10:05,000 --> 00:10:12,000
+When you add this plugin and HBOMax, you can paste separate elements at school to report and you can
+
+125
+00:10:12,000 --> 00:10:14,000
+place build those build elements.
+
+126
+00:10:15,000 --> 00:10:17,000
+It also may have log in.
+
+127
+00:10:17,000 --> 00:10:25,000
+Sediment is a source array of log elements, and one of such plugins today is our sure fire report.
+
+128
+00:10:25,000 --> 00:10:31,000
+Plug in Kansas slides you can find group by artifact, IP and version.
+
+129
+00:10:32,000 --> 00:10:34,000
+You can read the same in your project.
+
+130
+00:10:36,000 --> 00:10:41,000
+When we added the slogan, let's get back to our terminal and execute the following Come on.
+
+131
+00:10:42,000 --> 00:10:45,000
+And then clean side.
+
+132
+00:10:46,000 --> 00:10:53,000
+If you remember, saw it as a face in the side maven lifecycle that generates the product side, the
+
+133
+00:10:53,000 --> 00:10:56,000
+communication once the face is executed.
+
+134
+00:10:56,000 --> 00:10:58,000
+Let's get back to our project.
+
+135
+00:11:01,000 --> 00:11:04,000
+I click F5 Key to refresh the project.
+
+136
+00:11:05,000 --> 00:11:12,000
+Alternatively, you can refresh project by mouse, right click Refresh, and you can see that after
+
+137
+00:11:12,000 --> 00:11:15,000
+refreshing, we have site folder here.
+
+138
+00:11:16,000 --> 00:11:20,000
+A lot of files have been generated here and even sucess.
+
+139
+00:11:20,000 --> 00:11:27,000
+Sucess stands for cascading style sheets and the mainstream outpaced open Ice-Cold indexation amount.
+
+140
+00:11:28,000 --> 00:11:33,000
+All other pages are available journals and navigation from the indexation amount.
+
+141
+00:11:33,000 --> 00:11:40,000
+I can drag and drop this file here in my browser, or I can open it in the browser.
+
+142
+00:11:40,000 --> 00:11:46,000
+Yes, this one of the features of Eclipse is that it has built in browser mouse.
+
+143
+00:11:46,000 --> 00:11:54,000
+Right click Open this web browser, double click on the top and it will be expanded to the whole screen.
+
+144
+00:11:54,000 --> 00:11:56,000
+You can see the menu on the left.
+
+145
+00:11:56,000 --> 00:12:03,000
+It contains different hyper references to other pages based on the name of the reference.
+
+146
+00:12:03,000 --> 00:12:09,000
+You can make a guess about the content of that that page on the dependency stuff.
+
+147
+00:12:10,000 --> 00:12:14,000
+You are going to have all dependencies listed on the blog install.
+
+148
+00:12:14,000 --> 00:12:17,000
+You're going to see all plugins and so on.
+
+149
+00:12:18,000 --> 00:12:23,000
+If you want to explore test results, you need the Greek oncologic reports.
+
+150
+00:12:23,000 --> 00:12:26,000
+Here we need the Greek onshore five report.
+
+151
+00:12:26,000 --> 00:12:31,000
+And here's all our summary How much tests were executed?
+
+152
+00:12:32,000 --> 00:12:34,000
+How much of a failed scheme.
+
+153
+00:12:34,000 --> 00:12:41,000
+In our particular case, we have only one test and success rate is equal to 100 percent.
+
+154
+00:12:42,000 --> 00:12:50,000
+Also, you can find information grouped by packages and by tests in the separate column, you can find
+
+155
+00:12:50,000 --> 00:12:52,000
+duration of destitution.
+
+156
+00:12:53,000 --> 00:12:57,000
+In the Teskey section, you can find this the massive names.
+
+157
+00:12:58,000 --> 00:13:04,000
+There is also now the commands that can help you to generate this report, but it doesn't generate all
+
+158
+00:13:04,000 --> 00:13:08,000
+these files and doesn't generate success for us.
+
+159
+00:13:09,000 --> 00:13:12,000
+Let me show you this common tool in the terminal.
+
+160
+00:13:13,000 --> 00:13:20,000
+And Lance Bass, sure for the Rush Limbaugh column report.
+
+161
+00:13:22,000 --> 00:13:22,000
+Here are this.
+
+162
+00:13:23,000 --> 00:13:27,000
+But site command will generate more detailed reports for you.
+
+163
+00:13:28,000 --> 00:13:35,000
+Let's continue now, I'm going to show you one more advanced trick in dependency management in full
+
+164
+00:13:35,000 --> 00:13:36,000
+maximum.
+
+165
+00:13:36,000 --> 00:13:39,000
+Let me show you what optional dependency is.
+
+166
+00:13:40,000 --> 00:13:47,000
+Optional dependencies are used when it's not possible, for whatever reason, to split the project more
+
+167
+00:13:47,000 --> 00:13:48,000
+use.
+
+168
+00:13:48,000 --> 00:13:55,000
+The idea is that some of the dependencies are only used for certain features in the project and will
+
+169
+00:13:55,000 --> 00:13:59,000
+not be needed if that feature isn't used.
+
+170
+00:13:59,000 --> 00:14:04,000
+Ideally, such a feature would be split into some module is.
+
+171
+00:14:04,000 --> 00:14:07,000
+It depends on the core functionality you.
+
+172
+00:14:08,000 --> 00:14:16,000
+This new project would have only non optional dependencies since you would use them all if you decided
+
+173
+00:14:17,000 --> 00:14:19,000
+to use the sub gorgeous functionality.
+
+174
+00:14:20,000 --> 00:14:29,000
+However, since the project can be split up again, for whatever reason, these dependencies are declared
+
+175
+00:14:29,000 --> 00:14:30,000
+optional.
+
+176
+00:14:31,000 --> 00:14:36,000
+If a user wants to use Luciano, it's related to an optional dependency.
+
+177
+00:14:37,000 --> 00:14:45,000
+They have to really clear that option dependency in their own project, and it doesn't for zoos, dependencies,
+
+178
+00:14:45,000 --> 00:14:47,000
+internet regional project.
+
+179
+00:14:47,000 --> 00:14:48,000
+It doesn't need that.
+
+180
+00:14:49,000 --> 00:14:56,000
+This is not the clearest way to handle the situation, but those optional dependencies and dependency
+
+181
+00:14:56,000 --> 00:14:59,000
+exclusion are stopgap solutions.
+
+182
+00:15:00,000 --> 00:15:03,000
+What are the reasons to use optional dependencies?
+
+183
+00:15:04,000 --> 00:15:07,000
+Optional dependencies, save space and memory.
+
+184
+00:15:08,000 --> 00:15:15,000
+Prevent problem logic is that violate a license agreement or course clause, plus issues from being
+
+185
+00:15:15,000 --> 00:15:17,000
+bundled into law or jar files.
+
+186
+00:15:18,000 --> 00:15:25,000
+Let's look at the optional dog and how we can use it, and dependencies declared optional by settings
+
+187
+00:15:25,000 --> 00:15:31,000
+that optional element to tool in its dependency declaration, like you see on the slide.
+
+188
+00:15:33,000 --> 00:15:35,000
+So how do optional dependencies work?
+
+189
+00:15:36,000 --> 00:15:45,000
+The diagram on this slide says is it project date depends on the project meet when he declares me as
+
+190
+00:15:45,000 --> 00:15:50,000
+an optional dependency in its form, this relationship remains unchanged.
+
+191
+00:15:51,000 --> 00:15:53,000
+It's just like a normal deal.
+
+192
+00:15:53,000 --> 00:15:58,000
+Project B will be added in a project a class bus.
+
+193
+00:15:59,000 --> 00:16:00,000
+One another project.
+
+194
+00:16:01,000 --> 00:16:06,000
+Let's call it Project X declares Project A as a dependency on this bomb.
+
+195
+00:16:07,000 --> 00:16:10,000
+The optional nature of the dependency takes effect.
+
+196
+00:16:11,000 --> 00:16:15,000
+Project B is not included in the class of Project X.
+
+197
+00:16:16,000 --> 00:16:25,000
+You need to declare it directly in the form of Project X for me to be included in X Plus Plus, let's
+
+198
+00:16:25,000 --> 00:16:26,000
+review an example.
+
+199
+00:16:27,000 --> 00:16:32,000
+Suppose there is a project named database utils that works with databases.
+
+200
+00:16:33,000 --> 00:16:40,000
+It supports many databases such as my school or the school, and several versions of Oracle.
+
+201
+00:16:40,000 --> 00:16:45,000
+Each supported database requires an additional dependency on the driver jar.
+
+202
+00:16:46,000 --> 00:16:52,000
+All of these dependencies are needed at compile time to build database use project.
+
+203
+00:16:53,000 --> 00:17:02,000
+However, your project only uses one specific database and doesn't need drivers for the Osas database
+
+204
+00:17:02,000 --> 00:17:09,000
+you use can declare these dependencies as optional so that when your project declares that AbbVie steals
+
+205
+00:17:10,000 --> 00:17:17,000
+as a direct dependency in its form, all the drivers supported by the database you use are not automatically
+
+206
+00:17:17,000 --> 00:17:18,000
+included in your project.
+
+207
+00:17:18,000 --> 00:17:26,000
+LastPass Your project will have to include an explicit dependency on the specific driver was the one
+
+208
+00:17:26,000 --> 00:17:31,000
+database it does use that suits regarding optional dependencies.
+
+209
+00:17:31,000 --> 00:17:36,000
+Even in the case you have any question, you are always welcome to ask your questions.
+
+210
+00:17:36,000 --> 00:17:37,000
+Those of you know.
+
+211
+00:17:38,000 --> 00:17:41,000
+Now, let's talk about dependency exclusion.
+
+212
+00:17:42,000 --> 00:17:44,000
+What is it and why do we need it?
+
+213
+00:17:45,000 --> 00:17:51,000
+Since May, when resource dependency strands transitivity, it is possible for unwanted dependencies
+
+214
+00:17:51,000 --> 00:17:53,000
+to be included in your projects.
+
+215
+00:17:53,000 --> 00:18:01,000
+ClassPass, for example, a certain older jar may have security issues or be incompatible with the Java
+
+216
+00:18:01,000 --> 00:18:04,000
+version you are using to address.
+
+217
+00:18:04,000 --> 00:18:09,000
+This moment allows you to exclude specific dependencies.
+
+218
+00:18:09,000 --> 00:18:18,000
+Exclusions are set on a specific dependency in your palm and are targeted at a specific group i.e. and
+
+219
+00:18:18,000 --> 00:18:26,000
+artifact I.D. When you build your project, that artifact will not be added to your project's glass
+
+220
+00:18:26,000 --> 00:18:31,000
+boss by way of the dependency in which the exclusion was declared.
+
+221
+00:18:33,000 --> 00:18:35,000
+How to use dependency exclusions.
+
+222
+00:18:36,000 --> 00:18:40,000
+We need to add exclusions element in the dependency element.
+
+223
+00:18:40,000 --> 00:18:43,000
+We the problematic jar is included.
+
+224
+00:18:44,000 --> 00:18:50,000
+And in a similar way, we can specify exclusions on the per dependency basis.
+
+225
+00:18:51,000 --> 00:18:57,000
+But why would specify such details on the per dependency basis rather than as a normal level?
+
+226
+00:18:58,000 --> 00:19:05,000
+This is mainly, to be sure, as a dependency graph is predictable and to keep inheritance effects from
+
+227
+00:19:05,000 --> 00:19:08,000
+excluding independence dependency that should not be excluded.
+
+228
+00:19:10,000 --> 00:19:13,000
+On the slide, you can see an example of dependency exclusion.
+
+229
+00:19:15,000 --> 00:19:17,000
+That's all what I wanted to learn with you today.
+
+230
+00:19:18,000 --> 00:19:20,000
+Let's recap what we have learned in this lesson.
+
+231
+00:19:21,000 --> 00:19:24,000
+In this lesson, we created our first bill.
+
+232
+00:19:24,000 --> 00:19:27,000
+We create a journal and manage to run it.
+
+233
+00:19:28,000 --> 00:19:30,000
+We learned what Manifest is.
+
+234
+00:19:30,000 --> 00:19:38,000
+Also, I show you how to enable reporting for tests in our application and how that fire plug in.
+
+235
+00:19:39,000 --> 00:19:46,000
+And at the end of the lesson, we have reviewed what optional dependencies are and how to exclude dependencies
+
+236
+00:19:46,000 --> 00:19:47,000
+when it is needed.
+
+237
+00:19:48,000 --> 00:19:50,000
+That's all for this lesson.
+
+238
+00:19:50,000 --> 00:19:51,000
+Thank you all for your attention.
+
+239
+00:19:52,000 --> 00:19:54,000
+Have a great day and see you in the next lesson.
+
diff --git a/59 - Apache Maven/006 Maven Web Project_en.srt b/59 - Apache Maven/006 Maven Web Project_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..ca4dea6fd60a6c04962b3b8c777b7ff6f3077a78
--- /dev/null
+++ b/59 - Apache Maven/006 Maven Web Project_en.srt
@@ -0,0 +1,908 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:12,000
+They were going to learn how to configure maven that project in this lesson, we're going to create
+
+3
+00:00:12,000 --> 00:00:15,000
+our first web project and run it on the web server.
+
+4
+00:00:16,000 --> 00:00:19,000
+I'm going to show you two different ways of creating web project.
+
+5
+00:00:19,000 --> 00:00:27,000
+The first way will be by using MAVEN Web Architecture and the second option to create the project using
+
+6
+00:00:27,000 --> 00:00:30,000
+Eclipse Dynamic Map Project.
+
+7
+00:00:30,000 --> 00:00:35,000
+I'm going to explain the structure of the web project, and you will understand what is the difference
+
+8
+00:00:35,000 --> 00:00:38,000
+between weapons and matter in folders.
+
+9
+00:00:38,000 --> 00:00:43,000
+And this is a lesson when we're first time going to run about our files.
+
+10
+00:00:44,000 --> 00:00:49,000
+We're going to build our file via MAVEN and I will show you in the structure of it.
+
+11
+00:00:50,000 --> 00:00:52,000
+Let's start our lesson.
+
+12
+00:00:52,000 --> 00:00:58,000
+And again, we're going to start from real examples and screen sharing because this topic is better
+
+13
+00:00:58,000 --> 00:01:01,000
+to understand by examples and not from slides.
+
+14
+00:01:02,000 --> 00:01:08,000
+The first thing that I'd like to mention is that you have different ways how you can create MAVEN project.
+
+15
+00:01:09,000 --> 00:01:13,000
+First of all, there is maven archetype, specially for web projects.
+
+16
+00:01:14,000 --> 00:01:19,000
+That is the easiest way, and another option is to create dynamic web projects in Eclipse.
+
+17
+00:01:20,000 --> 00:01:22,000
+And after that, convert to MAVEN project.
+
+18
+00:01:23,000 --> 00:01:30,000
+The second option is preferable for Eclipse because it allows to mitigate issues related with web project
+
+19
+00:01:30,000 --> 00:01:31,000
+configuration in Eclipse.
+
+20
+00:01:32,000 --> 00:01:38,000
+That's why if you also use Eclipse I.D. like I do, the second option is preferable.
+
+21
+00:01:38,000 --> 00:01:41,000
+But today I'm going to show you both options.
+
+22
+00:01:42,000 --> 00:01:44,000
+Let me start from the simple one.
+
+23
+00:01:44,000 --> 00:01:49,000
+So first of all, make sure that you select a Java EE perspective first.
+
+24
+00:01:50,000 --> 00:01:55,000
+After that, click on File New MAVEN project.
+
+25
+00:01:56,000 --> 00:01:58,000
+On the first step, keep Everson as this.
+
+26
+00:01:58,000 --> 00:02:02,000
+We're going to use a default workspace for the project.
+
+27
+00:02:02,000 --> 00:02:10,000
+Click next and proceed to the following page here we need to select archetype for map apps.
+
+28
+00:02:11,000 --> 00:02:13,000
+You can still state by its name.
+
+29
+00:02:13,000 --> 00:02:20,000
+Times of foreign maven Dash archetype Dash Bebop.
+
+30
+00:02:21,000 --> 00:02:27,000
+Selects a one where group group is a apportionment archetypes and click next button.
+
+31
+00:02:29,000 --> 00:02:35,000
+We can keep Group IAG compatibles or Nike in artifact AIG, let's put up.
+
+32
+00:02:37,000 --> 00:02:39,000
+After that click finish button.
+
+33
+00:02:40,000 --> 00:02:41,000
+Congratulations.
+
+34
+00:02:42,000 --> 00:02:45,000
+We successfully created our first maven that project.
+
+35
+00:02:45,000 --> 00:02:48,000
+Let's run it before run it.
+
+36
+00:02:48,000 --> 00:02:51,000
+Make sure you configure its web server in your ID.
+
+37
+00:02:52,000 --> 00:02:57,000
+You can check this by opening a server stop in case it is empty.
+
+38
+00:02:57,000 --> 00:03:02,000
+Here, please refer to the lesson about configuration of the web server in the groups.
+
+39
+00:03:03,000 --> 00:03:11,000
+Just to remind you in that lesson with another tomcat and followed setup guide at some in those clips.
+
+40
+00:03:12,000 --> 00:03:22,000
+Now we need to now radically select around this and after that select run on server, you can check
+
+41
+00:03:22,000 --> 00:03:25,000
+the proper web server is selected to run our web up.
+
+42
+00:03:26,000 --> 00:03:32,000
+But in case you have just one server configured, it is almost impossible to deploy our app accidentally
+
+43
+00:03:32,000 --> 00:03:35,000
+to another server on this pop up.
+
+44
+00:03:35,000 --> 00:03:42,000
+You can click Finish straight away after that and console, you can find a lot of log messages.
+
+45
+00:03:42,000 --> 00:03:50,000
+Server startup and specific amount of milliseconds means that your web server is up and running by default.
+
+46
+00:03:50,000 --> 00:03:59,000
+Web Server identifies files with the name index, and in case such file is present in the web resources
+
+47
+00:04:00,000 --> 00:04:02,000
+web server opens it automatically.
+
+48
+00:04:03,000 --> 00:04:06,000
+That is exactly what's happened here in the minute.
+
+49
+00:04:06,000 --> 00:04:12,000
+You are going to understand the structure of the web project, and you will understand why receives
+
+50
+00:04:12,000 --> 00:04:13,000
+this hello world tax.
+
+51
+00:04:14,000 --> 00:04:21,000
+You can see Hello World message, congratulations was the first deployment of your own web application.
+
+52
+00:04:22,000 --> 00:04:29,000
+You can see that your application is currently available on the local host at default Tomcat --,
+
+53
+00:04:29,000 --> 00:04:33,000
+that this 880 was tag of your app.
+
+54
+00:04:34,000 --> 00:04:42,000
+Now let's explore the project structure is a new source for the hills that you didn't see before.
+
+55
+00:04:42,000 --> 00:04:44,000
+It's called SAIC Main The Bap.
+
+56
+00:04:45,000 --> 00:04:48,000
+This is a source folder of the old map resources.
+
+57
+00:04:50,000 --> 00:04:55,000
+By the way, you're right, you can see that the groups can't identify source folders properly.
+
+58
+00:04:56,000 --> 00:05:04,000
+And if you open builds plus considerable pass, you're going to see that there are some errors in configuration
+
+59
+00:05:04,000 --> 00:05:05,000
+of source folders.
+
+60
+00:05:06,000 --> 00:05:13,000
+First of all, we have missing source folders here for Java sources and their sources.
+
+61
+00:05:13,000 --> 00:05:15,000
+This is not a problem.
+
+62
+00:05:15,000 --> 00:05:23,000
+The second saying we don't have a Sersi means that Bob specified here as a source for the look assumption.
+
+63
+00:05:23,000 --> 00:05:24,000
+What we have to consider, too.
+
+64
+00:05:25,000 --> 00:05:28,000
+Let me close to pass here.
+
+65
+00:05:29,000 --> 00:05:36,000
+So any way I can choose track shows or folders, all web resources are located in the web app folder.
+
+66
+00:05:37,000 --> 00:05:45,000
+Important thing to highlight here is that everything what is located in the Web Up folder is publicly
+
+67
+00:05:45,000 --> 00:05:51,000
+available when it is deployed as a web server beside all the content of a server in folder.
+
+68
+00:05:52,000 --> 00:05:56,000
+Here in the ramp up folder, you can find Index GCP file.
+
+69
+00:05:57,000 --> 00:06:00,000
+We're going to don't use technology in the separate lesson.
+
+70
+00:06:00,000 --> 00:06:04,000
+But the main thing here is that it has name index.
+
+71
+00:06:05,000 --> 00:06:12,000
+That means it automatically resolved by our web server and this resource request automatically.
+
+72
+00:06:13,000 --> 00:06:19,000
+That's why we see Hello World right after that application has been deployed and all the things that
+
+73
+00:06:19,000 --> 00:06:25,000
+are located inside the vamping folder are not accessible from the outside of the server.
+
+74
+00:06:26,000 --> 00:06:29,000
+For example, there is a file was a name that.
+
+75
+00:06:30,000 --> 00:06:32,000
+This is our server descriptor.
+
+76
+00:06:33,000 --> 00:06:39,000
+Let me open now our built in browser and try to access this file.
+
+77
+00:06:39,000 --> 00:06:47,000
+I type that dash and slash that point smell and press center.
+
+78
+00:06:48,000 --> 00:06:51,000
+You can see that such file couldn't be found.
+
+79
+00:06:51,000 --> 00:06:59,000
+But when I type again index GSP, I can see Hero World again, and the difference is not in the index
+
+80
+00:06:59,000 --> 00:07:03,000
+GSP itself, but in the place where it is located.
+
+81
+00:07:04,000 --> 00:07:10,000
+Amerson What will be located inside the vaccines will not be available outside of the server.
+
+82
+00:07:12,000 --> 00:07:19,000
+But that's why this is considered to be a good place to store any apparatus configurations, usually
+
+83
+00:07:19,000 --> 00:07:20,000
+in production environments.
+
+84
+00:07:20,000 --> 00:07:27,000
+You have key storage that contains sensitive information like keys for authorization was a third party
+
+85
+00:07:27,000 --> 00:07:31,000
+services, including user credentials to a database.
+
+86
+00:07:31,000 --> 00:07:38,000
+But theoretically, if you don't have dedicated keys storage tool, you may store sensitive information
+
+87
+00:07:39,000 --> 00:07:43,000
+either in the web, in folder or in the matter in folder.
+
+88
+00:07:44,000 --> 00:07:50,000
+And be sure that nobody from the network outside of your server will be available to get this information.
+
+89
+00:07:51,000 --> 00:07:54,000
+Potentially, there is also one more folders.
+
+90
+00:07:54,000 --> 00:07:57,000
+It is not publicly available, including the content inside.
+
+91
+00:07:58,000 --> 00:08:03,000
+Let's create one more folder here and name it matter and.
+
+92
+00:08:04,000 --> 00:08:13,000
+And let's go pins based indigenous people into Zaire now, let's rebuild and redeploy our app to do
+
+93
+00:08:13,000 --> 00:08:13,000
+this.
+
+94
+00:08:14,000 --> 00:08:19,000
+That's again, mouse, right click on this run on server and click Finish.
+
+95
+00:08:20,000 --> 00:08:28,000
+Now let's try to get access to industry speak that is Inside's and matha in ends that Andre's bar.
+
+96
+00:08:28,000 --> 00:08:36,000
+All right, mad dash and slash index speak and again file is not found.
+
+97
+00:08:37,000 --> 00:08:45,000
+I can get access to this resource because murder is also not publicly available like that.
+
+98
+00:08:46,000 --> 00:08:54,000
+But what is the difference between method and weapons that matter and could contain information about
+
+99
+00:08:54,000 --> 00:08:56,000
+the configuration of the application?
+
+100
+00:08:56,000 --> 00:09:03,000
+For example, we can put web server configurations at its main content is manifest file.
+
+101
+00:09:04,000 --> 00:09:09,000
+That means contains information and data about the application.
+
+102
+00:09:09,000 --> 00:09:15,000
+That means this is something what is present on in their cars was our extension.
+
+103
+00:09:16,000 --> 00:09:22,000
+One extension stands for web application resource or sometimes referred as Babacar.
+
+104
+00:09:23,000 --> 00:09:27,000
+Previously we had experience with you and that was archives.
+
+105
+00:09:28,000 --> 00:09:32,000
+That means has of the scripts or files.
+
+106
+00:09:32,000 --> 00:09:33,000
+It is called that example.
+
+107
+00:09:34,000 --> 00:09:36,000
+We're going to learn more about this configuration file.
+
+108
+00:09:36,000 --> 00:09:43,000
+In the separate lesson, one will learn serverless and serverless configuration dark library definition.
+
+109
+00:09:44,000 --> 00:09:51,000
+We're going to learn about taxes a separate lesson to classes folder where all compiled classes will
+
+110
+00:09:51,000 --> 00:09:51,000
+be located.
+
+111
+00:09:52,000 --> 00:09:56,000
+Lead folder where all your libraries will restore its offices of you.
+
+112
+00:09:57,000 --> 00:09:59,000
+That folder was all tax.
+
+113
+00:10:00,000 --> 00:10:03,000
+And again, we're going to learn tax in a separate class.
+
+114
+00:10:04,000 --> 00:10:08,000
+And the files that you are already familiar with is a complex amount.
+
+115
+00:10:08,000 --> 00:10:13,000
+Let's have a quick look at it, and for maximum, you can seize its packaging.
+
+116
+00:10:13,000 --> 00:10:15,000
+TARP is war.
+
+117
+00:10:15,000 --> 00:10:16,000
+And that's the work.
+
+118
+00:10:16,000 --> 00:10:18,000
+Logjam is added automatically.
+
+119
+00:10:19,000 --> 00:10:27,000
+Let's continue now I'm going to show you how to configure dynamic Web project and convert it into MAVEN
+
+120
+00:10:27,000 --> 00:10:28,000
+one.
+
+121
+00:10:29,000 --> 00:10:35,000
+This type of configuration a little bit more longer, but it allows to configure that project properly
+
+122
+00:10:35,000 --> 00:10:41,000
+in Eclipse because it is a very complex program and sensitive to different configurations.
+
+123
+00:10:42,000 --> 00:10:48,000
+Definitely, we can choose the current MAVEN project, but the amount of configurations will be big
+
+124
+00:10:49,000 --> 00:10:51,000
+and will be hard for you to remember.
+
+125
+00:10:51,000 --> 00:10:56,000
+It includes configuring built plus different subsets and other things.
+
+126
+00:10:57,000 --> 00:11:03,000
+That's why I want to show you how accurate we have projects in the groups and help you to avoid different
+
+127
+00:11:03,000 --> 00:11:04,000
+mistakes in the future.
+
+128
+00:11:05,000 --> 00:11:06,000
+Let's stop.
+
+129
+00:11:07,000 --> 00:11:10,000
+I click file new dynamic web project.
+
+130
+00:11:11,000 --> 00:11:14,000
+The first step would change nothing.
+
+131
+00:11:14,000 --> 00:11:20,000
+You can just verify that dynamic web module version is four point zero.
+
+132
+00:11:21,000 --> 00:11:23,000
+Let's give this project the name.
+
+133
+00:11:23,000 --> 00:11:25,000
+Let's call it online store.
+
+134
+00:11:26,000 --> 00:11:29,000
+Click Next button here.
+
+135
+00:11:29,000 --> 00:11:32,000
+We need to configure all source folders manually.
+
+136
+00:11:33,000 --> 00:11:39,000
+And we already know that we are going to convert our dynamic web project into the MAVEN project.
+
+137
+00:11:39,000 --> 00:11:44,000
+So let's create some old folders, according to MAVEN Layout Convention.
+
+138
+00:11:45,000 --> 00:11:49,000
+First of all, I remove S or C source folder.
+
+139
+00:11:50,000 --> 00:11:56,000
+After that, I click Add folder and create a Sersi main java.
+
+140
+00:11:57,000 --> 00:11:59,000
+SIRC death, Java.
+
+141
+00:12:01,000 --> 00:12:04,000
+SAIC Main Mbappe.
+
+142
+00:12:05,000 --> 00:12:11,000
+As our main resources associate, less resources.
+
+143
+00:12:12,000 --> 00:12:20,000
+After that, actually next on this that I would select generate that X amount was a bit later in Oslo.
+
+144
+00:12:20,000 --> 00:12:26,000
+Lessons about service configuration, you're going to announce that we don't necessarily need that X
+
+145
+00:12:26,000 --> 00:12:27,000
+amount.
+
+146
+00:12:27,000 --> 00:12:30,000
+And we can configure our service and filters without it.
+
+147
+00:12:31,000 --> 00:12:37,000
+But let's keep it at least for learning purposes, and we can always remove it later.
+
+148
+00:12:38,000 --> 00:12:46,000
+Content directory folders should be a so c main that Bob and colleague finish, no, that's converted
+
+149
+00:12:46,000 --> 00:12:54,000
+into the minimum Project Mouse, right click and figure kind of to me, when Project Group II will become
+
+150
+00:12:54,000 --> 00:13:03,000
+my civil society and artsy fartsy, you will be online store tensions at packaging should be set the
+
+151
+00:13:03,000 --> 00:13:05,000
+bar click finish.
+
+152
+00:13:06,000 --> 00:13:06,000
+That's it.
+
+153
+00:13:07,000 --> 00:13:09,000
+Now let's expand our sources.
+
+154
+00:13:10,000 --> 00:13:13,000
+And here with all source folders, configure it.
+
+155
+00:13:14,000 --> 00:13:22,000
+Let's create at least one public resource available in our web app, or we can just copy and paste our
+
+156
+00:13:22,000 --> 00:13:29,000
+industries GSP from the previously generated project, by the way, can you see that it shows error
+
+157
+00:13:29,000 --> 00:13:34,000
+when I edit industry speak, but actually it will be executed just fine.
+
+158
+00:13:35,000 --> 00:13:42,000
+This is because Eclipse wants to warn us that we don't have any libraries for GCP yet in our project.
+
+159
+00:13:43,000 --> 00:13:45,000
+There are two ways to resolve this issue.
+
+160
+00:13:46,000 --> 00:13:49,000
+The first one is the dependency on our comics.
+
+161
+00:13:49,000 --> 00:13:54,000
+Email was provided scope for Servers API, GSP API.
+
+162
+00:13:55,000 --> 00:14:01,000
+If you don't remember what MAVEN Dependencies code is, please watching in lesson about working with
+
+163
+00:14:01,000 --> 00:14:07,000
+MAVEN, where we reviewed dependencies scopes just to help you reminded providers.
+
+164
+00:14:07,000 --> 00:14:13,000
+Scope tells us the dependency should be provided by the environment, whereas the app is going to be
+
+165
+00:14:13,000 --> 00:14:15,000
+executed in this case.
+
+166
+00:14:16,000 --> 00:14:20,000
+So at GCP, dependency will be provided by the web server.
+
+167
+00:14:21,000 --> 00:14:24,000
+And another option is to configure targeted trying times.
+
+168
+00:14:25,000 --> 00:14:26,000
+We just need to tell Eclipse.
+
+169
+00:14:27,000 --> 00:14:29,000
+Don't worry, we know what we do.
+
+170
+00:14:29,000 --> 00:14:32,000
+And this app is going to be deployed to the Tomcat.
+
+171
+00:14:32,000 --> 00:14:37,000
+An eclipse will understand that all necessary dependencies will be provided by the moment we deploy
+
+172
+00:14:37,000 --> 00:14:41,000
+our app as a web server taking account.
+
+173
+00:14:41,000 --> 00:14:45,000
+You know how to add dependencies celebrated into the portal maximo.
+
+174
+00:14:45,000 --> 00:14:48,000
+And this error is not critical for us.
+
+175
+00:14:49,000 --> 00:14:53,000
+Let's ignore it for this moment and proceed with the next step.
+
+176
+00:14:54,000 --> 00:14:58,000
+Now, let's run this project and deploy it on the Web server.
+
+177
+00:14:58,000 --> 00:15:02,000
+I mouse right Greek, run this run on Sarah.
+
+178
+00:15:03,000 --> 00:15:03,000
+I'm all for it.
+
+179
+00:15:03,000 --> 00:15:07,000
+Restored server considering I want to deploy a new web app.
+
+180
+00:15:11,000 --> 00:15:13,000
+Once summer is restarted, I see.
+
+181
+00:15:13,000 --> 00:15:16,000
+Hello, world message, great.
+
+182
+00:15:16,000 --> 00:15:17,000
+Congratulations.
+
+183
+00:15:18,000 --> 00:15:20,000
+Now you know two ways.
+
+184
+00:15:20,000 --> 00:15:22,000
+How to configure that project in Eclipse?
+
+185
+00:15:23,000 --> 00:15:25,000
+I recommended to use the second option.
+
+186
+00:15:26,000 --> 00:15:33,000
+Also, one of your home tasks would be to move all Java sources that we created with all my students
+
+187
+00:15:33,000 --> 00:15:35,000
+on the Java course into the project.
+
+188
+00:15:36,000 --> 00:15:43,000
+During the course, Java from zero to the first job we create online store from scratch.
+
+189
+00:15:43,000 --> 00:15:48,000
+Previously, we use console as an interface to interact with the user.
+
+190
+00:15:49,000 --> 00:15:54,000
+And now one, we know how to create and work with web applications.
+
+191
+00:15:54,000 --> 00:16:00,000
+All right, one of you move all Java sources into the web project and we will proceed from there.
+
+192
+00:16:01,000 --> 00:16:07,000
+The last, but not the least, saying that I'd like to show you today is the structure of the voter
+
+193
+00:16:07,000 --> 00:16:15,000
+file you're wearing in those that we deploy on the web server files with the war extension that is our
+
+194
+00:16:15,000 --> 00:16:16,000
+web archives.
+
+195
+00:16:16,000 --> 00:16:24,000
+And I want you to understand how this archive is packaged in order that you could troubleshoot issues
+
+196
+00:16:24,000 --> 00:16:26,000
+in the future when it will be needed.
+
+197
+00:16:27,000 --> 00:16:33,000
+So let's open Terminal is a root folder of our online store project.
+
+198
+00:16:34,000 --> 00:16:44,000
+Now, let's execute the following Come on, I'm the of our blog and added to my POM axonal user project
+
+199
+00:16:44,000 --> 00:16:44,000
+conversion.
+
+200
+00:16:45,000 --> 00:16:51,000
+And we also specified in our permit symbols that we want a package have a built in VAR file.
+
+201
+00:16:51,000 --> 00:16:56,000
+That's why this time in target folder worthwhile will be created.
+
+202
+00:16:57,000 --> 00:17:05,000
+That smells right, click on the target folder properties, and let's click here to show it in the system.
+
+203
+00:17:05,000 --> 00:17:06,000
+Explore.
+
+204
+00:17:07,000 --> 00:17:09,000
+Here's our guy.
+
+205
+00:17:10,000 --> 00:17:17,000
+We can extract all files from our car fusion seven, zip free our cover tool, or we can just navigate
+
+206
+00:17:17,000 --> 00:17:19,000
+to the already extracted version of zircons.
+
+207
+00:17:20,000 --> 00:17:21,000
+Can you see this?
+
+208
+00:17:22,000 --> 00:17:28,000
+Basically, the structure of the archive is mainly out of the web folder.
+
+209
+00:17:29,000 --> 00:17:36,000
+Here is Magallanes mapping folders and all web resources that are publicly available on the top level.
+
+210
+00:17:37,000 --> 00:17:45,000
+Here is our index GSP file in the web means there will be classes folder where all compiled classes
+
+211
+00:17:45,000 --> 00:17:46,000
+will be located.
+
+212
+00:17:47,000 --> 00:17:54,000
+Also, we don't have any dependencies here specified in our poll maximum, but once we'll proceed with
+
+213
+00:17:54,000 --> 00:18:01,000
+our course, I'm going to show you where I may want to package all dependencies inside our car.
+
+214
+00:18:02,000 --> 00:18:09,000
+Here you can find our deployment descriptor and method, and so you can find the manifest file.
+
+215
+00:18:10,000 --> 00:18:13,000
+That's all what I wanted to share with you in this lesson.
+
+216
+00:18:13,000 --> 00:18:20,000
+Let's recap what we have learned today in this national ground how to create maven that project.
+
+217
+00:18:21,000 --> 00:18:26,000
+And by the way, we learned how to do this in three different ways.
+
+218
+00:18:26,000 --> 00:18:33,000
+We learned how to create that project based on the mainland web archetype and using the Eclipse Dynamic
+
+219
+00:18:33,000 --> 00:18:34,000
+Map project.
+
+220
+00:18:35,000 --> 00:18:42,000
+Now, you know, the structure of management, that project we run our first project on the web server.
+
+221
+00:18:42,000 --> 00:18:46,000
+This is just the beginning of a lot of amazing things that we are going to learn.
+
+222
+00:18:47,000 --> 00:18:52,000
+Also, you know, there is a difference between vamping and Mather in folders.
+
+223
+00:18:53,000 --> 00:18:59,000
+And during this lesson, we learned what our file is and what its structure looks like.
+
+224
+00:19:00,000 --> 00:19:00,000
+Great.
+
+225
+00:19:01,000 --> 00:19:02,000
+That's it for today.
+
+226
+00:19:03,000 --> 00:19:04,000
+Thank you for your attention.
+
+227
+00:19:05,000 --> 00:19:08,000
+Have a great day and see you in the next lesson.
+
diff --git a/59 - Apache Maven/007 Commands-executed-in-the-terminal-during-the-lesson.url b/59 - Apache Maven/007 Commands-executed-in-the-terminal-during-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..c7384a68579a329d3f049d71328b63f2fb5a9eb9
--- /dev/null
+++ b/59 - Apache Maven/007 Commands-executed-in-the-terminal-during-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://docs.google.com/document/d/1bOUcswMjfHl0uhFwArs1orKSLWD-NU7RM9DqbZ4FX6w/edit?usp=sharing
\ No newline at end of file
diff --git a/59 - Apache Maven/007 Maven Multi-Module Project_en.srt b/59 - Apache Maven/007 Maven Multi-Module Project_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..e0e94417fbdd900efe1358864ee01c50667caa29
--- /dev/null
+++ b/59 - Apache Maven/007 Maven Multi-Module Project_en.srt
@@ -0,0 +1,1328 @@
+1
+00:00:06,000 --> 00:00:06,000
+Hello, Jim.
+
+2
+00:00:06,000 --> 00:00:10,000
+In this lesson, we're going to learn how to create MAVEN multimodal project.
+
+3
+00:00:11,000 --> 00:00:15,000
+Then you're going to understand what multimodal projects are.
+
+4
+00:00:15,000 --> 00:00:21,000
+Ensure you can connect maven projects in between each other with their relationships, where one will
+
+5
+00:00:21,000 --> 00:00:26,000
+be considered as a parent and another will be considered as a child.
+
+6
+00:00:26,000 --> 00:00:32,000
+The Charles projects will call seven modules built in architecture in this way.
+
+7
+00:00:32,000 --> 00:00:37,000
+You can take advantage of separation of concerns, dependency and log in management.
+
+8
+00:00:38,000 --> 00:00:43,000
+You're in the thing you're going to see advantages and disadvantages of multi module projects approach.
+
+9
+00:00:43,000 --> 00:00:47,000
+I was explaining what inheritance and project aggregation in MAVEN means.
+
+10
+00:00:48,000 --> 00:00:51,000
+We'll learn another term maven reactor.
+
+11
+00:00:51,000 --> 00:00:59,000
+And after that, we'll jump to practical exercises and all examples you will be able to find in attachments
+
+12
+00:00:59,000 --> 00:01:01,000
+to the vessel that start our lesson.
+
+13
+00:01:02,000 --> 00:01:06,000
+We're going to start from understanding of what inheritance and maven means.
+
+14
+00:01:07,000 --> 00:01:14,000
+If you remember, in one of the lessons we discussed Super Bowl Z's parents home to all other permits,
+
+15
+00:01:14,000 --> 00:01:18,000
+no files and were all our default values are stored.
+
+16
+00:01:18,000 --> 00:01:21,000
+The Super Bowl is member's default ball.
+
+17
+00:01:22,000 --> 00:01:30,000
+All palms extend the Super Bowl unless explicitly set, meaning the configuration specified in the Super
+
+18
+00:01:30,000 --> 00:01:34,000
+Bowl is inherited by the home separated for your projects.
+
+19
+00:01:35,000 --> 00:01:38,000
+The Super Bowl is one example of project inheritance.
+
+20
+00:01:39,000 --> 00:01:46,000
+However, you can also introduce your own parents, both by specifying that parents element in at form
+
+21
+00:01:46,000 --> 00:01:54,000
+has demonstrated its on the side just open for maximum files of sub modules and adds parents element
+
+22
+00:01:54,000 --> 00:01:57,000
+and specified details of parents project.
+
+23
+00:01:58,000 --> 00:02:05,000
+Now, let's understand what project segregation, this project aggregation is similar to project inheritance,
+
+24
+00:02:05,000 --> 00:02:12,000
+but instead of specifying the parents going from the module, it specifies the modules from the parents
+
+25
+00:02:12,000 --> 00:02:13,000
+bomb.
+
+26
+00:02:13,000 --> 00:02:16,000
+So it is like opposite from inheritance.
+
+27
+00:02:17,000 --> 00:02:25,000
+One more time in inheritance, we open pull maximal files of sub modules and specify whose parent does
+
+28
+00:02:25,000 --> 00:02:29,000
+this form and we add parent element.
+
+29
+00:02:29,000 --> 00:02:37,000
+But in aggregation, we open parents, form AppSumo and list all child modules by doing so.
+
+30
+00:02:37,000 --> 00:02:45,000
+The parents project now knows it's more news and information command is involved against is a parent
+
+31
+00:02:45,000 --> 00:02:51,000
+Project Z maven come on will then be executed, does it parents modules as well?
+
+32
+00:02:52,000 --> 00:03:00,000
+To do project aggregation, you must do the following change the parents combs packages as a value pom,
+
+33
+00:03:00,000 --> 00:03:06,000
+specifying the parents forms the directory of its modules children poems.
+
+34
+00:03:07,000 --> 00:03:13,000
+If you have several Marvel projects and they all have similar configurations, you can refactor your
+
+35
+00:03:13,000 --> 00:03:18,000
+projects by pulling out those similar configurations and making the parent project.
+
+36
+00:03:18,000 --> 00:03:26,000
+Thus, all you have to do is to let your maven projects inherit its parent project, and those configurations
+
+37
+00:03:26,000 --> 00:03:29,000
+would then be applied to all of them.
+
+38
+00:03:29,000 --> 00:03:36,000
+And if you have a group of projects that then build or process together, you can create a parent project
+
+39
+00:03:36,000 --> 00:03:41,000
+and have that parent project declare those projects as its modules.
+
+40
+00:03:42,000 --> 00:03:47,000
+By doing so, you would only have to build the parent and the rest will follow.
+
+41
+00:03:48,000 --> 00:03:55,000
+But of course, you can have both project imperatives and project aggregation, meaning you can have
+
+42
+00:03:55,000 --> 00:03:59,000
+your modules specify a parent project at the same time.
+
+43
+00:04:00,000 --> 00:04:04,000
+Has its parents project specifies those maven projects as its modules.
+
+44
+00:04:05,000 --> 00:04:15,000
+You would just have to apply all these three rules to every child whose parents form is changed the
+
+45
+00:04:15,000 --> 00:04:23,000
+parents homes package and the value poem specified in the parent home directories of its modules, children,
+
+46
+00:04:23,000 --> 00:04:24,000
+palms.
+
+47
+00:04:25,000 --> 00:04:31,000
+And today, during the demo, a little bit later in this lesson, I am going to show you how to do this.
+
+48
+00:04:32,000 --> 00:04:39,000
+Not before jumping does Democrats and few more things about me is that we always will use during Saddam,
+
+49
+00:04:40,000 --> 00:04:44,000
+one of the practices that maybe encourages is don't repeat yourself.
+
+50
+00:04:45,000 --> 00:04:52,000
+However, there are circumstances where you will need to use the same value in several different locations
+
+51
+00:04:52,000 --> 00:05:01,000
+to assist in ensuring the value is only specified once MAVEN allows you to use both your old and predefined
+
+52
+00:05:01,000 --> 00:05:02,000
+variable seize upon.
+
+53
+00:05:03,000 --> 00:05:11,000
+For example, Duck says the project version variable you would reference it like so version and use
+
+54
+00:05:11,000 --> 00:05:13,000
+an expression language.
+
+55
+00:05:13,000 --> 00:05:17,000
+We put name of the variable in brackets.
+
+56
+00:05:18,000 --> 00:05:25,000
+The examples that you can see on this slide is a practical one to not stay confused about the versions
+
+57
+00:05:25,000 --> 00:05:30,000
+of maximum and repeat ourselves in sub modules and parents module.
+
+58
+00:05:30,000 --> 00:05:32,000
+It is better to use this variable.
+
+59
+00:05:33,000 --> 00:05:38,000
+I can describe other variables in my properties to.
+
+60
+00:05:39,000 --> 00:05:44,000
+One factor to note is that these variables are processed after inheritance.
+
+61
+00:05:45,000 --> 00:05:52,000
+This means that if a parent project uses a variable Zanny's definition in the child, not the parent
+
+62
+00:05:52,000 --> 00:05:54,000
+will be the one eventually used.
+
+63
+00:05:55,000 --> 00:05:57,000
+And one more new term for the day.
+
+64
+00:05:58,000 --> 00:06:00,000
+Let's learn what maybe the reactor is.
+
+65
+00:06:01,000 --> 00:06:07,000
+The mechanism in MAVEN's that handles multi-modal projects is referred to as reactor.
+
+66
+00:06:08,000 --> 00:06:16,000
+This part of the marble core does the following collects all the available modules to build source projects
+
+67
+00:06:16,000 --> 00:06:18,000
+into the correct build order.
+
+68
+00:06:19,000 --> 00:06:27,000
+Builds is a selected produce in order because modules within a multi-modal build can depend on each
+
+69
+00:06:27,000 --> 00:06:27,000
+other.
+
+70
+00:06:28,000 --> 00:06:35,000
+It is important that the reactor source all the projects in a way that guarantees any project is built
+
+71
+00:06:35,000 --> 00:06:37,000
+before it is required.
+
+72
+00:06:38,000 --> 00:06:45,000
+The following Relationships on Earth When sorting produce a project dependency on an awesome model is
+
+73
+00:06:45,000 --> 00:06:47,000
+a build, a plug and declaration.
+
+74
+00:06:47,000 --> 00:06:54,000
+Whereas a plug in is another modules built a plug in dependency on another module and then built and
+
+75
+00:06:54,000 --> 00:07:01,000
+built extension declaration on another module and to build the order declared in the modules element.
+
+76
+00:07:02,000 --> 00:07:03,000
+If no other rule applies.
+
+77
+00:07:05,000 --> 00:07:08,000
+And we are going to proceed to a lesson was practical example.
+
+78
+00:07:09,000 --> 00:07:14,000
+I'm going to show you how to create new maven projects and connected together with existing ones.
+
+79
+00:07:14,000 --> 00:07:21,000
+In other words, I'm going to show you how to create multi module project from the series that we have
+
+80
+00:07:21,000 --> 00:07:23,000
+already learned in this lesson.
+
+81
+00:07:23,000 --> 00:07:26,000
+You should know that MAVEN supports inheritance.
+
+82
+00:07:27,000 --> 00:07:34,000
+In the greatest lessons I already explains is that each ball maximum file has in place a parent bomb.
+
+83
+00:07:34,000 --> 00:07:39,000
+It's called super bomb and can be located in maven binaries.
+
+84
+00:07:39,000 --> 00:07:45,000
+These two force are merged by MAVEN and form the effective form.
+
+85
+00:07:46,000 --> 00:07:52,000
+This means that we can create our own bomb excel file, which will serve us as a parent project.
+
+86
+00:07:53,000 --> 00:08:00,000
+Then we can include that all configuration was dependencies and said this as the parent of our child
+
+87
+00:08:00,000 --> 00:08:03,000
+modules, so they'll inherit from it.
+
+88
+00:08:04,000 --> 00:08:12,000
+Besides, inheritance MAVEN provides a notion of the aggregation parent poems. that leverages this functionality
+
+89
+00:08:12,000 --> 00:08:14,000
+is called an aggregate form.
+
+90
+00:08:14,000 --> 00:08:22,000
+Basically, this kind of form declares its modules explicitly in its common XML file.
+
+91
+00:08:22,000 --> 00:08:26,000
+Let's recap one more time what MAVEN Multi-model Project is.
+
+92
+00:08:27,000 --> 00:08:30,000
+It is an aggregation of multiple maven projects.
+
+93
+00:08:30,000 --> 00:08:38,000
+That means that what we call some modules actually in real life are just a regular maven projects that
+
+94
+00:08:38,000 --> 00:08:41,000
+I can even build separately under certain conditions.
+
+95
+00:08:42,000 --> 00:08:47,000
+There is a parent form file that helps me to aggregate all of the modules.
+
+96
+00:08:48,000 --> 00:08:51,000
+I can build all sub modules using parents on file.
+
+97
+00:08:52,000 --> 00:09:00,000
+In most cases, the parents own file is located within the project's to it, and other projects are
+
+98
+00:09:00,000 --> 00:09:02,000
+located in the sub folders.
+
+99
+00:09:03,000 --> 00:09:09,000
+In this demo, we're going to create more news that contains all back and logic, and another project
+
+100
+00:09:09,000 --> 00:09:16,000
+potentially in charge of interaction was the database and not pay attention to the domain specifics.
+
+101
+00:09:17,000 --> 00:09:22,000
+In this lesson, we are focusing only on the how we can build model project.
+
+102
+00:09:23,000 --> 00:09:30,000
+After this lesson, you will have the whole task related was online store app, and you will need to
+
+103
+00:09:30,000 --> 00:09:32,000
+create more more on your project.
+
+104
+00:09:32,000 --> 00:09:39,000
+Is it disclose its real life in this lesson, we limit ourselves with simple examples in order you can
+
+105
+00:09:39,000 --> 00:09:41,000
+understand the topic better.
+
+106
+00:09:42,000 --> 00:09:48,000
+The first things that we need to do is to generate parents maven project that's generated.
+
+107
+00:09:49,000 --> 00:09:50,000
+All right.
+
+108
+00:09:50,000 --> 00:09:57,000
+Open terminal inside our online store project, you can open terminal inside to any other project that
+
+109
+00:09:57,000 --> 00:09:59,000
+you have in your workspace.
+
+110
+00:09:59,000 --> 00:10:00,000
+It doesn't matter.
+
+111
+00:10:00,000 --> 00:10:05,000
+Zoning is saying that this important is just to save time while navigating in the terminal.
+
+112
+00:10:06,000 --> 00:10:10,000
+So it is up to you what project to open in the terminal?
+
+113
+00:10:10,000 --> 00:10:17,000
+I just want the new project will be located near the online store project in my file system uses.
+
+114
+00:10:17,000 --> 00:10:21,000
+Now I will use Terminal first because I believe it.
+
+115
+00:10:21,000 --> 00:10:24,000
+Visualizations Banner was terminal.
+
+116
+00:10:24,000 --> 00:10:27,000
+You see how to navigate within different folders.
+
+117
+00:10:28,000 --> 00:10:33,000
+Then you build a vision of how objects will be connecting between the chars.
+
+118
+00:10:33,000 --> 00:10:34,000
+Don't worry.
+
+119
+00:10:35,000 --> 00:10:39,000
+Examples of us and I will show you how to input all projects in a cliffside.
+
+120
+00:10:40,000 --> 00:10:45,000
+I will never give one level up the double Dutch.
+
+121
+00:10:46,000 --> 00:10:53,000
+And that will create new director, is it the school may have a movie and k.d. maven multi.
+
+122
+00:10:54,000 --> 00:10:56,000
+After that, I navigate into it.
+
+123
+00:10:57,000 --> 00:10:59,000
+Sydney MAVEN Multi.
+
+124
+00:11:01,000 --> 00:11:08,000
+And now I'm a former Navy commander, generates parents bomb, I'm willing to use many of the fixers
+
+125
+00:11:08,000 --> 00:11:16,000
+archetype to generate project in case you forgot what archetypes are and in specific was a recent article,
+
+126
+00:11:17,000 --> 00:11:23,000
+I recommend you to watch previous lesson about archetypes when we generated our first MAVEN project.
+
+127
+00:11:24,000 --> 00:11:30,000
+Don't worry, I'm going to share with you this long line in attachments to the lesson.
+
+128
+00:11:31,000 --> 00:11:38,000
+But it should be already familiar to you because, you know, nowadays when we created our first MAVEN
+
+129
+00:11:38,000 --> 00:11:38,000
+project.
+
+130
+00:11:40,000 --> 00:11:43,000
+Let's know, navigating this generated project.
+
+131
+00:11:44,000 --> 00:11:46,000
+Sydney MAVEN Mountain.
+
+132
+00:11:47,000 --> 00:11:52,000
+The nags at I'm going to do is stop and comb Xolo to make it faster.
+
+133
+00:11:52,000 --> 00:11:59,000
+I don't know, ever since it was a console instead of eclipse, you can repeat after me because commands
+
+134
+00:11:59,000 --> 00:12:03,000
+and console are going to be the same no matter what I use.
+
+135
+00:12:04,000 --> 00:12:05,000
+Notepads bomb x amount.
+
+136
+00:12:07,000 --> 00:12:14,000
+If you use windows and you have notepad application, it will open pore maximo in Notepad.
+
+137
+00:12:15,000 --> 00:12:22,000
+The same as in previous lessons I use stop key for auto completion to make my console include faster
+
+138
+00:12:23,000 --> 00:12:25,000
+when you open a notepad.
+
+139
+00:12:25,000 --> 00:12:26,000
+Let's set the packaging.
+
+140
+00:12:26,000 --> 00:12:31,000
+Typekit bomb also will change default Java version here.
+
+141
+00:12:31,000 --> 00:12:36,000
+Is the latest Java Altius version is a Java version 11.
+
+142
+00:12:37,000 --> 00:12:43,000
+When we start packaging, you can close this X amount by setting packaging to form time.
+
+143
+00:12:44,000 --> 00:12:50,000
+We are declaring that the project will serve as a parent or an aggregate.
+
+144
+00:12:51,000 --> 00:12:53,000
+It once produce further artifacts.
+
+145
+00:12:54,000 --> 00:13:00,000
+Also, this is a place where we can specify configurations that are going to be shared and reused in
+
+146
+00:13:00,000 --> 00:13:01,000
+child modules.
+
+147
+00:13:01,000 --> 00:13:05,000
+It might be a place to perform dependency on blogging management.
+
+148
+00:13:06,000 --> 00:13:13,000
+Considering we can figure it out, our parent project, let's generate some modules now as our aggregator
+
+149
+00:13:13,000 --> 00:13:14,000
+is done.
+
+150
+00:13:14,000 --> 00:13:22,000
+We can generate our sub modules into terminal stage sides, apparent project and generate two child
+
+151
+00:13:22,000 --> 00:13:22,000
+projects.
+
+152
+00:13:23,000 --> 00:13:27,000
+I use the same commands that we use for Generation of Parent Project.
+
+153
+00:13:27,000 --> 00:13:32,000
+I use Marvel Pixar's archetype again to generate sub models.
+
+154
+00:13:33,000 --> 00:13:39,000
+One ceremonial artifact that year will be maven multicore and another ceremonial artifact that will
+
+155
+00:13:39,000 --> 00:13:41,000
+be MAVEN Multi Persistence.
+
+156
+00:13:41,000 --> 00:13:44,000
+Let's now execute commands in the terminal.
+
+157
+00:13:45,000 --> 00:13:49,000
+We execute two commands for to produce.
+
+158
+00:13:52,000 --> 00:13:52,000
+Great.
+
+159
+00:13:52,000 --> 00:13:59,000
+We generated those Ceremonials million automatically added details, and our parents form excellent
+
+160
+00:13:59,000 --> 00:14:00,000
+about child manuals.
+
+161
+00:14:01,000 --> 00:14:04,000
+Let's again open the parents for maximum chances.
+
+162
+00:14:05,000 --> 00:14:07,000
+Notepad X Amount.
+
+163
+00:14:08,000 --> 00:14:14,000
+And in the bottom of all, maximum file officers and built elements, we can find more sell them on.
+
+164
+00:14:15,000 --> 00:14:23,000
+It's always stonechild's modules that we generate inside the parent project that's now run and the unpackaged
+
+165
+00:14:23,000 --> 00:14:29,000
+come on in the parent project directory and see what we'll get an avian package.
+
+166
+00:14:31,000 --> 00:14:37,000
+And once viewed as finished, we can see that Mamombe identifies order of build.
+
+167
+00:14:38,000 --> 00:14:43,000
+We have three items MAVEN moved to is Farm Bill.
+
+168
+00:14:44,000 --> 00:14:46,000
+Core and persistence has JaVale.
+
+169
+00:14:47,000 --> 00:14:55,000
+Moreover, MAVEN will analyze our project and build its in the proper order, so if our core module
+
+170
+00:14:55,000 --> 00:15:02,000
+depends on the persistence module, Mayweather will build first us as a persistence module and after
+
+171
+00:15:02,000 --> 00:15:03,000
+that it will build the core.
+
+172
+00:15:05,000 --> 00:15:08,000
+No, you know what, maybe the director is earlier today.
+
+173
+00:15:10,000 --> 00:15:14,000
+Tests will be executed for each module in this particular case.
+
+174
+00:15:14,000 --> 00:15:16,000
+Tests are executed four separate bills.
+
+175
+00:15:17,000 --> 00:15:18,000
+Great.
+
+176
+00:15:18,000 --> 00:15:19,000
+It works.
+
+177
+00:15:19,000 --> 00:15:26,000
+We have just created our first mainland multimodal project in case we want to share all the configuration
+
+178
+00:15:26,000 --> 00:15:27,000
+with our sub modules.
+
+179
+00:15:28,000 --> 00:15:33,000
+We need to specify parents pool inside their home Xolo files.
+
+180
+00:15:33,000 --> 00:15:36,000
+For example, let's imagine the next case.
+
+181
+00:15:37,000 --> 00:15:41,000
+I will add a Pacheco's dependency in the parents home x amount.
+
+182
+00:15:42,000 --> 00:15:46,000
+I will point to parents for Maximo from core sub mono.
+
+183
+00:15:46,000 --> 00:15:53,000
+I expect that this will give me the opportunity to use Apache Commons Library inside the core module.
+
+184
+00:15:54,000 --> 00:16:00,000
+So the first thing I do, I add Apache Commons dependency in my parent axonal.
+
+185
+00:16:02,000 --> 00:16:09,000
+After this, let's navigate the second module folder, and let's open, it's excellent to check its
+
+186
+00:16:09,000 --> 00:16:13,000
+parent that was added automatically, just to be sure.
+
+187
+00:16:13,000 --> 00:16:16,000
+Sydney, Melbourne Multi-core.
+
+188
+00:16:17,000 --> 00:16:22,000
+And here I open Palm X amount, not compatible maximum.
+
+189
+00:16:23,000 --> 00:16:27,000
+Let's make sure that parent that is present in this file.
+
+190
+00:16:28,000 --> 00:16:28,000
+Great.
+
+191
+00:16:29,000 --> 00:16:35,000
+Leave it as is at the moment at the end of the lesson, we're going to impress all our more Jacinto
+
+192
+00:16:35,000 --> 00:16:40,000
+I.D. and we'll try to use Apache Commons classes inside the core mono.
+
+193
+00:16:41,000 --> 00:16:44,000
+And before that, I want to add one more little thing.
+
+194
+00:16:45,000 --> 00:16:46,000
+Let's add dependency.
+
+195
+00:16:47,000 --> 00:16:50,000
+I want a thousand core module depends on the persistence.
+
+196
+00:16:52,000 --> 00:16:57,000
+To save your time, let me show you as the final version was a dependencies between modules.
+
+197
+00:16:58,000 --> 00:17:05,000
+I cleaned up all maximum files because they contained a lot of duplicate dependencies, plugins and
+
+198
+00:17:05,000 --> 00:17:07,000
+plugins we don't use at the moment.
+
+199
+00:17:08,000 --> 00:17:14,000
+Don't worry, I'm going to share with you this multi model example, and you will be able to explore
+
+200
+00:17:14,000 --> 00:17:17,000
+it in your computer, in attachments to the last one.
+
+201
+00:17:17,000 --> 00:17:22,000
+You can find a link to the GitHub, whereas the following example will be located.
+
+202
+00:17:23,000 --> 00:17:30,000
+Let's start again from the parents, Paul Maximo, and as we go, I will add what was removed, what
+
+203
+00:17:30,000 --> 00:17:37,000
+was added, and I will share with you final, short and concise versions of the X files.
+
+204
+00:17:38,000 --> 00:17:44,000
+Let's look at the parents from X-Men first undeclared project version and properties.
+
+205
+00:17:44,000 --> 00:17:51,000
+Don what cases when they specify the same version across different HBOMax among files, I create variable
+
+206
+00:17:51,000 --> 00:17:57,000
+and use it in all cases where I need to specify a version to avoid any mistakes in spelling.
+
+207
+00:17:58,000 --> 00:18:03,000
+I moved modules on top here and put them right in those properties.
+
+208
+00:18:04,000 --> 00:18:07,000
+In the panel system, we have a bunch of comments and G-Unit.
+
+209
+00:18:08,000 --> 00:18:14,000
+You can see that I removed plugins management and I removed a lot of elements inside that were built
+
+210
+00:18:14,000 --> 00:18:14,000
+in.
+
+211
+00:18:15,000 --> 00:18:18,000
+I left here on the maven dependency plug in.
+
+212
+00:18:19,000 --> 00:18:19,000
+That's it.
+
+213
+00:18:20,000 --> 00:18:24,000
+Nothing more, and the parents want maximum for this particular lesson.
+
+214
+00:18:24,000 --> 00:18:28,000
+You can remove the rest of this things from this file.
+
+215
+00:18:29,000 --> 00:18:32,000
+In general, we have to remove all the things that we don't use.
+
+216
+00:18:33,000 --> 00:18:37,000
+Now, let's check how core module looks like.
+
+217
+00:18:38,000 --> 00:18:40,000
+I navigate to the core ceremonial.
+
+218
+00:18:41,000 --> 00:18:49,000
+Sydney, Melbourne, multi-core and open from axonal notepad from amount.
+
+219
+00:18:50,000 --> 00:18:58,000
+Not so much new things, but you can see that file becomes shorter and removed, build elements and
+
+220
+00:18:58,000 --> 00:19:00,000
+a packaging jar here.
+
+221
+00:19:01,000 --> 00:19:06,000
+And as dependency, I specify it as a ceremonial how it will work.
+
+222
+00:19:07,000 --> 00:19:10,000
+Maybe will build persistence model first.
+
+223
+00:19:11,000 --> 00:19:13,000
+After that one, that jar will be built.
+
+224
+00:19:14,000 --> 00:19:15,000
+It will proceed.
+
+225
+00:19:15,000 --> 00:19:18,000
+Was building this jar core.
+
+226
+00:19:19,000 --> 00:19:26,000
+And the last, but not the least persistence module from Exmouth, I navigate the persistence module.
+
+227
+00:19:26,000 --> 00:19:32,000
+Sydney double dots smash mammoth multi persistence.
+
+228
+00:19:33,000 --> 00:19:41,000
+And open palm Exmoor notes platform X-amount, as you can see, this is a simplest.
+
+229
+00:19:42,000 --> 00:19:49,000
+And yeah, I edit packaging elements like, you know, as a former Excel files, I also adjusted version
+
+230
+00:19:49,000 --> 00:19:51,000
+name instead of the snapshot.
+
+231
+00:19:51,000 --> 00:19:54,000
+I just use major version number one.
+
+232
+00:19:54,000 --> 00:19:55,000
+And that's it.
+
+233
+00:19:56,000 --> 00:20:02,000
+I referred to the Russian was a variable declared in parents permits, allowed in properties.
+
+234
+00:20:04,000 --> 00:20:05,000
+Let's get our milk now.
+
+235
+00:20:06,000 --> 00:20:12,000
+But right now, instead of execution of the package face, I'm going to execute and face.
+
+236
+00:20:13,000 --> 00:20:22,000
+Why do remember what install face is this face installs the package into the local repository for use
+
+237
+00:20:22,000 --> 00:20:25,000
+as dependency in other products locally.
+
+238
+00:20:25,000 --> 00:20:33,000
+This is exactly what we need because our core module depends on the persistence module, but how this
+
+239
+00:20:33,000 --> 00:20:39,000
+actually looks like we need persistence module jar before we start build of core module.
+
+240
+00:20:40,000 --> 00:20:43,000
+That's why we need to use install command.
+
+241
+00:20:44,000 --> 00:20:47,000
+Let's navigate back to the parents project level.
+
+242
+00:20:47,000 --> 00:20:49,000
+See Sydney novel dots.
+
+243
+00:20:50,000 --> 00:20:56,000
+And now let's execute the following and come on empty and clean install.
+
+244
+00:20:58,000 --> 00:21:00,000
+The next thing that's worth few seconds.
+
+245
+00:21:01,000 --> 00:21:07,000
+You can see that all projects were successful and build amazing, congratulations.
+
+246
+00:21:08,000 --> 00:21:11,000
+We have successfully built our first multi module project.
+
+247
+00:21:12,000 --> 00:21:20,000
+And pay attention persistence module has been built before the core module or module was built after
+
+248
+00:21:20,000 --> 00:21:26,000
+persistence module taking into account core module needs Jar of Persistence module is next.
+
+249
+00:21:26,000 --> 00:21:31,000
+Seeing that I'm going to show you is how to impersonate a module project into eclipse.
+
+250
+00:21:32,000 --> 00:21:33,000
+Never seen this symbol here.
+
+251
+00:21:34,000 --> 00:21:39,000
+Just click on the file import and select existing maven projects.
+
+252
+00:21:40,000 --> 00:21:46,000
+Pay attention on this step, you need to select all in Maximo Files.
+
+253
+00:21:48,000 --> 00:21:56,000
+After that, you may want a few seconds to build the project, and after that you filled with the name
+
+254
+00:21:56,000 --> 00:21:57,000
+of the parents project.
+
+255
+00:21:58,000 --> 00:22:02,000
+You can expand it and hear our modules inside it.
+
+256
+00:22:03,000 --> 00:22:04,000
+Is great.
+
+257
+00:22:05,000 --> 00:22:11,000
+Now, I promised you that I will show you the dependencies that we declared in the parents column,
+
+258
+00:22:11,000 --> 00:22:19,000
+Xolo are also available in the sub modules, namely, let's open the main cork loss from the course
+
+259
+00:22:19,000 --> 00:22:26,000
+of module for the never purposes I made in the statement of object use glass from a bottle of Commons
+
+260
+00:22:26,000 --> 00:22:27,000
+Library.
+
+261
+00:22:27,000 --> 00:22:35,000
+And you can see that I used all now massive checks was objects post as massive arguments are now.
+
+262
+00:22:35,000 --> 00:22:42,000
+This is just random, massive allocation just to show you that the Cleves doesn't show you any computation
+
+263
+00:22:42,000 --> 00:22:44,000
+error I can run.
+
+264
+00:22:44,000 --> 00:22:48,000
+The application and code will be executed without any exception.
+
+265
+00:22:48,000 --> 00:22:52,000
+You can see in console output is there is no any exception.
+
+266
+00:22:53,000 --> 00:22:59,000
+And if I open pull maximal, you can see that there is no dependency declared for Apache comments.
+
+267
+00:23:00,000 --> 00:23:04,000
+I would just declare parents want X amount, and that's it.
+
+268
+00:23:05,000 --> 00:23:09,000
+And all external dependencies are managed on the parent project level.
+
+269
+00:23:10,000 --> 00:23:15,000
+In the parent pull maximum, we can find a Apache Karma's dependency declare.
+
+270
+00:23:16,000 --> 00:23:18,000
+That's how inheritance works.
+
+271
+00:23:19,000 --> 00:23:22,000
+And there are good internal dependencies.
+
+272
+00:23:22,000 --> 00:23:27,000
+You can see that core module declares dependency on the persistence module.
+
+273
+00:23:27,000 --> 00:23:34,000
+That means it's inside the core module and can use classes for the persistence of module for the sake
+
+274
+00:23:34,000 --> 00:23:35,000
+of the demo.
+
+275
+00:23:35,000 --> 00:23:43,000
+We have only one class in that some of the so-called main persistence is that class I declared static
+
+276
+00:23:43,000 --> 00:23:48,000
+mass is it is called Hello from persistence module in our main core module.
+
+277
+00:23:48,000 --> 00:23:56,000
+You can see that I can easily refer to the main persistence class and call its masses and then console.
+
+278
+00:23:56,000 --> 00:24:02,000
+We can see hello from persistence model and so output that proves that I can use code from one module
+
+279
+00:24:02,000 --> 00:24:06,000
+in another module is ever since Quiano.
+
+280
+00:24:06,000 --> 00:24:12,000
+In any case, you will be able to find these examples in attachments to the lesson and run it on your
+
+281
+00:24:12,000 --> 00:24:13,000
+computer.
+
+282
+00:24:14,000 --> 00:24:18,000
+Also, not hesitate to use examples provided by me as a template.
+
+283
+00:24:18,000 --> 00:24:25,000
+You can just change group artifact, i.e. when your own multimodal project is created.
+
+284
+00:24:25,000 --> 00:24:32,000
+Also, in case you still have any questions, please ask them below this video and I will be happy to
+
+285
+00:24:32,000 --> 00:24:33,000
+answer.
+
+286
+00:24:34,000 --> 00:24:36,000
+We discussed a lot of Syria today.
+
+287
+00:24:36,000 --> 00:24:38,000
+We did a lot of practical exercises.
+
+288
+00:24:39,000 --> 00:24:44,000
+Now it is time to set it up and understand what advantages and disadvantages of mainland multi-model
+
+289
+00:24:44,000 --> 00:24:45,000
+project are.
+
+290
+00:24:47,000 --> 00:24:52,000
+Let's start from Advantages first in the series, you can find a lot of advantages.
+
+291
+00:24:52,000 --> 00:24:59,000
+Some of them are one single command is required to build all projects, including the sub modules.
+
+292
+00:24:59,000 --> 00:25:06,000
+But in case you wouldn't use multi-model project, what you would have monoliths project, it would
+
+293
+00:25:06,000 --> 00:25:06,000
+be the same.
+
+294
+00:25:07,000 --> 00:25:11,000
+You would have just one single command to build the whole project.
+
+295
+00:25:11,000 --> 00:25:13,000
+It would be just bigger.
+
+296
+00:25:13,000 --> 00:25:14,000
+And that's it.
+
+297
+00:25:15,000 --> 00:25:22,000
+And now the advantage is it is mentioned in the literature is that MAVEN always cares about the new
+
+298
+00:25:22,000 --> 00:25:23,000
+order for you.
+
+299
+00:25:23,000 --> 00:25:25,000
+You don't need to worry about that.
+
+300
+00:25:26,000 --> 00:25:33,000
+In most cases, the ceremonials depends on other models, so xEMU new the matters while building the
+
+301
+00:25:33,000 --> 00:25:33,000
+project.
+
+302
+00:25:34,000 --> 00:25:39,000
+But again, in case you wouldn't have flown to Model Project, you wouldn't have issues.
+
+303
+00:25:40,000 --> 00:25:47,000
+Related was a built order because all so-called dependance modules actually located in one single project
+
+304
+00:25:48,000 --> 00:25:54,000
+and just distributed between different packages, managing huge amounts of configurations on the parents
+
+305
+00:25:54,000 --> 00:25:54,000
+level.
+
+306
+00:25:55,000 --> 00:26:00,000
+But again, in the case, we manage the biggest part of configuration since the parent level, and we
+
+307
+00:26:00,000 --> 00:26:06,000
+still have huge single maximum, then what is the benefits of having a multimodal project?
+
+308
+00:26:06,000 --> 00:26:14,000
+So as you can see, advantages also will depend on how we use technical capability of them and probably
+
+309
+00:26:14,000 --> 00:26:14,000
+zoning.
+
+310
+00:26:14,000 --> 00:26:20,000
+The one biggest advantage of the multimodal project is a truly deserves of attention, in my opinion,
+
+311
+00:26:21,000 --> 00:26:25,000
+is that we can work with single models separately and do that separately.
+
+312
+00:26:26,000 --> 00:26:29,000
+In case we have multiple teams working on this project.
+
+313
+00:26:30,000 --> 00:26:32,000
+It is easy to separate concerns.
+
+314
+00:26:32,000 --> 00:26:35,000
+We map which team in charge of each module.
+
+315
+00:26:36,000 --> 00:26:43,000
+Talking about disadvantages, I would like to mention, that's probably one notable disadvantage is
+
+316
+00:26:43,000 --> 00:26:51,000
+that much more naval project can become clumsy and confusing when the project gets really big and there
+
+317
+00:26:51,000 --> 00:26:53,000
+are many hands on at the same time.
+
+318
+00:26:54,000 --> 00:26:57,000
+This is for structure of the project.
+
+319
+00:26:58,000 --> 00:27:05,000
+In general, my model project doesn't seem to have any disadvantage in comparison with some of the architecture.
+
+320
+00:27:05,000 --> 00:27:08,000
+That's all what I wanted to share with you today in this lesson.
+
+321
+00:27:09,000 --> 00:27:11,000
+Let's recap what we have learned today.
+
+322
+00:27:12,000 --> 00:27:15,000
+We learned a lot of interesting things today.
+
+323
+00:27:15,000 --> 00:27:19,000
+Let's try to sum it up and highlight the most important ones.
+
+324
+00:27:20,000 --> 00:27:28,000
+Now you understand what minimal inheritance is, what project segregation is and what is the difference
+
+325
+00:27:28,000 --> 00:27:29,000
+between these two jobs.
+
+326
+00:27:30,000 --> 00:27:31,000
+We learn nature.
+
+327
+00:27:32,000 --> 00:27:35,000
+And after this lesson, you know what minimum reactor is?
+
+328
+00:27:36,000 --> 00:27:40,000
+Well, the real examples I showed you how to make dependency between sub modules.
+
+329
+00:27:41,000 --> 00:27:46,000
+I showed you how to increase loans in module project, an eclipse and how to work.
+
+330
+00:27:46,000 --> 00:27:53,000
+Was it from eclipse and then to the last used advantages and disadvantages of multi module projects?
+
+331
+00:27:54,000 --> 00:27:56,000
+Thanks a lot for your attention, team.
+
+332
+00:27:56,000 --> 00:27:59,000
+Have a great day and see you in the next lesson.
+
diff --git a/59 - Apache Maven/007 Source-code-of-multi-module-project-from-the-lesson.url b/59 - Apache Maven/007 Source-code-of-multi-module-project-from-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..ca4515ee3877e3b935fba53287a821905e6def8f
--- /dev/null
+++ b/59 - Apache Maven/007 Source-code-of-multi-module-project-from-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/maven-multi-module
\ No newline at end of file
diff --git a/59 - Apache Maven/external-links.txt b/59 - Apache Maven/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e930727c724c9d4c154c554540f61feb7bbfea94
--- /dev/null
+++ b/59 - Apache Maven/external-links.txt
@@ -0,0 +1,12 @@
+
+001 Maven-Lifecycles-reference
+https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
+
+001 MacOS-Maven-installation-guide
+https://docs.google.com/document/d/1YuZ5UZK9gkODD5dE5i_7kpXz_YEdyjJj_hbbtAKayjU/edit?usp=sharing
+
+007 Commands-executed-in-the-terminal-during-the-lesson
+https://docs.google.com/document/d/1bOUcswMjfHl0uhFwArs1orKSLWD-NU7RM9DqbZ4FX6w/edit?usp=sharing
+
+007 Source-code-of-multi-module-project-from-the-lesson
+https://github.com/AndriiPiatakha/maven-multi-module
diff --git a/60 - ===== EXAM Maven + Web Servers =====/001 Exam Task with Solution Maven + Web Services.html b/60 - ===== EXAM Maven + Web Servers =====/001 Exam Task with Solution Maven + Web Services.html
new file mode 100644
index 0000000000000000000000000000000000000000..1a940db201ce517cae0e3b8e5699dad0b0bf0544
--- /dev/null
+++ b/60 - ===== EXAM Maven + Web Servers =====/001 Exam Task with Solution Maven + Web Services.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Exam Task with Solution Maven + Web Services
+
+
+
+
+
+
+
Exam Task with Solution Maven + Web Services
+
During the course, we create with you Online Store. Now, when we’ve learned Maven we have to move all the code that was created to the Maven multiple module project.
Create parent Maven Project - online-store
Create child Maven Project - core (all business logic including registration, login, logout, product catalog, etc)
Create child Maven Project - persistence (only classes responsible for data persistence - all our DAO classes, DTOs, entities, Converters, etc.)
Create child Maven Web Project - web (only classes responsible for handling web requests, and web resources)
Migrate code:
persistence module -
https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/dao/hw/solution/dao
https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/dao/hw/solution/dto
https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/dao/hw/solution/enteties
https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/dao/hw/solution/utils/db
https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/exam/solution/utils/validation
https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/exam/solution/annotations/Validate.java
web module - default Maven Web project with auto-generated index.jsp with “Hello World” in it, like I described in the lesson “Maven Web Project”
core module - the rest of the application, besides everything that is mentioned above - https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/exam/solution
Move services from this homework - https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/dao/hw/solution/services
*pay attention to few things while you will move code around:
- help desk module should be split between the core and persistence modules https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/exam/solution/helpdesk , you can put entities and utils in persistence module, and facades can be moved to core module
- sometimes you have to think about mixing the results of the homework to make it work. For example, if you remember our lesson abour DAO - we changed Order entity and all related services, to Purchase entity.
- Also, in DAO homework we work with DB already, but in other homeworks we use hardcoded data. That’s why you also need to move MySQL services from here https://github.com/AndriiPiatakha/learnit_java_core/tree/master/src/com/itbulls/learnit/javacore/dao/hw/solution/services/impl , and you don’t need to move Default*Services
This task requires you to think about the application structure. You need to start seeing big picture, and learning how to create small structures from the code you already created.
Make sure that all dependencies are in pom.xml of the relevant module
Make sure that the application is built successfully from the parent project.
SOLUTION:
You can find solution in init commit here https://github.com/AndriiPiatakha/java-learnit-web-online-store/commit/95db3659128e3af5bd464edd8e26cf60baebfc5f - this is completely ready to use Eclipse project. I even didn’t delete Eclipse-specific files, just in case to help you with Eclipse configuration.
How to import Maven Multi-module project in Eclipse you can find in the lesson “Maven Multi-Module Project”
The repository with this project will be stored here https://github.com/AndriiPiatakha/java-learnit-web-online-store , and you can track how project evolves by new commits in history.
+
+
+
+
diff --git a/61 - Servlets/001 Intro to Servlets Hello World Servlet_en.srt b/61 - Servlets/001 Intro to Servlets Hello World Servlet_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..480bf78970875b6f5d7b50d4208c9e0bac9d1037
--- /dev/null
+++ b/61 - Servlets/001 Intro to Servlets Hello World Servlet_en.srt
@@ -0,0 +1,1228 @@
+1
+00:00:05,000 --> 00:00:08,000
+Hello, the students, we start your lesson.
+
+2
+00:00:08,000 --> 00:00:15,000
+This time we're going to learn, so that's in this lesson that I don't understand what's all that technology
+
+3
+00:00:15,000 --> 00:00:17,000
+is and why we need them on it.
+
+4
+00:00:18,000 --> 00:00:20,000
+I will explain to you what a threat this.
+
+5
+00:00:21,000 --> 00:00:24,000
+After that, we'll talk about Java Enterprise Edition.
+
+6
+00:00:24,000 --> 00:00:25,000
+The book Jakarta.
+
+7
+00:00:26,000 --> 00:00:31,000
+What is the difference between these two charms and which one we need?
+
+8
+00:00:31,000 --> 00:00:38,000
+This is so important to understand in order you both use proper input statements while working with
+
+9
+00:00:38,000 --> 00:00:42,000
+so let's and read correct documentation.
+
+10
+00:00:42,000 --> 00:00:48,000
+How would you explain this or read lifecycle after the lesson, you will understand the role of any
+
+11
+00:00:48,000 --> 00:00:52,000
+service and destroy masses in the that lifecycle.
+
+12
+00:00:53,000 --> 00:01:00,000
+Also, I'm going to show you official documentation of some API and make a high level overview of classes
+
+13
+00:01:00,000 --> 00:01:01,000
+and interfaces.
+
+14
+00:01:01,000 --> 00:01:08,000
+Also read API and after learning all this, you have enough information for all practical activity today,
+
+15
+00:01:08,000 --> 00:01:15,000
+June the lesson to gather that will create our first read and we will deploy it on the web server.
+
+16
+00:01:16,000 --> 00:01:18,000
+We have a lot of things to learn today.
+
+17
+00:01:18,000 --> 00:01:20,000
+Let's start our lesson.
+
+18
+00:01:21,000 --> 00:01:28,000
+And as usual, let's start from series to understand what server technologies before we jump to real
+
+19
+00:01:28,000 --> 00:01:36,000
+examples, why we need to let technology and the way we learn and we start to talk about solutions because
+
+20
+00:01:36,000 --> 00:01:41,000
+nowadays Java very often is used for web development on the backend.
+
+21
+00:01:42,000 --> 00:01:47,000
+It is also used for mobile development of native Android applications, as you know.
+
+22
+00:01:47,000 --> 00:01:55,000
+But definitely huge market seeks for Java back end web developers and on the small parts of this huge
+
+23
+00:01:55,000 --> 00:01:58,000
+guide is for Android development.
+
+24
+00:01:59,000 --> 00:02:03,000
+And yes, I know that was how we can develop desktop applications.
+
+25
+00:02:04,000 --> 00:02:11,000
+But the truth is that most likely, this few positions for Java desktop development with you can find
+
+26
+00:02:11,000 --> 00:02:18,000
+on the job portals is just as support of obsolete applications, resources and creation of new one from
+
+27
+00:02:18,000 --> 00:02:19,000
+scratch.
+
+28
+00:02:20,000 --> 00:02:28,000
+So if we talk about General Web development, then we can't just keeps that technology topic because
+
+29
+00:02:28,000 --> 00:02:32,000
+in general, we use that technology to create a web application.
+
+30
+00:02:32,000 --> 00:02:39,000
+And I know that probably you've already heard about different frameworks created for Java like Spring.
+
+31
+00:02:39,000 --> 00:02:44,000
+And we see, for example, is supposed to simplify creation of web applications.
+
+32
+00:02:44,000 --> 00:02:51,000
+And you might be wondering if we have something more powerful than what we need to know.
+
+33
+00:02:51,000 --> 00:02:52,000
+That's a tall.
+
+34
+00:02:53,000 --> 00:02:56,000
+First of all, sirat technology is an alphabet.
+
+35
+00:02:57,000 --> 00:03:05,000
+You need to know the alphabet to read this because you can see under the hood also use a similar technology
+
+36
+00:03:06,000 --> 00:03:10,000
+and to be able to troubleshoot issues and understand spring magic.
+
+37
+00:03:10,000 --> 00:03:13,000
+We need to understand sirat technology.
+
+38
+00:03:14,000 --> 00:03:22,000
+The second scene sometimes not always, but sometimes Open-Source frameworks are not used.
+
+39
+00:03:22,000 --> 00:03:23,000
+Zero The development.
+
+40
+00:03:24,000 --> 00:03:24,000
+It can happen.
+
+41
+00:03:25,000 --> 00:03:29,000
+It will be not allowed to use framework in your code.
+
+42
+00:03:29,000 --> 00:03:37,000
+Why, for example, in finance sector rather is extra attention to security requirements.
+
+43
+00:03:37,000 --> 00:03:45,000
+You are not always allowed to use open source frameworks using open source project, always put under
+
+44
+00:03:45,000 --> 00:03:48,000
+the security of application.
+
+45
+00:03:48,000 --> 00:03:53,000
+Imagine if literally everyone can contribute as an open source library.
+
+46
+00:03:53,000 --> 00:03:59,000
+And in case somebody would hide some malicious code in it, he or she can take advantage of it.
+
+47
+00:04:00,000 --> 00:04:03,000
+And you will use this new version of the libraries.
+
+48
+00:04:03,000 --> 00:04:11,000
+It contains malicious code or you will start to use library was malicious library stray that will cover
+
+49
+00:04:11,000 --> 00:04:11,000
+losses.
+
+50
+00:04:12,000 --> 00:04:19,000
+If you haven't heard before, huge security breach was discovered using open source library log for.
+
+51
+00:04:20,000 --> 00:04:27,000
+You can find loads of materials and the internet about this specific case, but it just proves that
+
+52
+00:04:27,000 --> 00:04:31,000
+the use of open source projects might be insecure.
+
+53
+00:04:31,000 --> 00:04:38,000
+That's why, in some projects with high security requirements, it might happen that you will use pure
+
+54
+00:04:38,000 --> 00:04:39,000
+silver technology.
+
+55
+00:04:40,000 --> 00:04:48,000
+There's a certain scene when you need to use that technology is about dealing with obsolete project,
+
+56
+00:04:48,000 --> 00:04:51,000
+is it somebody you just need to support?
+
+57
+00:04:51,000 --> 00:04:54,000
+And it can do even whisper so that's technology.
+
+58
+00:04:55,000 --> 00:05:02,000
+Because of all things mentioned above, I believe it is critically important to us to those so that
+
+59
+00:05:02,000 --> 00:05:07,000
+technology before moving further with more advanced concepts.
+
+60
+00:05:08,000 --> 00:05:15,000
+Now, let's focus on the definition of the cigarette when we use the word cigarette in different context.
+
+61
+00:05:15,000 --> 00:05:17,000
+It can mean different things.
+
+62
+00:05:17,000 --> 00:05:24,000
+Some of the meanings are some of that is an interface that must be implemented for creating and so.
+
+63
+00:05:26,000 --> 00:05:32,000
+So that is a technology which is used to create a application was Java Enterprise Edition.
+
+64
+00:05:32,000 --> 00:05:40,000
+Cigarette is an API that provides many interfaces and classes, including documentation, zero many
+
+65
+00:05:40,000 --> 00:05:48,000
+interfaces and classes in the Servlet API, such as select generics, so that each piece of that service
+
+66
+00:05:48,000 --> 00:05:51,000
+request submits response, et cetera.
+
+67
+00:05:52,000 --> 00:05:56,000
+And that's the definition of a that is the next one.
+
+68
+00:05:56,000 --> 00:06:04,000
+So that is a class that extends the capabilities of the service that handles incoming requests and sends
+
+69
+00:06:04,000 --> 00:06:12,000
+responses back to the client service is a web component that is the code on the server to create a dynamic
+
+70
+00:06:12,000 --> 00:06:13,000
+web page.
+
+71
+00:06:13,000 --> 00:06:20,000
+So as you can see, so that can be used in different meanings depending on the context.
+
+72
+00:06:21,000 --> 00:06:29,000
+As I promised you today's lesson, I'm going to explain what documentation you have to use to luncheonette
+
+73
+00:06:29,000 --> 00:06:36,000
+API better and to make sure that you will not be confused with the amount of documentation we have to
+
+74
+00:06:36,000 --> 00:06:39,000
+understand few aussi important terms.
+
+75
+00:06:40,000 --> 00:06:50,000
+Ziya Java Enterprise Edition, Java two Enterprise Edition Jakarta Enterprise Edition Action.
+
+76
+00:06:50,000 --> 00:06:58,000
+These are all different names for the same scene a set of enterprise specifications that extend Java
+
+77
+00:06:58,000 --> 00:06:59,000
+Standard Edition.
+
+78
+00:07:00,000 --> 00:07:09,000
+Once the enterprise platform was first introduced, it was called Java two platform Enterprise Edition
+
+79
+00:07:09,000 --> 00:07:13,000
+with the abbreviation J to E!
+
+80
+00:07:13,000 --> 00:07:17,000
+One Oracle revise the name of Java platform.
+
+81
+00:07:17,000 --> 00:07:20,000
+So it didn't just drop to.
+
+82
+00:07:20,000 --> 00:07:29,000
+One of the biggest reasons Oracle changed the names of the platforms is because they wanted to emphasize
+
+83
+00:07:29,000 --> 00:07:41,000
+that their old java, the old names of G e g two S E and G to M e don't do that.
+
+84
+00:07:41,000 --> 00:07:48,000
+Java is Waterson pause, and to all of us jour is why we are here.
+
+85
+00:07:48,000 --> 00:07:58,000
+Java is a value we share, and Oracle needed to make it clear to the world by talking about Java Eat.
+
+86
+00:07:59,000 --> 00:08:06,000
+Please use the correct name Java EE if that is too much to say a type.
+
+87
+00:08:06,000 --> 00:08:10,000
+Call it but not double e.
+
+88
+00:08:11,000 --> 00:08:19,000
+That's now what it is and why we need to use different name was Jakarta EE and use different packages.
+
+89
+00:08:20,000 --> 00:08:28,000
+Java EE is a collection of specifications for development and deployment enterprise applications in
+
+90
+00:08:28,000 --> 00:08:29,000
+general.
+
+91
+00:08:29,000 --> 00:08:36,000
+Enterprise applications are the software hosted on servers that provides applications that support the
+
+92
+00:08:36,000 --> 00:08:37,000
+enterprise.
+
+93
+00:08:38,000 --> 00:08:46,000
+The specifications defined by some describe services, application programming interfaces, so-called
+
+94
+00:08:46,000 --> 00:08:48,000
+APIs and protocols.
+
+95
+00:08:49,000 --> 00:09:02,000
+The 14 core technologies that make up Java E are GBC G and Di e.g. BS, RMI, GCP, Java Serverless,
+
+96
+00:09:02,000 --> 00:09:11,000
+Xolo, GMC, Java Idle, Gits Duty, Java Man Jeanna GPA.
+
+97
+00:09:12,000 --> 00:09:20,000
+The Javadi products provider is typically an application server, web server, database system vendor
+
+98
+00:09:20,000 --> 00:09:26,000
+who provides classes that implements the interfaces defined in the specifications.
+
+99
+00:09:27,000 --> 00:09:32,000
+These wonders compete on implementations of Java specifications.
+
+100
+00:09:34,000 --> 00:09:42,000
+When a company requires experience, what does a really asking for is experience using the technologies
+
+101
+00:09:43,000 --> 00:09:51,000
+that make up Java EE frequently, a company will only be using a subset of the Java EE technologies.
+
+102
+00:09:53,000 --> 00:09:55,000
+We have just learned what it is.
+
+103
+00:09:56,000 --> 00:10:03,000
+Let's deal now with Jakarta, because you are going to hear this term a lot during the development.
+
+104
+00:10:04,000 --> 00:10:09,000
+That's why you need to understand where this term is coming from.
+
+105
+00:10:09,000 --> 00:10:16,000
+In the first version of Java Germans, German surprise extensions versus sink that part of the core
+
+106
+00:10:16,000 --> 00:10:21,000
+key Zendesk worth of Java two in 1999.
+
+107
+00:10:22,000 --> 00:10:30,000
+These extensions were broken out of the standard binaries, and J2EE or Java two platform Enterprise
+
+108
+00:10:30,000 --> 00:10:31,000
+Edition was born.
+
+109
+00:10:32,000 --> 00:10:38,000
+It was keeps its name until 2006 for General five into seven safes.
+
+110
+00:10:39,000 --> 00:10:43,000
+J2EE was renamed to Java EE or Java.
+
+111
+00:10:43,000 --> 00:10:45,000
+That's from Enterprise Edition.
+
+112
+00:10:45,000 --> 00:10:54,000
+In order to put the stress on the Java instead of the shirts abbreviation, that name would seek all
+
+113
+00:10:54,000 --> 00:10:57,000
+the way to September 2017.
+
+114
+00:10:58,000 --> 00:11:06,000
+In September 2017, Oracle decided to give a reserve rights for Germany to the Eclipse Foundation because
+
+115
+00:11:06,000 --> 00:11:08,000
+of legal reasons it keeps on.
+
+116
+00:11:08,000 --> 00:11:16,000
+Nation doesn't have the right to use Java work because all the rights for Java reserved by Oracle Corporation
+
+117
+00:11:17,000 --> 00:11:18,000
+also.
+
+118
+00:11:18,000 --> 00:11:27,000
+Curiously, the Eclipse Foundation can't create any new Java packages using the Jambox namespace, but
+
+119
+00:11:27,000 --> 00:11:32,000
+it can create new classes and subclasses under the existing ones.
+
+120
+00:11:33,000 --> 00:11:40,000
+That's why there was a need to come up with awesome naming, and the decision was made to use Jakarta
+
+121
+00:11:40,000 --> 00:11:40,000
+verb.
+
+122
+00:11:41,000 --> 00:11:49,000
+That's why further involvement of Enterprise Edition is done under the name Jakarta Enterprise Edition.
+
+123
+00:11:49,000 --> 00:11:50,000
+So what is it?
+
+124
+00:11:51,000 --> 00:11:53,000
+Is it just an abstract specification?
+
+125
+00:11:54,000 --> 00:11:58,000
+Jakarta is indeed an abstract specification.
+
+126
+00:11:59,000 --> 00:12:04,000
+Anybody is open to develop and provides a broken implementation of this pacification.
+
+127
+00:12:05,000 --> 00:12:14,000
+The concrete implementations as the so called application service like World War II, Tommy Last Fish,
+
+128
+00:12:14,000 --> 00:12:22,000
+Liberty, WebLogic, etc. Zero also served containers which implement on a GCP select port of the huge
+
+129
+00:12:22,000 --> 00:12:28,000
+Jakarta API such as Tomcat, Jetty, etc..
+
+130
+00:12:28,000 --> 00:12:33,000
+So in this course, we are going to refer to the Chuck Grassley documentation.
+
+131
+00:12:34,000 --> 00:12:40,000
+Also will impose clauses not from Jambox package, but from Jakarta package.
+
+132
+00:12:41,000 --> 00:12:48,000
+Also, it is important to understand because in case you will use Tomcat version 10 and later, you
+
+133
+00:12:48,000 --> 00:12:53,000
+should use Colossus declared in Jakarta package instead of Java.
+
+134
+00:12:55,000 --> 00:12:58,000
+This is just an evolution of names that you should be aware about.
+
+135
+00:12:59,000 --> 00:13:07,000
+Now, you know the specifics of naming I'm in Java EE and Jakarta EE, and we can come back to the main
+
+136
+00:13:07,000 --> 00:13:08,000
+topic of this lesson.
+
+137
+00:13:09,000 --> 00:13:13,000
+Now it is time to talk about let life cycle insurance.
+
+138
+00:13:13,000 --> 00:13:16,000
+Cyrillic lifecycle consists of three steps.
+
+139
+00:13:16,000 --> 00:13:21,000
+Is it the captured in the main message of the server that they are in?
+
+140
+00:13:21,000 --> 00:13:22,000
+It's massive.
+
+141
+00:13:22,000 --> 00:13:25,000
+And the first step of the server lifecycle.
+
+142
+00:13:27,000 --> 00:13:36,000
+As it is called, only once it is called, only once that is created and not called for any user requests
+
+143
+00:13:36,000 --> 00:13:37,000
+afterwards.
+
+144
+00:13:37,000 --> 00:13:40,000
+So it is used for one time initialization.
+
+145
+00:13:41,000 --> 00:13:47,000
+We can also pass parameters of the ground to be used during the initialization of this so that this
+
+146
+00:13:47,000 --> 00:13:52,000
+event is normally created when a user first invokes a euro correspondent as this event.
+
+147
+00:13:53,000 --> 00:13:59,000
+But you can also specify as a server that will be loaded when the server is first started.
+
+148
+00:14:00,000 --> 00:14:06,000
+So, so this container loads the class of the cell that creates its instance.
+
+149
+00:14:06,000 --> 00:14:14,000
+And after that, so let's contain that course in the message this mass is always called before, so
+
+150
+00:14:14,000 --> 00:14:16,000
+let's start to handle incoming requests.
+
+151
+00:14:18,000 --> 00:14:19,000
+Service, massive.
+
+152
+00:14:19,000 --> 00:14:22,000
+This is the second step of the service lifecycle.
+
+153
+00:14:23,000 --> 00:14:25,000
+The service massive is the main mass.
+
+154
+00:14:25,000 --> 00:14:27,000
+It performs the actual task.
+
+155
+00:14:28,000 --> 00:14:36,000
+So let's CONTENANT calls the service mass to handle requests coming from the client and to prepare response
+
+156
+00:14:36,000 --> 00:14:36,000
+for the climb.
+
+157
+00:14:37,000 --> 00:14:44,000
+The Soviets contend that coal is a service massive to handle the requests coming from the client and
+
+158
+00:14:44,000 --> 00:14:46,000
+to prepare response for the climb.
+
+159
+00:14:47,000 --> 00:14:55,000
+Each time the server receives a request for a sign that the service pours and USERADD friends call service
+
+160
+00:14:55,000 --> 00:14:56,000
+massive.
+
+161
+00:14:57,000 --> 00:15:00,000
+That's where most striking feature of Java comes in handy.
+
+162
+00:15:01,000 --> 00:15:06,000
+Basically, each new request is a web server is handled in the new threat.
+
+163
+00:15:07,000 --> 00:15:16,000
+This service massive checks, the requests, I get forced food leave, et cetera, and calls do get
+
+164
+00:15:16,000 --> 00:15:22,000
+the post code the respectively masses as appropriate.
+
+165
+00:15:23,000 --> 00:15:28,000
+This is a default implementation of this service, massive issue, the piece of cloth.
+
+166
+00:15:29,000 --> 00:15:35,000
+This behavior can be overwritten, but it is not recommended to change this logic.
+
+167
+00:15:36,000 --> 00:15:42,000
+And as developers will implement, masses are supposed to handle requests.
+
+168
+00:15:42,000 --> 00:15:43,000
+We are different.
+
+169
+00:15:43,000 --> 00:15:50,000
+Masses will implement masses it will handle, gets recourse to the concrete resource force requests
+
+170
+00:15:50,000 --> 00:15:53,000
+and so on, and the loss becomes of these saplings.
+
+171
+00:15:54,000 --> 00:15:55,000
+So let's move circle.
+
+172
+00:15:55,000 --> 00:16:03,000
+You destroy mass, destroy mass that is called on the wants at the end of the lifecycle of a service.
+
+173
+00:16:03,000 --> 00:16:11,000
+That this method gives us a chance to close that the base connections hold that ground stress right
+
+174
+00:16:11,000 --> 00:16:12,000
+cookie.
+
+175
+00:16:12,000 --> 00:16:21,000
+These are sheep counts to these perform a such cleanup activities after destroying mass at the school.
+
+176
+00:16:21,000 --> 00:16:26,000
+Using that object is more full garbage collection, to be honest.
+
+177
+00:16:27,000 --> 00:16:34,000
+Relatively read the overrides is massive, but still, you have to know that you have points that allow
+
+178
+00:16:34,000 --> 00:16:41,000
+you to control the process of this object destruction and use this spawn, the by overriding the massive
+
+179
+00:16:41,000 --> 00:16:49,000
+one will be enabled by default in even the strong mass of empty, and you can override them when it
+
+180
+00:16:49,000 --> 00:16:49,000
+will be needed.
+
+181
+00:16:51,000 --> 00:16:58,000
+On the slide, you can see the diagrams, it describes the whole flow from the beginning, end at the
+
+182
+00:16:58,000 --> 00:16:58,000
+beginning.
+
+183
+00:16:58,000 --> 00:17:06,000
+So that contain, of course, in its massive and Coates instances is so that after that, so that is
+
+184
+00:17:06,000 --> 00:17:09,000
+instantiated and is ready to handle requests.
+
+185
+00:17:10,000 --> 00:17:16,000
+Service Massive is invoked by some that contain in order to handle all and common requests.
+
+186
+00:17:17,000 --> 00:17:20,000
+And at the end of the day, when so that isn't needed anymore.
+
+187
+00:17:20,000 --> 00:17:28,000
+Destroy mass that is involved in this house of red light cycle looks like in case you have any questions,
+
+188
+00:17:28,000 --> 00:17:34,000
+please ask them and comments do those as we do, and I will be happy to answer.
+
+189
+00:17:35,000 --> 00:17:37,000
+And the meantime, let's move on.
+
+190
+00:17:38,000 --> 00:17:43,000
+There are two main packages that contains that API interfaces and classes.
+
+191
+00:17:44,000 --> 00:17:46,000
+The Jakarta, Sirat and Jakarta.
+
+192
+00:17:46,000 --> 00:17:52,000
+So HTP packages represent interfaces and classes facilitate got.
+
+193
+00:17:53,000 --> 00:18:00,000
+The Jakarta cigarette package contains many interfaces and classes that they use as a service of containment.
+
+194
+00:18:01,000 --> 00:18:04,000
+These are not specific to any protocol.
+
+195
+00:18:04,000 --> 00:18:11,000
+The Jakarta server that zip package contains interfaces and classes that they're responsible for.
+
+196
+00:18:11,000 --> 00:18:15,000
+It should be a request only on the screen.
+
+197
+00:18:15,000 --> 00:18:20,000
+You can see an overview of the main interfaces and classes of the cigarette API.
+
+198
+00:18:21,000 --> 00:18:28,000
+We are going to go over all of them during the course and see examples who see Stipe's in attachments
+
+199
+00:18:28,000 --> 00:18:29,000
+to the lesson.
+
+200
+00:18:29,000 --> 00:18:33,000
+You will be able to find the Jakarta documentation.
+
+201
+00:18:34,000 --> 00:18:36,000
+We learned enough Syria for the beginning.
+
+202
+00:18:37,000 --> 00:18:37,000
+Let's go.
+
+203
+00:18:38,000 --> 00:18:42,000
+Hello, world, Celeste, and then other classes of satellite API.
+
+204
+00:18:43,000 --> 00:18:49,000
+In Prince Holbrook, Gregory, the Great American Multimodal Project was one of that module starting
+
+205
+00:18:49,000 --> 00:18:55,000
+from today, we're going to use this project as the main project for all our examples.
+
+206
+00:18:56,000 --> 00:19:03,000
+This one, in case you didn't complete cruise homework, it is important, is a completed work is done
+
+207
+00:19:03,000 --> 00:19:03,000
+now.
+
+208
+00:19:03,000 --> 00:19:11,000
+This notion of it because we need some configurations that I'm going to show you how to create our first
+
+209
+00:19:11,000 --> 00:19:14,000
+lab and our web module.
+
+210
+00:19:14,000 --> 00:19:16,000
+I do not believe you.
+
+211
+00:19:17,000 --> 00:19:18,000
+So let.
+
+212
+00:19:19,000 --> 00:19:23,000
+You can declare and package your wish and declare this package.
+
+213
+00:19:23,000 --> 00:19:27,000
+Call my T-Boz and last or there.
+
+214
+00:19:28,000 --> 00:19:38,000
+So let's let's go to that world so that that tension that's lost is Jakarta so that it should be actually
+
+215
+00:19:38,000 --> 00:19:39,000
+so that.
+
+216
+00:19:40,000 --> 00:19:45,000
+In the next lessons, he will learn the source course of this class in more details.
+
+217
+00:19:46,000 --> 00:19:49,000
+Click Next button on this page.
+
+218
+00:19:49,000 --> 00:19:53,000
+We need to configure your roadmap was our server.
+
+219
+00:19:54,000 --> 00:19:55,000
+What is it?
+
+220
+00:19:55,000 --> 00:19:57,000
+We'll need to set configuration.
+
+221
+00:19:57,000 --> 00:20:06,000
+You will that can be used to access this so that our source, in simpler words, what you should write
+
+222
+00:20:06,000 --> 00:20:09,000
+in your browser in order to send request as this.
+
+223
+00:20:09,000 --> 00:20:16,000
+So that lets any default, you will map and change it to just below.
+
+224
+00:20:17,000 --> 00:20:25,000
+The specific rules for you name and you should follow the portal specifications, sounds like this string
+
+225
+00:20:25,000 --> 00:20:33,000
+beginning was a smash character and it was a character to the suffix is used for a POS model.
+
+226
+00:20:34,000 --> 00:20:40,000
+For example, one will work with filters, probably will filters a group of resources.
+
+227
+00:20:41,000 --> 00:20:47,000
+A string containing woman is a smash character in decades of default, so that of the application,
+
+228
+00:20:48,000 --> 00:20:55,000
+so-called the rules of your application, all of the streams are used for exact matches on.
+
+229
+00:20:56,000 --> 00:21:03,000
+Click Next button on this page, we can select checkbox in order to generate some massive stops for
+
+230
+00:21:03,000 --> 00:21:04,000
+us.
+
+231
+00:21:04,000 --> 00:21:11,000
+In most cases, it is better to create masses by itself in order to avoid a lot of comments and unnecessary
+
+232
+00:21:11,000 --> 00:21:12,000
+lines of code.
+
+233
+00:21:13,000 --> 00:21:15,000
+So it is only up to you.
+
+234
+00:21:16,000 --> 00:21:19,000
+For example, we don't need constructor's from superclass.
+
+235
+00:21:20,000 --> 00:21:23,000
+We don't need the postmaster at this moment of time.
+
+236
+00:21:24,000 --> 00:21:28,000
+Will keep selected on the check box that is next to new gas mask.
+
+237
+00:21:29,000 --> 00:21:30,000
+Let's finish.
+
+238
+00:21:32,000 --> 00:21:39,000
+Because of the faulty grebes configuration mistake colossus from Jambox package in Perth, it already
+
+239
+00:21:39,000 --> 00:21:42,000
+knows the difference between Jambox and Jakarta.
+
+240
+00:21:43,000 --> 00:21:49,000
+That's why we need to make proper statements and change our box to Jakarta.
+
+241
+00:21:50,000 --> 00:21:51,000
+Let's do it quickly.
+
+242
+00:21:52,000 --> 00:21:53,000
+Amazing.
+
+243
+00:21:54,000 --> 00:22:00,000
+And in case you still have some translation error, that's open palm xolo of our map module.
+
+244
+00:22:01,000 --> 00:22:06,000
+Make sure that in comments tomorrow you added as DEP. Jakarta Select.
+
+245
+00:22:07,000 --> 00:22:15,000
+Pay attention that they also specify provided scope because this dependency will be provided by our
+
+246
+00:22:15,000 --> 00:22:20,000
+runtime environment, in our case, by our Tomcat VAP server.
+
+247
+00:22:21,000 --> 00:22:27,000
+In case you want to learn more about the penalty scoops and maven, please check lessons from MAVEN
+
+248
+00:22:27,000 --> 00:22:28,000
+section.
+
+249
+00:22:29,000 --> 00:22:35,000
+Right now, we're comfortable with everything we need, and that's getting back to our summer and even
+
+250
+00:22:35,000 --> 00:22:40,000
+what we have the Clarets inside that we have perhaps some of that on a patient.
+
+251
+00:22:41,000 --> 00:22:43,000
+It may have different attributes.
+
+252
+00:22:43,000 --> 00:22:46,000
+That's probably one of the main ones.
+
+253
+00:22:46,000 --> 00:22:47,000
+Is your pardon?
+
+254
+00:22:48,000 --> 00:22:53,000
+We can secret in our interactive menu when we created silhouette.
+
+255
+00:22:53,000 --> 00:23:01,000
+Now we can use this euro portal in order to its request to this so that in the following, and we'll
+
+256
+00:23:01,000 --> 00:23:08,000
+come in details what other attributes can be used in the absence of a patient, because it's a little
+
+257
+00:23:08,000 --> 00:23:15,000
+bit better to show your Amazon with examples but not make our personnel that way too much complicated
+
+258
+00:23:16,000 --> 00:23:25,000
+will make other details for this lesson and then sizes so low overrides masses was name of age to be
+
+259
+00:23:25,000 --> 00:23:34,000
+masses and do graphics, for example, the gas masks that will handle gets requests to this or that.
+
+260
+00:23:35,000 --> 00:23:42,000
+As you can see, this massive space to the piece, so let's request Foundation to be so responses,
+
+261
+00:23:42,000 --> 00:23:44,000
+massive arguments.
+
+262
+00:23:44,000 --> 00:23:52,000
+These objects aren't as representations of the request response that we can work with inside.
+
+263
+00:23:52,000 --> 00:23:54,000
+I assume that's class.
+
+264
+00:23:54,000 --> 00:23:56,000
+And again, thanks a lot.
+
+265
+00:23:56,000 --> 00:24:01,000
+So let's contain who is in charge of creating unnecessary objects for us.
+
+266
+00:24:02,000 --> 00:24:06,000
+The massive maestro's that exception and the out exception.
+
+267
+00:24:07,000 --> 00:24:14,000
+So that exception is the general exceptions that's made the strong by so that in case I was removed
+
+268
+00:24:14,000 --> 00:24:16,000
+from you, there will not be any harm.
+
+269
+00:24:17,000 --> 00:24:21,000
+And I own exception may be thrown by gets right to massive.
+
+270
+00:24:22,000 --> 00:24:29,000
+This is according to massive declaration, and I can would declare the current mass.
+
+271
+00:24:30,000 --> 00:24:37,000
+Insides and mass that will take references a responsibility in order to write as a response, but it's
+
+272
+00:24:37,000 --> 00:24:43,000
+some content we call had quite a massive and cold print land mass.
+
+273
+00:24:44,000 --> 00:24:46,000
+So right now the world's mass, the response.
+
+274
+00:24:46,000 --> 00:24:54,000
+But after these lines of code will be executed, our selection panel will make sure its response is
+
+275
+00:24:54,000 --> 00:24:56,000
+sent back to the client.
+
+276
+00:24:57,000 --> 00:25:02,000
+And on the plus side, our responsibility will be passed and presented to the court.
+
+277
+00:25:03,000 --> 00:25:05,000
+Let's see how it works.
+
+278
+00:25:06,000 --> 00:25:14,000
+I run the application and server how I do this slightly around this random server.
+
+279
+00:25:17,000 --> 00:25:20,000
+And one built in browser is open.
+
+280
+00:25:21,000 --> 00:25:23,000
+I want to change your e-mail address.
+
+281
+00:25:24,000 --> 00:25:26,000
+I typed zero of my resources.
+
+282
+00:25:27,000 --> 00:25:28,000
+And no.
+
+283
+00:25:29,000 --> 00:25:32,000
+Constituencies and browser sense gets requests.
+
+284
+00:25:33,000 --> 00:25:40,000
+I navigate it to my fellow world that and if you do get massive, I right.
+
+285
+00:25:40,000 --> 00:25:41,000
+Hello, world.
+
+286
+00:25:41,000 --> 00:25:46,000
+In response, body and spirit sends me Bank's response.
+
+287
+00:25:46,000 --> 00:25:53,000
+That is, despite zip browsing all source codes that we need to get you in the last and you will be
+
+288
+00:25:53,000 --> 00:25:55,000
+able to find any attachments to the lesson.
+
+289
+00:25:56,000 --> 00:26:03,000
+And even in case you still have any questions, please do not hesitate to ask them in those video and
+
+290
+00:26:03,000 --> 00:26:05,000
+I will be happy to answer them.
+
+291
+00:26:06,000 --> 00:26:13,000
+Just in case you have Page opened in the Chrome browser, but you want it to be open in the browser
+
+292
+00:26:13,000 --> 00:26:14,000
+or vice versa.
+
+293
+00:26:15,000 --> 00:26:16,000
+This can be configured easily.
+
+294
+00:26:17,000 --> 00:26:23,000
+Just click on Windows Preferences and after Z select the browser menu.
+
+295
+00:26:23,000 --> 00:26:30,000
+In general, Section C you can select was one to use and channel or default external browser.
+
+296
+00:26:31,000 --> 00:26:34,000
+After selection, just click Apply and close.
+
+297
+00:26:35,000 --> 00:26:37,000
+Congratulations.
+
+298
+00:26:37,000 --> 00:26:42,000
+We still have a lot of things there, but we'll proceed in the following lessons.
+
+299
+00:26:43,000 --> 00:26:48,000
+We managed to create our first LED successfully and deploy tens of observer.
+
+300
+00:26:48,000 --> 00:26:53,000
+And we'll proceed with none of other configurations in the following lessons.
+
+301
+00:26:54,000 --> 00:27:02,000
+And now let's recap what we have learned in this lesson in this last round was that technology is and
+
+302
+00:27:02,000 --> 00:27:04,000
+what so that is.
+
+303
+00:27:04,000 --> 00:27:14,000
+I explained this difference between Java V and Jakarta that we learn so that life cycle also holds high
+
+304
+00:27:14,000 --> 00:27:20,000
+level overview of that API, and we created and deployed our first Serrat.
+
+305
+00:27:21,000 --> 00:27:23,000
+That's all for this lesson.
+
+306
+00:27:23,000 --> 00:27:25,000
+Thanks a lot for your attention.
+
+307
+00:27:25,000 --> 00:27:28,000
+Have a great day and see you in the next lesson.
+
diff --git a/61 - Servlets/001 Link-to-Jakarta-documentation.url b/61 - Servlets/001 Link-to-Jakarta-documentation.url
new file mode 100644
index 0000000000000000000000000000000000000000..b2b24619e38b9f15690fe90f7eed6088b73a588a
--- /dev/null
+++ b/61 - Servlets/001 Link-to-Jakarta-documentation.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://jakarta.ee/specifications/platform/9/apidocs/jakarta/servlet/http/package-summary.html
\ No newline at end of file
diff --git a/61 - Servlets/001 Link-to-the-HelloWorldServlet.url b/61 - Servlets/001 Link-to-the-HelloWorldServlet.url
new file mode 100644
index 0000000000000000000000000000000000000000..5de777596541335b143bae8ec9ae3b48a9ead789
--- /dev/null
+++ b/61 - Servlets/001 Link-to-the-HelloWorldServlet.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/java-learnit-web-online-store/blob/master/online-store.web/src/main/java/com/itbulls/learnit/onlinestore/web/servlets/HelloWorldServlet.java
\ No newline at end of file
diff --git a/61 - Servlets/002 Servlet API_en.srt b/61 - Servlets/002 Servlet API_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..b6bc0345539a4029dfb5322ef9692d41ba2dec4e
--- /dev/null
+++ b/61 - Servlets/002 Servlet API_en.srt
@@ -0,0 +1,1436 @@
+1
+00:00:06,000 --> 00:00:12,000
+Hello, dear students in this lesson we appreciate that in server that technology is a process that
+
+2
+00:00:12,000 --> 00:00:16,000
+we add introduction to stress and create a simple hello world syrup.
+
+3
+00:00:17,000 --> 00:00:24,000
+And now it is time to answer that's on advanced level will proceed to London Syrup API.
+
+4
+00:00:25,000 --> 00:00:31,000
+We're going to start our lesson from learned web server, that annotation and what are the attributes
+
+5
+00:00:31,000 --> 00:00:32,000
+it has.
+
+6
+00:00:32,000 --> 00:00:38,000
+I will explain such important attributes as euro parts lot and start top.
+
+7
+00:00:38,000 --> 00:00:46,000
+So what you need parameters and all the attributes of FIPS or that annotation will review source code
+
+8
+00:00:46,000 --> 00:00:54,000
+and API of such classes s a so that generic so that it should be of that request.
+
+9
+00:00:54,000 --> 00:01:00,000
+They should be service response so that config and so that context on the real example.
+
+10
+00:01:00,000 --> 00:01:03,000
+So I'll show you how to work with request dispatcher.
+
+11
+00:01:04,000 --> 00:01:12,000
+I will show you what is the difference between forwarding request and and as a response and advance
+
+12
+00:01:12,000 --> 00:01:12,000
+as a lesson.
+
+13
+00:01:12,000 --> 00:01:19,000
+And we're going to show you real examples how to read headers from request and how to set new headers
+
+14
+00:01:19,000 --> 00:01:20,000
+in response.
+
+15
+00:01:21,000 --> 00:01:22,000
+Let's start our lesson.
+
+16
+00:01:23,000 --> 00:01:27,000
+You were going to have a lot of practical information.
+
+17
+00:01:27,000 --> 00:01:35,000
+That's why I suggest the jump to the screen shares radar hat and proceed with live demo and live examples.
+
+18
+00:01:36,000 --> 00:01:41,000
+The first thing that I'm going to share today is different attributes of web server.
+
+19
+00:01:41,000 --> 00:01:42,000
+That annotation.
+
+20
+00:01:42,000 --> 00:01:49,000
+Let opens the source code of this annotation and walk you through all its attributes.
+
+21
+00:01:49,000 --> 00:01:51,000
+String Name.
+
+22
+00:01:51,000 --> 00:01:53,000
+This is the name of the server.
+
+23
+00:01:53,000 --> 00:01:55,000
+That message special.
+
+24
+00:01:55,000 --> 00:01:58,000
+This is just a meta information about server that.
+
+25
+00:01:59,000 --> 00:02:01,000
+String array value.
+
+26
+00:02:02,000 --> 00:02:06,000
+Value attribute is used to declare array of zero cards.
+
+27
+00:02:07,000 --> 00:02:15,000
+To be honest, this very bravely when you need to map single threat against different euro partners.
+
+28
+00:02:15,000 --> 00:02:17,000
+But you can do so if you need.
+
+29
+00:02:19,000 --> 00:02:21,000
+String array of euro coins.
+
+30
+00:02:22,000 --> 00:02:28,000
+The difference between value achieved and euro points is that value attribute.
+
+31
+00:02:28,000 --> 00:02:36,000
+The assumption was you can use by default without specification of the attribute name like we did in
+
+32
+00:02:36,000 --> 00:02:42,000
+our hello world, so that we just specify the euro bottom and that's it.
+
+33
+00:02:42,000 --> 00:02:46,000
+We didn't specify the name of the attribute itself.
+
+34
+00:02:47,000 --> 00:02:55,000
+That was a data associated with value attribute, but as you can see, these two attributes as the same.
+
+35
+00:02:56,000 --> 00:03:01,000
+The difference is a technical and syntax possibility to posit value to the attribute.
+
+36
+00:03:02,000 --> 00:03:10,000
+Lot on top of the value, the integer value gives you the startup order hint.
+
+37
+00:03:11,000 --> 00:03:18,000
+In case you have multiple struts, you can specify an order in which they will be instantiated, as
+
+38
+00:03:18,000 --> 00:03:22,000
+you know, will serve that as Lord at first requests.
+
+39
+00:03:22,000 --> 00:03:27,000
+That means it consumes more charm at first request.
+
+40
+00:03:27,000 --> 00:03:35,000
+If you specifies a on startup in WebEx email configuration files, we are going to run to or encryption
+
+41
+00:03:35,000 --> 00:03:36,000
+annotation.
+
+42
+00:03:36,000 --> 00:03:44,000
+Some words will be loaded at project deployment time or service star, so it will take less time for
+
+43
+00:03:44,000 --> 00:03:46,000
+responding to first request.
+
+44
+00:03:47,000 --> 00:03:55,000
+If you pass a positive value is a lower integer value, so that will audit for the higher integer value.
+
+45
+00:03:55,000 --> 00:04:04,000
+Select in other words contain now load the server that's in ascending integer value zero variable first
+
+46
+00:04:05,000 --> 00:04:08,000
+zero, one, two, three and so on.
+
+47
+00:04:08,000 --> 00:04:18,000
+If you pass negative value to add loaded at the request time, that's the first request you need params
+
+48
+00:04:18,000 --> 00:04:26,000
+array of the association parameters for this so that we can pass some utilization parameters to our
+
+49
+00:04:26,000 --> 00:04:30,000
+threat whatever they would be on practice.
+
+50
+00:04:30,000 --> 00:04:33,000
+This is not used very often and in each.
+
+51
+00:04:34,000 --> 00:04:42,000
+So that today I'm going to show you an example was in these parameters assume the supported by sequence
+
+52
+00:04:42,000 --> 00:04:44,000
+operations supported by this threat.
+
+53
+00:04:45,000 --> 00:04:50,000
+Java E provides a sequence processing supports for silhouettes and filters.
+
+54
+00:04:51,000 --> 00:04:57,000
+If a silhouette or filter reaches a potentially good operation when processing the request, you can
+
+55
+00:04:57,000 --> 00:05:06,000
+assign separation asset class execution context and returns a threat associated with the request immediately
+
+56
+00:05:06,000 --> 00:05:08,000
+to the container without generating a response.
+
+57
+00:05:09,000 --> 00:05:16,000
+The book An Operation Completes is a asynchronous execution context in a different threat which can
+
+58
+00:05:16,000 --> 00:05:20,000
+generate a response or dispatch request to NAS is suppressed.
+
+59
+00:05:21,000 --> 00:05:29,000
+And there are also other attributes like small icon that is small like this, so that if present large
+
+60
+00:05:29,000 --> 00:05:37,000
+icons pose a threat, if present description is present and display name, that's all attributes that
+
+61
+00:05:37,000 --> 00:05:40,000
+we can interact with in our web.
+
+62
+00:05:40,000 --> 00:05:41,000
+So that annotation.
+
+63
+00:05:42,000 --> 00:05:47,000
+Let's open new files that I created before this lesson and the review examples.
+
+64
+00:05:48,000 --> 00:05:54,000
+As usual, you can find the source code of the examples that I'm going to show you today in our documents
+
+65
+00:05:54,000 --> 00:05:54,000
+as a lesson.
+
+66
+00:05:55,000 --> 00:05:57,000
+Wow name is of that demo.
+
+67
+00:05:58,000 --> 00:06:07,000
+First of all, you can see that I declared a rate of zero points associated with this so that this means
+
+68
+00:06:07,000 --> 00:06:16,000
+that I can access this or that using any of these URL parlance in its params value is also all right.
+
+69
+00:06:16,000 --> 00:06:18,000
+According to the declared interface.
+
+70
+00:06:18,000 --> 00:06:23,000
+We need to use another annotation here to declare you need params.
+
+71
+00:06:24,000 --> 00:06:27,000
+I use annotation that you need around.
+
+72
+00:06:27,000 --> 00:06:30,000
+Does it have the name of the parameter and value?
+
+73
+00:06:30,000 --> 00:06:34,000
+In this case, I will just pass my first and last name.
+
+74
+00:06:35,000 --> 00:06:42,000
+It's a good message I will use getting people to message, to extract the value of the parameter by
+
+75
+00:06:42,000 --> 00:06:43,000
+its name.
+
+76
+00:06:44,000 --> 00:06:51,000
+As you may already understand, the needs parameter message is imperative, for it is implemented in
+
+77
+00:06:51,000 --> 00:06:56,000
+generics through that class, which in turn is extended by HTP.
+
+78
+00:06:56,000 --> 00:06:58,000
+So let's close this lesson.
+
+79
+00:06:58,000 --> 00:07:01,000
+I am going to research code of these classes.
+
+80
+00:07:02,000 --> 00:07:05,000
+And the meantime, let's get back to our demo.
+
+81
+00:07:06,000 --> 00:07:12,000
+Similar to the example from previous lesson, I guess the reference to the right to object of my response
+
+82
+00:07:13,000 --> 00:07:17,000
+and ride's value of my needs parameters.
+
+83
+00:07:17,000 --> 00:07:23,000
+One We might need this and parameters then needed for configuration purposes.
+
+84
+00:07:24,000 --> 00:07:29,000
+In order, you could have opportunity to pass parameters inside the server less from configurations
+
+85
+00:07:30,000 --> 00:07:38,000
+and in the actual code we can build a logic that would work in different ways depending on the actual
+
+86
+00:07:38,000 --> 00:07:39,000
+values.
+
+87
+00:07:39,000 --> 00:07:40,000
+Passed this message.
+
+88
+00:07:40,000 --> 00:07:41,000
+Arguments.
+
+89
+00:07:42,000 --> 00:07:48,000
+Let's run our web app on server and test this so that running server.
+
+90
+00:07:53,000 --> 00:08:02,000
+If you remember, we can figure out multiple different URLs and I can use any of them to access a map.
+
+91
+00:08:02,000 --> 00:08:05,000
+For example, let me use them or euro.
+
+92
+00:08:06,000 --> 00:08:10,000
+And even one case I will use them a one in euro.
+
+93
+00:08:10,000 --> 00:08:14,000
+The results would be the same because I heads the same.
+
+94
+00:08:14,000 --> 00:08:16,000
+So that is it's clear.
+
+95
+00:08:17,000 --> 00:08:24,000
+And as you can see, I printed in eight parameters the broken cigarette that proves and shows you how
+
+96
+00:08:24,000 --> 00:08:27,000
+in these parameters that's come to you.
+
+97
+00:08:28,000 --> 00:08:33,000
+The next things I'd like to discuss is classes from Server Lab API.
+
+98
+00:08:34,000 --> 00:08:37,000
+Let's review such class as a piece of that.
+
+99
+00:08:38,000 --> 00:08:46,000
+The age to be servant class extends the genius of that class and implements resizable interface.
+
+100
+00:08:47,000 --> 00:08:53,000
+It provides HTP specific masses to handle requests sent with different HP masses.
+
+101
+00:08:54,000 --> 00:09:05,000
+Each message has the graphics do gap loop pos, decode to the z, etc. by default implementation.
+
+102
+00:09:06,000 --> 00:09:11,000
+Each message returns error that current message is not supported.
+
+103
+00:09:11,000 --> 00:09:19,000
+Service message in chat redirects requests in response to the proper mass in the source code.
+
+104
+00:09:20,000 --> 00:09:28,000
+You can see that we use a request object to call massive gap massive to understand each patient in mass
+
+105
+00:09:28,000 --> 00:09:34,000
+that was used to send the request and depend on the HP message to use.
+
+106
+00:09:35,000 --> 00:09:39,000
+We redirect request in response to the relevant message.
+
+107
+00:09:39,000 --> 00:09:48,000
+That's why in case we would override service message in our SU that it will handle all requests by default
+
+108
+00:09:49,000 --> 00:09:55,000
+and relevant masses like do get lost and others won't be invoked by default.
+
+109
+00:09:56,000 --> 00:10:04,000
+It should be so that class extends generic so that generics or that class implements server that select
+
+110
+00:10:04,000 --> 00:10:07,000
+config answer Elizabeth interfaces.
+
+111
+00:10:08,000 --> 00:10:10,000
+It is an absent class.
+
+112
+00:10:10,000 --> 00:10:17,000
+It provides the implementation of all masses of these interfaces except the service message.
+
+113
+00:10:18,000 --> 00:10:21,000
+Generics of that class can handle any type of request.
+
+114
+00:10:22,000 --> 00:10:24,000
+So it is protocol independent.
+
+115
+00:10:25,000 --> 00:10:32,000
+You may create a generic led by inheritance, the generic so that class and providing the same segmentation
+
+116
+00:10:32,000 --> 00:10:33,000
+of the service message.
+
+117
+00:10:34,000 --> 00:10:41,000
+It has the following main masses get a need parameter will be sorted in practice how it works.
+
+118
+00:10:42,000 --> 00:10:46,000
+This method helps us to get the value of a needs parameter.
+
+119
+00:10:47,000 --> 00:10:50,000
+We can get the enumeration of all a needs parameter.
+
+120
+00:10:50,000 --> 00:10:54,000
+Sneeze by colon getting these parameters names.
+
+121
+00:10:54,000 --> 00:10:59,000
+If you have never worked with the enumeration, you can treat it like iterate.
+
+122
+00:11:00,000 --> 00:11:05,000
+So it is just another type to go over the collection of elements one by one.
+
+123
+00:11:06,000 --> 00:11:10,000
+Also, this class provides us with in nausea and form acid.
+
+124
+00:11:11,000 --> 00:11:15,000
+The school gets a class config server.
+
+125
+00:11:15,000 --> 00:11:21,000
+Several configuration objects used by servers contain containment to pass information to a server that
+
+126
+00:11:21,000 --> 00:11:29,000
+you use the zation the servers contain that creates so that config object for each server that you use
+
+127
+00:11:29,000 --> 00:11:30,000
+stylization.
+
+128
+00:11:31,000 --> 00:11:39,000
+The main difference between service config and some context is that unlike so that can see this context
+
+129
+00:11:39,000 --> 00:11:47,000
+is being created once per map application that is so that context object is common to all this.
+
+130
+00:11:47,000 --> 00:11:49,000
+So that's invalid allocation.
+
+131
+00:11:50,000 --> 00:11:57,000
+And those are massive forms of genetics that allows us to get access to the right context object that
+
+132
+00:11:57,000 --> 00:11:58,000
+we've just mentioned.
+
+133
+00:11:59,000 --> 00:12:05,000
+We can get the reference to the right context object, use the development sooner or later.
+
+134
+00:12:05,000 --> 00:12:12,000
+Will face was the case when we would need to get access to this or that context object.
+
+135
+00:12:12,000 --> 00:12:21,000
+There is one context per web application, per Java virtual machine, and we can use that context object
+
+136
+00:12:21,000 --> 00:12:27,000
+as a container for different activities in case we want to share them between different silhouettes.
+
+137
+00:12:28,000 --> 00:12:33,000
+Because from defensiveness we can get access to some of that context to interact with it.
+
+138
+00:12:34,000 --> 00:12:35,000
+And that's one thing.
+
+139
+00:12:35,000 --> 00:12:44,000
+There are masses of that life cycle declared here including indeed and destroy then not absolute that
+
+140
+00:12:44,000 --> 00:12:46,000
+implement in this class.
+
+141
+00:12:46,000 --> 00:12:48,000
+They're just empty.
+
+142
+00:12:49,000 --> 00:12:55,000
+And in my opinion Z cells main masses of genetics that you should be aware of.
+
+143
+00:12:56,000 --> 00:13:00,000
+Let me show you a quick demo now in our salad demo class.
+
+144
+00:13:01,000 --> 00:13:09,000
+You can see that I call get so that config and after that gets a red name in order to get the name of
+
+145
+00:13:09,000 --> 00:13:14,000
+this of that as you saw from the interface, these are some duplicate masses.
+
+146
+00:13:15,000 --> 00:13:22,000
+For example, I can call get so that name straight away because such massive is declared in generic
+
+147
+00:13:22,000 --> 00:13:25,000
+syrup inside that mass.
+
+148
+00:13:25,000 --> 00:13:34,000
+We also use servlet config to get some of that name, but this API exposed to us with this single mess
+
+149
+00:13:35,000 --> 00:13:41,000
+and also we can get the context of our application from the select context object.
+
+150
+00:13:41,000 --> 00:13:46,000
+As you can see these names and lines, I mean, that is a great line.
+
+151
+00:13:48,000 --> 00:13:48,000
+What is it?
+
+152
+00:13:49,000 --> 00:13:51,000
+This is Stack from time out.
+
+153
+00:13:52,000 --> 00:13:56,000
+In order, we can break in line and print text multiple ones.
+
+154
+00:13:57,000 --> 00:14:04,000
+A little bit later I will make an email overview and we'll then the more h html packs together.
+
+155
+00:14:05,000 --> 00:14:08,000
+Let me show you one more time in the browser how this looks like.
+
+156
+00:14:09,000 --> 00:14:17,000
+As you can see in browser, I printed servlet name and no matter what API I use I brings it seems to
+
+157
+00:14:17,000 --> 00:14:21,000
+its name and also I printed servlet context.
+
+158
+00:14:21,000 --> 00:14:31,000
+Plus this is a pass as it goes after the host is a context is a portion of the request UI that is used
+
+159
+00:14:31,000 --> 00:14:32,000
+to select the context.
+
+160
+00:14:32,000 --> 00:14:33,000
+The request.
+
+161
+00:14:34,000 --> 00:14:38,000
+The context always comes first in the request you write.
+
+162
+00:14:39,000 --> 00:14:44,000
+Also in this or that context, I can put attribute and get it from the server.
+
+163
+00:14:44,000 --> 00:14:46,000
+That's context in analysis of that.
+
+164
+00:14:47,000 --> 00:14:49,000
+Let me show you how I can do this.
+
+165
+00:14:50,000 --> 00:14:59,000
+In the Amazon that I get so that context and set attributes into it, it can be absolutely any attribute.
+
+166
+00:14:59,000 --> 00:15:06,000
+For example, let me include currently the call of the application because I can set any object as an
+
+167
+00:15:06,000 --> 00:15:07,000
+attribute.
+
+168
+00:15:08,000 --> 00:15:15,000
+We have an analysis of them across inside that class and gets right there and screens those response
+
+169
+00:15:15,000 --> 00:15:17,000
+bodies and values.
+
+170
+00:15:17,000 --> 00:15:21,000
+It's a sort of chant, buy message, get activate on the smart contacts object.
+
+171
+00:15:22,000 --> 00:15:27,000
+And you can see I extract action between the I used to put it that.
+
+172
+00:15:28,000 --> 00:15:36,000
+This is how I can use that context as a single storage shared between also lets to store some application
+
+173
+00:15:36,000 --> 00:15:38,000
+related information if needed.
+
+174
+00:15:39,000 --> 00:15:40,000
+In the browser.
+
+175
+00:15:41,000 --> 00:15:46,000
+Let me hit them two and point and see what will be returned.
+
+176
+00:15:47,000 --> 00:15:48,000
+Halverson As expected.
+
+177
+00:15:49,000 --> 00:15:53,000
+We can see strong representation of U.S. locale.
+
+178
+00:15:53,000 --> 00:15:54,000
+Amazing.
+
+179
+00:15:55,000 --> 00:16:02,000
+Now let's talk about other important classes of at API I want to discuss now.
+
+180
+00:16:02,000 --> 00:16:03,000
+So let's request.
+
+181
+00:16:03,000 --> 00:16:05,000
+And so that's response.
+
+182
+00:16:05,000 --> 00:16:12,000
+When a client sends a request, is a web server, is this a welcome thing that creates a red request?
+
+183
+00:16:12,000 --> 00:16:19,000
+And so as response objects and passes them as an argument is a server that's service massive.
+
+184
+00:16:20,000 --> 00:16:28,000
+The request object provides access to request information such as headers and body information of request
+
+185
+00:16:28,000 --> 00:16:28,000
+data.
+
+186
+00:16:29,000 --> 00:16:35,000
+Probably the main message that we are going to use during the interaction with the request objects are
+
+187
+00:16:36,000 --> 00:16:40,000
+get the parameter, get attribute and set attribute.
+
+188
+00:16:40,000 --> 00:16:46,000
+Even this path you can find a lot of difference masses in the command in these interfaces.
+
+189
+00:16:47,000 --> 00:16:53,000
+The masses mentioned by me a few seconds ago, in my opinion, used most often.
+
+190
+00:16:54,000 --> 00:17:01,000
+If you learned climb seven architecture and degree topics in previous lessons, you know that request
+
+191
+00:17:01,000 --> 00:17:04,000
+can be sent with different parameters.
+
+192
+00:17:04,000 --> 00:17:13,000
+In case we talk about a paper article and we send request, we get massive parameters, maybe cost in
+
+193
+00:17:13,000 --> 00:17:21,000
+the euro in case we send a post request parameters, maybe send in some message, buddy.
+
+194
+00:17:22,000 --> 00:17:26,000
+And we need to have opportunity to get values of parameters.
+
+195
+00:17:26,000 --> 00:17:29,000
+That's why we need parameters.
+
+196
+00:17:29,000 --> 00:17:37,000
+And also there are different masses that allow you to get the enumeration of all parameters means get
+
+197
+00:17:37,000 --> 00:17:41,000
+strange array of all parameters, values and so on.
+
+198
+00:17:42,000 --> 00:17:47,000
+We can also use the request object as a container for different attributes.
+
+199
+00:17:47,000 --> 00:17:55,000
+For example, in case mode for our request to different location or difference to web or different resource,
+
+200
+00:17:55,000 --> 00:18:05,000
+we can put attributes inside the request containing for these we can use method set attributes and respectively
+
+201
+00:18:05,000 --> 00:18:07,000
+we can get attributes when we need.
+
+202
+00:18:08,000 --> 00:18:12,000
+So what is the difference between parameters and attributes?
+
+203
+00:18:13,000 --> 00:18:19,000
+Parameters may come into our application from the client's request parameters.
+
+204
+00:18:19,000 --> 00:18:29,000
+Also on the attributes, string values, attributes, objects that are attached to various scopes and
+
+205
+00:18:29,000 --> 00:18:32,000
+can be modified, retrieved or removed.
+
+206
+00:18:33,000 --> 00:18:41,000
+Usually attributes are some of what we as developers put inside the request in order to use it later
+
+207
+00:18:41,000 --> 00:18:42,000
+in different ways.
+
+208
+00:18:42,000 --> 00:18:49,000
+So the program, the most popular interface that extends to the request is HTP.
+
+209
+00:18:49,000 --> 00:18:50,000
+So that's request.
+
+210
+00:18:51,000 --> 00:18:59,000
+It provides additional and specific message, including get session important safe to remember team
+
+211
+00:19:00,000 --> 00:19:07,000
+you can call get session message on the object of the service request type, but you can call get session
+
+212
+00:19:07,000 --> 00:19:10,000
+message was the object of the HTP.
+
+213
+00:19:10,000 --> 00:19:12,000
+So let's request that.
+
+214
+00:19:13,000 --> 00:19:17,000
+Let's now look at the Demos message that we have just discussed.
+
+215
+00:19:18,000 --> 00:19:20,000
+I read them a source.
+
+216
+00:19:21,000 --> 00:19:25,000
+You can see that they use request object to extract the parameter value.
+
+217
+00:19:26,000 --> 00:19:34,000
+I call get parameter and massive and was the name of the parameter after that I presume area of parameter
+
+218
+00:19:34,000 --> 00:19:39,000
+into the response to prove use that I successfully extracted the parameter.
+
+219
+00:19:40,000 --> 00:19:42,000
+Let me navigate into the browser now.
+
+220
+00:19:43,000 --> 00:19:48,000
+And as you can see, without passing any parameter, I have no value here.
+
+221
+00:19:49,000 --> 00:19:57,000
+If you watched attempt of the masses about a protocol and you know that gets request doesn't have body
+
+222
+00:19:57,000 --> 00:20:05,000
+and I can pass parameter only with URL, then you will understand what I am going to do.
+
+223
+00:20:05,000 --> 00:20:14,000
+Now I put the question mark and pass parameter param was value passed and sent request.
+
+224
+00:20:15,000 --> 00:20:19,000
+Now my select sounds request parameter and print it.
+
+225
+00:20:19,000 --> 00:20:20,000
+It is a response but body.
+
+226
+00:20:21,000 --> 00:20:23,000
+Similar to a similar context.
+
+227
+00:20:24,000 --> 00:20:27,000
+I can also use the latter request object as a container.
+
+228
+00:20:28,000 --> 00:20:30,000
+It just has different scope.
+
+229
+00:20:31,000 --> 00:20:39,000
+So that context exists during the life of the web application, but similar requests exist just within
+
+230
+00:20:39,000 --> 00:20:40,000
+the scope of one request.
+
+231
+00:20:41,000 --> 00:20:43,000
+I create another similar example.
+
+232
+00:20:44,000 --> 00:20:47,000
+I use request object to set attributes value in it.
+
+233
+00:20:48,000 --> 00:20:51,000
+After that, I call get request dispatch.
+
+234
+00:20:52,000 --> 00:20:58,000
+This message, which tells me an object of request dispatching is the main goal of request dispatch.
+
+235
+00:20:58,000 --> 00:21:01,000
+It is to force request to another resource.
+
+236
+00:21:02,000 --> 00:21:06,000
+In our case, we want to forward our request to not a single.
+
+237
+00:21:07,000 --> 00:21:14,000
+So once we hit this resource, we will set attribute and view for its request to another resource.
+
+238
+00:21:15,000 --> 00:21:21,000
+And inside that demo we get attributes from the request object and green.
+
+239
+00:21:21,000 --> 00:21:22,000
+That is a response body.
+
+240
+00:21:23,000 --> 00:21:28,000
+Let's get back to the browser and shoot them a three resource now.
+
+241
+00:21:29,000 --> 00:21:38,000
+And you can see that vast valley is a place that tensions at 24 that's requested another source.
+
+242
+00:21:39,000 --> 00:21:47,000
+I still have the same you are out a little bit late that I will compare for when you request was response
+
+243
+00:21:47,000 --> 00:21:50,000
+or direction talk in the bus.
+
+244
+00:21:50,000 --> 00:21:51,000
+So that's responses.
+
+245
+00:21:51,000 --> 00:21:53,000
+It is versus the mansion.
+
+246
+00:21:53,000 --> 00:22:02,000
+That interface itself contains different masses that allows to interact without the stream, including
+
+247
+00:22:02,000 --> 00:22:10,000
+managing buffer of the output stream, set character encoding, setting content lines, etc. More interesting
+
+248
+00:22:10,000 --> 00:22:13,000
+things hidden in another interface.
+
+249
+00:22:13,000 --> 00:22:22,000
+This is called a static piece or that response that extends that response and wants all different masses
+
+250
+00:22:23,000 --> 00:22:24,000
+to declare things as class.
+
+251
+00:22:24,000 --> 00:22:27,000
+I'd like to draw your attention to the following once.
+
+252
+00:22:28,000 --> 00:22:36,000
+Since we direct this mass, it allows me to redirect requests to another resource sent error.
+
+253
+00:22:36,000 --> 00:22:43,000
+With this message, I can send error code to the client telling the details and was the error happened?
+
+254
+00:22:44,000 --> 00:22:53,000
+I can set status code and error message set status message allows us to set desert status scored in
+
+255
+00:22:53,000 --> 00:22:54,000
+our response object.
+
+256
+00:22:55,000 --> 00:22:56,000
+Seth Hannah.
+
+257
+00:22:56,000 --> 00:22:59,000
+I believe you already know what response Heathers are.
+
+258
+00:23:00,000 --> 00:23:03,000
+With this message, we can set any header.
+
+259
+00:23:03,000 --> 00:23:03,000
+We.
+
+260
+00:23:04,000 --> 00:23:05,000
+That's kooky.
+
+261
+00:23:06,000 --> 00:23:13,000
+When I explains the mechanism of session of cookies in previous lessons, I told you that as programmers
+
+262
+00:23:13,000 --> 00:23:17,000
+in the server side, we will be able to pull some cookies.
+
+263
+00:23:18,000 --> 00:23:24,000
+This message can help us to at least as a response and yet write.
+
+264
+00:23:24,000 --> 00:23:31,000
+The message that you already saw allows us to get access to the writer that writes is response by.
+
+265
+00:23:32,000 --> 00:23:37,000
+I still recommend you to explore all of the masses from this interface.
+
+266
+00:23:37,000 --> 00:23:43,000
+But in my opinion, I named masses that you will interact with most often.
+
+267
+00:23:44,000 --> 00:23:45,000
+Let's now have a demo.
+
+268
+00:23:46,000 --> 00:23:46,000
+Let's go.
+
+269
+00:23:46,000 --> 00:23:47,000
+One by one.
+
+270
+00:23:48,000 --> 00:23:51,000
+First of all, sends a very direct message.
+
+271
+00:23:51,000 --> 00:23:55,000
+I have special classes at the school rhetoric demo.
+
+272
+00:23:56,000 --> 00:23:56,000
+Let's open it.
+
+273
+00:23:57,000 --> 00:24:06,000
+I use response object to call sense redirect massive enterprise destination for redirection zing will
+
+274
+00:24:06,000 --> 00:24:08,000
+redirect request to the Google Home page.
+
+275
+00:24:09,000 --> 00:24:10,000
+Let's see how it works.
+
+276
+00:24:11,000 --> 00:24:20,000
+When I send a to redirect resource, the Google home page is law attention's at the URL is also changed
+
+277
+00:24:20,000 --> 00:24:25,000
+to the Google one because you in zero direction new request was created.
+
+278
+00:24:26,000 --> 00:24:34,000
+Now when you see response or direction and the request for this time to make comparative analysis on
+
+279
+00:24:34,000 --> 00:24:41,000
+this slide you can see competition between response, rhetoric and forward in request to another source.
+
+280
+00:24:42,000 --> 00:24:50,000
+The shirt competition looks as follows In case we use a request for review, the request will the first
+
+281
+00:24:50,000 --> 00:24:51,000
+process.
+
+282
+00:24:51,000 --> 00:24:52,000
+On the server side.
+
+283
+00:24:52,000 --> 00:24:55,000
+Zyklon isn't impacted by force.
+
+284
+00:24:56,000 --> 00:25:03,000
+You rail in the browser stays the same request and the response objects will remain the same object
+
+285
+00:25:03,000 --> 00:25:10,000
+after forwarding request scope object will be still available and this is probably the most important
+
+286
+00:25:11,000 --> 00:25:11,000
+difference.
+
+287
+00:25:12,000 --> 00:25:18,000
+In case we use response or direct, the request is redirected to your friends resource.
+
+288
+00:25:19,000 --> 00:25:25,000
+The client will see your change after the redirection and you request is great.
+
+289
+00:25:26,000 --> 00:25:32,000
+When Iraq is normally used was in chaos rhetoric yet vapid developments.
+
+290
+00:25:32,000 --> 00:25:32,000
+Pardon.
+
+291
+00:25:33,000 --> 00:25:35,000
+We are going to review in a separate lesson.
+
+292
+00:25:36,000 --> 00:25:44,000
+So after chimpanzees, the question is which one is better to use in this particular case?
+
+293
+00:25:44,000 --> 00:25:46,000
+There is no such thing as bad.
+
+294
+00:25:47,000 --> 00:25:52,000
+Everything will depend on each specific case and will depend on the situation.
+
+295
+00:25:53,000 --> 00:25:59,000
+Use for when you want to plus control the resource in the same app.
+
+296
+00:26:00,000 --> 00:26:04,000
+You want to preserve the data options in the original request.
+
+297
+00:26:04,000 --> 00:26:12,000
+Because when you call sans redirect, you request is created and you lose possibility to get access
+
+298
+00:26:12,000 --> 00:26:13,000
+to actually these funds.
+
+299
+00:26:13,000 --> 00:26:22,000
+It prevents requests you send to interact when you want to transfer control to another domain or in
+
+300
+00:26:22,000 --> 00:26:25,000
+case our request is change in service.
+
+301
+00:26:25,000 --> 00:26:30,000
+State execution of insert update the needs operations.
+
+302
+00:26:30,000 --> 00:26:32,000
+Let's continue with as examples.
+
+303
+00:26:34,000 --> 00:26:39,000
+The next scene that I'd like to show you is send an error to decline.
+
+304
+00:26:40,000 --> 00:26:47,000
+Let me open another soon that it's called a restricted access so that every scene is simple here.
+
+305
+00:26:48,000 --> 00:26:53,000
+We can configure the error code and message that we want to show to decline.
+
+306
+00:26:53,000 --> 00:27:01,000
+In this case, I want to show four or three error code, which is client error and the code forbidden
+
+307
+00:27:02,000 --> 00:27:04,000
+and shows this message.
+
+308
+00:27:04,000 --> 00:27:07,000
+Let me try to access this resource from the browser.
+
+309
+00:27:12,000 --> 00:27:16,000
+And here I can see for us we are caught.
+
+310
+00:27:16,000 --> 00:27:19,000
+And my message said, status quo.
+
+311
+00:27:19,000 --> 00:27:27,000
+It works in a similar way with the exception that massive diversion was to mass argument is considered
+
+312
+00:27:27,000 --> 00:27:28,000
+as deprecated.
+
+313
+00:27:28,000 --> 00:27:31,000
+If you want to set success, that is good.
+
+314
+00:27:31,000 --> 00:27:39,000
+You can do this with set status message and you don't need to set any as a message in case you want
+
+315
+00:27:39,000 --> 00:27:41,000
+to set the message to use.
+
+316
+00:27:41,000 --> 00:27:42,000
+Send them a message.
+
+317
+00:27:44,000 --> 00:27:49,000
+And the last but not least example for the day is about reading and setting headers.
+
+318
+00:27:50,000 --> 00:27:53,000
+Let me open examples at the scope display headers.
+
+319
+00:27:53,000 --> 00:28:04,000
+So in this example you can see that I write H2 now page in response body even this part is not familiar
+
+320
+00:28:04,000 --> 00:28:04,000
+to you.
+
+321
+00:28:04,000 --> 00:28:05,000
+Don't worry.
+
+322
+00:28:06,000 --> 00:28:15,000
+In this example, I'm left with stress on all the things and I used email just to make our output more
+
+323
+00:28:15,000 --> 00:28:16,000
+structured.
+
+324
+00:28:17,000 --> 00:28:22,000
+As you can see here, I get the generation of all other names.
+
+325
+00:28:23,000 --> 00:28:27,000
+If you have never worked with the enumeration, you can treat it as iterate.
+
+326
+00:28:27,000 --> 00:28:32,000
+That is, go all set to iterate over a collection of elements.
+
+327
+00:28:32,000 --> 00:28:41,000
+I can extract each header from the request object by its name and here I had the values in table.
+
+328
+00:28:42,000 --> 00:28:48,000
+Let me navigate to the browser and they change zero to headers.
+
+329
+00:28:48,000 --> 00:28:51,000
+Here you can see the table was headers of the request.
+
+330
+00:28:52,000 --> 00:28:55,000
+You can explore all these headers.
+
+331
+00:28:55,000 --> 00:29:02,000
+I believe that most of them are already familiar to you from our previous lessons about HTP.
+
+332
+00:29:03,000 --> 00:29:05,000
+This was example about reading others.
+
+333
+00:29:06,000 --> 00:29:09,000
+But what about if we need to set some headers?
+
+334
+00:29:10,000 --> 00:29:12,000
+Let's look at another example.
+
+335
+00:29:12,000 --> 00:29:15,000
+Now the example is located in the file.
+
+336
+00:29:15,000 --> 00:29:17,000
+It a scope set header.
+
+337
+00:29:17,000 --> 00:29:19,000
+So let me open it.
+
+338
+00:29:20,000 --> 00:29:27,000
+Don't worry, you will be able to find source quotes of all examples in attachments to the lesson and
+
+339
+00:29:27,000 --> 00:29:30,000
+in case you will still have some questions.
+
+340
+00:29:30,000 --> 00:29:34,000
+You are more than welcome to ask your questions to those of Edo.
+
+341
+00:29:35,000 --> 00:29:38,000
+In this example, I said to refresh Heather.
+
+342
+00:29:38,000 --> 00:29:47,000
+That will refresh the page each 2 seconds and after that I write code is it means time on the page.
+
+343
+00:29:47,000 --> 00:29:52,000
+Lets navigate into the browser to see how it works in the browser.
+
+344
+00:29:53,000 --> 00:30:02,000
+I change your role to refresh Heather and you can see that this page will be updated automatically each
+
+345
+00:30:02,000 --> 00:30:03,000
+2 seconds.
+
+346
+00:30:04,000 --> 00:30:09,000
+That proves that we successfully set the refresh header that.
+
+347
+00:30:09,000 --> 00:30:15,000
+So what I wanted to share with you today, let's recap what we have learned in this lesson.
+
+348
+00:30:16,000 --> 00:30:23,000
+In this lesson, vanguards different attributes of absolute annotation, including the uncertainty.
+
+349
+00:30:23,000 --> 00:30:29,000
+So let's in these parameters and on the web so that annotation attributes.
+
+350
+00:30:30,000 --> 00:30:38,000
+We paid extra attention to the satellite API in this lesson and the inherent API of HTP so that class
+
+351
+00:30:39,000 --> 00:30:44,000
+generic so that it should be similar to request is a piece of that response.
+
+352
+00:30:44,000 --> 00:30:46,000
+So that can fake.
+
+353
+00:30:46,000 --> 00:30:54,000
+So in that context then that's what is the difference between forwarding request and victim's response.
+
+354
+00:30:55,000 --> 00:31:02,000
+And at the end of the lesson, we also saw examples how to work with headers, requests and response
+
+355
+00:31:02,000 --> 00:31:02,000
+objects.
+
+356
+00:31:03,000 --> 00:31:11,000
+Namely, you saw how we can read Heather's phone request and set new headers in response.
+
+357
+00:31:12,000 --> 00:31:13,000
+That's all for today.
+
+358
+00:31:14,000 --> 00:31:15,000
+Thanks a lot for your attention.
+
+359
+00:31:16,000 --> 00:31:19,000
+Have a great day and see you in the next lesson.
+
diff --git a/61 - Servlets/002 Source-code-examples-from-the-lesson.url b/61 - Servlets/002 Source-code-examples-from-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..1f260518683a35c82c17c374a517c05e6f51cddd
--- /dev/null
+++ b/61 - Servlets/002 Source-code-examples-from-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/java-learnit-web-online-store/tree/master/online-store.web/src/main/java/com/itbulls/learnit/onlinestore/web/servlets
\ No newline at end of file
diff --git a/61 - Servlets/003 Documentation-about-elements-in-web.xml-file.url b/61 - Servlets/003 Documentation-about-elements-in-web.xml-file.url
new file mode 100644
index 0000000000000000000000000000000000000000..ed64d9890328a263d90e4acd499ddb36898a848c
--- /dev/null
+++ b/61 - Servlets/003 Documentation-about-elements-in-web.xml-file.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html#1017275
\ No newline at end of file
diff --git a/61 - Servlets/003 Source-code-of-ContextParamValueServlet.url b/61 - Servlets/003 Source-code-of-ContextParamValueServlet.url
new file mode 100644
index 0000000000000000000000000000000000000000..812198428669ba0527e9e35a875039fd9f61ca18
--- /dev/null
+++ b/61 - Servlets/003 Source-code-of-ContextParamValueServlet.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/java-learnit-web-online-store/blob/master/online-store.web/src/main/java/com/itbulls/learnit/onlinestore/web/servlets/ContextParamValueServlet.java
\ No newline at end of file