Instalar o SDK do .NET ou o runtime do .NET no Debian

Olá pessoal

fonte: https://mastigado.wordpress.com

Hoje deixarei umas dicas do próprio site da Microsoft de como instalar tanto o SDK ou o runtime do .Net (6, 7, 8) no Debian.

Baixando o pacote e instalando o pacote da Microsoft


wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

Instalando o SDK do .Net (para mudar versão é só trocar o 8 pelo 7 ou pelo 6)


apt-get update && \
apt-get install -y dotnet-sdk-8.0

Instalando o Asp Net Core Runtime para o .Net


apt-get update && \
apt-get install -y aspnetcore-runtime-8.0

Instalando o Runtime para o .Net (sem Asp Net Core)


apt-get install -y dotnet-runtime-8.0

 

fonte: https://learn.microsoft.com/pt-br/dotnet/core/install/linux-debian

fonte: https://mastigado.wordpress.com

Tentar conviver com ZSH que não desinstala (uninstall_oh_my_zsh: command not found)

Pessoal, essa dica rápida é pra quem tentou desinstalar essa lib (ZSH) e não conseguiu (e talvez não consiga nunca) e tenha que conviver com ela enquanto não formatar seu Linux.

fonte: https://mastigado.worpress.com

Pra você que executou, no Debian (por exemplo), apt remove zsh ou apt purge zsh –purge e depois disso, ao reiniciar, não consegue mais logar no Linux porque toda a hora em que loga ele volta para a tela de login, vai aqui alguma dicas.

– JAMAIS INSTALE NOVAMENTE ESSE TAL DE ZSH. NÃO TENTE MUDAR SEU SHELL NOVAMENTE SÓ PRA FICAR COLORIDO COMO NUM ARCO ÍRIS!

– O comando que o Github oficial do ZSH diz pra você executar para desinstalar essa lib (uninstall_oh_my_zsh) não funcionou pra mim!

– Para tentar se livrar dessa lib (ZSH) entre no Linux em Recovery Mode (logo quando ligar a máquina).

– Após digitar sua senha de root, digite o seguinte comando no terminal:


bash

– Execute os comandos abaixo para jogar a conf do bash original para o bash do ZSH (para que a conf do ZSH não ficar somente desabilitada no usuário root, você pode fazer o comando também na pasta home de cada usuário).


rm -rf ~/.oh-my-zsh
rm ~/.zshrc
cp ~/.zshrc.pre-oh-my-zsh ~/.zshrc
source ~/.zshrc

 6º – E por último, a parte triste vem agora, instale novamente o ZSH para você conseguir voltar a logar no seu sistema operacional.


apt install zsh

Depois disso você pode usar o bash original mas com este ZSH instalado sem se manifestar. Lembre-se que ele vai ficar tipo um vírus que fica adormecido no seu corpo até você morrer ou até você reinstalar o Linux. Lembrando que existe outra forma de removê-lo definitivamentemas não serei eu que farei isso aqui pois só de ficar com o login bloqueado você já entra em desespero. Por isso lembre-se: nada de frú frú com terminal colorido novamente! Você não precisa desse troço porque um dos pontos negativos desse tal de ZSH é que nele não funcionam todos os comandos Linux como no bash original.

Você pode tentar mudar o bash para o original novamente, mas aconselho deixar esse ZSH aí se tiver muitos problemas para retirá-lo.


chsh -s /bin/bash

chsh

fonte: https://mastigado.worpress.com

fonte: https://stackoverflow.com/questions/9813983/troubles-uninstalling-oh-my-zsh

fonte: https://www.youtube.com/watch?v=hLxr9hLfO0Q

fonte: https://stackoverflow.com/questions/13046192/changing-default-shell-in-linux

Zerar timeout de aplicação com SQL Server

fonte: https://mastigado.wordpress.com

Ao se depararem com este erro abaixo em sua aplicação, não temas!

System.Data.SqlClient.SqlException: ‘Tempo Limite de Execução Expirado. O período de tempo limite terminou antes da conclusão da operação ou o servidor não está respondendo.’

Você pode resolver isso de forma fácil:

1 – Chapuletando um timeout zero no meio no seu comando SqlCommand (somente onde está com a linha indicada por <———–).


