teleren/devto huggingface dataset:
Web Data Scraper
Tags: webscraper, webgrabber, amazonscraper, fbscraper
Published: 2020-11-19 11:01:45

In this post, I will tell you the best web scraping tool for both commercial and open-source data scraping. There are many Web scraping tools available on the market depending on your needs it can be hard to make a choice.

But In this post, I'm going briefly to explain which web scraper tool is better and can work depending on your needs.

Are you looking for web scrapers for IndiaMART, Amazon, Fb, eBay, and many more websites?

If you are looking for an IndiaMART Scraper, Fb scraper, Twitter scraper, Amazon scraper, Yellow Pages Scraper, white page scraper, or any other site scraper then you are in the right place. You can find these scrapers on the Internet easily but you have to pay them separately, meaning you need a separate web scraper for every website that can be very expensive and out of the budget for your company. 
https://www.ahmadsoftware.com/119/6/web-data-scraper.html

You will think about what you should do, don’t worry! A web scraper is available that can extract web data from all these sites itself without any programming, yes, there is a web extractor or grabber that can scrape multiple websites at once. This web data scraper is named Anysite Scraper.

Can Anysite Scraper scrape data from multiple websites?

A web scraper or a web scraping tool only extracts data from a specific website only. But Anysite Scraper can scrape social networking sites such as IndiaMART, Facebook, Twitter, Amazon, Alibaba, OLX, eBay, Yellow Pages, Four Square, Merchant Circle, Yelp, Manta, and many more websites. All these websites offer important data for businesses that’s why this web scraper can extract unstructured data and save it into a readable and structured form that is easily accessible.

Why is Anysite Scraper the most recommended web data scraper?

This web data extraction tool will extract data from the HTML pages of different or multiple websites and organize the data into CSV. Millions of websites are live and active on Google on a daily basis. You can extract data or collect data manually from these all websites but with this web data mining tool, you can scrape all websites on the Internet. 
https://www.ahmadsoftware.com/119/6/web-data-scraper.html

Anysite Scraper is used to collect even complex web data from the websites on the internet. There are many search engines on the Internet that will help you to find a website about specific business-related data. This web data extractor will help you to extract data from different websites and save the data in structured formats like CSV and Excel Spreadsheet.
Write complex SQL with sub query easily in Rails
Tags: rails, ruby, sql, postgres
Published: 2020-11-19 10:57:20

In some case, you have to write SQL with sub query clause. For example, when you use `group by` or window functions.

You can write it in raw SQL. But, if you have a helper method like this:

```ruby
class ApplicationRecord < ActiveRecord::Base
   def self.from_subquery(relation)
     from("(#{relation.to_sql}) as #{table_name}")
   end
 end
```

you can write this nested query in ActiveRecord:

```ruby
class RestaurantViewLog < ApplicationRecord
   def self.history_for_user(user)
     from_subquery(
       from_subquery(
         select('*', 'lead(restaurant_id) over (partition by user_id order by id) as next_restaurant_id')
           .where(user_id: user.id)
       )
       .where('next_restaurant_id is null or restaurant_id <> next_restaurant_id')
     )
   end
```

It can be composed with other conditions. 

```ruby
RestaurantViewLog
  .includes(:restaurant)
  .history_for_user(user)
  .order(id: :desc)
  .limit(20)
```


The raw sql of `RestaurantViewLog.history_for_user(user)` is below:

```sql
SELECT
  "restaurant_view_logs".*
FROM (
  SELECT
    "restaurant_view_logs".*
  FROM (
    SELECT *, lead(restaurant_id) over (partition by user_id order by id) as next_restaurant_id
    FROM "restaurant_view_logs"
    WHERE "restaurant_view_logs"."user_id" = 1
  ) as restaurant_view_logs
  WHERE (next_restaurant_id is null or restaurant_id <> next_restaurant_id)
) as restaurant_view_log
```

Note: Here the nested query is necessary to filter rows with the result of window function `next_restaurant_id`.
Placeholder supported Javascript Rich Text editor
Tags: help, javascript
Published: 2020-11-19 10:43:28

I need somehow to have html templates but with some sort of placeholder text so I can easily parse it and replace placeholder text with values.

But the editor of the html files would be non tech-savy people. Hence I need to have some sort of an easy-to use js rich text editor that will also contain tools to place the placeholder texts into the specific position of the cursor.

