Słowo na niedzielę, o wszechwiedzy

28 lutego 2010 12:05 w kategorii: pro
Dzisiaj myśl, która powinna być mottem każdego programisty. Porada motywująca do rozwoju i do poznawania świata. Zasada, której przestrzeganie jest gwarancją ogromnego doświadczenia, obycia i umiejętności porozmawiania na każdy programistyczny temat. Wreszcie: jedna z moich największych "zawodowych" porażek, ponieważ okazało się, że na życie według tej reguły najzwyczajniej w świecie nie ma czasu: Know something about everything and everything about something A chciałoby się i zastosować w pra... [More]

Co POWINIEN freelancer

25 lutego 2010 06:53 w kategorii: pro
Zastanawiałem się ostatnio nad tym, jaki MUSI być godny zaufania freelancer-programista, a jaki być NIE MOŻE. Efektem jest kilka spostrzeżeń, które dla wielu ocierają się zapewne o banał... ale ze względu na spore zainteresowanie ostatnim postem o tej tematyce postanowiłem się nimi podzielić. Co zatem cechuje profesjonalistę? Zadowolenie klienta Różne mogą być bodźce powodujące zostanie freelancerem i różne zrządzenia losu mogą być przyczyną radości bądź rozżalenia. Wartością numer jeden w ty... [More]

Mój komputer ma 4GB RAMu, z czego 2GB prawie cały czas oddane są maszynie wirtualnej, na której pracuję. W celu zwiększenia wydajności wyłączyłem plik stronicowania, coby mi co chwila nie rzęziło dyskami (wzrost wydajności o jakieś miliard %, co chyba zwiastuje rychły zgon tychże...?) Podczas normalnej pracy, z uruchomionymi wszystkimi potrzebnymi aplikacjami, zwykle ok 500MB wisi sobie wolne (jak możecie się domyślić, przed przejściem na 64 bity było dość kiepsko:) ). Po aplikacjach nie zauważ... [More]

Przechowujesz datę i czas? Może warto w UTC?

22 lutego 2010 07:00 w kategorii: pro
Tagi: ,
W ubiegłym tygodniu w implementowanym systemie zajmowałem się datą i czasem. I tak mnie tknęło... dlaczego w ogromnej większości systemów, które przyszło mi oglądać, datę zapisuje się w sposób następujący? 1: article.PublishedTime = DateTime.Now Niby co jest z tym złego? Właściwie... to zależy od kontekstu i rodzaju tworzonego systemu. Korzystając z powyższej konstrukcji trzeba zdawać sobie sprawę z tego, że tak zapisany czas jest ZALEŻNY od maszyny, na której operacja ma miejsce. W... [More]

Słowo na niedzielę, o pomyłkach

21 lutego 2010 12:04 w kategorii: pro
Czytając ostatnio dokumentację narzędzia KDiff3 (tak, zdarza mi się czytać takie rzeczy:) ) natknąłem się na zabawne, a jednocześnie chyba dość prawdziwe stwierdzenie: To err is human, but to really mess things up you need a computer Przypomina to, że ostrożność przede wszystkim! Źródło: dokumentacja KDiff3.

Jak wyłączyć filtr antyspamowy w Gmailu

19 lutego 2010 06:54 w kategorii: pro
Tagi:
Gmail jest moją "oficjalną" skrzynką i codziennie dostaję na niego sporo wiadomości. Spora część to spam, ale... wolę dostać 100 spamów każdego dnia niż przegapić jeden nie-spam z powodu nadgorliwego filtra antyspamowego. Nie korzystam z interfejsu webowego, więc i o zapełniającym się spamie nie byłem w żaden sposób powiadamiany. Tak więc ku pamięci: poniższy obrazek prezentuje ustawienie wyłączające filtr antyspamowy w Gmailu (trochę naokoło, ale działa:) ):

"Lokalne" funkcje w C#

18 lutego 2010 06:52 w kategorii: pro
Programowanie w JavaScript niesie za sobą dużą dozę swobody jeżeli chodzi o posługiwanie się funkcjami. Funkcje są wszędzie, deklarować je można na wiele sposobów, a rozsądne ich wykorzystanie jest źródłem nowych przyzwyczajeń, które chciałoby się niejednokrotnie przenieść do "rodzimego" języka programowania. W moim przypadku oczywiście C#. I dzięki wyrażeniom lambda takie szafowanie funkcjami na lewo i prawo staje się nie tylko możliwe (bo możliwe było już wcześniej od .NET 2.0 dzięki... [More]

Modyfikacja historii w Gicie

17 lutego 2010 06:41 w kategorii: pro
W poście przedstawiającym Gita wspomniałem o możliwości modyfikacji historii - i dzisiaj więcej na ten temat. Jest to funkcjonalność naprawdę nie do przecenienia. Commit nie jest już czynnością ostateczną, z którą nie można nic zrobić, jak nas przyzwyczaił SVN. Wtedy przed puszczeniem zmian trzeba się było zastanawiać i analizować dokonane zmiany. Tutaj natomiast bardzo sensownym trybem pracy jest lokalne zatwierdzanie zmian tak często jak mamy na to ochotę - ja na przykład nienawidzę mieć jedno... [More]