try
{
this.conexaosqlclient.Open();

SqlCommand cmd = new SqlCommand(sql, this.conexaosqlclient);

cmd.CommandTimeout = 0;   // <-------------

cmd.Parameters.Add("@codigo", SqlDbType.Int);
cmd.Parameters["@codigo"].Value = codigo;

reader = cmd.ExecuteReader();

E caso não de certo, faça também o procedimento de zerar o timeout no banco de dados.


USE AdventureWorks2022;
GO
EXEC sp_configure 'remote query timeout', 0 ;
GO
RECONFIGURE ;
GO

E aí só partir para o abraço. Se a sua aplicação não estava conseguindo executar determinada consulta, provavelmente agora ela executará, mas pode demorar para executar (tenha paciência). Só faço este procedimento em casos extremos.

fonte: https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-remote-query-timeout-server-configuration-option?view=sql-server-ver16

fonte: https://mastigado.wordpress.com

Como fazer download do conteúdo um diretório na Web?

fonte: https://mastigado.wordpress.com

Olá pessoal!

Essa dica de hoje vai para aquelas pessoas que precisam baixar arquivos de um diretório na Web assim como fazíamos com um antigo software chamado GetRight.

Pois bem! Abra o terminal (do Linux) no diretório de sua escolha e digite o comando abaixo. Fique atento se a página principal é mesmo uma index.html.


wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Depois disso é só correr para o abraço.

fonte: https://stackoverflow.com/questions/23446635/how-to-download-http-directory-with-all-files-and-sub-directories-as-they-appear

fonte: https://mastigado.wordpress.com

Configurar Worker em Net 6

Olá pessoal!

fonte: https://mastigado.wordpress.com

Hoje faremos um breve projeto Worker no Visual Studio.

1º – Escolha um projeto Worker no Visual Studio

2º – Coloque o nome do projeto

3º –  Abra a classe Program

E adicione a tag para que o Worker funcione no Windows


public class Program
{
   public static void Main(string[] args)
   {
      IHost host = Host.CreateDefaultBuilder(args)
        .UseWindowsService(options =>
        {
           options.ServiceName = "Nome do meu Worker";
        })
        .ConfigureServices(services =>
        {
           services.AddHostedService<Worker>();
        })
        .Build();

        host.Run();
   }
}

4º – Insira seu código dentro do método ExecuteAsync (de preferência dentro do loop)

5º – Instale o serviço utilizando a linha de comando abaixo


C:\Sistemas\Executavel> sc.exe create "Nome do meu Worker" binpath="C:\Sistemas\Executavel\meu_worker.exe"

Para desinstalá-lo execute o comando abaixo


C:\Sistemas\Executavel> sc.exe delete "Nome do meu Worker" binpath="C:\Sistemas\Executavel\meu_worker.exe"

E para paralisá-lo


C:\Sistemas\Executavel> sc.exe stop "Nome do meu Worker" binpath="C:\Sistemas\Executavel\meu_worker.exe"

Para caso aconteça erros na instalação

1º – Reescreva as aspas (” “) no meio do terminal. Isso é necessário para quando damos Ctrl + C e Ctrl  + V no código.

2º – Quando colocar o binpath de um espaçamento entre o sinal de igualdade e a primeira aspa, como está abaixo


C:\Sistemas\Executavel> sc.exe create "Nome do meu Worker" binpath= "C:\Sistemas\Executavel\meu_worker.exe"

Pronto! Agora é só ir até a área de Serviços do Windows e iniciar seu serviço a partir de lá.

fonte: https://mastigado.wordpress.com

fonte: https://stackoverflow.com/questions/16174736/cannot-get-sc-exe-to-work-for-my-program

fonte: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/sc-create

Como enviar ctrl+alt+del usando Remote Desktop (área de trabalho remota)?

O que é Ctrl + Alt + Del? Quando devo usar o comando?

Olá pessoal!

Essa dica é simples, mas salva quem está remoto e teve sua senha expirada numa rede corporativa.

É só pressionar Ctrl + Alt + End.

fonte: https://serverfault.com/questions/57222/how-to-send-ctrlaltdel-using-remote-desktop

fonte: https://blog.codinghorror.com/remote-desktop-tips-and-tricks/

Princípio da Inversão de Dependência

 

HTTP Status Codes

fonte: https://codewithsloba.com/

DateTime no C# e .NET

Começando com DateTime

O DateTime no C# é um tipo de dados struct. Com isto sabemos que ele é composto por outros tipos e métodos, além de ser iniciado com um valor padrão.

Para criar um DateTime fazemos da segunte forma:

var date = new DateTime();

Por serem tipos de valor, os DateTimes não são nulos e por padrão sempre iniciam com um valor como foi citado antes. Então vamos vericiar qual o valor inicial da nossa variável assim:

Console.WriteLine(date);
// 1/1/0001 12:00:00 AM

Estes são os valores iniciais de um DateTime. Precisamos entender também que o formato é retornado de acordo com a cultura do sistema sob o qual o código foi executado, a menos que uma configuração seja aplicada para modificar este comportamento.
Obtendo data e hora atual com DateTime

Agora que sabemos como criar a nossa váriavel, temos a opção de atribuir e exibir a data atual. Fazemos isto utilizando a propriedade DateTime.Now.

Para exibir a data e hora local:

var date = DateTime.Now();
Console.WriteLine(date);
// 6/17/2021 8:10:09 AM

Para exibir a data e hora global UTC (Coordinated universal time ou tempo universal coordenado):

var date = DateTime.UtcNow();
Console.WriteLine(date);
// 6/17/2021 11:10:09 AM

Note que ele retornou corretamente a data e hora do momento em que o código foi executado, porém exibiu o mês antes do dia e o horário em formato AM/PM. Este padrão é chamado de cultura e entenderemos ele mais a frente.
Formatando um DateTime

No C# o DateTime formata os valores com base no sistema sob o qual o código está sendo executado, caso necessário você pode modificar este comportamento através de configurações personalizadas no seu projeto.

Para atribuir valores a nossa variável DateTime basta passar os valores como parâmetro:

var date = new DateTime(2020, 07, 02, 22, 59, 59);
// 7/2/2020 10:59:59 PM

Acima seguimos os parâmetros (ano, mês, dia, hora, minutos, segundos) para outros paramêtros culte a documentação dos Construtores DateTime (link no final do artigo).

Nos exemplos anteriores você viu como exibir a data. Agora Veremos algumas formas de exibição diferentes.

Lembra quando foi dito antes que o DateTime é um struct e contém outros tipos e métodos? Podemos explorar a estrutura para obter por exemplo:

O dia da semana em que a data acima cairá:

Console.WriteLine(date.DayOfWeek);
// Thursday

Valor avulsos:

Console.WriteLine(date.Month);
// 7

Recomendamos que antes de desenvolver um novo parâmetro/método, verifique a existência dele na documentação do DateTime (link no final do artigo).

Podemos também utilizar alguns caracteres (“Y” para ano, “M” para mês, “d” para dia, “H” para hora, “m” para minutos, “s” para segundos, “f” para fração de segundos e “z” para a timezone) para formatar nosso DateTime através da interpolação de strings:

var formattedDate = String.Format("{0:dd/MM/yyyy HH:mm:ss ff z}", date);
// 02/07/2020 22:59:59 00 -3

Existem outras formatações como o ERC (Eurepean research council):

var formattedDate = String.Format("{0:r}", date);
// Thu, 02 Jul 2020 22:59:59 GMT

E o Sortible:

var formattedDate = String.Format("{0:s}", date);
// 2020-07-02T22:59:59

Manipulação de datas com DateTime

Até aqui aprendemos a definir e exibir de várias formas as datas e horas. Em situações em que precisamos calcular datas e horas nós podemos utilizar alguns métodos já existentes no DateTime.

Para atribuir valores ao nosso DateTime basta passar os valores como parâmetro:

var date = DateTime.Now();
date.AddDays(2);
// 6/19/2021 11:10:09 AM

Para remover valores do nosso DateTime:

var date = DateTime.Now();
Console.WriteLine(date.AddDays(-20));
// 5/30/2020 11:10:09 AM

Podemos ver que ao retirar uma quantidade de dias maior que a data atual ele lidou com a regressão do mês. Usar o método existente é a forma correta de utilização da ferramenta.
Cultures e TimeZones UTC no DateTime

Como sabemos, os horários são diferentes de acordo com a região do planeta em que estamos. Dentro do C# lidamos com estas diferenças através da classe TimeZoneInfo.

Os formatos de data e hora utilizados por certas regiões são chamados de culturas e lidamos com eles dentro do C# através da classe CultureInfo.

No início citamos que o retorno de nossa data não estava no padrão esperado (Brasileiro), então este é o momento para corrigir. A estrutura para isto está dentro do System e podemos passar as informações necess[arias] por parâmetro dentro do método DateTime.UtcNow().

Logo em seguida precisamos converter o resultado para uma string através do método ToString() e dentro deste método passamos como parâmetro o método CreateSpecificCulture. Este recebe como parâmetro a cultura que precisamos. Ficando assim:


using System;
using System.Globalization;

Console.WriteLine(DateTime.UtcNow.ToString(CultureInfo.CreateSpecificCulture("pt-BR")));

fonte: https://balta.io/blog/datetime-csharp-dotnet

WGET – error: the certificate doesn’t have a know issuer

Olá para todos!

fonte: https://mastigado.wordpress.com

Essa dica básica vai para todos que precisam utilizar o comando wget no Linux mas que acabam tendo problema com certificado (error: the certificate doesn’t have a know issuer). Para fazer isso é só desabilitá-lo na chamada.


wget --no-check-certificate https://download/url

fonte: https://mastigado.wordpress.com

https://unix.stackexchange.com/questions/334905/how-do-i-fix-wget-on-an-http-url-not-trusted-errors-in-kali

https://stackoverflow.com/questions/9224298/how-do-i-fix-certificate-errors-when-running-wget-on-an-https-url-in-cygwin