konto usunięte

Temat: Rzeczywiste projekty c++

Sławomir Orłowski:
Wojtek Stępień:
Dzięki za odpowiedzi,

pozostaje mi tylko wymyślić zadanie do realizacji w c++ :)
Słuchaj, a może lubisz sprzęt? Zadania coś a la weź sterownik, weź jego opis i stwórz prosty program komunikujący się z urządzeniem. Daje sporo "fanu" jak Ci jakaś dioda zaczyna migać. Dodatkowo nauczysz się czytać dokumentację do sterowników.

Co do sprzętu i migających diodek to programowałem mikrokontrolery, głównie BASCOM. Poza tym bawiłem się sterowanie portem LPT z poziomu C++ a później w Delphi zrobiłem aplikacje serwer/klient komunikującą się przez tcp/ip i dzięki temu zdalne sterowanie portem LPT, który sterował czymś na wzór robota mobilnego :)

Ale do C++ już długo nie zaglądałem stąd moje pragnienie :) pogłębienia wiedzy w tym zakresie. Na elektronikę itd trochę nie mam teraz czasu..choć lubię. Zresztą na to zagłębienie się w C++ i inne też w wolnym czasie..bo na co dzień używam w pracy innych języków..przynajmniej na razie. Już pomijam fakt, że jestem w sumie "młodym" programistą więc nie wszystko na raz;P

konto usunięte

Temat: Rzeczywiste projekty c++

Piotr P.:
Wojtek Stępień:

Bardzo fajny pomysł ;) dzięki
rozumiem, ze chodzi Ci o aplikacje serwer/klient.. opartą o sockety ?

Zgadza sie. Chodzi zeby pozenic serwer z sqlite'm i jsonem.

http://tools.ietf.org/html/rfc4627
http://www.jquery4u.com/json/10-example-json-files/

W tym zakresie polecam parsowanie trybem SAX, np. YAJL - czyli parsowanie w locie. Sprawdza się gdy chce się osiągnąć dużą wydajność oraz umożliwia dekodowanie wartości w locie.

konto usunięte

Temat: Rzeczywiste projekty c++

Piotr L.:
Piotr P.:
Wojtek Stępień:

Bardzo fajny pomysł ;) dzięki
rozumiem, ze chodzi Ci o aplikacje serwer/klient.. opartą o sockety ?

Zgadza sie. Chodzi zeby pozenic serwer z sqlite'm i jsonem.

http://tools.ietf.org/html/rfc4627
http://www.jquery4u.com/json/10-example-json-files/

W tym zakresie polecam parsowanie trybem SAX, np. YAJL - czyli parsowanie w locie. Sprawdza się gdy chce się osiągnąć dużą wydajność oraz umożliwia dekodowanie wartości w locie.
Tu chodzi o wprawke, czyli o wlasny parser :)

konto usunięte

Temat: Rzeczywiste projekty c++

Ja z kolei bym polecił coś związanego z algorytmami. Zysk będzie potrójny:
- pokodujesz w C++
- podszkolisz się z algorytmów
- zrobisz sobie jakiś kontenerek, który w przyszłości się może przydać.

W sumie to w perspektywie czasu algorytmy mogą dać Ci znacznie więcej bo są niezależne od języka.

konto usunięte

Temat: Rzeczywiste projekty c++

Pomysłów jak widzę jest naprawdę sporo :)

A powiedzcie mi co macie na myśli mówiąc o warstwie obliczeniowej ?
Tzn chodzi mi o jakieś przykłady z tego zakresu ?

Czy to np mogą być aplikacje do przetwarzania obrazu np z użyciem biblioteki openCV ?

Temat: Rzeczywiste projekty c++

