Alt Control Delete

#stopka | #menu | #treść | | reklama
  • Subskrybuj

Artykuły dla kategorii Programowanie

C# - Interfejsy które warto znać

0

W obecnym czasie, z bardzo rozwiniętymi środowiskami programistycznymi, takimi jak choćby Visual Studio, czy też Eclipse, bardzo łatwo jest rozpocząć swoją przygodę z programowaniem, które w tym przypadku czasem bardziej przypomina zabawę z klockami, niż rzeczywiste klepanie kodu.

Jednak nastawiając się na bezmyślne składanie klocków, szybko można obudzić się z przysłowiową ręką w nocniku, w sytuacji gdy zajdzie potrzeba modyfikacji lub rozszerzenia tak radośnie tworzonego kodu, a warto zaznaczyć, że nieumiejętnie sklejony kod może wymagać całkowitej reorganizacji, czy wręcz nawet przepisania w sytuacji gdy zajdzie potrzeba rozszerzenia bieżących funkcjonalności oprogramowania.

Jak sobie zatem z wszystkim poradzić? Przede wszystkim warto sięgnąć po wzorce projektowe, o których na łamach Alt Control Delete już nie raz wspominałem. Pomocne będą również tytułowe interfejsy przygotowane przez twórców języka, które jak dobrze wiadomo leżą u podstaw Polimorfizmu, a odpowiednio zastosowane mają naprawdę spory sens i możliwości - znacznie większe niż by się z pozoru wydawało.

Dziś postaram się zatem przedstawić Wam kilka interfejsów, które mnie osobiście szczególnie okazały się przydatne.

Czy warto programować pod Windows Phone?

0

Wiele mówi się w ostatnim czasie w kontekście zarobków programistów, które już w chwili obecnej są jednymi z wyższych (oczywiście występuje te pewne zróżnicowanie regionalne itp.) pośród podobnych informatyce branż. Domniemając słuszności wysokości zarobków programistów oraz innych wykwfalifikowanych pracowników z obszaru IT, należy się zastanowić czy w istocie istnieje jakakolwiek inna branża, w której postęp następuje tak szybko, że świeżo upieczony magister informatyki w dniu ukończenia studiów posiada już właściwie wiedzę zdezaktualizowaną, w kontekście tego co serwuje mu rynek pracy i jeśli nie przysiedzi po godzinach, to małe są jego szanse, żeby zostać specjalistą przynajmniej dobrym.

Realia rynku zmieniają się na tyle szybko, że programista cały czas musi się uczyć nowych rzeczy. Dziś na topie są technologie webowe powiązane z HTML5 oraz rozwiązania mobilne. Dlatego też warto przynajmniej przyjrzeć się nowym technologiom. Ja ostatnio postanowiłem poświęcić trochę swojej uwagi Windows Phone. Zapewne spytacie dlaczego akurat ten system, a nie np. Android o którym piszę bardzo dużo tutaj na blogu, albo iOS. Prawda jest taka, że rozwiązanie to nie jest do końca idealne, ale mimo wszystko szala zalet z mojego punktu widzenia przeważyła szalę wad, o czym opowiem Wam więcej w dalszej cześci wpisu.

LINQ i DataContext - wycofywanie zmian w bazie

0

Ostatnimi czasy rozpocząłem naukę programowania pod Windows Phone 7. Szybko okazało się, że przy pisaniu jednej z testowych aplikacji, warunkiem koniecznym jej dalszego rozwoju stał się dostęp do bazy danych. Programowanie na platformę mobilną wiążę się jednak z wieloma ograniczeniami w stosunku do programowania aplikacji desktopowych i oczywiście nie ominęły one również samej bazy danych.

W przypadku Windows Phone, możemy korzystać zatem tylko z SQL Server CE i wykorzystywać w tym celu wyłącznie LINQ to SQL współpracujące z DataContext. Cały ten mechanizm jest jednak dużo bardziej ograniczony, aniżeli możliwości do których przyzwyczaiły nas klasyczne zapytania wyrażone językiem T-SQL.

