Cómo: WPF: Cerrar ventana con Confirmación

Martes, Marzo 9, 2010 23:04
Publicado en categoría Sin categoría

Siguiendo el desarrollo que estoy haciendo en WPF, viene este código que te permite cerrar una ventana con un click confirmando antes de salir de la aplicación. Está en C#, y por lo que veo NO es lo mismo que en WinForms… luego haré la aplicación de eso. Lo bueno es que se complementa con la aplicación WPF sin borde de ventana que mostré hace unas horas.


MessageBoxResult result = MessageBox.Show("Quieres cerrar la aplicación?", "Confirmación", MessageBoxButton.YesNo,MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
Application.Current.Shutdown();
}

Saludos!

Cómo: WPF: Ventana sin bordes

Martes, Marzo 9, 2010 20:51
Publicado en categoría Sin categoría

Para crear una ventana sin borde en WPF:

En el tag Window debes agregar ‘WindowStyle=”None” ResizeMode=”NoResize”


<window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="prueba.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="200" Height="200" Background="#FF300606"  WindowStyle="None" ResizeMode="NoResize">

<grid x:Name="LayoutRoot">
<textBlock Margin="24,67,90,41" TextWrapping="Wrap" Foreground="White"><run Text="Ventana con Borde"/></textBlock>
</grid>
</window>

Con Borde:

Sin Borde:

Curiosidad Javascript [o "concatena en vez de sumar"]

Sábado, Febrero 13, 2010 3:57
Publicado en categoría Sin categoría

[En realidad no es una curiosidad sino que un error de lógica de programación]

Estoy armando un código para un generador… sí, a las 4AM., y me apareció la siguiente curiosidad en Javascript:

considerando que tengo un textbox con el nombre cantidad que comienza con un 1 como valor


var id = jQuery("#cantidad").val();
id=id+1;

al primer click me da 11

al segundo 111

al tercer 1111

Lo mismo con


var id =  jQuery("#cantidad").val();
id+=1;

La explicación, muy fácil, el valor id es un String, y lo que hace el + es concatenar el valor en vez de sumarlo.

La solución, aún más fácil, convertir el String en Int.

De la manera poco elegante:


id=(id*1)+1;

o de la de caballeros:


id=parseInt(id)+1;

Esto es parte del código inservible pero útil para los que no conozcan cómo parchar el error :P

Saludos

Tip: Cómo detectar con PHP si te visita un iPhone

Sábado, Enero 30, 2010 2:17
Publicado en categoría Sin categoría

Estoy trabajando un poco en sitios que “pueden ser visitados desde el iPhone” [así lo solicitó el cliente], el tema es que existen algunas funciones javascript para detectar que si usas jQuery te “bloquea” los efectos.

La solución es muy sencilla, aplicar el script en PHP como a continuación:
PHP<5.3.0

if (ereg('iPhone',$_SERVER['HTTP_USER_AGENT']))
{
header("Location:/iphone.html");
}

PHP>=5.3.0

if (preg_match("/iPhone/",$_SERVER['HTTP_USER_AGENT']))
{
header("Location:iPhone.php");
}

OJO: Es IMPORTANTE que si tiene PHP mayor o igual a 5.3.0 usen preg_match en lugar de ereg, por que ereg está OBSOLETO en PHP 5.3.0 y será eliminado en PHP 6.0.0

La función es muy sencilla ya que detecta si en la cadena del Agente del usuario [HTTP_USER_AGENT] incluye la palabra iPhone. Evidentemente esto es fácilmente manipulable por ejemplo en Firefox cambiando el User Agent en about:config colocando:

Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; es-es) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16

Deben reiniciar firefox una vez realicen esto

[Con el userAgent cambiado hasta mi blog lo cargó en modo iPhone]

[recuerda colocar de vuelta la configuración después de jugar (Firefox/x.x.x) [x.x.x = tu versión...] :P ]

Para que vean el ejemplo pueden navegar al ejemplo acá [agréguenle una x al .php para que vean el código fuente]..

y acá la captura desde el iPhone:

Saludos, y espeor haya sido de su utilidad este tip [Pronto espero presentarlo en ASP.net]

Ojo con el Banco Santander

Lunes, Enero 4, 2010 13:12
Publicado en categoría Sin categoría

El día 28 de diciembre de 2009 intenté realizar un giro desde mi cuenta corriente en el cajero automático de Banco Falabella ubicado en calle Colón de Talcahuano, el cuál no dispensó el dinero solicitado ($50.000.-) y se quedó con un mensaje “espere mientras realizamos la operación” [sí, aquí la embarré, estuve 5 minutos esperando y no le tomé foto] me acerqué al guardia de la entidad a indicarle el cuál me dijon “presiona Cancelar para que te devuelva la tarjeta y no realice la operación”. Me dirijí a otro cajero a sacar un estado de cuenta y me había descontado el monto. El mismo día lunes realicé el reclamo en el VOX de Santander y en el banco Falabella, los cuales se tiraron la pelota indicando que los sistemas AUTOMÁTICAMENTE LUEGO DE 48 HORAS HÁBILES IBAN A DEVOLVER EL DINERO POR ARQUEOS. El día miércoles esto NO sucedió por lo cuál llamé nuevamente al VOX quienes me indicaron que el banco me iba a devolver el dinero en 48 horas hábiles contando el día 31 (les pregunté si contaba el 31 pues sabía que era feriado bancario), el ejecutivo me contestó que SÍ contaba por lo cuál el dinero iba a estar disponible en mi cuenta el día 04 de enero a las 12:00.-
Lo indignante es que hoy a las 09:27 me llamaron de Santander indicándome que un cheque iba a ser protestado les indiqué que si ellos me devolvían los 50 mil que me habían ROBADO yo podía depositar la plata, porque aparte de robarse la plata se robaron la confianza que tenía en la institución, tuve que cubrir con plata de otra cuenta.
Hoy revisé la cuenta a las 12:25 y el dinero no se encontraba disponible, por lo cual llamé nuevamente al VOX y la ejecutiva me indicó que el saldo NO se me iba a devolver hasta 17 días hábiles más pues sobre $30.000.- el saldo no se devolvía automáticamente, solicité hablar con el supervisor, la ejecutiva me indicó que no se encontraba disponible pues estaba en una reunión, le indique que yo también debería estar en una reunión con un cliente y que me costaba ganarme el dinero de la misma manera que a ella, luego de 5 minutos en espera me comunicó con el supervisor quien se deshizo en disculpas pero no fue capaz de entregar una solución efectiva al tema, por lo cuál le solicité que apurara el tema o acaso el banco iba a ir a las otras instituciones donde debía cancelar esos 50.000.- a pedir disculpas, o si iba yo y decía “oye te las devuelvo mañana porque mi banco me las devuelve mañana” [el banco textualmente me dijo "mañana te las devuelvo"]. Acaso el banco me pagará los intereses que significan no disponer de ese dinero durante 8 días? Acaso ellos van a ir a hablar con las instituciones en las cuales debo pagar? Con qué confianza quieren que deposite el dinero en su institución?
Si yo no les pago el mismo día ellos me protestan los cheques, o peor me mandan a DICOM; en cambio si ellos no me pasan mi dinero cuando corresponde no se hacen responsables. Esto es INDIGNO.

El reclamo lo publiqué acá:

http://www.reclamos.cl/reclamo/2010/jan/banco_santander_robo_de_dinero

=================

Directamente esto es un robo, si yo no les pago ellos me pueden quitar todo; en cambio si ellos no me entregan el dinero lo aducen a un error del sistema, a que se cayó la red, a que falló un servidor [inclusive dijeron "nosotros como banco confiamos en el cliente y le devolvemos la plata temporalmente hasta que se investigue el tema" WTF SI ME ROBARON]. Oigan eso pasa pero por algo existen los arqueos DIARIOS de dinero, el 2004 trabajé en una empresa que realizaba el contéo de los cheques y 2 veces TODOS LOS DÍAS indicaban cuanto se debían las instituciones para ordenar los fondos, ¿creen ustedes que los cajeros AUTOMÁTICOS no hacen lo mismo?. El tema es que el cajero automático sabe perfectamente “giraron 3.050.000 y entregué 3.000.000″. Parece que la mejor caja de ahorro es El Colchón.

Tengan ojo con los bancos y cajeros, traten de sacar plata SOLAMENTE del cajero de su misma institución bancaria para que se hagan responsables directamente.

PD: Estoy pensando seriamente en ir con un bate a romper un monitor, total son como 50 lucas igual… :P

Felicitaciones a PCampos!!!

Domingo, Diciembre 27, 2009 11:55
Publicado en categoría Sin categoría

Hoy en el diario El Sur de Concepción mi profe  Pablo Campos [PCampos] apareció como uno de los 50 jóvenes destacados de la Región del BioBio.

Claramente el profe Pablo es un ejemplo a seguir por muchos de ustedes, tienen que colocarle Power al Estudio y aprender de diversas tecnologías no cerrarse o en Linux o en Microsoft.

Muchas felicitaciones para él!

MySQL – Error: You can't specify target table xxx for update in FROM clause

Jueves, Diciembre 17, 2009 0:27
Publicado en categoría Sin categoría

Hace unos mins estuve jugando con una consulta en MySQL para poder insertar el orden de la búsqueda :

INSERT INTO Tabla (nombre,fecha,texto,orden) values ('".$nombre."','".$fecha."','".$texto."',(select max(orden)+1 from Tabla))

pero me dió el error:
You can’t specify target table ‘Tabla’ for update in FROM clause
El error se da tanto en count, min, max
La solución simple es hacer un select desde una tabla “falsa” con un alias, mejor dicho en SQL:

INSERT INTO Tabla (nombre,fecha,texto,orden) values ('".$nombre."','".$fecha."','".$texto."',(
select max(orden)+1 from (select * from Tabla) as mi_tabla_falsa)
)

Creo que no es necesario explicar el códig, ¿o sí?

Nota Mental: Leer esto cuando tenga el mismo error :B

saludos!

Virtual Host con Apache y Windows 7

Martes, Noviembre 24, 2009 21:48
Publicado en categoría Sin categoría

Muchos saben que soy un AMANTE de PHP, que es mi lenguaje preferido para programar (sí, y eso que soy MSP). Hoy quisé puse a jugar con WordPress en local, pero no quiero mover la carpeta de mi servidor actual [tengo Apache e IIS andando en el PC]. El tema es que tengo que levantar un servidor local para probar el sistema. La solución es MUY simple, levantar un “dominio local” en Apache.

Para ello en el archivo de configuración de Apache [httpd.conf] hay que agregar unas líneas. [En mi caso utilizo Notepad++ como editor y AppServ como servidor Windows-Apache-MySQL-PHP]

Lo primero es iniciar el Notepad++ como Administrador [Segundo Click sobre el ícono de Notepad++ -> Ejecutar como Administrador], abriremos el archivo:

C:\AppServ\Apache2.2\conf\httpd.conf

Al final de este archivo agregaremos:

<nameVirtualHost *>

ServerAdmin brede@wplocal
DocumentRoot "C:/appserv/wp/" #La carpeta dónde almacenas los archivos
ServerName wp #El nombre de nuestro servidor
ErrorLog logs/WP-error.log
CustomLog logs/WP-access.log combined
CustomLog logs/WP-referer.log referer
CustomLog logs/WP-agent.log agent

</virtualHost>
<directory "C:/AppServ/wp">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</directory>

[Por motivo X acá se ve & g t ; y & l t ; en vez de > y < ]

Luego, debes abrir el archivo hosts de Windows, con el mismo Notepad++ abre este archivo:

%systemroot%\system32\drivers\etc\hosts

Agrega la línea

127.0.0.1       wp

reinicia tu servidor Apache [Debes iniciar CMD en modo Administrador]

httpd- k restart

y listo:
wp

Saludos!

Cómo: Protección Infantil con Windows Live

Viernes, Noviembre 20, 2009 9:56
Publicado en categoría Sin categoría

Wlm_logo-icEn la charla que dictamos en Curicó junto a Max hablamos de un tema muy importante para padres y adultos responsables: La seguridad Infantil, y cómo evitar que los pequeños accedan a sitios y/o a programas prohibidos para ellos.

Para ello necesitamos tener una cuenta Live [la de Hotmail, Messenger, XBOX, etc], si no tienes una puedes crear una gratuita acá o convertir la tuya en una acá.

Lo primero es instalar Windows Live Protección Infantil [viene en el paquete de instalación de Windows Live Messenger], si no lo tienes descárgalo acá.

Leer el resto de esta entrada »

Cómo: Obtener Office 2010 Beta

Miércoles, Noviembre 18, 2009 16:21
Publicado en categoría Sin categoría

El día lunes 16 apareció para todos los que tiene acceso MSDN la descarga de Office Professional Plus 2010. Pero también apareció para todo el mundo, para descargarlo debes acceder a esta página (debes tener cuenta Live [La de Messenger, un Hotmail, la de XBOX, etc]).

SS-2009.11.18-16.14.19

Leer el resto de esta entrada »