WordLinx - Get Paid To Click

jueves, 6 de octubre de 2011

El mundo ha perdido a un genio

El dia de ayer se dio la notia en apple que el fundador y creador de todo lo relacionado con esta empresa Steve Jobs Fallecio, un gran  hombre y genio en lo que hacia creador de las maravillas de apple como lo son

Mac
IMac
Ipod
Iphone
Ipad

Eso si contar claro el maravilloso sistema operativo de apple que fue mejorando y desarrollando poco a poco hasta hacerlo el mejor y mas estable del mercado asi como el nuevo iOS que desarrollaron para su plataformas moviles que ellos mismos diseñaron, Guardemos todos los que nos dedicamos a trabajr sobre sistemas o sus derivador un minuto de silencio por este gran hombre un genio y buen hombre que se nos ha adelantado en el camino

Para todo aquellos que piensan que steve jobs solo creo el ipod, el Iphone e Ipad estan equivocados he aqui unas ligas sobre su biografia, su vida y la de su empresa

Biografia de Steve Jobs

Biografia de Apple

Software:

Max OS 
iOS

martes, 4 de octubre de 2011

Funciones basicas con cadenas de caracter y numeros en PHP

Bueno hoy hablare sobre las funciones basicas en php, esas que podemos pensar "No nos van a servir para una fregada" pues no asi que aqui estan pues estas cadenas pueden salvarte la vida en un momento dado:

ECHO: imprime en pantalla lo que el programador desee:

Ej: echo "Bienvenido al blog de developer tools";

STRLEN: Extrae la cantidad de caracteres que contiene una variable (Ya sea numerica, alfanumerica, fecha, etc), la funcion recibe solo el parametro de la cadena a revisar

$mivariable = 'Hola Mundo Como estan'
Ej: $c  = strlen($mivariable)
      echo $c;
El resultado seria 21 puesto que los espacio en blanco tambien cuentan

SUBSTR: Divide la cadena de caracterese segun lo requiera el cliente, es como el substring de .NET y otros lenguajes, la funcionr recibe el 3 parametros, la variable, el indice a iniciar y la cantidad de caracteres a extraer

$hola = 'Bienvenido a mo blog'
Ej: $a = substr($hola,0,5)
     echo $a;
El resultado seria "Bienv", pues le decimos a la funcion que inicie en el indice 0 y extraega 5 caracteres

ROUND: Se untiliza para extrar una cantidad determinada de decimales en una operacion,la funcion recibe 2 parametros, la operacion y la cantidad de decimales a utilizar en el resultado

Ej: $m = round((0.5*3.5) /2 , 3 );
      echo $m

El resultado seria: "0.875", pues le definimos que nos extraega 3 decimales, si solicitaramos solo 2 decimales el resultado seria, "0.87", en caso de solicitar solo 1 seria: " 0.9",esto por que el round dependiendo la cantida de decimales va redondeando,

NUMBER_FORMAT: Como su nombre nos lo dice nos da el formato que queramos, los parametros que requiere esta funcion son , la fecha, divisor de decimales, divisor de miles

Ej:  $date = number_formar('2550.20', "." , "," );
      echo $date;
El resultado que nos enviara en pantalla sera : 2,550.20 si no colocamos decimales el resultado de los 2 decimales lo enviara en 0

Ej:  $date = number_formar('2550', "." , "," );
      echo $date;
     
En este ejemplo el resultado seria "2,550.00"


DATE: La funcion date no, no es para solo extraer las fechas desde el sistema podemos hacer mas operaciones con ella:

1.- Extraer la fecha del sistema $fecha = date('Y/m/d');

2.- Extraer el dia de la fecha indicada:
        $hoy = $date('Y/m/d');
        echo el dia de hoy es: date("l", strtotime($hoy));
    Ojo al extraer el dia tenemos varias opciones:
                 1.- l o L se define en el date como minuscula y nos extraer el nombre del dia
                 2.- d se define en minuscular y nos extraer el dia en numero es decir del 1 al 28, 30 o 31 segunsea
                      el caso, di lo definimos con D nos extrar una abreviatura del nombre del dia
                3.- N: Define en numero el dia de la sema 1: Lunes, 7 Domingo
