domingo, 26 de janeiro de 2025

Algumas Versões do .NET

 O .NET tem várias versões, cada uma com diferentes recursos e períodos de suporte. Aqui está um resumo das principais versões disponíveis:

Versões Atuais do .NET

VersãoTipo de SuporteData de LançamentoData de Fim de Suporte
.NET 9.0Suporte de Termo (18 meses)14 de janeiro de 202512 de maio de 2026
.NET 8.0Suporte de Longo Prazo (3 anos)14 de janeiro de 202510 de novembro de 2026
.NET 7.0Suporte de Longo Prazo (3 anos)28 de maio de 202414 de maio de 2024
.NET 6.0Suporte de Longo Prazo (3 anos)8 de novembro de 202112 de novembro de 2024
.NET 5.0Suporte de Longo Prazo (3 anos)10 de novembro de 202010 de maio de 2022
.NET Core 3.1Suporte de Longo Prazo (3 anos)23 de dezembro de 201913 de dezembro de 2022
.NET Core 3.0Suporte de Longo Prazo (3 anos)23 de setembro de 20193 de março de 2020
.NET Core 2.2Suporte de Longo Prazo (3 anos)12 de dezembro de 201823 de dezembro de 2019
.NET Core 2.1Suporte de Longo Prazo (3 anos)20 de agosto de 201821 de agosto de 2021
.NET Core 2.0Suporte de Longo Prazo (3 anos)20 de agosto de 20171 de outubro de 2018
.NET Core 1.1Suporte de Longo Prazo (3 anos)17 de novembro de 201627 de junho de 2019
.NET Core 1.0Suporte de Longo Prazo (3 anos)7 de junho de 201627 de junho de 2019

Notas Importantes

  • Suporte de Longo Prazo (LTS): Versões LTS são recomendadas para quem precisa de estabilidade e suporte prolongado.

  • Suporte de Termo (STS): Versões STS são ideais para quem quer experimentar as últimas funcionalidades e atualizações mais frequentes, mas com um período de suporte mais curto


.NET Core 1.x e 2.x

  • .NET Core 1.x: Lançado em 2016, foi a primeira versão do .NET Core, focada em ser uma plataforma modular e multiplataforma.

  • .NET Core 2.x: Lançado em 2017 e 2018, trouxe melhorias de desempenho, suporte a mais plataformas e novas bibliotecas.

.NET Core 3.x

  • .NET Core 3.0: Lançado em 2019, introduziu suporte para desenvolvimento de desktop com Windows Forms e WPF, além de melhorias no desempenho e na eficiência.

  • .NET Core 3.1: Lançado em 2020, foi uma versão de manutenção que trouxe correções de bugs e melhorias de segurança, mas sem novos recursos significativos.

.NET 5 e .NET 6

  • .NET 5: Lançado em 2020, unificou o .NET Core e o .NET Framework em uma única plataforma, com melhorias de desempenho, suporte a mais plataformas e novas bibliotecas.

  • .NET 6: Lançado em 2021, trouxe melhorias significativas de desempenho, novas funcionalidades e suporte a mais plataformas.

.NET 7 e .NET 8

  • .NET 7: Lançado em 2022, focou em melhorias de desempenho, novas funcionalidades e suporte a mais plataformas.

  • .NET 8: Lançado em 2023, continua a tradição de melhorias de desempenho, novas funcionalidades e suporte a mais plataformas.

Ciclo de Vida e Suporte

Cada versão do .NET segue um ciclo de vida específico, com suporte para versões principais por aproximadamente 3 anos, versões secundárias por cerca de 18 meses e atualizações de manutenção (patches) lançadas regularmente para corrigir bugs e melhorar a segurança.


.NET Core e .NET Unificado

  • .NET Core: A Microsoft usou o nome ".NET Core" para as versões 1.0 a 3.1. O objetivo do .NET Core era ser uma plataforma modular, open-source e multiplataforma (Windows, macOS e Linux).

  • Unificação com .NET 5: A partir de .NET 5, lançado em novembro de 2020, a Microsoft unificou o .NET Core e o .NET Framework em uma única plataforma chamada simplesmente ".NET". Esta unificação visou simplificar o ecossistema .NET e eliminar a distinção entre as diferentes versões da plataforma.

