Buscar en el Blog

domingo, 15 de marzo de 2015

Cadena de Conexion PowerBuilder a Sql Server 2008 por ODBC

Cuando queremos conectarnos por ODBC desde PowerBuilder al Servidor de Base de Datos, podemos hacerlo de muchas formas: Creando el DSN a traves del asistente de origenes de datos o estableciendo la cadena de conexion en el codigo. Hoy veremos la segunda opcion.




// Profile BUFFALOBEEF
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='Driver={SQL Server Native Client 10.0};Server=192.168.1.30;Database=buffalobeef;Uid=sa;Pwd=sanissi;"


En donde:
SQL Server Native Client 10.0

Es el driver para conectarnos al servidor, el cual puede ser descargado desde aqui segun la version del sistema operativo que usen.

Server=192.168.1.30

  Esta linea indica la ip del servidor, en mi caso era 192.168.1.30

Database=buffalobeef;

 Nombre de la base de datos

 Uid=sa;Pwd=sanissi;"
Uid=usuario y Pwd seria la contraseña.


Para que una aplicacion funcione en una maquina cliente, debe tener instalado las librerias de PowerBuilder, ademas del driver de conexion de la base de datos.





viernes, 13 de marzo de 2015

UML 2 Ejemplos y Ejercios





Iniciación, ejemplos y ejercicios corregidos [3ª edición]

Este libro sobre UML 2 está dirigido tanto a estudiantes como adesarrolladores que se ocupan
del modelado de sistemas, de programas y de procesos.
Etapa a etapa, el lector descubrirá los elementos de modelado a partir de ejemplos pedagógicos
extraídos del mundo de los caballos. Tras unaintroducción a la orientación a objetos, la obra
presenta los diferentes diagramas de UML 2, desde la descripción de los requisitos a partir de
casos de uso, hasta el diagrama de componentes pasando por losdiagramas de interacción, de
clases, de estructura compuesta, de estados transiciones y de actividades. El lector aprenderá
de qué manera los diagramas de interacción pueden utilizarse para descubrir los objetos que
componen el sistema.
Esta nueva edición de la obra introduce los diagramas de perfil.
Los capítulos del libro:
Introducción – A propósito de UML – Conceptos de la orientación a objetos – Modelado de los
requisitos – Modelado de la dinámica – Modelado de objetos – Estructuración de los elementos de
modelado – Modelado del ciclo de vida de los objetos – Modelado de las actividades – Modelado
de la arquitectura del sistema – Los perfiles – Anexo 1: Arquitectura MDA: la herramienta DB-MAIN
– Anexo 2: Corrección de los ejercicios – Anexo 3: Glosario – Anexo 4: Léxico – Anexo 5: Notación
gráfica – Anexo 6: Bibliografía



martes, 3 de marzo de 2015

Qt C++ Capturar la tecla presionada - Keypress

Agregamos la siguiente linea en el archivo de cabecera para reimplementar la funcion eventFilter.

//Filtrar los eventos
bool eventFilter(QObject *obj, QEvent *event);

en el archivo cpp implementamos la funcion.

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
     //Si el evento es del Tipo Keypress
    if (event->type() == QEvent::KeyPress) {
    //Hacemos un Cast
    QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
    qDebug("Tecla Presionada %d", keyEvent->key());
    return true;
    } else {
    // 
    return QObject::eventFilter(obj, event);
    }
}
Ademas incluir en el archivo cpp los siguientes archivos.



#include <QKeyEvent>
#include <QDebug>


 
 
 
Ahora vamos instalar el eventFilter, es decir, en que objecto queremos hacer 
el filtro  de eventos. Para eso colocamos la siguiente linea de codigo en el
constructor de la clase.
 
 ui->lineEdit->installEventFilter(this);
 
 
 
 
Entonces el archivo quedaria asi.
 

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>
#include <QKeyEvent>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{


    ui->setupUi(this);
   


 ui->lineEdit->installEventFilter(this);
}


MainWindow::~MainWindow()
{
    delete ui;
}




bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::KeyPress) {
    //and here put your own logic!!
    QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
    qDebug("Ate key press %d", keyEvent->key());
    return true;
    } else {
    // standard event processing
    return QObject::eventFilter(obj, event);
    }
}

Al Ejecutar y digitar en la aplicacion en la ventana Output debe salir un resultado 
similar al de la siguiente imagen.




Nota: EL Debug sirve para mostrar los resultados en la consola de Qt Creator

jueves, 26 de febrero de 2015

Compiladores, principios, técnicas y herramientas


Alfred V. Aho
Monica S. Lam
Ravi Sethi
Jeffrey D. Ullman

R e q u is ito s p re v io s
E l lector d eb e poseer cierto “conocim iento orientado a las cien cias com putacionales” , lo que
incluye por lo m enos un segundo curso sobre program ación, adem ás d e cursos sobre estructuras
d e d a tos y m atem áticas discretas. E s ú til tener un conocim iento sobre varios lenguajes de
program ación.

E je rc ic io s
E ste libro contiene gran cantidad d e ejercicios para ca si to d a s las secciones. P ara indicar los
ejercicios difíciles, o partes d e ellos, utilizam os un signo d e adm iración. Los ejercicios todavía
m ás difíciles tien en doble sign o d e adm iración.

jueves, 19 de febrero de 2015

Funciones Externas Globales PowerBuilder Global External Functions

Para declarara una funcion externa global debemos dirigirnos al apartado de Global External Functions  asi como indica la imagen



En esa seccion colocamos la funcion por ejemplo

FUNCTION long ShellExecuteW( ulong hWnd, string Operation, string lpFile, string  lpParameters, string lpDirectory, int nShowCmd ) LIBRARY "shell32.dll"



Finalmente ya podemos hacer uso de dicha funcion.


El ejemplo  anterior muestra como abrir un archivo indicamenle como parametro la ruta y demas parametros los cuales ya dependen de la funcion.

viernes, 13 de febrero de 2015

Redes Informaticas - Nociones Fundamentales


Nociones Fundamentales de Redes informaticas
Protocolos, Arquitecturas, Redes inalambricas, Virtualizaciones, , Seguridad, IP v6...

Jose Dorddoigne



miércoles, 4 de febrero de 2015

HTML5 y CSS3 Revolucione el diseño de sus sitios web (2a edición)

Autor: Christophe AUBRY
Paginas 449

Es necesario que los diseñadores web, a la hora de crear sitios web, dominen dos lenguajes fundamentales: el HTML (HyperText Markup Language) y el CSS (Cascading Style Sheets). Las últimas versiones de estos dos lenguajes, el HTML5 y el CSS3, revolucionarán la forma de crear sitios web ofreciendo nuevas posibilidades de estructura, formato y composición.
Este libro va dirigido a diseñadores de sitios web y grafistas con conocimientos sobre HTML 4 y CSS 2.1 que quieran evolucionar en su manera de trabajar en la creación de sitios que integren esos nuevos estándares.
En el apartado dedicado al HTML5 se estudiará la nueva sintaxis, los nuevos elementos de estructura semántica (para el encabezado, las secciones, el menú de navegación, etc.), así como los formularios interactivos.
En el apartado de CSS3, el lector aprenderá a usar los nuevos selectores, el formato de texto y los estilos para los contenedores (sombras, bordes redondeados, degradados, bordes con diseños, etc.)
También podrá descubrir el enorme potencial de los nuevos efectos de transformación, transición y animación y, por supuesto, utilizará una de las grandes novedades: la inserción nativa de elementos multimedia (audio y vídeo).
Se ha dedicado un capítulo al Diseño web flexible (Responsive Web Design), que permitirá adaptar los sitios web a los diferentes soportes de difusión (pantallas de ordenador, tabletas táctiles y smartphones).
El último capítulo tratará la aplicación concreta de diseños web a partir del estudio de plantillas de sitios web concebidas íntegramente en HTML5 y CSS3.