3.- Tambien podemos extraer el mes en nombre usando en parametro "F" si lo colocamos como "m" solo nos extraera el numero del mes, si deseamos solo una abreviatura del mes utilizamos el parametro "M"

date("m", strtotime($hoy) ) el resultado sera 10

date("F", strtotime($hoy) ) el resultado sera Octubre (lo extraer en ingles)

date("M", strtotime($hoy) ) el resultado sera Oct (lo extraer en ingles)

Tambie podemos aumentar una fecha segun lo requieramos, podemos al dia de hoy aumentar 1 dia, 1 semana  1 mes o en su caso un año el ejemplo para aumentar la fecha o sumarle dias, meses años a una fecha es:

$hoy = date('Y/m/d'); "2011/10/04"

$aumento = date('Y/m/d',strtotime("$hoy + 1 days"));

el resuldato seria el dia de hoy mas 1 dia resultado: "2011/10/05", si deseamos que aumente 1 semana utilizamos el concepto week Ej:

$aumento = date('Y/m/d',strtotime("$hoy + 1 Weeks"));

El resultado seria: 2011/10/11, puesto que toma los 7 dias de la semana, si deseamos aumentar un mes utilizamos el concepto month, si desemoa aumentar 1 año sera el concepto year, asi mismo no solo podemos aumentar si no tambien disminuir los dias, semanas, meses o años

bueno espero les sirva de algo estas pequeñas funciones basicas en php, son solo unas pocas de las tantas sin fin que existen, en otra entrada posteo otras tambien muy buenas e interesantes para estudiar

Buen dia todos

viernes, 30 de septiembre de 2011

MoSync SDK Movil

Mosync Sdk es un paquete open source para desarrollo de aplicaciones moviles, dentro de su soporte para realizar estas aplicaciones estan:
          iOS
          Blackberry (Java)
         Android
        Windows Movil
        Symbian
        Palm Os

Excelente cuando deseas realizar aplicaciones moviles sin necesidad de estar pasando de un sdk a otro y asu vez tener que aprender varios lenguajes de programación como java, skd android, objetive c para ios, etc, solo con este potente programa puedes realizar las aplicaciones que deseas sin tener que migrar de lenguaje

Bueno aqui les dejo la ruta de descarga para que puedan probar este sdk
Link de Descarga: http://www.mosync.com/download

Conectar php con Microsoft Sql Server


Para conectar php con sql server necesitamos realizar los siguientes pagos
     1.- Descargar la Liberia ntwdblib.dll
     2.- Habilitar la librería php_mssql.dll y php_msql.dll de nuestro archivo php.ini
     3.- Copiar el archivo ntwdblib.dll a las carpetas:
                3.1 .- PHP y ext de nuestra carpeta donde tenemos instalado nuestro php
                3.2 .- Bin de la capeta apache
               3.3.- System32 de nuestra carpeta Windows
Si al momento copiar el archivo a la carpeta php y ext nos pide remplazarlo tenemos que darl en aceptar puesto que la librería que maneja php en sus ultimas versiones nos marca un error en las funciones del mssql.
Con estos pasos emitiremos el odioso mensaje de error de php con sql

Bueno aquí les dejo la librería ntwdblib.dll que sirve para conectar php con Sql Server, y también les dejo una clase de conexión para que puedan realizar operaciones con este manejador de base de datos
Nota en caso de que la conexión a php del sql server mande algún erro de servidor por ejemplo:

                  1.- Fail Loding for user ‘ ‘
                  2-. Server not found

Revisen sus sesiones de sql server creen un usuario y en el servidor de SQL server habiliten la opción de permitir logearse en el servidor con autentificación de Windows y autentificación de sql server, para poder habilitar esta opción le dan clic derecho con el mouse al servidor que desean, de ahí en la pestaña de seguridad y habilitan esta opción

Datos de Descarga:

Link: http://www.megaupload.com/?d=OZAPUVVZ
Archivo: php-sql.zip
Contenido: Clase de conexión php, sql server
Archivo ntwdblib.dll para configuracion correcta de conexion con sql server

sábado, 12 de marzo de 2011

