sexta-feira, 5 de novembro de 2021

O QUE É O DART

O Dart é uma linguagem de programação pelo Google em 2011 que tinha objetivo substituir o Javascript se tornando a principal linguagem a ser utilizada nos navegadores web. Segundo (CORAZZA, 2018, p. 23), o Dart é uma linguagem moderna, orientada a objetos, concisa e fortemente tipada. Ela é considerada altamente versátil, pois pode ser utilizada em desenvolvimento de aplicativos, desktop, web, criação de scripts e até mesmo no back-end. Possui como característica a capacidade de inferir os tipos, tornando-se opcional a declaração do tipo da variável ao criá-la, visto que a linguagem assumirá o primeiro tipo associado a mesma (DANTAS, 2020).

 O Dart é uma linguagem de programação fortemente tipada inicialmente criada pela Google em 2011. A missão inicial do Dart era substituir o JavaScript para desenvolvimento de scripts em páginas web. Porém, com a evolução da linguagem e com o passar dos anos, ela hoje pode ser considerada uma linguagem multi-paradigma, embora a linguagem apresente fortes estruturas típicas de linguagens orientadas a objeto.

 O Dart possui algumas variantes no que diz respeito a seu ambiente de execução. O código Dart pode ser executado em uma máquina virtual (chamada DartVM, máquina virtual está inserida em um conjunto de ferramentas chamado Dart Native). Esta máquina virtual ainda pode ser executada em dois modos diferentes: JIT (Just-in-Time Compiler) e AOT (Ahead-of-Time Compiler). De maneira mais simplista, a compilação JIT ocorre no momento da execução de um trecho de código, onde o código Dart é convertido para código de máquina à medida em que ele é executado.

Dart possui uma sintaxe com estilo baseado no C. Isso faz com que sua sintaxe seja muito similar à linguagens atualmente populares, como Java e C#. Porém, o Dart tenta reduzir um pouco os ruídos característicos de linguagens baseadas no C.

quinta-feira, 21 de outubro de 2021

EF Core: The name "SqlServerValueGenerationStrategy" does not exist in the current context

Solução é prática. Vamos direto ao ponto.

SqlServerValueGenerationStrategyé definido com Microsoft.EntityFrameworkCore.SqlServer.dll.

Neste caso certifique-se de instalar o seguinte pacote Microsoft.EntityFrameworkCore.SqlServer

Install-Package Microsoft.EntityFrameworkCore.SqlServer

Se desejar você pode selecionar a versão do pacote no gerenciador de pacotes

Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 5.0.11

Provedor de banco de dados Microsoft SQL Server para Entity Framework Core.

segunda-feira, 2 de agosto de 2021

Erro 0xc0202049: Tarefa de Fluxo de Dados 1: Falha ao inserir na coluna somente leitura

Assistente de importação e exportação do SQL Server Escolha "SQL Server Native Client 10". Adicione as tabelas. No Assistente de Importação e Exportação, depois de selecionar a tabela para cópia, clique no botão Edit Mappings...
Na tela resultante, clique na propriedade Enable identity insert e suas identidades serão replicadas.

sábado, 17 de julho de 2021

Enviar mensagens no ZAP sem precisar adicionar aos contatos

Copie e cole o link no navegador: https://api.whatsapp.com/send?phone=55021000000000 Os zeros (00 000 0000), é o número de telefone que deseja enviar a mensagem. Clique no botão Iniciar Conversa Em seguida clique em : Use o WhatsApp Web

quinta-feira, 15 de abril de 2021

WINDOWS FORM C# GRID ZEBRADA

Com o controle DataGridView, você pode especificar informações de estilo para alternar linhas. Isso permite usar as características de estilo como cor e fonte , além da cor da tela de fundo, para diferenciar as linhas alternadas.


Os estilos usando as propriedades RowsDefaultCellStyle e AlternatingRowsDefaultCellStyle substituem os estilos especificados nas propriedades do DataGridView


dgvLog.AlternatingRowsDefaultCellStyle.BackColor = Color.LightYellow;

dgvLog.AlternatingRowsDefaultCellStyle.ForeColor = Color.Maroon;