Wszystko zależy, co Cię interesuje (w kontekście programowania).
Multum pomysłów masz tutaj: http://sourceforge.net/ - i pewnie każdy projekt ucieszy się z nowego aktywnego programisty.
Jeśli interesuje Cię grafika komputerowa (w sensie algorytmu bresenhama a nie photoshopa) - to tutaj masz pełno przykładów i pomysłów: http://pouet.net/ (ale zwykle bez źródeł). Algorytmy i optymalizacje poćwiczysz.
A może w głowie tli Ci się pomysł na jeszcze coś, czego nie znajdujesz w sieci.
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Rzeczywiste projekty c++

Wojtek Stępień:
Pomysłów jak widzę jest naprawdę sporo :)

A powiedzcie mi co macie na myśli mówiąc o warstwie obliczeniowej ?
Tzn chodzi mi o jakieś przykłady z tego zakresu ?

Czy to np mogą być aplikacje do przetwarzania obrazu np z użyciem biblioteki openCV ?
I tu dotykasz sfery, którą bardzo lubię :) Image Processing. Jeśli nie jesteś za bardzo zorientowany w tematyce proponuję na początek implementacje prostego algorytmu: automatyczną korekcję histogramu, czyli wyznaczanie współczynnika brightness i contrast. Do tego wspomniane OpenCV nadaje się super. Wczytaj obrazek 8bit, wyznacz jego histogram, dokonaj automatycznej korekcji (tutaj trochę do pogłówkowania) i następnie wynik zapisz/wyświetl. Automatyczna korekcja wykonywana jest na podstawie histogramu.
Potem możesz przejść do wyznaczania jakości obrazków na podstawie jakieś obserwabli. Może to być np. entropia.
Jeszcze komentarz dot. OpenCV. Jest to projekt open source i nie wszyscy zleceniodawcy są zadowoleni z jego używania. Osobiście mnie to dziwi, ale "nasz klient, nasz Pan". I nie można dyskutować. Może się okazać, że znajomość OpenCV pomoże Ci jedynie w fazie "laboratoryjnej" projektu, gdzie kontrahentowi pokażesz, że coś można zrobić. A potem trzeba wszystko implementować jeszcze raz, tym razem bez OpenCV.
Warstwa obliczeniowa to ... warstwa gdzie wykonywane są obliczenia, które są pamięcio/czasochłonne. Najlepiej wykonywać je przy użyciu C/C++ i "wspomagaczy", w stylu bibliotek obliczeniowych. Możesz sobie spróbować też np. boost: http://www.boost.org/. Warstwa taka występuje często w projektach z kodem zarządzanym, gdzie szybkość obliczeń nie jest największa. Izolacja (model warstwowy) myślę, że przyspiesza same obliczenia.

konto usunięte

Temat: Rzeczywiste projekty c++

Projekty graficzne są o tyle ciekawe, że masz coś wizualnego co fajnie wygląda a może nawet się rusza :)
W innych obszarach to rzeźbisz, rzeźbisz i dostajesz liczbę na wyjściu ;)
Krzysztof Godlewski

Krzysztof Godlewski ACCOUNT SPECIALIST
BRAND SOCIAL KARMA
MANAGER

Temat: Rzeczywiste projekty c++

Wojtek Stępień:
Witam,

czy mógłby mi ktoś przybliżyć przykładowe projekty/zadania stojące przed kimś pracującym na stanowisku programisty C++ ?

Ponadto interesuje mnie jakie jakie środowiska są wykorzystywane? jakieś wzorce ? konkretne biblioteki ? Tekstowe czy okienkowe aplikacje?..itd

Tzn nie chodzi mi o jakieś wielkie konkrety tylko ogólne zapoznanie się z problemami występującymi w rzeczywistości..

Dziwne to pytanie.

Odpowiedź chyba zależy od tego jaki profil ma firma w której pracujesz, hm?
Jedni w C++ klepią okienka, inni serwery. Język to tylko narzędzie; różnie się je wykorzystuje, zależnie od potrzeb.

konto usunięte

Temat: Rzeczywiste projekty c++

