teleren/devto huggingface dataset:
SEO jobs in Netherlands
Tags: jobs, hiring
Published: 2021-06-13 10:29:32

[artefact](https://www.arbeitnow.com/companies/artefact) - Stationsplein 32, 3511 ED Utrecht
Artefact is an international data services company, in data consulting, data marketing and digital activation, transforming data into value and business impact.

Jobs 👉 https://www.arbeitnow.com/companies/artefact

[Spotzer Media Group](https://www.arbeitnow.com/companies/spotzer-media-group) - Amsterdam
We deliver innovative digital marketing solutions to small and medium businesses worldwide, at any scale requested. Expand your business with Spotzer.

Jobs 👉 https://www.arbeitnow.com/companies/spotzer-media-group

[ACDC](https://www.arbeitnow.com/companies/acdc) - Rotterdam
Alphacomm Digital Commerce is active in over 5 countries, with offices The Netherlands and Germany. Our track record in the digital goods industry of over 10 years is something we're very proud of! Are you looking for advice on your digital presence? Let us help you!

Jobs 👉 https://www.arbeitnow.com/companies/acdc

[Creative CT](https://www.arbeitnow.com/companies/creative-ct) - Enschede, Nederland
B2B e-commerce expert sinds 2010. E-commerce oplossingen m.b.v. Magento, Shopware, Symfony &amp;amp; PWA. Groeien met jouw e-commerce business? Daag ons uit.

Jobs 👉 https://www.arbeitnow.com/companies/creative-ct
Redux vs React Context(useContext hook)
Tags: react, javascript
Published: 2021-06-13 10:25:22

hello world i have been using React Context hook for quite a while now and i have found it useful for all my needs and i absolutely feel it can do all that redux does....

but it seems that tech companies or rather frontend development jobs require more of redux which leaves me confused



Leave comments on which you think is better and why the industry requires it.....
Scrape Instagram using python
Tags: python, instagram, scraper
Published: 2021-06-13 10:21:47

---
title: Scrape Instagram using python
published: true
description: This post helps you to scrape instagram followers and following
tags: python, instagram, scraper
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c5jrmhhq6p0eixtf4b8k.jpg
---

This post talks about how we can connect to Instagram using python and extract list of followers, people whom you follow and the list of people you should unfollow (people whom you follow but they don't 😛)

We can easily do the above using a built in python package called `instaloader`. In case you directly want to jump to code and see it in action here it is - https://github.com/apoorva-dave/instagram-scraper

## Dependencies

1. Python3
2. Instaloader
3. Numpy

## Code

Create a file `insta_scraper.py` which will handle the below 4 steps

##### Create a session

We get an instance of Instaloader in below codeblock and login using the username and password provided by the user. Once that is done, profile instance is created in order to fetch the profile's metadata.

```python
 def create_session(self):

        L = instaloader.Instaloader()
        L.login(self.username, self.password) # Login or load session
        self.profile = instaloader.Profile.from_username(L.context, self.username) # Obtain profile metadata
```

##### Get list of followers

```python
  def scrape_followers(self):
       
        for follower in self.profile.get_followers():
            self.followers_list.append(follower.username)
```

##### Get list of following

```python
def scrape_following(self):

        for followee in self.profile.get_followees():
            self.following_list.append(followee.username)
```

##### Get unfollow list

This would generate a `unfollowers_<USERNAME>.txt` file in your present directory containing the list of people whom you follow but they don't.

```python
 def generate_unfollowers_list(self):

        unfollow_list = np.setdiff1d(self.following_list, self.followers_list) # unfollow people who are only in following list and not in followers list
        print("People to unfollow: ", unfollow_list)
        filename = "unfollowers_" + self.username + ".txt"
        file = open(filename, "w")
        for person in unfollow_list:
            file.write(person + "\n")
        file.close()
```

The code can then be executed from a runner script `main.py` which would invoke `create_session()` using the username and password of the user. The design has been kept in such a way so as to make sure user's username and password is only needed while creating session post which we can directly invoke APIs `scrape_followers()` etc as per the requirement.

Instaloader is a very efficient package. We can do much more using it. Please check the documentation here for more details - https://instaloader.github.io/as-module.html

You can find the entire running code [here](https://github.com/apoorva-dave/instagram-scraper) with a `README` to provide steps to run.

This is it for this article. Happy learning!! <3
Angular Development on VS code and Docker using Remote Containers
Tags: vscode, angular, docker
Published: 2021-06-13 10:17:00

VS Code  with Remote Containers extension will help us develop with in container. More details are [here](https://code.visualstudio.com/docs/remote/containers)

I decided to try angular development using VS Code Docker containers. This is my Journey Hope it helps others.

prerequisite:
* Docker
* VS Code with Visual Studio Code Remote - Containers

## Step 1: Create a New Project and Start in a container.
Start VS code in a brand new folder(say AngularOnRC). Open Command palette by pressing F1. Follow this naviation.
![Image of VS code palette](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v7yoaw5wvw6wbgemwtqj.png)
1. Select Remote-Containers: Add Development Container Configurations Files..
2. Select Nodejs & Typescript
3. Select node version as 16.
This will add files in .devcontainer and the VS code will prompt to restart in Docker Container. Restart in docker container.(If you miss the prompt you use command Palette for the same)

## Step 2: Initialize an Angular project.
Once the Project starts in Container(starting may take some time). Open the terminal and Run the following Commands.
```console
npm install -g @angular/cli
ng new AngularOnRC --directory .
``` 
Choose the values of our preference for angular project.

## Step 3: Run the Project
Run the angular project using the following command.
```console
npm run start
``` 
This would prompt you to open in Browser. Now you can see you application Running. 

**This proves that basic angular project development works but the problem starts when we want to run unit tests.**

```console
npm run test
``` 

The issue is due to the fact that docker on which we are developing do not have chrome installed. 

## Step 4: Add chrome to Dockers

Add the following code to Docker file in .devcontainer
```
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
     && apt-get -y install --no-install-recommends chromium
ENV CHROME_BIN=/usr/bin/chromium
```

Now from command palette choose the rebuild container option this will rebuild docker by adding chrome.

## Step 5: Change karma config.

In karma.conf.js file change browser config shown as below.

Old Code
```json
browsers: ['Chrome'],
```
New Code
```json
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
  ChromeHeadlessNoSandbox: {
    base: "ChromeHeadless",
    flags: [
      "--no-sandbox",
      "--disable-setuid-sandbox"
    ]
  }
},
```
Now tests should run as expected. So we are good to develop the application with Unit testing.

Find the git Repo

{% github srinivasarajui/AngularOnRC no-readme %}

Waiting for your comments and feedback
Custom React Router Prompt
Tags: react, reactrouter, javascript, design
Published: 2021-06-13 09:29:38

How to implement the custom prompt on navigation using react-router

--------

#**What’s the need for custom prompt ?**#
Most of the react projects follow the UI [design system](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969) for their components. In order to achieve the same design consistency across the app, they reuse the components. However to block the navigation in case there are some unsaved user data, default browser prompt is the most common and easy way to block the user from navigating to different routes. But the popup does not match your library component.

There is no official docs explicitly mentioning how to use the custom modal instead of the default `react-router` **Prompt**.

#**Solution**#
There are few simple steps to be followed in order to get the required result. Each step contains 100% working code snippets. You can use it in your projects.

##**Step 1**##
We need to disable or block the default browser prompt. This can be done by passing an empty callback to the **`getUserConfirmation`** function prop of the **BrowserRouter**.

{% gist https://gist.github.com/yadhus/a35e4815a96620c63ec06c9a81fe61e1 %}

##**Step 2**##
Now let’s create a custom **RouterPrompt** component using the **`useHistory`** hook from the react-router-dom and [ant design](https://ant.design/components/modal/) component library for the **Modal** component.

{% gist https://gist.github.com/yadhus/330f5bdcc1201e5b610541eac303a28f %}

##**Step 3**##
Let’s create two sample components for navigating between pages. For example, let the first component be `Dashboard.jsx` and the second component be `Home.jsx`.

{% gist https://gist.github.com/yadhus/b035979e0eee9ad916273d6ec693dd69 %}

The home component contains our custom **RouterPrompt** component. The prompt is triggered on the page change and also based on the **`when`** prop. The when prop is used to conditionally trigger the prompt. For instance, if the when prop is set to **true** , the prompt will be shown every time page navigates (from home route to other routes or navigate forward / back).

{% gist https://gist.github.com/yadhus/8cde8ed47b92852f741b1bfd49b3f089 %}

The `onOK` and `onCancel` callback props must return boolean value in order to proceed with the route.

##**Result**##
![Result](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z8hisl4zmjl9p8s6ipiv.png)

##**Conclusion**##
You can use any component library’s modal, even your own custom modal or default browser prompt. But just be careful when implementing the **`history.block`**.

By following the above steps you can achieve the desired solution. The code is 100% working. You can copy the code snippets to your applications to save time.

##**References**##
1. [https://reactrouter.com/web/api/Hooks/usehistory](https://reactrouter.com/web/api/Hooks/usehistory)
2. [https://reactrouter.com/web/api/history](https://reactrouter.com/web/api/history)
Finding Super Keys
Tags: database, computerscience
Published: 2021-06-13 09:51:57

**How to find a Super Key in a Relation**

Consider a relation R(a1, a2, a3,.....an), where n = number of attributes in a relation.
Suppose Candidate Key = (a1)
Find total SKs.

**No. of Super Keys = 2^(n-1)**

**Example 1**
R(ABCDE), CK={B}
Find total SKs

Here n = 5
n-1 = 4
Therefore total number of SKs = 2^4 = 16

**Example 2**
R(a1, a2, a3,....an), CK={a1a2}
Find total SKs

**No. of Super Keys = 2^(n-2)**, since here there are 2 attributes in the candidate Key.

**Example 3**
R(XYZMN), CK={ZM}
Find total SKs

Here n = 5
No. of attributes in Candidate Key = 2
Therefore total number of SKs = 2^(5-2) = 2^3 = 8

**Example 4**
R(a1, a2, a3,....an), CK={a1,a2}
Find total SKs

All SKs which have either a1 or a2 or a1a2
n(a1 U a2) = n(a1) + n(a2) - n(a1a2)

Therfore **No. of Super Keys = 2^(n-1) + 2^(n-1) - 2^(n-2)**

**Example 4**
R(A,B,C,D,E,F), CK={A,DF}
Find total SKs

Total number of SKs = 2^(6-1) + 2^(6-2) - 2^(6-3) = 32+16-8 = 40
Raspberry Pi 4 : quick review
Tags: linux, opensource, raspberrypi
Published: 2021-06-13 09:43:40


In the month of June of 2019 raspberry Pi foundation introduced a new model of SBC(single board computer) named 'Raspberry Pi 4 (model B)',  which was 50% more powerful and 30% more efficient than its previous version. this was one of among most powerful ARM devices in the first two decades of 21st century.

<h3>Spec.: </h3>

![Raspberry Pi 4 (overview) ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f2zms61vb951w5zjo6ob.jpg)

             RAM: 1GB/2GB/4GB/8GB (DDR4)
             CPU: 4 cores (64-bit ARM cortex A72)
             GPU: VideoCore VI
             Clock Speed: 1.5gHz
             Storage type: micro SD card, USB(external)
             Wireless connectivity: bluetooth 2.4/5 gHz, Wifi 802.11ac

<h3> I/O: </h3> 

![Specifications](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/09atal7iccavtb8nkyf0.jpg)

             2x USB type-A (3.0)
             2x USB type-A (2.0)
             1x USB type-C 
             1x Ethernet port (RJ-45)
             2x micro HDMI
             1x headphone jack (3.0)
             1x CSI connector
             1x DSI connector
             40x GPIO pin
             4x PoE hat

<h3> software: </h3>

![Raspbian OS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vev39h2hxprxufvdywbi.jpg)
           •  Raspbian OS (officially supported)
           •  Ubuntu 20.4 LTS (officially supported)
           •  Windows IoT version
             except these a wide range of linux distros is supported unofficially.

<h3> pros. </h3>
           •  Most powerful Raspberry Pi to date.
           •  Offered in three RAM amounts.
           •  Supports two 4K external displays.
           •  Gigabit Ethernet jack onboard.
           •  USB 3.0 support.


<h3> cons. </h3>

           •   Needs fan and case.
           •   No built-in storage.
           •   Alternate operating systems need higher-spec, more expensive versions.
    

<h3> pricing:  </h3>

        (from electronicscomp.com)

         •   1 GB - ₹2690.00 (tax excluded)
         •   2 GB - ₹3085.00 (tax excluded)
         •   4 GB - ₹4185.00 (tax excluded)
         •   8 GB - ₹5695.00 (tax excluded)
     

<h3> conclusion: </h3> 
             
As an educational & development and introductory computer, it's hard to bet to Raspberry Pi. Every new release has managed to do more without fundamentally changing the size of the board, adding more powerful features day by day while still supporting the same interface for third party hardware, supporting a wide range of Operating Systems. As someone who grew up with 1980s 8-bit or 16-bit computers, there's a certain nostalgia in a device like this, but this category of hardware clearly looks forward, building on its heritage and aiming to encourage more developer and engineers.
Tailwind CSS Contact Us Form
Tags: tailwindcss, css, html, webdev
Published: 2021-06-13 08:46:10

Contact us form in a like faq form for sending any queries by the user to admin. So here we made a simple and minimal responsive Contact Us Form in Tailwind CSS.

In this contact us form we used Tailwind CSS utilities classes. We used input fields and display flex properly to make this element a proper center. Also, we used color classes for best combinations. Here we also used width classes in form tag for different screen classes like lg and for medium. This is a fully responsive Tailwind CSS Contact Us Form for mobile and tabltes.

Make it yours now by using it, downloading it, and please share it. we will design more elements for you

[Source code](https://w3hubs.com/tailwind-css-contact-us-form/)
Farhan Rana Rajpoot 
Tags: performance, productivity
Published: 2021-06-13 07:53:39

Farhan Rana Rajpoot (Urdu محمد فرحان رانا راجپوت ) Born 20 April 2000 is a Pakistani Youtuber & Graphics Designer.

EDUCATION LEVEL 
Farhan Rana Rajpoot is a Education till.

BIOGRAPHY LEVEL
Muhammad Farhan Zahid, referred to expertly as Farhan Rana Rajpoot, is an Pakistani YouTube Personality and Artist situated in Punjab Pakistan. Farhan Rana Rajpoot (Muhammad Farhan Zahid) giving most recent tech news,gadgets audit, computerized showcasing, web optimization tips, unpacking devices, youtube instructional exercise, contributing to a blog and more on there youtube channel or site.  

EARLY LIFE AND CAREER  
Essentially he transfer various kinds of video. He make recordings in various classification. Like about publishing content to a blog, android application advancement, data about play console accounts, video altering, unpacking most recent devices or some different tips and deceives.  

Farhan Rana Rajpoot additionally run there tech site Farhan Rana Rajpoot he for the most part post about most recent contraptions survey, how to instructional exercise, about contributing to a blog and some more.
Most Important Color Tools For Your Design
Tags: color, design, colortheory, tools
Published: 2021-06-13 07:38:28

![s](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0qps3eq0hlv09k9kiw8.png)
 Every professional on the web has to play with colors such as graphics designer, web designer, ui/ux designer,. To use color efficiently, we have to use some tools. Here are some color tools and websites I used to accomplish various tasks. I hope it helps you too. 

# coolors.co

1.Color picker: I can make shades , tints, hues, temperature, harmony, blindness simulator, contrast checker and color library

2.Extract color pallette from photo

3.crete ccollage

4.contrast checker

5.Generate color/Explore color pallette

6.Trendng colors

#canva.com

1.Color wheel

2.Color meaning

#cssfontstack.com

1.Lighten and darken a color

#colorable.jxnblk.com

1.Contrast checker

#picular.co

1.Primary color generator

#pigment.shapefactory.co

1.Primary and accent color maker

#Some other websites which may be helpful

1. labs.tinyeye.com

#Google chrome extension

1.colorpick eyedropper: This extension will help you pick a color from any website on your browser screen.
Importing custom font in HTML and CSS
Tags: html, css, vscode, webdev
Published: 2021-06-13 07:28:22

There are many web developers who are starting out and don't know how to add custom fonts to their website! I believe you have arrived to the right place. In this blog I am going to explain you how to import custom fonts to your website.

Adding a unique font to your website is a great way to make your design stand out online.

In this blog, I will walk you through the step-by-step process for adding any font to your website.

So, we are going to using Google Font to import custom fonts. So let's quickly go thought the steps of importing the fonts.

As of April 2021, Google Fonts have 1052 font families, including 89 variable font families.

__Step-1 Go to Google Font site__
First of all you have to go to the Google Fonts website, The link for the website is here https://fonts.google.com/ .
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3aqxdpuwicz5qnz9mr1x.png)

__Step-2 Search for the desired font__
Then you have to type the desire font name in the search box and press enter for search.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ytiemcv16htnoc9f8kqo.png)

__Step-3 Select the styles__
After that you have select the style of the font. (Eg: Thin 100, Extra-Light 200 etc...).
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lfxzvpwmiqjtjavum18i.png)
__Step-4 There are 2 ways to import the font__
     __1) In HTML file__
       i) You have to use link tag to import the font in HTML, else you 
       can copy the code in the box and paste that code inside you 
       html code.
       ii) Now we have successfully added a custom font!! YAYY now we 
       just have to use in the CSS property.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yp4aphgmlfzhnljy08il.png)

__2) In CSS file__
In order to import font only using CSS then you have to click on @import instead of <link> and copy the code inside it and paste it at the top of your CSS file.
      
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dfqtr9wwp0eqg2puwfti.png)

## __Bonus Tip:__
It is advise to use link tag to import font in html instead of using @import in css because the html page is the first to load in the browser and so are the link tags, hence the font will load first but on the other hand, css file is loaded after the html file, hence decreasing the speed of importing font.
<br>
Do visit the community made by me and my friend @shreyazz for more amazing and informative stuff, and if you wanna recommend something or give feedback, feel free to comment😇!

CodeBox's handles : [https://linktr.ee/CodeBox](https://linktr.ee/CodeBox)
Most common javascript string function
Tags: javascript, webdev
Published: 2021-06-13 07:22:00

## **charAt**

**charAt method returns the character at the specified index in a string**

![charAt.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623473640876/5C3L34pRw.png)


## **charCodeAt**

**charCodeAt method returns Unicode of the character at the specified index in a string**

![charCodeAt.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623473683668/b3YXQhexr.png)

## **substr**

**substr extracts the characters from a string, beginning at a specified start position, and through the specified number of character**

![substr (2).png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623473736709/wmgcoMD5l.png)

## **substring**

**substring Extracts the characters from a string, between two specified indices**

![substring (2).png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623473824214/VSFDl-n3c.png)

## **toLowerCase**

**toLowerCase converts a string to lowercase letters**

![toLowerCase.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623473913876/6Ro1VU5U6.png)

## **toUpperCase**

**toUpperCase converts a string to uppercase letters**

![toLocaleUpperCase.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623474010884/ECs8HzlJn.png)

## **trim**

**trim remove white space from start and end of string**

![trim (2).png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623474087559/dX1UY6pc9.png)

## **repeat**

**repeat returns a new string with a specified number of copies of an existing string**

![carbon.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623474341057/0RElVLFKx.png)

## **startsWith**

**startsWith method is used to check whether a string starts with a specific word or not. it returns true or false**

![startsWith.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623474460092/ybB7s8F7f.png)

## **endsWith**

**endsWith is used to check whether a string ends with a specific word or not. it returns true or false**

![endsWith.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623474612488/lZuX5He9f.png)

## **Wrapping up!**

Share this blog with your friends 👩🏼‍🤝‍🧑🏼 and developers 👨‍💻 you know and let them know about these cool string functions

Your feedback and comments are very important to me. 💌

## **Get in touch 🤜🤛**

 [Instagram](https://www.instagram.com/technonic) 

 [YouTube](https://www.youtube.com/c/pratik-lochawala)
Create a new sudo user in ubuntu 
Tags: ubuntu, bash, devops, cloudskills
Published: 2021-06-13 07:19:21

## What is '**sudo**' ?
Actually **'sudo'** command provides administrator privileges. When we create a new server it has a default 'root' user. So, here I'm going to create a new user with sudo access.

#### Step One
Open your terminal and write the following command
 ``` 
root@localhost:~$ adduser [username] 

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

#### Step two
Set the password and confirm the password again.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/svbws8bacnv5nyomezwr.png)

#### Step three
Now you need to give 'sudo' permission to the newly created user. So, use the usermod command in the terminal. Command is given bellow - 

``` 
root@localhost:~$ usermod -aG [username] 
```

Now, the new user added to the sudo group. you can check by this command - 

``` 
root@localhost:~$ su - [username] 
```

And run any command with 'sudo' in the terminal -
```
 username@localhost:~$ sudo apt-get update 
```

If you want to add sudo to the existing user then just follow the step three. 

Thanks for reading <3