InfyOm Blog

latest-post

We often listen to the words "Eager Loading" & "Lazy Loading" in Laravel. but maybe some of how still don't know what that actually stands for.

What Lazy Loading means?

I worked with many projects that is developed by some other developers and the common problems in code I found us Lazy Loading queries everywhere.

To understand it more easily let's take one simple example.

Let's say There is Post model and Comments Model.

So basically post->hasMany('comments')

So let's say we are fetching 10 posts and now we want the comments of each post. what we will do is :

$post->comments()->get() (LAZY LOADING)

Lazy loading cause N+1 queries issues as every time we are fetching comments of each post and it will block the execution too for while as its queries from the DB.

What Eager Loading means?

Eager loading is very useful when we are working with large-scale projects. it saves lot's of execution time and even DB queries too :)

Let's take the above example to understand the Eager loading.

$posts = Post::with('comments')->get()

$post->comments (EAGER LOADING)

here when we retrieve the posts at that time we are fetching its comments too on the same query. so when we do $post->comments it will not again do query into DB or not even block execution as the comments are already there in model instance.

So this is how Eager loading saves your time and also prevents N+1 Query.

Hope that helps.

August 13, 20221 minuteuserVishal Ribdiya

Posts

How to check Laravel logs with UI Interface ?

Debugging the most important thing that developers always need while developing things.

If it's about local environments then we can easily check our logs by putting logs to local but when it's about live environments it's a time-consuming process.

We have to go to the files and open/download those files to local and then we are able to check live logs.

Here we are going to one package that will provide us the UI interface and we can easily check all our logs there.

We can also clear / delete our logs files from there. its better to use daily logs so we can trace logs easily.

Let's see how we can integrate that package to our existing laravel application.

Installation

composer require rap2hpoutre/laravel-log-viewer

Add Service Provider to config/app.php in providers section

Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider::class,

Access Logs UI By adding a new route

Route::get('logs', [\Rap2hpoutre\LaravelLogViewer\LogViewerController::class, 'index']);

That's it and you can see all the logs thereby accessing the given route.

That will saves lots of debugging time, hope that will help you :)

February 25, 20221 minuteauthorVishal Ribdiya
ERP Testing Insights: How to do ERP Testing ?

What Is ERP Testing?

Before going into ERP testing, we've to know about the ERP. ERP stands for Enterprise Resource Planning. ERP Testing is critical since each business can customise its workflow depending on the needs of their organisation. When doing ERP testing, the tester has got to understand the business workflows, data flows, and ERP modules. Then only he/she are going to be ready to test and ensure the system implementation is suiting their organisation.

How To Do ERP Testing?

ERP Testing mainly focuses generally on functional testing and performance testing. The next preference is given for the mixing between the modules and therefore the data flows. ERP testing are often done either manually or automatically. ERP testing are often wiped out the below phases:

Identify the business processes and define the scope of testing.

  1. Setting up a test system.
  2. Prepare Test Plan.
  3. Prepare the test suites.
  4. Create test data sets.
  5. Write test cases.(manual/automated)
  6. Test Execution.
  7. Prepare Test Reports.

Different Types Of ERP Testing

Functional Testing: Functional testing will cover the aspects of compatibility, localisation, integration with other systems, etc. The testing are often done either manually or by automation. This is the primary testing type got to be conducted since the functional workflow should work flawlessly. After functional testing completed, the opposite sorts of testing got to be performed. The testing are often done by manual or automated testing.

Integration Testing: Integration testing usually conducted when an application is interacting with multiple components. The components need to be tested individually. After the completion of the testing of the modules, it must be tested with all components as an entire workflow. Then only the system should work sort of a single unit at the top after integration seamlessly.

Performance Testing: Performance testing usually conducted to make sure what percentage users can access the system at an equivalent time and what's the reaction time during that. The user volume and therefore the concurrent usage are going to be more after the implementation of ERP systems. It is critical to try to to the performance testing of the ERP system since it's to interact with multiple applications.

