Czego Nauczyłem Się Po 5 Latach Programowania; Wspominki Soltys Programmer Bot

Czego nauczyłem się po 5 latach programowania; Wspominki Soltys Programmer Bot

Wstęp

3 grudnia minie 5 lat od kiedy zacząłem pisać grę Soltys Programmer Bot.

5 lat temu napisałem dwa posty na ten temat moich doświadczeń przy pisaniu tej gry.

Na moich studiach inżynierskich, na 2 drugim roku trzeba było napisać grę 3D z wykorzystaniem OpenGL. Gołego OpenGL, bez silników graficznych.

Cały rok pisał w C++, ja jak Che Guevara rewolucyjnie postawiłem, że napiszę grę w C#. Wiązało się, że nie będę miał supportu od prowadzących zajęcia, ale opłaciło się podjąć to ryzyko. Dzięki temu, że nie skupiałem na prawidłowej alokacji pamięci udało mi się „dostarczyć” więcej w krótszym czasie.

Kod jest dostępny na GitHub. Uruchomienie tego kodu wymaga jego znajomości. 😀

Gra jest klonem light-Bot. Jeżeli chcesz zobaczyć jaka to była gra to zagraj w light-bot.

Ostatecznie gra zajęła 3 miejsce w konkursie wewnątrz wydziałowym na najlepszą grę roku.

Co sądzę o swoim projekcie po 5 latach?

„Domyślny” dla Visual Studio .gitignore ignoruje pliki .obj

Jak pisałem ten kod to nie używałem systemu kontroli wersji git. Nie pamiętam czy nie używałem systemu kontroli wersji w ogóle czy używałem lokalnego SVNa.

Tak czy siak, po skończeniu poznałem GitHuba.

Czytaj resztę...
[NHibernate] Automatyczna Aktualizacja Daty I Czasu – O Ostatniej Zmianie W Rekordzie

[NHibernate] Automatyczna aktualizacja daty i czasu – o ostatniej zmianie w rekordzie

Jak pisałem poprzednio o problemie braku milisekund w dacie. Wspomniałem o tym, że tabele posiadają kolumnę informującą o ostatniej zmianie, która nastąpiła na rekordzie. Można się domyślić, że ręczne ustawianie tej wartości było by mozolne oraz podatne na błędy ( w szczególności – zapomnienie o wstawieniu nowej wartości)

Można to zautomatyzować przy użyciu Listnera. „Nasłuchiwacza” na zmiany wysyłane do bazy danych.

Czytaj resztę...
[NHibernate] Integracja Z NLog

[NHibernate] Integracja z NLog

Chcesz logować SQL generowany przez NHibernate do pliku?

Przejdę od razu do konkretów. Potrzeba klasy NLogFactory, która będzie tworzyła instancje Loggera.

[code lang=”csharp”] public class NLogFactory : ILoggerFactory
{
#region ILoggerFactory Members

public IInternalLogger LoggerFor(Type type)
{
return new NLogLogger(LogManager.GetLogger(type.FullName));
}

public IInternalLogger LoggerFor(string keyName)
{
return new NLogLogger(LogManager.GetLogger(keyName));
}

#endregion
}
[/code]

Potrzeba klasę, która jest adapterem dla NLoga – NLogLogger

Czytaj resztę...
[NHibernate] Automatycznie Sprawdź Czy ‚properties’ Są Virtual

[NHibernate] Automatycznie sprawdź czy ‚properties’ są virtual

NHibernate wymaga od programisty, aby wszystkie Properties (właściwości) wewnątrz Enitity (encji / klasy POCO) były oznaczone słowem kluczowym virtual.

Dlaczego? bo…:

The quick answer to that question is: because we need members to be virtual in order to do our lazy loading magic/voodoo. — źródło StackOverflow

A teraz jak zrobić, aby automatycznie sprawdzać czy wszystkie properties spełniają wymagania? Wykorzystać Unit Testy!

Czytaj resztę...
ReSharper Skróty Klawiaturowe

ReSharper skróty klawiaturowe

Na stronie można przeczytać jakie są domyślne skróty klawiaturowe dla ReSharpera, rozszerzenia do Visual Studio, który jest potrzebny jak woda dla konia każdemu programiście C#. Skrótów jest wiele, tutaj przedstawię te najważniejsze dla mnie. Opis Shortcut (Visual Studio) Shortcut (Intelij IDEA)…

Czytaj resztę...

Nazywanie argumentów funkcji w C#

Ostatnio rozpocząłem poznawanie możliwości C# 4.0. Dzisiaj zachwyciłem się możliwością nazywania argumentów. Ta cecha pozwala na zwiększenie czytelności kodu, a polega na poprzedzeniu argumentów funkcji ich nazwą. Na przykład dla funkcji obliczającej BMI (waga w kilogramach, wzrost w metrach) [crayon-58b328d62885e902495311/]…

Czytaj resztę...