12 marca 2011

"Kazdy kiedyś zaczynał" - symulator losowania lotto

Pierwszy wpis z serii "każdy kiedyś zaczynał" o której pisałem ostatnio, zostanie poświęcony na omówienie krótkiego programiku, który miał symulować maszynę losującą Dużego Lotka. Postaram się w nim wytknąć SOBIE wszystkie błędy jakie popełniłem w niedzielę, 15 lutego 2004 roku o godzinie 15:16, uznając ten program za skończony (data ostatniej modyfikacji pliku ;) )

Kod źródłowy owego programu przedstawia się jak niżej. Chciałbym zaznaczyć, że jest to oryginalny kod, niemodyfikowany na potrzeby tego wpisu.

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>

int i,j,tab[6],k=0,il;
void main()
{
clrscr();
cout<<"To jest program nasladujacy losowania Duzego Lotka.\n";
cout<<"Jaka liczbe losowan wykonac: ";
cin>>il;
randomize();
do{
i=0;
do{
tab[i]=random(50);j=0;
  while(j!=i||tab[i]==0)
  {if(tab[i]==tab[j]||tab[i]==0)
       {i--;j=i-1;}
       j++;
  }
  i++;
  }
while(i!=6);
i=0;
cout<<" Losowanie nr "<<k+1<<":";
do{
cout<<"\t\b\b"<<tab[i]<<",";
  i++;
  }
while (i!=6);
cout<<endl;
k++;}
while (k!=il);
getch();
}

Jeżeli chciałbyś nauczyć się czegoś z tego wpisu, to prosiłbym Cię teraz, byś przed przeczytaniem dalszej części posta zastanowił się chwilę i sam się postarał wyłapać wszystkie błędy merytoryczne, składniowe i logiczne.

2 marca 2011

"Każdy kiedyś zaczynał" - czyli jak nie programować w C++

Nikt nie urodził się programistą. Każdy z nas stawiał kiedyś swoje pierwsze kroki w dziedzinie programowania. Każdy kiedyś zmagał się z dziwaczną wówczas dla niego składnią i jeszcze dziwniejszymi nazwami funkcji. Jednak niektórzy z nas pomimo licznych niepowodzeń przebrnęli przez ten najśmieszniejszy etap swojego programistycznego rozwoju. A komedia to była iście w stylu Monty Pythona... czasami nie wiadomo było czy się śmiać, czy płakać.

Programować chciałem zawsze... lecz ubzdurałem sobie, że to jakaś czarna magia, która jest nie do ogarnięcia. Jestem zawodowym programistą, więc chyba coś tam w końcu opanowałem. Jednak gdy teraz patrzę na to co pisałem 7 lat temu, pewien jestem, że jednak jakaś magia mi wówczas pomagała, bo spoglądam na swój kod i zadaje sobie pytanie: "jak kod wyglądający w ten sposób mógł w ogóle się uruchamiać"?

Wszystkie moje pierwsze programy były dla mnie bardzo cenne. Pamiętam, jak kiedyś w pewnym momencie podjąłem decyzję, by postarać się zachować wszystkie listingi na zawsze, by później móc się z nich śmiać... i oto chciałbym ogłosić, że nadeszły czasy w których chętnie pośmieję się z nich razem z wami :)


Lata 2003 i 2004 były to dla mnie czasy spędzone z kompilatorem firmy Borland w wersji 3.1. Sam kompilator pochodził z 1992 roku, więc z czasów wręcz zamierzchłych, jednak taki kompilator dostałem od swojego nauczyciela, na takim się uczyłem (aż się łezka w oku kręci...).

Kodów źródłowych z tamtych czasów pozostało mi kilkadziesiąt, z czego co najmniej kilkanaście potrafię teraz odczytać i zinterpretować to, co przecież kiedyś wydawało się dla mnie "takie jasne"... :)

W najbliższym czasie, okresowo będę starał się publikować omówienia owych tych "moich starych dziejów", analizując swoje ówczesne programy, zastanawiając się dlaczego wówczas właśnie tak a nie inaczej to napisałem. Sądzę, że z takiego omówienia mogą skorzystać wszystkie osoby, które same mają nadal styczność z początkującymi adeptami sztuki programowania.


Jednocześnie chciałbym was już teraz zachęcić do subskrypcji kanału RSS, gdyż gwarantuje Wam, że wówczas nie minie Was doskonała okazja by podbudować mniemanie o swoich programistycznych zdolnościach patrząc m.in. na taki kod:

19 lutego 2011

Masowe przetwarzanie dużej liczby zdjęć

Dzisiaj w trochę innej niż zazwyczaj formie. Mam nadzieję, że komuś się to przyda ;)




Na tę okazję posprzątałem swój pulpit, więc doceńcie mój gest :P

29 stycznia 2011

O internecie, ADHD i głowie pełnej pomysłów

Jeżeli by opierać się na badaniach o których w swoim wystąpieniu wspomina Sir Ken Robinson, można by mu przyznać rację, że w dzisiejszych czasach zadziwiająca liczba osób może u siebie stwierdzić występowanie kilku objawów ADHD, które zazwyczaj zaliczają się do trzech grup: nadmierna impulsywność, nadmierna ruchliwość i zaburzenia uwagi.

Ale co to wszystko ma wspólnego z Internetem?

15 stycznia 2011

Łatwiejsze głosowanie na artykuł w serwisie develway z poziomu własnej strony

Jakiś czas temu wysłałem propozycję wprowadzenia drobnej funkcjonalności w serwisie develway. Całość została nawet skomentowana na oficjalnym blogu ich serwisu, tutaj.

Obiecali zrobić, tak też zrobili. Efekty ich pracy można teraz podziwiać w kąciku dla właścicieli stron a także od dzisiaj również na podstronach tego bloga (stwierdziłem, że nie chcę zanieczyszczać głównej strony, więc będąc na stronie głównej by zobaczyć efekt, musisz kliknąć na "czytaj więcej" troszkę niżej ;) )

Pomyślałem, że skoro blogger.com jest tak popularnym serwisem, to opiszę jak w szybki sposób wdrożyć ową ikonkę właśnie do jego systemu zarządzania treścią.

"Lustrzane odbicie" polecenia git add -p, czyli co mi pomogło po pewnym code review.

Skończyłem w pracy robić pewne duże zadanie. Zrobiłem commita i pusha do odpowiedniego brancha do naszego gitowego repozytorium . Potem przyszła pora na code review. Kolega z zespołu zauważył parę miejsc, w których należało by jeszcze coś dodać/zmienić/usunąć. Informacje o tych poprawkach wysłał mi na e-mail.

dostałem mniej więcej taką listę:

1. W przypadku dwóch statycznych pól klasy zastosowałeś przedrostek m_, zamiast s_. Dostosować do reszty.
2. Lepiej było by, aby funkcja Foo zwracała nie tylko informacje o błędzie, lecz najlepiej jeszcze określała typ błędu.
3. Niepotrzebne podwójne wywołanie funkcji inicjalizującej  w linii 250 i 253.
4. itd.
5. itd.
..
18. itd

Rzeczy do poprawki były dość proste, lecz było ich jednak dość dużo. Wprowadziłem połowę i stwierdziłem, że sprawdzę, czy przypadkiem niczego w między czasie nie popsułem. Kompilacja przebiegła ok, instalacja - ok, uruchomienie - ok, nagle crash.

No i teraz pytanie, która z moich zmian spowodowała błąd? Dlatego, że w ówczesnym czasie debugowanie w naszym projekcie było bardzo kłopotliwe a wręcz wówczas niemożliwe stwierdziłem, że najszybciej będzie usunąć zmiany i zacząć je wprowadzać po kolei, stopniowo, za każdym razem upewniając się, że wszystko jest w porządku.

Jednak tych zmian było na tyle dużo, w tylu miejscach, że stwierdziłem, że wolałbym uniknąć usuwania tych zmian ręcznie, bądź wprowadzania ich od nowa. No i wybrnąłem z tej sytuacji, gdyż całą procedurę wykonałem praktycznie nie dotykając kodu za pośrednictwem mojego IDE. W tym wszystkim pomógł mi oczywiście GIT :)

9 stycznia 2011

SexyBookmarks i inne zmiany na blogu

Bardzo wiele wejść na bloga odnotowuje z zewnętrznych serwisów. Prym wśród nich wiodą develway.pl oraz dotnetomaniak.pl (kolejność przypadkowa).

Postanowiłem, więc bardziej "otworzyć" się na te serwisy, a przy okazji jeszcze na parę innych. A to wszystko za pomocą tak zwanych...

Sexy Bookmarks