• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Welche Sprache für kleine Tools am Server

electric.larry

\''; DROP TABLE user; --
Teammitglied

Registriert
13 Dez. 2014
Beiträge
4.549
Ort
Raum 43
Als Sysadmin braucht man immer wieder irgendwelche kleinen Helper am Server. Klar, wenn es nur ein paar Zeilen benötigt, wird es ein Bash Script. Sobald aber etwas mehr Logik notwendig ist, wird ein Bash Script - zumindest für mich - schnell unübersichtlich.

Viele solcher Mini-Tools, die man im Netz findet, sind in Perl geschrieben und ich greife deshalb auch immer wieder zu dieser Sprache. Ein großer Perl Fan bin ich aber trotzdem nicht und hab dann beim Programmieren irgendwie immer den Gedanken, dass ich das eigentlich lieber in PHP oder vielleicht sogar C# machen würd. Weils aber doch unüblich ist, bleibts dann meist bei Perl.

Natürlich sollt es eine Sprache sein, die man auf "allen" Servern findet, was mich dann wieder zu PHP bringt. Deshalb meine Frage: "Darf" man PHP für Shellscripts verwenden oder spricht irgendetwas - außer persönliche Befindlichkeiten - dagegen? Gibt es nennenswerte Performance-Unterschiede zwischen PHP und Perl, wenn es z. B. darum geht große Log-Files zu parsen und zu analysieren? Hat es security-technische vielleicht Nachteile wenn man PHP für solche Dinge verwendet?

Würd mich sehr interessieren wie ihr das seht und welche Sprachen ihr dafür verwendet.
 

misterunknown

Wannabe

Registriert
19 Jan. 2014
Beiträge
135
Würd mich sehr interessieren wie ihr das seht und welche Sprachen ihr dafür verwendet.

Zur Performance von PHP vs. Perl kann ich nichts sagen. Ich nutze für Tools, die über ein Bash-Skript hinausgehen meistens Python. Das hat eine klare, strukturierte Syntax, eine umfangreiche Standardbibliothek und ist portabel.
 

electric.larry

\''; DROP TABLE user; --
Teammitglied

Registriert
13 Dez. 2014
Beiträge
4.549
Ort
Raum 43
  • Thread Starter Thread Starter
  • #3
Danke misterunknown. Damit hab ich schon irgendwie gerechnet, aber Python mag ich noch weniger als Perl ;P Ich bin eher bei den Sprachen mit C-Syntax zu Hause.
 

evillive

EXIL

Registriert
24 Juli 2013
Beiträge
930
perl -> python -> bash -> php

so wäre meine Reihenfolge. Von der Performance ist perl meiner Meinng nach besser als php.

statt c# würde ich java verwenden
 

virtus

Gehasst

Registriert
24 Apr. 2015
Beiträge
1.689
Ort
AUF DEM MOND
Eine Sprache, die man auf allen Servern findet?

Ich habe in den letzten Monaten Go kennen und lieben gelernt. Golang.org
Go kannst du plattformunabhängig nutzen. Entweder kannst du dir eine Binärdatei bauen und diese shippen oder du kannst die Source shippen und auf dem Zielsystem bauen. Da go kompiliert wird, hast du natürlich Geschwindigkeitsvorteile gegenüber interpretierten Scriptsprachen. Auch sonst ist go auf Performanz getrimmt. Trotzdem ist es unfassbar einfach zu lernen und zu verwenden. Außerdem ist es C in vielen Bereichen ähnlich

Die Performanz von PHP hängt stark damit zusammen, wie man PHP-Anwendungen ausführt:
- Einbinden des (originalen) Interpreters mittels FastCGI: Der Quellcode der PHP-Anwendung wird bei jedem Aufruf von einer neuen Interpreterinstanz ausgeführt.
- Einbinden des (originalen) Interpreters als Servermodul: Der Quellcode der PHP-Anwendung wird von einer Interpreterinstanz, ausgeführt.
- Zend-Engine: Der Quellcode der PHP-Anwendung wird in Bytecode übersetzt und dieser dann zur Laufzeit ausgeführt.
- PHC / Hip Hop Virtual Machine: Der Quellcode der PHP-Anwendung wird bei PHC in C, bei der HHVM in C++ übersetzt, das wird dann zur Laufzeit ausgeführt.

