Monthly Archives: Wrzesień 2014

Ustawianie okna programu w określonym miejscu – C# + WPF

Czasami istnieje potrzeba ustawienia pozycji okna programu w odpowiednim miejscu. Okazuje się, że można to zrobić bardzo prosto za pomocą dwóch linijek kodu.

Tworzymy Event Loaded i w nim dodajemy kod, który przestawi okno w odpowiednie miejsce (u mnie lewy górny róg programu będzie w pozycji (0,0):

this.Left = 0;
this.Top = 0;

10 programów, które musisz zainstalować po instalacji systemu – Część pierwsza

  1. Przeglądarki internetowe

Pierwszym programem jaki instaluje jest przeglądarka internetowa, ponieważ jakoś nie mogę się przekonać do pobierania plików w Internet Explorer, a wszystkie programy wymienione poniżej będziemy musieli jakoś pobrać. W tej chwili mamy duży wybór dobrych przeglądarek internetowych i namawianie do jednej konkretnej nie ma sensu, tak więc zaproponuję 3 przeglądarki, które myślę, że są warte instalacji.

Mozilla Firefox – Szybka, bezpieczna i prowadzona przez organizacje non-profit. Rozwijana od 2002 roku, stopniowo zyskiwała coraz silniejszą pozycję na rynku.

Google Chrome – Przeglądarka stworzona przez inżynierów firmy Google. Chrome charakteryzuje oszczędność miejsca, jaką zajmuje interfejs przeglądarki oraz szybkość działania programu. Google projektując Chrome położył szczególny nacisk na jej lekkość, przekładającą się na niskie wykorzystanie zasobów systemowych.

Opera – Niezwykle elastyczna. Cały interfejs użytkownika, włącznie ze skrótami klawiaturowymi, gestami myszy, paskami narzędzi a nawet pojedynczymi przyciskami, możesz w szerokim zakresie i łatwo dostosowywać do własnych potrzeb. Continue reading

Serializacja i deserializacja binarna C#

Bardzo często gdy zamierzamy serializować obiekt wybieramy format XML lub JSON, ponieważ pozwalają przechowywać dane w strukturze zrozumiałej również dla człowieka, a nie tylko dla maszyny. Jednak trzeba wiedzieć, że serializacje można przeprowadzić również do postaci binarnej i o tym napiszę w tym artykule.

Serializacja binarna jest bardzo prosta do wdrożenia, szybka, ale również posiada pewne mankamenty. Jednym z tych mankamentów jest utrata danych w przypadku zmiany struktury klasy deserializowanej, o co w przypadku XML czy JSON martwić się nie musimy.

Pierwszym etapem przygotowania aplikacji do wdrożenia serializacji binarnej, jest ustalenie które obiekty muszą być zapisywane do pliku. Gdy już to wiemy, to przygotowujemy klasy do serializacji poprzez dodanie przed deklaracją klasy ciągu: [Serializable]

Przykład:

[Serializable]

    public class Person
    {

        public String Imie { get; set; }

        public String Nazwisko { get; set; }

    }

Następnie musimy napisać klasę serializującą, albo skorzystać z klasy generycznej, która znajduje się poniżej:


    public static class BinarySerializer<T>
    {

        public static void Serialize(string path, T obj)
        {

            if (obj != null)
            {

                using (var fs = new FileStream(path, FileMode.Create))
                {

                    var bf = new BinaryFormatter();

                    bf.Serialize(fs, obj);

                }

            }

        }

        public static T Deserialize(string path)
        {

            T temp = default(T);

            if (File.Exists(path))
            {

                using (var fs = new FileStream(path, FileMode.Open))
                {

                    if (fs.Length > 0)
                    {

                        var bf = new BinaryFormatter();

                        return (T)bf.Deserialize(fs);

                    }

                }

            }

            return temp;

        }

    }

Następnie wystarczy już tylko użyć serializacji:


var person = new Person() { Imie = "Paweł", Nazwisko = "Trojanowski" };

string path = @"data.bin";

BinarySerializer<Person>.Serialize(path, person); //serializujemy

Person p = null;

p = BinarySerializer<Person>.Deserialize(path); //deserializujemy

Console.WriteLine(p.Imie + " " + p.Nazwisko);

Console.ReadKey();

Aplikacja Windows Store: StreamSocket połączenie z localhost (127.0.0.1)

Podczas pisania aplikacji Windows Store, która pracuje z zasobami pobieranymi z localhost, można napotkać problem. “A connection attempted failed because the connection party did not properly respond after a period of time …” Problem okazuje się zagadkowy, ponieważ serwer na localhost’cie działa i nie ma żadnych powodów, żeby aplikacja miała problem z połączeniem. W końcu przecież to połączenie wewnątrz własnego komputera, nic nie powinno zawodzić. Continue reading

Skrót na zwinięcie wszystkich funkcji w aktualnej klasie Visual Studio

Ostatnio szukałem w menu kontekstowym funkcji, która automatycznie zwinęłaby wszystkie funkcje które miałem w klasie, ponieważ było ich już dość sporo (ok. 200), a ręczne zwijanie trwało zdecydowanie za długo. Na jednej ze stron natknąłem się na ten skrót:

collapse, który służy do zwijania funkcji w aktualnie zaznaczonej klasie

oraz

expand, który rozwija funkcje w klasie.

Argumenty wiersza poleceń w WPF

Czasami pisząc program chcemy mieć możliwość wywoływania go z poziomu wiersza poleceń z dodatkowymi parametrami. W aplikacji konsolowej nie ma problemu, ponieważ w funkcji main możemy mieć zmienną, która przechwyci parametry z wiersza poleceń. W WPF sprawa się nieco komplikuje, ponieważ przede wszystkim nie ma funkcji main, a więc również nie wiemy w jakiej zmiennej będą przechowywane parametry wiersza poleceń. Continue reading