Mostrar los tags: OR

Mostrando del 31 al 40 de 870 coincidencias
Se ha buscado por el tag: OR
Imágen de perfil

GOOGLE COLAB


Python

Actualizado el 19 de Julio del 2023 por Hilario (144 códigos) (Publicado el 13 de Julio del 2023)
2.136 visualizaciones desde el 13 de Julio del 2023
********************************************************************
Ad augusta per angusta
**********************************************************************

Hilario Iglesias Martínez
/////////////////////////
Programa a ejecutar con GOOGLE COLAB.
************************************
Google Colab es un sistema de inteligencia artificial creado por Google. Se trata de un sistema que permite, aparte de otras cosas, el funcionamiento como IDE de forma que puedes interactuar en un entorno de programación Python, y su ejecución y prueba en linea.

Para poder utilizarlo, deberás darte de alta, con una referencia de correo en gmail.
Es indudable su potencia en los entornos de Inteligencia artificial. Tiene grandes prestaciones gráficas al utilizar los módulos TensorFlow -de google-y la biblioteca escrita en Python -en código abierto- llamada Keras, capaz de ejecutarse sobre TensorFlow.
**********************************************************************************
La red de ejmplo que planteamos aquí, es un sistema neuronal en modo Sequential, que indica que es un tipo de modelo de redes neuronales artificiales en el cual las capas se apilan de manera secuencial, una encima de la otra. Es el enfoque más básico y comúnmente utilizado en el aprendizaje profundo (deep learning) con la biblioteca de Python llamada Keras.

La creación de un modelo Sequential en Keras sigue los siguientes pasos generales:
con la siguiente linea de código.
from tensorflow.keras.models import Sequential


En Keras, el modo Sequential permite construir modelos de redes neuronales de forma secuencial, donde cada capa se agrega secuencialmente una tras otra. Cada capa se conecta a la siguiente en el flujo de información, pasando la salida de una capa como entrada a la siguiente.



***************************************************************************************************

El programa que pongo a continuación está realizado en en Python3, en un entorno Linux, Ubuntu 20.04.6 LTS. Se supone que por defecto ya tienes instalada esta versión de python.
----------------------------------------------------------------------------------
Deberás tener cargado el ejecutor de carga pip. La forma de instalarlo es la siguiente:
sudo apt update
sudo apt install python3-pip

----------------------------------------------------------------------------------
Una vez que lo tengas instalado ya podrás instalar también los modulos necesarios para Google Colab, de la siguiente forma:

pip install tensorflow
pip install keras

Dado que en el encabezado del programa nos encontramos estos módulos:

import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense

También deberemos comprobar que están cargados.
*************************************************************************
BASICAMENTE ESTA ES LA EXPLICACIÓN DEL PROGRAMA.
****************************************************
Este programa utiliza TensorFlow y Keras para crear y entrenar un modelo de red neuronal que predice la conversión de temperatura de Celsius a Fahrenheit. Aquí tienes una explicación paso a paso del programa:

Importa las bibliotecas necesarias:

numpy para manejar matrices y operaciones numéricas.
matplotlib.pyplot para visualizar los resultados.
Sequential de keras.models para crear un modelo de red neuronal secuencial.
Dense de keras.layers para agregar capas densamente conectadas a la red.
Crea los datos de entrada:

Define dos arrays de NumPy: Celsius y Fahrenheit, que contienen los pares de valores de temperatura para el entrenamiento del modelo.
Crea la red neuronal:

Inicializa un modelo secuencial llamado model.
Agrega tres capas densamente conectadas a la red:
La primera capa tiene 20 neuronas, utiliza la función de activación ReLU y espera un solo valor de entrada (input_dim=1).
La segunda capa tiene 10 neuronas y también utiliza la función de activación ReLU.
La tercera capa tiene una sola neurona y utiliza la función de activación lineal.
Compila el modelo:

Utiliza el optimizador Adam y la función de pérdida de error cuadrático medio (mean_squared_error).
Entrena el modelo:

Utiliza el método fit para entrenar el modelo con los datos de entrada Celsius y Fahrenheit.
Se especifican 20,000 rondas o vueltas de de entrenamiento -- con este dato se puede jugar empezando por valores más pequeños y viendo como va aumentando el aprendizaje-- y se establece verbose=0 para no mostrar la salida de entrenamiento durante el proceso.
Evalúa el modelo:

