teleren/devto huggingface dataset:
Improve React App Performance - Redux/Saga Code Splitting-[ Part 2 ]
Tags: javascript, react, redux, flux
Published: 2022-04-25 12:40:56

In [Part I ](https://dev.to/rupeshpadhye/improve-react-app-performance-intro-part-1--528k)  Post, I shown before and after performance report of SaaS frontend app. 

Main bundle size was reduced from 5mb to around 1.5mb :partying_face: by following below approaches.
Let us deep dive how we achieved it.
  
#Code Splitting At Multiple Levels 

 React supports code splitting out of the box with `React.lazy`.  

:point_right: Don't load the code you don't need to 

 
:bullettrain_side: **Route Based Code Splitting** 
Route based code splitting means creating different chunk for  each page. e.g. If user is visiting home page web browser will only request required JS bundle for home page. 

![Route Code Splitting](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qvugsgu7u6i6t2tf6e5c.png)

:bullettrain_side: **Lazy Load Third Party Libraries** 
 Several third party libraries were added in main vendor chunk which wasn't required in initial load. 

:point_right: We converted the imports to async/await which loaded libraries on demand. 

 ![Third party Libraries](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/spbxuolv21gsn5242rlv.png)
 
Lazy loaded third party components with `withLazyLoader`. It  is the HOC wrapping `React.lazy` which handles named exports as well.  
 
![Lazy load react-color library](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ie7xhqc3j7s4t6ylfhvb.png)
 
:bullettrain_side: **on Demand Redux/Redux-Sagas**

Still there was lot of reducers/sagas code were present in main bundle. We dig further and figured it out as the app has  one root reducer which is normally generated by `combineReducers()` which was passed to `createStore`. Similarly there is root Saga aggregates multiple Sagas to a single entry point for the sagaMiddleware to run. Unfortunately redux doesn’t offer a built-in API to on demand load reducers.

We came across the [redux-dynamic-modules](https://github.com/Microsoft/redux-dynamic-modules) library. This library introduces the concept of a 'Redux Module', which is a bundle of Redux (reducers, middleware) that should be dynamically loaded. 
It is not actively maintained by Microsoft team though stable enough to use in production. 

- High Order Component for `DynamicModuleLoader` component 
![withDynamicModuleLoader HOC](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7tp4hz8qb8e294vc5mqe.png)
 
- Registering Required Sagas/Reducers for the Home Page
![Dynamic Module](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/70n2jgnjxgr6d1mjv98y.png)
 
- Usage in HomePage component
![Usage in component](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z6kc910ymdv3tn8am0u6.png)
 


:hearts: Don't forget to like, follow & share in your network if you are interested in frontend optimisation and want to make web better. 

Stay tuned for next posts :sunglasses:	 

WebPack Optimisation-[ Part 3 ]
Bundle Analysis & Keep Bundle In Check -[ Part 4]
How to build a proper array of basket data, sorting by category and merging items into one?
Tags: data, array, frontend
Published: 2022-04-25 12:39:08

Hi, I have a basket that isn't too sophisticated, basically it is not in any kind of order, meaning memberships can follow coke, that's followed by tickets, one fanta, one more fanta, etc. Basically in the order as the items were added to the basket. Do you have a good way to sort items first by category then group similar items, like 2 fantas, etc, or it only can be done with multiple array manipulation techniques? I feel like some recursive arrays should also be used here, merging 3 or more items together? Thank you for your thoughts.
The Best Object-Oriented Programming Languages
Tags: programming, languages, oops, objectoriented
Published: 2022-04-25 12:08:10

---
title: The Best Object-Oriented Programming Languages
published: true
description: In this article, we take a closer look at object-oriented programming and the steps programmers can take to choose the perfect programming language.
tags: programming, languages, oops, objectoriented
---

<h2>What is Object-Oriented Programming?</h2>

Before we proceed any further, it is highly necessary for programmers and developers to understand what object-oriented programming is and how it works. Object-oriented programming, also commonly referred to as OOP, is one of the most common and popular forms of programming today.

OOP was a drastic shift in programming, as this approach relies on objects and classes for the language to work. Both these constructs can be confusing for developers to work on together, which is why there is some confusion and difficulties. A class is basically defined as a software blueprint through which objects are created and then identified. Hence, we can summarize that a class is a template that assists in the creation of a blueprint.

We can simplify this further by taking an easy example. You can begin by thinking of an object as something tangible that you can touch. Think of a record, a phone or a cup – anything that matches the requirement of being touched.

Classes are then created to put objects into different categories. For instance, you can group phones, tablets and laptops in a different class called mobility, while you can group records, cassettes and CDs into a different class called music. These classes form the basis of OOP and help organizations take them forward.

<strong>OOP is based on four simple principles, including:</strong>

Encapsulation: Using this principle, an object can keep its current status private and hidden, even when it is present within a class.

Abstraction: As per the principle of abstraction, objects hide all interactions other than those considered relevant and necessary to disclose to other objects surrounding them.

Inheritance: This allows the software to create a child class based on the same fields and methods as the parent class. This cyclical development is natural, without errors or flaws.

Polymorphism: Finally, the concept of polymorphism is common in OOP and allows objects to take multiple forms as per the context they are being used in.

OOP makes it easier for organizations to collaborate through the development process and categorize things rightly.


[Programming Languages for Object-Oriented Programming](https://programmers.io/top-object-oriented-programming-languages/)
The 5 fundamentals to get right before getting started with serverless
Tags: serverless, cloudnative, architecture, cloud
Published: 2022-04-25 12:00:22


We have put together a list of five fundamental concepts that you must understand. If you take the time to absorb them you have a better chance of successfully getting started with Serverless. Dave talks through them in depth in his article with The New Stack and Fauna. You can check out the original article [here](https://thenewstack.io/what-is-serverless-first-in-2021/).

## 1. Serverless and Serverless First
Serverless has become a problematic word. Many people focus on Serverless simply being a way to describe a technology. For more details on what those terms mean check out our [serverless](https://theserverlessedge.com/the-serverless-edge/) and [serverless first](https://theserverlessedge.com/aws-have-published-their-serverless-breakout-sessions-on-video/) posts.

## 2. Reinvent your business model
Serverless is a movement. And it needs you to deeply understand and [reinvent your business model](https://theserverlessedge.com/the-north-star-framework-and-how-to-find-your-orgs-purpose/) for the 4th industrial revolution. Most people don’t understand this. And they don’t bother getting to grips with their business model. It is a fundamental step that comes before getting started with serverless.

## 3. Core building blocks
There are core building blocks that your org will need, if you chose to adopt and implement serverless. And even after you establish those core building blocks you will need to adapt to new [benefits and challenges](https://theserverlessedge.com/developing-for-the-cloud-are-you-wasting-time-and-money/).

## 4. Rise of the managed service
You and your teams will need to reorient your engineering approach for the concept of managed services. This will require getting comfortable, realising that code is a liability, and fulfilling expectations with flexibility.

## 5. Serverless Mindset
Look forwards to the future of serverless. You need to reframe serverless as a mindset that you and your org need to adopt. Adopting a serverless mindset is vital if you want your org to excel and deliver your customers [digital expectations](https://theserverlessedge.com/our-guide-to-the-aws-performance-pillar/).


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i37o4moz5ohbntxcgpd5.png)


We don’t do theoretical or idealised views of the technological or digital strategy you ought to adopt. Dave has over twenty years experience as an engineering leader. His views are deeply rooted in the reality of engineering for orgs that have accumulated large amounts of technical debt over several decades. Dave has travelled on the serverless journey. He has managed the ups and downs and lived to tell the tale, which he shares with you.
Membuat Program Operasi Himpunan (Irisan)
Tags: javascript, beginners, programming, set
Published: 2022-04-25 11:44:29

Hai teman-teman 👋

Kali ini saya akan membuat fungsi untuk mengambil irisan dari 2 himpunan dengan menggunakan bahasa pemrograman javascript. Fungsi ini menerima 2 inputan variabel yang merupakan objek dari kelas Set dan akan menghasilkan irisan dari 2 objek tersebut. Berikut kode pemrogramannya:

```javascript
function getIntersection(a, b) {
    const arrayA = Array.from(a);
    const intersection = arrayA.filter(member => b.has(member));

    return new Set(intersection);
}
```

Pada fungsi di atas saya melakukan konversi variabel a menjadi array. Lalu, saya menyeleksi anggota variabel a yang sekaligus juga menjadi anggota variabel b menggunakan method filter dan menyimpan hasilnya ke dalam variabel intersection. Langkah terakhir, saya mengembalikan variabel intersection yang telah dikonversi menjadi Set supaya tidak ada duplikasi data.

Contoh penggunaan:

```javascript
let a = new Set([1,2,5,6,7,9]);
let b = new Set([2,3,4,5,7,8]);

console.log(getIntersection(a, b));
```
Output dari kode di atas adalah

```
Set(3) { 2, 5, 7 }
```
Demikian yang bisa saya bagikan, apabila ada yang perlu dikoreksi silahkan share di kolom komentar. 😁
Smart Contract Developer Survey
Tags: opensource, web3
Published: 2022-04-25 11:41:11

Hi guys, we are Spanning Labs, a team of MIT and Georgia Tech graduates with years of software dev experience at Zoox and SpaceX. We are surveying smart contract development preferences. If you were a developer, please fill out the survey below. Include potential incentives, and your answer could benefit you in the future! Also, please feel free to follow us on social media (invitation link in the survey)

https://forms.gle/2kxA2a7rD53boB6M7
Modelo Cascata (Waterfall)
Published: 2022-04-25 10:34:48


**Cascata** é um modelo de processo de desenvolvimento onde  se deve planejar e
programar todas as atividades do processo antes de começar a trabalhar nelas. Neste modelo uma actividade começa após terminar a fase anterior.

O Modelo Cascata tem as seguintes Actividades:
- Planeamento;
- Análise de Requisitos;
- Projecto;
- Implementação;
- Testes;
- Manutenção.

A adoção do Modelo Cascata é aconselhável para projectos muito grandes, onde  os requisitos estão bem definidos e dificilmente alteram. Normalmente, estes softwares softwares muito complexos onde as actividades são sequenciais e demandam um gerenciamento em larga escala.

Exemplos de softwares onde Cascata pode ser adoptado:
- Gestão Universitária;
- Gestão Hospitalar;
- Sistemas Governamentais;
- Sistemas de Lançamento de Foguetes;
- Controle de Satélite;
- Controle de Aviações;
- Controle de Informações Espaciais;
- Sistemas Bancários.

**Sugestão:** Embora seja difícil de adoptar, é possível aproveitar algumas das actividades do Modelo Cascata e utilizar em projectos mais pequenos.


Actividades do Cascata
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vgmlnbs0xcvi9ss8cwqc.jpg)

Planeamento
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b080x33qzu2t8yjual4l.jpg)

Análise de Requisitos
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yg835pw0mlcxghikhaua.jpg)

Projecto
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/27vboo0zc7h30qbn5wgj.jpg)

Implementação
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8fj4ikjp0jwors4cngla.jpg)

Testes
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66t5t17lfptjtxzjcaar.jpg)

Manutenção
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zwcrbyubml95xx1pybxm.jpg)
Deploy Twinmotion with Make Live
Tags: unrealengine, pixelstreaming, metaverse
Published: 2022-04-25 11:32:41

---
title: Deploy Twinmotion with Make Live
published: true
description: New guide to show you how to deploy ArchViz Twinmotion projects.
tags: unrealengine, pixelstreaming, metaverse
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v9ywhz22fpvlgnpid9oo.jpeg
canonical_url: https://make.live/blog/deploy-twinmotion-with-make-live-pixel-streaming
---
A huge industry that can take advantage of [Unreal Engine](https://www.unrealengine.com/) Pixel Streaming is ArchViz. The ability to instantly share and present high fidelity 3D walkthroughs and presentations has never been more compelling. A popular piece of software used in this space is [Twinmotion](https://www.twinmotion.com/).

{% embed https://www.youtube.com/embed/nrduicS-kII %}

This week we have launched a new [Video Guide](https://www.youtube.com/watch?v=nrduicS-kII) on our [YouTube channel](https://www.youtube.com/channel/UC3zV1YOAMNjl9P8Nxt2LJkA) that showcases how quick and easy it is to deploy your [Twinmotion](https://www.twinmotion.com/) application with Make Live. Use the following Unreal Engine plugins with a slight configuration update to allow compiling for Linux (see video). Plugins are available on the Unreal Engine Marketplace for **free**:

- [Twinmotion Content for Unreal Engine Plugin](https://www.unrealengine.com/marketplace/en-US/product/twinmotion-content-for-unreal-engine-plugin-beta)
- [Datasmith Twinmotion Importer Plugin](https://www.unrealengine.com/marketplace/en-US/product/21cab2d84a794b7bab359eb1ba5d3e74/)

This can be incredibly useful for those wanting to create your own fully customised experience and features backed by a [Twinmotion](https://www.twinmotion.com/) project. Simply import your [Twinmotion](https://www.twinmotion.com/) project files directly into [Unreal Engine](https://www.unrealengine.com/) via the Datasmith plugin. Deploying fully customisable [Twinmotion](https://www.twinmotion.com/) presentations and projects has never been easier.

We hope that this makes sharing ArchViz that really stand out much easier for you and prospective clients.

Watch this space for our additional Make Live collaboration tools coming soon, allowing collaboration for ArchViz no matter where you, your team and your clients are located.
The Ultimate guide to iOS unit testing with best practices — Part 1
Tags: ios, unity3d, ultimate, testing
Published: 2022-04-25 11:32:19


**What and Why of unit tests?**

Let’s not waste time on what is a unit test and what are their benefits. I think you all know it but want to learn how to write those tests!  In case you want to know more about unit tests, checkout this lovely [article](https://x-team.com/blog/how-to-get-started-with-ios-unit-tests-in-swift/#:~:text=What%20is%20a%20unit%20test,if%20this%20total%20is%20correct.) by X-team.

In this article, we will build a [TODO app](https://blog.canopas.com/developing-a-todo-app-with-android-integration-testing-following-tdd-approach-part-3-of-3-57b41910ad99) with a list screen that allows a user to add and display tasks.

1. [SwiftUI with UIPilot navigation](https://blog.canopas.com/swiftui-complex-navigation-made-easier-with-uipilot-5b33279f3476)
2. [MVVM architecture](https://medium.com/canopas/android-reactive-programming-with-coroutines-and-mvvm-74cd4117df3a)
3. [Swinject for dependency injection](https://blog.canopas.com/jetpack-compose-dependency-injection-with-dagger-hilt-9578be3cc1d0)

We will have basic todo app ready at the end of this part.

For implementation or step by step guide, navigate to [blog.canopas.com](https://blog.canopas.com/the-ultimate-guide-to-ios-unit-testing-with-best-practices-part-1-c3a484b8dc8d)
Build a Unique Domain Hosting Environment for Google Domains with AWS Amplify
Tags: amplify, aws, s3, cloudfront
Published: 2022-04-25 11:29:46

![img](https://day-journal.com/memo/images/logo/aws/amplify.png)

### I built a unique domain hosting environment for Google Domains with AWS Amplify :tada:  

<br>

This time, we try using a ".dev" domain obtained from [Google Domains](https://domains.google.com) with AWS Amplify.

<br>
<br>

Advance Preparation

- Static site hosting environment construction with Amplify
 
{% link https://dev.to/aws-builders/build-a-unique-domain-hosting-environment-with-aws-amplify-3jl0 %}

<br>

## Set Up a Unique Domain with Amplify Console

First, set up a unique domain with "Amplify Console."

Set up a ".dev" domain obtained from Google Domains under "Domain Management."
![img](https://day-journal.com/memo/images/try-087_01.png)

Set up redirects and SPA routing support.
![img](https://day-journal.com/memo/images/try-087_02.png)

Click "Domain Management" → "Actions" → "View DNS Records," and note down CNAME information.
![img](https://day-journal.com/memo/images/try-087_03.png)

This completes the Amplify configuration.

<br>

## Set Up a Unique Domain with Google Domains

Lastly, set up a unique domain with "Google Domains."

Access [Google Domains](https://domains.google.com) → Click "Manage" of the target domain.
![img](https://day-journal.com/memo/images/try-087_04.png)

Click "DNS" on the management screen of the target domain.
![img](https://day-journal.com/memo/images/try-087_05.png)

Input CNAME information obtained by Amplify → Click "Save." After setting, click "Website."
![img](https://day-journal.com/memo/images/try-087_06.png)

Enter "@" for source and ".dev" for destination domain → Set options → Click "Forward."
![img](https://day-journal.com/memo/images/try-087_07.png)

A preview of the WebSite will be displayed when it has been successfully configured.
![img](https://day-journal.com/memo/images/try-087_08.png)

The WebSite will be displayed when you access the configured ".dev."
![img](https://day-journal.com/memo/images/try-087_09.png)


Finally, I used [PageSpeed Insights](https://pagespeed.web.dev) to measure the performance of the WebSite with the pre-migration deployment environment and the post-migration Amplify (CloudFront & S3). Performance is now much better!
![img](https://day-journal.com/memo/images/try-087_10.png)

<br>

Related Articles

{% link https://dev.to/aws-builders/build-a-unique-domain-hosting-environment-with-aws-amplify-3jl0 %}
{% link https://dev.to/aws-builders/trying-out-various-settings-for-aws-amplify-publishing-39i4 %}

<br>

References
[AWS Amplify](https://aws.amazon.com/jp/amplify)
[Google Domains](https://domains.google.com)
Learn sql we must
Tags: sql, database, beginners, learningsql
Published: 2022-04-25 11:28:56

If you're **new to SQL** and are looking for some **free resources** to help you get started, then this list of resources is for you.

[My SQL Resources](https://www.craft.do/s/VzvaPiNX6jvxX5)

Content is currently grouped in these **4 categories**:

- Free learning tutorials, video series and courses
- Useful blogs on important concepts
- Practice environments & challenges
- Useful tools and other resources

I'm always looking to add more so please share your suggestions and recommendations in the comments.
Heapland 0.2.0 released
Tags: devops, kafka, database, opensource
Published: 2022-04-25 11:16:53

You can now connect to multiple Kafka cluster, view brokers and topics and much more with the latest release of Heapland.

[Heapland](https://github.com/heapland/heapland) is an open source project, that brings a single interface for different data services. This release of Heapland, adds support for managing multiple Kafka clusters, and ability to view brokers, topics and messages.

## Add a Kafka Cluster
Simply click on the add kafka connection to setup the service as shown below.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/khrok37phk0r6kumwxnj.png)

## Browse brokers, topics and messages
Once connected with the cluster, you can view the brokers, topics and messages.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2etb8la5lck55p4pkhzb.png)

To view the messages and partitions of a topic, click on the topic link.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y4hhsouiiaea2nrl5i95.png)

You can also view — partitions, configurations of a topic and the consumer groups.

Checkout the [Github](https://github.com/heapland/heapland) repository to learn more.
Academic Mantra Services
Tags: javascript, beginners, tutorial, programming
Published: 2022-04-25 11:16:04

Academic Mantra Services provides a one-stop solution for all our clients and helps them make their name and fame in the organization. We have a great working environment and a high proficiency in various technologies. The sole core objective of Academia Mantra Service is to work with our clients to ensure that their marketing goals are realized with the designs we create.
https://academicmantraservices.com/
[SEO services,
Assignment help,
MBA projects,
On job Training,
Summer Training](https://academicmantraservices.com/
)