Requisitos necessários pra trampar na @woovibr:
- Relay
- NoCloud
- Idempotencia
- Multitenant
- Breaking changes
- Backward compatibility
- Consistência Eventual
- Feature flag
/* eslint-disable react-hooks/rules-of-hooks */ | |
// 24:33 error React Hook "useNextRouter" is called conditionally. React Hooks must be called in the exact same order in every component render react-hooks/rules-of-hooks | |
// 25:43 error React Hook "useReactRouterNavigate" is called conditionally. React Hooks must be called in the exact same order in every component render react-hooks/rules-of-hooks | |
// 43:35 error React Hook "useNextPathname" is called conditionally. React Hooks must be called in the exact same order in every component render react-hooks/rules-of-hooks | |
// 44:37 error React Hook "useReactRouterLocation" is called conditionally. React Hooks must be called in the exact same order in every component render react-hooks/rules-of-hooks | |
'use client'; | |
import { usePathname as useNextPathname, useRouter as useNextRouter } from 'next/navigation'; | |
import { |
// Migrate from eslint-plugin-import (no ESLint v9 support, multiple issues and missing features) | |
// to eslint-plugin-import-x | |
// | |
// - https://www.npmjs.com/package/eslint-plugin-import | |
// - https://www.npmjs.com/package/eslint-plugin-import-x | |
// First, install `eslint-plugin-import-x` (and for TypeScript support, `@typescript-eslint/parser`) | |
-import eslintImport from 'eslint-plugin-import'; | |
+import eslintImportX from 'eslint-plugin-import-x'; |
For the next 30 days, I decided to improve my pentesting skills. So, inspired in the challenge of #100DaysOfCode, i create the challenge #30DaysOfCTF. | |
## Main Rules: | |
1. Resolve a CTF challenge every day; | |
2. Create and publish a WriteUp about the CTF; | |
3. Share my progress and the WriteUp in the social midia with the hashtag #30DaysOfCTF. | |
My #30DaysOfCTF starters in 05/13/2024. |
function addSibs () { | |
const div = document.createElement('div') | |
const img = document.createElement('img') | |
div.style.position = 'fixed' | |
div.style.zIndex = '99999999' | |
div.style.right = '100px' | |
div.style.bottom = '0px' | |
div.appendChild(img) |
function addSibs () { | |
const div = document.createElement('div') | |
const img = document.createElement('img') | |
div.style.position = 'fixed' | |
div.style.zIndex = '99999999' | |
div.style.right = '100px' | |
div.style.bottom = '0px' | |
div.appendChild(img) |
// https://github.com/vitest-dev/vitest/issues/1575#issuecomment-1439286286 | |
export const setup = () => { | |
process.env.TZ = 'UTC'; | |
process.env.NODE_ENV = 'test'; | |
// add process.env mocks | |
}; |
Ativos financeiros representam a posse de um direito econômico que pode gerar lucro ao longo do tempo. Os ativos possuem preço, identificação, titular, tipo (ações, títulos do tesouro direto, títulos de CDB, etc...) e podem ser negociados no mercado financeiro dependendo da política de cada tipo. Também são conhecidos como "papéis" embora sejam títulos digitais intangíveis. Um ativo financeiro pode aumentar de rentabilidade ao longo do tempo, por exemplo, quem comprou uma ação da Empresa A na bolsa da Nasdaq no dia 2 de novembro de 2020, pagou $52,95. Hoje esse mesmo ativo está valendo $69,33 representando uma rentabilidade de %30,93 para o titular.
Aplicativos de carteira de investimentos são muito comuns no mercado financeiro quando estamos falando do gerenciamento de ativos financeiros. A ideia é ajudar investidores a manterem sua lista de ativos comprados, rendimento, valor total por ativo, tipo de operação, et
Dev abre PR, e o CI roda testes, verifica se build passa, é feito code review e o merge é feito para main.
Todo código novo na main vai gerar uma nova CI e CD, uma release para ambiente de staging, onde é feito o QA pelas partes interessadas (Dev, QA, Product).
O controle do que pode ser exibido por ambiente é feito por feature flags, basicamente um if
no código que verifica se no ambiente X (staging | production) a feature pode ser ativada ou desativada.
Estou desenvolvendo um ERP completo para a área de Odontologia, onde posso aprimorar meus conhecimentos e colocá-los em um projeto profissional real. Durante este período, estou utilizando o NestJs para criar os primeiros endpoints, incluindo um para login. Aprendi mais sobre como armazenar senhas em banco de dados e protegê-las usando Hash e Salt.
Em resumo, o hash pode ser considerado como uma função matemática que transforma qualquer arquivo ou conjunto de caracteres em uma sequência única de letras e números. Uma vez que o Hash é gerado, ele nunca mais pode ser alterado. O mesmo segue o padrão de ter o mesmo tamanho (entre 128 e 512 bits) e o mesmo número de caracteres alfanuméricos.
Uma função hash é unidirecional, semelhante a uma função sobrejetiva, onde a imagem é igual ao contradomínio. Um hash pode ser quebrado de várias maneiras por meio de ataques de força bruta ou dicionário.