Security Testing: Security testing is conducted to make sure that the system follows the quality security policies and rules. It helps to spot risks, threats, and vulnerabilities of the system. After identifying the vulnerabilities, those should be fixed and tested before the implementation of the ERP system.

February 25, 20222 minutesauthorNayan Patel
How To Add Google In-App Review for Android

Integrating in-app reviews is very easy. It can be achieved with very minimal code. Let's see how to integrate it.

1. As the In-App Review is a part of the Play core library, we need to add the required dependencies to our app's build.gradle (app level) file,

implementation “com.google.android.play:core:1.8.0”
implementation "com.google.android.material:material:1.3.0-alpha02"

2. First, we need to create the instance of ReviewManager which would help us to start the API. We create the instance using,

ReviewManager manager = ReviewManagerFactory.create(this);

Now, using this manager object, we have to request the flow to launch the In-App review flow.

 ReviewManager manager = ReviewManagerFactory.create(this);
 Task<ReviewInfo> request = manager.requestReviewFlow();
 request.addOnCompleteListener(task -> {
      if (task.isSuccessful()) {
// We can get the ReviewInfo object
      ReviewInfo reviewInfo = task.getResult();
      } else {
// There was some problem, continue regardless of the result.
      }
 });

A complete code is required for the in-app review flow.

MainActivity.java
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.play.core.review.ReviewInfo;
import com.google.android.play.core.review.ReviewManager;
import com.google.android.play.core.review.ReviewManagerFactory;
import com.google.android.play.core.tasks.Task;

public class MainActivity extends AppCompatActivity {

   private ReviewManager reviewManager;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       init();
   }

   private void init() {
       reviewManager = ReviewManagerFactory.create(this);
       findViewById(R.id.btn_rate_app).setOnClickListener(view -> showRateApp());
   }

   public void showRateApp() {
       Task<ReviewInfo> request = reviewManager.requestReviewFlow();
       request.addOnCompleteListener(task -> {
           if (task.isSuccessful()) {
               ReviewInfo reviewInfo = task.getResult();
               Task<Void> flow = reviewManager.launchReviewFlow(this, reviewInfo);
               flow.addOnCompleteListener(task1 -> {
               });
           } else {
               showRateAppFallbackDialog();
           }
       });
   }
   private void showRateAppFallbackDialog() {
       new MaterialAlertDialogBuilder(this)
               .setTitle(R.string.rate_app_title)
               .setMessage(R.string.rate_app_message)
               .setPositiveButton(R.string.rate_btn_pos, (dialog, which) -> {

               })
               .setNegativeButton(R.string.rate_btn_neg,
                       (dialog, which) -> {
                       })
               .setNeutralButton(R.string.rate_btn_nut,
                       (dialog, which) -> {
                       })
               .setOnDismissListener(dialog -> {
               })
               .show();
   }
}

How to test the In-App Review?

To check the in-app review flow, you must already have the app approved on Playstore. This does not mean that the application should be available to the public. At the very least, you should have an account ready for internal testing or internal application sharing.

  • You can use Internal Test Track to release the app and test the in-app review flow.
  • You can use Internal App Sharing to test the in-app review flow.

You can find more information about the test part on the Android Developer page.

February 11, 20222 minutesauthorVivek Beladiya
CSS NameSpacing ClassName

Namespacing can be used in any type of programming language, and the advantages are innumerable. However, with CSS, some of the advantages are not particularly obvious. We will take a look at the two most common namespacing usages in CSS and we will discuss their advantages in more detail.

Variables

Using variables in CSS is the simplest and the most common use. Let’s take a look at the following SCSS example code:

`` // Our common variables

// Fonts $f_arial: Arial, Helvetica, sans-serif

// Colors $c_red: #FF0000; $c_black: #000;

// Z-indices $z_index_back: -1; $z_index_base: 1; $z_index_max: 9999;

// Animation Timings $t_medium_animation: 200ms;

// Breakpoints $b_mobile: 700px; $b_desktop: 1200px; ``