Skrypt AutoHotkey ułatwiający pracę z Git

16 lutego 2010 08:15 w kategorii: pro
Tagi: , ,
Git posiada możliwość nadawania własnych aliasów jego komendom. W konfiguracji wygląda to tak: 1: [alias] 2: ci = commit A więcej na ten temat można poczytać w WIKI. Ja jednak zamiast korzystać z aliasów, napisałem swój skrypt do miniaplikacji AutoHotkey. Przechwytuje ona zdefiniowane sekwencje klawiszy, w locie zamieniając na inne akcje. (tym, którzy go nie znają, gorąco polecam ściągnięcie i kilka chwil zabawy, świetna sprawa). Mój poniższy skrypt jest banalny: ogranicz... [More]

Publikacja repozytorium Git na IIS

12 lutego 2010 09:41 w kategorii: pro
Wspominałem o "nienajświetniejszym" działaniu Git pod Windows oraz o tym, że w Mercurialu udało mi się zrobić WIĘCEJ przez 2 godziny niż w Git przez kilka miesięcy. Główną czynnością, którą miałem wówczas na myśli, było udostępnienie swojego repozytorium na zewnątrz. Linuxowa wersja Gita rozprowadzana jest z komendą git-daemon pozwalającą na zdalne dobranie się do repo po protokole git://. Taki odpowiednik svnserve. Niestety po zainstalowaniu msysgit okazuje się, że w tej wersji deamo... [More]

Git a ignorowanie plików

11 lutego 2010 06:43 w kategorii: pro
Tagi: ,
System kontroli wersji zbierający WSZYSTKO z naszego working copy byłby bardzo ciężki w użyciu. Dlatego też każdy z nich w ten czy inny sposób umożliwia ignorowanie wybranej zawartości. Kiedyś pisałem o obsłudze tego scenariusza w SVN (post "Ignorowanie "zewnętrznych" plików w repozytorium SVN"), zobaczmy więc dla porównania jak to jest zrealizowane w Gicie. Ignorowanie nowych plików Standardowym zachowaniem jest ignorowanie plików, których w ogóle nie chcemy w swoim repozytorium. Do... [More]

Git - początek

10 lutego 2010 06:07 w kategorii: pro
Instalacja Git na Windows Najprostsze co mogę zrobić to podać link do instalatora: http://code.google.com/p/msysgit/downloads/list. Ładny wizard przeprowadzi nas przez cały proces instalacji. Wstępna konfiguracja Przed rozpoczęciem pracy z Git zalecana jest wstępna konfiguracja narzędzia. Najpierw zidentyfikujemy się na poziomie całej maszyny w konfigu wspólnym dla wszystkich repozytoriów: 1: git config --global user.name "Procent" 2: git config --global user.email proce... [More]

Ostatnim razem ponarzekałem trochę na SVN i scentralizowany model systemów kontroli wersji. Jedną z wspomnianych alternatyw, realizującą model rozproszony, jest Git - i o nim dzisiaj kilka słów. Nie zamierzam pisać tutoriala dla Git czy nawet omawiać zasad jego działania. Zamiast tego zbiorę i zaprezentuję garść linków, które warto odwiedzić chcąc zająć się Gitem na poważne. Muszę ostrzec, że zabawa ta nie jest banalna - i nie zawsze przyjemna. Ja korzystam z Gita od ponad pół roku, a mimo to j... [More]

Dlaczego już nie lubię SVN

8 lutego 2010 06:55 w kategorii: pro
Niejednokrotnie pisałem o SVN, zachwycając się cudownością tego narzędzia. Wpłynęło ono na moje życie zawodowe dość znacząco - tak naprawdę od niego zacząłem przygodę z kontrolą wersji. A kontrola wersji całkowicie zmienia sposób pracy, o czym przekonał się każdy kto zaczął korzystać z jakiegokolwiek systemu z tej rodziny (wtrącenie: jeśli czyta to ktoś ignorujący te systemy, niechaj natychmiast się nawróci! to nie jest trudne, a naprawdę niezbędne!). Subversion było też (albo jest nadal) standa... [More]

String.ToEnum<>

3 lutego 2010 06:53 w kategorii: pro
Mając wartość enuma w postaci napisowej, pobraną na ten przykład z bazy, bardzo łatwo jest z powrotem sparsować ją do właściwego dla aplikacji typu: 1: public enum MyEnum 2: { 3: FirstVal, 4: SecondVal 5: } 6: //... 7: (MyEnum)Enum.Parse(typeof(MyEnum), "FirstVal"); Powtarzanie tego w kodzie jest jednak dość męczące. I po raz kolejny świetny mechanizm Extension methods przychodzi na ratunek: 1: public static class StringExtensions 2... [More]