Mostrando entradas con la etiqueta Windows. Mostrar todas las entradas
Mostrando entradas con la etiqueta Windows. Mostrar todas las entradas

Switch USB Modem ZTE from USB DISK/FLASH to MODEM

  1. Connect modem to Windows machine
  2. Connect to modem (COM port) with terminal (PuTTY or other) (115200bps, Data bits: 8, Parity: None, Stop bits: 1, Flow Control: None).
  3. Send AT commands:
    AT+ZOPRT=5
    
    AT+ZCDRUN=8

Windows Server 2008: Politicas de Contraseña


Por defecto, Microsoft Windows Server 2008 nos pide a los usuarios del grupo Administradores cumplir con utilizar contraseñas seguras. Los usuarios domésticos a menudo sólo quieren crear sus propias contraseñas o dejarlo en blanco sin cumplir ninguna de las políticas. Este tutorial se explica cómo deshabilitar estos requisitos de complejidad!
1.- Haga clic en Ejecutar en el menú Inicio, escriba gpedit.msc y luego haga clic enAceptar. En el Editor de directivas de grupo local expanda Configuración del equipo -> Configuración de Windows -> Configuración de seguridad ->Directivas de cuenta y haga clic en Directiva de contraseñas.
2.- En el panel derecho, haga clic doble contraseña debe cumplir los requisitos de complejidad y ponerlo a personas de movilidad reducida. Haga clic enAceptar para guardar los cambios. Ahora ya no se verán obligados a utilizar contraseñas seguras, incluso se puede usar una en blanco!
3.- Opcionalmente también se puede optar por no dejar que expiran sus contraseñas. Para ello, abra la vigencia máxima de la contraseña y el conjunto establecer el valor a 0. Haga clic en Aceptar para guardar el cambio en la política!

Tips SQLeros: Saber cuando arranco el servidor windows

Bueno les comparto rápidamente un tip para saber desde que hora esta prendido un servidor... con windows. vamos a Inicio->Ejecutar->CMD, en la consola escribimos el siguiente comando: 
net statistics server 
ó
systeminfo | find "System Up Time"
Y con esto tenemos el tiempo en el que inicio el server. 

Menú para “Todos los usuarios” en Windows Vista, Windows 7 Windows 2008 y demás ediciones superiores


En las ediciones de Windows si queríamos agregar un elemento al Menú Inicio para todos los usuarios se podía ir al menú contextual del menú Inicio de Windows tal como se muestra en la imagen. Sin embargo en la ediciones de Windows Vista, Windows 7 Windows 2008 y demás ediciones superiores ese menú ha desaparecido.
Menú todos los usuarios Windows
El lugar donde ahora se encuentra la carpeta del Menú para todos los usuarios está en C:\ProgramData\Microsoft\Windows\Start Menu (Típicamente C: o la unidad donde esté instalado el sistema operativo). Aquí se pueden crear todos los accesos directos que se necesiten y estarán habilitados para todos los usuarios. Se puede ir directamente a esta carpeta, pero está oculta por defecto, así que sería necesario seleccionar la opción “Mostrar archivos, carpetas y unidades ocultos” de “Opciones de Carpeta y búsqueda” del menú organizar en el explorador de Windows.
Si se trata de acceder directamente a la carpeta “C:\Users\All Users\Start Menu”, se mostrará un mensaje de acceso denegado, porque a pesar del nombre, no es el lugar que se debería usar de todas formas. Para eso se usa la carpetaC:\ProgramData\Microsoft\Windows\Start Menu.

Montar servidor de SVN Casero


Un sistema de control de versiones nos permite guardar un historial de las modificaciones que van sufriendo los archivos de un proyecto. Cada vez que guardamos una modificación el sistema
crea marcas que nos permitirán volver a un estado anterior o ver los cambios que se han realizado entre dos marcas. Este tipo de sistema son imprescindibles en equipos donde trabajen dos o más personas en el mismo proyecto, ya que entre otras cosas, el sistema permite realizar mezclas de ficheros, o lo que es lo mismo juntar los cambios que dos personas han realizado sobre un mismo elemento.
Actualmente podemos encontrar muchos sistemas de control de versiones como por ejemplo:
Image Alt Text
Tras aceptar la condiciones, seleccionamos “VisualSVN Server and Management Console” ya que es la primera vez que instalamos el VisualSVN Server. En instalaciones posteriores podemos instalar la consola nada más. Si queremos administrar un servidor remoto, está es la opción
que debemos seleccionar.
Image Alt Text
Aquí podremos cambiar la ruta de instalación del VisualSVN Server y la ruta que se usará para almacenar los proyectos creados. En mi caso he dejado estos valores como vienen, aunque he desactivado la opción de “Use secure connectionhttps://) ” ya que no lo veo necesario para un servidor doméstico. También he cambiado el puerto a 8080 ya que el VisualSVN nos da una interfaz web para acceder a los repositorios, pero el 80 (valor por defecto) ya está siendo usado por el IIS. La autenticación la dejo en manos del subversion.
Image Alt Text
Una vez montado el sistema de control de versiones veamos como se usa. Lo primero que quiero comentar es que no he encontrado ningún cliente (que me guste) SVN que se integré con el Visual Studio así que siempre uso el TortoiseSVN que se integra perfectamente con el Explorador de Windows. Al igual que hicimos con el VisualSVN Server, lo primero que haremos será ir a la página de descargas y bajarnos la última versión. Una vez descargada la instalaremos.
Image Alt Text
En mi caso dejo todo como viene por defecto
Image Alt Text
Instalamos
Image Alt Text
Bien, con esto ya tenemos montado el sistema de control de versiones y el cliente que usaremos para “conectarnos”. Para la próxima entrega dejo como crear un repositorio y como subir (commit) y bajar (update) elementos del mismo.

Microsoft Visual Studio 2010 En Castellano

Visual Studio 2010 es la nueva versión del entorno de desarrollo integrado para sistemas Windows que incorpora nuevas características mejoradas que hacen que todo el proceso de desarrollo, desde el diseño a la implementación, sea más sencillo.

Con este lanzamiento Visual Studio 2010 cuenta con versiones en inglés, francés, alemán, japones y español.

Visual Studio 2010 dispone de las soluciones, 2010 Profesional, 2010 Premium, 2010 Ultimate y Test Profesional 2010 que podrás compararse desde www.microsoft.com.

Interesados pueden encontrar más información acerca de Visual Studio 2010 así como acceder a la compra o descarga de una versión de prueba desde www.microsoft.com.

El móvil de Hansel y Gretel

Anoche le contaba a la Nina un cuento infantil muy famoso, el Hansel y Gretel de los hermanos Grimm. En el momento más tenebroso de la aventura los niños descubren que unos pájaros se han comido las estratégicas bolitas de pan, un sistema muy simple que los hermanitos habían ideado para regresar a casa.Hansel y Gretel se descubren solos en el bosque, perdidos, y comienza a anochecer. Mi hija me dice, justo en ese punto de clímax narrativo: “No importa. Que lo llamen al papá por el móvil”.


Yo entonces pensé, por primera vez, que mi hija no tiene una noción de la vida ajena a la telefonía inalámbrica. Y al mismo tiempo descubrí qué espantosa resultaría la literatura —toda ella, en general— si el teléfono móvilhubiera existido siempre, como cree mi hija de cuatro años. Cuántos clásicos habrían perdido su nudo dramático, cuántas tramas hubieran muerto antes de nacer, y sobre todo qué fácil se habrían solucionado los intríngulis más célebres de las grandes historias de ficción.
Piense el lector, ahora mismo, en una historia clásica, en cualquiera que se le ocurra. Desde la Odisea hasta Pinocho, pasando por El viejo y el mar, Macbeth, El hombre de la esquina rosada o La familia de Pascual Duarte. No importa si el argumento es elevado o popular, no importa la época ni la geografía.


Piense el lector, ahora mismo, en una historia clásica que conozca al dedillo, con introducción, con nudo y con desenlace.


¿Ya está?
Muy bien. Ahora ponga un teléfono móvil en el bolsillo del protagonista. No un viejo aparato negro empotrado en una pared, sino un teléfono como los que existen hoy: con cobertura, con conexión a correo electrónico y chat, con saldo para enviar mensajes de texto y con la posibilidad de realizar llamadas internacionales cuatribanda.


¿Qué pasa con la historia elegida? ¿Funciona la trama como una seda, ahora que los personajes pueden llamarse desde cualquier sitio, ahora que tienen la opción de chatear, generar videoconferencias y enviarse mensajes de texto? ¿Verdad que no funciona un carajo?


La Nina, sin darse cuenta, me abrió anoche la puerta a una teoría espeluznante: la telefonía inalámbrica va a hacer añicos las nuevas historias que narremos, las convertirá en anécdotas tecnológicas de calidad menor.


Con un teléfono en las manos, por ejemplo, Penélope ya no espera con incertidumbre a que el guerrero Ulises regrese del combate.


Con un móvil en la canasta, Caperucita alerta a la abuela a tiempo y la llegada del leñador no es necesaria.


Con telefonito, el Coronel sí tiene quién le escriba algún mensaje, aunque fuese spam.


Y Tom Sawyer no se pierde en el Mississippi, gracias al servicio de localización de personas de Telefónica.


Y el chanchito de la casa de madera le avisa a su hermano que el lobo está yendo para allí.


Y Gepetto recibe una alerta de la escuela, avisando que Pinocho no llegó por la mañana.


Un enorme porcentaje de las historias escritas (o cantadas, o representadas) en los veinte siglos que anteceden al actual, han tenido como principal fuente de conflicto la distancia, el desencuentro y la incomunicación. Han podido existir gracias a la ausencia de telefonía móvil.


Ninguna historia de amor, por ejemplo, habría sido trágica o complicada, si los amantes esquivos hubieran tenido un teléfono en el bolsillo de la camisa. La historia romántica por excelencia (Romeo y Julieta, de Shakespeare) basa toda su tensión dramática final en una incomunicación fortuita: la amante finge un suicidio, el enamorado la cree muerta y se mata, y entonces ella, al despertar, se suicida de verdad. (Perdón por el espoiler.)


Si Julieta hubiese tenido teléfono móvil, le habría escrito un mensajito de texto a Romeo en el capítulo seis:


M HGO LA MUERTA,PERO NO STOY MUERTA.NO T PRCUPES NIHGAS IDIOTCES. BSO.


Y todo el grandísimo problemón dramático de los capítulos siguientes se habría evaporado. Las últimas cuarenta páginas de la obra no tendrían gollete, no se hubieran escrito nunca, si en la Verona del siglo catorce hubiera existido la promoción “Banda ancha móvil” de Movistar.


Muchas obras importantes, además, habrían tenido que cambiar su nombre por otros más adecuados. La tecnología, por ejemplo, habría desterrado por completo la soledad en Aracataca y entonces la novela de García Márquez se llamaría ’Cien años sin conexión’: narraría las aventuras de una familia en donde todos tienen el mismo nick (buendia23, a.buendia, aureliano_goodmornig) pero a nadie le funciona el messenger.


La famosa novela de James M. Cain —’El cartero llama dos veces’— escrita en 1934 y llevada más tarde al cine, se llamaría ’El gmail me duplica los correos entrantes’ y versaría sobre un marido cornudo que descubre (leyendo el historial de chat de su esposa) el romance de la joven adúltera con un forastero de malvivir.


Samuel Beckett habría tenido que cambiar el nombre de su famosa tragicomedia en dos actos por un título más acorde a los avances técnicos. Por ejemplo, ’Godot tiene el teléfono apagado o está fuera del área de cobertura’, la historia de dos hombres que esperan, en un páramo, la llegada de un tercero que no aparece nunca o que se quedó sin saldo.


En la obra ’El jotapegé de Dorian Grey’, Oscar Wilde contaría la historia de un joven que se mantiene siempre lozano y sin arrugas, en virtud a un pacto con Adobe Photoshop, mientras que en la carpeta Images de su teléfono una foto de su rostro se pixela sin remedio, paulatinamente, hasta perder definición.


La bruja del clásico ’Blancanieves’ no consultaría todas las noches al espejo sobre “quién es la mujer más bella del mundo”, porque el coste por llamada del oráculo sería de 1,90€ la conexión y 0,60€ el minuto; se contentaría con preguntarlo una o dos veces al mes. Y al final se cansaría.


También nosotros nos cansaríamos, nos aburriríamos, con estas historias de solución automática. Todas las intrigas, los secretos y los destiempos de la literatura (los grandes obstáculos que siempre generaron las grandes tramas) fracasarían en la era de la telefonía móvil y del wifi.


Todo ese maravilloso cine romántico en el que, al final, el muchacho corre como loco por la ciudad, a contra reloj, porque su amada está a punto de tomar un avión, se soluciona hoy con un SMS de cuatro líneas.


Ya no hay ese apuro cursi, ese remordimiento, aquella explicación que nunca llega; no hay que detener a los aviones ni cruzar los mares. No hay que dejar bolitas de pan en el bosque para recordar el camino de regreso a casa.


La telefonía inalámbrica —vino a decirme anoche la Nina, sin querer— nos va a entorpecer las historias que contemos de ahora en adelante. Las hará más tristes, menos sosegadas, mucho más predecibles.


Y me pregunto, ¿no estará acaso ocurriendo lo mismo con la vida real, no estaremos privándonos de aventuras novelescas por culpa de la conexión permanente? ¿Alguno de nosotros, alguna vez, correrá desesperado al aeropuerto para decirle a la mujer que ama que no suba a ese avión, que la vida es aquí y ahora?


No. Le enviaremos un mensaje de texto lastimoso, un mensaje breve desde el sofá. Cuatro líneas con mayúsculas. Quizá le haremos una llamada perdida, y cruzaremos los dedos para que ella, la mujer amada, no tenga su telefonito en modo vibrador. ¿Para qué hacer el esfuerzo de vivir al borde de la aventura, si algo siempre nos va a interrumpir la incertidumbre? Una llamada a tiempo, un mensaje binario, una alarma.


Nuestro cielo ya está infectado de señales y secretos: cuidado que el duque está yendo allí para matarte, ojo que la manzana está envenenada, no vuelvo esta noche a casa porque he bebido, si le das un beso a la muchacha se despierta y te ama. Papá, ven a buscarnos que unos pájaros se han comido lasmigas de pan.


Nuestras tramas están perdiendo el brillo —las escritas, las vividas, incluso las imaginadas— porque nos hemos convertido en héroes perezosos.


por Hernán Casciari

Crear Servicio Web En PHP Con NüSoap

1.- Para que funcione el ejemplo descárgate las clases de NüSOAP desde la pagina del proyecto http://sourceforge.net/projects/nusoap/.

2.- Después descomprimes ese archivo y lo copias a tu sitio web (para este ejemplo el sitio se llama miwebservice y los archivos de NuSOAP los puse en un directorio llamado lib-nusoap.

3.- Luego ejecutas en tu Servidor MySQL el script de la Base de Datos db_productos.sql que lo puedes descargar desde esta pagina.

4.- Luego crea una pagina PHP (en este ejemplo la pagina se llama servicioweb.php) y codificas lo siguiente:
[sourcecode language="php"]
< ?php
require_once('lib-nusoap/nusoap.php');

$server = new soap_server;

$ns="http://localhost/aplicativo"; // espacio de nombres; Sitio donde estará alojado el web service
$server->configurewsdl('MiWebService'); //nombre del web service
$server->wsdl->schematargetnamespace=$ns;

/************ REGISTRANDO EL ARRAY A DEVOLVER(array de productos) **************/
$server->wsdl->addComplexType(
'ArregloProductos', // Nombre
'complexType', // Tipo de Clase
'array', // Tipo de PHP
'', // definición del tipo secuencia(all|sequence|choice)
'SOAP-ENC:Array', // Restricted Base
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Productos[]') // Atributos
),
'tns:Productos'
);

/************ REGISTRANDO LA ESTRUCTURA DE DATOS PRODUCTOS **************/
$server->wsdl->addComplexType('Productos', 'complexType', 'struct', 'all', '',
array(
'ProductoID'=> array('name' => 'ProductoID','type' => 'xsd:int'),
'Nombre' => array('name' => 'Nombre', 'type' => 'xsd:string'),
'Precio' => array('name' => 'Precio', 'type' => 'xsd:string')
)
);

/*METODO DEL WEB SERVICE*/
function ListarProductos($estado){
if($estado!=''){
$db = new mysqli(); //mysqli exclusivo para usar procedimientos almacenados
$db_result = $db->connect ("localhost", "root", "","db_productos");
$sql=sprintf("call usp_ListarProductos('%s');",$estado); //intentando filtrar el SQL Injection
$result = $db->query($sql);
if (mysqli_errno($db)) printf("mySQL error %s\n", $db->error); //si es que hubo error se muestra
$db->close();
$i=0;
if($result->num_rows>0){
while($row = mysqli_fetch_assoc($result)){
$toc[$i]['ProductoID'] = $row["producto_id"];
$toc[$i]['Nombre'] = $row["nombre"];
$toc[$i]['Precio'] = $row["precio"];
$i++;
}
$result->free; //liberando memoria
return $toc;
}
}
return '';
}

/************ REGISTRANDO EL METODO **************/
$server->register(
'ListarProductos', // Nombre del Método
array('estado' => 'xsd:string' ), // Parámetros de Entrada
array('return' => 'tns:ArregloProductos') //Datos de Salida
);

/******PROCESA LA SOLICITUD Y DEVUELVE LA RESPUESTA*******/
$input = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : implode("\r\n", file('php://input'));
$server->service($input);
exit;
?>
[/sourcecode]



Si deseas puedes descargar el ejemplo completo desde aquí. Varios usuarios me han hecho la observación en la cual no funciona el código, esto es por el nombre de la carpeta comprimida que llame SQLeros-NüSoapEjemplo.zip, para que funcione bien solo cambienle el nombre por: SQLeros-NuSoapEjemplo.zip

También veremos como consumir el servicio desde C#,VB.Net y Java. Saludos

Ctrl Alt Supr

Enero de 2004. La prensa especializada deja caer entre sus artículos uno dedicado a un ingeniero de IBM que despues de muchos años abandona la empresa. ¿Qué puede tener de especial una persona para merecer ese titular? El protagonista de esta historia se llama David J. Bradley. Tiene 55 años. Formó parte del equipo que creó el primer ordenador personal. Debe sus quince minutos de fama a haber sido quien ideó la combinación de teclas "Control+Alt+Supr" para reiniciar un ordenador.


Por esta razón Bradley entra en el Club de los Históricos de ARRAI.


¿Cuantas veces hemos usado esta combinación de teclas para reiniciar nuestros equipos? El "Control+Alt+Supr" (en inglés "Control+Alt+Delete") es uno de los pequeños iconos culturales del mundillo de la informática.


Corría el año 1981. 12 ingenieros, "los 12 del patíbulo", creaban en los laboratorios de IBM situados en Boca Ratón, Florida, el primer ordenador personal, el IBM-PC. Entre ellos estaba David J. Bradley. Fue el encargado de diseñar la BIOS de aquel primer equipo de uso doméstico. El resto de su trabajo para el "gigante azul" queda empañado por la anécdota: la creación del código de reinicio del PC.



El ingeniero David Bradley


Entró en IBM en 1975, y formó parte a partir de 1980 del equipo que desarrolló el primer ordenador personal. Entre otras cosas, es responsable del código de la ROM BIOS que llevaban los primeros PCs. Despues de 28 años y medio en IBM, Bradley la abandonó en enero de 2004. En la actualidad continúa impartiendo clase en la Universidad Estatal de Carolina del Norte. Para este ingeniero en electricidad e informática, cuantos más estudiantes vayan a carreras de ciencia y tecnología, mayor será la fuerza económica del país (en su caso, de los Estados Unidos).


David J. Bradley



Control Alt Delete


¿Por qué se desarrolló esta función? Bradley explica que a principios de los 80 en IBM se estaban haciendo pruebas de forma intensa con nuevo hardware y nuevo software. Esto provocaba que los ordenadores se quedasen colgados con facilidad. Para volver a arrancar un equipo era necesario apagarlo, esperar unos segundos a que reposara para no provocar daños al hardware, volver a arrancarlo y esperar por las rutinas de autocomprobación que ejecutaba el PC. Se tardaba más de un minuto en volver a tener el equipo operativo.


La idea de Bradley era crear un mecanismo que permitiese el reinicio "en caliente", sin tener que seguir todo ese proceso. El ahorro de tiempo era considerable, y por eso esta funcionalidad, que en un principio estaba destinada únicamente a ser conocida por los desarrolladores de IBM, se difundió paulatinamente entre el público.


¿Porqué esas tres teclas?


¿Por qué estas tres teclas? Se trataba de encontrar una combinación que no se pudiese teclear por accidente. Se eligieron dos teclas de uso poco común (Control y Alt) y la tercera se buscó justo al otro lado del teclado. Al principio Bradley pensó en la tecla "+", pero creyó que DELETE tendría más sentido. Una vez definida la solución, Bradley afirma que programarla no le llevó más de cinco minutos.



La actualidad de "Control Alt Delete"


Ya no es lo que era, ahora es más. Las versiones de Windows 2000 y XP capturan esta combinación y ofrecen un panel de opciones: el administrador de tareas, cerrar sesión o apagar de forma civilizada. En los casos extremos en que esto ya no funciona, no hay más remedio que volver al fatídico botón de reset.


Tambien se incorpora en Windows 2000 para arranque de sesión, con lo que "Control+Alt+Supr", tambien conocido como "La llave de Vulcano", o "El saludo de los tres dedos", ha dejado definitivamente de ser un truco no escrito a ser una combinación de teclas de obligado conocimiento, mucho más usada si cabe.



Hacerlo famoso


Cuando se celebraba el vigésimo aniversario de la creación del Pc, compartían escenario en una mesa redonda Bill Gates y David Bradley, entre otros. Durante una parte del evento, el tema de conversación era el mecanismo de reinicio. En el vídeo cuyo enlace ofrecemos se puede oir a Bradley bromeando con Gates, aunque este último no pone cara de estar divirtiéndose. Bradley dice: "Hacerlo llevó cinco minutos, no sabía que iba a crear un icono cultural. Pero tengo que compartir el mérito, puede que yo lo haya inventado, pero ha sido Bill el que lo ha hecho famoso."


Seguramente, Bradley fue el primer sorprendido por la fama alcanzada por su código. Algo que en principio era simple, que no llevó más de cinco minutos, se acaba convirtiendo en un icono cultural. Quizá esto nos puede enseñar a apreciar los detalles y los trabajos pequeños. Si están bien hechos y son útiles, pueden convertirse en algo con un gran significado.


La idea de Bill Gates es distinta. Adoptó el código de Bradley, le era útil y lo utilizó como un complemento para construir algo mayor. Es tambien una forma de ver como lo que hacemos, si lo compartimos, puede servirle a otra gente. Aunque podemos adivinar que Gates hubiese preferido que el "Ctrl+Alt+Supr" no fuese tan conocido por sus usuarios.


Ahora una rola del reno renardo al respecto.


Ctrl Alt Supr - Reno Renardo

Sistema de Boletaje para Terminales de Autobuses

Hola el día de hoy les presento una de mis mas recientes creaciones es un pequeño sistema para la venta de boletos de una terminal de autobuses, es algo sencillo y todavía le falta pulirlo mas pero para los fines didácticos es mas que suficiente.

Encontrar el valor de un Window Message

De vez en cuando, si trabajamos con WinForms, nos puede surgir la necesidad de manejar un evento a muy bajo nivel y para hacerlo tenemos que interceptar los famosos Window Messages, o mensajes de ventana. Estos mensajes son el mecanismo que utiliza Windows para comunicarse con una aplicación. Cuando apretamos una tecla y nuestra aplicación responde, parece que es nuestra aplicación la que ‘atrapó’ el teclazo, pero en realidad es el Sistema Operativo (SO) el que lo atrapó (debido a que el SO es quien controla el puerto donde esta conectado el teclado) y este le envía un mensaje a nuestra aplicación para que responda al mismo, normalmente imprimiendo el caracter representado por la tecla presionada. Aunque no lo parezca, el SO es quien tiene control de todo lo que sucede y cuando nuestra aplicación responde a distintos inputs, es en realidad el SO el que le ordena que haga una cosa u otra.


Si tenemos un Form y el SO determina que es necesario que sea redibujado (porque cambio su contenido por ejemplo), entonces se envía un mensaje conocido como WM_PAINT (en .NET veremos que esto dispara el evento Paint), en cambio si presionamos la tecla ‘Q’ en el teclado, entonces el mensaje recibido por nuestra aplicación es WM_KEYDOWN (también tenemos el evento KeyDown en .NET, el cual es lanzado cuando se recibe un mensaje de este tipo). Cabe aclarar que el nombre de los mensajes es solo una ayuda para nosotros los humanos, ya que los mensajes en realidad no son más que un valor entero, y estos nombres son los nombres de las constantes asociadas a los mismos.


Para interceptar estos mensajes lo que se suele hacer comúnmente es sobrescribir el métodoWndProc definido en la clase Control de la siguiente manera:



 1: ...

   2: private const int WM_PAINT = 15;

   3:

   4: protected override void WndProc(ref Message m) {

   5:

   6:     if (m.Msg == WM_PAINT) {

   7:         // Atrapamos el mensaje...

   8:     } else{

   9:         // Ignoramos el mensaje y dejamos que siga su curso

  10:         base.WndProc(ref m);

  11:     }

  12:

  13: }

  14: ...

El método WndProc es el que se encarga de procesar todos los mensajes que recibe un Form y es por eso que ese es el punto indicado para atraparlos.


Ahora el problema esta en conocer el valor de los mensajes, ya que muchas veces uno sabe que mensaje procesar, pero no sabe cual es su valor. Estos valores están definidos en la claseSystem.Windows.Forms.NativeMethods y System.Design.NativeMethods, pero lamentablemente estas clases son internas y no tenemos acceso a ellas, por lo que vamos a tener que usar .NET Reflector para ver su contenido.


La info de este post fue sacada de aquí.


Saludos

MonoDevelop 2.2 Beta 1: We go cross platform.

MonoDevelop goes cross platform.

Since the beginning of time, man has yearned to get a cross platform .NET IDE. Homer's Odyssey described one man's effort to achieve such a thing. And it was not until today, September 9th of 2009 that the world can test out such a tool.

With this release MonoDevelop leaves its cozy Linux nest and embarks on a wild adventure into the hearth of MacOS and Windows. The MonoDevelop team made this one of their major goals for this release: to turn our loved IDE into a cross platform IDE.

If you are curious about the details, check out the What is new in MonoDevelop 2.2 page.



MonoDevelop on Windows

We are not only bringing MonoDevelop to OSX and Windows as a plain GUI port, but we are also providing installers, deep operating system integration and support for native debugging on each platform.



MonoDevelop on MacOS X

In addition to becoming a cross platform IDE, there are many new features in MonoDevelop.

For instance, MonoDevelop can be used to develop ASP.NET MVC applications on OSX and Linux and Silverlight applications on OSX and Linux.

Debugger


MonoDevelop now has integrated debugger support. Not only it is able to debug Mono applications, it also can work as a frontend to GDB to debug native applications.

In addition, on Linux it is possible to debug ASP.NET pages.

New Add-ins


New exciting add-ins: ASP.NET MVC, Silverlight and iPhone (for use with MonoTouch).

Policies


A common problem that we face as open source developers is that not every project uses the same coding style. Different teams use different coding conventions. MonoDevelop now supports policies to describe how files should be edited and what defaults should be used in each:


Editor Improvements


My favorite new feature is Dynamic Abbrev (Alt-/) a feature that we brought from Emacs and that fills me with joy. That being said, for the non-Emacs lovers there are plenty of features that you asked for, and that we implemented:

  • Extensive refactoring support. And I mean, it is extensive.

  • Code templates.

  • On the fly formatting.

  • Acronym Matching in Code Completion

  • XML Documentation Shown in Code Completion

  • VI mode for those users hooked up on VI commands, they can now use those within MonoDevelop.


Another pretty cool feature is the code generation support that is triggered with Alt-Insert. When you press Alt-insert it will popup a context sensitive dialog box that offers a few options of code that could be generated at this point: ToString methods, Equals/GetHashCode methods all based on existing fields and properties.

Why go Cross Platform?


Going cross platform means that developers will have the same tool across all of the operating systems they use: Windows, Mac and Linux.

.NET developers that have been enchanted by OSX will be able to continue developing software with their favorite programming languages while enjoying OSX and will be able to go back and forth between Windows, OSX and Linux as needed. This also means that they can work with developers in other platforms, regardless of the personal choices of other team members.

As many of you know, the number of contributors to a project is linked to the number of users of that project. By expanding our market presence from Linux, we expect to get contributions, fixes, improvements, bug reports, code and add-ins from developers in other platforms.

We intend to make MonoDevelop the Eclipse of the .NET community. Just like Eclipse became the foundation for Java development, we hope that MonoDevelop will become the foundation for .NET development, and hopefully for much more than that.

A multi-system IDE


We are not religious when it comes to supporting other programming languages [1]. We want to embrace not only .NET-based projects like Gtk#, Silverlight, ASP.NET, Boo, C#, F#, Visual Basic and Windows.Forms. We are also embracing other developer platforms like Python, C/C++, Vala, and we want to expand our presence to work with the Flash, PHP, Ruby, Rails, Flex and any other communities that need a cross platform IDE.

[1] we are just religious about the fact that C# is a better programming language to build an IDE than Java is.

Thanks!


This release could not have been possible without the endless nights and the collaborations of our contributors and all of the end users that reported bugs and gave us feedback.

Posted by Miguel de Icaza on 09 Sep 2009

Replicando Datos En Oracle

Introducción


El presente documento muestra la forma de replicar de manera sencilla los datos de una base de datos en oracle hacia otro servidor oracle, mediante el uso de vistas materializadas.


La replicación te permite tener una copia exacta de una base de datos alojada en un servidor (maestro) que se guardará en otro servidor (esclavo). Todas las modificaciones que se hagan en la base de datos del servidor maestro se actualizarán inmediatamente en el servidor esclavo.


Esto no es una copia de seguridad, ya que si borramos una fila en la base de datos maestra, también se borrará en la base de datos esclava.


A continuación tenemos los pasos para instalar y configurar nuestro servidor para replicar datos.



Instalando Oracle.


Para nuestro caso usaremos la de oracle llamada oracle Express Edition, la cual es gratuita para nuestro servidor. Nos dirigimos a la página:


http://www.oracle.com/technology/software/products/database/xe/htdocs/102xewinsoft.html


Y aceptamos los términos de licenciamiento del programa, en este momento descargaremos el producto para posteriormente instalarlo en nuestro sistema.





[caption id="attachment_51" align="aligncenter" width="300" caption="Descargando OracleXE"]Descargando OracleXE[/caption]


Una vez descargado lo instalaremos dando clic derecho en el instalador y eligiendo la opción, abrir.




[caption id="attachment_52" align="aligncenter" width="300" caption="Ejecutando el instalador"]Ejecutando el instalador[/caption]


Esperamos un momento y podremos ver las opciones del programa.




[caption id="attachment_53" align="aligncenter" width="300" caption="Opciones de configuracion"]Opciones de configuracion[/caption]

[caption id="attachment_54" align="aligncenter" width="300" caption="Instalacion OracleXE"]Instalacion OracleXE[/caption]

El programa de instalación nos muestra la pantalla de bienvenida para la instalación, en este momento tenemos que dar click en siguiente.





[caption id="attachment_55" align="aligncenter" width="300" caption="LicenciaDirectorio de instalacion"]Licencia[/caption]


Aceptamos los términos y condiciones del programa y pulsamos siguiente, en seguida seleccionamos la ubicación de los archivos de instalación, si queremos instalarlos en otra ubicación podemos seleccionarla pulsando el botón  Examinar, después de esto pulsamos siguiente.





[caption id="attachment_57" align="aligncenter" width="300" caption="Establecer contraseña"]Establecer contraseña[/caption]


Ahora tecleamos una contraseña para los usuarios SYS y SYSTEM, los cuales son los usuarios (dba) administradores en oracle, y pulsamos en siguiente, ahora nos mostrara un resumen de la instalación si estamos de acuerdo con este daremos clic en instalar.





[caption id="attachment_58" align="aligncenter" width="300" caption="Instalacion"]Instalacion[/caption]

Configurando El Servidor


Ahora editaremos el archivo “C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora”, y agregaremos las siguientes líneas de configuración (resaltadas en cursiva y negrita) para que el servidor oracle reconozca nuestro servidor remoto, usando una resolución de nombres tns.
# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora


# Generated by Oracle configuration tools.

LISTENER_ORCL =

(ADDRESS =

(PROTOCOL = TCP)

(HOST = RAMMSCORP.gateway.2wire.net)

(PORT = 1522)

)

ORCL =

(DESCRIPTION =

(ADDRESS =

(PROTOCOL = TCP)

(HOST = RAMMSCORP.gateway.2wire.net)

(PORT = 1522)

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

YOS =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS =

(COMMUNITY = TCP)

(PROTOCOL = TCP)

(HOST = yosy1)

(PORT = 1521)

)

)

(CONNECT_DATA =

(SID = XE)

)

)

EXTPROC_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS =

(PROTOCOL = IPC)

(KEY = EXTPROC1)

)

)

(CONNECT_DATA =

(SID = PLSExtProc)

(PRESENTATION = RO)

)

)
Donde YOS es el nombre del servidor remoto que agregamos, es decir un alias, PROTOCOL es el protocolo de comunicación hacia el servidor, HOST es el nombre ó la dirección IP de la computadora que tiene el servidor, PORT indica el numero de puerto al cual se conectara el servidor y finalmente SID que es el nombre de servicio del servidor remoto.


De esta manera nos podremos conectar con el servidor remoto usando la nomenclatura de conexión:


Usuario/Password@Alias_Del_Servidor:[Puerto]


Donde Usuario es cualquier usuario valido del servidor remoto, Password es la contraseña del usuario remoto, @Alias_del_servidor es el nombre que hemos añadido en el archivo de configuración tnsnames.ora, y finalmente el Puerto que indica a que puerto se conectara este parámetro es opcional, por defecto las conexiones se realizan al puerto 1521.


Una vez editado y configurado archivo, tendremos que configurar nuestro servidor estableciendo un DBLink ó un enlace a base de datos.


Usando la siguiente instrucción:




Create database link "Nombre_Del_DBLink" connect to Usuario identified by "Password" using 'HOST[: PUERTO]/SID'

De la siguiente instrucción tenemos Nombre_Del_DBLink el cual es un nombre cualquiera para identificar a que base de datos estamos ligados, Usuario el cual debe de ser un usuario remoto valido, Password es la contraseña del usuario remoto, HOST es el nombre ó dirección ip del servidor, PUERTO indica el numero del puerto al que se conectara el parámetro es opcional, el puerto por defecto es el 152, y por ultimo SID es el nombre del servicio al cual se conectara nuestro servidor.


La cual nos proporcionara la facilidad de hacer consultas del tipo:


Objeto@DBLink


Donde Objeto puede ser cualquier tipo de objeto en la base de datos remota y @DBLink es el enlace a la base de datos, de este modo podremos usar las tablas, vistas, triggers y demás objetos en el servidor.


Estos pasos de configuración se hacen en los dos servidores para que se puedan comunicar, es decir tenemos que dar de alta el servidor 1 en el servidor 2 y viceversa; además tenemos que dar de alta un DBLink para cada uno de ellos, una vez teniendo configurados los servidores podremos iniciar la replicación.



Replicando Datos


Ahora antes de replicar los datos tenemos que tener datos, necesitamos tener cuando menos una tabla en la base de datos, ahora crearemos una tabla para hacer esta práctica la cual llamaremos: COMPRAS; la cual estará en el servidor 1 (RAMMS) y será replicada hacia el servidor 2 (YOS). Utilizaremos las sentencias de SQL Plus para crear la tabla con los siguientes campos de la siguiente manera:



CREATE TABLE RAMMS.COMPRAS

(

CODIGO VARCHAR2 (8 BYTE) NOT NULL,

PROVEEDOR VARCHAR2 (30 BYTE) NOT NULL,

PRODUCTO VARCHAR2 (45 BYTE) NOT NULL,

PRECIOCOMPRA INTEGER NOT NULL,

PRECIOVENTA INTEGER NOT NULL,

CANTIDAD NUMBER NOT NULL

)

Y posteriormente:
ALTER TABLE RAMMS.COMPRAS ADD (

PRIMARY KEY

(CODIGO)

USING INDEX

TABLESPACE USERS

PCTFREE    10

INITRANS   2

MAXTRANS   255

STORAGE    (

INITIAL          64K

MINEXTENTS       1

MAXEXTENTS       UNLIMITED

PCTINCREASE      0

));

Después de crear la tabla agregaremos datos en ella, quedando de la siguiente manera:


Ahora realizaremos una consulta desde el servidor 2 (YOS) usando los DBLink, quedando de la siguiente manera:




[caption id="attachment_50" align="aligncenter" width="300" caption="Datos"]Datos[/caption]
SELECT * FROM COMPRAS@DBLINKRAMMS

Arrojando la siguiente información:

[caption id="attachment_50" align="aligncenter" width="300" caption="Datos"]Datos[/caption]

Como podemos observar la consulta funciona es decir que podemos consultar objetos desde el servidor 2, ahora crearemos en el servidor 1 (RAMMS), una tabla LOG para la replicación de la tabla COMPRAS, con la siguiente instrucción:



CREATE MATERIALIZED VIEW LOG ON RAMMS.COMPRAS

NOCACHE

LOGGING

NOPARALLEL;


Esta tabla guardara los datos cambiados y actualizara de manera instantánea todas las replicas de la tabla COMPRAS.


Ahora desde el servidor 2 (YOS) crearemos nuestra vista materializada para recibir los datos de la tabla original, a este procedimiento de replica se le denomina replica en forma de instantánea o de snapshot, lo haremos usando la siguiente instrucción.



CREATE MATERIALIZED VIEW RAMMS.COMPRAS

BUILD IMMEDIATE

REFRESH FAST ON COMMIT

AS

SELECT * FROM COMPRAS@DBLINKRAMMS;

Ahora en el servidor 2 (YOS), ya disponemos de una copia exacta de la tabla compras del servidor 1 (RAMMS), y se actualizara automáticamente cuando se haga un commit en las transacciones, ahora podemos ejecutar la sentencia:



SELECT * FROM COMPRAS;

E inmediatamente después podremos apreciar el resultado de la consulta, nótese que en el servidor 2,no existían datos para la tabla COMPRAS de hecho COMPRAS no es una tabla es una ¡vista!







[caption id="attachment_50" align="aligncenter" width="300" caption="Datos"]
Datos[/caption]




De esta manera cualquier cambio realizado en el servidor 1, se verá reflejado inmediatamente en el servidor 2, de esta manera tenemos la información actualizada y lo más importante distribuida en varios nodos al mismo tiempo.



Conclusión


En esta práctica aprendimos a hacer una replicación de instantánea de una tabla en oracle usando dos servidores uno que es el servidor que tiene la tabla a replicar (RAMMS) y un cliente (YOS)  el cual puede tener los datos de la tabla para consultar, cabe señalar que la vista materializada es de solo lectura, debido a que es una instantánea, también configuramos los accesos de los servidores mediante el archivo de configuración tnsnames.ora y dimos de alta los servidores en los archivos, lo que nos daba como resultado la comunicación entre ambos y logrando así poder generar el enlace de base de datos entre ellos. Teniendo la posibilidad de realizar consultas distribuidas entre los servidores. Finalizando en la creación de la tabla de LOGS y la vista materializada, para poder consultar los datos replicados de manera local.


Documento en Scribd ó ¡Descargalo!