1. Entré en la BIOS.
2. Navegué a la pestaña ADVANCED.
3. Fuí hasta CHIPSET CONFIGURATION.
4. Busqué y encontré ONBOARD LAN, que por defecto vale Enabled.
5. Entonces le cambié el valor a Disabled.
6. Por último salí de la BIOS guardando los cambios.
23 febrero 2012
10 febrero 2012
Monodevelop y MySQL:Inserción

Utilizando Monodevelop he creado un formulario simple y con él, en una base de datos llamada probatura, hice un simple ejrcicio para insertar registros en una tabla.
string cadenaDeConexion = "Server=localhost;Database=mono_prueba;User ID=admin;Password=123;Pooling=false;";
MySql.Data.MySqlClient.MySqlConnection conexion = new MySql.Data.MySqlClient.MySqlConnection(cadenaDeConexion);
conexion.Open();
MySql.Data.MySqlClient.MySqlCommand oComando = conexion.CreateCommand();
string sql ="INSERT INTO probatura(cadena) VALUES ('"+txtCadena.Text+"')";
oComando.CommandText=sql;
oComando.ExecuteNonQuery();
conexion.Close();
Viendo este ejemploo creo que hay poco que explicar. Aún así haré un breve resumen.
Por supuesto, lo primero es descargar el conector para MySQL. Yo descargué este: mysql-connector-net-5.2.7.zip. Que está aquí
Tras instalarlo, marché a referencias y me agregué las nuevas referencias.
Luego, ya en el archivo .cs escribí:
using System.Data;
y
using System.Data.SqlClient;
para invocar a los nuevos componentes.
Volviendo al código Ya en la función insertar, lo primero que hago es inicializar una conxión, qu seguidamente abro.
Segundo paso, me creo un comano que inicializo con una función de la conexión.
Tercero, preparo la instrucción SQL para insertar en la cuarta linea.
En el cuarto paso, ejecuto el comendo.
Y para finalizar cierro la conexión.
Saludos
06 febrero 2012
Planes de futuro con Linux

Otro día sin ir a trabajar. Esta mañana, abrigado por mi edredón, pensé que será buena idea instalarme una versión de Linux para aventurarme en ese sistema operativo al tiempo que programo en Python y con MySQL. Así hago todo con Software libre algo qu siempre será una buena opción. No obstante esperaré a que me reparen mi querido ordenador "don me reinicio tantas veces me sale de los cojones". Pedazo hioputa está hecho!!
17 enero 2012
Truco para los reports hechos con DevExpress para evitar que las filas cortadas aparezcan sin linea superior
Tras este titulo tan largo se esconde una explicación breve pero muy valiosa.
Vereis, harto de que mis informes (tan bien hechos) se destrozasen por el salto inevitable de cambio de página, pensé y descubrí como arreglarlo.
Y la solución es poner una linea lo más fina posible y tan ancha como la tabla donde se cargan los datos, y colocarla en el HeaderPage del report.
Y hasta aquí todo.
Vereis, harto de que mis informes (tan bien hechos) se destrozasen por el salto inevitable de cambio de página, pensé y descubrí como arreglarlo.
Y la solución es poner una linea lo más fina posible y tan ancha como la tabla donde se cargan los datos, y colocarla en el HeaderPage del report.
Y hasta aquí todo.
Cálculo para obtener el IVA de una cantidad
Esta entrada no es muy clasificable en el ámbito que me muevo de programación, no obstante como de una vez para otra me olvido, he decidido escribirla:
cantidadIVA = ((cantidad_sin_iva * 18) / 100);
Agur.
cantidadIVA = ((cantidad_sin_iva * 18) / 100);
Agur.
08 enero 2012
Objetivo logrado: instalar Whatsapp en un ordenador

Fue tedioso pero yo resulté constante y al final lo logré.
Empezaré desde el principio:
1. Para utilizar whatsapp desde una computadora hay que saber una cosa: se necesita un número de teléfono nuevo. ¿Por qué? Porque no se permite usar el mismo número de teléfono para el whatsapp del ordenador y del móvil al mismo tiempo.
En mi caso para este proposito utilicé los servicios de Fonyou donde gratuitamente te creas un nuevo número.

