Instalación y configuración de SMSD (de Gnokii)

julio 30 2010Sin comentarios Guardado en: General

Escrito por: Lisandro Vergara Diaz

Para realizar la práctica de este tutorial previamente debe de tener instalado y configurado Gnokii correctamente según el modelo de su teléfono móvil (en este mismo sitio se encuentra el tutorial para la configuración de Gnokii ,para ir al tutorial mencionado se muestra el siguiente link http://www.ubicuos.com/2010/07/07/instalacion-y-configuracion-de-gnokii-con-telefono-nokia-5610-y-cable-ca-101/)

Ahora comencemos con el tutorial

Ejecutando el siguiente comando deberá instalar todos los paquetes requeridos y dependencias

apt-get install gnokii-smsd-mysql

Una vez instalado, entramos a nuestro gestor de base de datos que es MySQL

mysql -u root -p

Creamos una base de datos, dónde se guardaran lo mensajes (para este tutorial hemos llamado a la base de datos dbsms pero lo correcto seria “smsgw”)

create database bdsms;

Salimos de MySQL, y ejecutamos el siguiente comando para llenar la base de datos con las tablas necesarias

mysql -u root -p bdsms < /usr/share/doc/gnokii-smsd-mysql/sms.tables.mysql.sql

Hemos llegado a la parte final donde solo nos queda comprobar que todo haya salido bien, para esto entramos a MySQL e insertamos los datos en la tabla outbox, al insertar los datos automáticamente se enviara el SMS y quedara registrado en la base de datos (para esto ya debe de estar conectado el teléfono móvil al equipo e identificado con Gnokii, previamente debió haberlo configurado como se menciona al comienzo de este tutorial)

insert into outbox (number,text) values('0123456789', 'mensaje de prueba');

Nota:

Por razones de seguridad no puse mi número de teléfono o algún otro, reemplazar “0123456789” por el numero al que se enviara el SMS

Una vez que insertamos los datos del mensaje, hay que comprobar 2 cosas, en primera que se haya guardado en la tabla los datos (esto haciendo una consulta en MySQL) y en segunda que el SMS haya llegado a su destino, si estos dos puntos no se cumplieron hay que analizar paso a paso para ver cual fue nuestro error

Con esto damos por concluido este tutorial, espero les sea de utilidad cualquier duda o sugerencia serán recibidas y contestadas a la brevedad por mi o por compañeros de la comunidad

Primitivas Básicas 2D con Processing

julio 30 2010Sin comentarios Guardado en: General

Escrito por: Luis Alfredo

El Sistema de Coordenadas 2D

El tamaño de la ventana se establece mediante la función size(), habitualmente una de las primeras acciones llevadas a cabo en la función setup().
El (0,0) se encuentra situado en la esquina superior izquierda, donde las “x” positivas evolucionan a la izquierda y las “y” positivas evolucionan hacia abajo.

Primitivas básicas 2D en Processing

  • Punto
  • Línea
  • Elipse / Círculo / Arco
  • Rectángulo
  • Triángulo
  • Cuadrilátero

Punto

point(x, y)

Dibuja un punto en la coordenadas (x, y) especificadas . El color se establece mediante stroke() y su grosor con strokeWeight().

set(x, y, color)

Dibuja un punto en las coordenadas (x, y) y un color concreto. No queda afectado por stroke() o strokeWeight().

Ejemplo:

strokeWeight(3);
point(25,25);
set(50, 50, color(128, 120, 255));

Línea

line(x1, y1, x2, y2)

Dibuja una línea recta entre los puntos (x1, y1) y (x2, y2) Con las funciones stroke() indicamos sus propiedades.

Ejemplos:

size(100, 100);
background(0);
stroke(255);
strokeWeight(5);
line(0, 0, 99, 99);

size(200, 200);
background(0);
for (int i=0; i<100; i++)
{
   stroke(random(255), random(255), random(255));
   strokeWeight(random(10));
   line(0, 0, random(200), random(200));
}

Terminacion de Línea

ROUND (redondeado), PROJECT (proyectado, se extiende en función del grosor del trazo), SQUARE (cuadrado estricto).

Ejemplo:

size(200, 150);
background(0);
stroke(255);
strokeWeight(10);
strokeCap(ROUND);
line(50,50,150,50);
strokeCap(PROJECT);
line(50,75,150,75);
strokeCap(SQUARE);
line(50,100,150,100);

Elipse y Círculo

ellipse(x, y, ancho, alto)

Dibuja una elipse en las coordenadas (x, y) y el ancho y alto suministrados.

ellipseMode()

Cambia el modo en el que los parámetros de la elipse son interpretados:

  • ellipseMode(CENTER) => (x, y) es el centro de la elipse (es el modo por defecto).
  • ellipseMode(RADIUS) => igual que el anterior, pero ancho y alto son radios y no diámetros.
  • ellipseMode(CORNER) => (x, y) hace referencia a la esquina superior izquierda del rectángulo envolvente de la elipse.
  • ellipseMode(CORNERS) => los cuatro parámetros de la elipse hacen referencia a dos puntos opuestos del rectángulo envolvente de la elipse.

Ejemplo:

size(200, 150);
background(0);
stroke(255, 0, 0);
strokeWeight(5);
fill(0, 255, 0);
ellipse(100, 100, 100, 50);
ellipseMode(CORNERS);
ellipse(0, 0, 50, 50);

Arco

arc(x, y, ancho, alto, inicio, fin)

Dibuja una arco como un sector de una elipse en las coordenadas (x, y) y el ancho y alto suministrados. El fragmento o sector de la elipse dibujado es el comprendido entre el ángulo inicio y el ángulo fin (radianes por defecto) en el sentido de las agujas del reloj.

Sus parámetros son igualmente interpretados en función del modo indicado con ellipseMode().
En Processing, el modo por defecto al dibujar figuras es con relleno, y se aplica incluso ante figuras no cerradas. La función noFill() ha de ser llamada de forma explícita si no se quiere relleno.

Ejemplo:

size(200, 200);
background(0);
stroke(255, 0, 0);
strokeWeight(5);
fill(0, 255, 0);
arc(100, 100, 100, 100, 0, PI / 2.0);
noFill();
arc(100, 100, 100, 100, PI, 3 * PI / 2.0);

Rectángulo

rect(x, y, ancho, alto)

Dibuja un rectángulo.

rectMode()

Cambia el modo en el que los parámetros del rectángulo son interpretados Los parámetros son los mismos que para la elipse: CENTER, RADIUS, CORNER y CORNERS. El modo por defecto en este caso es el CORNER (x e y son la esquina superior izquierda).

Ejemplo:

size(210, 180);
background(0);
stroke(255, 0, 0);
strokeWeight(5);
fill(0, 255, 0);
rect(100, 100, 100, 50);
rectMode(CORNERS);
rect(0, 0, 50, 50);

Triángulo y Cuadrilátero

triangle(x1, y1, x2, y2, x3, y3)

Dibuja un triángulo a partir de sus tres vértices.

quad(x1, y1, x2, y2, x3, y3, x4, y4)

Dibuja un cuadrilátero. El primer punto del mismo es (x1, y1), el resto deben ser los 3 vértices restantes debiéndose especificar en sentido horario o anti-horario (en uno de los dos).

Ejemplo:

size(200, 400);
background(0);
stroke(255, 0, 0);
strokeWeight(5);
fill(0, 255, 0);
// (100,25) - (25,175) - (175,175)
triangle(100,25,25,175,175,175);
// Sentido horario // (38,231) - (186,220) - (169,363) - (30,376)
quad(38, 231, 186, 220, 169, 363, 30, 376);

Conferencia “Programación en la Vida Real” -Actualización

julio 26 2010Sin comentarios Guardado en: Empresas

Escrito por: Daniel

Saludos a todos, aquí están las diapositivas que utilice en la presentación en la UNITEC Campus Ecatepec.
Como siempre, esperamos sus comentarios y participación

Obtener el Diccionario de datos de una Tabla de MySql con C#

julio 25 2010Un comentario Guardado en: General

Escrito por: Roberto Carlos

Obtener el Diccionario de datos de una Tabla de MySql con C#

INFORMATION_SCHEMA

MySql guarda los metadatos de las bases de datos en una base de datos llamada INFORMATION_SCHEMA.

Los metadatos son datos acerca de los datos, tales como el nombre de la base de datos o tabla, el tipo de datos de una columna, o permisos de acceso. También son conocidos como diccionario de datos o catalogo del sistema.

Controlar el Puerto Paralelo con Visual Basic.NET

julio 23 20103 comentarios Guardado en: General

Escrito por: Lisandro Vergara Diaz

¿Qué es el Puerto Paralelo?

Un puerto paralelo es una interfaz entre un ordenador y un periférico cuya principal característica es que los bits de datos viajan juntos enviando un byte completo o más a la vez. Es decir, se implementa un cable o una vía física para cada bit de datos formando un bus. El cable paralelo es el conector físico entre el puerto paralelo y el periférico. En un puerto paralelo habrá una serie de bits de control en vías aparte que irá en ambos sentidos por caminos distintos. En contraposición al puerto paralelo está el Puerto serie, que envía los datos bit a bit por el mismo hilo.

¿Cómo funciona el Puerto Paralelo?

La mayoría de los puertos paralelos de la parte posterior de las computadoras compatibles poseen un conector DB-25. Esto es extraño, puesto que este conector es el de serie que se utiliza para los interfaces serie. El conector es normalmente hembra (tiene orificios en lugar de patitas) para distinguirlo de los conectores serie que son habitualmente machos y que puede tener también la computadora. Sin embargo, utiliza un conector DB-25 macho para su interfaz paralelo (por ser algo diferente).
La función de cada terminal del conector DB-25 se muestra en la siguiente imagen. Las señales que ocupan esas terminales se pueden dividir en cuatro grupos básicos: tierras, salidas de datos, entradas de dialogo y salidas de dialogo. En la imagen las tierras se indican con círculos, las entradas de dialogo se indican con flechas que apuntan al conector y las salidas (tanto de datos como de dialogo) tienen flechas que apuntan hacia afuera del conector. (Note que algunas de las líneas tienen una abreviatura convencional que se indica entre paréntesis.)

Librería Inpout32.dll (Visual Basic.NET)

Para trabajar con puertos bajo VB.NET es necesario el uso de una librería que contenga funciones de Acceso a las direcciones de los puertos. Esta librería es diferente dependiendo del tipo de puerto a trabajar. La librería INPOUT32.DLL contiene las instrucciones necesarias para el manejo de los Puertos Paralelos.

Para accesar al puerto paralelo en Windows se requiere hacer uso de unas funciones que vienen en la librería inpout32.dll.
Poner la librería correspondiente en la carpeta c:\windows\system32
Agregar el módulo inpout 32.bas al programa realizado en Visual Basic y listo ya puedes hacer uso de las funciones para accesar al puerto paralelo:

Inp – Para leer el puerto (Entrada)
Out – para escribir al puerto (Salida)

Desarrollo de la práctica

Material:

  • Cautín
  • Estaño
  • Pasta para soldar
  • Protoboard
  • 2 Mts cable UTP
  • 2 Mts cable (1 hilo)
  • 5 Leds
  • 1 Conector Paralelo Macho

Procedimiento:

Primero pelamos 10 cm del cable UTP por ambos extremos y separamos los hilos, de la misma forma pelamos 1 cm de cada uno de los hilos de cada extremo, una vez realizado esto procedemos a soldar los hilos del cable en el conector macho, para esto se deben localizar los pines en el conector que están enumerados, localizamos pines del 2 al 9 que son los utilizados para la transferencia de datos, una vez localizados los pines procedemos a soldar ,esto se hace en el orden que ustedes prefieran siempre y cuando recuerden la secuencia, una vez hecho esto tomamos el cable de un hilo y pelamos en cada extremo 1 cm. Una vez hecho esto localizamos en el conector el pin 25 que es el de tierra (del pin 18 al 25 son tierra).

Una vez realizado todo este procedimiento pasaremos a la protoboard, en la protoboard tenemos que localizar la serie negativa que esta de azul una vez encontrada hay que introducir el cable de tierra en el primer orificio de la seria del polo negativo, una vez hecho esto tomamos los leds y ubicamos el polo negativo que es la patita más corta y la insertamos en la columna negativa y el positivo la insertamos en la columna “A” y que ambas filas coincidan y así con los leds restantes sucesivamente luego pasamos a conectar el cable UTP ala protoboard para esto tenemos que llevar el mismo orden que en el conector paralelo respectivamente ,localizamos el primer hilo a introducir y lo insertamos en la columna “B” de la forma que la fila del led coincida con este y así sucesivamente con los demás con su respectivo orden .

Programa

Para poder manejar puertos en Visual Basic.Net es necesario contar con la librería Inpout32.dll de la cual hablamos anteriormente reiterando que es necesario Poner la librería correspondiente en la carpeta c:\windows\system32 una vez hecho eso tenemos que crear una clase en nuestro proyecto donde se importa la librería .

Imports System
Imports System.Runtime.InteropServices
 
Public Class Puerto
 _
 Public Shared Function output(ByVal adress As Integer, ByVal value As Integer) As Boolean
 
    End Function
 
End Class

Una vez hecho esto pasamos a nuestro formulario e insertamos un botón, en este botón probaremos si todo sale correctamente en el botón ira el siguiente código:

Private Sub Probar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Probar.Click
        Puerto.output(888, 255)
    End Sub

Para poder encender el led numero 1 ,2 y 3 de nuestra Protoboard necesitamos el siguiente codigo que ira dentro de un boton como se muestra respectivamente :

Private Sub Led1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Led1.Click
        Puerto.output(888, 1)
End Sub
Private Sub Led2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Led22.Click
        Puerto.output(888, 2)
    End Sub
 
    Private Sub Led3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Led3.Click
        Puerto.output(888, 4)
    End Sub

888 porque es la dirección hexadecimal que utiliza VB.NET para mandar señal al puerto y 1,2 y 4 por que es la dirección donde esta ubicada el primer led para poder saber la dirección del led se debe hacer lo siguiente:
Los pines se enumeraran del 0 en adelante en este caso del 0 al 7 tomando referencia los pines del conector del 2 al 9 se realiza la siguiente operación:

Led Pin
1 3
2 4
3 5
4 6
5 7
6 8
7 9

Tomando en cuenta la tablita anterior se realiza lo siguiente:
2^0 (led)=1 (direccion en VB.NET)
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128

Esa es toda la operación y así se realiza sucesivamente.
Este es el ejemplo, para esto se necesita inserta 8 botones y 1 timer el formulario y la clase anteriormente mencionada.

Public Class Form1
    Dim i As Integer = 0
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Puerto.output(888, 0)
    End Sub
 
    Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
        Puerto.output(888, 0)
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Puerto.output(888, 1)
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Puerto.output(888, 2)
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Puerto.output(888, 4)
    End Sub
 
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Puerto.output(888, 8)
    End Sub
 
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Puerto.output(888, 16)
    End Sub
 
    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Puerto.output(888, 0)
        Timer1.Stop()
    End Sub
 
    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        Puerto.output(888, 255)
        Timer1.Stop()
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
 
        TextBox1.Text = CStr(i)
        i = i + 1
 
        If i = 1 Then
            Puerto.output(888, 1)
        End If
        If i = 2 Then
            Puerto.output(888, 2)
        End If
        If i = 3 Then
            Puerto.output(888, 4)
        End If
        If i = 4 Then
            Puerto.output(888, 8)
        End If
        If i = 5 Then
            Puerto.output(888, 16)
        End If
 
        If i = 6 Then
            Puerto.output(888, 255)
        End If
 
        If i = 7 Then
            Puerto.output(888, 16)
        End If
 
        If i = 8 Then
            Puerto.output(888, 8)
        End If
 
        If i = 9 Then
            Puerto.output(888, 4)
        End If
        If i = 10 Then
            Puerto.output(888, 2)
        End If
        If i = 11 Then
            Puerto.output(888, 1)
        End If
        If i = 12 Then
            Puerto.output(888, 255)
        End If
 
        If i = 13 Then
            i = 0
        End If
 
    End Sub
 
    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
 
        Timer1.Enabled = True
 
    End Sub
End Class

Este programa lo que realiza es encender led por led según el botón que se presione correspondientemente a cada led de 1 al 5, con otro botón enciende todos los leds, otro desactiva el led cuando alguno esta encendido y por último se hiso una pequeña muestra de cómo se podría implementar con un timer para que cada led encienda cada decima de segundo uno tras otro.

Con esto damos por concluido este tutorial que espero le sirva y sea de su agrado cualquier duda o sugerencia hacerla con toda confianza.

Geolocalizar con CSharp y GoogleMaps

julio 19 2010Un comentario Guardado en: General, Microsoft, Programación

Escrito por: Jorge

Hola comunidad!, de regreso aportando más material para que esto siga en crecimiento.

Ahora presentando un pequeño programita hecho en C# que nos sirve para geolocalizar direcciones mediante google maps.

El programa lo dividí en tres clases:

Geocodign.- Es la parte donde se hace el proceso de geolocalización
Point.- Clase para identificar nuestras direcciones a geolocalizar
Principal.- Es la clase principal del proyecto

La clase Geocodign

Esta clase cuenta con tres métodos (GetXml, GetData, ChangeUrl)

El método GetXml nos regresa los datos en formato XML y lo guarda en un archivo, el XML es lo que nos manda el googlemaps.

El método GetData nos regresa un Hashtable con los datos dirección (address), longitud (longitude), latitud (latitude). Estos datos los extraemos del arhivo XML que se guarda con el GetXml.

El método ChangeUrl lo utilizamos para reemplazar los espaciós en blanco de la dirección a geolocalizar, por ejemplo “dirección a geolocalizar” por “dirección%20a%20geolocalizar”.

Usings

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net;
using System.Xml;
using System.Xml.XPath;
using System.Windows.Forms;
using System.Collections;
class Geocoding
    {
        private string fileName = "datosxml.xml";
 
        public void GetXml(string address)
        {
            try
            {
                string url = String.Format("{0}", address);
                url = this.ChangeUrl(url);
                string lcUrl = String.Format("http://maps.google.com/maps/geo?q={0}&output=xml&sensor=true_or_false&key=your_api_key", url);
                HttpWebRequest loHttp =
                (HttpWebRequest)WebRequest.Create(lcUrl);
                loHttp.Timeout = 30000;     // 30 secs
                loHttp.UserAgent = "Code Sample Web Client";
                HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
                Encoding enc = Encoding.GetEncoding(1252);  // Windows default Code Page
                StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream(), enc);
                string lcHtml = loResponseStream.ReadToEnd();
 
                StreamWriter sw = new StreamWriter(fileName, false);
                sw.Write(lcHtml);
                sw.Close();
 
                loWebResponse.Close();
                loResponseStream.Close();
            }
            catch (Exception ex) {
                MessageBox.Show("Error " + ex.Message, "Error");
            }
 
        }
 
        public Hashtable GetData()
        {
            Hashtable data = new Hashtable();
            XPathDocument doc = new XPathDocument(fileName);
            string namespaceUri = "http://earth.google.com/kml/2.0";
            XmlNamespaceManager ns = new XmlNamespaceManager(new NameTable());
            XPathNavigator nav = doc.CreateNavigator();
            ns.AddNamespace("bz", namespaceUri);
            string query = "bz:kml/bz:Response/bz:Placemark/bz:Point/bz:coordinates";
            XPathNodeIterator iter = nav.Select(query, ns);
            string coordinates = (iter.MoveNext()) ? iter.Current.Value : "";
 
            query = "bz:kml/bz:Response/bz:Placemark/bz:address";
            iter = nav.Select(query, ns);
            string address = (iter.MoveNext()) ? iter.Current.Value : "";
 
            string lon = "";
            string lat = "";
            if (coordinates.Split(',').Length == 3)
            {
                lon = coordinates.Split(',')[0].ToString();
                lat = coordinates.Split(',')[1].ToString();
 
                data.Add("longitude",lon);
                data.Add("latitude", lat);
                data.Add("address", address);
            }
            else
            {
                data.Add("longitude", lon);
                data.Add("latitude", lat);
                data.Add("address", address);
            }
            return data;
        }
 
        private string ChangeUrl(string address)
        {
            address = address.Replace("#", "");
            address = address.Replace(" ", "%20");
            return address;
        }
    }

