teleren/devto huggingface dataset:
Create a Copy of a Linked List
Tags: c, beginners, linkedlist
Published: 2022-07-13 09:21:14

For a given linked list, you are supposed to write a function that creates a copy of the already created linked list.

**Example 1:**
Input : Linked List : 4 6 2 8 1
Output : Copy of linked list : 4 6 2 8 1

**Example 2:**
Input : Linked List : 4 5 9 8 2
Output : Copy of linked list : 4 5 9 8 2

**Explanation:**

- Logic behind this is just create a new node of structure and copy the every existing node to new node.
- Process will continue until the existing list leads to null(recursively).

**C program that creates the copy of linked list:**

```
#include <stdio.h>
#include <stdlib.h> 
#include <limits.h>
  
struct node
{
    int data;
    struct node * next;
};
  
void displayLL(struct node * head)
{
    struct node * temp;
    temp = head;
    temp=head;
    while(temp!=0)
    {
       printf("%d ",temp->data);
       temp = temp->next;
    }
}
 
void copy(struct node *head)
{
    struct node *temp = head;
    struct node *temp1, *temp2, *head1;
     
    temp1 = (struct node *)malloc(sizeof(struct node));
    temp1->next = NULL;
    temp1->data = temp->data;
    head1 = temp1;
    temp1->next = NULL;
    temp = temp->next;
     
    while(temp != NULL)
    {
       temp2 = (struct node *)malloc(sizeof(struct node));
       temp2->data = temp->data;
       temp1->next = temp2;
       temp1 = temp2;
       temp = temp->next;
    }
    printf("\n--------------------------------\n");
    printf("Copy of original linked list : ");
    displayLL(head1);
}
 
int main()
{
   struct node *head = 0, *newnode, *temp; 
   int n, choice, newdata;
 
// Create Linked List // 
 
   printf("Enter the number of nodes in the list : ");
   scanf("%d", &n);
 
   if(n == 0)
   {
      printf("--------------------------------\n");
      printf("Linked list cannot be empty");
      exit(0);
    } 
  
   for(int i = 1; i<=n; i++)
   {
     newnode = (struct node *)malloc(sizeof(struct node));
     printf("Enter the data%d : ", i);
     scanf("%d", &newnode->data);
     newnode->next = 0;
     if(head == 0)
     {
        head = temp = newnode;
     } 
     else
       { 
        temp->next = newnode;
        temp = newnode;
       }
    }
   printf("--------------------------------\n");
   printf("Original linked list : ");
   displayLL(head);
   copy(head);
}
```

**Output:**

```
Enter the number of nodes in the list : 4
Enter the data1 : 3
Enter the data2 : 7
Enter the data3 : 3
Enter the data4 : 8
--------------------------------
Original linked list : 3 7 3 8 
--------------------------------
Copy of original linked list : 3 7 3 8 
```
bnm
Tags: cv
Published: 2022-07-13 09:00:27

```canvas id="canvas"></canvas>

<p>
  Use the left, right and up arrow keys to move.
</p>
<p class="info">
  The map data is fully customisable and scriptable (all contained within the "map" variable). See the comments in the code for instructions.
</p>
<br>
<a target="_blank" href="https://github.com/dissimulate/Clarity">View on GitHub</a>

`````
MMLive | Chơi Game, Ngắm Gái Xinh
Published: 2022-07-13 08:56:34

MMLive là một trong những ứng dụng giải trí cực kì phổ biến tại châu Á và đặc biệt là tại Việt Nam, MMLive cho phép người dùng chia sẻ cuộc sống, suy nghĩ của mình thông qua hoạt động phát trực tiếp, xem người khác livestream, giao lưu, kết bạn. 
Phone: 0942115564. 
Address: 421  u Cơ, Phường 9, Quận 11, Thành phố Hồ Chí Minh
Chi tiết liên hệ :
Youtube : https://www.youtube.com/channel/UConZv8rFENohtNpeN9o1ZWw 
Pinterest : https://www.pinterest.com/mmliveapptopvn/ 
Linkedin : https://www.linkedin.com/in/mmliveapptopvn/ 
Dribbble : https://dribbble.com/mmliveapptopvn/about 
Flipboard : https://flipboard.com/@mmliveapptopvn   
Liveinternet : https://www.liveinternet.ru/users/mmliveapptopvn/   
Flickr :https://www.flickr.com/people/mmliveapptopvn/  
Behance : https://www.behance.net/mmliveapptopvn
Docker Port Expose
Published: 2022-07-13 08:51:46

