teleren/devto huggingface dataset:
Cloud development environment for Team
Tags: linux, devenv
Published: 2022-08-11 11:16:05

### Target
Manage/Create dev-environment on cloud linux-server for a team to avoid local-computer errors and collaborate on code with other team-members

### Requirements
1. VPS (used Ubuntu 20.04 VPS while writing this)
2. Root access


### Overview
1. User Creation
2. Team-Group Creation
3. Team-Folder for team to collaborate

## Steps

### User Creation
```bash
# create user accounts for your team member
useradd --create-home <username>  # create user with directory for him in `/home` with name equal to <username>
passwd <username> # set user password
chmod o-rwx /home/<username> # make folder private, so only folder-owner and root-user can view/modify files
# "o" == others, 
# "-" == remove permissions 
# "r" == read, "w" == write", "x" == execute


# Additonal commands
id <username> # list user's userid(uid) and primary-group(gid) amd secondary-groups(groups)
cat /etc/passwd # list all users
deluser --remove-home <username> # delete user alongwith his directory
cat /etc/passwd # list all users
```

User can now connect with his folder with ssh and vs-code  using command: `ssh <username>@<ip-address/domain-name>`


### Team-Group creation
There are two types of groups primary-group and secondary group:
1. Primary group: created at the time of user creation, group-name is same as user-name, listed in - /etc/passwd
2. Secondary group: used to grant certain privileges to a set of users, listed in - /etc/group

We are going to create "Secondary group" here.

```bash
groupadd <group-name> # create group
usermod -a -G <group-name> <user-name> # add user to the group, -a == append, -G == group

# Additional commands
cat /etc/group  # list all groups
getent group <group-name> # list all users of a group
groupdel <groupname>
```

### Team-Folder for team to collaborate
```bash
mkdir <folder-name> # create a new folder for team
chgrp -R <group-name> <folder-name>  # change group of folder to team-group we created above
chmod g+rwx <folder-name> # give access of folder to it's group
```

Now team-members can work privately in their individual folders and switch to team-folder to collaborate on code with other team-members


### Reference
- https://linuxize.com/
- https://code.visualstudio.com/docs/remote/ssh
Cypress vs. Playwright: Which One is Better for You?
Tags: javascript, testing, node, react
Published: 2022-08-11 11:12:25

When it comes to automated testing tools, there are a lot of options out there. But two of the most popular and widely used options are Cypress and Playwright. So, which one is better for you?

To help you make that decision, we've put together a brief comparison of the two tools.

-> If you need to test a web application that is built using React, then Cypress may be the better option. However, if you need to test a web application that is built using Angular, then Playwright may be the better option. Ultimately, the best way to decide which tool is right for you is to try them both out and see which one you prefer.