Sławomir Orłowski:
Jeszcze komentarz dot. OpenCV. Jest to projekt open source i nie wszyscy zleceniodawcy są zadowoleni z jego używania. Osobiście mnie to dziwi, ale "nasz klient, nasz Pan". I nie można dyskutować. Może się okazać, że znajomość OpenCV pomoże Ci jedynie w fazie "laboratoryjnej" projektu, gdzie kontrahentowi pokażesz, że coś można zrobić. A potem trzeba wszystko implementować jeszcze raz, tym razem bez OpenCV.

Nie spotkałem się do tej pory z problemami z wykorzystaniem bibliotek na licencji BSD. OpenCV się czymś wyróżnia że powoduje takie komplikacje?
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Rzeczywiste projekty c++

Nie spotkałem się do tej pory z problemami z wykorzystaniem bibliotek na licencji BSD. OpenCV się czymś wyróżnia że powoduje takie komplikacje?
Tutaj ogólnie chodziło mi o Open Source. Nie wszyscy zleceniodawcy chcą mieć rozwiązanie oparte w jakiejś części na Open Source. Jest w tym jakaś logika, bo projekty o.s. pojawiają się i znikają. Projekt o.s. może zostać rozwiązany bez konsekwencji. Nie można polegać na supporcie. Za takim projektem często nie stoi żadna poważna firma. Dla kolejnej wersji Windowsa może zabraknąć nowszej wersji projektu o.s. itd. Wtedy taki partner jest mało wiarygodny.
Jeśli oczywiście partner nie zastrzeże sobie w umowie, że nie można korzystać z open source, to wtedy wybór należy do Ciebie.

konto usunięte

Temat: Rzeczywiste projekty c++

Tutaj ogólnie chodziło mi o Open Source. Nie wszyscy zleceniodawcy chcą mieć rozwiązanie oparte w jakiejś części na Open Source. Jest w tym jakaś logika, bo projekty o.s. pojawiają się i znikają. Projekt o.s. może zostać rozwiązany bez konsekwencji. Nie można polegać na supporcie. Za takim projektem często nie stoi żadna poważna firma. Dla kolejnej wersji Windowsa może zabraknąć nowszej wersji projektu o.s. itd. Wtedy taki partner jest mało wiarygodny.
Jeśli oczywiście partner nie zastrzeże sobie w umowie, że nie można korzystać z open source, to wtedy wybór należy do Ciebie.

Moim zdaniem tutaj też trzeba postawić granicę pomiędzy "hobbystycznym" OpenSource gdzie wspomniane zagrożenia istnieją, a poważnymi projektami OS z wsparciem firm zarabiających na supporcie i innych usługach związanych z danym oprogramowaniem. Np właśnie OpenCV jest wspierane zarówno przez firmę bezpośrednio zajmującą się jego rozwojem (Willowgarage), jak i w jego rozwój jest zaangażowanych wielu partnerów (m.in. Intel).

Poza tym czasem dostęp do źródeł to najbardziej dalekowzroczna wersja supportu, komercyjne biblioteki i ich autorzy też nie są "wieczni", a ich rezygnacja ze rozwoju/wsparcia często oznacza znacznie szybszy upadek projektu niż przy OS.
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Rzeczywiste projekty c++

