On today's Visual Studio Toolbox, it's part two of our Entity Framework Core Series. Phil Jepixi shows change tracking and also explains an error we introduced in part one when we changed property names in the scaffolded code. Hi, welcome to Visual Studio Toolbox. I'm your host, Robert Green, and joining me is Phil Jepixi. Hey, Phil. Hey, Robert. This is part two of our multi-part series on using Entity Framework Core and in part one, we started with an existing SQL Server Database, and then Phil ran some scaffolding code. It was one line of code which created classes for each of the tables and then took account of all of the relationships and all of the underlying goodness that was inside the database. Today, we're going to actually now do stuff with that database, and we're going to see how we can start working with the actual data in an application. Is that a pretty good summary? It's pretty good summary. Perfect. All right. We talked about dependency injection briefly on the last episode, and I want to just show it in action of how we configure a DB context. The DB context itself doesn't know its connection string, doesn't have any knowledge of what provider to use. We have to tell it that. Again, the DB context is the connection between your app and the actual database, essentially. The DB context is, I don't want to use the word connection because it's overloaded here. The DB context is the master control program of EF Core. It's the general contractor. It's the thing that you hired in the project of working with the data. Correct. The DB context we have to configure. I like that one. You feel free to use it in future training courses. The DB context factory has to be configured. We have to give it a connection string. We also have to tell what database provider to use. In these examples, we're using SQL Server, but there's also an in-memory database, which you can use for things like testing. You can set up Oracle, even Cosmos DB provider. Very simply, I have created a context factory. I'm using it to create in code. It's really designed for the command line interface. The one line of code that we ran from the command line to create all these objects, when we do migrations going the other way, this is how we tell entity framework core what to connect to. It's really only meant to be used in design, but we're using it in code for simplicity. But to show you how it works, we have a context options builder. We assign a connection string, and we tell it what database provider we want to use. We're going to use SQL Server, passing any connection string, and then we'll cover these in greater detail in later episodes. But what I'm doing here is enabling a retry logic. If the Internet's glitchy, it will retry up to five times, and then I create a new instance of the DB context. Now, here's a question before we move on. Go back to that. In real world, how do you handle things like connection strings? Obviously, you shouldn't be putting this type of information in your source code, and then checking it into your repository. Correct. What do you like to use? Let me just clarify that a little bit. I'm okay checking this into my repository because this is not a production connection string, it's only used in development because it's the design time factory. With ASP.NET Core, there's a very rich configuration ecosystem where based on the environment you're running in, development staging, production, made up names, whatever, it'll load a different configuration file. For example, the app settings.production.json file that would have all the production values in it, we don't ever have access to with developers. That's handled by the IT pros. All they have to do is put that file on the server, we never see it, and it's not checked into source control. Now, that's one way to do it. You can use Azure Key Vault, there's Azure Active Directory, there's various other ways to get that production information into your app. But from a entity framework core perspective, it never sees the production connection string. Prior versions of entity framework, you had to have it in the app.config file, which when every developer had access to it, as well as source control. Does that answer your question? We did an episode on Azure Key Vault a while ago. If you're doing a desktop app, WPF or UWP or something, then that would be a recommendation you would, from you? Yeah, absolutely. When we do WPF, we use WPF for child floor automation systems. Then we use EF core with WPF as our data access layer. The connection string is actually coming from a service and being injected into the application, so it's not in the config file. Okay, perfect. Thanks. Right. Again, I'm changing how time factory is supposed to be used. I just want to clarify that because somebody is going to watch us and say, it's only for design and you're right. It's for design and demo. Down here, I have new context factory create DB context. It just gives me one. It is a factory, so I'm using it. But again, I just want to stress, it's meant for design time and not for production like I'm doing. We should be injecting an information in, but I wanted to keep everything simple. What I want to talk about now in detail is to change tracker. This is really the business value that I see the most from using an ORM in your application. If we're not using an ORM and we're pulling data back, which we can do, we're at store procedures, you can use commands, connections, data adapters. Now you have data in your application, and somebody works with that data. But now we have to figure out how to persist those changes. So I have to track in my application what fields changed, what records were added, what records were deleted, and I'm doing all of that plumbing manually. Then when I want to save that, I have to write all that SQL very specific for those fields, for those objects to make sure I'm saving the right data. Is it complex? No, not at all. We can all do that. Is it a pain in the butt? Absolutely. So it's plumbing. It's plumbing. It's time consuming. So let's talk about the change tracker. When we pull something from the database, and we'll talk about simple queries, probably in a later episode, depending on how far we get, we are loading it into the DB set as we explored on the last episode. When we pull it into the DB set, it gets added to the change tracker. What the change tracker then does is basically wrap a proxy around that and say, okay, I'm going to track this particular instance. So if you change a value, it will then know what the current value is of that object, but it also knows what the original value was. So what was the value when it got loaded into the DB set? If you add a new object, it will then say, hey, this object has been added. If you delete it, it's been removed, and it tracks all that for you. This is where the DB context comes back into play as the master control program or the general contractor to use your analogy. So if I use your analogy, then I have to say, and that's Robert Green's analogy every time. No, I give you permission to use it unattributed. Oh, okay. So it's a nice open source site. It's your payment for being on the show. So the general contractor then says, you want to, as a developer, we call save changes and we'll talk about the save changes method in later episodes. But save changes is the trigger point that says to the DB context, let's figure out what's going on and let's persist this data. So the change tracker then reports to the DB context, here are all the objects I'm tracking, here are the ones that have changed, and here's what's changed on them. So then the DB context takes this information and talks to the database provider in our example to SQL server provider and then creates the SQL necessary to persist that data to the database. Now that's all done for us automatically. So now we have all these changes wrapped up in a SQL call to save changes method by default is transactional. So I add three records, I delete two others and I change six, and it can be across any table within the DB context, I call save changes. What happens is a transaction gets opened, the SQL gets executed to do all those things that we've asked it to do. It checks to make sure that everything worked. If anything failed, then it will roll back the entire transaction, and if everything worked, it will commit to transaction, and then any server-side properties such as row version or ID, if it's a sequence, will then get populated on those objects in the change tracker in the DB sets, and now we have an updated set of values and our in-memory objects matching those database table records is updated to match. So there's a lot of heavy lifting going on that we don't have to think about. Right. Does that make sense? Yeah. Okay. So if we look at just some very simple examples of how the change tracker works. So if I create a new instance of a person record, and I'm not creating all the fields, it doesn't matter, and then I can check the state of that object, and we can run this, but I'm not going to waste the time running it. What it will come back is, actually, you know what? This is easy to run, but it will come back and say, the entity state, let's run this one. Yeah, let's run this. All right. Yeah, we can run this. This is easy enough to run. So let me put a breakpoint here, and then run this, and I'm calling the run samples. All right. So I have this new person. I'm getting this state of this. This is an interesting syntax because we haven't added it to a DB set yet, but I can say context, which is my DB context, entry, and it gets me to enter the entry, even though it's not in the actual DB set at this time. So if we want to, this is because Robert had me change the names. That's right. Awesome sauce. You didn't change it to navigation, right? No, I didn't. All right. So all this fall, you didn't change it everywhere? Well, I copied some code in as the problem. You can change it back if you want. No, I see what the problem is. This is actually good. Now that I see what it's doing, we can run with this error. Because what we did was, we changed the names, we broke it, and I think this would be important to point out because other people are going to run into this if they follow along with the video. Okay. So I'm okay with, I know how to fix this. Yeah, let's run this. Okay. And interestingly enough, easy for me to say, we're going to run into a problem here, but we'll explain what that problem is and it's because you had me change the names in the last episode, but it's an important one to fix. Your code doesn't work, it's my fault. It absolutely, right? But I can use the general contract to determine unless you're just going to take that back for me. No way. So we're going to run into an issue when we try and read this entry. And the exception that we're getting says the inverse property attribute is invalid. Now what happened was, and I should have picked up on this at the time, we were in the person object, and Robert and I both agreed that we didn't like the naming convention and we changed business entity to business entity navigation, and we use business entity contacts instead of business entity contact. Right. Because business entity contact or customer email address is a collection, we said those should be pluraled. Right. Or pluralized. Perfect. Here's the biggest problem, one of the biggest problems with the way to scaffolding works. These inverse properties have to be strings, but the problem is that their magic strings in this point and we're not using the name of attribute. So if we go to the business entity, we have to figure out which one it is. So you know what I'm going to do? I'm going to change them back, and I'm going to show you how that you will want to fix them in the future because I don't want to take the time on the video, but instead of doing like here, they use the name of for the property. All of these should be the name of. So this should be name of business entity dot business entity navigation or business entity dot person. The reason they don't do that is because of the name conflict here, which we talked about in the last episode, but I'm going to revert it so we can get the samples working. But I do want to point out that when you change the names, it has to be turtles all the way down. Otherwise, you're going to run into that problem when it tries to build that model. Does that make sense? Like we're referring to properties on other objects, but we changed this name. So I'd have to go through and everywhere there's a business entity property referred to as a string and have to change it to business entity navigation. That would just be a lot of work that, yes, it's important to do, but not for this show. All right. So let's run it. Now that we've reverted, yeah, we've broken all kinds of other things. Awesome. This is the scaffolding code. Yeah, this is scaffolding code because I used the built-in rename function. Yeah. But when I just renamed them back, I didn't use the built-in rename function. Okay. So that's a good learn. If you're going to change the code, the scaffolding built, be careful. Yeah. I recommend cleaning it up if you're going to continue using the scaffolding. But what a lot of people will do is they'll start with the scaffolding and then move to more of a code-centric approach from there moving forward. Let's make sure that we haven't broken it again. Here is the advantage of having the scaffolding in place. I can go back to my command prompt here, and I can nuke everything that I have and redo it again. Okay. So I actually have to do dash-force. Maybe it's dash-force. So we have just overwritten all of that screw-in-with-the-rename stuff that we did in the last episode. It seemed like such a good idea at the time. It is a good idea, just not when you have a 20-minute episode. Okay. All right. So now we're going to get the entity entry, which is what an object in the DB context land is referred to, and we're going to get this state. If I just run this to the end, the first state is detached. It's not in a DB set. We haven't added it in. Then when we add it in, and let me just get to the code to match up here. So here we have our new object. It's not in a DB set. It is in a detached state. Okay. When we do a simple query and we say, get me the data from the database, and then I can line these up like this. So if I pull one back, it's unchanged. If I add it, it's added. If I remove it, it's deleted. Then if I change a property, it's modified. Then when I change a property and I get a modified result, I can actually go through and on that entity entry, I can get the properties that are modified and then display the original property value as well as the current value. So this change tracking does it a couple of things. The goodness is as we've discussed, it's keeping track of everything that we want to have changed. The badness is that it's keeping track of everything that we want to have changed. What I mean by that is if you have an item that has 200 properties, and we can discuss whether or not that's a good idea to have a class of 200 properties, but what life happens. Now you start changing those. Well, now we have two copies of each of the properties that have been changed in memory. If you have thousands of these in memory, then we can argue whether or not you should have thousands of things in memory, and I would say you should. But now we are adding some memory pressure. So we can argue whether or not you should have a thousand items in memory, and I would say you shouldn't. But again, life happens. But now we can possibly be creating memory pressure. That memory pressure is because we have all this change tracking going on. So I want to point out that we can turn off change tracking when we do a query. So let's go back to where I am getting a simple query. I'm doing a find which we'll talk about probably in the next episode, but let's do this a little differently, and we'll say var person to equals my instance of the DB context, my DB set which is called person, and I'm going to say where x lambda x. And this is just a link. Business entity ID equals five, and then I'm going to say as no tracking. Then I can actually also do first or default. I'm not going to do that, it doesn't matter for this demo. What this query here does, if I would make it a comparison and not an assignment, this then says get this thing back, but don't add it to the change tracker. We're not going to update it. So it's in your DB set, but the change tracker says I don't care what you do. I am never going to report this back to the DB context you have changed it. Okay. So that'd be something you might do if you're pulling down records to display in a list or something, or if it's just read-only data. So if you have a really high volume website, let's say it's an MVC style application, what I see people doing is that on all of the gets, they will pull the data back as no tracking because you can't update from a get, you're just displaying it on the page. Then on the post, they'll actually, and on all of the gets, they're only displaying the data and actually do an update. So in the get methods, HTTP get version of an action method, they'll use as no tracking to pull back with no tracking information. Then on the post where they're actually updating the data, they'll use entity framework core with the change tracker to get those updates. Now we're not talking about a huge amount of performance differences. But if you're a Stack Overflow, for example, when you're getting thousands of requests per hour, maybe even per minute, then it matters. If this is your internal line of business app where you're processing legal cases with your 50-person lock firm, it's probably not going to make that much of a difference. Okay. There's one other thing I want to talk about before we close off this episode, and that are query types or items that do not have a primary key. So in prior versions of EF Core, we had a DB query type. What we have now is a specialized DB set where we tell it and it doesn't have a primary key, and we don't have to call as no tracking on it, it automatically knows not to add it to the change tracker. This is useful for views, for store procedures or for, as we'll see in a later episode, doing a from SQL call to pullback data where the link may be difficult to write, but you want to do these joins. All right. So I think it's a good place to stop on this episode. Absolutely. In the next episode, we will start querying the data. Yeah. Yeah. So next episode, we'll talk about querying and about projections about how to do joins, filtering, paging, sorting, all that fun and excitement. Cool. So we will see you next time on Visual Studio Toolbox.