Dla mnie osobiście, największą bolączką jest brak mechanizmu, który w prosty sposób pozwala na wycofywanie wprowadzonych zmian. Dlaczego o tym wspominam? Ano dlatego, że transakcje wykonywane na kontekście danych, zapisywane są do bazy danych dopiero w momencie wykonania metody SubmitChanges. Jest to podejście stricte transakcyjne i w gruncie rzeczy sprawdzą się nawet dobrze w tym systemie. Niestety mimo, że istnieje metoda która symuluje commit, brakuje tutaj metody typu rollback. Prowadzi to do tego, że nawet jeśli nie zatwierdzimy zmian od razu, to zostaną one zapisane przy dowolnym późniejszym commicie (chyba że wyłączymy aplikację, ale chyba nie o to chodzi). Jest to odrobinę dziwne, ale na szczęście istnieje pewne obejście tego problemu, którym zaraz się Wami podzielę.

Odtwarzanie plików MP3 w C#

0

Z biegiem lat, mam nieodparte wrażenie, że doba staje się coraz bardziej krótsza. Brakuje mi czasu na wiele różnych rzeczy. Obojętnie czy jest to pisanie kodu, czytanie książek, czy też nauka. Problem ten dotyczy również bloga, dlatego też spróbuję rozwiązać go w pewien sposób, wprowadzając nowy rodzaj tekstów oznaczonych tagiem Szybkie porady. Głównym zadaniem wpisów oznaczonych takim znacznikiem, będzie rozwiązanie pewnych, jasno określonych problemów. Teksty tego typu mogą pojawić się właściwie w każdej kategorii i będą w sposób zwięzły rozwiązywać określony problem (mogą to być również Wasze problemy, o które spytacie np. drogą mailową.

Wpisy tej kategorii cechować się będą z pewnością odrobinę mniejszą objętością. Nie ma się co oszukiwać, że średnia ilość tekstu, która przypada na jeden wpis, jest na Alt Control Delete raczej duża - w kontraście choćby do średniej na innych blogach.

Zmniejszając objetość określonych wpisów, postaram się za to poszerzyć zakres tematów i jednocześnie nie obniżyć jakości samego bloga. Mam nadzieję, że nowy cykl wpisów przypadnie Wam do gustu;) Uprzedzając pytanie - wpisy normalnej objętości dalej będą się pojawiać.

To tyle tytułem wstępu, czas przejść do meritum, czyli w dniu dziejszym będą to zagadnienia związane z odtwarzaniem plików MP3 w C#. Przedstawię i pokrótce opiszę dwa sposoby realizacji tego celu.

C#, WPF oraz SQLite razem w jednym projekcie

0

Tworząc aplikację, która operuje na jakichkolwiek danych, które mają być dostępne również w przyszłości, szybko dochodzimy do momentu, kiedy to musimy wybrać odpowiedni sposób składowania tych danych.

Po szybkim namyśle, przyjdzie Wam z pewnością kilka propozycji:

  • Tekstowy plik danych o określonej strukturze
  • Plik XML (można korzystać z serializacji)
  • Baza danych

Każde z tych rozwiązań ma swoje określone wady i zalety, a wszystko zależy również od skali projektu. W moim przypadku miałem właśnie do czynienia ostatnio raczej ze stosunkowo nie dużą aplikacją. Z miejsca odrzuciłem pierwsze dwa rozwiązania, ponieważ wymagają one raczej złożonego przetwarzania plików, a dodatkowo chciałem mieć łatwy dostęp do danych i łatwą możliwość zbindowania.

Idealnym rozwiązaniem wydawała się być baza danych, jednak wymagała by ona instalacji serwera baza danych, co przy skali projektu byłoby grą nie wartą świeczki - więc kolejne pudło.

Troszkę już zrezygnowany, przypomniałem sobie o SQLite, który w tym przypadku okazał się strzałem w dziesiątkę i rozwiązywał wszystkie moje problemy.

Implementacja BackgroundWorker w WPF

0

