Patients newly diagnosed with advanced kidney cancer are often overwhelmed by the medical terminology that is tossed back and forth between healthcare providers. One of the most important things to discuss with your doctor from the start is treatment goals. Setting goals helps you manage expectations and better understand what to realistically expect from various treatment options. A complete response, also referred to as complete remission, is the disappearance of all signs of cancer in response to treatment. A complete, durable response occurs when all signs of cancer have disappeared over an extended period of time. A partial response, also called a partial remission, refers to a decrease in the size of a tumor or in the extent of cancer in the body in response to treatment. A non-response, also known as disease progression, occurs when a patient does not experience improvement or respond to treatment within a specific period of continual therapy. Choosing which therapy to use first to treat metastatic kidney cancer is a very important decision. You and your doctor need to consider the following. For which treatments are you an appropriate candidate? What are the best possible results as well as the risks? How long is the medication taken and when will you find out the results? What options will be available if your first treatment doesn't work? The Kidney Cancer Association has an excellent resource on their website where you can go to learn more oncology terms and their definitions most simply put. Visit www.kidneycancer.org.


What is going on everybody? My name is John Hammond and welcome back to another YouTube video. We're taking a look at the Boot to Root 2019 CTF. I've got it visible here in CTF time. It's Boot to Root with zeros for the O's inside Boot. So take note of that. The official link here is BootToRoot.Tech. That brings you to a cool flashy web page hacker elite cyber warrior ninja. And the register button is the only thing that will actually bring you to their real CTFD platform. Note here when you actually go to this page, this is no longer a domain name. It's just IP addresses. So classic hacker fashion here. I've got the challenges up and available. So let's take a look at some stuff in the Linux category because I think that had a very interesting and good curve for people that were going through. There were a lot of questions and a lot of struggles that were going through. So first challenge is called Steve Rogers in that category. Let's take a look here. Steve knows there's a flag somewhere in plain sight. Log in as Steve and find it for him. It has a connect.sh script. The author is DeadSec and if you need support you can go check out their Slack channel. The link for that is available in their miscellaneous category and the welcome challenge for 50 points. So you get a flag if you go to the Slack channel. It's good. It's good. Good CTF. Connect.sh is just a small one line script kind of like what I normally do when I'm making CTF challenges, which I think is kind of funny and kind of neat. I'll fire it up in the terminal here. I actually have it downloaded already. I do not anymore, never mind. So let's go ahead and create that. NanoConnect.sh. It put it into Google Drive stuff so I couldn't wget it and it's just messy. What this does and it's interesting is this executes SoCat and connects to this IP address at this port and turns the terminal into raw mode and turns off Echo. So you might be asking like why can't I just netcat to that IP address and that port, which you have a valid point here. Like you very well could totally do that. However, it does not put you in raw mode and it doesn't turn off Echo. So the commands that I run are still visible when I do them and show them and you don't have cool, neat things like an actual tab completer arrow keys working. So the SoCat method is better. If you actually run that script and you get an error SoCat is not found, that's okay. Don't worry about that. It just means SoCat's not installed. So on your home system, you simply run sudo apt install SoCat or whatever package manage you have, but you might be on Ubuntu or Debian based system like me. So okay, we connect and we are in their file system. We're the Steve user. Now what do we do? Well, probably want to privask probably want to get control of this machine probably want to find the flag. So we start to enumerate we start to look around we start to try and find stuff. LS doesn't seem to be anything in the current directory LS tack a nothing really interesting in these hidden files, you can take a look at them but they're just kind of the default bash configuration stuff bash profile bash RC, etc. So nothing particularly useful, you still got to keep hunting. This is where your enumeration is key I started to take a look at it's a password. I think that's the first thing you should check a lot of times or at least one of the first things that should definitely on the checklist. We have a root user. Obviously, that's good. A lot of system accounts, service accounts, dub dub dub data. I thought that was interesting because that means there might be a web server on this. I realized I was talking fast now I got to slow down. It has SSHD as a user which is interesting means SSH is likely installed. We can check out processes next and try and figure that out. Also, we've got Steve, our account and Tony Tony is another user account which is peculiar. So we can go check out his home directory home Tony doesn't seem to be anything there. But LS Tech LA gives us a dot flag file so we could try and cat that out. But the permissions tell us absolutely no one can really read write execute this it's chmod 0000 root would still be able to read this if we were root but we currently are not root. So maybe that's a fake flag maybe that's a red herring maybe that's a fly for another challenge we're just gonna have to table that and put it out of our mind for the moment. If you are unaware, there is a incredible awesome resource got milks, privisk guide. So GOT M1LK privisk and Linux. If you were to Google that you can check out this blog post. It is phenomenal and that's a lot. It's just a treasure trove of awesome commands and syntax you can run to try and find out information because they say, Yeah, this is all about privilege escalation. But that boils down to the core matter and that's enumeration. So enumerate enumerate enumerate figure stuff out and that gives you a lot of things that can take a look through this. So if you're just literally we're typing each of these commands one by one and trying to figure stuff out, you would find the flag. And I mentioned, let's take a look at the programs and the processes that are running. So I want to check out that applications and services here. If we were to PS ox, okay, you can see there is route running a bash script 1042.sh routes, blah, blah, blah, SSHD. So SSH is running that's peculiar to note. And Sue, Sue, Steve. So okay, maybe that command didn't give us all that much. However, that 1042.sh is very, very interesting. Let's see if we can view that file. If I were to cat that out. It tells me nothing because maybe I'm trapped inside of that or something I don't know. So whatever, let's keep moving on PS tack EF is interesting. If we run this, it says, in that same process in the command, it says bash 1042.sh and maybe another argument, that looks like a flag, right? That looks like the start of the flag, it's not finished there. But now we've got to lead as to okay, this process ID has something very interesting in it. And if you didn't know what that was doing, you can check out the man page for PS, but that's not going to have anything in that system. So let's man PS on our local box. You can check out four slash E. That is select all processes. So we did that the same thing with PS ox, I would think. But we also want tack f in there. And that's do full format listing. So that's going to give us that output that we saw there, and got practically as much as it could have that command line. So now you can see part of the flag is there. That's pretty valuable. And maybe you wouldn't have ran that if you weren't using this guide, or you didn't know that resource, you didn't know to enumerate in that way, etc. So experience exposure, that's what this is all about, right? Okay, now, we know that this is potentially in the command line of that process. So we can check that out in proc, we can go ahead and cat proc, because everything in Linux is a file, right? If you were checking out a process, you can specify its process ID, kind of like a directory in here. And we can check out some peculiar stuff. I've done this in a lot of different videos. Cannot read a proc one current working directory or root. That's fine, because it's not ours. But we could probably go ahead and read the command line file. So let's cat that out command line. And it's pretty messy, because it reads it kind of like a binary thing. If you pipe this to strings, if we actually have strings, no, we don't classic, you would be able to see this a little bit nicer. Anyway, you can see the flag there, boot to root command line flags are obvious. So boom, we've got it, right? We can go ahead and submit that. If I move back, go to the challenges here. The website has been really shaky. Sometimes the challenges straight up won't load. A lot of people were whining in the slack. It's fine. Alright, that's that though, that is the challenge. So take note now we had seen another flag file in Tony's home directory. And we also saw that SSH was running.  But we've got the flag boot to root command line flags are obvious. So if you wanted to, let's just take note of that flag. For good practice here, like we always do right? Let's mark Steve Rogers as complete. And we continue on. Thanks for watching guys. If you like this video, please do like comment and subscribe.  Let's go ahead and submit that ruin my outro boot to root. Come on, man. Tony stank. Next challenge. Professor Hulk requires a flag. We'll check this out in the next video. But if you did like this video, please do like comment subscribe. It's a lot of fun. This was a great CTF I enjoyed a lot. It was kind of side by side with Volga CTF sunshine CTF is going to start in a couple minutes here. So it's going to be a good weekend. Thank you guys for watching. See you in the next video.


