jueves, 3 de octubre de 2019

Pricipios con NodeJs

Así es, tal y como sus ojos lo leen, esta vez les traigo una entrada referente a la librería node.js.

Para comenzar instalaremos el paquete, para ello es lo siguiente.

https://nodejs.org/es/download/

Dependiendo del caso que lo requiera Windows, Linux o Mac.

Una vez instalado, comprobamos la librería abriendo la terminal o linea de comando, con la orden.

C:\>_ node --version

Para continuar es necesario seguir estos pasos.

1.- Crear un directorio
2.- En el directorio nuevo, crear el init con node.
3.- Descargar los módulos necesarios para la aplicación requerida.

Con todo esto aclarado aremos nuestro primer "Hola mundo" desde node.js, Manos a la obra.

En xampp/htdocs: creamos la carpeta holamundo, desde cmd nos posicionamos en la carpeta holamundo e indicamos.


El resultado debería ser el siguiente.


Esto nos deja un archivo package.json el cual ira cargando los módulos que se instalen.

Dentro de hola mundo, creamos un archivo js llamado index.js, el cual contendrá el siguiente código...


var http = require( "http" );
http.createServer( function( req, res ){
res.writeHead( 200, {
'Content-Type':'text/plain'
});
res.end( 'hola Mundo\n' );
}).listen( 8420 );
console.log( 'servidor en url http://localhost:8420' );


Al final, damos el comando.

nos colocamos en nuestro navegador en el puerto indicado y listo, tenemos nuestro hola mundo echo en node js



No olvides dejarme tu comentario.

Si puedo ayudarte en algo escribeme.

Asta la próxima.

jueves, 27 de junio de 2019

PLSQL REGEXP_SUBSTR

"El lenguaje de base siempre es demasiado cuadrado" es lo que siempre eh dicho, no por ello puedo decir que lo encuentro aburrido ya que sin este lenguaje nadamas no podriamos obtener información de manera precisa respaldada y bueno, todo lo bueno que nos dejan las bases de datos.

Ahora solo les hablare de una función que es de mucha ayuda en otros lenguajes, tales como java, javascript, php, entre otros. Se trata nada mas y nada menos que de la funcion REGEXP_SUBSTR
la cual nos permite hacer un substring a la cadena que pasamos como parametro, dejando en un arreglo ( columna ) el resultado esperado.


Sin mas por el momento, vamos al grano...


Suponiendo que tenemos una  cadena como la siguiente.


"En|inovania.blogspot.com|siempre|encuentro|respuestas|a|mis|dudas"

En este caso la cadena esta separada por el caracter [ | ] el cual sera nuestro separador ( antes de continuar aclaro estar trabajando con PLSQL Developer, pero la funcion es la misma en otros id's ), comenzando con un bloque anonimo creamos nuestras variables.

--declaracion de un bloque anonimo
declare 
  --declaracion de variables
   TYPE t_separador IS TABLE OF TABLA.COLUMNA%type;--SE PASA EL TIPO DE DATO QUE SEA LO QUE SEPARAREMOS
   vt_dato t_separador;
   is_cadena_str VARCHAR2( 100 );
begin
  --asignacion de valor a variable
  is_cadena_str:= 'En|inovania.blogspot.com|siempre|encuentro|respuestas|a|mis|dudas';
  --impresion de contenido de variable
  dbms_output.put_line('is_cadena_str: ' ||  is_cadena_str );
  --fin del bloque anonimo
end;

Aquí, lo que da como resultado este bloque anónimo es una muestra el valor de la variable con el texto que anteriormente dijimos.

A continuación se se parsea la cadena guardandola en la variable vt_dato.

select valor
    bulk collect into vt_dato
    from (
        select regexp_substr(is_cadena_str,'[^|]+', 1, level) as valor from dual
        connect by regexp_substr(is_cadena_str, '[^|]+', 1, level) is not null
    );

Los campos de la función en el orden que los va pidiendo:
1.- is_cadena_str : cadena que queremos parsear,
2.- '[^|]+' : expresion que nos ayuda a separar la cadena por el caracter |
3.- 1 : El numero de consecutivos a seguir dependiendo cada separador, si se pone 2 deja a un lado la primera posicion del resultado es decir de ser 8 los valores resultado de esta cadena solo seran 7.
4.- level: undefined. required : true.


Ya para finalizar recorremos el resultado en un for loop mostrando nuestra cadena dentro del arreglo, colection, tabla.

  for a in vt_dato.first .. vt_dato.last loop
      dbms_output.put_line( 'valor de vt_dato( ' || a || ' ): ' || vt_dato( a ) || '' );
    end loop;

Dejando como salida.

is_cadena_str: En|inovania.blogspot.com|siempre|encuentro|respuestas|a|mis|dudas
valor de vt_dato( 1 ): En
valor de vt_dato( 2 ): inovania.blogspot.com
valor de vt_dato( 3 ): siempre
valor de vt_dato( 4 ): encuentro
valor de vt_dato( 5 ): respuestas
valor de vt_dato( 6 ): a
valor de vt_dato( 7 ): mis
valor de vt_dato( 8 ): dudas


No olvides dejarme tus comentarios. si hay algo que se me paso, escribe y daré respuesta.


Hasta la proxima.

miércoles, 12 de junio de 2019

Funciones personalizadas en EXCEL

Recientemente me encuentro con un problema que me esta dando vueltas en la cabeza, resulta que buque una función en especifico en excel, la cual trata lo siguiente.

Tengo dos series


Se requiere evaluar si cada uno  de los valores en la serie 2 existe en la serie 1

Dejando de esta manera es como resulta mas fácil identificar que valores están repetidos para ello es necesario entrar al modo edición de módulos de Excel.

En el menú Insertar--> Modulo


Function busqueda_en_rango(valor As Integer, rango As Range) As Integer
    Dim count As Integer
    count = 0
    For Each celda In rango.Cells
        If celda.Value = valor Then
            count = count + 1
        End If
    Next celda
    If count = 0 Then
        busqueda_en_rango= 0
    Else
        busqueda_en_rango= 1
    End If
End Function

Y es así como pasamos la función en la celda que queremos comparar

dejando como resultado el valor 1 en caso de existir y 0 en caso de no existir en la serie

Espero sus comentarios, sus opiniones cuentan. nos vemos a la proxima.