Portanto, após o .NET Core 3.1, a Microsoft passou a usar o nome ".NET" para todas as versões subsequentes, começando com o .NET 5, seguido por .NET 6, .NET 7 e o mais recente .NET 8.




domingo, 22 de dezembro de 2024

Triângulo de Pascal em Python

 

def generate_pascals_triangle(n):

    triangle = []


    for i in range(n):

        # Cada linha começa com um '1'

        row = [1]

        if i > 0:

            last_row = triangle[i-1]

            for j in range(1, i):

                row.append(last_row[j-1] + last_row[j])

            row.append(1)  # Cada linha termina com um '1'

        triangle.append(row)


    return triangle


def print_pascals_triangle(triangle):

    for row in triangle:

        print(' '.join(map(str, row)).center(len(triangle[-1]) * 2))


# Número de linhas do Triângulo de Pascal

n = 5

pascals_triangle = generate_pascals_triangle(n)

print_pascals_triangle(pascals_triangle)



Explicação

  1. generate_pascals_triangle(n): Esta função gera o Triângulo de Pascal até a n-ésima linha. Cada linha começa e termina com 1, e cada número interno é a soma dos dois números acima dele.

  2. print_pascals_triangle(triangle): Esta função imprime o Triângulo de Pascal formatado centralizado para melhor visualização.

  3. Você pode ajustar o valor de n para gerar mais ou menos linhas do Triângulo de Pascal conforme necessário.


PASCAL - Verificar Número Par

 program Paridade;

var

  numero: integer;

begin

  writeln('Introduza um número:');

  readln(numero);

  if numero mod 2 = 0 then

    writeln(numero, ' é par')

  else

    writeln(numero, ' é ímpar');

end.


PASCAL - Cálculo de Área de Formas Geométricas

 program AreaQuadrado;

var

  lado: real;

begin

  writeln('Introduza o lado do quadrado:');

  readln(lado);

  writeln('A área do quadrado é: ', lado * lado:0:2);

end.


PASCAL - Cálculo Fatorial

program Fatorial;

var

  n, fatorial: integer;

begin

  writeln('Introduza um número:');

  readln(n);

  fatorial := 1;

  for i := 1 to n do

    fatorial := fatorial * i;

  writeln('O fatorial de ', n, ' é ', fatorial);

end.


Sobre o DART

Dart é uma linguagem de programação desenvolvida pelo Google, projetada por Lars Bak e Kasper Lund. Ela foi lançada em 2011 e está em constante evolução. Dart é uma linguagem multi-paradigma, o que significa que suporta programação funcional, imperativa e orientada a objetos.

Características Principais

  • Multi-Paradigma: Suporta paradigmas funcionais, imperativos e orientados a objetos.

  • Código Consistente e Conciso: Oferece uma sintaxe familiar e fácil de aprender, semelhante ao C e JavaScript.

  • Segurança de Tipos: Inclui recursos modernos como segurança de nulos e correspondência de padrões.

  • Desenvolvimento Produtivo: Utiliza o recurso de hot reload, que permite ver as mudanças no código instantaneamente no aplicativo em execução.

  • Portabilidade: Pode ser compilada para código de máquina, JavaScript ou WebAssembly, permitindo a criação de aplicativos web, móveis, desktop e de servidor com a mesma linguagem.

  • Suporte da Comunidade: Possui uma comunidade ativa e muitos recursos disponíveis para aprendizado e suporte.

Uso Comum

Dart é amplamente utilizada no desenvolvimento de aplicativos com o framework Flutter, que permite criar interfaces de usuário nativas para Android e iOS a partir de uma única base de código. Além disso, Dart pode ser usada para desenvolver aplicativos web, desktop e de servidor.

Exemplo Básico

Aqui está um exemplo simples de como definir uma função em Dart:

dart
void main() {
  print('Hello, World!');
}


Exemplo básico para criar uma API em PHP