domingo, 11 de abril de 2021

Comunicação Síncrona e Assíncrona

 Comunicação síncrona refere-se ao contato imediato entre o emissor (quem envia a mensagem) e o receptor (quem recebe a mensagem), a comunicação assíncrona é atemporal. 

Na comunicação assíncrona o emissor envia a mensagem, mas não necessariamente o receptor irá recebê-la imediatamente.

Imaginemos que um emissor está a enviar uma mensagem de texto através de um tubo e que a mensagem é enviada recorrendo a bolas, cada bola com uma letra. Quando as bolas chegam ao receptor, a mensagem tem que ser remontada, ou seja, têm que se colocar as bolas pela ordem correta, para se voltar a ter a mensagem.

  • Em comunicação Assíncrona, cada bola tem um número de sequência, que permite que seja colocada na sua posição. Isto permite que as bolas sejam enviadas e recebidas por qualquer ordem, uma vez que esse número de sequência identifica a posição de cada bola (letra) na mensagem.
  • Em comunicação síncrona, as bolas têm que ser enviadas e recebidas de forma sincronizada, mantendo uma ordem bem definida: a primeira bola (letra) a ser enviada, tem que ser a primeira a ser recebida e assim sucessivamente.


Comunicação Síncrona

Em uma comunicação síncrona o emissor e receptor são sincronizados pelo mesmo relógio, o receptor recebe de modo contínuo (mesmo quando nenhum bit é transmitido) os dados em compasso em que o emissor as remete.

inserir a descrição da imagem aqui

Simples exemplo em Javascript:

function foo(){
    console.log("foo");
}
function bar(){
    console.log("bar");
}
function baz(){
    console.log("baz");
}
foo();
bar();
baz();

Essas funções serão executadas em ordem, bar não será executada até que foo tenha terminado e baz por sua vez só será executado após o término de bar, havendo assim uma sincronia.

Comunicação Assíncrona

Em uma comunicação assíncrona a sincronização é diferente, o emissor envia o fluxo de dados e periodicamente insere um elemento de sinal, comumente chamado de flag, para que seja possível distinguir aonde começa (a informação de início da transmissão é o start-bit) e acaba (a informação de fim de transmissão é o stop-bit) o bloco de dados e qual a sua posição na sequência de dados transmitidos.

inserir a descrição da imagem aqui

Exemplo:

function foo(){
    console.log("Executando algo assíncrono aqui");
}
function bar(){
    setTimeout(foo, 0);
    console.log("Alguma coisa por aqui");
    console.log("...");
}
bar();


Aqui não há a mesma sincronização que noutro exemplo, uma função não vai esperar pelo término da outra. Nesse exemplo usamos a função setTimeout para enfileirar foo que vai executar 0 ms após o loop de eventos, o loop de eventos ficará indisponível até completar sua atual pilha de execução - neste caso, o resto de bar, que inclui as duas declarações console.log. Após o término de bar o loop de eventos fica livre, e assim foo pode ser executada.

Saída:


Alguma coisa por aqui
...
Executando algo assíncrono aqui



Quando e para que devo usá-las? Grande parte do processo de tomada de decisão sobre isso envolve o senso comum, um conjunto de fatores, uma comunicação assíncrona pode ser usado quando a resposta não tenha que ser entregue urgentemente, esse tipo de comunicação é adequado para situações em que não seja necessário a entrega urgente dos dados, por outro lado, não seria apropriado usar esse tipo de comunicação se você precisa de interação imediata. Já a comunicação síncrona é ideal quando se precisa de espontaneidade, como em uma conversa em tempo real entre duas ou mais pessoas.

Tanto a comunicação síncrona, quanto a assíncrona, têm suas vantagens e desvantagens, utilizar uma ou outra vai depender da necessidade da sua aplicação.

segunda-feira, 29 de março de 2021

WINDOWS FORMS - DATAGRIDVIEW, OBTER O ÍNDICE DA GRID

 int indice = dgvTabelaParticulaAdicionar.CurrentCell.RowIndex; 


DataGridViewCell.RowIndex 

Obtém o índice da linha pai da célula.

