Archiwum

Archiwum dla ‘Programowanie’ Kategoria

Jaki język programowania wybrać?

16 lutego 2010 4 komentarze(y)

To pytanie często widuję na różnorakich forach internetowych poświęconych programowaniu. Osoby, które dopiero zaczynają przygodę z programowaniem, zastanawiają się od jakiego języka zacząć.

Moim skromnym zdaniem sam język nie jest tutaj najważniejszy. To co czyni z kogoś programistę to umiejętność twórczego myślenia i przekształcania problemu do postaci algorytmu. Innymi słowy, jeśli chcemy napisać program rozwiązujący pewne zagadnienie, to już po jego usłyszeniu powinny nam w głowie powstawać myśli typu „tam wstawię pętle, tam warunek, tutaj użyję tablicy…” itd. Miałem okazję uczyć kilka początkujących osób i zawsze z tym osoby te miały największy problem. O ile składnia języka była dla nich jasna, to trudności nastarczał właśnie ten typowo programistyczny tok myślenia.

Zatem czy początkowy język programowania nie ma w ogóle znaczenia?

Czytaj więcej…

Allegro WebAPI – koszmar programisty

7 lutego 2010 Brak komentarzy

Podczas tworzenia kilku z moich niedawnych projektów, wykorzystujących Allegro WebAPI, mogę śmiało powiedzieć że jest to najgorsze API jakie przyszło mi wykorzystywać.

Co to jest WebAPI? Jest to system pozwalający, przy pomocy protokołu SOAP, na integrację naszej aplikacji z serwisem Allegro. Może wyszukiwać aukcje, wystawiać nowe, sprawdzać stan konta oraz dziesiątki innych rzeczy które wykonuje użytkownik tego serwisu.

W czym więc problem? Zapraszam do dalszej części wpisu wyjaśniającej dlaczego każde zetknięcie z tym tworem Allegro kończy się białą gorączką.

Czytaj więcej…

Kategorie:Programowanie Tagi:, , ,

Referencja w pętli foreach – bug który nie jest bugiem

1 lutego 2010 2 komentarze(y)

Weźmy pod lupę prostą pętle foreach w PHP, która zamienia we wszystkich elementach tablicy litery na duże:

$words = array('system', 'baza', 'telefon');
foreach ($words as &$item)
{
  $item = strtoupper($item);
}

Jak widać, kolejne elementy tablicy pobierane są po przez referencję, tj. tworzony jest wskaźnik na konkretny element a nie jego kopia w pamięci. Dlatego też, zmieniając w pętli zawartość zmiennej $item modyfikujemy pierwotną tablicę. W czym zatem tkwi problem?

Czytaj więcej…

Porównywanie ciągów w SQL z uwzględnieniem wielkości liter

30 stycznia 2010 Brak komentarzy

Czy zdarzyło się Wam wybierać wiersze z bazy MySQL, które różnią się od zadanego warunku wielkością znaków? Zapewne wielu początkujących programistów miało do czynienia z tą sytuacją. Przyczyną tego zjawiska jest ustalona metoda porównywania napisów, która z reguły nie uwzględnia wielkości liter (końcówka „ci” – case insensitive).

Mając przykładowo w bazie danych dwa rekordy gruszka oraz Gruszka, zapytanie pokroju:

SELECT * FROM `test` WHERE `data` = 'Gruszka'

…zwróci nam oba te rekordy. Co jeśli jednak zależy nam na porównaniu uwzględniającym wielkość liter?

Czytaj więcej…

Kopiowanie pliku między serwerami w PHP

23 stycznia 2010 2 komentarze(y)

Swego czasu, gdy publikowałem jeden ze swoich projektów, w celu odciążenia serwera głównego (limit transferu) wysyłałem plik jeszcze na kilka innych. Jako iż jego rozmiar osiągał 30MB, a łącze jakim dysponowałem nie było demonem prędkości, powstał problem – jak przyspieszyć ten proces?

W tym momencie natknąłem się na możliwość kopiowania plików między serwerami przy pomocy skryptu PHP. Serwery dostawców usług hostingowych są wyposażone w bardzo szybkie łącza (z reguły), a co za tym idzie, ściągnięcie pliku z innej lokalizacji trwa sekundy zamiast długich minut jakie ja poświęcałem na wrzucenie pliku na każdy FTP z osobna.

Wszystko co musimy zrobić to napisać prosty skrypt PHP i umieścić go w lokalizacji docelowej – a ten, wykona za nas cała czarną robotę.

Czytaj więcej…