REPORTEADOR DINAMICON CON TREEVIEW Y LISVIEW EN C#

Esta es la forma de trabajar de un reporteador dinamico las caracteristicas principales son:Primera version:
- Cuatro parametros de rango (valores que permiten determinar que registros necesito),utilizo
un textbox
- Un listView (cuadro de lista) para visualizar los datos
-CheckBox Cuadros que permiten seleccionar al usuario los tipos de datos (tengo un maximo de 15 posibles campos)
- Botones para (Exporta(En varios formatos), generar la consulta, limpar la pantalla y cancelar o salir)
Segunda version:
- Cuatro parametros de rango (valores que permiten determinar que registros necesito),utilizo
un textbox
- Un Treeview (cuadro de lista) para visualizar los datos
-CheckBox Cuadros que permiten seleccionar al usuario los tipos de datos (tengo un maximo de 15 posibles campos)
- Botones para (Exporta(En varios formatos), generar la consulta, limpar la pantalla y cancelar o salir)
si observan las versiones no varian mucho, solo se cambia el listview por treview, esto fue idea del lider de proyecto (Rodrigo) esto con el fin de hacer una herramienta Olap, en pocas palabras algo parecido a lo que hacen las consultas en access, si tienes alguna referencia esta aparece en la linea inferior con un signo de “+” para poder visualizar los datos de la tabla a la que se le hace referencia (Algo muy bueno por supuesto), por lo que me explico rodrigo, es una especie de cubo de informacion el cual llena el treeview para poder visualizar los datos en forma de arbol.
El codigo:
El codigo es algo complejo la verdad, todos los metodos dentro del codigo del formulario esta parametrisados,
el constructor:
la mayoria estamos acostumbrados a ver costructores de formularios sin parametrisar, y en algunos casos solo un constructor, el reporteador tiene tres constructores los cuales estan para metrisados de la siguiente manera
- Para soportar de una a tres tablas
- Parametros para las columnas y las medidas de las columnas (en caso del listview)
- Parametro donde se almacena los campos de la tabla, estos ya debidamente formateados a como se desa que aparesca en la propiedad text de los checkbox, ya que este parametro se ira directamente a una funcion la cual e llamado formatoCBX donde se formatearan todos los chekbox del formulario
Variables Globales:
Dentro de la clase del formulario he creado varias variables globales, esto con el fin de que sean vistas en todo el codigo del form, acontinuacion las presento:
string campos = “”; //Variable para los campos
string tablaPrincipal = “”; //Variable para la tabla principal
string tablaSecundaria = “”; //Variable para la tabla secundaria
string tablaTercera = “”; //Variable para una tercera tabla
string condicion = “”; //Variable parala condicion de la consulta
bool entroDos = false, entroTres = false, entroCuatro = false; //Varianble booleana para saber si entro a alguna caja de texto
AdMySQL miAdMySql = new AdMySQL(); //Instanciamos la clase de conexion
reportes Generador = new reportes();
String[] parametrosBD = { “bdeldisloque”, “localhost”, “ElDisloque”, “sdel08disloke” }; //Parametros para loa base de datos
Validar miValidar = new Validar(); //Instancia la clase validar
General miGeneral = new General(); //Instancia la clase general
string primerValor = “”, segundoValor = “”, tercerValor = “”;
string camposFiscales = “”; //Variable para la tabla de clientes en caso de tener datos fiscales
string[] columnasDefault ={ }; // Variable tipo array para las columnas
public string nombreArchivo = “”; //Determina el nombre que tendra el archivo exportado
int[] medidasDefault = { }; //Medidad de las columnas por default
DataSet Reporte; // dataset para exportar el reporte
Formato a los checkbox:
es muy complicado hacer una funcion donde utilizemos el gran famoso switch esto para generar en la propiedad text, por ello he realizado una esta funcion la cual recibe como parametro un control (form, grupbox, panel etc.) esto con el fin de hacer mas rapido el proceso una vez que mandamos el componente o control declaramos una variable de tipo checkbox, despues creamos un ciclo forech en el cual contaremos los checkbox que se encuentran en el componente, una vez que se tienen los controles, se procede a verificar que existan, si existen se asigna a la propiedad text el valor del campo, para ello he creado un DataSet en el cual se formatea a los campos y se verifia que exista la tabla.
Genera consulta:
como lo mensione anteriormente, el form tiene que soportar varias tablas, ya que este es totalmente dinamico, entonces como genero una consulta, acotinuacion se presenta la forma,
como ya tenemos el nombre de los campos en la propiedad text de los checkbox y el nombre de la tabla en la variable tabla principal solo concatenamos (unimos) para realizar la consulta Ejemplo:
if(checkBox.checked ==true) //Presunta si el checkbox esta seleccionado
{ cadena = tablaPricipal + “.” + checkbox.text;}
donde cadena es una variable tipo string que nos permitira unir los campos que se desean visualizar
una vez que ya tenemos los campos y las tablas tendremos que revisar si existen alguna condicion, para ello tenemos la variable global condicion en la cual contenemos las condiciones o criterios con los qe se realizara la consulta, para llenar esta variable nos vamos a las propiedades de los componentes ejemplo textbox y en los eventos buscamos el evento leave y le damos doble click una vez dentro del codigo del evento leave escribimos el siguiente codigo:
condicion = condicion + Generador.where(textxbox.text);
Donde generador es nuestra clase que alimentara al reporte (Vea Clase generadora “abajo”), y where es un metodo publico de esta clase.
NOTA: si se tienen dos campos en un grupbox y se desea ahorrar trabajo para no hacerlo textbox por textbox entonces buscamos en los eventos el grupbox el evento leave y realizamosel mismo proceso anterior, ahoramos mucho trabajo y lineas de codigo,
Una vez que sea ha generado la consulta o guardado en una variable DataSet se procede visualizarla en la lista, para ello se he creado un metodo que agrega las filas del data set al listview para ello en la funcion cargarlista tengo dos parametros, uno para obtener el dataset o registros encontrados, y otro para saber la cantidad de columnas que contiene la lista, este ultimo con el fin de que el sistema no trueno o marque errores, para ello dentro del metodo, tengo un switch en el cual pregunto el numero de columnas y en base a ello agrego las filas a la cantidad de columnas o mejor dicho las opciones y subopciones necesarias en la lista, es decir si mi numero de columnas es tres solo insertare los registros en tres columas nada mas en caso de ser quince entonces agregare quince columnas del dataset
En caso del treeview existe algo parecido, con la diferencia que aqui solo concateno las columnas que y las mando en una sola cadena al componente, aun asi existe la funcion para determinar la cantidad de columnas que ha seleccionado el usuario, esto para saber cuatos valores hay que unir para que se visualizen
Clase Generadora:
Este formulario no se crea por arte de magia, para ello tenemos una clase en la cual se agregaran las funciones para consultar a la base de datos, los criterios o condiciones de la consulta, el formateo de los campos (como queremos que aparescan en los checkbox) y algunas otras funciones mas, es decir esta clase alimentara a todos los componentes del form, es algo complicado de explicar puesto que esta clase contendra informacion de toda las tabla que queremos anexar al reporte, una funciones con varios parametros para abrir la ventana de reportes, y nuestro gran exito, el codigo de exportacion a distintos formatos.
Conclusion:
Esta aplicacion es muy util en caso de generar reportes, es muy practica y aun estoy pensando en la forma de hacerla mas robusta, esto con el fin que soporte mas tablas, mas columnas y por que no que interactura dos o mas bases de datos al mismo tiempo, pero eso es mas adelante, por ahora en el grupo estamos contentos con el logro optenido por esta aplicacion y esperamos generar nueva soluciones, por funcionalidad se ha tomado la desicion de usar el reportador con treeview, siendo sincero a mi me gustaron los dos pero tambien con el treeview se pueden hacer maravillas, les recomiendo utilizarlo, ya que esta primera vez que lo utilize me agrado su funcionalidad
Nuevo reto:
- Aplicacion de pedidos para una empresa (algo compleja pero exelente)
-Erramienta Case ( para generar codigo mas rapido, en varios lenguajes, para varias bases de datos)
Nos vemos la proxima con otra anecdota de tecnologia, dudas busquenme en el msn champi_30@hotmail.com,
jhodrickgg1@gmail.com