teleren/devto huggingface dataset:
Difference between Interface and Abstract Class
Tags: java, interface, abstractclass, interview
Published: 2023-08-18 13:29:35

On Java language realm, a question that shows up a lot on interviews, what’s the difference between interfaces and abstract classes? why both are needed?

Plain and simple would be:

* Every class can extend only one super class (abstract class), but implement multiple interfaces, hence multiple inheritances.

* Abstract classes can have constructors while on interface you can’t.

* On abstract classes methods can have different access modifiers (public, private and protected) while interface only public ones.

* Abstract classes can extend other abstract classes and implement multiple interfaces, while interfaces can only extends more interfaces.

* Before you would say abstract classes can have concrete methods and interfaces can’t, but that changed after Java 8, now interfaces can have it as well using default keyword (keeping in mind that they will still be public, static and final).

* On interfaces all methods are with public access modifier, static methods and final ones (can’t be overridden), while on abstract classes you can have all the access modifiers, can be static and non-static and final and non-final.

In conclusion I would say they are similar but different, used on different aspects.

* Interfaces usually are made for firming a contract, used on factory creation classes that allows you to have a more declarative way of instances, also when you want to mock tests, or unify, generify a process, want to use something but don’t necessarily needs to know who is behind, which makes more loosely coupled, indeed needed on let’s say for example interface segregation.

* Abstract classes idea is as a base class for concrete sub classes, something as default that can be overridden and at same time abstract methods that can be used on itself or on other classes (that’s why you have flexibility on the access modifiers). Again as a note, on Java 8 default keyword was introduced on interface, so you can also have default methods on interface that allows you to implementations up to an extent.

To finalize I will add a quote from Daniel Bell :)

> Technology like art is a soaring exercise of the human imagination.

If I’m missing something or there is anything thing else to discuss feel free to drop a comment.
HeidiSQL alternative: A comprehensive comparison with dbForge Edge
Published: 2023-08-18 13:26:48

A compilation of the most sought-after cross-database management tools would remain incomplete without mentioning HeidiSQL—an interface-driven client application that spans MySQL, MariaDB, Microsoft SQL Server, SQLite, and PostgreSQL. However, for those in pursuit of enhanced features, an exploration into dbForge Edge might be worthwhile—an expansive multidatabase suite known to pleasantly astonish even the most discerning users.

dbForge Edge furnishes an array of tools catering to diverse database-related undertakings:

- Efficient SQL coding: inclusive of context-sensitive code autocompletion, pertinent object suggestions, extensive formatting choices, astute refactoring, and debugging capabilities.
- Creation of intricate queries through visual means, sans the need for coding.
- Fine-tuning of query performance.
- Detection of divergences in database schemas and table data.
- Streamlined database migration and synchronization processes.
- Adaptable data management options.
- In-depth data analysis and reporting capabilities.
- Generation of purposeful test data that aligns with individual columns.
- Production of comprehensive database documentation.
- Robust database administration tools.

Learn more: https://www.devart.com/dbforge/edge/heidisql-alternative.html
Introducing Dev101: Your Gateway to JavaScript, React.js, and Node.js
Tags: webdev, javascript, beginners, programming
Published: 2023-08-18 13:13:06

 

**Slide 1: Introduction**
- Greetings, fellow learners! 🌟
- Welcome to **Dev101**, your new online destination for all things JavaScript, React.js, and Node.js.
- We're excited to embark on this learning journey together!

**Slide 2: What's Dev101 All About?**
- At Dev101, we're committed to making programming accessible and enjoyable for beginners.
- Our channel is dedicated to providing top-notch JavaScript courses and projects designed specifically for newcomers to coding.

**Slide 3: Why Should You Subscribe?**
- High-quality content: Our courses are meticulously crafted to simplify complex concepts, making learning a breeze.
- Learn by doing: Dive into hands-on projects that reinforce your understanding of JavaScript, React.js, and Node.js.