we have defined five different organizational categories:

  • $f_ font and webfont families
  • $c_ color codes
  • $z_ z-indices used throughout the application
  • $t_ animation timings
  • $b_ responsive breakpoints

The biggest advantages of utilizing the organizational categories structure with variables as described above are code clarity and rapid development. This is especially important in large teams where more developers work on the same CSS files. One more notable advantage is added autocomplete feature. Simply by entering a $f in our IDE, we will get an autocomplete list of all declared fonts, or by entering a $b we will get all responsive breakpoints, and so on.

Class Names

The second most common usage of namespacing is by utilizing a CSS class naming. The prefix o- can be used for CSS object class name declarations, while c- can be used for classes. The fundamental distinction between objects and classes is that they may appear more than once in different templates of our design, hence making them harder to meddle with. Separating objects from classes makes it easier for a developer to navigate within a relatively unknown codebase. Another clever concept is to disassociate all the classes solely used in JavaScript with the js- prefix. Finally, is- can define application states such as is-active or is-visible, while u- can prefix utility classes such as u-pull-left.

February 05, 20222 minutesauthorPayal Pansuriya
An In-Depth Look at the Adobe Premiere Pro Editing Tools

Let’s Explain Every Tool From The Toolbar In Adobe Premiere Pro

As a beginner video editor you often struggle with finding the right tools to perform certain actions while editing. And once you’ve finally found some tools to edit, you don’t know what they do. We’ve all been there, so here’s a quick and easy explanation of every tool in the toolbar.

Selection Tool (V)

selection_tool

The Selection tool allows you to perform basic selections and edits. This will be your default and primary mouse function when using Premiere Pro, so make sure to remember the short key for it, which is V on your keyboard. Along with making basic selections, you can also select edit points and perform trims where you can increase or decrease a clip’s duration.

Track Selection Tool - Forward (A) / Backward (Shift+A)

track_selection_tool

The Track Select tool will let you select all of the clips in a sequence, either forward or backwards. All you need to do is use the keyboard shortcut (A) and you can highlight multiple clips at once, in whichever direction you prefer. If you hold shift, the tool will select only one track instead of all of the tracks.

Ripple Edit Tool (B)

ripple_edit_tool

One of my favorite shortcut tools in Premier Pro, Ripple Edit is a trim tool used to trim a clip and "wave" the rest of the clips in a timeline. This will effectively close the gap between the two editing points immediately at the point where you will be editing. This can save a lot of time when editing on-the-fly, as you don't have to manually navigate the rest of your timeline — especially if you're dealing with videos or sequences longer than a few minutes.

Rate Stretch Tool (R)

rate_stretch_tool

The Rate Stretch tool will help you speed up or slow down the clips in your order. When using the tool, note that the in and out points of the clip will always be the same. You will change the duration and speed of the clip according to the amount you "stretch" through the trim. For example, extending the outpoint of a clip will slow down the speed, while shortening the clip will speed up the duration.

Slip Tool (Y)

slip_tool

For visual editors who prefer to make their cuts based on specific images of the corresponding frames, Slip Tool is a great resource for working directly from the monitor. The slip tool "slips" the source of the clip in and out, but does not move it on the timeline.

Slide Tool (U)

slide_tool

Like the Slip Tool, the Slide Tool allows you to work with your clips drawn on the monitor. However, the slide tool works by "sliding" the clip on the timeline, while keeping the source in and out points the same. After sliding the clip, the tool will also close all the gaps.

Pen Tool (P)

pen_tool

Moving on to editing shortcuts and tools to help with keyframes and other elements (such as audio), the Pen Tool is your best choice for adding keyframes to any clip. By selecting the Pen Tool (P), you can click on any point on your clip to add a large number of features, including the opacity, scale, position, and even volume of the audio clip.

January 27, 20223 minutesauthorKishan Savaliya
Why developer choose React JS