Die HHVM wird von Facebook entwickelt und dort konnte die Serverlast durch deren Einsatz um 40% gesenkt werden. Auch Wikipedia macht Gebrauch von der HHVM und in einer Mail wird von einer halbierten Latenz und Dauer zum Speichern von Seiten gesprochen. Die CPU Last sei durch den Einsatz der HHVM von über 50% auf 16% gefallen.
PHP: https://de.wikipedia.org/wiki/PHP#Ausf.C3.BChrung
Hip Hop: https://de.wikipedia.org/wiki/HipHop
Wikipedia/ Wikimedia: https://lists.wikimedia.org/pipermail/wikitech-l/2014-December/079720.html ; https://meta.wikimedia.org/wiki/Wikimedia_Foundation_Report,_August_2014#HHVM


Ja, du kannst auch PHP benutzen, aber eigentlich willst du das nicht.


Java halte ich für einfache kleine Tools viel zu aufgebläht da ist allein schon in der Entwicklung zu aufwändig.
Ob es das Richtige für dich ist, hängt natürlich auch vom Anwendungsfall ab. Bei stark zeitkritischen Anwendungen, die im µ-Sekunden-Bereich laufen, hast du mit Java keine Chance. Auch brauchst und willst du nicht immer OOP.
 

Patroklos

NGBler

Registriert
20 Aug. 2013
Beiträge
459
Bei so was hat jeder seine Vorlieben. Nutze das womit du am besten klar kommst. Außer du arbeitest nicht alleine. Dann ist es sinnvoll sich mit seinen Kollegen abzustimmen. :confused:
Kenne Orte an denen Python nicht gerne gesehen ist...

Zu meinen Vorlieben gehört es in jedem Fall.
>> Für kleine Script's ist Python ideal.
>> Code ist gut lesbar.
>> Wenn man mal etwas Performance benötigt, kann man Python auch erweitern.
>> Vorinstalliert ist es nahe zu überall.
>> Es gibt 10000 Module für jegliches Zeug.
 

musv

Bekannter NGBler

Registriert
15 Juli 2013
Beiträge
3.454
Ort
/dev/null
Natürlich sollt es eine Sprache sein, die man auf "allen" Servern findet, was mich dann wieder zu PHP bringt.
Perl, Python, Bash.

PHP muss nicht auf jedem Server vorhanden sein. Perl und Python sind jedoch im Linux-Umfeld systemrelevant. PHP hab ich jahrelang programmiert, würde es aber für Systemscripte eher weniger verwenden.

Und wenn du Python nicht magst, sei getröstet. Ich musste in den letzten Monaten Powershell und Windows-Batch programmieren. Das ist noch mal 'ne ganz andere Liga (nach unten).
 

Gelöschtes Mitglied 1550

Guest

G
Ich hab mir als Systemadministrator auch Python angeeignet und fahre damit bisher ziemlich gut - kann es also nur empfehlen für Linux-Systeme... neben der Bash natürlich.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.573
Zusätzlich zu den Empfehlungen die bisher gemacht wurden sind würde ich dir auch zu Python raten.
Flexibler kann man mit Daten nicht arbeiten und vor allem komfortable.

Auch wenn es für dich nichts neues sein wird, speziell weil es dir auch um Logauswertung geht, Text Processing in Python (2.x) online nachzulesen und wenn es sich um wirklich viele Datenmengen handelt die du auswerten willst, Pandas - Python Data Analysis Library und für Plotting/Charting in Python gibt es hier eine lange Liste und auch Stackoverflow wird auch Plotly empfohlen.

