Categoría: Programación

Apuntes de programación, algoritmos, pruebas, ejemplos o ejercicios resueltos para practicar o resolución de problemas relacionados con la programación

¿Qué es un Algoritmo?

Antes de cualquier cosa, primero debemos entender lo que es un algoritmo. Para ello nos vamos a ayudar de la definición que nos proporciona la RAE, que es la siguiente:

Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.

Fuente: https://dle.rae.es/algoritmo

De ésta definición podemos destacar 3 características que debe cumplir cualquier algoritmo.

  • Las instrucciones, operaciones o pasos que seguirá nuestro algoritmo deben tener un orden o secuencia.
  • Todo algoritmo debe tener un final, es decir que el numero de pasos o instrucciones puede ser tan grande como lo necesitemos pero en algún punto debe detenerse su ejecución, independientemente de sí devuelve algún resultado o no.
  • Todo algoritmo debe resolver un problema, aunque yo en lo personal lo cambiaría a “Todo algoritmo debe realizar una tarea”, es decir, que cada algoritmo debe tener un propósito, que puede ir desde sumar dos números hasta calcular la trayectoria más corta entre dos lugares, etc, etc.

Aunque por lo general la palabra algoritmo se asocia a computadoras, en nuestro día a día realizamos tareas que ejecutando acciones en un determinado orden, como lo son: Preparar una taza de café, tomar una fotografía con nuestro teléfono celular o incluso conversar con alguien más.
Cada una de estas tareas requiere que sigamos un numero finito de pasos y en un orden en específico para poder llevarlas a cabo.

Apache, MySQL, PHP y UTF-8

¿Te ha pasado que los acentos en tu sitio no se ven apropiadamente?, te voy a enseñar la forma adecuada de utilizar UTF-8 para evitar este problema, que aunque es fácil arreglarlo en muchas ocasiones nos cuesta mucho resolverlo.

Para evitar este problema debemos revisar lo siguiente:

  • En el httpd.conf modifica o agrega la siguiente linea
  • En el php.ini modifica o agrega la siguiente linea
  • Revisa que tu base de datos utilice el cotejamiento(collate) utf8_general_ci

Si tu ya tienes configurada todo esto la verdad es que ya estabas muy cerca de solucionar el problema, solo te falto agregar una linea en tu código PHP para solucionarlo, te muestro la forma orientada a objetos y por funciones respectivamente:

Usando Programación Orientada a Objetos:

Usando funciones:

Capturar Teclado Tipo Keylogger en C#

En esta ocasión les traigo un pequeño tutorial de como capturar las pulsaciones del teclado desde un programa en C#, es un keylogger sencillo que solo captura las pulsaciones del teclado y las muestra en un TextBox, antes que nada quiero agradecer a Hernan Vivani ya que me basé en un código que él compartió para hacer el keylogger, solo lo modifique para trabajar bajo el paradigma orientado a objetos para hacer uso de eventos para actualizar el textbox con el contedido del buffer que almacena las teclas pulsadas.

Aquí pueden ver el código original y esta es la clase ya modificada.

Ejemplo de Uso

Voy a usar un botón tanto para activar la detección como para desactivarla, este es el código del botón.

Este es el código del evento que usé para actualizar el TextBox al modificar el buffer el objeto KeyboardHook:

Array a Directorios en PHP

En esta ocasión les vengo a compartir una función en PHP que desarrollé para un proyecto propio, en el cual surgió la necesidad de crear una estructura de directorios a partir de un arreglo que representa la estructura deseada.

Verán supongamos que tenemos el siguiente arreglo:

Como podrán ver se supone que este arreglo representa la siguiente estructura de directorios:

  • libs
  • inc
  • img
    • full
    • thumbs

Bien, la razón de ser de esta función, es crear algo que se pueda reutilizar para crear aplicaciones web con PHP de manera flexible y sencilla, en la cual podamos indicar los directorios que vamos a utilizar y nos ayude a crear la estructura de directorios.

Esta función es recursiva, por lo que cabe destacar que no importa cuantos sub-niveles tenga el arreglo que utilicemos, va a funcionar. Para que la función realice su trabajo necesita dos datos:

  1. El directorio base a partir del cual se creara la estructura de directorios (por lo general sera el directorio donde esta nuestro proyecto)
  2. El arreglo que contiene la estructura deseada

Sin más rodeos paso a mostrarles el código de la función:

NOTA: Esta función no la he probado en Linux, pero no veo ningún inconveniente para que no funcione, en cualquier caso no creo que necesite un cambio significativo para funcionar en Linux, en caso de que no funcione.

Web Service en PHP con nuSOAP

En esta ocasión veremos como crear un web service utilizando una librería en PHP llamada nuSOAP y cual quier editor de texto plano que tengamos a nuestro alcance. Así que empecemos.

Primero descargamos la librería y la descomprimimos en la carpeta de nuestro proyecto y creamos un archivo llamado index.php en el cual escribiremos nuestro código PHP.

El código de nuestro web service de ejemplo es el siguiente:

Explicación

  1. Primero incluimos nuSOAP a nuestro script
  2. Creamos el servidor SOAP
  3. Después lo configuramos indicando el nombre del Web Service y el namespace al que pertenece
  4. Registramos la función Saludar() para que aparezca en nuestro Web Service, es importante recordar que tanto PHP como XML son sensibles a mayúsculas, así que respetemos este criterio tanto en el nombre de las funciones como en los parámetros de ellas.
  5. Indicamos los parámetros de entrada de la función Saludar que en este caso es un string cuyo nombre será $nombre
  6. Indicamos lo que devolverá la función Saludar, que en este caso es un string
  7. Indicamos el namespace al que pertenece la función Saludar (el mismo al que pertenece el Web Service)
  8. Indicamos el soapAction, que seria la acción SOAP, noten el formato:
    <namespace>#<funcion> en realidad pudiera ser cualquier cosa en lugar del nombre de la función, pero recomiendo poner el nombre de la función.
  9. Los dos siguientes parámetros ‘rpc’ y ‘encoded’ los de momento no nos interesan asi que los dejamos así.
  10. Escribimos una pequeña descripción de la función Saludar, esto se mostrará en el Web Service

Tipos de Dato

Como se puede observar para indicar un string se antepone el prefijo xsd, eso es para indicar que este tipo de dato es un tipo base, existen varios tipos de datos base y podemos encontrar más información sobre ellos en la w3Schools:

Arrays con nuSOAP

Además de estos tipos también existen los arrays, que al igual que en cualquier lenguaje de programación pueden ser tanto parámetros de entrada como salida de la función; la forma de expresarlo seria la siguiente:

NOTA: Observen que la primera letra ‘A’ es mayúscula, debemos cuidar esto, ya que de lo contrario tendremos problemas, ya que como mencioné XML y PHP son sensibles a mayúsculas y lo correcto es Array y no array