Utiliza el método evaluate para calcular la pérdida del modelo en los datos de entrada Celsius y Fahrenheit.
Imprime la pérdida del modelo.

Visualiza los resultados:

Grafica los datos de entrenamiento (Celsius y Fahrenheit) como puntos ('o').
Grafica las predicciones del modelo utilizando model.predict(Celsius) y una línea ('-').
Agrega etiquetas de los ejes y una leyenda para identificar los datos de entrenamiento y las predicciones del modelo.
Realiza una predicción:

Utiliza el modelo entrenado para predecir la temperatura en Fahrenheit para un valor de Celsius de 80.
Imprime la predicción resultante.
En resumen, este programa entrena un modelo de red neuronal para predecir la conversión de temperatura de Celsius a Fahrenheit y muestra los resultados a través de una visualización gráfica.

****************************************************************************
Si quieres puedes experimentar con el programa.
Busca en google -google Colab-
Informate del mismo, estudialo un poco, quizás lo encuentres apasionante.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
EXPLICACIÓN PORMENORIZADA DE LAS LINEAS DE CÓDIGO
***********************************************************************************************************

"""
Importamos los módulos necesarios.
---------------------------------
import numpy as np ** Este Modulo permite trabajar con Arrays
import matplotlib.pyplot as plt **Este módulo permite trabajar con graficos
from keras.models import Sequential **Nos permite trabajar con redes secuenciales.
from keras.layers import Dense **"Dense" es un término utilizado para
referirse a una capa densamente conectada
o completamente conectada en una red neuronal.
"""

import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense


"""
Creamos la entrada de datos por medio de los arrays.
Les llamamos a las entradas Celsius y ahrenheit.
"""

Celsius = np.array([0, 10, 20, 30, 40, 50, 60, 70, 80, 90])
Fahrenheit = np.array([32, 50, 68, 86, 104, 122, 140, 158, 176, 194])

"""
Creamos la red neural.
---------------------
El modelo será de tipo secuencial, llamando a esa función.
en el módulo keras.models.

Dense(20): Esto indica que queremos agregar una capa densa con 20 neuronas.
Cada neurona en esta capa estará conectada a todas las
neuronas de la capa anterior y de la capa siguiente.

input_dim=1: Este argumento especifica la dimensión de la entrada a la capa.
En este caso, se indica que la capa recibirá una entrada unidimensional.
Esto significa que se espera una entrada de un solo valor.

activation='relu': Aquí se especifica la función de activación
que se utilizará en cada neurona de la capa. En este caso, se utiliza
la función de activación "ReLU" (Rectified Linear Unit).
La función ReLU es una función no lineal que se utiliza
comúnmente en redes neuronales y es conocida
por su capacidad para introducir no linearidad en el modelo.
*****************************************************************
ReLU(x) = max(0, x)
La función de activación ReLU (Rectified Linear Unit)
es una función no lineal ampliamente utilizada en
redes neuronales. La función ReLU se define de la siguiente manera:
para cualquier valor de entrada x, la función ReLU
devuelve 0 si x es negativo y x mismo si x es no negativo.

La función ReLU es popular en el campo del aprendizaje
profundo debido a sus propiedades deseables.
Algunas de las razones por las que se utiliza la función ReLU son:

No linealidad: La función ReLU introduce no linealidad
en la red neuronal, lo que permite que el modelo aprenda
relaciones no lineales entre las características de entrada.
Esto es esencial para capturar patrones complejos en los datos.

Eficiencia computacional: La función ReLU es computacionalmente
eficiente de calcular en comparación con funciones más complejas,
como la función sigmoide o la tangente hiperbólica.
Esto puede ser beneficioso, especialmente en redes neuronales profundas con muchas capas.

Evita el desvanecimiento del gradiente: En el entrenamiento de redes neuronales,
el desvanecimiento del gradiente puede ser un problema cuando las
derivadas de las funciones de activación son muy pequeñas.
La función ReLU evita este problema ya que tiene una derivada constante de 1 para x > 0, lo
que permite que los gradientes fluyan sin decaer rápidamente.

Sin embargo, una limitación de la función ReLU es que
no es diferenciable en x = 0.
Esto puede hacer que el entrenamiento sea más difícil
en algunos casos, especialmente cuando se utilizan
técnicas de optimización basadas en gradientes.
Para abordar este problema, se pueden utilizar variantes
suaves de la función ReLU, como la función Leaky ReLU o la función ReLU paramétrica,
que permiten cierto flujo de gradiente incluso para valores negativos de x.
****************************************************************
model.add(Dense(1, activation='linear'))

En una red neuronal, la función de activación 'linear'
(lineal) significa que no se aplica ninguna función de activación no lineal a
la salida de una capa específica.

Cuando se utiliza una función de activación lineal,
la salida de una neurona o capa simplemente se
calcula como una combinación lineal de las
entradas sin ninguna transformación no lineal
aplicada. Esto significa que la salida es
proporcionalmente igual a la suma ponderada de las entradas.

"""

