teleren/devto huggingface dataset:
Introduction to Low Code Development
Tags: lowcode, webdev, enterprise
Published: 2023-09-28 16:42:26



In the ever-evolving landscape of technology, innovation is the key to staying competitive. Chapter 1 introduces you to the world of low code development and how it is reshaping the way [enterprises create software solutions](https://www.wavemaker.com/enterprise-low-code-application-development-platform/). With a focus on the basics, we'll lay a strong foundation for your journey into the world of low code.

[Low code development](https://www.wavemaker.com/what-is-low-code-app-development/) is not just a buzzword; it's a paradigm shift that is here to stay. We'll explore what low code is, how it differs from traditional coding, and why it's gaining widespread adoption. You'll gain a clear understanding of the principles that underpin low code, setting the stage for a deeper dive into its various aspects.

The chapter also covers the historical [context of low-code application development](https://www.wavemaker.com/low-code-app-development-platform/), tracing its origins and evolution. From its inception to its current state, you'll discover how low code has matured into a powerful tool for businesses of all sizes and industries.

By the end of this Chapter, you'll have a solid grasp of the fundamental concepts of [java low code development](https://www.wavemaker.com/java-low-code-platform/), setting you on a path to explore its applications and benefits in the subsequent chapters. Join us on this exciting journey as we unlock the potential of low-code development together.
Debug my code no framework
Published: 2023-09-28 16:25:06

Hi all, i've same problem described and unresolved here:
https://stackoverflow.com/questions/57589509/flutter-android-studio-debugger-skip-framework-files

I'd like to debug my Dart code without Step into Frameworks
Is there a way to do it with la Android Studio Giraffe | 2022.3.1 Patch 1 ?

Thanks for help

MM
A Guide to CI/CD Tools and How to Choose the Right One for Your Team
Published: 2023-09-28 16:06:39

In today's fast-paced world, it's more important than ever for software teams to be able to deliver high-quality products quickly and reliably. CI/CD (Continuous Integration and Continuous Delivery/Deployment) tools can help teams to achieve this goal by automating the software development and delivery process.

In this article, we'll take a look at [CI/CD tools](https://www.clickittech.com/devops/aws-lambda-pricing/) and how to choose the right one for your team. We'll also cover some of the benefits of using CI/CD tools and discuss some popular options.

**What is CI/CD?**

CI/CD is a set of practices that automates the software development and delivery process. CI/CD tools help teams to build, test, and deploy software more quickly and reliably.

**Benefits of using CI/CD tools**
There are a number of benefits to using CI/CD tools, including:

**Faster time to market:** CI/CD tools can help teams to release software more frequently, which can lead to a faster time to market.
**Improved quality:** CI/CD tools can help to improve the quality of software by automating tests and providing feedback to developers early in the development process.
**Reduced costs:** CI/CD tools can help to reduce the cost of software development by automating tasks and eliminating manual errors.
**Increased reliability:** CI/CD tools can help to increase the reliability of software by automating the deployment process and ensuring that changes are rolled out safely and consistently.
How to choose the right CI/CD tool for your team

When choosing a CI/CD tool for your team, there are a number of factors to consider, including:

**The size and complexity of your team's projects**: If your team is working on small, simple projects, you may not need a full-fledged CI/CD tool. However, if your team is working on large, complex projects, you will need a tool that can support your team's needs.

The types of programming languages and frameworks that your team **uses:** Make sure to choose a CI/CD tool that supports the programming languages and frameworks that your team uses.
**Your budget:** CI/CD tools can range in price from free to thousands of dollars per month. Choose a tool that fits your team's budget.
**Your team's skill level:** If your team is new to CI/CD, you may want to choose a tool that is easy to use and has a lot of documentation and support.
Popular CI/CD tools

**Some popular CI/CD tools include:**

- Jenkins
- CircleCI
- GitLab CI/CD
- Travis CI
- Bamboo

CI/CD tools can help teams to build, test, and deploy software more quickly and reliably. When choosing a CI/CD tool, it is important to consider the size and complexity of your team's projects, the types of programming languages and frameworks that your team uses, your budget, and your team's skill level.

Choosing the right CI/CD tool for your team is a critical decision. It can help you to improve your team's productivity, quality, and reliability. By carefully considering your team's needs, you can choose a CI/CD tool that will help you to achieve your goals.
How to Watch Trending Instagram Stories: A Quick and Easy Guide
Published: 2023-09-28 15:54:35

**Hello**, Instagram fans! 
Want to know what's hot and happening on Instagram Stories right now? Sure, it's fun to catch up with friends and family, but sometimes you just want to know what the buzz is all about. Maybe a celebrity made a big announcement or there's a super cool challenge going around. Well, you're in luck! Here's your simple guide to watching trending Instagram Stories. Watch stories anonymously by using Instagram Story Viewer by [instanavigation](https://instanavigation.io/) on their website.

## Find the Explore Page

First up, fire up your Instagram app and go to your home feed. You'll see a little magnifying glass icon at the bottom of your screen, usually between the home and the camera icons. Give it a tap, and you're on the Explore page.

## Spot the Trending Stories

Once you’re on the Explore page, you’ll see a mix of photos, videos, and yes, Stories too. How do you find the Stories? They’re usually right at the top. These are curated by Instagram to show you popular and trending content. You can often see Stories from big names in entertainment, fashion, sports, or whatever your interests may be.

## Tap to Watch

Now that you've spotted the Stories, all you need to do is tap on them. They'll play one after another, just like when you watch your friends' Stories. You can tap on the right side of the screen to move to the next Story or tap on the left to go back. Swipe right to skip to another person’s Stories. 

## Interact if You Want

See a Story you love or find super interesting? You can interact with it! Tap the "Send Message" box at the bottom to shoot the poster a quick reply or emoji. You can also tap the options at the bottom to do things like sharing the Story with your own followers.

## Discover New Accounts

Watching Trending Stories is also a great way to find new accounts that catch your interest. If you see a Story from someone super cool, tap on their profile pic to check out their profile. If you like what you see, give them a follow!

## Check Back Regularly

The trending Stories change often. Every time you open Instagram, you might find something new and exciting. So, it's worth it to check the Explore page regularly to stay up-to-date on what's trending.

## Be Mindful of Privacy

Last but not least, remember that if you interact with a Story, the person who posted it can see that you’ve viewed or interacted with it. So, it’s not anonymous browsing!
And that’s it! You’re all set to dive into the world of trending Instagram Stories. It's a fun and easy way to see what's capturing everyone’s attention at the moment. So go ahead and start exploring!
Early Return in Elixir
Tags: elixir
Published: 2023-09-28 15:42:44

I tried to find a solution for early return online, however, the results did not satisfy me. The multiple pattern matching functions, or the try/catch/rescue don't make the code easier to read (IMO).

I have a problem looking like this: get from 1, if not has, get from 2, if still not has, get from 3.

If I use the `with/else`, the code would look like this:

```elixir
with {:get_1, {:ok, res_1}} <- {:get_1, get_1()} do
  {:ok, res_1}
else
  {:error, :not_found} ->
    with {:get_2, {:ok, res_2}} <- {:get_2, get_2()} do
      {:ok, res_2}
    else
      {:get_2, {:error, :not_found}} ->
        get_3()

      {:get_2, any} -> any
    end
  
  {:get_1, any} ->
    any
end
```

This is just a simple one since I just care about one type of error (`:not_found`). It would look uglier if we had to care for more error handlings.

Then, I came up with a solution: `next_then()`

```elixir
def next_then(:next, next), do: next.(:none)
def next_then({:next, prev_result}, next), do: next.(prev_result)
def next_then(prev_result, next), do: prev_result
```

The re-written code would look like this:

```elixir
case get_1() do
  {:error, :not_found} -> :next
  any -> any
end
|> next_then(fn _ ->
  case get_2() do
    {:error, :not_found} -> :next
    any -> any
  end
end)
|> next_then(fn _ ->
  get_3()
end)
```

Note: related design pattern: [Chain of Responsibility](https://refactoring.guru/design-patterns/chain-of-responsibility).
Elevate Your User Growth with Refir: The Secret
Published: 2023-09-28 15:39:12

Are you looking to take your user growth to the next level? Referrals can be a game-changer, and we've got just the platform to help you harness their power effortlessly. Meet Refir, the ultimate referral platform designed to supercharge your user growth.

[Get started Now](https://refir.vercel.app/)

## The Power of Referrals

Referrals have long been recognized as one of the most effective ways to grow your user base. When your existing users recommend your product or service to others, it's a vote of confidence that carries immense value. However, managing referral programs can be complex and time-consuming. That's where Refir comes in.

## Key Features of Refir

Refir offers a host of features that make it a must-have for anyone serious about user growth:

### 1. Easy Integration

Refir seamlessly integrates with your existing systems. Whether you're running a startup or a well-established business, you can incorporate Refir into your workflow without a hitch. Say goodbye to complex integrations and hello to streamlined user growth strategies.

### 2. Real-Time Analytics and Insights

Gaining insights into the performance of your referral program is essential. Refir provides real-time analytics that allow you to track trends, measure success, and adapt your strategy on the fly. Data-driven decisions have never been easier.

### 3. Customizable Referral Programs

Your brand is unique, and your referral program should reflect that. Refir lets you tailor your referral programs to match your brand's identity and goals. Create personalized referral experiences that resonate with your users and drive engagement.

### 4. Instant Webhook Notifications

Stay in the loop with instant webhook notifications. When a new referral comes in or a user hits a milestone, Refir can send you real-time alerts. This feature ensures you never miss a beat and can respond promptly to important events.

## Join the Refir Revolution

We believe that Refir can offer tremendous benefits to startups, businesses, and online entrepreneurs. But we don't just want you to take our word for it; we want you to experience it firsthand. That's why we invite you to join the Refir revolution.

Ready to elevate your user growth game? Take Refir for a spin today and discover the difference a powerful referral platform can make. Sign up for early access and be among the first to harness the full potential of referrals.


[Get started Now](https://refir.vercel.app/)
Custom Event Accessors with Delegates
Tags: csharp, programming, productivity, tutorial
Published: 2023-09-28 15:30:00

In C#, events are often used to provide a way for classes to notify other classes when certain actions or changes occur. Events typically use the `event` keyword to declare them and are associated with a delegate that defines the event's signature.

However, you can create custom event accessors by directly using delegates, which allows you more control over event subscriptions and unsubscriptions. This is especially useful when implementing custom logic around event handling.

Here's an example:

```csharp
using System;

public class CustomEventPublisher
{
    private Action<string> customEventHandlers;

    public event Action<string> CustomEvent
    {
        add
        {
            Console.WriteLine("Adding event handler");
            customEventHandlers += value;
        }
        remove
        {
            Console.WriteLine("Removing event handler");
            customEventHandlers -= value;
        }
    }

    public void RaiseEvent(string message)
    {
        customEventHandlers?.Invoke(message);
    }
}

public class Program
{
    public static void Main()
    {
        var publisher = new CustomEventPublisher();

        publisher.CustomEvent += HandleEvent;
        publisher.RaiseEvent("Event 1");

        publisher.CustomEvent += HandleEvent;
        publisher.CustomEvent -= HandleEvent;
        publisher.RaiseEvent("Event 2");
    }

    private static void HandleEvent(string message)
    {
        Console.WriteLine($"Event handled: {message}");
    }
}
```

In this example, we define a custom event `CustomEvent` without using the `event` keyword. Instead, we manually implement the `add` and `remove` accessors. This allows us to print messages when handlers are added or removed.

Custom event accessors are powerful when you need to implement custom logic, such as filtering events, logging, or maintaining event handler lists in a specific way. However, they also require you to manage the delegate manually, which can be error-prone, so use them with caution when you need additional control and flexibility.
Who Ate My Disk Space? It's "node_modules" Again! 🕵️‍♂️
Tags: node, javascript, webdev, programming
Published: 2023-09-28 15:17:16


Hey there! If you've used Node.js, you've probably seen the `node_modules` folder. It's where all the extra stuff for your project goes. But sometimes, it gets really big, really fast. I wanted to know just how big, so I made a script to check it out.

![Maurer Krisztian](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ngohzicwvmugy12z1ve.jpeg)



### **What I Made:**

It's a simple tool that looks through your projects, finds the `node_modules` folders, and tells you how big they are. And it uses colors to be cool!


### **Why I Made This:**

1. **Curiosity**: Which project has the biggest `node_modules`? 🤔
2. **Cleaning**: Some folders just have too much stuff. 🧹
3. **Fun**: I thought it'd be a fun little project. 😄
4. **AI**: Can AI craft this for me? (Absolutely, with a bit of direction!)

### **The script**
```sh
#!/bin/bash

# ANSI color codes
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
RESET="\033[0m"

# Set the starting directory for the search. Default is root if no argument is provided.
START_DIR=${1:-/}

# Find top-level node_modules directories directly under a project within the specified directory
# and exclude those inside the .cache directory
directories=$(find "$START_DIR" -type d -name "node_modules" -not -path "*/node_modules/*/*" -not -path "*/.cache/*" 2>/dev/null)

total_size=0

# Loop through each directory and calculate its size
for dir in $directories; do
    # Check if the parent directory of node_modules is not another node_modules (to avoid nested ones)
    parent_dir=$(dirname "$dir")
    if [[ $(basename "$parent_dir") != "node_modules" ]]; then
        size=$(du -sh "$dir" | cut -f1)
        echo -e "${YELLOW}Size of $dir: ${GREEN}$size${RESET}"
        
        # Convert size to bytes for summation
        bytes=$(du -sb "$dir" | cut -f1)
        total_size=$((total_size + bytes))
    fi
done

# Convert total size back to human-readable format
human_readable_total=$(numfmt --to=iec-i --suffix=B $total_size)

echo -e "${RED}Total size of all top-level node_modules within $START_DIR: ${GREEN}$human_readable_total${RESET}"

```
*[gh gist](https://gist.github.com/MaurerKrisztian/a93b51f196eac9d3f9245f485dbe2cb5)
### **Want to Try? Here's How:**

1. Write down the script in `node_modules_size.sh`.
2. Get it ready with: `chmod +x node_modules_size.sh`.
3. Start it up: `./node_modules_size.sh`.
4. For a specific place: `./node_modules_size.sh /path/to/place`.

![Maurer Krisztian](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b2d37jtyel0ff53ckduh.jpg)


### **Wrap Up**

So, if you're wondering where all your computer's space went, this tool might help. Give it a go and see what you find! 🚀📁
Opentelemetry for python
Tags: otel, python, o11y, devops
Published: 2023-09-28 15:05:40

I have a cli-app (see [my previous post](https://dev.to/prumand/lets-measure-1co5)) and I want to collect some usage stats. Of course [opentelemetry](https://opentelemetry.io/) is the way to go and python support is pretty far.

I’m using [jaeger](https://www.jaegertracing.io/) for my traces. I don’t need live observability, but just some analytics from time to time. So I’d prefer starting a container and ingesting traces which are stored on disk on demand.

Unfortunately there is no to-disk exporter for traces out of the box, but it’s easy to set up. First for writing to files, I’ll just use the standard python logging:

```python
import logging
from logging import LogRecord, Logger
from logging.handlers import RotatingFileHandler


handler = RotatingFileHandler(LOG_FILE_PATH, maxBytes=1024 * 1024, backupCount=5)
logging.basicConfig(
    level=logging.INFO,
    handlers=[handler],
    format='%(message)s',   
)
```
It's ok to rotate logs from time to time. I can alway crank up the `backupCount`, if I think it’s important.

I’m using the standard otel-ConsoleExporter and change the formatter, since I want all traces to be written on one line. That makes it easier to ingest the file later. Further I change the output of the Exporter to my customer implementation.

```python
class LogOut:
    def __init__(self, logger: Logger) -> None:
        self._logger = logger

    def write(self, msg):
        self._logger.info(msg)

    def flush(self):
        pass

provider = TracerProvider(resource=resource)
processor = BatchSpanProcessor(ConsoleSpanExporter(
    formatter=lambda span: span.to_json(None),
    out=LogOut(logging.getLogger('makit.cli'))
))

provider.add_span_processor(processor)
trace.set_tracer_provider(provider)
tracer = trace.get_tracer('makit.cli')

```

So basically I just need to add the traces to my action-functions and I’ve all I need to know:

```python
if __name__ == "__main__":
    with tracer.start_as_current_span("main") as span:
        get_app()()

```

## Sidenote

For me it’s fine to use span events as logging. Unfortunately those don’t show up in the jaeger-ui. But I tried something like the following:

```python
class OtelLogger(logging.Logger):
    def handle(self, record: LogRecord) -> None:
        span = trace.get_current_span()
        span.add_event(record.msg)

```

It gives me all the information I need and I thought about setting the span status based on the log-level.
Hotjar in Rails
Tags: hotjar, rails
Published: 2023-09-28 15:02:15

Hello Hello!

Hey you look good.

Yesterday and today I had to undergo the exam of web developper and had to implement Hotjar in Rails. All installation processes are quite clear online. After copying the code in the <head> when you provide your URL to verify, if it doesn't work, chances are your adblock is preventing hotjar to verify. 

See you later!
React js issue
Published: 2023-09-28 14:40:58

wanted to retreive data by the param district but array received is empty but when i am receiving all data from database it is coming fine

url i am trying in react is localhost:3000/dashboard/varanasi and it is giving emply array in response but in my localhost:8080/public/get/varanasi it is working fine

https://codesandbox.io/s/blue-bush-lrnhpk?file=/src/components/CommonDashBoard.jsx //source code here
Linux in Android
Tags: opensource, oneliner
Published: 2023-09-28 14:03:17

---
title: Linux in Android
published: true
description: script to start ubuntu on termux emulator via proot-distro utility
tags: opensource, oneliner 
# published_at: 2023-09-28 15:06 +0000
---
```
pkg upgrade; 
pkg in proot-distro; 
proot-distro install ubuntu; 
proot-distro login ubuntu;
```
>  Code for [Termux](https://termux.dev) ([CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)) emulation of [Ubuntu](https://ubuntu.com) system via [proot-distro](https://github.com/termux/proot-distro) ([GPLv3](https://www.gnu.org/licenses/gpl-3.0.html)) utility.

Test desktop functionalities on mobile!

{% youtube ALMIHQ5YQ7o %}
## `pkg upgrade`

{% youtube 8p5Jvuf2TfA %}

## `pkg in proot-distro`
alias `pkg install proot-distro`

{% youtube isVdIhS220k %}

## `proot-distro install`
- `alpine`
- `archlinux`
- `debian`
- `fedora`
- `manjaro-aarch64`
- `opensuse`
- `pardus`
- **`ubuntu`**
- `void`
- ..

{% youtube gQpjBn8o8_I %}
SQL Pro tips : Oracle XE Quick Start
Tags: sql, oracle, bigdata, database
Published: 2023-09-28 13:58:09

## Introduction
In this article you will see how to setup `Oracle XE` database in a matter of half an hour maximum using `docker`, `Oracle XE` docker image and `DBeaver`.
## Setup
From zero to hero : 

- install [docker](https://docs.docker.com/engine/install/)
- go to [oracle xe quickstart](https://www.oracle.com/se/database/technologies/appdev/xe/quickstart.html)
- find oracle xe image in the [registry](https://container-registry.oracle.com/)
- pull from the registry, I have set the password to `password`, feel free set it to your password, the command at the moment when the article is being written : 
```
docker run -d --name oracle-db -p 1521:1521 -e ORACLE_PWD=password container-registry.oracle.com/database/express:21.3.0-xe
```

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

- check the connection by running the command from the container which is named `oracle-db` in my setup and the password set to `password`, type `exit` to exit
```
docker exec -it oracle-db sqlplus sys/password@//localhost:1521/XE as sysdba
```

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

- install [dbeaver](https://dbeaver.io/)
- setup connection in `DBeaver` : 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8qo7d89ugjf5awdr4zmr.png)
- open SQL editor in `DBeaver` and start writing SQL : 

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

Enjoy !