David H Hannson, autor Ruby on Rails opublikował artykuł: no i poszło… mleko się rozlało. Burza większa niż o sosnę (tą rozdartą – nie o brzozę, brzozy są niepolityczne). Uncle Bob napisał http://blog.8thlight.com/uncle-bob/2014/05/11/FrameworkBound.html ale jak wie...
Strona głównaUżytkownik
markone | użytkownik
Od pewnego czasu mam okazję budować system, którego część funkcjonalności dotyczy automatyzacji czynności administracyjnych związanych z zarządzaniem użytkownikami Active Directory. Jedną z takich czynności jest przełączanie skrzynek pocztowych Exchange 2007/2010 pomiędzy dwoma kontami użytkowników. W dzisiejszym wpisie pokażę, w jaki sposób zrealizować to zadanie wykorzystując Exchange Management Shell (EMS).
Monolity – wielkie projekty składające się z setek klas ściśle powiązanych ze sobą. Czasem to nawet nie muszą być przesadnie wielkie te projekty jednak wystarczy, że klasy są ściśle powiązane ze sobą. Co to znaczy ściśle powiązane ze sobą? Jeśli w jednej klasie użyjemy słowa new, żeby stworzyć obiekt innej klasy to właśnie ściśle powiązaliśmy te dwie klasy. Jedna bez drugiej żyć nie może, nie da się jednej z nich przenieść do innej biblioteki bez odpowiednich referencji. Jeśli chcemy zlec...
Sztuka programowania 4289 dni, 15 godzin, 21 minut temu 122 źrodło rozwiń
Witam ponownie i zapraszam na kolejny odcinek cyklu "przygotowania do MCSD 70-480". Zgodnie z tytułem, w dzisiejszym wpisie zajmiemy się kwestią obiektów i metod w JavaScript oraz ogólnie tematem programowania obiektowego w tym języku. Tym oto sposobem zamkniemy omawianie pierwszego z czterech głównych tematów jakie należy opanować przed egzaminem - mowa o "Implement and Manipulate Document Structures and Objects" stanowiącym 24% wszystkich pytań podczas testu.
Wszyscy w zawodzie zaczynaliśmy podobnie: nie wiedząc nic. Każdy z nas jest teraz na innym poziomie: jedni nadal nie wiedzą nic, inni mało, jeszcze inni dużo… ale nikt nie wie wszystkiego. Z biegiem lat kształtujemy sobie opinie na sposoby tworzenia oprogramowania – w końcu pochłania to sporą część naszego życia.
Witajcie w drugim odcinku Coding News – nowej, cotygodniowej serii, w której omawiam najciekawsze wydarzenia i znaleziska minionego tygodnia.
Nadeszła pora, by doprowadzić do współpracy klas odczytujących pliki i klas wyodrębniających z nich dane. Aby ta współpraca była jednak w ogóle możliwa – klasa FileOfValuesReader musi zostać zmodyfikowana, albowiem musi być możliwe „wstrzyknięcie” do niej obiektu implementującego interfejs IValuesExtractor. W rezultacie konstruktor zyska jeszcze jeden, dodatkowy parametr, poprzez który będzie można przekazać odpowiedni interpreter danych. Ponieważ ów interpreter trafia od razu do klasy bazowej ...
Sztuka programowania 4285 dni, 9 godzin, 52 minuty temu 45 źrodło rozwiń
W tym wpisie zaprezentuję dwie klasy dziedziczące po FileOfValuesReader i realizujące odczyt z plików tekstowych oraz binarnych. Obie klasy będą współpracować z odpowiadającymi im klasami wyodrębniającymi wartości z odczytanej zawartości. A ponieważ dopełnią one całości mechanizmu importu, to przygotuję także odpowiednie testy, które pozwolą upewnić się, że mechanizm importu nadal działa tak samo. Jako pierwszą zaimplementuję ...
Sztuka programowania 4286 dni, 2 godziny, 48 minut temu 37 źrodło rozwiń
Ostatnio dużo się piszę w polskim internecie na temat tego, że powinniśmy się cały czas rozwijać, sprawdzać nowe to rozwiązania, wykorzystywać coraz to nowsze biblioteki, może nawet i tworzyć takie, które nam ułatwią życie. Większość tych postów jest nastawiona negatywnie - w sposób jawny lub nie jawny – do osób/firm, które nie przechodzą lub nie mają możliwości przejścia na najnowsze technologię. Każdy z postów przeważnie zakłada, iż jak ktoś chce być programistą lub tworzyć oprogramowanie to trafia on ...
Ostatnią z czynności refaktoryzacyjnych będzie przystosowanie dotychczasowej klasy MethodObject do używania powstałych w trakcie refaktoryzacji klas. Jak można sprawdzić w części drugiej, klasa ta posiadała cztery publiczne metody: ImportCSV(), ImportTabSeparated(), ImportFixed(), ImportBinary(). Metody te były następnie wykorzystywane przez interfejs użytkownika do wykonywania odpowiednich importów. Te metody muszą zostać zachowane, zmieni się natomiast ich implementacja. Zmianie ulegnie też...
Sztuka programowania 4283 dni, 2 godziny, 19 minut temu 35 źrodło rozwiń
Witam, w kolejnej odsłonie mojego cyklu dotyczącego przygotowań do egzaminu "MCSD: 70-480 - Programming in HTML5 with JavaScript and CSS3". Tak jak można przeczytać w tytule, w dzisiejszym wpisie skupimy się na zdarzeniach w języku JavaScript. Zapoznamy się więc ze sposobami rejestracji funkcji obsługujących zdarzenia, poznamy zagadnienie bąbelkowego zachowania się zdarzeń, dowiemy się także jakie zdarzenia udostępniane są przez elementy DOM. Zapraszam do lektury.
Dla wszystkich biednych duszyczek zmuszonych do korzystania z TfuFSa jako narzędzia do utraty kontroli nad wersją dobre kilkadziesiąt miesięcy temu narodził się projekt Git-TFS pozwalający na użycie lokalnie Gita w tym celu. O tym narzędziu już pisałem w poście “git-tfs – lek na prawie całe zło” (i jeszcze przy paru innych okazjach). Microsoft nie mógł pozostać dłużny i pół roku temu zrobił swoją wersję: Git-TF, o czym m...
Recently Microsoft did something really interesting. Everybody knows that Internet Explorer (especially older versions) shouldn't be even called a browser. But still Microsoft Windows is the most popular operating system used commercially and so their browser is. Every web developer knows that making something to work on the IE is really challenging task. Microsoft learned a lesson in couple of recent years and wanted to repair their image in that field. Internet Explorer 9 and 10 aren't the best browse...
W dotychczasowym procesie refaktoryzacji udało nam się stworzyć elastyczny mechanizm importu – uzyskaliśmy tym samym podstawową funkcjonalność w zadowalającej postaci. Pora zająć się pozostałymi operacjami, które są niezbędne, aby uzyskać kompletną, pierwotną funkcjonalność refaktoryzowanego kodu. Na implementację oczekują przecież: zdefiniowany na początku interfejs IFileSelector i jego pochodna IFilteredFileSelector. Konieczne jest też zaimplementowanie ...
Sztuka programowania 4284 dni, 9 godzin, 54 minuty temu 43 źrodło rozwiń
Jako, że ostatnim wpisem zakończyłem omawianie zagadnień związanych z manipulowaniem strukturą dokumentu oraz obiektami, w dzisiejszym poście przejdę do drugiego z czterech głównych tematów związanych z egzaminem 70-480. Mowa tutaj o "implementacji przepływu programu" (ang. Implement Program Flow), który to temat ma stanowić 25% wszystkich pytań na egzaminie. W związku z powyższym, wpis dzisiejszy zawierać będzie omówienie sposobów iterowania po kolekcjach i elementach tablic, zajmiemy się także podejmo...
W WPF przy wykorzystaniu stylów oraz szablonów w prosty sposób możemy stworzyć mechanizm skórek, dzięki któremu możliwa będzie zmiana wyglądu naszej aplikacji w trakcie jej działania. W dzisiejszym wpisie pokażę jak taki mechanizm stworzyć. Zacznijmy od prostego okna składającego się z kontenera Grid oraz trzech przycisków. Po naciśnięciu każdego z nich załadowana zostanie odpowiednia skórka...
Czasami zachodzi potrzeba wykonania krytycznego kodu, który zużywa dużo zasobów. Podobnie jak w CER, nie chcemy wykonywać kodu jeśli wiemy, że nie ma wystarczającej pamięci. W .NET istnieje klasa MemoryFailPoint, która potrafi z góry “zaalokować” określoną pamięć.publicsealedclass MemoryFailPoint : CriticalFinalizerObject, IDisposable { public MemoryFailPoint(Int32 sizeInMegabytes); ~MemoryFailPoint(); publicvoid Dispose(); } MemoryFailPoint sprawdzi czy jest dostępna pamięć. Jeśli jej nie...
Sztuka programowania 4285 dni, 9 godzin, 52 minuty temu 103 źrodło rozwiń
Jak obiecałem – dziś uzupełnimy dotychczasowy zestaw testów o nowe testy. Co będziemy testować? Jeśli ktoś uważnie śledzi ten cykl zapewne oczekuje, że – zgodnie z wcześniejszymi zapowiedziami – przygotujemy test sprawdzający uruchamianie wszystkich metod biorących udział w przetwarzaniu pliku oraz dostosujemy stare testy sprawdzające powiadamianie o postępie przetwarzania. Tak – takie testy zostaną napisane. Ale najpierw utworzymy testy, których do tej pory nie było. Proszę zauważyć, że ...
Sztuka programowania 4283 dni, 2 godziny, 19 minut temu 59 źrodło rozwiń
Jedną z ciekawszych cech web developerki jest mnogość dostępnych na tym polu rozwiązań i technologii. Dlaczego uważam, że to dobrze? Poniekąd dlatego, że w ten sposób programista może przezwyciężyć spadek motywacji i nudę związaną z wykonywaniem kolejnego wielkiego projektu w młodym, dynamicznym zespole. Stwarza również pole do popisu i ciągłego rozwoju, pokazuje różne sposoby na zrobienie tego samego lepiej i szybciej. Niestety z punktu widzenia osób odpowiedzialnych za dostarczenie projektu klientowi ...
Sztuka programowania 4286 dni, 12 godzin, 36 minut temu 123 źrodło rozwiń
Opublikowano Z tematu dług technologiczny zrobił się całkiem spory cykl. Mimo, że nie wszystkie aspekty zostały poruszone, to myślę, że poruszone zostały wszystkie najważniejsze jego aspekty zatem nadszedł czas na odpowiedzenie sobie czy da się realizować projekty bez długu. Odpowiedź krótka brzmi NIE. Jeśli w każdym aspekcie będziemy korzystali z wszystkiego NAJ to przy dzisiejszym tempie rozwoju okaże się, że nie robimy nic oprócz zmian wersji narzędzi, bibliotek, framework-ów, wrzucaniu coraz to n...