Zazwyczaj aby stworzyć instalator dodajemy projekt instalacji do projektu. No ale . NET Framework pozwala zaimplementować swój własny niestandardowy instalator. W ćwiczeniu pierwszym pod tym rozdziałem w training kit jest przedstawione stworzenie standardowego instalatora w drugim natomiast niestandardowego. Jako, że certyfikat 70-536 nie obejmuje tematyki tworzenia standardowych instalatorów omówmy sobie ten drugi typ.Tworzenie niestandardowego instalatora Jeżeli potrzebujemy większej kontroli nad proce...
Wbudowany w Visual Studio system autouzupełniania kodu w przypadku C++ często działa całkiem dobrze, ale wiele osób pewnie stwierdziłoby, że częściej nie działa w ogóle. Każdy na pewno spotkał się z sytuacją, że po wpisaniu operatora kropki czy strzałki (->) jego oczom nie ukazywała się wcale lista składników klasy, a jedynie mało pomocny komunikat na pasku stanu. Sugeruje on zapoznanie się z okr...
Dziś krótka notka. Przedstawię tylko szybką metodę do porównywania dwóch tablic byte'ów. Wykorzystuje ona wskaźniki (czyli wymaga użycia trybu unsafe), gdzie po odpowiednich rzutowaniach, porównujemy 64bitowe longi. Daje nam to około 5-10 krotne przyśpieszenie, w porównaniu do zwykłego porównywania byte'ów w pętli for.
Czy poniższy kod nie jest doskonałym odwzorowaniem odpowiedzi na pytanie "dlaczego programiści nie pracują w Święta?"? :)
Przechowywanie ustawień aplikacji, czy ustawień połączenia z bazą danych (ang. connection string), to częsty wymóg. Zapisywanie ich “na sztywno” w kodzie aplikacji jest złą praktyką. Na szczęście .NET Framework udostępnia nam zestaw klas, które ułatwiają przechowywanie tych ustawień w specjalnych plikach XML. Mamy dwa główne typy takich plików:Globalny plik Machine.config, który jest wspólny dla wszystkich aplikacji korzystających z .NET Framework, Plik
Czy komentarze to przeżytek? A' propos tematu komentarzy postu Szymona i uwag do tego postu, chciałam dodać swoje trzy grosze... Nie tak dawno temu byłam świadkiem kształtowania się idei i powstawania zbioru reużywalnych bibliotek. Przy okazji tej inicjatywy podjętych zostało kilka decyzji. Czy chodziło o to by w końcu było porządnie? - nie wiem. Na pewno rozpoznawano i zaproponowano wiele technologii, nowych i starych podejść do tworzenia oprogramowania oraz metodyk, ktore nie istniały w sze...
W Oracle nie ma możliwości przechowywania wartości typu bool. Najbardziej powszechnym rozwiązaniem jest użycie kolumny typu CHAR(1) z wartościami 'Y' i 'N'. Autorzy NHibernate się na to przygotowali udostępniając typ YesNo. Mój przypadek był inny. Z bazy danych korzystała już aplikacja, która wartości typu bool zapisywała w kolumnach typu INT. Wartość true zdefiniowana była jako -1, wartość false - 0. Moja miała robić tak samo. Da radę. Tylko niestety trzeba się trochę napisać.
Bazy danych i XML 5462 dni, 19 godzin, 3 minuty temu 62 źrodło rozwiń
Greg Wilson przesłał mi ostatnio e-mailem następujące pytanie: Od stycznia wykładam inżynierię oprogramowania dla studentów 3-ciego roku na Uniwersytecie Toronto i chciałbym choć jedną godzinę poświęcić na wdrożenia -- [wdrożenia] nigdy nie pojawiły się na moich wykładach i są dość często pomijane w podręcznikach do inżynierii oprogramowania, a z doświadczenia wiem, że bywają one wyzwaniem niemniej trudnym jak samo napisan...
"Bezpieczeństwo w WCF" - pojęcie takie wydaje się oklepane i opisane na wszelkie możliwe sposoby. Tyle materiałów, tyle blogów, artykułów, książek...
Architektura 5464 dni, 16 godzin, 38 minut temu 123 źrodło rozwiń
Dzisiaj chciałbym poruszyć ważny element tworzenia aplikacji – logowanie zdarzeń. Odpowiednio przygotowane logi są często jedynym sposobem na zdiagnozowanie problemu w aplikacji dlatego warto o tym pamiętać i z logowania korzystać. Logowanie można przeprowadzić na wiele sposobów – ja chciałbym opisać przykład oparty na darmowej bibliotece log4net. Temat ten podzieliłem na trzy części, dzisiaj pokażę jak korzystać ...
Krótko, jeżeli potrzebujecie listę krajów dla combobox wystarczy wam taki o to fragment kodu...
Przykłady wykorzystania tagów serwera na stronie aspx. Nie wiem do końca czy tak to się nazywa, w każdym razie mam na myśli dziwne znaczki rozpoczynające się od <% i kończące się na %>. Komentarz po stronie serwera to <%-- --%>. Przydatne, gdy chcemy zakomentować element, który zawiera runat="server" <%-- --%> Element <%$ %> pozwala na przypisanie wartości z AppSettings, Resources (zasobów globalnych) lub ConnectionStrings...
Na ten problem natknąłem się całkiem przypadkiem. W xamlu napisałem coś takiego: W wyniku czegoś takiego można by się spodziewać, że pojawi się tekst “8 grudnia 2009”. Nic bardziej mylnego pojawiło się “8 December 2009”. Wynik całkiem zaskakujący ponieważ zarówno CurrentCulture jak i CurrentUICulture zawierały poprawne ustawienia dla pl-PL. Okazuje się, że tak zachowuje się DataBinding w WPF-ie. Jedynym obejściem jest albo napisanie własnyc...
Dzisiaj króciutki rozdział o usługach windows. Windows Service jest procesem uruchomionym w tle bez interfejsu i we własnej sesji użytkownika. Usługa może być uruchomiona automatycznie, podczas startu komputera, nawet bez zalogowania użytkownika. Sam windows ma kilkadziesiąt usług np. Workstation, World Wide Web Publishing. Usługi windows funkcjonują inaczej niż inne typu projektów.Skompilowany plik wykonywalny usług musi być zainstalowany przed instalacją projektu aby mógł on funkcjonować w sensowny sp...
Wiele programów z sieci wciąż jeszcze ściąga się w postaci archiwów do samodzielnego wypakowania, jak choćby w formacie .zip. Ma to swoje zalety i wady - do tych drugich należy fakt, że nie bardzo wiadomo, jak wygląda wewnętrzna struktura katalogów takiej paczki. Używając opcji typu Wypakuj tutaj ryzykujemy zaśmiecenie folderu Downloads plikami programu. Dlatego osobiście zawsze ...
Na wss.pl pojawił się wątek dotyczący przekształcenia danych tabelarycznych ze strony HTML na tabelę w bazie danych. W dyskusji wyraziłem wątpliwość co do trywialności rozwiązania ze względu na fakt, że zawartość stron HTML odbiega znacznie od poprawnych dokumentów XML (a do zapisu do bazy danych chciałem wykorzystać możliwości XML w SQL Server). Jednak jak się okazało istnieje świetny helper do dokumentów HTML, który znajduje się pod tym adresem: htmlagilitypack. Jako cel swego przekształcenia wybrał...
Bazy danych i XML 5466 dni, 17 godzin, 42 minuty temu 46 źrodło rozwiń
Projektanci WCF zostawili w swoim produkcie bardzo dużo półprzymkniętych furtek czekających tylko na odkrycie i wykorzystanie ich potencjału. Jednym z takich czarodziejskich otworów do przyjemnego, różowego, miękkiego wnętrza WCF jest infrastruktura Behaviors (więcej o, między innymi, nich, na przykład w artykule "Extending WCF with Custom Behaviors"). Z ich pomocą można osiągnąć baaardzo wiele, między innymi: w niesamowicie elegancki sposób zebrać w jednym miejscu wszystkie błędy wygenerowane przez nasz...
Architektura 5466 dni, 17 godzin, 42 minuty temu 95 źrodło rozwiń
Oryginalny post: Sharpening the SawAutor: Jeff Atwood Jak ostrzysz swoją piłę jako programista? Ostrzenie piły odnosi się do wszystkiego co robisz, co nie jest programowaniem, a ma na celu (teoretycznie) zrobienie z Ciebie lepszego programisty. Pojęcie to pochodzi z książki Coveya -- 7 Nawyków Skutecznego Działania. Pewien facet natknął się w górach na drwala. Mężczyzna zatrzymał się, aby poobserwować drwala, gdy ten gorączkowo ścinał bardzo duże drzewo. Zauważył, że drwal pracował w pocie c...
W środę na spotkaniu naszej grupy zaprezentowałem czym jest WPF, do czego może się przydać oraz pokazałem przykłady kodu. Windows Presentation Foundation jest jednym z elementów wprowadzonych w .NET 3.0. Przede wszystkim umożliwia rozdzielenie kodu aplikacji od projektu interfejsu użytkownika. Dzięki narzędziu Microsoft Expression Blend Designer może projektować interfejs aplikacji w sposób dla niego wygodny (graficzne przeciąganie elementów, kolorowanie, ustawianie stanów animacji na timeline, itp). W W...
W kilku krokach i słowach, postaram się wyjaśnić zasadę lokalizacji aplikacji .NET Compact Framework. Wszystko przy uwzględnieniu certyfikowania aplikacji dla Windows Marketplace for Mobile.
Mobile development 5470 dni, 21 godzin, 22 minuty temu 56 źrodło rozwiń