Hey guys, it's Nate, aka the Foot Accountant. Welcome back to the channel. It's Saturday. You guys all know what the big topic is right now in FIFA Ultimate Team and that is the icon SBCs and the plethora of icon SBCs, the prime icon SBCs that we got yesterday. So I'm going to talk about this today. I'm not going to sit here and talk about how I feel like these SBCs were wrongfully put out, how I feel about these cards not being the icon moments SBCs. I don't want to focus on all that and get all negative and everything like that. We all have had our time to be negative and to have our time to think about these and talk about these and express how we feel. I'm going to move on and we're going to talk about what happened on the market today because regardless of whether we're a fan of these or not, the market is moving and hopefully we can just find some positivity in that and not have to be too too worried about the SBCs that we got in the store. But just my real quick my thoughts on that I am disappointed. I was really hoping to use some of these prime icon moments players in my team at the end of the year. I'm sure a lot of you guys were too but unfortunately we are just at a point now in the game where they feel like they can't release the SBCs but we got the prime versions of a lot of those cards today of the top top tier cards which I think was Eusebio, Vieira, Rinaldiño and Ronaldo. So basically this is the second Friday in a row now that they have just dropped a massive bomb of SBCs on us like six icons each Friday that they have just dropped on us here and into the game which is honestly it's crazy. It's crazy. I don't think any of us would have ever expected this is how the way that they would have dropped the icon SBCs. Now there's plenty of icon SBCs that still could come out or that haven't got SBCs yet whether they're moments cards whether they are other primes but they said that they're done for the year for icon SBCs after dropping this big bomb today. So that makes me think that they just wanted to get them all out there get them all out of the way and hopefully they have some good content coming for us because that leaves a big hole for the rest of the year since those icons are not going to be coming out but we need to take a look at the market and what happened today because based on what I'm seeing right here I can tell you guys two things a regardless of how expensive these SBCs are and we're going to look in a second they're very expensive people are doing them people are doing this SBC people are doing the player of the month Mane SBC and I don't even want to go look and see what the cheapest players by rating are we're going to go do it anyway I have not look at this all day and of course they are just through the roof 86s are at 27 28k 87s are at 35k 88s are almost at 50 89s you know what this is what I want to see how much are some of those 90 rated cards how much is luka madritch how much is luka madritch is 91 rated I bet this card's like oh my goodness 100k is he 100k he's over 100k wow that is crazy ridiculous they have really really gone and done it with these SBCs man oh we got a sale what's the sale nice another d maria dude I'm controlling this d maria market I love flipping this card I absolutely love flipping this d maria card side note anyway but back to this the high rated goals are just so freaking high and it's because of everybody seeing these SBCs and if you're a casual today or yesterday and you see these SBCs come out you're like man this is sick I'm going to go complete this SBC because it's something that I've wanted to do all year okay we're not going to get the prime icon moments version but I've wanted to get you sebio all year I've wanted to get a hullet SBC I've wanted to get a r9 r10 the era whatever whoever it was a lot of people have been basing their entire foot clubs on knowing that these SBCs were going to come out because it happened last year so it's going to happen this year right well it happened and they are very very very expensive run out run all though run all though 5.51 million coins for his SBC let's go take a gander on the market what is r9 run all though the prime version 96 rated 5.15 million coins it's 400k cheaper to buy the card yourself than it is to actually do the SBC and I think this is again why a lot of people are mad just because the SBC price is actually more expensive than some of these cards are on the market what is Hullet Hullets 4.2 million his prime card has been under 4 million multiple times this year what is Ronaldinho 2.85 that's about even with his cards price Patrick Vieira 2.43 his prime card is like 2.2 you sebio 3.04 his card I missed one today on a snipe for 2.56 so it's really ridiculous how people feel like they have to sell their tradable version of the card to go do the SBC just because you're getting packs back is that really why people are doing that just because you're getting packs back in a in a portion or a time FIFA where there are no special cards in packs it's just all we're all people are doing right now is SBCs if you if you look at all the content that's been released lately it has not been pack based it's been SBC based and basically this is again just one way how EA can suck a lot of coins before before team of the season comes in the next couple of weeks and with all these SBCs coming out it really makes me feel like we're going to see team of the season in the next two weeks or so just it kind of makes sense I don't know why I can't click on any of these SBCs right now which is unfortunate because I want to go into the Mane SBC we'll back out and come back in but let's take a look at this Mane SBC because actually this SBC isn't too bad if you're a Liverpool fan if you're somebody who wants to do wants to card collect Liverpool players this SBC honestly isn't too terribly bad it's just coming at kind of a poor time to be honest with you because if you look at this SBC price to what is it 380,000 coins if we at some point get a decrease in the price of a lot of these 88s 87s 86s if these 86s go back down to 20k which it's it's not going to be for a while because now we have all these icon SBCs that are just slowly but surely increasing demand on the market for these cards this SBC would be decently cheap how long is it out for we're going to switch back to the real screen here since I'm back in hopefully I can click in on the SBC 13 days so two weeks to do this Mane SBC that could be exactly when the team of the season starts that could be exactly when team the season starts just a hunch not really sure if it's possible or not not sure if that's what they're planning on doing but that could be when it happens I will this I bet this SBC will be gone before player the month starts but if you're a if you're a Liverpool fan and you want a card like this he's probably going to get a team of the season it's going to be higher rated in this card but this is a card that if you can play with him if you really just really really really want to do him you can get him done for maybe around 300k it is a decent value of a card it's just kind of poor timing because we're coming into a tots in the next two to three weeks where he might get a team of the season that's 93 94 rated and it's going to blow those stats out of the water and you're going to be sitting here paying 300k for this money SBC when his actual card team this season on the market will be around the same price you're going to be a little bit disappointed because you already have that version of him but regardless that is not a terrible terrible price based on just the value for the card and the card that you are getting so it's not terrible so I can see why a lot of people want to do that but it's just kind of poor timing one other thing that I want to look at and this is kind of just like another market talk market recap video we got to talk about a lot of things we got to talk about some freaking screen cards dudes there were a lot of people I said yesterday in my video I looked at scream Raphinha at 33k and I was like yo you got to get rid of him and look where he is now he didn't get the boost that people thought or people wanted him to and now he's right back down to 13,000 coins where he was at 30k last night so that's kind of a that's another reason why we we do a lot of what we do in this game is and that is sell into the hype now a few of these cards actually got sick boosts and I do want to focus on some of those cards the first one being Busquets now a lot of people are all over this card and rightfully so I mean where do you play him you can play him almost anywhere aside from jumping and heading you could play him at striker he is 99 finishing his long passing isn't the greatest agility and balance is not the best but I mean three star week for three star skills six foot two this card is just ridiculous it's like it just breaks the game I'm interested interested to see I know this card has had a 99 pace boost before but 99 pace and 99 shooting now that is something very interesting so I think a lot of people are hyped up about on this card and I'm sure there was people out there that made a lot of coins on screen cards today but a lot of the ones that people wanted to get upgraded I would have loved to see this chunulu card get the 99 pace that obviously didn't happen so I think a lot more people lost coins today than they made coins on these screen cards based on what they had now obviously this Diego Costa went from 160k to max price at 320k on xbox and he's extinct on ps rightfully so 99 pace 99 shooting he's got some pretty nutty stats along along with his strength and aggression that are already very high so I understand why people are all are all over some of these cards but a lot of them just I don't know screen promo was honestly pretty dead this year they got upgraded what three times four times so it was just kind of an average promo throughout throughout this year so heading into this next week I want to do I do want to talk about a few things I do think we're going to have a little bit of another market sell-off and that's one thing that I want to focus on this week is maybe getting in on some informs a little bit earlier than before now I'm just going off of some random informs right now this there's no special reason why I'm looking at Robertson he just came to mind right away I think some of the buy time for these informs for Thursday flips is going to be early in the week the past two weeks what we have seen is the cheapest price point for a lot of these cards actually is during the week and like sell-off now it used to be things would go low and on Saturday night and on Sunday night but then they would also go low and almost even lower on Wednesday night right before the week and league or the week and league rewards and the division rivals rewards would drop like Thursday morning UK time but that's kind of not the case anymore since we don't have a lot of promos going on people are trying cards people are holding their teams so the lowest prices are actually happening when most people are selling which is at the end of the weekend league and I think you're going to see a lot of that again this weekend as a lot of the casuals finish off their teams or finish off their games they're going to sell they're going to get their coins and they're going to go do SPC's they're going to overpay for these gold cards it honestly makes me sick looking over here at these gold card prices and just thinking they're knowing that people are out here paying 28k for a Douglas Costa to put it into their rude hole at SPC that just sickens me man that honestly just sickens me so if you're looking to get on some flips this week definitely look into some of these cards I don't know that it's a good thing to maybe try to invest into the icon SPC links I don't think about I don't think that's a really good idea but look in the panic as always this week we're going to have more Champions League games so I think these cards are almost kind of a little bit getting forgotten about they're good for for Wednesday flips but the Sterling card this is one that kind of interests me if I see this get panicked sold back down to the lower edge of 500k maybe like the 520s this would be a card that I would consider picking up considering he was over he's right around 600k right before the game and I know that they're behind spurs on aggregate but to be honest with you it's Manchester City they're a powerful team they're going to be at home and I honestly as a spurs fan I would not be surprised if they pulled us out I'm going to probably buy a couple of Sterlings and sell during the game I would definitely ceased City getting an early goal and maybe tying the game up in that fashion that would rise this card a lot in the hype I don't know about the young player of the year and player of the year stuff nominee wise I don't know if that is this weekend or if it's later down the road but that is coming up soon so that would kind of mess with this investment as well because this card would obviously be getting a player of the year or young player of the year version and I don't want to mess with that too much I just and I like this card right now because it's his best version you could look at Aguero as well for the same situation just being the fact that they are down to spurs but they're going to be playing at home we've already seen some fantastic comebacks and this card is going to be nutty if the city team can pull off the win against spurs in the second round so there's some of that stuff to watch as well if you want to do some investing with this week in mind later in this weekend for a week on the sell-off but other than that scroll through the team of the weeks look at the foot birthday cards they're getting a lot more rare they rose up in price this weekend just because of rarity a lot of these carnival cards are also very rare I actually want to look at your Reese because we got new man of the match cards that just came out but this your Reese card is still better than his Champions League man of the match which is about 160 thousand coins we'll look at the new man of the match cards really quick to to finish off the video and talk about those here in just a second and look at this so we have La Porte now this one kind of interests me a little bit 70 pace he got that 70 pace and he's a center back which is where a light he would play better with his card stats and he's actually extinct are you serious he is extinct right now on the xbox we're gonna go La Porte we're gonna go center back and we're gonna go minimum by now of 100k the man is extinct the man is extinct crazy crazy crazy crazy all right so people must have some demand for this card which is interesting to me this is a perfect link to that left back sbc version of carnival mendy I think it was so maybe there's some links there that people are using decent card with the stats but obviously it's not anything too super spectacular but it's going to get people's attention this one actually interests me almost the most out of this entire set is the young card I know he has the ffs sbc which a lot of people have this card but this is now his best overall version kind of adding some hype to the iax how they're playing right now they have a left back taglet fico and obviously the delict has some special cards in the game so I bet people could kind of create a triangle with that and then as well as they'll play you and this card at 70k is definitely going to be extinct wow he is not extinct this is a pretty pretty ba card in my opinion that is a pretty nice card a lot of people will use him let's actually check him on the market right now don't flay you he is a center attacking mid in the prem which is interesting to me and I kind of like that I don't think if they see this card because it is rare because it is an orange fanta version if I do see this card maybe hit like 50k while his time is happening in packs I will be very tempted to buy a few of this card because he's Spanish he gets good links he's premier league and he's got some good stats he has I think four star skills four star weak foot he does high low work rates he's got 99 agility which is pretty nice and he's got the pace and decent passing so he's going to feel good on the ball so this is a very nice cheap premier league center attacking mid that people can can try in their teams and of course people like to try cards in their teams especially right now time period of FIFA with not a ton going on Nabi Kate this card doesn't interest me too much uh Yoris a little bit uh Gunkalo Guides not too much other than that out of the set of man of the matches the cards that interest me the most would definitely be Doflayu La Porte and Yoris um Aaron Ramsey no thanks he just got that nice SBC people had to pay a lot for um I'm sure some people will like this card but for me it's all about those other premier league guys and uh it's all about the icon SBCs that is going to be the story of this weekend um keep keep your heads up honestly guys don't be don't just hang your heads on this and get too much down and don't get too depressed about this stay as positive as you can because if you're going to be negative about it that's just not going to help the entire situation so hopefully we find out a few more uh details about this it doesn't look like we're going to be getting any more of the prime icon moments SBCs or any other prime icons regardless so um that also makes it interesting for some icon traders and the value of those icon moments cards on the market but uh after all that I am just ready for team of the season that's why you see me trading I am I do have a lot of motivation to trade right now actually because you're going to see right now that I am very close 56 306 and top 100 is 56 737 so I am almost into the top 100 that has been one of my goals after I hit 50 million it's been one of my goals to get into the top 100 and to move up in that area so I'm getting close and pretty pumped about that I'm going to keep trading this weekend I'm going to have more time in my hands as well to be to be able to trade and to do that kind of stuff I'm actually gonna maybe play the game a little bit too I have not been able to do that too much uh as well but hopefully seeing the season comes soon I'm excited for that um and I think that's going to just give us a whole new kind of uh set of content to be pumped about to be on fire about so hopefully we see uh that kind of stuff soon but keep your heads up and uh you know if you're making bank on UCL cards or whatever it is in foot uh stay positive keep trading keep having fun I'm going to keep uh bringing the hype and bringing the uploads in this channel talking about market um and and whatever else so uh we'll have a good time doing that if you enjoy the video smash your thumbs up on it comment down below if you have any questions or insights on the icon sbcs and of course subscribe to the channel if you're new it's been Nate the foot accountant catch you guys later peace out


