Translate

Mostrar mensagens com a etiqueta javascript. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta javascript. Mostrar todas as mensagens

sábado, 2 de novembro de 2024

☕💣 OPERADOR, O MUNDO NÃO PAROU NO =>!

 

Bellacosa Mainframe e as evoluções na codificação moderna

☕💣 OPERADOR, O MUNDO NÃO PAROU NO =>!

As Grandes Revoluções da Programação que Todo Programador COBOL Mainframe Deveria Conhecer

Se você aprendeu recentemente sobre Arrow Functions, saiba que elas representam apenas uma pequena peça de uma transformação gigantesca que aconteceu nas linguagens modernas nos últimos 20 anos.

Para um programador COBOL, é como se alguém tivesse adicionado ao COBOL:

  • JCL inteligente

  • SORT automático

  • CICS embutido

  • DB2 transparente

  • IA integrada

  • Processamento paralelo nativo

Tudo ao mesmo tempo.


1. Programação Funcional

Antes:

for (let i=0; i<clientes.length; i++) {
   console.log(clientes[i]);
}

Hoje:

clientes
   .filter(c => c.ativo)
   .map(c => c.nome)
   .forEach(nome => console.log(nome));

Conceitos:

  • map()

  • filter()

  • reduce()

  • lambda

  • arrow functions

Muito inspirada em matemática.


2. Async/Await

Uma das maiores revoluções.

Antigamente:

lerArquivo(function(resultado){
   processar(resultado);
});

Virava um pesadelo.

Hoje:

const dados = await lerArquivo();

Para um coboleiro:

Parece um:

CALL "LERARQ"
CALL "PROCESSA"

Só que para internet, APIs e bancos.


3. APIs REST

Hoje praticamente tudo conversa por APIs.

Exemplo:

GET /clientes/123

Resposta:

{
  "nome":"Bellacosa",
  "cidade":"Santos"
}

É quase como fazer um:

READ CLIENTES
   KEY = 123

Mas através da internet.


4. JSON

O sucessor espiritual dos layouts COPYBOOK.

COBOL:

01 CLIENTE.
   05 NOME PIC X(30).
   05 IDADE PIC 999.

JSON:

{
  "nome":"Vagner",
  "idade":50
}

Hoje praticamente tudo usa JSON.


5. Containers (Docker)

Uma revolução enorme.

Antes:

Instale sistema
Instale bibliotecas
Configure ambiente
Configure servidor

Hoje:

docker run aplicacao

Tudo já vem pronto.

É como distribuir um ambiente z/OS inteiro dentro de uma imagem.


6. Cloud Computing

Antes:

Comprar servidor
Instalar servidor
Administrar servidor

Hoje:

AWS
Azure
Google Cloud
IBM Cloud

Você aluga recursos por minuto.


7. Microserviços

Antes:

Sistema gigante

Hoje:

Serviço Clientes
Serviço Pagamentos
Serviço Estoque
Serviço Vendas

Lembra bastante a filosofia de programas COBOL independentes.


8. Git

Outra revolução absurda.

Antes:

PROG1.CBL
PROG1NOVO.CBL
PROG1NOVOFINAL.CBL
PROG1FINALAGORA.CBL

Hoje:

git commit
git branch
git merge

Controle de versões profissional.


9. DevOps

Antes:

Programador desenvolvia.

Operação implantava.

Hoje:

As equipes trabalham juntas.

Ferramentas:

  • GitHub

  • GitLab

  • Jenkins

  • Azure DevOps


10. CI/CD

Integração Contínua.

Você salva:

git push

Automaticamente:

Compila
Testa
Valida
Publica

Lembra um pipeline JCL automático.


11. Inteligência Artificial

A maior revolução atual.

Exemplo:

def calcula_imposto():

IA:

Crie uma função para calcular imposto.

O código aparece pronto.

Ferramentas:

  • ChatGPT

  • GitHub Copilot

  • Claude

  • Gemini


12. Low-Code e No-Code

Ferramentas como:

  • N8N

  • Power Automate

  • Zapier

Permitem criar automações sem programar muito.

Você literalmente desenha fluxos.


13. TypeScript

JavaScript moderno com tipagem.

JavaScript:

let valor = "100";

TypeScript:

let valor:number = 100;

Programadores COBOL costumam gostar muito porque lembra a disciplina dos PICs.


14. WebAssembly (WASM)

Uma das tecnologias mais promissoras.

Permite executar:

  • C

  • C++

  • Rust

  • COBOL

Dentro do navegador.

Imagine rodar um programa COBOL diretamente no Chrome.

