jueves, 2 de abril de 2020

Oracle: ¿Cómo encriptar paquete?

¿Tienes un paquete que tiene un lógica importante en tu sistema? En Oracle existe una forma de encriptar esa porción de código.

También conocido con la terminología "ofuscar" (encubrir), alguna veces es necesario ya que damos acceso a nuestras bases de datos a personal que tal vez solo están de paso por nuestra empresa, a continuación detallo los pasos.

Antes de iniciar: Guarda el código fuente original, al momento de encriptar ya no hay vuelta atrás considerar que Oracle utiliza el método hash (no reversible).

  1. Existe un ejecutable en $ORACLE_HOME/bin que se llama wrap. Llamándolo desde la consola.
  2. Teniendo el cuerpo del paquete preparado y con nombre:  ob_pack_body.sql
  3. Ejecutamos en la consola lo siguiente: 
  4. wrap edebug=wrap_new_sql iname=ob_pack_body.sql
  5. Finalmente compilen el paquete y voila



    1. Ojo: Sólo hemos creado el body del paquete, se entiende que la cabecera ha sido creada de forma normal.

viernes, 5 de julio de 2019

A hidden message

Cambiamos un poco el enfoque del blog, publicaré de todo un poco.

Uno de mis grupos favoritos, Queen (primero siempre The Beatles), del cual me pareció alucinante su película.
Mientras escuchaba sus canciones en Youtube, un comentario salvaje apreció.

¿Qué opinan?

---------------------------
This is my first post after a few years, so I am so excited. Queen is one of my favorite groups. What do you think about this comment?

sábado, 30 de septiembre de 2017

¿Cómo empezar mi APP Android?

He estado investigando la mejor forma de desarrollar una aplicación móvil. Al inicio empece como todos bien "guerrero" con mi MySQL y servicios con PHP pero luego dije como hago el monitoreo, analytics, entre otras gestiones. No inventemos la rueda para eso existen ya un sin fin de plataformas de ayuda de desarrollo de aplicaciones móviles, en este caso usaremos FireBase de google.

¿Qué es FireBase?
Nada resume mejor que un video explicativo desde su página oficial.

Entre las cosas que maneja tenemos: 


Veo en su web que tiene un sin fin de documentación, lo contra es que puedes elegir planes desde free hasta lo que consumes mensual pagas. Pero en realidad se ve que vale la pena y no invertir dinero y esfuerzo en crear de nuevo la rueda.


En el próximo Post ya vamos a ir viendo la creación del login con el API que podemos usar con firebase.






martes, 8 de agosto de 2017

Android - Navegar en APP - Ejemplo01

Lo primero que debemos de saber para navegar en diferentes interfaces de una APP es tener en cuenta que un activity es como una página web en el idioma android.

Para navegar de activity a otro activity, sólo utiliza el siguiente código:


Intent intent = new Intent(MainActivity.this,Main2Activity.class); 
startActivity(intent);

Donde:

MainActivity--> Es el activity donde te encuentras.
Main2Activity-->Es el activity donde quieres ingresar.

Recuerda que esta porción de código lo debes de ingresar dentro de un evento onClick de un botón de la siguiente forma (el id del botón es "button"):


Button bSiguiente = (Button)findViewById(R.id.button);
bSiguiente.setOnClickListener(new View.OnClickListener() {
    @Override    public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this,Main2Activity.class);
        startActivity(intent);
    }
});

Acá te dejo el código en github:
https://github.com/jocluis/Ejemplo01.git 




martes, 25 de julio de 2017

Android Básico - Instalación

Retomando el blog, desde hoy aprenderemos juntos a desarrollar aplicaciones móviles:

En este tutorial empezaremos con la instalación y primera APP (Hola Mundo), una recomendación tener una computador con mínimo 10 Gigas de RAM.




Créditos al canal Youtube: MaxQuePixels

martes, 5 de mayo de 2015

Ejemplos con Having en Oracle

Les comento que un compañero de mi trabajo toma un examen de Oracle / PLSQL a los que pasaron todas las pruebas previas (psicotécnico, razonamiento, etc). Pero he aquí la diferencia varios no saben usar esta sintaxis, su tipo pregunta es: Tengo 2 entidades Persona y Documentos, calcula las personas con más de un documento.

Para comenzar vamos a los conceptos:

  • Having es usando conjuntamente con GROUP BY.
  • Funciones que se puede combinar:
    1. SUM: Cuando requieras agrupar por cantidades que se acumulan y suman.
    2. COUNT: Cuando quieras buscar cantidades de registros sin sumar.
    3. MIN: Cuando requieras todos los registros mínimos a su valor.
    4. MAX: Cuando requieras todos los registros mínimos a su valor.

Vamos con unos ejemplos, tenemos la siguiente tabla simple:



1.- SUM: Queremos obtener la suma de total de temperatura por cada ciudad, lo podemos hacer con el siguiente query;

SELECT ciudad, SUM(temperatura) from
muestras GROUP BY ciudad HAVING SUM(temperatura);


Y si queremos sólo los que cumples que tengan más de 50 de total sumado de temperatura sólo le agregamos al final:
SELECT ciudad, SUM(temperatura) from
muestras GROUP BY ciudad HAVING SUM(temperatura)>50;


2.- COUNT: Si quisiéramos saber cuantas veces se repite cada registro sólo hacemos la siguiente consulta:


SELECT ciudad, COUNT(temperatura) from muestras GROUP BY ciudad HAVING COUNT(temperatura);



Ahora si queremos sólo las que tienen registros mayores a 2, esta es la consulta:

SELECT ciudad, COUNT(temperatura) from
muestras GROUP BY ciudad HAVING COUNT(temperatura)>2;



3.- MAX y MIN: Si quisiéramos saber cuanto es el máximo de cada uno de los registros pero no repetidos hacemos la siguiente consulta:



SELECT ciudad, MAX(temperatura) FROM muestras
  GROUP BY ciudad HAVING MAX(temperatura);



Ahora si sólo queremos los mayores a 16 haríamos lo siguiente:
SELECT ciudad, MAX(temperatura) FROM muestras  GROUP BY ciudad HAVING MAX(temperatura)>16;


Para mínimo es la misma lógica.

Ahora se atreven a dar el examen y dar un respuesta? Espero esté todo claro. Espero verlos muy pronto.



PD: La misma idea funciona para la base de datos MySQL.
El código de la tabla y registro es el siguiente:
CREATE TABLE  `muestras` (
  `ciudad` varchar(40) DEFAULT NULL,
  `fecha` date DEFAULT NULL,
  `temperatura` number(4) DEFAULT NULL
) ;
INSERT INTO `muestras` (`ciudad`, `fecha`, `temperatura`) VALUES
('Madrid', '2005-03-17', 23),
('París', '2005-03-17', 16),
('Berlín', '2005-03-17', 15),
('Madrid', '2005-03-18', 25),
('Madrid', '2005-03-19', 24),
('Berlín', '2005-03-19', 18);

lunes, 16 de febrero de 2015

Retorno

Hey! Amigos como han estado? Desde el día de hoy estoy de vuelta vamos a retomar el blog añadiendo algo de toque personal para no crear otro blog. Espero que les este yendo súper bien a todos. Si tiene alguna sugerencia siempre será bienvenida. 
JocLuis