Hi Readers, **Docker** is an open source platform adopted widely to ease the developing, shipping, and running applications. Docker has a object named containers isolates the applications from the infrastructure and avoids any external affect on the development environment.



In this blog we will see some network part of containers.

We will see how to enable communication of the container to the outside world or to the other containers.

We do this by exposing ports and mapping these ports.

Let’s see how we can do that.




- Login into the AWS account and create one Linux Instance

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

- ssh into the instance

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

- sudo su

- yum update -y

Install the Docker 

- yum install docker -y


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vivadby4zhcbzdh7l0c2.png)
 
Start the Docker service

- service docker start

Now our base machine is ready.
We will create a server named as demoserver with port(publish) 80 expose map the host port no 80 with container port no 80.

- docker run -td --name demoserver -p 80:80 ubuntu


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


 Check the running containers.

- docker ps

 
To get the details of the port we have exposed.

- docker port demoserver

Execute the container and go inside the container by starting a new process.

- docker exec -it demoserver /bin/bash


- apt-get update


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

- apt-get install apache2 -y


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

 
Then move to this path and create an index.html file


- cd /var/www/html

- echo "HELLO WORLD">index.html


Now start the apache2 service


- service apache2 start


Copy the public IP of the instance 


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


And run on the browser now 


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


The contents of the index file is now visible.
Bootstrap vs Tailwind
Tags: webdev, tailwindcss, bootstrap, beginners
Published: 2022-07-13 08:43:22

Has anyone here used Bootstrap? If so, how difficult is it to learn to use? I'd love to be able to just assign a class to get the effect I want without having to mess with a bunch of CSS properties. Heard a lot of positives about it. How is it compared to Tailwind?
Give me advice on the best way to CSS currently. Thanks.
Explaining Code with GPT-3
Tags: nlp, python, github, gpt
Published: 2022-07-13 08:39:22


Hello everyone,In this post I'm gonna show you can build one of the most amazing application out of GPT-3.

A tool which can explain you code so you can roam freely in an unknown territory.
It will be able to explain you code in any major programming language like C,C++,Java,Python, Javascript, Assembly,Golang etc.
So without wasting any time let's start with the coding part.

## Part-1:Connecting the API

```python
pip install openai
```

```python
import os
import openai

openai.api_key = input("API-KEY:")

def result(code):
  response = openai.Completion.create(
    engine="text-davinci-002",
    prompt="Explain this code line by line "+code,
    temperature=0.7,
    max_tokens=100,
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0
  )
  return response['choices'][0]['text']
```

## Part-2:Building Gradio Interface


```python
pip install gradio
```

```python
import gradio as gr

demo = gr.Interface(
  fn=result,
  inputs=gr.Textbox(lines=10),
  outputs="text",    
)
demo.launch(debug=True)
```
Here's the link to the [Colab Notebook:](https://colab.research.google.com/drive/12ZDUVxykxWAgJbPHbryKut5LorSztcWs)
Titanium is alive and well!
Tags: javascript, mobile, ios, android
Published: 2022-07-13 08:36:30

Yeah, that's right. The amazing, and my favorite, native cross-platform Mobile Framework is still alive! It recently even received a new massive update!

But before I dive into that, let me tell you my history with the JavaScript SDK.