Krzysztof W.:
Moim zdaniem tutaj też trzeba postawić granicę pomiędzy "hobbystycznym" OpenSource gdzie wspomniane zagrożenia istnieją, a poważnymi projektami OS z wsparciem firm zarabiających na supporcie i innych usługach związanych z danym oprogramowaniem. Np właśnie OpenCV jest wspierane zarówno przez firmę bezpośrednio zajmującą się jego rozwojem (Willowgarage), jak i w jego rozwój jest zaangażowanych wielu partnerów (m.in. Intel).
To prawda. OpenCV wspierany jest przez Intela. Dla mojego obecnego zleceniodawcy to jednak nie ma żadnego znaczenia. Nie może być open source i koniec. Z bibliotek komercyjnych Intela IPP za to mogę korzystać. Przedstawiam tu stanowisko firmy, a nie moje. Ja osobiście korzystam z open source. Zwracam jednak uwagę, że nie wszystkie firmy z tego korzystają. Trzeba mieć to na uwadze w fazie wybierania projektów bądź projektowania oprogramowania. Może się okazać, że nasze założenia (użycie bibliotek os) mogą być złe. Dla przykładu, mamy gotową funkcję do robienia jakiś złożonych operacji w jakimś pakiecie open source. Jej napisanie od podstaw zajęłoby wiele osobogodzin. Zakładamy użycie open source i zleceniodawcy mówimy, że wykonamy coś w określonym czasie, który nie uwzględnia napisania tej funkcji, a jedynie użycie gotowca. Bez "dogadania" szczegółów tj. czy możemy wspomagać się open source, czy nie, jesteśmy w plecy. Na pewno nie dotrzymamy terminu, jeśli zleceniodawca nagle powie, że nie możemy użyć open source. Jeśli zleceniodawca jest mało zorientowany w IT, wtedy to przejdzie.


Poza tym czasem dostęp do źródeł to najbardziej dalekowzroczna wersja supportu, komercyjne biblioteki i ich autorzy też nie są "wieczni", a ich rezygnacja ze rozwoju/wsparcia często oznacza znacznie szybszy upadek projektu niż przy OS.
Tutaj się całkowicie nie zgadzam. Mam zupełnie inne podejście. Jeśli już z czegoś korzystam, to nie chce mi się "grzebać" we wnętrzu tego rozwiązania. Nie lubię modyfikować nie swojego kodu w dużym projekcie. Lubię "czarnoskrzynkowe" podejście. Oczywiście nie mówię tu o modyfikacjach w stylu "a jeszcze podzielę wynik przez siedem". Projekty open source można podglądać w trakcie uczenia się programowania.
Wszystkie komercyjne projekty, których używam są "wieczne". To, że wymieniają się programiści tworzący rozwiązanie, nie oznacza zaprzestania projektu. Dla mnie to raczej dopływ nowych rozwiązań, innego myślenia itd. Często open source jest fazą wstępną jakiegoś komercyjnego projektu. Można się na to złapać.
Nie mniej jednak chyba zbaczamy z tematu rozmowy :)

konto usunięte

Temat: Rzeczywiste projekty c++

Nie mniej jednak chyba zbaczamy z tematu rozmowy :)

Może moderator mógłby wydzielić wątek? Mocno odszedł od tematu ale zawiera parę ciekawych informacji.

Jeżeli zleceniodawca podchodzi "ideologicznie" na zasadzie "nigdy OpenSource" to oczywiście nic na to nie poradzisz. Swoją droga gdzie kończy się wtedy definicja "OpenSource"? Qt w wersji komercyjnej też ma dostępne źródła, podobnie jak w celu ułatwienia debugowania wiele wbudowanych systemów RTOS również. OpenRTOS to komercyjna wersja FreeRTOS - czy fakt że producent udostępnia źródła rozwiązania go już wyklucza?

Podejście "czarnoskrzynkowe" jest świetne dopóki wszystko działa - lub gdy jesteś "super ważnym poprawimy to na wczoraj klientem".

Poza tym czasem firma jest wieczna, ale dany produkt/wersja produktu wręcz przeciwnie.

Nie jestem dużym fanem stosowania OpenSource w komercyjnych projektach, ale sadze że istnieje kilka projektów OS gdzie przy dostępności komercyjnego supportu i olbrzymiej społeczności jakość/możliwości są porównywalne.Krzysztof W. edytował(a) ten post dnia 29.08.11 o godzinie 19:08
Waldek M.

Waldek M. Build Engineer @
Speechmatics,
Cambridge