2. Android se debe correr en una máquina virtual. Yo usé YouWave de Android. La desventaja que tiene es que es de pago y te deja un breve tiempo para su uso gratuito. Pero bueno, siempre se puede gastar uno el dinero en comprar la licencia, o hacer uso de aplicacions Open source que sirvan para lo mismo.
3. Asi que se tiene instalado Youwave, nos descargamos Whatsapp. Para esto o entramos en la páagina web utilizando el navegador de Android o lo hacemos con nuestro ordenador. El sitio oficial es http://www.whatsapp.com/
Con la aplicación descargada y dependiendo de cómo la hayamos obtenido procedemos a instalarla. Si la descargamos utilizando la segunda opción debemos guardarlo en C:\User\
Después ya podremos agregar a nuestros contactos.
Para ver un manual más detallado pinchen aquí o aquí.
05 enero 2012
¿Qué es el Modelo Vista Controlador?
Según la amiga Wikipedia se definiria así:
Ver enlace de la Wikipedia.
Saludos.
Ahora solo falta ponerlo en practica.
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de negocio en tres componentes distintos. El patrón de llamada y retorno MVC (según CMU), se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.![]()
Luego un compañero del trabajo me pasó este enlace y me quedó más claro porque se incluye un ejemplo hecho en Java.
Ver enlace de la Wikipedia.
Saludos.
Ahora solo falta ponerlo en practica.
22 diciembre 2011
Python: Script que me abre una página web u otra según un numero al azar
Este es un programita breve y que se podría abreviar más, que elige al azar una emisora de radio para abrirla en un navegador.
En el primer import importo la función shuffle que es propia de la libreria random. En la segunda importo la libreria webbrowser.
En la tercera creo una lista con los nombres de las tres emisoras.
En la cuarta llamo a la función shuffle. Esta función reorganiza el listado al azar.
En las quinta y sexta imprimo la lista y el primer elemento de la lista respectivamente. Estas lineas de código las escribí para verificar el exito del la función shuffle. Pero bien podrian quitarse,... ¿para lo quéd hacen?
Luego, abro una ruta u otra dependiendo del nombre de emisora seleccionado utilizado la función open_new de la libreria webbrowser.
from random import shuffleimport webbrowser
listaDeEmisoras=["Kiss fm","M 80","Europa fm"]
shuffle(listaDeEmisoras)
print listaDeEmisoras
print listaDeEmisoras[0]
if (listaDeEmisoras[0]=="Kiss fm"):
webbrowser.open_new("http://www.kissfm.es/player/kissplayer/index.php") elif (listaDeEmisoras[0]=="Europa fm"):
webbrowser.open_new("www.europafm.com/directo/")
elif (listaDeEmisoras[0]=="M 80"):
webbrowser.open_new("http://www.m80radio.com/multimedia/radios.html")
Y hasta aquí todo. Solo falta poner el .exe de este programa en Inicio para que al iniciarse Windows se ejecute.
Saludos.
¡Y FELIZ NAVIDAD!
En el primer import importo la función shuffle que es propia de la libreria random. En la segunda importo la libreria webbrowser.
En la tercera creo una lista con los nombres de las tres emisoras.
En la cuarta llamo a la función shuffle. Esta función reorganiza el listado al azar.
En las quinta y sexta imprimo la lista y el primer elemento de la lista respectivamente. Estas lineas de código las escribí para verificar el exito del la función shuffle. Pero bien podrian quitarse,... ¿para lo quéd hacen?
Luego, abro una ruta u otra dependiendo del nombre de emisora seleccionado utilizado la función open_new de la libreria webbrowser.
from random import shuffleimport webbrowser
listaDeEmisoras=["Kiss fm","M 80","Europa fm"]
shuffle(listaDeEmisoras)
print listaDeEmisoras
print listaDeEmisoras[0]
if (listaDeEmisoras[0]=="Kiss fm"):
webbrowser.open_new("http://www.kissfm.es/player/kissplayer/index.php") elif (listaDeEmisoras[0]=="Europa fm"):
webbrowser.open_new("www.europafm.com/directo/")
elif (listaDeEmisoras[0]=="M 80"):
webbrowser.open_new("http://www.m80radio.com/multimedia/radios.html")
Y hasta aquí todo. Solo falta poner el .exe de este programa en Inicio para que al iniciarse Windows se ejecute.
Saludos.
¡Y FELIZ NAVIDAD!
19 diciembre 2011
C#: ¿Cómo se ordena una TList ?
Es muy sencillo. De tan fácil como es hasta cavilé demasiado.
Teniendo una lista:
TList listaDePersonasDeContacto = DataRepository.PersonsContacto.GetAll();
y esta se ordena así:
listaDePersonasDeContacto.Sort(PersonasContactoColumn.StrApellido1.ToString());
Por cierto, PersonasContactoColumn.StrApellido1.ToString() devuelve la columna por la que queremos ordenar. En este caso el primer apellido del contacto.
Saludos!
Gracias Edwin por explicarmelo porque yo me calenté mucho la cabeza. ¡Con lo tirao que está!
P.D.: Haciendo esto, indico que en caso de que haya coincidencia, mire el segundo apellido
listaDePersonasDeContacto.Sort(PersonasContactoColumn.StrApellido1.ToString() + ", " + PersonasContactoColumn.StrApellido2.ToString());
Teniendo una lista:
TList
y esta se ordena así:
listaDePersonasDeContacto.Sort(PersonasContactoColumn.StrApellido1.ToString());
Por cierto, PersonasContactoColumn.StrApellido1.ToString() devuelve la columna por la que queremos ordenar. En este caso el primer apellido del contacto.
Saludos!
Gracias Edwin por explicarmelo porque yo me calenté mucho la cabeza. ¡Con lo tirao que está!
P.D.: Haciendo esto, indico que en caso de que haya coincidencia, mire el segundo apellido
listaDePersonasDeContacto.Sort(PersonasContactoColumn.StrApellido1.ToString() + ", " + PersonasContactoColumn.StrApellido2.ToString());
18 diciembre 2011
Ejemplo básico de interface gráfca de usuario con Python
Para hacer interfaces gráficas utilizando Python existen muchas librerias que se pueden descargar e instalar en el equipo. Aquí hay un listado http://wiki.python.org/moin/GuiProgramming. No obstante para este ejemplo se usa Tkinter. Siendo está ya la integrada al instalar Python.
En elejemplo de hoy vamos a utilizar Tkinter para crer un botón que al ppulsarlo nos escriba la palabra "Hola".
En primer lugar hacemos la importación de la libreria para tener todos sus componentes disponibles:
from Tkinter import *
En segundo lugar creamos la ventana principal. Para ello usamos Frame, que es uno de los componentes de la libreria Tkinter. Frame es la ventana principal.
frame=Frame()
Para visualizar el texto utilizaremos el componente Entry de Python porque este componente sirve para meter o visualizar una linea. En cambio si fuesen varias utilizariamos Text.
Para crear nuestro cmpo de texto necesitamos crear una variable del tipo StringVar. Esta variable simplemente contiene una caja de texto le diremos a nuestra caja de texto que en ella guarde el texto. La forma de hacerlo es así de sencilla:
v = StringVar() campoTexto = Entry(frame, textvariable=v )
Con esto hemos creado la variable v de tipo StringVar y luego hemos creado campoTexto de tipo Entry. Los parametros: frame indica donde queremos que vaya el campo de texto y con textvariable=v indicamos cual es la StringVar donde queremos que deje el texto escrito por el usuario o en el que queremos dejr nosotros el texto que se muestre. Los métodos v.get() y v.set() nos van a permitir obtener o fijar el texto.
Para el botón, usaremos el componente Button de Python.
boton=Button(frame, text="Saludar",command=saludando)
Aquí de nuevo, frame, indica donde queremos que aparezca el botón. Con text indicamos que la propiedad text valga "Saludar" y que la función qu se ejecute al pulsar el botón se llame Saludando. Por supuesto esta función se debe de definir antes de escribir este código:
def saludando():
v.set("Hola")
Esta función simplemente pone Hola dentro del StringVar que asociamos previamente al campo de texto Entry. Cuando se ejecute esta función, se meterá dentro de v un texto "Hola" y este se mostrará en el campo Entry de la ventana.
El código completo es este:
from Tkinter import *
def saludando():
v.set("Hola")
frame=Frame()
v=StringVar()
campo=Texto=Entry(frame,textvariable=v)
boton=Button(frame,text="Saludar",command=saludando)
buton.pack(side=LEFT)
v = StringVar()
text = Entry(frame, textvariable=v )
text.pack(side=LEFT)
frame.pack()
frame.mainloop()
Nos quedan por explicar algunos detalles:
Para cada widguet (button, entry, frame,...) necesitaremos llamar a su método pack() el cual se encarga de colocar cadda elemento de la ventana dándole el tamaño adecuado. Podemos dejar los parametros vacios, dejando que elija, o bien, indicar la ubicación nosotros mismos. En estas lineas lo pusimos nosotros mismos: text.pack(side=LEFT) y text.pack(side=LEFT). Asi aparecerán en horizontal.
Una vez terminado el programa, para siga activo y la ventana funcionando, debemos meternos en el bucle principal de tratamiento de eventos de frame. Es decir, hacemos la llamada a frame.mainloop(). Si no lo hacemos así, el programa termina inmediatamente y no veremos nada (salvo que escribamos línea a línea en el intérprete de python). Esta llamada lo único que tiene dentro es un bucle infinito, en el que va recogiendo los eventos de teclado o ratón para "despacharlos" a los componentes de la ventana y que estos puedan tratarlos, por ejemplo, el click sobre el botón.
Est articulo lo he sacado de http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b%C3%A1sico_de_interface_gr%C3%A1fica_de_usuario_con_Python.
Saludos. Y mañana mas
En elejemplo de hoy vamos a utilizar Tkinter para crer un botón que al ppulsarlo nos escriba la palabra "Hola".
En primer lugar hacemos la importación de la libreria para tener todos sus componentes disponibles:
from Tkinter import *
En segundo lugar creamos la ventana principal. Para ello usamos Frame, que es uno de los componentes de la libreria Tkinter. Frame es la ventana principal.
frame=Frame()
Para visualizar el texto utilizaremos el componente Entry de Python porque este componente sirve para meter o visualizar una linea. En cambio si fuesen varias utilizariamos Text.
Para crear nuestro cmpo de texto necesitamos crear una variable del tipo StringVar. Esta variable simplemente contiene una caja de texto le diremos a nuestra caja de texto que en ella guarde el texto. La forma de hacerlo es así de sencilla:
v = StringVar() campoTexto = Entry(frame, textvariable=v )
Con esto hemos creado la variable v de tipo StringVar y luego hemos creado campoTexto de tipo Entry. Los parametros: frame indica donde queremos que vaya el campo de texto y con textvariable=v indicamos cual es la StringVar donde queremos que deje el texto escrito por el usuario o en el que queremos dejr nosotros el texto que se muestre. Los métodos v.get() y v.set() nos van a permitir obtener o fijar el texto.
Para el botón, usaremos el componente Button de Python.
boton=Button(frame, text="Saludar",command=saludando)
Aquí de nuevo, frame, indica donde queremos que aparezca el botón. Con text indicamos que la propiedad text valga "Saludar" y que la función qu se ejecute al pulsar el botón se llame Saludando. Por supuesto esta función se debe de definir antes de escribir este código:
def saludando():
v.set("Hola")
Esta función simplemente pone Hola dentro del StringVar que asociamos previamente al campo de texto Entry. Cuando se ejecute esta función, se meterá dentro de v un texto "Hola" y este se mostrará en el campo Entry de la ventana.
El código completo es este:
from Tkinter import *
def saludando():
v.set("Hola")
frame=Frame()
v=StringVar()
campo=Texto=Entry(frame,textvariable=v)
boton=Button(frame,text="Saludar",command=saludando)
buton.pack(side=LEFT)
v = StringVar()
text = Entry(frame, textvariable=v )
text.pack(side=LEFT)
frame.pack()
frame.mainloop()
Nos quedan por explicar algunos detalles:
Para cada widguet (button, entry, frame,...) necesitaremos llamar a su método pack() el cual se encarga de colocar cadda elemento de la ventana dándole el tamaño adecuado. Podemos dejar los parametros vacios, dejando que elija, o bien, indicar la ubicación nosotros mismos. En estas lineas lo pusimos nosotros mismos: text.pack(side=LEFT) y text.pack(side=LEFT). Asi aparecerán en horizontal.
Una vez terminado el programa, para siga activo y la ventana funcionando, debemos meternos en el bucle principal de tratamiento de eventos de frame. Es decir, hacemos la llamada a frame.mainloop(). Si no lo hacemos así, el programa termina inmediatamente y no veremos nada (salvo que escribamos línea a línea en el intérprete de python). Esta llamada lo único que tiene dentro es un bucle infinito, en el que va recogiendo los eventos de teclado o ratón para "despacharlos" a los componentes de la ventana y que estos puedan tratarlos, por ejemplo, el click sobre el botón.
Est articulo lo he sacado de http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b%C3%A1sico_de_interface_gr%C3%A1fica_de_usuario_con_Python.
Saludos. Y mañana mas
12 diciembre 2011
C #; Cómo crear checkbox en tiempo de ejecución.
En este caso he subido código que crea checkbox en tiempo de ejecución. Porque el report que lo utiliza requiere que por cada archivo localizado en un directorio (incluyendo subdirectorios) se añada así al informe, en lugar de como texto normal en una label normal. Supongo que es un pijotada pero me ha servido para aprender una cosa nueva. Asique ya me podria ir a la cama sino fuese porque son las 9:20.
private void CrearCheckbox(string texto)
{
posicionY += 23; /*incremento la posicionY (esta variabled dtermina donde se va a ubicar el checkbox)*/
try
{
Detail.HeightF = posicionY; /*aumento la longitud del detalle*/
DevExpress.XtraReports.UI.XRCheckBox chkNombreFichero1 = new XRCheckBox(); /*creo el checkbox*/
chkNombreFichero1.Name = "chk" + numeroDeFicheros.ToString(); /*le doy nombre*/
chkNombreFichero1.WidthF = 615; /*le doy ancho */
chkNombreFichero1.HeightF = 23; /*le doy altura*/
chkNombreFichero1.Text = texto; /*le doy el mismo valor que el nombre del fichero*/
chkNombreFichero1.TopF = posicionY - 23; /*lo coloco en la posición*/
chkNombreFichero1.Checked = true; /*lo activo*/
chkNombreFichero1.Visible = true;
numeroDeFicheros += 1; //incremento el valor para que los nombres no se repitan
Detail.Controls.Add(chkNombreFichero1);
}
catch (Exception ex)
{
}
}
Saludos desde Albacete.
private void CrearCheckbox(string texto)
{
posicionY += 23; /*incremento la posicionY (esta variabled dtermina donde se va a ubicar el checkbox)*/
try
{
Detail.HeightF = posicionY; /*aumento la longitud del detalle*/
DevExpress.XtraReports.UI.XRCheckBox chkNombreFichero1 = new XRCheckBox(); /*creo el checkbox*/
chkNombreFichero1.Name = "chk" + numeroDeFicheros.ToString(); /*le doy nombre*/
chkNombreFichero1.WidthF = 615; /*le doy ancho */
chkNombreFichero1.HeightF = 23; /*le doy altura*/
chkNombreFichero1.Text = texto; /*le doy el mismo valor que el nombre del fichero*/
chkNombreFichero1.TopF = posicionY - 23; /*lo coloco en la posición*/
chkNombreFichero1.Checked = true; /*lo activo*/
chkNombreFichero1.Visible = true;
numeroDeFicheros += 1; //incremento el valor para que los nombres no se repitan
Detail.Controls.Add(chkNombreFichero1);
}
catch (Exception ex)
{
}
}
Saludos desde Albacete.
08 diciembre 2011
En C#: listado de todos los archivos encontrados en un directorio (incluyendo subdirectorios)
Para desarrollar este código utilizo un botón (llamado btnVer) y una caja de texto (llamada txtContenido).
En la caja de texto cargo los nombres de todos los ficheros contenidos en la ruta donde está el proyecto (no olvidemos que este código nació para probar un algoritmo que en el trabajo no me salia, y en casa sí). El botón hace la llamada a los procesos.
Así es el resultado del formulario al ejecutar el programa:

Código del botón:
private void btnVer_Click(object sender, EventArgs e)
{
txtContenedor.Text = "";
ExtraerFicherorDelSubDirectorio(Application.StartupPath);
}
Ahora el código de ExtraerFicherorDelSubDirectorio (string ruta) que es una función recursiva:
private void ExtraerFicherorDelSubDirectorio(string ruta)
{
DirectoryInfo oDirectorio = new DirectoryInfo(ruta);
//obtengo ls ficheros contenidos en la ruta
foreach (FileInfo file in oDirectorio.GetFiles())
{
txtContenedor.Text += file.Name+"\n";
}
//obtego los subdirectorios que cuelgan de la ruta
foreach (DirectoryInfo subdirectorios in oDirectorio.GetDirectories())
{
ExtraerFicherorDelSubDirectorio(subdirectorios.FullName);
}
}
Saludos.
En la caja de texto cargo los nombres de todos los ficheros contenidos en la ruta donde está el proyecto (no olvidemos que este código nació para probar un algoritmo que en el trabajo no me salia, y en casa sí). El botón hace la llamada a los procesos.
Así es el resultado del formulario al ejecutar el programa:

Código del botón:
private void btnVer_Click(object sender, EventArgs e)
{
txtContenedor.Text = "";
ExtraerFicherorDelSubDirectorio(Application.StartupPath);
}
Ahora el código de ExtraerFicherorDelSubDirectorio (string ruta) que es una función recursiva:
private void ExtraerFicherorDelSubDirectorio(string ruta)
{
DirectoryInfo oDirectorio = new DirectoryInfo(ruta);
//obtengo ls ficheros contenidos en la ruta
foreach (FileInfo file in oDirectorio.GetFiles())
{
txtContenedor.Text += file.Name+"\n";
}
//obtego los subdirectorios que cuelgan de la ruta
foreach (DirectoryInfo subdirectorios in oDirectorio.GetDirectories())
{
ExtraerFicherorDelSubDirectorio(subdirectorios.FullName);
}
}
Saludos.
26 noviembre 2011
5 habilidades que debes de desarrollar para ser mejor programador.

