.

martes, 16 de abril de 2024

POO - Abstracción

El concepto de abstracción, los atributos representan aquellas características que permite diferenciar un elemento de los demás.

con la abstracción justamente se busca incluir aquellos atributos que sean relevantes dentro del contexto en el que estemos trabajando.

La abstracción es un pilar o característica de la programación orientada a objetos que va a permitir que los objetos puedan interactuar sin necesidad de conocer los detalles del funcionamiento.

La abstracción es el proceso de seleccionar los datos más importantes para un Objeto y omitir los insignificantes o con muy poco valor. 

La abstracción consiste en captar las características y funcionalidades que un objeto desempeña y estos son representados en clases por medio de atributos y métodos de dicha clase.

las características especificas de un objeto, aquellas que lo distinguen de los demás tipos de objetos y que logran definir límites conceptuales respecto a quien está haciendo dicha abstracción del objeto.

class Estudiante { protected $nombre; protected $email; public function getNombre() { return $nombre; } public function setNombre($nombre) { $this->nombre = $nombre; } public function getEmail() { return $email; } public function setEmail($email) { $this->email= $email; } }



https://platzi.com/tutoriales/2034-php-poo/11712-abstraccion-en-poo-2/

https://es.linkedin.com/learning/c-sharp-programacion-orientada-a-objetos/entender-el-concepto-de-abstraccion#:~:text=La%20abstracci%C3%B3n%20es%20un%20pilar,aspectos%20relevantes%20de%20las%20entidades

https://wolvesmobile.medium.com/la-abstracci%C3%B3n-en-poo-programaci%C3%B3n-orientada-a-objetos-15b82d3d7148

.

https://styde.net/abstraccion-programacion-orientada-a-objetos/

https://fredygeek.com/2020/09/06/que-es-la-abstraccion-poo




Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.




PHP - buscar en arreglo sin clave (key)

 $os = array("Mac", "NT", "Irix", "Linux");

if (in_array("Irix", $os)) {

    echo "Existe Irix";

}

if (in_array("mac", $os)) {

    echo "Existe mac";

}




Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



PHP - buscar en arreglo con clave(key)

 $array = array(0 => 'azul', 1 => 'rojo', 2 => 'verde', 3 => 'rojo');


$clave = array_search('verde', $array); // $clave = 2;

$clave = array_search('rojo', $array);  // $clave = 1;

PHP - Tabla Hash

Nada más sencillo que un array. A diferencia de otros lenguajes, php ofrece la posibilidad de indexar un array por números o por cadenas.






Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.





lista (vector)

 lista (vector)


PHP - función recursiva

Función reaccionando como bucle.

Si una función recursiva se llama a si misma una y otra vez, como un loop.


$n=5;

print_r(tail_factorial($n, $acumulador = 1));


function tail_factorial($n, $acumulador = 1) {

  if ($n == 1){

      return $n;

  } else {

      echo $n;

      return tail_factorial($n - 1, $acumulador * $n);

  }


}





Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



PHP - poner key desde un arreglo

 $keys = array(7, 5, 10, 2);

$a = array_fill_keys($keys, 'banana');

print_r($a);


$keys = array(7, 5, 10, 2);

$value = array("fresa", "uva", "limon", "tamarindo");

$b = array_fill_keys($keys, $value);

print_r($b);





Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



Recursividad

La recursividad es cuando una función se llama a sí misma y esta genera una nueva ejecución de la función. Esto sucede reiteradamente hasta que cumpla o no con cierta validación que nosotros declaremos para que deje de llamarse a sí misma en algún punto.

Normalmente, pensaríamos que este tipo de problemas lo podemos resolver con condicionales y/o bucles.

while(numerito < 5) {

console.log(numerito);

numerito++;

}


// Función recursiva:

function recursiva(numerito) { // Recive un número

console.log(numerito); // Imprimimos en consola el número

if (numerito < 5) { // Evalua si es menor a 5

// Llamamos nuevamente a nuestra función enviandole el número siguiente:

return recursiva(numerito + 1);

} else { // La función deja de llamarse a sí misma:

return 5;

}

}


https://platzi.com/clases/2419-javascript-poo-intermedio/39814-que-es-recursividad/




Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



lunes, 15 de abril de 2024

C++ - liberar memoria asignada

 #include <iostream>  

#include <cstdlib>  

using namespace std;  


int main()  