**Slide 4: What You Can Expect**
- JavaScript Fundamentals: Build a solid foundation with clear explanations of variables, data types, loops, and more.
- React.js Demystified: Master the art of building dynamic user interfaces using the popular React.js library.
- Node.js Unleashed: Explore the world of server-side JavaScript with Node.js and create powerful web applications.

**Slide 5: What Sets Us Apart?**
- Engaging Tutorials: Our step-by-step tutorials are designed to keep you engaged and motivated throughout your learning journey.
- Beginner-Friendly: No prior coding experience? No problem! We start from scratch and gradually build your skills.

**6: Meet Your Instructor**
- I'm [Your Name], your friendly guide on this coding adventure.
- With years of industry experience, I'm passionate about helping beginners become confident programmers.



**7: Subscribe Today!**
- Ready to level up your coding skills? Hit that subscribe button and turn on notifications so you never miss an update.
- Visit our channel at [https://youtube.com/@Dev101-gv8vy] to embark on your coding journey.
High-Quality PostgreSQL GUI Tools for macOS
Published: 2023-08-18 12:50:28

Graphical User Interface (GUI) database tools are meticulously designed to furnish users with a visually captivating platform for managing tasks. This approach prioritizes user-friendliness by integrating intuitive controls and dialogues, thereby circumventing the requirement for manual coding. The advantages offered are considerable, with even SQL experts frequently opting for GUI solutions over command-line utilities, enhancing their SQL proficiency with the tangible benefits of graphical interfaces.

Among the world's most favored database management systems, PostgreSQL boasts distinction. Users of this system would greatly benefit from harnessing such robust GUI tools. Additionally, a significant portion of PostgreSQL users align with devoted macOS enthusiasts, seeking tools that seamlessly align with their favored operating system. This article aims to lead you towards the most adaptable and feature-rich PostgreSQL tools tailored for macOS.

Learn more: https://blog.devart.com/macos-postgresql-gui-tools.html  

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6a6q9gd4acytz4g7r79e.png)
I’m continuing jDOSBox
Tags: opensource, java, github, showdev
Published: 2023-08-18 12:46:03

Hello,

I’ve never used dev.to before, but I just want to let anyone that is looking at this that I’m continuing a version of DOSBox that was discontinued called jDOSBox. It was ported to Java and then the original author made it work with Windows 95/98/NT/XP and some Linux distributions. I find it fascinating, but really the only reason I’m continuing it is because I’m going to integrate it with my Spigot plugin. 

