Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: CI

on:
push:
branches: [main, master, portfolio-audit]
pull_request:

jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: python -m unittest discover -p 'test_*.py' -v
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
__pycache__/
*.py[cod]
.pytest_cache/
125 changes: 54 additions & 71 deletions DebugColab.ipynb
Original file line number Diff line number Diff line change
@@ -1,73 +1,56 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/vincimech010233/python/blob/master/DebugColab.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "ASpQPzMUDUdp"
},
"outputs": [],
"source": [
"!pip install ipdb"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"background_save": true
},
"id": "hnrdydOcDWLj"
},
"outputs": [],
"source": [
"# Importa ipdb\n",
"import ipdb\n",
"\n",
"# Definir una función con código para depurar\n",
"def some_function():\n",
" a = 5\n",
" b = 10\n",
" result = a + b\n",
"\n",
" # Colocar un punto de interrupción usando ipdb\n",
" ipdb.set_trace()\n",
"\n",
" c = result * 2\n",
" return c\n",
"\n",
"# Llamar a la función que deseas depurar\n",
"result = some_function()\n",
"\n",
"# Cuando llegues al punto de interrupción, puedes usar comandos como 'n' para avanzar a la siguiente línea, 'c' para continuar la ejecución, 'p variable' para imprimir el valor de una variable, etc.\n"
]
}
],
"metadata": {
"colab": {
"provenance": [],
"authorship_tag": "ABX9TyMmfQ+77ZubyLMijc3J+Uaj",
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/vincimech010233/python/blob/master/DebugColab.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
"nbformat": 4,
"nbformat_minor": 0
}
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"!pip install ipdb"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Importa ipdb\n",
"import ipdb\n",
"\n",
"# Definir una función con código para depurar\n",
"def some_function():\n",
" a = 5\n",
" b = 10\n",
" result = a + b\n",
"\n",
" # Colocar un punto de interrupción usando ipdb\n",
" ipdb.set_trace()\n",
"\n",
" c = result * 2\n",
" return c\n",
"\n",
"# Llamar a la función que deseas depurar\n",
"result = some_function()\n",
"\n",
"# Cuando llegues al punto de interrupción, puedes usar comandos como 'n' para avanzar a la siguiente línea, 'c' para continuar la ejecución, 'p variable' para imprimir el valor de una variable, etc.\n"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
196 changes: 89 additions & 107 deletions EjemploMineríaPython.ipynb
Original file line number Diff line number Diff line change
@@ -1,111 +1,93 @@
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"gpuType": "T4",
"authorship_tag": "ABX9TyP/h8RYin0S7z74YdHUIae1",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/vincimech010233/python/blob/master/EjemploMiner%C3%ADaPython.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
"cells": [
{
"cell_type": "code",
"source": [
"import hashlib\n",
"import time\n",
"import psutil\n",
"\n",
"# Simular un bloque de datos\n",
"bloque = \"Bloque de ejemplo\"\n",
"dificultad = 1 # Número de ceros iniciales en el hash\n",
"\n",
"def mineria(bloque, dificultad):\n",
" nonce = 0\n",
" intentos = 0\n",
" start_time = time.time() # Iniciar el temporizador\n",
"\n",
" memoria_inicial = psutil.virtual_memory().used\n",
" memoria_total = psutil.virtual_memory().total\n",
" memoria_max = memoria_inicial\n",
"\n",
" while True:\n",
" # Concatenar el bloque de datos con el nonce y obtener el hash\n",
" texto = bloque + str(nonce)\n",
" hash_resultado = hashlib.sha256(texto.encode()).hexdigest()\n",
"\n",
" # Contar intento y medir recursos\n",
" intentos += 1\n",
" memoria_actual = psutil.virtual_memory().used\n",
"\n",
" # Actualizar máximo si es necesario\n",
" memoria_max = max(memoria_max, memoria_actual)\n",
"\n",
" # Verificar si el hash cumple con la dificultad\n",
" if hash_resultado.startswith('0' * dificultad):\n",
" tiempo_total = time.time() - start_time # Calcular el tiempo total\n",
" return nonce, hash_resultado, tiempo_total, intentos, memoria_max, memoria_total\n",
"\n",
" nonce += 1\n",
"\n",
"# Llamar a la función de minería\n",
"nonce, hash_resultado, tiempo_total, intentos, memoria_max, memoria_total = mineria(bloque, dificultad)\n",
"\n",
"print(f\"Nonce encontrado: {nonce}\")\n",
"print(f\"Hash resultante: {hash_resultado}\")\n",
"print(f\"Tiempo total utilizado: {tiempo_total} segundos\")\n",
"print(f\"Número total de intentos: {intentos}\")\n",
"print(f\"Uso máximo de memoria durante la minería: {memoria_max} bytes de un total de {memoria_total} bytes\")\n"
],
"metadata": {
"outputId": "2a1de2b3-992d-494d-d5ca-0bbf59408e0e"
},
"execution_count": null,
"outputs": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/vincimech010233/python/blob/master/EjemploMiner%C3%ADaPython.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"source": [
"import hashlib\n",
"import time\n",
"import psutil\n",
"\n",
"# Simular un bloque de datos\n",
"bloque = \"Bloque de ejemplo\"\n",
"dificultad = 1 # Número de ceros iniciales en el hash\n",
"\n",
"def mineria(bloque, dificultad):\n",
" nonce = 0\n",
" intentos = 0\n",
" start_time = time.time() # Iniciar el temporizador\n",
"\n",
" memoria_inicial = psutil.virtual_memory().used\n",
" memoria_total = psutil.virtual_memory().total\n",
" memoria_max = memoria_inicial\n",
"\n",
" while True:\n",
" # Concatenar el bloque de datos con el nonce y obtener el hash\n",
" texto = bloque + str(nonce)\n",
" hash_resultado = hashlib.sha256(texto.encode()).hexdigest()\n",
"\n",
" # Contar intento y medir recursos\n",
" intentos += 1\n",
" memoria_actual = psutil.virtual_memory().used\n",
"\n",
" # Actualizar máximo si es necesario\n",
" memoria_max = max(memoria_max, memoria_actual)\n",
"\n",
" # Verificar si el hash cumple con la dificultad\n",
" if hash_resultado.startswith('0' * dificultad):\n",
" tiempo_total = time.time() - start_time # Calcular el tiempo total\n",
" return nonce, hash_resultado, tiempo_total, intentos, memoria_max, memoria_total\n",
"\n",
" nonce += 1\n",
"\n",
"# Llamar a la función de minería\n",
"nonce, hash_resultado, tiempo_total, intentos, memoria_max, memoria_total = mineria(bloque, dificultad)\n",
"\n",
"print(f\"Nonce encontrado: {nonce}\")\n",
"print(f\"Hash resultante: {hash_resultado}\")\n",
"print(f\"Tiempo total utilizado: {tiempo_total} segundos\")\n",
"print(f\"Número total de intentos: {intentos}\")\n",
"print(f\"Uso máximo de memoria durante la minería: {memoria_max} bytes de un total de {memoria_total} bytes\")\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "tmCU1Qph0Z3t",
"outputId": "2a1de2b3-992d-494d-d5ca-0bbf59408e0e"
},
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Nonce encontrado: 2\n",
"Hash resultante: 0e021e65986ee28306c6edd6045766e66bf7b6d5b13146101ee99f4a130011d2\n",
"Tiempo total utilizado: 0.0009980201721191406 segundos\n",
"Número total de intentos: 3\n",
"Uso máximo de memoria durante la minería: 823279616 bytes de un total de 13613268992 bytes\n"
]
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "AFTd45eK8djz"
},
"execution_count": null,
"outputs": []
"output_type": "stream",
"name": "stdout",
"text": [
"Nonce encontrado: 2\n",
"Hash resultante: 0e021e65986ee28306c6edd6045766e66bf7b6d5b13146101ee99f4a130011d2\n",
"Tiempo total utilizado: 0.0009980201721191406 segundos\n",
"Número total de intentos: 3\n",
"Uso máximo de memoria durante la minería: 823279616 bytes de un total de 13613268992 bytes\n"
]
}
]
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {},
"execution_count": null,
"outputs": []
}
]
}
Loading
Loading