Isso já existe.


15. Programação Reativa

Em vez de perguntar:

Mudou?
Mudou?
Mudou?

O sistema avisa sozinho.

Muito usada em:

  • React

  • Angular

  • Vue


16. Rust

A estrela atual dos sistemas.

Criada pela Mozilla.

Promete:

  • Velocidade de C

  • Segurança de Java

  • Menos bugs

Empresas usando:

  • Microsoft

  • Amazon

  • Google

  • Cloudflare


17. Kotlin

Substituindo Java em muitos projetos.

Mais simples.

Mais seguro.

Menos código.


18. GraphQL

Alternativa moderna ao REST.

Você pede exatamente os dados que deseja.

Exemplo:

{
   cliente {
      nome
      saldo
   }
}

19. Event Driven Architecture

Arquitetura baseada em eventos.

Exemplo:

Cliente comprou
↓
Evento gerado
↓
Pagamento processa
↓
Estoque atualiza
↓
Entrega inicia

Lembra MQSeries/MQ do Mainframe.


20. Agentes de IA

A próxima revolução.

Hoje a IA não apenas responde.

Ela:

  • Pesquisa

  • Programa

  • Executa tarefas

  • Toma decisões

  • Chama APIs

  • Cria workflows

Ferramentas:

  • OpenAI Agents

  • LangChain

  • CrewAI

  • AutoGen

  • N8N AI Agents


O Que Eu Estudaria Primeiro Sendo um Coboleiro?

Ordem ideal:

Nível 1

✅ JSON
✅ APIs REST
✅ Git
✅ JavaScript Moderno
✅ Arrow Functions


Nível 2

✅ Node.js
✅ TypeScript
✅ Docker
✅ Cloud


Nível 3

✅ N8N
✅ IA Generativa
✅ Agentes de IA
✅ MCP (Model Context Protocol)


Nível 4

✅ Rust
✅ WebAssembly
✅ Arquiteturas Event Driven


Resumo Bellacosa Mainframe

Se em 1970 a revolução foi o surgimento do CICS, em 1980 o DB2, em 1990 a internet e em 2000 os Web Services, então a década atual está sendo marcada por cinco grandes pilares:

IA Generativa, Agentes de IA, Cloud Computing, Arquiteturas Baseadas em Eventos e Desenvolvimento Assistido por IA.

Para um profissional de Mainframe, aprender apenas JavaScript já não é suficiente. O diferencial moderno está em entender como conectar o mundo COBOL, CICS, DB2 e z/OS a APIs, nuvem, automação e inteligência artificial. É exatamente nessa integração que estão surgindo as oportunidades mais interessantes do mercado. 🚀☕💣


sexta-feira, 6 de maio de 2022

As Melhores Plataformas Gratuitas para Aprender Programação e Tecnologia

 

Bellacosa Mainframe e dicas para iniciar na informatica de forma gratuitamente 

☕ Um Café no Bellacosa Mainframe

As Melhores Plataformas Gratuitas para Aprender Programação e Tecnologia

Você Não Está Aprendendo Apenas Linguagens. Está Construindo uma Nova Forma de Pensar.

"Todo programador experiente já foi um iniciante olhando para uma tela em branco, convencido de que nunca conseguiria entender aquilo. A diferença entre quem desistiu e quem construiu uma carreira não foi inteligência. Foi persistência."

Existe um mito muito antigo na informática.

O mito diz que existem pessoas que "nascem programadoras".

Que algumas crianças olham para um computador e imediatamente entendem códigos, algoritmos, redes, inteligência artificial e bancos de dados.

Depois de mais de trinta anos trabalhando com tecnologia, IBM Mainframe, COBOL e grandes sistemas corporativos, posso afirmar uma coisa com absoluta tranquilidade:

Isso simplesmente não existe.

Todo profissional que você admira já ficou perdido.

Todo especialista já digitou comandos errados.

Todo arquiteto de software já escreveu códigos horríveis.

Todo engenheiro já pesquisou no Google algo extremamente básico.

E todo programador começou exatamente como você está agora.

Sem saber praticamente nada.

A boa notícia?

Nunca foi tão fácil aprender.

Nunca existiram tantas plataformas gratuitas.

Nunca houve tanto material de qualidade disponível.

Nunca houve tantas oportunidades para quem deseja crescer.

Pegue seu café.

Hoje vamos conversar como dois amigos.


Antes de Aprender Linguagens, Aprenda a Aprender

Muitos iniciantes cometem exatamente o mesmo erro.

Eles perguntam:

"Qual linguagem paga mais?"

Ou:

"Qual linguagem devo aprender primeiro?"

Na verdade, essa é a pergunta errada.

A pergunta correta seria:

Como funciona um computador?

Porque linguagens mudam.

Ferramentas mudam.

Frameworks mudam.

Mas os fundamentos continuam praticamente iguais há décadas.

Foi exatamente isso que permitiu ao COBOL, criado em 1959, continuar executando bilhões de transações diariamente.

Os conceitos continuam vivos.

Mudam apenas as ferramentas.


Imagine uma Caixa de Ferramentas

Suponha que você queira construir uma casa.

Você compra um martelo.

Será que consegue construir tudo apenas com ele?

Claro que não.

Também precisará de:

  • Serra

  • Trena

  • Alicate

  • Chaves

  • Furadeira

  • Nível

  • Parafusadeira

Nenhuma ferramenta substitui a outra.

Na programação acontece exatamente a mesma coisa.

HTML não substitui Java.

Python não substitui SQL.

Git não substitui JavaScript.

Cada tecnologia resolve um tipo diferente de problema.


1. HTML — O Esqueleto da Internet

Se você abrir qualquer página da Internet, encontrará HTML.

Ele está em praticamente todos os sites do planeta.

Mas aqui vem uma surpresa.

HTML não é uma linguagem de programação.

Ele organiza informações.

É como a planta de uma casa.

Imagine um jornal.

Existe o título.

Depois o subtítulo.

Depois fotografias.

Depois os parágrafos.

HTML organiza exatamente isso.

Ele informa ao navegador:

"Aqui existe um título."

"Aqui existe uma tabela."

"Aqui existe uma imagem."

Sem HTML, praticamente não existiria Web.

É um excelente primeiro passo porque você aprende rapidamente e já consegue criar páginas simples em poucas horas.


2. CSS — A Arte de Deixar Tudo Bonito

Imagine um prédio recém-construído.

As paredes existem.

Os quartos também.

Mas tudo está cinza.

Sem pintura.

Sem decoração.

Sem móveis.

CSS faz exatamente esse trabalho.

Ele transforma algo simples em algo agradável.

Você decide:

  • cores

  • fontes

  • tamanhos

  • espaçamentos

  • animações

  • posicionamento

É o designer trabalhando junto do programador.

Hoje praticamente todo site moderno depende fortemente de CSS.


3. JavaScript — A Magia Começa

Até agora criamos páginas bonitas.

Mas elas ainda são "paradas".

JavaScript adiciona vida.

Quando você clica em um botão...

Quando aparece uma janela...

Quando o menu abre...

Quando um formulário verifica seus dados...

Existe uma enorme chance de existir JavaScript trabalhando nos bastidores.

É provavelmente a linguagem mais popular da Internet.

E uma das mais importantes do mercado.


Pense Como um Programador

Um programa nada mais faz do que responder perguntas.

Por exemplo:

"O cliente possui saldo?"

"Está logado?"

"Pode continuar?"

"Existe estoque?"

Você já faz isso diariamente.

Imagine fazer um café.

Você pensa:

"Existe água?"

"Existe pó?"

"Existe energia?"

Sem perceber, seu cérebro já executa algoritmos.

Programar significa ensinar o computador a fazer o mesmo raciocínio.


4. React — Construindo Interfaces Modernas

Se JavaScript fosse o motor de um carro...

React seria a carroceria moderna.

Ele organiza a construção de aplicações grandes.

Imagine montar um Lego.

Cada peça possui uma função.

Menu.

Botão.

Janela.

Tabela.

Tudo separado.

Depois tudo se encaixa.

Essa é a ideia do React.

Por isso empresas como Meta, Netflix e Airbnb utilizam essa tecnologia.


5. Python — O Canivete Suíço da Programação

Existe uma linguagem capaz de fazer praticamente tudo?

A resposta mais próxima é Python.

Ela aparece em:

Inteligência Artificial.

Automação.

Ciência de Dados.

Robótica.

Segurança.

Sites.

APIs.

Scripts.

Machine Learning.

Se você já ouviu falar em ChatGPT, provavelmente sabe que boa parte das ferramentas de Inteligência Artificial utiliza Python.

Ela ficou famosa porque sua sintaxe parece quase uma frase em inglês.

Isso reduz bastante a dificuldade para iniciantes.


O Segredo Não Está na Linguagem

Muitos acreditam que aprender Python os transformará automaticamente em especialistas.

Infelizmente não funciona assim.

A linguagem é apenas o lápis.

O desenho depende do artista.


6. Java — O Gigante Corporativo

Se Python domina startups...

Java domina grandes empresas.

Bancos.

Seguradoras.

Companhias aéreas.

Telecomunicações.

Órgãos governamentais.

Milhões de aplicações utilizam Java diariamente.

Sua principal característica é estabilidade.

Uma aplicação escrita há muitos anos ainda pode continuar funcionando perfeitamente.

Essa filosofia lembra bastante o IBM Mainframe.

Não é coincidência.

Grandes empresas valorizam confiabilidade.


7. PHP — Muito Mais Forte do Que Parece

Existe uma brincadeira recorrente na Internet dizendo que PHP morreu.

Curiosamente...

Ele continua extremamente vivo.

Boa parte dos sites do mundo roda sobre PHP.

O WordPress, responsável por milhões de páginas, utiliza essa linguagem.

Ela continua sendo excelente para desenvolvimento Web.

Nunca julgue uma tecnologia apenas porque virou meme.

O mercado costuma pensar diferente das redes sociais.


8. Cybersecurity — O Guarda-Costas Digital

Imagine deixar a porta da sua casa aberta.

Não parece uma boa ideia.

Com computadores acontece exatamente a mesma coisa.

Hackers procuram portas abertas.

Falhas.

Senhas fracas.

Erros.

Profissionais de segurança trabalham justamente para impedir isso.

Mesmo que você nunca queira trabalhar com segurança, entender seus conceitos fará você escrever sistemas melhores.


9. Linguagem C — Entendendo o Computador

Se você deseja realmente compreender como computadores funcionam...

Aprenda C.

Ela mostra coisas que linguagens modernas escondem.

Memória.

Ponteiros.

Processadores.

Sistema Operacional.

Compiladores.

Depois de aprender C, praticamente todas as outras linguagens parecem mais simples.


10. C++ — Performance Máxima

Jogos modernos.

Motores gráficos.

Simulações científicas.

Robótica.

Mercado financeiro.

Tudo isso utiliza C++.

É uma linguagem poderosa.

Complexa.

Mas extremamente rápida.

Quando desempenho é prioridade, C++ continua sendo uma excelente escolha.


11. AWS — O Computador Agora Mora na Nuvem

Antigamente as empresas compravam servidores.

Hoje muitas alugam infraestrutura.

Isso recebeu o nome de Cloud Computing.

AWS é uma das maiores plataformas desse mercado.

Mas existe um detalhe curioso.

A nuvem não eliminou os Data Centers.

Ela apenas mudou a forma de consumir recursos.

Na prática, alguém continua cuidando de computadores gigantescos.

Muitas vezes, esses computadores incluem IBM Z, Linux, servidores x86 e armazenamento corporativo trabalhando juntos.


12. Inteligência Artificial

Este provavelmente é o assunto mais comentado dos últimos anos.

Mas existe muito marketing.

IA não é magia.

Ela não pensa como seres humanos.

Ela identifica padrões.

Aprende com enormes quantidades de dados.

Produz respostas estatisticamente prováveis.

Quanto melhor você compreender programação...

Melhor utilizará Inteligência Artificial.

A IA não substitui conhecimento.

Ela potencializa quem já possui conhecimento.


13. Git — A Máquina do Tempo dos Programadores

Imagine escrever um livro durante seis meses.

No dia seguinte alguém apaga metade do texto.

Sem cópia.

Sem histórico.

Seria desesperador.

Git resolve exatamente esse problema.

Ele guarda versões.

Permite voltar atrás.

Mostra quem alterou cada linha.

Facilita o trabalho em equipe.

Hoje praticamente nenhuma empresa séria desenvolve software sem Git.

Aprender Git cedo economiza incontáveis horas de trabalho.


14. SQL — Conversando com Bancos de Dados

Imagine uma biblioteca com milhões de livros.

Como encontrar apenas um?

Você faz uma consulta.

SQL faz exatamente isso.

Ele conversa com bancos de dados.

Pergunta.

Filtra.

Ordena.

Atualiza.

Remove.

Insere informações.

Praticamente todo sistema corporativo utiliza algum banco de dados.

Logo, praticamente todo programador precisa conhecer SQL.


Mas Existe Algo Ainda Mais Importante

Observe atentamente a lista.

Ela mostra tecnologias.

Ferramentas.

Sites.

Cursos.

Mas existe algo invisível.

Algo que nenhuma plataforma ensina diretamente.

Aprender a resolver problemas.

Esse é o verdadeiro objetivo.

A linguagem mudará.

Os computadores mudarão.

As empresas mudarão.

Mas a capacidade de analisar um problema continuará valiosa.


O Que Todo Padawan Precisa Entender

No universo de Star Wars, um Padawan não aprende apenas a usar um sabre de luz.

Ele aprende disciplina.

Paciência.

Treinamento.

Raciocínio.

Com programação acontece exatamente igual.

Você não está aprendendo comandos.

Está treinando seu cérebro.

Cada exercício melhora sua capacidade lógica.

Cada erro fortalece sua experiência.

Cada bug ensina algo novo.


E Onde Entra o IBM Mainframe?

Talvez você imagine que essas plataformas não tenham relação alguma com Mainframe.

Na verdade, possuem muita relação.

Hoje um sistema bancário pode utilizar:

  • COBOL processando milhões de transações.

  • Java executando serviços corporativos.

  • APIs REST expondo funcionalidades.

  • React construindo interfaces.

  • SQL consultando bancos relacionais.

  • Python automatizando tarefas.

  • Git controlando versões.

  • AWS hospedando componentes na nuvem.

  • Inteligência Artificial analisando dados.

  • Ferramentas de segurança protegendo todo o ambiente.

Ou seja, o profissional moderno precisa compreender como essas peças trabalham juntas.

O Mainframe continua sendo um dos pilares desse ecossistema, convivendo com tecnologias modernas e integrando aplicações críticas ao restante da infraestrutura.


Não Tenha Medo de Errar

Talvez este seja o conselho mais importante deste artigo.

Você vai errar.

Muito.

Vai esquecer comandos.

Vai passar horas procurando um ponto e vírgula.

Vai achar que não nasceu para isso.

Todos nós passamos por essa fase.

O segredo nunca foi evitar erros.

O segredo sempre foi continuar estudando.

Cada pequeno programa escrito hoje será um degrau para algo maior amanhã.


Um Plano Simples Para os Próximos 90 Dias

Se você está começando agora, não tente aprender tudo ao mesmo tempo. Escolha um ritmo constante e realista.

Primeiro mês: aprenda lógica de programação, HTML e CSS. Crie páginas simples e acostume-se a pesquisar documentação.

Segundo mês: estude JavaScript, Git e SQL. Faça pequenos projetos e publique tudo em um repositório no GitHub.

Terceiro mês: escolha uma linguagem principal, como Python ou Java, e desenvolva um projeto completo que envolva interface, banco de dados e controle de versões.

Ao final desses três meses, você não será um especialista. Mas já terá construído uma base muito mais sólida do que a maioria das pessoas que apenas consomem vídeos sem praticar.


Conclusão

Aprender programação nunca foi apenas aprender uma linguagem.

É aprender a observar problemas, decompor desafios em pequenas partes, testar hipóteses, corrigir erros e evoluir continuamente.

As plataformas gratuitas apresentadas nesta lista são excelentes portas de entrada porque oferecem conteúdo acessível, exercícios práticos e uma comunidade enorme de estudantes. Porém, elas são apenas o começo da jornada. O verdadeiro crescimento acontece quando você transforma teoria em prática, cria projetos próprios, lê documentação, participa de comunidades e mantém a curiosidade viva.

Lembre-se de uma última lição do Bellacosa Mainframe:

"Nenhum Data Center foi construído em um único dia. Nenhum grande sistema nasceu completo. E nenhum programador acordou especialista. Todo gigante da tecnologia começou escrevendo seu primeiro 'Hello, World!'. O próximo pode muito bem ser você."

Prepare seu café, abra seu editor de código e dê o primeiro passo. O computador não espera perfeição. Ele espera apenas que você tenha coragem de começar.

segunda-feira, 4 de abril de 2022

☕💣 OPERADOR, O SINAL => ACABOU DE INVADIR O DATA CENTER! Arrow Functions: A Revolução das Funções Modernas Explicada para Quem Vem do COBOL Mainframe

 

Bellacosa Mainframe 

☕💣 OPERADOR, O SINAL => ACABOU DE INVADIR O DATA CENTER!

Arrow Functions: A Revolução das Funções Modernas Explicada para Quem Vem do COBOL Mainframe

Se você programa COBOL há anos, provavelmente está acostumado com estruturas como:

PERFORM CALCULA-IMPOSTO.

ou

CALL "PROGRAMA1" USING WS-DADOS.

Quando entra no mundo JavaScript moderno, uma das primeiras coisas que aparecem é um símbolo aparentemente estranho:

() => {}

Essa construção é chamada de Arrow Function (Função Seta).

À primeira vista parece criptografia de hacker.

Mas, na prática, ela representa apenas uma forma mais moderna e compacta de escrever funções.


Um Pouco de História

As Arrow Functions foram introduzidas em:

ECMAScript 6 (ES6) - 2015

O ECMAScript é a especificação oficial do JavaScript.

A proposta foi desenvolvida por diversos membros do comitê TC39, responsável pela evolução da linguagem JavaScript.

A inspiração veio principalmente de linguagens funcionais como:

  • Haskell

  • Scala

  • CoffeeScript

  • C#

  • Java 8 (Lambdas)

O objetivo era:

  • Escrever menos código

  • Tornar funções mais legíveis

  • Resolver problemas com o contexto do this


Como Era Antes

Função tradicional:

function soma(a, b) {
   return a + b;
}

Uso:

console.log(soma(10,5));

Resultado:

15

A Mesma Coisa com Arrow Function

const soma = (a, b) => {
   return a + b;
};

Resultado:

15

Mesma lógica.

Sintaxe diferente.


Traduzindo para a Cabeça de um Coboleiro

Imagine:

CALCULA-SOMA.
    COMPUTE WS-RESULTADO = WS-A + WS-B.

Arrow Function:

(a,b) => a+b

É como se fosse:

ENTRADA -> PROCESSAMENTO

O símbolo:

=>

significa aproximadamente:

"transforma isso em"

ou

"recebe isto e executa aquilo"

Anatomia da Arrow Function

Exemplo:

const dobro = (numero) => {
   return numero * 2;
};

Partes:

(numero)

Parâmetro de entrada.

=>

Arrow.

{
   return numero * 2;
}

Bloco executado.


Forma Super Compacta

Quando existe apenas um retorno:

const dobro = numero => numero * 2;

Equivale a:

const dobro = function(numero){
   return numero * 2;
}

Comparação Lado a Lado

Tradicional

function quadrado(x){
   return x*x;
}

Arrow

const quadrado = x => x*x;

Exemplo Prático de Mainframe

Imagine um arquivo contendo salários.

COBOL:

PERFORM VARYING I FROM 1 BY 1
   UNTIL I > TOTAL-REGISTROS

   COMPUTE WS-NOVO-SALARIO =
           WS-SALARIO(I) * 1.10

END-PERFORM

JavaScript:

salarios.map(salario => salario * 1.10);

Observe:

salario => salario * 1.10

é uma Arrow Function.


O Que é map()?

O método percorre uma lista.

Para cada elemento executa a função.

Visualmente:

1000
2000
3000

Passa por:

salario => salario * 1.10

Resultado:

1100
2200
3300

Por Que Virou Tão Popular?

Antes:

numeros.forEach(function(numero){
   console.log(numero);
});

Depois:

numeros.forEach(numero => console.log(numero));

Menos código.

Mais legibilidade.


O Grande Problema Que Ela Resolve

No JavaScript existe algo chamado:

this

Ele gera muita confusão.

Exemplo antigo:

function Pessoa() {

   this.nome = "Bellacosa";

   setTimeout(function() {

      console.log(this.nome);

   },1000);

}

Resultado:

undefined

Porque o this muda de contexto.


Com Arrow Function

function Pessoa() {

   this.nome = "Bellacosa";

   setTimeout(() => {

      console.log(this.nome);

   },1000);

}

Resultado:

Bellacosa

A Arrow Function herda o contexto externo.

Isso eliminou milhares de bugs.


Vantagens

1. Menos Código

Antes:

function(x){
   return x*2;
}

Depois:

x => x*2

2. Melhor Leitura

Especialmente em:

filter()
map()
reduce()
forEach()

3. Resolve Problemas de this

Grande vantagem.


4. Ideal para Programação Funcional

Muito usada em:

  • React

  • Angular

  • Vue

  • Node.js


Desvantagens

Não Possui Próprio this

Às vezes isso é ruim.

const pessoa = {
   nome: "João",
   falar: () => {
      console.log(this.nome);
   }
}

Pode não funcionar como esperado.


Não Pode Ser Usada Como Construtor

Isto funciona:

function Pessoa(){}
new Pessoa();

Isto não:

const Pessoa = () => {};
new Pessoa();

Erro.


Menos Clara em Funções Grandes

Isto:

const calcula = () => {
   ...
   ...
   ...
   ...
}

Às vezes fica menos legível que uma função tradicional.


Linguagens que Possuem Conceito Semelhante

Java

x -> x * 2

C#

x => x * 2

Kotlin

{ x -> x * 2 }

Scala

x => x * 2

Python

lambda x: x * 2

Ruby

->(x) { x * 2 }

Como Ler uma Arrow Function

Quando encontrar:

(cliente) => cliente.nome

Leia mentalmente:

Receba cliente
Retorne cliente.nome

Outro exemplo:

(a,b) => a+b

Leia:

Receba A e B
Retorne A+B

Como Construir Uma

Passo 1

Escreva a função tradicional.

function multiplica(a,b){
   return a*b;
}

Passo 2

Remova a palavra function.

(a,b){
   return a*b;
}

Passo 3

Adicione a seta.

(a,b) => {
   return a*b;
}

Passo 4

Se houver apenas um retorno:

(a,b) => a*b

Pronto.


Truque Para Coboleiros

Sempre pense:

ENTRADA => SAÍDA

Exemplos:

x => x*2

"Recebe X e devolve o dobro."


nome => nome.toUpperCase()

"Recebe nome e devolve maiúsculo."


cliente => cliente.saldo

"Recebe cliente e devolve saldo."


Regra de Ouro

Se você enxergar:

=> 

Pergunte:

O que entra?

Está à esquerda.

(cliente)

O que sai?

Está à direita.

cliente.nome

Então:

(cliente) => cliente.nome

significa:

ENTRA CLIENTE
SAI O NOME

Exatamente como uma pequena rotina COBOL que recebe um registro e devolve um campo.


Resumo Bellacosa Mainframe

Se fosse explicar Arrow Function para um operador ou programador COBOL em uma única frase:

Arrow Function é uma forma moderna, compacta e mais inteligente de escrever rotinas pequenas em JavaScript, funcionando como um "PERFORM inline" que recebe dados à esquerda da seta e devolve um resultado à direita.

Quando você começar a estudar React, Node.js, APIs REST, automações em N8N ou agentes de IA em JavaScript, verá Arrow Functions em praticamente todo lugar. Entender => é equivalente a aprender PERFORM, CALL e SECTION nos primeiros dias de COBOL: é um dos fundamentos da linguagem moderna.


quarta-feira, 19 de janeiro de 2022

💀💀💀 Zalgo uma pequena sabotagem na biblioteca FAKER.Js 💀💀💀

 


Bellacosa Mainframe e o virus Zalgo assuntando o mundo JS

Risco de Software? Sabotagem em código: Estudo do Caso Zalgo

Salve jovem padawan, hoje vamos comentar sobre um acontecimento quente que ocorreu nos últimos dias, mais precisamente por volta de 10 de janeiro, algo que nos faz parar, avaliar, analisar e pensar em todo o enredo.

No alt text provided for this image

Calma que explicarei, bombasticamente aconteceu uma alteração no código fonte de duas famosas bibliotecas em JavaScript, utilizada por milhares de desenvolvedores no mundo afora. Coisas de software livre e comunidade colaborativa.

Num primeiro momento foi uma sabotagem no código fonte, que gerou comportamento errático e anômalo em ambas as bibliotecas, que causou comoção na comunidade.

O que aconteceu na faker.js e colors.js?

No começo do ano vários desenvolvedores notaram uma situação anômala, semelhante há um vírus no funcionamento destas bibliotecas, que no decorrer da sua execução apresentavam uma mensagem no console, seguida de uma série de caracteres estranhos.

LIBERTY LIBERTY LIBERTY

No alt text provided for this image

Liberdade Liberdade Liberdade.

No alt text provided for this image

Inúmeros programas foram retirados de produção e backups foram utilizados para restaurar a versão anterior, deixando gerentes de TI e equipes muitíssimas preocupadas, seria apenas isso, ou existiria algum backdoor ou outra rotina maliciosa dentro das bibliotecas?

Por vias das dúvidas, os programas ficaram em quarentena, enquanto os especialistas em segurança avaliavam a ameaça e elaboravam relatórios de segurança.

O que é Faker.Js ?

É uma biblioteca utilizada para mockar dados em back-end utilizada especificamente para teste em apis, testes de carga e funcionamento de workflows com uma massiva criação de dados fake.

Podendo ser utilizado via instalação NPM ou Yarm, mas também referenciada em páginas HTML sendo muito útil para os desenvolvedores

O que é Colors.js?

É uma biblioteca de cores utilizada para front-end auxiliando o desenvolvimento de pagina parametrizando códigos de cores em CSS, HTML e aplicativos.

A história por trás do caos

Em teoria não existe nenhum risco nas Bibliotecas, os analistas de segurança correram a verificar e recomendaram a não utilização, pois a credibilidade ficou abalada, porem segundo algumas fontes não ocorreu nenhuma invasão ou ataque de crackers.

A princípio a comunidade DEV creditou a cyberpiratas ou mesmo trolls, que poderiam usar uma quebra de senha e infiltrando-se na comunidade para inserir vírus, worms, trojans e outros malwares num código amplamente utilizado por milhões de programadores em milhares de empresas.

Mas na verdade foi um ato de anarquia digital, onde o próprio autor fez um manifesto de revolta e honrou a memória de uma vítima dos abusos policial, sendo vítima de um golpe kafkiano.

Investigando o fonte

Uma análise no código de ambas as bilbiotecas encontrou uma explicação no arquivo README.TXT do projeto, estava uma questão: o que realmente aconteceu com Aaron Swartz?”

https://github.com/Marak/faker.js

O grande Aaron Swartz

No alt text provided for this image

Estou me referindo ao grande programador e hackativista pro-SOPA, em vida participou ativamente em diversos projetos open-source, auxiliou na criação e melhorias no RSS, no markdown.

Acabou sendo vítima de uma armadilha do FBI e acabou sendo processado correndo o risco de pegar até 30 anos de cadeia, mas devido as suas habilidades como programador, queriam agenciar seu trabalho e faze-lo renegar o seu ativismo, levando-o para o lado negro da força, sendo que se aceitasse comutaria sua pena de prisão para apenas 6 meses.

Declarando-se inocente, não aceitou o acordo com a promotoria e como último ato nesta tragédia tirou a própria vida, enforcando-se no dia 11-01-2013, mas não vendendo-se.

O principal suspeito

Após análises preliminares foi constatado que não houve invasão e o código estava seguro, sendo que o autor da pichação virtual foi Marak Squires, o responsável pelo código malicioso, sendo que ele é o autor de ambas as bibliotecas.

O ato e a tragédia

Afinal o Zalgo não causou danos a ninguém, apenas assustou a comunidade pegando as empresas de segurança de software de surpresa, afinal o uso de bibliotecas de terceiros é um furo de segurança.

Podendo ser explorado por crackers para no futuro usa-las como cavalos de troia e adentrarem CPDs de empresas importantes.

A princípio as políticas de segurança devem ser revistas e todo software open-source devem ser utilizados com atenção.

O que é zalgo?

Hoje apresentei inúmeros termos novos, vamos explorar um outro termo, comum na Deep Web, Zalgo, também conhecido como Z'algatoth, originalmente era um meme oriundo do site de discussão e compartilhamento de imagens Something Awful criado pelo usuário Shmork pseudônimo de Dave Kelly), que acabou se tornando um personagem significativo dentre a comunidade de creepypastas e migrou para inúmeras redes sociais.

Cyber protestos

A cada dia surge uma nova maneira dos cyberativistas se pronunciarem e compartilhar com toda a comunidade seu ponto de vista e lançar memória de uma grande pessoa vítima do sistema, Swartz foi um gênio e imagine o quando poderia ter produzido se sua vida não tivesse sido abreviada, convido a todos a lerem sua biografia no Wikipédia.

Uma comunidade atuante

Se gosta de programar convido-o a explorar o GITHUB, que existem inúmeras comunidades que trabalham para o bem comum, codificando ferramentas para auxiliar a produtividade e criar apps livres e sem licenças.

Muitas pessoas ficaram indignadas com os administradores do GitHub por terem suspenso a conta de Squires, afinal de contas, ele nao fez nenhum ato indevido, afinal o código era dele e o repositório idem, nao prejudicou ninguém apenas gerou muita repercussão e fez a comunidade parar, pensar e homenagear a memoria de um grande Dev.

Conclusão

Caro padawan hoje o tiozão apresentou mais um caso curioso no mundo da informática, quem conhece alguns dos temas abordados e quiserem aproveitar para enriquecer nosso artigo, fiquem a vontade e deixem nos comentários.

Eu particularmente fiquei muito emocionado na sigila homenagem e ao mesmo tempo protesto bem-humorado, que deixou muita gente de cabelo em pé.

Espero ter ajudado, lembre-se que é um trabalho continuo.


No alt text provided for this image


Mais momento jabá, para distrair, uma visita a Araraquara, num insólito posto de gasolina, onde o Batman e seu grande fan, criaram inúmeras atrações para ser explorado, para a alegria de miúdos e graúdos, e se tiverem um pouco de sorte poderão dar uma volta no Bat-movel, visite meu vídeo e veja para onde fui desta vez:


Pode me dar uma ajudinha no YouTube?


Artigo original : https://web.dio.me/articles/zalgo-uma-pequena-sabotagem-bibliotecas-na-fakerjs?back=%2Farticles&open-modal=true&page=1&order=oldest