La clase Point

Esta clase cuenta con los atributos Address, Longitude y Latitude con sus respectivos métodos get y set.

Usings

using System;
using System.Collections.Generic;
using System.Text;
class Point
    {
        private string longitude;
        private string latitude;
        private string address;
 
        public string Address
        {
            get
            {
                return this.address;
            }
            set
            {
                this.address = value;
            }
        }
 
        public string Longitude
        {
            get
            {
                return this.longitude;
            }
            set
            {
                this.longitude = value;
            }
        }
 
        public string Latitude
        {
            get
            {
                return this.latitude;
            }
            set
            {
                this.latitude = value;
            }
        }
    }

La clase Principal

Para nuestro caso la clase principal es la de nuestro formulario, donde tendremos dos textbox (txtaddress y txtdata), en el txtaddress pondremos la dirección a geolocalizar y en el txtdata obtendremos nuestros datos, también tendremos un boton (btngeocoding) con el cual daremos la acción para realizar la geolocalización.

Formulario principal

El código del botón es el siguiente

Usings

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;
using System.IO;
        private void btngeocoding_Click(object sender, EventArgs e)
        {
            string address = this.txtaddress.Text;
            Geocoding geocodign = new Geocoding();
            Point point = new Point();
 
            geocodign.GetXml(address);
            Hashtable data = geocodign.GetData();
 
            point.Address = data["address"].ToString();
            point.Longitude = data["longitude"].ToString();
            point.Latitude = data["latitude"].ToString();
 
            this.txtdata.Clear();
            this.txtdata.Text = String.Format("{0}Dirección= {1} \r\n", this.txtdata.Text, point.Address);
            this.txtdata.Text = String.Format("{0}Longitud= {1} \r\n", this.txtdata.Text, point.Longitude);
            this.txtdata.Text = String.Format("{0}Latitud= {1} \r\n", this.txtdata.Text, point.Latitude);
        }

