teleren/devto huggingface dataset:
PHP MVC
Tags: php, help
Published: 2020-07-11 17:27:34

So I got an internship somewhere and assigned a project that uses php...my knowledge of PHP is very basic to be honest and one of the specifications for implementing the project is using MVC.

I am familiar with the concept but I have tried researching and writing some code for the login and registration but every time I want to connect it to a database, a sea of errors is what I get.

I have tried looking for content online that can clearly explain the concept with easily understandable code but nothing so far.
Such are the struggles of a programmer...😞
Single-layer Neural Networks in Machine Learning (Perceptrons)
Tags: python, machinelearning, devops, codenewbie
Published: 2020-07-11 17:11:02

### Introduction

The study of the human brain is thousands of years old. The first step toward artificial neural networks came in 1943 when Warren McCulloch, a neurophysiologist, and a young mathematician, Walter Pitts, wrote a paper on how neurons might work. They modelled a simple neural network with electrical circuits.

### Perceptrons 

Perceptron is a binary linear classification algorithm. It's a supervised type of machine learning and the simplest form of neural network. It's a base for neural networks. So, if you want to know how neural network works, learn how perception works.

### Component of Perceptrons
These are the major components of perceptrons.

 1. Input Value
 2. Weight and Bias
 3. Net Sum
 4. Activation Function

***Input Value***:- Input Values are the feature of the Data set.

***Weight and Bias***:- Weights are the values that are computed over the time of training the model. Initial we start the value of weights with some initial value and these values get updated for each training basis of the error function.

<div class="container text-center my-3">
<img src="https://raw.githubusercontent.com/DrakeEntity/project-Image/master/1_8VSBCaqL2XeSCZQe_BAyVA.jpeg" class="img-fluid border border-primary text-center" alt="weight and bias in the neural  network"/>
</div>

Bias is like the intercept added in a linear equation. It is an additional parameter in the Neural Network which is used to adjust the output along with the weighted sum of the inputs to the neuron.It helps in training the model faster and with better quality.

***Net Sum***:- The net sum is the sum of the multiplication of input and weight.

{% katex %}
Net Sum = Σ  w_i. x_i
{% endkatex %}

***Activation Function***:- Activation function is used to make neural network non-linear. It's limit the output between 0 and 1.

<div class="container text-center my-3">
<img src="https://raw.githubusercontent.com/DrakeEntity/project-Image/master/images.jpeg" class="img-fluid border border-primary text-center" alt="Activation function in neural network">
</div>


Any comments or if you have any question,  **write it in the comment.**

Happy to be helpful.
My favorite Rap producers with code
Tags: rap, music, hiphop, oop
Published: 2020-07-11 16:53:32

I like Rap, I tried be a beatmaker at 16, in 2012 I started programming. In this article I mix Rap with programming. Let's start.

My favorite rap producers:

* 9th Wonder.
* Apollo Brown.
* DJ Premier.

All these artists create boom bap beats, so they beats share a common type of music. A interface can represent this:

```php
// Author: Raphael da Silva
interface BoomBapProducer
{
    public function makeABeat();
}
```
All producers can implement the same interface:

```php
// Author: Raphael da Silva

class 9thWonder implements BoomBapProducer
{

    public function makeABeat()
    {
        echo 'Classic soul samples.';
    }

}

class ApolloBrown implements BoomBapProducer
{

    public function makeABeat()
    {
        echo 'Hard drums and soul sample.';
    }

}

class DJPremier implements BoomBapProducer
{

    public function makeABeat()
    {
        echo 'Classic NY east coast style.';
    }

}
```

I don't speak english (I try write to share ideas), please be nice with me and forgive my mistakes.
Actions Builder vs. Dialogflow: Feature availability
Tags: actionsongoogle, dialogflow, actionsbuilder, googleassistant
Published: 2020-07-11 16:46:00