Hey there friends! Well hello and welcome back to my channel. Today we're going to be doing a plan with me and my centered kind of, okay let's go for it. We are working on March 26th through April 1st and this is kind of the color scheme I'm going to go with. If you guys didn't watch my latest Etsy haul I will link that below. I found this sticker from Planertopia that's just like an Easter fun thing so I know Sunday is Easter. I do have plans on that day but um yeah we're just going to go with it. I know today is actually March 28th which is when I'm filming this but we're going to back plan just a little bit and push through some of the other plans I have for the rest of the week. So I'm going to just film this and edit this and get this up today for you guys. But before I do that I need to find some washi tape because I forgot to grab washi tape so I'll be right back. So people ask me all the time how I store my washi and this is how I store them. This is a bin. It's an art bin. I got it at Joanne's many many years ago but I actually um roll my washi like this and I don't know I really I really like it. It makes life a little bit easier. I do have a couple full rolls of things that I like absolutely love and can't part with at this point in my life. But um yeah so I'm going to try to find some things that kind of go with this scheme and I'm kind of loving like that maybe. This is what I'm going to go with today. All right so here's the washi's I'm going to use. This one is just like this oh look at it. It's all sad. Um this one is just a nice plaid that's mainly pink but has a little bit of green in it which kind of matches this a little bit and then I've just got some purple polka dots so we're just going to go with that. So first things first let's put in some washi at the top. Oh and by the way I always forget to say like what kind of planner I use and all that stuff. I always feel like most people that watch these videos come back week after week but not always. Sometimes new people find me but hi my name is Emily and um I use a Aaron Condren life planner in the hourly version and um this is the colorful as well with a silver I think they call it a platinum platinum uh coil. So um the links are below if you want to check out their planners. I've been using them for about three years now and really enjoy them. So yeah but that's that's what I use and um I just like the hourly my brain works that way so there you go. All right so just pulled out a bunch of stickers that I may or may not need but I am still vlogging until the end of the month because I'm doing my no spend so that is kind of the indicator for this washi situation. Cute camera up there too because why not right? All right need a half box because I did this like re-employment assistance session thing and that was um from one to four but it actually only lasted till about three-ish. So anyway I'm gonna put that in and I actually posted about this on Instagram and people were asking me if I would like do a video about it. Um so I'm not gonna do a video about it but I will just say it was not very informative because basically all they showed you was how to navigate the computer system to apply for benefits but you know I'm sure it was beneficial to other people. It just wasn't beneficial for me personally because I already knew how to use the system if that makes sense. So anyway um but I was there what's said to be there from 1 p.m to 4 p.m. Oh and these half boxes are from I think it's actually Emily but it's spelled E-M-M-E-L-L-I-S shop on um Etsy. I'll put the link down below for all the places that I'm using stickers from today and then after that I went to my parents' place and um used their printer because I don't have a printer here which PS I should like get a printer but you know I'm on this like no spend situation. I did just go over there and print a document and this is a little sampler from Christiane Designs by the way. Actually this has really all the colors that I need in it this week so I might just use this. Um okay where is that other here we go. Here we go. There's always like piles of things that you guys don't see in my plan with me. So I got this uh not too long ago from Hobby Lobby. I think I got it like a month ago or something probably more than a month ago now. It's that Create 365 and this is like food um because like you know so much goodness right. So um yesterday last night I went over to my grandparents house and made them some pasta so I figured this probably had some pasta in it. I just need to find it. I probably skipped over it already hold on. Aha here we go here's pasta right here. So um I went over there and um made them some foods so let's see what color should I do. Let's go with a yellow because you know pastas kind of like that yellowy color so let's do it. I need something else too. My mind is so scatterbrained when I do these videos. I try to clip out as much of the hot mess as I can but you know doesn't always work guys doesn't always work. All right so I was over there about 5 30 and we did that pasta dinner and then I'll use these little stickers from Adriana Piper with the little cute grandparents and put that right there. Use one of these little pasta stickers. Oh maybe it's too long well put it like that. Oh that looks kind of weird hold on I had to like cut some of it off there we go there we go all right looks better guys looks better so anyway that's what I did yesterday um let's see here and then Thursday Jody is coming over and I think she's gonna be here between two and three. I don't really know when exactly but we're gonna go with it but I think I might use one of these for this sticker because it's cute and why the hell not I already have it so let's use it um but I think I'm gonna go with one of these little like green ones maybe I'll use one of these little funny faced bunnies I'm just gonna put it in at like two o'clock because and if she comes at three that's okay so let's put it right here for Thursday cute um all right and I thought I saw my laundry stickers but now oh here they are oh I don't really have any like pastels hmm that would look good maybe I'll do a yellow because it's just like a little bit not as aggressive you know um I don't know just like to put her in right there and then I think Friday okay so I've like got this planned guys I need to like declutter my life like in the worst way so yeah I need to declutter my closet and I know that sounds crazy because I think I just did like a video on it not too long ago but to be honest there's so much stuff I don't wear you guys so much stuff and I think what I'm gonna do is I'm gonna probably film a video on decluttering again and then I'm gonna take everything over to there's this place called closed mentor it's a chain but um I have one locally here it's a little further away for me but I think I'm gonna do that this weekend at some point but I want to get everything declutter destashed I actually have quite a bit of clothing that I set aside last time and put in a separate space and said if I don't wear this by the next time I do a declutter these are all going away and guess what they're all still there like I hadn't reached for them one time it's like you know I just need to get like really honest about what I what I like and what I wear and I just need to be like brutal with the whole situation so anyways um yeah so I'm gonna do a closet declutter and this is gonna be my master closet so I think I'm gonna do that on Friday while I'm doing my laundry so that needs to happen use these cute little coffee break planner stickers let's say declutter and then I also I'm gonna use one of these little guys like a little trash bin because it is so true it's just like it's not trash trash but it's like it's time to leave my life you know what I mean you guys like sometimes it's just time to go all right oh and speaking of trash I should put in my trash day which I don't know I'll just put a little gray one down here because that's what I gotta do and oh I need to keep watering my mom's damn plant and I have been but I've been kind of slacken a little bit because I hate it so much my mom's gonna be here soon though she's gonna be here um at the very end of April so she can take she can take her damn plant with her because I hate that thing I hate it so much all right another thing that I want to start working on is my filing system guys my filing system it's rough it's real rough so I need to do that I think that's going to be like my Saturday slash Sunday project is to work on filing paperwork and getting rid of old stuff too like er it's so bad let me know in the comments because this video is going to go up today which is the 28th let me know if you guys want to see a video on that of like how I organize my files just like let me know because I'm not sure if you guys would be interested in something like that so either give it a thumbs up or just send me a comment or something like that because I just don't know if it would be like halfway interesting to film it and do it and put it on the internet I'm sure you guys will say yes you want to see it but I just don't know I don't want to waste my time you know what I mean so um because it does take a little bit longer time to film it which I don't mind doing if you guys want to see it so just let me know all right so I put in my filing system for the morning of Saturday and then I think Sunday I'm gonna do that for kind of the duration of the day as well and then I think um that evening on Sunday evening my grandparents are having people over for like a Easter dinner situation so I'll be going over there at that point um here we're gonna do one of these I don't know I like these better I do like these though too but I've only what used one of them I need to like use more of these seriously seriously my gosh so Easter dinner and I have no idea what time that's happening at so I don't know I'm just gonna like put it in like this I'm going to my grandparents house again so I'll put a little grandparent people over there and then um maybe I'll use one of these little peeps here we'll use a use a pink one boom there we'll see if I can move this a little bit already sometimes if you catch the stickers early enough you can kind of lift them up a little bit kind of not center it but here we go just make sure there's like similar negative space on each side and then today I am basically filming editing all those kind of things all day long so that's what's happening here and I feel like I did stuff on Monday but I like literally can't remember like I have no idea is that bad I'm like already losing at you guys I'm already losing my marbles oh I know what I did on Monday gotta put it in I applied for my like unemployment insurance benefits I did that in the morning time so I'll put that in oh you know what I do have to do today is um health insurance stuff which is no fun but that's what I gotta do I have to figure out if I'm gonna go with my cobra option which is like insanely expensive or if I'm gonna do like it's Minnesota care it's just like an individualized option in Minnesota so I've just got to like figure that out today there's a phone number I can call and then I can give them all my information then they'll tell me what the premium is gonna be if I decide to go that way and all that good stuff okay so here's all the videos that I have either filmed or I'm planning to film today so um my plan with me obviously the right here so I'm just gonna kind of put these put this in as like a little checklist situation I have to finish finish finish my pantry filming I actually finished the pantry but I need to finish the filming of the pantry um my monthly view setup which actually I've already filmed um and then I've got my bath closet to share and then I've got my budget which I will be doing um as well today at some point so yeah and then I think because these things are so cute I'm gonna use these like little eggies for um like my little check marks because why not right they're so freaking cute and I want to utilize these in my my planner okay so like this is my version of like cute functional you know what I mean so anyway I think that's going to be it for this week's video I don't really have anything else to put in at this point um I literally can't remember what I did on Monday so I apologize um but anyways I am gonna get going with all these videos thank you guys so much for watching if you have any questions feel free to post them down below I will link all of the sources that I used for the sticker shops and things like that down below if you're interested I hope you guys are having a wonderful day make sure to give it a thumbs up and subscribe if you want to see more from me and I will see you in the next video bye guys