Ejemplo:

Ejemplo

Espero sea de grán ayuda! Dudas ó sugerencias, no duden en hacerlas llegar. Estamos para servir.. Saludos!

Se abre CFP del CONSOL 2010

julio 19 2010Un comentario Guardado en: Eventos, Software Libre, Tecnología

Escrito por: Ronney Espinosa

CONSOL 2010

Convocatoria (CALL FOR PAPERS)

El Instituto de Desarrollo de Comunidades de Software Libre CONSOL. A.C en colaboración con la Escuela Superior de Ingeniería Mecánica y Eléctrica del Instituto Politecnico Nacional (ESIME Zac. IPN), CFE, ETISC Interlegit SC y Simbiótica, invitan a todos los desarrolladores, administradores, investigadores, académicos y personas interesadas en el Software Libre a participar como conferencistas durante el noveno Congreso Nacional de Software Libre.

Apertura del Sistema

El sistema de registro de conferencias estará disponible a partir del día 7 de Julio del 2010 y se cerrará el día 3 de Septiembre del 2010.

Proceso de Participación

Una vez registrado como ponente, las conferencias deben de registrarse y resumirse en pocos párrafos. Cada ponente debe publicar su reseña curricular.

El comité Académico revisará todos los materiales enviados y aprobará o desaprobará los temas recibidos.