model = Sequential()
model.add(Dense(20, input_dim=1, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='linear'))


# Compilación del modelo
"""
En la compilación de un modelo de red neuronal, se especifican tres aspectos clave:

Función de pérdida (loss function): La función de pérdida define cómo se calcula
la discrepancia entre las salidas predichas por el modelo y las salidas reales o
etiquetas del conjunto de datos. El objetivo del entrenamiento es minimizar
esta función de pérdida. La elección de la función de pérdida depende del
tipo de problema que se esté abordando, como regresión,
clasificación binaria o clasificación multiclase.

Optimizador: El optimizador determina cómo se ajustan
los pesos y los sesgos de la red neuronal durante el
entrenamiento para minimizar la función de pérdida.
El optimizador utiliza algoritmos como el descenso de
gradiente estocástico (SGD) o algoritmos más avanzados
como Adam o RMSprop. Cada optimizador tiene sus propias
configuraciones y parámetros adicionales que se pueden
ajustar según sea necesario.

Métricas:
Las métricas se utilizan para evaluar el
rendimiento del modelo durante el entrenamiento
y la evaluación. Estas métricas proporcionan
información adicional sobre la precisión,
el error o cualquier otra medida relevante.
Algunas métricas comunes incluyen la precisión (accuracy)
para problemas de clasificación y el error cuadrático
medio (mean squared error) para problemas de regresión.

Después de configurar estos aspectos,
el modelo está listo para ser entrenado utilizando
los datos de entrenamiento proporcionados. Durante el
entrenamiento, el modelo utilizará la función de
pérdida y el optimizador para ajustar los pesos y
los sesgos de las capas de la red neuronal con el
objetivo de minimizar la pérdida y mejorar el
rendimiento en función de las métricas establecidas.


"""
model.compile(optimizer='adam', loss='mean_squared_error')

#Entrenamiento del modelo
"""[
El "entrenamiento del modelo" en una red neuronal se refiere
al proceso de ajustar los pesos y los sesgos de la red neuronal
utilizando un conjunto de datos de entrenamiento con el objetivo
de aprender patrones y relaciones en
los datos. Durante el entrenamiento, el modelo se expone
repetidamente a los ejemplos de entrenamiento,
calcula las salidas correspondientes y actualiza los parámetros
internos en función de la diferencia entre las salidas predichas y las salidas reales.

El entrenamiento de un modelo de red neuronal implica los siguientes pasos generales:

Inicialización de pesos: Los pesos y los sesgos de la red neuronal
se inicializan de forma aleatoria o mediante algún enfoque
específico, como la inicialización de Xavier o He.

Paso hacia adelante (Forward pass): Los datos de entrenamiento se propagan
a través de la red neuronal en una dirección, desde la capa de entrada
hasta la capa de salida. Las salidas se calculan mediante una
combinación lineal de los pesos y los sesgos, seguidos de
la aplicación de funciones de activación no lineales en cada capa.

Cálculo de la función de pérdida: Se compara la salida predicha
por el modelo con la salida real correspondiente del conjunto de
datos de entrenamiento utilizando una función de pérdida.
La función de pérdida mide qué tan bien se está desempeñando
el modelo en la tarea específica y proporciona una medida de
la discrepancia entre las salidas predichas y las salidas reales.

Retropropagación (Backpropagation):
El algoritmo de retropropagación se utiliza para calcular
las contribuciones relativas de cada peso y sesgo en la
función de pérdida. Se propaga el gradiente del error
hacia atrás a través de la red neuronal,
calculando las derivadas parciales de la función de
pérdida con respecto a cada peso y sesgo.
Estas derivadas se utilizan para actualizar
los pesos y sesgos mediante un proceso llamado optimización.

Optimización de los parámetros: Los pesos
y sesgos se actualizan utilizando un algoritmo
de optimización, como el descenso de gradiente
estocástico (SGD), Adam o RMSprop.
Estos algoritmos ajustan los parámetros de la
red neuronal en la dirección que reduce
la función de pérdida, utilizando la información
del gradiente calculada durante la retropropagación.

Repetición: Los pasos 2-5 se repiten para varios
ejemplos de entrenamiento hasta que se alcance un
criterio de detención, como un número máximo de iteraciones
(épocas) o una mejora aceptable en el rendimiento del modelo.

El proceso de entrenamiento busca encontrar
los valores óptimos para los pesos y sesgos de la
red neuronal que minimicen la función de pérdida, y
permitan que el modelo haga predicciones precisas en
datos no vistos. Una vez que el modelo está entrenado,
se puede utilizar para hacer predicciones en nuevos
ejemplos o para realizar otras tareas relacionadas con la inferencia.


"""
model.fit(Celsius, Fahrenheit, epochs=20000, verbose=0)