Google had recently released new tool for building new Actions - [Actions Builder](https://developers.googleblog.com/2020/06/announcing-actions-builder-actions-sdk.html). It replaces Dialogflow and is a default tool to create new Actions from now on, it also comes with a new [SDK library](https://github.com/actions-on-google/assistant-conversation-nodejs). 

I recommend you try it out with new [Actions on Google Codelabs](https://codelabs.developers.google.com/?cat=Assistant)!

However, since it was released only a few weeks ago, many features we are used to from Dialogflow are missing. This could be a breakpoint for you if you are deciding what to use for your next Action. 

I created [comparison spreadsheet](https://docs.google.com/spreadsheets/d/1LTsmi1cekrSgNdWMbVEZ9YYeIMYINtB4K-lGN1m08Yo/edit#gid=0) with a list of features and their availability. It will be updated when the feature availability changes or when there are new features for each platform. 

If the feature is marked as unavailable, that doesn't mean it will stay that way. Actions Builder is still in active development and the table reflects the current state. It should help you to decide if you are starting a new project today, but features could change when you create the next one, so I recommend bookmarking the spreadsheet for future use :) 

[Actions on Google platform comparison spreadsheet](https://docs.google.com/spreadsheets/d/1LTsmi1cekrSgNdWMbVEZ9YYeIMYINtB4K-lGN1m08Yo/edit)

Thanks [@afirstenberg](https://twitter.com/afirstenberg) for helping me with this!
Enjoy #AoGDevs!
POO - Compondo os vingadores (da marvel) com objetos
Tags: ptbr, braziliandevs, marvel, interface
Published: 2020-07-11 16:19:03

Criar objetos do mesmo tipo e usá-los para compor outros objetos é algo que permite juntar todos os objetos em uma composição única que faz algo que reune todos eles. Para ilustrar essa união eu irei usar os hérois da Marvel que formam os vingadores.

Primeiramente, será criada uma interface para representar esses heróis e seus atos:

```php
<?php

/**
 *
 * @author Raphael da Silva
 *
 */
interface Vingador
{

    public function avante();

}
```

Depois disso serão criados os heróis que são implementações diferentes dessa mesma interface que representa cada um dos heróis. Segue o código:

```php
<?php

/**
 *
 * @author Raphael da Silva
 *
 */
class CapitaoAmerica implements Vingador
{

    public function avante()
    {

        return 'Jogar o escudo';

    }

}

class PanteraNegra implements Vingador
{

    public function avante()
    {

        return 'Usar a tecnologia de Wakanda e artes marciais.';

    }

}

class HomemFormiga implements Vingador
{

    public function avante()
    {

        return 'Encolher com a tecnologia do Hank Pym.';

    }

}

class DoutorEstranho implements Vingador
{

    public function avante()
    {

        return 'Projetar magia do plano astral.';

    }

}

```

Depois de ter vários objetos do mesma da mesma interface (ou seja, do mesmo tipo), será criada uma classe que é composta por todos esses objetos juntos e representa a junção de todos eles, no exemplo desse artigo essa classe junta todos os heróis e, com isso, forma os Vingadores, já que ela é composta por todos os heróis juntos (composta é a palavra-chave aqui).

Segue a classe que representa os Vingarores:

```php
<?php

/**
 *
 * @author Raphael da Silva
 *
 */
class Vingadores
{

    private $vingadores;

    public function __construct(
        Vingador ...$vingadores
    ){

        $this->vingadores = $vingadores;

    }

    public function avanteVingadores()
    {

        foreach($this->vingadores as $vingador){
            echo $this->vingador->avancar(), PHP_EOL;
        }

    }

}

```

Para usar as classes o código e juntar tudo na prática ficaria da seguinte forma:

```php
<?php

$vingadores = new Vingadores(
    new CapitaoAmerica,
    new PanteraNegra,
    new HomemFormiga,
    new DoutorEstranho
);

$vingadores->avanteVingadores();
```

Agora todos os hérois em formação podem ir avante!

***

* O autor do desenho do banner é o artista [Rafael Grampá](https://pt.wikipedia.org/wiki/Rafael_Gramp%C3%A1).
POO - Contando histórias com uma interface
Published: 2020-07-11 16:15:04

Criei um repositório no Github com o intuíto utilizar interfaces para mostrar que existem várias formas de contar uma história. Cada tipo de mídia é uma implementação diferente da interface `MidiaParaContarHistoria` criada para contar uma história independente da mídia escolhida. Segue a interface:

```php
<?php

namespace ContarHistoria;

/**
 *
 * @author Raphael da Silva
 *
 */
interface MidiaParaContarHistoria
{

    public function contarHistoria();

}
```

Como a história é contada não é importante, pois o que importa é a história ser contada e não qual tipo de mídia que será utilizada para fazer isso. O tipo de mídia é um detalhe de implementação e, portanto, não é o mais importante. O que é mais importante é o que deve ser feito: contar uma história.

### Implementações

Segue a implementação da interface para contar a história com um filme:

```php
<?php

namespace ContarHistoria\Midias;

use ContarHistoria\MidiaParaContarHistoria;

/**
 *
 * @author Raphael da Silva
 *
 */
class HistoriaEmFilme implements MidiaParaContarHistoria
{

    public function contarHistoria()
    {

        echo 'Usar um filme para contar uma história.';

    }

}
```

Segue a implementação da interface para contar a história com um quadrinho:

```php
<?php

namespace ContarHistoria\Midias;

use ContarHistoria\MidiaParaContarHistoria;

/**
 *
 * @author Raphael da Silva
 *
 */
class HistoriaEmQuadrinhos implements MidiaParaContarHistoria
{

    public function contarHistoria()
    {

        echo 'Usar um quadrinho (aka comicbook) para contar história.';

    }

}
```

Segue a implementação da interface para contar a história com um livro:

```php
<?php

namespace ContarHistoria\Midias;

use ContarHistoria\MidiaParaContarHistoria;

/**
 *
 * @author Raphael da Silva
 *
 */
class HistoriaEmLivro implements MidiaParaContarHistoria
{

    public function contarHistoria()
    {

        echo 'Usando um livro para contar uma história.';

    }

}

```
PHP - O operador splat (a.k.a os três pontos...)
Tags: ptbr, php, braziliandevs
Published: 2020-07-11 16:13:48

O operador splat é um operador formado por três pontos `...` utilizado para trabalhar com funções variádicas. Esse tipo de função pode receber um número ilimitado de parâmetros. A função a seguir serve para ilustrar esse recurso que está presente desde a versão 5.6 do PHP.

```php

function printMessages(...$messages){

    foreach($messages as $message){
        echo $message, PHP_EOL;
    }

}

printMessages(
    'Olá', 
    'Adeus', 
    'Como vai?', 
    'Será que algo vai melhorar?'
);

```

Como é possível perceber, a função pode receber um número infinito de parâmetros, no exemplo foram passadas três strings. O operador splat foi usado antes do nome do parâmetro da função, isso serve para indicar que ela pode receber um lista de ilimitada de argumentos.

Além da declaração dos parâmetros de uma função variádica, o operador splat também serve para converter um array em uma lista de argumentos para serem passados como parâmetros. Segue o exemplo:

```php

$messages = [
    'Olá',
    'Adeus',
    'Como vai?',
    'Será que algo vai melhorar?'
];

// Convertendo o array para argumentos
printMessages(...$messages);

```
Uso básico da biblioteca Doctrine DBAL
Tags: php, ptbr, database, braziliandevs
Published: 2020-07-11 16:12:48

A biblioteca Doctrine DBAL oferece uma camada adicional por cima da PDO, com isso ela disponibiliza uma API de alto nível que simplifica operações que são mais verbosas e repetitivas com o PDO. Essa API conta com alguns métodos bastante úteis para fazer operações básicas de [CRUD](https://pt.wikipedia.org/wiki/CRUD).

## Criação da conexão

Antes de começar, é preciso instalar a biblioteca com o Composer, para isso é preciso rodar o seguinte comando no terminal:

```bash

composer require "doctrine/dbal"

```
Para criar o objeto referente a conexão, a biblioteca disponibiliza o método estático `getConnection` da classe `DriverManager`. Esse método espera um array com as credenciais as informações para fazer a conexão com o banco de dados.

```php

$dbal = \Doctrine\DBAL\DriverManager::getConnection([
    'dbname'   => 'nomedobanco',
    'user'     => 'usuario',
    'password' => 'senha',
    'host'     => 'localhost',
    'driver'   => 'pdo_mysql',
    'driverOptions' => [
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
    ]
]);

```

OBS: a opção definida com a constante `MYSQL_ATTR_INIT_COMMAND` da PDO serve para que o charset usado seja UTF-8.

## Operações de CRUD

### Método `insert`

**Parâmetros:**
* Primeiro: nome da tabela do banco de dados.
* Segundo: array associativo com o nome das colunas e seus valores

```php

$dbal->insert('noticias', [
    'Titulo' => 'Notícia nova!',
    'Texto'  => 'Texto da notícia nova.'
]);

```
Para obter o id do registro insertido, basta usar o método `lastInsertId`

```php
$lastInsertId = $dbal->lastInsertId();
```

### Método `update`

**Parâmetros:**
* Primeiro: nome da tabela do banco de dados.
* Segundo: array associativo com o nome das colunas e seus valores.
* Terceiro: array associativo equivalente a clausula ```WHERE``` do SQL.

```php

$dbal->update('noticias', [
    'Titulo' => 'Notícia nova (atualizada)!',
    'Texto'  => 'Texto da notícia nova (atualizada).'
], ['Id' => 1]);

```

### Método `delete`

**Parâmetros:**
* Primeiro: nome da tabela do banco de dados.
* Segundo: array associativo com a coluna e o valor que será utilizado como critério para a exclusão.

```php

$dbal->delete('noticias', [
    'Id' => 1
]);

```

## Busca de dados

Buscar vários registros:

```php

$rows = $dbal->fetchAll('SELECT * FROM noticias');

```

Buscar um registro:

```php

$rows = $dbal->fetchAssoc('SELECT Titulo FROM noticias WHERE Id = :id', [
    'Id' => 1
]);

```

Buscar uma coluna de um registro:

```php

$title = $dbal->fetchColumn('SELECT Titulo FROM noticias WHERE Id = :id', [
    'Id' => 1
]);

```

## Conclusão

A biblioteca Doctrine DBAL é uma ótima opção para o acesso ao banco de dados com PHP. Através dela as operações básicas são simplicadas, o que é de grande ajuda para agilizar as coisas.
PHP - A utilidade da função array_filter sem nenhum parâmetro
Tags: php, ptbr, tips, braziliandevs
Published: 2020-07-11 16:10:25

A função `array_filter` serve para filtrar um array com base em um filtro espeficado, esse filtro é um callback que vai definir a regra para filtrar os elementos do array. Porém, a função tem um comportamento padrão quando nenhum callback é passado para ela.

```php
$values = [
    'Some string',
    '',
    null,
    false,
    10,
    '0',
    0
];

// Apenas os valores 'Some string' e 10 serão preservados.
$values = array_filter($values);
```

Por padrão, a função irá descartar todos os valores que são [interpretados como false](http://php.net/manual/pt_BR/types.comparisons.php) pelo PHP. A função `array_filter`` sem callbacks é útil em alguns contextos, pois poupa o trabalho de filtrar valores vazios.
Condição invertida (a.k.a Yoda Condition)
Tags: php, ptbr, braziliandevs
Published: 2020-07-11 16:08:47

Em alguns projetos open-source eu sempre via as condições nos `ifs` serem declaradas de forma invertida. Isso era algo que me gerava dúvida e curiosidade. Basicamente, em vez do valor comparado estar depois da variável, em vários projetos grandes ele vinha antes dela, ou seja, a posição era invertida. 

```php
if($name === "User"){
    // ...
}
```

Ao contrário do exemplo acima eu encontrava o seguinte:

```php
if("User" === $name){
    // ...
}
```

Pesquisando descobri que essa prática tem um nome, esse nome é Yoda Condition. Aparentemente, seguir essa prática é uma questão de estilo e não impacta na performance ou na interpretação do código. **Como quase tudo que envolve estilo, uns são a favor e outros nem tanto e, portanto, dificilmente existe um consenso.**

Eu não imaginava que existia um termo próprio para isso, mas ter um nome me ajuda a fazer uma associação e passar a lembrar disso, além disso, o nome é bastante intuitívo para quem conhece Star Wars, pois o mestre Yoda fala de forma invertida, então o código que segua essa condição de "falar" para o programador de forma intertida também. Agora sempre que vejo uma condição invertida eu consigo reconhecer e saber o motivo dela estar ali (algo que antes estava confuso para mim).
A escrita como input e output
Tags: ptbr, escrita, braziliandevs, welcome
Published: 2020-07-11 16:06:40

O meu processo estudos começou a ser acompanhado com a escrita a partir de março de 2015 quando criei um arquivo para ir escrevendo sobre os conceitos que eu estudava com as minhas palavras e com exemplos concretos que faziam eu captar melhor o propósito e aplicação dos conceitos.

Escrever passou a ser parte crucial da minha vida, pois percebi que a minha mente funciona melhor usando a escrita para reforçar/fixar assuntos aprendidos. **É como se o estudo fosse o input e a escrita fosse o output que reforça esse input inicial, output que é resultado desse input processado**. Esse foi o fluxo que eu usei para estudar programação (mesmo que lá em 2015 isso são estive sendo feito de forma consciente por mim).

Escrever código e escrever para qualquer outro fim são coisas que dialogam, pois no fim tudo se resume a escrever para expressar algo. A escrita passou a ser parte fundamental para as coisas que faço através dessa experiência inicial que começou com os estudos de programação.
Using Slice for Star Rating Effect
Tags: javascript, slice, jquery
Published: 2020-07-11 16:04:57

---
title: Using Slice for Star Rating Effect
published: true
description: A practical usage of JavaScript's slice() function
tags: javascript, slice, jquery
---

I have a rating system where users can rate items from 1 to 5. I used Font Awesome to display 5 unfilled stars.

![5 unfilled stars](https://dev-to-uploads.s3.amazonaws.com/i/iytt3wnjia2jsb8h7vxk.png)


```html
<div id="stars">
    <i class="fa-2x far fa-star gold-text" onclick="vote(1)"></i>
    <i class="fa-2x far fa-star gold-text" onclick="vote(2)"></i>
    <i class="fa-2x far fa-star gold-text" onclick="vote(3)"></i>
    <i class="fa-2x far fa-star gold-text" onclick="vote(4)"></i>
    <i class="fa-2x far fa-star gold-text" onclick="vote(5)"></i>
</div>
```

When a user clicks on one of the stars, I'd like to add some sort of effect. I'm a bit too lazy to fight with CSS today in order to implement some cool animation, so instead I'm just going to use JavaScript to display an effect.

![5 stars. Stars 1, 2, and 3 are filled. Stars 4 and 5 are unfilled](https://dev-to-uploads.s3.amazonaws.com/i/jlmfklhy8vuqdkhlfzgy.png)

Inside of the `vote()` function, I get an array of all of the star elements, and I want to fill in all of the stars... up to the one the user clicked.

To do this, I chose to use the [slice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) function. `slice` allows you to capture a subset of the array to further work on, which is perfect in my case because unless they choose a 5-star rating, I only need to fill in a subset of the stars.

`slice` allows you to specify what should be the first element of the sub-array, and optionally where the slicing should end (this ending index is not inclusive so is not a part of the new array. The element right before this index will be the last element of the resulting array). 

Let's say the user wants to leave 3 stars. That means, I need to fill in the 1st, 2nd, and 3rd stars. So, my arguments would be `0` and `3`, meaning begin the slice at the first element of the array, and stop when you get to index 3 (note that index 3 would be the 4th star and we don't want this included).

Once I have this sliced array, I can further operate on it.

To fill in the stars, I changed the Font Awesome class for each star in my sliced subset from `far` to `fas` (the solid option of this icon).

```javascript
function vote(rating) {
    $('#stars i')
        .slice(0, rating)
        .each(function(){
            $(this).toggleClass('far fas')
       	})
}
```

And voila!

![Animated image demonstrating clicking the 3rd star and stars 1, 2, and 3 go from unfilled to solid](https://dev-to-uploads.s3.amazonaws.com/i/55jwfcg4g1x9jkmqfu3m.gif)



Would you have done something differently? Feel free to share you ideas in the comments!
React: `useFetchData` Custom Hook
Published: 2020-07-11 15:42:25

> If you observe common state logic in many components make a custom hook

React hooks are very useful when you want to take out common logic out of your components.

**In our live projects we make some components which makes API calls, parse data and display it to the user.**

There are lot of state transitions happening behind this.

```
* Initial State
* Loading
* Data Received
```

These 3 are the common state transitions for each and every component, which means we can create a custom hook out of it.

Now, let's make a custom hook.

##### Custom Hook

```javascript
import { useEffect, useReducer, useCallback } from 'react';


const INITIAL_STATE = {
  data: undefined,
  isLoading: false,
  hasError: false,
};

/**
 * Hook to fetch data and handling loading and error state.
 * @param {Promise} fetchData promise to fetch data. [Dependancy]
 * @param {Array} params parameters to pass to fetch data. [Dependancy]
 */
const useFetchData = (fetchData, params = EMPTY_ARRAY, initialState = INITIAL_STATE) => {
  const [state, dispatch] = useReducer(REDUCER, initialState);

  const usefetchDataEffect = useCallback(() => fetchDataEffect(dispatch, fetchData, params), [fetchData, ...params]);

  useEffect(usefetchDataEffect, [usefetchDataEffect]);

  return [state, { fetchData: usefetchDataEffect }];
};

export default useFetchData;

```

#### Helper Functions
```js
const setLoading = dispatch => dispatch({ type: 'SET_LOADING' });

const setError = dispatch => dispatch({ type: 'SET_ERROR' });

const setData = (dispatch, data) => dispatch({
  type: 'SET_DATA',
  payload: { data },
});

/**
 * Fetches and saves Data.
 * Handles Error.
 * @param {Promise} fetchData promise which returns data
 * @param {Array} params parameters to be passed to fetchData promise
 * @param {Function} dispatch function to update state
 */
const fetchDataEffect = (dispatch, fetchData, params) => {
  setLoading(dispatch);
  fetchData(...params)
    .then((data) => {
      setData(dispatch, data);
    })
    .catch(() => {
      setError(dispatch);
    });
}
```

#### Usage

```javascript
const [{ isLoading, hasError, data: componentData }, { fetchData }] = useFetchData(fetchComponentData, [dependency]);
```

#### NOTE

Try to parse the API response in fetchComponentData function so the component receives parsed data to display.


_For simplicity, I have not included definition of reducers._
How to build a reliable pattern identifier for a numerical dataset (N x 5 array where N >= 100)?
Tags: machinelearning
Published: 2020-07-11 15:53:20

Hello there

I am a novice in this field of machine learning and deep learning. I am trying to build a pattern identifier.  

The dataset is N x 5 array filled sequentially with 2-digit numbers i.e. first column first digit then second digit then second column till 5th one. Then next row, same case.  

The question is about identifying patterns using 2 or more cells in the array so that we can predict the next number.  

Any help would be greatly appreciated as to How to go about this?? What libraries would be the best suited for this problem??  

Truth be told, I have no experience solving these kind of problems, so any and every suggestions would help  

Thanking you in anticipation