Between 2011 and early 2021 I was heavily involved in the [Titanium](https://titaniumsdk.com/) community. At first mostly as a user, but only a few years after I've first started using it I attended meetups, and later started hosting meetups, founded the Titanium Slack community, and then became a Developer Evangelist at Axway Appcelerator, the company in charge of building the Titanium SDK. Unfortunately early 2021 Axway announced they were going to discontinue Titanium, and by extension, hand it over to the community. As a person in Developer Relations, the moment that announcement was made, my job ended. So I had to move on.

So those of you who paid attention to the timeline might wonder, wait, did you really start using Titanum in 2011? Then I say, yes! Titanium was, next to Phonegap, the only cross-platform framework out there for JavaScript, and it didn't rely on web! So yes, it predates Xamarin, React Native, NativeScript and obviously Flutter. It even predates NodeJS which it heavily relies on nowadays for building. And while that is only about 11 years ago, pretty much any framework or SDK we use now didn't exist back then. The web was mostly jQuery at that point.

But we're getting offtopic here. Titanium is alive, had I mentioned that yet? It's pretty amazing if you think about it. The [11th major release](https://tidev.io/blog/sdk_11_ga) came out only recently. It's the first major release since TiDev took over the development and maintenance of Titanium. 

So what's TiDev? TiDev is a community driven and funded non-profit that maintains and updates Titanium and all it's related technologies. They have all their software, open-source, on [Github](https://github.com/tidev) and thanks to the help of the community they get funding through, mostly, [Github Sponsors](https://github.com/sponsors/tidev). 

I'm incredibly happy the team behind TiDev managed to get an update out there, and I cannot wait what will happen next. I'm already looking forward to the update that will support the next version of iOS, and I'm sure many of the community do the same.

And in case you're not a Titanium user and you made it this far in the blogpost, can I ask you to chip in as well? Let's make the cross-platform ecosystem a little more diverse by helping Titanium get more popular again! Check out the [website](https://titaniumsdk.com/), and try it out, and if you like it, perhaps sponsor them on Github as well!

Oh, and if you're tired of building mobile apps in React Native, maybe this is the platform for you!
1659. Leetcode Solution in Java
Tags: java
Published: 2022-07-13 08:27:04

```
class Solution {
    int m;
    int n;
    int maxState;
    int mod;
    int[][][][][] dp;

    public int getMaxGridHappiness(int m, int n, int introvertsCount, int extrovertsCount) {
        this.m = m;
        this.n = n;
        maxState = (int) Math.pow(3, n);
        mod = maxState / 3;
        dp = new int[m][n][introvertsCount + 1][extrovertsCount + 1][maxState];
        return dp(0, 0, introvertsCount, extrovertsCount, 0);
    }

    public int dp(int row, int column, int introvertsCount, int extrovertsCount, int lastState) {
        if (row == m)
            return 0;
        if (column == n)
            return dp(row + 1, 0, introvertsCount, extrovertsCount, lastState);
        if (dp[row][column][introvertsCount][extrovertsCount][lastState] == 0) {
            int value = dp(row, column + 1, introvertsCount, extrovertsCount, lastState % mod * 3);
            if (introvertsCount != 0) {
                int value1 = 120, up = lastState / mod, left = lastState % 3;
                if (row > 0 && up != 0) {
                    value1 -= 30;
                    value1 += up == 1 ? -30 : 20;
                }
                if (column > 0 && left != 0) {
                    value1 -= 30;
                    value1 += left == 1 ? -30 : 20;
                }
                value = Math.max(value, value1 + dp(row, column + 1, introvertsCount - 1, extrovertsCount, lastState % mod * 3 + 1));
            }
            if (extrovertsCount != 0) {
                int value2 = 40, up = lastState / mod, left = lastState % 3;
                if (row > 0 && up != 0) {
                    value2 += 20;
                    value2 += up == 1 ? -30 : 20;
                }
                if (column > 0 && left != 0) {
                    value2 += 20;
                    value2 += left == 1 ? -30 : 20;
                }
                value = Math.max(value, value2 + dp(row, column + 1, introvertsCount, extrovertsCount - 1, lastState % mod * 3 + 2));
            }
            dp[row][column][introvertsCount][extrovertsCount][lastState] = value;
        }
        return dp[row][column][introvertsCount][extrovertsCount][lastState];
    }
}
```
#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/maximize-grid-happiness/
1640. Leetcode Solution in Java
Tags: java
Published: 2022-07-13 08:26:06

```
class Solution {
    public boolean canFormArray(int[] arr, int[][] pieces) {
        Map<Integer, int[]> _map = new HashMap<>();
        for(int[] p: pieces)
            _map.put(p[0], p);
        
        int idx = 0;
        while(idx < arr.length){
            if(_map.containsKey(arr[idx])){
                int[] piece = _map.get(arr[idx]);
                for(int p: piece){
                    if(p != arr[idx]) return false;
                    else idx++;
                }
            } else 
                return false;
        }
        return true;
    }
}

```
#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/check-array-formation-through-concatenation
1640. Leetcode Solution in CPP
Tags: cpp
Published: 2022-07-13 08:25:31

```
class Solution {
public:
    bool canFormArray(vector<int>& arr, vector<vector<int>>& pieces) {
        unordered_map<int, vector<int>> _map;
        for(auto p: pieces)
            _map.insert({p[0], p});
        
        int idx = 0;
        while(idx < arr.size()){
            if(_map.count(arr[idx])){
                auto piece = _map[arr[idx]];
                for(int p: piece){
                    if(p != arr[idx]) return false;
                    else idx++;
                }
            } else 
                return false;
        }
        return true;
    }
};

```
#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/check-array-formation-through-concatenation
React의 맥가이버, react-use, react-hookz!
Tags: react, javascript, tutorial, korean
Published: 2022-07-13 08:25:13

내가 Vue 와 Svelte 의 유용한 라이브러리를 소개했고,
얼마 뒤 보니까 많이들 쓰고 있더라.

- [Vue 프로젝트의 단짝, VueUse](https://dev.to/composite/vue-vueuse-jal)
- [Svelte의 안내데스크, svelte-add](https://dev.to/composite/svelteyi-annaedeseukeu-svelte-add-52k7)

자, 이번엔 리액트다. 좀 늦은 감이 있었지만.

## react-use

전에 `react-use` 를 잠깐 소개했었는데, React 18 나온 뒤로 계속 지켜보았으나 이녀석 개발자가 더 이상 응답이 없어 사실상 활동 중단이 된 상황.
그래서 React 18 미지원으로 이 라이브러리 사용자들은 답답할 수밖에.

{% github https://github.com/streamich/react-use %}

...라고 한숨쉬다가 다시 들어가봤는데,

어? 2022년 5월에 React 18 지원하네?
어?? 끝이네...

안타깝게도 많이 쌓인 이슈와 Pull request 들을 뒤로한 채 다시 활동 중단.
뭐... 그래도 React 18 지원하도록 수정해서 다행이다.

## react-hookz

그래서 위 프로젝트 잠수에 지친 개발자들이 모여 대체 라이브러리를 만들었다.

{% github https://github.com/react-hookz/web %}

아직까지 위에 비해선 지원하는 영역이 적긴 하지만, SSR 문제까지 해결하려는 노력이 돋보이는 라이브러리다.
지금 내가 쓰고 있는 라이브러리다.

## 그래서 이게 뭔데?

이제 이 둘의 소개를 시작하도록 하겠다.
이녀석들은 React Hooks 활용의 불편함을 해소시켜주는 라이브러리다.
이들의 대표적인 Hooks 가 있다면,

- 반응형 `document.title`
- 반응형 브라우저 스크롤
- `useState` 의 히스토리 관리 기능
- `useState` 의 `Array` 및 `Object` 버전
- 심지어 `useState`의 `Set`, `Map` 버전
- 수동 재렌더링 (개발자가 고의로 렌더링 API 호출)
- 디바운스 및 스로틀링이 첨가된 `useState`
- 컴포넌트 생명주기별 `useEffect` 확장
- HTML5 API 에서 제공하는 왠만한 기능들까지 반응형 추가
- 비동기 `useState` (근데 이런 건 다들 `react-query` 쓰잖아?)
- DOM 관련 `useEffect`

일단 내가 대표적으로 추스린 것들인데 이보다 일단 많다.
각 라이브러리 가서 확인해보면 알 거다.

자, Hooks 쓰면서 답답했던 Hooks API 들을 이제 이걸 통해 제공하니까 좋지 아니한가?
이제 말이 필요한가? 여기 리액트 Hooks 의 맥가이버 칼이 있다.
불편하게 `useState` 및 `useEffect` 개조하려고 머리 짜매지 말고,
그냥 `npm install` 해서 빨리 개발할 생각이나 해라.
너에게 주어진 시간이 많다면 할 말이 없지만.

근데 경험 상 함수 컴포넌트 만드는데 업무에 따라 500줄 넘어가는데, 클래스 컴포넌트였으면 오죽했을까 싶다. Vue도 마찬가지로 지금은 `<script setup>` 기능을 통해 간결한 컴포넌트 스크립트를 짤 수 있는데 컴포지션은 커녕 옵션 API 쓸 때는 뜨어...

끗.
1640. Leetcode Solution in Python
Tags: python
Published: 2022-07-13 08:24:52

```
class Solution:
    def canFormArray(self, arr, pieces):
        i = 0

        while i < len(arr):

            for piece in pieces:
                if arr[i] in piece:

                    for j, n in enumerate(piece):

                        if n != arr[i+j]:
                            break

                    else:
                        i += len(piece)
                        break
            else:
                return False

        return True
```
#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/check-array-formation-through-concatenation
1616. Leetcode Solution in Java
Tags: java
Published: 2022-07-13 08:22:54

```
class Solution{
boolean isPalindrome(String s, int i, int j) {
    while (i < j && s.charAt(i) == s.charAt(j)) {
        ++i;
        --j;
    }
    return i >= j;
}
boolean check(String a, String b) {
    int i = 0, j = a.length() - 1;
    while (i < j && a.charAt(i) == b.charAt(j)) {
        ++i;
        --j;
    }
    return isPalindrome(a, i, j) || isPalindrome(b, i, j);
}
public boolean checkPalindromeFormation(String a, String b) {
    return check(a, b) || check(b, a);
}
}
```

#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/split-two-strings-to-make-palindrome/
1631. Leetcode Solution in CPP
Tags: cpp
Published: 2022-07-13 08:19:41

```
struct T {
  int i;
  int j;
  int d;
  T(int i, int j, int d) : i(i), j(j), d(d) {}
};

class Solution {
 public:
  int minimumEffortPath(vector<vector<int>>& heights) {
    const int m = heights.size();
    const int n = heights[0].size();
    const vector<int> dirs{0, 1, 0, -1, 0};
    auto compare = [](const T& a, const T& b) { return a.d > b.d; };
    priority_queue<T, vector<T>, decltype(compare)> minHeap(compare);
    // diff[i][j] := max absolute difference to reach (i, j)
    vector<vector<int>> diff(m, vector<int>(n, INT_MAX));
    vector<vector<bool>> seen(m, vector<bool>(n));

    minHeap.emplace(0, 0, 0);
    diff[0][0] = 0;

    while (!minHeap.empty()) {
      const auto [i, j, d] = minHeap.top();
      minHeap.pop();
      if (i == m - 1 && j == n - 1)
        return d;
      seen[i][j] = true;
      for (int k = 0; k < 4; ++k) {
        const int x = i + dirs[k];
        const int y = j + dirs[k + 1];
        if (x < 0 || x == m || y < 0 || y == n)
          continue;
        if (seen[x][y])
          continue;
        const int newDiff = abs(heights[i][j] - heights[x][y]);
        const int maxDiff = max(diff[i][j], newDiff);
        if (diff[x][y] > maxDiff) {
          diff[x][y] = maxDiff;
          minHeap.emplace(x, y, maxDiff);
        }
      }
    }

    throw;
  }
};

```
#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/path-with-minimum-effort/
1629 Leetcode Solution in Java
Tags: java
Published: 2022-07-13 08:18:34

```
class Solution {
    public char slowestKey(int[] releaseTimes, String keysPressed) {
        char[] chArr = keysPressed.toCharArray();
        int len = chArr.length;
        char res = chArr[0];
        int maxNum = releaseTimes[0];

        for (int i = 1; i < len; i++) {
            int tmp = releaseTimes[i] - releaseTimes[i - 1];
            if (tmp > maxNum) {
                maxNum = tmp;
                res = chArr[i];
            } else if (tmp == maxNum && chArr[i] > res) {
                maxNum = tmp;
                res = chArr[i];
            }
        }

        return res;
    }
}
```

#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/slowest-key/
1663. Leetcode Solution in Cpp
Tags: cpp
Published: 2022-07-13 08:17:04

```
class Solution {
    public:
        string getSmallestString(int n, int k) {
            k -= n;
            string alpha = "_bcdefghijklmnopqrstuvwxy_";
            string ans = std::string(~~(k / 25), 'z');
            if (k % 25) {
                ans = alpha[k % 25] + ans;
            }
            return std::string(n - ans.size(), 'a') + ans;
        }
    };
```
#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/smallest-string-with-a-given-numeric-value/
1657. Leetcode Solution in Cpp
Tags: cpp
Published: 2022-07-13 08:14:57

```
class Solution {
 public:
  bool closeStrings(string word1, string word2) {
    if (word1.length() != word2.length())
      return false;

    unordered_map<char, int> count1;
    unordered_map<char, int> count2;
    string s1;           // unique chars in word1
    string s2;           // unique chars in word2
    vector<int> freqs1;  // freqs of unique chars in word1
    vector<int> freqs2;  // freqs of unique chars in word2

    for (const char c : word1)
      ++count1[c];

    for (const char c : word2)
      ++count2[c];

    for (const auto& [c, freq] : count1) {
      s1 += c;
      freqs1.push_back(freq);
    }

    for (const auto& [c, freq] : count2) {
      s2 += c;
      freqs2.push_back(freq);
    }

    sort(begin(s1), end(s1));
    sort(begin(s2), end(s2));

    if (s1 != s2)
      return false;

    sort(begin(freqs1), end(freqs1));
    sort(begin(freqs2), end(freqs2));

    return freqs1 == freqs2;
  }
};

```

#Leetcode
#challende
Here is the link for the problem:
https://leetcode.com/problems/determine-if-two-strings-are-close/
#TestCulture 🦅 Episode 9 - Blog recommendations
Tags: beginners, discuss, testing, agile
Published: 2022-07-13 08:05:13

Here are some suggestions of interesting blogs, writers, and bloggers from the testing world. We have made a selection of our favorite reads – from well known references, but also little known authors. 👀

𝐉𝐨𝐥𝐢𝐯𝐞́ 𝐇𝐨𝐝𝐞𝐡𝐨𝐮, a great blogger. He has a blog on Medium and writes about testing, software test engineer, test automation and other topics about the optimal software.

➡ [𝙷𝚒𝚜 𝚋𝚕𝚘𝚐](https://jolivehodehou.medium.com) ⬅

𝐌𝐚𝐧𝐢𝐬𝐡 𝐒𝐚𝐢𝐧𝐢, a blogger about test automation, load testing and other agile subjects. His last article: ‘5 steps to get into automation testing’ gives you good advices to start automating.

➡ [𝙷𝚒𝚜 𝚋𝚕𝚘𝚐](https://medium.com/@manishsaini74.ms) ⬅

𝐀𝐠𝐢𝐥𝐞 𝐓𝐞𝐬𝐭𝐢𝐧𝐠 𝐰𝐢𝐭𝐡 𝐋𝐢𝐬𝐚 𝐂𝐫𝐢𝐬𝐩𝐢𝐧. Lisa Crispin has a blog to speak about quality, testing and other subjects about agile theme.

➡ [𝙷𝚎𝚛 𝚋𝚕𝚘𝚐](https://lisacrispin.com) ⬅

𝐒𝐨𝐟𝐭𝐰𝐚𝐫𝐞 𝐓𝐞𝐬𝐭𝐢𝐧𝐠 𝐇𝐞𝐥𝐩. Created by Vijay Shinde, this website offers courses and tutorials, but also articles about quality, agile and software testing.

➡ [𝚃𝚑𝚎 𝚠𝚎𝚋𝚜𝚒𝚝𝚎](https://softwaretestinghelp.com) ⬅

𝐒𝐨𝐟𝐭𝐰𝐚𝐫𝐞 𝐓𝐞𝐬𝐭𝐢𝐧𝐠 𝐍𝐞𝐰𝐬. Continuous testing, software, agile… 
Test Magazine shares publications exploring the processes, technologies, strategies, and opinions surrounding the software testing area…

➡ [𝚃𝚑𝚎 𝚠𝚎𝚋𝚜𝚒𝚝𝚎](https://softwaretestingnews.co.uk) ⬅

𝐁𝐞𝐭𝐡𝐚𝐧𝐲 𝐖𝐢𝐥𝐬𝐨𝐧, a blogger about Automation tools and test automation, on Medium.

➡ [𝙷𝚎𝚛 𝚋𝚕𝚘𝚐](https://medium.com/@bethwilsonuk) ⬅

𝐀 𝐒𝐞𝐚𝐬𝐨𝐧𝐞𝐝 𝐓𝐞𝐬𝐭𝐞𝐫'𝐬 𝐂𝐫𝐲𝐬𝐭𝐚𝐥 𝐁𝐚𝐥𝐥. Maaret Pyhäjärvi shares things of past, present and future in testing. Maaret is a tester, programmer, and also a speaker about testing.

➡ [𝙷𝚎𝚛 𝚋𝚕𝚘𝚐](https://visible-quality.blogspot.com) ⬅

Do you have any blogs or website to share with us ? 🤔

Thread [on Twitter](https://twitter.com/agilitest/status/1522228947697733635?s=20&t=-0I7IzMKIh4tK8R7Q2Allg).
Develop a simple Morse encoder
Tags: embedded, opensource, luos, tutorial
Published: 2022-07-13 08:03:49

📽️ We will pass and explain Luos main API through a simple and fun project called Morse encoder! 

⏩ https://www.youtube.com/watch?v=g9y6-SioMI4

This project will allow you to send a character through a serial interface of a nucleo STM32F072RB board.

#project #microservices #demo #tutorial #opensource #edge #embedded