checksum.me – projekt jednego dnia

19 stycznia 2010 2 komentarze(y)

Wymyśliłem/przyjąłem sobie jakiś czas temu termin taki jak „projekt jednego dnia”. Określam nim programy których działający prototyp da się wykonać w jeden dzień. Oczywiście musi to być coś bardziej ambitnego niż „Hello World” – innymi słowy, użytecznego.

Całkiem niedawno postanowiłem zrobić malutkie narzędzie on-line do liczenia sum kontrolnych. Ktoś powie że pełno już takich narzędzi zrobiono. I faktycznie, ale jeśli bliżej się przyjrzeć, to te działające on-line z reguł ograniczają się tylko do md5 lub bardziej popularnych. Ja poszedłem o krok dalej – poznajcie checksum.me!

Czytaj więcej…

Procesory wielordzeniowe a wydajność aplikacji

11 stycznia 2010 Brak komentarzy

Procesory dwu i więcej rdzeniowe zagościły już dawno w naszych domowych komputerach. Niestety nie zawsze przekłada się to na proporcjonalny wzrost, odczuwalnej wydajności naszego blaszaka. Tak właściwie nigdy nie otrzymujemy dwukrotnie wyższej wydajności przy dodaniu jednego jajka.

Dlaczego tak się dzieje? Słyszy się często, iż programy oraz gry nie są pisane pod wielordzeniowe procesory. Co to właściwie znaczy i czy oznacza to że programiści są leniwi? W niektórych przypadkach faktycznie tak jest, jednakże w większości problem dotyczy całkowicie czegoś innego, czego ideę postaram się wyjaśnić.

Czytaj więcej…

Obliczanie sumy kontrolnej MD5 w Delphi

8 stycznia 2010 3 komentarze(y)

MD5 (z ang. Message-Digest algorithm 5 – Skrót wiadomości wersja 5) – algorytm z dziedziny kryptografii. Jest to popularna kryptograficzna funkcja skrótu, która z dowolnego ciągu danych generuje 128-bitowy skrót.

Źródło: http://pl.wikipedia.org/wiki/MD5

Język programowania jakim jest Delphi, mimo swojej potęgi nie posiada wbudowanych funkcji do obliczania sum kontrolnych, nawet tak popularnych jak MD5. Nie będę pokazywał jak stworzyć implementację algorytmu MD5 w object pascalu, chociaż jest to możliwe, a zademonstruję jak policzyć sumę kontrolną dowolnego łańcucha z wykorzystaniem pakietu DCPcrypt.

Czytaj więcej…

Protokół sieciowy gry strategicznej

1 stycznia 2010 4 komentarze(y)

StarcraftPamiętam jak dziś, kiedy po raz pierwszy zagrałem on-line w produkcję firmy Blizzard, strategię czasu rzeczywistego, grę Starcraft. Wtedy jako początkującego programisty, urzekł mnie fakt że to wszystko po prostu działa! Na modemie o oszałamiającej prędkości 3 KB/s dziesiątki jednostek poruszały się i walczył bez najmniejszego zająknięcia.

Po kilku latach przeczytałem artykuł podobny do tego wpisu, i zachwycił mnie geniusz ludzi którzy wymyślili w jaki sposób rozwiązać realizację protokół sieciowego w grach strategicznych. Może dzisiaj nie wydaje się to czymś bardzo odkrywczym, nie mniej, chciałbym podzielić się to wiedzą. Zakładam że bardzo dużo dzisiejszych gier działa w podobny sposób. Nawet jeśli nie jesteś programistą a jedynie graczem, zapraszam do zapoznania się z dalszą treścią i zrozumienia zasad na jakich bazują gry strategiczne.

Czytaj więcej…

Kodowanie polskich znaków w PHP

26 grudnia 2009 4 komentarze(y)

Prawdziwym problemem dla początkujących programistów PHP, może być nie rzadko brak wyświetlania polskich znaków w skryptach PHP. Zamiast miotać się pomiędzy różnymi edytorami kodu, które w taki czy inny sposób oferują zmianę kodowania pliku, prześledźmy po kolei wszystkie etapy tej przypadłości i rozwiążmy je raz na zawsze.

Przyczyny mogą być różne, od błędnego zapisania pliku, aż po wymuszone kodowanie znaków w nagłówku HTTP. Jeśli spotkałeś się nie raz z popularnymi krzakami na swojej stronie, zamiast polskich znaków diakrytycznych, to zapraszam do przeczytania dalszej części wpisu.

Czytaj więcej…