Für PHP bist du wieder auf einen Webserver angewiesen um die Skripte auszuführen, Python sollte in aller Regel schon in einer Version vorinstalliert sein und kann halt viel out-of-box, wie schon gesagt und das in wenigen Zeilen Code.
Mir ist der Syntax immer sympathisch gewesen und sehr natürlich.

Wenn dir natürlich PHP liegt mit seinen sprachlichen "Ecken und Kanten", nimm PHP, aber über kurz oder lang ist man vermutlich mit Python glücklicher. Und falls dir Python von Hause aus zu langsam vorkommen sollte, kannst du, so fern du nicht auf viele Module an angewiesen ist, auch zu PyPy greifen.

Vielleicht etwas was deinem C-Fieber etwas entgegenkommt - ich würde das was du umsetzen willst erst in Python prototypen/entwickeln, weil es schnell und easy geht, und sollte dir die Performance zu wenig sein danach dann über Umsetzung in C-irgendwas nachdenken. :)
 

Abul

(Threadleser)

Registriert
20 Sep. 2013
Beiträge
4.087
Für PHP bist du wieder auf einen Webserver angewiesen um die Skripte auszuführen
Ne, das stimmt nicht. Ein "user:~$ php /verzeichnis/datei.php" kann durchaus ohne Webserver ausgeführt werden.
 

electric.larry

\''; DROP TABLE user; --
Teammitglied

Registriert
13 Dez. 2014
Beiträge
4.549
Ort
Raum 43
  • Thread Starter Thread Starter
  • #13
Danke für die vielen Antworten. Ihr habt mich überzeugt, ich werd Python noch eine zweite Chance geben um "mein Freund" zu werden.

Ich hatte mir vor eineinhalb Jahren vorgenommen Python zu lernen und zu dem Zweck begonnen eine kleine Zeiterfassung zu schreiben. Code in Eclipse geschrieben, GUI mit Qt Designer gebastelt und mit cxfreeze zu Executables für Windows und Linux "kompiliert". Fand es wirklich cool ohne Zusatzaufwand eine plattformunabhängige Anwendung zu bekommen, auch wenn die GUI auf den verschiedenen Systemen nicht unbedingt gleich schön dargestellt wurde.
Furchtbar mühsam fand ich es damals aber, in zwei getrennten IDEs Gui und Logik zu schreiben und dann vorallem die Events an die jeweiligen Controls zu binden. Klar, da kann die Programmiersprache nichts dafür, wenn der Workflow in der IDE nicht so wow ist, wie man es z. B. von Visual Studio kennt, aber das in Kombination mit der unsympathischen Syntax war Grund genug, mein Python Experiment für gescheitert zu erklären.

Irgendjemand hier am Board hat mich dann drauf aufmerksam gemacht, dass man .NET Anwendungen inzwischen komplett stressfrei ohne neu zu kompilieren auf "allen" Plattformen ausführen kann. Hab dann die Zeiterfassung nocheinmal in Visual Studio mit C# angefangen und hatte innerhalb von ein paar Nächten das gleiche Resultat, wie mit Python/Qt nach mehreren Wochen.

Lange Rede kurzer Sinn: Für Desktop Anwendungen kommt mir vorerst nur noch C#/.NET ins Haus, aber für Commandline-Tools werd ichs jetzt nocheinmal mit Python versuchen.
 

musv

Bekannter NGBler