Can we shift to first slide, beginning slide? I think you need to refresh. Hello everyone, I am Sanjay Gupta and I welcome you on Sanjay Gupta Tech School. So this is day 9 session of this Appian Bootcamp and I have Ankit with me. So welcome Ankit on the platform. So due to some reason we were not able to have the session yesterday. So today and tomorrow we will be having the session. So day 9 today and day 10 tomorrow. And I hope whatever session Ankit have delivered so far.  And for practice like instances are also available. So if you need, so you can raise a request so that Ankit can provide. So for that you can utilize our telegram group. So Ankit will be telling you about that group link. And it is available in the video description as well. So you can just like raise a request there. Okay. And if you want to follow or you want to receive timely notifications. So you can follow Sanjay Gupta Tech School on YouTube, LinkedIn, Instagram and telegram. And all the important links are available in the video's description. Okay. So over to you Ankit have the session started. Thank you. Thank you very much. So if you want to check the recorded sessions, you can go through this. The code mesh fraud YouTube channel. You will find all the recorded sessions and other APN related content. So you can go and check out that if you have any query. Or you know that if you're buried or any questions, or you can ping us on that called mesh fraud telegram channel. So you can go and can put the questions and we will reply back on that.  So expressions rules are related to, you know, that to calculate the data out to, you know, to do some many patients in the data. So that is completed into data. Today we will discuss about, we'll learn about APN interfaces. So as we already discussed that APN expressions rules are to work on data, to create the logics on data, to create some calculations on data, to get the data from database or some other sources. We use the expressions rules. But if you want, you know, we want to interact with the user. Okay. Like if any of the user come and want to interact with system. So in that case, we use APN interfaces.  So user can interact completely with the help of APN interfaces. Okay. So now we will create our first interface.  And you can see here we have an option to create interface. So I will click on that particular button. And you can see this initials are already coming here. So because these are, these are our applications initials that we are, we are using to create the name of the interface. Okay. So naming convention of the interface is also similar to the expression rule that we should follow. Like suppose if I, if I'm displaying something or if I'm taking the input from user for like, you know, that fill the employee details. So I can see the employee details. Okay. It is also in camel casing. So lower camel case, or if any, in any of the application, if you are using upper camel case, then we can use the upper camel case also. But it must be consistent in all of them in completely application. Okay. And from here I can put the description like contents interface in which user can input the data. I can do it like this. Okay. Okay. And then similar to, you know, that expression rule, we save interfaces also in rule type of folder. Okay. So we created one rule folder right on in our last sessions, like 80 expressions rule, we created for expressions rule and 80 interfaces, we created for interfaces. Okay. So we will save our all of the interfaces into 80 interfaces. Okay. And like for each type of rule, we have separate folder. Right. And like if I'm creating constants, I will store constant into constant type constant folder. Okay. That is also a rule type folder. If I'm creating interface, I will store into interface folder. If I'm creating a expression rule, I will store into 80 expression rules. Okay. So for each type of artifacts, we have separate folder. Suppose if I do not have any folder for 80 interfaces, I can create by clicking on this link also. Okay. So that also we can do from here as well. Okay. So now you can see that we have multiple ways to create folder. Once I can go to new and can create a folder or I can create from directly from here as well. Now, if I want to create an interface, I can click here on this create button and I can create. Okay. So I want to duplicate the existing interface. Then I will use the second option. Okay. Now we are creating from scratch. That's why I use this first one. But if suppose there is already an interface created and I want to create the duplicate of that interface, then I will use the second option. Okay. So now I will click on this create button and this interface will be created. Okay. So you can see here in this security option did not click like we tried into group and folders. So there was one option to configure the security, but in expression rule also a pen do not ask for, you know, put the security and then interface also it is not asking to configure the security because it by default it take the security from its parent. Okay. Because we know that we stored this interface into a folder that the interface. So it will inherit the security from that folder itself. You don't need to explicitly define the security. But if you want to define the security that is different than folder, then you can go from here. This is the security option. Okay. And I can uncheck this one. It is like inherit security from parent. Parenting its folder. Right. So it is inheriting the security from this parent folder. But suppose I want to define the security that is different than this folder, then I have to simply uncheck this box and I can define the security. I can delete any of the group from here or I can change the role from here. Like if I want to create make this administrator, I can make if I want to make editor, I can make. Okay. And if you were, I can make if I want to add a new group here, I can add. Okay. So in this one, I can add users also. Right. Add users or group, but it is not a best practice to add users in the security. Right. Because if I'm adding a user, that user might not be available on other environment or production environment where user will actually use the application. Okay. That's why we use groups and in APN, we can deploy groups, but we cannot deploy users from one environment to other environment. So generally, it's a best practice to use groups to define the security, but not the user. Okay. So every time whenever we are creating any application, we will define the security with the help of groups, but not with the users. Okay. So now you can see here, we have this window and using this window, we will create our interface. Okay. So now we go through that, you know, learn about naming convention, that naming convention is we generally use camel casing here. Okay. With proper name like what is the use of interface so that you use of the interface or the purpose of the interface should be in that name. So easily anyone can come and can understand why we have created this interface and then interface description. So description is, you know, that we define the description also for this particular interface that you saw that in that one, we define the description because you know that to understand the purpose of the interface because in name, we can put some limit of, you know, characters only, but description can be, can have any length. So that have the bigger length so we can provide the purpose of the interface creation and what is the use of the interface creation. So everything we can put in description. So anyone can easily understand the use of particular interface. Description is not the mandatory. So if I put blame, then also I can create the interface, but the name is mandatory. And name will be unique also. So if I created an interface with this name, A, B, till employee details and if I try to create the interface or any other rule with the same name, it will give me the error. So if I try to create the interface with the same name that it already have, it will give me the error, that name already exists. And it won't allow me to create the interface. If I want to duplicate the interface, I can go here and can click, fill the name here. This is a picker field, suggestion field. So it is suggesting me the name. I can select and you can see we have the same name, but we cannot create the interface with the same name that already exists. So I have to change the name, like I'm updating something like that and it will create a new interface with this particular name and description. I have to just click on this create button and it will create the interface for me. That will be the second interface and it will clone the code that is in the first interface. It's in folder that we already checked that to save the particular interface also we use a rule type of folder but we create separate folder for each type of artifact, like for expression we create a one folder for interface we create separate folder for constant we create other folder. And now security, so if I'm creating interface, so it will automatically pull the security on the security of the folder in which it is stored but we can explicitly define the security also. We can update the security. That we learn like how we can do that. Now you can see here this is design mode in which it is opened. So in design mode we can drag know that drag and drop the component that you can provide and can create the interface. So you can see here there are some components that is already defined here, there are some patterns design library and some templates are also there. So you can directly use the template that APN have provided. So we can directly use these templates and we have edit preview and pro performance test. So you can see here this is edit where you can edit the interface. Whatever you want to add in this particular interface you can add from this edit option. If you want to delete, if you want to edit, if you want to add some components you can directly use add from this edit one. Now if you want to check know that interface, what interface is developed, design so you can go to preview and you can check. In preview you cannot add the new component. You can add only in edit mode. And if you want to check the performance also of the particular interface then you can go to this particular one. Currently it is coming as disabled because we do not have any code right now. We did not add anything. So it is coming as disabled and it is showing a message that cannot switch to performance view and expression is empty. That means there is no any component that current interface have. Okay. Now templates. Okay. So you can see here APN have some preview templates like form, pages, there are some examples right. So we can directly use these components. Okay. And we can create our interface. So suppose I want this form. Okay. This is a one column form. There might be more columns that we will learn how we can create but this is one column form. Okay. So to use this particular form I have to just click on this form okay. And it is coming here in the middle and you can see this is the form and it is the header of the form these are the section of the form and there are two buttons that is automatically created. Okay. You have to just click on that particular template and it will automatically create for you. Okay. Now if you want to use the other one like if I want to use this one this two column form then also I have to click here and it will create for me. Now you can see here we have two columns first one this one this component this column and this is second column. Okay. So like this we can create and column of architecture. Okay. Whatever we have needed right. So like this we can use the pre-built templates. Okay. We have others also like this is three column this is with milestone wherever we are needed we can use this. Okay. And these are four with vertical milestone. So if I click on this one so you can see here it have milestone as well. That is a horizontal milestone which are some you know these are have four milestones like step one, step two, step three and review. Okay. So this is created same like that we can if you want vertical milestone okay then I can click on this and I can use this. Okay. So this will have vertical milestone you can see here this is vertical milestone. Okay. That have four step one, step two, step three and review and this is the form. Okay. So like this we can create the interface. Okay. With the help of drag and drop functionality. Now you can see here we have pages as well. Okay. If you want to create page you can use this, you know, pre-built template also. So suppose if I want to create a three column form you can see here we have three column form. Okay. This is this one does not have any buttons or any labels. Okay. Because this is simple three column architecture. Okay. Structure and not a particular form where user can submit the request. Okay. And similarly we have others in this one you can see we have billboard header and then two columns. So if you want to create the similar structure you can use this. Okay. So on this top this is a billboard that have one image in background. Okay. And have two sections also. Right. One section with two columns. Okay. So if anywhere we needed this type of a structure we can directly use. We do not write need to write the code. Okay. But we can directly use this. Okay. If I want this structure I can use this. If I want this type of structure I can use this. Okay. Like if I am clicking on this one this structure is coming. Okay. There are some sections here and some sections also. Okay. That is the part of this one and this one section and subsection also here. Okay. So if we want this type of structure we can use this. And now you can see here there are more structure. Okay. On which you can practice you have to just click on this and you will be able to use. Like this one. So this one have billboard and some cards also. Right. These are some cards or some components. Okay. They have multiple columns. Right. So if we want this type of structure we can use this. And there are some interface examples also that we can directly use. So suppose if I want to create a request form I have to click on this one and I can use this. You can see here this is automatically created. This interface. If you want to change anything you can change from here. Okay. And this will have the code also. So if I go to this expression mode you can see here in the left side it have code for this particular structure. Okay. This code is automatically created by EPN. We did not write a single line of code also. It is automatically created. But you know that if you want to update I can go here and I can update. Okay. Whatever I have needed I can update from here. From the code part. Okay. That I can do. Okay. So similarly we have other pre-built interfaces also. Like you can see here if I want to check the sales dashboard I have to click here and it will automatically create the sales dashboard. Okay. You do not need to write the code. But you know that whenever you are working into the real-time application you have to do some updates. Okay. So to do some updates you have to go to this expression mode that we will learn in our next session how we write the expression. But you have to go to this expression and you can update this. Okay. Whatever you are needed you can update and your data will display here. Okay. But this is like you know the template that you can directly use. Similarly we have other templates also. Like landing page 1, 2, 3 sales pipeline, case dashboard okay and other one. So if I click on this one it will have the interface type. Okay. So if I want this type of structure I can use this one. If I have some other type of structure so I can select other template and it will automatically come here. Okay. So that I can directly use. Okay. Like if I want to have this portal form. Okay. I can use this. I have to just click and I can use this. So now you can see this interface is automatically created. Okay. The images and everything created and if you want to update you can update. Okay. But at the first time you have to try to write the code you can directly use rebuild template wherever we are needed the similar structure. Okay. Similarly we have other you know examples as well that you can directly use. Okay. According to your need. Okay. Whatever requirement you have and so you can use this rebuild template. Okay. You do not need to write the code from initial. Okay. From scratch. Like there is one builder as well. So this is a CDT builder or data type builder. So from here you can create the data type. Right. We learn about data type creation. There were four method one was from scratch. One was duplicating the existing data type one from the database and the other was from XSD. Okay. But this is also a way. Okay. So you can provide this data builder from where we can create the data type. Okay. In this one. So suppose I have a data type. Okay. And I want to create the interface. Okay. So for that we can use this. Okay. So suppose I have one data type that is AB employee address. Okay. And if I want to use this CDT build to create the interface I can use this. So okay. And you can see here all of the fields is automatically coming here from the CDT and I have created this interface. Okay. I do not need to write anything any single line of code. I can just use that form builder and I can I have to just put the CDT on which I need to create the particular interface again. If I want to delete a particular field I can delete from here. Okay. Like I have to go to this expression mode and I can delete the particular part. Okay. And it will delete from here. That we will learn the expression mode but yes. Like from there we can delete the particular field. So now you can see we do not have that employee ID build that was initially there. Okay. So like this with the help of CDT also we have created an interface. Okay. Last time we know that we checked about the preview. So suppose this is one interface. Okay. So this is one interface that we created. If you want to preview. So I have to just click on this one and I can see the preview that how it will look like to user. So like this we can see the preview. Okay. And there are multiple modes here. So if it is a wide desktop I can click this one to check how it will look like into the wide desktop version if it is a desktop. So it will look like this if it is a narrow desktop. So it will look like this if it is a tab. So in tablet it will look like this. Okay. And if it is a mobile phone then it will look like this. So you do not need to write the code again and again for different system. You can have you have to just write once and you can write the device and it will show you that how it will display in the different different system. You don't need to go to mobile and open that interface to check that how it will look. But you can directly check from here as well. Okay. So this concept is provided by APN. Okay. Now if you want to check the performance of this interface you can check from here. Okay. So it is displaying the performance that how it how much time it is taking to execute and to display the objects in the particular interface. Like you can see here it is taking 83 milliseconds. Okay. This header content layout is taking 83 milliseconds and it is divided like header is taking 10 milliseconds and then content is taking 73 milliseconds and this header content layout is taking 1 millisecond. Okay. So like this you can check and there are other components. Okay. And so it is defining, you know, describing that its performance by item, you know, that component by component. So if you can check the performance of each component like this component using 10 times in this interface this particular in 13 time and how much time it is taking it is taking 51 millisecond it is taking 11 milliseconds something like that. Okay. So you can check the performance from here. Okay. And if any of the artifacts or of the component which is taking time that we can optimize whenever we have needed. So like this we can use the existing templates. Okay. Now you can see in the left side we have these three buttons. Okay. Component patterns and design library. Okay. So first we will, you know, learn about layout. Okay. That is in this one. Okay. So in this one there are some interface layouts that we can create. Okay. That can be a form layout can be a section layout. Okay. So any type of layout we can use here. Okay. So if I want to create a form layout I can create a form layout. If I want a section a card layout I can directly use. Okay. So here you can see in this section we have layouts like section layout, columns layout, side by side layout, box layout, card layout and billboard layout. Okay. And every layout have its own use. So if I create, if I want to use this section layout I have to just drag this one. Okay. And I can directly use this section layout here. Okay. I can configure the section layout from here itself that whatever component I want I can directly use in this. Similarly if I want to create the other layout like columns layout I can directly use here. Okay. And you can see here we have three columns structure. If you want to delete any of the column you can direct just click on this one and it will be deleted. Okay. If you want to add additional column you can add from here this plus sign in right side you can see. So if I want to add any of the new column I have to just click on this one. If I want to delete any of the column I have to click on this delete icon. Okay. So like this we can add or delete columns in this one. Okay. Similarly if I want side by side layout I have to click here and it will create me the creates side by side layout for me. Okay. If I want other layouts and it will create a blank or empty layout. Okay. We have to configure this one. We have to put any of the column that I want to add. I have to add that one. Okay. If I want box layout I have to drag this one and it will create box layout for me. Okay. If I want any configuration I can configure also. Okay. So these are layout on which we have to you know you have to do that some practice. Like if I want to use card layout then I can drag this card layout. Okay. And now I have card layout I have to configure that one. I can configure. Okay. I have if I want to duplicate I can duplicate from here. If I want to delete I can delete from here. If I want to go to the parent I can go from here. Okay. So these are layouts that APN provide us. Now we have some other components like input components. Okay. Where user can input the data. Okay. That you will see one. So suppose there is a section layout. And in section layout I want a text field. Okay. So I have to just drag this text field. And you can see here we have this text field now. Okay. So this text field and in this one user can input the data. Okay. From here. Okay. And it will be saving some variables that configuration we will see but like this you can drag there. You know this one. So now if you want to configure this particular text field you can see in right side we have label. Okay. Label is like text. If I want to update I can update this. Employee mail. Okay. So you can see here employee name is coming now. Okay. If this label position. So you can see here label position we have. There are four options for label position. One is above. Other is adjacent that just specified and if you want adjacent I have to click on this one. And now you can see the label is coming left side of the box. Right. If I click on the specified. Okay. It is coming and like this according to the page size. Okay. And if I want to hide this one I have to just click on this one. Now you can see there is no any label. Okay. So it hidden the label. If you want to add any instruction though that you have to fill this one. Like I can see I mean input the instruction. Okay. So from here I can put the instruction and you can see here we have instruction now. Right. In the bottom of the particular field or component. Okay. If I want help to update. Okay. So I can use this one this help tool tip. Okay. I have to just copy. I can click here as well. Okay. Now you can see this icon is coming this question mark and this message is coming that we are configuring that help to help tool tip box okay or parameter. If I want placeholder I can configure this one. You can see here this box we have placeholder now. Right. Like this display value and save into. Okay. So whatever value is displaying here. We configure into the display value and whatever value you know the value that we want to save into the some variables we use the save into part. Okay. So like so we can use this one. So similar to expression rule. We can create the rule input in this interface as well. Okay. So suppose I am creating a that is employee name. Okay. For rule input also generally we use the ML casing employee name and in description I can fill or name of the employee. Okay. It's type we can select text type because employee type will be employee name will be text type. Now we have variable type. So in display value I can put this one. Okay. Employee name. So whatever will be in this rule input value will display here. Okay. In this box automatically and save into is to store the value into a particular variable. Okay. So in this one also I am selecting this employee name. Okay. So like suppose I am selecting filling here. I'm typing on key. So now the value of this rule input is you can see from here Ankit. Right. This is the value of this variable. Okay. If I am updating this to someone Sanjay. So you can see here the value is also updated because of save into. Okay. So first it is saving the value that user is typing into the save into parameter. Okay. And then it is displaying into the particular box. Okay. With the help of display value. Right. So like this we use the display value and save into. Okay. There is one parameter that is repress after. Okay. So repress after is unpopular. That means if I am clicking outside of the box then it will run execute like currently its value Sanjay that you can see in the value part if I am updating this to Ankit. Okay. Now also it is Sanjay. Now if I click outside it will update. Right. Ankit. But if I am using key press so whenever I am pressing the key it will update like you can see here it is updating at the same time. Just typing and it is updating right into the right side. So like it works like on key press if I want to put the character limit like suppose I am putting character limit to then it will give me the validation like because now we have five characters. Six characters. Right. So it is giving the validation that text cannot be longer than two characters. Six characters received. Right. If I put seven okay. Now it is not giving them giving me the validation. Right. It is not any validation message because its length is six and I and limit is seven. Okay. If I have one two more characters. Okay. Then it will give me the error. Right. The text cannot be longer than seven characters received. Okay. So like this validation works. There are you can see in right left side we have other components also input components okay like integer field, decimal field, date field, date and time okay. That you can okay learn or you can read I will pro you know I will provide you the link of this or even component on which you can practice. Okay. By yourself you can go to the documentation link. You can check what is the use of this all of these components. Okay. And what all parameters are needed okay. Most of the parameters will be same that we you know learn today but there might be some difference parameters as well that we will okay have to do the practice and that we can check from that documentation link that I will provide you in telegram group. Okay. Now we have selection type of components as well like if I want drop down in which I have to select the particular value okay then I can use this select them in this input field I have to type manually right the data but sometime we need to select the value from the existing options like country name right country name we generally select from existing values so for that we use selection components okay. So this is the use of selection components okay you can go through the documentation and you can read and we will you know learn deeply in the next session same like we have display like if I want to display some image okay some rich text or they know that text in color or some ball or something then we use the rich text if I want to know that you know display something into the this type of structure okay or in the tag we use the tag component okay so similarly we have multiple display components okay that we can use to display that you know that is details or the information so for that we use display component same like we have some actions like if I want to click on some link and if I want to go to the next page other pages if I want to you know call any of the URL then I use link if I want to click on something and perform something so I use button okay similarly we are record section so about record we will learn in next session our coming session and on that record we have some actions so we can use this record action for this one okay similarly we can create grids and lists okay with the help of this one like editable grid the user can update the data like you have here in this one quantity price and price user can update right for that we use editable grid and that second is read only grid okay so if I just want to check the data to see the data for that we use the read only grid okay and other is like event history list okay so if I want to check the data like history type of data or audit type of data then we use this event history list it has some charts picker and all okay so we will learn about this in our next session but before that I will provide you the link of all type of components that APN provide so first you can go through the document and you can check all of that you know that components build what all parameters are these components needed and what is the use of these components okay that we can go through and can check from the documentation okay so you will be it will be for you to understand okay but most of the time the configuration will be almost same like this only okay so you can refer this and you can practice on that part okay so for today in our today session we learn like how to create interface and what all layouts APN provided what is the design mode how you know we can use the design mode we can create the interface how we can create the rule inputs interface rule inputs is similar to expression rule only that we can create of any type of know that rule input and how we can use other options like other components it can be input field it can be selection field okay so all of this topics we learn today in our next session we will learn about you know the other components like the selection component display component okay action and grids okay but before that I will provide you the documentation of APN related to APN from interface components that you can go through and can check okay that about you can learn about you can read about this other type of components so that you will have some you know some view on that so that it will be easy for you to understand okay so this is all for today and if you want community environment access because now we have some community environment so we are providing one by one so if you anyone or else of you want to access the environment want the environment access you can go through this link that is already in the you know that description of this video and in this so you can fill your details and you will get the access okay whenever we have that and if you have any query so you can put in our telegram channel as well as in this email ID also okay so we will you know whatever query you have we will provide you the solution of that one so thanks for today I want to hand over to Sanjay sir thank you thank you Ankit for sharing insightful session I think today you use some low-code platform to draw or to implement things right I am not much about appian so yes yes yes yes so it's an appian inbuilt feature where you can drag and drop you know that component and you can create your interface right yeah I think folks will be learning a lot with this and guys if you want to do regular practice so please raise a request for instance so that whatever sessions Ankit is delivering you can practice and as we already told you this is a job oriented course so if you do appian so like immediately you will be having a chance to get a job opportunity right so do follow all the sessions and do practice and please share a review or feedback so that we get motivated and provide you more and more content okay thank you Ankit for sharing insightful session and we will be having more session tomorrow so stay tuned yes thank you everyone bye thank you