Para ser un buen programador lo menos importante es saber muchos lenguajes de programación. Lo esencial, y a lo que hay que aprender, es a plantear y diseñar las mejores soluciones ante un problema. Por esta razón vamos a apreder 5 habilidades con el fin de ser mejores programando:
1. CREATIVIDAD:
Esta habilidad de suma importancia consiste en tener la imaginación para ver mentalmente la solución a un problema planteándola como algoritmo.
2. ORGANIZACIÓN MENTAL:
Ser despistado y no tener bien organizadas las ideas es un gran inconveniente. Es importante tener las ideas claras porque así se sabrá qué pasos seguir sin perderse por el camino.
3. TENER MENTE ABIERTA:
No hay que tener la mente cuadrada pensando que para conseguir un objetivo sólo hay una solución. Al contrario, siempre hay varias.
4. SER AMBICIOSO:
No hay que agobiarse por obtener errores. Ni mucho menos abandonar. Al contrario hay que ser constante. En informática lo más probable es que obtengas un error así que hay que estar preparado para solventarlo.
5. SER CURIOSO:
Si te quedas con lo que ya sabes sin tener la sana curiosidad de aprensder más no serás buen programador. Aquí lo ideal es estar abierto, querer mejorar aprendiendo metodologíaas más eficientes, y escuchar siempre consejos que ayuden.
Saludos, Victor
P.D.: La idea la saque de aquí: http://www.vidamrr.com
18 noviembre 2011
Cálculo de la diferencia en horas y minutos de dos horarios

Estaba meditando como resolver un código que me calculase la diferencia entre dos horas cuando se terminó la jornada laboral. Entonces decidí que tal código lo haría en Python como práctica de un aprendizaje.
Y cómo no, tras un ratejo en el que he disfrutado con Python (ese lenguaje que no gusta a mis compañeros de trabajo al punto del que no le ven ni uso ni futuro), he resuelto el código necesario.

Perdonen por haber puesto en una imagen el códigio fuente pero lo hice por causas mayores: El operador de comparativa (>) era confundido con los delimitadores de las etiquetas de HTML.
El código podria tener más complejidad, pero por hoy esta perfecto. Mañana más.
Saludos!
08 octubre 2011
Ejercicio hecho en C # que carga en una combo subcadeenas escritas en un textbox y separadas por ;
Este ejercicio, como reza el titulo del articulo, consiste en cargar en la combo cmbDatos, las palabras delimitadas por ; que se escriben en txtString.
El uso del ArrayList lista es puramente para mi comodidad porque así, cuando probaba la aplicación iba corroborado que subcadenas se extraian.
private void btnCargar_Click(object sender, EventArgs e)
{
cmbDatos.Items.Clear();
ArrayList lista = new ArrayList();
string subcadena;
string cadena = txtString.Text;
while (cadena.Length > 0)
{
int indice = cadena.IndexOf(';');
if (indice > 0)
subcadena = cadena.Substring(0, indice);
else
{
subcadena = cadena;
cadena = "";
}
lista.Add(subcadena);
int numeroDeCararteres= (cadena.Length-1) - indice;
if (numeroDeCararteres>-1)
cadena = cadena.Substring(indice+ 1,numeroDeCararteres);
}
for (int i = 0; i < lista.Count; i++)
{
cmbDatos.Items.Add(lista[i].ToString());
}
}
Saludos.
El uso del ArrayList lista es puramente para mi comodidad porque así, cuando probaba la aplicación iba corroborado que subcadenas se extraian.
private void btnCargar_Click(object sender, EventArgs e)
{
cmbDatos.Items.Clear();
ArrayList lista = new ArrayList();
string subcadena;
string cadena = txtString.Text;
while (cadena.Length > 0)
{
int indice = cadena.IndexOf(';');
if (indice > 0)
subcadena = cadena.Substring(0, indice);
else
{
subcadena = cadena;
cadena = "";
}
lista.Add(subcadena);
int numeroDeCararteres= (cadena.Length-1) - indice;
if (numeroDeCararteres>-1)
cadena = cadena.Substring(indice+ 1,numeroDeCararteres);
}
for (int i = 0; i < lista.Count; i++)
{
cmbDatos.Items.Add(lista[i].ToString());
}
}
Saludos.
26 agosto 2011
Aclaración entre Menú y Componente / Modulo en Joomla
Como tengo/tenía cierto lio en la cabeza acerca de qué era qué, le pregunté a mi amigo Cheno. Y él, pacientemente me dijo sobre el menú predefinido Este sitio, que:
Eso es un menu, existente en la zona de administracion. Puedes gestionar los menus, poner el nombre que quieras, los elementos que tienen. También los puedes desactivar si quieres
Y sobre la posibilidad de crear un menú yo mismo me dijo:
"Eso en la zona de modulos si no recuerdo mal. Ah pues en donde los menus puedes crear otro. Y luego activarlo y darle una posicion en la zona de componentes y modulos. No recuerdo si se considera un componente o un modulo
pero por ahi aparecera"
Y hasta aquí una breve aclaración.
Árbol en Joomla
Mi idea es realizar una página web en Joomla para promocionar objetos a la venta. Mayorritariamente antigüedades.
En este preciso momento me ronda por la cabeza hacer un menú desplegable (que funcione como un árbol) y donde se vayan desplegando ramificaciones con forme interese. Por ejemplo, las dos ramas principales serian Vehículos y Antigüedades. De la primera se colgarian Turismos, Furgonetas, Motocicletas. De la segunda, Armarios, Televisores, Teléfonos. Y así hasta que yo quisiese seguir prfundizando.
Este enlace conduce a un foro donde se proponen componentes para el fin que tyo persigo:
http://www.joomlaspanish.org/foro