Notificación de Aceptación

El comité organizador y el comité académico, notificaran a las personas cuyos materiales hayan sido aceptados para presentarse en el CONSOL 2010.

Una vez aceptado, se debe de entregar de manera obligada un material en extenso del tema a presentar.

Si se aprueba un tema enviado el o los ponentes deben de mandar su material en extenso así como una fotografía de su rostro presentable para los trámites y preparación de materiales del comité organizador.

Si tiene alguna duda sobre este proceso, por favor contacte al comité organizador.

Fuente: http://www.consol.org.mx

Participa en el FUSOL “Festival de UPIICSA de Software Libre”

julio 17 2010Sin comentarios Guardado en: Eventos, Social / Internet, Software Libre

Escrito por: Daniel

fusol

El grupo de UPIICSA libre los invita todos a formar parte de la organización del evento FUSOL (Festival de UPIICSA de Software Libre).

A participar en el primer evento de software libre en UPIICSA, el FUSOL (Festival de UPIICSA de Software Libre).

Participa con en el FUSOL 2010

El “Festival de UPIICSA de Software Libre” (FUSOL) esta basado en la idea del FLISOL (Festival Latinoamericano de Instalación de Software Libre)

Está orientado al uso del software libre, opensource y openhardware.

Este evento está basado en la idea de la colaboración, unión y libertad del uso de las innovaciones de las TIC’s para potencializar el crecimiento intelectual de la informática y la exploración en los nuevos campos de las tecnologías.