If anyone’s interested in helping email me and I’ll make you a collaborator. Here’s [jDOSBox](https://github.com/Tennessene/jDOSBox)
Instagram Clone Live App
Tags: instagram, webdev, react, programming
Published: 2023-08-18 12:40:22

You can see the Live Demo from here 👇
https://instagram-soumyajitpan.vercel.app/


For this project, I have used these libraries,
▶️ React JS
▶️ Firestore and Firebase Database
▶️ Firebase Email Authentication
▶️ Styled-Components for styling





**Signup Page**
User have to Signup/Create new account
![Signup Page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwuhcyqcdbhzn4e44k0m.PNG)


**Login Page**
User have to login to their account
![Login Page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/91mu5z92n900jjrv5kz2.PNG)


**Home Page**
After Login User can see the Home Page
![Home Page](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/212q7n8f7gchqi6gibyr.PNG)


**Notification**
User can see all notifications when other users do comments, likes, requests for messages, follows
![Notification](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7p23til4djvus4oyhkxw.PNG)


**Comments of random post**
User can comment on any user's post
![comments](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u23t5jw5qk81hv3ez3gx.PNG)


**Send post via Messenger**
Any user can send any posts via messenger
![Send post via messenger](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f83g8q2l9ixn1itp6gpa.PNG)


**Insta Profile Page**
User can see their own profile like this below image
![Insta Profile](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gnuyi9ulwoo1v0dpy847.PNG)


**Insta Profile Edit Mode**
After click on Edit Profile button, user can see their profile in edit mode, then user can change their profile data.
![Insta Profile Edit Mode](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eg9a74ehsjmyyfh1cx6o.PNG)


**Insta Profile Delete Mode**
After click on settings icon, user can see delete profile button, then user can delete their profile data.
![Insta Profile Delete Mode](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ha4rcwgyzenofthlccfg.PNG)


**Watching Other User's Story**
When any user can see other user's story by clicking on individual story, it's look like below.
![Other User's Story](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fxys7efx0zxgnq6dz1ec.PNG)


**Watching Self Story**
When any user can see self story, it's look like below image.
![self story](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ehqyef9eqhbi6131evc.PNG)


**Instagram Messenger**
Instagram Messenger looks like below image.
![Messenger](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/myv9r3l0rcx5pznmlw3z.PNG)
A Some undocumented about Server Component on Next.js
Tags: webdev, nextjs, react, javascript
Published: 2023-08-18 12:37:51

The Server Component of Next.js is stateless component that it can get some request parameters: Headers and cookies.
But, There is no way to get other parameters such as `request.url`.

I don't understand why limited to get properties in Server Components. someone says you're not ready to use App Router yet.
I agree. Server component is future of React, but it's still experimental feature.

While I'm using App Router, I found a way of get some properties in server component, Let's get started.

## What Header contains in Server Components?

I ran `console.log()` in a server component like below:

```ts
export const debugHeaders = () => {
  const list = headers();
  console.table(Array.from(list.entries()));
};
```

And I found the following header key Let's see what it contains.

- `host`: A real hostname of server. If you are using the app behind reverse proxy, do not use it.
- `x-forwarded-proto`: A forwarded protocol of reverse proxy server. use it if you want check `HTTPS` behind reverse proxy.
- `x-forwarded-host`: A forwarded real hostname behind a reverse proxy. use it if you are using the app behind reverse proxy.
- `x-middleware-invoke`: It seems that show some infomation when proceed with middleware of Next.js.
- `x-invoke-path`: A 
- `x-invoke-query`: A URL encoded query string with JSON. call `DecodeURLComponent` and `JSON.parse` If you want use.
- `x-invoke-output`: Not sure what it is.

Depending on your server environment, the header key may be different, so be sure to extract and verify it yourself.

## Get `request.url` and query string in Server Component

Based on the header information above, I made function to take in the URL and query string.

```ts
import { headers } from 'next/headers';

export const url = () => {
  const header = headers();
  return `${header.get('x-forwarded-proto') || (header.get('https') && 'https') || 'http'}://${header.get('x-forwarded-host') || header.get('host') || 'localhost:3000'}/${header.get('x-invoke-path')}`
}

export const query = () => {
  const header = headers();
  return JSON.parse(decodeURIComponent(header.get('x-invoke-query') || '{}')) as Record<string, string>
}
```

Have fun and Happy Next.js'ing!
It's been a year.
Published: 2023-08-18 12:36:38

It's been a year since I started yet I haven't learned anything because I stopped; I can't focus on anything. I want to change my life. //I changed my career, again. lol. I am a trainee chef in the day then learning again programming in the night. This time it's JavaScript. Hoping to clear my mind as I wrote this. 

AND hoping I won't wake up this morning without pain. No one wants to talk me or no one approaches me, they don't know what I feel every day. My mind is very complex. I don't really know what I want to with my life.

Wish you luck the best,
self
Update your Storybook stories from CSF 2 to CSF 3 now!
Tags: storybook
Published: 2023-08-18 12:30:25

---
title: Update your Storybook stories from CSF 2 to CSF 3 now!
published: true
tags:
  - Storybook
series: Storybook
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tvpapqzrbfreiaro8euk.jpg
---

Storybook 7 came out earlier this year and together with better performance and type safety the team shipped ✨ Component Story Format (CSF) 3 ✨! In my opinion it makes stories looks nicer and beautifuller and they're simpler to write!

As with a few other updates in Storybook, this one comes with a migration! Just run this to migrate all stories from v2 to v3 (switch out the glob pattern with whatever matches your project):

```bash
npx storybook@latest migrate csf-2-to-3 --glob="**/*.stories.ts"
```

What do the new stories look like, you ask? They went from something like this:

```tsx
export default {
  title: "My/Story",
  component: MyComponent,
} as ComponentMeta<typeof MyComponent>;

const Template: ComponentStory<typeof MyComponent> = args => (
  <MyComponent {...args} />
);

export const Story1 = Template.bind({});
Story1.args = {
  hello: "world",
};

export const Story2 = Template.bind({});
Story2.args = {
  hello: "🌏",
};
```

to this:

```tsx
export default {
  title: "My/Story",
  component: MyComponent,
  // This is the default render method and can be omitted
  render: args => {
    return <MyComponent {...args} />;
  },
} satisfies Meta<typeof MyComponent>;

type Story = StoryObj<typeof MyComponent>;

export const Story1: Story = {
  args: {
    hello: "world",
  },
};

export const Story2: Story = {
  args: {
    hello: "🌏",
  },
};
```

Note that I'm using satisfies here to provide type safety for the default export. This really doesn't have anything to do with Storybook, but is a nice way of improving the code base a little ✨
Compare Data in Two MySQL Tables
Published: 2023-08-18 12:27:12


Leverage the capabilities of dbForge Studio for MySQL, an advanced solution designed for precise and reliable MySQL data comparison and synchronization. Experience its functionality to elevate your everyday database update operations to new heights.

- Effortlessly compare and synchronize active MySQL databases and script directories
- Effectively apply alterations to MySQL, MariaDB, and Percona databases
- Create scripts for harmonizing data synchronization
- Harness the command-line interface for seamless operations
- Automate and schedule database synchronization tasks
- Achieve swift and impeccable synchronization of databases of any magnitude
- Generate comprehensive reports detailing data comparison results
- Access the convenience of comparing two databases within a single integrated development environment.

Read more: https://www.devart.com/dbforge/mysql/studio/mysql-data-comparison.html
Top Most investment casting manufacturers|investment casting india
Tags: industrialequipments, manufacturers
Published: 2023-08-18 12:18:34

Trident steel  [**Top Most Investment casting manufacturers**](https://investmentcastings.in/) process has been in exsistence for many hundreds of years. It was only during the second world war, its full potential for mass manufacturing of parts was fully utilized on an industrial scale for casting critical parts like turbine blades armaments. It has specialized in the production of Investment casting manufacturers with ferrous grades such as carbon steel, Alloy steel, stainless steel, super alloys, hast alloy, and monels.
Investment casting technology has come a long way since then. Today, the investment casting process is made use of produce large turbine blades for gas and steam turbines.
We at Trident Steel offer investment casting  inda for the diverse needs of the engineering industry.
Top Most Investment casting manufacturers is the most flexible of all the precision casting process with respect to attainable intricacy ,precision and the variety of alloys that may be cast within its inherent size limitations. Of the various casting techniques, investment casting india is both the newest and the oldest.
Exploring Vagrant: Snapshots - Part 6
Tags: devops, ubuntu, virtualmachine, linux
Published: 2023-08-18 12:12:02


A snapshot is a saved state of a virtual machine at a specific point in time. This allows you to capture the current state of the virtual machine and return to it later if needed. Snapshots are useful for various scenarios, such as testing different configurations, rolling back changes, and isolating development environments.

## Creating a Snapshot 

To create a snapshot of a running virtual machine, use the `vagrant snapshot save` command followed by the snapshot name:

```bash 
vagrant snapshot save <VM Name> <Snapshot Name>
```

Example : 
```bash 
vagrant snapshot save my-vm snapshot1
```

Vagrant snapshots invoke the "snapshots" method of the provider. In the case of using Vagrant snapshot with VirtualBox, it triggers VirtualBox's snapshot functionality and the snapshots will be stored in the same location where the virtual machine was created.

## Listing Snapshots 

To list all the snapshots associated with a virtual machine, use the `vagrant snapshot list` 
command:
```bash 
vagrant snapshot list
```

or to list snapshots of a specific VM 
```bash
vagrant snapshot list <VM Name>
```
## Roll Back or Restoring a Snapshot

You can roll back a virtual machine to a snapshot by restoring it. This is particularly useful when you want to revert to a known state before making changes. To restore a virtual machine to a specific snapshot, use the `vagrant snapshot restore` command.

```bash 
vagrant snapshot restore <VM Name> <Snapshot Name>
```

Example: 
```bash 
vagrant snapshot restore default snap1 
```

## Deleting a Snapshot 

To delete a snapshot, use the `vagrant snapshot delete` command:
```bash 
vagrant snapshot delete <VM Name> <Snapshot Name>
```

Example : 
```bash 
vagrant snapshot delete default snap1
```

Remember that snapshots consume disk space, and managing them is important to avoid excessive disk usage. Also, snapshots might not capture every aspect of the system, such as network configurations, so be aware of potential limitations.
Benefits of Tele Calling CRM Software
Tags: crm
Published: 2023-08-18 12:11:22


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wll68bd6uyttm2ybkzv.jpg)
Telecalling CRM software is a type of CRM software that is specifically designed for telecalling businesses. It helps businesses to automate and streamline their telecalling processes, improve their customer interactions, and track their sales performance.

Here are some of the benefits of using telecalling CRM software:

- **Streamlined data management:** [Telecalling CRM software](https://adsgrill.com/telecalling-crm/) can help businesses to automate the process of collecting and storing customer data.

- **Personalized customer interactions:** Telecalling software can help businesses to provide personalized customer interactions by giving telecallers access to customer data during calls.

- **Enhanced reporting and analytics:** Telecalling CRM software can provide businesses with detailed reporting and analytics on their telecalling operations.

- **Increased productivity:** Telecalling CRM software can help businesses to increase the productivity of their telecalling team by automating tasks such as lead generation and scheduling.

- **Improved customer satisfaction:** Telecalling CRM software can help businesses to improve customer satisfaction by providing a more personalized and efficient customer experience.

- **Reduced costs:** Telecalling CRM software can help businesses to reduce costs by automating tasks and improving efficiency.
Exploring Vagrant: Shared Folders - Part 5
Tags: devops, ubuntu, virtualmachine, linux
Published: 2023-08-18 12:10:06



In a Vagrant environment, one of the most important features is the ability to seamlessly share files between the host machine (your computer) and the virtual machine (VM) that Vagrant creates. This shared folder functionality streamlines development by allowing you to work on your project files on your host machine while having them automatically available within the VM. By default, the folder where the Vagrantfile is located is automatically shared to the `/vagrant` folder in the VM's filesystem.

## Basic Shared Folder Configuration


To create a custom shared folder between your host and VM, you'll use the `config.vm.synced_folder` directive within your Vagrantfile. This directive specifies the path on the host machine and the corresponding path on the guest VM where the folder will be shared.

Here's an example of how you can use the `config.vm.synced_folder` directive within a Vagrantfile

```ruby 
Vagrant.configure("2") do |config|
  config.vm.box = "your-box-name"
  
  config.vm.synced_folder "host_folder_path", "guest_folder_path"
end
```

In this example, replace `"host_folder_path"` with the absolute path of the folder on your host machine that you want to share. Replace `"guest_folder_path"` with the absolute path of the folder inside the VM where you want the shared content to be accessible.

Example: 

```ruby 
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = 2048
    vb.cpus = 2
  end 
  config.vm.provision :ansible do|ansible| 
    ansible.playbook = "playbook.yml"
  end 
  config.vm.network "forwarded_port", guest: 80, host: 8080
  
  config.vm.synced_folder "./data", "/home/vagrant/data"
end

```


Setting up a shared folder between your host machine and a Vagrant VM is a powerful feature that enhances your development workflow. It allows you to work with your project files using your preferred tools on your host machine while seamlessly making those changes available within the VM environment. By leveraging the `config.vm.synced_folder` directive in your Vagrantfile, you can easily configure and customize your shared folder setup to suit your project's requirements.