# Evaluación de el modelo
loss = model.evaluate(Celsius, Fahrenheit)
print('Loss:', loss)

# TRAZAR RESULTADOS.
"""
"Trazar los resultados" en una red neuronal se refiere a visualizar
o representar gráficamente los resultados obtenidos durante el entrenamiento o
la evaluación del modelo. La visualización de los resultados puede proporcionar
información importante sobre el rendimiento y el comportamiento del modelo,
así como ayudar a identificar posibles problemas o mejoras.

Aquí hay algunos tipos comunes de trazado de resultados en una red neuronal:

Gráficas de pérdida (Loss plots): Se representan gráficamente las curvas
de pérdida a lo largo de las épocas durante el entrenamiento. Esto muestra
cómo disminuye la pérdida a medida que el modelo se entrena y proporciona
información sobre la convergencia y la estabilidad del modelo.

Gráficas de métricas de rendimiento: Si se han definido métricas
de rendimiento adicionales, como la precisión o el error, se
pueden trazar para evaluar el rendimiento del modelo durante
el entrenamiento o la evaluación. Esto ayuda a comprender
cómo el rendimiento del modelo evoluciona a medida que se realiza el entrenamiento.

Visualización de predicciones: Se pueden trazar las predicciones
del modelo junto con las etiquetas reales para un conjunto de
datos de evaluación o pruebas. Esto permite comparar
visualmente las predicciones del modelo con los valores
reales y evaluar qué tan cerca están.

Mapas de calor (Heatmaps): En el caso de problemas de clasificación,
especialmente en clasificación de imágenes, se pueden utilizar mapas
de calor para visualizar las regiones de la imagen que el modelo
considera más importantes para tomar una decisión de clasificación.
Estos mapas de calor resaltan las áreas de la imagen que
tienen un mayor impacto en las predicciones del modelo.

Representaciones de características (Feature representations):
En redes neuronales convolucionales, se pueden trazar las
representaciones aprendidas en diferentes capas de la red
para visualizar cómo las características se transforman a
medida que se profundiza en la red. Esto puede ayudar a
entender qué tipo de características o patrones la red
está aprendiendo a reconocer.

La visualización de los resultados en una red
neuronal puede proporcionar una comprensión más
profunda del rendimiento del modelo y ayudar en el
análisis y la mejora del mismo. Además, los gráficos y
visualizaciones pueden ser útiles para comunicar los
resultados a otras personas de manera más intuitiva.

"""

plt.plot(Celsius, Fahrenheit, 'o')
plt.plot(Celsius, model.predict(Celsius), '-')
plt.xlabel('Celsius')
plt.ylabel('Fahrenheit')
plt.legend(['Training data', 'Linear regression'], loc='best')
plt.show()
celsius_value = 100
fahrenheit_prediction = model.predict(np.array([80]))
print('Prediccion para Hilario:', fahrenheit_prediction[0])

#Fórmula habitual de cálculo por un algoritmo con esta formula
#(80 °C × 9 / 5) + 32 = 176 °F






descarga
Imágen de perfil

Api Correo Argento Cotizar Envios


PHP

estrellaestrellaestrellaestrellaestrella(2)
Actualizado el 16 de Julio del 2023 por Augusto (9 códigos) (Publicado el 24 de Diciembre del 2021)
4.674 visualizaciones desde el 24 de Diciembre del 2021
Buenos dias, brindo acceso a la api creada y desarrollada por mi para realizar cotizaciones de envios con correo argentino con el paquete PAQ.AR. Debido a que correo argentino no tiene api propia fue necesario desarrollarla para un cliente.

