Tipps zum Einstieg

R

RaginRob

Erdling
Hallo zusammen,

mein Thema passt teilweise ganz gut zu dem, was tw-electric einen tiefer geschrieben hat, aber ich denke, es reicht für einen eigenen Beitrag :)

Ich bin nach mittlerweile 3 Jahren Linux in der Lage, mein System in Schuss zu halten und kann mittlerweile eigentlich alles irgendwie hinkriegen, was bisher Probleme gemacht hat. Jetzt will ich einen Schritt weiter gehen und mich an die Programmierung rantasten. Ich habe vor einigen Jahren ein wenig mit Pascal programmiert, dann vor nicht all zu langer Zeit ein paar Datenbank-Frontends mit Visual Basic gebaut, habe also keine große Erfahrung was C++ angeht.

Ich möchte auf lange Sicht natürlich auch C++ richtig lernen, allerdings habe ich gerade ein kleines Projekt im Kopf, welches ich gerne hinkriegen würde, und ich vermute, dass eine C++-Lösung dafür zwar eleganter aber vielleicht auch ein wenig "overdressed" wäre. Es würde wahrscheinlich Jahre dauern, bis ich die Netzwerkinterfaces vernünftig ansprechen und auslesen kann. Ich hab spaßeshalber mal in den airodump-ng-Quelltext geguckt und bin nach einigen Stunden leider nicht schlau daraus geworden.

Folgendes würde ich gerne hinkriegen:

Meine WLAN-Karte soll durch eine kleine Oberfläche gesteuert werden. In der Oberfläche möchte ich die Daten sehen, die mir iwconfig, iwlist oder ifconfig ausspuckt, also z.B. die bisher übertragene Datenmenge, die aktuelle IP, die Sendestärke etc. Diese Daten sollen ständig aktualisiert werden im x Sekunden-Takt. Neben der Anzeige der Daten will ich auch per Klick auf einen Button die Karte "uppen oder downen" können, von mode managed auf mode monitor umstellen etc.

Wie schon gesagt, mit dem entsprechenden Hintergrundwissen wäre das in C++ bestimmt sehr schön machbar, aber ich frage mich, ob es nicht auch ein wenig einfacher geht. Man müsste eigentlich nur Befehle absetzen können und bestimmte Daten aus einer Anzeige von iwconfig auslesen, diese dann in die GUI übernehmen, das ganze am besten, ohne dass im Hintergrund ein Terminal rumflackert.

Preisfrage: geht das? Gibt's vielleicht irgendwas zwischen Zenity und einer Profilösung in C++, das für diesen Zweck geeignet wäre? Wie gesagt, ich will letzteres auf lange Sicht auch lernen, nur muss man nicht ganz am Anfang das Rad neu erfinden, denke ich. Vielen Dank für eure Tipps bzw. Kommentare!
 
Wenns einfach sein soll, wieso nimmst du nicht WICD? ;)

Oder willst du dich "zwingen" C++ zu lernen?
 
@Tomekk228

Ich will es definitiv lernen, nur habe ich die Sache mit der GUI für meine Netzwerkkarten schon länger im Sinn und dachte, man muss ja nicht unbedingt mit Kanonen auf Spatzen schießen. WICD ist übrigens ziemlich praktisch, aber ich bräuchte eine etwas zugeschnittenere Lösung für meine Umgebung und würde das eben gerne selbst irgendwie hinkriegen.
 
Also wenn ich das richtig verstanden habe, was du machen willst dann handelt es sich um ein frontend für diverse andere Programme, die auf deinem System installiert sind.
Dazu würd ich sagen hast du mehr möglichkeiten als Lösungen ;) Am besten lässt sich sowas denke ich mit einer Skriptsprache wie Perl lösen. Würde dir die Möglichkeit zu Interprozesskommunikation bieten und eine graphische Oberfläche über die Perl GTK bzw. QT Module ließe sich auch umsetzen. Da die Einarbeitungszeit in Perl aber meines erachtens nicht gerade gering ist (vorallem wenn man anfängt mit Modulen aus dem cpan zu arbeiten) und du auf lange sicht sowieso C++ erlernen willst, würde ich vorschlagen es gleich "richtig" zu machen. Ein gutes Buch über Systemprogrammierung unter Linux findet sich auf: http://www.pronix.de/pronix-6.html

Von Sourcecodes von so gigantischen Tools wie aeorodump-ng sollte man sich nicht abschrecken lassen. Da brauchen selbst Erfahrene Programmierer eine gute Weile um da durchzusteigen. Zumal man vom "kurz reinschauen" überhaupt keine Kenntnisse erlangt wie die Software intern überhaupt aufgebaut ist.
Allerdings möchte ich dich auch gleich warnen die Flinte nicht zu schnell ins Korn zu werfen. C++ ist beileibe nicht einfach zu erlernen und alleine Sprachkonzepte wie Zeiger oder prinzipielles Verständnis für Oo Programmierung zu verstehen dauert eine gute Weile.