Registriert
15 Juli 2013
Beiträge
3.454
Ort
/dev/null
Ich hatte mir vor eineinhalb Jahren vorgenommen Python zu lernen und zu dem Zweck begonnen eine kleine Zeiterfassung zu schreiben. Code in Eclipse geschrieben, GUI mit Qt Designer gebastelt und mit cxfreeze zu Executables für Windows und Linux "kompiliert".
Ähm, das ist jetzt 'ne etwas merkwürdige Argumentation.

  1. Klar gibt's für Python auch GTK- oder QT-Binding, um damit einfach GUIs erstellen zu können. Aber du suchst eine Sprache für Tools. Da wirst du in der Regel keine GUI erstellen.
  2. Eine Linux-/Unix-Philosophie lautet: Für jede Aufgabe 1 Tool. Für Windowsumsteiger ist das ziemlich schwierig. Aber im Grunde genommen kannst du damit mindestens genauso effizient und effektiv arbeiten. Ich hatte auf Arbeit auch VS2012 benutzt. Für viele Sachen fand ich aber Vim, grep, find, sed einfach komfortabler.
  3. Sieh Dir mal den QT Creator an als Ersatz für Eclipse. Valve verwendet den zum Entwickeln ihrer Spiele. Die Pythonunterstützung ist da allerdings nur rudimentär vorhanden.

Irgendjemand hier am Board hat mich dann drauf aufmerksam gemacht, dass man .NET Anwendungen inzwischen komplett stressfrei ohne neu zu kompilieren auf "allen" Plattformen ausführen kann.
Inzwischen ist ja die Hölle zugefroren. Und Microsoft hat Teile von .NET ebenfalls als Open Source veröffentlicht. Aber ich glaub, WPF dürfte noch nicht dabei sein. An diese Stelle tritt dann Mono. Ist natürlich die Frage, ob einem das wirklich sympathisch ist.

Lange Rede kurzer Sinn: Für Desktop Anwendungen kommt mir vorerst nur noch C#/.NET ins Haus,
Ich würde bei Desktopanwendungen auf C++/Qt setzen. Die ganzen Vorteile, die du von .NET kennst, gibt's auch von Qt (XML, Stringunterstützung, …).

C# hab ich in den letzten Monaten programmiert. Lässt sich wirklich schön und schnell entwickeln damit. Ein paar Macken haben aber auch entdeckt, bei denen man wieder merkt, dass halt doch Microsoft dahinter steckt. Ich wollte z.B. in einem DataGridView eine Buttoncolumn mit Radiobuttons ausstatten statt mit Checkboxen. Diese Sisyphos-Arbeit wäre dazu notwendig gewesen. Ich hab dann stattdessen eine Imagecolumn genommen und die Radiobuttons selbst gemalt. Solange niemand das UI-Thema von Windows ändert, sieht's gleich aus. Aber das ist halt Microsoft.
 

electric.larry

\''; DROP TABLE user; --
Teammitglied

Registriert
13 Dez. 2014
Beiträge
4.549
Ort
Raum 43
  • Thread Starter Thread Starter
  • #15
Ähm, das ist jetzt 'ne etwas merkwürdige Argumentation.
Klar gibt's für Python auch GTK- oder QT-Binding, um damit einfach GUIs erstellen zu können. Aber du suchst eine Sprache für Tools. Da wirst du in der Regel keine GUI erstellen.

Ich hab hier - so zu sagen - Äpfel und Birnen vermischt. Wollt damit nur sagen, dass das mein bisher einziges Python Projekt war und ich dadurch irgendwie eine Abneigung dagegen entwickelt hab ;) Gestern Nacht hab ich ein paar Stunden an einem Logfile-Parser gebastelt und war wirklich wieder von Python angetan.

Hatte mir Anfangs Gedanken wegen der Performance gemacht, weil bei dem Script doch viele Regular Expressions im Spiel sind und die Postfix Logs oft 500 MB und größer sind. Das Script analysiert eine 500 MB Datei aber unter 2 Sekunden, da brauche ich für meine Zwecke keinen weiteren Gedanken an Performance verschwenden.

Eine Linux-/Unix-Philosophie lautet: Für jede Aufgabe 1 Tool. Für Windowsumsteiger ist das ziemlich schwierig.