01 agosto 2011
Herramientas para desarrollar un sitio web
Con eso de que quiero irme de putas y no tengo dinero para ello estoy pensando desarrollar sitios web para ir ganando dinero en un futuro. Paara empezar a profesionalizarme, y hoy que el monitor de mi puesto de trabajo no funciona, investigué sobre herramientas para hacer webs locales, probarlas y luego subirlas a Internet.
Me hablaron de XAMPP, he aquí webs que informan de ello:
Me hablaron de EasyPHP
También de Joomla, pero fue hace mucho tiempo (sus enlaces están en esta misma página web, en la sección Mundo Joomla).
Por internet localicé esto http://es.wix.com/eteam1/fish_build_a_free_flash_websit?utm_campaign=ma_carlosleopoldo.com&experiment_id=ma_carlosleopoldo.com_es Sirve para hacer sitios web con flash
Saludos ;)
Me hablaron de XAMPP, he aquí webs que informan de ello:
- http://www.baitic.com/productividad/tutorial-como-instalar-wordpress-sobre-xampp-en-windows.html
- http://www.apachefriends.org/en/xampp-windows.html
Me hablaron de EasyPHP
También de Joomla, pero fue hace mucho tiempo (sus enlaces están en esta misma página web, en la sección Mundo Joomla).
Por internet localicé esto http://es.wix.com/eteam1/fish_build_a_free_flash_websit?utm_campaign=ma_carlosleopoldo.com&experiment_id=ma_carlosleopoldo.com_es Sirve para hacer sitios web con flash
Saludos ;)
03 junio 2011
Ideas para el manejo de reports con DevExpress: orientación y tipo de hoja
Entre PageKind (propiedad que permite elegir entre muchos formatos de hoja. Por citar ejemplos A2, A3, A4, A5,...) y Landscape (vale true si la orientación es vertical y false cuando es horizontal) se puede dar un formato u otro al report final.
26 mayo 2011
Función SQL que devuelve el numero de coincidencias de un caracter en una cadena
Funcíon SQL que devuelve el numero de coincidencias de un caracter en una cadena
CREATE FUNCTION [dbo].[fnCountChar] ( @pInput VARCHAR(max), @pSearchChar CHAR(1) )
RETURNS INT
BEGIN
DECLARE @vInputLength INT
DECLARE @vIndex INT
DECLARE @vCount INT
SET @vCount = 0
SET @vIndex = 1
SET @vInputLength = DATALENGTH(@pInput)
WHILE @vIndex <= @vInputLength
BEGIN
IF SUBSTRING(@pInput, @vIndex, 1) = @pSearchChar
SET @vCount = @vCount + 1
SET @vIndex = @vIndex + 1
END
RETURN @vCount
END
CREATE FUNCTION [dbo].[fnCountChar] ( @pInput VARCHAR(max), @pSearchChar CHAR(1) )
RETURNS INT
BEGIN
DECLARE @vInputLength INT
DECLARE @vIndex INT
DECLARE @vCount INT
SET @vCount = 0
SET @vIndex = 1
SET @vInputLength = DATALENGTH(@pInput)
WHILE @vIndex <= @vInputLength
BEGIN
IF SUBSTRING(@pInput, @vIndex, 1) = @pSearchChar
SET @vCount = @vCount + 1
SET @vIndex = @vIndex + 1
END
RETURN @vCount
END
08 mayo 2011
En C sharp, seleccionar registros en una base de datos Access (versión 97) usando las librerias ODBC
Aqui escribo el ódigo para seleccionar el máximo valor de un campo determinado:
private void IdMasAlto()
{
DatosConexionABaseDeDatos odatosConexion = new DatosConexionABaseDeDatos();
OleDbConnection conexion = odatosConexion.getConexion();
conexion.Open();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string strSQL = "SELECT MAX(IdTipo) AS ultimo FROM Tipo";
//La consulta únicamente devolverá un registro de una columna: Un valor.
OleDbDataAdapter oAdaptador= new OleDbDataAdapter(strSQL, conexion);
oAdaptador.Fill(ds, "elultimo");
dt = ds.Tables["elultimo"];
DataRow fila =dt.Rows[0];
//ID es una propiedad
ID = Convert.ToInt32(fila["ultimo"].ToString());
conexion.Close();
}
Este códigio, modificandolo, servirá para recorrer varios registros devuelvos. Quedando así: if (dt.Rows.Count == 0)
this.lblUsuario.Text = "No existe el usuario...";
else
{
foreach (System.Data.DataRow fila in dt.Rows)
{
this.lblUsuario.Text = "Bienvenido " + fila["nombre"].ToString();
}
}
Por supuesto, y antes de marchar, recordar que hay que hacer las siguientes importaciones antes de empezar, en las primeras líneas:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
Saludos ;)
12 abril 2011
C Sharp, en una función contructora no debe faltar,...
31 marzo 2011
Curiosidades de C Sharp y SQL (1)
El otro día me descuerné pensando qué podría estar equivodo en esta sentencia SQL, ¿y adivinan el error?:
string SQL = "INSERT INTO Programa (Nombre, Anio, Version, Tipo, EnISO, InstaladoEnPortatil, InstaladoEnPC, Observaciones, Descripcion, Fabricante, CuandoCaduca, EsLibre, ParaWindows, ParaLinux, ParaMacintosh, ConCrack, Serial, Usuario, Password) VALUES ('" + _programa.nombre.ToUpper() + "', '" + _programa.anio + "', '" + _programa.version + "', " + _programa.codTipo + ", " + _programa.enISO + ", " + _programa.instaladoEnPortatil + ", " + _programa.instaladoEnPC + ", '" + _programa.observaciones + "', '" + _programa.descripcion + "', '" + _programa.fabricante + "', '" + _programa.cuandoCaduca + "', " + _programa.esLibre + ", " + _programa.paraWindows + ", " + _programa.paraLinux + ", " + _programa.paraMacintosh + ", " + _programa.conCrack + ", '" + _programa.serial + "', '" + _programa.usuario + "', '" +_programa.password + "')";
¿Ya la han ojeado bien?
Pues el problema era que Password al ser una palabra reservada no se puede utilizar como nombre para un campo de una tabla con base de datos Access. Entonces probé a cambiarla por ClaveDeAcceso, y el error, Instrucción SQL erronea, se esfumó.
Saludos.
string SQL = "INSERT INTO Programa (Nombre, Anio, Version, Tipo, EnISO, InstaladoEnPortatil, InstaladoEnPC, Observaciones, Descripcion, Fabricante, CuandoCaduca, EsLibre, ParaWindows, ParaLinux, ParaMacintosh, ConCrack, Serial, Usuario, Password) VALUES ('" + _programa.nombre.ToUpper() + "', '" + _programa.anio + "', '" + _programa.version + "', " + _programa.codTipo + ", " + _programa.enISO + ", " + _programa.instaladoEnPortatil + ", " + _programa.instaladoEnPC + ", '" + _programa.observaciones + "', '" + _programa.descripcion + "', '" + _programa.fabricante + "', '" + _programa.cuandoCaduca + "', " + _programa.esLibre + ", " + _programa.paraWindows + ", " + _programa.paraLinux + ", " + _programa.paraMacintosh + ", " + _programa.conCrack + ", '" + _programa.serial + "', '" + _programa.usuario + "', '" +_programa.password + "')";
¿Ya la han ojeado bien?
Pues el problema era que Password al ser una palabra reservada no se puede utilizar como nombre para un campo de una tabla con base de datos Access. Entonces probé a cambiarla por ClaveDeAcceso, y el error, Instrucción SQL erronea, se esfumó.
Saludos.
19 marzo 2011
En C sharp, eliminar registros en una base de datos Access (versión 97) usando las librerias ODBC

