sobota, 31 grudnia 2011

Rok 2011 – podsumowanie [PL]

Koniec roku i początek nowego roku to zawsze okres podsumowań. Chciałbym i ja spojrzeć na pewne dane, fakty zdarzenia związane z rokiem 2011 w kontekście bloga „Programowanie i Technologie”.

piątek, 30 grudnia 2011

[RX 6] Przykłady dot. obserwowalnych kolekcji w Reactive Extensions [PL]

W poprzednich częściach ([RX 1], [RX 2], [RX 3], [RX 4], [RX 5]) artykułu o Reactive Extensions dla .NET pojawiło się już dość sporo teorii, ale raczej mało przykładów, w tym wpisie chciałbym się skupić właśnie na przykładach bazujących na zdobytej uprzednio wiedzy.

środa, 28 grudnia 2011

[RX 5] Tworzymy obserwowalne kolekcje w Reactive Extensions [PL]

Tak jak pisałem we wcześniejszych częściach ([RX 1], [RX 2], [RX 3], [RX 4]), Reactive Extensions dla .NET oferują mnóstwo pomocniczych rozszerzeń pozwalających na proste tworzenie obserwowalnych kolekcji.

Przyjrzyjmy się tym najbardziej podstawowym.

środa, 14 grudnia 2011

[RX 4] Reactive.Concurrency i planiści (schedulers)(czyli artykułu o RX cz. 4) [PL]

