martes, 28 de mayo de 2013

Clase Teórica: Aplicaciones de la Inteligencia de Negocios



Aplicaciones de la Inteligencia de Negocios

A continuación se muestra un enlace a un video narrado de la clase:

Se solicita hacer un resumen de una página de los conceptos
explicados en el vídeo. Subir el resumen individual a clases virtuales

En el vídeo se explica además la mecánica a seguir para la segunda actividad de la clase. Tiene una duración de una hora. y pesa 800 MB

NOTA: Debido a problemas con el tamaño del archivo, no se colocó enlace para reproducción online, por lo que se deja un enlace de descarga. Para acceder a la descarga se le solicitará ingresar a su cuenta de skydrive (puede ingresar con los mismos datos con los cuales accede a su correo institucional). Considerando esto se extiende el plazo para realizar el trabajo de esta clase hasta el viernes 31 de mayo. Sugiero que una persona por grupo descargue el video y luego lo comparta a sus compañeros, debido al tiempo que puede suponer la descarga.

El contenido de lo explicado en el vídeo se incluye en el parcial teórico de cómputo 3.

ENLACE:

https://skydrive.live.com/redir?resid=CC3A42D1F82918D7!2028

sábado, 23 de marzo de 2013

Imagen de fondo en un rango de celdas en Excel: Tutorial en video

Se ha elaborado un vídeo sobre la entrada de ayer (imagen de fondo en un rango de celdas en Excel).

La dirección del vídeo:





viernes, 22 de marzo de 2013

Pasar una tabla de Word a Power Point


Como respuesta a una consulta recibida, a continuación se detallan los pasos a seguir cuando tenemos una tabla hecha en Word y necesitamos pasarla a PowerPoint:

1) En Word, hacemos clic en la esquina superior izquierda de la tabla, en el ícono con forma de cruz




2) El resultado se verá de la siguiente forma:



3) Siempre en Word, en la pestaña Inicio del menú superior, hacemos clic en la opción Copiar



4) Vamos a Power Point y en la pestaña de Inicio se hace clic en la flecha del botón pegar, para desplegar un menú. Luego se escoge la opción Pegado especial ...



5) Aparecerá la siguiente ventana, donde debemos escoger la opción más adecuada a nuestras necesidades, es decir cómo necesitamos que la tabla de Word se pegue en Power Point:



Formato HTML: Si queremos seguir trabajando la tabla desde Power Point esta es la opción a escoger.

Objeto Documento Microsoft Office Word: Si queremos que al hacer doble clic en la tabla se abra un editor que nos permita trabajar la tabla como si estuviéramos en Word.

Imagen: Si deseamos que la tabla se pegue como si fuera una imagen (no podremos modificar su contenido).

Texto con formato RTF: Si queremos que únicamente se pegue el texto de la tabla sin los bordes, pero conservando el formato del texto (tipo de letra, negrita, cursiva, subrayado).

Texto sin formato: Si queremos que únicamente se pegue el texto de la tabla, sin los bordes y sin los formatos de texto (tipo de letra, negrita, cursiva, subrayado).

Por ejemplo, si escogemos la primera opción (Formato HTML) y hacemos clic en Aceptar el resultado en Power Point es el siguiente:










Imagen de Fondo en un Rango de Celdas en Excel

En Excel existe una funcionalidad que permite colocar una imagen de fondo a la hoja de cálculo completa. Basta con ir al menú Diseño de página y escoger la opción Fondo para seleccionar el archivo de imagen que servirá como fondo. El resultado es similar al siguiente:



Sin embargo, Excel no incluye una forma directa de aplicar imagen de fondo a únicamente una celda o un rango de celdas, aunque si permite aplicar color de fondo.

A continuación se describe paso a paso un truco bastante sencillo de cómo podemos simular una imagen de fondo para un rango de celdas en Excel. Tenemos la siguiente hoja y aplicaremos fondo únicamente al rango que posee los números.



1. Haga clic en la ficha Insertar del menú superior y luego escoja la opción Cuadro de texto.



2. Dibuje un cuadro de texto sobre el rango de celdas sobre el que aplicará el fondo. El resultado se ve así:



3. Hacer clic derecho en el borde del cuadro de texto y del menú desplegable seleccione la opción Formato de forma. Aparecerá la siguiente ventana:




4. Escoja la opción Relleno con imagen o textura y haga clic en el botón Archivo ...




5. En la ventana que aparece busque la imagen que desea colocar de fondo y luego haga clic en Insertar



6. Desplace hacia la izquierda el control de transparencia de la imagen para hacer visible las celdas. Entre mayor sea el porcentaje más visibles serán las celdas.



7. Como paso final, podemos quitar el borde al cuadro de texto. Para ello haga clic en la opción Color de línea y luego marque la opción Sin borde. Finalmente haga clic en el botón Cerrar.




El resultado final es el siguiente:



Haciendo clic en una celda afuera del rango podemos desplazarnos con el teclado dentro de las celdas que tienen el fondo y modificar su contenido como se hace normalmente.










Licencia de Creative Commons
Blog Docente - Investigativo by Ing. Joaquín Bolaños is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.
Creado a partir de la obra en http://blogdocente-investigativo.blogspot.com.

jueves, 21 de marzo de 2013

Declarando arreglos en 20 lenguajes de programación


Una de las operaciones que frecuentemente se suelen encontrar cuando se programa es la de crear estructuras de datos temporales en memoria. Clásicamente esto se ha logrado mediante los conocidos arreglos. Aunque la idea es común para los lenguajes de programación en general, cada uno de ellos varía en cuanto a la sintaxis a seguir para implementarlo. A continuación se muestra la sintaxis para declarar dos arreglos diferentes de enteros, el primero unidimensional de cinco elementos y el segundo bidimensional de tres filas por dos columnas, en veinte de los lenguajes de programación más populares.


1) VISUAL BASIC

Dim numeros1 (5) As Integer
Dim numeros2 (3,2) As Integer

2) VISUAL C#

int[] numeros1 = new int[5];
int[,,] numeros2 = new int[3,2]

3) FOXPRO

DIMENSION numeros1 [1,5];
DIMENSION numeros2 [3,2];

4) PHP


$numeros1 = array(0,0,0,0,0);
$numeros2 = array(array(0,0),array(0,0));
?>

5) PYTHON

numeros1 = array([0 for i in range(5)]);
numeros2 = [[0 for i in range(3)] for i in range(2)]

6) VISUAL C++

int numeros1[10];
int numeros2[3][2];

7) JAVA

int numeros1[] = new int[5];
int numeros2[][] = new inte[3][2];

8) JSP

<%!
int numeros1[] = new int[5];
int numeros2[][] = new inte[3][2];
%>

9) ASP (con Visual Basic)

<%
Dim numeros1(5);
Dim numeros2(3,2);
%>

10) JAVASCRIPT

var numeros1 = new Array(5)

var numeros2 = new Array(3);
for (var i=0; i<3 i="i+1)<!--3--">
{
  numeros2[i] = new Array(2);
}

11) VBSCRIPT

dim numeros1 (10)
dim numeros2 (3,2)

12) PERL

@numeros1 = (0,0,0,0,0);

@fila1 = (0,0); @fila2(0,0); @fila3(0,0);
@numeros2 = (\@fila1,\@fila2,\@fila3);

13) ANSI C

int numeros[10];
int numeros[3][2];

14) FLEX

var numero1:Array = [0,0,0,0,0];


var numero2 = new Array();
var numero2[0] = [0,0];
var numero2[1] = [0,0];
var numero2[3] = [0,0];


15) ACTION SCRIPT

var numero1:Array = [0,0,0,0,0];

var numero2 = new Array();

var numero2[0] = [0,0];
var numero2[1] = [0,0];
var numero2[3] = [0,0];


16) LISP

(array numeros t 5)
(array numeros t 3 2)

17) PASCAL

Var 
  numeros1:array[1..5] of integer;
  numeros2:array[1..3,1..2] of integer;

18) QBASIC

DIM numero1 (10)
DIM numero2 (3,2)

19) MODULA 2

VAR numeros1: ARRAY[1..5] OF INTEGER
VAR numeros2: ARRAY[1..3] OF ARRAY [1..2] OF INTEGER

20) RUBY

numeros1 = Array.new;
numeros1 = [0,0,0,0,0];

