31 stycznia 2009
Kategorie: programowanie | Tagi: code, PATH, script, shell
komentarze: 2
Gdy często pracujemy z konsolą, przydaje się, aby do najczęściej używanych programów i narzędzi dostawać się poprzez wprowadzenie jego nazwy w konsoli w dowolnej lokalizacji. Aby to działało dany program musi znajdować się w katalogu, którego ścieżka zawarta jest w zmiennej systemowej PATH, określającej listę lokalizacji jakie zostaną przeszukane przez interpreter poleceń w poszukiwaniu pliku [...]
czytaj całość »
15 stycznia 2009
Kategorie: programowanie | Tagi: bakefile, makefile, script
komentarze: 3
O potędze skryptów automatyzujących prace (nie tylko programisty) i wszelkich makefile’ach można byłoby mówić wiele. To one przyśpieszają i ułatwiają pracę, często powtarzane żmudne elementy i czasem pomagają zapomnieć o wklepywaniu niekończących się linii w konsoli. Osobiście do tej pory rzadko mi się zdarzało pisać ręcznie pliki z regułami make, głownie dzięki używaniu Code-Blocks jako [...]
czytaj całość »
12 grudnia 2008
Kategorie: programowanie | Tagi: C++, code, metaprogramowanie, templates, turing
komentarze: 2
Wzorce języka C++ spełniają wszystkie założenia maszyny Turinga. Przemyślenia i próby udowodnienia powyższego sformułowania można znaleźć w pracy „C++ Templates are Turing Complete” autorstwa Todd L. Veldhuizen. Małą ciekawostkę na temat limitów w wzorcach możemy znaleźć na końcu artykułu: [...] the C++ standards committee allows conforming compilers to limit the depth of „recursively nested template [...]
czytaj całość »
26 listopada 2008
Kategorie: programowanie | Tagi: C++, code, iterator, STL, streams
komentarze: 0
Pisałem o numeric_limits jako zapomnianej części biblioteki numerycznej, dziś do tego „worka” mogę dorzucić iteratory strumieni jako rzadko używane „twory”. Niektórych może zdziwić ten fakt, że strumienie także posiadają iteratory, a ich wykorzystanie może bardzo nam pomoc i uprościć kod. Na początek najlepiej zapoznać się z tym co mówi dokumentacja na temat istream_iterator i ostream_iterator [...]
czytaj całość »
18 listopada 2008
Kategorie: programowanie | Tagi: boost, C++, code, type casting, type conversions
komentarze: 0
Korzystając z wzorca numeric_limits, o którym wspomniałem w poprzedniej notce i informacjach o min/max wartości danego typu numerycznego, można w bardzo łatwy sposób stworzyć sobie bezpieczny, odporny na underflow/overflow, „operator” – wzorzec do konwersji wartości liczbowych pomiędzy poszczególnymi typami numerycznymi. template <typename TargetType, typename SourceType> inline TargetType numeric_cast(SourceType arg) { if (arg < std::numeric_limits<TargetType>::min()) [...]
czytaj całość »
18 listopada 2008
Kategorie: programowanie | Tagi: C++, code, STL, templates
komentarze: 2
Standardowa biblioteka języka C++ zawiera wiele ciekawych i przydatnych narzędzi w codziennej pracy developera C++, a po wejściu w życie C++0x będzie jeszcze ciekawiej. Czasem nawet nie mamy świadomości lub zapominamy o ciekawych perełkach jakie można tam znaleźć. Jednym z zapomnianych i chyba rzadko używanych komponentów biblioteki STL jest szablon numeric_limits będący „odłamkiem” numerycznej części [...]
czytaj całość »
12 listopada 2008
Kategorie: programowanie | Tagi: C++, C++0x, code, metaprogramowanie, templates
komentarze: 0
Niedawno marudziłem o makrach i funkcjach ze zmienną liczbą argumentów, więc dziś do uzupełnienia tego tematu wspomnę kilka słów o wzorcach ze zmienną liczbą parametrów, czyli Variadic templates, które niebawem staną się oficjalną częścią standardu języka C++. Modelowa, prosta funkcja wzorcowa, która jako przykład występuje prawie w każdej wzmiance na temat „nowego ficzera”. template<typename T> [...]
czytaj całość »
8 listopada 2008
Kategorie: programowanie | Tagi: C++, code, eksperymenty, iterator, pointers, STL
komentarze: 0
Kontynuując temat konwersji wskaźnika do iteratora z poprzedniej notki, chciałbym rzucić nieco więcej światła i nowych spostrzeżeń jakie mnie naszły po popełnieniu wspomnianego wpisu, po którym nie mogłem spokojnie zasnąć ;) Rewidując ponownie ten problem pod katem wydajnościowym i nie tylko doszedłem do wniosku, że w ogóle taka operacja jest bez sensu, uzycie takiej operacji [...]
czytaj całość »
8 listopada 2008
Kategorie: programowanie | Tagi: C++, code, eksperymenty, iterator, pointers, STL
komentarze: 5
Czym jest iterator w STL każdy wiedzieć powinien. Mogę wspomnieć ze jest to typ z zachowaniem podobnym do wskaźnika, który służy do poruszania się po kontenerach biblioteki standardowej, ale nie jest to wskaźnik, mimo iż w większości implementacjach jest to opakowany w obiekt wskaźnik. Kilka flejmów na ten temat można znaleźć w usenetowych archiwach pl.comp.lang.c [...]
czytaj całość »
5 listopada 2008
Kategorie: programowanie | Tagi: C++, C++0x, code, lambda, STL
komentarze: 0
Wspominałem nie tak dawno o szukaniu w STLowych kontenerach za pomocą funkcji find_if. Przedstawiłem tam kilka sposób wykorzystania tego algorytmu i prosty funktorów na bazie bibliotek STL i boost. Dzięki nadchodzącemu wielkimi krokami nowemu standardowi C++0x, pisanie prostych predykatów stanie się wkrótce jeszcze prostsze dzięki funkcjom i wyrażeniom lambda. Nie trzeba będzie pisać prostych funktorów, [...]
czytaj całość »