teleren/devto huggingface dataset:
neovimとdein.vimをWindows 10にインストールする簡単な方法
Published: 2019-10-27 05:33:57

この記事では、neovim と dein.vim をシンプルに Windows10 へインストールする方法をご紹介します。 neovim 公式サイトからインストール まず、neovim のインストール方法には、色々と方法

つづきは[こちら](https://vim.blue/neovim-dein-windows-10-install-simple/)。
[https://vim.blue/neovim-dein-windows-10-install-simple/](https://vim.blue/neovim-dein-windows-10-install-simple/)
neovim を Windows 10 にインストールする最も簡単な方法
Published: 2019-10-27 05:33:40

この記事では、neovim を最もシンプルに Windows10 へインストールする方法をご紹介します。 neovim 公式サイトからインストール いろんなインストール方法がありますが、Windows 10 にインストー

つづきは[こちら](https://vim.blue/neovim-install-simple/)。
[https://vim.blue/neovim-install-simple/](https://vim.blue/neovim-install-simple/)
[Vim問題]文字列を全て置換するコマンドは？
Published: 2019-10-27 05:33:23

この記事では、Vimでプラグインを使わずに「文字列を全て置換する」ためのコマンドについて、ご紹介します。 [解答] :%s/{置換対象文字列}/{置換後文字列}/g Vimコマンド. 全ての文字列を置換 （ノーマルモード

つづきは[こちら](https://vim.blue/vim-replace-all-string/)。
[https://vim.blue/vim-replace-all-string/](https://vim.blue/vim-replace-all-string/)
[Vim問題]文字列を確認してから置換するコマンドは？
Published: 2019-10-27 05:33:07

この記事では、Vimでプラグインを使わずに「文字列を確認してから置換する」ためのコマンドについて、ご紹介します。 [解答] :%s/{置換対象文字列}/{置換後文字列}/c Vimコマンド1. １文字だけ置換 （ノーマル

つづきは[こちら](https://vim.blue/vim-replace-string-with-confirmation/)。
[https://vim.blue/vim-replace-string-with-confirmation/](https://vim.blue/vim-replace-string-with-confirmation/)
[Vim問題]全ての行末に文字列を追加するコマンドは？
Published: 2019-10-27 05:32:50

この記事では、Vimでプラグインを使わずに「全ての行末に文字列を追加する」ためのコマンドについて、ご紹介します。 [解答] :%s/$/{追加する文字列}/g Vimコマンド （ノーマルモード） :%s/$/{追加する文

つづきは[こちら](https://vim.blue/vim-replace-line-last-string/)。
[https://vim.blue/vim-replace-line-last-string/](https://vim.blue/vim-replace-line-last-string/)
[Vim問題]全ての行頭に文字列を追加するコマンドは？
Published: 2019-10-27 05:32:34

この記事では、Vimでプラグインを使わずに「全ての行頭に文字列を追加する」ためのコマンドについて、ご紹介します。 [解答] :%s/^/{追加する文字列}/g Vimコマンド （ノーマルモード） :%s/^/{追加する文

つづきは[こちら](https://vim.blue/vim-replace-line-head-string/)。
[https://vim.blue/vim-replace-line-head-string/](https://vim.blue/vim-replace-line-head-string/)
[Vim問題]文字列を一回だけ置換するコマンドは？
Published: 2019-10-27 05:32:17

この記事では、Vimでプラグインを使わずに「文字列を一回だけ置換する」ためのコマンドについて、ご紹介します。 [解答] :%s/{置換対象文字列}/{置換後文字列}/ Vimコマンド （ノーマルモード） :%s/{置換対

つづきは[こちら](https://vim.blue/vim-replace-a-character/)。
[https://vim.blue/vim-replace-a-character/](https://vim.blue/vim-replace-a-character/)
[vim問題] 単語を検索するコマンドは？
Published: 2019-10-27 05:32:00

この記事では、Vimでプラグインを使わずに「単語を検索する」ためのコマンドについて、ご紹介します。 [解答] *、# Vimコマンド1. 単語を検索する（上から下へ） （検索対象の単語にカーソルを合わせて） * Vimコ

つづきは[こちら](https://vim.blue/vim-word-search/)。
[https://vim.blue/vim-word-search/](https://vim.blue/vim-word-search/)
[vim問題] 上/下から文字列を検索するコマンドは？
Published: 2019-10-27 05:31:43

この記事では、Vimでプラグインを使わずに「文字列を検索する」ためのコマンドについて、ご紹介します。 [解答] /{文字列}、?{文字列} Vimコマンド1. 文字列を検索する（上から下へ） /{文字列} Vimコマンド

つづきは[こちら](https://vim.blue/vim-string-search/)。
[https://vim.blue/vim-string-search/](https://vim.blue/vim-string-search/)
[vim問題] OSコマンドを実行するコマンドは？
Published: 2019-10-27 05:31:27

この記事では、Vimでプラグインを使わずに「OSコマンドを実行する」ためのコマンドについて、ご紹介します。 [解答] !{OSコマンド} Vimコマンド1. OSコマンドを実行する :!{OSコマンド} Vimコマンド2

つづきは[こちら](https://vim.blue/vim-os-command-run/)。
[https://vim.blue/vim-os-command-run/](https://vim.blue/vim-os-command-run/)
[vim問題] インデントを1つずらすキーバインドは？
Published: 2019-10-27 05:31:10

この記事では、Vimでプラグインを使わずに「インデントを1つずらす」ためのキーバインドについて、ご紹介します。 [解答] >> と << Vimキーバインド1. インデントを右にずらす （ノーマル

つづきは[こちら](https://vim.blue/vim-indent-left-right/)。
[https://vim.blue/vim-indent-left-right/](https://vim.blue/vim-indent-left-right/)
[Vim問題]ファイルを自動保存する方法は？
Published: 2019-10-27 05:30:54

この記事では、Vimで「ファイルの自動保存」が実現できるようになる方法について、プラグインを使ってご紹介します。 [解答] 自動保存プラグイン「vim-auto-save」 Vim自動保存プラグイン「vim-suto-s

つづきは[こちら](https://vim.blue/vim-auto-save-plugin/)。
[https://vim.blue/vim-auto-save-plugin/](https://vim.blue/vim-auto-save-plugin/)
[vim問題] AWSでVimのキーバインドが利用できるIDE環境は？
Published: 2019-10-27 05:30:21

この記事では、AWS環境で「Vimのキーバインドで利用できるエディタ/IDE」について、ご紹介します。 [解答] Cloud9 AWS の「コードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE)」であ

つづきは[こちら](https://vim.blue/vim-aws-cloud9/)。
[https://vim.blue/vim-aws-cloud9/](https://vim.blue/vim-aws-cloud9/)
[vim問題] アンドゥ・リドゥのキー操作は？
Published: 2019-10-27 05:30:04

この記事では、Vimでプラグインを使わずに単純な「アンドゥ・リドゥ」をするキーバインドについて、ご紹介します。 [解答] u と Ctrl+r Vimキーバインド1. アンドゥ （ノーマルモード または ビジュアルモード

つづきは[こちら](https://vim.blue/vim-undo-redo/)。
[https://vim.blue/vim-undo-redo/](https://vim.blue/vim-undo-redo/)
[vim問題] 単語単位で移動するキー操作は何種類？
Published: 2019-10-27 05:29:47

この記事では、Vimでプラグインを使わずに「単語単位で移動」をするキーバインドについて、ご紹介します。 [解答] 8種類 Vimキーバインド1. 単語単位の移動 （ノーマルモード または ビジュアルモードで） w （単語

つづきは[こちら](https://vim.blue/vim-word-motions/)。
[https://vim.blue/vim-word-motions/](https://vim.blue/vim-word-motions/)
[vim問題] ESCキーの代わりになるキーバインドは何種類？
Published: 2019-10-27 05:29:31

この記事では、Vimでプラグインを使わずに「ESCキーの代わり」をするキーバインドについて、ご紹介します。 [解答] Ctrl + c または Ctrl + [ Vimキーバインド1. ESC の代替 Ctrl+[ Vi

つづきは[こちら](https://vim.blue/vim-esc-altanative-keybind/)。
[https://vim.blue/vim-esc-altanative-keybind/](https://vim.blue/vim-esc-altanative-keybind/)
[vim問題] Vimのキーバインドを確認するコマンドは？
Published: 2019-10-27 05:29:14

この記事では、Vimでプラグインを使わずに「Vimのキーバインドを確認」するコマンドについて、ご紹介します。 [解答] :map Vimコマンド1. 全キーバインドを表示する :map Vimコマンド2. 設定元のファイ

つづきは[こちら](https://vim.blue/vim-display-keybinds/)。
[https://vim.blue/vim-display-keybinds/](https://vim.blue/vim-display-keybinds/)
[vim問題] 有効な変数（パラメータ）を確認するコマンドは？
Published: 2019-10-27 05:28:58

この記事では、Vimでプラグインを使わずに「 有効になっている変数（パラメータ）を確認 」するコマンドについて、ご紹介します。 [解答] :set Vimコマンド :set 短縮すると :se このVimコマンドでは、 

つづきは[こちら](https://vim.blue/vim-valid-parameters/)。
[https://vim.blue/vim-valid-parameters/](https://vim.blue/vim-valid-parameters/)
[vim問題]開いているファイルの再読み込み（リロード）のコマンドは？
Published: 2019-10-27 05:28:41

この記事では、Vimでプラグインを使わずに「開いているファイルの再読み込み（リロード）」するコマンドについて、ご紹介します。 [解答] :e! Vimコマンド1. 今のバッファの再読込 :edit 短縮すると :e さら

つづきは[こちら](https://vim.blue/vim-file-reload/)。
[https://vim.blue/vim-file-reload/](https://vim.blue/vim-file-reload/)
Reversing A String Using Pointers(References)
Tags: javascript, productivity, beginners
Published: 2019-10-27 05:03:37

In my hunt for algorithm practice, I came across an algorithm that is pretty common known as reversing a string. There are many ways to reverse a string. These many ways commonly get filtered out based on the way either a problem description or an interviewer wants you to solve the problem. At first, not reading the directions, I dove straight into this problem. Having seen this problem before and having minimal knowledge off the top of my head, I began solving this problem by allocating more memory storage and creating a new array with which I can loop through the old array starting from the last element and going down to the first, and pushing all the elements from the string into the new array.
```
var reverseString = function(string) {
    let reversedString = [];
    for (let i = string.length - 1; i >= 0; i--) {
      reversedString.push(string[i])
    }
    return reversedString;
};

reverseString(["h", "e", "l", "l", "0"])

input = ["h", "e", "l", "l", "o"]
output = ["o", "l", "l", "e", "h"]
```

Having figured out the answer on a separate programming IDE, I went ahead and tried submitting the problem. At this point I was hit with a "Incorrect Answer" message. I quickly went back and reread the directions. This time I saw that I was not allowed to allocate memory by creating a new array.

At this point, I knew about the Javascript function .reverse() and how easy it would be to solve the problem with this helper function. Sure enough, I was able to complete the problem and the website was able to accept my answer.

```
var reverseString = function(string) {
    return string.reverse();
};

reverseString(["h", "e", "l", "l", "0"])

input = ["h", "e", "l", "l", "o"]
output = ["o", "l", "l", "e", "h"]
```

After looking at this problem, I imagined having to solve this algorithm problem in an interview scenario, which is definitely a possibility. Having this thought, I knew the possibility of using helper functions such as .reverse() may not always be accepted. 

At this point, I cleared my IDE and starting going at this problem using pointers and modifying the origin array without creating a new one and not having to use helper methods such as .reverse().

I was able to use indexing and having pointers set to the first and last letters and then incrementing towards the middle of the array and swapping the letters.

```
var reverseString = function(string) {
    let left = 0;
    let right = string.length - 1;
    while (left < right) {
        let temp = string[left];
        string[left++] = string[right];
        string[right--] = temp;
    }
};

reverseString(["h", "e", "l", "l", "0"])

input = ["h", "e", "l", "l", "o"]
output = ["o", "l", "l", "e", "h"]
```

This was my little journey coming upon an algorithm and using a few of the many ways that you can solve this problem. Ultimately in the process, I learned about using pointers to help solve problems such as this one. Using pointers is a great way to reverse strings without allocating additional memory with a new array.
Google Firestore ORM package in Python
Published: 2019-10-27 04:33:56

# [FireO](https://github.com/octabytes/FireO) is ORM package in Python for the Google’s Firestore

### A modern and simplest convenient ORM package in Python. FireO is specifically designed for the Google’s Firestore. It implements validation, type checking, relational model logic and much more facilities. FireO is more than just ORM

#### Example Usage

```python
class User(Model):
    name = TextField()
    age = NumberField()


u = User()
u.name = "Azeem"
u.age = 26
u.save()
```

Checkout [FireO](https://github.com/octabytes/FireO) Repository in GitHub and give some Feedback
Junior Developer
Published: 2019-10-27 03:18:22



I will change from my normal technical blog style and give some tips that apply to all levels of devs.

Recently I was hired to build a few projects where the technology and requirements where out of my comfort zone my initial reaction was to turn it down let the more experienced developers who are “better” at it. I spoke it over with a good [friend](https://twitter.com/yechielk)/mentor and he showed me that I can build much more if I would believe in myself. All these  “thoughts” are just imposter syndrome sinking in and destroying you. Yes, you are a Junior Developer and should always listen to what the experienced devs have to say because they actually do know more. **However that doesn’t mean you don’t know how to do it,** you might have to read the docs a little more but stop **you do have mad skills!** .


<a href="https://imgur.com/lAqRK9j"><img src="https://i.imgur.com/lAqRK9j.jpg" title="source: imgur.com" /></a>

Top tips to succeed as a  Junior Developer,


1. Think
2. Think again what needs to be done.
3. Don’t be embarrassed to ask for help even if it might seem obvious.
4. Know what your skills are .
5. What areas can your skills use improvement.
6. Dont just copy and paste code , know what your code should be doing.
7. Find a friend/mentor to help you grow.
8. If a senior Dev is telling you something that you know your right, don't be push-over stay firm but  be respectful
    there is a chance you might only **think your right but are very wrong**.
9. Read Docs not just Stack overflow, you will learn alot more that way.
10. Don’t let anyone ever make you feel your  worth less because you don’t know XYZ 



 To the last one, my response to this is always adding the word **YET**, it usually stops people in their tracks because you have just made it clear to them you not scared to take on new projects/skills. 
 
 
 All the best,

Simcha Greenbaum
How do you test new UI widgets?

Published: 2019-10-27 02:41:04

ell me how you test a brand new UI widget that you just created! It can be anything as long as it is a self-contained, single main purpose unit, UI control, widget, or call it whatever you want. You can go into detail about how you solve the initial idea (do you just write code, or use XML as well? https://19216811.cam/ https://xender.vip/ https://testmyspeed.onl/
2nd Hackathon in the books: #Hacktoberfest 2019
Tags: hacktoberfest, github, git, codenewbie
Published: 2019-10-27 02:25:53



2nd #hackathon in the books!! Thankful for @digitalocean's #Hacktoberfest which taught me:
     - how to run pull requests on @github 
     - how to code in #Markdown #MD
     - how to clone #repositories

#100DaysOfCode #CodeNewbie #Programming #Developing #DigitalOcean #Coding
Checking out NEXT.JS for Server Side Rendering
Tags: nextjs, react, ssr, seo
Published: 2019-10-27 00:35:28

---
title: Checking out NEXT.JS for Server Side Rendering
published: true
description: Learning by trying out Next.js in hopes of SEO glory!
tags: Nextjs, Reactjs, SSR, SEO
---

Ive got a private REACT.JS group with 2500 awesome folks in it!  We moderate against all spam or off topic things, and its a great place to just open up and ask for help, talk about trends, and lately I have been going live in the channel promoting our new YOUTUBE LIVE REACTJS! Channel which is here:

https://TinyURL.com/LearnReactJS

and if interested, our Facebook group is here:
https://facebook.com/groups/LearnReactJS

Ok with the shameless (but necessary) plugs out of the way, here is a link on Youtube (my personal channel for now) while we setup our REACTJS channel, that shows my quick dive into setting up NEXT.JS

I dont claim to be a REACTJS genius, but I will claim to be a great googler and instruction follower who is fiercely persistent at solving things.

Here is the Live video first recorded on facebook (sorry for low quality)
https://youtu.be/LzhXZZrSFwE

and here is the repo of the modified quick start app.
https://github.com/ratherbsurfing/next-js-my-app

Warm regards, and this document will likely be updated to be awesome, for now its a link treasure trove of my journey with REACT.

- Chad
tpadvertisex(3c): a new cool Oracle Tuxedo 12.2 feature that works
Tags: oracle, tuxedo, tpadvertisex
Published: 2021-11-03 06:28:13

---
title: tpadvertisex(3c): a new cool Oracle Tuxedo 12.2 feature that works
published: true
date: 2019-10-27 00:00:00 UTC
tags: oracle,tuxedo,tpadvertisex
canonical_url: http://aivarsk.com/2019/10/27/tpadvertisex-solved/
---

[I wrote before about `tpadvertisex()` and how it did not work for me](/2019/10/26/tpadvertisex/)

It does! The documentation of `tpadvertisex()` [mentions “flags” argument](https://docs.oracle.com/cd/E72452_01/tuxedo/docs1222/rf3c/rf3c.html#2548645) but does not explain it’s usage. I assumed that it’s just a placeholder like some other Tuxedo functions have.

So I was working on some other project creating Python bindings for Oracle Tuxedo and needed a list of all error codes. And there it was in `atmi.h`:

```
/*Flags to tpadvertisex*/
#define TPSINGLETON 0x00000001 /* advertise the singleton service */
#define TPSECONDARYRQ 0x00000002 /* advertise the service on the secondary queue for the MSSQ server*/

```

Turns out this is just a documentation bug. I tried calling `tpadvertisex()` with both flags set and it worked as expected: I got a unique service for servers in MSSQ configuration. But since 2 flag values can be combined I also explored each of them. Until Oracle updates the documentation here are my observations:

- 

`flags=0` - `tpadvertisex()` works exactly like `tpadvertise()` does and advertises services on the main queue.

- 

`flags=TPSINGLETON` - `tpadvertisex()` works like `tpadvertise()` does and advertises service on the main queue _but_ it also checks that the service is unique and no other server advertises it. I get `TPENOSINGLETON` otherwise.

- 

`flags=TPSECONDARYRQ` - `tpadvertisex()` advertises the service on the secondary request queue or returns `TPENOSECONDARYRQ` if it is not configured. It allows for multiple servers to advertise the same service- strange, but maybe there is a use for that. I also observed that MIB returned `TA_RQADDR=UNKNOWN` for these services, probably an indication it’s the secondary request queue.

- 

`flags=TPSINGLETON+TPSECONDARYRQ` - `tpadvertisex()` advertises the service on the secondary request queue or returns `TPENOSECONDARYRQ` if it is not configured. It also checks that the service is unique and returns `TPENOSINGLETON` otherwise. Again, MIB returned `TA_RQADDR=UNKNOWN` for these services.

[Here is a demo of `tpadvertisex()`](https://github.com/fuxedo/tuxedo-examples/tree/master/tpadvertisex)
Diff Among cookie, localStorage, and sessionStorage
Tags: webdev, javascript
Published: 2019-10-26 23:51:47

|Item| Cookie | Local storage | Session storage |
|:-----------|:-----------|:------------|:------------|
|location| Browser | Browser | Browser |
|data type| string | string | string |
|expiration date| can set | semipermanent | until close session/tab |
|capacity| 4KB | 5-10MB (depends on browser) | 5-10MB (depends on browser) |
| send data to server| yes | no | no |
|language| server-side script(mainly) | js | js |

Web Storage = Local storage + Session storage

As you can see, Local storage and Session storage are very similar, but there is one big difference.
That is `expiration data` LocalStorage can keep data until deleting it which means if a user closes a tab, still js code can use LocalStorage data. This sounds useful, but need to select the right data type.

### data persistence
`LocalStorage`: will keep until users delete(probably delete cache) or the app remove/clear

`SessionStorage`: will keep until users close tab/window or the app remove/clear 

`Cookie`: will keep until expires, users delete cookies or the app remove/clear

In terms of Cookie, we need to take care of each browser and time sync between client and server.


As you can see, 2 big differences are data size and sending data to the server.


### How to use Local storage
#### `set value`
```js
localStorage.setItem('myDogName', 'Ral');

// we can store json 
localStorage.setItem('dogs', JSON.stringify(dogData));
```

#### `get value`
```js
const myDog = localStorage.getItem('myDogName');

// of course, we can get data as json
const dogData = JSON.parse(localStorage.getItem('dogs'));
```

#### `remove value`
```js
localStorage.removeItem('myDogName');
```

#### `clear` this removes all data from localStorage
```js
localStorage.clear();
```
 

### How to use Session storage
In this article, I'm using js instead of backend scripts.
#### `set value`
```js
sessionStorage.setItem('myDogName', 'Ral');
```

#### `get value`
```js
const myDog = sessionStorage.getItem('myDogName');
```

#### `remove value`
```js
sessionStorage.removeItem('myDogName');
```

#### `clear` this removes all data from sessionStorage
```js
sessionStorage.clear();
```

### How to use Cookie
#### `set value`
```js
document.cookie = 'my dog name was Ral'
```

### `get value`
```js
const data = document.cookie.split(':');

for(const elm of data) {
  const content = elm.split('=');
  console.log(content[1]);
}

```

### `set expiration`
```js
document.cookie = 'name="removed immediately"; max-age=0';
console.log(document.cookie);

// set 100 seconds
document.cookie = 'name="removed immediately"; max-age=0';
console.log(document.cookie);

```

other options
https://javascript.info/cookie#path


cookies with nodejs
https://www.geeksforgeeks.org/http-cookies-in-node-js/
Persistent Data w/JSON [Live Coding Recap]
Tags: python, beginners, livecoding, twitch
Published: 2019-10-26 22:47:34


## Streamed: 10/22 on Twitch

**Topic(s):** We created a persistent data system for the Twitch Bot
**Language:** [Python](http://bit.ly/nb9kPython), JSON
**Tech & libs used:** [VSCode](http://bit.ly/vscodenb9k), [TwitchIO](https://github.com/TwitchIO/TwitchIO)

⭐ **Star** ⇒ [Project Repository](http://bit.ly/DeepThonkRepo)
💜 **Follow** ⇒ on [Twitch](http://bit.ly/nb9kTwitch) and [GitHub](https://github.com/NinjaBunny9000)
🔴 **Watch** ⇒ [Twitch VOD](https://www.twitch.tv/videos/498295826) (replay)

## During the stream we...
✔ showed off some new features and went over updates to the repo
✔ identify where we already have hardcoded infos
✔ got distracted by a bug with the tts system
✔ took a break and ate sum noms
✔ FEEXED THE BUG
✔ created a json settings file for persistent data
✔ answered some viewer's question
✔ setup a config obj and interfaced w/it
✔ made tts, sfx, and shoutouts enable/disable settings persistent
✔ moved the FAQ to json & generated commands from it
✔ tried to get it writing the commands... but THINGS BROKE
✔ prime raided - 1337H4X
✔ fixed the thing! FAQ's are writing to JSON now! yay
✔ broke another thing - will tackle next stream
A (Fairly) Exhaustive List of Books on WordPress Development.
Tags: wordpress, books
Published: 2019-10-26 22:33:39

There are various lists around the internet of books on WordPress Development but I found them to be largely incomplete and was frustrated by how some of them seemed to suggest that such-and-such a book was relatively new when it was, in fact, quite old.

So I've created a list of books on WordPress Development that I think / hope is significantly more extensive than anything I found elsewhere on the web.

I've included only books published in 2011 and following. Even this is quite a ways back, but there isn't an overabundance of books on WP so looking this far back is necessary.

I'd love to hear your thoughts, you can find the complete list here:
http://wpdeveloping.com/wordpress-developer-books/

Have you read any of these books? Which do you think are best? Does one cover topics not covered in another book? Are their books I should add to the list that aren't on it currently?

Thanks in advance!
How did you learn how to code?
Tags: discuss, codenewbie, learning
Published: 2019-10-26 22:02:51

How did you learn how to code? 

Was it because you went to university, a bootcamp, youtube or what?

I learned Visual Basic 6 via youtube when I was 15. Then I started to get into HTML and CSS. One day it was time for me to go to college and I started my Bio-Nanotechnology degree.At that time when I was in school for that degreee were using C++ to code genes. Sadly, the major was heavily focus on Chemistry and not much programming. 

One day when I was talking to my parents my mom said "I don't know why are you in that major, if you love computers. You should change to something more focused on that". My momma was damn right! I changed my major to Computer Science got a scholarship to study in the USA, 10 years later here I am still doing what I love, code!

Thanks momma for helping my change paths in my career and being so supportive. Love you mom!


Now when I try to learn a new technology I usually jump in to a course on Udemy. When I try to learn something more specific to an specific technolgoy, I do dev.to, or any article I see on the internet.


<img src="https://thepracticaldev.s3.amazonaws.com/i/5a87eog40zvcsimuaew4.png" />