Temat: Rzeczywiste projekty c++

Sławomir Orłowski:
Tutaj ogólnie chodziło mi o Open Source. Nie wszyscy zleceniodawcy chcą mieć rozwiązanie oparte w jakiejś części na Open Source. Jest w tym jakaś logika, bo projekty o.s. pojawiają się i znikają. Projekt o.s. może zostać rozwiązany bez konsekwencji. Nie można polegać na supporcie. Za takim projektem często nie stoi żadna poważna firma. Dla kolejnej wersji Windowsa może zabraknąć nowszej wersji projektu o.s. itd. Wtedy taki partner jest mało wiarygodny.

Strasznie dziwni tacy klienci. Projekt OSS ma tę zaletę, że jeśli masz źródła, a projekt "umrze", to i tak możesz go dalej rozwijać lub poprawiać. Jeśli dostawca zamkniętej "binarki" padnie - to po temacie.

A co do obaw o "wirusową naturę OSS", to jeśli nawet uznać ją za taką, to nie dotyczy ona wszystkich licencji; ba - dotyczy tylko kilku. Kod na BSD można po prostu używać, nie udostępniać nikomu swoich zmian, a podstawowe zastrzeżenie to... żeby nie wycinać podpisów oryginalnego autora. A są i jeszcze liberalniejsze licencje, jak choćby WTFPL.
Marcin Bońka

Marcin Bońka Programista, Neubloc
Polska Sp. z o.o.

Temat: Rzeczywiste projekty c++

Waldek M.:
Sławomir Orłowski:
Tutaj ogólnie chodziło mi o Open Source. Nie wszyscy zleceniodawcy chcą mieć rozwiązanie oparte w jakiejś części na Open Source. Jest w tym jakaś logika, bo projekty o.s. pojawiają się i znikają. Projekt o.s. może zostać rozwiązany bez konsekwencji. Nie można polegać na supporcie. Za takim projektem często nie stoi żadna poważna firma. Dla kolejnej wersji Windowsa może zabraknąć nowszej wersji projektu o.s. itd. Wtedy taki partner jest mało wiarygodny.

Strasznie dziwni tacy klienci. Projekt OSS ma tę zaletę, że jeśli masz źródła, a projekt "umrze", to i tak możesz go dalej rozwijać lub poprawiać. Jeśli dostawca zamkniętej "binarki" padnie - to po temacie.

A co do obaw o "wirusową naturę OSS", to jeśli nawet uznać ją za taką, to nie dotyczy ona wszystkich licencji; ba - dotyczy tylko kilku. Kod na BSD można po prostu używać, nie udostępniać nikomu swoich zmian, a podstawowe zastrzeżenie to... żeby nie wycinać podpisów oryginalnego autora. A są i jeszcze liberalniejsze licencje, jak choćby WTFPL.


Szczerze mowiac mnie tez to dziwi. W koncu jest wiele projektow Open Source, ktore maja sie doskonale w biznesowym swiecie. Przykladem sa chociarz firmy: RedHat czy Canonical, Novell, a co do samych projektow Mono, Qt, Eclipse czy wreszcie sam Linux.

Ale tak naprawde chodzi tylko o sposob myslenia. Ta sama zasada dziala z systemami operacyjnymi. Moge skonfigurowac np. KDE tak, zeby wygladalo dokladnie tak samo jak Windows 7 (wraz z zachowywaniem sie, filozofia pracy i ikonkami na pulpicie), ale i tak zaraz uslysze: "...nie bede tego uzywac, bo to nie jest Windows..." - i pozamiatane.

Czasem sie zastanawiam, czy sam nie zaczac jakiegos projektu Open Source, na ktorym moglbym zarabiac (support, update'y, itp.) ale szczerze mowiac nastawienie swiata troche mnie odstrasza...

Pozdrawiam,

Marcin
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Rzeczywiste projekty c++

Waldek M.:
Strasznie dziwni tacy klienci. Projekt OSS ma tę zaletę, że jeśli masz źródła, a projekt "umrze", to i tak możesz go dalej rozwijać lub poprawiać. Jeśli dostawca zamkniętej "binarki" padnie - to po temacie.
Dla mnie też to jest dziwne. Jednak nie dyskutuję klientem w myśl zasady Nasz klient ...
A co do obaw o "wirusową naturę OSS", to jeśli nawet uznać ją za taką, to nie dotyczy ona wszystkich licencji; ba - dotyczy tylko kilku. Kod na BSD można po prostu używać, nie udostępniać nikomu swoich zmian, a podstawowe zastrzeżenie to... żeby nie wycinać podpisów oryginalnego autora. A są i jeszcze liberalniejsze licencje, jak choćby WTFPL.
Sławomir Orłowski

Sławomir Orłowski PhD, physicist,
software
developer/architect
team leader...

Temat: Rzeczywiste projekty c++

Marcin Bońka:

Szczerze mowiac mnie tez to dziwi. W koncu jest wiele projektow Open Source, ktore maja sie doskonale w biznesowym swiecie. Przykladem sa chociarz firmy: RedHat czy Canonical, Novell, a co do samych projektow Mono, Qt, Eclipse czy wreszcie sam Linux.

Ale tak naprawde chodzi tylko o sposob myslenia. Ta sama zasada dziala z systemami operacyjnymi. Moge skonfigurowac np. KDE tak, zeby wygladalo dokladnie tak samo jak Windows 7 (wraz z zachowywaniem sie, filozofia pracy i ikonkami na pulpicie), ale i tak zaraz uslysze: "...nie bede tego uzywac, bo to nie jest Windows..." - i pozamiatane.

Czasem sie zastanawiam, czy sam nie zaczac jakiegos projektu Open Source, na ktorym moglbym zarabiac (support, update'y, itp.) ale szczerze mowiac nastawienie swiata troche mnie odstrasza...

Pozdrawiam,

Marcin
Ja też byłem zdziwiony zakazem stosowania open source. Też nie rozumiem tego. Nie znalazłem mocnych argumentów za takim podejściem. To chyba kwestia nastawienia klienta.
Tomasz Ziobrowski

Tomasz Ziobrowski Oprogramowanie dla
przemysłu i nie
tylko

Temat: Rzeczywiste projekty c++

Chyba klient nie do końca rozpoznał termin OpenSource bo to przecież diabelnie szeroki termin - oznacza nic więcej niż tylko tyle, że dany produkt jest dostępny wraz z kodem źródłowym i to nie koniecznie za darmo. Mam ważenie, że taki klient myli go z ruchem FreeSoftware (GPL, LGPL etc) będący tylko podzbiorem OpenSource albo nie rozwinąłeś powodów dla których OpenSource jest "be".

OpenSource to bardziej po prostu filozofia/praktyka (patrz wikipedia) w/g której warto dostarczyć produkt wraz z kodem źródłowym.

Żadna filozofia/licencji nie determinuje żywotności projektu. Bez względu na licencję/filozofię projekty się pojawiają i znikają i tak samo mają rzetelny albo koszmarny support lub po prostu nie mają go wcale.

Takie to trochę dziwne podejście bo z mojego punktu widzenia (z tego co wiem na temat OpenSource). Szukając analogii np w motoryzacji to tak jakby taki klient mówił nie kupujemy samochodów do których jest dołaczona dokumentacja techniczna - bez względu na to kto jest jego producentem.

Jako zwolennik OpenSource (nie będę ukrywał) Zadałbym pytanie takiemu klientowi. Ile firm może supportować OpenCV a ile może supportować jakąkolwiek zamkniętą bibliotekę?

Następna dyskusja:

Ciekawe projekty dla ludzi ...




Wyślij zaproszenie do