-> [Cypress](https://www.testrigtechnologies.com/cypress-tutorial-complete-guide-on-how-to-setup-write-first-test/) is a JavaScript testing tool that is built on top of the Mocha test framework. It uses a unique architecture that makes tests run in the same event loop as the application under test. This makes tests more reliable and less flaky.

-> Playwright, on the other hand, is a Node.js library developed by Microsoft. It provides a cross-platform API for automating Chromium, WebKit, and Firefox browsers.

->  One of the key differences between the two tools is that Cypress runs tests in the same event loop as the application under test. This makes tests more reliable and less flaky.

-> Playwright, on the other hand, uses a different process for each browser. This can make tests more reliable, but it can also make them slower.

-> Another key difference is that Cypress has a built-in test runner and reporter. The playwright does not have a built-in test runner, but it does have a reporter.

-> Cypress is a JavaScript-based end-to-end testing tool that runs in the browser. It's easy to set up and use, and it has excellent documentation. However, Cypress can be slow, and it doesn't support headless browsing.

The playwright is a Node.js library that provides APIs to automate Chromium, WebKit, and Firefox browsers. It's faster than Cypress and supports headless browsing, but it has a steeper learning curve.

-> Cypress is a great tool for those who are looking for an easy-to-use solution with great documentation. However, if you need a fast tool that supports headless browsing, Playwright is the better option.

-> Cypress is free and open source, while Playwright is a paid tool.

**Conclusion**

So, which one is better for you? It really depends on your needs and preferences. Do your research and test out each tool before using it in production as automated testing is a critical part of any web development process! Both tools have their pros and cons, so it's important to understand the differences before making a decision.
Louis Braille and new technology or 5 applications for blind people.
Tags: discuss, news, ai, mobile
Published: 2022-08-11 10:53:11

Yesterday I visited the [Musée Louis Braille](https://museelouisbraille.com/en). That inspired me to find some applications which facilitate the life of blind people. 

Now we have lots of different applications like Siri or Google Assistant that help not only blind people but her I would like to show you 5 applications, especially for persons with this disability:

1). How to receive money? Some countries have money with special tactile signs that help to recognize denomination (like polish zloty) but other currencies are difficult to recognize. So this application is an invaluable help, but it is responsible only for Mac and its products:
[Look Tel](http://www.looktel.com/moneyreader)

2). Next application helps to recognize different objects from images taken with a mobile camera, and it is responsible, and for IOS and for Android: 
[Tap Tap See](https://taptapseeapp.com/) 

3). This application is a french invention like the braille alphabet and it is destinate not only for people with visual disabilities. Do you know what is GPS? Evelity is exactly an indoor "GPS". It helps to find your way around closed spaces like houses and other places of daily life.
[Evelity](https://www.evelity.com/)

4). "I will tell you the world" is a résumé of this application. Thanks to the mobile camera a voice synthesizer and AI describe an image. This description is disponible in different languages not only in English like French, Polish or Japanese. Disponible only for IOS:
[Seeing-AI](https://apps.apple.com/ke/app/seeing-ai/id999062298)

5). What if someone wants to take some notes with the braille alphabet? There are some keyboards for that but there is also an application for I-Pad which helps to create TXT files and other notes:
[MBraille](https://apps.apple.com/fr/app/mbraille/id639199558)

Thanks for reading this little article and now a little bonus: some photos from Musée Louis Braille:


![The statue of Braille](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a81jbvq9kzhg214hy8ld.jpg)
The statue of Braille in his natal village Coupvray in Marne-et-Seine just next to Disneyland of Paris.



![The sculpture in front of the house of Braille](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2hutumzq47n5mqexr8pi.jpg)
The sculpture in front of Braille's house.



![The room where he was born Braille](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7b0rwe05xjnjm0ivjses.jpg)
The room where he was born Braille



![Father's studio, where little Louis hurt his eye](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pu89ufrdtpcmfykq5rpl.jpg)
Father's studio, where little Louis hurt his eye. After a few weeks of infection, Louis lost both eyes.



!["Louis Braille" written in braille](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ua0c5uy5y3uor81pzign.jpg)
"Louis Braille" written in braille



![Former braille keyboards](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fte5htgax4kx0m6u7su2.jpg)
Former braille keyboards.
As a Software Developer, why Self Learning is Important?
Tags: programming, career, discuss, productivity
Published: 2022-08-11 10:40:36

**Self-learning** is extremely important whether you belong to the IT sector or not.



Working as a **Software Developer**, what I've figured out is that, product-based companies are generally more stable in terms of process and development of any solution.

Moreover, they have a limited scope as they are working on limited products and already have built-in solutions and structures.
The first few months of working in any company are full of learning, understanding the projects, and much more.

But then there comes a time when you feel yourselves getting caught in a usual routine. You wake up, go to the job and do more like the same things every day.

That's when you feel, that your learning has somehow stopped and you feel less motivated.

You may feel it's the time to switch the company but I think there are high chances of experiencing the same things in the other company as well.

That's why learning on your own is the best thing, you can do along with a 10 to 12 hours job.

The best part about **self-learning** is that the end goal is not to achieve the highest grades but you are learning because you want to develop problem-solving skills and believe me, the whole process is enjoyable and stress-free.



> Time management is a by-product!
Why are subtitles so important?
Published: 2022-08-11 10:39:50

Subdl provides more accessibility because more than 5% of the population has hearing issues and subtitles capture them as well because they also have the right to get entertained with good movies. [Subdl Subtitles](https://subdl.live/) provides easy learning subtitles for kids to make them learn more quickly and easily. It captures the audience of all ages and genders to capture more audience.
Scan and Going for Good
Tags: career, asda
Published: 2022-08-11 10:19:00

As it reaches my last week at Asda, I felt it was a good opportunity to reflect on my time here. 

Whilst I've been at Asda for almost 4 years, the time has passed very quickly. 
I've completed two levels of apprenticeship, and learnt so much, given that I started at Asda with no experience, and no idea how to do anything technical. 

In the time I've been at Asda, I've worked on Scan and Go for around 3 years, largely focusing on Scan & Go Handset in stores and the associated software solution that makes it work. And been involved in the beginning of a large scale re-write of most of the back and front end of the entire Scan & Go estate. 

It's been a rewarding time, however I have felt the need to work on new projects, and work in a more technical and agile environment. 
Whilst Asda was great for the very beginning of my career, I find further progression to be very ambiguous and limited, and so I'm very glad to be taking this jump into something new!
tsParticles 2.2.0 Released
Tags: javascript, typescript, webdev, showdev
Published: 2022-08-11 10:09:00

## tsParticles 2.2.0 Changelog

### New Features

- Container now can have more than one path generator, each particle will keep its own
- Added new `getRandom` and `setRandom` functions for customizing all the random behaviors, it's recommended to use the `getRandom` function instead of `Math.random` when writing plugins, so the randomness can be customized as expected
- Image Shape now supports multiple colors in SVG replace color, random value too, fixes #4532 
- Improved Fireworks preset, now more realistic
- Improved snow preset, added a small wobble effect

### Bug Fixes

- Moved out more properties from the engine, making the engine lighter and plugins more autonomous.
- Improving some functions, could improve performance a bit
- Fixed some 404 links in readme files, thanks to @munyoudoum 
- Fixed responsive screen size calculation

### Other Changes

- EventDispatcher is now private on the engine, it won't be possible to access it without using the given methods
- Changed some exports, exported types instead of the entire classes, since it wasn't intended to use them outside the library
- Created a builder CLI for building many packages, this makes it easier to maintain the build process
- Removed `active` from `slow` interactivity mode object, it was obsolete, small __breaking change__ but the engine will be a bit smaller

---

## Social links

- [Discord](https://discord.gg/hACwv45Hme)
- [Slack](https://join.slack.com/t/tsparticles/shared_invite/enQtOTcxNTQxNjQ4NzkxLWE2MTZhZWExMWRmOWI5MTMxNjczOGE1Yjk0MjViYjdkYTUzODM3OTc5MGQ5MjFlODc4MzE0N2Q1OWQxZDc1YzI)
- [Telegram](https://t.me/tsparticles)
- [Reddit](https://www.reddit.com/r/tsParticles/)

---

{% github matteobruni/tsparticles %}
Starter template for Shopify email notifications
Tags: webdev, shopify, email, node
Published: 2022-08-11 09:59:00

Shopify provides you with default email templates that you can customize, so you don't need to make them from scratch.

However, you sometimes would like to edit their content and design. You need to know the liquid template language created by Shopify and written in Ruby in that case.

It's so hard to customize email templates in Liquid without any developmental environment at local that I've created a starter template that you can preview email templates at local.

[🚀 shopify-email-notification](https://github.com/Kazuki-tam/shopify-email-notification)

{% embed https://www.youtube.com/watch?v=zgVnyliQKaU %}

## Features

- Previewing notification mails at local server
- Hot reloading of local server
- Referring to default email templates which Shopify provides
- Based on Liquid templates
- Editable notification variables
- TypeScript support
- Multi language support (English and Japanese)
- Built in useful commands

## Requirements

- [Node v18 or higher](https://nodejs.org/en/)
- [Shopify store](https://shopify.dev/themes/tools/development-stores#create-a-development-store-for-a-client)

## How to use

You can directly generate a new repository from this repository.

[🚀 shopify-email-notification](https://github.com/Kazuki-tam/shopify-email-notification)

Please click "Use this template".

### Clone your project repository

Clone the repository you generated from `shopify-email-notification`.

```bash
git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
```

### Install packages

Install all dependencies for a project with bellow command.

```bash
pnpm install
```

### Create a `.env` file (Optional)

Create a .env at the root, and then add your shopify admin url. Replace your-shop-name with yours.

```
ADMIN_URL=https://your-shop-name.myshopify.com/admin/
```

### Start development

Start your project in development mode.

```bash
pnpm start
```

Open http://localhost:4000, and then you can preview notification templates.

You can also open your store admin page with this command instantly.

```bash
pnpm admin
```

I recommend you use the format command because it notifies your syntax errors.

```bash
pnpm format
```

That's all to do before you start your project.

I recommend you check out the command list before you get started.

[📖 Useful command list](https://github.com/Kazuki-tam/shopify-email-notification#command-list)

## Thank you!

I hope that shopify-email-notification is helpful for you.
Commit message with title and body with one-liner git command
Tags: git, bash
Published: 2022-08-11 09:51:52


When you use git, one of the most frequent used command is

```bash
git commit -m "my commit message"
```

But most of the time, you would give a more meaningful commit message. Meaningful I mean here is that the message should consist of subject line (a short description of your changes in code) and body (to give more detailed description of what you did)

Today I learn that `git commit` accept multiple message flag 😉
If you run this command
```bash
git commit -m "subject line" -m "commit description"
```

It will result in this
```bash
Author: hunghoang-saritasa <hung.hoang@saritasa.com>
Date:   Thu Aug 11 16:29:07 2022 +0700

    Subject line
    
    Commit message
```

This new finding helps me save time a lot. No need to open a vim editor when committing message with subject and body. And actually [the git documentation](https://git-scm.com/docs/git-commit#Documentation/git-commit.txt--mltmsggt) do mention it.

Bonus: Another way to achieve this commit message structure is opening quotes then press enter and closing the commit with quotes again
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4gijdfwk9wg7l8kmue2.jpg)
I launched my 7th Job Board, now for Java Jobs
Tags: career, java, showdev
Published: 2022-08-11 09:44:11

---
title: I launched my 7th Job Board, now for Java Jobs
published: true
description: 7th Job Boards for Java Developers
tags: career,java,showdev
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kfpkk5f0ewywu609xg1i.png
---

Beginning of 2019 I launched fullstackjob.com as a single-tenant [Job Board for Full Stack Jobs](https://fullstackjob.com). 

After that I did a refactoring and built the engine to be multi-tenant, to be able to run multiple job boards with same instance of stack (Go based API/Webserver, Vue Frontend, ArangoDB) 

Beginning of this year I did a complete new multi-tenant engine which is not more using Vue, but SSR plus a bit of Alpine JS to improve SEO. (btw I continue to use Vue 3 for other [software projects](https://altafino.com/portfolio), where SEO is not so important)

Since then I launched more 5 Job Boards:
- [React & ReactJS Jobs: https://reactjsjob.com](https://reactjsjob.com)
- [Java Script Jobs: https://javascriptjob.xyz](https://javascriptjob.xyz)
- [Python Jobs: https://pythonjob.xyz](https://pythonjob.xyz)
- [Rust Developer Jobs: https://rustjob.xyz](https://rustjob.xyz)
- [Golang Jobs: https://golangjob.xyz](https://golangjob.xyz)

## And now, Java Job Board javajobs.pro is launched
The new [Java Jobs Board](https://javajobs.pro) is ready to find Java related Jobs and hiring Java developers.

You can of course also find [Remote Java Jobs](https://javajobs.pro/remote/jobs)


Cheers Stefan
[Full-Stack Software Developer](https://altafino.com)
Mobile messaging in an ever-evolving industry
Tags: smpp, sms, messaging, voip
Published: 2022-08-11 09:41:59

Getting in touch with people outside your country was too difficult before messaging apps became ubiquitous. Considering it was out of the question for some. The lack of international interoperability also hindered the smooth delivery of SMS messages to customers in different regions of the world using the SMS channel. A solution for streamlined communication beyond national borders was found in SMS Hubbing by GSMA in 2006.

A new structure, standards, and requirements for international SMS interoperability were developed by the GSM Association following the trial period. SMS hubs were required to follow these new changes to do away with cumbersome bilateral agreements among operators.

## A Brief Explanation of SMS Hubbing

In simple terms, SMS Hubbing refers to the new method of transferring SMS between different networks. With this structure, operators no longer need to sign time-consuming and taxing bilateral agreements to pass large quantities of messages. For the smooth flow of SMS traffic internationally, SMS Hubs act as an intermediary between operators.

SMS hubs are points of connection where messages can be received and sent by worldwide operators, making it even easier for you to understand how the process works.

To ensure an unhindered flow of messages, operators had to sign agreements with others in the industry before [SMS Hubbing](https://asmsc.net) was introduced. In spite of this, SMS had a limited international reach due to the lengthy process.

Similar to voice connectivity, where traffic is routed through Telehouses, eliminating the need for several expensive individual agreements, SMS is routed through SMS hubs. When hubs are used, it is not necessary to sign several agreements.

SMS Hubbing does not completely replace bilateral agreements, but it makes the process easier and reduces the burden on the company's exchequer.

## Conclusion

Besides operators, Bulk SMS providers anywhere in the world must use SMS Hubs to simplify and streamline communication without sacrificing quality. In addition to saving time, the results will be phenomenal once implemented.
opengauss WDR snapshot failed
Published: 2022-08-11 09:19:43

【question】：
2022-07-06 15:04:46.739 62c5279c.5068 postgres 281457772402032 WDRSnapshot 209240703 dn_6001_6002 08001 5066549580791808 
[BACKEND] CONTEXT: SQL statement "insert into 
snapshot.snap_global_statio_all_indexes(snapshot_id, db_name, "snap_node_name" , "snap_relid" , "snap_indexrelid" , "snap_schemaname" , "snap_relname" , "snap_indexrelname" , "snap_idx_blks_read" , "snap_idx_blks_hit" ) select snapshot_id, dbname1, "snap_node_name" , "snap_relid" , "snap_indexrelid" , "snap_schemaname" , "snap_relname" , "snap_indexrelname" , "snap_idx_blks_read" , "snap_idx_blks_hit" from wdr_xdb_query('dbname=dcep_acq_db'::text, 'select 18142, ''dcep_acq_db'', t.* from dbe_perf.global_statio_all_indexes t'::text) as i(snapshot_id int8, dbname1 text, "snap_node_name" name, "snap_relid" oid, "snap_indexrelid" oid, "snap_schemaname" name, "snap_relname" name, "snap_indexrelname" name, "snap_idx_blks_read" numeric, "snap_idx_blks_hit" numeric)"
2022-07-06 15:04:46.739 62c5279c.5068 postgres 281457772402032 WDRSnapshot 209240703 dn_6001_6002 01000 5066549580791808 [BACKEND] WARNING: WDR snapshot failed

-------------------------------
【answer】：
The reason is that this local authority in pg_hba.conf is commented out. After the comment is normal, wdr can be generated.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0fh1w296dbh1dkcthbfy.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k7x7x5x2tkc95vj0gipc.png)
Plugin/Library idea
Tags: javascript, php, laravel, programming
Published: 2022-08-11 09:04:11

Hi! Hope you all are doing well. Being a developer, open source and stack overflow are your best friend. 

I wanted to thanks to all contributers and developer who build open source products, write tuts. 

From a long time, I wanted to build a library or project and launch it as open source, but not getting enough ideas. So requesting, if you guys can help me finding an idea in PHP laravel or JS.

Thank you for spending time reading till here.
UNPIVOT to key-value pair in Oracle SQL
Tags: database, sql, oracle
Published: 2022-08-11 14:25:20

---
title: UNPIVOT to key-value pair in Oracle SQL
description:  "Column name and column value"
published: true
date: 2022-08-11 09:00:00 UTC
tags: database, sql, oracle
canonical_url: https://katiekodes.com/unpivot-key-value-oracle-sql/
---

I always forget how to use UNPIVOT, and so many documents are focused on numbers data, not generic key-value data. Here’s the thing I actually often need to do.

## Code

Here’s my source table called `source_table`, inside of an Oracle database:

| record\_id | country | gender | name\_lf | other\_junk |
| --- | --- | --- | --- | --- |
| 123 | Azerbaijan | F | Amjit, Anush | 123abc |
| 456 | Zimbabwe | N | Borges, Benita | def456 |

Here’s the SQL query:

```sql
select
    record_id
    , field_key -- Arbitrary naming choice; call this anything you want.
    , field_value -- Arbitrary naming choice; call this anything you want.
    , name_lf
from source_table
unpivot (
    field_value -- Arbitrary naming choice; call this anything you want.
    for field_key -- Arbitrary naming choice; call this anything you want.
    in (
        country
        , gender
    )
);

```

And here’s the resultant data:

| record\_id | field\_key | field\_value | name\_lf |
| --- | --- | --- | --- |
| 123 | COUNTRY | Azerbaijan | Amjit, Anush |
| 123 | GENDER | F | Amjit, Anush |
| 456 | COUNTRY | Zimbabwe | Borges, Benita |
| 456 | GENDER | N | Borges, Benita |