KLOC (ang. Kilo Lines Of Code) to bardzo stara miara złożoności programów na podstawie liczby linii kodu. Z pewnością ma wiele wad, bo jak porównywać kod w C/C++ z kodem w Java czy C#. Czy jako linie kody powinno liczyć się komentarze lub importy przestrzeni nazw, co z kodem generowanym automatycznie itd. Wszystko to prawda, ale osobiście uważam, że ta miara jednak coś mówi. Ostatnio natknąłem się na bardzo ciekawe dane dotyczące liczby błędów/KLOC.
Sztuka programowania 4024 dni, 6 minut temu 139 źrodło rozwiń
W tej części opisane zostaną dobre i złe praktyki stosowane przy pisaniu testów jednostkowych. Co ciekawe, praktyki te odbiegają niekiedy od ogólnie przyjętych założeń i standardów kodowania. Przykładem może być zasada DRY—Don’t Repeat Yourself. W TDD kopiuj-wklej to niemal chleb powszedni; w TDD możemy stosować zasadę zgoła odwrotną—Do Repeat Yourself! Taka odrębność wynika z tego, że w kodzie testowym musimy zminimalizować prawdopodobieństwo pojawienia się błędu. Kod tes...
Sztuka programowania 4025 dni, 22 godziny, 50 minut temu 406 źrodło rozwiń
Witajcie w Coding News – serii screencastów, w której omawiam najciekawsze wydarzenia i znaleziska minionego tygodnia.
W .NET istnieje metoda do wykonywania pętli równolegle. Pisałem ogólne o niej kilka miesięcy temu. Temat jest jednak dużo bardziej skomplikowany i z pewnością należy zrozumieć różne podejścia do problemu. Przed zrównolegleniem pętli, należy zastanowić się czy na prawdę przyniesie to pozytywne efekty. Złe rozpoznanie przypadku spowoduje znaczącą degradację wydajności. Zastanówmy się na co należy zwracać uwagę:Czy poszczególne elementy tablicy można przetwarzać w sposób bezpieczny (thread-safe). Jeśli nie...
Sztuka programowania 4025 dni, 22 godziny, 50 minut temu 168 źrodło rozwiń
Leave a reply W poprzednim poście opisałem jakie możliwości daje nam konfiguracja sesji w ASP.Net. Dziś opiszę w trzech prostych krokach, jak skonfigurować sesję tak, aby była ona współdzielona pomiędzy dwie (kilka) różnych aplikacji.Przygotowujemy bazę danych sql dla sesji przy pomocy aspnet_regsql.exe (opis). W moim przykładzie będzie to istniejąca baza danych o nazwie “northwind” na serwerze “localhost”: aspnet_regsql -d northwind -S localhost -U UserName -P Password -ssadd -sstype c Następnie...
Czasem w trakcie pracy zdarza się, że musimy przygotować dane testowe. Przyczyny mogą być różne, możemy potrzebować danych w celu przetestowania fragmentu aplikacji lub ...
Sporadycznie, podczas instalacji VS 2013 może nastąpić mały problem, o którym dowiemy się dopiero w trakcie tworzenia nowego projektu – nie każdego rodzaju, ale takiego, który polega na paczkach NuGet. Mianowicie, jak będziemy chcieli stworzyć nowe solution z projektem, otrzymamy taki o to błąd:The system cannot find the file specified. (Exception from HRESULT: 0x80070002) Jak zaś będziemy chcieli dodać projekt do istniejącego solution – lub pustego, założonego przy pierwszym błędzie, otrzymamy taki o ...
W pracy, głównie ze względu na administratorów i zarządzanie uprawnieniami, muszę korzystać z TFSa. Nie jestem entuzjastą tego narzędzia i zdecydowanie wolę pracę z Gitem, m. in. z powodów, które ...
W .NET można anulować wątki za pomocą tokena. Oczywiście nie należy używać metody Abort czy Cancel, ale o tym już wiele razy pisałem – w skrócie nie wiadomo kiedy taki wątek zostanie przerwany. Użycie tokena jest proste tzn. (przykład MSDN):class Program { staticvoid Main() { var tokenSource2 =new CancellationTokenSource(); CancellationToken ct = tokenSource2.Token; var task = Task.Factory.StartNew(() => { // Were we already canceled? ct.T...
Sztuka programowania 4028 dni, 12 godzin, 19 minut temu 140 źrodło rozwiń
Czasem zwykłe metody debugowania nie wystarczają, czasem watch-e i sprawdzanie krok po kroku jest nie wystarczające. Czasem chciało by się sprawdzić wartość obiektu, do którego nie mamy referencji. No właśnie, wszystkie normalne narzędzia debuggowania jakie udostęnia Visual Studio pozwalają na oglądanie wszystkiego co mamy w zasięgu referencji albo gdzieś po callstack-u możemy się do “tego” dorwać. Co jednak jeśli i to za mało? Na pomoc Make Object ID. Zatrzymując program w momencie gdy ma...
Nie wszystko co kwacze to kaczka Czasem rzeczy są podobne ale jest to przypadkowe podobieństwo. To są w rzeczywistości różne rzeczy Przykład z życia, akurat bardzo niskopoziomowy. Potrzebowałem posklejać takie jakby “ścieżki”, separatorem był underscore (najlepsze polskie tłumaczenie to podłoga) “”. Przykładowo contentcolors_red. Rzuciło mi się, że mamy już napisany kod metody System.IO.Path.Combine(). Mo...
Sztuka programowania 4030 dni, 23 godziny, 11 minut temu 293 źrodło rozwiń
.NET 2.0 to stara rzecz, ale wciąż z różnych powodów używana, na przykład dlatego, że klient nie chce zainstalować nowej wersji platformy na maszynach wszystkich użytkowników systemu. A co, jeśli pomimo tego wymarzy się nam użycie na przykład LINQ to Objects? Metody takie jak Select, Take itd. łatwo zaimplementować samemu, ale bez extensions methods ich użycie nie będzie takie przyjemne. Zastanówmy się, co z tym robić. Metody rozszerzające obsługiwane są począwszy od .NET w wersji...
Ostatnio widzę dużo wpisów na temat debugowania aplikacji. Nie trafiłem jednak na opis dwóch rzeczy, które bardzo tą czynność ułatwiają, mianowicie, zmiana kolejności wykonywania kodu oraz GetHashCode()Zmiana kolejności wykonywania kodu Czy zdarzyło Ci się podczas debugowania przejechać o tą jedną linijkę za daleko? Nic prostszego, chwyć żółtą strzałkę i przesuń kilka linijek do tyłu i wykonaj kod jeszcze raz. To jest tak proste, że aż niebywałe, że niektórzy o tym nie wiedzą. Teraz już w...
Kiedyś pisałem już o false sharing. Jeśli problem nie jest znany, najpierw zachęcam do przeczytania tego wpisu, ponieważ nie będę tutaj pisał o teoretycznych zagadnieniach: http://www.pzielinski.com/?p=1489 Oprócz wyjaśnienia podstaw, podałem przykład struktury danych składających się z dwóch Int32. Pokazałem również jakie pułapki czekają nas przy pracy z tablicami. To zadziwiające, że kolejność w jakiej przeglądamy tablicę ma tak ogromne znaczenie w wydajności (kod może być nawet kilkakrotnie wolniejs...
Sztuka programowania 4031 dni, 11 godzin, 10 minut temu 122 źrodło rozwiń
Sztuka programowania 4031 dni, 11 godzin, 10 minut temu 53 źrodło rozwiń
I am working at simple application for Decision Support Systems classes. I’ve decided to write it as a single page application with AngularJS. Yesteday I had a problem with angular.bootstrap method, thought the solution is pretty simple I’ve decided to put it here because I know that my memory tends to be volatile. Ok then, let’s explain what was the problem...
Sztuka programowania 4033 dni, 8 godzin, 49 minut temu 76 źrodło rozwiń
Microsoft w ramach zmiany wizerunku swojej przeglądarki internetowej I podejścia do “dobrego kodu” strony zaproponował serwis, który skanuje nasze gotowe serwisy internetowe i sugeruje zmiany. Pod adresem internetowym: http://www.modern.ie/report znajdziemy skaner po wpisaniu adresu strony zobaczymy sugestie: Sugestie są podporządkowane temu jak strona będzie odbierana w:starszych wersjach przeglądarki Internet Explorersystemie Windows 8pozostałych przeglądarkach internetowych Ostatni punkt jest ...
Windows PowerShell is very powerful tool. It contains many useful commands. One of my favorite features is possibility to use some well-known bash commands such as: ls or pwd, which are missing in Windows Command Prompt. The cool thing is the fact, that PowerShell contains combination of Windows Command Prompt and Bash shell commands. E.g. for copying you can use copy (Windows) and cp (Bash).
Let’s be agile! We are a team; we are winners - thought manager of the project like many others on the IT market. Therefore, since we are a group that has a common goal, we focus on success, and do everything to meet clients’ needs - why do we fail? It is time to take things into our hands, let’s organize our work, let’s implement agile projects. Let’s be agile! That was the idea of our main character. The question is, how to be agile? How to introduce agile methodologies to our project? Ho...