ASP.NET Development Server jest wbudowanym z Visual Studio 2005 serwerem WWW, przeznaczonym do celów testowych. Nie pozwala on na zdalne połączenia oraz nie ma innych „bajerów” wbudowanych w IIS, ale do prostych celów testowych nadaje się...
W tym poście opiszę trzy rzeczy: - wyłączenie/włączenie więzów integralności na tabeli w bazie SQL Server 2005 Express; - generowanie GUIDów w bazie Firebird 2.0; - transport danych z tabeli z PK typu Integer do tabeli z PK typu GUID..
Dzisiejszy post dotyczy dość specyficznego zagadnienia, mianowicie konkatenacji wartości w wierszach, będących wynikiem zapytania. Takie „coś” jest raczej rzadko przydatne, jeżeli z bazą współpracuje aplikacja, ponieważ ta może sobie sama przetworzyć otrzymane dane, ale jeżeli wynik zapytania jest podstawa do tworzenia raportu to problem konkatenacji wierszy może wystąpić...
Bardzo szybki sposób na wygenerowanie hasła dla nowego użytkownika: string pw = Guid.NewGuid().ToString("N").Substring(0,7);
Oto pewne rozwiązanie, które nazwałem Manager, oparte o wzorzec projektowy Singleton, które może być przydatne w aplikacji, w której elementy "aktywne" nie są powiązane ze sobą referencjami, a jednocześnie wymagane jest przesyłanie danych lub zdarzeń między nimi. Ma to miejsce na przykład w aplikacji MDI lub w aplikacji opartej o DockPanel Suite. IMHO coś co występuje często, nie koniecznie w postawi obiektów wizualnych...
W języku C# istnieje co najmniej pięć sposobów implementacji tego wzorca. Różnią się prostotą implementacji oraz obsługą wielowątkowości. Wszystkie [pięć] opisane są na stronie http://www.yoda.arachsys.com/csharp/singleton.html..
Korzystając z WinForms wcześniej czy później możemy mieć problem z odwołaniem się do kontrolek z innego wątku - stworzonego np w celu zabezpieczenia GUI przed zawieszeniem podczas wywołania metod, które długo działają. Bezpośrednie wywołanie metod kontrolki z innego wątku spowoduje wystąpienie wyjątku InvalidOperationException z komunikatem "Cross-thread operation not valid: Control 'xyz' accessed from a thread other than the thread it was created on."...
Od paru lat MS przygotowuje nową wersję języka C#. Ostatnio miały miejsce dwa związane z nią event'y: udostępnienie zbiorczej dokumentacji do języka C# uwzględniającej wersję 3.0 oraz udostępnienie beta wersji Visual Studio 2008 „Orcas”, która ma wbudowaną obsługę C# 3.0. Jako, że ciekawość pierwszym krokiem do... poznania, postanowiłem bliżej się przyjrzeć tej „technologii jutra"...
Abstract: opis sposobu na obliczenie wyrażeń arytmetycznych i logicznych na platformie .NET przy wykorzystaniu klasy XPath. Zastosowanie powyższego mechanizmu jako silnika reguł biznesowych...
Ostatnio pisząc Smart Client'a w WinForms do usług sieciowych (w sumie były 4 WebService'y na serwerze ASP.NET) natrafiłem na pewien problem. Mianowicie Visual Studio przy generowaniu namiastek WebService'ów umieszcza adres usługi w pliku app.config i stamtąd go pobiera. Mi natomiast była potrzebna możliwość zmiany adresu usługi przez użytkownika po uruchomieniu programu...
Czy zastanawialiście się kiedyś jak działa słowo kluczowe yield? Jeśli ktoś nie kojarzy tej konstrukcji to w telegraficznym skrócie pozwala ona (między innymi) w bardzo łatwy sposób zaimplementować interfejs IEnumerable. Interfejs ten wymagana dostarczenia tylko jednej metody, która powinna zwrócić instancję klasy implementującej IEnumerator. Zaimplementowanie tego interfejsu nie powinno przysporzyć znacznych trudności ale wymaga już trochę większego nakładu pracy. Przykładowe, uproszczone użycie yield ...
Nie każdy zdaje sobie z tego sprawę ale poniższe dwie konstrukcje mają inną semantykę: try { ... } catch(Exception ex) { throw; } try { ... } catch(Exception ex) { throw ex; } Różnica jest taka, że stosując pierwszą z nich nie tracimy informacji zawartej w stosie wywołań (stack trace). To znaczy, że jeśli ponownie rzucony przez nas...
Ostatnio pomogłem rozwiązać dwa problemy z "nie działającymi" zdarzeniami. Jak to najczęściej bywa, znając rozwiązanie, problem wydaje się banalnie prosty. Ponieważ jednak dojście do rozwiązania nie zawsze jest już tak proste postanowiłem napisać ten post. Ogólnie problem został mi przedstawiony mniej więcej w taki sposób (luźny cytat): Podczepiłem się pod zdarzenia kilku kontrolek ale po wykonaniu post back'a do strony, metody obsługi zdarzeń nie są wołane. W obu wspomnianych sytuacjach obserwowany e...
W projekcie dorzuconym do wpisu w którym opisałem podstawy SubSonica zawarłem okazyjnie jeden mechanizm, który czasem się przydaje, mianowicie : partial classes. Cała operacja polega na tym, że elementy danej klasy można rozdzielić (w jednym, lub kilku plikach) na mniejsze części korzystając ze słowa kluczowego partial. Ale po co rozkładać klasę na części, skoro jeśli wszystko będzie w jednym miejscu, to jest czytelniej? Sprawdza się to np. przy kilku(-nasto) osobowych projektach, gdy naraz kilku program...
Kilka miesięcy temu pisałem o komponencie do rysowania wykresów firmy Xceed. Teraz postanowiłem przyjrzeć się dwóm innym komponentom: Microsoft Chart Controls for Microsoft .NET Framework 3.5Dundas Chart for .NET Komponent pierwszy jest do pobrania za darmo ze strony Microsoftu. Za drugi trzeba już płacić ale producent udostępnia wersję demonstracyjną. Najpierw zainstalowałem komponent firmy Dundas. Od razu spodobał mi się program pokazujący przykłady różnych wykresów wraz z kodem. Dobre wrażenie s...
var jest rodzajem zmiennej, której typ jest wnioskowany na podstawie przypisania do niej wartości. Można powiedzieć, że jest to inteligentna zmienna..
Metody rozszerzające ("extension methods") pozwalają na dodanie metod do istniejących typów bez korzystania z dziedziczenia lub uciekania się modyfikacji definicji orginalnego typu. Metody te są zawsze statyczne, ale..
Wyrażenie lambda w C# to delegat bez nazwy (delegat anonimowy). Jest to operacja, bądź ciąg operacji bez nazwy. Lewa strona wyrażenia lambda to parametry (może ich w ogóle nie być). Po prawej stronie są zdefiniowane operacje. Obie strony są rozdzielone "=>". W podobny sposób definiuje się funkcję w matematyce i można to sobie z tym skojarzyć..
Przykład zastosowania LINQ do zmiany nazw wielu plików. Proszę sobie wyobrazić, że mam ok. 2000 takich plików..
Przykład wyjaśniający działanie atrybutu AutoEventWireup w dyrektywie <%@Page na stronie aspx. Domyślnie atrybut ten ustawiony jest na true. Oznacza to, że wszystkie zdarzenia strony jak na przykład PageLoad, PageInit, etc. są uruchamiane automatycznie. Na przykład dyrektywa @Page wygląda domyślnie tak...