Welcome to the session of PCB design using Eagle CAD software learning outcome of the session. Before proceeding, let me ask you one question. What are the other softwares available for the PCB design? You can pause the video and write down your answer in your notebook or resume the review in order to see the answer. There are different softwares available such as KeyCAD, ExpressPCB, CircuitMaker, etc. So what is the Eagle CAD software? The Eagle is a scriptable electronic design automation application with a schematic capture printed circuit board layout and utter outer function and the computer edit manufacturing features such as CAD-CAM. The Eagle stands for easily applicable graphical layout editor and it is developed by the CAD software computer GMBH. You can download the Eagle CAD software from the website www.autodesk.com. So in order to create the schematic, go to the file, there is an option of new and select schematic. So this is the schematic environment. So here we can draw the schematic. This is a toolbox where different options are available. Here is an option of the component add from where you can add the component to the schematic. So click on that option. So you can see the different lists of the components are available. So you can search for the appropriate component and select those components. Let us create one circuit diagram. I will create the voltage regulator circuit. So for that we will need a voltage regulator IC. So search for V regulator. So you can see the option of voltage regulator here. That it includes the TO-220 package which will have a same configuration and pinout for each and every 7 at XXIC. So you can see the symbol here. This will provide you the schematic symbol and this is the symbol for the PCB layout. Let us add one component. So here I will add the component. So in order to deselect the component you have to press the escape key. Now next component that we will need is the register. So I will add the register. You can see the different options of the registers are available. So this option which is present in a brown represents the options for the surface mount device. So we have to add the register which is axial. Axial stands for the registers having the lid component which is through hole component. Let us add at the output. Then press escape. Let us add one LED which is used for the indication where the supply is available or not. You can search for the LED. So they are an option of LED. Let us add that 3 mm LED. In order to rotate the component you can press the right click of the mouse. I will add the connect the LED in parallel. Next component that I am going to add is the terminal that is input and output terminals. So for that I am going to add a pin head. So pin head search for the pin head you can have the option here. The pin head basically stands for the burgstrips that why we are going to you can use for the connection of the wires external terminals. So we will need two ports that is one for the VCC and one for the ground. So let us add the two pin head. So one is for the input and another is for the output. Now in order to rotate the component first select the component. So there is an option of move select that component and rotate the component. So if you want to delete the component there is an option of delete here. So click on that option and click the component that you want to delete. Then if you want to copy the component there is an option of copy component click on that option. So you can copy the component in order to move the component you can use this option. If you want to move the components together in a group then there is an option of group. So select that option select the component that you want to move again right click and move the group. So all the move groups will be more together. In order to connect the components together we have the option of net available. So click on that option. So you can I will add one net here and I will add one net here. Now I will add the supply symbol again go to the component search for VCC. So there is an option of supply symbol. So add that option. So I will add the terminal here. So it will show you the warning of rename the segment click yes. Next I am going to add the component this VCC at the input of the seven net zero five and connect it to the by the wire. Similarly I am going to add the ground. Again go to the option add now search for the ground that is GND and add the supply symbol. So I will add here and one ground is here and one ground is for the LED and one ground is for the output. So next connect the ground together. So in this way you can connect the component. So this is the output terminal this is connected to the output this is the connection. Now if you want to connect this wire to this you can use the option of name. So click on that option I am going to give the name to this wire as out and click ok. Now also I am going to give the name to this wire as an out click on ok. So what is happening this is connected to this wire. If you want to see the what is the label of this wire go to the option label click on that option and you can click here. So it will show you the name of this wire also this will show you the name of this wire. So this is the total schematic diagram that we have drawn for the voltage regulator. In order to change the resistor name there is an option of info just click that option and click on the resistor. So give the value of say 330 ohm and click apply and ok. So now we have created the completed the circuit diagram. Now this IC has does not have name because that IC specification is 78xx. You can change the name of the IC just to go to the symbol information and click on that IC and give the name of that IC 7805 and apply ok. So the name of the IC will be changed. Now this is the schematic if you want to draw the PCB layout there is an option of board. So you can make a changes from schematic to the board click on that option it will show you it will provide you the warning create the board from schematic yes. So this is an board this is the layout where you are going to draw your PCB board these are the components we have to drag those components in this PCB environment. Let us change the dimension I will take the dimension like this. Now if you move your cursor over this point you can see the dimension here. Now let us first take the component that is this is the 7805 IC. So this is a region for the heat sink. So be careful that you should not add any component overlapping with this region. So this JP1 what is a JP1 let us see whether it is a input or output JP1 is a input you can change the name by information click on that and I will take it as a input and JP2 let us give the name as a output and again go to the board you can see that input and output present here. So I will if you want to rotate the component just to press the right click of your mouse I will add the input here then I will add the output here. Now this LED I will add the LED at this location and I will add the resistor here. Now there is an option of the raster nest you can see the option here. So what is that option it will take the optimum path for the two links. So you can see that the links are changed if you want if you rotate this you can see that it will take the optimum path which is present in between these two links. So I will rotate this component like this and I can optimize that. So your component should be arranged in such a way that it should have the minimum overlapping in between the wires. Now you have the two options for the routing you can do the routing automatic you can do the manual routing before this routing you have to make some changes in the design environment. You can go to the option of edit there are design rules click on that there is an option of sizes. So the minimum width of the track is 10 mil you have to change this to the 25 mil and click on apply ok. So I will show you first of the automatic routing and then I will show you the manual routing how to do the automatic routing there is an option of auto. So click on that option you can see the different options there but we do not have the tops available so I will click it not available and then click on ok. So what it will do it will automatically route the component so blue line represent the tracks and the green line represent the paths. Now how to do the manual routing I will show you that there is an option of route. So click on that option so this is the input click on that input it will show you the connecting link where you have to connect that so here is an ending link again go to this you can move your mouse move your mouse that track will move if you want to change the shape we do not need the 95 angle we need the 45 degree angle so just right click your mouse it will provide you the 45 degree angle again from this to this. Now from click here and the end will be at this stage so click here again this is the output so the end will be here. So this is the starting end and this is the ending end so click on this terminal go to this it will show you the ending path and just move your mouse over that path and click at the end so this is the another path. So we have observed that in this way we have created the we have created the layout manually if you want to increase the track size so this is a track and how to increase the track size you can go to the option of information click on that particular track and you can increase the width of the track by this option so in this way each track can be increased another option for the changing the track size is go to this option width and select this option if you click that particular track it will change the each and every track so in this way what we have done we have created the schematic and we have created the PCB board so these are the references for the session thank you.


