To make this review complete, I’m providing solution with examples of all mechanisms usage, it can be found at my GitHub: https://github.com/szabl/AspNetViewsCodeReuseExamples OverviewMethodBrief descriptionUsageHTML HelpersC#/VB.NET methods returning html as a stringBest suits view elements, where quite a lot of logic is necessary to generate short HTML. Rather not good for elements specific to a specific view.Display/Editor TemplateView file used as a template for displaying or editing given data type....
Sztuka programowania 2382 dni, 8 godzin, 18 minut temu 116 źrodło rozwiń
Od pewnego czasu wszystkie nowe aplikację okienkowe tworzę w WPFie. Próba napisania czegoś w Winformsach sprawia mi ból. A przecież gdy zaczynałem to Winformsy były moją pierwotną technologią (bo php litościwie pomine). To właśnie WinFormsy wraz z prostotą C# (o naiwności!) były przyczyną mojego zainteresowania platformą .net. Pamiętam jak przez mgłę mój pierwszy projekt w WinFormsach. Jakieś matematyczne obliczenia (średnia, mediana itp.), ale istotny był graficzny interfejs (jego brak powodował ...
Ponieważ popełniłem kiedyś coś co nazwałem Fody ciekawa ptaszyna – część 1 to w związku z tym należało zrobić coś co nazywa się Fody cz2 co też obecnie czynie. Fody ma wiele pakietów, ale opiszę teraz tylko te wybrane z których kiedyś korzystałem (lub widziałem sens ich zastosowania). Tworząc aplikacje okienkowe musimy również przemyśleć sposób ich dystrybucji. Należy go dostosować do poziomu zaawansowania klienta oraz do nakładów pracy związanych z danym sposobem. Pisząc dużą aplikację wymaga...
gosia Konferencja ITCampRO rozpoczęła się 22 maja o godzinie 9 rano. Tuż po śniadaniu było można zobaczyć, że ponad 400 osób zarejestrowanych piło kawę, jadło przekąski i rozmawiało w języku którego nie rozumiem. Na szczęście prawie wszystkie sesje były w języku angielskim. W tym roku w porównaniu do poprzedniego było więcej sesji technicznych na poziomie 300 i była to 4 edycja, na którą zaproszone zostały osoby nie tylko z Rumunii, ale również z innych zakątków świata, takich jak Ameryka, Anglia, Włoc...
Why does it happen? Why do we limit ourselves to relational databases only? Of course, there exists a set of situations in which relational databases are the best tool for the job, but – conversely – there exists a set of situations where relational database is a very inferior tool. Each type of tool has its purpose, limitations, and applications in which the tool will be the best. The important thing is not to look at the application from the point of view of a database only. We need to look at the ap...
Bazy danych i XML 2385 dni, 1 godzinę, 20 minut temu 92 źrodło rozwiń
A short while ago I had a task that required generating excel documents (xls) with special OLE objects. Checkboxes, to be precise.Problem overview The functionality was fairly simple. User generated a password protected excel document with some empty fields to be filled by somebody else. The document was handled over to another user who filled in the mandatory and optional fields. Marked some check boxes and send back. As the final step the document was processe...
Sztuka programowania 2385 dni, 1 godzinę, 20 minut temu 90 źrodło rozwiń
W poprzednim wpisie na temat testowania kodu JavaScript, przedstawiłem trzy najpopularniejsze frameworki służące do tego celu – QUnit, Mocha oraz Jasmine. Napisałem też baaardzo pokrótce na czym generalnie polega testowanie JavaScript. Myślę jednak, że to zdecydowanie za mało… Postanowiłem więc trochę zgłębić temat na łamach bloga, tak żebyśmy wszyscy się mogli czegoś nowego nauczyć Całkiem subiektywnie, na warsztat wybrałem Jasmine. Podoba mi się składnia ...
Jak zdefiniować rozwój zawodowy? Rozwój zawodowy to proces zwiększania zakresu swojej wiedzy w czasie. Niby dobrze, ale jak to rozumieć? Może najprościej jak się da: każdego dnia uczymy się X nowych metod ( z danej klasy Frameworka etc.). I jeśli mówimy o początkach kariery zawodowej to jest to z pewnością prawda. Tylko, że jeśli z biegiem czasu dalej będziemy tak rozumieć rozwój to chyba coś z nami jest nie do końca w porządku. Chociaż to za dużo powiedziane. Może lepiej zabrzmi, że taka ścieżka r...
Architektura 2389 dni, 6 godzin, 33 minuty temu 563 źrodło rozwiń
Tak jak napisałem w jednym z wcześniejszych postów nie zajmuję się już tworzeniem raportów w Crystal Reports. Nie oznacza to jednak, że nie piszę kodu, który wykorzystuje te raporty. Dlatego też postanowiłem zebrać w jednym miejscu informację, które zaczynającemu pracę z Crystal Reports developerowi służyłyby pomocą (przy czym jest to pomoc ze strony samouka, ale lepsza tak niż żadna).1. Środowisko pracy Teoretycznie wystarczy pobrać odpowiednią wersję ze strony producenta zainstalować i możemy dz...
Pętle i warunki, naturalnie są z jednym z podstawowych elementów każdego programu. Języki wysokiego poziomu umożliwiają realizację tego za pomocą słów If, for, foreach,while. W językach niskiego poziomu, takich jak IL Assembly, wszystkie powyższe czynności wykonuje się za pomocą skoków warunkowych i bezwarunkowych. Działają one analogicznie do słowa kluczowego GOTO. W IL, najprostsza instrukcja skoku to BR:br jump1 // jakas logika tutajjump1: //... br nie zawiera żadnego warunku. Można ją porównać do...
C# 5.0 in a Nutshell is a great reference book about C#. Furthermore, it is worth to read it from the beginning to the end, to understand how C# works and to get familiar with the language features (can be used in the future as a reference). This book describes many features, which I have never used (after over 4 years programming in C#) like some XML serializers, COM interoperability or advanced threading/tasking techniques. Now, I know about them an...
Sztuka programowania 2390 dni, 22 godziny, 9 minut temu 184 źrodło rozwiń
Dobrze nazwana klasa, dobrze nazwana zmienna, dobrze nazwana tabela to połowa sukcesu w naszym zawodzie. Czytelny kod zdradzający już na pierwszy rzut oka intencje autora to skarb. Nie trzeba się głowić OCB, WTF, ot czytamy i wiemy co to to robić powinno. Jeśli jeszcze to robi to po prostu miodzik.Dobra nazwa to podstawa! No i taka sytuacja,...
Historia zaczyna się od prostego fragmentu kodu pokazanego poniżej. Kod ten to fragment walidatora, ktory ma za zadanie określić, czy dane są prawidłowe. Jeśli nie, to zmienna isValid powinna zostać ustawiona na false. var isValid = true; if (condition_1) isValid = false; if (condition_2) isValid = false; Kod ten działał do momentu, kiedy wprowadzono do niego małą zmianę pokazaną poniżej. Było to pewne uszczegółowienie logiki walidacji danych wejściowych. var isValid= true; i...
Sztuka programowania 2397 dni, 6 godzin, 37 minut temu 366 źrodło rozwiń
Czasami mam takie dni, że mam dość. Wszystko się sypie a ja sam nie wiem w co włożyć ręce (szczególnie jak przestaje działać coś na czym polegam od dłuższego czasu i coś co do tej pory nie sprawiało mi żadnych problemów). Pewnego pięknego poniedziałkowego ranka przychodzę do pracy i od progu słyszę, że po tym jak w piątek zrobiłem pusha to kod przestał się kompilować. Wprost “uwielbiam” takie rozpoczęcie tygodnia. Oczywiście jestem przekonany, że kod działa, ale jestem przecież tylko człowiekiem...
Może słyszeliście o takim ptaszku Fody. Ostatnim czasem ptaszek ten podbił moje serce. Korzystam z jego usług tak często jak się tylko da. Ogólnie muszę podziękować Pawłowi Łukasikowi za prezentacje na KGD.NET, która otworzyła mi oczy PropertyChanged.Fody To chyba mój ulubiony pakiet, ale zanim go opiszę muszę zrobić drobne wprowadzenie. Od początku mojej przygody z WPFem ( i ogólnie XAMLem) strasznie żmudnym procesem było bindowanie pomiędzy DataModelem a widokiem (niech zasłona milczenia zakryje fak...
Bardzo często na blogu poruszam tematykę c# internals. Bez nich, praktycznie niemożliwe jest pisanie optymalnego kodu. Jeśli ktoś np. nie wie jak async\await jest zaimplementowany wewnętrznie, bardzo łatwo może popełnić błędy podczas pisania kodu c#. Niedawno ktoś zasugerował mi, abym wyjaśnił bardziej IL. Bardzo często wklejam fragmentu kodu z Reflector’ora i nie wyjaśniam szczegółów. Z tego względu, przez kilka kolejnych wpisów zajmiemy się CLR internals oraz IL. Na początek podstawowe pytanie, co to...
Finally, I had time to watch Build 2014 sessions. Here are the best I have seen. Thinking for programmers (Leslie Lamport) Windows and the Internet of Things (Steve Teixeira) Building Azure Web Sites with Visual Studio Online “Monaco” (Chris Dias) What’s New for ASP.NET and Web in Visual Studio 2013 Update 2 and Beyond (Scott Hanselman and Scott Hunter) Modern C++: What You Need to Know (Herb Sutter) The Future of C# (and VB) Go Mobile with C# and Xamarin (Miguel de Icaza) TypeScript (Anders Hejlsberg) D...
W poprzednim poście opisałem jak działa stos w IL. Wiemy, że jest on kluczowy dla wszelkich operacji. Jedną z ważniejszych instrukcji, wprowadzonych w tamtym poście jest ldc.i4. Służy ona do załadowania liczby 4 bajtowej na stos. Oprócz niej, istnieje wiele innych instrukcji, które pełnią analogiczną rolę. Rozważmy następujący kod c#: float floatNumber =533.3f; double doubleNumber =5454.14; string text ="text"; int[] array =newint[] {21, 3}; Console.WriteLine(floatNumber); Console.WriteLine(doubl...
Istnieje wiele framework’ow ułatwiających izolację danych w testach jednostkowych. Nie opisuje ich na blogu, bo nie wiele od siebie różnią się . Microsoft Fakes jednak ma kilka ciekawych rzeczy i dlatego nim dzisiaj zajmiemy się. Niestety jest dostępny on wyłącznie w wersji Visual Studio Ultimate. Pierwszą wyróżniającą go cechą jest możliwość izolacji metod statycznych, które oczywiście nie mogą być w łatwy sposób mock’owane. Rozważmy klasyczny przykład:publicclass Person { publicvoid Method() ...
Sezon ogórkowy w pełni, dlatego i wpisy troszkę rzadziej niż zwykle, ale że u mnie w mieszkaniu remont to i urlop spędzam w domu i mogę nadrobić trochę zaległości… A w dzisiejszym wpisie temat, który często traktowany jest po macoszemu czyli testowanie JavaScript. O zaletach i konieczności testowania napisano już wiele, a jako profesjonalni programiści musimy wiedzieć, że dotyczy to nie tylko „backendu” ale i warstwy interfejsu użytkownika. Na całe szczęście,...