Prinzipiell schlage ich aber immer vor sich zuerst an einer schwierigen Sprache zu versuchen. Die einfacheren erlernt man dann irgendwie gleich mit, zumindest reichts dann dort meistens etwas in der Referenz rumzublättern ;)
 
@noreaga:

Danke für deine Antwort und die Tipps! Letztlich hast du vollkommen Recht. Ich habe in der Zwischenzeit auch noch einiges zum Thema gefunden und denke, das "die harte Tour" letztendlich sinnvoller ist. Abschrecken lassen hab ich mich eigentlich nie, bin ja auch seit meinem C16 dabei und "programmierte" damals aus Platznot schon recht platzsparend, wenn man BASIC als Programmiersprache sehen will :-)

Ich fand unter anderem einige sehr interessante Projekte von ein paar kanadischen Studenten, die für eine Prüfung ein Programm für einen Linux-basierten PDA entwickelt haben, welches eine Positionsbestimmung mittels WLAN erlaubt. In den Quellcodes der Software fand ich einige sehr hilfreiche Hinweise. Es gibt wohl eine iwlib.h, die Bestandteil der wireless-tools ist, und eigentlich alles was ich brauche per Funktion zur Verfügung stellt. Ich werde mich jetzt einfach ins kalte Wasser schmeissen und mich daran machen, C bzw. C++ in meinen Kopf zu kriegen.

Was mir helfen würde wären ein paar Tipps zu wirklich hilfreichen Büchern, Einführungen oder Tutorials, es gibt so dermaßen viele Bücher und Webseiten und ich weiß' mittlerweile, dass zwar alle die perfekte Grundlage sein wollen, letztlich aber nur ein paar wirkliche Perlen überbleiben. Was hat euch die Augen geöffnet und wirklich geholfen? Vor allem in bezug auf das Programmieren unter Linux und GUI-Entwicklung? Und ist Qt so gut wie Trolltech sagt, oder gibt es sinnvollere Alternativen?

So, werde mich nun mal mit der pronix-Geschichte befassen. Dickes Lob übrigens an dieses Forum, ich habe selten so schnell so hilfreiche Antworten bekommen. :respekt:
 
Als große Alternative existiert unter Linux (und Windows) auch noch GTK.
Zu GTK hab ich mal dieses Tutorial auf Pro-Linux gefunden, da ich mich damit noch nicht weiter auseinander gesetzt habe kann ich dir leider nicht sagen ob es gut ist. -> *klick*
 
Also mein Liebling in Sachen C++ Büchern - mit dem ich alles relativ schnell Begriffen habe - ist das wenn auch nicht ganz so ausführliche aber dafür mehr als schnellzurhandhabende Taschenbuch C++ von Helmut Erlenkötter - ISBN: 3-499-60077-3 erschienen im rororo Computer Verlag. Es geht sehr leicht verständlich auf die Konzepte von C++ ein. Von Zeigern über Klassen, Vererbung, Polymorphismus, File I/O, Exceptions bis Templates ist da alles schnell auf einen Blick vorhanden. Um dann tiefgreifendere Infos einzuholen hab ich mir ein xbeliebiges Kompendium geholt in dem _alles_ steht. Aber um mal nen einfachen Einstieg zu haben ist das Taschenbuch perfekt.

Ein Framework für die GUI wäre noch das "FastLight Toolkit". Habe ich mir persönlich noch nicht angeschaut, sieht aber auf den ersten Blick ausreichend aus und wird wohl nicht so überladen sein wie seine großen Brüder GTK und QT. Zu finden auf www.fltk.org

Greets
 
Erst einmal danke für eure Tipps! Ich bin mittlerweile fündig geworden und werde mich in der nächsten Zeit ausgiebig in Qt4 in Verbindung mit QDevelop und C++ hineinarbeiten. Diese Kombination scheint einfach ein gutes Team zu sein, die Dokumentation ist klasse und vom Leistungs- und Funktionsumfang her scheint alles dabei zu sein, was ich jemals brauchen könnte. So, keine Zeit, fresse mich jetzt erstmal durch die Tutorials :rtfmb:

Grüße,
Rob
 

Ähnliche Themen

Empfehlung für Server Distribution

Last mit etc/passwd anzeigen lassen

Wie setze ich das am besten um?

0-laenge Pakete und Xorg Probleme

Intranet-Server einrichten

Zurück
Oben