There are a few reasons why developers choose ReactJS and they are :-

  1. JavaScript XML or JSX
  2. React use Virtual DOM
  3. ReactJs Props
  4. One-Way Data Binding
  5. Quick Rendering
  6. SEO Friendly
  7. Helpful Developer Toolset

JavaScript XML or JSX

It is a markup syntax that describes the appearance of the application's interface. It creates the same syntax as HTML and is used by developers to create feedback elements.

JSX is one of the best features of React JS as it makes it very easy for developers to write building blocks.

React use Virtual DOM

This feature helps speed up the app development process. The algorithm allows the web page to be copied into React's virtual memory.

The original DOM there is represented by a virtual DOM.

ReactJs Props

ReactJS Props allows developers to move custom development data into its specific UI components. This helps in rendering JavaScript components and improving the UI development experience.

One-Way Data Binding

Feedback uses a stream of data that is directionless, forcing developers to use the callback feature to edit components and prevent them from editing directly.

Control of data flow from a single point is achieved with a JS app architecture component called Flux. It really gives developers better control over the application and makes it more flexible and effective.

Quick Rendering

This means that a small edit made at the top level can hit the app UI hard. Thanks to the virtual DOM, it can be tested first to determine the risk level with each change before finalizing all changes.

SEO Friendly

To make any application work well, it is important that the search engine selects it; Two factors are important for applications: fast load time and rendering. If both of these boxes are ticked, your app will rank higher on Google results pages.

React's super-fast rendering feature drastically reduces page load time, enabling businesses to rank their apps on the first page of Google search.

Helpful Developer Toolset

Facebook has included many developer tools in the React JS framework for React and Chrome, and they greatly help developers find parents and child components, observe their hierarchies, and test their current status.

Through self-learning, developers will be able to use emerging technologies in real, live, projects.

So, developers choose ReactJS hope this help.

January 26, 20222 minutesauthorVatsal Sakariya
Points to Learn from Your Competitors about Beta Testing
Currently there is a lot of competition in the market. As everybody’s technology and strategies are improving day by day, there is a huge opportunity to learn from the others businesses too. Our biggest learning comes from our Competitors. They can teach us many things which you can easily grasp and improve yourself. User Acceptance Test is a software testing procedure executed in a real-world scenario. UAT has two types - Alpha and Beta testing. Alpha testing takes place in the company whereas beta testing is field testing. The software is tested in real-world working conditions which takes place at the customer’s site.

Below are the followings points which can we learn from other competitors about beta testing.

  1. The important thing that you can learn from your competitors is how they proceed with the beta testing and how they strategise their every action. They prepared several instructions before proceeding with the beta testing. Proper project planning should be written down and agreed upon by the other fellow mates. The objective of the beta testing and how you’re going to achieve that goal should be clear.

  2. If you’ve ever looked at the team of other competitors who include professional beta testers, they are able to achieve their work more easily. You can also gather a team of professionals with experience in the beta testing. Their opinions and aspects would be totally different which will provide various working conditions which can be used for the beta testing procedure.

  3. If you want to improve your structure of software or modifying it, you can learn how the other competitors take feedback from their users. By taking the proper feedback from their users they alter every single of the bugs or error which shows up during the beta testing procedure. You can also improve your software by taking feedbacks from your user when they start using the beta software. The feedback can be in the form of bugs report, quotes, suggestions or surveys.

  4. Learn the major tools which are being used by the other software testing companies and try to understand the concepts of different tools which are used in the beta testing procedure. Thus it would be a great thing to learn from the other top companies and follow their footsteps. Try using different tools and adapt them.

  5. Many of your competitors may use beta testing as a marketing strategy. They strategise their market planning and create awareness among the users about the beta software. It helps in creating a buzz among the beta users and creates eagerness among them. Thus you can also use this type of strategy to engage your beta users and create more eagerness among them. This will help in the involvement of a beta user if there is a new version of the beta software which is going to update.

  6. If you want to make your application more useful, you need to understand what platforms you are using to test your software. Learn from the other competitors and see which platforms they are using for beta testing of their software. You can learn to release an app which can perform on more than one platform with more than one different ways of performance. This is the best way to make your software more usable by doing tests on different platforms which you can learn from your competitors.

  7. You can use the tool which your competitors use to save time by taking the valuable feedback from the beta users. This will help you to take valuable feedback from the user directly to your tool services. You don’t have to ask them over a phone or visit them. This tool will help you to set up a particular email ID which can be used to catch feedback from the users.

  8. You can learn simple to complex things from your competitors. The simplest thing which your competitors can teach you is the patience and integrity. You don’t have to falter when your QA testified software comes up with a lot of errors and bug while running beta testing. There are many companies which face failures and still come up with a great solution for their services.

  9. Your competitors may use quantity of beta testers to test their software in a real You can also get a large number of beta testers who are professional in testing the software under real-work conditions. This will help you to get a plenty of feedback on different aspects of your software. Always look for the quality beta testers and invite them for beta testing.

  10. The last thing you can learn from your competitors is how they handle their feedback and bugs reports. How fast they can be to provide the solution to that problem. You can have an effective team of experts which can take this valuable feedback and without wasting any time comes up with a solution and makes your software error Major companies solve their bug issue in just a few times after getting a feedback.