Das stimmt wahrscheinlich. Aber ich muss trotzdem sagen, auch als jemand der seit Jahren beruflich wie privat ausschließlich auf Linux arbeitet (abgesehen davon, wenn ich irgendwas von Adobe brauche) find ichs bequemer in einer IDE GUI und Logik schreiben zu können.

Ich hab viele Jahre lang (beruflich) Visual C++ gecoded und erinnere mich mit Grauen (!!) an Resource Files zurück ;) SetDlgItemText ftw! Ich hab auch noch lange Zeit C++ bevorzugt weil ich mir einfach nicht vorstellen konnte, dass eine "interpretierte Sprache" gleich gut sein soll wie guter, alter, echter native Code. Inzwischen hab ich aber mit meinem eigenen Dogma gebrochen, JIT Compiler machen ihre Arbeit einfach einwandfrei :) Wollte auch unbedingt .NET unter Linux entwickeln und hab etliche IDEs durchprobiert. Netbeans find ich in Ordnung, aber ich mag den Visual Studio Workflow einfach lieber.

WPF ist, wie du schon schreibst, meines Wissens noch nicht "geopensourced" worden. Der WPF Workflow, den sich MS ausgedacht hat, bei dem gleichzeitig Designer und Entwickler arbeiten können, ohne sich in die Quere zu kommen, ist imho genial. Ich hab vor zwei Jahren mit ein paar Kollegen ein größeres Multimedia Projekt (ein riesen Multitouch Screen) mit WPF umgesetzt und war echt begeistert.
 

Pleitgengeier

offizielles GEZ-Haustier

Registriert
14 Juli 2013
Beiträge
7.374
Ort
127.0.0.1
@electric.larry: Hast du schon mal den QTCreator versucht? Deine Beschreibung klingt irgendwie wie QT-Entwicklung vor 10 Jahren...
Zumindest wenn du C++ verwendest, ist der QTCreator wie Visual Studio
 

Patroklos

NGBler

Registriert
20 Aug. 2013
Beiträge
459
Netbeans... (kriegsfuß)

Zum grundsätzlichen coden schon mal Atom oder emacs probiert?

Kann hier nur für emacs werben. :coffee:
 

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.748
Ort
in der Zukunft
Ich finde es ja immer am schwierigsten zwischen *zig* Sprachen zu wechseln... die Fehlerquote steigt dabei enorm - also im Syntax / bzw. das man nachschauen muss *wie heißt nun stristr in pyton... ^^)

Für mich spricht 0 dagegen php für kleine Tools zu nutzen wenn man es eh schon gewöhnt ist. Auch hier gibt es mehr als genug Frameworks ...
Worauf ich grade in einem Bericht gestoßen bin (und ich an deine Frage hier erinnert habe)

 

virtus

Gehasst

Registriert
24 Apr. 2015
Beiträge
1.689
Ort
AUF DEM MOND
@drfuture:

Da steht aber nicht, ob der PHP Code kompiliert oder interpretiert wird. Das dürfte einen signifikanten Unterschied machen.
Auch müsste man sicherstellen, dass der gleiche Algorithmus zum Erstellen implementiert wurde.

Hast du da auch Informationen und sind die erhobenen Daten vergleichbar oder fällt das unter "traue keiner Statistik, die du nicht selbst gefälscht hast"?
 

electric.larry

\''; DROP TABLE user; --
Teammitglied

Registriert
13 Dez. 2014
Beiträge
4.549
Ort
Raum 43
  • Thread Starter Thread Starter
  • #20
@Roo: Danke für Atom! Sieht wirklich vielversprechend aus. Ich hab ja immer noch Notepad++ unter wine am laufen, weil es einfach so viele schöne Dinge kann. Vim verwend ich gerne um remote zu arbeiten, aber mit GVim am Desktop bin ich irgendwie nie ganz warm geworden.

Kannst du ein Atom Package für ftp/sftp empfehlen? Hab gesehen, da gibt es ja einige. Vielleicht etwas das mit ssh public keys umgehen kann.
 
Oben