WINDOWS FORMS C# - ALINHAR À DIREITA UMA COLUNA DO DATAGRIDVIEW

É bem simples. Basta definir a constantes que indicam o alinhamento de conteúdo dentro de uma célula DataGridView


 dgvTabelaParticulaAdicionar.Columns[6].DefaultCellStyle.Alignment =                                      

         DataGridViewContentAlignment.TopRight;


Campos

CAMPOS
BottomCenter512

O conteúdo é alinhado verticalmente na parte inferior e horizontalmente no centro de uma célula.

BottomLeft256

O conteúdo é alinhado verticalmente na parte inferior e horizontalmente à esquerda de uma célula.

BottomRight1024

O conteúdo é alinhado verticalmente na parte inferior e horizontalmente à direita de uma célula.

MiddleCenter32

O conteúdo é alinhado no centro vertical e horizontal de uma célula.

MiddleLeft16

O conteúdo é alinhado verticalmente no meio e horizontalmente à esquerda de uma célula.

MiddleRight64

O conteúdo é alinhado verticalmente no meio e horizontalmente à direita de uma célula.

NotSet0

O alinhamento não está definido.

TopCenter2

O conteúdo é alinhado verticalmente na parte superior e horizontalmente no centro de uma célula.

TopLeft1

O conteúdo é alinhado verticalmente na parte superior e horizontalmente à esquerda de uma célula.

TopRight4

O conteúdo é alinhado verticalmente na parte superior e horizontalmente à direita de uma célula.

Formatar TextBox Valores Decimais

 Adicione um TextBox ao seu projeto e faça as seguintes alterações:

string valor;
        private void txt_valor_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && e.KeyChar != Convert.ToChar(Keys.Back))
            {
                if (e.KeyChar == ',')
                {
                    e.Handled = (txt_valor.Text.Contains(","));
                }
                else
                    e.Handled = true;
            }            
        }

        private void txt_valor_Leave(object sender, EventArgs e)
        {
            valor = txt_valor.Text.Replace("R$", "");
            txt_valor.Text = string.Format("{0:C}", Convert.ToDouble(valor));
        }

        private void txt_valor_KeyUp(object sender, KeyEventArgs e)
        {
        	valor = txt_valor.Text.Replace("R$","").Replace(",","").Replace(" ","").Replace("00,","");
        	if(valor.Length == 0)
        	{
        		txt_valor.Text = "0,00"+valor;
        	}
        	if(valor.Length == 1)
        	{
        		txt_valor.Text = "0,0"+valor;
        	}
        	if(valor.Length == 2)
        	{
        		txt_valor.Text = "0,"+valor;
        	}
        	else if(valor.Length >= 3)
        	{
        		if(txt_valor.Text.StartsWith("0,"))
        		{
        			txt_valor.Text = valor.Insert(valor.Length - 2,",").Replace("0,","");
        		}
        		else if(txt_valor.Text.Contains("00,"))
        		{
        			txt_valor.Text = valor.Insert(valor.Length - 2,",").Replace("00,","");
        		}
        		else
        		{
        			txt_valor.Text = valor.Insert(valor.Length - 2,",");
        		}
        	}        	
        	valor = txt_valor.Text;
            txt_valor.Text = string.Format("{0:C}", Convert.ToDouble(valor));
            txt_valor.Select(txt_valor.Text.Length,0);
        }


quarta-feira, 17 de março de 2021

DATAGRIDVIEW - AJUSTAR AS COLUNAS DE FORMA AUTOMÁTICA

Propriedade: DataGridView.AutoSizeColumnsMode 



Esta propriedade Obtém ou define um valor que indica como as larguras de coluna são determinadas.

public System.Windows.Forms.DataGridViewAutoSizeColumnsMode AutoSizeColumnsMode { get; set; }

Essa propriedade permite que você configure o controle para que as larguras das colunas sejam ajustadas automaticamente para preencher o controle ou ajustar o conteúdo da célula. Os ajustes de tamanho ocorrem no modo de preenchimento sempre que a largura do controle é alterada


 dataGridView_ExamePacienteDupicados.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;