Wpisy otagowane tricky
Z C++ zagadka nr 4
lip 25th
Mając przedstawioną poniżej strukturę danych i kontener zawierający wskaźniki, wykonać operację/metodę methodA na rzecz obiektu obj_ posługując się iteratorem:
class Foo {
public:
methodA() {
printf("Wykonano...\n");
}
}
struct data_t {
int i_;
Foo* obj_;
}
std::list<data_t*> data_;
for(std::list<data_t*>::iterator i = data_.begin(); i != data_.end(); i++ ) {
// operacje
}
W jaki sposób wykonać blok operacji ? Możliwości mamy kilka:
/* 1 */ i->obj_->methodA(); /* 2 */ *i->obj_->methodA(); /* 3 */ (*i)->obj_->methodA();
Rozwiązanie zagadki jest proste, ale wymaga znajomości priorytetów operatorów. Pierwsze wywołania jest całkowicie błędne, ponieważ lista przecowuje wskaźniki do strkutury, a nie samą strukturę. Zatem należy najpier wyłuskać strukturę znajdującą się pod wskazywanym adresem i dopiero wtedy wykonać metodę. Okazuje się że rowiązania 2 również jest nie poprawne, właśnie ze względu na priorytety operatorów. Dopiero numer 3 daje zamierzony efekt. Na szczęście błąd ujawnia się na etapie kompilacji…
Uruchamianie metod klas w nowych wątkach w c++ i pthreads
kwi 6th
Podczas pisania kolejnego projektu w języku c++ natknąłem się na interesujący problem. Program docelowo miał działać na systemie czasu rzeczywistego zatem jego celem było również zapoznanie z różnymi mechanizmami RTOS. Pierwszy problem pojawił się przy korzystaniu z mechanizmu wielowątkowości, pewnie byśmy się nie dowiedzieli o jego istnieniu gdybyśmy nie zdecydowali się na programowanie obiektowe, ale po kolei…
Więcej >
SOAP w Pythonie
sty 11th
Mimo że sam język jest uważany za potężny z dostępną dużą ilością bibliotek, to nie do koońca jest to prawda. SOAP w Pythonie niestety ale po prostu leży. Są 2 biblioteki umożliwiające tworzenie webserviców i tak naprawdę 2 które umożliwiają korzystanie z już utworzonych. Ja swoje próby rozpocząłem od soaplib, biblioteki która została porzucona przez twórców, ale w wyniku tzw. forków w miarę często pojawiają się nowe wersje. Niestety był to błąd.
Więcej >
HSSPOJ – zadanie które nie dawało mi spokoju
sty 1st
Zadanie z konkursu algorytmicznego dla uczniów szkół średnich. Zwróciłem na nie uwagę, gdyż współczynnik poprawnych rozwiązań wynosił lekko ponad 30%, a skoro to konkurs dla licealistów to powinienem sobie dać radę. I tu pierwszy szok, nic z tego… Wiedza jaką dysponowałem okazała się daleko nie wystarczająca, a próby znalezienia rozwiązania podanego na tacy spełzły na niczym. Co dodatkowo rozbudziło moją ciekawość to fakt że na forach poświęconych programowaniu, nikt nie szuka pomocy.
Zadanie finalnie okazało się rozbudowaną grą Nim, ale bez znajomości jednego twierdzenia teorii gier prawdopodobnie siedziałbym na tym jeszcze dłuuuugo…
Treść zadania dostępna pod adresem http://hs.spoj.pl/problems/HS09GAME/
Więcej >
Przezroczyste okienka z WinAPI
paź 10th
Wraz z pojawieniem się systemu Windows 2000, pojawiły się nowe funkcje systemowego API. Jedną z nich jest możliwość tworzenia okien o dowolnym stopniu przezroczystości. Efekt jest dość ciekawy i sporo programów ma możliwość ustawienia przezroczystości własnego okienka. Moim celem było umożliwienie sterowania przezroczystością okien centralnie z jednego programu i to nie zależnie od tego czy okno takie zostało do tego przystosowane czy też nie. Po przeczytaniu tego wpisu, każdy samodzielnie będzie mógł napisać podobną aplikację
Magiczne delete []
cze 22nd
Prawdopodobnie nikt się nie zastanawiał jak dokładnie działa delete [], wystarczy wiedzieć że usuwa wszystkie obiekty umieszczone w dynamicznie zaalokowanej tablicy. Jeżeli obiekty posiadają destruktor to jest on uruchamiany, a jeśli nie to pamięć jest po prostu zwalniana. Muszę przyznać że mnie samemu też nigdy nie przyszło na myśl że może się tam kryć coś „magicznego”. Trawało to do czasu aż zupełnie przypadkiem trafiłem na wpis na blogu który opisuje SKĄD DELETE [] WIE ILE OBIEKTÓW NALEŻY USUNĄĆ.
Nie będę kopiował cudzego wpisy/odkrycia jedynie po przetłumaczeniu na język ojczysty więc odsyłam do źródła oraz zachęcam do lektury (tytuł dodatkowo mówi sam za siebie): http://mdzahidh.wordpress.com/2007/08/24/a-little-cc-recipe-you-can-live-without-knowing/
Z C++ zagadka nr 3
cze 12th
Kompilator zrobi dokładnie to co chcesz. DOKŁADNIE!
i właśnie dlatego trzeba uważać. Ta zagadka jak i pozostałe ma na celu zwrócenie uwagi na miejsca które wydają się oczywiste a moga wprowadzić wiele zamieszania i niepotrzebnych nerwów. W końcu nie od dziś wiadomo że najgroźniejsze błędy znajdują się w „kodzie który napewno jest dobrze”. Tym razem zagadka wymaga trochę więcej od czytelnika, nie wystarczy znajmość C++, trzeba się jeszcze wykazać odrobiną znajomości biblioteki boost. Więcej >
Z C++ zagadka nr 2
cze 6th
Zagadka nr 2 bardzo blisko związana z zawiłościami języka programowania c++, choć okazuje się że dotyczy także innych, w tym np. Javy. Kod wydaje się banalnie prosty. Jednak jak mówi „stare chińskie przysłowie” – „Diabeł tkwi w szczegółach”.
Więcej >
Z C++ zagadka
mar 28th
Na ostatnich inżynierskich targach pracy i praktytk trafiłem na dość trudny test z C++. Pojawiło się na nim zadanie co do którego miałem wątpliwości szczególnie że sprawdzający stwierdził że nie mam racji. Treść zapamiętałem i postanowiłem sprawdzić nie teoretycznie na kartce, ale po prostu jak się zachowa prawdziwy kompilator. Więcej >