La api devulve lo siguiente

{
"id_costo": "6",
"peso": "2",
"zona": "2",
"precio": "496"
}

En la base de datos estan todas las zonas cargadas, junto con todas las ciudades del pais, son 4 zonas y detalladas por provincia. Estan los costos de envio tanto a domicilio como retiro en sucursal.

Se accede mediante GET
api_correo_argentino?id_provincia_origen=1&codigo_postal=2000&peso=2&tipo=D&password=9wcUFdyQhw

y requiere las variables origen,destino,peso y un password que proporcionare a cada cliente.
Les dejo mi correo por si necesitan acceso a la api. El valor es anual.

Mi correo [email protected]
http://webdb.com.ar
Imágen de perfil

WHOIS


C/Visual C

Publicado el 23 de Junio del 2023 por Hilario (144 códigos)
5.527 visualizaciones desde el 23 de Junio del 2023

////////////////////////////////////////////////////////

INIMICUM QUAMVIS HUMLEM DOCTI EST METUERE.

***********************************************
Hilario Iglesias Martínez.
**************************************************
Realizado en una plataforma linux 20.04.6 LTS.
Con ANSI C.
Ejecutado en Consola Linux.

Editado.
IDE sublime txt.

Este ejercicio, programa en C, implementa una consulta WHOIS enviando una solicitud al servidor WHOIS de IANA (Internet Assigned Numbers Authority). El usuario debe ingresar el dominio que desea consultar, y el programa se conectará al servidor WHOIS y enviará la consulta correspondiente. Luego, mostrará la respuesta recibida del servidor WHOIS a través de la consola.

Es importante tener en cuenta que algunos servidores WHOIS pueden bloquear o limitar las solicitudes, por lo que es posible que no siempre se obtenga una respuesta para todos los dominios.
El ejercicio está hecho para poder probar con el en todas las opciones o cambios que se le quieran realizar.

En las diferentes distros de linux se puede ejecutar directamente el comando whois. En mi caso utilizo una plataforma Ubuntu 20.04.6 LTS, y una de las formas de instalarlo sería con los siguientes comandos según su orden.
sudo apt-get update
sudo apt-get install whois

Durante la instalación, se te solicitará ingresar tu contraseña de administrador (root). Escribe tu contraseña y presiona Enter. Ten en cuenta que al escribir la contraseña, no se mostrarán caracteres ni asteriscos en la terminal, pero sigue escribiendo y presiona Enter.

Después de ingresar la contraseña, el sistema descargará e instalará el paquete whois y sus dependencias.

**********************************************************************************************
COMPILAR Y EJECUTAR EL PROGRAMA.
-----------------------------------------------------------------------------------
Compilar.
gcc -Werror whois.c -o whois
Ejecutar.
./whois

************************************************************************************
Salida del programa con el comando Ctrl C
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sin imagen de perfil

Aplicación de Bienestar y Autocuidado


Java

Publicado el 5 de Junio del 2023 por Kevin (4 códigos)
635 visualizaciones desde el 5 de Junio del 2023
La aplicación de Bienestar y Autocuidado es una herramienta completa diseñada para ayudar a las personas a cuidar su bienestar físico y mental. Con esta aplicación, los usuarios pueden acceder a una variedad de funciones y características que les permiten mejorar su calidad de vida y mantener un equilibrio saludable.

La aplicación ofrece un seguimiento de actividades físicas, lo que permite a los usuarios registrar y monitorear sus entrenamientos, ya sea correr, caminar, hacer yoga u otras actividades. También incluye una biblioteca de meditaciones guiadas, con opciones para diferentes propósitos, como relajación, concentración y reducción del estrés. Los usuarios pueden elegir entre una variedad de meditaciones y establecer recordatorios para practicarlas regularmente.

Además, la aplicación proporciona recordatorios para beber agua y realizar estiramientos, ayudando a los usuarios a mantenerse hidratados y evitar la rigidez muscular. También ofrece consejos de nutrición y sugerencias para llevar una alimentación saludable, lo que permite a los usuarios tomar decisiones informadas sobre su dieta.

Una función destacada de la aplicación es el diario personal, donde los usuarios pueden registrar sus pensamientos, emociones y experiencias diarias. Esto les brinda la oportunidad de reflexionar, expresarse y llevar un seguimiento de su bienestar mental. También pueden establecer metas personales y realizar un seguimiento de su progreso a lo largo del tiempo.

