teleren/devto huggingface dataset:
Rentannya masyarakat akan informasi yang bersifat hoax
Tags: magangkomatiksrd
Published: 2022-01-24 16:04:51

Di era digital seperti saat ini, teknologi berkembang dengan sangat cepat. Dan dengan adanya perkembangan tersebut, seluruh informasi yang ada didunia dapat kita terima hanya dalam waktu singkat. Dalam waktu 1 menit saja, ribuan atau bahkan jutaan informasi dikirim dan disebarluaskan ke seluruh dunia. Bagaimana hal tersebut bisa terjadi? Untuk menjawab pertanyaan tersebut sebenarnya cukup mudah, kita hanya perlu memperhatikan lingkungan yang ada disekitar kita. Bisa kita lihat bahwa, setiap elemen yang ada di masyarakat baik dari kalangan anak kecil hingga orang tua memiliki gadget atau perangkat pribadinya masing-masing dan Biasanya disetiap perangkat tersebut setidaknya terdapat minimal 1 atau 2 aplikasi sosial media yang terinstal. Dan mereka biasa menggunakan minimal 2 jam sehari untuk aktif di sosial media, mulai dari sekedar mengutarakan opini pribadi, menyebarluaskan informasi, atau bahkan hanya sekedar mencari hiburan semata.

Di zaman sekarang, masyarakat lebih memilih mencari informasi dengan menggunakan mesin pencarian _Google_ atau bahkan dari sosial media. Cara tersebut dinilai lebih efisien dan menghemat waktu ketimbang harus meononton acara berita di televisi. Namun dibalik kemudahan dalam mengakses informasi tersebut, terkadang informasi yang kita baca belum tentu memiliki data yang konkrit dan juga sumber yang jelas. Sering sekali kita menjumpai informasi yang sebenarnya sudah pernah dibuat beberapa tahun yang lalu, namun diubah seolah-olah informasi tersebut terjadi baru-baru ini. Dan kebanyakan orang hanya membaca judulnya saja kemudian langsung membagikannya ke kerabat terdekat lainnya tanpa membaca keseluruhan isi maupun mengecek kebenaran informasi tersebut. Lalu bagaimana cara kita dalam menyelesaikan permasalahan tersebut?
How to Install Brave Web Browser on Ubuntu Linux Step-by-Step – 2022
Tags: uncategorized, brave, braveinstallationlin, web
Published: 2022-02-22 15:15:54

---
title: How to Install Brave Web Browser on Ubuntu Linux Step-by-Step – 2022
published: true
date: 2022-01-24 16:01:58 UTC
tags: Uncategorized,brave,braveinstallationlin,web
canonical_url: https://fossnaija.com/brave-browser-installation/?utm_source=rss&utm_medium=rss&utm_campaign=brave-browser-installation
---

In this video, I would show you how to install Brave web browser in Ubuntu Linux in a simple and easy step-by-step method.

Brave is a free and open-source web browser that is based on the Chromium web browser. It is cross-platform i.e. it is available for Windows, Linux and macOS. Brave is a privacy-focused browser, which automatically blocks online advertisements and website trackers in its default settings. It also provides users with the choice to turn on optional ads that pay users for their attention in the form of Basic Attention Tokens (BAT) cryptocurrency. Users can then send contributions to websites and content creators, which support BAT in the form of tips along with the ability to keep the cryptocurrency they earned.

Now ENJOY!!!



{% youtube tqHsSp-uWA8 %}



PLEASE LIKE, SHARE AND SUBSCRIBE.

**Happy Linux’NG!**