Se llevará a cabo los días 18, 19 y 20 de Agosto 2010 en las instalaciones de la UPIICSA.

¡Participan personas de cualquier edad!

Habrá conferencias y talleres sobre todo el universo del Software Libre, por lo cual se invita a participar en el evento a Alumnos y Profesores del nivel superior y escuelas en general, así como Empresas que usen software libre, para compartir sus experiencias y conocimientos de Software Libre y Open source.

Dirección
UPIICSA, Av. Té No.95 0 Col. Granjas México
C.P. 08400, Iztacalco, México D.F.

Conferencia “Programación en el mundo Real”, en UNITEC Campus Ecatepec

julio 17 2010Sin comentarios Guardado en: Empresas, Eventos

Escrito por: Daniel

unitec

Saludos a todos.

Estará parte del equipo de Ubicuos.com, en la UNITEC Campus Ecatepec, dando una plática sobre la programación en entornos profesionales, el día Jueves 22 de Junio de 2010.

Si no tienes oportunidad de asistir, pondremos las diapositivas en este post y puedes seguirme en Twitter @smartdsign para solicitar tu copia gratuita (digital) del libro de Sistemas Evolutivos.

Replicación de una Base De Datos usando MySql en Windows y Linux

julio 16 2010Un comentario Guardado en: Empresas, General, Programación, Software Libre, Ubicuos