So can you suggest me an rich text editor that offers the functionality above?
What's your favorite CSS approach?
Tags: discuss, css, ui, ux
Published: 2020-11-19 10:41:51

---
title: What's your favorite CSS approach?
published: true
description: 
tags: discuss, css, ui, ux
cover_image: https://disenowebakus.net/en/images/articles/learn-css.jpg
---
Some time ago I wrote [an extended article](https://dev.to/madza/how-it-feels-like-to-style-things-in-2020-21cm) on various approaches to styling in 2020. Some of the most common CSS ways include:

* Vanilla CSS
* Supersets like SASS/SCSS, Less, Stylus
* Frameworks like Bootstrap, Foundation, Bulma, Materialize, Semantic UI
* CSS-in-JS approaches like Styled-components, Radium, Aphrodite, Emotion, and JSS
* Atomic CSS and low-level utility frameworks like TailwindCSS

Which approach is your favorite and why?
Maximize Site Potential With SEO Site Audit
Tags: seo, siteaudit
Published: 2020-11-19 10:37:13

The [search engine optimization](https://www.propelguru.com/search-engine-optimization/) (SEO) industry has grown in recent years, and to such an extent that many SEO practices have become important parts of internet marketing strategies for many businesses.

However, while the ever-changing dynamics between search engine algorithms and SEO techniques have evolved in complexity and in many different directions, very little has been done to truly measure the effectiveness of these SEO methodologies and processes. Businesses budget large amounts of money each year for their website SEO projects, but only a few do a regular review of their SEO programs. Therefore, a well-designed SEO audit is a must. SEO website auditing is also becoming the norm with many companies wanting an objective evaluation of the effectiveness of their SEO initiatives.

As with any other audit, SEO website auditing is a way of evaluating the efficiency and effectiveness of corporate websites. It seeks to identify the gaps between the actual and actual performance of the website. A definitive objective of the SEO review is to suggest upgrades and amplify the advantages of SEO speculations.

**SEO audit benefits:**

**What are the advantages of an SEO audit? Here are a few:**

1. An SEO website audit can identify reasons for poor ranking performance and provide helpful tips to improve performance.

2. An SEO audit can assess the extent and extent of poor performance. You can also rectify the damage caused by previous SEO methodologies by gaining valuable information for decision making on whether to hire professional SEO experts to work on the problem or continue with the internal SEO work.

3. An SEO website audit ensures acceptance and support from management, especially when performed by an external SEO auditor. When confirmed with concrete action, this can convince business decision-makers that current and future SEO strategies are working effectively for the business.

Making SEO website auditing part of the [business](https://www.propelguru.com/) roadmap should be one of the most important endeavors for a business. The SEO audit ensures that the company's SEO initiatives are well-validated and worth the investment.
Integration/Functional Testing with JUnit and Solace PubSub+
Tags: java, junit, solace, eventdriven
Published: 2020-11-19 10:36:19

When developing event driven Java services for Solace PubSub+, at some stage you want to move from unit testing Java code to testing services against a broker.

[This repository](https://github.com/solace-iot-team/pubsubplus-container-junit) demonstrates a base class for JUnit tests that launches a new PubSub+ instance in docker for use in tests.
It utilises [testcontainers](https://www.testcontainers.org/), manages the container life cycle manually as there is no testcontainers wrapper (yet) for PubSub+ and follows the [singleton container pattern](https://www.testcontainers.org/test_framework_integration/manual_lifecycle_control/).

At the same time I put my original version of this together spierepf (Peter-Frank Spierenburg) created an example using JUnit 5, check it out here:
https://github.com/spierepf/solace-junit5-test

## Port Mapping and Ports Exposed by Container

When the container is created the mapped ports are provided. This tells testcontainers which ports it shall expose for the container. [testcontainers exposes random ports and maps these to the internal ports of the container](https://www.testcontainers.org/features/networking/).
For example - the base class maps port 55555 (SMF plain). This may be exposed as any port. The base class logs the SMF port used and output will look similar to this:
```
INFO: Started Solace PubSub+ Docker Container, available on host [localhost], SMF port [32872]
```

So an SMF client needs to connect on port `32872`.

## Base class - [AbstractPubSubPlusTestCase](https://github.com/solace-iot-team/pubsubplus-container-junit/blob/main/src/main/java/com/solace/junit/AbstractPubSubPlusTestCase.java)

This class starts the docker container. It logs a message when the container before and after start up.
It exposes many of the plain services such as SMF, REST/HTTP, MQTT/TCP. The ports used by the container can be obtained from the class with `getXxxxx` methods.
The class also provides `getAdminUser` and `getAdminPassword` methods so SEMP v2 calls can be sent to configure the broker.

## Example test - [SolaceIntegrationTest](https://github.com/solace-iot-team/pubsubplus-container-junit/blob/main/src/test/java/com/solace/junit/demo/SolaceIntegrationTest.java)

This is an example unit test, extends the `AbstractPubSubPlusTestCase` class.

It includes some test cases to demo how the base class can be used:
* Publish message using SMF
* Publish and subscribe to message using SMF
* Publish using REST/HTTP and subscribe using SMF
* Obtain a. list of message vpns form the broker using SEMPv2/HTTP
How I localized my media player app into 50 languages for free
Tags: android, kotlin, localization, localazy
Published: 2020-11-19 10:28:38

Recently, I worked on a small media player app for Android to play a list of tracks in a given folder on the SD card. One of the requirements was to get the app translated to more languages.

There were only a few strings at the time, but the app was just a proof of concept, and it was supposed to be improved in the future. 

```xml
<resources>
    <string name="button_play">Play</string>
    <string name="button_pause">Pause</string>
    <string name="button_stop">Stop</string>
    <string name="button_next">Next</string>
    <string name="button_previous">Previous</string>
    <string name="menu_tracks">Tracks</string>
    <string name="info_playing">Now playing: %1$s</string>
</resources>
```

I was looking for a simple solution to manage translations and found [Localazy](https://localazy.com). It's free, and it promised to translate my app into 80 languages for free by sharing translations with other apps, so I decided to give it a try. 

I signed up, followed the instructions, and integrated Localazy with my Gradle script. It was simple, and I didn't need to touch the source code or handle XML files. Neat!

With the `uploadStrings` Gradle command added by Localazy, I uploaded strings. In a few seconds, new languages are available for my app:

![Available languages](https://content.localazy.com/80_langs/available_langs.png)

I added about 50 of then to my app:

![News languages](https://content.localazy.com/80_langs/added_langs.png)

And then reviewed them:

![Review languages](https://content.localazy.com/80_langs/review.png)

The review is awesome as it allowed me to check that placeholders are correct, etc. 

Honestly, the offered translations are extremely accurate. I tried on another of my apps too, and it's way better than Google Translate. If the string is not available through the shared translations, there are machine translations from Amazon and Google. 

Adding a new language to my app took me just a few minutes. And what I totally love about [Localazy](https://localazy.com) is that I only cleaned my project and rebuilt it to have all the languages included in the app! Nothing else needed.

It's not that shocking that my simple app was 100% translated easily, as my strings are common. However, the whole process is enjoyable and seamless!

---

This post is translated and republished with the consent of the original author.
Need help to improve my usage of gatsby-image
Tags: gatsby, react, graphql, javascript
Published: 2020-11-19 10:26:11

---
title: Need help to improve my usage of gatsby-image
published: true
description:  How to handle dynamic images in gatsby...?
tags: gatsby, react, graphql, javascript
cover_image: https://image.shutterstock.com/z/stock-photo-helping-hand-434416909.jpg
---

Hello fellow Gatsby'ers. Today i am comming with a question to you. I need to improve my bundle size, and therefore i want to rewrite my gatsby-image wrapper to be more efficient. 

Consider my bundle
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/sy22p5f5zxpobphoosxx.PNG)

BUT: the 150 images itself are only 14MB in total, which means gatsby bloats it like crazy.

I know my code smell in terms of BIG-O, but, my poor excuse, i didn't knew another way than mapping over the result. Can you guys help me to improve here, considering: 

```javascript
const ImageLarge = props => {
  return (
    <StaticQuery
      query={graphql`
        query {
          allFile(filter: { sourceInstanceName: { eq: "assets" } }) {
            edges {
              node {
                relativePath
                name
                childImageSharp {
                  fluid(maxWidth: 600, quality: 100) {
                    ...GatsbyImageSharpFluid
                  }
                }
              }
            }
          }
        }
      `}
```

and here now my pile of shame: 

```javascript
 const image = data.allFile.edges.find(n => {
          return n.node.relativePath.includes(`${path + props.src}`)
        })

        if (!image) return null
```

Btw, my problem are comming from not beeing able to parametrize my static gqlquery with arguments, so i took all images, mapped over and returned only the image that i needed. horrible inifficnient. 

Why cant i do something like this?

```javascript
const ImageLarge = props => {
  return (
    <StaticQuery
      query={graphql`
        query {
          allFile(filter: { sourceInstanceName: { eq: `assets/${name}.png` } }) {
            edges {
              node {
                relativePath
                name
                childImageSharp {
                  fluid(maxWidth: 600, quality: 100) {
                    ...GatsbyImageSharpFluid
                  }
                }
              }
            }
          }
        }
      `}
```

I asked google and found this, which describes my problem perfectly, but offers no solution

*"Believe it or not you cannot create a fully dynamic image component using a gastby-image without risking a (possibly very large) bloat in your bundle size. The problem is that static queries in Gatsby do not support string interpolation in it's template literal."*

[what-is-the-best-way-to-display-all-pictures-of-a-directory-in-a-gatsby-project](https://stackoverflow.com/questions/57098239/what-is-the-best-way-to-display-all-pictures-of-a-directory-in-a-gatsby-project)


If one you could help me to solve this problem, i'd be glad and i also think, that we should write about it here, so others can find this googeling.

May the code be with you :pray:
Best jobs remotely for Senior developers
Tags: node, ruby, java, python
Published: 2020-11-19 09:19:42

See more on our [Telegram](https://t.me/remotely_jobs)

1. [Senior UI/Front-End Developer](https://www.remotely.jobs/remote-senior-ui-front-end-developer- job-at-interaction-design-foundation) (Interaction Design Foundation)

- You have at least 5 years of experience working as a Front-End Developer.
- You prefer native web APIs and functionality over alluring new frameworks - and you know how and when to use them.

2. [Senior Node Developer](https://www.remotely.jobs/remote-senior-node-developer-job-at-clevertech) (Clevertech)

- 5+ years experience in a senior developer or architect role; ideally, you have delivered business-critical software to large enterprises
- You are fluent in a modern programming language (Node preferred)

3. [Senior PHP Developer](Laravel)  (https://www.remotely.jobs/remote-senior-php-developer-laravel-job-at-interaction-design-foundation)(Interaction Design Foundation)

- You have expert knowledge of PHP.
- You have expert knowledge of Laravel or Symfony.

4.[Senior Python Developer](https://www.remotely.jobs/remote-senior-python-developer-job-at-opolis)(Opolis)

- Proven start-up success experience
- Self-motivated and ready to dig in

5. [Senior Full Stack Engineer](https://www.remotely.jobs/remote-senior-full-stack-engineer-job-at-capdesk)(Capdesk)

We're looking for engineers that have experience shipping stuff.
Backend Là Gì- " Tất Tần Tật " Những Thông Tin Về Backend
Published: 2020-11-19 10:08:54

Nếu bạn có nhu cầu tìm hiểu về lập trình website thì chắc chắn cần phải biết về Backend. Vậy Backend là gì? Hãy theo dõi bài viết dưới đây nhé Xem chi tiết tại: http://laptrinhvacongnghe.com/backend-la-gi/
2020 Video Game Accessibility Awards
Tags: a11y, games, ux
Published: 2020-11-19 10:05:49

---
title: 2020 Video Game Accessibility Awards
published: true
description: 
tags: a11y, games, ux
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/xz8i7gjy17stsbyytpjy.png
---

{% youtube WXcnVqmXG3E %}

Disclaimer: someone shared this with me, I have no involvement with the project and didn't realise it was happening until after the fact.

The majority of posts on DEV concern web development, but there's a lot of software out there that's not destined for the browser, and I think it's a great way to see what's going on.
Frontend Là Gì -Những Skill Cần Có Của Một Frontend Developer
Published: 2020-11-19 10:01:52

Những tính năng trên website bạn nhìn thấy đều xây dựng thông qua phát triển giao diện người dùng gọi là Frontend Development.Vậy Frontend là gì? Xem chi tiết tại: http://nghelaptrinh.net/frontend-la-gi-va-frontend-developer/
My #100DOC - Day 84
Tags: 100daysofcode, challenge
Published: 2020-11-19 09:55:43

### Day 84: November 18, 2020

#### **Today's Progress**: 
1. **[Balanced system exercise for SGE](https://github.com/pablohs1986/dam_sge2021)** (1h 30min):<br>I ended the balanced system. 
1. **[File Java Class](https://github.com/pablohs1986/dam_ad2021)** (2h):<br>I keep going through the File class, doing exercises with FileReader and BufferedReader. I've also gone over JAXB theory to tackle the exercises soon.
    
#### **What I learned**: 
* How to manually install an Odoo system.
* How to prepare two servers for a balanced system.
* Review of FileReader and BufferedReader.
* What is and how to use JAXB.

#### **Total time**:
3h 30min.
My #100DOC - Day 83
Tags: 100daysofcode, challenge
Published: 2020-11-19 09:55:26

### Day 83: November 17, 2020

#### **Today's Progress**: 
1. **[Balanced system exercise for SGE](https://github.com/pablohs1986/dam_sge2021)** (2h):<br>I continued doing the balanced system. 
2. **[Upgrading to Big Sur](https://dev.to/pablohs1986/macos-users-java-problems-in-big-sur-help-7pa)** (30min):<br>I kept researching how to bring Java back to life in Big Sur. Unsuccessfully again. Fortunately, JetBrains has updated their software and is now compatible with Big Sur, so I have installed IntelliJ on my MacBook and can now use Java on it again.
    
#### **What I learned**: 
* How to manually install an Odoo system.
* How to prepare two servers for a balanced system.
* How to hate an OS.

#### **Total time**:
2h 30min.
My #100DOC - Day 82
Tags: 100daysofcode, challenge
Published: 2020-11-19 09:55:07

### Day 82: November 16, 2020

#### **Today's Progress**: 
1. **[Balanced system exercise for SGE](https://github.com/pablohs1986/dam_sge2021)** (2h 30min):<br>I started doing this exercise for SGE, where we have to do the user manual to configure a balanced system with Odoo and a PostgreSQL database. 
    
#### **What I learned**: 
* How to manually install an Odoo system.
* How to prepare two servers for a balanced system.

#### **Total time**:
2h 30min.
My #100DOC - Day 81
Tags: 100daysofcode, challenge
Published: 2020-11-19 09:54:43

### Day 81: November 15, 2020

#### **Today's Progress**: 
1. **[PostgreSQL exercise for SGE](https://github.com/pablohs1986/dam_sge2021)** (1h 30min):<br>I finished the exercise, I had to get the chestnuts out of the fire doing subqueries.
    
#### **What I learned**: 
* Review of SQL.

#### **Total time**:
1h 30min.
My #100DOC - Day 80
Tags: 100daysofcode, challenge
Published: 2020-11-19 09:54:21

### Day 80: November 14, 2020

#### **Today's Progress**: 
1. **[Upgrading to Big Sur](https://dev.to/pablohs1986/macos-users-java-problems-in-big-sur-help-7pa)** (2h):<br>I kept researching how to bring Java back to life in Big Sur. Unsuccessfully.
2. **[PostgreSQL exercise for SGE](https://github.com/pablohs1986/dam_sge2021)** (1h):<br>I started to carry out a PostgreSQL activity for SGE, making changes to tables in a schema, inserting data and making several SQL statements.
    
#### **What I learned**: 
* How to hate an OS.
* Review of SQL.

#### **Total time**:
4h.
My #100DOC - Day 79
Tags: 100daysofcode, challenge
Published: 2020-11-19 09:54:00

### Day 79: November 13, 2020

#### **Today's Progress**: 
1. **[Upgrading to Big Sur](https://dev.to/pablohs1986/macos-users-java-problems-in-big-sur-help-7pa)** (3h):<br>I upgraded my MacBook to MacOs Big Sur, to the unpleasant surprise that everything that worked with Java worked poorly. Specifically NetBeans, it had died. I did a format and clean install without success.
    
#### **What I learned**: 
* How to hate an OS.

#### **Total time**:
3h.
My #100DOC - Day 78
Tags: 100daysofcode, challenge
Published: 2020-11-19 09:53:28

### Day 78: November 12, 2020

#### **Today's Progress**: 
1. **[Dolibarr installation for SGE](https://github.com/pablohs1986/dam_sge2021)** (2h):<br>I did the installation and configuration of Dolibarr. I am having trouble opening phpMyAdmin.
    
#### **What I learned**: 
* Install Dolibarr.

#### **Total time**:
2h.
Big Data Là Gì- "Tất Tần Tật" Về Big Data Bạn Không Thể Bỏ Qua
Published: 2020-11-19 09:50:17

Big data đã được ứng dụng hầu hết tất cả các lĩnh vực trong đời sống, kinh doanh, khoa học, kỹ thuật và công nghệ.Vậy Big data là gì? Xem chi tiết tại: https://blog.itnavi.com.vn/big-data/