{  

    //int *r = new int[3]{1, 4, 2};

    int *r = new int;

   int i = 5;

   // r = &i;

    //int y = *r;

    

    // liberar memoria asignada arriba

    

    //free(r);//valid like 'void*' [-fpermissive]

    //delete r;//type argument given to 'delete', expected pointer

    //delete[] r;//type argument given to 'delete', expected pointer

    //-r();// 'y' cannot be used as a function


    //R/= con contenido

    // 0x7ffc2dd0d308

    // 0x7ffe7cc59408

    // 0x7fff69e790c8


     //R/= sin contenido

    // free(r); //0x55f4bb583eb0

    // delete r; //0x56415395beb0

    // delete[] r; //0x55dd62386eb0

    std::cout << r <<std::endl;

    return 0;  

}




Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



C++ - Limpiar array

#include <iostream>

using namespace std;


int main() {

    int* ip = new int[3]{1, 4, 2};

    ip = new int[0];

    std::cout << ip[5] <<std::endl;

}





Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



Sandbox

https://codesandbox.io/examples/package/enlighterjs 

https://codesandbox.io/p/devbox/enlighterjs-1xcj3

https://playcode.io/new


https://developer.box.com/

https://master--boxdev.netlify.app/https://master--boxdev.netlify.app/ 

https://www.codester.com/BoxDev




Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.




C++ Punteros

 Un puntero es una variable que almacena la dirección de memoria de un objeto.

  • para asignar nuevos objetos en el montón,
  • para pasar funciones a otras funciones
  • para iterar sobre elementos en matrices u otras estructuras de datos.

https://learn.microsoft.com/es-es/cpp/cpp/pointers-cpp?view=msvc-170


En esta sección

  • Punteros sin formato
  • Punteros const y volatile
  • operadores new y delete
  • Punteros inteligentes
  • Creación y uso de instancias de unique_ptr
  • Creación y uso de instancias de shared_ptr
  • Creación y uso de instancias de weak_ptr
  • Cómo: Crear y usar instancias de CComPtr y CComQIPtr


Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.




C++ Heap vs stack

Heap vs stack 
Montón vs pila

P: ¿Dónde se asignan los objetos en C#?

En C# hay dos lugares donde se puede almacenar un objeto: el montón y la pila.

Los objetos asignados en la pila están disponibles solo dentro de un marco de pila (ejecución de un método), mientras que se puede acceder a los objetos asignados en el montón desde cualquier lugar.


P: ¿Qué objetos se asignan en la pila y qué objetos se asignan en el montón?

Nota: nunca debe decir "los tipos de referencia se asignan en el montón mientras que los tipos de valor se asignan en la pila", este es un error que se repite comúnmente y activa una señal de alerta para un entrevistador experimentado.


Los tipos de referencia (clases, interfaces, delegados) siempre se asignan en el montón.


Cuando pasas un objeto de referencia como parámetro o lo asignas a una variable, de hecho estás pasando su referencia. La referencia (no el objeto referenciado) se puede asignar tanto en la pila como en el montón.


Al pasar una referencia a un objeto, estás indicando dónde se encuentra ese objeto en el montón para que tu código pueda acceder a él.


Cada vez que se pasa un objeto como referencia, se copia la referencia misma. Esto significa que puede cambiar la referencia para que apunte a un objeto diferente sin afectar el objeto anterior ni otras referencias que apunten a él. Una referencia es liviana y siempre tiene un tamaño constante (32 bits o 64 bits dependiendo del bitness del sistema operativo), por lo que copiarla (y, por lo tanto, transmitir tipos de referencia) se considera económico.


Los tipos de valor (derived from System.ValueType, e.g. int, bool, char, enum and any struct) (derivados de System.ValueType, por ejemplo, int, bool, char, enum y cualquier estructura) se pueden asignar en el montón o en la pila, dependiendo de dónde se declararon.


Si el tipo de valor se declaró como una variable dentro de un método, entonces se almacena en la pila.

Si el tipo de valor se declaró como parámetro de método, entonces se almacena en la pila.

Si el tipo de valor se declaró como miembro de una clase, entonces se almacena en el montón, junto con su padre.

Si el tipo de valor se declaró como miembro de una estructura, entonces se almacena dondequiera que se almacene esa estructura.

A partir de C#7.2, una estructura(struct) se puede declarar como estructura ref(ref struct), en cuyo caso siempre se asignará en la pila, evitando que se declare dentro de tipos de referencia.


Las instancias de tipos de valor se pasan mediante copia (a menos que se utilicen con semántica de referencia, ver más abajo). Esto significa que cada vez que se asigna un tipo de valor a una variable o se pasa como parámetro, el valor se copia.


Debido a que copiar tipos de valores puede resultar costoso según el tamaño del objeto, no se recomienda declarar objetos con mucha memoria como tipos de valores.