Escrito por: Lisandro Vergara Diaz

Para la replicación de base de datos se necesitan un Maestro y uno o varios esclavos según sea el caso.

Para esta práctica se necesita:

  • Mínimo 2 computadoras conectadas en red
  • Tener instalado el gestor de bases de datos MySql
  • Agregar al path la carpeta Bin de MySql si este no fue marcado en la instalación
  • Tener permisos de ROOT

Empezamos Configurando el Maestro:

  1. Buscar y abrir el archivo My.cnf (My.ini en sistemas Windows)

  2. En Windows se encuentra en: c:\Archivos de Programa\MySQL\MySQL Server 5.1\
    En Sistemas Linux se encuentra: /etc/my.cnf

  3. Buscar y comentar las siguientes lineas si es que se encuentran:

  4.  #skip-networking
    #bind-address = 127.0.0.1
  5. Agregar despues de la linea [mysqld] lo siguiente:

  6. log-bin =mysql-bin.log
    binlog-do-db=nombre_base_de_datos
    server-id=1

    Nota:

    El server-id en el servidor siempre será 1, y los esclavos serán 2, 3… n según sea el caso en binlog-do-db se pone el nombre de la base de datos que replicara despues de signo = .

  7. Entramos a los servicios en Windows y reiniciamos el servicio de MySql (omitir este paso en sistemas Linux)

  8. Entramos en MySql escribiendo en la linea de comandos lo siguiente:

  9. mysql -u root -p
  10. Ahora en el shell de mysql escribir:

  11. GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%' IDENTIFIED BY
    'password';
    FLUSH PRIVILEGES;

    Nota:

    En password pondra la contraseña que quiera ponerle al master en slave1 se está agregando el primer esclavo el usuario será en este caso Slave1, si se agrega un segundo esclavo sería Slave2 y así sucesivamente.

  12. Una vez esto seleccione la base de datos a replicar y realice lo siguiente:

  13. USE nombre_base_datos;
    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;

    Después de esto el gestor mostrará lo siguiente:

  14. Salir de MySql utilizando el comando quit o exit

  15. Ahora haremos un Backup de la Base de Datos que se encuentra en el Maestro para tener el mismo esquema y datos en los esclavos, para hacer eso escribimos en la terminal o en el cmd:

  16. mysqldump -u root -p --opt nombre_base_de_datos > nombre_base_de_datos.sql
  17. Finalmente desbloqueamos las tablas de la base de Datos

  18. mysql -u root -p
    UNLOCK TABLES;
    quit;

