Menu / szukaj

Zaginiona metoda Main()?

Tworząc aplikację WPF czasami zachodzi potrzeba napisania własnej metody Main(). Przeglądając pliki znajdujące się w solucji można natknąć się pliki *.xaml i powiązanie z nimi *.xaml.cs oraz pliki kodu *.cs. Dopóki nie trzeba zrobić czegoś nie standardowego to często nie ma potrzeby, aby zagłębiać się w różnego rodzaju mechanizmy. Takim mechanizmem może być start aplikacji WPF.

Ostatnio potrzebowałem dodać własną metodę Main(). Sądziłem, że będzie to proste – nowa klasa i odpowiedni kod. Oczywiście wcześniej sprawdziłem, czy nie ma tej metody już zdefiniowanej w plikach solucji. Czytaj dalej

Aplikacja na dwa monitory

Obecnie coraz częściej można zobaczyć osoby pracujące w biurach na dwóch lub więcej monitorach. Praca taka jest wygodniejsza oraz efektywniejsza. Sam, jako deweloper nie byłbym w stanie przesiąść się z powrotem na jeden monitor. Dlatego też nie widzę przeciwwskazań, aby własne aplikacje pisać w taki sposób, aby możliwa była praca na kilku monitorach. Oczywiście nie zawsze jest to wykonalne. Czytaj dalej

Podpisywanie dokumentów XML

Tworząc różnego rodzaju programy czasami pojawia się problem zapewnienia autentycznością plików. Sytuacja taka ma miejsce, gdy w plikach tych znajdują się bardzo ważne dane, których zmiana mogłaby doprowadzić do wygenerowania różnego rodzaju strat. Takimi plikami mogą być pliki licencji, zawierające dane finansowe, czy dane medyczne, itp. Problem ten można rozwiązać w bardzo prosty sposób używając plików XML. Wystarczy, że podpiszemy plik XML i sprawdzimy ten podpis przed ponownym użyciem pliku. Jeśli będzie on poprawny to będziemy mieli pewność, że plik nie uległ nieautoryzowanym modyfikacjom. W przypadku wystąpienia jakiejkolwiek zmiany, podpis dokumentu nie będzie odpowiadał informacjom, które znajdują się w dokumencie. Czytaj dalej

Ping

Polecenia ping nie trzeba nikomu chyba przedstawiać. Służy ono do diagnozowania połączeń sieciowych. Dzięki niemu można sprawdzić, czy istnieje połączenia między dwoma hostami, jaka jest jakość tego połączenia oraz jakie występują opóźnienia. Dodatkowo jeśli podajemy adres hosta nie w postaci adresu IP to możemy zdiagnozować, czy poprawnie rozwiązywane są nazwy przez serwer DNS. Czytaj dalej

Lista zainstalowanych aplikacji

Czasami występuje potrzeba znalezienia informacji o tym jakie oprogramowanie jest zainstalowane na komputerze. Przykładowo chcemy się dowiedzieć, czy ktoś ma już zainstalowany dany program i gdzie jest zainstalowany. Wiedza ta jest potrzebna, gdy chcemy dodać przykładowo jakiś plik do katalogu z zainstalowanym już programem. Najprostszym przykładem jest pisanie różnego rodzaju pluginów. Problem nie występuje jeśli aplikacją została zainstalowana w katalogu domyślnym, który znamy, ale tego nie można już zagwarantować. Czytaj dalej

Snippety

Ostatnio odkryłem na nowo funkcjonalność definiowania własnym szablonów kodu. Funkcjonalność ta jest bardzo często nie wykorzystywana przez programistów, ale potrafi zdziałać cuda. W pisaniu aplikacji biznesowej zawsze przychodzi taki moment, że trzeba napisać kod służący do zapisywania danych do bazy, jak równię ich odczytywania.

W takim przypadku 90% kodu jest taka sama. Po pierwsze odczytujemy numer kolumny, w której przechowywane są dane w np. SQLDataReader. A następnie budujemy na podstawie danych obiekty. W trakcie odczytu danych z bazy należy oprogramować działanie w sytuacji gdy wystąpi null. I tu najczęściej sprawdza się czy w kolumnie odczytywanej występuje wartość null. Jeśli tak to podstawia się jakąś domyślną. Jeśli nie ma nulla to odczytuje się wartość z bazy.

Czytaj dalej

SerializableDictionary

Dzisiejszego dnia potrzebowałem użyć serializacji XML dla klasy Dictionary. Bardzo się zdziwiłem gdy okazało się, że klasa ta nie wspiera tego rodzaju serializacji. Wydawałoby się, że zapis danych w formacie XML jest dzisiaj już standardem, ale okazuje się, że jednak nie wszędzie. Stosując podstawową zasadę programisty po co pisać coś co ktoś inny już napisał uruchomiłem Google i zacząłem szukać rozwiązania. Udało mi się znaleźć kilka przykładów rozwiązania tego problemu, ale każde z nich miało jakiś drobny błąd, który powodował, że słownik nie działał tak jak powinien. Czytaj dalej

Sprawdzanie wersji Excela

W aplikacjach biznesowych bardzo często występuje funkcjonalność importu / eksportu danych z / do Excela. Jednym ze sposobów pobierania danych z Excela jest zastosowanie OLE DB jako dostawcy danych. Nie jest to może rozwiązanie najbardziej optymalne, ale czasami nie ma możliwości wpływu na jego wybór. W celu skorzystanie z tego sposobu należy zdefiniować łańcuch połączenia. I tu pojawia się problem ponieważ aby ten sposób zadziałał musi być zainstalowany Excel. Dodatkowo definicja łańcucha połączenia zależy od wersji Excela zainstalowanej na komputerze. Oba te warunki wymuszają sprawdzenie tego przed próbą pobrania danych z Excela. Czytaj dalej