Czym może kierować się klient wybierając freelancera-programistę? Z grafikami na pewno ma łatwiej - wystarczy obejrzeć portfolio. U nas jednak sytuacja się komplikuje. Często programista najzwyczajniej w świecie nie może pokazać zrealizowanych projektów, bo były pisane na wewnętrzne potrzeby jakiejś firmy i umowa zabrania takich praktyk. A jeżeli już może pokazać, to w wielu przypadkach klienci postanowili ciąć koszty i zadowolić się zwykłym, szarym, standardowym winformsowym UI. Czy zrobi to wrażenie n...
Niedawno świętowaliśmy przekroczenie liczby 2000 artykułów na dotnetomaniaku. Przed nami kolejna okazja do świętowania. To dzisiaj – dokładnie dwa lata temu na nowo powstałej stronie pojawił się pierwszy artykuł dotyczący technologii .NET, będący początkiem naszej wspólnej przygody. Pierwsze kroki dotnetomaniaka były małe i niepewne. Dzisiaj, bogatszy w wiedzę chodzi całkiem pewnie a w jego archiwum pojawia się coraz więcej artykułów, z których my – dotnetomaniacy korzystamy bardzo chętnie. Idea strony b...
W komentarzach do poprzedniego wpisu Sławek dopominał się o 'ciąg dalszy', więc może jako uzupełnienie dodam garść informacji odnośnie dostępności modułów w zrzutach pamięci analizowanego procesu. Weźmy zatem aplikację testową z poprzedniego tekstu i przygotujmy zrzuty pamięci dla działającego procesu, a potem sprawdźmy co też możemy z nich wyłuskać odnośnie załadowanych modułów. 1. WinDbg W WinDbg mamy polecenie .dump z wieloma parametrami określającymi zestaw informacji do zapisania w pliku zrzutu. Dla...
Poprzedni tekst zakończyłem zagadką: czy wykonując !SaveModule będziemy mieli kod dynamicznej metody DynamicClass.SecureGetKey(Test.Program, Int32) w pliku na dysku? Nikt nie odpowiedział, więc ja to zrobię: Nie, kod generowany w ramach DynamicMethod nie znajdzie się w zrzucie modułu na dysku. Zdziwieni? Ja trochę, a to jeszcze nie jest ostatnia niespodzianka, jaką serwuje nam SaveModule.Dziś zapoznamy się z następną, ale po kolei. Uwaga! Wszystkie dalsze rozważania dotyczą aplikacji x86, więc wszystki...
W mojej pierwszej „zawodowej” pracy na stanowisku programisty miałem okazję programować w VB.NET. Wbrew wielu opiniom uważam, że to bardzo przyjazny język i programuje się w nim bardzo fajnie. Po przesiadce na C#, poza koniecznością wstawiania średnika na końcu każdej linii, zaskoczył mnie brak możliwości zdefiniowania parametru domyślnego w metodzie. Trochę to zajęło, ale i C# w końcu „dorobił” się tej funkcjonalności.
Omówienie zasad tworzenia płytkich i głębokich kopii obiektów w języku C#.
Kilka tygodni temu miałem za zadanie wygenerować na stronie tabelkę dla pewnych danych, z zastrzeżeniem, że ostatnie wiersze powinny zawierać sumę i średnią wszystkich komórek powyżej. Nic nadzwyczajnego. Jednak pojawił się jeden problem: źródłowa tabela takich danych nie posiadała. Oczywiste było, że takie wymaganie pojawi się zaraz w kolejnych miejscach. Postanowiłem więc poświęcić kilka minut na zamknięcie takiej funkcjonalności w osobnej metodzie. Dość naturalnym wydało mi się stworzenie odpowiednik...
Artykuł napisany przez początkującego programistę przedstawia opis krok po kroku tworzenia aplikacji wyświetlającej nazwy krain na mapie Śródziemia. Młody autor ma nadzieję nauczyć się czegoś od doświadczonej społeczności .net i pomóc jej mniej zaawansowanym członkom.
Tworząc różnego rodzaju programy czasami pojawia się problem zapewnienia autentycznością plików. Sytuacja taka ma miejsce, gdy w plikach tych znajdują się bardzo ważne dane, których zmiana mogłaby doprowadzić do wygenerowania różnego rodzaju strat. Takimi plikami mogą być pliki licencji, zawierające dane finansowe, czy dane medyczne, itp. Problem ten można rozwiązać w bardzo prosty sposób używając plików XML. Wystarczy, że podpiszemy plik XML i sprawdzimy ten podpis przed ponownym użyciem pliku. Jeśli bę...
W sali szkoleniowej siedzi kilka osób. Otwierają się drzwi. Wchodzi koleś. "Dzień dobry. Nazywam się tak i tak. Jestem MCT, jestem MCP, jestem MCPD, jestem AA, PKP i NBP. Będę was nauczał. Takie bowiem otrzymałem przykazanie. Tutaj macie książki, przed wami stoją laptopy z materiałami, na ścianie wyświetlają się slajdy. Ja mówię, wy słuchacie. Wszystko jasne? Dobrze. Miejmy to już wreszcie za sobą...". Po chwili niezręcznej ciszy zaczyna się SZKOLENIE. A raczej "szkolenie" (zamiast apostrofów wstawiłbym...
Przez ostatnie dwa tygodnie dużo się już na ten temat pisało, postanowiłem, więc, że dodam i swoje dwie krople do dyskusji. Dla tych którzy nie są w temacie, wszystko rozbija się o to, że RedGate (firma która kilka lat temu przejęła development na darmowym narzędziem do analizy i dekompilacji kodu napisanego pod .NET) oświadczyło, że zacznie pobierać opłatę za oprogramowanie. Pewnie to by umknęło uwadze społeczności gdyby nie tak naprawdę trzy kluczowe punkty:
Kilka dni temu Sławek napisał tekst o ukrywaniu kodu i skorzystał z klasy DynamicMethod, dzięki której generował kod IL w trakcie wykonania programu. Był również na tyle uprzejmy, że podesłał mi przykładowy kod, dzięki któremu zaoszczędziłem trochę czasu i mogłem zająć się od razu konkretem. Mam nadzieję, ze nie będzie na mnie zły jak wrzucę całościowo część tego kodu, dostępnego również w jego notce... :) Dla przypomnienia zatem, Sławkowi zależało na ukryciu szczegółów metody GetValue, tak, aby po dezas...
Express App Framework – walidacja danych Luty 10th, 2011 | Author: Kelut Dane przed wysłaniem do bazy danych, musimy poddać walidacji. Standardowe przypadki to „pole nie może być puste”, „pole musi mieć unikatową wartość”, czy też bardziej zaawansowane przypadki, w których używamy wyrażeń regularnych. W Express App Framework zadanie to realizujemy w prosty sposób, używając do tego gotowego silnika. Żeby nie przedłużać wpisu, przejdźmy od razu do rzeczy. Na początek dodajmy przestrzeń nazw DevExpress.Pers...
Mniej więcej dwa miesiące temu postanowiłem, że chcę mieć trackballa. Mniej więcej miesiąc temu otwierałem paczkę z Logitech Cordless Optical TrackMan. Co było dalej - o tym poniżej. Najpierw jednak o motywach tej decyzji. Przez całe moje personalne otoczenie (i część "twittosfery":) ) została ona odebrana z niemałym zdziwieniem. Padały pytania w szerokim zakresie, od "to robią jeszcze trackballe?" do "po co?".
Microsoft Research opracował ciekawe rozwiązanie automatycznego generowania testów jednostkowych. Artykuł: http://msdn.microsoft.com/pl-pl/library/pex-i-moles–narzedzia-do-automatycznego-generowania-testow-jednostkowychExplore posts in the same categories:Testy This entry was posted on Monday, February 7th, 2011 at 7:35 pm and is filed under Testy. You can subscribe via RSS 2.0 feed to this post's comments. ...
Jedną z najczęściej wykonywanych operacji w pracy z komputerem jest „kopiuj (wytnij) -> wklej”. Wiąże się to z użyciem kombinacji klawiszy „ctrl+C (crtl+X) -> ctrl+V”. Ten wspaniały mechanizm pozwala na powielanie (przenoszenie), a dzięki temu szybsze programowanie ;), dowolnego tekstu czy grafiki. Efektem ubocznym (choć czasami pożądanym) jest przenoszenie formatowania wraz z kopiowaną zawartością.
Stanąłem ostatnio przed następującym problemem: ukryć algorytm (w tym wypadku zawartość metody) tak, żeby przynajmniej na pierwszy rzut oka nie dało się go przeczytać. Pogrzebałem troche w róźnych helpach i innych internetach i stwierdziłem, że idealnie do tego celu nada się klasa DynamicMethod. Jak się okazało łatwiej powierdzieć, trudniej zrobić. Jak zawsze zresztą...
Programiści dzielą się na: Tych, którzy piszą bardzo dużo komentarzy, czasami prawie w każdej linijce. Tych spotkałem niewielu.Tych, którzy w ogóle ich nie piszą, nawet jeśli napisali kod, którego nie da się zrozumieć bez choćby odrobiny komentarza. Tych ortodoksów jest już więcej.Największa grupę stanowią natomiast programiści, którzy sytuują się gdzieś pomiędzy tymi dwiema skrajnościami. Kiedy zaczynałem programować pisałem bardzo dużo komentarzy. Wiele z nich było zupełnie niepotrze...
W wersji 4.0 wprowadzono nowy typ – dynamic. Zmienne tego typu będą sprawdzane w momencie wywołania (runtime) a nie kompilacji. Oznacza to, że w czasie kompilacji nie będziemy poinformowani o błędach takich jak brak funkcji. Przykład:dynamic variable="tekst"; variable=variable *5; Powyższy kod skompiluje się, jednak w momencie uruchomienia zostanie wyrzucony wyjątek (nie można pomnożyć przecież tekstu przez liczbę). Gdybyśmy użyli klasycznych typów (np. string) kompilacja nie powiodłaby się. Dynamic jes...
"Nie mam pojęcia, co jest nie tak z moimi deweloperami", myśli CEO. "Wszystko szło tak dobrze, gdy zaczęliśmy projekt. Przez kilka pierwszych tygodni zespół szalał i stworzył świetny prototyp. Od tego czasu jednak wszystko zwolniło do żółwiego tempa. Oni po prostu nie pracują już tak ciężko." Wybiera driver Callaway Titanium i wysyła wózek golfowy po lodowatą lemoniadę. "Może jeśli zwolnię kilku leniwców, to zapali im się grunt pod nogami!"....