Tuesday, October 15, 2019

Understanding Change Detection Strategy onpush in Angular


Change Detection Strategy onpush in Angular

  1. https://alligator.io/angular/change-detection-strategy/
  2. https://stackblitz.com/edit/change-detection-strategy1
  3. https://blog.ninja-squad.com/2018/09/27/angular-performances-part-4/
  4. https://netbasal.com/a-comprehensive-guide-to-angular-onpush-change-detection-strategy-5bac493074a4 (VVI, ************, please study more)

Change Detection Strategy onpush follow some rules: You may need to take care this rules



Rule 1: @Inputs: Input properties value will be changed when its ref will be changed

Rule 2: A component have own internal state.  in the ts file , if value change due to api or set-timeout it will not show in html page directly. it only show when any event(click, change) occur from the html page.

Rule 3: We run change detection explicitly.  The first is detectChanges() which tells Angular to run change detection on the component and his children.

onstructor(private cdr: ChangeDetectorRef) {   
    setTimeout(() => {     
           this.count = 5;      this.cdr.detectChanges(); 
  }, 1000);
}

Rule 4: Angular Async Pipe. The async pipe subscribes to an observable or promise and returns the latest value it has emitted

see the example of above link

If a component depends only on its input properties, and they are observable, then this component can change if and only if one of its input properties emits an event.



Rule 5: onPush and View Queries.

 @Input() set content(value) {
    this._content = value;
    this.cdr.markForCheck();
  }



Rule 6:  === onPush++ (VVVVIIIIII)

Also, by creating a dedicated component we make our code more readable and reusable.


See the example of above medium doc link 


https://netbasal.com/a-comprehensive-guide-to-angular-onpush-change-detection-strategy-5bac493074a4










Sunday, October 13, 2019

multiple node version using nvm and cURL defination


nvm stands for Node Version Manager. As the name suggests, it helps you manage and switch between different Node versions with ease. It provides a command line interface where you can install different versions with a single command, set a default, switch between them and much more.

important command
-- nvm ls
-- nvm use 12.16.3 (bjit office)
-- nvm use 12.8.0 (bjit office)

Please run the nvm in vs code/ specific folder

REf:
  1. https://computingforgeeks.com/how-to-run-multiple-versions-of-node-js-on-linux/

cURL
cURL is a computer software project providing a library and command-line tool for transferring data using various protocols. It was first released in 1997. The name stands for "Client URL". The original author and lead developer is the Swedish developer Daniel Stenberg

Basic of react and interview question

Friday, October 11, 2019

Ngrx


NGRX:
Generally, it's a pattern for controlling the state of an application, and the flow of data throughout the appliction.


NgRx App State Management

Let’s look at the NgRx implementation — there are several components to understand.
  • Store: Store is what holds the app's state. 
  • Action: A unique event dispatched from components and services that describe how the state should be changed. For example, ‘Add Customer’ can be an action that will change the state (i.e. add a new customer to the list).
  • Reducer: All the state changes happen inside the reducer; it responds to the action and, based on that action, it will create a new immutable state and return it to the store.
  • Selector: Selector is a function used for obtaining a part of the state from the store.
  • Effect: A mechanism that listens for dispatched actions in an observable stream, processes the server response, and returns new actions either immediately or asynchronously to the reducer to change the state. Please note that we are not using effect in this example app.

Ref:
  1. https://blog.angularindepth.com/how-to-start-flying-with-angular-and-ngrx-b18e84d444aa
  2.  https://dzone.com/articles/angular-app-state-management-with-ngrx (VVI basic example)
  3. https://stackoverflow.com/questions/57563867/ngrx-pass-payload-through-dispatch-method-to-update-store 
  4. https://medium.com/@RupaniChirag/simple-angular-app-using-ngrx-8-store-and-effects-factory-methods-f3423b9f6d3b (effect very simpel and easy)

Thursday, October 3, 2019

Angular interview question

What’s the difference between agile, CI/CD, and DevOps?

Agile:
Agile is most popular software development process in software industry. Agile is a flexible software development methodology, involving a large number of various iterations.

Pros:

  1. Adaptive approach that responds to changes favorably
  2. Allows for direct communication to maintain transparency
  3. Improved quality by finding and fixing defects quickly and identifying expectation mismatches early.

Cons:

  1. Focuses on working with software and lacks documentation efficiency
  2. Chances of getting off-track as outcome are not clear


Continuous integration/continuous delivery (CI/CD)


Continuous integration (CI) is a software engineering practice where members of a team integrate their work with increasing frequency. In keeping with CI practice, teams strive to integrate at least daily and even hourly, approaching integration that occurs “continuous-ly.”


Continuous delivery (CD) is to packaging and deployment what CI is to build and test. Teams practicing CD can build, configure, and package software and orchestrate its deployment in such a way that it can be released to production in a software-defined manner (low cost, high automation) at any time.


Development : our account / north--vergenia
Stagging: client account / north--vergenia
Production: client-account / ireland


code commit : AWS CodeCommit is a version control service hosted by Amazon Web Services
code build
code deploye : CodeDeploy is a deployment service that automates application deployments to Amazon EC2 instances
code pipeline : AWS CodePipeline is a continuous delivery service you can use to model, visualize, and automate the steps required to release your software.

Continuous Integration and Continuous Delivery Model
-----------------------------------------------------------------------------------
Create a CodeCommit repository
Access the CodeCommit repository from developer machine
Design a code delivery model using CodeCommit, CodeDeploy, CodePipeline




Scrum

Scrum is the most popular agile development framework because it is relatively simple to implement.



In scrum, a small team is led by a scrum master whose main job is to clear away all obstacles to work getting done more efficiently. The team works in short cycles of 2 weeks called “sprints,” though the team members meet daily to discuss what’s been done and where there are any roadblocks that need clearing. This methodology allows for quick development and testing, especially within small teams.
Scrum is a framework for project management that emphasizes teamwork, accountability and iterative progress toward a well-defined goal. The three pillars of Scrum are transparency, inspection and adaptation

Scrum master: This team member serves as a facilitator. The Scrum master is responsible for ensuring that Scrum best practices are carried out and the project is able to move forward.

The Scrum process



Daily Scrum . The Daily Scrum is a short stand-up meeting that happens at the same place and time each day. At each meeting, the team reviews work that was completed the previous day and plans what work will be done in the next 24 hours. This is the time for team members to speak up about any problems that might prevent project completion.

Sprint Planning Meeting. A Sprint refers to the time frame in which work must be completed, and it's often 30 days. Everyone participates in setting the goals, and at the end, at least one increment -- a usable piece of software -- should be produced.
Sprint Review. This is the time to show off the increment.

REF:




Monday, September 23, 2019

Autoboxing and Unboxing

  Autoboxing  is the automatic conversion that the Java compiler makes between the primitive types and their corresponding object wrapper cl...