En resumen, la aplicación de Bienestar y Autocuidado es una herramienta completa que brinda a los usuarios la capacidad de cuidar su bienestar físico y mental de manera integral. Con características como el seguimiento de actividades físicas, meditaciones guiadas, recordatorios, consejos de nutrición y un diario personal, la aplicación fomenta el autocuidado y ayuda a los usuarios a llevar una vida equilibrada y saludable.
Imágen de perfil

Tiempo transcurrido entre dos fechas


FoxPro/Visual FoxPro

Actualizado el 9 de Mayo del 2023 por Eduardo Marquez (5 códigos) (Publicado el 3 de Marzo del 2023)
2.605 visualizaciones desde el 3 de Marzo del 2023
Dada dos fechas diferentes; en formato DateTime, esta función devuelve el tiempo transcurrido entre ambas en una sola cadena de texto. Indicando, años, meses, semanas, días, horas, minutos y segundos.
Observa que se toma en cuenta el singular del plural en las cantidades mayores a 1.

Saludos y comenten!
sin imagen de perfil

Generar password seguro


JavaScript

Publicado el 2 de Enero del 2023 por Jefferson (11 códigos)
695 visualizaciones desde el 2 de Enero del 2023

SCRIPT PARA GENERAR UN PASSWORD SEGURO




Incluye tres niveles
1) Debil
2) Fuerte
3) Muy fuerte

Todas las password generadas incluyen al menos
1 Numero
1 Mayuscula
1 Minuscula
1 Caracter especial
8 lenght


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
      crossorigin="anonymous"
    />
    <title>Generar Pass</title>
  </head>
 
  <body>
    <section class="container mt-3">
      <h1 class="text-center">
        Genera tu password
        <h5 class="text-center">
          Incluimos Mayusculas, Minusculas, Numeros y Caracteres especiales
        </h5>
      </h1>
      <hr />
      <div class="row justify-content-around mt-3">
        <div class="col-4">
          <h4 class="text-center my-2 mb-4">Escoje cual contraseña</h4>
          <div class="form-check form-check-inline">
            <input
              class="form-check-input"
              type="radio"
              name="sel"
              id="i1"
              value="1"
              role="button"
            />
            <label class="form-check-label" for="i1" role="button">Debil</label>
          </div>
          <div class="vr"></div>
          <div class="form-check form-check-inline ms-2">
            <input
              class="form-check-input"
              type="radio"
              name="sel"
              id="i2"
              value="2"
              role="button"
            />
            <label class="form-check-label" for="i2" role="button"
              >Fuerte</label
            >
          </div>
          <div class="vr"></div>
          <div class="form-check form-check-inline ms-2">
            <input
              class="form-check-input"
              type="radio"
              name="sel"
              id="i3"
              value="3"
              role="button"
            />
            <label class="form-check-label" for="i3" role="button"
              >Muy Fuerte</label
            >
          </div>
          <div class="row justify-content-center mt-4">
            <button class="btn btn-primary">Generar</button>
          </div>
        </div>
        <div class="vr bg-light border-end border-secondary"></div>
        <div id="div_res" class="col-4 d-none">
          <h2 id="dev" class="text-center border rounded p-3 shadow"></h2>
          <div class="row mt-3">
            <div class="col-4">
              <span id="cop" class="btn btn-outline-dark">copy</span>
            </div>
            <div class="col-4">
              <a
                href="https://ciberprotector.com/comprobador-de-contrase%C3%B1as/"
                target="_blank"
                >Ciberprotector</a
              >
            </div>
            <div class="col-4">
              <a
                href="https://delinea.com/resources/password-strength-checker"
                target="_blank"
                >Delinea</a
              >
            </div>
          </div>
        </div>
      </div>
    </section>
 
    <script>
      document
        .querySelector(".btn-primary")
        .addEventListener("click", function () {
          let a;
          div_res.classList.add("d-none");
          dev.classList.remove(
            "bg-danger",
            "bg-secondary",
            "bg-warning",
            "text-light",
            "text-warning",
            "text-success"
          );
          document.querySelectorAll('[name="sel"]').forEach(function (e) {
            if (e.checked) a = e.value;
          });
          if (a != undefined) {
            1 == a
              ? dev.classList.add("bg-danger", "text-light")
              : 2 == a
              ? dev.classList.add("bg-secondary", "text-warning")
              : dev.classList.add("bg-warning", "text-success");
            div_res.classList.remove("d-none");
            dev.innerText = generar_pass(a);
          }
        });
      const copyContent = async () => {
        let text = document.getElementById("dev").innerText;
        try {
          await navigator.clipboard.writeText(text);
          console.log("Content copied to clipboard");
        } catch (err) {
          console.error("Failed to copy: ", err);
        }
      };
      cop.addEventListener("click", copyContent);
 
 
      /* CODIGO GENERAR PASS */
      const generar_pass = (t) => {
          let e;
          if (1 == t)
            for (let a = 0; (e = aleatorio(8)), check_pass(e) != t; a++);
          else if (2 == t)
            for (let a = 0; (e = aleatorio(12)), check_pass(e) != t; a++);
          else for (let a = 0; (e = aleatorio(14)), check_pass(e) != t; a++);
          return e;
        },
        aleatorio = (t) => {
          let e,
            a =
              "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789^!$%&|[](){}:;.*+-#@<>~";
          const r = () => (
            (e = (() => {
              let e = "";
              for (var r = 0, l = a.length; r < t; ++r)
                e += a.charAt(Math.floor(Math.random() * l));
              return e;
            })()),
            !!(
              e.match(/\W|_/g) &&
              e.match(/(\d+)/g) &&
              e.match(/[a-z]/g) &&
              e.match(/[A-Z]/g)
            ) && e
          );
          for (let t = 0; !r(); t++);
          return e;
        },
        check_pass = (t) => {
          let e,
            a = [
              t.match(/\W|_/g).length,
              t.match(/(\d+)/g).length,
              t.match(/[a-z]/g).length,
              t.match(/[A-Z]/g).length,
            ];
          for (let t = 0; t < a.length; t++) {
            let r = a[t];
            if (((e = ""), 1 == r)) {
              e = 1;
              break;
            }
            if (2 == r) {
              e = 2;
              break;
            }
            e = 3;
          }
          return e;
        };
    </script>
  </body>