I'm passionate about filmmaking because film is one of the most universal forms of communication and the most emotional impactive to what I'm a narrative filmmaker and when you have a story that you bring to life on a film, there's a certain timelessness about it that will endure and endure and endure, you know, whether it's 20 years from now or 100 years from now. And as a filmmaker, as a writer and director, I strive to tell stories not necessarily just for a commercial or an economic reason, but to tell a story that will impact and, you know, have effects for the community.


Hello everyone, welcome back. In this part of the video, we're going to use a Postgres SQL database system to store user information, basically, user login data so we can complete this session for this Node.js application. So in the previous video, we learned how to create sessions using a really simple process to login user. I'm here. I'm not updating anybody yet. I'm just testing that to show that it does work by logging in, and we're able to see the content that was hidden before when you log out. Those are hidden and then and so forth. OK, so this time we're going to process a little bit deeper by allowing user to register and save the username, email, password to a database. So first of all, in your Postgres database system over here, so I have a under my DB, I have a schema. Let's see, under the public, go to the tables. I have a table called users. Now, let me see, actually, how to set up on my simple users table here has four columns. So if I click on that, go to the, there should be an option. Let me see here, where is it? Maybe the columns. Oh, it should be here. This is another properties, OK? It's down here. I couldn't show my screen, but there's a properties. Again, I'm going to show you. I'm going to show you CSO. Let me make it a little bit smaller, OK? So under the users, click that and still can't see it. Interesting. OK, it may be a little bit smaller. OK, here we go. Click and then it's hidden down here, OK? At the very bottom, you will see it on your screen. See it down here? This is the properties right here, OK? Click on that one and you will see the screen here. I'll make it a little bigger now. That was weird. And so on my columns, I have four columns. The ID is the integer and I made that as the primary key. OK, so now only that in the code I make it, it's also identity. And then the others are just strings and an under character. Make sure you use the character varying so that it doesn't consume the entire 100 characters in various space and how you interpret it. And I made all those are not normal, OK? So that is, I think that is for much it. Yeah, so that is that. And then if I make the query, I put some example here. If I select from the user, there should be no data in there yet. If I answer one user, notice again, I'm just picking two. There's three fields. I ignore the ID because ID is an identity already. And so I'm just answer this formation to the user table. And then I should have that user added here. So if I run it again, I'm going to add the same user, but the ID would be updated to two as opposed to one, OK? It's managed by the system. And if you want to reset everything here, I'll use the Tronka table users. And if you want to restart that identity back to one again, just make sure you put restart identity in the end over here so that it will start at one. And that was if I don't use that, right? If I just put Tronka tables, usually on a SQL server, it would do this automatically for you, but Postgres doesn't. So if I select just that part, if I run that, my data should have been deleted, OK? If I add the data back, you're going to see that the ID starts at three, right? I want to start at one again. That's why you want to restart identity when you do that, OK? So reset that and then empty. If I reset, reenter, and then the user is again starting back at one, OK? So that is basically what that is for. All right, let's reset the whole thing. And then now let's go to Node.js and create a application. So over here, one thing I want to just quickly fix in here is that when we log in, OK, when we log in here, we want to just basically, the way I have it, it's fine. But I wanted to make it a little bit nicer so you can check the login user, OK? If not in the Postgres and the get over here. If the user will log in, I don't want to redirect back to the login. So basically, you can put something if the request that session that user is already logged in, then you can do something. If it's not logged in, then if they try to access that, I'm going to redirect them to the login page. Yeah, I'm going to render the login page. If they already logged in, then we're going to just basically redirect them to the home page. That's a really tiny piece of, but it's sometimes important, OK? So basically, I just do that. The same thing for the log out. I'm going to go here. I want to log out right here.  Otherwise, if it's not active, then you can redirect them to the login page. And here, if they are already active, turn them off. If they're not active, then it's kind of weird, but maybe I'll send them back to the index page. Get to the home page so that when they log out, you can take them to the home page, and the login, I guess, go to the login page. OK, so that is all I want to do for that piece. All right, so now, in our data over here, I'm going to create a folder called DB. Inside of DB, we create a file called user.js. Yeah, I'll call it that. OK, so in here, we're going to create the pool from the PG. Again, I'm going to grab that from the pool. So again, I don't think I installed that one yet. Let me go back to the terminal and make a copy of actually do another one. I want to install the PG tool and also install a library called bcrypt for encryption. So install those two there. And I think that should be good. OK, so back to the user. So I'll create that using the pool. You can also use the client. If you choose to do that, the difference is that a pool gives you a pool of clients as opposed to a single client. So I'm going to go ahead and create my DB connection. And this is for Postgres. So the user is going to be just Postgres in my case. The host is localhost. The database is called myDB. And then the password for my is called demo1. I think that's what I call. And then the port number is 5, 4, 3, 2. So that is the default setup for Postgres. And then I'm going to have a pool object set to the instantiation of the pool. And you pass in that DB to connect. And then you basically export this out. Explore the pool. So that is a simple setup for that. Make sure it's plural here. So export that out. And then in the index, we're going to import it. So I'm going to put it way on the top. So let's put it way up here. I'm going to import the user. I'll call it user but a capital U for an object. And we're going to get that from the DB slash user. So that is our user database tool. So now when we log in right here in the post log in, we want to access the database and get the data from the database. So you do a query. So this time, I'm using a fake object called user here. But now we're going to get directly data from the user. So not only that, when we log in, we're going to get the data from the view. So if you look at the form that we have, like the log in, we have the username and the password. And these are the data we're going to use to compare against the one in the database. So that means that I'm not going to do this way. I'm going to do something like console user name. It's useful to the body of the user name coming from the form. So whatever your form is called, field is called use that. In other words, in your view and the login. So notice I have the field for username. I call it username and then I call it password. So we submit this form. It's going to go to login to the post, right? So that's why you're going to go to the login in the post. And I get that username and then also get the password from the repressed body password. OK, so I got that there. Now I need to then check against the database. And that is coming from the user, right? User re-imported the query function. We're passing here the query. You can put it here if you want to put it outside here. That's fine too. Some people like to do this. Like query is equal to select everything from the users where the lower case of username because it is case sensitive and post-grasp unlike SQL Server. So you want to cast username for lower case and also check the username also in lower case as well. Otherwise it won't work, right? Equal to $1, right? Like that. You can see how that was done. And then that is full security reason, OK? So the username is equal to the username here, right? We're going to pass that directly to the query here. And then the second part is the keys matching the 1, 2, or 3, however you want. There's only one attribute. So here is going to be the username. Again, to lower, OK? To lower. That is the lower case. I think that was called lower case, OK? So username here to lower case matches the lower case here. And then we have the callback here. So we have the error and then we have the results. That's spelled correctly. Again, the call result and call what you want doesn't matter. And then in here is what we do this session. So basically all of these are going to go inside here eventually, OK? So what is the first thing we do? We check for the error. So if there's any error, if the error is there, then we're going to throw the error. Usually you'll catch it, but for now we're just going to throw the error, OK? So if there's an error, then none of the code below will run. So now then that means if the user does exist, right? Then we are good. Otherwise, we have to again redirect the user back to the form again and say, hey, there's no user, right? So we can check the users. But first I'm going to create a user becoming from the results.row, OK? Row of 0. Basically, the row is an array, right? It looks like this array. And then you have like that, right? So I want just the object out of this. If there's one record, you have two records and then so on like that, right? So I want just the first record. This should only be one, hopefully. And then I'm going to extract that object assigned that to the user so I don't need the array part, OK? That's what I'm doing here. So if the object is not empty, if there is an object, then we can go ahead and then process this information. Otherwise, hey, there is no information, OK? So you can check here. So if the user does exist and then if it does, then we also want to check the password. If the user that password, this is from the database, right? The user from the password, this matches our password from the form that is true. Then we have authenticated a user and therefore all of these will go in here, OK? Go in there. If the user doesn't exist or if the password do not match, then we go to the else clause. Now that we do, you can put some messages or in our case, it's going to redirect back to the login page again. So again, basically, click the form intro again and so forth. OK. I don't know what I want to try first or see what happens, OK? Again, the user here is we are sending an entire session of the user to that user. And then the user name here is extracting that only from the object from the database. So let's save this and see what happens on our web page. So here we go. I'm going to log in. I don't have any data. So it should reload the login page because it doesn't match. You can see, I don't know if it's working or not. Oh, it has some error. And when that happens, that means there's an error in your code. OK, that means you want to go check in the terminal and see what is telling you over here. It says from, OK, from it's not, oh, typo, sorry, star, not end. So let's try again and run the page one more time. Go back and then refresh the page, log in. Log in. Again, just some gibberish. Boom. You can see it be directing back to log in again and again because of that. So let's say that I'm in my database. I should probably go back and try again. So let's say I'm going to insert this user to the database. And just to confirm that it is in there, here we go. User is called me. Password is 123. OK, so now let's go and see if this works. So I put here me and lowercase. It doesn't matter, right? 123. And boom. So you can see I'm in log in. Log in now I can see the content because it has authenticated my user log in. And I can see that information so far. So good, yeah? All right, so good. That's what we expect to get from that. So that's working beautifully. Now the next thing is the register. OK, so let's do something kind of similar. But in the register page down here when we add the user. OK, so when you register, the first thing, what do we do? We have the username, email, and the password. We have two passwords here. So the first thing you do is you make sure that both passwords are matched, right? If they do match, then go ahead and proceed with the registration. Otherwise, you just keep sending them a message saying, hey, the non-log correct. OK, so that is the first thing I want to do. Put here, I'll say if we request that body, that password, that's the first password is not equal, strictly equal to, the password of password two, right? That's word two. But that's not true. Then I'm going to redirect back to the log in registration page. So again, basically show the form again. OK, otherwise, if that is good to go, then we proceed with the registration page. So now, now the data coming from the body is already an object, but it has two password fields. I just want the first three fields, right? So I'm going to create a new password. I'm going to add the user here. I want to get the username. I'm going to direct that body, that username, OK? The email is when I get the email out of that. And then just one password. Once they match, then we can choose either one. I'll just choose the first one. But that is my object. I'm going to pass this object to my query. So again, the query, you can do query here again. If it's difficult to see, I'm going to insert into the users and I'm passing here the username only like we did in the example and Postgres username, the email and the password values going to be one, two, three, right? That is all I'm going to use for this. And then in the query from the user object to the query just above, you pass in the query and then this array of strings to match that. And then we have the error and then the results. So it's like the other one, OK? So what goes in here? The first value is the user names. That is the username here. So I'm going to put username.username. I'm going to the user object, OK? So user.username, user.email, and so forth here. User.email and user.password, OK? And if it's successful, you get the result. Otherwise, if there's an error, OK? If there are no errors, then go ahead and proceed as follows. So we're going to basically what I do here at the post. You can do one, two things. You can redirect the user back to the login page. They can log in with a new credential or you can assign, set up the login right away. So I'm going to choose to just sign the user in automatically, OK, that is by resetting the request that session, that user to the user, which is the one we just create up here, right? If it's good, then that is good. The app.locals.username, remember? Excuse me. Coming from the user.username. And then also set the app.locals.login to true, right? Same as the login above. And then finally, I'm going to redirect the user. So this line here actually goes right in here, OK? To the home page. And I think that's all we need for this one, OK? So again, the logic. If the password or the body of the two passwords do not match, then we keep showing that form. Once they are matched, then we get the username, email, and then the password, build an object called user. And then we insert into the table, using actually users, what I call a user, I think it's plural. The three fields, the first field is the ID, which is identity. And then we pass those three data set over here. We call the query function of the user object. And then we pass in the three data here, check the result. And then here, again, here, the result here, I'm not using that, but you can use it for other reasons. And then once they are good, we set the user session user, they use the name and then the log into truth, and then we direct back to the home page, OK? So let's see if this thing actually works. Go to the browser. Now we are going to register.  And the password just say, I'll make it so that it's not matched, OK? So put 1, 2, 1, 2, 1, 2. I'll put here so you can see it. Usually you make this hidden as well, OK? So 1, 2, 1, 2, 1, 2, 1, 3, OK? It doesn't match. So as you can see, keep loading that same form again and again, OK?  And then 1, 2, 1, 2, and then 1, 2, 1, 2. And then boom, OK? So it looks good. Now we are logged in automatically. That's why I'm able to see all this information here, OK? If we can verify in the database as well, just to make sure it is in there. So we run this select statement. And boom. So you can see we're now logged in. Password is 1, 2, 1, 2. Perfect, right? So great. That is good. Now, and that is basically all we need for this one. The last thing I want to cover here is basically we want to encrypt the passwords, OK? So you can see the password or just 1, 2, 3. Show you again. You can see that here. You want to encrypt this password. You can see it. So if anybody steals your database, at least they can't map the site for your password, OK? So that is by going through the Bcrypt library I had to install earlier in the video. So on the very top, we're going to import that library called Bcrypt. It's for encryption purposes. Now Bcrypt has two approaches, either the asynchronous approach or the synchronous approach. The preferred approach is the asynchronous, OK? But that's a little bit harder to do and to understand. So in our example, I'll just use the synchronous option, OK? And you can read one about it on the NPS, NPM Bcrypt site. But the Bcrypt has two functions. So I want to go right down here when you insert the data. So not to log in, we'll do that a little bit later. When I add the data, we'll do register here, OK? So before you register, when you insert to the table, you want to hash your password first, encrypt that first. And you do that by using a function called, I think, what's it called, hash or something? Yeah, let's see if it's called hash, yeah. By the way, so before I do that, I want to hash the password. I compare the password in the form. They're good to go. Then I build my use object. And in this password, I'm going to hash it right here, OK? So you use the Bcrypt function, Bcrypt dot. And you can have like compare and the compare sync, OK? Compare, this is the asynchronous. The sync is the synchronous. When we compare later, we log in, right? So we're going to hash it using the hash and hash sync. So again, the hash is the asynchronous. Hash is the synchronous. So our data is pretty small, so it doesn't really matter. But if you build a really big site, then you want to use the asynchronous. So in this case, I'm going to use the hash sync. And this one here takes two parameters. The first is the data you want to hash. And then the second is called a salt or rounds, OK? The salt here, it's just a number that gets multiplied to like the end, I think, two or something to the power of whatever the number is. That is the make it so that it's so hard, so difficult to hack to decipher, basically. So this is the plain text, text, password. And then a salt number will be anywhere from like 1, 2, like 10, 12, 13, 14, OK? The bigger the number, the harder it is to guess. But also the more time consuming for the system to hash its password. So 10 is a pretty good number. You know, you don't want to go any larger than that, unless you do like very sensitive data. If you work with like a financial institution or the stock market or something, then yeah, you want to make it bigger. But again, that takes a lot of CPU power, OK? So 10 is pretty standard, pretty good. So make that hash at the salt of 10, OK? So if the 10 here is an integer number, usually you put a 10 here, you can create a variable called salt equals 10, put it here, OK? So I'm encrypting that to that word. Now to unhash a bag, you have to go to the same program to unhash it, OK? If you use a different hash number, a different salt, I mean, different hash function is not going to work. So basically that's all I'm doing. And it's very simple like that. Now we log in up here, OK? When we compare the passwords, this is the hash password coming from the database. This is the regular password. So we're not going to do it this way. Instead, we're going to use a function called compare sync. So I'm going to just turn this off for now. Maybe copy as you can see, compare. And we'll turn this off. So I'm going to do this way. If the user is true, then this part here, we're going to use the becrypt compare sync, OK? Takes two passwords, right? The first one is the data. This is the plain password. The second is the encrypted password, OK? So the first is just to call it rec.body.password. Well, actually, you just call password. I think we've already kind of struck out, right? It's this password here. The second is the hash password. It's coming from the user.password. I mean that the data from the user database has already been hashed. Otherwise, it won't work. So in our example, it should not work, OK? So let's say if I save this, go back to the login page. Let's log out, right? If I log in using U, they call it 1, 2, 1, 2, right? So you notice that it will match anymore because I'm calling a hashing and then the password is not hashed, right? So again, if I put me and then put here 1, 2, I forget what it was, but OK, so that doesn't work. So now let's go ahead and register again with a different user. We call it day and then day at t.com. Password again, it's going to be 1, 2, 1, 2, OK, 1, 2, 1, 2. I'm going to hash it now. Register, so they match perfectly fine. Let's check the database over here. I'm going to check it again. You will see that now the password for day is now hash. You can see that you cannot decipher this anymore, right? So the only way to decipher it back, is to unhash it using the bcrypt function, OK? So it was 1, 2, 1, 2, like this one, just so you know. OK, so I'm going to log out, OK? I'm going to put day. Password is 1, 2, 1, 2. I'm just going to put some numbers. It doesn't match in purpose, right? No match, good. So I'll put a day and then put 1, 2, 1, 2, and boom, right? So that's how you do it using hash, OK? So the last thing I want to do is to indicate how can a user tell their log in here. Of course, you can tell by these changes in the menu here, but a nice way is to have a little message here to show the user that they're logged in. So basically adding a welcome message here or some sort, that will help a lot. So back in here in the code, I'm going to add in the headers page up here, right under the UL, outside I'm going to add a span tag. Put here hello, and then we'll put here a username, right? I'm going to get a username from the same idea using the login appear, OK? And I'll give it an idea from the user name. You call it hello, hello message, OK? And so we can kind of stamp this. So that ended the index.js file where we created our user login. So here it is, right? I created one already. I call it user is equal to guest, OK? And then once you log in, I want to change the username to the user, that username, OK? So you add that here. The login is true. You update the username to that. When you log in, when you log out, it should also change back to guest, right? And then to false here. So now if I go back to the browser and refresh the page, you see this message hello guest here because I'm not login. Let's go and log in here. We have to use the hash function now. So it's only they will work, OK? So I put they here and I will put here one, two, one, two, and boom, so you can see hello, they, right? So if I go here, you see that it's logged in. Try to log out and change it back to guest, OK? So that is the idea. I mean, you make it nice so you can style this, changing the CSS to make it on the right side over here, maybe. In my case, it's very simple fix, I believe, and I'll just do that.  The hello message. I want to style it, make this maybe a line block and then move this on the right side. So in my CSS over here, public CSS, somewhere right here, it's OK. Random URL. But that here is a pound sign. And I just make it margin left, maybe 10 pixels wide. And then the URL will be the display over here to inline block, OK? So that will put it right next to each other. Change a little thing here. And you can style it how you like it, but that's good enough for me. And refresh it. And there we go. It's on the right side. You can make it right, justify two. But again, log in. And then one, two, one, two, and boom. And here we go. And now they are good to go. So that's how you would use sessions and how you hash data to securely, you know, secure passwords into the database. Of course, you can hash anything you want, not just the data. You can hash email, you know, sensitive data like financial data or social security numbers and credit cards and all this stuff, OK? So, well, thank you so much. Any questions, please let me know. Thank you.