The post [How to Install Brave Web Browser on Ubuntu Linux Step-by-Step – 2022](https://fossnaija.com/brave-browser-installation/) appeared first on [Foss Naija](https://fossnaija.com).
Kotlin React Hooks with Coroutines
Tags: kotlin, react
Published: 2022-01-24 15:59:10

I've been trying my hand at [full-stack Kotlin](https://play.kotlinlang.org/hands-on/Full%20Stack%20Web%20App%20with%20Kotlin%20Multiplatform) with React and ran into a sticky situation with `useState` and coroutines. For those with more knowledge of React, this may seem obvious, but it took me a while to work through.

My initial component was attempting to update state from within a coroutine loop:
 ```kotlin
import react.*
import kotlinx.coroutines.*
import react.FC
import react.dom.html.ReactHTML.div
import react.dom.html.ReactHTML.h1

private val scope = MainScope()

val counterComponent = FC<Props> {
    var counter by useState(0)

    useEffectOnce {
        scope.launch {
            while (true) {
                counter++
                delay(1000)
            }
        }
    }

    div {
        h1 { +"Count: $counter" }
    }
}
```

The result is a component that displays '0' for a second and then continues to display '1' and never increases. After many `println`, `useCallback`, and Google searches I found [this](https://reactjs.org/docs/hooks-faq.html#why-am-i-seeing-stale-props-or-state-inside-my-function) from the React FAQs. The behavior of the `alert` is the same that I was seeing in my coroutine. The counter was being incremented, but it was always being incremented from '0' to '1'. After reading up on `useRef` and poking around the React FAQ more, I found [the solution](https://reactjs.org/docs/hooks-faq.html#is-there-something-like-forceupdate).

```kotlin
import react.*
import kotlinx.coroutines.*
import react.FC
import react.dom.html.ReactHTML.div
import react.dom.html.ReactHTML.h1

private val scope = MainScope()

val counterComponent= FC<Props> {
    val (_, forceUpdate) = useReducer<Int, Int>({ x, _ -> x + 1 }, 0)
    val counter = useRef(0)
    val update = useCallback {
        counter.current = (counter.current ?: 0) + 1
        forceUpdate(0)
    }

    useEffectOnce {
        scope.launch {
            while (true) {
                update()
                delay(1000)
            }
        }
    }

    div {
        h1 { +"Count: ${counter.current}" }
    }
}
```

Kotlin has some additional functions in `useRefState`, `useRefCallback`, and `useRefValue` which may be helpful, but I haven't figured out how to use them yet.
MariaDB ROW_NUMBER() ช่วยได้
Tags: mariadb, mysql, database, ไทย
Published: 2022-01-24 15:56:06

---
title: MariaDB ROW_NUMBER() ช่วยได้
published: true
description: การกำหนดลำดับใหม่อย่าง priority ใน DB ด้วย ROW_NUMBER() และ PARTITION BY
tags: mariadb,mysql,database,ไทย
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vaczdx1nu22k2h048md7.jpeg
---

วันนี้มาแชร์ปัญหาที่เจอตอนทำงานและวิธีแก้ไข เรื่องมีอยู่ว่า เรามีข้อมูลที่ต้องแก้ไข ซึ่งข้อมูลชุดนี้มีการจัดเรียง priority ตามลำดับแบ่งตาม group id ต่างๆ และดาต้าเบสที่เราใช้คือ MariaDB

### ความเป็นมา

ปัญหาที่เจอเป็นเรื่องของข้อมูลที่ผิดเพี้ยนไป เนื่องจากตัวระบบมีการอัพเดตข้อมูลผิดพลาด ตัวอย่างชุดข้อมูลจะเป็น

Table `property_informations`

|id|name|group_id|priority|
| --- | ------------ |:------:|-----:|
|1|Condo floor 1|1|1|
|2|Condo floor 2|1|2|
|3|Condo floor 3|1|2|
|4|House room 1|2|1|
|5|House room 2|2|1|
|6|House room 3|2|1|
|7|House room 4|2|1|

ตอนนี้ปัญหาคือ ข้อมูลมีการเรียง `priority` ผิดพลาด ซึ่งถ้าชุดข้อมูลที่มีปัญหามีน้อย เราก็สามารถที่จะแก้ไขข้อมูลแบบ manual ได้ไม่เสียเวลานัก แต่เหตุการณ์จริงคือ ชุดข้อมูลที่ต้องการแก้ไขมีเยอะๆๆๆ มาก

โจทย์คือ จากชุดข้อมูลที่เรามี เราต้องการเรียง `priority` ใหม่ทั้งหมดให้ถูกต้อง โดยอิงจาก `group_id` และเรียง order ตาม `id` แบบ asc ได้เลย

น้อง บูมสุดหล่อ ที่ทำงานด้วยกันแนะนำ `ROW_NUMBER()` เพื่อนำมาใช้แก้ไขปัญหา ซึ่งก็ได้ผลดีและเร็วมากทั้งกับการเช็คข้อมูล และ การแก้ไข 

### SELECT QUERY เริ่มต้นการสร้าง Query เพื่อตรวจสอบ

```sql
SELECT 
	property_informations.id,
    property_informations.name,
	property_informations.group_id,
	property_informations.priority AS current_priority,
	sub_property_informations.new_priority
FROM property_informations
INNER JOIN (
	SELECT 
		ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY id asc) new_priority,
		id
	FROM property_informations
) sub_property_informations ON sub_property_informations.id = property_informations.id
```
เมื่อเรา run คำสั่ง sql เราจะผลลัพธ์เพื่อตรวจเหมือนในตาราง

|id|name|group_id|current_priority|new_priority|
|--|-----|--|--|--|
|1|Condo floor 1|1|1|1|
|2|Condo floor 2|1|2|2|
|3|Condo floor 3|1|2|3|
|4|House room 1|2|1|1|
|5|House room 2|2|2|2|
|6|House room 3|2|2|3|
|7|House room 4|2|2|4|

เมื่อดูที่ column `current_priority` และ `new_priority` จะเห็นได้ว่า ส่ิงที่เราต้องการที่จะอัพเดตหน้าตาจะเป็นอย่างไร

### UPDATE QUERY จัดการอัพเดตรวดเดียวไปเลย

```sql
UPDATE
  property_informations
  JOIN 
    ( 
      SELECT id, ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY id asc) AS new_priority 
      FROM property_informations
    ) AS sub_property_informations
  ON sub_property_informations.id = property_informations.id
SET 
  property_informations.priority = sub_property_informations.new_priority;
```

เมื่อรัน update query ด้านบน ข้อมูลจะถูกอัพเดตเป็น

|id|name|group_id|priority|
| --- | ------------ |:------:|-----:|
|1|Condo floor 1|1|1|
|2|Condo floor 2|1|2|
|3|Condo floor 3|1|3|
|4|House room 1|2|1|
|5|House room 2|2|2|
|6|House room 3|2|3|
|7|House room 4|2|4|

เท่านี้เราก็สามารถแก้ไขข้อมูลปริมาณเยอะๆ ได้ในคราวเดียว แต่เวลาใช้ก็อย่าลืม Backup ข้อมูลไว้ก่อนด้วยนะครับ
Transitioning from the Army into Tech
Tags: beginners, codenewbie, motivation, devjournal
Published: 2022-01-24 15:39:37

## My Short Story

Serving full time as a Soldier and teaching myself how to code is no easy journey to begin. The summer of 2021, a couple of youtube videos, and the weight of having another baby inspired me to make an early decision to change careers. Overall, the opportunity to work remote, salary, and quality of life was the hook to break into tech.

## What is my journey so far

### Choosing my path

Once I decided I wanted to break into tech, I researched, googled, and youtube what the easiest, lucrative, and high salary jobs. For a beginner, I decided to go with being a front end developer. I fell upon The Odin Project because the cost, FREE! I ended up making it to the JavaScript section in Foundations and felt discourage to continue due to the difficulty of understanding functions.

Now, I am currently engaged in the #100Devs cohort hosted by an excellent teacher Leon Noel. Leon is currently teaching a 30 week bootcamp for free for people that were affected by the pandemic or wanting to break into tech. I realized that I needed a course with structure, and this is my time to shine!

### Finding a Village

Because I enrolled into the #100Devs cohort, I was able to connect with hundreds of other people who have the same mindset of not being satisfied with their careers and wanting to make a change for themselves. I discovered being surrounded by a village pushes me to work harder, not give up so easily, and help others around me achieve their goals. Once you find your village, there is no turning back!

### Are you thinking about it

My overall advice for those on the fence, JUST DO IT! It does not hurt to dive into the abyss of the unknown like coding. You will never know if it suits you if you do not try. Start today, stay disciplined, show grit, join a community, and most importantly, trust the process.
Modifiers in solidity
Tags: solidity, web3, blockchain, function
Published: 2022-01-24 15:05:58

---
title: Modifiers in solidity
published: true
description: Modifiers
tags: #solidity #web3 #blockchain #function
---

Modifiers can be used to change the behavior of functions in a declarative way. 
For example, you can use a modifier to automatically check a condition prior to executing the function. they can be used for:

1. Restrict access
2. Validate inputs
3. Guard against reentrancy hack

- use the `modifier` in the declaration of a function.

 **Modifier to check that the caller is the owner of the contract**
```sh
modifier onlyOwner {
   require(msg.sender == owner);
     // Underscore is a special character only used inside
     // a function modifier and it tells Solidity to
     // execute the rest of the code.
   _;
 }
```

 **Modifiers can take inputs. This modifier checks that the address passed in is not the zero address.**
```sh
 modifier validAddress(address _addr) {
       require(_addr != address(0), "Not valid address");
       _;
   }
```
```sh 
function changeOwner(address _newOwner) public onlyOwner validAddress(_newOwner) {
       owner = _newOwner;
   }
```
 **Modifiers can be called before and / or after a function.This modifier prevents a function from being called while,it is still executing.**
```sh
 modifier noReentrancy() {
   require(!locked, "No reentrancy");
     locked = true;
     _;
     locked = false;
 }

 function decrement(uint i) public noReentrancy {
   x -= i;
   if (i > 1) {
     decrement(i - 1);
   }
 }
```
How to install kitty terminal emulator
Tags: bash, codenewbie, beginners, tutorial
Published: 2022-01-24 15:02:45

Kitty is a free open source GPU based terminal emulator for Linux and MacOS. It uses lower system resources and threaded rendering to run kitty faster. It comes with mouse , uni-code, true-color and focus tracking support. It also comes with extensions support. Using this you can enable some advanced features in your kitty terminal. You can tile multiple kitty terminal windows side by side. It also comes with graphics, scripts, startup sessions and shell prompt support.

open up the terminal then: 

`curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
ln -s ~/.local/kitty.app/bin/kitty ~/.local/bin/
cp ~/.local/kitty.app/share/applications/kitty.desktop ~/.local/share/applications`
`sudo apt update
sudo apt install kitty
`
[Buy me a coffee](https://www.buymeacoffee.com/tawhid)
Colaboratoryでスクショ取るコードメモ
Tags: python, colaboratory
Published: 2022-01-24 14:58:44

```
# 日本語フォントインストール
!apt-get -y install fonts-ipafont-gothic
!apt-get -y install fonts-ipafont-mincho

# seleniumインストール
!apt-get update
!apt install chromium-chromedriver
!cp /usr/lib/chromium-browser/chromedriver /usr/bin
!pip install selenium

# datetime
import datetime

# ライブラリインポート
from google.colab import files
import time
import shutil
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Chromeヘッドレスモード起動
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver',options=options)
driver.implicitly_wait(10)

# 対象URL
# kw ='結婚指輪'
urls = ['https://gamepicks.tokyo','https://twitter.com'] # ,''を追加で複数ページいける


# ファイル名接頭辞
fileNamePrefix = "screen"

# ウインドウ幅指定
# 初期値: False, スマホ: 375
# windowSizeWidth = False
windowSizeWidth = 1200

# ウインドウ高さ指定
# 初期値: False
windowSizeHeight = False
# windowSizeHeight = 1000

# 連番初期値
shotNum = 1

# ダウンロードフォルダ作成
# folderCheck = os.path.exists('screen-shot')
# if folderCheck:
 # shutil.rmtree('screen-shot')
# os.mkdir('screen-shot')

# 繰り返し処理
for url in urls:
  # パス指定
  folderPath = 'drive//MyDrive/python/ss/' + fileNamePrefix + '-' + str(windowSizeWidth) + '-' if windowSizeWidth else 'screen-shot/' + fileNamePrefix + '-'

  # サイトURL取得
  driver.get(url)
  WebDriverWait(driver, 15).until(EC.presence_of_all_elements_located)
  
  # ウインドウ幅・高さ指定
  windowWidth = windowSizeWidth if windowSizeWidth else driver.execute_script('return document.body.scrollWidth;')
  windowHeight = windowSizeHeight if windowSizeHeight else driver.execute_script('return document.body.scrollHeight;')
  driver.set_window_size(windowWidth, windowHeight)

  # スクロール処理
  driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')

  # 処理後一時待機
  time.sleep(3)

  # ファイル連番追加
  #shotNum += 1
  #shotNumStringified = str(shotNum)

  # 取得日時
  now = datetime.datetime.now()
  dt_now = str(now)

  # スクリーンショット格納
  driver.save_screenshot(folderPath + dt_now + '.png')

  # サーバー負荷軽減処理
  time.sleep(1)

# ブラウザ稼働終了
driver.quit()

```
Thrive Apprentice 4.0 WordPress-LMS Review
Tags: wordpress, lms
Published: 2022-01-24 14:53:03

---
title: Thrive Apprentice 4.0 WordPress-LMS Review
published: true
date: 2022-01-24 14:53:03 UTC
tags: WordPress,lms
canonical_url: https://kursprofi.com/review/thrive-apprentice/
---

![Thrive Apprentice](https://kursprofi.com/wp-content/uploads/2022/01/thrive-apprentice-desktop.png)

[Thrive Apprentice](https://www.reddit.com/r/j0e/comments/sc9toc/thrive_apprentice_40/) ist ein WordPress-Kursmanagementsystem (LMS), mit dem Schüler/innen ihr Lernen einfach und unkompliziert verwalten können. Außerdem können Lehrkräfte damit ihre eigenen Kursinhalte erstellen und kontrollieren, worauf sie Zugriff haben.

Was machst du in Bezug auf Lernmanagementsysteme? Viele Menschen verbinden dieses Wort mit dem veralteten Learning Management System, das es seit den 90er Jahren gibt. Diese Software wird in vielen Schulen eingesetzt, um den Lernprozess zu verwalten und die Fortschritte der Schüler/innen und das Gelernte im Detail zu erfassen.
data manipulation: jq vs Miller
Tags: productivity
Published: 2022-01-24 14:52:40

Recently, I was confronted with a 700mb json file which I needed to manipulate and explore in order to find the source of a bug. I needed to find any relationships between an occasionally missing field, and the other properties. Finding a pattern would let me focus my debugging efforts.

My first attempt was actually a simple Node.js script which would fs.readFile and use vanilla JS to map/reduce/summarize the JSON. This was a good place to start, as it was fairly easy to launch the Node REPL and to `.save` and `.load` as needed between sessions. However, I didn't like the wait associated with the single threaded parsing of the JSON file. While it was the most flexible option, it felt the most manual.

My usual tool for dealing with JSON, {% github stedolan/jq %} is a workhouse written in C which has a variety of useful verbs for parsing and summarizing JSONs with one liners.
In this case, jq is fast, but still single threaded.

Instead, I turned to a relatively newer tool {% github johnkerl/miller %} which serves a similar purpose to jq. When I tried miller, I noticed that it's count-distinct verb was quite fast. I read the Miller documentation, and discovered on https://miller.readthedocs.io/en/latest/cpu/ that Miller is often multi-threaded as a consequence of it's implementation in Go and use of channels. This can give Miller the edge over jq for certain tasks where concurrency can make a difference.

I plan on diving deeper into Miller, especially since it can handle data in CSV, JSON, or other formats. Also, the then-chaining launching separate goroutines sounds like a big win for more complicated data manipulation flows.

Another tool I tried using is sqlite and it's json extension combined with it's readfile extension. This was inspired by this question / answer I found {% stackoverflow 62606697 %} and ended up being a fast way to run sql on my JSON file. By running an sql statement in the sqlite3 REPL like this ```sql
INSERT INTO my_table SELECT 
  json_extract(value, '$.user_agent')
FROM json_each(readfile('my_data.json'));
``` 
I was able to create an SQL table based on the JSON keys I was interested in from each line. However, it wasn't a great fit for my data, as many lines are missing common keys, and I didn't want sparse rows. Also, I would have to write my own verbs in SQL, whereas Miller provides many verbs out of the box. However, sqlite3 was quite fast to provide an answer, probably as a result of it's query optimizations.

I was interested in trying {%github duckdb/duckdb %} for the same reason I tried sqlite3, but ultimately didn't pursue it since I had the json extension was easier than converting the json to csv first, and then importing to duckdb later.
API Request ⚡ to Local JSON File 📃 in React ⚛️
Tags: javascript, webdev, programming, tutorial
Published: 2022-01-24 14:43:50

One of the most used thing in React ⚛️ is API Request to a remote Server. Since APIs have become part and parcel of our daily life, they are involved in almost everything we do on the world wide web. An API request occurs when a developer adds an endpoint to a URL and makes a call to the server.

---

A basic API Request in React/JavaScript using `axios` looks like this-

```js
axios
  .get("https://api.example.com/users/")
  .then((res) => console.log(res.data))
  .catch((err) => console.log(err));
```

In the above JavaScript (axios) syntax, the API Request has been made to `https://api.example.com` **Domain** (also knows as **BASE URL**) and `/users/` **end-point**.

---

## Request to Local JSON File 📃

Making GET Request to a Local JSON File is really simple, but there are few prerequisites you need to make sure, they are followed.

> Make sure, JSON File is accessible through the server, ie. the file should be in `public/` folder.

Create `public/db/users.json`

```js
[
  {
    id: 1,
    first_name: "John",
    last_name: "Doe",
  },
  {
    id: 2,
    first_name: "Jane",
    last_name: "Doe",
  },
  {
    id: 3,
    first_name: "Johny",
    last_name: "Doe",
  },
];
```

**NOTE:** Check if the JSON File is accessible at [http://localhost:3000/db/users.json](http://localhost:3000/db/users.json) when the server is running.

---

This time, if you want to make GET request to the JSON File, do it like this-

```js
axios
  .get("/db/users.json")
  .then((res) => console.log(res.data))
  .catch((err) => console.log(err));
```

---

## React Example

> Create React App

```bash
$ npx create-react-app my-app

---> 100%

$ cd my-app
```

> Install `axios`

```bash
$ yarn add axios
```

> Add JSON File `public/db/users.json`

```js
[
  {
    id: 1,
    first_name: "John",
    last_name: "Doe",
  },
  {
    id: 2,
    first_name: "Jane",
    last_name: "Doe",
  },
  {
    id: 3,
    first_name: "Johny",
    last_name: "Doe",
  },
];
```

> Update `App.js`

```js
import { useEffect, useState } from "react";
import axios from "axios";

function App() {
  const [users, setUsers] = useState([]);

  useEffect(() => {
    axios
      .get("/db/users.json")
      .then((res) => setUsers(res.data))
      .catch((err) => console.log(err));
  }, []);

  return (
    <div>
      <ul>
        {users.map((user, index) => (
          <li key={index}>
            #{user.id}: {user.first_name} {user.last_name}
          </li>
        ))}
      </ul>
    </div>
  );
}

export default App;
```

> Run the development server

```bash
$ yarn start
```

![JS/React/JSONFile](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wvhifd8rmc9c6lur6xo9.png)

---

I hope, you guys liked this quick tutorial `API Request ⚡ to Local JSON File 📃 in React ⚛️`. If so, then please don't forget to drop a Like ❤️

And also, help me reach **1k Subscribers** 🤩, on my [YouTube channel](https://www.youtube.com/channel/UCCO4jIqmQVFDmVeeaAO5obA).

Happy Coding! 😃💻
Student Registration Form In Bootstrap 5
Tags: bootstrap, css, html, webdev
Published: 2022-01-24 14:40:46

Student Registration Form is for students where they can submit data using form fields. So here we made this responsive Boottrspa 5 Student Registration Form with the help of CSS3 and HTML5.

In this form, we use bootstrap 5 components forms and tables, buttons with utilities class. Also, we used a grid for these forms with the best colour combinations.

Make it yours now by using it, downloading it, and please share it. we will design more elements for you.

**[Source Code](https://w3hubs.com/student-registration-form-in-bootstrap-5/)**
Don't Miss!! Watch Data Science 📖 Full Course Video by Top Industry Experts
Published: 2022-01-24 13:51:36

Watch now: https://www.youtube.com/watch?v=a5KmkeQ714k
#datascience #datasciencetraining #datasciencecareers #datasciencecourse 
In this video on the Data Science course, you will learn what is Data Science, Types of Data Analytics, Life Cycle of Data Science, Data Visualisation, How to Create and Test a Model, Statistics for Data Science, and Probability, R programming, Machine learning, Numpy, Hands-on demo on Book Recommendation System, Skills Required to Become a Data Scientist, Trends in Data Science Science, Data Science vs Data Analytics, Data Science Interview Questions. 
This is a must-watch session for everyone who wishes to learn data science and make a career in it. [](https://www.youtube.com/watch?v=a5KmkeQ714k)