Archiwum

Archiwum autora

[C#] Konfiguracja Unity i XamlParseException

26 marca 2012 2 Komentarze

Niedawno pierwszy raz użyłem microsoftowego kontenera Unity do wstrzykiwania zależności w mojej aplikacji WPF opartej o wzorzec MVVM.  Zagadnienie dependency injection przystępnie przybliżył mi cykl artykułów na xoft.pl , a samo Unity zostało bardzo zrozumiale opisane na mtaulty.com . Bez  problemów napisałem kod, który w codebehind widoku tworzy kontener, rejestruje potrzebne implementacje interfejsów używanych w ViewModelu i ustawia DataContext na uzyskany z kontenera obiekt ViewModel.

IUnityContainer uc = new UnityContainer();
uc.RegisterType(typeof(IMojTyp1), typeof(MojTyp1));
uc.RegisterType(typeof(IMojTyp2), typeof(MojTyp2));
uc.RegisterType(typeof(IMojTyp3), typeof(MojTyp3));
uc.RegisterType(typeof(IMojTyp4), typeof(MojTyp4));
this.DataContext = uc.Resolve<MainViewModel>();

Następnie postanowiłem przenieść rejestrację typów do pliku konfiguracyjnego App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
  </configSections>
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <container>
      <register type="MojNamespace.IMojTyp1, MojAssembly"
                mapTo="MojNamespace.MojTyp1, MojAssembly"/>
      <register type="MojNamespace.IMojTyp2, MojAssembly"
            mapTo="MojNamespace.MojTyp2, MojAssembly"/>
      <register type="MojNamespace.IMojTyp3, MojAssembly"
            mapTo="MojNamespace.MojTyp3, MojAssembly"/>
      <register type="MojNamespace.IMojTyp4, MojAssembly"
            mapTo="MojNamespace.MojTyp4, MojAssembly"/>
    </container>
  </unity>
</configuration>

Teoretycznie wiedziałem jak to zrobić , ale praktyka okazała się jak zwykle bezlitosna: zażądała ofiary z czasu i ukorzenia się przed bezwzględnymi Exceptionami. Nie chciałem się poddać.  Zaatakowany przez drapieżne wyjątki użyłem najbardziej śmiercionośnej broni w całym IT, czyli google.

Czytaj dalej…

Kategorie:Przykłady Tagi: , , , ,

Sudencka Konferencja Naukowa „BZIK” AGH

29 lutego 2012 Dodaj komentarz

plakat BZIK AGH

9 – 11 marca odbędzie się Sudencka Konferencja Naukowa „BZIK” organizwana przez KN „MENTOR” na Wydziale Zarządzania AGH

W programie aż 31 profesjonalnych warsztatów, głównie z dziedziny programowania i zarządzania projektami.

Więcej informacji na stronie: www.bzik.biz

Kategorie:Wydarzenia Tagi: , ,

[C#] Najszybsza metoda zliczania linii w stringu

26 lutego 2012 2 Komentarze

Trafiłem dzisiaj na ciekawy artykuł, którego autor testuje szybkość wykonania różnych metod mających na celu zwrócenie ilości linii zawartych w zmiennej typu string.

Użyte zostały m.in. wyrażenia regularne

static Regex r = new Regex("\n", RegexOptions.Multiline);
static long LinesCountRegex(string s)
{
     MatchCollection mc = r.Matches(s);
     return mc.Count;
}

LINQ

static long LinesCountLinq(string s)
{
      return (from ch in s
              where ch == '\n'
              select ch).Count();
}

static long LinesCountLinqCount(string s)
{
       return s.Count(c => (c == '\n'));
}

wskaźniki

unsafe static long LinesCountUnsafePtr(string s)
{
       long lineCount = 1;
       fixed (char* pchar = s)
       {
             char* p = pchar;
             for (; *p != '\0'; p++)
             {
                  if (*p == '\n') lineCount++;
             }
        }
        return lineCount;
}

ale najszybsze rozwiązanie okazało się nie być związane z żadną wyszukaną techniką.

static long LinesCount4(string s)
{
     long count = 0;
     int position = -1;
     while ((position = s.IndexOf('\n', position + 1)) != -1)
     {
         count++;
     }
     return count;
}
Kategorie:Przykłady Tagi: , , , ,

Niesamowita historia zdeterminowanego developera

29 listopada 2011 Dodaj komentarz

Znalazłem ostatnio na stackoverflow.com  link do inspirującego video z Google TechTalks:

Google TechTalks August 1, 2006 Ron Avitzur ABSTRACT It’s midnight. I’ve been working sixteen hours a day, seven days a week. I’m not being paid. In fact, my project was canceled six months ago, so I’m evading security, sneaking into Apple Computer’s main offices in the heart of Silicon Valley, doing clandestine volunteer work for an eight-billion-dollar corporation. For more info visit: http://www.pacifict.com/Story

[C#] Interfejsy – z czym to się je?

25 listopada 2011 6 Komentarzy

Podstawy

Jak najszybciej/najprościej wytłumaczyć czym jest interfejs? Interfejs, to taka jakby klasa, która deklaruje swoje składowe (głównie metody), ale ich nie implementuje, tzn. interfejs zawiera nazwę metody, ale nie posiada jej ciała z kodem. Nie można utworzyć obiektu, który będzie instancją jakiegoś interfejsu, ale interfejs może być zaimplementowany przez klasę. Jeśli klasa implementuje interfejs to znaczy, że zapewnia implementację wszystkich członków interfejsu, tzn. interfejs mówi klasie, że klasa musi posiadać określone metody, właściwości itd. Interfejs informuje jakich zachowań (implementacji jakich metod) będziemy oczekiwać od klasy. Klasa może implementować wiele interfejsów naraz. Koniec bełkotu, przejdźmy do przykładu 🙂

using System;

namespace InterfaceTest
{
	interface IKucharz
	{
		void Gotowanie();
	}

	class TypOsoby1:IKucharz
	{
		int Id {get;set;}
		string Imie {get;set;}

		public TypOsoby1(int id, string imie)
		{
			this.Id=id;
			this.Imie=imie;
		}

		public void Gotowanie()
		{
			Console.WriteLine (this.ToString()+" gotuje...");
		}

		public override string ToString()
		{
			return string.Format ("{1}",this.Id,this.Imie);
		}
	}

	class MainClass
	{
		public static void Main (string[] args)
		{
			TypOsoby1 adam = new TypOsoby1(1,"Adam");
			adam.Gotowanie();
		}
	}
}

Czytaj dalej…

Kategorie:Przykłady Tagi: , ,

Jak usunąć MS Office, który nie chce się odinstalować?

25 października 2011 Dodaj komentarz

Nie mogłem już znieść procedury odpalenia Worda, która polegała na kliknięciu w ikonkę, zobaczeniu okienka z komunikatem „trwa przygotowanie do instalacji…” czy coś w ten deseń, kliknięciu „anuluj”, braku odpowiedzi od okienka, uruchomieniu menadżera zadań i wymuszeniu zamknięcia wisielca, ponownym kliknięciu w ikonkę, po którym Word był już gotowy do pracy. Nie wiem który z moich nieprzemyślanych i nieodpowiedzialnych eksperymentów spowodował tak dziwne zachowanie u mego biurowego przyjaciela, ale wiem że miałem już tego dość. Reinstalacja wisiała w powietrzu. Zasiadłem przed panelem sterowania, wybrałem odpowiednią pozycję z listy zainstalownych programów i kliknąłem „odinstaluj”… Czytaj dalej…

Kategorie:Kazanie Tagi:

Kazania dla młodych programistów

19 października 2011 1 komentarz
Kategorie:Kazanie

[C#] var, delegacje, metody anonimowe i wyrażenia lambda

27 sierpnia 2011 8 Komentarzy

Artykuł ten w przystępny sposób przedstawia tytułowe zagadnienia osobie, która nie miała z nimi styczności.

Słowo kluczowe var

Deklarując zmienną musimy podać jej typ. Natomiast przy jej definicji możemy podać typ, ale możemy też skorzystać ze słowa kluczowego var.

int a; //deklaracja zmiennej typu integer
a=5; //inicjalizacja zmiennej

int b=6; //definicja i inicjalizacja zmiennej

var c=7; //utworzenie zmiennej typu integer za pomocą słowa kluczowego var

var d; //Error: An implicitly typed local variable declarator must include an initializer

Możemy pominąć typ tylko wtedy, gdy kompilator sam może go rozpoznać na podstawie jakichś danych.

var jest pomocne kiedy nie mamy ochoty zastanawiać się jaki typ zwraca jakaś funkcja.

var rezultat = NieWiemJakiTypZwracaTaFunkcjaINieMamOchotyZastanawiacSieNadTym();

Oczywiście w poważnym kodzie nie nadajemy tak długich nazw funkcjom’

var jest często stosowany w technologii LINQ, ale jest to temat na inny wpis.

Czytaj dalej…

Kategorie:Przykłady Tagi: , ,

Adam Sawicki „Pułapki programowania obiektowego”

29 marca 2011 2 Komentarze

Wybrałem się dzisiaj na taki event:

obrazek

…i usłyszałem ciekawy wykład 🙂

Adam „Reg” Sawicki skrytykował odruchowe, nieoptymalne wykorzystanie OOP do wszystkiego. Przestrzegł przed wrapperomanią i ostro pojechał po singletonie. Zachęcił do zainteresowania się DOD (Data Oriented Design). Na koniec usłyszeliśmy długą relację z IGK 2011. Reg omówił zdjęcia, świetnie oddając atmosferę wydarzenia – aż chciało się tam być 🙂

A jutro zjawię się na KrakSpot 🙂

EDIT: Prezentacja pojawiła się na stronie Rega (link)

Kategorie:Wydarzenia

[C#] Pierwszy krok z Microsoft Office Excel

26 marca 2011 Dodaj komentarz
using System;

using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelTestApp
{
    class Program
    {
        static void Main()
        {
            var ex = new Excel.Application {Visible = true};
            ex.Workbooks.Add();
            ex.Cells[4, "F"] = "jakaś wartość";
            Console.WriteLine("ok");
        }
    }
}

Uwaga: pamiętać o dodaniu Microsoft.Office.Interop.Excel w References



Kategorie:Przykłady Tagi: , , ,