Aqui escribo el ódigo para modificar un registro utilizando las mismas herramientas y lois mismos métdos que seusaron para hacer la inserciónen el articulo En C sharp, insertar registros en una base de datos Access (versión 97) usando las librerias ODBC
Al igual que en el anterior, importo las siguientes librerias:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
y trabajo en la clase Tipo.
public void Eliminar(Tipo _tipo)
{
DatosConexionABaseDeDatos odatosConexion = new DatosConexionABaseDeDatos();
OleDbConnection conexion = odatosConexion.getConexion();
string eliminarSQL = "DELETE FROM Tipo WHERE IdTipo=" + _tipo.id;
conexion.Open();
OleDbDataAdapter oAdaptador = new OleDbDataAdapter(eliminarSQL, conexion);
OleDbCommandBuilder oBuilder = new OleDbCommandBuilder(oAdaptador);
DataSet oDsTipo = new DataSet("Tipo");
oAdaptador.Fill(oDsTipo, "Tipo");
conexion.Close();
}
Este mantiene diferencias con el sucesor, como que nunca se seleccionan todos los campos, y en cambio se ejecuta una sentencia DELETE. Además se ahorran las líneas donde se creabe un objeto Row agregandose como nuevo, porque obviamente esto no añade sino que suprime registros que ya existen.
En C sharp, modificar registros en una base de datos Access (versión 97) usando las librerias ODBC

Aqui escribo el ódigo para modificar un registro utilizando las mismas herramientas y lois mismos métdos que seusaron para hacer la inserckión en el articulo En C sharp, insertar registros en una base de datos Access (versión 97) usando las librerias ODBC
Al igual que en el anterior, importo las siguientes librerias:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
y trabajo en la clase Tipo.
Sin más preámbulos aquí está el código para modificar un registro.
public void ModificarTipoExistente(Tipo _tipo)
{
DatosConexionABaseDeDatos odatosConexion = new DatosConexionABaseDeDatos();
OleDbConnection conexion = odatosConexion.getConexion();
string updateSQL = "UPDATE Tipo SET Descripcion='" + _tipo.descripcion + "', Tipo='" + _tipo.tipo + "' WHERE IdTipo=" + _tipo.id;
conexion.Open();
OleDbDataAdapter oAdaptador = new OleDbDataAdapter(updateSQL, conexion);
OleDbCommandBuilder oBuilder = new OleDbCommandBuilder(oAdaptador);
DataSet oDsTipo = new DataSet("Tipo");
oAdaptador.Fill(oDsTipo, "Tipo");
conexion.Close();
}
Este mantiene diferencias con el sucesor, como que nunca se seleccionan todos los campos, y en cambio se ejecuta una sentencia UPDATE. Además se ahorran las líneas donde se creabe un objeto Row agregandose como nuevo, porque obviamente esto no añade sino que actualiza registros que ya existen.
13 marzo 2011
En C sharp, insertar registros en una base de datos Access (versión 97) usando las librerias ODBC

Ayer, tras muchas horas buscando por Internet un ejemplo válido de cómo agregar registros en una base de datos Access, versión 97, utilizando las funciones de las librerias ODBC, di, al rededor de las 6 de la tarde con esta página web 32.36.2.Use DataTable to insert a Row
Aquí dejo mí codigio, logrado en base a esa página que os he dicho:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
namespace GesPro.Tipo
{
class Tipo
{
string tipo;
string descripcion;
//constructor sin parametros de la clase
public Tipo()
{
this.descripcion = "";
this.tipo = "";
}
//constructor con parametros de la clase
public Tipo(string _tipo, string _descripcion)
{
this.descripcion = _descripcion;
this.tipo = _tipo;
}
// función que inserta nuevos regisrtros en la tabla Tipo de la base de datos GesPro.mdb
public void InsertarNuevoTipo(Tipo _tipo)
{
string ruta = System.IO.Directory.GetCurrentDirectory() + @"\GesPro.mdb"; //indica la ruta donde está la base de dxatos
string cadenaDeConexion = @"Provider=Microsoft.JET.OLEDB.4.0;" + @"data source=" + ruta; //establece cadena de conexión con la base de datos
OleDbConnection conexion = new OleDbConnection(cadenaDeConexion); //creo un objeto conexion
string seleccionarTodosLosRegistros = "SELECT * FROM Tipo";
conexion.Open(); //abro conexión
OleDbDataAdapter oAdaptador = new OleDbDataAdapter(seleccionarTodosLosRegistros,conexion); //creo un adaptador con una sql que selecciona todos los registros
OleDbCommandBuilder oBuilder = new OleDbCommandBuilder(oAdaptador);
DataSet oDsTipo = new DataSet("Tipo"); //creo un objeto dataset
oAdaptador.Fill(oDsTipo,"Tipo");
DataTable oTablaTipo = oDsTipo.Tables["Tipo"]; //creo una tabla para datos y le añado el nuevo registro campo a campo
DataRow oRow = oTablaTipo.NewRow();
oRow["Tipo"] = _tipo.tipo;
oRow["Descripcion"] = _tipo.descripcion;
oTablaTipo.Rows.Add(oRow);
oAdaptador.Update(oDsTipo, "Tipo"); //actualizo el objeto adaptador
conexion.Close();
}
}
}
07 enero 2011
Cómo centrar un formulario en Java
Así se hace:
FrmInicio1 frm = new FrmInicio1();
frm.setLocationRelativeTo(null);
frm.setVisible(true);
FrmInicio1 frm = new FrmInicio1();
frm.setLocationRelativeTo(null);
frm.setVisible(true);
24 noviembre 2010
Primer apunte sobre fotografía: ¿cómo arreglar una foto que está borrosa?