numeros2 = Array.new;
numeros2[0] = Array.new;
numeros2[1] = Array.new;


Licencia de Creative Commons
Blog Docente - Investigativo by Ing. Joaquín Bolaños is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.
Creado a partir de la obra en http://blogdocente-investigativo.blogspot.com.

miércoles, 20 de marzo de 2013

Tutorial: Numeración discontínua de páginas en Word


En ocasiones se nos presenta la necesidad de aplicar numeración de páginas a un documento de Word en forma discontinua, por ejemplo las primeras páginas sin números, luego estilo de numeración romana, luego otro estilo; pero comenzando a partir de 3, etc. Todo ello en un solo documento. El siguiente vídeo tutorial explica como se hace.


http://youtu.be/KW2iMkodolw







Licencia de Creative Commons
Blog Docente - Investigativo by Ing. Joaquín Bolaños is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.
Creado a partir de la obra en http://blogdocente-investigativo.blogspot.com.

martes, 19 de marzo de 2013

Jerarquía de Memoria de la Computadora y Cloud Computing: Imaginando el Futuro

Dentro del tema de arquitectura de computadoras se maneja el concepto de jerarquía de memoria de la computadora. Esta idea consiste en clasificar los tipos de "memoria" de las cuales dispone la computadora según:

- Su velocidad de acceso
- Su tamaño
- Su coste.

En base a lo anterior, se utilizó hasta no hace mucho el esquema de la pirámide de memoria la cual se muestra a continuación:



La idea tras el esquema anterior es la siguiente: Todos los niveles son memorias, por tanto tienen la capacidad para retener datos en un cierto tiempo. Cada nivel funciona independientemente de los demás. Por otra parte, los datos se mueven entre niveles durante la ejecución de los programas. Estos datos pueden representar insumos de los programas o los mismos programas (código máquina). Por ejemplo, para ser ejecutado, un programa usualmente se mueve del nivel 4 (discos duros) al nivel 3 (DRAM). Al moverse de nivel a nivel, los datos siempre pasan por lo general pasan por los niveles intermedios. Los datos que son urgentemente utilizables permanecen en la memoria de rápido acceso.

En la pirámide, la velocidad de acceso crece de abajo hacia arriba. El tamaño crece de arriba hacia abajo y el costo de abajo hacia arriba.

Aunque no es un tema nuevo, se ha venido aceptando a "la red" como una memoria más en algunos textos. Cabe recordar el antiguo lema de Sun Microsystems "Network is the Computer". Si nos limitamos a la memoria, aún no se puede decir que la red es en sí estrictamente una memoria; pero si posee recursos de memoria que pueden compartirse (como discos duros de red). Sin embargo, a diferencia de los niveles tradicionales, las "memorias de red" no pueden considerarse propias de la computadora individual. El hecho de que dicho recurso esté en red quita sentido de propiedad.

Esto último ha cambiado en la actualidad con el surgimiento y popularización de la "computación en la nube" o "Cloud Computing". Específicamente podemos hablar de "memoria en la nube" o "cloud storage" donde un usuario interesado en obtener almacenamiento en servidores externos con conectividad a Internet, paga cierta cuota dependiendo de diversos planes de servicio. Esto último viene a eliminar la limitante tradicional que la red tenía "ya no se dispone de equipo propio", ya que el espacio alquilado pertenece bajo este modelo de negocio al cliente que lo paga. El cloud storage se ha convertido entonces en una extensión de la propia máquina física. (Sigue siendo la misma máquina bajo el mismo dueño; pero ubicada en dos lugares diferentes, la propia mesa y la nube).

Viéndolo desde ese punto de vista y tomando en cuenta que los tiempos de acceso aún son mayores en la nube con respecto al disco duro; pero sin embargo significativamente más baratos (existen incluso planes gratuitos de cloud storage). La pirámide "tradicional" podemos redibujarla de la siguiente forma:



Aun así, el agregar el Cloud Storage en la base de la pirámide va más allás de la idea que los datos deben pasar por los niveles intermedios para moverse entre jerarquías. Con las posibilidades que brinda esta nueva tecnología es posible guardar la información generada directamente en la nube, sin que esta tenga que pasar por el disco duro propio de la máquina. (Los servicios de sincronización y redundancia de datos como Dropbox, GoogleDrive o SkyDrive son una excepción a esto). Es más. Algunos programas (Como Cloud Office) ya no se cargan en la memoria temporal física de la máquina (DRAM). ¿Cabría imaginar a futuro, si con este nuevo paradigma, las computadoras podrían llegar a prescindir de los almacenamientos permanentes fijos y extraíbles, dejando a la pirámide de esta forma?:









Licencia de Creative Commons
Blog Docente - Investigativo by Ing. Joaquín Bolaños is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.
Creado a partir de la obra en http://blogdocente-investigativo.blogspot.com.

lunes, 18 de marzo de 2013

Técnicas para fortalecer la protección de código web del lado del cliente


Dentro de los lenguajes de programación utilizados para desarrollar aplicaciones web existe el grupo de los llamados "lenguajes de programación del lado del cliente", de los cuales Javascript es uno de los más representativos.

Estos lenguajes se caracterizan por ejecutarse en el navegador de las computadoras cliente. Como todo lenguaje posee un código fuente que posteriormente es ejecutado linea por linea.

Una de las diferencias entre las aplicaciones web y las aplicaciones de escritorio es la facilidad con la cual puede observarse el código de las primeras. Los navegadores web más populares proporcionan accesos para observar el código detrás de una página web ya sea que esta utilice Javascript o no.

Desde el punto de vista del programador web o internauta experimentado esto puede representar una oportunidad para revisar características de las páginas que visita como los nombres de los archivos o incluso probar los códigos en las propias páginas. Sin embargo, cuando el código de cliente es creación propia, esta característica de los navegadores puede representar un riesgo:

1) Utilización por parte de terceros de algoritmos o soluciones que pueden ser creación propia.
2) Conocimiento sobre la estructura del propio sitio (nombres de archivos de inclusión, nombres de carpetas, nombres de los archivos).
3) Conocimiento de la estrategia de programación seguida y de los frameworks utilizados.
4) Conocimiento de los eventos manejados en el código (por lo general, el evento clic) y como se manejan dichos eventos.
5) Idea general de la metodología de desarrollo web utilizado.

Aunque lo anterior no podría representar un riesgo a menos que los "interesados" tengan cierto nivel de conocimientos, algunas veces conviene conocer ciertos "trucos" que pueden servirnos para evitar hasta cierto punto los aspectos mencionados anteriormente. Son los siguientes:

1) No incluir código Javascript en el archivo html (a menos que sea una línea para enlazar un archivo de inclusión).
2) En las url ya sea de archivos de inclusión como de imágenes, utilizar referencias relativas en vez de absolutas. Esto oculta información de la estructura del sitio y por supuesto, del nombre del servidor web.
3) Concentrar el código Javascript en archivos de inclusión guardados en carpetas bien identificadas en el servidor (por ejemplo, una carpeta acj  para indicar "archivos de codigo javascript").
4) Tener copias de respaldo de los códigos de cliente que se utilicen para que puedan ser fácilmente reemplazados en caso de corrupción o pérdida de los originales en el servidor.
5) Configurar el sitio web con derechos de acceso limitados parcial o totalmente a las carpetas en el web server. (Las carpetas que contengan archivos de inclusión con código de cliente son un buen ejemplo para aplicar esta medida).
6) Omitir mencionar los eventos dentro del código HTML. Por ejemplo el onclick del elemento input tipo button o el onload del elemento body. Para lograr esto se puede agregar en el archivo javascript de inclusión líneas de código para establecer los eventos de los botones cuando la página termine de cargarse (consultar el método setAttribute).
7) Ofuscar el código Javascript. Aún y cuando algún visitante curioso logre llegar hasta el código que maneja un evento; se le puede dificultar la labor de interpretación cuando el código es ilegible (aunque funcional). A esta estrategia se le conoce como ofuscar el código y consiste en eliminar espacios, saltos de línea, comentarios, reescribir sentencias de forma diferente (por ejemplo a+=1, en vez de a=a+1). Para realizar esto existen herramientas como jasob  (www.jasob.com) y otras que pueden encontrarse en la web. Es de aclarar que la versión ofuscada es para propósitos de explotación del sitio, no de desarrollo donde más valor tienen los comentarios y claridad del código.
8) Si se van a utilizar frameworks (como JQuery u otros) considere la opción de utilizar las versiones "en línea" de los sitios oficiales de dichos frameworks y no la de los propios servidores.








Licencia de Creative Commons
Blog Docente - Investigativo by Ing. Joaquín Bolaños is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.
Creado a partir de la obra en http://blogdocente-investigativo.blogspot.com.

domingo, 17 de marzo de 2013

Porqué a los Motores de Persistencia se les llama así


Un motor de persistencia es un tipo de software especial que entra dentro de la categoría de software de mapeo de variables. La función de estos tipos de software puede ser comparada a un dibujante en escala que ubica los elementos del dibujo cuadrado a cuadrado en dos tamaños proporcionales diferentes.



Aunque los llamados "motores de persistencia" pueden aplicarse o no a la  programación orientada a objetos, usualmente es con esta última que se les suele asociar. De esa forma, se entiende un motor de persistencia como un intermediario cuya función es convertir los datos almacenados en una estructura de datos en memoria temporal (objeto en RAM) en una estructura de datos en memoria permanente (base de datos en disco duro). Donde los valores de los campos de una base son equivalentes a los valores de las propiedades del objeto y viceversa.

La siguiente figura ilustra lo anterior:


A propósito del significado del nombre "motor de persistencia" valga recordar que en informática el vocabulario técnico está asociado en ocasiones con símiles de la vida no informática (red, web,  registro, etc). El término "motor de persistencia" es una traducción del referente "persistence engine" donde:

Engine (Motor): Hace referencia al hecho que un motor "convierte" en forma contínua la energía generada por la combustión interna en movimiento mecánico.

Persistence (Persistencia): El verbo "persistir" se puede asociar también al verbo "mantener". Precisamente porque, como ya se explicó anteriormente, un motor de persistencia convierte en "permanentes" los datos almacenados en un objeto de memoria temporal.

Si juntamos ambos significados interpretamos que este tipo de software permite almacenar "ipso facto" los datos nuevos que lleguen al objeto mientras el programa que lo genera está en ejecución.







Licencia de Creative Commons
Blog Docente - Investigativo by Ing. Joaquín Bolaños is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.
Creado a partir de la obra en http://blogdocente-investigativo.blogspot.com.

sábado, 16 de marzo de 2013

Objetos Virtuales de Aprendizaje y la Herencia de Métodos


Los objetos virtuales de aprendizaje (LVA por sus siglas en inglés) se han convertido en una opción alternativa al portafolio de cátedra que los docentes utilizaban y aún ocupan. Es un hecho que dentro de una sesión de clase se utilizan diversas estrategias y herramientas, algunas han sabido mantenerse a través del tiempo como lo son la exposición oral, las demostraciones en vivo, los exámenes de palabra o escritos. 


Por otra parte, dichas técnicas y herramientas han hallado uso independientemente del área del conocimiento del cual se trate la clase. Por ejemplo la clase expositivo puede ser abordada ya sea en una clase de matemática como en una de filosofía o informática. Otras técnicas quizá se apeguen más a la naturaleza de la asignatura como es la litigación oral en la carrera jurídica y las guías de ejercicios en las materias numéricas. 

A partir de lo anterior, es posible hacer un símil con los conceptos de herencia y sobreescritura de métodos del paradigma de orientación a objetos de desarrollo de software: 

Si todas las asignaturas aplica técnicas:
     La asignatura A aplica técnicas comunes y propias. 
     La asignatura B aplica técnicas comunes y propias. 

Lo anterior puede representarse en UML como sigue: 


Y colocando nombres a las clases a manera de ejemplo: 


Los LVA aprovechan esta idea para incluir en unidades encapsuladas: 

 - Programación del curso y objetivos 
 - Contenidos 
 - Técnicas y Herramientas 
 - Evaluaciones 

Es decir, estamos ante una aplicación de la reutilización de software. ¿Podríamos llamarlo también reutilización de la enseñanza-aprendizaje?






Licencia de Creative Commons
Blog Docente - Investigativo by Ing. Joaquín Bolaños is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.
Creado a partir de la obra en http://blogdocente-investigativo.blogspot.com.

Seguidores