</html>
sin imagen de perfil

Inicio Sesion Robusto Implementando doble factor


PHP

Publicado el 29 de Diciembre del 2022 por Jefferson (11 códigos)
3.113 visualizaciones desde el 29 de Diciembre del 2022

Implementa un sistema mas robusto para el inicio de sesión



in


1) Registro de usuario verificando el email. Encriptando la url de tal forma que sea ilegible por algún pirata.

2) Al registrase le enviaremos al correo la imagen QR para que pueda ser escaneada por su smartphone / teléfono inteligente y agregar a la app de AUTENTIFICACION DOBLE FACTOR que el usuario escoja de la tienda STORE.

3) Libertad para que el usuario cree su propia pregunta de seguridad y la respuesta. Solo el usuario podrá formular su pregunta secreta escudriñando en sus recuerdos y que solo él sepa la respuesta.

4) Recuperación del password por olvido en el mismo sistema, dado que al escribir el email le devolvemos la pregunta de seguridad.

5) Recuperación por si acaso cambia su smartphone / teléfono inteligente y pierde la app móvil de AUTENTIFICACIÓN DOBLE FACTOR, enviándole a su correo la nueva imagen QR para el nuevo registro.

6) El usuario admin cuya password es admin, tendrá libertad de permitir o rechazar al usuario recién registrado.

7) El sistema funciona con cualquier app de AUTENTIFICACIÓN DOBLE FACTOR disponibles en la STORE. (No lo probé con Iphone).


allsmall
Imágen de perfil

FTP.


C/Visual C

Publicado el 28 de Diciembre del 2022 por Hilario (144 códigos)
798 visualizaciones desde el 28 de Diciembre del 2022
-------------------------------------------------
De gustibus et colon bus non est disputandum.
----------------------------------------------
Hilario Iglesias Martínez.
--------------------------------------------
Ejemplo sencillo y práctico, modificado en
parámetros. La idea de este ejercicio está tomada
del manual "Protocolos de Internet", de los autores
Angel López, y Alejandro Novo.
Se pueden modificar y variar los códigos de respuesta.
El ejercicio funciona como cliente FTP
pasándole como parámetros, el nombre de usuario,
el password, y el nombre del servidor ftp.
---------------------------------------------------

----------------------------------------
Compilación:
gcc -o ftp ftp.c
--------------------------------------
Ejecución:
./ftp [nombre usuario] [password] [Servidor ftp]
**************************************************