Es fácil:
1º Abres la imagen con el Photoshop y luego la guardas con formato PSD.
2º. Luego se duplica la capa, y en el menú de capas, donde pone Modo de fusión eliges entre "Luz fuerte" o "Luz suave"si hay tonos de piel.
3º. Después ve al menú Filtros, Otros, Paso alto, y le pones un valor de 2,5.
Este consejo lo leí aqui, asique no fue idea mia.
01 noviembre 2010
¿Para qué sirve la función TOP en SQL Server 2005?

En el trabajo me mandaron hacer una vista (utilizando SQL Server 2005) y sin que yo escribiera nada que incitase a la aplicación a escribir TOP 100 PORCENT, el editor la escribia, y aún yo borrándola, volvía a ponerla. Preegunté a mis compañeros y estos me dijeron que buscase en Google, y así hice. Entonces encontré este enlace: Que es el TOP 100 PERCENT de SQL Server. Y ahí descubrí que TOP 100 PORCENT es una nueva funcionalidad que nos visualiza un porcentaje de columnas que cumplan la condición solicitada. Obviamente 100 nos visualizará todas, y 50 la mitad.
La sintaxis de la función TOP es:
SELECT TOP limite_de_filas FROM MyTable.
En este caso, con TOP hemos limitado a un número exacto el limite de filas que queremos que sean devueltas.SELECT TOP limite_de_filas PERCENT * FROM MyTabla
En este caso, ya usando PERCENT, limitamos al el número de filas con un porcentaje como limite.Lo malo es que ORDER BY y TOP son ligeramente incompatibles porque al combinar con PORCENT. Y para que su funcionamiento sea positivo uno tiene que hacer cosas como esta:
Para profundizar más vayan al enlace que meniono arriba.SELECT * FROM (SELECT TOP 99 PERCENT * FROM T ORDER BY col1) AS A
09 octubre 2010
Probables soluciones para arreglar los puertos USB

Aquí os dejo posibles solucione que hayé en esta web: No me funcionan los puertos USB... AYUDA, DESESPERACIÓN!!! - :
1. Probaremos a actuaizar los controladores. Ve a administrador de dispositivos y busca controladores de bus serie universal (USB). Te saldrá un asistente que te buscará e instalará los drivers.
2. También tienes un solucionador de problemas ahí. ve a
Panel de control-rendimiento y mantenimiento-herramientas administrativas-administracion de equipos y administrador de dispositivos.
3. En última instancia puedes desinstalar e instalar (el conrolador) y quizas así entren en funcionamiento.
Salu2
26 septiembre 2010
En C#: Gestor de directorios
Basandome en En C#: Cómo montar un navegador en un TreeView ( 2º versión) hice los apaños necesarios para que ahora me sacara los subdirectorios del direwctorio raiz llamado Documentos y ubicado dentro de la carpeta Debug del proyecto. Algo que se hace así:
Application.StartupPath + "\\Documentos";
Si, y es esa barra, y no esta /. Aviso porque luego la piciamos confundiendonos con Linux.
Las diferencias enrtre un proyecto y otro son:
1. Ahora cargo el contenido de una carpeta, sus subdirectorios. Utilizando como nodo-raiz uno que tenga por ruta la ruta-inicial, que vale la concatenación de Application.StartupPath más el nombre del directorio raiz. Para el nombre del nodo-raiz, poodemos usar la \tipica o el nombre de la carpeta contanedora. Anteriormente, en la segunda versión, usabamos una función que cargaba los drivers, ahora no, ahora cargamos los subdirectorios. Así:
public void Inicio2()
{
//lo primero, cargsr el contenido de la carpeta raiz
rutaInicial = Application.StartupPath + "\\Documentos";
DirectoryInfo dirInf = new DirectoryInfo(rutaInicial);
try
{
foreach (DirectoryInfo subdir in dirInf.GetDirectories())
{
//de cada directorio se obtiene el nombre y el fullname y se convierte a nodo. El nodo se agrega al principal
SuperTreeNode nodo = new SuperTreeNode();
nodo.Text = subdir.Name;
nodo.Ruta = subdir.FullName;
NodoRaiz.Nodes.Add(nodo);
StateLblInformacion.Text = "";
}
}
catch (Exception ex)
{
//en la barra de estado uestro los errores q se pueden gnerar (falta de derechos o unidad no lista)
StateLblInformacion.Text = ex.Message;
}
}
2. La otra diferencia importante, no es nada del otro mundo: deshabilitar el botón que permite suprimir un directorio y la opción del menú contextual. Y esto se hace en el evento AfterSelect del control TreeView. Así:
if (NodoSeleccionado.Ruta.CompareTo(NodoRaiz.Ruta) == 0)
BtnBorrarDirectorio.Enabled = false;
else
BtnBorrarDirectorio.Enabled = true;
MenuItemBorrarDirectorio.Enabled = BtnBorrarDirectorio.Enabled;
Saludos.
Application.StartupPath + "\\Documentos";
Si, y es esa barra, y no esta /. Aviso porque luego la piciamos confundiendonos con Linux.
Las diferencias enrtre un proyecto y otro son:
1. Ahora cargo el contenido de una carpeta, sus subdirectorios. Utilizando como nodo-raiz uno que tenga por ruta la ruta-inicial, que vale la concatenación de Application.StartupPath más el nombre del directorio raiz. Para el nombre del nodo-raiz, poodemos usar la \tipica o el nombre de la carpeta contanedora. Anteriormente, en la segunda versión, usabamos una función que cargaba los drivers, ahora no, ahora cargamos los subdirectorios. Así:
public void Inicio2()
{
//lo primero, cargsr el contenido de la carpeta raiz
rutaInicial = Application.StartupPath + "\\Documentos";
DirectoryInfo dirInf = new DirectoryInfo(rutaInicial);
try
{
foreach (DirectoryInfo subdir in dirInf.GetDirectories())
{
//de cada directorio se obtiene el nombre y el fullname y se convierte a nodo. El nodo se agrega al principal
SuperTreeNode nodo = new SuperTreeNode();
nodo.Text = subdir.Name;
nodo.Ruta = subdir.FullName;
NodoRaiz.Nodes.Add(nodo);
StateLblInformacion.Text = "";
}
}
catch (Exception ex)
{
//en la barra de estado uestro los errores q se pueden gnerar (falta de derechos o unidad no lista)
StateLblInformacion.Text = ex.Message;
}
}
2. La otra diferencia importante, no es nada del otro mundo: deshabilitar el botón que permite suprimir un directorio y la opción del menú contextual. Y esto se hace en el evento AfterSelect del control TreeView. Así:
if (NodoSeleccionado.Ruta.CompareTo(NodoRaiz.Ruta) == 0)
BtnBorrarDirectorio.Enabled = false;
else
BtnBorrarDirectorio.Enabled = true;
MenuItemBorrarDirectorio.Enabled = BtnBorrarDirectorio.Enabled;
Saludos.
19 septiembre 2010
Cómo quitar del Windows la seguridad UAC