Ahora vamos a configurar el Esclavo

  1. Como primer paso hay que crear la base de datos que queremos replicar:

  2. mysql -u root -p
    CREATE DATABASE base_de_datos;
    quit;

    Nota:

    Antes de continuar es necesario que donde hicimos el respaldo o backup de la base de datos en el master copiemos el archivo .sql que se genero y lo peguemos en la maquina que funcionara como esclavo en la unidad c:\.

  3. Una vez que salimos del gestor escribimos el siguiente comando para copiar la base de datos del archivo que generamos:

  4. mysql -u root -p  nombre_base_de_datos < c:\nombre_base_de_datos.sql

  5. Buscamos el archivo My.cnf (en caso de windows My.ini) y despues del [mysqld]
    agregamos lo siguiente:

  6. server-id=2
    master-host=Dirección ip del maestro
    master-user=slave1
    master-password=password
    master-connect-retry=60
    replicate-do-db=nombre_base_de_datos

  7. Reiniciamos el servicio de MySql (omitir este paso en sistemas Linux)

  8. Finalmente entramos a MySql y detenemos el esclavo

  9. mysql -u root -p
    SLAVE STOP;
  10. Una vez que se detuvo el esclavo escribimos lo siguiente con el fin de actualizar la tabla que utiliza el esclavo para replicar

  11. CHANGE MASTER TO MASTER_HOST='ip_del_master',
    MASTER_USER='slave1', MASTER_PASSWORD='clave_del_master',
    MASTER_LOG_FILE='mysql-bin.006', MASTER_LOG_POS=183;

    Nota:

    En MASTER_LOG_POS va la posicion que nos marco cuando ejecutamos SHOW MASTER STATUS en el paso 7 de la configuracion del master.

  12. Finalmente escribimos START SLAVE

Si todo salio bien no queda mas que probar
En el Master vamos insertar un dato en la tabla de nuestra base de datos

En el esclavo hacemos una consulta para verificar que todo salió bien en caso contrario hay que verificar los pasos

Como vemos en la imagen anterior al hacer la consulta tenemos nuestro nuevo dato en la tabla
Con esto damos por concluido este tutorial cualquier duda o sugerencia estamos para servirles

Página 1 de 191234510...Última »

Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose