Yohan vs Alexjcaballero

Tenia tiempo de no publicar un juego de ajedrez pero precisamente este fin de semana estaba como de costumbre echandome una partidita de ajedrez online, mi asombro fue cuando buscando una partida alguien que tenia un rating de 1935 en chessbase acepto la partida, yo siempre he sido un jugador empirico a excepcion de el taller que tomamos yo y mi novia Bris cuando vino el gran maestro cubano Juan Carlos Gonzalez (naturalizado mexicano) aqui a Hermosillo lo cual me dio un panorama mucho mas amplio de lo que es una partida de ajedrez,

Creo que parte del exito de esta partida lo debo a eso, pues aqui dejo la partida y cualquier comentario es bienvenido,
Saludos! :)

Caliburn y Silverlight ejemplo sencillo..

Estos ultimos dias he estado checando Caliburn (MVVM framework) debido a la posibilidad de trabajar con el en un futuro cercano, asi que he decidido postear un muy parecido ejemplo al que publique hace poco donde trabajaban un expander y un splitter de manera conjunta, ahora como estoy utilizando Silverlight pues voy a deberles el expander ya que al parecer ese control no es soportado por esta tecnologia :( tal vez en el Silverlight Toolkit venga uno pero ese sera un tema para despues..

Caliburn me ha dejado impresionado con la cantidad de cosas que puedes hacer con tan poco codigo debido a la manera que esta diseniado el framework practicamente te permite enlazar controles y eventos y un monton de cosas que hace por ti detras del telon, lo unico malo es que la documentacion no es muy extensa y no existen tantas aplicaciones como ejemplo o quickstarts (como PRISM por ejemplo) asi que habra que contribuir con un granito de arena en la promocion de este excelente framework.

Bueno para empezar debemos crear un nuevo proyecto de tipo Silverlight, yo estoy utilizando el VS2010 y el Silverlight 4 que es una instalacion separada, una vez creado este proyecto y configurado automaticamente por Visual Studio removemos el control MainWindow.xaml y lo reemplazamos por ShellView.xaml que sera nuestro contenedor de contenido, a continuacion lo configuramos de la siguiente manera en el App.xaml principal para soportar Caliburn,

App.xaml

<am:CaliburnApplication
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:am="clr-namespace:Caliburn.PresentationFramework.ApplicationModel;assembly=Caliburn.PresentationFramework"
    x:Class="ExpanderAndSplitter.Caliburn.App">

    <!--This is a caliburn application -->
    <Application.Resources>
    </Application.Resources>
</am:CaliburnApplication>

Y a continuacion modificamos el code behind para que derive de la clase CaliburnApplication,
App.xaml.cs

using ExpanderAndSplitter.Caliburn.ViewModels;
using Caliburn.PresentationFramework.ApplicationModel;

namespace ExpanderAndSplitter.Caliburn
{
     public partial class App :  CaliburnApplication
    {

        public App()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Creating the root view model of the app, the shell
        /// </summary>
        /// <returns>Root view model (shell)</returns>
        protected override object CreateRootModel()
        {
            return new ShellViewModel();
        }

     }
}

En los pasos anteriores definimos la applicacion como un applicacion Caliburn y a continuacion hacemos Override al CreatRootModel() donde le diremos a Caliburn cual es el objeto de la vista que queremos como Root object o sea como contenedor principal de la aplicacion, cabe mencionar que caliburn es orientado a modelos y majena mucho el concepto de convenciones por lo que el framework detras del telon hara una serie de comprobaciones para ubicar la vista que pertenece al “ViewModel” que especificamos como contenedor principal en el Override por lo que no tendremos que hacer nada especial para que la vista de tal modelo este bindeada al modelo, MAGIA PURA!!!

ShellViewModel.cs

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Caliburn.Core;
using System.Collections.ObjectModel;
using ExpanderAndSplitter.Caliburn.Models;

namespace ExpanderAndSplitter.Caliburn.ViewModels
{
    public class ShellViewModel : PropertyChangedBase
    {

        #region Fields

        private GridLength _masterRowHeight = new GridLength(1, GridUnitType.Star);
        private GridLength _splitterRowHeight = new GridLength(0);
        private GridLength _detailRowHeight = new GridLength(1, GridUnitType.Auto);

        public ObservableCollection<ItemViewModel> _masterItems = null;
        public ObservableCollection<ItemViewModel> _detailItems = null;

        #endregion // Fields

        public ShellViewModel()
        {
            MasterRowHeight = new GridLength(1, GridUnitType.Star);
            SplitterRowHeight = new GridLength(20);
            DetailRowHeight = new GridLength(1, GridUnitType.Star);

            MasterItems = new ObservableCollection<ItemViewModel>();
            DetailItems = new ObservableCollection<ItemViewModel>();

            for (int i = 0; i < 1000; i++)
            {
                ItemModel masterIM = new ItemModel("Master Item Dummy " + i.ToString(), i.ToString());
                ItemModel detailIM = new ItemModel("Detail Item Dummy " + i.ToString(), i.ToString());

                ItemViewModel masterIVM = new ItemViewModel(masterIM);
                ItemViewModel detailIVM = new ItemViewModel(detailIM);

                MasterItems.Add(masterIVM);
                DetailItems.Add(detailIVM);
            }

        }

        #region Properties

        public GridLength MasterRowHeight
        {
            get { return _masterRowHeight; }
            set
            {
                _masterRowHeight = value;
                NotifyOfPropertyChange("MasterRowHeight");
            }
        }

        public GridLength SplitterRowHeight
        {
            get { return _splitterRowHeight; }
            set
            {
                _splitterRowHeight = value;
                NotifyOfPropertyChange("SplitterRowHeight");
            }
        }

        public GridLength DetailRowHeight
        {
            get { return _detailRowHeight; }
            set
            {
                _detailRowHeight = value;
                NotifyOfPropertyChange("DetailRowHeight");
            }
        }

        public ObservableCollection<ItemViewModel> MasterItems
        {
            get { return _masterItems; }
            set
            {
                _masterItems = value;
                NotifyOfPropertyChange("MasterItems");
            }
        }

        public ObservableCollection<ItemViewModel> DetailItems
        {
            get { return _detailItems; }
            set
            {
                _detailItems = value;
                NotifyOfPropertyChange("DetailItems");
            }
        }

        #endregion // Properties

    }
}

Siguiendo las convenciones definidas por el framework por default sabemos que las vistas deberan estar situadas en una carpeta llamada Views, los ViewModels al igual deberan estar en su carpeta llamada ViewModels, siendo todo esto configurable, ademas con el codigo fuente podemos definir nuestras propias convenciones :)

ShellView.xaml

<UserControl x:Class="ExpanderAndSplitter.Caliburn.Views.ShellView"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="MainContainer" Margin="5,5,5,5" VerticalAlignment="Stretch"
          HorizontalAlignment="Stretch" Background="Transparent">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <sdk:Label x:Name="DummyLabel" Content="Dummy Label" />
        <ComboBox x:Name="DummyComboBox" Grid.Column="1" MinWidth="100"
                      Margin="0,0,5,0"/>

        <Button Grid.Column="2" Width="100" Content="Dummy Button" />
        <sdk:Label x:Name="Label" Content="Dummy Label 2" Grid.Column="4" HorizontalAlignment="Right" />

        <Grid Grid.Row="1" Grid.ColumnSpan="5" Margin="0,5,0,0"
              VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Transparent">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition x:Name="MasterRow" Height="{Binding MasterRowHeight, Mode=TwoWay}" />
                <RowDefinition x:Name="SplitterRow" Height="{Binding SplitterRowHeight, Mode=TwoWay}" />
                <RowDefinition x:Name="DetailRow" Height="{Binding DetailRowHeight, Mode=TwoWay}" />
            </Grid.RowDefinitions>

            <Grid Background="Transparent">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>

                <sdk:DataGrid x:Name="MasterGrid"
                            AutoGenerateColumns="False"
                            ColumnWidth="*"
                            HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                            ItemsSource="{Binding MasterItems}">

                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTextColumn Binding="{Binding Path=Name}" Header="Master Name" />
                        <sdk:DataGridTextColumn Binding="{Binding Path=ID}" Header="ID" />
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>
            </Grid>

            <sdk:GridSplitter Grid.Row="1" Background="Gray"
                              BorderThickness="1,1,1,1" Width="Auto" HorizontalAlignment="Stretch"
                              Height="6" VerticalContentAlignment="Top"
                              Padding="0,0,0,0" Margin="5,0,5,0" VerticalAlignment="Center"/>

            <Grid Background="Transparent" Grid.Row="2" Margin="0,5,0,0" >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>

                <sdk:DataGrid x:Name="DetailGrid"
                            AutoGenerateColumns="False"
                            ColumnWidth="*"
                            HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                            ItemsSource="{Binding DetailItems}">

                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTextColumn Binding="{Binding Path=Name}" Header="Detail Name" />
                        <sdk:DataGridTextColumn Binding="{Binding Path=ID}" Header="ID" />
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>
            </Grid>
        </Grid>
    </Grid>
</UserControl>

ItemModel.cs

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace ExpanderAndSplitter.Caliburn.Models
{
    public class ItemModel
    {

        public ItemModel(string name, string id)
        {
            this.Name = name;
            this.ID = id;
        }

        public string Name
        {
            get;
            set;
        }

        public string ID
        {
            get;
            set;
        }

    }
}

Al final la aplicacion luce casi igual que la del post pasado solo que utilizando Caliburn y Silverlight y a excepcion que no se tuvo que utilizar codigo para especificar la relacion entre vista y view model ya que caliburn se encarga de todo esto y muchisimo mas.

Mas adelante si tengo tiempo publicare algo relacionado con los Comandos, Triggers, Efectos y un monton de cosas que puedes aprovechar con caliburn de una manera sencilla, espero les haya gustado y no duden en dejar un comentario pues tal vez hize algo mal ya que apenas son mis inicios con Caliburn.

Puedes bajar el codigo fuente completo y el proyecto del siguiente enlace:  ExpanderAndSplitter.Caliburn

Saludos!
YR

WPF Expander y Splitter trabajando juntos..

Bueno aqui dejo publicado la solucion de un problemita que recientemente tuve haciendo que funcionarian juntos un Expander y un splitter bueno la meta final era tener 2 expanders separados por 1 splitter y que cada expander contuviera algun tipo de grids o incluso una vista con este aproach ya se puede jugar con lo que uno quiera poner en cada region,

Yo anduve buscando algo similar y no pude encontrar mucho al respecto asi que aqui dejo mi solucion y espero que a alguien pueda servirle..

Aqui tenemos el XAML con el codigo que contiene al expander y al splitter o mas bien dos expander conteniendo un grid cada uno separados por un splitter..

<window x:Class="ExpanderAndSplitter.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" x:Name="MainWdw">

    <grid x:Name="MainContainer" Loaded="MainContainer_Loaded" Margin="5,5,5,5" VerticalAlignment="Stretch"
          HorizontalAlignment="Stretch" Background="Transparent">
        </grid><grid .ColumnDefinitions>
            <columndefinition Width="Auto" />
            <columndefinition Width="Auto" />
            <columndefinition Width="Auto" />
            <columndefinition Width="*" />
            <columndefinition Width="Auto" />
        </grid>
        <grid .RowDefinitions>
            <rowdefinition Height="Auto"/>
            <rowdefinition Height="*"/>
        </grid>

        <label x:Name="DummyLabel" Content="Dummy Label" />
        <combobox x:Name="DummyComboBox" Grid.Column="1" MinWidth="100"
                      Margin="0,0,5,0"/>

        <button Grid.Column="2" Width="100" Content="Dummy Button" />
        <label x:Name="Label" Content="Dummy Label 2" Grid.Column="4" HorizontalAlignment="Right" />

        <grid Grid.Row="1" Grid.ColumnSpan="5"
              VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Transparent">
            </grid><grid .ColumnDefinitions>
                <columndefinition />
            </grid>
            <grid .RowDefinitions>
                <rowdefinition x:Name="MasterRow" Height="{Binding MasterRowHeight, Mode=TwoWay}" />
                <rowdefinition x:Name="SplitterRow" Height="{Binding SplitterRowHeight, Mode=TwoWay}" />
                <rowdefinition x:Name="DetailRow" Height="{Binding DetailRowHeight, Mode=TwoWay}" />
            </grid>

            <expander x:Name="MasterExpander" IsExpanded="True"
                      BorderBrush="Gray" Margin="0,5,0,0"
                      BorderThickness="1"  IsEnabled="True"
                      ExpandDirection="Down" Background="Transparent"
                      Expanded="MasterExpander_Expanded"
                      Collapsed="MasterExpander_Collapsed" >
                </expander><expander .Header>
                    <textblock FontWeight="Bold" Text="Master Region" />
                </expander>

                <grid Background="Transparent">
                    </grid><grid .ColumnDefinitions>
                        <columndefinition Width="*" />
                    </grid>
                    <grid .RowDefinitions>
                        <rowdefinition Height="*"/>
                    </grid>

                    <datagrid x:Name="MasterGrid"
                              Loaded="MasterGrid_Loaded"
                              AutoGenerateColumns="True"
                              CanUserDeleteRows="False"
                              ColumnWidth="*"
                              HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

            <gridsplitter Grid.Row="1" Background="Gray"
                      BorderThickness="1,1,1,1" Width="Auto" HorizontalAlignment="Stretch"
                      Height="6" VerticalContentAlignment="Top"
                      Padding="0,0,0,0" Margin="5,0,5,0" VerticalAlignment="Center"/>

            <expander x:Name="DetailExpander" Grid.Row="2" Margin="0,5,0,0"
                      BorderBrush="Gray" BorderThickness="1"  IsEnabled="True"
                      ExpandDirection="Down" Background="Transparent"
                      Expanded="DetailExpander_Expanded"
                      Collapsed="DetailExpander_Collapsed" >
                </expander><expander .Header>
                    <textblock FontWeight="Bold" Text="Detail Region" />
                </expander>

                <grid Background="Transparent">
                    </grid><grid .ColumnDefinitions>
                        <columndefinition Width="*" />
                    </grid>
                    <grid .RowDefinitions>
                        <rowdefinition Height="*"/>
                    </grid>

                    <datagrid x:Name="DetailGrid"
                              Loaded="DetailGrid_Loaded"
                              AutoGenerateColumns="True"
                              CanUserDeleteRows="False"
                              ColumnWidth="*"
                              HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

</window>

Y su respectivo code behind que se encarga de hacer las operaciones correspondientes de tamanio para que estos controles funcionen armoniosamente uno con el otro..

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;

namespace ExpanderAndSplitter
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        #region Fields

        private static double _oldMasterHeight = 1;
        private static double _oldDetailHeight = 1;

        #endregion // Fields

        #region Properties

        public GridLength MasterRowHeight
        {
            get { return (GridLength)GetValue(MasterRowHeightProperty); }
            set { SetValue(MasterRowHeightProperty, value); }
        }

        // Using a DependencyProperty as the backing store for MasterRowHeight.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MasterRowHeightProperty =
            DependencyProperty.Register("MasterRowHeight", typeof(GridLength), typeof(MainWindow), new UIPropertyMetadata(new GridLength(1, GridUnitType.Star)));

        public GridLength SplitterRowHeight
        {
            get { return (GridLength)GetValue(SplitterRowHeightProperty); }
            set { SetValue(SplitterRowHeightProperty, value); }
        }

        // Using a DependencyProperty as the backing store for SplitterRowHeight.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty SplitterRowHeightProperty =
            DependencyProperty.Register("SplitterRowHeight", typeof(GridLength), typeof(MainWindow), new UIPropertyMetadata(new GridLength(0)));

        public GridLength DetailRowHeight
        {
            get { return (GridLength)GetValue(DetailRowHeightProperty); }
            set { SetValue(DetailRowHeightProperty, value); }
        }

        // Using a DependencyProperty as the backing store for DetailRowHeight.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DetailRowHeightProperty =
            DependencyProperty.Register("DetailRowHeight", typeof(GridLength), typeof(MainWindow), new UIPropertyMetadata(new GridLength(1, GridUnitType.Auto)));

        public ObservableCollection<DummyItem> MasterItems
        {
            get;
            set;
        }

        public ObservableCollection<DummyItem> DetailItems
        {
            get;
            set;
        }

        #endregion // Properties

        #region Constructors

        public MainWindow()
        {
            InitializeComponent();

            MasterItems = new ObservableCollection<DummyItem>();
            DetailItems = new ObservableCollection<DummyItem>();

            for (int i=0; i<1000; i++)
            {
                MasterItems.Add(new DummyItem("Master Dummy " + i.ToString(), i.ToString()));
                DetailItems.Add(new DummyItem("Detail Dummy " + i.ToString(), i.ToString()));
            }
        }

        #endregion // Constructors

        #region Events

        private void MasterExpander_Expanded(object sender, RoutedEventArgs e)
        {
            DoHandleExpandCollapse();
        }

        private void MasterExpander_Collapsed(object sender, RoutedEventArgs e)
        {
            if (DetailExpander.IsExpanded)
            {
                _oldMasterHeight = MasterRowHeight.Value;
                _oldDetailHeight = DetailRowHeight.Value;
            }
            DoHandleExpandCollapse();
        }

        private void DetailExpander_Expanded(object sender, RoutedEventArgs e)
        {
            DoHandleExpandCollapse();
        }

        private void DetailExpander_Collapsed(object sender, RoutedEventArgs e)
        {
            if (MasterExpander.IsExpanded)
            {
                _oldMasterHeight = MasterRowHeight.Value;
                _oldDetailHeight = DetailRowHeight.Value;
            }
            DoHandleExpandCollapse();
        }

        private void MasterGrid_Loaded(object sender, RoutedEventArgs e)
        {
            if (MasterGrid.ItemsSource == null)
                MasterGrid.ItemsSource = MasterItems;
        }

        private void DetailGrid_Loaded(object sender, RoutedEventArgs e)
        {
            if (DetailGrid.ItemsSource == null)
                DetailGrid.ItemsSource = DetailItems;
        }

        private void MainContainer_Loaded(object sender, RoutedEventArgs e)
        {
            MainContainer.DataContext = this;
        }

        #endregion // Events

        #region Helpers

        private void DoHandleExpandCollapse()
        {
            if (MasterExpander == null || DetailExpander == null)
                return;

            SplitterRowHeight = new GridLength(0);
            if (MasterExpander.IsExpanded && DetailExpander.IsExpanded)
            {
                MasterRowHeight = new GridLength(_oldMasterHeight, GridUnitType.Star);
                DetailRowHeight = new GridLength(_oldDetailHeight, GridUnitType.Star);
                SplitterRowHeight = new GridLength(20);
                return;
            }

            if (MasterExpander.IsExpanded)
                MasterRowHeight = new GridLength(1, GridUnitType.Star);
            else
                MasterRowHeight = new GridLength(1, GridUnitType.Auto);

            if (DetailExpander.IsExpanded)
                DetailRowHeight = new GridLength(1, GridUnitType.Star);
            else
                DetailRowHeight = new GridLength(1, GridUnitType.Auto);
        }

        #endregion // Helpers

    }

    public class DummyItem
    {
        public DummyItem(string name, string id)
        {
            this.Name = name;
            this.ID = id;
        }
        public string Name
        {
            get;
            set;
        }
        public string ID
        {
            get;
            set;
        }
    }
}

Al final asi es como luce la solucion:

La solucion ejemplo esta hecha con Visual Studio 2010 y el codigo fuente lo puedes bajar del siguiente link ExpanderAndSplitter.

Enjoy! :)
Yohan Rodriguez

Envío de Lifeblog

mié 09/06/2010 20:10 de UNONOTICIAS (SMS):

ASEGURA MARINA 20 KG DE EXPLOSIVO C-4 EN EL DF/AVALA CORTE AMPARO DE COCA CONTRA CFC/MEXICO CONDECORA A MANDELA/RICKY MARTIN SERA EL CHE EN BROADWAY.

No manches como que será el che ese wey!

Foto de la comer :)

vie 28/05/2010 13:26

Viendo que se pude bajar para ver el fin de semana..

Mi Cumpleaños, Que Regalo!! :)

Bueno este post es para agradecer a mi Beib el tremendo regalo que me hizo en mi cumpleanios el 18 de diciembre, la verdad me la pase de lo mejor,

En la foto estoy con mi cara de sorpresa al ver que cuando llego a la sala esta lleno todo alrededor de velas con una mesa de centro servida con platos, velas, una botella de vino tinto, unas copas, en medio una rosa y un regalo en una cajita, la verdad me causo una impresion porque es exactamente lo que me hubiera gustado recibir de regalo y la verdad que excedio mis expectativas yo nunca espere nada de esto, Gracias! :D

Entonces quiero agradecer de nuevo a ti Bris y compartir estas fotos para presumir que recibi el mejor regalo que alguien hubiera podido desear, gracias por todo! Love u! :)

100_7417 100_7418 100_7419 100_7422 100_7423 100_7426 100_7427 100_7428 100_7435 100_7436 100_7437 100_7438 18122009491 18122009492 18122009493 18122009494 18122009495 18122009496 18122009497 18122009498 18122009499 18122009500 18122009501

Musica para Chambear..

Si al igual que yo tu eres de las personas que gusta de escuchar musica mientras trabaja (no siempre) y estas en busca de canciones y generos musicales que aunque parezca raro podrian ayudar a estimular tu cerebro y pensar con mas claridad  (y no estoy loco ehh)

Entoces aqui les dejo una listita de musica que me estuve escuchando el dia de hoy y que me ha dejado con la boca abierta, son generos entre trance sicodelico y musica progresiva, bastante estimulante (para mi por lo menos) podrias tratar de escuchar algo asi, estos ultimos dias he tenido tanta, tanta, tanta, tanta musica que escuchar que parece imposible lograr oirla toda bueno en fin habra que buscar tiempo, tiempo hay siempre para todo si sabes administrarlo..

Saludos Musicales..

Tengo una lentium!!

Pues ya no se la verdad si ha sido tanto programa que se le ha instalado a mi PC o sera que le falta agregarle memoria y mas recursos bueno el caso es que esta pc se ha vuelto muuuuy lenta y creo que tendre que tomarme un tiempo para optimizarla a veces tengo que tener 2 o 3 instancias del Visual Studio cada una con soluciones de mas de 50 proyectos asi que tal vez sea eso,

Creo que tendre que investigar algun buen software de optimizacion por que es un infierno tener que estar esperando a que termine de procesar bueno ni modo :(

Luego publicare mi solucion.. Saludos!

Maldito Spam!!

Ya tenia un buen que no posteaba nada y es que la verdad he andado muy ocupado con mucha chamba en el trabajo y pss no me habia dado mucho tiempo, de todos modos tratare de postear mas seguido tengo muchas fotos que he querido subir y no he tenido tiempo en fin..

Bueno, esta imagen es de un correo que deje de checar como unas 2 semanas masomenos pero es increible la cantidad de spam que puede llegarte si no tienes un filtro adecuado, en esta imagen se muestran 1945 correos recibidos de los cuales NINGUNO de ellos! es rescatable! maldito spam! que molesto es recibir esta cantidad de correos basura para alguien que piensa en el correo como una herramienta esencial e indispensable.

Saludos! :D

pd. y eso que no ando publicando ese correo en todos lados.

Waveando con mi compa el otto!

Buenos pues primero que nada agradecer a mi compa el otto el que me haya enviado una invitacion para google WAVE y tambien por pasarme el tip de como twettear desde un wave, pues he estado viendo el preview y la verdad es que me tiene impresionado lo que se puede hacer con WAVE en tiempo real y creo que se convertira en una plataforma de comunicacion primordial con la que se puede comodamente trabajar en linea y colaborar,

De nuevo estos de google no dejar de sorprender, quisiera en un tiempo libra ver las herramientas de desarrollo para wave tal vez podamos hacer algo divertido en esa area, por ahora pues seguiremos checando la documentacion y disfrutando de esta nueva herramienta que promete bastante!

Un saludo! a todos y a mi compa el Otto gracias de nuevo!

Lets WAVE!!! :D

Hay que correr el riesgo…

Aqui dejo una muestra de mi estilo particular de juego, la mayoria los pierdo jajaja, pero pienso pulirlo, asi tal vez algun dia mejore mi juego, o me toque otro pichon jajaja…
Saludos!…

Alguien quiere una Windows 7 Whopper?

Jajajaj pues que risa me dio al ver esta imagen de una supuesta hamburguesa de 7 carnes pero mas risa me dio que de hecho Burguer King la esta vendiendo como parte de su menu en Japon pues la verdad que es una estrategia de mercadotecnia bastante buena pues he visto promocion por todo internet sin contar que yo mismo la estoy dando jajaj lastima que todavia no haya aqui pero cuando llegue lo mas seguro es que pida una

Saludos!

Yohan vs Chessmaster Movil

Di no a las drogas, version geek :)

Bueno pues vagando por internet me encontre esta imagen de una campania anti-drogas para geeks jajaj me parecio bastante chistosa espero la disfruten

Saludos! :)

Jasdid vs Stevie69

Mfrend vs Bris.Gro

Homenaje a Bobby Fischer.

fisher

Vale la pena destacar algunos datos curiosos de esta partida, que es conocida como “La Partida del Siglo”, como por ejemplo que se jugó en 1956, cuando Fisher tenia solo 13 años y que a pesar de que ya han pasado más de 50 años de su publicación, y a pesar de que después de Fischer, hemos tenido el lujo de ver a Grandes Maestros como Kasparov,  Karpov, etc., ninguno le ha quitado el título a su partida.

También es importante decir, que esta partida es tan famosa que el artista Ugo Dossi la convirtió en arte, dándole color a los movimientos de estos dos grandes maestros.

Ugo

“Esta partida, que Fischer consideró la mejor de su carrera, fue publicada por las revistas de ajedrez de todo el mundo, haciendo las delicias del público y asombrando a los expertos” (Garri Kasparov)

Destino Final 3D! Excelente!

Bueno pues este post es solo para comentar y recomendar ampliamente esta pelicula que la verdad trae unos efectasos en 3D que te tienen completamente atrapado jajaj,

La tipica historia como las otras versiones de que un grupo de gentes se salva de morir en un accidente debido a las premoniciones de un chavo donde le llegan pistas de la manera de morir de la siguiente persona, pues en general la pelicula esta excelente y los efectos mucho mas creo que vale la pena ir a verla

cinepolis 12_Oct_09 by you.

Saludos! :D

BrisGro vs Bobsmabyatch

Facebook en la segunda guerra mundial

←Older