Czy kiedykolwiek zdarzyło się Wam spotkać z aplikacją, która podczas przetwarzania jakiś bardziej złożonych i czasochłonnych operacji, zamrażała swoje okno w sposób, który skutecznie blokował Waszą pracę?

Czy nie zdarzało się Wam również w takich sytuacjach ujrzeć pełny optymizmu napis Brak odpowiedzi?

Podejrzewam że każdy z Was, przynajmniej raz spotkał się z taką sytuacją. Być może część z Was przeklinała system operacyjny, choć w istocie to nie była do końca jego zasługa. Bardziej winny w takiej sytuacji był niestety programista, który z niewiedzy/braku czasu/cwaniactwa (niepotrzebne skreślić) nie zaimplementował wielowątkowości w swojej aplikacji.

Być może wielu programistów, boi się po prostu tego zagadnienia, choć w gruncie rzeczy jest ono całkiem proste w implementacji. W przypadku gdy korzystamy z aplikacji napisanych w WPF/Silverlight i chcemy skorzystać z dodatkowego wątku, który nie będzie blokować naszego interfejsu UI, to w takim celu, świetnie sprawdzi się tytułowy BackgroundWorker.

Tworzenie własnego projektu instalatora w Visual Studio

0

Za każdym razem, kiedy kończymy tworzenie jakiejś nowej aplikacji, bądź też wypuszczamy aktualizację dla programu dobrze znanego na rynku, zachodzi konieczność utworzenia, bądź też zaktualizowania instalatora dla tejże aplikacji. Oczywiście możemy pliki wykonywalne aplikacji wraz z zasobami dostarczyć naszym użytkownikom np. w postaci skompresowanego archiwum, jednak często jest to rozwiązanie nie do końca elastyczne i wygodne - wymaga choćby użycia dodatkowej aplikacji obsługującej kompresję plików.

Dlatego też warto posiąść wiedzę o tym i jak tworzyć własny instalator. Przy użyciu Visual Studio i projektu Setup Wizard jest to stosunkowo proste zadanie.

WPF Tutorial - aplikacje wielojęzyczne

0

Jakiś czas temu, we wpisie Tworzenie aplikacji wielojęzycznych z C# i ASP.NET w Visual Studio opisywałem jak stworzyć aplikację, która będzie przystosowana do obsługi wielu języków i wykorzystywać będzie do realizacji tego celu mechanizm zasobów udostępniony w platformie .Net.

Wpis ten, nie opisywał jednak zastosowanie tego mechanizmu, dla aplikacji napisanych pod kątem frameworka WPF, który korzysta z języka XAML. Dlatego też dziś, w ramach kolejnego wpisu z cyklu WPF Tutorial, chciałbym nadrobić braki w tamtym opisie.

WPF Tutorial - zasoby i style

0

W poprzedniej części tutoriala, poświęconej tworzeniu własnych kontrolek użytkownika, wspomniałem co nieco o zasobach i stylach, które możemy umieścić w pliku dodatkowym, bądź też w aktualnie przetwarzanym dokumencie. Dziś chciałbym rozszerzyć trochę temat i pokazać bardziej praktyczne wykorzystanie zasobów. Dowiecie się między innymi o tym jak:

  • Utworzyć zasoby lokalne dla wybranego okna/elementu
  • Utworzyć zasoby globalne dla całej aplikacji
  • Jak tworzyć powtarzalne elementy jako zasoby (np. menu kontekstowe) i wykorzystać je w praktyce

Tworzenie własnych atrybutów w C#

0

Wykorzystywanie atrybutów w C#, jest często marginalizowane, a nawet wręcz pomijane przez programistów tego języka. Jak pokazuje życie, mogą one być całkiem przydatne np. w serializacji obiektów do XMLa. Mogą one się przydać, również w naszych własnych programach. Użycie atrybutów, może spowodować, że napisany przez nas kod będzie bardziej elastyczny i skalowalny, a chyba to się liczy, prawda;)?

W dzisiejszym wpisie, chciałbym zatem Wam pokazać, jak w banalny sposób można utworzyć własną klasę atrybutu i jak wykorzystać ją w praktyce.

1 2 3 4