Przychodzi baba do lekarza. Mówi “panie doktorze, byłam już u doktora X i on zalecił mi Y“. Na co lekarz: “a-HA! znam X, to konował, nic nie umie, tak naprawdę to dopiero JA pani powiem co trzeba zrobić“. Baba jest od tej pory zakochana w swoim nowym doktorze, nie mając tak naprawdę pojęcia czy faktycznie jest tak dobry jak twierdzi. Chodzi po sąsiadac...
GTD – Getting Things Done. Let me make mod for it . CGTD – (clear getting things done)
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 ...
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...
Witajcie w drugim odcinku Coding News – nowej, cotygodniowej serii, w której omawiam najciekawsze wydarzenia i znaleziska minionego tygodnia.
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.
Testy jednostkowe “czasu” nie są tematem łatwym. Rozsiane po całej aplikacji wywołania DateTime.Now (które i tak powinny być odwołaniami do DateTime.UtcNow) nie upraszczają tej kwestii. Problem ten można rozwiązać na kilka sposobów...
Witajcie w pierwszym odcinku Coding News – nowej, cotygodniowej serii, w której omawiam najciekawsze wydarzenia i znaleziska minionego tygodnia.
“Ciągły rozwój” jest, zdawałoby się, charakterystyczną cechą dla naszego zawodu. Nie tylko naszego oczywiście, ale my, programiści, szczególnie lubimy myśleć o sobie jako o tych, którzy nigdy nie stoją w miejscu i ciągle poznają nowe/lepsze techniki, rozwiązania, praktyki. Warto jednak zatrzymać się czasem na chwilę i zastanowić: czy ja sam nie odstaję od tego au...
Refaktoryzacja – ot kolejne popularne słowo…. nie zupełnie. Pisząc software nie zawsze dokładnie wiemy jak on będzie wyglądał i co finalnie będzie robił – tzn. w danej chwili (zdefiniowanym kwancie czasu, żeby brzmieć mądrzej) zawsze wiemy co będzie robił, tylko z dalszej perspektywy mentalnej – tj. po dłuższym okresie może się okazać, że robi coś zupełnie innego niż początkowo zakładaliśmy. Oczywiście nie ma w tym nic złego, przecież wszyscy jesteśmy teraz agile jednak nie wiedząc co fina...
W ostatnim poście marudziłem na management. Zwalanie na management ma tą zaletę, że zwalnia nas programistów z odpowiedzialności. To jest ICH wina, to ONI doprowadzili do takiego a nie innego stanu i tak dalej i tak dalej. Pułapką takiego zachowania jest “wymówka”. Wymówka przenosi naszą odpowiedzialność na kogoś lub coś innego. Wymówka jest świetna bo wybiela nas. Na konferencji 33 degree trafiłem ciasteczko z wróżbą o takiej treści: W życiu ma się albo wymówki albo wyniki Dlatego pora ...
Zadanie jest następujące: Na podstawie poniższego schematu (baza AdventureWorksLT) wyznaczyć wartość zamówienia. Dodać kolumny z id klienta i zamówienia (bez uwzględnienia podatku, obniżek itp). W zapytaniu wykorzystamy GroupJoin. Zapytanie to zapiszemy w dwóch postaciach LINQ2SQ: metodowej oraz SQLo podobnej...
Na początek kod: [TestClass] public class CPU_Pipelining_tests { const int DATALENGTH = 1024 * 1024 * 50; const int REPEATS = 3; ...
Kolega przeprowadzał kiedyś zdalne interview z programistą. W teorii wszystko było jak należy – ziomek interesował się zagadnieniami spoza pracy czysto zawodowej, prowadził bloga, używał Resharpera… No i właśnie przy Resharperze pojawiło się pierwsze zaskoczenie: używał go za pomocą MYSZKI! WTF? Normalnie Mouse Driven Development I...
O długu technologicznym ciąg dalszy. Tym razem będzie o managemencie czyli o wszelkich kierownikach, dyrektorach, leadach, dev leadach, pm-ach, project i product managerach i wszystkich innych, którzy mają pozycję decyzyjną. Przez to rozumiem wszystkie te osoby, które między innymi powiedzieć kiedy będzie nowa wersja i co w jej zakres wchodzi. Wydawało Ci się, że to tylko lenistwo programistów wpędza zespoły w długi? Otóż nie. Nie mały wkład w to ma management (zarząd w j. polskim ma troc...
W poprzednim artykule jako jeden z pierwszych składników długu technologicznego podałem wersję narzędzi. Dzisiaj będzie trochę szerzej o tym. Używanie starych narzędzi ma kilka dosyć poważnch skutków.Odcinanie się od lepszych narzędzi Pierwszy to odcinanie się od nowych zabawek, które pozwoliły by tworzyć lepsze produkty. Korzystając z .net 1.1 nie było wsparcia dla typów generycznych dzięki czemu zamiast stworzyć typ generyczny trzeba było czasem nawet pokopiować trochę kodu. Zamiast sk...
Producenci kontrolek lubią kiedy kupujemy kontrolki bo mają z tego pieniądze, nierzadko duże pieniądze. Jeszcze bardziej cieszą się jak podziedziczymy po ich kontrolkach. Wtedy jesteśmy ich, na zawsze. Jesteśmy jak narkoman w rękach dilera. Dlaczego? Ano dlatego, że jeśli odziedziczymy coś po jakiejś kontrolce lub bibliotece, a jeszcze lepiej jeśli kawałek kodu, który dziedziczy należy do logiki biznesowej lub logiki aplikacji to późniejsza zmiana kontrolki wiąże się z przerobieniem większ...
OData to protokół stworzony przez Microsoft, służący przesyłaniu danych za pomocą protokołu HTTP. Obsługuje następujące metody: GET - selekcja danych (SELECT), POST - wysyłanie danych (INSERT), PUT - uaktualnianie (UPDATE), DELETE - usuwanie danych
Używając LINQ2SQL oraz Entity Framework możemy na bieżąco monitorować wysyłane zapytania do bazy danych. Aby logować zapytania wysyłane przez LINQ2SQL należy na obiekcie DataContext ustawić właściwość Log. Przypisać do niej możemy dowolny obiekt klasy dziedziczącej po TextWriter.