Hello friends. I'm Sanjay Gupta. I welcome you on Sanjay Gupta Tech School. In this video, I'm going to explain how you can count characters and words in a stream with the help of C language. So before start, I want to share my information. If you go to detail or description of this video, you can find links of various playlist related to C language so you can watch them. Now, I am first taking one example so that we can understand what character and what word is. So let's say, so I have this character added and these are the indexes. So total 12 indexes are there. It means a total size will be 13. And now I'm going to put some content in these blocks and we need to identify how many characters and how many words are there. So character means any alphabet, desert or spatial symbol whereas words means whenever we have one space. So before space, whatever is available is treated as a word. So let's say, so this is the complete stream. So here you can see first five characters are in India, then we have a space that is there again space that is great and then null character. So now it is having total 15 blocks. So size will be 15. And suppose its name is SDR. So this is the input screen. Sorry, this is the input screen provided by the user and here we need to identify number of characters and words. So character means one, two, three, four, five, six. So space is also character because it comes under the category of spatial symbol. So six, seven, eight, nine, 10, 11, 12, 13, 14. So 14 characters are there. It means whatever is available in the stream before null character will be counted under the category of character. Whether it is alphabet, desert or any spatial symbol or let's say it is a space as well.  And if we talk about words, if we talk about words, so we have two spaces and here you can see three words are available. So instead of counting words, I will be counting number of spaces and if I add one to that space variable, then I will be having number of words. So this way I'm going to solve this problem. So now I'm going to write the program in front of you so that you can understand how we can perform these operations. So I am starting from main function. So first of all, I'm going to declare a character array and let's say his size is 15. So its size is 15. Then after this, I'm going to declare one variable i for loop counter. Then variable c which will be counting number of characters. Then variable sp which will be counting number of spaces. So initially this is zero. After completion of the counting, I will be adding one into this variable so that I can have number of words. So let's say if we don't have any space in a string, then also we have one word. So suppose we have this string like this. Null is available here and rest blocks are blank and string is only containing India. It is not containing any space. So what will happen? How many words are there? One word because without any space, if you're writing something, it means it is treated as a word. So if it is zero, then also I have to add one into it so that I can show you like one word is available. So I hope that out is also clear now. Then to print this, I can show enter a string message. Then to get us, I'm going to leave that string into str variable. And after this, I'm going to write a loop. Which is starting from zero. Now here condition is str of i not equals to none. So I'm going to check each index value of string, whether it is equals to null or not. So if it is not equals to null, then loop condition will be true and the operations will be performed. Otherwise, loop will be terminated and after termination of loop, I need to print number of characters and words. So this way it is completed now. This loop will repeat till this null character. So it will count all the characters. So I'm just putting C++ here because if loop is repeating 15 times, if loop is repeating 15 times, so every time I need to count this C variable because everything before null will be treated as a character. So that's why I need to count. And for space, I am writing str of i double equals to and inside single quotes, you need to put space here. And you can use this as p++. Right? So this way you can count number of spaces. If you don't want to put single quotes and space here, so you can put directly 32. So 32 is our sky value of space. Right? So if you write 32, then the character which is available on this index will also convert into its sky value. Both will be checked if they are equal, then space will be incremented otherwise. So you have two options. Either you can use space within this single quotes or you can write 32. Now after completion of this loop, you can print characters equals to percent. So number of characters will be printed and you can write words equals to percent. Now C and SP plus one. So C will be printed here and this expression will be printed. So whatever the number of space will be, you need to add plus one so that number of words will be there. So here you can see we have two spaces. So this SP will be incremented two times. But if we have two spaces, then we have three words. So it will be incremented by one. So correct number of words. So this way I hope you understood how this program is calculating a number of characters and number of spaces. And remember whenever you are working on string, you need to put this condition because you don't know exact size of the string. But you know at the end of string, we have null character. So you can iterate your loop with this condition like if characters are not equals to null, then your loop will repeat otherwise it will be terminated. So I hope you understood whatever I explained in this video. If you want to watch more programming related videos, open my channel, go to playlist or you can go to description of this video. There are various playlist links are available related to C language so you can watch them too. So thank you for watching this video.