Merken

Developing and maintaining a platform with Rails and Lotus

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
that the the the the the test I think you're much for coming of all of you I know the last talk actually the 1st start after lunch and the last day so I'm pretty surprises the people going to the top so thank you very much for being here today it's really really an amazing opportunity for me to be here because of because it's based on and because I work for a company that somehow was book uh 1 of the ways conference so it's really really super excited we here then we talk about European them and thinking about the base and an army as you can see the tide is slightly different than the I we have publish on the on the program because by the time I propose the talk and talk was accepted the framework change the name and so that's why you can see like a rise and a handout today so I Benjamin mentioned Lotus but actually notice is army so they keep in mind this new meaning now yesterday was assignment was trying to find a way to break the ice because money really really a supernova Islamist stage and so was study with my co-workers and I was like what can I do and they they were sent to me like we have can there was like yeah they can work in a state which is a very wide enough
so I will us that that the title when I make sure that all of you are not focus and then my attention I by just playing a new game which is uh throwing
catch the can this so is off where would not leave anybody but here we go can take some of the candidates the but theory of yeah now we have not been that the in the front here here and over that of we have more out of the way toward this they noticed that the goal you you have to stay focused have the catch that anyone and throwing them again that that's the so
mining it's in I worked for the simple my nickname is what was pretty much where heat up data and then I will for the in simple which is a company that provides the in a domain name registration yes hosting and this assesses the uh now you might have a not heard about us but
probably you heard about some of our amazing so we provide a service to regions so if installed any of the genomes the user with structure we provide service for phrase commands and many other services including outrageous yeah now hybrid before I start getting to the core of my talk I have a very important public service
announcements this is not my birthday today now I add 19 I presented you won't get this joke but I know at least 2 people and they would get that so you can ask explanation of why wasn't really important for my safety descended my OK let's get started to then and stuff like that so they
would tell you a story and this is a story about a future we have been working on for a least a couple of years that the so what I wanna do today is that will assure the decision that we made during the idea of this feature and I wanna show you some of the behind the scenes that uh the CVD the adoption of the decision that we now the the stories about and you component or system which is a new version of the API API version now it's not gonna be another talk about building DAPI API with raise being other 4 so if you came here with uh did you have a muon about being the identified but of course I had to spoke about some experience in our experience will be close enough to the idea of a DAPI now we had been providing API Indians simple since the very beginning system doesn't that that that really core component of our our service and our customers uses our API for out by the reasons for example registering domains or a provision in new units records for shaft or purchasing is assessed certificates now the way people interact with our infrastructure back in 2013 and 2014 was I'd say traditional way so we have that in simple application and we have like a know monster and the set of traditional but we wanted to do something different we wanted to of the extend to provide to shift the focus from like this and a set of API toward the idea of not a tool kit for beauty things around and simple and so in 2006 thing action 2014 we study being gene our API and there's so as of today we still have the standard set of the API an application but he also started offering a while as we say often levels and the official their clients in different now the interesting part is that besides the clients that our efficient variants of knowledge of different languages but in addition to be pretty much the rest of the things you can see here are designed to deal with OK so now they should be
more about the background and what I wanna yeah show you today is essentially at 3 different messages the first one I wanna shared with you today but again simple approach we need a race but I will not presented the enemy framework which is the framework that we use the knowledge to build this part of this new part of the of the in simple and then I wanna show you how you can use and non any other framework to interact with right this is actually possible
so let's get started with the 1st part of the presentation begins in reversed to race now our upload approaches that is different than the traditional raceway and that is that is because we have a a pretty large applications and um so it's and common as soon as you applications that going beyond the the standard raise blood application to face huge need of I'm having a lot of different needs within the same application like talking with external service of so that if you're applications that going you will likely keep the same kind of problems that money and so 1 of the key principles for us was to be able to cook to write code that we can monitor OK we have been in business for 6 years and we would be useless for even more years so the idea is that we need to have code that contain a for a long time so you can only change you can really have full control of your cold unless you brightly on book right I still remember the days when the transition between race to invite the tree and make a difference between the way that Jason was utilized so before we had like to uh the model that was the room of the Jason and then suddenly from raised two-way street everything changed when you can really go back and change uh like and 1 month DAPI that all your customers have you right so we wanna do is they you wanna be in control of your code in 4 as race is just another component that we wanna being control so what we do essentially is that every dependency that we use in the in simple is trapped behind a custom media as this is a list of a simple example here uh in some part of our code we need to do we for money additional so we use a library which is called funny that perform like addition and the modernization of phone numbers and that but then going and and calling for you that what we did is that we're up the phony library behind some custom so this is again simple for much now the interesting thing about that is that at some point this is the final code that you see at some point we had to introduce some widely numbers and the reason is because at full he was not catching some of that particular countries was not able to understand this country for number of formats and so we have to do is that we have introduced a wide and that was suppressing persuasive be done because we just introduce the within the module and we didn't have to go and change all the cold or the previous call always using the library so this is a very super simple example of how you can be a Europe you can improve the maintenance of your code just by writing and indeed all the code but the then going integer us so some of
entities of this approach is that sigh features things extensions like the white list can be introduced without really changing but the co-based encumbered be can be addressed in a single place and if you need to replace the underlying library you can do that in a single place rather than going changing all the single men holes and another really important component and advantages that testing does not required extends some starting now I do not know what's your code but our code this was using still uses a large number of stops and uh and this is an extremely monthly the 1 in the long run so this approach is much
more flexible in fact here's an example of another component we have another library will have set our code where we can avoid using the not so here we have all of which is 1 library that you know we get our custom DNS record called the innocent and the performance of solution and we have adopted behind the scenes we have not adopted that essentially describes all the rest we have test about that what we use investments or other than stabbing weakens fleet to this about it we can feed it after we rest that we expect in the test and then we have the goal but production after that will uh and rely on our going it implementation of ideas record and this is turned on by default production and this is an example of how we use that the test environment we can simply switch the best mold you can feed adopter way that kind of response that we expect and then we can test rather than it we have the full control of local we need to use mark because we don't need to mark the region that that we wouldn't of course some of the components that we have to deal with that these pictures records in that particular case we have special guidelines from
the record sought his a few ones for example methods the fine activity like find where and so on cannot be used outside the model sense instead the models must expose a custom API to perform operational we call them the find so we have a specific objects that are called finders caldbecks and not allowed anywhere except for that integrity and the cremated synaptic record that can be used outside the those or so in the cold outside the model uh and so a decoding application on interact with those fibers and finally scopes can be booked directly but they are used just to compose queries within defined this is an example of a find
of we have for example in implementation of customer integer for defined by Donoho meaning you had the problem that the full find version uses there and out increment he opted out of its but sometimes you need strength in to search for a string so you really well derided for the fine because other libraries of lagging might rely on that specific behavior so this is an example of a custom defined and then this is an example of a different Find that use of mediation of looking for example we want the to the to be not case sensitive during the the an example our default schools of another example are the full others you really wanna and for all this in the model because of the in other places you will have to have you overwrite the defaults and the example here is when you have you wanna have previous that instead of returning at the recommendations the terms for example and they are not all those kind of methods and then we have the last 1 which is at a specific implementation of the not found when we raise a castle Message rather than the default 1 inactive record because the default 1 that's record that includes information about the creative of words in the when it's uh not all these code allows us to a and b independent from the underlying implementation of all active record and improves our maintenance of course these
guidelines are there's a lot of years and experiments and discussions they're not installed indicate changing and evolving during the in within the team based on the experience we have and that's why also would
take a few seconds to say thank you to all the key member of the simple for contributing to these guidelines for contributing to the quality of the of the world but a lot any time so long
and here but it is expected that none area and here their families and it was a mistake and all the that but growing up instead of presenting it but they based it wasn't that's next that these
why content indices last uh it's essentially a different approach that we have in the in simple to structure our application of traditionally if we don't consider the view part traditionally your application have layers you know the model and perform but again simple we essentially have fallen right
so we have a and the controllers we have the mothers in in the middle we have comments and services and then explain a little bit what uh what are the needs for these uh years now this is a request OK the users perform an HTTP request and it was getting to be 1 API request or a normal request by the request is sent to the control of the code the controller handle the request and he can be erased controller or it can we really have to a but that's been then it is for now the controller handles the incoming request that income quest by day the input passes the output positive parameter stops lawful request and authenticate the request uh but what's important is that the controller has no business logic this is an example
of a controller so you can see this is typical of most control we have action we have to create action and as you can see that it's really really small and tiny compared to the normal kind of control you probably have seen in applications and they're just for you to knowledge this is the real code from the domain create control of so it's essentially domain is 1 of the core component of our applications so you can imagine that creating a domain is 1 of the most complex part of our application steel as you can see the control is extremely readable is extremely buttons shortened himself line of code but what he does that delegates command passing the parameters that we expect to get some idea out and then if the response is successful then renders the page otherwise and some of different page where we ask the user to provide more information the that's it that's all about the control then the next layer is the command now
commence encapsulate the user business logic for us so we have specific operation that the user can perform and in fact other companies and libraries have a similar notion and a call them operations that we don't call them operation because of this problem but uh yes so that's essentially commands uh we you can you can think them about operations now commented only delegate to lower levels and this is always the same rule of control as you've never seen a controlling race calling and top that's the same for the command in our application a command can only go down beyond in the past you can call another comment
and this is an example of a trusted area or recommend the single-mindedness of before but as you can see there and some includes that creates that the underlying structure of the command and then you have some preliminary 1st level business logic by the addition of so here's where we have the 1st level is this logical relation then we have permission we have roles uh after the main successfully created using a service so we talk about this later on after Romania successfully created using the service we perform some extra operation for example we try to keep the the creation of the main we send out notification about creation of the domain all those kind of things that you are probably used to see as callbacks in model but I can tell you that as soon as you have that those insult conducted is within the model would be a you have huge amount test them intermontane them in Europe which uh the command never raised and it commenced never raised at OK what they do is that they have to turn our result that as the result can be either successful or unsuccessful in that if the result is an exercise unsuccessful has an error message and even more importantly your message has to be a user-friendly and message like kind of exception message and sink is we have an exception that we rescue that it that we try to provide our meaningful mean for a message but then we have a
service is not the services of the call all our business logic which service is essentially a public may contain Spartan metal that represent the business really the single unit of operation that can be performed in our application uh so example of services for hours are the main so these the 2 factors indication servers in a simple problem methods within those services artifact of education that enable don't disable uh the not indicated in so so you can think about every single method is essentially a small unit the single action that a single API that our application exposed to the external environment now the interesting thing is that services I say almost functional in the sense that they don't start in state services don't have any state this is really important for us because it's really a unreadable implementation services get good and then transform the input at the back of the young knowing that that
this is an example of a service so as you can see by the creation of the service uses dependency injection to get some of the other services that the is interacting with and this is really helpful where we have to isolate each series in the test suite and then uh we have several different public methods we have to create we have that the lock and this is 1 example of the so the creation the creation what does that mean uh interact with the models take some attributes and then creates the object and then interact with other services that the other thing that's where the interaction happens a service can interact with other services and after that the service is expected to occur on that is and of course services can raise exceptions and there no there those exceptions are expected to be captured in the in the but this is another example of the service the long service that was used by the domain servers and the as you can see our method can call other methods so for example here we have the creation of own that created that uses the creation of the system records and the refresh of the law because as you say you can expect every single method to be a single touch a single operation and so that specific operation can be reused elsewhere in the in the applications by 3 important to code the specific component in 1 single ways that we can test the code and in isolation and then finally we have the models uh agony nowadays models are still active recomm all this but there'd be different so the essentialist an obstruction of abstraction for the storage engine and they contain only methods that are useful to persist information to another place at models you have no business logic and motivational right walls and then uh auditory got the model action and then we don't use carnivore callbacks as state except for that and think this is an example of a model as you can
see for example take the move to account and now the most outcome and as you can imagine is shifting a domain from 1 account to another it's a pretty huge task within our application because it involves a lot of business logic behind we have to change the billing information we have to increase the number of domains of best known that particular count but as you can see there's not cold here that deals with that everything is happens in the service we only um we only deal with the persistence of the information within about is uh and that prevents a huge model like the main 1 to become like thousands and thousands of lines including every sort of kind of operation including I did not cost with accelerates GP services which 1 really belong in so some all at this point you
might be wondering why why you should have all these level of complexity in fact we should even with smaller applications were all this level complexity but still you might wanna have something in the middle between the models and the follows that have stores logic of your of your application now if we look we just consider the commands of the services and the models uh you can actually understand that you have we essentially called the entire business logic of your application into an environment which is completely separate from the context of image keep your right in even several from the context of our place controller and there we actually do that once and for the so the core is codified in ISM unthinkable in dependent set of libraries because after all our models are still accurate models right so we don't have control over those libraries because they realize that direct structure record can make changes behind the scenes that will affect our emotions our code because we rely on the business logic is essentially called within the comments and assumes that the reason why we have this kind of abstraction and so that allows us to have start shifting the focus in um introduce different kinds of ontologies so for example the controls can be raised but then you can also introduced by the law and only for you can reduce any of right at that point once you have that specific isolation your code you can easily introduce something uh and more things in the front and you have to refactor you have to change how to code of European visual us so this is
essentially a super simple simplified example our infrastructure for the what you should uh as you can see we have race in the front we have another framework which will talk a few seconds and I mean there we have the commands we have the services and we have all and you can see the form of a specific request coming from the controllers going through a specific remain a single command that will delegate to 1 or more services and then each service will interact with a models notable so the next a hand can mention Hun army
a couple of times during this dog and I wanna talk a bit about how I mean why we use and I mean what he is known results on as a say was formerly called lots and it's an emergent be framework that was created by a friend of mine who have a look at this and this framework in a way that I encourage developers to use who didn't get you can see that if the check of that uh not only you the memory you need to check how the source code and the army was was implemented no 1 . 0 yet but really stable and it's really mature we have been using that and production ideas you before almost linear so far and is
not just a simple single effect you know it's actually have full frame is made up of is made of different components so you have the application you have about the objections to the use of the models migration helpers tomatoes Bahasa and the common law by just pretty much similar to race in terms of focus in terms of the components and the good thing is that you can just use some of them have to use all of them in fact been seen in the D. N. simple API we use the outer and we use the engines some of the
key features of anomie that I know are modular modular architecture which means you can use the components you want to use all of them are just a few of the union an existing annotation of our design Bayes and composition that encourage you to use an object-oriented encapsulation so good development partners and even more important in tennis friendly approach of and given that could design behind the structure of Lotus you can really test specific Lotus component in super easy way so
the question 1 question is why in simple adopted and and the rather than going through different from source just staying with rates for example so race provides as you probably know a way to format the same response in different ways you know you can return from a control even ontologies on the response to the nation in a responsible for that now the problem is that these approaches monument thing but for a large and complex complex application because you might have parts of the changes in the view that will affect the API right so you really want to that of the larger applications so the choice at this point is even if you needed to create new controllers so long your controllers and had those controls just to be with you in the eye or go with them and that at the different and then because racism as a huge set of libraries and because we want to have control over what we decided not create more rights and so the normal choice at this point is not up as you probably gets us you know there are these a nice framework but have a kind of a love relationship with it because it's super nice as Fisher for prototyping but as soon as your application starts growing and you have like 30 different Roberts or 40 or 50 and then you have helped resting on from models and so on uh uh suddenly not your synoptic edition will be really hard to obtain and we hope that um so at that point you was starting at you uh a few months before we started dealing with that you can study is an adventure in building a new framework called Lotus and I knew gasses so while I was working within the breeze project so I decided to give an army of outside and we originally started with sonata so we implemented 3 4 API references in on time and then in less than 1 day I change watching a few hours I a switch and implemented all those methods in how many men I had them running in parallel for what was 1 dB running benchmark and that was extremely stable and the way we can test and to be true to be actually we did a idea even past this in African follows this enough implementation because was sort of the point I was just prototyping the I whereas when a switch to notice the testing was so easy that along with the library along with implementation was opposed by so that point we realize that army was working really well for us and why we decided to stick with that and essentially view the whole uh and they PID to wind up part of the platform with the with the OK with
and then this has seen more and it was limited so that the benefit and its but the system somewhat that the function of the but wasn't but they last for the the presentation
how we use and I mean in part with various analogy but is looking for and is the 1 thing attention my presentation as possible that the job OK so get the picture that presented before had hours to reach this goal because as itself we speak about the the the control of part with the rest of the of our infrastructure so we didn't really have to continue about our could do with that wouldn't solve anomalies
essentially are like application Monday on the rise controller we still use the main the prime controlled to orchestrate their army application as you can see at the top there is the the race modified we have a school for the API version of actually have a school for the API we have a particular school for you the Irish and so and then we have the out of the Roberts so an army has its own about and that's where we define uh the rules for granting request with Indian friend and if
you can see that you can see that so here we have a part of an example of the same controller implemented with race and implemented with high enough so or on the right side you have the enemy implementation which deal with the API and on the left side you have their race implementation which is essentially our front end up as you can see the code is pretty much the same and so because of the uh different layers that we have in our application and because of our control of being so small we we did it was really easy for us to start implementing DAPI with with and you can see called the command we have custom objects in order to deal with the parameters we have custom serializes as would you because before because we love follow of our code so we don't use any and I mean uh specific or a specific library for the for example with parameters or by mutation or the serialization of the rest so we wanna be in control of that specific part of the world and this is an example of how our controller canonical follow these structure in the section a really interesting the park were unanimous in a single action is a class so it's a it's an object right so we don't have a single controller like conveys where every single method is different the action and you have to do we have a method that are that are interpreted as actions and by methods and so on so in now every single action is a class the class has to respond to our method called whole indices where the the logic of the application happen and that's pretty interesting because if you have a specific action the has to deal with some uh non-default operations that can just create a mentally can just override the standard implementation of the and that will that will be and in this case you can see we have before you so we do that by nation of the subscription whether the account is in good standing for for any kind of operation and the heuristic to 1 is to enable the was privacy and the other 1 is to disabled which prices and then and then we also has a nice the said to come from Europe the controllers so this is the example of you can include modules Monticello essentially just because the can reuse and for example here we have shared information shared methods across all the different forms that we use for each OK so
gravity of my presentation of my message today for you is 1st of all this is 1 of the q principle Indian signal and we like to experiment new ideas to try a framework through the experiment new approaches and you should do the same I take the time every once in a while to do some research and development that because you might be the surprise how many new technologies and interesting emerging technology and find out of there the 2nd deep I have for you is getting influenced by other communities so I'm meal to database conference talking about race and other frameworks and the top after mine would be about the different language so you have to be influenced by other communities any can be all the frameworks or can be communities youth around other services services you use for example we have an amazing experience when we started and writing code that was interacting with a geek up or even this lack of examples that by the way is the lack of various of simple super quick announcement of for all of you that ideas with customers we just released I as like implementations like I don't sleep and manage all your domain those like and I want to use but count and I was anxious to ensure that the signal and is a case is the essence of the slack but that today we got the news that the like integration was approved in this life that activation in that enabled that directly from the lack of today get the plant for you these this is
really important getting influenced by other programming languages but In the last month in the last 4 months I was studying more in the 4 different languages in part to be at all the uh instantly PI so I work in group the goal of the links here and I live in PHP and so uh and that was really wide open for me because interacting with our language is working with our language is made me a better room before that I was able to deal with assumption do I had to deal with the information that was coming from our API for our application of our base and will be and I had to face the problem of dealing with that from other different so every once in every once in a while we should take a look at different languages because they won't be you if you want to use those languages in your primary daily activities they will make you that that particular is a better to relieve reporter of this is a credit for the usual at the beginning of my presentation and that's it for today so thank you very much
for being here if you have any questions and back you what
Beobachtungsstudie
Arithmetisches Mittel
Softwaretest
Systemplattform
Framework <Informatik>
Aggregatzustand
Spieltheorie
Physikalische Theorie
Computeranimation
Dienst <Informatik>
Domain-Name
Registrierung <Bildverarbeitung>
Speicherabzug
Datenstruktur
Computeranimation
Addition
Subtraktion
Digitales Zertifikat
Formale Sprache
Gruppenoperation
Versionsverwaltung
Kartesische Koordinaten
Physikalisches System
EINKAUF <Programm>
Software Development Kit
Computeranimation
Entscheidungstheorie
Übergang
Demoszene <Programmierung>
Monster-Gruppe
Dienst <Informatik>
Domain-Name
Client
Datensatz
Einheit <Mathematik>
Menge
Mereologie
Zusammenhängender Graph
Relationentheorie
Subtraktion
Punkt
Kontrollstruktur
Gruppenoperation
Zahlenbereich
Kartesische Koordinaten
Kombinatorische Gruppentheorie
Code
Framework <Informatik>
Computeranimation
Informationsmodellierung
Code
Softwarewartung
Programmbibliothek
Zusammenhängender Graph
Inklusion <Mathematik>
Addition
Systemaufruf
Mailing-Liste
Modul
Softwarewartung
Dienst <Informatik>
Rechter Winkel
Ganze Zahl
Mereologie
Hypermedia
Gamecontroller
Dateiformat
Message-Passing
Standardabweichung
Softwaretest
Verschiebungsoperator
Konvexe Hülle
Implementierung
Einfache Genauigkeit
Zahlenbereich
Maßerweiterung
Aliasing
Biprodukt
Code
Computeranimation
Demoszene <Programmierung>
Datensatz
Softwaretest
Endogene Variable
Direkte numerische Simulation
Programmbibliothek
Zusammenhängender Graph
Maßerweiterung
Programmierumgebung
Default
Retrievalsprache
Sensitivitätsanalyse
Versionsverwaltung
Interaktives Fernsehen
Implementierung
Kartesische Koordinaten
Term
Code
Computeranimation
Eins
Datensatz
Informationsmodellierung
Konsistenz <Informatik>
Programmbibliothek
Operations Research
Urbild <Mathematik>
Default
Stochastische Abhängigkeit
Abfrage
Integral
Softwarewartung
Objekt <Kategorie>
Arithmetisches Mittel
Ganze Zahl
Wort <Informatik>
Information
Modelltheorie
Message-Passing
Zeichenkette
Flächeninhalt
Refactoring
Zwei
Familie <Mathematik>
Computeranimation
Parametersystem
Bit
Sichtenkonzept
Ortsoperator
Kartesische Koordinaten
Dienst <Informatik>
Ein-Ausgabe
Mathematische Logik
Code
Computeranimation
Dienst <Informatik>
Rechter Winkel
Gamecontroller
Mereologie
Gamecontroller
Indexberechnung
Modelltheorie
Funktion <Mathematik>
Domain <Netzwerk>
Gruppenoperation
Kartesische Koordinaten
Mathematische Logik
Code
Computeranimation
Homepage
Übergang
Domain-Name
Endogene Variable
Programmbibliothek
Zusammenhängender Graph
Gerade
Parametersystem
Nichtlinearer Operator
Systemaufruf
Volumenvisualisierung
Schlussregel
Dateiformat
Gruppenoperation
Mereologie
Gamecontroller
Speicherabzug
Information
Normalvektor
Resultante
Domain <Netzwerk>
Gruppenoperation
Implementierung
Kartesische Koordinaten
Dienst <Informatik>
Mathematische Logik
Gerichteter Graph
Computeranimation
Übergang
Domain-Name
Informationsmodellierung
Einheit <Mathematik>
Indexberechnung
Datenstruktur
Softwaretest
Addition
Nichtlinearer Operator
Fehlermeldung
Relativitätstheorie
Mathematisierung
Einfache Genauigkeit
Systemaufruf
Ausnahmebehandlung
Ein-Ausgabe
Teilbarkeit
Arithmetisches Mittel
Dienst <Informatik>
Server
Programmierumgebung
Message-Passing
Fehlermeldung
Aggregatzustand
Maschinenschreiben
Domain <Netzwerk>
Punkt
Gruppenoperation
Zahlenbereich
Interaktives Fernsehen
Kartesische Koordinaten
Mathematische Logik
Code
Computeranimation
Task
Domain-Name
Informationsmodellierung
Datensatz
Zusammenhängender Graph
Speicher <Informatik>
Transaktionsverwaltung
Gerade
Attributierte Grammatik
Softwaretest
Suite <Programmpaket>
Nichtlinearer Operator
Abstraktionsebene
Reihe
Ausnahmebehandlung
Physikalisches System
Quick-Sort
Objekt <Kategorie>
Dienst <Informatik>
Einheit <Mathematik>
Rechter Winkel
Injektivität
Server
Attributierte Grammatik
Information
Zeitzone
Aggregatzustand
Subtraktion
Punkt
Mathematisierung
Kartesische Koordinaten
Dienst <Informatik>
Gesetz <Physik>
Mathematische Logik
Komplex <Algebra>
Framework <Informatik>
Code
Computeranimation
Richtung
Übergang
Demoszene <Programmierung>
Bildschirmmaske
Datensatz
Informationsmodellierung
Gamecontroller
Programmbibliothek
Speicher <Informatik>
Datenstruktur
Ganze Funktion
Bildgebendes Verfahren
Ontologie <Wissensverarbeitung>
Abstraktionsebene
Zwei
Kontextbezogenes System
Fokalpunkt
Datensatz
Dienst <Informatik>
Menge
Rechter Winkel
ATM
Gamecontroller
Speicherabzug
Modelltheorie
Programmierumgebung
Sichtbarkeitsverfahren
Bit
Rahmenproblem
Kartesische Koordinaten
Term
Gesetz <Physik>
Framework <Informatik>
Computeranimation
Data Mining
Komponente <Software>
Informationsmodellierung
Migration <Informatik>
Zusammenhängender Graph
Softwareentwickler
Soundverarbeitung
Quellcode
Biprodukt
Migration <Informatik>
Fokalpunkt
Sichtenkonzept
Gerade
Gruppenoperation
Objekt <Kategorie>
Festspeicher
Modelltheorie
Subtraktion
Punkt
Mathematisierung
Implementierung
Geheimnisprinzip
Kartesische Koordinaten
Systemplattform
Abenteuerspiel
Framework <Informatik>
Computeranimation
Informationsmodellierung
Endogene Variable
Vererbungshierarchie
Programmbibliothek
Zusammenhängender Graph
Datenstruktur
Softwareentwickler
Parallele Schnittstelle
Auswahlaxiom
Benchmark
Softwaretest
Umwandlungsenthalpie
Architektur <Informatik>
Sichtenkonzept
Ontologie <Wissensverarbeitung>
Güte der Anpassung
Quellcode
Bitrate
Quick-Sort
Menge
Rechter Winkel
Mereologie
Gamecontroller
Dateiformat
Projektive Ebene
Computerarchitektur
Schlüsselverwaltung
Lineares Funktional
Prozess <Informatik>
Mereologie
Gamecontroller
Physikalisches System
Kombinatorische Gruppentheorie
Analogieschluss
Computeranimation
Programmfehler
Bildauflösung
Domain <Netzwerk>
Klasse <Mathematik>
Gruppenoperation
Nebenbedingung
Versionsverwaltung
Implementierung
Kartesische Koordinaten
Patch <Software>
Mathematische Logik
Kontextbezogenes System
Code
Computeranimation
Bildschirmmaske
Authentifikation
Gamecontroller
Programmbibliothek
Indexberechnung
Datenstruktur
Inklusion <Mathematik>
Modul
Parametersystem
Nichtlinearer Operator
Datenmissbrauch
Pay-TV
Volumenvisualisierung
Indexberechnung
Schlussregel
Dateiformat
Modul
Systemaufruf
Gruppenoperation
Objekt <Kategorie>
Rechter Winkel
Mereologie
Debugging
Gamecontroller
Garbentheorie
Serielle Schnittstelle
Information
Ordnung <Mathematik>
Programmiersprache
Videospiel
Gravitation
Subtraktion
Datenhaltung
Formale Sprache
Gruppenkeim
Implementierung
Kartesische Koordinaten
Binder <Informatik>
Kombinatorische Gruppentheorie
Framework <Informatik>
Code
Computeranimation
Integral
Codec
Domain-Name
Dienst <Informatik>
Mereologie
Vererbungshierarchie
Information
Softwareentwickler
Verkehrsinformation
Message-Passing
Computeranimation

Metadaten

Formale Metadaten

Titel Developing and maintaining a platform with Rails and Lotus
Serientitel RailsConf 2016
Teil 21
Anzahl der Teile 89
Autor Carletti, Simone
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/31507
Herausgeber Confreaks, LLC
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract This talk illustrates the development techniques, Ruby patterns and best practices we adopt at DNSimple to develop new features and ensure long-term maintainability of our codebase. It also features how we used Lotus to develop the new API as a standalone Rack app mounted under the Rails router. Two years ago we started a major redesign of our REST API with the goal to decouple it from our main Rails application and expose all the main features via API. It was not a trivial task, but still feasible due to the guidelines we adopted in the last 6 years to structure our Rails application.

Ähnliche Filme

Loading...