Dado que cada tipo en C# deriva de System.Object, los tipos de valor se pueden asignar a variables o pasar a métodos que esperan un objeto. En tales casos, el valor se copia y almacena en el montón empaquetado como un tipo de referencia, en una operación conocida como boxeo.


https://dev.to/tyrrrz/interview-question-heap-vs-stack-c-5aae#:~:text=Q%3A%20Where%20are%20objects%20allocated%20in%20C%23%3F&text=Objects%20allocated%20on%20the%20stack,can%20be%20accessed%20from%20anywhere.




Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.




Malloc (asignación de memoria dinámica C)

 Malloc (C dynamic memory allocation)

Descripción

Traducción del inglés-La asignación de memoria dinámica de C se refiere a realizar la administración de memoria manual para la asignación de memoria dinámica en el lenguaje de programación C a través de un grupo de funciones en la biblioteca estándar de C, a saber, malloc, realloc, calloc, alineado_alloc y libre.

// cstdlib se usa para usar la función malloc
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
// size_t es un tipo de datos entero que se puede asignar
    // mayor o igual a 0 valores enteros
size_t s = 0; // s is SIZE

// declaración/inicialización de malloc
int* ptr = (int*)malloc(s);

// condición de retorno si el bloque de memoria no está
    // inicializado
if (ptr == NULL) {
cout << "Null pointer has been returned";
}

//condición de impresión del mensaje si la memoria está
    // inicializado
else {
cout << "Memory has been allocated at address "
<< ptr << endl;
}

free(ptr);
return 0;
}

R/= Memory has been allocated at address 0x5568b29fceb0



Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



C++ Puntero a la dirección del objeto &

int* p = nulo; // declaramos el puntero y lo inicializamos

                      // para que no almacene una dirección aleatoria

int i = 5;

p = &i; // asigna puntero a la dirección del objeto

int j = *p; // desreferencia p para recuperar el valor en su dirección


R/= 0x7ffe0f367d08


https://learn.microsoft.com/es-es/cpp/cpp/raw-pointers?view=msvc-170




Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



C++ Punteros void*

Un puntero a void simplemente apunta a una ubicación de memoria sin procesar. A veces es necesario usar punteros void* , por ejemplo, al pasar entre el código de C++ y las funciones de C. Cuando se convierte un puntero con tipo en un puntero void , el contenido de la ubicación de memoria no cambia.


Cuando se usa como un tipo de valor devuelto de función, la palabra clave void especifica que la función no devuelve ningún valor. Cuando se usa para la lista de parámetros de una función, void especifica que la función no toma ningún parámetro. Cuando se usa en la declaración de un puntero, void especifica que el puntero es "universal".

Si el tipo de puntero es void*, el puntero puede apuntar a cualquier variable que no se declare con la palabra clave const o volatile. Un puntero void* no se puede desreferenciar a menos que se convierta en otro tipo. Un puntero void* se puede convertir en cualquier otro tipo de puntero de datos.

En C++, un puntero void puede apuntar a una función libre (una función que no es miembro de una clase) o a una función miembro estática, pero no a una función miembro no estática.

No se puede declarar una variable de tipo void.

Como cuestión de estilo, las directrices básicas de C++ recomiendan no usar void para especificar una lista de parámetros formal vacía. Para obtener más información, vea Directrices principales de C++ NL.25: No usar void como un tipo de argumento.

https://learn.microsoft.com/es-es/cpp/cpp/void-cpp?view=msvc-170 




Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



C++ Desreferencia

 int j = *p; // desreferencia p para recuperar el valor en su dirección



Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.



sábado, 13 de abril de 2024

Microsoft virtual WiFi miniport adapter

 

NETSH wlan set hostednetwork mode=allow ssid=LIME key=123gjiiiyyiihh

NETSH WLAN start hostednetwork



Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.







Mostrar drivers de WLAN con terminal(cmd) en modo administrador

NETSH WLAN show drivers





Si el contenido le ha sido de utilidad, lo invitamos a hacer una donación en el siguiente botón.

La cantidad que sea de su voluntad entregar


En caso que no se visualice el contenido, hacer recargar (refresh) a la página que sea abierta.




