Logo TIB AV-Portal Logo TIB AV-Portal

Efficient Django

Video in TIB AV-Portal: Efficient Django

Formal Metadata

Efficient Django
Title of Series
Part Number
Number of Parts
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
David Arcos - Efficient Django Does Django scale? How to manage traffic peaks? What happens when the database grows too big? How to find the bottlenecks? We will overview the basics concepts on scalability and performance, and then see some tips and tricks. These statements will be backed up with experiments and numbers, to show the timing improvements. ----- **Does Django scale?** How to manage traffic peaks? What happens when the database grows too big? How to find the bottlenecks? We will overview the basics concepts on scalability and performance, and then see some tips and tricks. These statements will be backed up with experiments and numbers, to show the timing improvements. Main topics: - System architecture - Database performance - Queues and workers - Profiling with django-debug-toolbar - Caching queries and templates - Dealing with a slow admin - Optimizing the models - Faster tests
demon Red Hat Computer animation position scalability
predictive Maßstab machine learning services Beats Development algorithm Development combination theoretical coma rates scalability machine learning Computer animation rates predictive life Conversation Abstract spectral
focus digital effects student focus effects particle category events Computer animation Pareto-Verteilung tasks Results tasks
point load states Ionic patched Databases scalability fields rates operations model systems architecture app server normalization states storage Databases Part applications scalability means Computer animation optics different load-balanced
bottom Blocks time generic Part applications templates templates number caches Computer animation different level Blocks platforms systems default
reading validation calculation Databases generic Part Compression caches mechanisms CPUs caches Computer animation memory memory CPUs objects Synchronous level model systems
Computer animation Development pattern applications systems systems measures
standards metrics system call runtime load response patched time Databases rates module counting heads number response time caches memory memory CPUs cores systems app load breadth programming lines applications system call profiles number Computer animation functions queue metrics systems
standards front end time views front end machine code Continuation module completion completion variables area hypotheses Computer animation Average case metrics Jump loops loop spectral systems
area predictive response Development time lines hypotheses number Computer animation Query information Display systems
web pages mapping response lines applications number graphical user interface Computer animation profiles single information model Display extent Results extent
graphical user interface processes Computer animation response case cores moment bits extent extent
key time Databases events fields programs measures Indexable Computer animation single Indexable spacetime model
point second measures residual Indexable means Computer animation case different Query Indexable white noise spacetime table progress record
Indexable multiple Computer animation profiles NET orders Indexable spacetime fields spacetime measures
Operational Research Regular Expressions time effects Databases loss number Indexable number Computer animation rates different internet objects operations Query sort record
Operational Research Regular Expressions moment sets maximal fields number number Computer animation objects Query objects record
Operational Research presentation Regular Expressions link forces expression graded instance argument structured data number sign Computer animation objects operations Query
Computer animation key different Relational case objects time Gender views Query objects fields
Computer animation Query objects time Query Databases objects fields
default digital filters views widgets fit sample fields words Computer animation memory objects case Query objects extent
views widgets The list indicators fields Indexable Computer animation objects case Query Right model extent
Correlation Computer animation widgets case Query machine life rules extent
processes Computer animation Relational case administrations widgets case Query Right model fields extent
filters Normal Forms standards key breadth widgets fields Computer animation case phase Query Sum spacetime form extent
law projects data management crashes processes caches Computer animation Normierte Räume Query computer scientist level table systems
point services states time acidication bits crashes hypermedia matrix testing scratch systems tasks Operational Research applications caches CPUs processes Computer animation case Right queue table spacetime PDF
Operational Research Computer animation configuration time sheaf analytics sets schemes staff queue systems
default standards Computer animation sets Databases Databases Games procedure systems second connections
default server Identify time sequence connections Computer animation intrusion detection systems Universal unique collision key errors record
services unique unit fields data management radius Propagation Computer animation intrusion detection systems string unique collision key Security reading conditions
validation key information Ionic projects unit survey password parallelization parallelization fields Demo tens Migrations radius Migrations Computer animation case configuration testing
Authentication validation factor views Development sample password analytics parallelization applications Migrations Computer animation case testing Sum man
time unit sample password effects unit testing lines parallelization programs means processes Migrations Computer animation memory testing testing extent systems
Computer animation time ones lines measures
number mechanisms Arrays programme Computer animation Gamma share conditions classes production systems form
area number programme Computer animation directions time graded singularities applications scalability systems
time machine plan connections image number CPUs programme Computer animation memory Right structure extent localization man reading
processes Slides Computer animation rates labor different case memory NET Continuation distances systems
Hi good morning and thank you for doing this in this position the plates
of room for a speaker is that was installed that look this in general few thanks for coming in in this talk I will speak about efficient general I will them some features and best-practices for everything scalability issues and performance bottlenecks the 4 things that we will see up there and this URI
domestic concepts and then measuring how to find bottlenecks
and finally some beats and freaks that conclusion of
course is that dendograms so
high that's me and then that assignment by some developers 2008 I put myself out of life and the cell and that mean that I'm I Scipio average ratings the of spectrum in Barcelona that there's a machine learning is a set so we provide the prediction API so our customers can degrade their saves lives and then improve those those combinations looks difficult but it's quite straight OK
let's start with the basic concepts how do you can't of the
particle principle there a given it says that for most of the for many agents most of the effects come from a few of the cultures and this happens in in in many different fields in scholarly this happens to
OK we can't focus on optimizing a 80 per cent of the task and the chief having a few results for a guest vocals on a you Michael best the 20 per cent and we will achieve most of the rest of digital thing here of course the student in the fight being these few tasks so if we want to improve their performance in this column community of property we need to unify fight they work next obviously concepts
on scalability usually is comedy is defined as their potential to grow our system just by adding more forever the without changing the architecture of the and it's a command that you don't stores the state in the optic application centers but on the database if you keep stateless upset you Crandall load balancing and then you can scan them points and the lead which means just add more hardware and in the status of charity is reducible to real but then we move the problem to the other side that is if the state this in a single point in the race and these will be difficult people will sustain it depends on the that obvious it's not the same as the scaling up among all possible red is each of them have different things improve the database performance is is quite good news on 1 hand you have to less request and on the other 1 you have to go faster and more efficient what we will see how later on doing this request means that you have to do let's read some as right so you can achieve this we patches and interest rate was to consume anything here we want to help in that field and you can the normalizer models
don't normalizing means that you have so little the that inside them the model so you don't have to the expensive operations on the bank Our together with them this bound
that including is with enough ginger is having better but anyways you have to catch on
the on the template general fast fragmentation that means that you can catch the gas and the little blocks of the them that you need to catch everything at at the same time and you can go layer-by-layer assembly by template and and different guessing at different parts and of course
this depends on your system if you are doing and the idea of all 5 templates of it but if you are doing a number of obligations you will suffer a lot of people that that can benefit from this they crashed this is 1 of the most important thing of course you can't catch almost everything so they and their most standard approach is you will later but layer of respect and right touching things OK from from the public and you're reducing their if you are using bottom he she you're using ICT and platform along the axis we that that raised them relates sessions everything general hostility with custom annotation and he's very powerful on the
problem here is the best validation how do you invalidate the cache once a models something you have to remove it you can do it in in in many different ways we will see how later so gosh everything what the
next now we're moving to the interesting part you have to decide the bottleneck on your system the bottleneck is that the blaze of making systems slow if you remove a bottleneck in your system will faster then you will have another work on it you have to divide up the Modeling that and we and so would be OK it depends on the ignition systems will have different models and you you want them to make is the CPU with the memory that the least you can do different things and the thing is that 1st you have to fix the kind what and then move forward to the next 1 so how do we find the mechanics of the 2nd part of
measuring you can monitor your application see they that numbers and and this can help you to find the bottleneck but as they say you
can't improve when you let me show so will make sure your
system to find about the next new features with the next and then your body fight because monitoring you may find that the development pattern fixed and understanding these and elites efficient and performance and gullible is it the same so from the from the
that monitoring you monitoring that then the system loads of you memory to take it the basic steps that up there is of course it's very important what is the 2nd person response times the size of the that there is even a simple patch the you when you have a system of workers it's important to see how many best do half you if it's going to if it's going to fast and then there were would be then and also metrics for your application given the
providing with by phone simplified money want stay in this pandemonium for profiling and profiling allows you to run the Python gold and without you some numbers like this the number of calls that that goes in in in its core Running time time these numbers are interesting for finding which is there because there is no line and which lines are being repeated most because you can't have an idea in your head on how the application is
performing but until you make sure it's yes the hypothesis claiming that they made money and these
are the standard by from money or that it does what it says it's times so how much time does it take to run Europe you command so you can use that to as create or you can embed it school in the Python gold here it's going yes a method and timing once this is new but many times on calculates that they have that's their the based on and what is this kind of metrics so the idea here it says the best of we usually as a baseline you 1 cool thing is that the best possible time because in your system you have many different variables and the best thing is when you have the cash probably that is when this view is not doing other things is when you are not having that were problems so the destination what's OK for for knowing a lower bound all of your system Ch IPTV PTVs by from the debugger so if you are using IPython IPTV is they have the same for black eyed on so it has a few more features like that of complete completion and syntax highlighting more days about the spectrum you get use IPTV that said race and then when you go to go somewhere that it was so it will give you a shout to keep executing Python OK so from a normal down obligations some of the newer 1 and in Europe in your machine you just look at the case where the average quantity of break and then they run to the list of and you can see on the variables that are then you got people running you have a few comments to continue to do most that and this is very useful because when you detect a back you can guess raised and and take the money in the world with their face facts another very important for
the general liberal about downloadable development consists on a serious of finals in this in those panels you can things have about our everything and and you can add more planets OK so you can do there and they're like profiling here you can see their their SQL queries a you can select to to explain the queries you couldn't see what's in in the system right now and you can see how much time it takes area on some things about predictions of then made out of date that you said and this is for me this is a the most used tool for foreign dividing things because when you have a theory of
hypotheses on how your system is working but then the numbers that makes sense you can go on line by line you baby you on and take really what happened it's very muddy so you can add more money you 1st they can with
book about line profile and that's there and they buy from profiler so you'll have a new pool of financial and and then you can provide and use the models everything it's very useful and then down general the book under the young would have to remember and the is an extension of fraud the crumbles set because some course number down at the map you go back this is in in
this picture we can see that this is the result of Prob single page of your application then you click on a button that says downloadable toolbar that and the principle of the sodium but this is an extreme and and all this is HTML and it was
but sometimes you have using demand garden than any of the I core to wear score
or moments demand-response there's a during the returning of enemy gave some whatever in this case is you cannot demand HTML inside that that so the younger than final allows you to use the process and you obviously the extension and you can take 1 of those things for
the servants you you can't take that the same things as if you had a generative with the book this is very
useful all the bits and treats
now that we know that messy concepts and and how to make sure how to find the bottlenecks we will see in the
field of best practices and feel personally disempowered defeats performance bottlenecks event so 1st the most important that databases
that every society is really low because the indexes are wrong and that's another reason why it's an invective make you place faster but you need to have their right indexes that there is and not as intelligent as as they they seem you need to be very specific on what you want to index so an example and in all the time the primary key will be index OK but then you cannot indexes for single fields where the the the index or composed indexes for more than 1 field index the whether the first one is defined in the model being in that field years the index people will on the in this program that is defined as they are the middle of the model and then knew there would race for many fields of so in example yeah and so we do thing this this happened to me a few days several you can have your
idea on how it's working well and then it is Israel's using it using an index because it's a very simple equity of agents using other than should auditing highly useful knowledge of rose by data but it's very slow what what's happening if you would use this variable to about or any of the of the of the 2 residue will save at some point that the problem was
being progress in my case it was made using day they and that's why things live the that I found that it was and multiple index it was indexed by creation by and I'm a new idea the great white noise and this was inside the genome-wide means so I understand that the in the index at it starts by time and by integrating but once I found it fits in what was yes adding an index and it went from 15 seconds to 3 ms there and the difference is huge and these stable well whether it is more many small yes we have a half million rows show for the other tables it's very important to we shouldn't are using indexes for and you must use queries and most of you using and they and they and widening mean of course what about the
all the nexus why don't we have a nexus to anything weights in order to make it to half indexes everywhere inaccessible occupy space space is cheap but it's based on that there is well it's it's problematic and
also having in excess made slower rights because if you don't have a role it fast on the indexes of and you have to index set it's again you have to and the except when the index as it will get more complicated and you can do that that mutation for multiple indexes of many many fields and that's slow very fast so this is only when you need them through and be sure the profile and to be sure
that it's using the right index the difference is is huge is very very simple to see that it's working as expected OK another date for their databases doing a lot operations in assembling
you have to go and initially just those data and you have thousands of rows and you go 1 by 1 it be found since all right so that that is something you can use about rate method and allow insertion sort of I don't know of thousands and send them more than thousand at the same time this goes much faster than that of a fashionable in internet in 10 thousand euros at the same time it's just at its lower but the difference in number of ways is it's quitting due to that basic air has another effect of going to the
animal that varies from everything sometimes you do that in your happening with very fast but once it's an Amazon already it's in another provided the week you will see that there relatively fast so it you you can do but commission for creating you can do about updates and you can do about their lives OK instead of dating all all of the objects on the moment of the rows you can use these
these methods and is having more complex why because usually when you want them they feel OK you know what you want to look into that field but you and update of what a set of many fields usually the field you want to update is is the number of before % the same value for 4 of of the fields in that some of the common used in so you can use their their s expressions and that out 4 being field values based on the data minimum mean that I mean it seems that already and that there is an example and you
want to increase account so you could use and expression say OK give me and all that
kind of present in things by the way these are links and I will forces lights sign and you can
take the the links and most of them are going to be a general documentation about selling to other instances for underlying very signal no parameters to adjust the leader of the research in a single operation and I think the big in mind is that when you the grade when you go about creating it's not using this safe method is made using banned the signals same for that day if you're
lucky depends on on gender signals on not even model 2 little something it's time you are there are all these will not all the signals OK so you have 2 minutes that about for the span of the data for the Netherlands getting really objects within the same
inquiry and here we have 2 different use cases well that there are similar in view of the keys of people or if you will that for in these fields or many-to-many OK is it's it's easier to get used to it and then select related methods of and you will have 1 model and and and all that relate 1 object and other related objects in the same place stroke In example I want to get there and their mother country on all the cities in the country so normally I would use 1 great for
the country and then 1 the receiving that's an efficient I can do it with a single query and and and then the that database get me these this country and all the cities at the same time it's and it's slower than a single query about much faster than doing and weddings OK and the 2nd 1 is sadly more complex for many to many fields when the relationship is not only
affording given you have more fields these that's an extract waiting before the of putting these woodlots planting these will get all the ideas or for their related objects and he would do they join in by so this is important
because some of them so that every society so Linda and if you follow the view of how they get everything that stress or or if it doesn't fit in memory of hospital tool to the price is that or whatever these make sure that you will get all on the related many to many
objects we just an exact wording so you will look for places that n next so what
mean I used again what a lot I usually extend the minimax customs and think that the default values for that mean well and it will offer lots of fields investing globally well you can do many of the dual-hop sample used select related with this select related that thing
inside their inside their their model happening OK you can do all the right they get 20 set through the prophets related so that it was a mess of you just extend and how we preferred to relate that to whatever views you do need ordering the evidence here make sure that it's using an index and the same for the sub fields in your researchers on an index of fields it will be very slow now for for for and and many to many fields and you can do the with only means that instead of the example we have a list of all the cities there are thousands of cities and and this means that you have to learn exactly to
that that is going on the on the cities and then that he that and you would have actually what without the things it will be slow and not only that based on that 1 and a machine that goes that will get very useful so if you recall it
feels it will not be as select it will not be eligible so you will have guessed that the current value and these can be useful because most of the banks in the online obtained in this kind of correlation but if you need to change and then the next 1 while I field this is at the center that instead of listing all the possible values in these foreign King you need to make life a couple that they could get it with displayed just days as a OK a little about for search undelete then about the rules to the lead to an example we have released the cities we
will come after you and say city for or the 5 all on and that the relation with our spanning itself of HTML and these included
into the process that our efficiency is for but it's not very very we had before it's that use began with Simon Naylor external obligations it's like the role fields but it does to the name of the field that you're using the it's out a little more more beautiful and more usable OK so With these Jameson monolayer instead of a single city 45 you CCD Barcelona it's more by by the end user another and that little prick uh extending then the admin templates in this case you extend their in the field of this through this our while in India in this side of the right you half all the possible the other thing that I the find the model and it would be better
if you have an example the you have often of cities it would take a lot of space and and it's it's a slow the in the brochure if it's the sum of the log of graph so that you can extend this field and instead of being a a using a selective and estimate the length of the standard
form in this way if we look at the at the pilot phase and it would be yet get a normal form that when you leave in it's filters you by buy these foreign key now I don't know
about they catch and the catch is difficult because you have to monitored things and you have to know what the practice and and you have to do many defibrillation if you know this and this and that says that in computer science there are difficult things cache invalidation and naming things will be a question of it's
another job it somebody will also was gonna passionate is our system for passing the law queries for that various sentences and automatically in but it is then this is a very good
project this is done by the end of what project of a journey crash this is from the same people I think and these managers automatically they and catching on their on their level the introduces itself at the at the middle of the or em and in discussing our table 11 this means that if the table doesn't change their the crash insisted that once this table changes the catch is
assimilated what can happen here you have a table and the right thing all the time and this could be a problem because you will be embodied in the that's the time anyways I did some small tests and even if you do that bandied that every scratch in the or em improve your performance because you swelling inside the same request you could be accessing the same that there is a simple many times a day and a new caching that yes my question it inside the request you can only a few extra points so even if you are having alot of rights movement well my my I would say that you have to make sure the thing it was that the flora for system of maybe it will take some space in the crash of course but having that the matrix system this but it has many would go contracts and and well in it's very it's very low funding with you just things that the city police will people and the obligation gets much faster for most of the use cases of course if you have some specific things you can use their low-level API over again with rational and and matching in in in specific places or disabled some tables for a commodity to your own based use of workers with as low stuff
later sometimes you have to those stuff that this is role would be CPU bound so the CPU is working out because I don't know you have little generate a PDF put inside the acid 5 of a this kind of thing state out of CPU you don't need to know that a single OK that be Soviet to do yes you agent media to be used on data that in time and jobs system where you their stuff on and you believe that and you will have some your application service of course but then some workers and these work we guassian run test OK the task can be in the in any kind of that's not going to be around sometimes you have I don't know you have
about like and and the cost and and that's and that would be slow if you put it in but you you don't have to wait for this blocking innovation so it can
be done later OK binary and if you will if you want to improve the performance you have to the these slow staff an analytic tool on other place this is also a very basic Dick
that humans this if you see you just said these the settings in the younger siblings and you have 2 options for number system sessions what for system sections by the following general will say this patient Indianapolis OK that means that each time a user goes in the you would do we do that that's that's a make sense I mean why you got half of those in in the passion and
that's it so the system the system it just keeps it in the cash and I'm wondering about is the leader in and they use will
be locked out of your application but if you want the system it's very similar its caching their reads but then it was right OK it once it's not so often as the default settings about it it would eventually right there this session steel the rich will be avoided persistent connections via going to that of other agenda setting that by default is set to false I know you have to to enable the market in the sense that in our connection to the database standard procedure for item of 60 seconds otherwise it will not stay in connection on opening the game and promotion of and you can set it to true and then needs for every but connection I think it's better to close the connection and
after a few time because of you are finding the true story to with that so that servers or whatever it was wrong and it's a connection the connection so open your craft travel because of the workers would be able to enable of 1 we would open it should be should be said for I don't know I mean what they mean or something like that the important thing here is not doing a lot of connections on that I mean the same 2nd in thousands of connection you want with that things OK this is performance about scholarly UAB during summer university identifier
and right before and yeah my default general use normochromic sequential idea so the 1st row will be 1 the 2nd 1 which will from you these are different and unique identifiers are not sort them out that and that incremental so each time I really each that run them the tons of quality should use it's operated and it's negligible so it will not collide even if it collides and you will get an error in the saying all these these he
already exist the advantages of using you radius you wouldn't be the uniqueness so you won't have conditions what happen
here you have propagation service that there is gets connected on the are different than from from that it's as readers or whatever and you put half as new user ID from the fight i'm unit is connected in management in the teaching reading and that user ID if I say maybe what happens then you topical thing you have permission and that's not that's not nice of securities and very well index and because they are using native fields they are using hexadecimal values so it's not looking for a string of a it's it's something very very well performance so using the radius from the
beginning makes it very easy to that they reached shattering and is the the field of this then later you you will have to go out that there is a migration to you what the radius and the more they understand ideas in other places and in defining these and it's a crappy going to fill all the foreign key is changing these is so these are the beginning of your of your project and then when you want to travel surveys it will be much easier abates wrote this is no best validation but this is important anyways
so this used to be at bigger problem because right now we have seen jungle 1 in the paper we call the PDT options and scenes 1 the name with half the balance option before that you have a little different facts to avoid 1st commemorations if it's then you have to wonder if you have 1 of the main information for all that you can have tens or hundreds of migrations in general in general when the 7 and consolidating their migration into a single 1 question on what you may wanna wasn't possible in general 1 that they did it would better but in running on the migration to make them that this very very slow so when you run it there's just use the candidate and we know the nation to be run in parallel this means that it's this case will be random violence and the beginning date date unit their system with great is the 1 that there's many that the
research you combine these combined this with a view that evidence is really very fast and in each that it was that running that that they get this cases also for fast as this you can disable things that development
using example watch me that what's out in this funny and I suspect that what that because if you have the the was doing lots of things that he that's always a new ones and for legal boldly that race or whatever and those with bound to do validation to authentication this kind things instead of application it's not very different but anyway so you if you not just big enough to remove it from the and that was fashion this is a man in the analytical mentation use factors and the 500 samples that the sum of money it's not valid for production but for
for the unit test it's not because you're testing their possible process that testing then use of latent sample or some of you can disable looking with just
1 line also smoking whenever possible mocking means that instead of going to an extent cities and and that the reason it's comparable running out national program you want to write them all and that simulates the it's it's these external of so in example if you are connected to 1 my from S 3 2 of that exist and that I know I have sometimes inside your unit tests that will be slow if you more and just people go find some that across system or in memory audience that no 1 whatever and it will be much faster because you will have little effect of going to to the of time also for the titles of the of the unit that it's better to put this on your you right not the extent of sentences
that would or would not be working so after all of these conclusions the 1st thing you have
to do is to monitor commission to find their what makes ones found optimized formerly there connect both for the easiest path that 20 per cent of the alliance and spend 80 per cent of the time so find lines go for those lines and then try to optimize everything because you don't to want to optimize every line that the
principles and once you've also fix the bottleneck you have things that they can personally but now in the remaining 20 per cent they've 2 % of that will be In another mechanics so you have to keep doing this again and I can write that would be are you extend other sources and
efficient young the conditioning so some people a class a section on on that form and so on that arrays scholarly did vehicle of all high-performance younger and it will be very would it's very oriented to production systems will fire well performance modern scholarly the scholarly things also this is some must have if you have gamma systems in in production in those who everything in in my talk I have focused only on the younger things in this room you will see about other things about using a endings for proxy bound external systems that you can use to make it fast food so you
don't scale general only with general things but also with experiment things are Aberer never local instead I'm engineering instead and they say
it said that is general projected gradient direction all what a standing on the history thing and the the Boston area a lot of new faces and a posted follow how the increased on their well on
the systems when they started when that within the application on a few years ago when faced both of them and they are posting and things all the other time singing is unknown so I ended up science of these is investing to they problems qualities is undecidable Mengele
you can be here all although for the plane ligands in understanding image should not be sizzling to University and and they say how much time does it take to go to what a lot connections in there 18 you
know I think that the same local connection from Europe to the United States helmets and this paper to write 1 megabyte on the front right on and this is the fact that the read with some as necessary to read from memory from another machine in here that the sense that in the past and 1 everything how to compute the in in inside the CPU comments this is they run and the structure of the them is whatever these resources very important because in it happened to me I thought that an example and going to their local have great with the fact that that's going to to an extent man machine in this and that the center of the it's it's not it's not through going through another machine we with centered what connection in the machine has the main memory is much faster than going to the front right so you have get these numbers and and and they have and and accommodate them and that's it thanks for attending I know
there's lighter requested that lecture an athlete ratings we are looking for engineers and that the scientist's feel free to contact me OK and that's it now if you have questions who knows
anybody of nobody understand anything I think this is a yes you and I liberally so some of the problems I deeply offend so summary is is respected so memories and Medusa labor and for me by Dan that can happen of course if you want to study and that 1 of the you I have distance you I liked it a lot about the history I'd go with the the assumption and so he said it was good enough but of course there are many different systems of course EDU jobs are not thinking together yesterday today but if you need more performance that assistance things OK so if you have any more questions and for that we just grab and you got the break during lunch and you'll be happy to answer all of them