Wel, rwy'n meddwl am y TV, mae'n 3 o'n gwahanol yw Everton 1, Wolves 2 oed yn gweithio y blws yn gweithio'r gwahanol yn y gwasb antynoriol yn ydych chi'n gweithio'r gweithio'r gweithio. Gweithio'n gwahanol, rwy'n meddwl, mae'n gweithio'n meddwl. Rwy'n meddwl, mae'n meddwl i'n meddwl i'n meddwl i'r ffordd yw'r gwahanol. Mae'n meddwl, Wolves wedi cael ei ffordd yn gweithio'r gweithio'r gweithio'r gweithio. byddwn. Yn ymchwil, mae'r ffordd. Mae'r ffordd yn ymddangos, rydyn ni'n gweithio'n gweithio, a mae'n gwneud hynny. Mae'r ydych chi'n meddwl i'r newid diwylliannol yma, fel y cyfnod o'r ffordd, o'n ei eifrif i'r cyfryd gyda'r CV, yn cyfrifio, ac mae genna'n ei ffordd a'u'r hynny'n gweithio'n gweithio'n gweithio… I must have been in a different game. Or I've just seen it, the game totally different and people I'm sure will potentially will tell me I'm wrong in that and some may tell me we did play well. I didn't feel like that, I thought we were awful. I thought we started the game okay. First 20 minutes managed it quite well. Got the lead and didn't go after them. Good teams or decent teams go after teams when they're on the rocks. Wolves were on the ropes. The report side as well themselves. They were bottom of the league going into this or chose the report side. The team that doesn't score goals and we've given them two. But fair play to them, they broke with papers to win the game and got the rewards for doing it. We didn't really break with any kind of papers with that. We seemed to do other bits of our game okay and then we get to us the final third and we just look clueless. We look clueless. There was a couple of occasions when we did okay and one of them Ghana created a perfect chance for Anthony Gordon to score it. I don't know how he's missed it to be honest. But Ghana done very well to create that and we had another opportunity where we pressed and forced Neil Mawpai into having a chance and he's hit it right down the throat of the keeper book. We don't create a lot. We don't know what we're doing when we have the ball. I see other teams who seem to know exactly what they're doing when they break. It might be we just don't have the players. It might be coaching as well. Both certainly need to improve because we just look like we have not got a clue. We were in the 90 second minute and Tarkovski and Godfrey are just passing it between themselves on the half-way line with no idea what to do with the ball. We don't move teams around. It's not like we're looking to carve teams open. We've been better just knocking it into the box and trying to play second balls because we're not capable of creating anything round the side. Certainly how slow we move the ball. We don't do anything quickly, which means teams are never not set when we get into areas where we can put it in. There needs to be a huge upgrade in either the players or a huge upgrade in how we coach in that final third because for me it looks like it doesn't do anywhere on it. The second thing is basically the reality of the situation. We've won three games of football on its boxing day. Last season I just thought it was one of those seasons. We had a manatee we didn't like. We had injuries, things weren't really going our way. We were playing poorly. I never thought I would see this again this season. We scraped our survival, staying in the Premier League by the skin of our teeth. We all knew everybody in the football club knew what needed to improve. We sold the ladw, the only one we could really rely on to get us goals. Our other strengths and forwards had a year of injuries, more than a year of injuries and we haven't been able to heal that and solve that issue. We let the transfer window in the summer pass without getting goals. We spent money, we bought some decent players in. Tarkovsky, Cody, Onana, James Garner, we brought a couple of other players in. But we didn't bring in what we needed. We needed goals. The two attacking players we brought in haven't got a history of scoring lots of goals. They put them under pressure and it makes us very vulnerable. I just look and think where we are right now. We're in huge trouble. We've scored 12 goals in 16 games this season. We can't keep clean sheets and we don't create things like I've just spoken at the first point. We are in the thick of the brand stuff right now and I'm not sure how we get out of it because last season I was always confident because I thought we've obviously got the chance to get goals and Dom will get goals. We'll be okay if we can get a bit of a pattern going and stuff, but we don't have that this season. Anthony Gordon's our top scorer with three goals. We've got a goal from a corner today off of Yeri Mina, but other players, Anthony Gordon's had a guilt edged opportunity and the Mawpies had the same.   He's a child in football in terms of games played at any kind of level. We're throwing him on and going go on. Even though I do believe he should have been brought on 15 minutes earlier than the man that he did anyway. It is a bit of a mess and we are in real trouble at the moment and unless things change quickly it's going to be the same again. You fear that this year might not be as good outcome as what last season was for us so it's a scary situation and one I prayed that we would not be in and today has left me quite worried now. I'm in the look of it. I just think those players don't have any idea when we cross the halfway line and they have to improve and that's working hard on the training ground. Then the coaching staff have got to be better. They've got to come up with ways out of attack. If they can't produce players you can score regular goals or improve that. You've got to do repetition and you've got to play the percentages. You've got to get balls into the box quicker. You've got to get shots away quicker. How else are we going to score a goal so that has all got to improve. Let's just quickly try to finish a bit on a positive if there is any and I'm not convinced there is to take out of today other than it was good to see Ben Goffrey back in the back from injury. He probably could have done better for the winner once the ball comes in but it was good to see him fit in back again so he'll make a difference to the squad. It was good to see Tom Cannon come on and the kid making his first Premier League appearance at Godderson Park. Like I said before I think he should have come on with 20 minutes to go. No, no, six or seven. We should have been putting our intent down to win the game but it was good to see him. I think he deserves some reward for how well he's done of late and who knows had he been on a bit earlier. Something like the drop turn but that's the only real positive. I can think out of it. I thought he'd disaggregated well a given man of the match. Other players were way, way, way below. There you go, it's Christmas and that is a depressing result.  But there you go, go and enjoy your Boxing Day and take a few days off from heaven. We'll do it all again at Man City at the weekend. Thanks for watching. See you later.