Para criar uma API em PHP que permita realizar operações de INSERT, UPDATE, DELETE e SELECT em um banco de dados, podemos usar uma combinação de PHP, PDO (PHP Data Objects) e JSON para comunicação com o cliente. Vou te mostrar um exemplo simples de como fazer isso.

Estrutura do Projeto

  1. : Arquivo de configuração para conexão com o banco de dados.

  2. : Arquivo que lida com as requisições da API.

  3. .htaccess: (Opcional) Para redirecionar todas as requisições para api.php.

1. Arquivo de Configuração (config.php)

php
<?php
$host = 'localhost';
$db = 'nome_do_banco';
$user = 'usuario';
$pass = 'senha';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Erro na conexão: " . $e->getMessage());
}
?>

2. Arquivo da API (api.php)

php
<?php
header('Content-Type: application/json');

require 'config.php';

$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
    case 'GET':
        handleGet($pdo);
        break;
    case 'POST':
        handlePost($pdo);
        break;
    case 'PUT':
        handlePut($pdo);
        break;
    case 'DELETE':
        handleDelete($pdo);
        break;
    default:
        echo json_encode(['message' => 'Método não suportado']);
        break;
}

function handleGet($pdo) {
    $stmt = $pdo->prepare("SELECT * FROM tabela");
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($result);
}

function handlePost($pdo) {
    $data = json_decode(file_get_contents('php://input'), true);
    $stmt = $pdo->prepare("INSERT INTO tabela (coluna1, coluna2) VALUES (:valor1, :valor2)");
    $stmt->execute(['valor1' => $data['valor1'], 'valor2' => $data['valor2']]);
    echo json_encode(['message' => 'Registro inserido com sucesso']);
}

function handlePut($pdo) {
    $data = json_decode(file_get_contents('php://input'), true);
    $stmt = $pdo->prepare("UPDATE tabela SET coluna1 = :valor1 WHERE coluna2 = :valor2");
    $stmt->execute(['valor1' => $data['valor1'], 'valor2' => $data['valor2']]);
    echo json_encode(['message' => 'Registro atualizado com sucesso']);
}

function handleDelete($pdo) {
    $data = json_decode(file_get_contents('php://input'), true);
    $stmt = $pdo->prepare("DELETE FROM tabela WHERE coluna1 = :valor1");
    $stmt->execute(['valor1' => $data['valor1']]);
    echo json_encode(['message' => 'Registro deletado com sucesso']);
}
?>

3. (Opcional) Arquivo .htaccess

htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ api.php [QSA,L]

Como Testar a API

Você pode usar ferramentas como Postman ou cURL para testar as requisições à API.

Exemplo de Requisição GET

sh
curl -X GET http://localhost/api.php

Exemplo de Requisição POST

sh
curl -X POST http://localhost/api.php -d '{"valor1": "exemplo1", "valor2": "exemplo2"}'

Exemplo de Requisição PUT

sh
curl -X PUT http://localhost/api.php -d '{"valor1": "novo_valor", "valor2": "exemplo2"}'

Exemplo de Requisição DELETE

sh
curl -X DELETE http://localhost/api.php -d '{"valor1": "exemplo1"}'

Segurança e Boas Práticas

  • Validação e Sanitização: Certifique-se de validar e sanitizar todas as entradas do usuário.

  • Autenticação e Autorização: Implemente autenticação (como tokens JWT) para garantir que apenas usuários autorizados possam acessar e manipular os dados.

  • Erro e Exceção: Trate erros e exceções adequadamente para evitar a exposição de informações sensíveis.

Esse é um exemplo básico para te ajudar a começar. Dependendo das necessidades específicas do seu projeto, você pode expandir e aprimorar a API com funcionalidades adicionais e medidas de segurança.


OBSERVAÇÕES IMPORTANTES:

Vale lembrar que os exemplos citados acima, são utilizadas apenas para uso didático. Cada desenvolvedor deve ser responsável em aplicar medidas de segurança para evitar ataques de injeção de SQL ou de outro tipo em seu sistema. Também em implementar autenticação JWT ou outros recursos.