From cdb31ffa63f35a5cc081b2889c69dd7adbbd3fe1 Mon Sep 17 00:00:00 2001 From: George <31376482+george-gca@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:44:43 -0300 Subject: [PATCH] =?UTF-8?q?[V2]=20Adiciona=20suporte=20a=20m=C3=BAltiplas?= =?UTF-8?q?=20l=C3=ADnguas=20usando=20Jekyll=20Polyglot=20(#267)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Using jekyll with polyglot to create localized version Signed-off-by: George Araújo * Now formatting data inside _data/ directory Signed-off-by: George Araújo * Fixed formatting of data files Signed-off-by: George Araújo * Removed json files from pre-commit-config Signed-off-by: George Araújo * Splitted cards information per letter Signed-off-by: George Araújo * Removed json files from run_on_code_changed.sh Signed-off-by: George Araújo * Moved all scss to _sass dir Signed-off-by: George Araújo * Moved cards.json to _assets dir Signed-off-by: George Araújo * Changed ruby version to 3.3.3 Signed-off-by: George Araújo * Updated README and CONTRIBUTING Signed-off-by: George Araújo * Renamed script.liquid Signed-off-by: George Araújo * Added prettier configuration file Signed-off-by: George Araújo * Added devcontainer support Signed-off-by: George Araújo * Updated scripts reference in base layout Signed-off-by: George Araújo * Added local site link to contributing Signed-off-by: George Araújo * Solved merge issues Signed-off-by: George Araújo * Fixed some pt-br definitions Signed-off-by: George Araújo * Fixed more portuguese definitions Signed-off-by: George Araújo * Added missing translations Signed-off-by: George Araújo * Removed prettierrc config file Signed-off-by: George Araújo * Fixed prettier complaints Signed-off-by: George Araújo * Updated prettier workflow to include liquid files Signed-off-by: George Araújo * Updated data path on GitHub actions Signed-off-by: George Araújo * Testing fix to sort-data Signed-off-by: George Araújo * Removed test code Signed-off-by: George Araújo * Updated CONTRIBUTING.md Signed-off-by: George Araújo * Renamed _assets to _json Signed-off-by: George Araújo * Updated CONTRIBUTING Signed-off-by: George Araújo * Moved pwa code to its own js Signed-off-by: George Araújo * Updated CONTRIBUTING with pwa js Signed-off-by: George Araújo * Removed .ruby-version file Signed-off-by: George Araújo * Adding suggested changes Signed-off-by: George Araújo * Added missing definitions Signed-off-by: George Araújo * Added debugging message to format_data.py Signed-off-by: George Araújo * Formatted data files Signed-off-by: George Araújo * Added more debug messages to format_data.py Signed-off-by: George Araújo * Fixed formatting in all files Signed-off-by: George Araújo * Added more debug messages to format_data.py Signed-off-by: George Araújo * Fixed formatting in all files Signed-off-by: George Araújo * Made pre-commit hooks run sequentially Signed-off-by: George Araújo * Fixed formatting in all files Signed-off-by: George Araújo * Updated ruby packages Signed-off-by: George Araújo * Removed duplicate description of 2FA Signed-off-by: George Araújo * Capitalize tags Signed-off-by: George Araújo * Capitalized tags Signed-off-by: George Araújo * Added reference to add term to all languages Signed-off-by: George Araújo * Deleted .ruby-version since it throws error with devcontainer Signed-off-by: George Araújo --------- Signed-off-by: George Araújo --- .devcontainer/devcontainer.json | 35 + .github/workflows/json-yaml-validate.yml | 6 +- .github/workflows/prettier.yml | 2 +- .github/workflows/sort-data.yml | 6 +- .gitignore | 7 + .pre-commit-config.yaml | 9 +- CONTRIBUTING.md | 337 +++++-- Gemfile | 6 + Gemfile.lock | 148 +++ README.md | 4 +- _config.yml | 47 + _data/en-us/a.yml | 109 +++ _data/en-us/b.yml | 64 ++ _data/en-us/c.yml | 214 ++++ _data/en-us/d.yml | 146 +++ _data/en-us/e.yml | 54 ++ _data/en-us/f.yml | 60 ++ _data/en-us/g.yml | 116 +++ _data/en-us/h.yml | 36 + _data/en-us/i.yml | 51 + _data/en-us/j.yml | 43 + _data/en-us/l.yml | 109 +++ _data/en-us/m.yml | 72 ++ _data/en-us/n.yml | 70 ++ _data/en-us/numbers.yml | 9 + _data/en-us/o.yml | 57 ++ _data/en-us/p.yml | 74 ++ _data/en-us/r.yml | 93 ++ _data/en-us/s.yml | 110 +++ _data/en-us/t.yml | 53 + _data/en-us/u.yml | 63 ++ _data/en-us/v.yml | 27 + _data/en-us/w.yml | 9 + _data/en-us/x.yml | 11 + _data/en-us/z.yml | 18 + _data/pt-br/a.yml | 214 ++++ _data/pt-br/b.yml | 92 ++ _data/pt-br/c.yml | 203 ++++ _data/pt-br/d.yml | 121 +++ _data/pt-br/e.yml | 105 ++ _data/pt-br/f.yml | 56 ++ _data/pt-br/g.yml | 72 ++ _data/pt-br/h.yml | 37 + _data/pt-br/i.yml | 67 ++ _data/pt-br/j.yml | 45 + _data/pt-br/l.yml | 32 + _data/pt-br/m.yml | 68 ++ _data/pt-br/n.yml | 31 + _data/pt-br/numbers.yml | 10 + _data/pt-br/o.yml | 58 ++ _data/pt-br/p.yml | 108 +++ _data/pt-br/r.yml | 145 +++ _data/pt-br/s.yml | 102 ++ _data/pt-br/t.yml | 87 ++ _data/pt-br/u.yml | 53 + _data/pt-br/v.yml | 36 + _data/pt-br/w.yml | 10 + _data/pt-br/x.yml | 12 + _includes/script.js.liquid | 360 +++++++ _json/en-us/cards.json.liquid | 25 + _json/pt-br/cards.json.liquid | 25 + index.html => _layouts/base.liquid | 100 +- _pages/en-us/search.md | 24 + _pages/pt-br/search.md | 24 + assets/scss/style.scss => _sass/base.scss | 7 +- {assets/scss => _sass}/cookies.scss | 0 {assets/scss => _sass}/dark_theme.scss | 0 {assets/scss => _sass}/light_theme.scss | 0 .../_variables.scss => _sass/variables.scss | 0 assets/css/style.css | 404 -------- assets/css/style.css.map | 1 - assets/css/style.scss | 8 + assets/data/cards_pt-br.json | 918 ------------------ assets/js/pwa.js | 26 + assets/js/script.js | 383 -------- diciotech.webmanifest | 2 +- format_data.py | 49 +- run_on_code_changed.sh | 4 +- run_on_data_changed.sh | 4 +- 79 files changed, 4546 insertions(+), 1857 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 _config.yml create mode 100644 _data/en-us/a.yml create mode 100644 _data/en-us/b.yml create mode 100644 _data/en-us/c.yml create mode 100644 _data/en-us/d.yml create mode 100644 _data/en-us/e.yml create mode 100644 _data/en-us/f.yml create mode 100644 _data/en-us/g.yml create mode 100644 _data/en-us/h.yml create mode 100644 _data/en-us/i.yml create mode 100644 _data/en-us/j.yml create mode 100644 _data/en-us/l.yml create mode 100644 _data/en-us/m.yml create mode 100644 _data/en-us/n.yml create mode 100644 _data/en-us/numbers.yml create mode 100644 _data/en-us/o.yml create mode 100644 _data/en-us/p.yml create mode 100644 _data/en-us/r.yml create mode 100644 _data/en-us/s.yml create mode 100644 _data/en-us/t.yml create mode 100644 _data/en-us/u.yml create mode 100644 _data/en-us/v.yml create mode 100644 _data/en-us/w.yml create mode 100644 _data/en-us/x.yml create mode 100644 _data/en-us/z.yml create mode 100644 _data/pt-br/a.yml create mode 100644 _data/pt-br/b.yml create mode 100644 _data/pt-br/c.yml create mode 100644 _data/pt-br/d.yml create mode 100644 _data/pt-br/e.yml create mode 100644 _data/pt-br/f.yml create mode 100644 _data/pt-br/g.yml create mode 100644 _data/pt-br/h.yml create mode 100644 _data/pt-br/i.yml create mode 100644 _data/pt-br/j.yml create mode 100644 _data/pt-br/l.yml create mode 100644 _data/pt-br/m.yml create mode 100644 _data/pt-br/n.yml create mode 100644 _data/pt-br/numbers.yml create mode 100644 _data/pt-br/o.yml create mode 100644 _data/pt-br/p.yml create mode 100644 _data/pt-br/r.yml create mode 100644 _data/pt-br/s.yml create mode 100644 _data/pt-br/t.yml create mode 100644 _data/pt-br/u.yml create mode 100644 _data/pt-br/v.yml create mode 100644 _data/pt-br/w.yml create mode 100644 _data/pt-br/x.yml create mode 100644 _includes/script.js.liquid create mode 100644 _json/en-us/cards.json.liquid create mode 100644 _json/pt-br/cards.json.liquid rename index.html => _layouts/base.liquid (52%) create mode 100644 _pages/en-us/search.md create mode 100644 _pages/pt-br/search.md rename assets/scss/style.scss => _sass/base.scss (96%) rename {assets/scss => _sass}/cookies.scss (100%) rename {assets/scss => _sass}/dark_theme.scss (100%) rename {assets/scss => _sass}/light_theme.scss (100%) rename assets/scss/_variables.scss => _sass/variables.scss (100%) delete mode 100644 assets/css/style.css delete mode 100644 assets/css/style.css.map create mode 100644 assets/css/style.scss delete mode 100644 assets/data/cards_pt-br.json create mode 100644 assets/js/pwa.js delete mode 100644 assets/js/script.js diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..a0f8e144 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,35 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/jekyll +{ + "name": "Jekyll", + "image": "mcr.microsoft.com/devcontainers/jekyll", + + // Features to add to the dev container. More info: https://containers.dev/features. + "features": { + "ghcr.io/rocker-org/devcontainer-features/apt-packages:1": { + "packages": "ruby-full" + }, + "ghcr.io/devcontainers-community/npm-features/prettier:1": {} + }, + + // Optionally: run jekyll serve automatically on container entering + "postAttachCommand": "bundle exec jekyll serve", + + "customizations": { + "vscode": { + "extensions": [ + "esbenp.prettier-vscode", + "sissel.shopify-liquid", + "yzhang.markdown-all-in-one" + ], + "settings": { + // use prettier code formatter as default formatter + "editor.defaultFormatter": "esbenp.prettier-vscode", + // "prettier.configPath": ".prettierrc", + "editor.formatOnSave": true + } + } + }, + + "remoteUser": "vscode" +} diff --git a/.github/workflows/json-yaml-validate.yml b/.github/workflows/json-yaml-validate.yml index 4c05d1af..c375d6ff 100644 --- a/.github/workflows/json-yaml-validate.yml +++ b/.github/workflows/json-yaml-validate.yml @@ -4,10 +4,10 @@ on: branches: - main paths: - - "assets/data/**" + - "_data/**" pull_request: paths: - - "assets/data/**" + - "_data/**" workflow_dispatch: permissions: @@ -24,5 +24,5 @@ jobs: id: json-yaml-validate uses: GrantBirki/json-yaml-validate@v3.2.1 # replace with the latest version with: - base_dir: assets/data # base directory to search for files + base_dir: _data # base directory to search for files comment: "true" # enable comment mode diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 2fcd8b72..34059c00 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -22,4 +22,4 @@ jobs: uses: AbdulRehman-1/pr-prettier@initial with: only_changed: true - prettier_options: --write **/*.{css,html,js,json,md,scss,yaml,yml} + prettier_options: --write **/*.{css,html,js,json,liquid,md,scss,yaml,yml} diff --git a/.github/workflows/sort-data.yml b/.github/workflows/sort-data.yml index 415f02f3..0fa02d5f 100644 --- a/.github/workflows/sort-data.yml +++ b/.github/workflows/sort-data.yml @@ -5,11 +5,11 @@ on: branches: - main paths: - - "assets/data/**" + - "_data/**" pull_request: paths: - - "assets/data/**" + - "_data/**" workflow_dispatch: @@ -29,7 +29,7 @@ jobs: id: changed-data uses: tj-actions/changed-files@v45.0.4 with: - files: assets/data/**.json + files: _data/**.yml - name: Setup Python if: steps.changed-data.outputs.any_changed == 'true' diff --git a/.gitignore b/.gitignore index 77338dac..35e86ad3 100644 --- a/.gitignore +++ b/.gitignore @@ -79,3 +79,10 @@ $RECYCLE.BIN/ node_modules/ # End of https://www.toptal.com/developers/gitignore/api/windows,macos,linux + +# Jekyll build files +_site +.sass-cache +.jekyll-cache +.jekyll-metadata +vendor \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2e0c47a3..7f8472c7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,21 +2,22 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: - - id: check-json - id: check-yaml - repo: local hooks: - id: format-data - name: Format JSON data files + name: Format yml data files entry: bash run_on_data_changed.sh language: system - types: [json] + types: [yaml] verbose: true + require_serial: true - repo: local hooks: - id: format-code name: Format code files with Prettier entry: bash run_on_code_changed.sh language: system - types_or: [css, html, javascript, json, sass, scss, yaml] + types_or: [css, html, javascript, sass, scss, yaml] verbose: true + require_serial: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bf09a0cb..d8e30738 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,112 +4,193 @@ Quer contribuir conosco?! Gratidão 💙 Neste guia vamos explicar como funcionam os processos para que você possa contribuir com o Diciotech. -## 🤔 Como contribuir - -Existem diversas formas de contribuir com o projeto: - - [📖 Contribua com o Diciotech](#-contribua-com-o-diciotech) - - [🤔 Como contribuir](#-como-contribuir) - - [⚒️ Instalando ambiente de desenvolvimento para contribuir](#️-instalando-ambiente-de-desenvolvimento-para-contribuir) - - [1. **Escolha um Editor de Código**](#1-escolha-um-editor-de-código) - - [2. **Execute o Projeto**](#2-execute-o-projeto) - - [1. **Instale um pré-processador SASS**](#1-instale-um-pré-processador-sass) - - [2. **Compile seu SASS**](#2-compile-seu-sass) + - [🤔 Entendendo a estrutura do Diciotech](#-entendendo-a-estrutura-do-diciotech) + - [Como funciona o build do site](#como-funciona-o-build-do-site) + - [Discutindo as issues](#discutindo-as-issues) + - [Fazendo pull requests](#fazendo-pull-requests) - [Adicionando um novo termo técnico no Diciotech](#adicionando-um-novo-termo-técnico-no-diciotech) - [Adicionando uma nova tag no Diciotech](#adicionando-uma-nova-tag-no-diciotech) - [Reportando bugs](#reportando-bugs) - [Indicando melhorias e pedindo funcionalidades](#indicando-melhorias-e-pedindo-funcionalidades) - - [Discutindo as issues](#discutindo-as-issues) - - [Fazendo pull requests](#fazendo-pull-requests) + - [⚒️ Instalando o ambiente de desenvolvimento para contribuir](#️-instalando-o-ambiente-de-desenvolvimento-para-contribuir) + - [Usando Development Containers (recomendado)](#usando-development-containers-recomendado) + - [Visualizando o site em execução](#visualizando-o-site-em-execução) + - [Instalando manualmente](#instalando-manualmente) + - [Instalando Ruby e rbenv](#instalando-ruby-e-rbenv) + - [Instalando as dependências do Diciotech](#instalando-as-dependências-do-diciotech) + - [Executando o Diciotech localmente](#executando-o-diciotech-localmente) - [Outras formas de contribuir](#outras-formas-de-contribuir) -## ⚒️ Instalando ambiente de desenvolvimento para contribuir - -### 1. **Escolha um Editor de Código** +## 🤔 Entendendo a estrutura do Diciotech -- **Recomendação:** Visual Studio Code (gratuito, open-source, amplamente utilizado) -- **Outras opções:** Sublime Text, Atom +O `diciotech` optou por utilizar o [Jekyll](https://jekyllrb.com/), um gerador de sites estáticos. Esta mudança é principalmente por 3 motivos: -### 2. **Execute o Projeto** +1. Suporte a internacionalização - usando o plugin [polyglot](https://github.com/untra/polyglot), é possível traduzir o site para várias línguas; +2. Divisão de conteúdo - o Jekyll permite dividir os dados dos termos em arquivos YAML por letra, o que facilita a manutenção e a adição de novos termos; +3. Facilidade de manutenção - como o site é "compilado" pelo Jekyll, ele é responsável por otimizar o html, css e js, isolando o desenvolvedor de ter que lidar manualmente com o [compilador sass](https://sass-lang.com/guide/), por exemplo. -Para visualizar seu projeto, você pode abrir o arquivo `index.html` em um navegador. Se quiser usar um servidor local (opcional), você pode instalar uma extensão no seu editor ou usar ferramentas como o **Live Server** no Visual Studio Code. +A estrutura do repositório segue o padrão de [estrutura de sites em Jekyll](https://jekyllrb.com/docs/structure/), e é da seguinte forma: -Exemplo: -```shell -npm install http-server -g -# Na pasta do projeto. -http-server +``` +diciotech +├── assets (vão ser copiados tal qual pro repositório final, menos o style.scss) +│   ├── css +│   │   └── style.scss (usado pra gerar o style.css final) +│   ├── img +│   │   └── ... +│   └── js +│   ├── cookies.js +│   ├── levenshtein.js +│   ├── pwa.js +│   └── theme.js +├── _config.yml (arquivo de configuração do Jekyll) +├── _data (aqui devem ser adicionados os termos e definições) +│   ├── en-us +│   │   ├── a.yml +│   │   ├── ... +│   │   └── z.yml +│   └── pt-br +│   ├── a.yml +│      ├── ... +│   └── z.yml +├── Gemfile (arquivo de dependências do Ruby) +├── Gemfile.lock (arquivo de dependências do Ruby com as versões específicas) +├── _includes +│   └── script.liquid.js (aqui devem ficar códigos js que dependem de valores do Jekyll) +├── _json (cria os cards.json final a partir dos yml) +│   ├── en-us +│   │   └── cards.json +│   └── pt-br +│   └── cards.json +├── _layouts +│   └── base.liquid (layout base do site) +├── _pages (onde ficam as traduções dos termos na página) +│   ├── en-us +│   │   └── search.md +│   └── pt-br +│   └── search.md +├── _sass (onde devem ser feitas as mudanças no estilo do site) +│   ├── base.scss +│   ├── cookies.scss +│   ├── dark_theme.scss +│   ├── light_theme.scss +│   └── variables.scss +└── _site (onde o Jekyll gera o site final, não deve ser versionado) + └── ... ``` -
- -:rotating_light: Para efetuar alterações em documentações - - Você pode utilizar o Github.Dev para efetuar as alterações em arquivos do tipo markdown para isso é só ir no repositório e apertar a tecla . (ponto) -
-
-
- - :rotating_light: Para efetuar alterações visuais - -Caso queira mexer na parte visual do Diciotech, você também vai precisar, antes de executar o projeto: +Dentre os arquivos e pastas, os mais importantes são: -#### 1. **Instale um pré-processador SASS** +- `_data/`: onde ficam os arquivos YAML com os termos e definições, separados por idioma e letra. Aqui é onde você deve adicionar novos termos; +- `_includes/`: onde ficam códigos js que dependem de valores do Jekyll. Você pode adicionar códigos novos no arquivo `script.liquid.js`, ou criar novos arquivos. Lembre-se de incluir os arquivos novos no layout base; +- `_layouts/base.liquid`: layout base da página, basicamente um html com variáveis em liquid definidas em `_pages/`; +- `_pages/`: onde ficam as traduções de textos na página que não são termos e suas definições; +- `_sass/`: onde ficam os arquivos de estilo do site. Aqui é onde você deve fazer mudanças de css; +- `assets/`: onde ficam os arquivos de css, js e imagens que são copiados tal qual para o site final. -Para compilar SASS em CSS, você precisará de um compilador. Recomendo a leitura do https://sass-lang.com/guide/ 👀 +## Como funciona o build do site -```bash -npm install -g sass +Ao executar o comando `bundle exec jekyll serve`, o Jekyll compila o site e o disponibiliza em `http://localhost:4000`. O site é gerado na pasta `_site/`, que não deve ser versionada. + +O Jekyll basicamente verifica as páginas existentes em `_pages/` e as renderiza com o layout definido no [front matter](https://jekyllrb.com/docs/front-matter/) (cabeçalho entre `---`) das páginas, que no caso é o layout base definido em `_layouts/base.liquid`. O front matter das páginas contém os seguintes campos: + +```yaml +page_id: search # id da página, usado para identificar as versões traduzidas como sendo da mesma página +layout: base # layout usado para renderizar a página +permalink: / # link no qual a página vai ser acessada +... # outros campos, todos referentes a traduções que serão usadas na página ``` -#### 2. **Compile seu SASS** +O layout base é um arquivo que contém o html básico de todas as páginas, e é onde são incluídos os arquivos de css e js necessários para o site. A extensão `.liquid` é uma extensão padrão usada pelo Jekyll. No layout básico é possível encontrar algumas expressões como: -Para compilar seu SASS em CSS, abra o terminal na pasta do seu projeto e execute: +```liquid + +{% include script.liquid.js %} +``` -```bash -sass assets/sass/style.sass assets/css/style.css --watch +Valores definidos no front matter das páginas são acessados via `{{ page.XXX }}`, como `{{ page.site_description }}`, enquanto valores definidos no arquivo `_config.yml` são acessados como `{{ site.XXX }}`, por exemplo `{{ site.baseurl }}`. Expressões delimitadas por `{% %}` como `{% include script.liquid.js %}` são expressões que são processadas durante o build pelo Jekyll. Para mais informações sobre o Jeyll, veja a [documentação oficial](https://jekyllrb.com/docs/step-by-step/01-setup/) (em inglês). + +Os dados dos termos são armazenados em arquivos YAML em `_data/` e separados por idioma e letra. Eles são usados para gerar os cards que aparecem na página principal. Durante o build, o Jekyll lê esses arquivos por meio dos arquivos `_json/LANG/cards.json.liquid` e gera um arquivo JSON final em `_site/assets/data/cards.json` (para o idioma principal, no caso português `pt-br`) e um para cada outro idioma em `_site/LANG/assets/data/cards.json` (atualmente para o inglês `en-us`), que é lido para gerar os cards. + +Para entender melhor como o site é contruído, é possível acessar a pasta `_site/` e verificar os arquivos gerados pelo build, mostrado abaixo. Isso pode ajudar a entender como o Jekyll está processando os arquivos e a debugar problemas. + +``` +_site/ +├── assets +│   ├── css +│   │   └── style.css +│   ├── data +│   │   └── cards.json +│   ├── img +│   │   └── ... +│   └── js +│   ├── cookies.js +│   ├── levenshtein.js +│   ├── pwa.js +│   └── theme.js +├── diciotech.webmanifest +├── en-us +│   ├── assets +│   │   └── data +│   │   └── cards.json +│   ├── diciotech.webmanifest +│   └── index.html +└── index.html ``` -O `--watch` faz com que o SASS fique monitorando alterações no arquivo `.scss` e compile automaticamente. +## Discutindo as issues -
+Antes de partirmos para o código em si, é muito importante discutirmos com a comunidade como cada issue será abordada. + +Issues que estão em processo de discussão devem receber a label **discussion**, indicando que aquela issue precisa de feedbacks da comunidade. + +## Fazendo pull requests + +Antes de abrir o seu PR, faça um fork do projeto e trabalhe em cima de um branch diferente da `main`, implementando suas soluções. Para saber mais sobre pull requests e como eles funcionam, veja [este link](https://help.github.com/articles/about-pull-requests/). + +Antes de abrir seu PR (pull request): + +- Leia com atenção o [README](./README.md) do projeto; +- Se atente para que tenha um issue aberta relacionada ao seu PR; +- Caso não tenha, crie uma seguindo o guia de contribuição. ## Adicionando um novo termo técnico no Diciotech -Adicione mais conteúdo no Diciotech [abrindo um pull request](#fazendo-pull-requests) com o termo que deseja que esteja presente no site. Para adicionar um novo termo, você deve acessar o arquivo `assets/data/cards_pt-br.json` e inserir um novo item na lista, seguindo a seguinte estrutura: +Adicione mais conteúdo no Diciotech [abrindo um pull request](#fazendo-pull-requests) com o termo que deseja que esteja presente no site. Para adicionar novos termos técnicos não é necessário instalar o ambiente de desenvolvimento. Todo o processo pode ser feito pela própria interface web do GitHub. Para isso, você deve acessar o arquivo referente à letra inicial do termo que deseja adicionar na pasta da língua específica em `_data/`. Por exemplo, para adicionar a explicação do termo `Abstraction` em português, é necessário abrir o arquivo `_data/pt-br/a.yml` e inserir um novo item na lista, em ordem alfabética por título, seguindo a seguinte estrutura: -```json -{ - "title": "Termo técnico", - "description": "Explicação sobre o termo", - "tags": ["Tag1"] -} +```yml +- title: Termo técnico + tags: + - Tag 1 + description: "Explicação sobre o termo." ``` -ou +ou se quiser adicionar também um exemplo de código: -```json -{ - "title": "Termo técnico", - "description": "Explicação sobre o termo", - "content": { - "code": "Código de exemplo" - }, - "tags": ["Tag1", "Tag2"] -} +```yml +- title: Termo técnico + tags: + - Tag 1 + - Tag 2 + description: "Explicação sobre o termo." + content: + code: "curl https://www.google.com" ``` +Note que o campo `content` é opcional e só deve ser usado se houver um exemplo de código que você deseja adicionar. Todos os outros campos são obrigatórios. Note também que os campos antes dos `:` são sempre em inglês, minúsculos e separados por `_`, e os campos depois dos `:` são sempre com a primeira letra maiúscula, com exceção do exemplo de código. Ao inserir o valor de um campo, não esqueça de colocar o valor entre aspas duplas. Esse passo não é estritamente necessário, mas evita problemas em que, por exemplo, a descrição contenha caracteres que podem levar o YAML a interpretar errado o valor (por exemplo, o `:` dentro do código acima). Para saber mais sobre o padrão YAML, leia [esta postagem](https://www.redhat.com/pt-br/topics/automation/what-is-yaml). + > **Observação:** caso a sua contribuição não se alinhe com qualquer uma das tags disponíveis, listadas na seção seguinte, verifique a seção [Adicionando uma nova tag no Diciotech](#adicionando-uma-nova-tag-no-diciotech). +> **Observação 2:** sempre que possível, adicione também a tradução do termo para todos os idiomas suportados pelo Diciotech. Caso não saiba como fazer isso, não se preocupe. Abra um PR com o termo em um idioma e a comunidade vai te ajudar a traduzir para os outros. + Antes de abrir o pull request, algumas **boas práticas** devem ser seguidas para uma maior organização e estabilidade do Diciotech. -- Se o termo conter um código de exemplo, evite o escrever em uma linguagem de programação específica, faça isso **apenas** se realmente necessário; +- Se o termo conter um código de exemplo, evite escrever em uma linguagem de programação específica, faça isso **apenas** se realmente necessário; - Um termo, deve ser vinculado a, no mínimo, uma tag; - - Atribuir a um termo apenas as tags presentes nessa documentação, da exata mesma forma e escrita; -- Evite duplicações de tags em um mesmo termo. Exemplo: `"tags": ["Conceito", "Conceito"]`; - -- Tome a cuidado para que as tags atribuídas a um termo façam sentido com o mesmo. +- Evite duplicações de tags em um mesmo termo; +- Tome o cuidado para que as tags atribuídas a um termo façam sentido com o mesmo. ## Adicionando uma nova tag no Diciotech @@ -121,9 +202,9 @@ Tags disponíveis: - `Biblioteca`; - `Conceito`; - `Design`; +- `DevOps`; - `Ferramenta`; - `Framework`; -- `Front-End`; - `Front-end`; - `Inteligência artificial`; - `Mobile`; @@ -131,26 +212,22 @@ Tags disponíveis: - `Rede neural`; - `Segurança cibernética`; - `Versionamento`; -- `DevOps`; Antes de criar uma issue e abrir um PR, todas as tags devem seguir algumas boas práticas: -- Todas as tags devem estar no singular; -- Atualmente, as tags são _case sensitivity_, então, por padrão, apenas a primeira letra da tag deve ser maiúscula. Exemplo: Back-end, Conceito, Paradigma; -- Para adicionar uma nova tag, primeiro deve criar uma issue e, caso as pessoas usuárias concordem, um pull request deve ser aberto, contendo a tag. A PR sendo aprovada, a nova tag poderá ser vinculada a um termo; -- As tags devem ser mais generalistas e categóricas, já que dispomos de um campo de pesquisa para uma busca mais específica e precisa. Exemplo de tags: Front-end, Design, Back-end. +- todas as tags devem estar no singular; +- atualmente, as tags são _case sensitive_, então, por padrão, apenas a primeira letra da tag deve ser maiúscula. Exemplo: Back-end, Conceito, Paradigma; +- para adicionar uma nova tag, primeiro deve criar uma issue e, caso as pessoas usuárias concordem, um pull request deve ser aberto, contendo a tag. A PR sendo aprovada, a nova tag poderá ser vinculada a um termo; +- as tags devem ser mais generalistas e categóricas, já que dispomos de um campo de pesquisa para uma busca mais específica e precisa. Exemplo de tags: Front-end, Design, Back-end. ## Reportando bugs -Se encontraste um bug você pode reportá-lo usando a ferramenta de -[issues do GitHub](https://github.com/levxyca/diciotech/issues). Porém, antes de criar a issue com as informações sobre o bug, é importante fazer as seguintes verificações: +Se encontrou um bug você pode reportá-lo usando a ferramenta de [issues do GitHub](https://github.com/levxyca/diciotech/issues). Porém, antes de criar a issue com as informações sobre o bug, é importante fazer as seguintes verificações: -1. Atualize seu repositório local na branch `main` mais recente. Talvez seu bug já tenha sido corrigido na versão mais recente; -2. Verifique se o bug já foi reportado por outra pessoa, então faça uma busca pelas issues abertas. +1. Atualize seu repositório local na branch `main` mais recente. Talvez seu bug já tenha sido corrigido na versão mais recente +2. Verifique se o bug já foi reportado por outra pessoa, então faça uma busca pelas issues abertas -Se o bug realmente não foi resolvido ou reportado, você pode -[criar uma nova issue](https://github.com/levxyca/diciotech/issues/new). No -título da issue tente resumir da melhor forma o problema encontrado. +Se o bug realmente não foi resolvido ou reportado, você pode [criar uma nova issue](https://github.com/levxyca/diciotech/issues/new). No título da issue tente resumir da melhor forma o problema encontrado. Se possível inclua imagens ou vídeos à descrição do bug para facilitar o processo de reprodução. Você também deve adicionar o label **bug** à issue. @@ -158,26 +235,102 @@ Se possível inclua imagens ou vídeos à descrição do bug para facilitar o pr Outra ótima forma de contribuir é indicando melhorias ao código do projeto e em como ele está estruturado ou pedindo funcionalidades novas. Se você tem qualquer ideia de como podemos melhorar alguma abordagem na solução de problemas, refatoração de código, melhoria em algum recurso ou qualquer outra coisa relacionada, siga estes passos: -1. Certifique-se de que sua ideia já não esteja sendo abordada em nosso [roadmap](./ROADMAP.md); -2. Verifique se a ideia já não está presente em nossas [issues do GitHub](https://github.com/levxyca/diciotech/issues). +1. Certifique-se de que sua ideia já não esteja sendo abordada em nosso [roadmap](./ROADMAP.md) +2. Verifique se a ideia já não está presente em nossas [issues do GitHub](https://github.com/levxyca/diciotech/issues) Concluindo esses dois passos, você pode [criar uma nova issue](https://github.com/levxyca/diciotech/issues/new) descrevendo as melhorias e usando o label **feature**. -## Discutindo as issues +## ⚒️ Instalando o ambiente de desenvolvimento para contribuir -Antes de partirmos para o código em si é muito importante discutirmos com a comunidade como cada issue será abordada. +Para adicionar novos termos técnicos não é necessário instalar o ambiente de desenvolvimento. Todo o processo pode ser feito pela própria interface web do GitHub. -Issues que estão em processo de discussão devem receber o label **discussion**, indicando que aquela issue precisa de feedbacks da comunidade. +Já para contribuições de layout ou qualquer outra, você precisa instalar o ambiente de desenvolvimento. O `diciotech` é construído com Ruby e Jekyll, então você precisa ter o Ruby instalado em sua máquina. Aqui estão as instruções para instalar o ambiente de desenvolvimento: -## Fazendo pull requests +### Usando Development Containers (recomendado) -Antes de abrir o seu PR, faça um fork do projeto e trabalhe em cima de um branch diferente da `main`, implementando suas soluções. Para saber mais sobre pull requests e como eles funcionam, veja [este link](https://help.github.com/articles/about-pull-requests/). +O `diciotech` suporta [Development Containers](https://containers.dev/supporting). Para configurá-lo, siga as etapas abaixo: -Antes de abrir seu PR (pull request): +1. Certifique-se de ter o [Docker](https://www.docker.com/products/docker-desktop) instalado e em execução no seu sistema. +2. Abra o repositório do projeto no **Visual Studio Code (VSCode)**. +3. O VSCode solicitará que você instale a extensão necessária. Clique em "Instalar" e aguarde a configuração automática (este processo pode demorar na primeira vez). +4. Após a instalação, clique na opção **"Reopen in Container"** quando solicitado. Novamente, aguarde enquanto o ambiente é configurado (pode levar mais tempo na primeira execução). +5. Quando a conexão com o DevContainer for concluída, o Diciotech estará pronto para uso. -- Leia com atenção o [README](./README.md) do projeto; -- Se atente para que tenha um issue aberta relacionada ao seu PR; -- Caso não tenha, crie uma seguindo o guia de contribuição. +#### Visualizando o site em execução + +1. Abra seu navegador e acesse: `http://localhost:4000`. +2. Você verá uma cópia do [site oficial](https://diciotech.netlify.app/). + +Agora você pode personalizar o site conforme necessário. Após realizar as alterações, lembre-se de **commitar** suas mudanças finais. + +### Instalando manualmente + +A instalação manual é um pouco mais trabalhosa, mas é útil se você deseja ter mais controle sobre o ambiente de desenvolvimento. Recomendado somente para usuários avançados. + +#### Instalando Ruby e rbenv + +Este tutorial foi testado em um ambiente Linux nativo (Ubuntu 24.04 LTS) e em um [ambiente WSL no Windows](https://learn.microsoft.com/pt-br/windows/wsl/install). Primeiro você precisa instalar o suporte à linguagem Ruby. A maneira recomendada é usar [rbenv](https://github.com/rbenv/rbenv) para instalar o Ruby de uma forma isolada do restante do sistema. Para instalar o `rbenv`, execute os seguintes comandos: + +```bash +git clone https://github.com/rbenv/rbenv.git ~/.rbenv +cd ~/.rbenv && src/configure && make -C src +``` + +Isso fará o download e compilação do repositório `rbenv` no seu home. **NÃO** instale via `apt`, pois ele baixa uma versão mais antiga do pacote e não permite que você instale as versões mais recentes do Ruby. Em seguida, adicione as seguintes linhas ao seu arquivo `~/.bashrc`: + +```bash +# habilita o rbenv +if [ -d "$HOME/.rbenv/" ]; then + export PATH="$HOME/.rbenv/bin:$PATH" + eval "$(rbenv init - bash)" +fi +``` + +Reinicie seu terminal ou execute `. ~/.bashrc` para recarregar suas configurações do bash. Isso tornará o comando `rbenv` disponível no terminal. Para testar se está funcionando corretamente, execute `curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash`. Ele deve produzir algo semelhante a isso: + +``` +Checking for `rbenv' in PATH: /home/gca/.rbenv/bin/rbenv +Checking for rbenv shims in PATH: Not found +Checking `rbenv install' support: /home/gca/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20220910.1-10-gecb9d22) +Counting installed Ruby versions: 1 versions +Auditing installed plugins: OK +``` + +Vai aparecer um erro na linha `Checking for rbenv shims in PATH`. Não se preocupe, isso vai ser corrigido. Em seguida, você precisa instalar o [ruby-build](https://github.com/rbenv/ruby-build) como um plugin do `rbenv`, para que você possa facilmente baixar e instalar diferentes versões do Ruby. Para isso, execute os seguintes comandos: + +```bash +mkdir -p "$(rbenv root)"/plugins +git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build +``` + +Para verificar quais versões do Ruby estão disponíveis para instalação, basta executar `rbenv install --list`. Você pode instalar qualquer versão que desejar, mas recomendo instalar a versão estável mais recente. No momento é a versão 3.3.4. Para instalá-la, você precisa primeiro instalar a dependência ssl e depois o Ruby. + +```bash +sudo apt install -y libssl-dev +rbenv install 3.3.4 +``` + +#### Instalando as dependências do Diciotech + +Agora que você tem o Ruby instalado, você pode instalar as dependências do `diciotech`. Primeiro, clone o repositório `diciotech` em sua máquina local. Em seguida, entre no diretório do repositório e crie um ambiente Ruby local com a versão do Ruby instalada. Em seguida, instale o pacote `bundle`, para que ele se encarregue de instalar o restante das dependências. Para fazer tudo isso, execute os seguintes comandos: + +```bash +git clone ~/git@github.com:levxyca/diciotech.git +cd ~/diciotech +rbenv local 3.3.4 +gem install bundle +bundle install +``` + +#### Executando o Diciotech localmente + +Agora você pode executar o site localmente. Tudo o que você precisa fazer é abrir o diretório do `diciotech` e executar o Jekyll: + +```bash +bundle exec jekyll serve +``` + +Para ver o site em execução, abra seu navegador e vá para `http://localhost:4000`. Você deve ver uma cópia do [site](https://diciotech.netlify.app/). Agora, sinta-se à vontade para personalizar o site como desejar. Depois de terminar, lembre-se de **commitar** suas alterações finais. ## Outras formas de contribuir diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..857c8cfe --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +source 'https://rubygems.org' +group :jekyll_plugins do + gem 'jekyll' + gem 'jekyll-minifier' + gem 'jekyll-polyglot' +end \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..66cb6964 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,148 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + bigdecimal (3.1.8) + colorator (1.1.0) + concurrent-ruby (1.3.4) + cssminify2 (2.0.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + execjs (2.10.0) + ffi (1.17.0-aarch64-linux-gnu) + ffi (1.17.0-aarch64-linux-musl) + ffi (1.17.0-arm-linux-gnu) + ffi (1.17.0-arm-linux-musl) + ffi (1.17.0-arm64-darwin) + ffi (1.17.0-x86-linux-gnu) + ffi (1.17.0-x86-linux-musl) + ffi (1.17.0-x86_64-darwin) + ffi (1.17.0-x86_64-linux-gnu) + ffi (1.17.0-x86_64-linux-musl) + forwardable-extended (2.6.0) + google-protobuf (4.29.2) + bigdecimal + rake (>= 13) + google-protobuf (4.29.2-aarch64-linux) + bigdecimal + rake (>= 13) + google-protobuf (4.29.2-arm64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.29.2-x86-linux) + bigdecimal + rake (>= 13) + google-protobuf (4.29.2-x86_64-darwin) + bigdecimal + rake (>= 13) + google-protobuf (4.29.2-x86_64-linux) + bigdecimal + rake (>= 13) + htmlcompressor (0.4.0) + http_parser.rb (0.8.0) + i18n (1.14.6) + concurrent-ruby (~> 1.0) + jekyll (4.3.4) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (>= 0.3.6, < 0.5) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-minifier (0.1.10) + cssminify2 (~> 2.0) + htmlcompressor (~> 0.4) + jekyll (>= 3.5) + json-minify (~> 0.0.3) + uglifier (~> 4.1) + jekyll-polyglot (1.8.1) + jekyll (>= 4.0, >= 3.0) + jekyll-sass-converter (3.0.0) + sass-embedded (~> 1.54) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.9.1) + json-minify (0.0.3) + json (> 0) + kramdown (2.5.1) + rexml (>= 3.3.9) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (6.0.1) + rake (13.2.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.0) + rouge (4.5.1) + safe_yaml (1.0.5) + sass-embedded (1.83.0-aarch64-linux-gnu) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-aarch64-linux-musl) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-arm-linux-gnueabihf) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-arm-linux-musleabihf) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-arm64-darwin) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-x86-linux-gnu) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-x86-linux-musl) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-x86_64-darwin) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-x86_64-linux-gnu) + google-protobuf (~> 4.28) + sass-embedded (1.83.0-x86_64-linux-musl) + google-protobuf (~> 4.28) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + uglifier (4.2.1) + execjs (>= 0.3.0, < 3) + unicode-display_width (2.6.0) + webrick (1.9.1) + +PLATFORMS + aarch64-linux + aarch64-linux-gnu + aarch64-linux-musl + arm-linux + arm-linux-gnu + arm-linux-gnueabihf + arm-linux-musl + arm-linux-musleabihf + arm64-darwin + x86-linux + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + jekyll + jekyll-minifier + jekyll-polyglot + +BUNDLED WITH + 2.5.18 diff --git a/README.md b/README.md index 06f172f5..64619889 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ O Diciotech é um dicionário tech online colaborativo, construído com HTML, SA Ao utilizar o Diciotech, você pode: -- Aprender novos termos de forma rápida e fácil. -- Contribuir para a construção de uma comunidade de aprendizado em tecnologia. +- Aprender novos termos de forma rápida e fácil; +- Contribuir para a construção de uma comunidade de aprendizado em tecnologia; - Aprimorar suas habilidades técnicas de forma colaborativa. Junte-se à nossa comunidade no [GitHub](https://github.com/levxyca/diciotech/discussions) para discutir sobre o projeto! diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000..7dea4311 --- /dev/null +++ b/_config.yml @@ -0,0 +1,47 @@ +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com + +# ----------------------------------------------------------------------------- +# Plugins settings +# ----------------------------------------------------------------------------- + +# Jekyll Polyglot +languages: ["en-us", "pt-br"] +default_lang: "pt-br" +exclude_from_localization: ["assets"] +lang_from_path: true +parallel_localization: false + +jekyll-minifier: + # exclude: ["robots.txt"] + uglifier_args: + harmony: true + +# ----------------------------------------------------------------------------- +# Build settings +# ----------------------------------------------------------------------------- +exclude: + - .git/ + - .github/ + - .gitignore + - .ruby-version + - CONTRIBUTING.md + - format_data.py + - LICENSE + - package.json + - package-lock.json + - README.md + - ROADMAP.md + - run_on_code_changed.sh + - run_on_data_changed.sh + - todo.md + +include: ["_json", "_pages"] + +plugins: + - jekyll-minifier + - jekyll-polyglot + +sass: + sourcemap: never + style: compressed diff --git a/_data/en-us/a.yml b/_data/en-us/a.yml new file mode 100644 index 00000000..8233b039 --- /dev/null +++ b/_data/en-us/a.yml @@ -0,0 +1,109 @@ +- title: Abstraction + tags: + - Concept + description: An abstraction is a simplification of specific point(s) of some system + or behavior that we are trying to understand. In programming, we use abstractions + all the time. This means that we don't need to understand all the deep technical + details to write code - like the inner workings of a computer. Instead, we can + use simpler ideas to create our programs. +- title: Adversarial Training + tags: + - Artificial intelligence + - Concept + description: It is a type of machine learning training that uses an adversarial + model to train a model. In it, two machine learning models are trained in an adversarial + manner, where one model is responsible for generating fake data and another model + is responsible for identifying fake data. Adversarial training is used to generate + realistic fake data, which can be used to augment a training dataset. +- title: AIoT + tags: + - Concept + description: AIoT (Artificial Intelligence of Things) is the combination of Artificial + Intelligence (AI) with the Internet of Things (IoT). Its main goal is to automate + and accelerate the processing of data generated by IoT devices, with minimal human + intervention. This facilitates data analysis and makes decision-making faster. + Without AI, although there would be a large volume of information available, it + would be necessary to rely on human intervention to make it useful. +- title: Algorithm + tags: + - Concept + description: An algorithm is like a cake recipe for a computer. It is a set of organized + steps that help solve a problem, such as doing math or analyzing information. +- title: Angular.js + tags: + - Framework + - Front-end + description: Angular.js is a tool developed by Google that facilitates the creation + of websites or applications that work as a single page (SPAs), that is, without + reloading the entire page with each interaction. It organizes the code efficiently + using "modules" and "dependency injection", which helps keep everything easier + to manage. Large companies like Google and Microsoft use this technology. +- title: API + tags: + - Back-end + - Concept + description: 'API is an acronym that means Application Programming Interface. It + is a code structure that meets some requirements, following development standards + and patterns, facilitating the organization of large systems. It provides functionalities + and information for applications and websites. For example: the Post Office API + that provides ZIP code and address queries in a simplified manner.' +- title: Argument + tags: + - Concept + description: An argument is a value or piece of information that you provide to + a function or method during its call. These arguments are used by the function + to perform a specific task or to make decisions based on the values provided. + In short, arguments are input data that allows a function to do its job and produce + a desired result or perform desired actions. +- title: Artificial Intelligence + tags: + - Artificial intelligence + - Concept + description: Also called AI, it is a field of computer science that studies how + computers can simulate human intelligence and cognition. It focuses on developing + systems capable of performing tasks that could previously only be done by humans, + such as speech recognition, decision making, language translation, and pattern + recognition. AI is a broad field that includes several subareas, such as machine + learning, natural language processing, computer vision, among others. +- title: Artificial Neural Network + tags: + - Artificial intelligence + - Concept + - Neural network + description: It is a computational model inspired by the central nervous system + of an animal, which consists of a set of interconnected processing units, called + artificial neurons, that simulate the way neurons communicate with each other. + Artificial neural networks (ANNs) are used to solve complex and non-linear problems, + such as pattern recognition, speech recognition, computer vision, among others. +- title: Autoencoder + tags: + - Artificial intelligence + - Concept + - Neural network + description: It is a type of artificial neural network composed of two neural networks + in the encoder-decoder format, being one responsible for encoding input data into + a latent space and the other for decoding data from a latent space back into the + input space. It is often used to compress input data in applications such as image + and video compression, dimensionality reduction, and data augmentation. +- title: Automatic Speech Recognition + tags: + - Artificial intelligence + - Concept + description: A field of artificial intelligence that focuses on developing systems + that can analyze and understand human speech, allowing computers to transcribe + and process audio stimuli into text. Automatic speech recognition and natural + language processing are related but distinct categories of AI. Automatic speech + recognition focuses on the process of converting spoken words into text and symbols, + while NLP is the process of converting text into a structured format that a computer + can understand and process. Automatic speech recognition is used in a wide variety + of applications, such as virtual assistants, navigation systems, audio transcription, + and more. +- title: AWS Commit + tags: + - Tool + - Versioning + description: AWS Commit is Amazon's (AWS) source code hosting platform and is fully + integrated with the AWS ecosystem, allowing easy automation and integration with + other AWS services, such as CodePipeline (for CI/CD), IAM (permission control), + and CloudWatch (monitoring). + diff --git a/_data/en-us/b.yml b/_data/en-us/b.yml new file mode 100644 index 00000000..d0f279c7 --- /dev/null +++ b/_data/en-us/b.yml @@ -0,0 +1,64 @@ +- title: Batch Size + tags: + - Artificial intelligence + - Concept + description: + Batch size is a hyperparameter of machine learning models that controls + the number of examples used in a single run of the model. It is used to control + how quickly a machine learning model learns and can be tuned to improve its performance. + A very small batch size during training requires less memory but more iterations + to complete an epoch, while a larger batch size allows for faster training with + fewer iterations per epoch but takes up more memory. +- title: BitBucket + tags: + - Tool + - Versioning + description: + Like GitHub, BitBucket is also a source code hosting platform and also + has integrated CI/CD tools, but it integrates especially well with Atlassian tools, + such as Jira, and supports Git and Mercurial repositories, while GitHub only supports + Git. +- title: Blue-green deployment + tags: + - Concept + - Devops + description: + "Blue-green deployment is a deployment strategy that consists of having + a replica of the production environment. New software versions are deployed to + this replica, and after deployment, user traffic is switched to the environment + with the new version, thus releasing access to this new version for all users. + One of its advantages is that, in case of errors in the new version, it is sufficient + to redirect user requests back to the previous system. To better understand blue-green + deployment, imagine that you have two kitchens in a restaurant: one blue and one + green. The blue kitchen is running and serving customers, while you prepare the + green kitchen. When the green kitchen is ready, you start using it to serve customers. + If everything goes well, you disable the blue kitchen. If there are problems, + you can quickly switch back to the blue kitchen." +- title: Botnet + tags: + - Concept + - Cyber security + description: + "A botnet is a network of internet-connected devices infected with + malware (malware is a malicious program that affects a device), allowing cybercriminals + to take down websites using this network of devices. The devices can range from + a computer to an IoT device (an IoT device is a device connected to the internet + without using cables, for example: smart TVs, smart lamps, smart refrigerators + and cell phones)." +- title: Branch + tags: + - Concept + - Versioning + description: + A branch is like a copy of your project at a specific point in time. + It's like you create a separate version to work on new ideas without touching + the main version. Each Branch can be edited separately, allowing you to develop + new things without disturbing the main code. +- title: Bug + tags: + - Concept + description: + The term Bug is commonly used to inform that there is a problem in + the program or environment. It can be incorrect or unexpected behavior, usually + caused by incorrect logic in the code, causing failures during the execution of + a software. diff --git a/_data/en-us/c.yml b/_data/en-us/c.yml new file mode 100644 index 00000000..1fe30576 --- /dev/null +++ b/_data/en-us/c.yml @@ -0,0 +1,214 @@ +- title: C + tags: + - Concept + description: + C is a general-purpose, structured, imperative, procedural, ISO-standardized, + compiled programming language created in 1972 by Dennis Ritchie at AT&T Bell Labs + to develop the Unix operating system (which was originally written in Assembly). +- title: C++ + tags: + - Concept + description: + C++ is a general-purpose, multi-paradigm (its support includes imperative, + object-oriented and generic languages) compiled programming language. Since the + 1990s it has been one of the most popular commercial languages, and is also widely + used in academia due to its high performance and user base. +- title: Cache + tags: + - Concept + description: + Cache is a technique for temporarily storing data often used to improve + performance and speed of access to that data in computer systems. +- title: Canary deployment + tags: + - Concept + - Devops + description: + Canary deployment is a deployment strategy that consists of having + a replica of the production environment. New software versions are deployed to + this replica, and after deployment, the release of the new version is done gradually, + directing a percentage of user requests to the environment containing this new + version. To perform this gradual switching, a load balancer, for example, can + be used. To better understand canary deployment, imagine you have a restaurant + and want to launch a new dish on the menu. However, instead of offering this new + dish to all customers, you select only a small group of customers to whom the + dish will be offered and test how they will react to the dish. If the feedback + is positive, you can start offering the new dish to a larger group of customers, + until the dish is actually launched on the menu for all of them. +- title: Chatbot + tags: + - Artificial intelligence + - Concept + description: + It is a computer program that simulates a human being in a conversation + through text or voice messages, widely used to automate repetitive tasks and provide + support and assistance to users. Chatbots can be used in a wide variety of applications, + such as customer service, virtual assistants, among others. +- title: Class + tags: + - Concept + description: + A class, in software development, is like a template and a "model" + for creating objects. It defines the attributes (data) and methods (functions) + that objects created from it will have. They help organize code, allowing reuse + and abstraction of data and functionality into a coherent structure. +- title: CLI + tags: + - Concept + description: + A Command Line Interface (CLI) is a way to interact with computer programs + where you type commands instead of clicking buttons or using menus. There are + different ways to use software, such as the graphical interface (GUI), which is + the one we see with images and buttons, or through APIs, which allow other programs + to communicate with the software. An example of software that can be used in various + ways is GitHub, which can be accessed through a browser, a desktop application, + or through the terminal, using the command line (CLI). +- title: Clone + tags: + - Concept + - Versioning + description: + Cloning a repository is like taking a local copy of that project into + your own workspace. It's like having your own version of the code to tinker with + as you please. This allows you to work on a local version of the code, make changes, + and contribute back to the main project when you're ready. +- title: Cloud Computing + tags: + - Concept + description: + Generally speaking, it refers to the use of computer services, such + as file storage and program execution, over the Internet. This means that you + do not need physical equipment, as everything is done online. You can access your + data and programs from anywhere, at any time, without worrying about maintaining + physical equipment. +- title: CMD + tags: + - Concept + description: + The CMD (short for "Command Prompt") is a command-line interface present + in the Windows operating system. See Terminal for more information. +- title: Code Review + tags: + - Concept + description: + "It is a good practice that is highly recommended for the systems development + process, through which the team's developers help each other. Normally, after + the development stage of each task is completed, before the code is made available + for testing, the team evaluates what was done and makes suggestions on what can + be improved, when necessary. This brings several benefits. Some of them are: improving + the technical side of the team, improving development, code quality, team integration, + everyone knows what is being developed, among others." +- title: Code Smells + tags: + - Concept + description: + Code smells are indicators of potential problems in the code that, + while they do not cause immediate errors or prevent the software from working, + can suggest areas of risk that could lead to future difficulties in maintaining + and evolving the code. They often point to design issues, duplication, complexity, + or lack of clarity that can make the code more difficult to understand, modify, + or extend. +- title: Commit + tags: + - Concept + description: + When we work with code versioning (which is highly recommended), the + word commit is quite common among developers. But this word is also used by those + who work with databases. When there is a set of changes made to a code, the person + executes the commit command that saves what was done within the project. There + is also the semantic commit, which means that this set of changes must have a + meaning for the project. The commit also serves to finalize a transaction within + a database management system, making the changes visible. This transaction will + normally start with the begin command and end with the commit command. +- title: Component + tags: + - Concept + - Design + description: + A component is a fundamental, reusable unit of user interface construction. + It encapsulates the logic and presentation related to a specific part of the interface. + Components can be compared to building blocks that, when combined, form complex + interfaces. They promote code organization and maintainability, since they can + be developed and tested independently. Components can accept properties (props) + as input and render information based on those data, allowing for flexible customization. +- title: Computed variable + tags: + - Concept + description: + It is a variable that does not store a value directly, it calculates + or derives its value from other variables or data. +- title: Computer Vision + tags: + - Artificial intelligence + - Concept + description: + It is a field of artificial intelligence that studies how computers + can obtain and process information from visual stimuli. It focuses on developing + systems that can analyze and understand images and videos, allowing computers + to recognize objects, people, places, movements, and other visual elements. Computer + vision (CV) is used in a wide variety of applications, such as facial recognition, + self-driving cars, medical diagnosis, among others. +- title: Continuous Delivery + tags: + - Concept + description: + Continuous Delivery (CD) is a software development practice that ensures + that the code is always ready to be deployed to production at any time. After + Continuous Integration (CI), the software is automatically prepared for releases, + with an automated deployment process and rigorous tests that ensure its quality. + The benefits of CD include faster deployments, reduced risks, and continuous feedback + from end users. Tools such as Spinnaker and Octopus Deploy are commonly used to + facilitate this practice. +- title: Continuous Integration + tags: + - Concept + description: + Continuous integration is the practice of frequently testing the parts + of the code that are added to a project. This prevents bugs and errors from being + added, efficiently performing specific tests that verify the integration of each + part. +- title: Convolutional Neural Network + tags: + - Artificial intelligence + - Concept + - Neural network + description: + It is a type of artificial neural network that uses a mathematical + operation called convolution in one or more of its layers. A Convolutional Neural + Network or CNN is often used to process input data that has a matrix structure, + such as images, and is widely used in computer vision applications, such as image + and video recognition. +- title: CORS + tags: + - Concept + description: + Cross-Origin Resource Sharing is a security policy for websites. It + determines how resources on a web page can be accessed by another page on a different + domain. For example, an image or CSS file can usually be shared between different + sites without problems, but JavaScript code often has stricter restrictions. +- title: CSS + tags: + - Front-end + description: + Cascading Style Sheets is a mechanism for adding styles to a web page + such as colors, sizes, fonts, etc. It is possible to link the HTML file to the + CSS by adding a link to a CSS file that contains the styles. +- title: CSS Preprocessors + tags: + - Front-end + description: + "CSS preprocessors are like special tools that make styling a website + easier. They make it possible to create more complicated styles that can be reused + in different parts of the site. Think of them as smarter ways of choosing colors + and fonts to make a website look good and work. Examples: SASS/SCSS and LESS." +- title: Curl + tags: + - Tool + description: + Tool for transferring data to/from a server, i.e. making a request + using various protocols, the most common being HTTP. When you hear the term 'make + a curl for x' it means that you need to make a request for x, but not necessarily + using the curl tool. Curl is widely used because it is simple to use via the command + line (terminal), not requiring third-party software to make calls. + content: + code: curl https://www.google.com diff --git a/_data/en-us/d.yml b/_data/en-us/d.yml new file mode 100644 index 00000000..571f7c45 --- /dev/null +++ b/_data/en-us/d.yml @@ -0,0 +1,146 @@ +- title: Data Augmentation + tags: + - Artificial intelligence + - Concept + description: + It is a data preprocessing technique used to increase the size of a + training dataset available to a machine learning model by generating new data + based on the existing data, which improves its performance and reduces the risk + of overfitting. For example, an image dataset can be augmented using rotations, + zooms, mirrorings, and other geometric transformations. +- title: Dataset + tags: + - Artificial intelligence + - Concept + description: + A dataset is a set of data that can be used to train and test machine + learning models. Different parts of the dataset are typically used for training + and testing to avoid overfitting. Parts can also be used for validation and inference. + A dataset is made up of several examples, which in turn are made up of several + data points. For example, a cat dataset might contain several examples of cats, + where each example might be made up of one or more images and several associated + attributes, such as size, breed, and color. +- title: DBMS + tags: + - Concept + description: + DBMS (Database Management System) is a type of system that allows the + user to manage databases, performing operations such as creating and modifying + tables, allowing access for users, among others. We can say, for example, that + MySQL is a DBMS. +- title: DDoS + tags: + - Concept + - Cyber security + description: + DDoS is an attack where many devices try to connect to a website at + the same time to overload it. +- title: Deep Learning + tags: + - Artificial intelligence + - Concept + description: + Deep Learning or DL is a subset of machine learning that uses deep + artificial neural networks to learn representations of complex data. Due to the + multiple layers present in a deep neural network, deep learning tends to be much + more time-consuming than traditional machine learning, but tends to offer higher + performance, efficiency, and accuracy. Deep learning is one of the most advanced + areas of artificial intelligence. +- title: Deep Neural Network + tags: + - Artificial intelligence + - Concept + - Neural network + description: + Deep Neural Network or DNN is a type of artificial neural network with + several layers of interconnected processing units. It is called a deep neural + network due to the number of hidden layers used in the deep learning model. While + a basic neural network is made up of an input layer, an output layer and a few + intermediate layers (also called hidden layers), a deep neural network has several + hidden processing layers, which can reach thousands. These additional layers give + these networks the ability to make predictions with greater accuracy when compared + to a simpler neural network, but they require millions of sample data points and + hundreds of hours of training. +- title: Deploy + tags: + - Concept + description: + Deployment is a complex process. But it means that a package of what + was developed in the environments was installed. A version is generated to be + made available. For this deployment to happen, it can be an automated process + with tools, or done manually, depending on the structure. +- title: Design Critique + tags: + - Design + description: + It is a collaborative process where designers, developers and other + stakeholders review and evaluate a design project or concept in a constructive + way. The goal is to obtain valuable feedback on the aesthetic effectiveness, functionality, + and usability of the design, allowing to identify strengths and areas of improvement. + During the process, participants discuss aspects such as visual coherence, user + experience and adherence to product goals and technical feasibility, promoting + an open environment where ideas can be shared. This process not only improves + the final result, but also strengthens collaboration and learning within the team. +- title: Design Ops + tags: + - Design + description: + A practice that optimizes and integrates the design process in digital + product development teams, promoting collaboration between designers, developers + and stakeholders. It implements frameworks, tools, and processes that improve + the efficiency, consistency, and quality of design. The focus is to create a structured + environment that allows designers to focus on the tasks at hand, while operational + aspects, such as documentation and resource management, are managed effectively. + This aligns design goals with business objectives, resulting in more cohesive + and well-designed digital products. +- title: Design System + tags: + - Design + - Front-end + description: + "It is a set of guidelines, components, and standards that guide the + creation and maintenance of consistent user interfaces and experiences in digital + products. It includes elements such as: color palettes, typography, icons, and + layout standards, in addition to being a documentation for designers and developers + on how and when to use the design system components. It aims to improve development + efficiency, ensure visual and functional coherence, and facilitate collaboration + between design and development teams." +- title: DevOps + tags: + - Concept + description: + It is a practice that integrates software development (Dev) and IT + operations (Ops) to improve collaboration and efficiency between teams. It focuses + on automation and the integration of development, testing, and deployment processes, + enabling faster and higher-quality releases. The approach emphasizes continuous + communication, continuous integration (CI), and continuous delivery (CD), promoting + an agile and responsive development lifecycle, resulting in software delivered + more efficiently and reliably. +- title: DOM (Document Object Model) + tags: + - Front-end + description: + A representation of the tree structure of HTML elements on a page, + which allows dynamic manipulation of content. Think of it as a map of the page + that JavaScript uses to understand and change the content. It's like a 'blueprint' + of the page. +- title: Domain Adaptation + tags: + - Artificial intelligence + - Concept + description: + It is the ability to apply an algorithm trained on one or more 'source + domains' to a different but related 'target domain'. Domain adaptation is a subcategory + of transfer learning. In domain adaptation, the source and target domains all + have the same feature space (but different distributions), while transfer learning + includes cases where the feature space of the target domain is different. For + example, a spam filtering model trained on data from one user can be adapted to + a new user who receives completely different emails. +- title: DoS + tags: + - Concept + - Cyber security + description: + DoS is a denial of service attack. In this attack a single computer + is used to make many queries to a website in a short space of time with the aim + of taking it offline. diff --git a/_data/en-us/e.yml b/_data/en-us/e.yml new file mode 100644 index 00000000..a8a8c859 --- /dev/null +++ b/_data/en-us/e.yml @@ -0,0 +1,54 @@ +- title: Early Stopping + tags: + - Artificial intelligence + - Concept + description: + It is a machine learning model training technique that stops training + when the model's performance stops improving. It is used to avoid overfitting + and generate a model with good performance. +- title: Embedding + tags: + - Artificial intelligence + - Concept + description: + It is a vector representation of an object, such as a word, a sentence + or an image. It is used to represent objects in a more compact and efficient way, + allowing machine learning models to learn relationships between objects. For example, + a word can be represented by a vector of real numbers, where each dimension represents + an attribute of the word, such as gender, number, tense, among others. This vector + representation can be used as input to a machine learning model, allowing it to + learn relationships between words, such as synonyms, antonyms, among others. +- title: Encapsulation + tags: + - Concept + description: + Encapsulation works like a "magic box" that hides the internal details + of an object. This means that an object's data and inner workings are kept private + and cannot be accessed directly from the outside. Instead, the object provides + controlled interfaces (public methods) for interacting with it. This helps protect + the object's data and control how it is used, promoting code security and organization. +- title: Environment + tags: + - Concept + description: + We usually call environment the place or servers where what was developed + is available for testing, validation, end users to use, or other needs. It can + be a physical computer or available in the cloud. There are local and dev environments + (where development is taking place), homolog (or even hom, homol, homologation + - where tests are usually done), and production (where the final system, developed + and tested, is available to users). +- title: Epoch + tags: + - Artificial intelligence + - Concept + description: + Is a complete iteration of a machine learning model over a training + data set. Training with a very small number of epochs may not be enough for a + model to learn, while a very large number may cause overfitting. +- title: Expo CLI + tags: + - Mobile + - Tool + description: + Expo CLI is a tool that makes it easier to develop mobile applications + for iOS and Android. It is used to quickly create a project with React Native. diff --git a/_data/en-us/f.yml b/_data/en-us/f.yml new file mode 100644 index 00000000..f3951f7c --- /dev/null +++ b/_data/en-us/f.yml @@ -0,0 +1,60 @@ +- title: Few-Shot Learning + tags: + - Artificial intelligence + - Concept + description: + It is a type of machine learning that uses few labeled data to train + a model. In it, a machine learning model (usually pre-trained) is trained with + new labeled data, containing few examples per class. Few-shot learning is widely + used to solve classification problems on small data sets. +- title: Fine-tuning + tags: + - Artificial intelligence + - Concept + description: + Is the process of training a pre-trained machine learning model on + a new dataset. It is used to adapt a base model for a specific task, improving + its performance and reducing training time compared to training from scratch. + Fine-tuning is commonly used in computer vision and natural language processing + models. +- title: Fork + tags: + - Concept + - Versioning + description: + Forking is like creating an independent copy of a project. It's like + taking someone else's project, copying it, and having it in your own account. + This allows you to make your own changes without touching the original project. + This is common in open source projects. +- title: Foundation Models + tags: + - Artificial intelligence + - Concept + description: + Also called base models, these are machine learning models that are + pre-trained on large datasets and are commonly made available for use by third + parties. They are used as base models for various applications in computer vision, + natural language processing, among others. Foundation models can be used frozen, + as a feature extraction layer, or fine-tuned, generating a complete model. +- title: Frameworks + tags: + - Concept + - Framework + description: + They are like collections of tools, components and solutions that you + can find in the same package (the framework) that facilitate the creation of complex + applications. +- title: Front-end Development + tags: + - Front-end + description: + Front-end development is the development of the graphical interface, + so that users can view and interact with what has been developed. +- title: Function + tags: + - Concept + description: + A function is a block of code that performs a specific task and can + be called from other parts of the program. It helps organize and reuse code, making + software more modular and readable. Functions may take inputs (called arguments) + and can return a result (return value) or simply perform an action. diff --git a/_data/en-us/g.yml b/_data/en-us/g.yml new file mode 100644 index 00000000..0b06be5c --- /dev/null +++ b/_data/en-us/g.yml @@ -0,0 +1,116 @@ +- title: Garbage Collector + tags: + - Concept + description: Garbage collector is a tool that helps to free up space in the computer's + memory automatically. Imagine that, when developing a program, you use memory + blocks to store information. Over time, some of these blocks are no longer needed. + The garbage collector identifies these "useless" blocks and cleans them, returning + the space for the system to use again. This is especially useful in programming + languages such as Java, C# and JavaScript, where this process is done automatically, + helping to avoid problems and making the computer faster. +- title: Generative Adversarial Network + tags: + - Artificial intelligence + - Concept + - Neural network + description: Generative Adversarial Network or GAN is a type of artificial neural + network composed of two competing neural networks trained in an adversarial manner. + The generative neural network is trained to generate new data, while the discriminative + network is trained to distinguish between real data and fake data. In this way, + the two neural networks compete with each other, which leads to a continuous improvement + of both and generates two specialized models, which can be used separately after + being trained. The generative model is often used to generate new, more realistic + images, videos, audios and texts, such as human faces, videos of people talking, + audios of people singing and news texts. The discriminative model is commonly + used to identify fake data. +- title: Generative Neural Network + tags: + - Artificial intelligence + - Concept + - Neural network + description: It is a type of artificial neural network that generates new data based + on a set of training data. This data is usually variations of the input data, + such as changes in a person's expressions in a video. It is often used to generate + new images, videos, audios and texts, and can be used for data augmentation. +- title: Git + tags: + - Tool + - Versioning + description: Git is a distributed version control system widely used for tracking + changes to files and coordinating work on software development projects. +- title: GitHub + tags: + - Tool + - Versioning + description: GitHub is a web-based source code hosting platform that offers a variety + of services related to version control and collaboration in software development + (it is used in conjunction with Git). It is widely used by developers around the + world to store, collaborate, manage, and control the source code of software projects. +- title: GitLab + tags: + - Tool + - Versioning + description: GitLab is a Git-based source code hosting platform that, like GitHub, + offers integrated CI/CD (continuous integration and continuous delivery) tools + directly. It stands out for having an "open core" policy, in which it is possible + to access and contribute to its source code, being much more transparent than + other platforms that keep their source code closed. +- title: GPT + tags: + - Artificial intelligence + - Neural network + description: It is a large language model created by OpenAI. Namely Generative Pre-trained + Transformer, it is capable of generating high-quality texts, such as news articles, + poetry, and fiction, based on a small piece of text as input. It is one of the + most advanced language models in the world and is capable of performing a wide + variety of natural language tasks, such as machine translation, text summarization, + code generation, among others. The latest versions also support other data types, + such as images. +- title: Gradient + tags: + - Artificial intelligence + - Concept + description: The gradient simply measures how much the output of a function changes + if you change the inputs by a small amount. It measures the change in all the + weights of the neural network relative to the difference in the calculated error. + You can also think of a gradient as the slope of a function. The larger the gradient, + the steeper the slope and the faster a model can learn. But if the slope is zero, + the model stops learning. In mathematical terms, a gradient is a partial derivative + with respect to its inputs. +- title: Gradient Descent + tags: + - Artificial intelligence + - Concept + description: Neural network models are usually trained by an optimization algorithm + that is a variation of gradient descent. During learning, input training data + helps the model learn, and the loss function evaluates how accurate the prediction + performance is for each iteration. As training progresses, the goal is to reduce + the loss function/prediction error by iteratively adjusting the parameters. Specifically, + the gradient descent algorithm has a forward pass (or forward propagation) step + and a backward pass (or backpropagation). In the forward propagation step, the + input data is passed through the neural network and the output is calculated. + In the backward propagation step, the gradient of the loss function is calculated + with respect to each weight in the neural network, and the weights are updated + according to the gradient. The algorithm then takes a gradient descent step to + minimize the loss function (taking into account the learning rate). +- title: Gradient Explosion + tags: + - Artificial intelligence + - Concept + description: Exploding gradient is a problem that occurs when the gradient of a + loss function grows exponentially during the training of a machine learning model. + This can result in model parameters diverging to infinity, causing the learning + process to fail. When gradients explode, weight updates during training can become + so large that they cause the model to revert to a large error, instead of minimizing + it with each iteration. Gradient explosion can be caused by several factors, such + as a very high learning rate, a poorly designed loss function, among others. +- title: Green IT + tags: + - Concept + description: Green IT, also known as Ecological IT or Green Computing, represents + the sustainable side of information technology. Its concept revolves around the + analysis and implementation of initiatives and programs that impact the environmental + sustainability and social responsibility of companies and organizations. Its main + highlight is making technology a potential source of solutions for environmental + problems. + diff --git a/_data/en-us/h.yml b/_data/en-us/h.yml new file mode 100644 index 00000000..3885ff4e --- /dev/null +++ b/_data/en-us/h.yml @@ -0,0 +1,36 @@ +- title: Honeypot + tags: + - Concept + - Cybersecurity + description: + A honeypot is a security system configured to detect, divert, or in + some way neutralize attempts of unauthorized use of information systems. The definition + of honeypot comes from the world of espionage, where the spy Mata Hari uses a + romantic relationship as a way to steal secrets. They are described as the placement + of a "honey pot". It attracts cybercriminals as a trap, allowing administrators + to monitor their activities and develop better defenses. +- title: HTML + tags: + - Front-end + description: + HTML is a markup language used to build web pages. HTML documents can + be interpreted by browsers. +- title: HTML/XML Tag + tags: + - Concept + description: + A tag is a markup element used in markup languages, such as HTML and + XML, to define the structure and meaning of a document. They are used to define + the beginning and end of an element, such as a paragraph, a table, or an image. + Tags are written between angle brackets, such as , with the marking of the + end of an element defined as . If an element has no other elements inside + it (also called child elements), it can be defined only as instead of + . +- title: Hyperparameter + tags: + - Artificial intelligence + - Concept + description: + Also called a training parameter, it is a parameter of a machine learning + model that is not changed during training. It is used to control the behavior + of a machine learning model and can be tuned to improve its performance. diff --git a/_data/en-us/i.yml b/_data/en-us/i.yml new file mode 100644 index 00000000..093f83fd --- /dev/null +++ b/_data/en-us/i.yml @@ -0,0 +1,51 @@ +- title: IDE + tags: + - Tool + description: + IDE is short for Integrated Development Environment. It is a program + with graphical interfaces that facilitate the interaction of developers in the + creation of applications. Typically an IDE includes a source code editor and debugging + tools to identify and correct errors. Popular examples of IDEs include Android + Studio, Eclipse, and Visual Studio Code. +- title: Infrastructure as Code + tags: + - Concept + - Devops + description: + "Infrastructure as Code (IaC) is the practice of building infrastructure + (such as resources within a cloud provider) through coding, just as we do when + developing software. To code the infrastructure, tools like Terraform are used. + The infrastructure code is versioned and can be kept separate or together with + the application code that will use this infrastructure later. Infrastructure as + Code is like a detailed recipe book for cooks: instead of giving verbal instructions, + you write everything in the book, ensuring that everyone follows exactly the same + instructions and prepares the dishes consistently and accurately. This reduces + errors and facilitates environment replication." +- title: Inheritance + tags: + - Concept + description: + Inheritance works like a "family tree". It allows a class or object + to inherit characteristics and behaviors from another parent class. This means + that the child class inherits the attributes and methods of the parent class, + saving time and promoting code reuse. Inheritance is a way to organize and structure + code by creating class hierarchies that represent relationships between real-world + objects. +- title: IoT + tags: + - Concept + description: + IoT (Internet of Things) is a type of technology composed of a network + of interconnected devices and objects, such as sensors, cameras, household items, + electronic devices, and vehicles, for example. Its goal is basically to connect + the most diverse equipment to the internet in order to capture and exchange data + with other devices, ranging from simple household objects to sophisticated industrial + tools. +- title: Issue + tags: + - Concept + - Versioning + description: + An issue is like a note that notes a problem or something to be done + in a project. It is like a reminder that can be used to talk about bugs, request + new features, discuss improvements, or keep an eye on a task. diff --git a/_data/en-us/j.yml b/_data/en-us/j.yml new file mode 100644 index 00000000..fe33839f --- /dev/null +++ b/_data/en-us/j.yml @@ -0,0 +1,43 @@ +- title: JavaScript + tags: + - Back-end + - Front-end + description: + JavaScript is a structured, interpreted, high-level scripting language + with weak dynamic typing and multi-paradigm. Along with HTML and CSS, JavaScript + is one of the three core technologies for building websites. +- title: jQuery + tags: + - Front-end + - Library + description: + A library of JavaScript functions that interact with HTML in a much + faster and simpler way than plain JavaScript. +- title: JSF + tags: + - Back-end + - Front-end + description: + JSF (JavaServer Faces) is an evolution of JSP, where rich interface + navigation component libraries were introduced, such as Primefaces, facilitating + the construction of front-end applications. +- title: JSON + tags: + - Concept + description: + "It means JavaScript Object Notation. JSON is a type of file and has + a structure with data name and data value. Depending on the type of API we build, + we use the JSON format to transfer data between systems. For example: API that + queries customers in your business. The API response may come in JSON format." + content: + code: "{name: 'Morganna', cpf: '000.000.000-00', email: 'email@email.com'}" +- title: JSP + tags: + - Back-end + - Front-end + description: + JSP (JavaServer Pages) is an old technology that allowed the construction + of HTML pages using the Java language. With it, it was possible to execute business + logic on the screen, taking Java objects to the front in an easy way. Everything + was executed by an application server, which translated the code into a final + HTML before returning to the browser. Nowadays, it is only found in legacy systems. diff --git a/_data/en-us/l.yml b/_data/en-us/l.yml new file mode 100644 index 00000000..cf356ea3 --- /dev/null +++ b/_data/en-us/l.yml @@ -0,0 +1,109 @@ +- title: Labeled Data + tags: + - Artificial intelligence + - Concept + description: + Also called annotated data, this is data that has a label or tag that + indicates what it represents. It is used to train supervised or semi-supervised + machine learning models, where the goal is to predict an output value based on + a set of input values. For example, a dataset of images of cats and dogs might + be labeled with the class of each image, allowing a machine learning model to + be trained to classify images of cats and dogs. +- title: Lambda + tags: + - Concept + description: + Lambda is an anonymous function in programming that can be defined + and used without a specific name, often used for simple one-line expressions. + content: + code: "sum = lambda x, y: x + y" +- title: Laravel + tags: + - Back-end + - Framework + description: + Laravel is a tool for developing web systems in PHP. It offers ways + to deal with common needs in this type of application, as well as having simplified + integration with various database systems, queues, and others. +- title: Large Language Model + tags: + - Artificial intelligence + - Concept + description: + Also called LLM, it is a language model that uses deep learning to + learn representations of natural language data. It is trained on massive sets + of textual data, such as books, news articles, and web pages, and is capable of + interpreting and generating high-quality text. Large language models are used + as baseline models for a variety of natural language applications, such as machine + translation, text summarization, code generation, and more. +- title: Latent Space + tags: + - Artificial intelligence + - Concept + description: + Also called latent feature space or embedding space, it is a vector + space (manifold) that can be generated from the training of a machine learning + model. A position within this space is defined by a set of latent variables that + emerge from the similarities of objects, so that items that resemble each other + are positioned closer together. In many cases, the dimensionality of the latent + space is chosen to be smaller than the dimensionality of the input data space, + making the construction of this space an example of dimensionality reduction, + which can also be seen as a form of data compression. The latent space can be + completely unintuitive, high-dimensional, complex, and non-linear, which can increase + the difficulty of interpretation. Some visualization techniques have been developed + to connect the latent space to the visual world, but there is usually no direct + connection between the interpretation of the latent space and the model itself + that generated it. Among these techniques is t-SNE, in which the latent space + is mapped to two or three dimensions for visualization. Distances in latent space + do not have physical units, so the interpretation of these distances can depend + on the application. +- title: Learning Rate + tags: + - Artificial intelligence + - Concept + description: + Also called LR, it is a training hyperparameter for machine learning + models that controls how quickly a machine learning model learns. It is one of + the most important hyperparameters of a machine learning model and can be adjusted + to improve the model's performance. It controls how big the step will be taken + during learning towards the minimum calculated by the gradient. A very high learning + rate can cause the gradient to explode, while a very low learning rate can cause + the gradient to disappear. There are several techniques that allow you to change + the learning rate during training, such as learning rate decay, learning rate + scheduling, learning rate warming, among others. +- title: Load balancer + tags: + - Concept + description: + "A load balancer is a tool used to distribute the load (of user requests, + for example) among multiple servers. The goal of using a load balancer is to improve + the performance of applications, avoiding overload on a single server. In addition, + a load balancer can help us scale a system and ensure its high availability. To + better understand the concept, let's think of a supermarket queue: if we had + only one cashier to serve us, this cashier would probably be overloaded with so + many people trying to pay for their purchases. In this case, people are directed + to different cashiers to avoid a bottleneck and a long wait time at a single cashier." +- title: Loop + tags: + - Concept + description: + A loop is a control structure that allows you to repeatedly execute + a block of code while a condition is true. It is used to automate repetitive tasks + and save time and effort. There are several types of loops, such as the 'for' + loop, the 'while' loop, and the 'do-while' loop. +- title: Loss Function + tags: + - Artificial intelligence + - Concept + description: + It is a mathematical function that measures the difference between + the value predicted by a machine learning model and the actual value of the training + data. It is used to evaluate the accuracy of a machine learning model and adjust + its parameters to improve its performance. There are several types of loss functions, + each suited to a different type of machine learning problem. +- title: Low Level Language + tags: + - Concept + description: + A programming language that has little or no computer abstraction. + It is a programming language that is closest to machine language. diff --git a/_data/en-us/m.yml b/_data/en-us/m.yml new file mode 100644 index 00000000..dca55262 --- /dev/null +++ b/_data/en-us/m.yml @@ -0,0 +1,72 @@ +- title: Machine Learning + tags: + - Artificial intelligence + - Concept + description: Machine Learning or ML is a subset of artificial intelligence (AI) + that studies how computers can learn from and make predictions about data, without + being explicitly programmed. Most AI is done with machine learning, so the two + terms are often used synonymously, but machine learning is just one method used + for this. It is used to solve complex problems and automate tasks that would be + too time-consuming or impossible for humans. +- title: Manifold + tags: + - Artificial intelligence + - Concept + description: In differential geometry, a manifold is a high-dimensional topological + space (surface) that locally resembles Euclidean space. In machine learning, a + manifold is a latent feature space that can be generated from training a machine + learning model. The manifold hypothesis suggests that high-dimensional data (e.g., + real-world data like images and videos) are contained in a low-dimensional space, + where relationships between the data are more easily identified. The idea is that + by mapping the data to a low-dimensional space, it is possible to find patterns + and relationships more easily than in the original high-dimensional space. +- title: Material + tags: + - Design + - Front-end + - Mobile + description: Material.io is a design system created and supported by Google's designers + and developers. Material.io includes detailed UX guidelines and UI component implementations + for Android, Flutter, and the web. +- title: Memory Address + tags: + - Concept + description: It is a number that uniquely identifies a memory location in the computer. + Everything that is declared in a programming language is stored in the computer's + memory, and to access this data it is necessary to know the memory address where + it is stored. +- title: Merge + tags: + - Concept + - Versioning + description: Merge is like putting together puzzle pieces in code development. It's + when we combine changes from different parts of the code to create a unified version. + Imagine merging the work of a team that added new features back into the main + project. That's Merge - bringing it all together into a single line of development. +- title: Metric + tags: + - Artificial intelligence + - Concept + description: Also called an evaluation metric, it is a measure used to evaluate + the accuracy or performance of a machine learning model. There are several types + of metrics, each suited to a different type of problem. +- title: MLOps + tags: + - Concept + description: It is a practice that combines machine learning model development and + IT operations (Ops) to facilitate the implementation and continuous management + of machine learning models in production. The goal of MLOps is to ensure that + models are developed, tested, deployed, and monitored efficiently and at scale. + This involves automating processes such as model training, validation, and monitoring, + as well as promoting collaboration between data scientists, software engineers, + and operations teams. MLOps aims to reduce development cycle time and increase + model reliability and performance, enabling organizations to better leverage data-driven + insights. +- title: Mobile First + tags: + - Concept + - Design + - Front-end + description: This concept dictates that when creating a website, we must first meet + the needs of mobile devices. + diff --git a/_data/en-us/n.yml b/_data/en-us/n.yml new file mode 100644 index 00000000..86975d84 --- /dev/null +++ b/_data/en-us/n.yml @@ -0,0 +1,70 @@ +- title: Named parameter + tags: + - Concept + description: It is a way to pass values to a function or method by specifying the + name of the corresponding parameter. +- title: Natural Language Processing + tags: + - Artificial intelligence + - Concept + description: Also known as NLP, it is a field of artificial intelligence that studies + how computers can understand and interpret human language. It focuses on developing + systems that can analyze, understand, and generate natural language, allowing + computers to process and respond to written information. NLP is used in a wide + variety of applications, such as chatbots, machine translation, sentiment analysis, + among others. +- title: Neural Architecture Search + tags: + - Artificial intelligence + - Concept + description: Neural Architecture Search or NAS is an optimization process that uses + search algorithms to find the best neural network architecture for a given dataset. + It is used to find the best neural network architecture to solve a given problem, + improving performance and reducing training time compared to manually searching + for the best architecture. +- title: Next.js + tags: + - Framework + - Front-end + description: Next.js is a tool based on React that helps create faster and more + SEO-friendly websites. It allows pages to be generated on the server (SSR) or + created statically (SSG), which improves page loading time and user experience. +- title: Node.js + tags: + - Back-end + description: Node.js is an environment that allows you to run JavaScript on the + server. This means that you can use JavaScript to create and run server-side applications. +- title: Non-Linearity Function + tags: + - Artificial intelligence + - Concept + description: Also called an activation function, it is a mathematical function that + is applied to the output of neurons in an artificial neural network. It is used + to introduce nonlinearities into an artificial neural network by changing the + output value of each neuron in a layer before sending it to the next layer, allowing + the network to learn complex relationships between the input data and the output + data. For example, the most commonly used nonlinearity function is the ReLU (Rectified + Linear Unit) function, which returns 0 if the input value is negative and returns + the input value itself otherwise. +- title: Normalization + tags: + - Artificial intelligence + - Concept + description: It is a data processing technique used to transform data into a common + scale. It is used to improve the performance of machine learning models by reducing + variance and training time. There are several normalization techniques, such as + batch normalization, layer normalization, weight normalization, among others. +- title: NoSQL + tags: + - Concept + description: NoSQL (Not Only SQL) is a database approach that allows you to store, + retrieve, and manage data in a flexible and scalable way, without the rigid structure + of relational tables, being suitable for unstructured or semi-structured data. +- title: Null Coalescence + tags: + - Concept + description: Logical operator that allows you to handle null values, returning the + value on the right if the value on the left is null. + content: + code: let value = desiredValue ?? 42 + diff --git a/_data/en-us/numbers.yml b/_data/en-us/numbers.yml new file mode 100644 index 00000000..b49e747c --- /dev/null +++ b/_data/en-us/numbers.yml @@ -0,0 +1,9 @@ +- title: 2FA + tags: + - Concept + - Cybersecurity + description: + 2FA (Two Factor Authentication) is an authentication process that requires + two different authentication factors to establish identity. In short, it means + requiring a user to prove their identity in two different ways before granting + access. 2FA is a form of multi-factor authentication. diff --git a/_data/en-us/o.yml b/_data/en-us/o.yml new file mode 100644 index 00000000..b918f99d --- /dev/null +++ b/_data/en-us/o.yml @@ -0,0 +1,57 @@ +- title: Object + tags: + - Concept + description: + An object, in software development, is like a character in a video + game. It has characteristics (data) and can do things (methods). For example, + a "car" object can have a color, speed and brand (characteristics) and can accelerate, + brake and turn (actions/methods). Objects are instances of classes and allow you + to organize code in a way that represents real-world entities, making it more + understandable and reusable. +- title: Object-oriented programming + tags: + - Concept + - Paradigm + description: + Object-oriented programming (OOP) is a programming paradigm that is + based on the idea of modeling software around objects, which are instances of + classes. Each object contains attributes (data) and methods (functions) that operate + on that data. This allows code to be organized in a more modular, reusable, and + real-world object-oriented way. OOP promotes concepts such as encapsulation, inheritance, + and polymorphism, facilitating the creation of more flexible, understandable, + and scalable systems. +- title: Optimizer + tags: + - Artificial intelligence + - Concept + description: + Also called an optimization algorithm, it is an algorithm that adjusts + the parameters of a machine learning model to minimize the loss function. It is + used to train machine learning models and improve their performance. +- title: Optional Chaining + tags: + - Concept + description: + Optional Chaining is a feature in JavaScript to handle situations where + you need to access properties of nested objects but are not sure whether those + properties actually exist. This helps avoid 'TypeError' errors when trying to + access something that has not been defined. + content: + code: const person = name?.city?.address; +- title: ORM + tags: + - Back-end + - Concept + description: + Object-relational mapping (ORM) is how we translate tables from a database + into code, turning them into classes and objects. +- title: Overfitting + tags: + - Artificial intelligence + - Concept + description: + This is a problem that occurs when a machine learning model fits training + data very well, but fails to generalize to new data. This is seen when the model + performs very well on the metrics for the training data, but performs poorly on + the test data. Overfitting can be caused by several factors, such as a very complex + model, a very small training dataset, among others. diff --git a/_data/en-us/p.yml b/_data/en-us/p.yml new file mode 100644 index 00000000..4eef5bc1 --- /dev/null +++ b/_data/en-us/p.yml @@ -0,0 +1,74 @@ +- title: Pair Programming + tags: + - Concept + description: + "Pair programming means programming in pairs. It is a technique in + which two people (or more) work together on a task. This helps in the exchange + of knowledge and experience between developers. Two heads are better than one, + right? Some ways to apply pair programming: one person is working on the code + while receiving guidance from the other and they switch positions; one person + develops the tests and the other develops the functionality. Don't see pair programming + as a waste of time. Good integration and a sense of support in the team can make + all the difference in the quality of what is delivered." +- title: Parameter + tags: + - Concept + description: + A parameter is a piece of information passed to a function or method + as part of its call. +- title: Pointers + tags: + - Concept + description: + A pointer is a programming language data type that stores or refers + to the memory address of another value located in the computer's memory. A pointer + refers to a location in memory and gets the value from that location. As such, + a pointer is a data type that 'points' to a value. + content: + code: int *pointer; // pointer to an integer in C/C++ language +- title: Polymorphism + tags: + - Concept + description: + Polymorphism allows objects of different types to behave similarly + through a shared interface. +- title: Pre-Processing + tags: + - Artificial intelligence + - Concept + description: + Also called data preprocessing, it is the process of transforming raw + data into a format suitable for data analysis. It is generally used to prepare + data for training machine learning models and thus improve their performance. + Preprocessing involves several steps, such as data cleaning, normalization, transformation, + dimensionality reduction, among others. +- title: Property + tags: + - Concept + description: + Properties, often abbreviated as 'props', are mechanisms that allow + you to pass data from a parent component to a child component. They are used to + customize the behavior and appearance of a component. For example, when creating + a button, you can pass properties such as the background color, displayed text, + and text size as props. Props are crucial to making components reusable and configurable, + allowing them to adapt to different usage contexts. +- title: Pull Request + tags: + - Concept + - Versioning + description: + It is a change request within a project. This request can be made to + fix a problem, add a new feature, suggest changes, among other reasons. This change + request is made so that there is an evaluation of what is being changed within + the project, understanding whether it makes sense for the context at that moment. + The request can be pending until people responsible for the project or those who + have permission approve it. Other rules can be added to these requests, such as + building the application, running successful tests and whatever else makes sense + for the project in question. +- title: Python + tags: + - Back-end + description: + Python is a programming language widely used in web applications, software + development, data science, and machine learning (ML). Developers use Python because + it is easy to learn, and it runs on many different platforms. diff --git a/_data/en-us/r.yml b/_data/en-us/r.yml new file mode 100644 index 00000000..42dbb2c4 --- /dev/null +++ b/_data/en-us/r.yml @@ -0,0 +1,93 @@ +- title: React + tags: + - Front-end + description: + React is an open-source JavaScript library used to create interactive + and dynamic user interfaces in web applications and other environments, such as + mobile, TV, virtual reality, among others. It stands out for its component-based + programming model and efficiency in updating the user interface, making it a popular + choice in front-end development. +- title: React Native + tags: + - Mobile + description: + It is a Javascript framework based on React for developing cross-platform + mobile applications. +- title: Recurrent Neural Network + tags: + - Artificial intelligence + - Concept + - Neural network + description: + Recurrent Neural Network or RNN is a type of artificial neural network + that uses loops and states to process data. It is often used to process input + data that has a sequential structure, such as text, audio, video, and time series, + and is widely used in natural language processing applications, such as machine + translation, speech recognition and sentiment analysis. +- title: Recursion + tags: + - Concept + description: Recursion is a method/function that calls itself to solve a problem. +- title: Reinforcement Learning + tags: + - Artificial intelligence + - Concept + description: + Reinforcement Learning, or RL, is a type of machine learning that uses + rewards to train a model. It is widely used to solve decision-making problems, + where the goal is to maximize a reward. For example, a machine learning model + can be trained to play a game, where the training dataset consists of actions + and associated rewards. +- title: Reinforcement Learning from Human Feedback + tags: + - Artificial intelligence + - Concept + description: + Reinforcement Learning from Human Feedback (RLHF) is a technique that + trains a reward model directly from human feedback. RLHF is used in tasks where + it is difficult to define or measure a clear algorithmic solution, especially + when dealing with complex tasks involving human values or preferences, but where + humans can easily judge the quality of the model's output. For example, if the + task is to generate a compelling story, humans can rank different AI-generated + stories based on their quality and reject those that are inappropriate or outside + the model's knowledge space. A famous example of a language model trained by RLHF + is OpenAI's ChatGPT. A major challenge is the scalability and cost of human feedback, + which can be slow and expensive to obtain compared to unsupervised learning. The + quality and consistency of this feedback can also vary depending on the task and + the individual preferences of humans. If the feedback is not unbiased, or is inconsistent + or incorrect, the model can become biased. +- title: Repository + tags: + - Concept + - Versioning + description: + A Repository is basically a box that holds all of your project's material. + Think of it as a place where you store your code, history of changes, and other + important files. There are local repositories on your computer and remote repositories + on shared servers. +- title: Responsiveness + tags: + - Design + - Front-end + description: + The ability of a website or application to adapt to different screen + sizes and devices, such as smartphones, tablets, and desktops. +- title: RPA + tags: + - Concept + description: + Robotic Process Automation is a technology that enables the automation + of repetitive, rule-based tasks using software robots to perform primarily repetitive + activities. These robots mimic human actions in digital systems, such as clicking + buttons, filling out forms, copying and pasting data, accessing systems, and executing + predefined processes. +- title: Ruby + tags: + - Back-end + - Concept + description: + Ruby is a dynamically typed, strongly typed, multiparadigm interpreted + programming language with automatic memory management. Ruby supports functional, + object-oriented, imperative, and reflective programming. It is like a digital + toolbox that can create, organize, and make different parts of a computer program + interact, being able to handle many different programming styles. diff --git a/_data/en-us/s.yml b/_data/en-us/s.yml new file mode 100644 index 00000000..c2b2bb47 --- /dev/null +++ b/_data/en-us/s.yml @@ -0,0 +1,110 @@ +- title: Scrum + tags: + - Back-end + description: It is a method of managing projects where work is broken down into + small chunks called 'sprints', which typically last a few weeks. The team works + closely together, meeting regularly to plan, review, and adjust work. The goal + is to deliver value quickly and iteratively, responding to changes and feedback + as the project progresses. +- title: Semi-Supervised Learning + tags: + - Artificial intelligence + - Concept + description: It is a type of machine learning that uses labeled and unlabeled data + to train a model. It is widely used to solve classification problems of large + data sets, where the goal is to predict an output value based on a set of input + values. Semi-supervised training is used when there is a large set of unlabeled + data and a small set of labeled data, and is more efficient than supervised training + and more accurate than unsupervised training. +- title: Smart Cities + tags: + - Concept + description: Smart cities are locations that use organized urban infrastructure + and digital technologies to optimize their processes. This includes the use of + devices with Artificial Intelligence and the Internet of Things, among others. +- title: SOLID + tags: + - Concept + description: 'The SOLID principles are five guidelines for object-oriented software + design, promoting more flexible, robust and maintainable systems. They are: Single + Responsibility Principle (a class should have only one responsibility), Open/Closed + Principle (classes should be open for extension, but closed for modification), + Liskov Substitution Principle (subclasses should be replaceable by their superclasses + without changing the correctness of the program), Interface Segregation Principle + (classes should not be forced to implement interfaces they do not use) and Dependency + Inversion Principle (high-level modules should not depend on low-level modules; + both should depend on abstractions).' +- title: Spread Operator + tags: + - Concept + description: The spread operator is an operator that is present in several programming + languages, which allows copying and combining elements from one data structure + into another, facilitating the efficient manipulation of information. +- title: SQL + tags: + - Back-end + - Concept + description: Structured Query Language (SQL) is a programming language used to manage + data in relational databases. It's like a language that allows us to talk to databases + to do things like search, add, update, and delete information. +- title: Stack Navigation + tags: + - Mobile + description: In the context of React Native, it is a navigation technique between + the application's screens, when the application has back and forward buttons, + for example. +- title: Stateful Widget + tags: + - Concept + - Mobile + description: A StatefulWidget, in Flutter, is a component that has mutable internal + state, allowing it to respond to state changes and dynamically update the user + interface. +- title: Stateless Widget + tags: + - Concept + - Mobile + description: A StatelessWidget, in Flutter, is a component that has no internal + mutable state, ideal for parts of the user interface that do not change over time + and do not rely on state. +- title: Style Guide + tags: + - Design + description: It is a library that brings together style guidelines and visual standards + for the creation of digital products. It includes elements such as typography, + color palettes, use of icons and layouts, but does not cover technical aspects + such as code. The objective of a style guide is to ensure visual consistency and + coherence in brand communication, serving as a reference for designers and marketing + and communication teams, but without the direct collaboration of developers. +- title: Supervised Learning + tags: + - Artificial intelligence + - Concept + description: Supervised learning is a type of machine learning that uses labeled + data to train a model. It is used to solve classification and regression problems, + where the goal is to predict an output value based on a set of input values. For + example, a machine learning model can be trained to classify images of cats and + dogs, where the training dataset consists of images of cats and dogs labeled as + such. Supervised training is one of the most common types of machine learning + and can be used to solve a wide variety of problems. +- title: Svelte + tags: + - Framework + - Front-end + description: Svelte is a JavaScript tool that transforms code during the construction + of the website or application, without needing an extra layer to work in the browser. + This makes it faster and lighter compared to other similar tools. +- title: Swift + tags: + - Mobile + description: Swift is a programming language created by Apple. With it, you can + develop applications for Apple devices and operating systems, such as iPhones + (iOS), Macs (macOS), Apple Watches (watchOS) and Apple TVs (tvOS). +- title: SwiftUI + tags: + - Mobile + description: SwiftUI is an Apple tool for creating the visual part of applications + using the Swift language. Unlike UIKit, which is more traditional, SwiftUI allows + you to describe the user interface in a simpler and more direct way, making it + easier to both create and maintain your code. + diff --git a/_data/en-us/t.yml b/_data/en-us/t.yml new file mode 100644 index 00000000..d93475a0 --- /dev/null +++ b/_data/en-us/t.yml @@ -0,0 +1,53 @@ +- title: Terminal + tags: + - Concept + description: + "The Terminal is a CLI that allows users to interact directly with + the operating system using text commands, instead of a graphical interface (GUI). + In the Terminal, you can perform a series of tasks and commands directly, such + as navigating directories, manipulating files, configuring the system, and running + programs. We can highlight terminals such as: Bash (Linux and MacOS), Zsh (Linux + and MacOS), Fish (Linux and MacOS), CMD (Windows), and PowerShell (Windows)." +- title: Ternary Operator + tags: + - Concept + description: + 'The ternary conditional operator is a shorthand way to make a choice + between two options based on a condition. It works like this: if the condition + is true, it returns the first result; if it is false, it returns the second. It''s + like a compact version of an "if-else" in a single line.' + content: + code: "Expression(condition) ? True(exp1) : False(exp2);" +- title: Transfer Learning + tags: + - Artificial intelligence + - Concept + description: + A machine learning technique in which knowledge learned from one task + is reused to improve performance on a related task. For example, knowledge gained + from learning to recognize cars can be applied when trying to segment images of + cars. In transfer learning, the model that is transferred is called the source + model, and the model to which it is transferred is called the target model. The + source and target tasks are different but related, and the source task is used + to aid in learning the target task. The source and target data can be from the + same modality (e.g., images) or from different modalities (e.g., images and text). +- title: Transformer + tags: + - Artificial intelligence + - Concept + - Neural network + description: + A type of artificial neural network that uses an encoder-decoder architecture + to process input data. Transformer models apply a set of mathematical techniques, + called attention or self-attention, to detect the subtle ways in which even distant + data elements in a series influence and depend on each other. By finding patterns + between elements mathematically, transformers eliminate the need for large, labeled + datasets, which are expensive and time-consuming to produce. Any application that + uses sequential data from text, images, or videos is a candidate for transformer + models. +- title: Typed variable + tags: + - Concept + description: + "A typed variable is one that has a data type associated with it (e.g.: + int, float, string)." diff --git a/_data/en-us/u.yml b/_data/en-us/u.yml new file mode 100644 index 00000000..1524d186 --- /dev/null +++ b/_data/en-us/u.yml @@ -0,0 +1,63 @@ +- title: UI Design + tags: + - Concept + - Design + - Front-end + description: + It is the process of creating the visual and interactive part of a + digital product, such as a website or an application. This includes the design + of buttons, menus, icons, and the entire look and feel of the layout, ensuring + that it is aesthetically pleasing and easy to navigate. The goal of UI Design + is to make users feel comfortable and attracted to the look of the product, applying + colors, typography and visual elements that align with the brand identity. +- title: UIKit + tags: + - Mobile + description: + UIKit is a set of tools provided by Apple for creating the visual parts + of iOS applications. It provides a set of classes and components for building + and managing the user interface, including elements such as buttons, tables, views, + and gestures. +- title: UML + tags: + - Back-end + description: + It is a visual language that software developers use to describe and + design software systems. It offers different types of diagrams, such as class, + sequence, and activity diagrams, to represent different aspects of a system. These + diagrams help teams better understand and communicate software ideas and designs. +- title: Underfitting + tags: + - Artificial intelligence + - Concept + description: + It is a problem that occurs when a machine learning model does not + fit well on the training data and cannot generalize to new data. This is seen + when the model performs poorly on both the training data and the test data. Underfitting + can be caused by several factors, such as a model that is too simple, a training + dataset that is too small, among others. +- title: Unsupervised Learning + tags: + - Artificial intelligence + - Concept + description: + It is a type of machine learning that uses unlabeled data to train + a model. It is used to solve clustering problems, where the goal is to find patterns + in a dataset. For example, a machine learning model can be trained to cluster + images of cats and dogs, where the training dataset consists of images of cats + and dogs without associated labels. The model is then responsible for finding + patterns in the data and clustering the data according to those patterns, independent + of any other information. +- title: UX Design + tags: + - Concept + - Design + - Front-end + description: + It is the process of creating products and services that offer a positive + and efficient experience for users. This involves understanding the needs and + behaviors of the people who will use the product, to ensure that it is easy to + use, accessible and enjoyable. The goal is to make the user's interaction with + the product intuitive, helping to solve problems and meet expectations, from the + first contact to continued use. It is about designing experiences that make users + feel satisfied and engaged with the product. diff --git a/_data/en-us/v.yml b/_data/en-us/v.yml new file mode 100644 index 00000000..1dfe40c6 --- /dev/null +++ b/_data/en-us/v.yml @@ -0,0 +1,27 @@ +- title: Vanishing Gradient + tags: + - Artificial intelligence + - Concept + description: Vanishing gradient is a problem that occurs when the gradient of a + loss function decreases exponentially during the training of a machine learning + model. As the gradients often become smaller until they are close to zero, the + new weights calculated by the model will be virtually identical to the old weights, + without any updates. As a result, the gradient descent algorithm never converges + to the optimal solution and the model stops learning. Vanishing gradient can be + caused by several factors, such as a very low learning rate, a poorly designed + loss function, among others. +- title: Versioning + tags: + - Concept + - Versioning + description: Code versioning is the control of changes made to a project over time + by tracking and recording modifications made to the source code. +- title: Vue.js + tags: + - Framework + - Front-end + description: Vue.js is a JavaScript tool used to create user interfaces, that is, + what people see and interact with on a website or application. It is easy to add + to existing projects and is widely used to build sites that function as a single + page (SPAs). + diff --git a/_data/en-us/w.yml b/_data/en-us/w.yml new file mode 100644 index 00000000..6cda0179 --- /dev/null +++ b/_data/en-us/w.yml @@ -0,0 +1,9 @@ +- title: WAF + tags: + - Concept + - Cybersecurity + description: + "The WAF (Web Application Firewall) helps protect web applications + by filtering and monitoring incoming traffic on web applications. It protects + against the most common types of attacks, such as: cross-site request forgery, + cross-site scripting (XSS), file inclusion, and SQL injection, among others." diff --git a/_data/en-us/x.yml b/_data/en-us/x.yml new file mode 100644 index 00000000..682ac7de --- /dev/null +++ b/_data/en-us/x.yml @@ -0,0 +1,11 @@ +- title: XML + tags: + - Concept + description: + XML (eXtensible Markup Language) is a markup language that defines + a set of rules for encoding documents. It is a markup language like HTML, but + XML was created to be more flexible, allowing the creation of new tags, while + HTML has a limited number of predefined tags. It is a generic language that can + be used to represent any type of structured data. XML is a very popular language, + being used in databases, system configuration files, information transmission, + among others. diff --git a/_data/en-us/z.yml b/_data/en-us/z.yml new file mode 100644 index 00000000..03c53708 --- /dev/null +++ b/_data/en-us/z.yml @@ -0,0 +1,18 @@ +- title: Zero-Shot Learning + tags: + - Artificial intelligence + - Concept + description: + It is a problem setting in deep learning where, at test time, a model + is given samples of classes that were not observed during training and needs to + identify the class to which they belong. Unlike standard machine learning, where + models must correctly classify new samples into classes that were already observed + during training, in zero-shot learning no samples of the classes of the new data + were provided during the training of the classifier. Therefore, it can be seen + as an extreme case of domain adaptation. Zero-shot methods usually work by associating + observed and unobserved classes through some form of auxiliary information, which + encodes distinctive observable properties of the objects. For example, given a + set of images of animals to be classified, along with auxiliary textual descriptions + of what the animals look like, an artificial intelligence model that has been + trained to recognize horses but has never seen a zebra can still recognize a zebra + when it also knows that zebras look like striped horses. diff --git a/_data/pt-br/a.yml b/_data/pt-br/a.yml new file mode 100644 index 00000000..d8f7898f --- /dev/null +++ b/_data/pt-br/a.yml @@ -0,0 +1,214 @@ +- title: Abstração + tags: + - Conceito + description: Abstração é uma simplificação de ponto(s) específicos de algum sistema + ou comportamento que estamos tentando entender. Na programação, usamos abstrações + o tempo todo. Isso significa que não precisamos entender todos os detalhes técnicos + profundos para escrever código - como o funcionamento interno de um computador. + Em vez disso, podemos usar ideias mais simples para criar nossos programas. +- title: Adaptação de Domínio + tags: + - Conceito + - Inteligência artificial + description: É a capacidade de aplicar um algoritmo treinado em um ou mais 'domínios + de origem' a um 'domínio de destino' diferente, mas relacionado. A adaptação de + domínio é uma subcategoria da transferência de aprendizado. Na adaptação de domínio, + os domínios de origem e destino têm todos o mesmo espaço de características (mas + distribuições diferentes), enquanto na transferência de aprendizado inclui casos + em que o espaço de características do domínio de destino é diferente. Por exemplo, + um modelo de filtragem de spam treinado com dados de um usuário pode ser adaptado + para um novo usuário que recebe emails completamente diferentes. +- title: AIoT + tags: + - Conceito + description: AIoT (Artificial Intelligence of Things), ou Inteligência Artificial + das Coisas, é a combinação de Inteligência Artificial (IA) com a Internet das + Coisas (IoT). Seu principal objetivo é automatizar e acelerar o processamento + dos dados gerados pelos dispositivos de IoT, com o mínimo de intervenção humana. + Isso facilita a análise dos dados e torna a tomada de decisões mais rápida. Sem + a IA, embora houvesse um grande volume de informações disponíveis, seria necessário + depender da intervenção humana para torná-las úteis. +- title: Algoritmo + tags: + - Conceito + description: Um algoritmo é como uma receita de bolo para o computador. É um conjunto + de passos organizados que ajudam a resolver um problema, como fazer contas ou + analisar informações. +- title: Ambiente + tags: + - Conceito + description: Costumamos chamar de ambiente o lugar ou os servidores onde o que foi + desenvolvido fica disponível para testes, validações, pessoas usuárias finais + utilizarem ou demais necessidades. Pode ser um computador físico ou disponível + na nuvem. Existem os ambientes local e dev (onde o desenvolvimento está acontecendo), + homolog (ou ainda hom, homol, homologação - onde os testes costumam ser feitos) + e produção (onde está disponível o sistema final, desenvolvido e testado, para + pessoas usuárias). +- title: Angular.js + tags: + - Framework + - Front-end + description: Angular.js é uma ferramenta desenvolvida pelo Google que facilita a + criação de sites ou aplicativos que funcionam como uma única página (SPAs), ou + seja, sem recarregar a página inteira a cada interação. Ele organiza o código + de forma eficiente usando "módulos" e "injeção de dependências", o que ajuda a + manter tudo mais fácil de gerenciar. Grandes empresas como Google e Microsoft + utilizam essa tecnologia. +- title: API + tags: + - Back-end + - Conceito + description: 'API é uma sigla que, em inglês, significa Application Programming + Interface. Traduzindo para português, seria uma interface programada para aplicações. + É uma estrutura de código que atende a alguns requisitos, seguindo normas e padrões + de desenvolvimento, facilitando a organização de sistemas grandes. Disponibiliza + funcionalidades e informações para aplicativos e sites. Por exemplo: API dos Correios + que disponibiliza consulta de CEP e endereço de maneira simplificada.' +- title: Aprendizado de Máquina + tags: + - Conceito + - Inteligência artificial + description: No inglês, Machine Learning ou ML, é um subconjunto da inteligência + artificial (IA) que estuda como os computadores podem aprender com e fazer previsões + sobre dados, sem serem explicitamente programados. A maior parte da IA é realizada + com aprendizagem de máquina, por isso os dois termos são frequentemente utilizados + como sinônimos, mas o aprendizado de máquina é apenas um método usado para tal. + Ele é usado para resolver problemas complexos e automatizar tarefas que seriam + muito demoradas ou impossíveis para seres humanos. +- title: Aprendizado Few-Shot + tags: + - Conceito + - Inteligência artificial + description: É um tipo de aprendizado de máquina que usa poucos dados rotulados + para treinar um modelo. Nele, um modelo de aprendizado de máquina (geralmente + pré-treinado) é treinado com novos dados rotulados, contendo poucos exemplos por + classe. O aprendizado few-shot é muito usado para resolver problemas de classificação + de pequenos conjuntos de dados. +- title: Aprendizado Não-Supervisionado + tags: + - Conceito + - Inteligência artificial + description: É um tipo de aprendizado de máquina que usa dados não rotulados para + treinar um modelo. Ele é usado para resolver problemas de agrupamento, onde o + objetivo é encontrar padrões em um conjunto de dados. Por exemplo, um modelo de + aprendizado de máquina pode ser treinado para agrupar imagens de gatos e cachorros, + onde o conjunto de dados de treinamento é composto por imagens de gatos e cachorros + sem rótulos associados. O modelo então é responsável por encontrar padrões nos + dados e agrupá-los de acordo com esses padrões, independente de qualquer outra + informação. +- title: Aprendizado por Reforço + tags: + - Conceito + - Inteligência artificial + description: No inglês, Reinforcement Learning ou RL, é um tipo de aprendizado de + máquina que usa recompensas para treinar um modelo. Ele é muito usado para resolver + problemas de tomada de decisão, onde o objetivo é maximizar uma recompensa. Por + exemplo, um modelo de aprendizado de máquina pode ser treinado para jogar um jogo, + onde o conjunto de dados de treinamento é composto por ações e recompensas associadas. +- title: Aprendizado por Reforço a partir de Feedback Humano + tags: + - Conceito + - Inteligência artificial + description: Do inglês, Reinforcement Learning from Human Feedback ou RLHF, é uma + técnica que treina um modelo de recompensa diretamente a partir do feedback humano. + RLHF é usado em tarefas onde é difícil definir ou medir uma solução algorítmica + clara, especialmente ao lidar com tarefas complexas que envolvem valores ou preferências + humanas, mas onde os humanos podem facilmente julgar a qualidade da saída do modelo. + Por exemplo, se a tarefa é gerar uma história convincente, os humanos podem classificar + diferentes histórias geradas por IA com base em sua qualidade e rejeitar aquelas + que são inadequadas ou fora do espaço de conhecimento do modelo. Um exemplo famoso + de modelo de linguagem treinado por RLHF é o ChatGPT da OpenAI. Um grande desafio + é a escalabilidade e o custo do feedback humano, que pode ser lento e caro de + obter em comparação com a aprendizagem não supervisionada. A qualidade e a consistência + desse feedback também podem variar dependendo da tarefa e das preferências individuais + dos humanos. Se o feedback não for imparcial, ou for inconsistente ou incorreto, + o modelo pode se tornar tendencioso. +- title: Aprendizado Profundo + tags: + - Conceito + - Inteligência artificial + description: Do inglês, Deep Learning ou DL, é um subconjunto do aprendizado de + máquina que usa redes neurais artificiais profundas para aprender representações + de dados complexos. Devido às múltiplas camadas presentes em uma rede neural profunda, + o aprendizado profundo tende a ser muito mais demorado que um aprendizado de máquina + tradicional, mas tende a oferecer maior desempenho, eficiência e precisão. O aprendizado + profundo é uma das áreas mais avançadas da inteligência artificial. +- title: Aprendizado Semi-Supervisionado + tags: + - Conceito + - Inteligência artificial + description: É um tipo de aprendizado de máquina que usa dados rotulados e não rotulados + para treinar um modelo. Ele é muito usado para resolver problemas de classificação + de grandes conjuntos de dados, onde o objetivo é prever um valor de saída com + base em um conjunto de valores de entrada. O treinamento semi-supervisionado é + usado quando há um grande conjunto de dados não rotulados e um pequeno conjunto + de dados rotulados, sendo mais eficiente que o treinamento supervisionado e mais + preciso que o treinamento não-supervisionado. +- title: Aprendizado Supervisionado + tags: + - Conceito + - Inteligência artificial + description: É um tipo de aprendizado de máquina que usa dados rotulados para treinar + um modelo. Ele é usado para resolver problemas de classificação e regressão, onde + o objetivo é prever um valor de saída com base em um conjunto de valores de entrada. + Por exemplo, um modelo de aprendizado de máquina pode ser treinado para classificar + imagens de gatos e cachorros, onde o conjunto de dados de treinamento é composto + por imagens de gatos e cachorros rotuladas como tal. O treinamento supervisionado + é um dos tipos mais comuns de aprendizado de máquina e pode ser usado para resolver + uma ampla variedade de problemas. +- title: Aprendizado Zero-Shot + tags: + - Conceito + - Inteligência artificial + description: É uma configuração de problemas em aprendizado profundo onde, no momento + do teste, um modelo recebe amostras de classes que não foram observadas durante + o treinamento e precisa identificar a classe à qual pertencem. Ao contrário do + que ocorre no aprendizado de máquina padrão, no qual modelos devem classificar + corretamente novas amostras em classes que já foram observadas durante o treinamento, + no aprendizado zero-shot nenhuma amostra das classes dos novos dados foi fornecida + durante o treinamento do classificador. Portanto, pode ser visto como um caso + extremo de adaptação de domínio. Métodos de zero-shot geralmente funcionam associando + classes observadas e não observadas por meio de alguma forma de informação auxiliar, + que codifica propriedades distintivas observáveis dos objetos. Por exemplo, dado + um conjunto de imagens de animais a serem classificados, juntamente com descrições + textuais auxiliares de como os animais se parecem, um modelo de inteligência artificial + que foi treinado para reconhecer cavalos, mas nunca viu uma zebra, ainda consegue + reconhecer uma zebra quando também sabe que zebras parecem cavalos listrados. +- title: Argumento + tags: + - Conceito + description: Um argumento é um valor ou uma informação que você fornece a uma função + ou método durante sua chamada. Esses argumentos são usados pela função para realizar + uma tarefa específica ou para tomar decisões com base nos valores fornecidos. + Em resumo, os argumentos são dados de entrada que permitem que uma função realize + seu trabalho e produza um resultado ou execute ações desejadas. +- title: Aumento dos dados + tags: + - Conceito + - Inteligência artificial + description: Em inglês chamado de data augmentation, é uma técnica de pré-processamento + de dados usada para aumentar o tamanho de um conjunto de dados de treinamento + disponível para um modelo de aprendizado de máquina, gerando novos dados com base + nos dados existentes, o que melhora seu desempenho e reduz o risco de overfitting. + Por exemplo, um conjunto de dados de imagens pode ser aumentado usando rotações, + zooms, espelhamentos e outras transformações geométricas. +- title: Autoencoder + tags: + - Conceito + - Inteligência artificial + - Rede neural + description: É um tipo de rede neural artificial composto por duas redes neurais + no formato codificador-decodificador, sendo uma responsável por codificar dados + de entrada em um espaço latente e outra por decodificar dados de um espaço latente + de volta para o espaço de entrada. Ela é frequentemente usada para comprimir dados + de entrada em aplicações como compressão de imagens e vídeos, redução de dimensionalidade + e aumento de dados. +- title: AWS Commit + tags: + - Ferramenta + - Versionamento + description: AWS Commit é a plataforma de hospedagem de código-fonte da Amazon (AWS) + e está totalmente integrado com o ecossistema AWS, permitindo fácil automação + e integração com outros serviços da AWS, como CodePipeline (para CI/CD), IAM (controle + de permissões), e CloudWatch (monitoramento). + diff --git a/_data/pt-br/b.yml b/_data/pt-br/b.yml new file mode 100644 index 00000000..875d9886 --- /dev/null +++ b/_data/pt-br/b.yml @@ -0,0 +1,92 @@ +- title: Balanceador de Carga + tags: + - Conceito + description: + "Um balanceador de carga (do inglês Load Balancer) é uma ferramenta + utilizada para distribuir a carga (de requisições dos usuários, por exemplo) entre + múltiplos servidores. O objetivo do uso de um balanceador de carga é o de melhorar + o desempenho de aplicações, evitando a sobrecarga em um único servidor. Além disso, + um balanceador de carga pode nos auxiliar a escalar um sistema e garantir a alta + disponibilidade do mesmo. Para entender melhor o conceito, vamos pensar em uma + fila de supermercado: se tivéssemos apenas um caixa para nos atender, possivelmente + esse caixa ficaria sobrecarregado com tantas pessoas tentando pagar suas compras. + Neste caso, as pessoas são direcionadas para diferentes caixas para evitar um + gargalo e um alto tempo de espera em um único caixa." +- title: Batch Size + tags: + - Conceito + - Inteligência artificial + description: + Tamanho do lote, em português, é um hiperparâmetro de modelos de aprendizado + de máquina que controla o número de exemplos usados em uma única execução do modelo. + Ele é usado para controlar a rapidez com que um modelo de aprendizado de máquina + aprende e pode ser ajustado para melhorar seu desempenho. Um tamanho de lote muito + pequeno durante o treinamento exige menos memória, porém mais iterações para completar + uma época, enquanto um tamanho de lote maior permite um treinamento mais rápido, + com menos iterações por época, porém que ocupa mais memória. +- title: BitBucket + tags: + - Ferramenta + - Versionamento + description: + Assim como o GitHub, o BitBucket também é uma plataforma de hospedagem + de código-fonte e também possui ferramentes integradas de CI/CD, mas se integra + especialmente bem com ferramentas Atlassian, como o Jira, e suporta repositórios + Git e Mercurial, enquanto o GitHub só suporta Git. +- title: Blue-green deployment + tags: + - Conceito + - Devops + description: + "O blue-green deployment é uma estratégia de deployment que consiste + em termos uma réplica do ambiente de produção. As novas versões de software são + implantadas nessa réplica, e, depois da implantação, alterna-se o tráfego dos + usuários para o ambiente com a nova versão, liberando assim o acesso a essa nova + versão para todos os usuários. Uma de suas vantagens é que, em caso de erros na + nova versão, basta redirecionar as requisições dos usuários de volta para o sistema + anterior. Para entender melhor o blue-green deployment, imagine que você tem duas + cozinhas em um restaurante: uma azul e uma verde. A cozinha azul está funcionando + e servindo os clientes, enquanto você prepara a cozinha verde. Quando a cozinha + verde está pronta, você começa a usá-la para servir os clientes. Se tudo correr + bem, você desativa a cozinha azul. Se houver problemas, você pode voltar rapidamente + para a cozinha azul." +- title: Botnet + tags: + - Conceito + - Segurança cibernética + description: + "Botnet é uma rede de dispositivos conectados na internet infectados + por um malware (os malwares são programas maliciosos que afetam um dispositivo), + possibilitando que criminosos-ciberneticos derrubem sites usando essa rede de + dispositivos. Os dispositivos pedem ser desde um computador até um equipamento + IoT (um aparelho IoT é um equipamento conectado à internet sem o uso de cabos, + por exemplo: TVs inteligentes, lampadas inteligentes, geladeiras inteligentes + e celulares)." +- title: Branch + tags: + - Conceito + - Ferramenta + - Versionamento + description: + Uma branch é como uma cópia do seu projeto em um momento específico. + É como se você criasse uma versão separada para trabalhar em novas ideias sem + mexer na versão principal. Cada branch pode ser editado à parte, permitindo que + você desenvolva coisas novas sem atrapalhar o código principal. +- title: Bug + tags: + - Conceito + description: + O termo Bug é comumente usado para informar que há algum problema no + programa ou no ambiente. Pode ser um comportamento incorreto ou inesperado, geralmente + causados por lógica incorreta no código, causando falhas durante a execução de + um software. +- title: Busca de Arquitetura Neural + tags: + - Conceito + - Inteligência artificial + description: + No inglês, Neural Architecture Search ou NAS, é um processo de otimização + que usa algoritmos de busca para encontrar a melhor arquitetura de rede neural + para um determinado conjunto de dados. Ela é usada para encontrar a melhor arquitetura + de rede neural para resolver determinado problema, melhorando o desempenho e reduzindo + o tempo de treinamento em comparação com a busca manual pela melhor arquitetura. diff --git a/_data/pt-br/c.yml b/_data/pt-br/c.yml new file mode 100644 index 00000000..2cd18984 --- /dev/null +++ b/_data/pt-br/c.yml @@ -0,0 +1,203 @@ +- title: C + tags: + - Conceito + description: + "A linguagem C existe desde antes da internet e foi criada em 1972. + É muito usada em banco de dados por sua alta performance para todos os tipos de + sistemas: financeiro, governamental, mídia, entretenimento, entre outros. C também + é uma linguagem compilada e muito utlizada para sistemas embarcados e principalmente + sistemas operacionais como o linux." +- title: C++ + tags: + - Conceito + description: + C++ é uma linguagem de programação criada em 1979, que foi desenvolvido + como uma extensão da linguagem C, incorporando recursos adicionais, como suporte + à programação orientada a objetos. Também é uma linguagem compilada e ferramenta + super versátil com ótimo desempenho para criar programas de computador, e se destaca + quando o assunto é criação de jogos e principalmente quando falamos de softwares + de imagem com o OpenCV, uma biblioteca criada com C++ e muito utilizada. +- title: Cache + tags: + - Conceito + description: + O cache é uma técnica de armazenamento temporário de dados frequentemente + usados para melhorar o desempenho e a velocidade de acesso a esses dados em sistemas + computacionais. +- title: Canary deployment + tags: + - Conceito + - Devops + description: + O canary deployment é uma estratégia de deployment que consiste em + termos uma réplica do ambiente produtivo. As novas versões de software são implantadas + nessa réplica, e, depois da implantação, o lançamento da nova versão é feito de + maneira gradual, encaminhando um percentual das requisições dos usuários para + o ambiente que contém esta nova versão. Para realizar este chaveamento gradual, + é possível utilizar um load-balancer, por exemplo. Para entender melhor o canary + deployment, imagine que você tem um restaurante e quer lançar um prato novo no + cardápio. Porém, em vez de oferecer esse prato novo a todos os clientes, você + seleciona apenas um pequeno grupo de clientes para os quais o prato será oferecido + e testa como eles irão reagir ao prato. Se o feedback for positivo, você pode + começar a oferecer o novo prato a um grupo maior de clientes, até que o prato + seja de fato lançado no cardápio para todos eles. +- title: Chatbot + tags: + - Conceito + - Inteligência artificial + description: + É um programa de computador que simula um ser humano em uma conversa + por meio de mensagens de texto ou de voz, muito utilizado para automatizar tarefas + repetitivas e fornecer suporte e assistência aos usuários. Os chatbots podem ser + usados em uma ampla variedade de aplicações, como atendimento ao cliente, assistentes + virtuais, entre outros. +- title: Cidades Inteligentes + tags: + - Conceito + description: + Cidades Inteligentes (Smart Cities) são localidades que utilizam infraestrutura + urbana organizada e tecnologias digitais para otimizar seus processos. Isso inclui + o uso de dispositivos com Inteligência Artificial e Internet das Coisas, entre + outros. +- title: Classe + tags: + - Conceito + description: + Uma classe, em desenvolvimento de software, é como molde e um "modelo" + para criar objetos. Ela define os atributos (dados) e os métodos (funções) que + os objetos criados a partir dela terão. Elas ajudam a organizar o código, permitindo + a reutilização e a abstração de dados e funcionalidades em uma estrutura coerente. +- title: CLI + tags: + - Conceito + description: + Uma Command Line Interface (CLI) é uma forma de interagir com programas + de computador onde você digita comandos em vez de clicar em botões ou usar menus. + Existem diferentes formas de usar um software, como a interface gráfica (GUI), + que é aquela que vemos com imagens e botões, ou por meio de APIs, que permitem + que outros programas se comuniquem com o software. Um exemplo de software que + pode ser usado de várias formas é o GitHub, que pode ser acessado através de um + navegador, de um aplicativo de desktop ou pelo terminal, usando a linha de comando + (CLI). +- title: Clone + tags: + - Conceito + - Versionamento + description: + Clonar um repositório é como criar uma cópia local desse projeto no + seu próprio espaço de trabalho. É como ter sua própria versão do código para mexer + como quiser. Isso permite que você trabalhe em uma versão local do código, faça + alterações e contribua de volta ao projeto principal quando estiver pronto. +- title: CMD + tags: + - Conceito + description: + O CMD (abreviação de "Command Prompt", ou Prompt de Comando) é um Terminal + presente no sistema operacional Windows. Ver Terminal para mais informações. +- title: Coalescência nula + tags: + - Conceito + description: + Operador lógico que permite tratar valores nulos, retornando o valor + à direita caso o valor à esquerda seja nulo. + content: + code: let valor = valorDesejado ?? 42 +- title: Code Review + tags: + - Conceito + description: + "Code review significa revisão de código. Trata-se de uma boa prática + muito indicada para o processo de desenvolvimento de sistemas, pelo qual as pessoas + desenvolvedoras do time ajudam umas as outras. Normalmente, após o término da + etapa de desenvolvimento de cada tarefa, antes do código ser disponibilizado para + testes, o time avalia o que foi feito e dá sugestões do que pode ser melhorado, + quando necessário. Isso traz diversos benefícios. Alguns deles são: melhorar a + parte técnica do time, melhoria do desenvolvimento, qualidade do código, integração + do time, todas as pessoas conhecem o que está sendo desenvolvido, entre outros." +- title: Code Smells + tags: + - Conceito + description: + Code smells são indicadores de possíveis problemas no código que, embora + não causem erros imediatos ou impeçam o funcionamento do software, podem sugerir + áreas de risco que podem levar a dificuldades futuras na manutenção e evolução + do código. Eles geralmente apontam para problemas de design, duplicação, complexidade + ou falta de clareza que podem tornar o código mais difícil de entender, modificar + ou estender. +- title: Commit + tags: + - Conceito + description: + Quando trabalhamos com versionamento de código (o que é altamente recomendado), + a palavra commit é bastante comum entre as pessoas desenvolvedoras. Mas essa palavra + também é utilizada por quem atua em banco de dados. Quando se tem um conjunto + de alterações feitas em um código, a pessoa faz o comando commit que salva o que + foi feito dentro do projeto. Existe também o commit semântico, que significa que + esse conjunto de alterações deve ter um significado para o projeto. O commit também + serve para finalizar uma transação dentro de um sistema de gerenciamento de banco + de dados, tornando visíveis as alterações. Essa transação normalmente vai começar + com o comando begin e finalizar com o comando commit. +- title: Componente + tags: + - Conceito + - Design + description: + Um componente é uma unidade fundamental e reutilizável de construção + de interfaces de usuário. Ele encapsula a lógica e a apresentação relacionadas + a uma parte específica da interface. Componentes podem ser comparados a blocos + de construção que, quando combinados, formam interfaces complexas. Eles promovem + a organização e a manutenibilidade do código, uma vez que podem ser desenvolvidos + e testados de forma independente. Os componentes podem aceitar propriedades (props) + como entrada e renderizar informações com base nesses dados, permitindo uma personalização + flexível. +- title: Computação em Nuvem + tags: + - Conceito + description: + De modo geral, refere-se ao uso de serviços de computador, como armazenamento + de arquivos e execução de programas, através da internet. Isso significa que você + não precisa de equipamentos físicos, pois tudo é feito online. Você pode acessar + seus dados e programas de qualquer lugar, a qualquer momento, sem se preocupar + com a manutenção dos equipamentos físicos. +- title: Conjunto de Dados + tags: + - Conceito + - Inteligência artificial + description: + Chamado de dataset no inglês, é um conjunto de dados que pode ser usado + para treinar e testar modelos de aprendizado de máquina. Normalmente são usadas + partes diferentes dos conjuntos de dados para treinamento e para teste, para evitar + a ocorrência de overfitting. Também podem ser usadas partes para validação e para + inferência. Um conjunto de dados é composto por vários exemplos, que por sua vez + são compostos por vários pontos de dados. Por exemplo, um conjunto de dados de + gatos pode conter vários exemplos de gatos, onde cada exemplo pode ser composto + por uma ou mais imagens e vários atributos atrelados, como tamanho, raça e cor. +- title: CORS + tags: + - Conceito + description: + Do inglês "Cross-Origin Resource Sharing" ou, em português, "Compartilhamento + de Recursos de Origem Cruzada", é uma regra de segurança para websites. Ele determina + como recursos de uma página web podem ser acessados por outra página de um domínio + diferente. Por exemplo, uma imagem ou arquivo CSS geralmente pode ser compartilhado + entre diferentes sites sem problemas, mas códigos JavaScript frequentemente têm + restrições mais rigorosas. +- title: CSS + tags: + - Front-end + description: + Cascading Style Sheets é um mecanismo para adicionar estilos a uma + página web como cores, tamanhos, fontes e etc. É possivel ligar o arquivo HTML + ao CSS adicionando um link para um arquivo CSS que contém os estilos. +- title: Curl + tags: + - Ferramenta + description: + Ferramenta para transferir dados de/para um servidor, ou seja fazer + uma requisição utilizando diversos protocolos, sendo o mais comum o HTTP. Quando + se escuta o termo 'faz um curl para x' significa que é preciso fazer uma requisição + para x, mas não necessáriamente utilizando a ferramenta curl. O curl é bastante + utilizado por ser simples de utilizar via linha de comando(terminal), não necessitando + de softwares terceiros para realizar chamadas. + content: + code: curl https://www.google.com diff --git a/_data/pt-br/d.yml b/_data/pt-br/d.yml new file mode 100644 index 00000000..3d127b19 --- /dev/null +++ b/_data/pt-br/d.yml @@ -0,0 +1,121 @@ +- title: Dados Rotulados + tags: + - Conceito + - Inteligência artificial + description: Também chamados de dados anotados, são dados que possuem um rótulo + ou tag que indica o que eles representam. Eles são usados para treinar modelos + de aprendizado de máquina supervisionado ou semi-supervisionado, onde o objetivo + é prever um valor de saída com base em um conjunto de valores de entrada. Por + exemplo, um conjunto de dados de imagens de gatos e cachorros pode ser rotulado + com a classe de cada imagem, permitindo que um modelo de aprendizado de máquina + seja treinado para classificar imagens de gatos e cachorros. +- title: DDoS + tags: + - Conceito + - Segurança cibernética + description: DDoS é um ataque onde muitos dispositivos tentam se conectar ao mesmo + tempo no site para sobrecarregá-lo. +- title: Deploy + tags: + - Conceito + description: 'O deploy é um processo complexo. Mas significa que foi instalado um + pacote do que foi desenvolvido nos ambientes. É gerada uma versão para que seja + disponibilizada. Esse processo também pode ser chamado de implantação dependendo + do contexto. Para que essa implantação aconteça, pode ser um processo automatizado + com ferramentas, ou feito manualmente, dependendo da estrutura. Acabamos aportuguesando + a palavra deploy, tornando-a uma ação. Exemplo: estou deployando a nova versão + do nosso sistema.' +- title: Desaparecimento do Gradiente + tags: + - Conceito + - Inteligência artificial + description: Chamado em inglês de vanishing gradient, é um problema que ocorre quando + o gradiente de uma função de perda diminui exponencialmente durante o treinamento + de um modelo de aprendizado de máquina. Conforme os gradientes frequentemente + se tornam menores até ficarem próximos de zero, os novos pesos calculados do modelo + serão virtualmente idênticos aos pesos antigos, sem nenhuma atualização. Como + resultado, o algoritmo de descida de gradiente nunca converge para a solução ótima + e o modelo deixa de aprender. O desaparecimento do gradiente pode ser causada + por vários fatores, como uma taxa de aprendizado muito baixa, uma função de perda + mal projetada, entre outros. +- title: Descida do Gradiente + tags: + - Conceito + - Inteligência artificial + description: Modelos de redes neurais são geralmente treinados por um algoritmo + de otimização que é uma variação da descida do gradiente. Durante o aprendizado, + os dados de treinamento de entrada ajudam o modelo a aprender e a função de perda + avalia o quão precisa é a performance de predição para cada iteração. À medida + que o treinamento avança, o objetivo é reduzir a função de perda/erro de predição + ajustando os parâmetros iterativamente. Especificamente, o algoritmo de descida + do gradiente tem uma etapa de propagação para a frente (do inglês, forward pass + ou forward propagation) e uma etapa para trás (do inglês, backward pass ou backpropagation). + Na etapa de propagação para a frente, os dados de entrada são passados pela rede + neural e a saída é calculada. Na etapa de propagação para trás, o gradiente da + função de perda é calculado em relação a cada peso da rede neural, e os pesos + são atualizados de acordo com o gradiente. Então o algoritmo dá um passo de descida + do gradiente para minimizar a função de perda (considerando a taxa de aprendizado). +- title: Desenvolvimento Front-end + tags: + - Front-end + description: Desenvolvimento front-end é o desenvolvimento da interface gráfica, + para que as pessoas usuárias possam visualizar e interagir com o que foi desenvolvido. +- title: Design Critique + tags: + - Design + description: É um processo colaborativo onde designers, pessoas desenvolvedoras + e outras partes interessadas revisam e avaliam um projeto ou conceito de design + de forma construtiva. O objetivo é obter feedback valioso sobre a eficácia estética, + funcionalidade e usabilidade do design, permitindo identificar pontos fortes e + áreas de melhoria. Durante o rito, os participantes discutem aspectos como a coerência + visual, a experiência do usuário e a aderência as metas do produto e a viabilidade + técnica, promovendo um ambiente aberto onde ideias podem ser compartilhadas. Esse + processo não apenas melhora o resultado final, mas também fortalece a colaboração + e o aprendizado dentro da equipe. +- title: Design Ops + tags: + - Design + description: Prática que otimiza e integra o processo de design nas equipes de desenvolvimento + de produtos digitais, promovendo a colaboração entre designers, pessoas desenvolvedoras + e partes interessadas. Ela implementa frameworks, ferramentas e processos que + melhoram a eficiência, consistência e qualidade do design. O foco é criar um ambiente + estruturado que permita que os designers se concentrarem nas tarefas, enquanto + aspectos operacionais, como documentação e gestão de recursos, são geridos de + forma eficaz. Isso alinha as metas de design com os objetivos de negócios, resultando + em produtos digitais mais coesos e bem projetados. +- title: Design System + tags: + - Design + - Front-end + description: 'É um conjunto de diretrizes, componentes e padrões que orientam a + criação e a manutenção de interfaces e experiências de usuário consistentes em + produtos digitais. Inclui elementos como: paletas de cores, tipografia, ícones + e padrões de layout, além de ser uma documentação para designers e pessoas desenvolvedoras + sobre como e quando utilizar os componentes do design system. Visa melhorar a + eficiência no desenvolvimento, garantir a coerência visual e funcional, e facilitar + a colaboração entre as equipes de design e desenvolvimento.' +- title: DevOps + tags: + - Conceito + description: É uma prática que integra desenvolvimento de software (Dev) e operações + de TI (Ops) para melhorar a colaboração e a eficiência entre equipes. Foca na + automação e na integração de processos de desenvolvimento, teste e implantação, + permitindo lançamentos mais rápidos e de maior qualidade. A abordagem enfatiza + comunicação contínua, integração contínua (CI) e entrega contínua (CD), promovendo + um ciclo de vida de desenvolvimento ágil e responsivo, resultando em software + entregue de forma mais eficiente e confiável. +- title: DOM (Document Object Model) + tags: + - Front-end + description: Uma representação da estrutura de árvore dos elementos HTML em uma + página, que permite a manipulação dinâmica do conteúdo. Imagine isso como um mapa + da página que o JavaScript usa para entender e alterar o conteúdo. É como um 'modelo' + da página. +- title: DoS + tags: + - Conceito + - Segurança cibernética + description: DoS é um ataque de negação de serviço. Neste ataque é usado apenas + um computador que faz muitas consultas em um site em um espaço curto de tempo + com o objetivo de tirá-lo do ár. + diff --git a/_data/pt-br/e.yml b/_data/pt-br/e.yml new file mode 100644 index 00000000..e8666656 --- /dev/null +++ b/_data/pt-br/e.yml @@ -0,0 +1,105 @@ +- title: Early Stopping + tags: + - Conceito + - Inteligência artificial + description: + Também chamado de parada antecipada, é uma técnica de treinamento de + modelos de aprendizado de máquina que interrompe o treinamento quando o desempenho + do modelo para de melhorar. Ela é usada para evitar o overfitting e gerar um modelo + com bom desempenho. +- title: Embedding + tags: + - Conceito + - Inteligência artificial + description: + Também chamado de incorporação, é uma representação vetorial de um + objeto, como uma palavra, uma frase ou uma imagem. Ela é usada para representar + objetos de forma mais compacta e eficiente, permitindo que modelos de aprendizado + de máquina aprendam relações entre os objetos. Por exemplo, uma palavra pode ser + representada por um vetor de números reais, onde cada dimensão representa um atributo + da palavra, como gênero, número, tempo verbal, entre outros. Essa representação + vetorial pode ser usada como entrada para um modelo de aprendizado de máquina, + permitindo que ele aprenda relações entre as palavras, como sinônimos, antônimos, + entre outros. +- title: Encapsulamento + tags: + - Conceito + description: + O encapsulamento funciona como uma "caixa mágica" que esconde os detalhes + internos de um objeto. Isso significa que os dados e o funcionamento interno de + um objeto são mantidos privados e não podem ser acessados diretamente de fora. + Em vez disso, o objeto fornece interfaces controladas (métodos públicos) para + interagir com ele. Isso ajuda a proteger os dados do objeto e controlar como ele + é usado, promovendo a segurança e a organização do código. +- title: Endereço de Memória + tags: + - Conceito + description: + É um número que identifica unicamente uma posição de memória no computador. + Tudo que é declarado em uma linguagem de programação é armazenado na memória do + computador, e para acessar esses dados é necessário saber o endereço de memória + onde eles estão armazenados. +- title: Entrega Contínua + tags: + - Conceito + description: + Entrega contínua (do inglês, Continuous Delivery ou CD) é uma prática + de desenvolvimento de software que assegura que o código esteja sempre pronto + para ser implantado em produção a qualquer momento. Após a Integração Contínua + (CI), o software é automaticamente preparado para lançamentos, com um processo + de implantação automatizado e rigorosos testes que garantem sua qualidade. Os + benefícios do CD incluem implantações mais rápidas, redução de riscos e feedback + contínuo das pessoas usuárias. Ferramentas como Spinnaker e Octopus Deploy são + comumente utilizadas para facilitar essa prática. +- title: Época + tags: + - Conceito + - Inteligência artificial + description: + Do inglês, epoch, é uma iteração completa de um modelo de aprendizado + de máquina sobre um conjunto de dados de treinamento. Um treinamento com uma quantidade + de épocas muito pequena pode não ser suficiente para um modelo aprender, enquanto + uma quantidade muito grande pode causar o overfitting. +- title: Espaço Latente + tags: + - Conceito + - Inteligência artificial + description: + Também chamado de espaço de características latentes ou espaço de incorporação + (do inglês, embedding space), é um espaço vetorial (manifold) que pode ser gerado + a partir do treinamento de um modelo de aprendizado de máquina. Uma posição dentro + desse espaço é definida por um conjunto de variáveis latentes que emergem das + semelhanças dos objetos, de modo que itens que se assemelham são posicionados + mais próximos. Em muitos casos, a dimensionalidade do espaço latente é escolhida + para ser menor que a dimensionalidade do espaço dos dados de entrada, tornando + a construção desse espaço um exemplo de redução de dimensionalidade, que também + pode ser vista como uma forma de compressão de dados. O espaço latente pode ser + completamente não intuitivo, de alta dimensão, complexo e não linear, o que pode + aumentar a dificuldade de interpretação. Algumas técnicas de visualização foram + desenvolvidas para conectar o espaço latente ao mundo visual, mas geralmente não + há uma conexão direta entre a interpretação do espaço latente e do próprio modelo + que o gerou. Dentre essas técnicas está o t-SNE, no qual o espaço latente é mapeado + para duas ou três dimensões para visualização. As distâncias no espaço latente + não possuem unidades físicas, portanto, a interpretação dessas distâncias pode + depender da aplicação. +- title: Explosão do Gradiente + tags: + - Conceito + - Inteligência artificial + description: + Chamado em inglês de exploding gradient, é um problema que ocorre quando + o gradiente de uma função de perda cresce exponencialmente durante o treinamento + de um modelo de aprendizado de máquina. Isso pode resultar em parâmetros do modelo + divergindo para o infinito, fazendo com que o processo de aprendizado falhe. Quando + os gradientes explodem, as atualizações de peso durante o treinamento podem se + tornar tão grandes que fazem com que o modelo volte a apresentar um erro grande, + ao contrário de minimizá-lo a cada iteração. A explosão do gradiente pode ser + causada por vários fatores, como uma taxa de aprendizado muito alta, uma função + de perda mal projetada, entre outros. +- title: Expo CLI + tags: + - Mobile + description: + O Expo CLI é uma ferramenta que facilita o desenvolvimento de aplicativos + móveis para iOS e Android. É utilizado para criar rapidamente um projeto com o + React Native. diff --git a/_data/pt-br/f.yml b/_data/pt-br/f.yml new file mode 100644 index 00000000..94dc2364 --- /dev/null +++ b/_data/pt-br/f.yml @@ -0,0 +1,56 @@ +- title: Fine-tuning + tags: + - Conceito + - Inteligência artificial + description: Também chamado de ajuste fino, é o processo de treinamento de um modelo + de aprendizado de máquina pré-treinado em um novo conjunto de dados. Ele é usado + para adaptar um modelo de base para uma tarefa específica, melhorando seu desempenho + e reduzindo o tempo de treinamento em comparação com o treinamento do zero. O + fine-tuning é comumente usado em modelos de visão computacional e processamento + de linguagem natural. +- title: Fork + tags: + - Conceito + - Versionamento + description: Fazer um Fork é como criar uma cópia independente de um projeto. É + como se você pegasse o projeto de outra pessoa, o bifurcasse, e o tivesse em sua + própria conta. Isso permite que você faça suas próprias mudanças sem mexer no + projeto original. É algo comum em projetos de código aberto. +- title: Frameworks + tags: + - Conceito + - Framework + description: São como coleções de ferramentas, componentes e soluções que você pode + encontrar em um mesmo pacote (o framework) que facilitam a criação de aplicações + complexas. +- title: Função + tags: + - Conceito + description: Uma função é um bloco de código que realiza uma tarefa específica e + pode ser chamado a partir de outras partes do programa. Ela ajuda a organizar + e reutilizar o código, tornando o software mais modular e legível. As funções + podem receber entradas (chamadas de argumentos) e podem retornar um resultado + (valor de retorno) ou simplesmente executar uma ação. +- title: Função de Não-Linearidade + tags: + - Conceito + - Inteligência artificial + description: Também chamada de função de ativação, é uma função matemática que é + aplicada na saída dos neurônios em uma rede neural artificial. Ela é usada para + introduzir não-linearidades em uma rede neural artificial, alterando o valor de + saída de cada neurônio de uma camada antes de enviar para a próxima camada, permitindo + que a rede aprenda relações complexas entre os dados de entrada e os dados de + saída. Por exemplo, a função de não-linearidade mais comumente usada é a função + ReLU (do inglês, Rectified Linear Unit), que retorna 0 se o valor de entrada for + negativo e retorna o próprio valor de entrada caso contrário. +- title: Função de Perda + tags: + - Conceito + - Inteligência artificial + description: Também chamada de função de custo (no inglês, loss function), é uma + função matemática que mede a diferença entre o valor previsto por um modelo de + aprendizado de máquina e o valor real dos dados de treinamento. Ela é usada para + avaliar a precisão de um modelo de aprendizado de máquina e ajustar seus parâmetros + para melhorar seu desempenho. Existem vários tipos de funções de perda, cada uma + adequada para um tipo diferente de problema de aprendizado de máquina. + diff --git a/_data/pt-br/g.yml b/_data/pt-br/g.yml new file mode 100644 index 00000000..c587c8e7 --- /dev/null +++ b/_data/pt-br/g.yml @@ -0,0 +1,72 @@ +- title: Garbage Collector + tags: + - Conceito + description: Garbage collector, ou "coletor de lixo", é uma ferramenta que ajuda + a liberar espaço na memória do computador automaticamente. Imagine que, ao desenvolver + um programa, você use blocos de memória para guardar informações. Com o tempo, + alguns desses blocos não são mais necessários. O coletor de lixo identifica esses + blocos "inúteis" e os limpa, devolvendo o espaço para o sistema usar novamente. + Isso é especialmente útil em linguagens de programação como Java, C# e JavaScript, + onde esse processo é feito automaticamente, ajudando a evitar problemas e deixando + o computador mais rápido. +- title: Git + tags: + - Ferramenta + - Versionamento + description: Git é um sistema de controle de versão distribuído amplamente utilizado + para rastrear as alterações em arquivos e coordenar o trabalho em projetos de + desenvolvimento de software. +- title: GitHub + tags: + - Ferramenta + - Versionamento + description: O GitHub é uma plataforma de hospedagem de código-fonte baseada na + web que oferece uma variedade de serviços relacionados ao controle de versão e + colaboração no desenvolvimento de software (é usado em conjunto com o Git). Ele + é amplamente utilizado por pessoas desenvolvedoras de todo o mundo para armazenar, + colaborar, gerenciar e controlar o código-fonte de projetos de software. Fornece + ferramentas de CI/CD (integração contínua e entrega contínua) com o GitHub Actions. +- title: GitLab + tags: + - Ferramenta + - Versionamento + description: O GitLab também é uma plataforma de hospedagem de código-fonte baseada + em Git que, assim como o GitHub, oferece ferramentas integradas de CI/CD (integração + contínua e entrega contínua) diretamente. Se destaca por ter uma política "open + core", na qual é possível acessar e contribuir com seu código-fonte, sendo muito + mais transparente que as outras plataformas que mantêm seus códigos-fonte fechados. +- title: GPT + tags: + - Inteligência artificial + - Rede neural + description: É um grande modelo de linguagem criado pela OpenAI. Do inglês, Generative + Pre-training Transformer, é capaz de gerar textos de alta qualidade, como artigos + de notícias, poesia e ficção, com base em um pequeno trecho de texto como entrada. + Ele é um dos modelos de linguagem mais avançados do mundo e é capaz de realizar + uma ampla variedade de tarefas de linguagem natural, como tradução automática, + resumo de texto, geração de código, entre outros. As versões mais recentes também + dão suporte a outros tipos de dados, como imagens. +- title: Gradiente + tags: + - Conceito + - Inteligência artificial + description: O gradiente simplesmente mede o quanto a saída de uma função muda se + você mudar um pouco as entradas. Ele mede a mudança em todos os pesos da rede + neural em relação à diferença no erro calculado. Você também pode pensar em um + gradiente como a inclinação de uma função. Quanto maior o gradiente, mais íngreme + a inclinação e mais rápido um modelo pode aprender. Mas se a inclinação for zero, + o modelo para de aprender. Em termos matemáticos, um gradiente é uma derivada + parcial em relação às suas entradas. +- title: Grande Modelo de Linguagem + tags: + - Conceito + - Inteligência artificial + description: Também chamado de modelo de linguagem de grande escala (do inglês, + large language model ou LLM), é um modelo de linguagem que usa aprendizado profundo + para aprender representações de dados de linguagem natural. Ele é treinado em + conjuntos massivos de dados textuais, como livros, artigos de notícias e páginas + da web, sendo capaz de interpretar e gerar textos de alta qualidade. Os grandes + modelos de linguagem são usados como modelos de base para diversas aplicações + de linguagem natural, como tradução automática, resumo de texto, geração de código, + entre outros. + diff --git a/_data/pt-br/h.yml b/_data/pt-br/h.yml new file mode 100644 index 00000000..d349e557 --- /dev/null +++ b/_data/pt-br/h.yml @@ -0,0 +1,37 @@ +- title: Herança + tags: + - Conceito + description: + A herança funciona como uma "árvore genealógica". Permite que uma classe + ou objeto herde características e comportamentos de outra classe pai. Isso significa + que a classe filha herda os atributos e métodos da classe pai, economizando tempo + e promovendo a reutilização de código. A herança é uma forma de organizar e estruturar + o código, criando hierarquias de classes que representam relacionamentos entre + objetos do mundo real. +- title: Hiperparâmetro + tags: + - Conceito + - Inteligência artificial + description: + Também chamado de parâmetro de treinamento, é um parâmetro de um modelo + de aprendizado de máquina que não é alterado durante o treinamento. Ele é usado + para controlar o comportamento de um modelo de aprendizado de máquina e pode ser + ajustado para melhorar seu desempenho. +- title: Honeypot + tags: + - Conceito + - Segurança cibernética + description: + Um honeypot é um sistema de segurança configurado para detectar, desviar + ou, de alguma maneira, neutralizar tentativas de uso não autorizado de sistemas + de informação. A definição de honeypot vem do mundo da espionagem, onde a espiã + Mata Hari usa uma relação romântica como uma forma de roubar segredos. São descritos + como a colocação de um "pote de mel" (daí o nome, do inglês, "honeypot"). Ele + atrai os cibercriminosos como uma armadilha, permitindo que os administradores + monitorem suas atividades e desenvolvam melhores defesas. +- title: HTML + tags: + - Front-end + description: + HTML é uma linguagem de marcação utilizada na construção de páginas + na web. Documentos HTML podem ser interpretados por navegadores. diff --git a/_data/pt-br/i.yml b/_data/pt-br/i.yml new file mode 100644 index 00000000..43d33378 --- /dev/null +++ b/_data/pt-br/i.yml @@ -0,0 +1,67 @@ +- title: IDE + tags: + - Ferramenta + description: + IDE é a abreviação de Integrated Development Environment, que em português + significa Ambiente de Desenvolvimento Integrado. Trata-se de um programa com interfaces + gráficas que facilitam a interação das pessoas desenvolvedoras na criação de aplicações. + Normalmente um IDE inclui um editor de código fonte e ferramentas de depuração + para identificar e corrigir erros. Exemplos populares de IDEs incluem Android + Studio, Eclipse e Visual Studio Code. +- title: Infraestrutura como Código + tags: + - Conceito + - Devops + description: + "Infraestrutura como código (do inglês, Infrastructure as Code ou IaC) + é a prática de se construir a infraestrutura (como recursos dentro de um provedor + de nuvem) através de codificação, como também fazemos ao desenvolver software. + Para codificar a infraestrutura, utilizam-se ferramentas como, por exemplo, o + Terraform. O código da infraestrutura é versionado e pode ser mantido separado + ou junto do código da aplicação que fará uso dessa infraestrutura posteriormente. + Infraestrutura como Código é como um livro de receitas detalhado para cozinheiros: + em vez de dar instruções verbais, você escreve tudo no livro, garantindo que todos + sigam exatamente as mesmas instruções e preparem os pratos de forma consistente + e precisa. Isso reduz erros e facilita a replicação de ambientes." +- title: Integração Contínua + tags: + - Conceito + description: + Integração contínua (do inglês, Continuous Integration ou CI) é uma + prática de desenvolvimento de software onde as pessoas desenvolvedoras integram + seu código em um repositório compartilhado, utilizando automação para compilar + e testar o software. O objetivo é detectar rapidamente erros, melhorar a qualidade + do código e reduzir o tempo de entrega, promovendo um feedback rápido e facilitando + a colaboração entre equipes. Ferramentas como Jenkins e GitHub Actions são comumente + utilizadas para implementar CI. +- title: Inteligência Artificial + tags: + - Conceito + - Inteligência artificial + description: + Também chamada de IA (no inglês, Artificial Intelligence ou AI), é + um campo da ciência da computação que estuda como os computadores podem simular + a inteligência e cognição humana. Ela se concentra no desenvolvimento de sistemas + capazes de executar tarefas que antes poderiam ser feitas somente por humanos, + como reconhecimento de fala, tomada de decisão, tradução de idiomas e reconhecimento + de padrões. A IA é um campo amplo que inclui várias subáreas, como aprendizado + de máquina, processamento de linguagem natural, visão computacional, entre outras. +- title: IoT + tags: + - Conceito + description: + IoT (Internet of Things), ou Internet das Coisas, é um tipo de tecnologia + composto por uma rede de dispositivos e objetos interconectados, como sensores, + câmeras, itens domésticos, aparelhos eletrônicos e veículos, por exemplo. Seu + objetivo é basicamente conectar os mais diversos equipamentos à internet com o + intuito de captar e trocar dados com outros dispositivos, variando desde simples + objetos caseiros a sofisticadas ferramentas industriais. +- title: Issue + tags: + - Conceito + - Versionamento + description: + Uma issue é como se fosse um bilhete que anota um problema ou algo + a ser feito em um projeto. É como um lembrete que pode ser usado para falar sobre + erros, pedir novas funcionalidades, conversar sobre melhorias ou ficar de olho + em uma tarefa. diff --git a/_data/pt-br/j.yml b/_data/pt-br/j.yml new file mode 100644 index 00000000..1ed301d1 --- /dev/null +++ b/_data/pt-br/j.yml @@ -0,0 +1,45 @@ +- title: JavaScript + tags: + - Back-end + - Front-end + description: + JavaScript é uma linguagem de programação interpretada estruturada, + de script em alto nível com tipagem dinâmica fraca e multiparadigma. Juntamente + com HTML e CSS, o JavaScript é uma das três principais tecnologias para criação + de sites. +- title: jQuery + tags: + - Biblioteca + - Front-end + description: + Biblioteca de funções em JavaScript que interagem com o HTML de uma + maneira muito mais rápida e simples do que apenas pelo JavaScript. +- title: JSF + tags: + - Back-end + - Front-end + description: + JSF (JavaServer Faces) é uma evolução de JSP, onde foram introduzidos + bibliotecas de componentes ricos de navegação de interface, tais como Primefaces, + facilitando a construção de aplicações frontends. +- title: JSON + tags: + - Conceito + description: + "Em inglês significa JavaScript Object Notation. Json é um tipo de + arquivo e tem uma estrutura com nome do dado e valor do dado. Dependendo do tipo + de API que construímos, utilizamos o formato JSON para transferir os dados entre + sistemas. Por exemplo: API que consulta clientes em seu negócio. A resposta da + API pode vir em formato JSON." + content: + code: "{name: 'Morganna', cpf: '000.000.000-00', email: 'email@email.com'}" +- title: JSP + tags: + - Back-end + - Front-end + description: + JSP (JavaServer Pages) é uma tecnologia antiga que permitia a construção + de páginas HTML usando a linguagem Java. Com ela, era possível executar lógica + de negócio na tela, levando objetos Java para o front de uma maneira fácil. Tudo + era executado por um servidor de aplicação, que traduzia o código em um HTML final + antes de voltar para o browser. Hoje em dia, só é encontrado em sistemas legados. diff --git a/_data/pt-br/l.yml b/_data/pt-br/l.yml new file mode 100644 index 00000000..fd202f3a --- /dev/null +++ b/_data/pt-br/l.yml @@ -0,0 +1,32 @@ +- title: Laço + tags: + - Conceito + description: + Um laço (do inglês, loop) é uma estrutura de controle que permite executar + repetidamente um bloco de código enquanto uma condição for verdadeira. Ele é usado + para automatizar tarefas repetitivas e economizar tempo e esforço. Existem vários + tipos de laços, como o laço 'for', o laço 'while' e o laço 'do-while'. +- title: Lambda + tags: + - Conceito + description: + Lambda é uma função anônima em programação que pode ser definida e + usada sem um nome específico, frequentemente usada para expressões simples em + uma única linha. + content: + code: "soma = lambda x, y: x + y" +- title: Laravel + tags: + - Back-end + - Framework + description: + Laravel é uma ferramenta para desenvolvimento de sistemas web em PHP. + Ele oferece meios para lidar com necessidades comuns nesse tipo de aplicação além + de possuir integração simplificada com diversos sistemas de banco de dados, filas + e outros. +- title: Linguagem de Baixo Nível + tags: + - Conceito + description: + Linguagem de programação que possui pouca ou nenhuma abstração do computador. + É uma linguagem de programação que está mais próxima da linguagem de máquina. diff --git a/_data/pt-br/m.yml b/_data/pt-br/m.yml new file mode 100644 index 00000000..1820c6cb --- /dev/null +++ b/_data/pt-br/m.yml @@ -0,0 +1,68 @@ +- title: Manifold + tags: + - Conceito + - Inteligência artificial + description: Em geometria diferencial, um manifold é um espaço topológico (superfície) + com alta dimensionalidade que localmente se parece com o espaço euclidiano. Em + aprendizado de máquina, um manifold é um espaço de características latentes que + pode ser gerado a partir do treinamento de um modelo de aprendizado de máquina. + A hipótese do manifold sugere que os dados de alta dimensão (por exemplo, dados + do mundo real como imagens e vídeos) estão contidos em um espaço de baixa dimensão, + onde as relações entre os dados são mais facilmente identificadas. A ideia é que, + ao mapear os dados para um espaço de baixa dimensão, é possível encontrar padrões + e relações mais facilmente do que no espaço de alta dimensão original. +- title: Material + tags: + - Design + - Front-end + - Mobile + description: É um sistema de design criado e apoiado pelos designers e pessoas desenvolvedoras + da Google. O Material.io inclui orientações detalhadas de UX e implementações + de componentes de UI para Android, Flutter e Web. +- title: Merge + tags: + - Conceito + - Versionamento + description: O Merge é como juntar peças de quebra-cabeça no desenvolvimento de + código. É quando combinamos alterações de diferentes partes do código para criar + uma versão unificada. Imagine misturar o trabalho de uma equipe que adicionou + novos recursos de volta ao projeto principal. Isso é o Merge - juntar tudo em + uma única linha de desenvolvimento. +- title: Métrica + tags: + - Conceito + - Inteligência artificial + description: Também chamada de métrica de avaliação, é uma medida usada para avaliar + a precisão ou desempenho de um modelo de aprendizado de máquina. Existem vários + tipos de métricas, cada uma adequada para um tipo diferente de problema. +- title: MLOps + tags: + - Conceito + description: É uma prática que combina desenvolvimento de modelos de aprendizado + de máquina (Machine Learning ou ML) e operações de TI (Ops) para facilitar a implementação + e a gestão contínua de modelos de aprendizado de máquina em produção. O objetivo + do MLOps é garantir que os modelos sejam desenvolvidos, testados, implantados + e monitorados de forma eficiente e escalável. Isso envolve automação de processos + como treinamento, validação e monitoramento de modelos, além de promover a colaboração + entre cientistas de dados, engenheiros de software e equipes de operações. O MLOps + busca reduzir o tempo de ciclo de desenvolvimento e aumentar a confiabilidade + e a performance dos modelos, permitindo que organizações aproveitem melhor as + análises geradas por dados. +- title: Mobile First + tags: + - Conceito + - Design + - Front-end + description: Esse conceito determina que ao criarmos um site, devemos primeiro atender + as necessidades dos dispositivos móveis. +- title: Modelos de base + tags: + - Conceito + - Inteligência artificial + description: Também chamados de modelos de fundação, são modelos de aprendizado + de máquina pré-treinados em grandes conjuntos de dados e comumente disponibilizados + para uso por terceiros. Eles são usados como modelos de base para diversas aplicações + de visão computacional, processamento de linguagem natural, entre outros. Modelos + de base podem ser usados congelados, como uma camada de extração de características + (features), ou passarem por um ajuste fino (finetune), gerando um modelo completo. + diff --git a/_data/pt-br/n.yml b/_data/pt-br/n.yml new file mode 100644 index 00000000..1c1ba6c7 --- /dev/null +++ b/_data/pt-br/n.yml @@ -0,0 +1,31 @@ +- title: Next.js + tags: + - Framework + - Front-end + description: Next.js é uma ferramenta baseada no React que ajuda a criar sites mais + rápidos e fáceis de encontrar nos buscadores (SEO). Ele permite que as páginas + sejam geradas no servidor (SSR) ou criadas de forma estática (SSG), o que melhora + o tempo de carregamento das páginas e a experiência da pessoa usuária. +- title: Node.js + tags: + - Back-end + - Framework + description: Node.js é um ambiente que permite executar JavaScript no servidor. + Isso significa que podemos usar JavaScript para criar e rodar aplicações do lado + do servidor. +- title: Normalização + tags: + - Conceito + - Inteligência artificial + description: É uma técnica de processamento de dados usada para transformar os dados + em uma escala comum. Ela é usada para melhorar o desempenho de modelos de aprendizado + de máquina, reduzindo a variância e o tempo de treinamento. Existem várias técnicas + de normalização, como normalização de lotes (ou batches), normalização de camadas, + normalização de pesos, entre outras. +- title: NoSQL + tags: + - Conceito + description: NoSQL (Not Only SQL) é uma abordagem de banco de dados que permite + armazenar, recuperar e gerenciar dados de forma flexível e escalável, sem a estrutura + rígida de tabelas relacionais, sendo adequado para dados não estruturados ou semiestruturados. + diff --git a/_data/pt-br/numbers.yml b/_data/pt-br/numbers.yml new file mode 100644 index 00000000..e085c232 --- /dev/null +++ b/_data/pt-br/numbers.yml @@ -0,0 +1,10 @@ +- title: 2FA + tags: + - Conceito + - Segurança cibernética + description: + 2FA (Two Factor Authentication ou autenticação de dois fatores) , é + um processo de autenticação que requer dois fatores de autenticação diferentes + para estabelecer a identidade. Em poucas palavras, significa exigir que um usuário + prove sua identidade de duas maneiras diferentes antes de conceder acesso. A 2FA + é uma forma de autenticação multifator. diff --git a/_data/pt-br/o.yml b/_data/pt-br/o.yml new file mode 100644 index 00000000..3c0be509 --- /dev/null +++ b/_data/pt-br/o.yml @@ -0,0 +1,58 @@ +- title: Objeto + tags: + - Conceito + description: + Um objeto, em desenvolvimento de software, é como um personagem em + um videogame. Ele tem características (dados) e pode fazer coisas (métodos). Por + exemplo, um objeto "carro" pode ter cor, velocidade e marca (características) + e pode acelerar, frear e virar (ações/métodos). Os objetos são instâncias de classes + e permitem organizar o código de forma a representar entidades do mundo real, + tornando-o mais compreensível e reutilizável. +- title: Operador Ternário + tags: + - Conceito + description: + 'O operador condicional ternário é uma forma curta de fazer uma escolha + entre duas opções baseada em uma condição. Funciona assim: se a condição é verdadeira + (true), ele retorna o primeiro resultado; se é falsa (false), retorna o segundo. + É como uma versão compacta de um "if-else" em uma única linha.' + content: + code: "Expressão(condição) ? Verdadeiro(exp1) : Falso(exp2);" +- title: Optional Chaining + tags: + - Conceito + description: + O Optional Chaining é um recurso no Javascript para lidar com situações + onde você precisa acessar propriedades de objetos aninhados mas não tem certeza + se essas propriedades existem realmente, Isso ajuda a evitar erros de 'TypeError' + quando tenta acessar algo que não foi definido. + content: + code: "const pessoa = nome?.cidade?.endereco; " +- title: ORM + tags: + - Back-end + - Conceito + description: + O mapeamento objeto-relacional (ORM) é como traduzimos tabelas de um + banco de dados para o código, transformando-as em classes e objetos. +- title: Otimizador + tags: + - Conceito + - Inteligência artificial + description: + Também chamado de algoritmo de otimização, é um algoritmo que ajusta + os parâmetros de um modelo de aprendizado de máquina para minimizar a função de + perda. Ele é usado para treinar modelos de aprendizado de máquina e melhorar seu + desempenho. +- title: Overfitting + tags: + - Conceito + - Inteligência artificial + description: + Também chamado de sobreajuste, é um problema que ocorre quando um modelo + de aprendizado de máquina se ajusta muito bem aos dados de treinamento, mas não + consegue generalizar para dados novos. Isso é percebido quando o modelo tem um + desempenho muito bom nas métricas para os dados de treinamento, mas um desempenho + ruim nos dados de teste. O overfitting pode ser causado por vários fatores, como + um modelo muito complexo, um conjunto de dados de treinamento muito pequeno, entre + outros. diff --git a/_data/pt-br/p.yml b/_data/pt-br/p.yml new file mode 100644 index 00000000..39b66ebc --- /dev/null +++ b/_data/pt-br/p.yml @@ -0,0 +1,108 @@ +- title: Pair Programming + tags: + - Conceito + description: 'Pair programming significa programação em par. É uma técnica em que + duas pessoas (ou mais) trabalham juntas em uma tarefa. Isso ajuda na troca de + conhecimento e experiência entre pessoas desenvolvedoras. Duas cabeças pensam + melhor que uma, certo? Algumas formas de aplicar pair programming: uma pessoa + está mexendo no código enquanto recebe orientações da outra e elas vão trocando + de posição; uma pessoa desenvolve os testes e a outra desenvolve a funcionalidade. + Não encare pair programming como desperdício de tempo. Uma boa integração e senso + de apoio no time pode fazer toda a diferença na qualidade do que for entregue.' +- title: Parâmetro + tags: + - Conceito + description: Uma parâmetro é uma informação passada para uma função ou método como + parte de sua chamada. +- title: Parâmetro nomeado + tags: + - Conceito + description: É uma forma de passar valores para uma função ou método especificando + o nome do parâmetro correspondente. +- title: Polimorfismo + tags: + - Conceito + description: 'O Polimorfismo permite que objetos de diferentes classes sejam tratados + uniformemente, cada um respondendo à sua maneira de acordo com uma interface. + Exemplo: Podemos em um sistema ter a interface de funcionário onde temos um método + calcularSalario, e está interface tem 3 classes que implementam ela, sendo elas: + Analista, Gerente e Diretor. Cada uma dessas classes implementa o método calcularSalario + de uma forma diferente.' +- title: Ponteiros + tags: + - Conceito + description: Um ponteiro é um tipo de dado de uma linguagem de programação que armazena + ou se refere ao endereço de memória de outro valor localizado na memória do computador. + Um ponteiro refere-se a um local na memória e obtém o valor desse local. Como + tal, um ponteiro é um tipo de dado que 'aponta' para um valor. + content: + code: int *ponteiro; // ponteiro para um inteiro em linguagem C/C++ +- title: Pré-processadores CSS + tags: + - Front-end + description: 'Pré-processadores CSS são como ferramentas especiais que facilitam + a criação de estilos para sites. Eles tornam possível fazer estilos mais complicados + e que podem ser usados de novo em diferentes partes do site. Pense neles como + formas mais espertas de escolher cores e fontes para tornar um site bonito e funcional. + Exemplo: SASS/SCSS e LESS.' +- title: Pré-Processamento + tags: + - Conceito + - Inteligência artificial + description: Também chamado de pré-processamento de dados, é o processo de transformar + dados brutos em um formato adequado para análise de dados. Ele é geralmente usado + para preparar dados para treinar modelos de aprendizado de máquina e dessa forma + melhorar seu desempenho. O pré-processamento envolve várias etapas, como limpeza + de dados, normalização, transformação, redução de dimensionalidade, entre outras. +- title: Processamento de Linguagem Natural + tags: + - Conceito + - Inteligência artificial + description: Também conhecido como PLN (do inglês, Natural Language Processing ou + NLP), é um campo da inteligência artificial que estuda como os computadores podem + entender e interpretar a linguagem humana. Ele se concentra no desenvolvimento + de sistemas que podem analisar, entender e gerar linguagem natural, permitindo + que os computadores processem e respondam informações escritas. O PLN é usado + em uma ampla variedade de aplicações, como chatbots, tradução automática, análise + de sentimentos, entre outros. +- title: Programação orientada a objetos + tags: + - Conceito + - Paradigma + description: A programação orientada a objetos (POO) é um paradigma de programação + que se baseia na ideia de modelar o software em torno de objetos, que são instâncias + de classes. Cada objeto contém atributos (dados) e métodos (funções) que operam + nesses dados. Isso permite organizar o código de forma mais modular, reutilizável + e orientada para objetos do mundo real. POO promove conceitos como encapsulamento, + herança e polimorfismo, facilitando a criação de sistemas mais flexíveis, compreensíveis + e escaláveis. +- title: Propriedade + tags: + - Conceito + description: Propriedades, frequentemente abreviadas como 'props', são mecanismos + que permitem passar dados de um componente pai para um componente filho. Elas + são usadas para personalizar o comportamento e a aparência de um componente. Por + exemplo, ao criar um botão, você pode passar propriedades como a cor de fundo, + o texto exibido e o tamanho do texto como props. As props são cruciais para tornar + os componentes reutilizáveis e configuráveis, permitindo que eles se adaptem a + diferentes contextos de uso. +- title: Pull Request + tags: + - Conceito + - Versionamento + description: Trata-se de uma requisição de alteração dentro de um projeto. Essa + requisição pode ser feita para corrigir um problema, adicionar uma nova funcionalidade, + sugerir alterações, entre outros motivos. Essa requisição de alteração é feita + para que haja uma avaliação do que está sendo alterado dentro do projeto, entendendo + de faz sentido para o contexto daquele momento. A requisição pode ficar pendente + até que pessoas responsáveis pelo projeto ou que tenham a permissão aprovem. Outras + regras podem ser adicionadas nessas requisições, como build da aplicação, rodar + testes com sucesso e o que mais fizer sentido para o projeto em questão. +- title: Python + tags: + - Back-end + description: O Python é uma linguagem de programação amplamente usada em aplicações + da Web, desenvolvimento de software, ciência de dados e machine learning (ML). + As pessoas desenvolvedoras usam o Python porque é fácil de aprender e pode ser + executada em muitas plataformas diferentes. + diff --git a/_data/pt-br/r.yml b/_data/pt-br/r.yml new file mode 100644 index 00000000..471ba0f2 --- /dev/null +++ b/_data/pt-br/r.yml @@ -0,0 +1,145 @@ +- title: React + tags: + - Framework + - Front-end + description: React é uma biblioteca JavaScript de código aberto utilizada para criar + interfaces de usuário interativas e dinâmicas em aplicações web e em outros ambientes, + como mobile, TV, realidade virtual, entre outros. Ele se destaca por seu modelo + de programação baseado em componentes e pela eficiência na atualização da interface + do usuário, tornando-o uma escolha popular no desenvolvimento front-end. +- title: React Native + tags: + - Mobile + description: É um framework do Javascript baseado no React para desenvolvimento + de aplicativos móveis multiplataforma. +- title: Reconhecimento Automático de Fala + tags: + - Conceito + - Inteligência artificial + description: É um campo da inteligência artificial que se concentra no desenvolvimento + de sistemas que podem analisar e entender a fala humana, permitindo que os computadores + transcrevam e processem estímulos sonoros em texto. O reconhecimento automático + de fala e o processamento de linguagem natural são categorias de IA relacionadas, + porém diferentes. O reconhecimento automático de fala foca no processo de converter + palavras faladas em texto e símbolos, enquanto o PLN é o processo de converter + texto em um formato estruturado que um computador pode entender e processar. O + reconhecimento automático de fala (no inglês, automatic speech recognition) é + usado em uma ampla variedade de aplicações, como assistentes virtuais, sistemas + de navegação, transcrição de áudio, entre outros. +- title: Recursão + tags: + - Conceito + description: Recursão é um método/função que chama a si mesmo para resolver um problema. + Temos de exemplo o cálculo fatorial onde um número vai multiplicando seu número + anterior até chegar a 1. Aqui temos um exemplo utilizando javascript, vamos imaginar + que chamamos está função com o número 5, neste caso a primeira vez que a função + for chamada irá chamar 5 x fatorial(5 - 1), depois a função será chamada novamente + porém desta vez com o número 4 onde será 5 x ( 4 x fatorial(4-1) ) e irá seguir + assim até chegar ao número 1 onde não haverá mais nenhuma chamada de função e + será feito este cálculo 5 x 4 x 3 x 2 x 1. + content: + code: function fatorial(numero) { if(numero == 0 || numero == 1) { return 1 } + return numero * fatorial(numero - 1) } +- title: Rede Generativa Adversarial + tags: + - Conceito + - Inteligência artificial + - Rede neural + description: Do inglês, Generative Adversarial Network ou GAN, é um tipo de rede + neural artificial composto por duas redes neurais concorrentes treinadas de forma + adversarial. A rede neural generativa é treinada para gerar novos dados, enquanto + a rede discriminativa é treinada para distinguir entre dados reais e dados falsos. + Desta forma, as duas redes neurais competem entre si, o que leva a uma melhoria + contínua de ambas e gera dois modelos especializados, que podem ser usados isoladamente + depois de treinados. O modelo generativo é frequentemente usado para gerar novas + imagens, vídeos, áudios e textos mais realistas, como rostos humanos, vídeos de + pessoas falando, áudios de pessoas cantando e textos de notícias. Já o modelo + discriminativo é comumente usado para identificação de dados falsos. +- title: Rede Neural Artificial + tags: + - Conceito + - Inteligência artificial + - Rede neural + description: É um modelo computacional inspirado no sistema nervoso central de um + animal, que consiste em um conjunto de unidades de processamento interconectadas, + chamadas neurônios artificiais, que simulam a forma como os neurônios se comunicam + uns com os outros. As redes neurais artificiais (do inglês, Artificial Neural + Networks ou ANNs) são usadas para resolver problemas complexos e não lineares, + como reconhecimento de padrões, reconhecimento de fala, visão computacional, entre + outros. +- title: Rede Neural Convolucional + tags: + - Conceito + - Inteligência artificial + - Rede neural + description: É um tipo de rede neural artificial que usa uma operação matemática + chamada convolução em uma ou mais de suas camadas. Do inglês, Convolutional Neural + Network ou CNN, ela é frequentemente usada para processar dados de entrada que + têm uma estrutura matricial, como imagens, e é muito usada em aplicações de visão + computacional, como reconhecimento de imagens e vídeos. +- title: Rede Neural Generativa + tags: + - Conceito + - Inteligência artificial + - Rede neural + description: É um tipo de rede neural artificial que gera novos dados com base em + um conjunto de dados de treinamento. Estes dados geralmente são variações dos + dados de entrada, como por exemplo alterações nas expressões de uma pessoa em + um vídeo. Ela é frequentemente usada para gerar novas imagens, vídeos, áudios + e textos, podendo ser usada para aumento dos dados. +- title: Rede Neural Profunda + tags: + - Conceito + - Inteligência artificial + - Rede neural + description: Do inglês, Deep Neural Network ou DNN, é um tipo de rede neural artificial + com várias camadas de unidades de processamento interconectadas. É chamada de + rede neural profunda devido ao número de camadas ocultas usadas no modelo de aprendizado + profundo. Enquanto uma rede neural básica é formada por uma camada de entrada, + uma de saída e poucas camadas intermediárias (também chamadas de camadas ocultas), + uma rede neural profunda tem várias camadas ocultas de processamento, podendo + chegar a milhares. Essas camadas adicionais dão a essas redes a capacidade de + fazer previsões com maior precisão quando comparadas a uma rede neural mais simples, + mas exigem milhões de pontos de dados de amostra e centenas de horas de treinamento. +- title: Rede Neural Recorrente + tags: + - Conceito + - Inteligência artificial + - Rede neural + description: Do inglês, Recurrent Neural Network ou RNN, é um tipo de rede neural + artificial que usa loops e estados para processar dados. Ela é frequentemente + usada para processar dados de entrada que têm uma estrutura sequencial, como textos, + áudio, vídeo e séries temporais, sendo muito usada em aplicações de processamento + de linguagem natural, como tradução automática, reconhecimento de fala e análise + de sentimentos. +- title: Repositório + tags: + - Conceito + - Versionamento + description: Um Repositório é basicamente uma caixa que guarda todo o material do + seu projeto. Pense nele como um lugar onde você armazena o código, o histórico + das mudanças e outros arquivos importantes. Existem repositórios locais no seu + computador e repositórios remotos em servidores compartilhados. +- title: Responsividade + tags: + - Design + - Front-end + description: A capacidade de um site ou aplicativo se adaptar a diferentes tamanhos + de tela e dispositivos, como smartphones, tablets e desktops. +- title: RPA + tags: + - Conceito + description: Robotic Process Automation (Automação de Processos Robóticos), é uma + tecnologia que permite a automação de tarefas repetitivas e baseadas em regras, + utilizando robôs de software para realizar principalmente atividades repetitivas. + Esses robôs imitam ações humanas em sistemas digitais, como clicar em botões, + preencher formulários, copiar e colar dados, acessar sistemas e executar processos + predefinidos. +- title: Ruby + tags: + - Back-end + - Conceito + description: Ruby é uma linguagem de programação altamente flexível criada no Japão + em 1995. Ela é conhecida por sua simplicidade e facilidade de uso, sendo muito + usada no desenvolvimento web e em aplicações de automação. + diff --git a/_data/pt-br/s.yml b/_data/pt-br/s.yml new file mode 100644 index 00000000..918adf4b --- /dev/null +++ b/_data/pt-br/s.yml @@ -0,0 +1,102 @@ +- title: Scrum + tags: + - Framework + description: + " É um método para gerenciar projetos onde o trabalho é dividido em + pequenos pedaços chamados de 'sprints', que geralmente duram algumas semanas. + A equipe trabalha em estreita colaboração, se encontrando regularmente para planejar, + revisar e ajustar o trabalho. O objetivo é entregar valor de forma rápida e iterativa, + respondendo às mudanças e feedbacks conforme o projeto avança." +- title: SGBD + tags: + - Conceito + description: + SGBD (Sistema de Gerenciamento de Banco de Dados) é um tipo de sistema + que permite o usuário gerenciar base de dados, realizando operações como criar + e modificar tabelas, permitir acesso para usuários entre outros. Podemos dizer + , por exemplo, que o MySQL é um SGBD. +- title: SOLID + tags: + - Conceito + description: + "Os princípios SOLID são cinco diretrizes para design de software orientado + a objetos, promovendo sistemas mais flexíveis, robustos e de fácil manutenção. + São eles: Single Responsibility Principle (uma classe deve ter apenas uma responsabilidade), + Open/Closed Principle (classes devem estar abertas para extensão, mas fechadas + para modificação), Liskov Substitution Principle (subclasses devem ser substituíveis + por suas superclasses sem alterar a correção do programa), Interface Segregation + Principle (classes não devem ser forçadas a implementar interfaces que não utilizam) + e Dependency Inversion Principle (módulos de alto nível não devem depender de + módulos de baixo nível; ambos devem depender de abstrações)." +- title: Spread Operator + tags: + - Conceito + description: + O operador spread é um operador que está presente em várias linguagens + de programação, que permite copiar e combinar elementos de uma estrutura de dados + em outra, facilitando a manipulação eficiente de informações. +- title: SQL + tags: + - Back-end + - Conceito + description: + A Linguagem de Consulta Estruturada (SQL) é uma linguagem de programação + usada para gerenciar dados em bancos de dados relacionais. É como uma linguagem + que nos permite falar com os bancos de dados para fazer coisas como buscar, adicionar, + atualizar e deletar informações. +- title: Stack Navigation + tags: + - Mobile + description: + No contexto do React Native, é uma técnica de navegação entre as telas + do aplicativo, quando o aplicativo têm os botões de voltar e avançar, por exemplo. +- title: Stateful Widget + tags: + - Conceito + - Mobile + description: + Um StatefulWidget, no Flutter, é um componente que possui estado interno + mutável, permitindo que ele responda a mudanças de estado e atualize dinamicamente + a interface do usuário. +- title: Stateless Widget + tags: + - Conceito + - Mobile + description: + Um StatelessWidget, no Flutter, é um componente que não possui estado + interno mutável, ideal para partes da interface do usuário que não mudam com o + tempo e não dependem de estado. +- title: Style Guide + tags: + - Design + description: + É uma biblioteca que reúne diretrizes de estilo e padrões visuais para + a criação de produtos digitais. Ele inclui elementos como tipografia, paletas + de cores, uso de ícones e layouts, mas não abrange aspectos técnicos, como código. + O objetivo de um style guide é garantir a consistência visual e a coerência na + comunicação de marca, servindo como referência para designers e equipes de marketing + e comunicação, mas sem a colaboração direta das pessoas desenvolvedoras. +- title: Svelte + tags: + - Framework + - Front-end + description: + Svelte é uma ferramenta JavaScript que transforma o código durante + a construção do site ou aplicativo, sem precisar de uma camada extra para funcionar + no navegador. Isso o torna mais rápido e leve em comparação com outras ferramentas + similares. +- title: Swift + tags: + - Mobile + description: + Swift é uma linguagem de programação criada pela Apple. Com ela, você + pode desenvolver aplicativos para dispositivos e sistemas operacionais da Apple, + como iPhones (iOS), Macs (macOS), Apple Watches (watchOS) e Apple TVs (tvOS). +- title: SwiftUI + tags: + - Mobile + description: + SwiftUI é uma ferramenta da Apple para criar a parte visual dos aplicativos + usando a linguagem Swift. Ao contrário do UIKit, que é mais tradicional, o SwiftUI + permite que você descreva a interface do usuário de uma maneira mais simples e + direta, facilitando tanto a criação quanto a manutenção do seu código. diff --git a/_data/pt-br/t.yml b/_data/pt-br/t.yml new file mode 100644 index 00000000..9b97d7c6 --- /dev/null +++ b/_data/pt-br/t.yml @@ -0,0 +1,87 @@ +- title: Tag em HTML/XML + tags: + - Conceito + description: + Uma tag é um elemento de marcação usado em linguagens de marcação, + como HTML e XML, para definir a estrutura e o significado de um documento. Elas + são usadas para definir o início e o fim de um elemento, como um parágrafo, uma + tabela ou uma imagem. As tags são escritas entre os sinais de menor e maior, como + , sendo a marcação do fim de um elemento definida como . Se um elemento + não possui outros elementos internamente (também chamados de elementos filhos), + ele pode ser definido somente como ao invés de . +- title: Taxa de Aprendizado + tags: + - Conceito + - Inteligência artificial + description: + Também chamada de taxa de aprendizagem (do inglês, learning rate ou + LR), é um hiperparâmetro de treinamento de modelos de aprendizado de máquina que + controla a rapidez com que um modelo de aprendizado de máquina aprende. É um dos + hiperparâmetros mais importantes de um modelo de aprendizado de máquina e pode + ser ajustada para melhorar o desempenho do modelo. Ela controla qual é o tamanho + do passo que será dado durante o aprendizado em direção ao mínimo calculado pelo + gradiente. Uma taxa de aprendizado muito alta pode causar a explosão do gradiente, + enquanto uma taxa de aprendizado muito baixa pode causar o desaparecimento do + gradiente. Existem diversas técnicas que permitem alterar a taxa de aprendizado + durante o treinamento, como decaimento da taxa de aprendizado, agendamento da + taxa de aprendizado, aquecimento da taxa de aprendizado, entre outras. +- title: Terminal + tags: + - Conceito + description: + "O Terminal é uma CLI que permite que os usuários interajam diretamente + com o sistema operacional usando comandos de texto, ao invés de uma interface + gráfica (GUI). No Terminal, você pode executar uma série de tarefas e comandos + diretamente, como navegar por diretórios, manipular arquivos, configurar o sistema + e rodar programas. Podemos destacar como terminais: Bash (Linux e MacOS), Zsh + (Linux e MacOS), Fish (Linux e MacOS), CMD (Windows) e PowerShell (Windows)." +- title: TI Verde + tags: + - Conceito + description: + A TI Verde, do inglês Green IT, também podendo ser chamada de TI Ecológica + ou Computação Verde, representa o lado sustentável da tecnologia da informação. + Seu conceito gira em torno da análise e implementação de iniciativas e programas + que repercutem na sustentabilidade ambiental e responsabilidade social de empresas + e organizações. Seu principal destaque é fazer da tecnologia uma potencial fonte + de soluções para problemas ambientais. +- title: Transferência de Aprendizado + tags: + - Conceito + - Inteligência artificial + description: + É uma técnica de aprendizado de máquina na qual o conhecimento aprendido + de uma tarefa é reutilizado para aumentar o desempenho em uma tarefa relacionada. + Por exemplo, o conhecimento adquirido ao aprender a reconhecer carros pode ser + aplicado ao tentar segmentar imagens de carros. Na transferência de aprendizado + o modelo que é transferido é chamado de modelo de origem, e o modelo para o qual + ele é transferido é chamado de modelo de destino. As tarefas de origem e destino + são diferentes, mas relacionadas, e a tarefa de origem é usada para auxiliar no + aprendizado da tarefa de destino. Os dados de origem e destino podem ser da mesma + modalidade (por exemplo, imagens) ou de modalidades diferentes (por exemplo, imagens + e texto). +- title: Transformer + tags: + - Conceito + - Inteligência artificial + - Rede neural + description: + É um tipo de rede neural artificial que usa uma arquitetura de codificador-decodificador + para processar dados de entrada. Os modelos transformer aplicam um conjunto de + técnicas matemáticas, chamadas de atenção ou autoatenção, para detectar as maneiras + sutis como até mesmo elementos de dados distantes em uma série influenciam e dependem + uns dos outros. Ao encontrar padrões entre elementos matematicamente, os transformers + eliminam a necessidade de grandes conjuntos de dados rotulados, que são caros + e demorados para produzir. Qualquer aplicação que use dados sequenciais de textos, + imagens ou vídeos é uma candidata a modelos transformer. +- title: Treinamento Adversarial + tags: + - Conceito + - Inteligência artificial + description: + É um tipo de treinamento de aprendizado de máquina que usa um modelo + adversário para treinar um modelo. Nele, dois modelos de aprendizado de máquina + são treinados de forma adversária, onde um modelo é responsável por gerar dados + falsos e outro modelo é responsável por identificar dados falsos. O treinamento + adversarial é usado para gerar dados falsos realistas, que podem ser usados para + aumentar um conjunto de dados de treinamento. diff --git a/_data/pt-br/u.yml b/_data/pt-br/u.yml new file mode 100644 index 00000000..fa59e858 --- /dev/null +++ b/_data/pt-br/u.yml @@ -0,0 +1,53 @@ +- title: UI Design + tags: + - Conceito + - Design + - Front-end + description: + É o processo de criar a parte visual e interativa de um produto digital, + como um site ou um aplicativo. Isso inclui o design de botões, menus, ícones e + toda a aparência do layout, garantindo que seja esteticamente agradável e fácil + de navegar. O objetivo do UI Design é fazer com que os usuários se sintam confortáveis + e atraídos pelo visual do produto, aplicando cores, tipografia e elementos visuais + que se alinhem à identidade da marca. +- title: UIKit + tags: + - Mobile + description: + UIKit é um conjunto de ferramentas fornecido pela Apple para criar + as partes visuais dos aplicativos iOS. Ele fornece um conjunto de classes e componentes + para construir e gerenciar a interface, incluindo elementos como botões, tabelas, + views e gestos. +- title: UML + tags: + - Conceito + description: + " É uma linguagem visual que as pessoas desenvolvedoras de software + usam para descrever e projetar sistemas de software. Ela oferece diferentes tipos + de diagramas, como diagramas de classes, sequência e atividades, para representar + diferentes aspectos de um sistema. Esses diagramas ajudam as equipes a entenderem + e comunicarem melhor as ideias e os designs do software." +- title: Underfitting + tags: + - Conceito + - Inteligência artificial + description: + Também chamado de subajuste, é um problema que ocorre quando um modelo + de aprendizado de máquina não se ajusta bem aos dados de treinamento e não consegue + generalizar para dados novos. Isso é percebido quando o modelo tem um desempenho + ruim nos dados de treinamento e nos dados de teste. O underfitting pode ser causado + por vários fatores, como um modelo muito simples, um conjunto de dados de treinamento + muito pequeno, entre outros. +- title: UX Design + tags: + - Conceito + - Design + - Front-end + description: + É o processo de criar produtos e serviços que oferecem uma experiência + positiva e eficiente para os usuários. Isso envolve entender as necessidades e + comportamentos das pessoas que usarão o produto, para garantir que ele seja fácil + de usar, acessível e agradável. O objetivo é fazer com que a interação do usuário + com o produto seja intuitiva, ajudando a resolver problemas e atender expectativas, + desde o primeiro contato até a utilização contínua. É sobre projetar experiências + que façam os usuários se sentirem satisfeitos e engajados com o produto. diff --git a/_data/pt-br/v.yml b/_data/pt-br/v.yml new file mode 100644 index 00000000..4c13364b --- /dev/null +++ b/_data/pt-br/v.yml @@ -0,0 +1,36 @@ +- title: Variável computada + tags: + - Conceito + description: É uma variável que não armazena um valor diretamente, ela calcula ou + deriva seu valor de outras variáveis ou dados. +- title: Variável tipada + tags: + - Conceito + description: 'Uma variável tipada é aquele que possui um tipo de dado associado + a ela (ex: int, float, string).' +- title: Versionamento + tags: + - Conceito + - Versionamento + description: O versionamento de código é o controle de alterações feitas em um projeto + ao longo do tempo, acompanhando e registrando modificações feitas no código-fonte. +- title: Visão Computacional + tags: + - Conceito + - Inteligência artificial + description: É um campo da inteligência artificial que estuda como os computadores + podem obter e processar informações de estímulos visuais. Ela se concentra no + desenvolvimento de sistemas que podem analisar e entender imagens e vídeos, permitindo + que os computadores reconheçam objetos, pessoas, lugares, movimentos e outros + elementos visuais. A visão computacional (do inglês, computer vision ou CV) é + usada em uma ampla variedade de aplicações, como reconhecimento facial, carros + autônomos, diagnóstico médico, entre outros. +- title: Vue.js + tags: + - Framework + - Front-end + description: Vue.js é uma ferramenta JavaScript usada para criar interfaces de usuário, + ou seja, o que as pessoas veem e interagem em um site ou aplicativo. Ele é fácil + de adicionar a projetos já existentes e é muito utilizado para construir sites + que funcionam como uma única página (SPAs). + diff --git a/_data/pt-br/w.yml b/_data/pt-br/w.yml new file mode 100644 index 00000000..23a4ccc8 --- /dev/null +++ b/_data/pt-br/w.yml @@ -0,0 +1,10 @@ +- title: WAF + tags: + - Conceito + - Segurança cibernética + description: + "O WAF (Web Application Firewall), ajuda a proteger os aplicativos + web ao filtrar e monitorar o tráfego de entrada em aplicações web. Ele protege + contra tipos de ataques mais comuns, tais como: falsificação de solicitação entre + sites, cross-site-scripting (XSS), inclusão de arquivos e injeção de SQL, entre + outros." diff --git a/_data/pt-br/x.yml b/_data/pt-br/x.yml new file mode 100644 index 00000000..957461a5 --- /dev/null +++ b/_data/pt-br/x.yml @@ -0,0 +1,12 @@ +- title: XML + tags: + - Conceito + description: + XML (do inglês, eXtensible Markup Language) é uma linguagem de marcação + que define um conjunto de regras para codificar documentos. Ela é uma linguagem + de marcação assim como a HTML, porém a XML foi criada para ser mais flexível, + permitindo a criação de novas tags, enquanto a HTML possui um número limitado + de tags pré-definidas. É uma linguagem genérica que pode ser usada para representar + qualquer tipo de dado estruturado. XML é uma linguagem muito popular, sendo usada + em bancos de dados, arquivos de configurações de sistemas, transmissão de informações, + entre outros. diff --git a/_includes/script.js.liquid b/_includes/script.js.liquid new file mode 100644 index 00000000..c23ff72c --- /dev/null +++ b/_includes/script.js.liquid @@ -0,0 +1,360 @@ + diff --git a/_json/en-us/cards.json.liquid b/_json/en-us/cards.json.liquid new file mode 100644 index 00000000..62ce7ab9 --- /dev/null +++ b/_json/en-us/cards.json.liquid @@ -0,0 +1,25 @@ +--- +id: cards +permalink: /assets/data/cards.json +--- +{ + "cards": [ + {%- for letter in site.data[site.active_lang] -%} + {%- for card in letter[1] -%} + { + "title": "{{ card.title | escape }}", + "tags": [ + {%- for tag in card.tags -%} + "{{ tag }}"{%- unless forloop.last -%},{%- endunless -%} + {%- endfor -%} + ], + "description": "{{ card.description | escape }}" + {%- if card.content -%} + ,"content": { "code": "{{ card.content.code | escape }}" } + {%- endif -%} + }{%- unless forloop.last -%},{%- endunless -%} + {%- endfor -%} + {%- unless forloop.last -%},{%- endunless -%} + {%- endfor -%} + ] +} diff --git a/_json/pt-br/cards.json.liquid b/_json/pt-br/cards.json.liquid new file mode 100644 index 00000000..876e7639 --- /dev/null +++ b/_json/pt-br/cards.json.liquid @@ -0,0 +1,25 @@ +--- +id: cards +permalink: /assets/data/cards.json +--- +{ + "cards": [ + {%- for letter in site.data[site.active_lang] -%} + {%- for card in letter[1] -%} + { + "title": "{{ card.title | escape }}", + "tags": [ + {%- for tag in card.tags -%} + "{{ tag }}"{%- unless forloop.last -%},{%- endunless -%} + {%- endfor -%} + ], + "description": "{{ card.description | escape }}" + {%- if card.content -%} + ,"content": { "code": "{{ card.content.code | escape }}" } + {%- endif -%} + }{%- unless forloop.last -%},{%- endunless -%} + {%- endfor -%} + {%- unless forloop.last -%},{%- endunless -%} + {%- endfor -%} + ] +} \ No newline at end of file diff --git a/index.html b/_layouts/base.liquid similarity index 52% rename from index.html rename to _layouts/base.liquid index 9fd95b03..6467e4b4 100644 --- a/index.html +++ b/_layouts/base.liquid @@ -1,5 +1,5 @@ - + @@ -7,7 +7,7 @@ @@ -20,7 +20,7 @@ - + @@ -33,11 +33,11 @@ > - + - + @@ -46,7 +46,7 @@ href="https://github.com/levxyca/diciotech" target="_blank" class="github-corner" - aria-label="Visualizar projeto no GitHub" + aria-label="{{ page.view_on_github }}" >

- Um dicionário tech para pessoas que querem aprender mais sobre termos - técnicos dentro da tecnologia 📖
- Atualmente com 0 termos! 🚀 + {{ page.site_description }} 📖
+ {{ page.currently_with }} 0 {{ page.terms }} 🚀

+ + + {% if site.languages.size >= 2 %} + {% if site.languages.size == 2 %} + {% if site.active_lang == site.languages.first %} + {% assign other_language = site.languages.last %} + {% else %} + {% assign other_language = site.languages.first %} + {% endif %} + + {% else %} + + {% endif %} + {% endif %} + + + - - + {% include script.js.liquid %} + + diff --git a/_pages/en-us/search.md b/_pages/en-us/search.md new file mode 100644 index 00000000..71fd8002 --- /dev/null +++ b/_pages/en-us/search.md @@ -0,0 +1,24 @@ +--- +page_id: search +layout: base +permalink: / + +accept_cookies: Accept and close +all: All +change_theme: Change theme +cookies_message: Diciotech uses cookies to ensure you get a better experience. Disabling site cookies may impair the functionality of some features and by continuing to use, you agree to our Cookie Policy. +currently_with: Currently with +favorites: Favorites +filter_by_category: "Filter by category:" +no_results: + alt: Woman looking at site with no data + text: | +

The searched term was not found! Check if it was typed correctly.

+

If it is correct, please create an issue in the repository so that this term can be added to Diciotech.

+

We appreciate your collaboration! 😄

+read_more: Read more +search_placeholder: Search... +site_description: A tech dictionary for people who want to learn more about technical terms within technology! +terms: terms! +view_on_github: View project on GitHub +--- diff --git a/_pages/pt-br/search.md b/_pages/pt-br/search.md new file mode 100644 index 00000000..4d4ff509 --- /dev/null +++ b/_pages/pt-br/search.md @@ -0,0 +1,24 @@ +--- +page_id: search +layout: base +permalink: / + +accept_cookies: Concordar e fechar +all: Todos +change_theme: Mudar tema +cookies_message: O Diciotech usa cookies para garantir que você obtenha uma melhor experiência. Desativar os cookies do site pode prejudicar a funcionalidade de alguns recursos e ao continuar usando, você concorda com a nossa Política de Cookies. +currently_with: Atualmente com +favorites: Favoritos +filter_by_category: "Filtrar por categoria:" +no_results: + alt: Mulher olhando para site sem dados + text: | +

O termo pesquisado não foi encontrado! Verifique se foi digitado corretamente.

+

Caso esteja correto, por favor crie uma issue no repositório para que esse termo possa ser adicionado ao Diciotech.

+

Agradecemos sua colaboração! 😄

+read_more: Ler mais +search_placeholder: Pesquisar... +site_description: Um dicionário tech para pessoas que querem aprender mais sobre termos técnicos dentro da tecnologia! +terms: termos! +view_on_github: Visualizar projeto no GitHub +--- diff --git a/assets/scss/style.scss b/_sass/base.scss similarity index 96% rename from assets/scss/style.scss rename to _sass/base.scss index 03734263..b16b08dd 100644 --- a/assets/scss/style.scss +++ b/_sass/base.scss @@ -1,9 +1,3 @@ -@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap"); -@import "variables"; -@import "cookies"; -@import "dark_theme"; -@import "light_theme"; - * { margin: 0; padding: 0; @@ -289,6 +283,7 @@ html { font-size: 1.4rem; } } + :root { #change-theme-button { .ph-desktop { diff --git a/assets/scss/cookies.scss b/_sass/cookies.scss similarity index 100% rename from assets/scss/cookies.scss rename to _sass/cookies.scss diff --git a/assets/scss/dark_theme.scss b/_sass/dark_theme.scss similarity index 100% rename from assets/scss/dark_theme.scss rename to _sass/dark_theme.scss diff --git a/assets/scss/light_theme.scss b/_sass/light_theme.scss similarity index 100% rename from assets/scss/light_theme.scss rename to _sass/light_theme.scss diff --git a/assets/scss/_variables.scss b/_sass/variables.scss similarity index 100% rename from assets/scss/_variables.scss rename to _sass/variables.scss diff --git a/assets/css/style.css b/assets/css/style.css deleted file mode 100644 index 50125bc2..00000000 --- a/assets/css/style.css +++ /dev/null @@ -1,404 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap"); -.cookies-message { - margin: 10px 0px; - font-size: 1.6rem; - text-align: center; - color: var(--cookies-text-color); -} - -.cookies-container { - position: fixed; - width: 100%; - bottom: 20px; - z-index: 1000; - display: none; -} - -.cookies-content { - box-shadow: 0 1px 5px #6e6197; - background-color: var(--cookies-background-color); - border: 1px solid #6e6197; - max-width: 50%; - border-radius: 5px; - padding: 10px; - margin: 0 auto; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - opacity: 0; - transform: translateY(1rem); - animation: slideUp 0.5s forwards; -} -.cookies-content a { - color: var(--cookies-link-color); -} - -.cookies-accept-button { - background-color: #6e6197; - color: #fff; - font-size: 1.6rem; - padding: 10px; - border-radius: 5px; - border: none; - margin: 0 10px; - font-weight: 700; -} -.cookies-accept-button:hover { - cursor: pointer; -} - -@keyframes slideUp { - to { - transform: initial; - opacity: initial; - } -} -html[data-theme="dark"] { - --background-color: #232226; - --card-background-color: #3e3e3f; - --card-description-color: #ffffff; - --card-title-color: #eee7f9; - --cookies-background-color: #3e3e3f; - --cookies-link-color: #eee7f9; - --cookies-text-color: #ffffff; - --fav-button-color: #ffffff; - --link-color: #bdafdf; - --searchbar-background-color: #3e3e3f; - --searchbar-text-color: #ffffff; - --tags-filter-background-color: #3e3e3f; - --tags-filter-text-color: #ffffff; - --text-color: #ffffff; -} - -html[data-theme-setting="dark"] #change-theme-button .ph-desktop { - display: none; -} -html[data-theme-setting="dark"] #change-theme-button .ph-moon { - display: inline; -} -html[data-theme-setting="dark"] #change-theme-button .ph-sun { - display: none; -} - -html[data-theme="light"] { - --background-color: #ffffff; - --card-background-color: #ffffff; - --card-description-color: #232226; - --card-title-color: #6e6197; - --cookies-background-color: #ffffff; - --cookies-link-color: #0000ff; - --cookies-text-color: #232226; - --fav-button-color: #6e6197; - --link-color: #bdafdf; - --searchbar-background-color: #f2f2f2; - --searchbar-text-color: #232226; - --tags-filter-background-color: #ffffff; - --tags-filter-text-color: #232226; - --text-color: #232226; -} - -html[data-theme-setting="light"] #change-theme-button .ph-desktop { - display: none; -} -html[data-theme-setting="light"] #change-theme-button .ph-moon { - display: none; -} -html[data-theme-setting="light"] #change-theme-button .ph-sun { - display: inline; -} - -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - -webkit-font-smoothing: antialiased; - background-color: var(--background-color); - color: var(--text-color); - font-family: "Roboto", sans-serif; - padding: 40px 24px; - transition: background-color 0.5s ease-in-out; -} -body .header { - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - gap: 24px; -} -body .header__title img { - display: block; - max-width: 100%; - height: auto; -} -body .header__subtitle { - font-size: 2rem; - text-align: center; - color: var(--text-color); - font-weight: 400; - transition: color 0.5s ease-in-out; -} -body .main { - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - flex-wrap: wrap; - max-width: 1440px; - margin: 0 auto; -} - -::-webkit-scrollbar { - width: 8px; -} - -::-webkit-scrollbar-thumb { - border-radius: 8px; - background: #6e6197; -} - -::-webkit-scrollbar-track { - background: #f2f2f2; -} - -html { - font-size: 62.5%; -} - -.fav__button { - font-size: 2.5rem; - width: 24px; - cursor: pointer; - color: var(--fav-button-color); -} - -.search { - margin: 30px 0; - width: 100%; -} -.search .searchbar { - background-color: var(--searchbar-background-color); - display: flex; - align-items: center; - justify-content: center; - gap: 16px; - border: none; - border-radius: 4px; - padding: 16px; - margin-bottom: 16px; - width: 100%; -} -.search .searchbar__icon { - width: 24px; - height: 24px; - fill: #9698a0; -} -.search .searchbar__input { - font-family: "Roboto", sans-serif; - border: none; - border-radius: 4px; - background-color: transparent; - padding: 4px; - flex: 1; - color: var(--searchbar-text-color); - font-size: 2rem; - width: 100%; -} -.search .searchbar__input:focus { - outline: none; -} - -.filter { - display: flex; - align-items: center; - gap: 10px; - flex-wrap: wrap; - float: right; -} - -.filter_label { - font-size: 2rem; - transition: color 0.5s ease-in-out; -} - -#tags-filter { - background-color: var(--tags-filter-background-color); - border: 2px solid #6e6197; - border-radius: 4px; - padding: 8px; - color: var(--tags-filter-text-color); - font-size: 2rem; -} -#tags-filter:focus { - outline: none; -} - -.cards { - display: flex; - justify-content: center; - align-items: center; - flex-wrap: wrap; - gap: 32px; - margin: 48px 0; -} - -.msg { - font-size: 20px; - text-align: center; - width: 70%; - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-around; -} -.msg .collumn-1 img { - background-color: #6e6197; - border-radius: 10px; - height: 350px; - width: 350px; -} -.msg .collumn-1 a { - text-align: left; - font-size: 10px; - padding: 10px; - color: #3c306c; -} -.msg .collumn-2 p { - padding: 10px; -} -.msg .collumn-2 a { - text-decoration: none; - color: #9a8cc0; -} - -.card { - width: 20%; - flex-grow: 1; - max-height: 300px; - min-height: 300px; - overflow: auto; - padding: 24px; - border-radius: 8px; - background-color: var(--card-background-color); - box-shadow: rgba(35, 35, 38, 0.2) 0px 0px 16px; - display: list-item; - list-style-type: none; -} -.card__header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 16px; -} -.card__title { - color: var(--card-title-color); - font-size: 2.4rem; -} -.card__description { - color: var(--card-description-color); - line-height: 160%; - font-size: 1.8rem; -} -.card__content { - margin-top: 16px; -} -.card__code { - display: inline-block; - padding: 8px; - border-radius: 4px; - color: #ffffff; - background-color: #6e6197; - font-size: 1.4rem; - font-style: italic; -} - -.github-corner { - color: var(--background-color); - fill: #6e6197; -} -.github-corner svg { - position: absolute; - top: 0; - border: 0; - left: 0; - transform: scale(-1, 1); - width: 80px; - clip-path: polygon(0 0, 100% 0, 100% 100%); -} -.github-corner:hover .octo-arm { - animation: octocat-wave 560ms ease-in-out; -} - -@keyframes octocat-wave { - 0% { - transform: rotate(0deg); - } - 20% { - transform: rotate(-25deg); - } - 40% { - transform: rotate(10deg); - } - 60% { - transform: rotate(-25deg); - } - 80% { - transform: rotate(10deg); - } - 100% { - transform: rotate(0deg); - } -} -@media (max-width: 500px) { - .msg { - width: 100%; - flex-direction: column; - } - .github-corner:hover .octo-arm { - animation: none; - } - .github-corner .octo-arm { - animation: octocat-wave 560ms ease-in-out; - } -} -@media screen and (max-width: 1200px) { - .card { - width: 40%; - } -} -@media screen and (max-width: 768px) { - .card { - width: 100%; - max-height: 250px; - min-height: 250px; - } -} -.button-change-theme { - background-color: #6e6197; - color: #ffffff; - border: none; - border-radius: 5px; - padding: 10px 20px; - cursor: pointer; - position: absolute; - top: 20px; - right: 20px; -} -.button-change-theme i { - font-size: 1.4rem; -} - -:root #change-theme-button .ph-desktop { - display: inline; -} -:root #change-theme-button .ph-moon { - display: none; -} -:root #change-theme-button .ph-sun { - display: none; -} - -/*# sourceMappingURL=style.css.map */ diff --git a/assets/css/style.css.map b/assets/css/style.css.map deleted file mode 100644 index ddd91f38..00000000 --- a/assets/css/style.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sourceRoot":"","sources":["../sass/style.sass","../sass/cookies.sass","../sass/dark_theme.sass","../sass/light_theme.sass","../sass/_variables.sass"],"names":[],"mappings":"AAAQ;ACAR;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAER;EACI;IACI;IACA;;;AChDR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAII;EACI;;AAEJ;EACI;;AAEJ;EACI;;;ACzBZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAII;EACI;;AAEJ;EACI;;AAEJ;EACI;;;AHnBZ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAER;EACI;;;AAEJ;EACI;EACA,YIvCU;;;AJyCd;EACI,YIhDO;;;AJkDX;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA,MIhFD;;AJkFH;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAEhB;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAER;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAGI;EACI,kBIjIE;EJkIF;EACA;EACA;;AACJ;EACI;EACA;EACA;EACA,OI3IE;;AJ6IN;EACI;;AACJ;EACI;EACA,OI9IE;;;AJgJd;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;EACA;EACA,OI/LA;EJgMA,kBIrLM;EJsLN;EACA;;;AAER;EACI;EACA,MI3LU;;AJ6LV;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;;AAER;EACI;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;;AAER;EACI;IACI;IACA;;EACJ;IACI;;EAEJ;IACI;;;AAER;EACI;IACI;;;AAER;EACI;IACI;IACA;IACA;;;AAER;EACI,kBIjPU;EJkPV,OI7PI;EJ8PJ;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;;AAIA;EACI;;AAEJ;EACI;;AAEJ;EACI","file":"style.css"} \ No newline at end of file diff --git a/assets/css/style.scss b/assets/css/style.scss new file mode 100644 index 00000000..2113752d --- /dev/null +++ b/assets/css/style.scss @@ -0,0 +1,8 @@ +--- +# Only the main Scss file needs front matter (the dashes are enough) +--- + +@charset "utf-8"; + +@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap"), + "variables", "base", "cookies", "dark_theme", "light_theme"; diff --git a/assets/data/cards_pt-br.json b/assets/data/cards_pt-br.json deleted file mode 100644 index 8edb6c35..00000000 --- a/assets/data/cards_pt-br.json +++ /dev/null @@ -1,918 +0,0 @@ -{ - "cards": [ - { - "title": "Abstração", - "tags": ["Conceito"], - "description": "Abstração é uma simplificação de ponto(s) específicos de algum sistema ou comportamento que estamos tentando entender. Na programação, usamos abstrações o tempo todo. Isso significa que não precisamos entender todos os detalhes técnicos profundos para escrever código - como o funcionamento interno de um computador. Em vez disso, podemos usar ideias mais simples para criar nossos programas." - }, - { - "title": "Adaptação de Domínio", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É a capacidade de aplicar um algoritmo treinado em um ou mais 'domínios de origem' a um 'domínio de destino' diferente, mas relacionado. A adaptação de domínio é uma subcategoria da transferência de aprendizado. Na adaptação de domínio, os domínios de origem e destino têm todos o mesmo espaço de características (mas distribuições diferentes), enquanto na transferência de aprendizado inclui casos em que o espaço de características do domínio de destino é diferente. Por exemplo, um modelo de filtragem de spam treinado com dados de um usuário pode ser adaptado para um novo usuário que recebe emails completamente diferentes." - }, - { - "title": "Algoritmo", - "tags": ["Conceito"], - "description": "Um algoritmo é como uma receita de bolo para o computador. É um conjunto de passos organizados que ajudam a resolver um problema, como fazer contas ou analisar informações." - }, - { - "title": "Ambiente", - "tags": ["Conceito"], - "description": "Costumamos chamar de ambiente o lugar ou os servidores onde o que foi desenvolvido fica disponível para testes, validações, pessoas usuárias finais utilizarem ou demais necessidades. Esse servidor seria como um computador. Pode ser um computador físico ou disponível na nuvem. Existem os ambientes local e dev (onde o desenvolvimento está acontecendo), homolog (ou ainda hom, homol, homologação - onde os testes costumam ser feitos)e produção (onde está disponível o sistema final, desenvolvido e testado, para pessoas usuárias)." - }, - { - "title": "AIoT", - "tags": [ - "Conceito" - ], - "description": "AIoT (Artificial Intelligence of Things), ou Inteligência Artificial das Coisas, é a combinação de Inteligência Artificial (IA) com a Internet das Coisas (IoT). Seu principal objetivo é automatizar e acelerar o processamento dos dados gerados pelos dispositivos de IoT, com o mínimo de intervenção humana. Isso facilita a análise dos dados e torna a tomada de decisões mais rápida. Sem a IA, embora houvesse um grande volume de informações disponíveis, seria necessário depender da intervenção humana para torná-las úteis." - }, - { - "title": "Angular.js", - "tags": ["Conceito", "Framework", "Front-end"], - "description": "Angular.js é uma ferramenta desenvolvida pelo Google que facilita a criação de sites ou aplicativos que funcionam como uma única página (SPAs), ou seja, sem recarregar a página inteira a cada interação. Ele organiza o código de forma eficiente usando \"módulos\" e \"injeção de dependências\", o que ajuda a manter tudo mais fácil de gerenciar. Grandes empresas como Google e Microsoft utilizam essa tecnologia." - }, - { - "title": "API", - "tags": ["Back-end", "Conceito"], - "description": "API é uma sigla que, em inglês, significa: Application Programming Interface. Traduzindo para português, seria uma interface programada para aplicações. É uma estrutura de código que atende a alguns requisitos, seguindo normas e padrões de desenvolvimento, facilitando a organização de sistemas grandes. Disponibiliza funcionalidades e informações para aplicativos e sites. Por exemplo: API dos Correios que disponibiliza consulta de CEP e endereço de maneira simplificada." - }, - { - "title": "Aprendizado de Máquina", - "tags": ["Conceito", "Inteligência artificial"], - "description": "No inglês, Machine Learning ou ML, é um subconjunto da inteligência artificial (IA) que estuda como os computadores podem aprender com e fazer previsões sobre dados, sem serem explicitamente programados. A maior parte da IA é realizada com aprendizagem de máquina, por isso os dois termos são frequentemente utilizados como sinônimos, mas o aprendizado de máquina é apenas um método usado para tal. Ele é usado para resolver problemas complexos e automatizar tarefas que seriam muito demoradas ou impossíveis para seres humanos." - }, - { - "title": "Aprendizado Few-Shot", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É um tipo de aprendizado de máquina que usa poucos dados rotulados para treinar um modelo. Nele, um modelo de aprendizado de máquina (geralmente pré-treinado) é treinado com novos dados rotulados, contendo poucos exemplos por classe. O aprendizado few-shot é muito usado para resolver problemas de classificação de pequenos conjuntos de dados." - }, - { - "title": "Aprendizado Não-Supervisionado", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É um tipo de aprendizado de máquina que usa dados não rotulados para treinar um modelo. Ele é usado para resolver problemas de agrupamento, onde o objetivo é encontrar padrões em um conjunto de dados. Por exemplo, um modelo de aprendizado de máquina pode ser treinado para agrupar imagens de gatos e cachorros, onde o conjunto de dados de treinamento é composto por imagens de gatos e cachorros sem rótulos associados. O modelo então é responsável por encontrar padrões nos dados e agrupá-los de acordo com esses padrões, independente de qualquer outra informação." - }, - { - "title": "Aprendizado por Reforço", - "tags": ["Conceito", "Inteligência artificial"], - "description": "No inglês, Reinforcement Learning ou RL, é um tipo de aprendizado de máquina que usa recompensas para treinar um modelo. Ele é muito usado para resolver problemas de tomada de decisão, onde o objetivo é maximizar uma recompensa. Por exemplo, um modelo de aprendizado de máquina pode ser treinado para jogar um jogo, onde o conjunto de dados de treinamento é composto por ações e recompensas associadas." - }, - { - "title": "Aprendizado por Reforço a partir de Feedback Humano", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Do inglês, Reinforcement Learning from Human Feedback ou RLHF, é uma técnica que treina um modelo de recompensa diretamente a partir do feedback humano. RLHF é usado em tarefas onde é difícil definir ou medir uma solução algorítmica clara, especialmente ao lidar com tarefas complexas que envolvem valores ou preferências humanas, mas onde os humanos podem facilmente julgar a qualidade da saída do modelo. Por exemplo, se a tarefa é gerar uma história convincente, os humanos podem classificar diferentes histórias geradas por IA com base em sua qualidade e rejeitar aquelas que são inadequadas ou fora do espaço de conhecimento do modelo. Um exemplo famoso de modelo de linguagem treinado por RLHF é o ChatGPT da OpenAI. Um grande desafio é a escalabilidade e o custo do feedback humano, que pode ser lento e caro de obter em comparação com a aprendizagem não supervisionada. A qualidade e a consistência desse feedback também podem variar dependendo da tarefa e das preferências individuais dos humanos. Se o feedback não for imparcial, ou for inconsistente ou incorreto, o modelo pode se tornar tendencioso." - }, - { - "title": "Aprendizado Profundo", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Do inglês, Deep Learning ou DL, é um subconjunto do aprendizado de máquina que usa redes neurais artificiais profundas para aprender representações de dados complexos. Devido às múltiplas camadas presentes em uma rede neural profunda, o aprendizado profundo tende a ser muito mais demorado que um aprendizado de máquina tradicional, mas tende a oferecer maior desempenho, eficiência e precisão. O aprendizado profundo é uma das áreas mais avançadas da inteligência artificial." - }, - { - "title": "Aprendizado Semi-Supervisionado", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É um tipo de aprendizado de máquina que usa dados rotulados e não rotulados para treinar um modelo. Ele é muito usado para resolver problemas de classificação de grandes conjuntos de dados, onde o objetivo é prever um valor de saída com base em um conjunto de valores de entrada. O treinamento semi-supervisionado é usado quando há um grande conjunto de dados não rotulados e um pequeno conjunto de dados rotulados, sendo mais eficiente que o treinamento supervisionado e mais preciso que o treinamento não-supervisionado." - }, - { - "title": "Aprendizado Supervisionado", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É um tipo de aprendizado de máquina que usa dados rotulados para treinar um modelo. Ele é usado para resolver problemas de classificação e regressão, onde o objetivo é prever um valor de saída com base em um conjunto de valores de entrada. Por exemplo, um modelo de aprendizado de máquina pode ser treinado para classificar imagens de gatos e cachorros, onde o conjunto de dados de treinamento é composto por imagens de gatos e cachorros rotuladas como tal. O treinamento supervisionado é um dos tipos mais comuns de aprendizado de máquina e pode ser usado para resolver uma ampla variedade de problemas." - }, - { - "title": "Aprendizado Zero-Shot", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É uma configuração de problemas em aprendizado profundo onde, no momento do teste, um modelo recebe amostras de classes que não foram observadas durante o treinamento e precisa identificar a classe à qual pertencem. Ao contrário do que ocorre no aprendizado de máquina padrão, no qual modelos devem classificar corretamente novas amostras em classes que já foram observadas durante o treinamento, no aprendizado zero-shot nenhuma amostra das classes dos novos dados foi fornecida durante o treinamento do classificador. Portanto, pode ser visto como um caso extremo de adaptação de domínio. Métodos de zero-shot geralmente funcionam associando classes observadas e não observadas por meio de alguma forma de informação auxiliar, que codifica propriedades distintivas observáveis dos objetos. Por exemplo, dado um conjunto de imagens de animais a serem classificados, juntamente com descrições textuais auxiliares de como os animais se parecem, um modelo de inteligência artificial que foi treinado para reconhecer cavalos, mas nunca viu uma zebra, ainda consegue reconhecer uma zebra quando também sabe que zebras parecem cavalos listrados." - }, - { - "title": "Argumento", - "tags": ["Conceito"], - "description": "Um argumento é um valor ou uma informação que você fornece a uma função ou método durante sua chamada. Esses argumentos são usados pela função para realizar uma tarefa específica ou para tomar decisões com base nos valores fornecidos. Em resumo, os argumentos são dados de entrada que permitem que uma função realize seu trabalho e produza um resultado ou execute ações desejadas." - }, - { - "title": "Aumento dos dados", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Em inglês chamado de data augmentation, é uma técnica de pré-processamento de dados usada para aumentar o tamanho de um conjunto de dados de treinamento disponível para um modelo de aprendizado de máquina, gerando novos dados com base nos dados existentes, o que melhora seu desempenho e reduz o risco de overfitting. Por exemplo, um conjunto de dados de imagens pode ser aumentado usando rotações, zooms, espelhamentos e outras transformações geométricas." - }, - { - "title": "Autoencoder", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "É um tipo de rede neural artificial composto por duas redes neurais no formato codificador-decodificador, sendo uma responsável por codificar dados de entrada em um espaço latente e outra por decodificar dados de um espaço latente de volta para o espaço de entrada. Ela é frequentemente usada para comprimir dados de entrada em aplicações como compressão de imagens e vídeos, redução de dimensionalidade e aumento de dados." - }, - { - "title": "Batch Size", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Tamanho do lote, em português, é um hiperparâmetro de modelos de aprendizado de máquina que controla o número de exemplos usados em uma única execução do modelo. Ele é usado para controlar a rapidez com que um modelo de aprendizado de máquina aprende e pode ser ajustado para melhorar seu desempenho. Um tamanho de lote muito pequeno durante o treinamento exige menos memória, porém mais iterações para completar uma época, enquanto um tamanho de lote maior permite um treinamento mais rápido, com menos iterações por época, porém que ocupa mais memória." - }, - { - "title": "Balanceador de Carga", - "tags": ["Conceito"], - "description": "Um balanceador de carga (do inglês Load Balancer) é uma ferramenta utilizada para distribuir a carga (de requisições dos usuários, por exemplo) entre múltiplos servidores. O objetivo do uso de um balanceador de carga é o de melhorar o desempenho de aplicações, evitando a sobrecarga em um único servidor. Além disso, um balanceador de carga pode nos auxiliar a escalar um sistema e garantir a alta disponibilidade do mesmo. Para entender melhor o conceito, vamos pensar em uma fila de supermercado: se tivéssemos apenas um caixa para nos atender, possivelmente esse caixa ficaria sobrecarregado com tantas pessoas tentando pagar suas compras; Neste caso, as pessoas são direcionadas para diferentes caixas para evitar um gargalo e um alto tempo de espera em um único caixa. " - }, - { - "title": "Blue-green deployment", - "tags": ["DevOps"], - "description": "O blue-green deployment é uma estratégia de deployment que consiste em termos uma réplica do ambiente produtivo. As novas versões de software são implantadas nessa réplica, e, depois da implantação, alterna-se o tráfego dos usuários para o ambiente com a nova versão, liberando assim o acesso a essa nova versão para todos os usuários. Uma de suas vantagens é que, em caso de erros na nova versão, basta redirecionar as requisições dos usuários de volta para o sistema anterior. Para entender melhor o blue-green deployment, imagine que você tem duas cozinhas em um restaurante: uma azul e uma verde. A cozinha azul está funcionando e servindo os clientes, enquanto você prepara a cozinha verde. Quando a cozinha verde está pronta, você começa a usá-la para servir os clientes. Se tudo correr bem, você desativa a cozinha azul. Se houver problemas, você pode voltar rapidamente para a cozinha azul." - }, - { - "title": "Botnet", - "tags": ["Conceito", "Segurança cibernética"], - "description": "Botnet é uma rede de dispositivos conectados na internet infectados por um malware (os malwares são programas maliciosos que afetam um dispositivo), possibilitando que criminosos-ciberneticos derrubem sites usando essa rede de dispositivos. Os dispositivos pedem ser desde um computador até um equipamento IoT (um aparelho IoT é um equipamento conectado à internet sem o uso de cabos, por exemplo: TVs inteligentes, lampadas inteligentes, geladeiras inteligentes e celulares)." - }, - { - "title": "Branch", - "tags": ["Conceito", "Ferramenta", "Versionamento"], - "description": "Uma Branch é como uma cópia do seu projeto em um momento específico. É como se você criasse uma versão separada para trabalhar em novas ideias sem mexer na versão principal. Cada Branch pode ser editado à parte, permitindo que você desenvolva coisas novas sem atrapalhar o código principal." - }, - { - "title": "Bug", - "tags": ["Conceito"], - "description": "O termo Bug é comumente usado para informar que há algum problema no programa ou no ambiente. Pode ser um comportamento incorreto ou inesperado, geralmente causados por lógica incorreta no código, causando falhas durante a execução de um software." - }, - { - "title": "Busca de Arquitetura Neural", - "tags": ["Conceito", "Inteligência artificial"], - "description": "No inglês, Neural Architecture Search ou NAS, é um processo de otimização que usa algoritmos de busca para encontrar a melhor arquitetura de rede neural para um determinado conjunto de dados. Ela é usada para encontrar a melhor arquitetura de rede neural para resolver determinado problema, melhorando o desempenho e reduzindo o tempo de treinamento em comparação com a busca manual pela melhor arquitetura." - }, - { - "title": "C", - "tags": ["Conceito"], - "description": "A linguagem C existe desde antes da internet e foi criada em 1972. É muito usada em banco de dados por sua alta performance para todos os tipos de sistemas: financeiro, governamental, mídia, entretenimento, entre outros. C também é uma linguagem compilada e muito utlizada para sistemas embarcados e principalmente sistemas operacionais como o linux." - }, - { - "title": "C++", - "tags": ["Conceito"], - "description": "C++ é uma linguagem de programação criada em 1979, que foi desenvolvido como uma extensão da linguagem C, incorporando recursos adicionais, como suporte à programação orientada a objetos. Também é uma linguagem compilada e ferramenta super versátil com ótimo desempenho para criar programas de computador, e se destaca quando o assunto é criação de jogos e principalmente quando falamos de softwares de imagem com o OpenCV, uma biblioteca criada com C++ e muito utilizada." - }, - { - "title": "Cache", - "tags": ["Conceito"], - "description": "O cache é uma técnica de armazenamento temporário de dados frequentemente usados para melhorar o desempenho e a velocidade de acesso a esses dados em sistemas computacionais." - }, - { - "title": "Canary deployment", - "tags": ["DevOps"], - "description": "O canary deployment é uma estratégia de deployment que consiste em termos uma réplica do ambiente produtivo. As novas versões de software são implantadas nessa réplica, e, depois da implantação, o lançamento da nova versão é feito de maneira gradual, encaminhando um percentual das requisições dos usuários para o ambiente que contém esta nova versão. Para realizar este chaveamento gradual, é possível utilizar um load-balancer, por exemplo. Para entender melhor o canary deployment, imagine que você tem um restaurante e quer lançar um prato novo no cardápio. Porém, em vez de oferecer esse prato novo a todos os clientes, você seleciona apenas um pequeno grupo de clientes para os quais o prato será oferecido e testa como eles irão reagir ao prato. Se o feedback for positivo, você pode começar a oferecer o novo prato a um grupo maior de clientes, até que o prato seja de fato lançado no cardápio para todos eles." - }, - { - "title": "Chatbot", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É um programa de computador que simula um ser humano em uma conversa por meio de mensagens de texto ou de voz, muito utilizado para automatizar tarefas repetitivas e fornecer suporte e assistência aos usuários. Os chatbots podem ser usados em uma ampla variedade de aplicações, como atendimento ao cliente, assistentes virtuais, entre outros." - }, - { - "title": "Cidades Inteligentes", - "tags": [ - "Conceito" - ], - "description": "Cidades Inteligentes (Smart Cities) são localidades que utilizam infraestrutura urbana organizada e tecnologias digitais para otimizar seus processos. Isso inclui o uso de dispositivos com Inteligência Artificial e Internet das Coisas, entre outros." - }, - { - "title": "CLI", - "tags": [ - "Conceito" - ], - "description": "Uma Command Line Interface (CLI) é uma forma de interagir com programas de computador onde você digita comandos em vez de clicar em botões ou usar menus. Existem diferentes formas de usar um software, como a interface gráfica (GUI), que é aquela que vemos com imagens e botões, ou por meio de APIs, que permitem que outros programas se comuniquem com o software. Um exemplo de software que pode ser usado de várias formas é o GitHub, que pode ser acessado através de um navegador, de um aplicativo de desktop ou pelo terminal, usando a linha de comando (CLI)." - }, - { - "title": "Classe", - "tags": ["Conceito"], - "description": "Uma classe, em desenvolvimento de software, é como molde e um \"modelo\" para criar objetos. Ela define os atributos (dados) e os métodos (funções) que os objetos criados a partir dela terão. Elas ajudam a organizar o código, permitindo a reutilização e a abstração de dados e funcionalidades em uma estrutura coerente." - }, - { - "title": "Clone", - "tags": ["Conceito", "Ferramenta", "Versionamento"], - "description": "Clonar um Repositório é como tirar uma cópia local desse projeto no seu próprio espaço de trabalho. É como ter sua própria versão do código para mexer como quiser. Isso permite que você trabalhe em uma versão local do código, faça alterações e contribua de volta ao projeto principal quando estiver pronto." - }, - { - "title": "CMD", - "tags": ["Conceito"], - "description": "O CMD (abreviação de \"Command Prompt\", ou Prompt de Comando) é um Terminal presente no sistema operacional Windows. Ver Terminal para mais informações." - }, - { - "title": "Coalescência nula", - "tags": ["Conceito"], - "description": "Operador lógico que permite tratar valores nulos, retornando o valor à direita caso o valor à esquerda seja nulo.", - "content": { - "code": "let valor = valorDesejado ?? 42" - } - }, - { - "title": "Code Review", - "tags": ["Conceito"], - "description": "Code review significa revisão de código. Trata-se de uma boa prática muito indicada para o processo de desenvolvimento de sistemas, pelo qual as pessoas desenvolvedoras do time ajudam umas as outras. Normalmente, após o término da etapa de desenvolvimento de cada tarefa, antes do código ser disponibilizado para testes, o time avalia o que foi feito e dá sugestões do que pode ser melhorado, quando necessário. Isso traz diversos benefícios. Alguns deles são: melhorar a parte técnica do time, melhoria do desenvolvimento, qualidade do código, integração do time, todas as pessoas conhecem o que está sendo desenvolvido, entre outros." - }, - { - "title": "Code Smells", - "tags": ["Conceito"], - "description": "Code smells são indicadores de possíveis problemas no código que, embora não causem erros imediatos ou impeçam o funcionamento do software, podem sugerir áreas de risco que podem levar a dificuldades futuras na manutenção e evolução do código. Eles geralmente apontam para problemas de design, duplicação, complexidade ou falta de clareza que podem tornar o código mais difícil de entender, modificar ou estender." - }, - { - "title": "Commit", - "tags": ["Conceito"], - "description": "Quando trabalhamos com versionamento de código (o que é altamente recomendado), a palavra commit é bastante comum entre as pessoas desenvolvedoras. Mas essa palavra também é utilizada por quem atua em banco de dados. Quando se tem um conjunto de alterações feitas em um código, a pessoa faz o comando commit que salva o que foi feito dentro do projeto. Existe também o commit semântico, que significa que esse conjunto de alterações deve ter um significado para o projeto. O commit também serve para finalizar uma transação dentro de um sistema de gerenciamento de banco de dados, tornando visíveis as alterações. Essa transação normalmente vai começar com o comando begin e finalizar com o comando commit." - }, - { - "title": "Componente", - "tags": ["Conceito"], - "description": "Um componente é uma unidade fundamental e reutilizável de construção de interfaces de usuário. Ele encapsula a lógica e a apresentação relacionadas a uma parte específica da interface. Componentes podem ser comparados a blocos de construção que, quando combinados, formam interfaces complexas. Eles promovem a organização e a manutenibilidade do código, uma vez que podem ser desenvolvidos e testados de forma independente. Os componentes podem aceitar propriedades (props) como entrada e renderizar informações com base nesses dados, permitindo uma personalização flexível." - }, - { - "title": "Computação em Nuvem", - "tags": ["Conceito"], - "description": "De modo geral, refere-se ao uso de serviços de computador, como armazenamento de arquivos e execução de programas, através da internet. Isso significa que você não precisa de equipamentos físicos, pois tudo é feito online. Você pode acessar seus dados e programas de qualquer lugar, a qualquer momento, sem se preocupar com a manutenção dos equipamentos físicos." - }, - { - "title": "Conjunto de Dados", - "tags": ["Conceito"], - "description": "Chamado de dataset no inglês, é um conjunto de dados que pode ser usado para treinar e testar modelos de aprendizado de máquina. Normalmente são usadas partes diferentes dos conjuntos de dados para treinamento e para teste, para evitar a ocorrência de overfitting. Também podem ser usadas partes para validação e para inferência. Um conjunto de dados é composto por vários exemplos, que por sua vez são compostos por vários pontos de dados. Por exemplo, um conjunto de dados de gatos pode conter vários exemplos de gatos, onde cada exemplo pode ser composto por uma ou mais imagens e vários atributos atrelados, como tamanho, raça e cor." - }, - { - "title": "CORS", - "tags": ["Conceito"], - "description": "Do inglês \"Cross-Origin Resource Sharing\" ou, em português, \"Compartilhamento de Recursos de Origem Cruzada\", é uma regra de segurança para websites. Ele determina como recursos de uma página web podem ser acessados por outra página de um domínio diferente. Por exemplo, uma imagem ou arquivo CSS geralmente pode ser compartilhado entre diferentes sites sem problemas, mas códigos JavaScript frequentemente têm restrições mais rigorosas." - }, - { - "title": "CSS", - "tags": ["Front-end"], - "description": "Cascading Style Sheets é um mecanismo para adicionar estilos a uma página web como cores, tamanhos, fontes e etc. É possivel ligar o arquivo HTML ao CSS adicionando um link para um arquivo CSS que contém os estilos." - }, - { - "title": "Curl", - "tags": ["Ferramenta"], - "description": "Ferramenta para transferir dados de/para um servidor, ou seja fazer uma requisição utilizando diversos protocolos, sendo o mais comum o HTTP. Quando se escuta o termo 'faz um curl para x' significa que é preciso fazer uma requisição para x, mas não necessáriamente utilizando a ferramenta curl. O curl é bastante utilizado por ser simples de utilizar via linha de comando(terminal), não necessitando de softwares terceiros para realizar chamadas", - "content": { - "code": "curl http://www.google.com" - } - }, - { - "title": "Dados Rotulados", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamados de dados anotados, são dados que possuem um rótulo ou tag que indica o que eles representam. Eles são usados para treinar modelos de aprendizado de máquina supervisionado ou semi-supervisionado, onde o objetivo é prever um valor de saída com base em um conjunto de valores de entrada. Por exemplo, um conjunto de dados de imagens de gatos e cachorros pode ser rotulado com a classe de cada imagem, permitindo que um modelo de aprendizado de máquina seja treinado para classificar imagens de gatos e cachorros." - }, - { - "title": "DDoS", - "tags": ["Conceito", "Segurança cibernética"], - "description": "DDoS é um ataque onde muitos dispositivos tentam se conectar ao mesmo tempo no site para sobrecarregá-lo." - }, - { - "title": "Deploy", - "tags": ["Conceito"], - "description": "O deploy é um processo complexo. Mas significa que foi instalado um pacote do que foi desenvolvido nos ambientes. É gerada uma versão para que seja disponibilizada. Esse processo também pode ser chamado de implantação dependendo do contexto. Para que essa implantação aconteça, pode ser um processo automatizado com ferramentas, ou feito manualmente, dependendo da estrutura. Acabamos aportuguesando a palavra deploy, tornando-a uma ação. Exemplo: estou deployando a nova versão do nosso sistema." - }, - { - "title": "Desaparecimento do Gradiente", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Chamado em inglês de vanishing gradient, é um problema que ocorre quando o gradiente de uma função de perda diminui exponencialmente durante o treinamento de um modelo de aprendizado de máquina. Conforme os gradientes frequentemente se tornam menores até ficarem próximos de zero, os novos pesos calculados do modelo serão virtualmente idênticos aos pesos antigos, sem nenhuma atualização. Como resultado, o algoritmo de descida de gradiente nunca converge para a solução ótima e o modelo deixa de aprender. O desaparecimento do gradiente pode ser causada por vários fatores, como uma taxa de aprendizado muito baixa, uma função de perda mal projetada, entre outros." - }, - { - "title": "Descida do Gradiente", - "tags": ["Conceito"], - "description": "Modelos de redes neurais são geralmente treinados por um algoritmo de otimização que é uma variação da descida do gradiente. Durante o aprendizado, os dados de treinamento de entrada ajudam o modelo a aprender e a função de perda avalia o quão precisa é a performance de predição para cada iteração. À medida que o treinamento avança, o objetivo é reduzir a função de perda/erro de predição ajustando os parâmetros iterativamente. Especificamente, o algoritmo de descida do gradiente tem uma etapa de propagação para a frente (do inglês, forward pass ou forward propagation) e uma etapa para trás (do inglês, backward pass ou backpropagation). Na etapa de propagação para a frente, os dados de entrada são passados pela rede neural e a saída é calculada. Na etapa de propagação para trás, o gradiente da função de perda é calculado em relação a cada peso da rede neural, e os pesos são atualizados de acordo com o gradiente. Então o algoritmo dá um passo de descida do gradiente para minimizar a função de perda (considerando a taxa de aprendizado)." - }, - { - "title": "Desenvolvimento Front-end", - "tags": ["Front-end"], - "description": "Desenvolvimento front-end é o desenvolvimento da interface gráfica, para que as pessoas usuárias possam visualizar e interagir com o que foi desenvolvido." - }, - { - "title": "Design Critique", - "tags": ["Design"], - "description": "É um processo colaborativo onde designers, pessoas desenvolvedoras e outras partes interessadas revisam e avaliam um projeto ou conceito de design de forma construtiva. O objetivo é obter feedback valioso sobre a eficácia estética, funcionalidade e usabilidade do design, permitindo identificar pontos fortes e áreas de melhoria. Durante o rito, os participantes discutem aspectos como a coerência visual, a experiência do usuário e a aderência as metas do produto e a viabilidade técnica, promovendo um ambiente aberto onde ideias podem ser compartilhadas. Esse processo não apenas melhora o resultado final, mas também fortalece a colaboração e o aprendizado dentro da equipe." - }, - { - "title": "Design Ops", - "tags": ["Design"], - "description": "Prática que otimiza e integra o processo de design nas equipes de desenvolvimento de produtos digitais, promovendo a colaboração entre designers, pessoas desenvolvedoras e partes interessadas. Ela implementa frameworks, ferramentas e processos que melhoram a eficiência, consistência e qualidade do design. O foco é criar um ambiente estruturado que permita que os designers se concentrarem nas tarefas, enquanto aspectos operacionais, como documentação e gestão de recursos, são geridos de forma eficaz. Isso alinha as metas de design com os objetivos de negócios, resultando em produtos digitais mais coesos e bem projetados." - }, - { - "title": "Design System", - "tags": ["Design", "Front-End"], - "description": "É um conjunto de diretrizes, componentes e padrões que orientam a criação e a manutenção de interfaces e experiências de usuário consistentes em produtos digitais. Inclui elementos como: paletas de cores, tipografia, ícones e padrões de layout, além de ser uma documentação para designers e pessoas desenvolvedoras sobre como e quando utilizar os componentes do design system. Visa melhorar a eficiência no desenvolvimento, garantir a coerência visual e funcional, e facilitar a colaboração entre as equipes de design e desenvolvimento." - }, - { - "title": "DevOps", - "tags": ["Conceito"], - "description": "É uma prática que integra desenvolvimento de software (Dev) e operações de TI (Ops) para melhorar a colaboração e a eficiência entre equipes. Foca na automação e na integração de processos de desenvolvimento, teste e implantação, permitindo lançamentos mais rápidos e de maior qualidade. A abordagem enfatiza comunicação contínua, integração contínua (CI) e entrega contínua (CD), promovendo um ciclo de vida de desenvolvimento ágil e responsivo, resultando em software entregue de forma mais eficiente e confiável." - }, - { - "title": "DOM (Document Object Model)", - "tags": ["Front-end"], - "description": "Uma representação da estrutura de árvore dos elementos HTML em uma página, que permite a manipulação dinâmica do conteúdo. Imagine isso como um mapa da página que o JavaScript usa para entender e alterar o conteúdo. É como um 'modelo' da página." - }, - { - "title": "DoS", - "tags": ["Conceito", "Segurança cibernética"], - "description": "DoS é um ataque de negação de serviço, neste ataque é usado apenas um computador que faz muitas consultas em um site em um espaço curto de tempo com o objetivo de tirá-lo do ár." - }, - { - "title": "Early Stopping", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de parada antecipada, é uma técnica de treinamento de modelos de aprendizado de máquina que interrompe o treinamento quando o desempenho do modelo para de melhorar. Ela é usada para evitar o overfitting e gerar um modelo com bom desempenho." - }, - { - "title": "Embedding", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de incorporação, é uma representação vetorial de um objeto, como uma palavra, uma frase ou uma imagem. Ela é usada para representar objetos de forma mais compacta e eficiente, permitindo que modelos de aprendizado de máquina aprendam relações entre os objetos. Por exemplo, uma palavra pode ser representada por um vetor de números reais, onde cada dimensão representa um atributo da palavra, como gênero, número, tempo verbal, entre outros. Essa representação vetorial pode ser usada como entrada para um modelo de aprendizado de máquina, permitindo que ele aprenda relações entre as palavras, como sinônimos, antônimos, entre outros." - }, - { - "title": "Encapsulamento", - "tags": ["Conceito"], - "description": "O encapsulamento funciona como uma \"caixa mágica\" que esconde os detalhes internos de um objeto. Isso significa que os dados e o funcionamento interno de um objeto são mantidos privados e não podem ser acessados diretamente de fora. Em vez disso, o objeto fornece interfaces controladas (métodos públicos) para interagir com ele. Isso ajuda a proteger os dados do objeto e controlar como ele é usado, promovendo a segurança e a organização do código." - }, - { - "title": "Endereço de Memória", - "tags": ["Conceito"], - "description": "É um número que identifica unicamente uma posição de memória no computador. Tudo que é declarado em uma linguagem de programação é armazenado na memória do computador, e para acessar esses dados é necessário saber o endereço de memória onde eles estão armazenados." - }, - { - "title": "Entrega Contínua", - "tags": ["Conceito"], - "description": "Entrega contínua (do inglês, Continuous Delivery ou CD) é uma prática de desenvolvimento de software que assegura que o código esteja sempre pronto para ser implantado em produção a qualquer momento. Após a Integração Contínua (CI), o software é automaticamente preparado para lançamentos, com um processo de implantação automatizado e rigorosos testes que garantem sua qualidade. Os benefícios do CD incluem implantações mais rápidas, redução de riscos e feedback contínuo das pessoas usuárias. Ferramentas como Spinnaker e Octopus Deploy são comumente utilizadas para facilitar essa prática." - }, - { - "title": "Época", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Do inglês, epoch, é uma iteração completa de um modelo de aprendizado de máquina sobre um conjunto de dados de treinamento. Um treinamento com uma quantidade de épocas muito pequena pode não ser suficiente para um modelo aprender, enquanto uma quantidade muito grande pode causar o overfitting." - }, - { - "title": "Espaço Latente", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de espaço de características latentes ou espaço de incorporação (do inglês, embedding space), é um espaço vetorial (manifold) que pode ser gerado a partir do treinamento de um modelo de aprendizado de máquina. Uma posição dentro desse espaço é definida por um conjunto de variáveis latentes que emergem das semelhanças dos objetos, de modo que itens que se assemelham são posicionados mais próximos. Em muitos casos, a dimensionalidade do espaço latente é escolhida para ser menor que a dimensionalidade do espaço dos dados de entrada, tornando a construção desse espaço um exemplo de redução de dimensionalidade, que também pode ser vista como uma forma de compressão de dados. O espaço latente pode ser completamente não intuitivo, de alta dimensão, complexo e não linear, o que pode aumentar a dificuldade de interpretação. Algumas técnicas de visualização foram desenvolvidas para conectar o espaço latente ao mundo visual, mas geralmente não há uma conexão direta entre a interpretação do espaço latente e do próprio modelo que o gerou. Dentre essas técnicas está o t-SNE, no qual o espaço latente é mapeado para duas ou três dimensões para visualização. As distâncias no espaço latente não possuem unidades físicas, portanto, a interpretação dessas distâncias pode depender da aplicação." - }, - { - "title": "Explosão do Gradiente", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Chamado em inglês de exploding gradient, é um problema que ocorre quando o gradiente de uma função de perda cresce exponencialmente durante o treinamento de um modelo de aprendizado de máquina. Isso pode resultar em parâmetros do modelo divergindo para o infinito, fazendo com que o processo de aprendizado falhe. Quando os gradientes explodem, as atualizações de peso durante o treinamento podem se tornar tão grandes que fazem com que o modelo volte a apresentar um erro grande, ao contrário de minimizá-lo a cada iteração. A explosão do gradiente pode ser causada por vários fatores, como uma taxa de aprendizado muito alta, uma função de perda mal projetada, entre outros." - }, - { - "title": "Expo CLI", - "tags": ["Mobile"], - "description": "O Expo CLI é uma ferramenta que facilita o desenvolvimento de aplicativos móveis para iOS e Android. É utilizado para criar rapidamente um projeto com o React Native" - }, - { - "title": "Finetuning", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de ajuste fino, é o processo de treinamento de um modelo de aprendizado de máquina pré-treinado em um novo conjunto de dados. Ele é usado para adaptar um modelo de base para uma tarefa específica, melhorando seu desempenho e reduzindo o tempo de treinamento em comparação com o treinamento do zero. O finetuning é comumente usado em modelos de visão computacional e processamento de linguagem natural." - }, - { - "title": "Fork", - "tags": ["Conceito", "Ferramenta", "Versionamento"], - "description": "Fazer um Fork é como criar uma cópia independente de um projeto. É como se você pegasse o projeto de outra pessoa, o bifurcasse, e o tivesse em sua própria conta. Isso permite que você faça suas próprias mudanças sem mexer no projeto original. É algo comum em projetos de código aberto." - }, - { - "title": "Frameworks", - "tags": ["Conceito", "Framework"], - "description": "São como coleções de ferramentas, componentes e soluções que você pode encontrar em um mesmo pacote (o framework) que facilitam a criação de aplicações complexas." - }, - { - "title": "Função", - "tags": ["Conceito"], - "description": "Uma função é um bloco de código que realiza uma tarefa específica e pode ser chamado a partir de outras partes do programa. Ela ajuda a organizar e reutilizar o código, tornando o software mais modular e legível. As funções recebem entradas (chamadas de argumentos) e podem retornar um resultado (valor de retorno) ou simplesmente executar uma ação." - }, - { - "title": "Função de Não-Linearidade", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamada de função de ativação, é uma função matemática que é aplicada na saída dos neurônios em uma rede neural artificial. Ela é usada para introduzir não-linearidades em uma rede neural artificial, alterando o valor de saída de cada neurônio de uma camada antes de enviar para a próxima camada, permitindo que a rede aprenda relações complexas entre os dados de entrada e os dados de saída. Por exemplo, a função de não-linearidade mais comumente usada é a função ReLU (do inglês, Rectified Linear Unit), que retorna 0 se o valor de entrada for negativo e retorna o próprio valor de entrada caso contrário." - }, - { - "title": "Função de Perda", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamada de função de custo (no inglês, loss function), é uma função matemática que mede a diferença entre o valor previsto por um modelo de aprendizado de máquina e o valor real dos dados de treinamento. Ela é usada para avaliar a precisão de um modelo de aprendizado de máquina e ajustar seus parâmetros para melhorar seu desempenho. Existem vários tipos de funções de perda, cada uma adequada para um tipo diferente de problema de aprendizado de máquina." - }, - { - "title": "Garbage Collector", - "tags": ["Conceito"], - "description": "Garbage collector, ou \"coletor de lixo\", é uma ferramenta que ajuda a liberar espaço na memória do computador automaticamente. Imagine que, ao desenvolver um programa, você use blocos de memória para guardar informações. Com o tempo, alguns desses blocos não são mais necessários. O coletor de lixo identifica esses blocos \"inúteis\" e os limpa, devolvendo o espaço para o sistema usar novamente. Isso é especialmente útil em linguagens de programação como Java, C# e JavaScript, onde esse processo é feito automaticamente, ajudando a evitar problemas e deixando o computador mais rápido." - }, - { - "title": "Git", - "tags": ["Conceito", "Ferramenta", "Versionamento"], - "description": "Git é um sistema de controle de versão distribuído amplamente utilizado para rastrear as alterações em arquivos e coordenar o trabalho em projetos de desenvolvimento de software." - }, - { - "title": "GitHub", - "tags": ["Ferramenta", "Versionamento"], - "description": "O GitHub é uma plataforma de hospedagem de código-fonte baseada na web que oferece uma variedade de serviços relacionados ao controle de versão e colaboração no desenvolvimento de software (é usado em conjunto com o Git). Ele é amplamente utilizado por pessoas desenvolvedoras de todo o mundo para armazenar, colaborar, gerenciar e controlar o código-fonte de projetos de software. Fornece ferramentas de CI/CD (integração contínua e entrega contínua) com o GitHub Actions." - }, - { - "title": "GitLab", - "tags": ["Ferramenta", "Versionamento"], - "description": "Assim como o GitHub, o GitLab também é uma plataforma de hospedagem de código-fonte baseada em Git que assim como o GitHub, oferece ferramentas integradas de CI/CD (integração contínua e entrega contínua) diretamente. Se destaca por ter uma política \"open core\", na qual é possível acessar e contribuir com seu código-fonte, sendo muito mais transparente que as outras plataformas que mantêm seus códigos-fonte fechados." - }, - { - "title": "BitBucket", - "tags": ["Ferramenta", "Versionamento"], - "description": "Assim como GitHub, o BitBucket também é uma plataforma de hospedagem de código-fonte e também possui ferramentes integradas de CI/CD, mas se integra especialmente bem com ferramentas Atlassian, como o Jira, e suporta repositórios Git e Mercurial, enquanto o GitHub só suporta Git." - }, - { - "title": "AWS Commit", - "tags": ["Ferramenta", "Versionamento"], - "description": "AWS Commit é a plataforma de hospedagem de código-fonte da Amazon (AWS) e está totalmente integrado com o ecossistema AWS, permitindo fácil automação e integração com outros serviços da AWS, como CodePipeline (para CI/CD), IAM (controle de permissões), e CloudWatch (monitoramento)." - }, - { - "title": "GPT", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "É um grande modelo de linguagem criado pela OpenAI. Do inglês, Generative Pre-training Transformer, é capaz de gerar textos de alta qualidade, como artigos de notícias, poesia e ficção, com base em um pequeno trecho de texto como entrada. Ele é um dos modelos de linguagem mais avançados do mundo e é capaz de realizar uma ampla variedade de tarefas de linguagem natural, como tradução automática, resumo de texto, geração de código, entre outros. As versões mais recentes também dão suporte a outros tipos de dados, como imagens" - }, - { - "title": "Gradiente", - "tags": ["Conceito"], - "description": "O gradiente simplesmente mede o quanto a saída de uma função muda se você mudar um pouco as entradas. Ele mede a mudança em todos os pesos da rede neural em relação à diferença no erro calculado. Você também pode pensar em um gradiente como a inclinação de uma função. Quanto maior o gradiente, mais íngreme a inclinação e mais rápido um modelo pode aprender. Mas se a inclinação for zero, o modelo para de aprender. Em termos matemáticos, um gradiente é uma derivada parcial em relação às suas entradas." - }, - { - "title": "Grande Modelo de Linguagem", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de modelo de linguagem de grande escala (do inglês, large language model ou LLM), é um modelo de linguagem que usa aprendizado profundo para aprender representações de dados de linguagem natural. Ele é treinado em conjuntos massivos de dados textuais, como livros, artigos de notícias e páginas da web, sendo capaz de interpretar e gerar textos de alta qualidade. Os grandes modelos de linguagem são usados como modelos de base para diversas aplicações de linguagem natural, como tradução automática, resumo de texto, geração de código, entre outros." - }, - { - "title": "Herança", - "tags": ["Conceito"], - "description": "A herança funciona como uma \"árvore genealógica\". Permite que uma classe ou objeto herde características e comportamentos de outra classe pai. Isso significa que a classe filha herda os atributos e métodos da classe pai, economizando tempo e promovendo a reutilização de código. A herança é uma forma de organizar e estruturar o código, criando hierarquias de classes que representam relacionamentos entre objetos do mundo real." - }, - { - "title": "Hiperparâmetro", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de parâmetro de treinamento, é um parâmetro de um modelo de aprendizado de máquina que não é alterado durante o treinamento. Ele é usado para controlar o comportamento de um modelo de aprendizado de máquina e pode ser ajustado para melhorar seu desempenho." - }, - { - "title": "HTML", - "tags": ["Front-end"], - "description": "HTML é uma linguagem de marcação utilizada na construção de páginas na web. Documentos HTML podem ser interpretados por navegadores." - }, - { - "title": "IDE", - "tags": ["Ferramenta"], - "description": "IDE é a abreviação de Integrated Development Environment, que em português significa Ambiente de Desenvolvimento Integrado. Trata-se de um programa com interfaces gráficas que facilitam a interação das pessoas desenvolvedoras na criação de aplicações. Normalmente um IDE inclui um editor de código fonte e ferramentas de depuração para identificar e corrigir erros. Exemplos populares de IDEs incluem Android Studio, Eclipse e Visual Studio Code." - }, - { - "title": "Integração Contínua", - "tags": ["Conceito"], - "description": "Integração contínua (do inglês, Continuous Integration ou CI) é uma prática de desenvolvimento de software onde as pessoas desenvolvedoras integram seu código em um repositório compartilhado, utilizando automação para compilar e testar o software. O objetivo é detectar rapidamente erros, melhorar a qualidade do código e reduzir o tempo de entrega, promovendo um feedback rápido e facilitando a colaboração entre equipes. Ferramentas como Jenkins e GitHub Actions são comumente utilizadas para implementar CI." - }, - { - "title": "Inteligência Artificial", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamada de IA (no inglês, Artificial Intelligence ou AI), é um campo da ciência da computação que estuda como os computadores podem simular a inteligência e cognição humana. Ela se concentra no desenvolvimento de sistemas capazes de executar tarefas que antes poderiam ser feitas somente por humanos, como reconhecimento de fala, tomada de decisão, tradução de idiomas e reconhecimento de padrões. A IA é um campo amplo que inclui várias subáreas, como aprendizado de máquina, processamento de linguagem natural, visão computacional, entre outras." - }, - { - "title": "Infraestrutura como Código (IaC)", - "tags": ["Conceito", "DevOps"], - "description": "Infraestrutura como código (do inglês, Infrastructure as Code ou IaC) é a prática de se construir a infraestrutura (como recursos dentro de um provedor de nuvem) através de codificação, como também fazemos ao desenvolver software. Para codificar a infraestrutura, utilizam-se ferramentas como, por exemplo, o Terraform. O código da infraestrutura é versionado e pode ser mantido separado ou junto do código da aplicação que fará uso dessa infraestrutura posteriormente. Infraestrutura como Código é como um livro de receitas detalhado para cozinheiros: em vez de dar instruções verbais, você escreve tudo no livro, garantindo que todos sigam exatamente as mesmas instruções e preparem os pratos de forma consistente e precisa. Isso reduz erros e facilita a replicação de ambientes." - }, - { - "title": "IoT", - "tags": [ - "Conceito" - ], - "description": "IoT (Internet of Things), ou Internet das Coisas, é um tipo de tecnologia composto por uma rede de dispositivos e objetos interconectados, como sensores, câmeras, itens domésticos, aparelhos eletrônicos e veículos, por exemplo. Seu objetivo é basicamente conectar os mais diversos equipamentos à internet com o intuito de captar e trocar dados com outros dispositivos, variando desde simples objetos caseiros a sofisticadas ferramentas industriais." - }, - { - "title": "Issue", - "tags": ["Conceito", "Versionamento"], - "description": "Uma 'issue' é como se fosse um bilhete que anota um problema ou algo a ser feito em um projeto. É como um lembrete que pode ser usado para falar sobre erros, pedir novas funcionalidades, conversar sobre melhorias ou ficar de olho em uma tarefa." - }, - { - "title": "JavaScript", - "tags": ["Back-end", "Front-end"], - "description": "JavaScript é uma linguagem de programação interpretada estruturada, de script em alto nível com tipagem dinâmica fraca e multiparadigma. Juntamente com HTML e CSS, o JavaScript é uma das três principais tecnologias para criação de sites." - }, - { - "title": "jQuery", - "tags": ["Biblioteca", "Front-end"], - "description": "Biblioteca de funções em JavaScript que interagem com o HTML de uma maneira muito mais rápida e simples do que apenas pelo JavaScript." - }, - { - "title": "Json", - "tags": ["Conceito"], - "description": "Em inglês significa JavaScript Object Notation. Json é um tipo de arquivo e tem uma estrutura com nome do dado e valor do dado. Dependendo do tipo de API que construímos, utilizamos o formato Json para transferir os dados entre sistemas. Por exemplo: API que consulta clientes em seu negócio. A resposta da API pode vir em formato json.", - "content": { - "code": "{name: 'Morganna', cpf: '000.000.000-00', email: 'email@email.com'}" - } - }, - { - "title": "JSP", - "tags": ["Back-end", "Front-End"], - "description": "JSP (JavaServer Pages) é uma tecnologia antiga que permitia a construção de páginas HTML usando a linguagem Java. Com ela, era possível executar lógica de negócio na tela, levando objetos Java para o front de uma maneira fácil. Tudo era executado por um servidor de aplicação, que traduzia o código em um HTML final antes de voltar para o browser. Hoje em dia, só é encontrado em sistemas legados." - }, - { - "title": "JSF", - "tags": ["Back-end", "Front-End"], - "description": "JSF (JavaServer Faces) é uma evolução de JSP, onde foram introduzidos bibliotecas de componentes ricos de navegação de interface, tais como Primefaces, facilitando a construção de aplicações frontends." - }, - { - "title": "Laço", - "tags": ["Conceito"], - "description": "Um laço (do inglês, loop) é uma estrutura de controle que permite executar repetidamente um bloco de código enquanto uma condição for verdadeira. Ele é usado para automatizar tarefas repetitivas e economizar tempo e esforço. Existem vários tipos de laços, como o laço 'for', o laço 'while' e o laço 'do-while'." - }, - { - "title": "Lambda", - "tags": ["Conceito"], - "description": "Lambda é uma função anônima em programação que pode ser definida e usada sem um nome específico, frequentemente usada para expressões simples em uma única linha.", - "content": { - "code": "soma = lambda x, y: x + y" - } - }, - { - "title": "Laravel", - "tags": ["Framework", "Back-end"], - "description": "Laravel é uma ferramenta para desenvolvimento de sistemas web em PHP. Ele oferece meios para lidar com necessidades comuns nesse tipo de aplicação além de possuir integração simplificada com diversos sistemas de banco de dados, filas e outros." - }, - { - "title": "Linguagem Baixo Nível", - "tags": ["Conceito"], - "description": "Linguagem de programação que possui pouca ou nenhuma abstração do computador. É uma linguagem de programação que está mais próxima da linguagem de máquina." - }, - { - "title": "Manifold", - "tags": ["Conceito"], - "description": "Em geometria diferencial, um manifold é um espaço topológico (superfície) com alta dimensionalidade que localmente se parece com o espaço euclidiano. Em aprendizado de máquina, um manifold é um espaço de características latentes que pode ser gerado a partir do treinamento de um modelo de aprendizado de máquina. A hipótese do manifold sugere que os dados de alta dimensão (por exemplo, dados do mundo real como imagens e vídeos) estão contidos em um espaço de baixa dimensão, onde as relações entre os dados são mais facilmente identificadas. A ideia é que, ao mapear os dados para um espaço de baixa dimensão, é possível encontrar padrões e relações mais facilmente do que no espaço de alta dimensão original." - }, - { - "title": "Material", - "tags": ["Design", "Front-End", "Mobile"], - "description": "É um sistema de design criado e apoiado pelos designers e pessoas desenvolvedoras da Google. O Material.io inclui orientações detalhadas de UX e implementações de componentes de UI para Android, Flutter e Web." - }, - { - "title": "Merge", - "tags": ["Conceito", "Ferramenta", "Versionamento"], - "description": "O Merge é como juntar peças de quebra-cabeça no desenvolvimento de código. É quando combinamos alterações de diferentes partes do código para criar uma versão unificada. Imagine misturar o trabalho de uma equipe que adicionou novos recursos de volta ao projeto principal. Isso é o Merge - juntar tudo em uma única linha de desenvolvimento." - }, - { - "title": "Métrica", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamada de métrica de avaliação, é uma medida usada para avaliar a precisão ou desempenho de um modelo de aprendizado de máquina. Existem vários tipos de métricas, cada uma adequada para um tipo diferente de problema." - }, - { - "title": "MLOps", - "tags": ["Conceito"], - "description": "É uma prática que combina desenvolvimento de modelos de aprendizado de máquina (Machine Learning ou ML) e operações de TI (Ops) para facilitar a implementação e a gestão contínua de modelos de aprendizado de máquina em produção. O objetivo do MLOps é garantir que os modelos sejam desenvolvidos, testados, implantados e monitorados de forma eficiente e escalável. Isso envolve automação de processos como treinamento, validação e monitoramento de modelos, além de promover a colaboração entre cientistas de dados, engenheiros de software e equipes de operações. O MLOps busca reduzir o tempo de ciclo de desenvolvimento e aumentar a confiabilidade e a performance dos modelos, permitindo que organizações aproveitem melhor as análises geradas por dados." - }, - { - "title": "Mobile First", - "tags": ["Conceito", "Front-end"], - "description": "Esse conceito determina que ao criarmos um site, devemos primeiro atender as necessidades dos dispositivos móveis." - }, - { - "title": "Modelos de Base", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamados de modelos de referência, são modelos de aprendizado de máquina pré-treinados em grandes conjuntos de dados e comumente disponibilizados para uso por terceiros. Eles são usados como modelos de base para diversas aplicações de visão computacional, processamento de linguagem natural, entre outros. Modelos de base podem ser usados congelados, como uma camada de extração de características (features), ou passarem por um ajuste fino (finetune), gerando um modelo completo." - }, - { - "title": "Next.js", - "tags": ["Conceito", "Framework", "Front-end"], - "description": "Next.js é uma ferramenta baseada no React que ajuda a criar sites mais rápidos e fáceis de encontrar nos buscadores (SEO). Ele permite que as páginas sejam geradas no servidor (SSR) ou criadas de forma estática (SSG), o que melhora o tempo de carregamento das páginas e a experiência da pessoa usuária." - }, - { - "title": "Node.js", - "tags": ["Back-end"], - "description": "Node.js é um ambiente que permite executar JavaScript no servidor. Isso significa que podemos usar JavaScript para criar e rodar aplicações do lado do servidor." - }, - { - "title": "Normalização", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É uma técnica de processamento de dados usada para transformar os dados em uma escala comum. Ela é usada para melhorar o desempenho de modelos de aprendizado de máquina, reduzindo a variância e o tempo de treinamento. Existem várias técnicas de normalização, como normalização de lotes (ou batches), normalização de camadas, normalização de pesos, entre outras." - }, - { - "title": "NoSQL", - "tags": ["Conceito"], - "description": "NoSQL (Not Only SQL) é uma abordagem de banco de dados que permite armazenar, recuperar e gerenciar dados de forma flexível e escalável, sem a estrutura rígida de tabelas relacionais, sendo adequado para dados não estruturados ou semiestruturados." - }, - { - "title": "Objeto", - "tags": ["Conceito"], - "description": "Um objeto, em desenvolvimento de software, é como um personagem em um videogame. Ele tem características (dados) e pode fazer coisas (métodos). Por exemplo, um objeto \"carro\" pode ter cor, velocidade e marca (características) e pode acelerar, frear e virar (ações/métodos). Os objetos são instâncias de classes e permitem organizar o código de forma a representar entidades do mundo real, tornando-o mais compreensível e reutilizável." - }, - { - "title": "Operador Ternário", - "tags": ["Conceito"], - "description": "O operador condicional ternário é uma forma curta de fazer uma escolha entre duas opções baseada em uma condição. Funciona assim: se a condição é verdadeira (true), ele retorna o primeiro resultado; se é falsa (false), retorna o segundo. É como uma versão compacta de um \"if-else\" em uma única linha.", - "content": { - "code": "Expressão(condição) ? Verdadeiro(exp1) : Falso(exp2);" - } - }, - { - "title": "Optional Chaining", - "tags": ["Conceito"], - "description": "O Optional Chaining é um recurso no Javascript para lidar com situações onde você precisa acessar propriedades de objetos aninhados mas não tem certeza se essas propriedades existem realmente, Isso ajuda a evitar erros de 'TypeError' quando tenta acessar algo que não foi definido.", - "content": { - "code": "const pessoa = nome?.cidade?.endereco; " - } - }, - { - "title": "ORM", - "tags": ["Back-end", "Conceito"], - "description": "O mapeamento objeto-relacional (ORM) é como traduzimos tabelas de um banco de dados para o código, transformando-as em classes e objetos." - }, - { - "title": "Otimizador", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de algoritmo de otimização, é um algoritmo que ajusta os parâmetros de um modelo de aprendizado de máquina para minimizar a função de perda. Ele é usado para treinar modelos de aprendizado de máquina e melhorar seu desempenho." - }, - { - "title": "Overfitting", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de sobreajuste, é um problema que ocorre quando um modelo de aprendizado de máquina se ajusta muito bem aos dados de treinamento, mas não consegue generalizar para dados novos. Isso é percebido quando o modelo tem um desempenho muito bom nas métricas para os dados de treinamento, mas um desempenho ruim nos dados de teste. O overfitting pode ser causado por vários fatores, como um modelo muito complexo, um conjunto de dados de treinamento muito pequeno, entre outros." - }, - { - "title": "Pair Programming", - "tags": ["Conceito"], - "description": "Pair programming significa programação em par. É uma técnica em que duas pessoas (ou mais) trabalham juntas em uma tarefa. Isso ajuda na troca de conhecimento e experiência entre pessoas desenvolvedoras. Duas cabeças pensam melhor que uma, certo? Algumas formas de aplicar pair programming: uma pessoa está mexendo no código enquanto recebe orientações da outra e elas vão trocando de posição; uma pessoa desenvolve os testes e a outra desenvolve a funcionalidade. Não encare pair programming como desperdício de tempo. Uma boa integração e senso de apoio no time pode fazer toda a diferença na qualidade do que for entregue." - }, - { - "title": "Parâmetro", - "tags": ["Conceito"], - "description": "Uma parâmetro é uma informação passada para uma função ou método como parte de sua chamada." - }, - { - "title": "Parâmetro nomeado", - "tags": ["Conceito"], - "description": "É uma forma de passar valores para uma função ou método especificando o nome do parâmetro correspondente." - }, - { - "title": "Polimorfismo", - "tags": ["Conceito"], - "description": "O polimorfismo permite que objetos de diferentes tipos se comportem de maneira semelhante através de uma interface compartilhada, embora cada tipo possa responder de uma forma própria." - }, - { - "title": "Ponteiros", - "tags": ["Conceito"], - "description": "Um ponteiro é um tipo de dado de uma linguagem de programação que armazena ou se refere ao endereço de memória de outro valor localizado na memória do computador. Um ponteiro refere-se a um local na memória e obtém o valor desse local. Como tal, um ponteiro é um tipo de dado que 'aponta' para um valor.", - "content": { - "code": "int *ponteiro; // ponteiro para um inteiro em linguagem C/C++" - } - }, - { - "title": "Pré-processadores CSS", - "tags": ["Front-end"], - "description": "Pré-processadores CSS são como ferramentas especiais que facilitam a criação de estilos para sites. Eles tornam possível fazer estilos mais complicados e que podem ser usados de novo em diferentes partes do site. Pense neles como formas mais espertas de escolher cores e fontes para tornar um site bonito e funcional. Exemplo: SASS/SCSS e LESS" - }, - { - "title": "Pré-Processamento", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de pré-processamento de dados, é o processo de transformar dados brutos em um formato adequado para análise de dados. Ele é geralmente usado para preparar dados para treinar modelos de aprendizado de máquina e dessa forma melhorar seu desempenho. O pré-processamento envolve várias etapas, como limpeza de dados, normalização, transformação, redução de dimensionalidade, entre outras." - }, - { - "title": "Processamento de Linguagem Natural", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também conhecido como PLN (do inglês, Natural Language Processing ou NLP), é um campo da inteligência artificial que estuda como os computadores podem entender e interpretar a linguagem humana. Ele se concentra no desenvolvimento de sistemas que podem analisar, entender e gerar linguagem natural, permitindo que os computadores processem e respondam informações escritas. O PLN é usado em uma ampla variedade de aplicações, como chatbots, tradução automática, análise de sentimentos, entre outros." - }, - { - "title": "Programação orientada a objetos", - "tags": ["Conceito", "Paradigma"], - "description": "A programação orientada a objetos (POO) é um paradigma de programação que se baseia na ideia de modelar o software em torno de objetos, que são instâncias de classes. Cada objeto contém atributos (dados) e métodos (funções) que operam nesses dados. Isso permite organizar o código de forma mais modular, reutilizável e orientada para objetos do mundo real. POO promove conceitos como encapsulamento, herança e polimorfismo, facilitando a criação de sistemas mais flexíveis, compreensíveis e escaláveis." - }, - { - "title": "Propriedade", - "tags": ["Conceito"], - "description": "Propriedades, frequentemente abreviadas como 'props', são mecanismos que permitem passar dados de um componente pai para um componente filho. Elas são usadas para personalizar o comportamento e a aparência de um componente. Por exemplo, ao criar um botão, você pode passar propriedades como a cor de fundo, o texto exibido e o tamanho do texto como props. As props são cruciais para tornar os componentes reutilizáveis e configuráveis, permitindo que eles se adaptem a diferentes contextos de uso." - }, - { - "title": "Pull Request", - "tags": ["Conceito", "Versionamento"], - "description": "Trata-se de uma requisição de alteração dentro de um projeto. Essa requisição pode ser feita para corrigir um problema, adicionar uma nova funcionalidade, sugerir alterações, entre outros motivos. Essa requisição de alteração é feita para que haja uma avaliação do que está sendo alterado dentro do projeto, entendendo de faz sentido para o contexto daquele momento. E essa requisição pode ficar pendente até que pessoas responsáveis ou que tenham a permissão, aprovem. Outras regras podem ser adicionadas nessas requisições, como build da aplicação, rodar testes com sucesso e o que mais fizer sentido para o projeto em questão." - }, - { - "title": "Python", - "tags": ["Back-end"], - "description": "O Python é uma linguagem de programação amplamente usada em aplicações da Web, desenvolvimento de software, ciência de dados e machine learning (ML). As pessoas desenvolvedoras usam o Python porque é eficiente e fácil de aprender e pode ser executada em muitas plataformas diferentes." - }, - { - "title": "SGBD", - "tags": ["Conceito"], - "description": "SGBD (Sistema de Gerenciamento de Banco de Dados) é um tipo de sistema que permite o usuário gerenciar base de dados, realizando operações como criar e modificar tabelas, permitir acesso para usuários entre outros. Podemos dizer que por exemplo o MySQL, é um SGBD." - }, - { - "title": "React", - "tags": ["Conceito", "Framework", "Front-end"], - "description": "React é uma biblioteca JavaScript de código aberto utilizada para criar interfaces de usuário interativas e dinâmicas em aplicações web e em outros ambientes, como mobile, TV, realidade virtual, entre outros. Ele se destaca por seu modelo de programação baseado em componentes e pela eficiência na atualização da interface do usuário, tornando-o uma escolha popular no desenvolvimento front-end." - }, - { - "title": "React Native", - "tags": ["Mobile"], - "description": "É um framework do Javascript baseado no React para desenvolvimento de aplicativos móveis multiplataforma." - }, - { - "title": "Reconhecimento Automático de Fala", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É um campo da inteligência artificial que se concentra no desenvolvimento de sistemas que podem analisar e entender a fala humana, permitindo que os computadores transcrevam e processem estímulos sonoros em texto. O reconhecimento automático de fala e o processamento de linguagem natural são categorias de IA relacionadas, porém diferentes. O reconhecimento automático de fala foca no processo de converter palavras faladas em texto e símbolos, enquanto o PLN é o processo de converter texto em um formato estruturado que um computador pode entender e processar. O reconhecimento automático de fala (no inglês, automatic speech recognition) é usado em uma ampla variedade de aplicações, como assistentes virtuais, sistemas de navegação, transcrição de áudio, entre outros." - }, - { - "title": "Recursão", - "tags": ["Conceito"], - "description": "Recursão é um método/função que chama a si mesmo para resolver um problema. Temos de exemplo o cálculo fatorial onde um número vai multiplicando seu número anterior até chegar a 1. Aqui temos um exemplo utilizando javascript, vamos imaginar que chamamos está função com o número 5, neste caso a primeira vez que a função for chamada irá chamar 5 x fatorial(5 - 1), depois a função será chamada novamente porém desta vez com o número 4 onde será 5 x ( 4 x fatorial(4-1) ) e irá seguir assim até chegar ao número 1 onde não haverá mais nenhuma chamada de função e será feito este cálculo 5 x 4 x 3 x 2 x 1.", - "content": { - "code": "function fatorial(numero) { if(numero == 0 || numero == 1) { return 1 } return numero * fatorial(numero - 1) }" - } - }, - { - "title": "Rede Generativa Adversarial", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "Do inglês, Generative Adversarial Network ou GAN, é um tipo de rede neural artificial composto por duas redes neurais concorrentes treinadas de forma adversarial. A rede neural generativa é treinada para gerar novos dados, enquanto a rede discriminativa é treinada para distinguir entre dados reais e dados falsos. Desta forma, as duas redes neurais competem entre si, o que leva a uma melhoria contínua de ambas e gera dois modelos especializados, que podem ser usados isoladamente depois de treinados. O modelo generativo é frequentemente usado para gerar novas imagens, vídeos, áudios e textos mais realistas, como rostos humanos, vídeos de pessoas falando, áudios de pessoas cantando e textos de notícias. Já o modelo discriminativo é comumente usado para identificação de dados falsos." - }, - { - "title": "Rede Neural Artificial", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "É um modelo computacional inspirado no sistema nervoso central de um animal, que consiste em um conjunto de unidades de processamento interconectadas, chamadas neurônios artificiais, que simulam a forma como os neurônios se comunicam uns com os outros. As redes neurais artificiais (do inglês, Artificial Neural Networks ou ANNs) são usadas para resolver problemas complexos e não lineares, como reconhecimento de padrões, reconhecimento de fala, visão computacional, entre outros." - }, - { - "title": "Rede Neural Convolucional", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "É um tipo de rede neural artificial que usa uma operação matemática chamada convolução em uma ou mais de suas camadas. Do inglês, Convolutional Neural Network ou CNN, ela é frequentemente usada para processar dados de entrada que têm uma estrutura matricial, como imagens, e é muito usada em aplicações de visão computacional, como reconhecimento de imagens e vídeos." - }, - { - "title": "Rede Neural Generativa", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "É um tipo de rede neural artificial que gera novos dados com base em um conjunto de dados de treinamento. Estes dados geralmente são variações dos dados de entrada, como por exemplo alterações nas expressões de uma pessoa em um vídeo. Ela é frequentemente usada para gerar novas imagens, vídeos, áudios e textos, podendo ser usada para aumento dos dados." - }, - { - "title": "Rede Neural Profunda", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "Do inglês, Deep Neural Network ou DNN, é um tipo de rede neural artificial com várias camadas de unidades de processamento interconectadas. É chamada de rede neural profunda devido ao número de camadas ocultas usadas no modelo de aprendizado profundo. Enquanto uma rede neural básica é formada por uma camada de entrada, uma de saída e poucas camadas intermediárias (também chamadas de camadas ocultas), uma rede neural profunda tem várias camadas ocultas de processamento, podendo chegar a centenas. Essas camadas adicionais dão a essas redes a capacidade de fazer previsões com maior precisão quando comparadas a uma rede neural mais simples, mas exigem milhões de pontos de dados de amostra e centenas de horas de treinamento." - }, - { - "title": "Rede Neural Recorrente", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "Do inglês, Recurrent Neural Network ou RNN, é um tipo de rede neural artificial que usa loops e estados para processar dados. Ela é frequentemente usada para processar dados de entrada que têm uma estrutura sequencial, como textos, áudio, vídeo e séries temporais, sendo muito usada em aplicações de processamento de linguagem natural, como tradução automática, reconhecimento de fala e análise de sentimentos." - }, - { - "title": "Repositório", - "tags": ["Conceito", "Ferramenta", "Versionamento"], - "description": "Um Repositório é basicamente uma caixa que guarda todo o material do seu projeto. Pense nele como um lugar onde você armazena o código, a história das mudanças e outros arquivos importantes. Existem repositórios locais no seu computador e repositórios remotos em servidores compartilhados." - }, - { - "title": "Responsividade", - "tags": ["Front-end"], - "description": "A capacidade de um site ou aplicativo se adaptar a diferentes tamanhos de tela e dispositivos, como smartphones, tablets e desktops." - }, - { - "title": "RPA", - "tags": ["Conceito"], - "description": "Robotic Process Automation (Automação de Processos Robóticos), é uma tecnologia que permite a automação de tarefas repetitivas e baseadas em regras, utilizando robôs de software para realizar principalmente atividades repetitivas. Esses robôs imitam ações humanas em sistemas digitais, como clicar em botões, preencher formulários, copiar e colar dados, acessar sistemas e executar processos predefinidos." - }, - { - "title": "Ruby", - "tags": ["Back-end", "Conceito"], - "description": "Ruby é uma linguagem de programação altamente flexível criada no Japão em 1995. Ela é conhecida por sua simplicidade e facilidade de uso, sendo muito usada no desenvolvimento web e em aplicações de automação." - }, - { - "title": "Scrum", - "tags": ["Framework"], - "description": " É um método para gerenciar projetos onde o trabalho é dividido em pequenos pedaços chamados de 'sprints', que geralmente duram algumas semanas. A equipe trabalha em estreita colaboração, se encontrando regularmente para planejar, revisar e ajustar o trabalho. O objetivo é entregar valor de forma rápida e iterativa, respondendo às mudanças e feedbacks conforme o projeto avança." - }, - { - "title": "SOLID", - "tags": ["Conceito"], - "description": "Os princípios SOLID são cinco diretrizes para design de software orientado a objetos, promovendo sistemas mais flexíveis, robustos e de fácil manutenção. Sendo, Single Responsibility Principle (Uma classe deve ter apenas uma responsabilidade), Open/Closed Principle (Classes devem estar abertas para extensão, mas fechadas para modificação), Liskov Substitution Principle (Subclasses devem ser substituíveis por suas superclasses sem alterar a correção do programa), Interface Segregation Principle (Classes não devem ser forçadas a implementar interfaces que não utilizam) e Dependency Inversion Principle (Módulos de alto nível não devem depender de módulos de baixo nível; ambos devem depender de abstrações)." - }, - { - "title": "Spread Operator", - "tags": ["Conceito"], - "description": "O operador spread é um operador que está presente em várias linguagens de programação, que permite copiar e combinar elementos de uma estrutura de dados em outra, facilitando a manipulação eficiente de informações." - }, - { - "title": "SQL", - "tags": ["Back-end", "Conceito"], - "description": "A Linguagem de Consulta Estruturada (SQL) é uma linguagem de programação usada para gerenciar dados em bancos de dados relacionais. É como uma linguagem que nos permite falar com os bancos de dados para fazer coisas como buscar, adicionar, atualizar e deletar informações." - }, - { - "title": "Stack Navigation", - "tags": ["Mobile"], - "description": "No contexto do React Native, é uma técnica de navegação entre as telas do aplicativo, quando o aplicativo têm os botões de voltar e avançar, por exemplo." - }, - { - "title": "Stateful Widget", - "tags": ["Conceito", "Mobile"], - "description": "Um StatefulWidget, no Flutter, é um componente que possui estado interno mutável, permitindo que ele responda a mudanças de estado e atualize dinamicamente a interface do usuário." - }, - { - "title": "Stateless Widget", - "tags": ["Conceito", "Mobile"], - "description": "Um StatelessWidget, no Flutter, é um componente que não possui estado interno mutável, ideal para partes da interface do usuário que não mudam com o tempo e não dependem de estado." - }, - { - "title": "Style Guide", - "tags": ["Design"], - "description": "É uma biblioteca que reúne diretrizes de estilo e padrões visuais para a criação de produtos digitais. Ele inclui elementos como tipografia, paletas de cores, uso de ícones e layouts, mas não abrange aspectos técnicos, como código. O objetivo de um style guide é garantir a consistência visual e a coerência na comunicação de marca, servindo como referência para designers e equipes de marketing e comunicação mas sem a colaboração direta das pessoas desenvolvedoras." - }, - { - "title": "Svelte", - "tags": ["Conceito", "Framework", "Front-end"], - "description": "Svelte é uma ferramenta JavaScript que transforma o código durante a construção do site ou aplicativo, sem precisar de uma camada extra para funcionar no navegador. Isso o torna mais rápido e leve em comparação com outras ferramentas similares." - }, - { - "title": "Swift", - "tags": ["Mobile"], - "description": "Swift é uma linguagem de programação criada pela Apple. Com ela, você pode desenvolver aplicativos para dispositivos e sistemas operacionais da Apple, como iPhones (iOS), Macs (macOS), Apple Watches (watchOS) e Apple TVs (tvOS)." - }, - { - "title": "SwiftUI", - "tags": ["Mobile"], - "description": "SwiftUI é uma ferramenta da Apple para criar a parte visual dos aplicativos usando a linguagem Swift. Ao contrário do UIKit, que é mais tradicional, o SwiftUI permite que você descreva a interface do usuário de uma maneira mais simples e direta, facilitando tanto a criação quanto a manutenção do seu código." - }, - { - "title": "Tag em HTML/XML", - "tags": ["Conceito"], - "description": "Uma tag é um elemento de marcação usado em linguagens de marcação, como HTML e XML, para definir a estrutura e o significado de um documento. Elas são usadas para definir o início e o fim de um elemento, como um parágrafo, uma tabela ou uma imagem. As tags são escritas entre os sinais de menor e maior, como , sendo a marcação do fim de um elemento definida como . Se um elemento não possui outros elementos internamente (também chamados de elementos filhos), ele pode ser definido somente como ao invés de ." - }, - { - "title": "Taxa de Aprendizado", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamada de taxa de aprendizagem (do inglês, learning rate ou LR), é um hiperparâmetro de treinamento de modelos de aprendizado de máquina que controla a rapidez com que um modelo de aprendizado de máquina aprende. É um dos hiperparâmetros mais importantes de um modelo de aprendizado de máquina e pode ser ajustada para melhorar o desempenho do modelo. Ela controla qual é o tamanho do passo que será dado durante o aprendizado em direção ao mínimo calculado pelo gradiente. Uma taxa de aprendizado muito alta pode causar a explosão do gradiente, enquanto uma taxa de aprendizado muito baixa pode causar o desaparecimento do gradiente. Existem diversas técnicas que permitem alterar a taxa de aprendizado durante o treinamento, como decaimento da taxa de aprendizado, agendamento da taxa de aprendizado, aquecimento da taxa de aprendizado, entre outras." - }, - { - "title": "Terminal", - "tags": ["Conceito"], - "description": "O Terminal é uma CLI que permite que os usuários interajam diretamente com o sistema operacional usando comandos de texto, ao invés de uma interface gráfica (GUI). No Terminal, você pode executar uma série de tarefas e comandos diretamente, como navegar por diretórios, manipular arquivos, configurar o sistema e rodar programas. Podemos destacar como terminais: Bash (Linux e MacOS), CMD (Windows) e PowerShell (Windows)." - }, - { - "title": "TI Verde", - "tags": [ - "Conceito" - ], - "description": "A TI Verde, do inglês Green IT, também podendo ser chamada de TI Ecológica ou Computação Verde, representa o lado sustentável da tecnologia da informação. Seu conceito gira em torno da análise e implementação de iniciativas e programas que repercutem na sustentabilidade ambiental e responsabilidade social de empresas e organizações, seu principal destaque é fazer da tecnologia uma potencial fonte de soluções para problemas ambientais." - }, - { - "title": "Transferência de Aprendizado", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É uma técnica de aprendizado de máquina na qual o conhecimento aprendido de uma tarefa é reutilizado para aumentar o desempenho em uma tarefa relacionada. Por exemplo, o conhecimento adquirido ao aprender a reconhecer carros pode ser aplicado ao tentar segmentar imagens de carros. Na transferência de aprendizado o modelo que é transferido é chamado de modelo de origem, e o modelo para o qual ele é transferido é chamado de modelo de destino. As tarefas de origem e destino são diferentes, mas relacionadas, e a tarefa de origem é usada para auxiliar no aprendizado da tarefa de destino. Os dados de origem e destino podem ser da mesma modalidade (por exemplo, imagens) ou de modalidades diferentes (por exemplo, imagens e texto)." - }, - { - "title": "Transformer", - "tags": ["Conceito", "Inteligência artificial", "Rede neural"], - "description": "É um tipo de rede neural artificial que usa uma arquitetura de codificador-decodificador para processar dados de entrada. Os modelos transformer aplicam um conjunto de técnicas matemáticas, chamadas de atenção ou autoatenção, para detectar as maneiras sutis como até mesmo elementos de dados distantes em uma série influenciam e dependem uns dos outros. Ao encontrar padrões entre elementos matematicamente, os transformers eliminam a necessidade de grandes conjuntos de dados rotulados, que são caros e demorados para produzir. Qualquer aplicação que use dados sequenciais de textos, imagens ou vídeos é uma candidata a modelos transformer." - }, - { - "title": "Treinamento Adversarial", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É um tipo de treinamento de aprendizado de máquina que usa um modelo adversário para treinar um modelo. Nele, dois modelos de aprendizado de máquina são treinados de forma adversária, onde um modelo é responsável por gerar dados falsos e outro modelo é responsável por identificar dados falsos. O treinamento adversarial é usado para gerar dados falsos realistas, que podem ser usados para aumentar um conjunto de dados de treinamento." - }, - { - "title": "UI Design", - "tags": ["Conceito", "Design", "Front-end"], - "description": "É o processo de criar a parte visual e interativa de um produto digital, como um site ou um aplicativo. Isso inclui o design de botões, menus, ícones e toda a aparência do layout, garantindo que seja esteticamente agradável e fácil de navegar. O objetivo do UI Design é fazer com que os usuários se sintam confortáveis e atraídos pelo visual do produto, aplicando cores, tipografia e elementos visuais que se alinhem à identidade da marca." - }, - { - "title": "UIKit", - "tags": ["Mobile"], - "description": "UIKit é um conjunto de ferramentas fornecido pela Apple para criar as partes visuais dos aplicativos iOS. Ele fornece um conjunto de classes e componentes para construir e gerenciar a interface, incluindo elementos como botões, tabelas, views e gestos." - }, - { - "title": "UML", - "tags": ["Conceito"], - "description": " É uma linguagem visual que as pessoas desenvolvedoras de software usam para descrever e projetar sistemas de software. Ela oferece diferentes tipos de diagramas, como diagramas de classes, sequência e atividades, para representar diferentes aspectos de um sistema. Esses diagramas ajudam as equipes a entenderem e comunicarem melhor as ideias e os designs do software." - }, - { - "title": "Underfitting", - "tags": ["Conceito", "Inteligência artificial"], - "description": "Também chamado de subajuste, é um problema que ocorre quando um modelo de aprendizado de máquina não se ajusta bem aos dados de treinamento e não consegue generalizar para dados novos. Isso é percebido quando o modelo tem um desempenho ruim nos dados de treinamento e nos dados de teste. O underfitting pode ser causado por vários fatores, como um modelo muito simples, um conjunto de dados de treinamento muito pequeno, entre outros." - }, - { - "title": "UX Design", - "tags": ["Conceito", "Design", "Front-end"], - "description": "É o processo de criar produtos e serviços que oferecem uma experiência positiva e eficiente para os usuários. Isso envolve entender as necessidades e comportamentos das pessoas que usarão o produto, para garantir que ele seja fácil de usar, acessível e agradável. O objetivo é fazer com que a interação do usuário com o produto seja intuitiva, ajudando a resolver problemas e atender expectativas, desde o primeiro contato até a utilização contínua. É sobre projetar experiências que façam os usuários se sentirem satisfeitos e engajados com o produto." - }, - { - "title": "Variável computada", - "tags": ["Conceito"], - "description": "É uma variável que não armazena um valor diretamente, ela calcula ou deriva seu valor de outras variáveis ou dados." - }, - { - "title": "Variável tipada", - "tags": ["Conceito"], - "description": "Uma variável tipada é aquele que possui um tipo de dado associado a ela." - }, - { - "title": "Versionamento", - "tags": ["Conceito", "Versionamento"], - "description": "O versionamento de código é o controle de alterações feitas em um projeto ao longo do tempo, acompanhando e registrando modificações feitas no código-fonte." - }, - { - "title": "Visão Computacional", - "tags": ["Conceito", "Inteligência artificial"], - "description": "É um campo da inteligência artificial que estuda como os computadores podem obter e processar informações de estímulos visuais. Ela se concentra no desenvolvimento de sistemas que podem analisar e entender imagens e vídeos, permitindo que os computadores reconheçam objetos, pessoas, lugares, movimentos e outros elementos visuais. A visão computacional (do inglês, computer vision ou CV) é usada em uma ampla variedade de aplicações, como reconhecimento facial, carros autônomos, diagnóstico médico, entre outros." - }, - { - "title": "Vue.js", - "tags": ["Conceito", "Framework", "Front-end"], - "description": "Vue.js é uma ferramenta JavaScript usada para criar interfaces de usuário, ou seja, o que as pessoas veem e interagem em um site ou aplicativo. Ele é fácil de adicionar a projetos já existentes e é muito utilizado para construir sites que funcionam como uma única página (SPAs)." - }, - { - "title": "XML", - "tags": ["Conceito"], - "description": "XML (do inglês, eXtensible Markup Language) é uma linguagem de marcação que define um conjunto de regras para codificar documentos. Ela é uma linguagem de marcação assim como a HTML, porém a XML foi criada para ser mais flexível, permitindo a criação de novas tags, enquanto a HTML possui um número limitado de tags pré-definidas. É uma linguagem genérica que pode ser usada para representar qualquer tipo de dado estruturado. XML é uma linguagem muito popular, sendo usada em bancos de dados, arquivos de configurações de sistemas, transmissão de informações, entre outros." - }, - { - "title": "Honeypot", - "tags": ["Conceito", "Segurança cibernética"], - "description": "Um honeypot é um sistema de segurança configurado para detectar, desviar ou, de alguma maneira, neutralizar tentativas de uso não autorizado de sistemas de informação. A definição de honeypot vem do mundo da espionagem, onde a espiã Mata Hari usam uma relação romântica como uma forma de roubar segredos. São descritos como a colocação de um \"pote de mel\" (daí o nome, do inglês, \"honeypot\"). Ele atrai os cibercriminosos como uma armadilha, permitindo que os administradores monitorem suas atividades e desenvolvam melhores defesas." - }, - { - "title": "WAF", - "tags": ["Conceito", "Segurança cibernética"], - "description": "O WAF (Web Application Firewall), ajuda a proteger os aplicativos web ao filtrar e monitorar o tráfego de entrada em aplicações web. Ele protege contra tipos de ataques mais comuns, tais como: falsificação de solicitação entre sites, cross-site-scripting (XSS), inclusão de arquivos e injeção de SQL, entre outros." - }, - { - "title": "2FA", - "tags": ["Conceito", "Segurança cibernética"], - "description": "2FA (Two Factor Authentication ou autenticação de dois fatores) , é um processo de autenticação que requer dois fatores de autenticação diferentes para estabelecer a identidade. Em poucas palavras, significa exigir que um usuário prove sua identidade de duas maneiras diferentes antes de conceder acesso. A 2FA é uma forma de autenticação multifator." - } - ] -} diff --git a/assets/js/pwa.js b/assets/js/pwa.js new file mode 100644 index 00000000..6721b4ff --- /dev/null +++ b/assets/js/pwa.js @@ -0,0 +1,26 @@ +function getPWADisplayMode() { + if (document.referrer.startsWith("android-app://")) return "twa"; + if (window.matchMedia("(display-mode: browser)").matches) return "browser"; + if (window.matchMedia("(display-mode: standalone)").matches) + return "standalone"; + if (window.matchMedia("(display-mode: minimal-ui)").matches) + return "minimal-ui"; + if (window.matchMedia("(display-mode: fullscreen)").matches) + return "fullscreen"; + if (window.matchMedia("(display-mode: window-controls-overlay)").matches) + return "window-controls-overlay"; + return "unknown"; +} + +window.addEventListener("DOMContentLoaded", () => { + const displayMode = getPWADisplayMode(); + + // hide github-corner and change theme button if not in browser mode + if (displayMode !== "browser") { + const githubCorner = document.querySelector(".github-corner"); + githubCorner.style.display = "none"; + + const themeButton = document.querySelector("#change-theme-button"); + themeButton.style.display = "none"; + } +}); diff --git a/assets/js/script.js b/assets/js/script.js deleted file mode 100644 index 167a2e51..00000000 --- a/assets/js/script.js +++ /dev/null @@ -1,383 +0,0 @@ -import { levenshtein } from "./levenshtein.js"; - -const exactWordScore = 12; -const partialWordScore = 10; -const levenshteinScore = 10; -const levenshteinThreshold = 3; - -const searchInput = document.querySelector("#search-input"); -const cardsSection = document.querySelector("#cards"); -const filterSelect = document.querySelector("#tags-filter"); -let listOfCardsFiltered = []; -let favoriteCards = []; - -function insertTagsIntoSelect(tags) { - tags.sort(); - for (const tag of tags) { - const newOption = document.createElement("option"); - newOption.value = tag; - newOption.text = tag; - filterSelect.appendChild(newOption); - } -} - -function getTagsFromCards(data) { - const tags = ["Favoritos"]; - data.map((objeto) => { - if (objeto.tags) { - objeto.tags.map((tag) => { - if (!tags.includes(tag)) { - tags.push(tag); - } - }); - } else { - objeto.tags = []; - } - }); - insertTagsIntoSelect(tags); -} - -function filterCards() { - listOfCardsFiltered = []; - const listOfCards = document.querySelectorAll(".card"); - listOfCards.forEach((element) => { - if ( - element.getAttribute("tags").includes(filterSelect.value) || - filterSelect.value == "Todos" - ) { - element.style.display = ""; - listOfCardsFiltered.push(element); - } else { - element.style.display = "none"; - } - }); - searchCards(); -} - -function sortCards(sortingArray) { - if (listOfCardsFiltered.length > 0) { - if (!Array.isArray(sortingArray) || !sortingArray.length) { - const cards = document.querySelector("#cards"); - // selects all cards that are not hidden and sorts them by title - // every child is re-appended to cards in the order of the now sorted array. When an element is re-appended it is actually moved from its previous location - [...cards.querySelectorAll(".card:not([style*='display: none;'])")] - .sort((a, b) => - a - .querySelector(".card__title") - .textContent.toLowerCase() - .localeCompare( - b.querySelector(".card__title").textContent.toLowerCase(), - ), - ) - .forEach((node) => cards.appendChild(node)); - } else { - const cards = document.querySelector("#cards"); - // selects all cards that are not hidden and sorts them by the order of the sortingArray - // every child is re-appended to cards in the order of the now sorted array. When an element is re-appended it is actually moved from its previous location - [...cards.querySelectorAll(".card:not([style*='display: none;'])")] - .sort((a, b) => sortingArray.indexOf(a) - sortingArray.indexOf(b)) - .forEach((node) => cards.appendChild(node)); - } - } -} - -function searchCards() { - const inputValue = searchInput.value.toLowerCase().trim(); - let cardsScores = []; - - if (inputValue.length > 0) { - const searchWords = inputValue.split(/\s+/); - - for (const card of listOfCardsFiltered) { - let cardScore = 0; - - // search for words inside the title that either contains the search words or have a low levenshtein distance - // only consider the best case for each search word - const cardTitle = card - .querySelector(".card__title") - .textContent.toLowerCase(); - const titleWords = cardTitle.split(/\s+/); - let titleScore = 0; - - searchWords.forEach((searchWord) => { - let wordScore = 0; - - titleWords.some((word) => { - if (word == searchWord) { - // breaks the loop if the word is an exact match, since no other word can have a higher score - wordScore = exactWordScore; - return true; - } else if (wordScore < partialWordScore) { - if (word.includes(searchWord)) { - wordScore = partialWordScore; - } else if (word.length > 3) { - const levenshteinDistance = levenshtein(searchWord, word); - - // only the word with the lowest levenshtein distance will be considered - if ( - levenshteinDistance <= levenshteinThreshold && - levenshteinScore - levenshteinDistance > wordScore - ) { - wordScore = levenshteinScore - levenshteinDistance; - } - } - } - }); - - titleScore += wordScore; - }); - - // give extra points for words in title - cardScore += titleScore * 10; - - // search for words inside the description that either contains the search words or have a low levenshtein distance - // only consider the best case for each search word - const cardDescription = card - .querySelector(".card__description") - .textContent.toLowerCase(); - const descriptionWords = cardDescription.split(/\s+/); - let descriptionScore = 0; - - searchWords.forEach((searchWord) => { - let wordScore = 0; - - descriptionWords.some((word) => { - if (word == searchWord) { - // breaks the loop if the word is an exact match, since no other word can have a higher score - wordScore = exactWordScore; - return true; - } else if (wordScore < partialWordScore) { - if (word.includes(searchWord)) { - wordScore = partialWordScore; - } else if (word.length > 3) { - const levenshteinDistance = levenshtein(searchWord, word); - - // only the word with the lowest levenshtein distance will be considered - if ( - levenshteinDistance <= levenshteinThreshold && - levenshteinScore - levenshteinDistance > wordScore - ) { - wordScore = levenshteinScore - levenshteinDistance; - } - } - } - }); - - descriptionScore += wordScore; - }); - - cardScore += descriptionScore; - - if (cardScore > 0) { - card.style.display = ""; - cardsScores.push([card, cardScore]); - } else { - card.style.display = "none"; - } - } - - const msgNotFound = document.querySelector("div.msg"); - - if (cardsScores.length > 0) { - msgNotFound.style.display = "none"; - // sort the array of cards by score - cardsScores.sort((a, b) => b[1] - a[1]); - // remove the scores from the array - cardsScores = cardsScores.map((card) => card[0]); - sortCards(cardsScores); - } else { - msgNotFound.style.display = ""; - } - } else { - // display all cards if search input is empty - for (const card of listOfCardsFiltered) { - card.style.display = ""; - cardsScores.push(card); - } - - const msgNotFound = document.querySelector("div.msg"); - msgNotFound.style.display = "none"; - sortCards(); - } -} - -function insertCardsIntoHtml(data) { - let cards = `
- -
-

O termo pesquisado não foi encontrado! Verifique se foi digitado corretamente.

-

Caso esteja correto, por favor crie uma issue no repositório para que esse termo possa ser adicionado ao Diciotech.

-

Agradecemos sua colaboração! 😄

-
-
`; - data.forEach((card) => { - const cardId = generateCardId(card.id, card.title, card.description); - cards += ` -
-
-

${card.title}

- - -
-

${card.description}

- `; - if (card.content && card.content.code) { - cards += ` -
- ${card.content.code} -
- `; - } - cards += "
"; - }); - cardsSection.innerHTML = cards; - - const favButtons = document.querySelectorAll(".fav__button"); - favButtons.forEach((button) => { - button.addEventListener("click", () => { - setCardAsFavorite(button.getAttribute("unique-title")); - }); - }); - - filterCards(); -} - -function addFavoriteTagToCard(cardId) { - const card = document.getElementById(cardId); - const tags = card.getAttribute("tags").split(","); - - if (tags.includes("Favoritos")) { - tags.splice(tags.indexOf("Favoritos"), 1); - } else { - tags.push("Favoritos"); - } - - card.setAttribute("tags", tags); -} - -function setCardAsFavorite(cardId) { - const favIcon = document.querySelector(`#fav_${cardId}`); - - if (favoriteCards.includes(cardId)) { - favIcon.className = "ph ph-star fav__button"; - favoriteCards.splice(favoriteCards.indexOf(cardId), 1); - } else { - favIcon.className = "ph-fill ph-star fav__button"; - favoriteCards.push(cardId); - } - - addFavoriteTagToCard(cardId); - - localStorage.setItem("favoriteCards", favoriteCards); -} - -async function loadFavoriteCardsId() { - const cardsId = localStorage.getItem("favoriteCards"); - if (cardsId) { - favoriteCards = cardsId.split(","); - } -} - -async function addFavoriteTag(cards) { - cards.map((card) => { - const cardId = generateCardId(card.id, card.title, card.description); - if (favoriteCards.includes(cardId)) { - if (!card.tags) { - card.tags = []; - } - card.tags.push("Favoritos"); - } - }); - return cards; -} - -async function sortCardsByTitle(data) { - return data.cards.sort((a, b) => a.title.localeCompare(b.title)); -} - -async function getCardsFromJson() { - try { - const res = await fetch("./assets/data/cards_pt-br.json"); - const data = await res.json(); - const sortedCards = await sortCardsByTitle(data); - document.getElementById("total-terms").textContent = sortedCards.length; - await loadFavoriteCardsId(); - await addFavoriteTag(sortedCards); - getTagsFromCards(sortedCards); - insertCardsIntoHtml(sortedCards); - } catch (error) { - console.error("An error occurred while fetching card data.", error); - } -} - -searchInput.addEventListener("input", searchCards); -filterSelect.addEventListener("change", filterCards); -getCardsFromJson(); - -/** - * Generates a card ID using a default UUID or a hash of the card description. - * - * @param {string} defaultCardId - A default UUID generated by the CLI. - * @param {string} title - The title of the card. - * @param {string} description - The description of the card. - * @returns {string} - A generated ID - */ -function generateCardId(defaultCardId, title, description) { - if (defaultCardId) return defaultCardId; - return generateContentId(title, description); -} - -/** - * Calculates a simple hash of the given content. - * - * @param {string} content - The content to be hashed. - * @param {string} title - An additional title to be added to the content. - * @param {number} hash - The initial hash value. - * @returns {string} The hashed representation of the content. - */ -function generateContentId(title = "", description = "", hash = 5381) { - const data = (title + description).slice(0, 32).split(" ").join(""); - - for (let i = 0; i < data.length; i++) { - hash = (hash << 5) + hash + data.charCodeAt(i); - } - - const hashString = Math.abs(hash).toString(36); // Convert to base-36 string - return hashString; -} - -function getPWADisplayMode() { - if (document.referrer.startsWith("android-app://")) return "twa"; - if (window.matchMedia("(display-mode: browser)").matches) return "browser"; - if (window.matchMedia("(display-mode: standalone)").matches) return "standalone"; - if (window.matchMedia("(display-mode: minimal-ui)").matches) return "minimal-ui"; - if (window.matchMedia("(display-mode: fullscreen)").matches) return "fullscreen"; - if (window.matchMedia("(display-mode: window-controls-overlay)").matches) return "window-controls-overlay"; - return "unknown"; -} - -window.addEventListener("DOMContentLoaded", () => { - const displayMode = getPWADisplayMode(); - - // hide github-corner and change theme button if not in browser mode - if (displayMode !== "browser") { - const githubCorner = document.querySelector(".github-corner"); - githubCorner.style.display = "none"; - - const themeButton = document.querySelector("#change-theme-button"); - themeButton.style.display = "none"; - } -}); diff --git a/diciotech.webmanifest b/diciotech.webmanifest index af50f34f..6c5019ed 100644 --- a/diciotech.webmanifest +++ b/diciotech.webmanifest @@ -15,7 +15,7 @@ // "type": "image/png" // }, { - "src": "assets/img/brand/symbol/colored.png", + "src": "/assets/img/brand/symbol/colored.png", "sizes": "512x512", "type": "image/png" } diff --git a/format_data.py b/format_data.py index 0cdcfa20..6b6753ea 100644 --- a/format_data.py +++ b/format_data.py @@ -1,4 +1,4 @@ -import json +import yaml from argparse import ArgumentParser from pathlib import Path from unicodedata import category, normalize @@ -10,30 +10,51 @@ def strip_accents(s: str) -> str: def main(file: Path): with open(file) as f: - data = json.load(f) + data = yaml.safe_load(f) - # sort cards by 'title' value - data['cards'] = sorted(data['cards'], key=lambda x: strip_accents(x['title'].lower())) - - # sort tags inside each card by value - for card in data['cards']: - card['tags'] = sorted(card['tags'], key=lambda x: strip_accents(x.lower())) + if not data: + print(f'Warning: the file {file} is empty') + return - # ensures that the description ends with a period - if not card['description'].endswith('.'): - card['description'] += '.' + # sort cards by 'title' value + try: + data = sorted(data, key=lambda x: strip_accents(x['title'].lower())) + except AttributeError: + cards_without_title = [card['description'] for card in data if card['title'] is None] + print(f'Warning: the following cards do not have a title: {cards_without_title}') + raise + except KeyError: + cards_without_title = [card['description'] for card in data if 'title' not in card] + print(f'Warning: the following cards do not have a title: {cards_without_title}') + raise + + try: + # sort tags inside each card by value + for card in data: + # ensures that only the first letter of the tag is capitalized + card['tags'] = [tag.capitalize() for tag in card['tags']] + card['tags'] = sorted(card['tags'], key=lambda x: strip_accents(x.lower())) + + # ensures that the description ends with a period + if not card['description'].endswith('.'): + card['description'] += '.' + + except KeyError: + cards_without_tags = [card['title'] for card in data if 'tags' not in card] + print(f'Warning: the following cards do not have tags: {cards_without_tags}') + raise # sort keys in the cards by reverse key order - data['cards'] = [{k: v for k, v in sorted(card.items(), reverse=True)} for card in data['cards']] + data = [{k: v for k, v in sorted(card.items(), reverse=True)} for card in data] # save data back to the file with open(file, 'w') as f: - json.dump(data, f, indent=2, sort_keys=False, ensure_ascii=False) + yaml.dump(data, f, sort_keys=False, allow_unicode=True) f.write('\n') if __name__ == '__main__': - parser = ArgumentParser(description="Sort data.") + parser = ArgumentParser(description='Sort data.') parser.add_argument('-f', '--file', type=Path, required=True, help='Path to the file containing the data') args = parser.parse_args() diff --git a/run_on_code_changed.sh b/run_on_code_changed.sh index 1c589e9a..6180e82f 100644 --- a/run_on_code_changed.sh +++ b/run_on_code_changed.sh @@ -2,8 +2,8 @@ FILES=$(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\\ |g') [ -z "$FILES" ] && exit 0 -# Prettify all selected files -echo "$FILES" | xargs npx prettier --ignore-unknown --write +# Prettify all selected files unless they are json files +echo "$FILES" | grep -v '\.json$' | xargs npx prettier --ignore-unknown --write # Add back the modified/prettified files to staging echo "$FILES" | xargs git add diff --git a/run_on_data_changed.sh b/run_on_data_changed.sh index d9022c99..53e91e73 100644 --- a/run_on_data_changed.sh +++ b/run_on_data_changed.sh @@ -1,6 +1,6 @@ #!/bin/bash -# find all staged json files inside assets/data/ and its subdirectories -files=$(git diff --name-only --cached | grep -E 'assets/data/.*\.json$') +# find all staged yml files inside _data/ and its subdirectories +files=$(git diff --name-only --cached | grep -E '_data/.*\.yml$') if [ -n "$files" ]; then # loop through each file and run sort_data.py