Skip to content

Instantly share code, notes, and snippets.

View rg3915's full-sized avatar
🏠
Working from home

Regis Santos rg3915

🏠
Working from home
View GitHub Profile
@rg3915
rg3915 / sorteio.py
Created February 6, 2025 04:13
Grupy-SP sorteio a partir da lista de participantes extraida do Meetup.com
import random
import csv
from pprint import pprint
def csv_to_list(filename: str) -> list:
'''
Lê um csv e retorna um OrderedDict.
'''
with open(filename) as csv_file:
@rg3915
rg3915 / load_recursive.js
Last active December 15, 2024 02:41
Recursive load data with AlpineJS
const getItems = () => ({
items: [],
offset: 0,
limit: 10,
loading: false,
hasMore: true,
init() {
this.loadItems();
},
@rg3915
rg3915 / create_api.py
Created November 24, 2024 05:57
Cria arquivos básicos para API em Django Ninja
"""
Este script gera uma estrutura básica de API Django com os seguintes arquivos:
1. urls.py: Arquivo principal de configuração de URLs do Django, que inclui:
- Rota para a aplicação core
- Rota para a API v1
- Rota para o painel admin
- Configuração de arquivos estáticos
2. api.py: Arquivo de configuração da API usando Django Ninja, que:
@rg3915
rg3915 / index.html
Created November 8, 2024 22:18
Form Wizard + AlpineJS + State Machine
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="https://picocss.com/favicon.svg" type="image/svg+xml">
<title>Form Wizard - Máquina de Estado</title>
@rg3915
rg3915 / README.md
Created November 7, 2024 02:02
template method x state machine - Claude

Vou explicar os dois padrões de design e suas principais diferenças.

O Template Method é um padrão de design comportamental que define o esqueleto de um algoritmo em uma classe base, mas permite que subclasses sobrescrevam etapas específicas sem alterar a estrutura geral. Veja um exemplo:

from abc import ABC, abstractmethod

class Bebida(ABC):
@rg3915
rg3915 / README.md
Created November 7, 2024 02:00
template method x state machine - chatGPT

O Template Method é um padrão de projeto comportamental que define o esqueleto de um algoritmo em um método de uma classe base, permitindo que as subclasses substituam etapas específicas do algoritmo sem alterar a estrutura geral. Em outras palavras, o Template Method fornece uma forma de definir o fluxo de execução de um processo, enquanto delega a implementação de detalhes específicos para as subclasses.

Exemplo de Template Method em Python

Imagine que você tenha um sistema para processar diferentes tipos de documentos, e cada documento pode ter etapas específicas de processamento, mas o fluxo geral é o mesmo:

from abc import ABC, abstractmethod

class ProcessadorDocumento(ABC):
    def processar(self):
@rg3915
rg3915 / README.md
Created October 27, 2024 04:14
Design Patterns in Python

Além do State (Máquina de Estado), existem vários outros design patterns conhecidos. Aqui estão alguns dos mais populares, com uma breve explicação e exemplos em Python:

1. Singleton

Garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela. Ideal para objetos que precisam ser únicos, como uma conexão de banco de dados.

Exemplo em Python:

class Singleton:
    _instance = None
@rg3915
rg3915 / README.md
Last active November 7, 2024 01:47
state machine

Uma máquina de estados é um modelo de design que organiza a lógica de um sistema em "estados" finitos, onde o sistema pode estar em apenas um estado por vez. Cada estado define o comportamento do sistema e permite transições para outros estados, geralmente com condições específicas. As máquinas de estado são usadas para representar fluxos e interações previsíveis, como etapas de um formulário, navegação em uma interface ou processos de login.

Exemplo com AlpineJS

Vamos criar um exemplo em que uma página exibe seções diferentes (<section>) com base em um estado. Vamos supor que temos três seções: Home, Sobre e Contato, e usaremos AlpineJS para controlar a exibição de cada seção com uma máquina de estado simples.

Estrutura HTML + AlpineJS

<div x-data="{ estado: 'home' }">
@rg3915
rg3915 / README.md
Last active October 13, 2024 06:14
SvelteKit + Landpage in PicoCSS + others pages in TailwindCSS

SvelteKit + Landpage in PicoCSS + others pages in TailwindCSS

Create

npm create svelte@latest landpage -y
cd landpage
@rg3915
rg3915 / README.md
Last active October 2, 2024 05:41
Svelte + PicoCSS + Photo Gallery + table