January 26, 20224 minutesauthorNayan Patel
How To Setup SSH key in Windows

In this article, I show you how to set up SSH in windows10,

first of all, you have a question what is the ssh key, and why do we need it?

you can watch this video or follow an article.

Let me explain a bit more, An SSH key is a secure access credential used in the Secure Shell protocol. SSH keys use key pairs based on public key infrastructure technology, the gold standard for digital identity authentication and encryption, to provide a secure and scalable method of authentication. as you know all developers use git for pushing, fetching, and pulling their code from GitLab, GitHub, and any other tools.

So, using SSH key you can use git for your repository and get authentication from GitHub or any tool where you add ssh.

When you set up an SSH key, you create a key pair that contains a private key (saved to your local computer) and a public key.

So, Let's Set up SSH for Git on Windows

Step1: Set up your default identity

firs of all open your terminals like gitbash or cmDer.

  • Now, type the command ssh-keygen and enter and command prompts you for a file to save the key in:

$ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/emmap1/.ssh/id_rsa):

  • Press enter to accept the default key and path,/c/Users/<username>/.ssh/id_rsa. or you can specify the path and then press enter.

  • Enter and re-enter a passphrase when prompted.

  • final out put in your terminal is look likes,

    ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/c/Users/shailesh/.ssh/id_rsa):
    Created directory '/c/Users/shailesh/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter the same passphrase again:
    Your identification has been saved in /c/Users/shailesh/.ssh/id_rsa.
    Your public key has been saved in /c/Users/shailesh/.ssh/id_rsa.pub.
    The key fingerprint is: e7:94:d1:a3:02:ee:38:6e:a4:5e:26:a3:a9:f4:95:d4 shailesh@InfyOm-PC
  • Let's navigate to path cd /c/Users/shailesh/.ssh/ and fire ls command for confirming file generated or not.

  • ls command displays two files, one for the public key (for example id_rsa.pub) and one for the private key (for example, id_rsa) if successfully generated.

Step 2: Add SSH in Bitbucket.

  • let's fire command cat id_rsa.pub on the terminal and make sure you stay on the .ssh directory.
  • Now, you can see the key in the terminal. so, copy it and add it to bitbucket. click here for Bitbucket and here for Github to add SSH to your account.

Step 3: Add the SSH key to the ssh-agent.

fire command $eval ssh-agent into the terminal and you get output like Agent pid 9795. 9765 PID may be different in your PC.

Step 4: Check Login in terminal

fire command ssh -T git@bitbucket.org in your terminal and you can get output like

Warning: Permanently added the RSA host key for IP address '104.192.141.1' to the list of known hosts.
authenticated via ssh key.

You can use git to connect to Bitbucket. Shell access is disabled
January 10, 20223 minutesauthorShailesh Ladumor