Cinco secillos pasos para deshacernos de las pesadas preguntas que Windows nos hace para evitar posibles cagadas:
1º. Vamos a Panel de control.
2º Cuentas de usuario.
3º Clicamo en Activar o desactivar el control de cuentas del usuario-.
4. Wala! Desactivamos la casilla de Usar el control de cuentas de usuario (UAC) para ayudar a proteger el equipo.
5º Tras esto, al pulsar el botón Aceptar nos preguntará si queremos reiniciar ahora o más tarde. Tras el reincio el Windows Vista, o 7, porque para sendos es igual, no será tan protector.
El dibujo lo saqué de esta web.
Saludos.
08 septiembre 2010
Reparar el acceso a internet en un Windows Vista
Tuve que arreglarle el ordenador a una amiga porque no tenía acceso a nternet usando su Windows Vista. Entonces busqué en Google y localicé esta web. En ella su propietario, mil gracias, nos indica que vayamos al Simbolo del sistema (ir a administración), y antes de abrirlo para meter comando, clicar sobre el icono con el botón derecho para abrirlo como Ejecutar como Administrador. Después, ya dentro, tecleen netsh winsock reset. Tras la ejecución del programa, deberás reiniciar el ordenador. Y walá! Funciona! Y sin rezar a dios.
Esta averia pudo suceder si se coló un virus. Con lo cual tras el reinicio, pase su anivirus para limpiar su pc de troyanos, gusanos y demás guarradas.
Cuando ejecutamos el comando netsh winsock reset, este limpia y resetea al estado de configuración por defecto, elimina todos los LSP (Layered Service Providers) previamente instalados, incluyendo el potencial LSP causante del mal funcionamiento para la conexión de red o internet.
Saludos y gracias al autor del blog, Gabriel Carpio por su aportación.
Esta averia pudo suceder si se coló un virus. Con lo cual tras el reinicio, pase su anivirus para limpiar su pc de troyanos, gusanos y demás guarradas.

Saludos y gracias al autor del blog, Gabriel Carpio por su aportación.
ANEXO ¿Qué es un Layered Service Provider (LSP)?: Layered Service Provider (LSP) es una característica de Microsoft Windows Winsock 2 Service Provider Interface (SPI).Layered Service Provider es una DLL que usa Winsock API para insertarse en la pila de TCP/IP. Una vez en la pila, un Layered Service Provider puede insertar y modificar entradas y salidas de tráfico de Internet. Esto pemite procesar todo el tráfico TCP/IP que tiene lugar entre la Internet y aplicaciones que están accesando Internet (tales como un navegador web, un cliente de correo electrónico, etc).Sacado de la Wikipedia.
05 septiembre 2010
Consejos de Rodrigo para futuro código con ASP, JavaScript, C Sharp, componentes Devexpress y no recuerdo qué más
El viernes el colega de trabajo Rodrigo se pasó buen rato ayudandome a resolver un código sencillo, pero repleto de errores por mi novatez.
Primero, el código javascript se tiene que separar de los archivos aspx porque así se gana limpieza. Estos nuevos archivos se llamarán como los aspx pero con extensión js. Y serán incluidos en los archivos form. De esta manera, siendo esto un ejemlo:
Y ojito con qué nombre ponen a ClientInstanceName, porque en los .js, a las variables de los asp, se las conoce por ese nombre. Se sugiere que el ID de un control y el clientinstancename sean el mismo.
Segundo, javascript es C. Sin enbargo, como en nuestro caso usamos herramientas DevExpress, tendremos que usar los métodos de estas herramientas. Para saber cuales son, pues vamos a la ayuda, y allí tecleamos el nombre del control.
Tercero, ah! Ojo, ojito... No podemos usar un visible común. Sino, que tenemos que usar un clientVisible. Porque la tenemos que visualizar o dejar de hacerlo, de lado del cliente, y no del lado del servidor. En tonces si usamos Visible, nos va a fallar.
Consejo, no vayan de listos, y... Otra cosa, observen si el navegdor seleccionado no dibuja una señal de advertencia.. Porque si lo hace, en el código tienen un error, aunque no se haya detectado en el depurador.
Otros consejos, pero de diseño: usen tablas, y siempre con el mismo número de columnas. Y otra cosa. Uff, no paro. Utilicen y reutilicen UserForm, porque así les va a cundir más.
Saludos.
Primero, el código javascript se tiene que separar de los archivos aspx porque así se gana limpieza. Estos nuevos archivos se llamarán como los aspx pero con extensión js. Y serán incluidos en los archivos form. De esta manera, siendo esto un ejemlo:


Tercero, ah! Ojo, ojito... No podemos usar un visible común. Sino, que tenemos que usar un clientVisible. Porque la tenemos que visualizar o dejar de hacerlo, de lado del cliente, y no del lado del servidor. En tonces si usamos Visible, nos va a fallar.
Consejo, no vayan de listos, y... Otra cosa, observen si el navegdor seleccionado no dibuja una señal de advertencia.. Porque si lo hace, en el código tienen un error, aunque no se haya detectado en el depurador.
Otros consejos, pero de diseño: usen tablas, y siempre con el mismo número de columnas. Y otra cosa. Uff, no paro. Utilicen y reutilicen UserForm, porque así les va a cundir más.
Saludos.
23 agosto 2010
Traducir componentes DevExpress

Estaba de los nervios esta mañana por no poder lograr este objetivo: traducir los componentes DevExpress del inglés al castellano, cuando mi supervisor a las 12.30 ha acudido a recatarme. Le he explicado qué quería hacer y me ha llamado melón (en su argot: tonto). Al momento ha cogido el mouse y se ha puesto a teclear en google y ha encontrado cómo hacerlo. Yo flipaba pensando qué del modo que él lo estaba haciendo se ahorraban muchos calentamientos de cabeza, a la par, que quedaba más profesional. Pero no logré quedarme muy bien con la coplilla, así que ahora, a las 16.51, me puse a buscar la soluciónj en google. No sé si será la misma.
Encontré esto, escrito en C sharp:
1. Añadir dos lineas para especificar el idioma en el proyecto (form_load):
// Necesario para traducir los componentes a Español2. Añadir la carpeta con los resources en la raíz del proyecto. Esta carpeta la puedes conseguir en el sitio oficial de DevExpress, donde deberás seleccionar el idioma deseado y tu versión de DevExpress.
/*1º linea*/
System.Threading.Thread.CurrentThread.CurrentCulture =
new System.Globalization.CultureInfo("es-ES");
/*2º linea*/
System.Threading.Thread.CurrentThread.CurrentUICulture =
new System.Globalization.CultureInfo("es");
Los pasos los he copiado literalmente de http://www.joselite.com/traducir-componentes-devexpress. Al que pido perdón si molesto. Y doy gracias por su ayuda.
Suscribirse a:
Entradas (Atom)