teleren/devto huggingface dataset:
Optimization may overkill Performance (React)
Tags: react, javascript, webdev
Published: 2021-09-02 06:25:02

𝗝𝘂𝗻𝗶𝗼𝗿 𝗗𝗲𝘃: 𝗪𝗲 𝘀𝗵𝗼𝘂𝗹𝗱 𝘄𝗿𝗮𝗽 𝗲𝘃𝗲𝗿𝘆 𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻 𝗶𝗻𝘀𝗶𝗱𝗲 "𝘂𝘀𝗲𝗖𝗮𝗹𝗹𝗯𝗮𝗰𝗸" 𝗵𝗼𝗼𝗸 𝘁𝗼 𝗯𝗼𝗼𝘀𝘁 𝗽𝗲𝗿𝗳𝗼𝗿𝗺𝗮𝗻𝗰𝗲.

𝗦𝗲𝗻𝗶𝗼𝗿 𝗗𝗲𝘃: 𝗦𝗲𝗿𝗶𝗼𝘂𝘀𝗹𝘆 (𝘄/𝘁 𝗰𝗵𝗲𝗰𝗸𝗶𝗻𝗴 𝗽𝗿𝗼𝗳𝗶𝗹𝗶𝗻𝗴)? 𝗜 𝘁𝗵𝗶𝗻𝗸 𝗶𝘁 𝘄𝗶𝗹𝗹 𝗯𝗲 𝗮 𝗽𝗲𝗿𝗳𝗼𝗿𝗺𝗮𝗻𝗰𝗲 𝗸𝗶𝗹𝗹!

^ ^ In continuation to the last post ([React.memo](https://dev.to/varunprashar5/don-t-overoptimize-your-react-app-2nba)):

When a component gets a function as a prop from its parent, then whenever a parent is rendered, its child component will get re-rendered every time no matter even if you have used React.memo().

Do checkout the video for more details:
https://youtu.be/5aH_b5pUAHI

<𝗕𝗶𝗴𝗟𝗶𝘀𝘁 𝗶𝘁𝗲𝗺𝘀={𝗶𝘁𝗲𝗺𝘀} 𝗶𝘁𝗲𝗺𝗖𝗹𝗶𝗰𝗸={𝗶𝘁𝗲𝗺𝗖𝗹𝗶𝗰𝗸} />

In above line, even if <BigList /> is passed via React.memo, It will still re-render because itemClick function will get re-created every time the parent component is rendered.

𝗜 𝗵𝗮𝘃𝗲𝗻'𝘁 𝗰𝗵𝗮𝗻𝗴𝗲𝗱 𝘁𝗵𝗲 𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻, 𝗯𝘂𝘁 𝘄𝗵𝘆 𝘄𝗶𝗹𝗹 𝗶𝘁 𝘀𝘁𝗶𝗹𝗹 𝗿𝗲-𝗿𝗲𝗻𝗱𝗲𝗿?

This is how Javascript works, you should know that two references are never equal.

[1,2] === [1,2] //false
1==1 //true (primitives are equal)

Primitive values will be the same on every re-render but objects will be different (functions are objects in Javascript).

To prevent this, just wrap your function with useCallback hook.

𝘂𝘀𝗲𝗖𝗮𝗹𝗹𝗯𝗮𝗰𝗸(𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻, [𝗱𝗲𝗽𝗲𝗻𝗱𝗲𝗻𝗰𝗶𝗲𝘀])
//Here we are saying to use the same function on re-renders
//If you pass an array of dependencies, then whenever any of the dependencies change, then a new function will be used.

𝗗𝗼𝗲𝘀 𝗶𝘁 𝗺𝗲𝗮𝗻 𝘁𝗵𝗮𝘁 𝗜 𝘀𝗵𝗼𝘂𝗹𝗱 𝘄𝗿𝗮𝗽 𝗲𝘃𝗲𝗿𝘆 𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻 𝗶𝗻𝘀𝗶𝗱𝗲 𝗺𝘆 𝗰𝗼𝗺𝗽𝗼𝗻𝗲𝗻𝘁 𝘄𝗶𝘁𝗵 𝘂𝘀𝗲𝗖𝗮𝗹𝗹𝗯𝗮𝗰𝗸?

You should 𝗡𝗘𝗩𝗘𝗥 do that, Here are the reasons:

1. Optimisation always does come with a cost, it's a special function that will never be garbage collected and will always have a reference in the memory.

2. Extra check for the different values in the array of dependencies to see if these dependencies are changed then they have to recreate the newer function.

3. Don’t forget that useCallback() hook is called every time the parent component renders. Even useCallback() returns the same function object, still the inline function is re-created on every re-rendering (useCallback() just skips it).

𝗛𝗼𝘄 𝘁𝗼 𝗱𝗲𝗰𝗶𝗱𝗲 𝘄𝗵𝗲𝘁𝗵𝗲𝗿 𝘁𝗼 𝘂𝘀𝗲 𝘂𝘀𝗲𝗖𝗮𝗹𝗹𝗯𝗮𝗰𝗸() 𝗼𝗿 𝗻𝗼𝘁?

There will never be a single answer to this problem, So always run your profiler and see what performance gain you will get and then decide.
What a time to be alive
Tags: devjournal
Published: 2021-09-02 06:24:16

I mean, isn't it great?
We have all this technology making our lives so easy, we're able to travel easier than ever, and we keep getting challenged on a personal level.

I truly enjoy living in the now. It's a time that fits my personality.

But times are different. Do you ever note this when speaking to your parents or grandparents?

They might not even understand what your job is, let alone why in the world you would marry someone from the opposite side of the world and travel so much.

But I love it! I'm happy to be alive in the now.

It's easy to forget that we should be very grateful for where we are now.
Imagine being born when we had to run for dinosaurs or when world wars were happening.

(And don't get me wrong, there is still a lot of bad stuff going on in the world, but more about that in another article)

## Why does this excite me?

Let me sketch the scenario. I'm sitting at a table at Schiphol Airport (Amsterdam) while writing this article.

![Working from the airport](https://cdn.hashnode.com/res/hashnode/image/upload/v1629875182308/MgJWyLl1r.jpeg)

And it will even be scheduled and deployed, all by pressing some keys on my computer.

This just amazes me. When you told my 12-year-old self that such a thing was possible, I would have envisioned a Star Trek kind of movie.

And with that, my expectations keep increasing every time some new technology advances and makes our lives better.

That is the exact reason why I'm so happy to be alive in this era, where we can be part of this!

## But what about the future?

![Back to the future](https://cdn.hashnode.com/res/hashnode/image/upload/v1629875133553/TiTUNLb5m.png)

Yeah, the future, something no one can predict, yet many dream of it. And it could be an even better place.

I'm sure some of you reading this will experience, and maybe this will inspire you to write about that future?

Wow, that would be something, right?

So without making this a winding story, I just wanted to write down how happy I am to live in the present before boarding my flight ✈️.

### Thank you for reading, and let's connect!

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on [Facebook](https://www.facebook.com/DailyDevTipsBlog) or [Twitter](https://twitter.com/DailyDevTips1)
How to register an application in Azure AD using Azure CLI
Tags: azure, azurecli, microsoft365, microsoft
Published: 2021-09-02 06:01:33

If you are working as a M365 developer you probably have had to register an application i Azure AD at some point. In this blogpost I will show you how you can do so using Azure CLI.

> **Prerequesites:** You need to [download and install Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli).

##Sign in to your tenant

When you have installed the Azure CLI you can sign in to your tenant. If you are on a dev-tenant or you don’t have a subscription to your account you should also add the “Allow-no-subscription” flag like shown below.

```powershell
az login


az login --allow-no-subscriptions
```

##Add the app
When you have successfully signed in you can register a new app with a simple line.

```powershell
az ad app create --display-name MyApp01 --available-to-other-tenants false
```
This will return a JSON object with the app information. I have shortened it down a bit in the example below.

```json
{
  "acceptMappedClaims": null,
  "addIns": [],
  "allowGuestsSignIn": null,
  "allowPassthroughUsers": null,
  "appId": "ee26ecb3-977f-4520-ac21-be9eec424538",
 ...
  },
  ...
  ],
  "oauth2RequirePostResponse": false,
  "objectId": "301fc40c-a293-4509-8178-9d1b0fd76444",
  ...
  },
  ...
}
```

Two values that you should notice are the “appId, and the “objectId”. These values are often used when connecting to your registered app remotely. You can find the same information in the azure portal.
![Screenshot showing the app registration in Azure AD portal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z539xeyujmjxk5siumqp.png)

***

## Resources
* [List of Azure CLI – Azure AD app commands](https://docs.microsoft.com/en-us/cli/azure/ad/app?view=azure-cli-latest) (Microsoft docs)
* [Azure Command Line Interface documentation startpage](https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest) (Microsoft docs)

***
Did you find this article usefull? [Follow me on twitter](https://twitter.com/acupof_dev) to be notified when I publish something new!

Also, if you have any feedback or questions, please let me know in the comments below. :)

Thank you for reading! 

/Eli
How to find value using path array on structural document in Java
Tags: json, yaml, java
Published: 2021-09-02 05:46:46

Sometimes we need to find a value on structural document like JSON, YAML. Also there is sometime to need to find a value by path of document.

Structural document can be easily converted to Map-List object with parser libraries. Because of it, we can get a value of the document using key and index array.

To do that, 

First, we need to get a parser library that can parse JSON or YAML to Java Map-List structure. That library can be found easily in internet library repository like Maven Central.

For this post, we assume that we target JSON document.
It's down below
```json
{
  "id": "0001",
  "type": "donut",
  "name": "Cake",
  "ppu": 0.55,
  "batters": {
    "aaa": {
      "bbb": {
        "ccc": {
          "value": 123.0
        }
      }
    },
    "batter": [
      {
        "id": "1001",
        "type": "Regular"
      },
      {
        "id": "1002",
        "type": "Chocolate"
      },
      {
        "id": "1003",
        "type": "Blueberry"
      },
      {
        "id": "1004",
        "type": "Devil\u0027s Food"
      }
    ]
  },
```

We use recursive algorithm to find a value and if path can't find value or path isn't exist, It will return null.

Completed code is down below
```java
	/**
	 * To find value with path array on structural data
	 * 
	 * @param obj
	 * @param keys
	 * @return
	 */
	public static Object findValue(Object obj, Object[] keys) {
		if (obj instanceof List) {
			List list = (List) obj;
			if (keys.length == 1) {
				if (keys[0] instanceof Integer && list.size() > (int) keys[0]) {
					return list.get((int) keys[0]);
				}
			} else if (keys.length > 1 && list.size() > 0) {
                int idx = (int)keys[0];
                if(idx < list.size()) {
                    return findValue(list.get((int) keys[0]), Arrays.copyOfRange(keys, 1, keys.length));
                }
			}
		} else if (obj instanceof Map) {
			Map map = (Map) obj;
			if (keys.length == 1 && map.containsKey(keys[0])) {
				return map.get(keys[0]);
			} else if (keys.length > 1 && map.containsKey(keys[0])) {
                if(keys.length > 0) {
				    return findValue(map.get(keys[0]), Arrays.copyOfRange(keys, 1, keys.length));
                }
			}
		}
		return null;
	}
```

Well, let's start test now

Above JSON document save to file named 'sample.json'
Below code is read 'sample.json' and result is image more below.

```java
Gson gson = new Gson();
Map<String, Object> map = gson.fromJson(new FileReader("simple.json"), Map.class);
Object[] keys = new Object[] {"batters", "batter", 3, "type"};

Object obj = findValue(map, keys);
System.out.println(obj);
```
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6mwlwwjsg3rsinccgs42.PNG)
The Benefits of Taxi App Development for Taxi Businesses
Tags: taxiapp, taxibookingapp, taxisolution
Published: 2021-09-02 05:19:43

After you have become aware of the numerous benefits your business can derive from investing in its own Mobile App Development, what will you do first?

If you find our arguments convincing and feel more confident about promoting your ride-hailing business now, we recommend acting confidently as well. Alternatively, you can hire an app development agency that can deliver quality taxi app development outsourcing services. Each stage of the design and building process is handled by our experts.
Ayush
Published: 2021-09-02 05:03:08

#Chalk module in Node.js is the third-party module that is used for styling the format of text or create our own theme in the node.js project





for the neog.camp in the mark 1 i learn about it and used in my program .

A small part of program is as follows :-


we can use even const and var as per our choice.

![output](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wcd6endifu2kg0ehh61m.jpg)

we have to first write the following code for importing the module
Now , 
var variable = require('readline-sync');

Using readline-sync helps us to get the user input later if we want in our program  

eg:- In this program we want to check that the user is correct or not about the questions provided . 

Now,
const chalk = require('chalk');

chalk is a variable here you can use any name as you want for the variable .

we have to import chalk module is used for providing the color for for the console.log() as we discussed earlier

![output](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/twjjtxppjmxv5rhe1g49.jpg)

here using the chalk.blue we can get the blue color for the console.log part as :- 

![output](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3jnxn98n44u6v9e9gb1a.png)

We can use the chalk module as a variable also :-

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tq3ps1y4381yhrnagrb5.png)

We can use in the console.log() as :- 

    console.log(welcome('you are right! '));

    console.log(warning('oops! its wrong'));

We will assign the score for the small CLI app game :-

Initially the score will be zero .

![output](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f4k9ikxjzc8vmcc4z4ij.png)

for last defining part we can use it with console.log as shown below :- 

![output](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dy15y9t0zzczloceflvx.png)

you can check the project on :- https://replit.com/@ayush65pra/my-quiz?embed=1&output=1#index.js
thanks for giving your valuable time .
Get user input value from input box in visual studio code
Tags: typescript, vscode, codever, snippets
Published: 2021-09-02 04:54:16

Use `vscode.window.showInputBox` - the returned value will be `undefined` if the input box was canceled (e.g. pressing **ESC**). Otherwise the returned value will be the string typed by the user or an empty string if the user did not type anything but dismissed the input box with OK.

```typescript
const searchQuery = await vscode.window.showInputBox({
  placeHolder: "Search query",
  prompt: "Search my snippets on Codever",
  value: selectedText
});
if(searchQuery === ''){
  console.log(searchQuery);
  vscode.window.showErrorMessage('A search query is mandatory to execute this action');
}

if(searchQuery !== undefined){
  const searchUrl = `https://www.codever.land/search?q=${searchQuery}&sd=my-snippets`;
  vscode.env.openExternal(Uri.parse(searchUrl));
}
```

You can see it in action below:

![vs-code-extension-search](https://raw.githubusercontent.com/codeverland/codever-vscode/main/resources/gif/codever-vscode-extension-search-snippet-800x457.gif)

<hr>

The whole source for the [Codever Snippets VSCode extension](https://marketplace.visualstudio.com/items?itemName=codever.vscode-codever) on [Github](https://github.com/codeverland/codever-vscode).

<hr>

> Shared with :heart: from [Codever](https://www.codever.land/snippets/60dbfb494095c204661309bf/details). &nbsp; :point_right:   use the [**copy to mine**](https://www.codever.land/snippets/60dbfb494095c204661309bf/details) functionality to add it to your personal snippets collection.
Force null value check on field mapping in Mapstruct
Tags: java, codever, snippets
Published: 2021-09-02 04:42:31

Use the [`nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS`](https://mapstruct.org/documentation/stable/api/org/mapstruct/NullValueCheckStrategy.html) on the mapping property you want to be checked. In the following snippet you can see a `PostalAdress` entity is mapped to an entity of the same type, but the `id` is overwritten only when it is present in the `source`:


```java
import java.time.LocalDateTime;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.NullValueCheckStrategy;

import com.example.entity.PostalAddress;

@Mapper(
    componentModel = "cdi",
    imports = {LocalDateTime.class})
public interface PostalAddressEntity2EntityMapperService {

  @Mapping(source = "id", target = "id", nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
  PostalAddress toPostalAddressntityToPostalAddressEntity(
      PostalAddress PostalAddress);
}
```

This will generate something similar with the following

```java
package com.example.entitytoentity;

import com.example.entity.PostalAddress;
import java.time.LocalDateTime;
import javax.annotation.processing.Generated;
import javax.enterprise.context.ApplicationScoped;

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2021-09-01T14:28:11+0200",
    comments = "version: 1.4.2.Final, compiler: javac, environment: Java 11.0.12 (Azul Systems, Inc.)"
)
@ApplicationScoped
public class PostalAddressEntity2EntityMapperServiceImpl implements PostalAddressEntity2EntityMapperService {

    @Override
    public PostalAddress toPostalAddressEntity(PostalAddress PostalAddress) {
        if ( PostalAddress == null ) {
            return null;
        }

        PostalAddress PostalAddress1 = new PostalAddress();

        if ( PostalAddress.getId() != null ) {
            PostalAddress1.setId( PostalAddress.getId() );
        }
        PostalAddress1.setStreeNo( PostalAddress.getStreetNo() );
        PostalAddress1.setStreet( PostalAddress.getStreet() );
        PostalAddress1.setMainAdress( PostalAddress.getMainAdress() );

        return PostalAddress1;
    }
}

```

<hr>

> Shared with :heart: from [Codever](https://www.codever.land/snippets/61169574f520065311390cd9/details). &nbsp; :point_right:  use the [**copy to mine**](https://www.codever.land/snippets/61169574f520065311390cd9/details) functionality to add it to your personal snippets collection.
11 Questions to Ask an SEO Agency Before You Hire Them
Tags: seo, linkbuilding, offpage, onpage
Published: 2021-09-02 03:07:55

1. What services do you provide?
2. Who will actually be doing the work?
3. Do you just make recommendations or actually implement them?
4. What kind of reporting will I get?
5. What will the first month look like?
6. Can you help with anything else besides SEO?
7. What is your cost structure?
8. Who can I communicate with?
9. Will you explain what you’re doing and why it matters?
10. How will you build links to my site?
11. What does your optimization process look like?
TENTANG RINDU

Tags: cerpen, sastra, tetangrindu, books
Published: 2021-09-02 02:57:53

Angin membelai halus rambutku, ombak berdebur memberi sapa yang halus. Kupandang langit yang mulai menghitam. Dikala seperti ini, ingatanku selalu memutar peristiwa 3 tahun silam, tanpa ada sedikitpun yang terlupakan.

Sosok yang selalu mengukir senyum di wajahku ini, bahkan kau tak pernah membiarkan butiran bening keluar dari mataku. Hari hari yang sangat menyenangkan kulewati bersamamu, sampai tiba tiba entah apa yang membuatmu pergi menjauh meninggalkanku dengan cerita yang menggantung.

Hari demi hari kuhabiskan hanya untuk memandangmu dari kejauhan, melihatmu asik tertawa lepas dengan mereka. Tanpa kusadari tetesan air yang terasa hangat meluncur membasahi pipiku. Hati ini selalu bertanya “kesalahan apa yang telah aku perbuat hingga kau sangat membenciku tanpa alasan?”.
Sampai akhirnya tiba masa putih abu abu kita telah usai. Bahkan kau tidak memberi sapa terakhirmu untukku. Aku rindu akan sosokmu yang hangat, yang selalu melindungiku, bahkan dulu kau rela tidur larut malam hanya untuk mendengarkan kekesalanku pada hal hal yang sepele.

Kusimpan rindu ini untukmu, rindu yang sudah lama ingin kuungkapkan padamu. Entah sampai kapan kupendam kerinduan yang sangat menyiksa batinku. Kuharap kau kembali datang padaku walau hanya sekedar memberi sapa. Jika kau bisa begitu tenang tanpa ada aku, mengapa aku selalu tidak bisa?
Rindu yang setia menemaniku bertahun tahun ini tak kunjung pergi. Rindu yang selalu menginginkan kau kembali. Jika hujan memberikan jawaban lewat mendung. Mengapa rindu tak pernah menjawab? Untukmu yang kurindukan.


source: https://hilang-makna.blogspot.com
An Introduction To MongoDB Realm (Part 1)
Tags: mongodb, graphql, vue, javascript
Published: 2021-09-02 02:39:35


MongoDB Atlas is a comprehensive platform for building data driven applications. While most people know Mongo for their document style database, the capabilities of their cloud platform can empower an individual developer to do great things - fast. I think it starts to get interesting when you learn about Realm. 

Realm originally was an open source, object database oriented towards the mobile market. They made it easy to sync data between clients(phones and tablets) and a database. However today it is a platform that:
 > builds better apps faster with edge-to-cloud sync and fully managed backend services including triggers, functions, and GraphQL.

The fact that Realm sits right on top of your database means you can easily stand up an API with authentication in *minutes*. Realm does a lot of the heavy lifting for you - it creates the schema, runs a validation, and helps you craft your queries. 

![Cross Platform-gjuo0jvhiz](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ebi12iq0ovoe2lkmpsol.png)
 
Beyond just GraphQL, Realm can also host a single page application or static site, run serverless functions, and perform [magic with Sync](https://www.mongodb.com/realm/mobile/sync). If you do it right, your entire stack can be on Atlas. We're going to create a web app to do just that.

Check out [Part 2](https://dev.to/nicholasoxford/understanding-your-mongodb-collection-shipwrecks-realm-tutorial-part-2-5g9k) where we will go into preparing our MongoDB Collection for GraphQL.

Nicholas Oxford
Small tweaks to run a Ruby on Rails project locally
Tags: ruby, rails, programming, webdev
Published: 2021-09-02 01:38:18

Sometimes you want just to tweak the way you run a Rails project, but without commit those changes upstream.

There are some tools that allow one to do it without much problem.

## Direnv is your Ally

Dir env allows you to just ignore the rbenv `.ruby-version` or asdf `.tool-version` in a very easy way. For example if the project uses a ruby version 2.7.1 but you have installed the version 2.7.2, all you need to do is to put this on your `.envrc` file:

```bash
  load_prefix $HOME/.asdf/installs/ruby/2.7.2
  layout ruby
```

With this, you can force the version 2.7.2 upon the Project.


## Gemfile manipulation

Imagine that the Project mandates you to use Passenger, but you want to run the project locally using Puma, but without commit it to the original Gemfile. One way to do it is just to create a `Gemfile.local` with:

```ruby
eval_gemfile "Gemfile"

gem 'passenger', require: false
gem 'puma'
```

After it just, copy the original `Gemfile.lock` to `Gemfile.local.lock` and place add more one line to your `.envrc` file:

```bash
# what we add previously
load_prefix $HOME/.asdf/installs/ruby/2.7.2
layout ruby

# a new bundle gemfile
BUNDLE_GEMFILE=Gemfile.local
```

With this in place, just run the commands as usual:

```bash
bundle install
bundle exec rails server puma
```

## Aditional notes

1. It's important to always resync the `Gemfile.local.lock` when some major modification on the original `Gemfile.lock` happens.
2. It's important to make sure that your `.gitignore_global` file will ignore properly the `.envrc` and `Gemfile.local` and `Gemfile.local.lock` files.
Vocabulary Building Day 5
Tags: gre, day5
Published: 2021-09-02 01:15:29

1. **impertinent**(adjective) : not showing proper respect; rude.
![alt text](https://i.ytimg.com/vi/LCPDlcf0Jt8/maxresdefault.jpg)
[Checkout Pronunciation](https://www.google.com/search?q=impertinent&oq=impertinent&aqs=chrome..69i57j0i433i512j0i512l2j0i433i512j0i512l5.15735j1j7&sourceid=chrome&ie=UTF-8)

2. **innocuous**(adjective) : not harmful or offensive.
![alt text](https://systemagicmotives.com/extraordinary-words/Innocuous.jpg)
[Checkout Pronunciation](https://www.google.com/search?q=innocuous&oq=innocuous&aqs=chrome..69i57j0i433i512j0i512l2j0i433i512j0i512l5.9584j0j9&sourceid=chrome&ie=UTF-8)

3. **laconic**(adjective): (of a person, speech, or style of writing) using very few words.
![alt text](https://pbs.twimg.com/media/De2iC4eUwAgtmP0?format=jpg&name=small)
[Checkout Pronunciation](https://www.google.com/search?q=laconic&oq=laconic&aqs=chrome..69i57j0i433i512j0i512l8.5852j0j9&sourceid=chrome&ie=UTF-8)

4. **upbraid**(verb) :find fault with (someone); scold.
![alt text](https://i.ytimg.com/vi/7dHdjjUbTS4/maxresdefault.jpg)
[Checkout Pronunciation](https://www.google.com/search?q=upbraid&oq=upbraid&aqs=chrome..69i57j0i512j0i433i512j0i512l7.10640j1j9&sourceid=chrome&ie=UTF-8)
5. **auspicious**(adjective): conducive to success; favourable.
![alt text](https://www.chinesefortunecalendar.com/Images/Luck/Group4-Jump.png)
[Checkout Pronunciation](https://www.google.com/search?q=auspicious&oq=auspicious&aqs=chrome..69i57j0i433i512j0i131i433i457i512j0i402j0i131i433i512j0i512l5.2100j0j9&sourceid=chrome&ie=UTF-8)
I hope this helps you if you are preparing for GRE exams.