teleren/devto huggingface dataset:
Ambitious crowdfunding platform with blockchain integration as the main difference.
Tags: web3, cryptocurrency, product, javascript
Published: 2023-05-15 08:09:55



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8cltfjn0yzbtcxadf83w.jpg)

Our team has begun developing the Save Planet crowdfunding platform, an advanced online platform developed on blockchain to help individuals and organizations raise funds for their social projects and initiatives. With its user-friendly interface and a number of powerful tools, Save Planet will be makes it easy for socially conscious individuals and groups to connect with donors and raise the funds needed to make a positive impact on society. Whether you want to fund a local project, launch a new initiative or create a global movement, Save Planet can help you.

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

With customizable campaign pages, integrated social media tools and advanced analytics, this platform gives you the tools you need to reach a wide audience, interact with potential donors and track progress over time. But Save Planet is not only a fundraising tool, it's also a hub for social activism and awareness.

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

Through a community of socially active people, users can connect with like-minded people and organizations from around the world, share ideas and resources, and work together toward a common goal of protecting and preserving our planet. So if you really want to change the world and you are ready to help people, look no further than Save Planet. 
With an innovative platform, powerful tools and an active community, our crowdfunding platform is the ideal way to bring your projects to life and help those in need.
You will see that social investments are not only good for society, but also bring a decent profit.

Right now the Pre-Seed Round is going on and we're waiting for you!


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

For more information, please visit our website at https://www.savepla.net
Or contact us at : manager@savepla.net
Telegram: @SavePlanetWeb3
♻️ 5 Best Practices for Maintaining Consistency Across Cloud Environments
Tags: cloud, azure, googlecloud, terraform
Published: 2023-05-15 08:04:13

{% youtube 1rsgMSRPRJg %}

As a cloud architect, maintaining consistency across multiple environments is one of our biggest challenges as it affects the reliability and stability of the infrastructure.
It requires careful planning, coordination, and execution to ensure that each environment has the appropriate resources, configurations, and settings.

It's important to ensure that each environment is isolated from the others, to prevent unintended changes or interactions between environments.

This requires creating and managing multiple sets of infrastructure resources, which can quickly become complex and difficult to manage as the number of environments grows.

Additionally, as the infrastructure evolves over time, it can become difficult to keep track of which resources belong to which environments and to ensure that updates are made consistently across all environments.

To overcome these challenges, we need to adopt a systematic approach to environment management. This includes defining clear policies and procedures for creating, configuring, and updating environments, as well as automating the process whenever possible.

Utilizing version control systems is also crucial for tracking changes and managing the evolution of our infrastructure over time, across all environments. Regular reviews and audits are essential to identify any inconsistencies and ensure that the desired state is being maintained.

Moreover, implementing testing and validation processes is critical to verify that changes made to one environment do not impact other environments.
This helps to improve the stability and reliability of our infrastructure.

In conclusion, as cloud architects, maintaining consistency across environments is a continuous challenge. However, by adopting a systematic approach and utilizing best practices, we can overcome these challenges and ensure that our infrastructure is consistently configured, updated, and maintained.

[Get Started with Brainboard](https://app.brainboard.co/register)
[Book a Call](https://www.brainboard.co/resources/contact-brainboard)
🗺️ 🚀 3 reasons why AWS Elastic Beanstalk can help in overcoming deployment challenges
Tags: aws, devops, terraform, infrastructureascode
Published: 2023-05-15 07:59:20

{% youtube NxfRYQj3CK8 %}

One of the biggest challenges when working in cloud infrastructures is ensuring applications' seamless scalability and reliability. With the increasing demand for resources, applications need to scale up and down quickly and smoothly. 

Elastic Beanstalk provides automatic scaling capabilities, so your application can handle any spike in demand without any manual intervention.

Another challenge is the complexity of configuring and maintaining the infrastructure. Elastic Beanstalk simplifies this process by providing pre-configured platforms for popular programming languages and web containers. 

This allows us to focus on developing our applications, rather than worrying about the underlying infrastructure.

A third challenge is maintaining high availability for applications. Downtime can be costly and disruptive, and it's critical to ensure that applications are always available to users. Elastic Beanstalk offers automatic failover and load balancing, so your application is always up and running, even in the event of a failure.

In addition to these challenges, Elastic Beanstalk also provides robust monitoring and logging capabilities, allowing us to quickly identify and resolve any issues with our applications.

By integrating Tfsec and Infracost in the CI/CD pipeline, you can identify and fix potential security issues early in the development process and make informed decisions about resource allocation and cost.

[Try it out ►](https://app.brainboard.co/register) 
[Documentation ►](https://docs.brainboard.co/)
List Processes Attached to a Shared Memory Segment in Linux
Tags: memory, linux, processes
Published: 2023-05-15 07:56:15

**1. Overview
**

In Linux, a shared memory segment is part of the memory that two or more processes can share. It’s a mechanism meant to facilitate the communication and sharing of data between processes. However, monitoring these processes attached to the shared memory segment can be demanding for beginners.

In this tutorial, we’ll discuss an option that we can use to list these processes. First, we’ll look at the ipcs command and then follow this up with the pstree command.

**2. List Processes Attached to a Shared Memory Segment
**

First, let’s start by taking a look at all the shared memory segments in our system:

```
$ ipcs -m
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 6          francis      600        524288     2          dest         
```

From the example above, we’re using the ipcs command to display the shared memory segments. In detail, the ipcs command is a utility for displaying information on inter-process communication (IPC) mechanisms. Also, we add the -m option to filter the output to only show information about the shared memory segments available.

So, we can see that there’s only one segment in our system. Further, from the visible column names, we have to note the shared memory segment identifier (shmid) value which acts as the process identifier for the shared memory segment. This is because, for us to list the processes attached to a shared memory segment, we have to first determine the process ID of this shared memory segment that we’re interested in.

Secondly, we can view information specific to a shared memory segment of our choosing:

```
$ ipcs -m -i 6
Shared memory Segment shmid=6
uid=1000	gid=1000	cuid=1000	cgid=1000
mode=01600	access_perms=0600
bytes=524288	lpid=4766	cpid=1574	nattch=2
att_time=Sun Jan 29 15:40:28 2023  
det_time=Sun Jan 29 15:40:28 2023  
change_time=Sun Jan 29 15:25:30 2023

```

Above, we’re displaying detailed information about the shared memory segment whose identifier is 6.

Next, we’re going to use the pstree command with shmid to list the attached processes:

```
$ pstree -p 6
rcu_par_gp(6)
```

The pstree command lists the processes attached to this shared memory segment in a tree-like structure. This command shows the relationship between processes by presenting the hierarchy of parent processes with their child processes. Additionally, we use the -p option to instruct pstree to include process identifiers (PIDs) in the output.

**3. Conclusion
**

In this tutorial, we’ve learned that shared memory is an important feature for processes to share data. Also, by using the ipcs command we get to view the shared memory segments in our system. Additionally, by utilizing the pstree command we get to list processes generated from the shared memory segment using its identifier (shmid)
CentOS 7 裝 Adminer
Tags: centos, adminer, mysql, mariadb
Published: 2023-05-15 07:45:48

裝 [Adminer](https://www.adminer.org/) 很簡單，它只是一個 php 檔案，抓回來放到 web server 目錄下就好：

```sh
$ cd /usr/share/nginx/html/
$ wget https://www.adminer.org/latest.php
$ mv latest.php adminer.php
```

可是事情果然沒那麼簡單！這樣跑下去它會報錯，找不到 PHP 連接 MariaDB 的庫。

又再次因為我是裝 CentOS Software Collections 的 PHP，所以額外的套件也都要裝 SCL 提供的，把必要的套件裝起來：

```sh
$ sudo yum install rh-php72-php-mysqlnd
```

還沒完，/var/opt/rh/rh-php72/lib/php/ 這個地方裡面的子目錄，群組都被設成 apache，可是因為我是用 nginx，要把群組改成 nginx 才可讓 nginx 有能力寫入這些子目錄。

以上做完當然試開一下瀏覽器看看 Adminer 有沒有正常跑起來。
RubyMine. How to Increase/Decrease font size
Tags: rubymine, ruby, editor
Published: 2023-05-15 07:41:49

To change the font size in the editor you need to press **SHIFT + CONTROL** and **point or comma**

![Keyboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8bslf6hxjge9o6ayngb3.png)

Happy Coding
How to Fix 500 Internal Server Error in Magento 2
Tags: webdev, magento, magento2tutorials
Published: 2023-05-15 07:41:13

Magento 2 is a famous web based business stage that offers powerful elements and functionalities for online stores. By the way, it isn't impenetrable to specialized errors, and perhaps the most predominant issue that storekeepers experience is the 500 Inside Server Blunder.

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

This mistake message normally seems when there is an issue with the server or site design and can be unbelievably vexing for storekeepers, as it hinders admittance to the site. In this blog entry, we will investigate various strategies to assist you with figuring out **_how to fix 500 internal server error in Magento 2_**. 

Whether you are a specialized master or a beginner, this guide will give you a bit by bit way to deal with resolving this issue and reestablishing the smooth activity of your internet based store. Whether you like to investigate this issue all alone or enroll the assistance of an expert, this guide will outfit you with all the essential data to bring your web-based store back online quickly.

For more info, visit **_https://webguru.dev/how-to-fix-500-internal-server-error-in-magento-2/_**
An introduction to CSS Selectors
Published: 2023-05-15 07:01:44

## CSS
CSS stands for Cascading Style Sheet, CSS is used to style the webpage which is structured using HTML.

## CSS Selectors
While styling the HTML page we often have to select the different parts of the page, we select parts of the page by using selectors. Selectors can be of different types such as ID selector, universal selector, class selector, etc.

## Types of Selectors

There are many types of selectors but in this article we are going to focus only on the most used ones.

- **Universal selector**
The Universal selector targets all the elements of the HTML document. Universal selector is used using the `*` symbol only.

```
* {
	margin: 0%;
	padding: 0%;
	box-sizing: border-box;
}
```

- **ID selector**
The ID selector can target an HTML element with the specified ID attribute, and an element with ID is selected using the `#` symbol as a prefix. The ID selector can only be used only once in an HTML document.

```
#idName {
	/* this will seleect the id named idName */
}
```

- **Class selector**
The class selector can target an element with the given class attribute. The element with the class selector can be selected using the `.` symbol.

```
.className {
	/* this will select the class named className */
}
```

- **Individual selector**
The Type selector targets only the selected element of the HTML document. A individual selector is used using the element name. For example - 

```
p {
	/* this will select the <p> element */
}

img {
	/* this will select the <img> element */
}
```

## Now we will look at some **CSS Combinators** -
CSS Combinators are the relationship between two or more selectors which we can combine according to our requirements

**Descendant selector**

The descendant selector selects all the children of the specified element. This selector is represented with a single space (" ").

- **Child Selector**
The Direct child selector selects only the direct child of the element. And it is represented with a ( > ) sign.

```
ul > li {
    /* this will select all the <li>
    elements which are the direct children
    of the list */
}
```

- **Adjacent sibling selector**
The sibling selector will target the immediate next element of the specified element which share the same parent. This selector is represented with a ( + ) sign
 

```
img + p {
	/* this will select the immediate next <p>  
        element which is next to the
       <img> element  */
}
```

- **General Sibling Selector**
This type of sibling selector will target all the next sibling elements of the specified elements, which share the same parents.
This selector is represented with a ( ~ ) sign.

```
img + p {
	/* this will select the all the <p>
        elements which are next to the
        <img> element  */
}
```
Node.js Intermediate Level Code
Tags: node, webdev, beginners, javascript
Published: 2023-05-15 07:21:00


![Node](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3npc67dd6fvufekr58ae.jpeg)
If you are already familiar with the basics of Node.js, you may be interested in taking your skills to the next level. Here are some tips and examples of intermediate level Node.js code that can help you become a more proficient developer.

## Use Promises and Async/Await

Node.js is designed to be asynchronous, which means that it can handle multiple requests at the same time. However, managing asynchronous code can be tricky. To make it easier, you can use Promises and Async/Await.

Promises are objects that represent a value that may not be available yet. They provide a way to handle asynchronous operations in a more organized and readable way. Async/Await is a syntax that allows you to write asynchronous code that looks and behaves like synchronous code.

Here is an example of how to use Promises and Async/Await in Node.js:

```
function readFilePromise(path) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, 'utf8', (err, data) => {
      if (err) reject(err);
      else resolve(data);
    });
  });
}

async function main() {
  try {
    const data = await readFilePromise('/path/to/file.txt');
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}

main();

```

## Use Modules

Modules are a way to organize your code into separate files that can be reused and tested independently. Node.js comes with built-in support for modules, and it's easy to create your own modules.

Here is an example of how to create and use a module in Node.js:

```
// mymodule.js
module.exports = {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b
};

// main.js
const myModule = require('./mymodule');
console.log(myModule.add(2, 3)); // Output: 5
console.log(myModule.subtract(5, 2)); // Output: 3

```

## Use Streams

Streams are a way to handle large amounts of data in Node.js without loading it all into memory at once. They are particularly useful when dealing with files or network connections.

There are four types of streams in Node.js: Readable, Writable, Duplex, and Transform. Each type has its own set of events and methods.

Here is an example of how to use a Readable stream in Node.js:

```
const fs = require('fs');

const stream = fs.createReadStream('/path/to/file.txt', { highWaterMark: 1024 });

stream.on('data', (chunk) => {
  console.log(`Received ${chunk.length} bytes of data.`);
});

stream.on('end', () => {
  console.log('Finished reading file.');
});

```

## Conclusion

These are just a few examples of intermediate level Node.js code. By using Promises and Async/Await, Modules, and Streams, you can create more efficient and organized code. Keep learning and experimenting to become a better Node.js developer.

**There is request that please comment on topice**
Decoding Linux: Why Isn't It More Popular?
Tags: discuss, linux
Published: 2023-05-15 07:00:00

What are your thoughts on the perception that Linux is primarily geared towards advanced users and developers, and how does this affect its popularity among casual computer users?"

Are there any other preconceived notions or misconceptions about Linux that you think prevent more people from trying it out or considering it as a viable option?

---
Follow the DEVteam for more awesome discussions and online camaraderie!

{% embed [https://dev.to/devteam](https://dev.to/devteam) %}
Monitoring my GitHub repo
Published: 2024-03-28 08:36:00

---
title: Monitoring my GitHub repo
published: true
date: 2023-05-15 06:30:00 UTC
tags: 
canonical_url: https://www.tercmd.com/monitoring-my-github-repo
---

## The Problem

Three weeks ago, I randomly got an issue on my [latest GitHub repo](https://l.tercmd.com/gh/everything-chatgpt). A few days later, I got another one. I felt like I wanted a way to know about issues, PRs, or any other repo activity as soon as it comes in. So, I thought to automate it with Slack.

## GitHub Actions?

My first thought was to use a GitHub Action. So, I spent a few hours tinkering with a GitHub Action on a test repo to check if it works. In the end, I arrived at a result that worked decently. Although, workflow execution logs are public, allowing _anyone_ to see _who_ and _what_ triggered it.

**Why is that a problem?**

Because, if a user stars and unstars the repo, it would be visible in the logs. Same for if a user watches and unwatches the repo.

So, that never made it to the final repo.

## Zapier?

Then, I told ChatGPT (funny, considering the repo) about the issue and it suggested platforms like Zapier. So, I signed up for a Zapier account, oAuthd into Slack and GitHub, and set up my Zap. I wouldnt get notifications for every star, but thats a small compromise.

The only problem the Free plan offers 100 in this case, uncontrollable Zap executions per month. That means, at any point, Slack notifications for that month will just **stop**.

So, I didnt go the Zapier route.

## GitHub integration for Slack

I was looking for a solution and found a GitHub repo `integrations/slack`. This was a repo **by GitHub** about their integration for Slack.

Adding it is simple:

- Visit [slack.github.com](https://slack.github.com/)

- Click `Add to Slack`

- Add the integration to your workspace, and then add it to a channel

- Use this command: `/subscribe [repo] [optional additional events to subscribe to]`

So, I added the integration, subscribed to the repo (linking it to the channel).

When I made a commit, I get a notification like this:

![Slack message from GitHub app showing details of commit](https://cdn.hashnode.com/res/hashnode/image/upload/v1705244397039/afc2659c-9a57-4fe5-98f0-c67abbf26e27.png)

A few days later, as I switched my phone on, I got a Slack notification.

![Slack message from GitHub app showing issue details (created by and issue body visible in the image)](https://cdn.hashnode.com/res/hashnode/image/upload/v1705244398284/b491c294-9436-45d1-b107-2f6e9cf01a67.png)

So, I replied to the message using Slack itself.

![GitHub reply from user with Slack logo in bottom-right corner of the profile picture](https://cdn.hashnode.com/res/hashnode/image/upload/v1705244399859/716ddef4-809a-4e55-b9d5-40561b82fafa.png)

(I later moved to Discord, with their [tailor-made webhook integration for GitHub](https://discord.com/developers/docs/resources/webhook#execute-githubcompatible-webhook) which provides me more data than the Slack integration did)
5 Tips to Save Your Software Development Time.
Tags: tips, beginners, career, development
Published: 2023-05-15 05:39:32

Many Times early stage developers waste their time on solving a problem when they are stuck. Some small strategies can help our things done without wasting our time. Here are some tips to save your time.

1. Limit your time - Try solving problem for 15-20 minutes. If you can't solve the problem after 15-20 minutes, then it's time to ask someone for help.

2. Take a break - If you are working alone then after 15 minutes take a break, drink water or coffee or stretch your body and walk around the room. Now start working on your problem again. This little break may help you to identify solution for your problem.

3. Talk to someone - If you are working in a team then discuss the problem with one of your team members. This is the fastest way to solve the problem. If you don’t find someone then use Rubber duck debugging technique where you explain your logic to a duck and you may get what went wrong just by explaining you may find the issue.

4. Seek help from developers community - Getting response from community and forums take time. If above procedures don't work then wait for communities Help and keep work on other problems. It's better post your issue in multiple platforms to get quick response.

5. Try it later - If you have already spent a huge amount time and nothing seems to be working and deadline is knocking on the door then leave it for now. Better discuss with the Project Manager / client if they can slightly change the requirement or work on it later as this has become a blocker to complete your project.
Mental Health Dialogue
Tags: team, mentalhealth, leadership, storybytes
Published: 2023-05-15 05:27:23


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

Our workplace isn’t just about work from morning to evening. Personal health should be a private matter. But when you need to take time off work due to a mental health condition, often it isn’t possible to maintain that privacy. Besides, do we even wish to share that in our working organisation? If the work culture doesn’t encourage open talk, don’t expect the team members to open up. Leaders have a responsibility to their employees to create an open, inclusive, and safe environment that allows them to bring their whole selves to work. The world we know is changing. It’s been called a “second pandemic” - the mental health implications of the global health crisis, political unrest, economic uncertainty, rising unemployment, social isolation, remote work, homeschooling, and so much more. And while it can feel like the first pandemic has been with us long enough for team members to have accessed the necessary resources and strategies for handling their stress, the fact is that many of us are probably struggling more. As a leader, You may have checked in with your team members when the crisis was acute, but you need to keep doing it. In her article “We Need to Talk More About Mental Health at Work,” Morra Aarons-Mele shares research showing that “Feeling authentic and open at work leads to better performance, engagement, employee retention, and overall wellbeing.”. Helping others isn’t a chore but one of the greatest gifts. Your willingness to open up an honest conversation about mental health with your team members is precisely the kind of gift many want and need right now. Create a Dialogue, and be the gift that evolves others to the next phase in their life.