 Hai, guys. Saya Steven. Saya akan bercakap tentang budi segera. Saya seorang Singapura. Saya seorang Singapura dan saya dari Singapura. Saya sebenarnya sedang menikmati servis nasional saya. Sebab itulah saya tidak dapat menghubungi konferensi Rubi semalam dan pagi ini. Saya hanya menjadikannya untuk menghubungi tengah hari ini dengan jangka. Seperti yang anda lihat di gambar di sini, hanya untuk menghubungi ini untuk anda. Baiklah. Saya hanya menjadikannya untuk rekod video ini di YouTube. Saya sebenarnya sedang menjadikannya untuk penerbangan saya untuk datang ke sini untuk bercakap. Baiklah. Ini adalah untuk rekod. Baiklah. Baiklah, sedikit tentang saya. Saya Steven. Ini adalah profil saya. Saya adalah penerbangan saya. Ini adalah perniagaan saya. Kami membuat penerbangan Rubi yang hebat. Saya juga membuat penerbangan Rubi di Ho Chi Minh. Jadi, kami akan melakukan ini pada suatu hari yang pertama pada setiap bulan. Jadi, jika anda di Ho Chi Minh, tolong beritahu kami. Baiklah, bagaimana aplikasi real-time? Sebenarnya, hanya mempunyai aplikasi yang tidak perlu memperkenalkan aplikasi untuk mendapatkan data baru. Yang pertama yang kita perlu lakukan adalah mendapatkan aplikasi web. Ini dapat diperbaiki dengan mudah dalam kabel Action Reals 5. Tetapi itu tidak saja. Ada beberapa kecuali. Ada beberapa kecuali yang kita membuat mengubah, mengubah, mengubah dan ia sangat mempunyai. Dan kemudian perkara yang kita perlu lakukan adalah melakukan semua aplikasi. Kita perlu melakukan aplikasi yang terbaik untuk mengubah kecuali kepada klien yang terbaik. Dan kita juga perlu melihat kecuali reaksi. Apabila aplikasi cukup kompleks, akan ada perkara seperti satu perjumpaan model yang mengubah model lain, dan setelah mereka mengubah model lain lagi. Semua kecuali ini terjadi kerana kita cuba mengubah dengan kecuali. Kita sebenarnya cuba mengawal kecuali dan mengubah semua data. Dan dengan semua ini, sebenarnya ada cara lain untuk mengubah semua masalah ini. Kita boleh cuba melakukan pengalaman kecuali yang sebenarnya cuba mengubah selanjutnya tanpa mengubah bagaimana untuk mengubah. Kita tidak perlu peduli bagaimana kecuali data atau kecuali kecuali. Jadi mari kita berikan beberapa kecuali. Seperti kecuali kita mengubah reaksi. Okey. Jadi ini adalah sebuah kecuali tentang reaksi. Jadi di lantai, saya mempunyai komponen reaksi. Dan apa yang ini buat adalah ia hanya mengubah mesej yang ia diberikan. Jadi kita hanya perlu berkata, jika tiada mesej, saya hanya akan menerima tidak ada mesej yang digunakan. Dan jika ada mesej, saya hanya akan mengubah. Dan diberikan sebuah kecuali, komponen reaksi akan selalu mengubah setelah kecuali kecuali. Dan apabila kecuali kamu mengubah, reaksi akan mengubah segera mengubah. Jadi ini sangat kecuali. Kita hanya perlu berkata bahawa kecuali kecuali akan mengubah. Dan kita tidak perlu berhati-hati seberapa kecuali yang ia mengubah. Jadi kecuali berkata kecuali kita, dan kita tidak perlu membuat semua kecuali kecuali kita, memperkata, memperkata, memperkata, memperkata di sini dan di sini dan di sini. Dan kemudian kita dapat melihat kecuali kecuali kita, dengan jelas. Dan kemudian, kita perlu menggantikan banyak data yang berbeza dan tinggal di depan kita. Dan kita cuba menggunakan kecuali yang ia javascript idea. Jadi dalam contoh ini, dalam contoh ini, kita ambil perjalanan yang sangat fungsi pada perjalanan keadaan kita dan keadaan kita. Dan apabila kita mempunyai perubahan, yang ia apa yang kita panggil, kita mengambil perjalanan, yang kita panggil reducer, mereka akan menggantikan perjalanan dengan betul dan menerima. Seperti di sini, setiap perubahan yang baru dibuat, kita akan mempunyai meskipun keadaan kita dan menerima. Dan kita ingin membuatnya terdapat. Baiklah. Dan menggunakan perjalanan keadaan ini untuk menggunakan perjalanan keadaan kita untuk menggunakan perjalanan keadaan kita. Kita menggunakan perjalanan keadaan kita, data atau mutasi sangat mudah untuk memahami. Dan ia juga membuatnya sangat mudah untuk menggunakan perjalanan. Okey. Dan boleh kita sebenarnya menggunakan perjalanan keadaan kita untuk keadaan keadaan kita? The answer is yes, and we can use it to actually solve the broadcasting messages problem in real-time app. Ya. So in broadcasting messages, in order to create, update and delete operation with the database, you often need to update the views, what are the different changes for the clients, what is needed. And all these broadcasting messages will be found in your active record, active job, callbacks, all over the shop. Alright. So we work with RittingDB. It provides us a decorative style to broadcast the messages. And this is a sample code in our Action Cable Channel Room. Okey. We tell RittingDB for any changes in the message table that has the current if the receiver has the current user ID, please stream to me all the changes. Alright. Just broadcast to me all the changes. So we just say what we need and that's decorative approach. And this is a sample that what RittingDB will actually stream it to us. It will tell us what's the new value and what's the old value. And then our redux will take care of the state change management and then after that you will pass a new state over down to our React.js and they will render it accordingly. So everything is decorative. So in RittingDB we take a decorative approach towards broadcasting changes and we can we can keep all our broadcasting code inside our channel subscription and it makes everything very tidy. Okey. And it's very easy to understand which client, which user role needs what kind of changes. Okey. So wiring all of them up we have our React.js which is almost like a pure function of the view. Okey. And then we have our redux which is like a single contains all the state and you manage all the state. And then after that we still have our Rails doing the business logic and holding the WebSocket connection. And then we have RittingDB which is like a single source of broadcasting. Okey. And with all this we have the benefit that we are able to reason our bug very easily. Styling errors, data errors, logic errors, broadcasting errors we know where to find them. And then it makes doing real-time app development easier. And when it's easier it is more fun. This is some resources for you all. Thank you very much.