Poprzednia część artykułu poświęconego Reactive Extensions (RX) dla .NET została zakończona prostym przykładem, w którym prostą obserwację kolekcji przeprowadzono nie tylko w ramach wątku bieżącego, ale również na odrębnym wątku. W tym celu wykorzystano jednego z wielu planistów (scheduler'ów) dostępnych w ramach RX. Przyjrzyjmy się im trochę bliżej.

niedziela, 11 grudnia 2011

Tworzenie dokumentacji do kodu w C# [PL]

Nie dawno otrzymałem email z pytaniem dotyczącym tworzenia dokumentacji do kodu napisanego w C#:
Poszukuje czegoś do zautomatyzowania procesu tworzenia dokumentacji dla kodu pisanego w C# i trafiłem na (..) temat odnośnie Sandcastle. Czy ten dodatek do Visual Studio pozwala tworzyć dokumentacje dla C# i jest kompatybilny z VS 2010?
Spróbuję w niniejszym wpisie odpowiedzieć na to pytanie.

czwartek, 1 grudnia 2011

[RX 3] Reactive Extensions pierwszy kontakt z kodem (czyli artykułu cz. 3) [PL]

W ramach serii postów dotyczących Reactive Extensions przyjrzeliśmy się już problemom związanych z asynchronicznością oraz przyjrzeliśmy się bliżej kolekcjom i wzorcu obserwatora (IObserver, IObservable). W tym wpisie zobaczymy pierwszy przykład kodu wykorzystującego RX.

środa, 30 listopada 2011

[RX 2] Kolekcje, to podstawa, czyli wprowadzenia do Reactive Extensions część 2 [PL]

W ramach kontynuacji tematyki związanej z Reactive Extensions (RX)przyjrzyjmy się elementom, które stoją u podstaw ich działania, czyli kolekcjom i wzorcowi Obserwator.
W poprzedniej części artykułu poznaliśmy cel przyświecającym twórcom Reactive Extensions (RX) jak i skąd można pobrać wspomniane rozszerzenia. Skoro już mamy zainstalowane Reactive Extensions (Rx), zacznijmy przyglądać się jego możliwością.

poniedziałek, 28 listopada 2011

[RX 1] Wprowadzenie do Reactive Extensions (RX) dla .NET - cz.1 [PL]

Jako że nie dawno przedstawiłem na spotkaniu Łódzkiej grupy profesjonalistów IT & .NET prezentację poświęconą „Wprowadzenie do Reactive Extensions (RX) dla .NET” (patrz informacja: Zapraszam na prezentację: "Wstęp do Reactive Extensions dla .NET (RX)" oraz Prezentacja i kod ze spotkania pt.: "Wprowadzenie do Reactive Extensions (RX) dla .NET" [PL]). Postanowiłem czytelnikom bloga „Programowanie i Technologie” również przybliżyć temat Reactive Extensions, więc jeżeli zdarzyło Ci się tworzyć aplikacje, które wykorzystywały wywołania asynchroniczne. Te asynchroniczne wywołania sprawiły problemy. Wolałbyś otrzymywać dane, zamiast o każdą daną się dopraszać. Znasz LINQ i nie zawahasz się go użyć w szerszym zakresie, to z pewnością powinienieś poznać bliżej Reactive Extensions (RX). Zapraszam do przeczytania pierwszej części serii postów poświęconych RX.

niedziela, 6 listopada 2011

Prezentacja i kod ze spotkania pt.: "Wprowadzenie do Reactive Extensions (RX) dla .NET" [PL]

Nie tak dawno przedstawiłem na spotkaniu Łódzkiej grupy profesjonalistów IT & .NET prezentację poświęconą „Wprowadzenie do Reactive Extensions (RX) dla .NET” (patrz informacja: Zapraszam na prezentację: "Wstęp do Reactive Extensions dla .NET (RX)"). Tych, którzy chcieliby się zapoznać z prezentacją lub kodem źródłowym, który powstał podczas prezentacji, zapraszam do obejrzenia mojej prezentacji umieszczonej na portalu SlideShare: http://www.slideshare.net/MaciejZbrzezny/wprowadzenie-do-reactive-extensions-rx-dla-net.

wtorek, 1 listopada 2011

Zapraszam na prezentację: "Wstęp do Reactive Extensions dla .NET (RX)" [PL]

Czy zdarzyło Ci się tworzyć aplikacje, które wykorzystywały wywołania asynchroniczne? Czy, wywołania asynchroniczne sprawiły problemy? Czy wolałbyś otrzymywać dane zamiast o każdą daną się dopraszać? Czy znasz LINQ i nie zawahasz się go użyć w szerszym zakresie?
Jeżeli odpowiedź na większość z postawionych tu pytań jest twierdząca to powinieneś poznać bliżej Reactive Extensions.

wtorek, 19 lipca 2011

70-511: Enhancing Usability: Podsumowanie [PL]

W ramach podsumowania tematów związanych z „70-511: Enhancing Usability”, zapraszam do przeczytania poszczególnych postów (wymienionych niżej), pobrania kodu źródłowego oraz obejrzenia prezentacji przedstawionej przeze mnie w ramach „Study Group 70-511” organizowanej przez Łódzką Grupę Profesionalistów IT & .NET.

niedziela, 19 czerwca 2011

70-511: Enhancing Usability: Integrowanie Windows Forms i WPF w jednej aplikacji (teoria) [PL]

W ramach mojego przygotowania do egzaminu 70-511 (Windows Applications Development with Microsoft .NET Framework 4) oraz uczestnictwa w „StudyGroup” organizowanym przez Łódzką Grupę Profesionalistów IT & .NET opracowałem zagadnienia związane z tematem określonym w training kicie jako „Enhancing Usability”. Z moimi czytelnikami chciałbym podzielić się moimi opracowaniami. W tym wpisie będzie o jednoczesnym wykorzystaniu i integracji Windows Forms i WPF w jednej aplikacji.

wtorek, 14 czerwca 2011

„Wprowadzenie do MEF w .NET 4.0” - Prezentacja i kod ze spotkania [PL]

Nie tak dawno przedstawiłem na spotkaniu Łódzkiej grupy profesjonalistów IT & .NET prezentację poświęconą „Managed Extensibility Framework” (patrz informacja: Prezentacja: "Wprowadzenie do Managed Extensibility Framework w .NET 4.0"). Tych, którzy chcieliby się zapoznać z prezentacją lub kodem źródłowym, który powstał podczas prezentacji, zapraszam do obejrzenia mojej prezentacji umieszczonej na portalu SlideShare:

poniedziałek, 13 czerwca 2011

70-511: Enhancing Usability: Implementacja „Globalizacji” i „Lokalizacji” (praktyka, kod + LocBaml) [PL]

W ramach kontynuacji tematu rozpoczętego we wpisie „70-511: Enhancing Usability: Implementacja „Globalizacji” i „Lokalizacji” (teoria)”, zapraszam do zapoznania się z przykładem kodu źródłowego, który będzie ilustracją do przedstawionej teorii (przykład kodu źródłowego dotyczy implementacji „globalizacji” i „lokalizacji”, ze szczególnym naciskiem na to, jak jest to rozwiązane w lokalizacji dla WPF). W ramach przykładu zostanie pokazane wykorzystanie narzędzia LocBaml.

niedziela, 12 czerwca 2011

70-511: Enhancing Usability: Implementacja „Globalizacji” i „Lokalizacji” (teoria) [PL]

W ramach mojego przygotowania do egzaminu 70-511 (Windows Applications Development with Microsoft .NET Framework 4) oraz uczestnictwa w „StudyGroup” organizowanym przez Łódzką Grupę Profesionalistów IT & .NET opracowałem zagadnienia związane z tematem określonym w training kicie jako „Enhancing Usability”. Z moimi czytelnikami chciałbym podzielić się moimi opracowaniami. W tym wpisie będzie o implementacji „Globalizacji” i „Lokalizacji”.

sobota, 11 czerwca 2011

70-511: Enhancing Usability: Implementacja przetwarzania asynchronicznego (przykład) [PL]

W ramach kontynuacji tematu rozpoczętego we wpisie „70-511: Enhancing Usability: Implementacja przetwarzania asynchronicznego (teoria)”, zapraszam do zapoznania się z przykładem kodu źródłowego, który będzie ilustracją do przedstawionej teorii (przykład kodu źródłowego dotyczy implementacji przetwarzania asynchronicznego, ze szczególnym naciskiem na to, jak jest to rozwiązane w WPF).W ramach przykładu zostanie pokazane wykorzystanie BacgroundWorker'a i Dispatcher'a.

piątek, 10 czerwca 2011

70-511: Enhancing Usability: Implementacja przetwarzania asynchronicznego (teoria) [PL]

W ramach mojego przygotowania do egzaminu 70-511 (Windows Applications Development with Microsoft .NET Framework 4) oraz uczestnictwa w „StudyGroup” organizowanym przez Łódzką Grupę Profesionalistów IT & .NET opracowałem zagadnienia związane z tematem określonym w training kicie jako „Enhancing Usability”. Z moimi czytelnikami chciałbym podzielić się moimi opracowaniami. W tym wpisie będzie o implementacji przetwarzania asynchronicznego, ze szczególnym naciskiem na to, jak jest to rozwiązane w WPF.

piątek, 6 maja 2011

Prezentacja: "Wprowadzenie do Managed Extensibility Framework w .NET 4.0" [PL]

Wyobraźmy sobie, że budowanie aplikacji tak proste, jak budowanie domku z klocków, gdzie poszczególne elementy (klocki) są połączone w całość (domek) podczas zabawy (życia domku). Przecież coraz częściej zachodzi potrzeba budowy aplikacji tak, aby składała się ona z luźno związanych komponentów, które ulegają kompozycji dopiero podczas działania aplikacji. Właśnie na takie podejście pozwala MEF, czyli „Managed Extensibility Framework", nowa biblioteka wchodząca w skład .NET Framework 4.0.

poniedziałek, 18 kwietnia 2011

Sprawdzamy platformę (x86/x64), z poziomu kodu C# [PL]

We wcześniejszych wpisach pojawiły się informacje na temat kompilacji assembly na różne platformy oraz narzędzi, które pozwalają sprawdzić na jaką platformę assembly zostało skompilowane. W tym wpisie znajdą się informacje jak to można zrobić z poziomu kodu źródłowego.

niedziela, 17 kwietnia 2011

MPTS (Maciej-Progtech ToolSet) [PL]/[EN]

Chciałbym poinformować moich czytelników, że utworzyłem ostatnio nowy projekt na CodePlex'ie. Projekt nazywa się MPTS (Maciej-Progtech ToolSet) i jest on zestawem prostych narzędzi, przydatnych programistom .NET jak również czasami zwykłym użytkownikom. Zestaw powstał na bazie różnych programików, które zdarzyło mi się napisać, a które potrzebowałem do czegoś wykorzystać. Wspomniane programiki są najczęściej dość proste, jednak mają one wypełniać właśnie takie proste zadanie.

czwartek, 14 kwietnia 2011

Sprawdzamy platformę, na jaką zostało skompilowane assembly, czyli zamieszania z Any CPU, x86, x64 w .NET ciąg dalszy [PL]

W poprzednim wpisie pojawiły się informacje na temat sposobów skompilowania assembly, tak by działała jako kod 64 lub 32 –bitowy. W tym wpisie znajdą się informacje na temat tego jak można sprawdzić, na jaką platformę zostało skompilowane assembly (czyli znajdą się tu m.in. informacje na temat narzędzia CorFlags, IL Disassembler'a).

środa, 13 kwietnia 2011

Zamieszanie z Any CPU, x86, x64 w .NET (Wstęp) [PL]

W 64-bitowych systemach Windows mogą działać aplikacje skomplikowane na platformę 64-bitową, jak też w trybie symulacji 32-bitowe (skompilowane na platformę x86, ale ... aplikacja 64-bitowa może korzystać tylko z 64-bitowych komponentów (np. bibliotek), a aplikacja 32-bitowa może korzystać tylko z 32-bitowych komponentów. Do tego na platformie .NET dochodzi jeszcze kompilacja typu „Any CPU”, co w konsekwencji może spowodować nie małe zamieszanie.... Przyjrzyjmy się może tym zagadnieniom.

środa, 6 kwietnia 2011

Debug.Assert oraz Debugger – metody Break i Launch [PL]

Gdy podczas debuggowania aplikacji chcemy ją zatrzymać w pewnym miejscu, zwykle ustawiamy „breakpoint”, aby jednak ten sposób zadziałał, musi być podłączony do procesu, który chcemy debuggować Debugger.

Co można jednak zrobić, gdy tak nie jest (nie zawsze uda nam się ręcznie podłączyć (attach))?

wtorek, 5 kwietnia 2011

Dobra lektura (w j. angielskim) o wątkach w C# [PL]

To nic specjalnie odkrywczego, ale informacja dla tych, którzy chcieliby poczytać o programowaniu wielowątkowym w C# (i dla mnie bym nie musiał kolejny raz „googlać” tego linku) polecam przeczytanie książki „Threading in C#” autorstwa Joseph Albahari. Dostępnej (w języku angielskim) jako plik pdf i pod adresem: http://www.albahari.com/threading/.

sobota, 2 kwietnia 2011

SharePoint 2010 – od czego zacząć [PL]

Ostatnio miałem potrzebę zapoznania się z SharePoint 2010. Dla tych, którzy również chcieliby zapoznać się z tą platformą, przygotowałem pewne informacje „na dobry początek”. W niniejszym wpisie będę się odwoływał do najprostszej wersji: SharePoint Foundation 2010.

niedziela, 27 marca 2011

środa, 23 lutego 2011

SMO podsumowanie oraz uzupełniony kod źródłowy dla: Jak DataSet’a przenieść do MsSQL'a? [PL]

SQL Server Management Objects (SMO) zbiór bibliotek, a w nich klas dla platformy .NET, pozwalające na łatwe i proste zarządzanie bazą danych Microsoft SQL Server z poziomu kodu programu .NET (np. w językach takich jak C#, VB i innych). Zostały one wprowadzone po raz pierwszy z bazą danych Microsoft SQL Server 2005 (włącznie z wersją Express). Dostępne są również biblioteki SMO dla bazy danych MS SQL 2008.

Dzięki wykorzystaniu SMO, można opracowywać aplikacji o funkcjonalności podobnej do Microsoft SQL Server Management Studio.

Wpisy związane z SQLServer Management Objects (SMO), pojawiały się już kilka razy na tym blogu:

środa, 16 lutego 2011

Usuwanie tabeli przy pomocy SMO [PL]

Dzięki wykorzystaniu SMO (jeśli nie wiesz co to – przeczytaj wpis pt.:"Jak DataSet’a przenieść do MsSQL'a? (SQLServer Management Objects i SqlBulkCopy)") można w prosty sposób wykonywać wiele operacji na bazie danych Ms SQL. Jedną z takich operacji może być usuwanie elementów bazy danych. W większości przypadków wystarczy na wybranym elemencie z bazy danych wykonać proste Drop, jednak nie zawsze musi się to udać.

wtorek, 15 lutego 2011

SMO, DataSet i UniqueConstraint [PL]

We wpisie pt.: "Jak DataSet’a przenieść do MsSQL'a? (SQLServer Management Objects i SqlBulkCopy)" przedstawiłem, jak można na podstawie DataSet'a stworzyć odpowiadającą mu bazę danych. Niestety nie wszystko zostało tam opisane i wykonane prawidłowo, o czym pisałem już we wpisie „Klucze obce, a relacje w DataSet'cie”. Kolejnym elementem, który wymaga dodania są ograniczenia (Constrains), a w szczególności ten wymuszający unikalność UniqueConstraint.

piątek, 11 lutego 2011

Klucze obce, a relacje w DataSet'cie [PL]

We wpisie pt.: "Jak DataSet’a przenieść do MsSQL'a? (SQLServer Management Objects i SqlBulkCopy)" przedstawiłem, jak można na podstawie DataSet'a stworzyć odpowiadającą mu bazę danych. Niestety wkradł się tam pewien „brak”. Mianowicie część relacji pomiędzy tabelami zostało pominiętych – w wytworzonych tabelach nie zostały wykorzystane klucze obce.

czwartek, 10 lutego 2011

DbConnectionStringBuilder i ferajna [PL]

W komentarzu do poprzedniego posta („SMO: sprawdzanie dostępnych serwerów MS SQL i automatyczna konstrukcja ConnectionString”), Paweł Łukasik (Pawlos) zapytał, czy jest jakaś różnica pomiędzy ServerConnection a SqlConnectionStringBuilder jeśli chodzi o tworzenie connection stringa? Przyjrzyjmy się temu tematowi trochę bliżej.

wtorek, 25 stycznia 2011

SMO: sprawdzanie dostępnych serwerów MS SQL i automatyczna konstrukcja ConnectionString [PL]

Jakiś czas temu, we wpisie związanym z SQLServer Management Objects (SMO), pod tytułem: „SMO i sprawdzanie, czy baza danych istnieje [PL]” otrzymałem komentarz, że warto wspomnieć o jeszcze innych możliwościach SMO, jak choćby listowanie instancji SQL Server: SmoApplication.EnumAvailableSqlServers(). W tym wpisie chciałbym właśnie wrócić do tego tematu.

niedziela, 23 stycznia 2011

SpecialFolders i zmienne systemowe w definicji TraceListener'a [PL]

Wpisy na temat śledzenia i logowania w .NET pojawiały się już wcześniej na tym blogu (np. „Śledzenie i logowanie zdarzeń (tracing and logging) na platformie .NET (przykłady w oparciu o C#).” i „Śledzimy w .NET dalej (dzisiaj uruchomimy własny podsłuch)”). Mechanizm wykorzystania elementów platformy .NET, jak: TraceSource, TraceListener i innych związanych z nimi jest dość wygodny, tym bardziej, że są dostępne gotowe klasy typu TraceListener zapisujące w plikach logi przy pomocy XML-a lub w których każdy element jest oddzielony jakimś znakiem rozdzielającym (np. przecinkiem, czy średnikiem). Te klasy to XmlWriterTraceListener lub DelimitedListTraceListener. Klasy te można łatwo utworzyć w pliku app.config przekazując nazwę pliku, do którego zostanie zapisany log. Niestety w nazwie pliku trzeba posłużyć się pełną ścieżką, by móc w pełni kontrolować jego lokalizację, w przeciwnym razie plik zostanie utworzony w kartotece, z której uruchamiana jest aplikacja. Zobaczmy jak można spowodować, by w nazwie wykorzystywać dodatkowo „foldery specjalne” i zmienne systemowe.

niedziela, 16 stycznia 2011

OPC – a programowanie – jak zacząć? [PL]


Niniejszy wpis jest zainspirowany pytaniami dotyczącymi OPC, jakie otrzymuję od czasu do czasu poprzez email, fora itp... Są one mniej więcej takie:
  • W jakim języku najlepiej napisać oprogramowanie wykorzystujące OPC?
  • Czy możesz mi doradzić w kwestii zrobienia oprogramowania w środowisku C++/ Visual C#. NET z wykorzystaniem standardu OPC?
  • Co potrzebuję, żeby zacząć tworzyć oprogramowanie zgodne z OPC? Gdzie szukać informacji na ten temat?
  • Zamierzam napisać prace magisterska na temat wykorzystania standardu OPC w zastosowaniu w automatyce przemysłowej. Rozważam kwestie opracowania własnej aplikacji w środowisku Visual C#.NET do komunikacji np. przez internet z jakimś układem automatyki (może sterownikiem PLC). Bardzo proszę o wszelkie sugestie.

czwartek, 13 stycznia 2011

Architekt oprogramowania [PL]

Jeżeli chcesz dowiedzieć się:
  • Co to jest architektura oprogramowania?
  • Kim jest architekt oprogramowania?
  • Jaka jest rola architekta oprogramowania?
  • Jakiego typu zadania są stawiane przed architektem oprogramowania?
  • Jakie są cechy dobrego architekta oprogramowania?
Przeczytaj....

środa, 12 stycznia 2011

Programowanie i Technologie blogiem roku 2010? - głosowanie rozpoczęte[PL]

Tak jak pisałem wcześniej zgłosiłem bloga Programowanie i Technologie do konkursu "Blog roku  2010". Blog został zgłoszony w kategorii "Profesjonalne". Wczoraj wystartowało głosowanie, jeśli chcesz oddać na niego głos, wyślij SMS o treści B00189 na numer 7122. Koszt SMS, to 1,23 zł brutto.

poniedziałek, 10 stycznia 2011

SMO i sprawdzanie, czy baza danych istnieje [PL]

Czasami istnieje potrzeba sprawdzenia czy baza danych jest dostępna na serwerze Ms SQL Server. W tym celu można wykorzystać widok sys.databases, na którym można wykonać select'a i sprawdzić czy dana baza danych występuje na liście (np. „select * from sys.databases”). Zobaczmy jednak, jak to zrobić przy pomocy SMO.

wtorek, 4 stycznia 2011

Element 'DropDownList' ma wartość SelectedValue, która jest nieprawidłowa, ponieważ nie istnieje na liście elementów... [PL]

Jakiś czas temu był na tym blogu wpis dotyczący GridView i TemplateField, czyli sposobu wygodniejszą wizualizację i edycję danych tabelarycznych. W ten sposób łatwo można zamienić skomplikowane numeryczne identyfikatory (pochodzące z kluczy obcych) na dropdown-listy przedstawiające dane z innych tabel. Jednak co się stanie, gdy nasza kolumna z identyfikatorami dopuszcza wartości puste (NULL)? Otóż pojawi się wtedy „błąd serwera w aplikacji ....”. Zobaczmy jak sobie można z tym poradzić.

poniedziałek, 3 stycznia 2011

SqlBulkCopy i wyłączenie auto-inkrementacji w tabeli [PL]

Jakiś czas temu pisałem na temat jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy). W takim przypadku, gdy kolumna w tabeli w DataSet'cie ma ustawioną właściwość AutoIncrement, to należy w kolumnie w SQL serwerze ustawić Identity na true, oraz IdentityIncrement i IdentitySeed na odpowiednie im wartości (AutoIncrementStep i AutoIncrementSeed) pochodzącej ze źródłowej kolumny z tabeli z DataSet'a. Niestety w takim przypadku, podczas późniejszego ładowania danych do tabeli, kolumny danych korzystające z auto-inkrementacji (identity) mogą w efekcie być uzupełnione innymi danymi, niż wyglądało to w oryginalnym zestawie danych. Zobaczmy jak to można rozwiązać.

niedziela, 2 stycznia 2011

Blog roku 2010 [PL]

Chciałbym wszystkich poinformować, że zgłosiłem bloga Programowanie i Technologie do konkursu "Blog roku  2010". Blog został zgłoszony w kategorii "Profesjonalne". Od 11.01.2011 godz. 15.00 rusza głosowanie sms'owe ...

sobota, 1 stycznia 2011

2010 – podsumowanie [PL]

Rok 2010 zakończony, chciałbym więc podsumować moją działalność związaną z blogiem w tym roku. Niniejsze podsumowanie zbiega się prawie z drugą rocznicą powstania bloga „Programowanie i Technologie”, który wystartował 11 stycznia 2009.

Posty powiązane / Related posts