Anclaje de red de PC a PC

 

  • COMPUTADORAS Y ELECTRÓNICA
  • REDES DE COMPUTADORAS
  • Descargar el PDF

    Este wikiHow te enseñará a emitir la señal de Internet de una computadora con Windows como un punto de acceso inalámbrico usando la aplicación Símbolo del sistema. Para hacerlo, debes usar una cuenta de administrador en la computadora.

    Parte1

    Crear el punto de acceso

    Descargar el PDF
      Abre Inicio
      1
      Windows Start
      . Se encuentra en la esquina inferior izquierda de la pantalla. Puedes también presionar la tecla
      2
       Win
      para abrir Inicio.
      3
      4139314 1
    • En Windows 8, pon el ratón en la esquina superior derecha de la pantalla y luego haz clic en el icono de la lupa.
  • Escribe simbolo del sistema en Inicio. Al escribirlo aparecerá el icono del símbolo del sistema.
    4139314 2
  • Haz clic derecho en 
    Windows cmd
     Símbolo del sistema. Se encuentra en la parte superior de la página.
    4139314 3
    • Si vas a usar una laptop que tiene un trackpad pero no botones de ratón, pulsa el trackpad con dos dedos en vez de hacer clic derecho.
  • Haz clic en Ejecutar como administrador. Esta opción se encuentra en el menú desplegable que aparece al hacer clic derecho.
    4139314 4
    • Si no tienes la opción Ejecutar como administrador, no podrás crear un punto de acceso wifi.
  • Haz clic en  cuando se te lo pida. Esta acción abrirá el símbolo del sistema.
    4139314 5
  • Escribe NETSH WLAN show drivers y presiona  Enter. Este comando mostrará la información que te ayudará a confirmar si tu computadora puede crear un punto de acceso con el símbolo del sistema.
    4139314 6
  • Busca un “sí” al lado de “Red hospedada soportada”. Si ves que dice “sí”, quiere decir que tu computadora es compatible con las redes hospedadas, lo cual te permitirá crear un punto de acceso wifi.
    4139314 7
    • Si no ves un “sí” en esta sección, entonces tu computadora no podrá crear un punto de acceso wifi usando el símbolo del sistema.
  • Escribe el siguiente código en el símbolo del sistema:
    4139314 8
    netsh wlan set hostednetwork mode=allow ssid=NETWORKNAME key=PASSWORD
    
     y presiona  Enter. Asegúrate de cambiar el texto de “NETWORKNAME” y “PASSWORD” con el nombre y la contraseña que quieras que tenga tu punto de acceso.
  • Escribe NETSH WLAN start hostednetwork y presiona  Enter. Esta acción activará el punto de acceso wifi.
    4139314 9
  • Cierra el símbolo del sistema. Ahora que tu punto de acceso está activado, tendrás que compartir su disponibilidad para que un dispositivo pueda conectarse a él.
    4139314 10
  • Parte2

    Compartir la red

    Descargar el PDF
    1. Step 1 Abre Inicio icon y escribe panel de control.
       Así, la computadora buscará el programa “Panel de control”.
    2. Step 2 Haz clic en Panel de control.
       Este aparecerá en la parte superior de la ventana de Inicio.
    3. Step 3 Haz clic en Red e Internet.
       Se encuentra en el medio de la página.
    4. Step 4 Haz clic en Centro de redes y recursos compartidos.
       Lo encontrarás cerca de la parte superior de la página.
    5. Step 5 Haz clic en Cambiar la configuración del adaptador.
       Este es un vínculo ubicado en la parte superior izquierda de la ventana.
    6. Step 6 Haz clic derecho en el nombre de la conexión actual.
       Lo encontrarás cerca de la parte superior de la ventana “Cambiar la configuración del adaptador”.
    7. Step 7 Haz clic en Propiedades.
       Se encuentra al final del menú desplegable.
    8. Step 8 Haz clic en la pestaña Compartir.
       Esta opción se encuentra en la parte superior de la ventana.
    9. Step 9 Marca la casilla “Permitir a usuarios de otras redes conectarse…”.
       Se encuentra en la parte superior de la ventana.
    10. Step 10 Haz clic en la casilla debajo del encabezado “Conexión de red doméstica”.
       Esta opción se encuentra en el medio de la página.
    11. Step 11 Haz clic en el nombre de tu punto de acceso.
       Será similar a “Conexión de área local * #”.
    12. Step 12 Haz clic en Aceptar.
       Tu punto de acceso wifi ahora estará disponible para cualquier dispositivo cercano.

    Consejos

    • Escribe netsh wlan stop hostednetwork en el símbolo del sistema para detener el punto de acceso.

    Advertencias

    • Crear un punto de acceso hará que tu conexión se abra al público. Ten cuidado si lo vas a hacer en lugares muy visitados como aeropuertos o cafeterías.

    DOLIBARR - Sistema de Variables de Sustitución

    Son editadas en el directorio: /htdocs/core/lib/functions.lib.php   Variable substitution system Ir a la navegación Ir a la búsqueda Return ...