Posts by Zaziki

    Also ich habe mal kurz für dich gegoogelt und kam dabei auf diesen Thread:
    https://airvpn.org/topic/9439-ras…-network-speed/


    Ich zitiere:


    Also wird das wohl mit der Verschlüsselung von OpenVPN zusammenhängen. Eventuell mal diese abschalten / umstellen und dann neu probieren? Ich weiß aber nicht ob das geht oder wie das geht.

    Jop alle Daten die hier sind, sind von meinem Pi Modell B (512MB RAM). Der ist aber auch nicht übertaktet oder sonstiges.
    Das mit den 7 Sekunden ist wirklich krass, ich kann mir auch nicht erklären warum der sooo lange braucht.

    //Edit:
    Ich habe oben die Klasse, genauer gesagt die Methode arrayConcat angepasst. Spart nochmal ca 200ms. Dort wird jetzt auch ein Stringbuilder eingesetzt. Das ganze ist aber noch ca 70ms langsamer als der reine Stringbuilder. Das ganze wird wohl daran liegen, dass ich das Ergebnis von Arrays.toString() bearbeiten muss. Aber ansonsten bestimmt eine nette Alternative!

    Vielen Dank für eure Beiträge die haben mich echt weitergebracht!

    Ich habe die Klasse von jostereo einmal angepasst und die Methode mit den Arrays.toString(array) hinzugefügt. Das Problem da war aber, dass ich dort die " " (Leertasten) ersetzen und die [ ] rausnehmen musste. Dadurch wird es wahrscheinlich etwas langsamer.
    Hier die Klasse:

    Wenn ich das ganze mit echten Daten füttere kommen folgende Zeitergebnisse:

    Code
    ArrayConcat     Dauer in Millisekunden: 246ms
    StringBuilder   Dauer in Millisekunden: 178ms
    String          Dauer in Millisekunden: 7748ms

    An einen StringBuilder hätte ich auch gleich denken können :D

    Hi Leute,

    Ich habe zur Zeit ein mittelschweres Problem mit meinem Programm. Im Endeffekt läuft es, aber es dauert halt.
    Ich habe eine Funktion, die aus einem 2D-Array (int) einen großen String macht und in die Datenbank schreibt. Das ganze ist für ein Online-Spiel an dem ich gerade hobbymäßig arbeite:


    Das Problem ist nun, dass die map 100x100 Felder groß ist. Nun, da der Raspberry Pi ja nicht der schnellste ist, dauert die Funktion recht lang was für einen Server mit mehreren Nutzern nicht gerade vom Vorteil ist.

    Nun zu meiner Frage: Gibt es da eine Funktion mit besserer Performance um so ein Array in einen String zu verwandeln?

    Freut mich, dass ich dir weiterhelfen konnte :D
    Wenn du da was schönes machst, könntest du das ja auch mal im Unterforum "Projekte" zeigen. Ich selbst bin da selbst sehr interessiert dran, da wir gerade die Küche umbauen und ich schon an solch einer Umsetzung dachte.

    Wenn deine Internetleitung schnell genug ist, könnte man sich überlegen ein Programm zu schreiben welches sich das Youtube-Video komplett herunterlädt und dann (zum Bespiel mit mplayer) abspielt. Voraussetzung dafür ist halt, dass dein Internet schnell ist und die Videos nicht so lang. Sollte funktionieren.

    Edit:
    Was man auch machen könnte ist, dass man so zusagen eine Startseite programmiert (als Web-App) die dir dann die Möglichkeiten bietet Musik abzuspielen (Stream), weiter surfen (Adresszeile vom Browser evtl nutzen) und halt dann noch Youtube-Videos gucken (Dann ist aber die frage ob man das so einfach mit der Lösung umsetzen kann die ich bereits geschrieben habe)

    Das Programm auf dem RPi sorgt nur dafür, dass No-IP immer die aktuelle IP von deinem RPi bekommt.
    Um später dann aber auch auf deine Webseite (Oder andere Anwendungen) Zugriff zu haben, musst du an deinem Router einmalig eine Port-Freigabe (Forwarding) einrichten. Das ist leider von Router zu Router unterschiedlich. Deswegen müssen wir wissen, welchen Router du daheim hast ;)

    RaspCP bietet auch ein Terminal. Auch wenn der Gebrauch leider nur sehr beschränkt ist, da jeder Kommando in einer eigenen Shell ausgeführt wird (Das muss ich unbedingt mal bei Gelegenheit ausbessern) Des Weiteren werden aber auch die Temperaturen und andere weitere Informationen auch direkt nach dem Login angezeigt.
    Du kannst das ganze System aber auch selbst mit Plugins erweitern und für dich individualisieren.
    Kannst ja einfach mal reingucken ;)

    Leider hat die 1.0 noch keinen richtigen Updater. Es gibt jediglich ein Plugin was dir anzeigt, dass die 1.0 ab einem bestimmten Zeitpunkt nicht mehr aktuell ist. Automatische Updates gibt es dann erst ab 1.1.


    Hi,

    möchte dein RaspCP gerne ausprobieren warte aber auf die version 1.1 und wollte mal fragen wie weit du damit denn bist?

    Die Bilder auf deiner Homepage gefallen mit schon sehr gut :)

    gruß
    Nico

    Hi prace,
    Leider ist es zur Zeit so, dass mehr Fehler aufkommen als ich beseitige ;) Ich habe aber auch leider privat nicht so viel Zeit, alles zu fixen. Das zieht natürlich den ganzen Update-Prozess in die Länge. Aber ich versuche jede freie Minute die ich habe, mit programmieren zu füllen!


    Grüße

    Du benutzt die Funktion serialflush() aber in dem verlinkten Code von dir ist diese nicht vorhanden. Benutzt du eine andere Library?

    Ansonsten zeig uns mal, was in der Variable $_buffer vor und nach dem Benutzen der Funktion sendMessage() steht. Kann ja sein, dass dort etwas drin steht, was du gar nicht haben möchtest.

    Da sich das Update doch weiter nach hinten verschiebt, wollte ich hier mal eine kleine Mindmap zeigen die die 2 großen Neuerungen in RaspCP 1.1 darstellt. Und zwar sind diese "Multi-RPi" und Update-Pools.

    RaspCP_1.1.jpg


    Actions-svn-update-icon.png
    Update-Pools
    Diese Pools dienen als Zwischenstation für Updates. Ein Pool ist eigentlich nichts Weiteres als ein normaler Server. Dieser Server downloadet sich immer das aktuelle Release und speichert dazu Informationen ab. Nun können sich andere Raspberry Pi's, auf denen RaspCP läuft, melden und ein Update anfordern. Ist nun auf dem Pool eine neuere RaspCP Version wird alles automatisch aktualisiert. Diese Update-Verteilung hat vor allem dann Vorteile, wenn man Multi-RPi nutzt.


    Apps-preferences-system-network-sharing-icon.png
    Multi-RPi
    Multi-RPi bietet die Möglichkeit mehrere Raspberry Pi's zu verwalten. Dabei werden die Slaves und der Master unterschieden. Der Master kann irgendein Server sein, der die Informationen von den Slaves annimmt. Slaves sind die Raspberry Pi's. Diese sammeln über sich selbst die verschiedenen Informationen und packen dieses in ein Paket welches dann zu ihrem Master geschickt wird.
    Der Benutzer (Sie) können dann eine übersichtliche Tabelle über ihre Raspberry Pi's anzeigen lassen und den allgemeinen Status ihrer Raspberry Pi's angucken.

    Vorschau zur Multi-RPi Tabelle:
    multi_rpi_preview.jpg


    Aktueller Fortschritt: 60%

    Du musst die Ports auf den dein Webserver läuft freigeben (HTTP: 80, HTTPS: 443). Das geschieht im Router. Wie du das bei deinem Router machst, findest du sicherlich bei Google da das bei den meisten Routern immer unterschiedlich ist ;)

    In Sachen Sicherheit kann ich dir das Thema von Tasty empfehlen. Er hat recht viele Links gepostet, die die grundlegende Sicherung deines RPi's erklären und worauf du besonders achten solltest. Des Weiteren war auch gerade letztens erst ein Beispiel wo ein Benutzer dieses Forum einen ungesicherten RPi gepostet hat. Dies musste er dann wahrscheinlich auch erst fühlen bevor er hören wollte ;)

    Tasty
    May 12, 2013 at 3:24 PM

    Wenn du mir helfen möchtest, nehme ich das natürlich gerne an. Bin selbst noch nicht wirklich dazu gekommen weil ich am RaspCP selbst arbeite. Doch kann ich dir zur Zeit nichts bieten. Vor allem kein Geld, da ja das Projekt rein privat ist und kein kommerzielles Ziel verfolgt ;)
    Am besten wäre es, wenn du dich mal direkt bei mir per zaziki1337@gmail.com oder per PN meldest und genau darstellst, was du machen könntest.


    Des Weiteren zu RaspCP:
    Ich habe bereits viel weiter gemacht und einen eigenen Updater eingefügt. Der kann selbst das aktuelle Release downloaden und es dann entpacken. Zur Zeit kann es aber noch zu Problemen mit alten Konfigurationen kommen. Dafür muss ich erst noch eine Lösung finden, dann kann ich die nächste Version veröffentlichen.

    Oft kann man Query's für die Datenbank optimieren. Wenn man zum Beispiel mit

    SQL
    SELECT * FROM Table

    arbeitet ist es natürlich langsamer als wenn nur die gezielten Spalten ausliest. Dies wird sehr langsam, wenn man mit großen Datenmengen arbeitet. Und wie man weiß ist der RPi ja schnell an seine Grenzen angekommen was das angeht ;)

    Des Weiteren sollte man drauf achten, dass am besten mit einkompilierten Funktionen von PHP nutzt. Gutes Beispiel dafür sind die Such- / Sortieralgorithmen. Wenn man diese in PHP Code schreibt, sind die natürlich viel langsamer als die, die von PHP geliefert werden. Denn die mitgelieferten Funktion von PHP sind in C / C++ geschrieben und können viel schneller arbeiten. Ausserdem ist da die Chance dass unnötige Sachen berechnet werden fast Null.
    Manchmal passiert es auch, dass man unnötige Umwege geht und so unnötig Zeit verloren geht. Auch sollten nicht all zu oft Dateizugriffe gemacht werden (Aber so wie du dein Skript beschrieben hast, ist das ja nicht so dein Problem, aber ich möchte das hier der Vollständigkeitshalber mal aufschreiben). Denn wenn man ganz oft eine Datei öffnen muss, was reinschreibt und dann wieder schließt ist es ja klar, dass das Skript lange braucht bis es fertig ist. Sowas kommt dann ganz gut wenn man solche Sequenzen in Schleifen laufen lässt :rolleyes:
    Wenn man nun selbst wirklich große und langwierige Algorithem hat, könnte man sich überlegen selbst eine Extension für PHP zu schreiben und dies mit einzukompilieren. PHP Extensions werden, wie der PHP-Kern, in C/C++ programmiert. Und das geht schon tiefer in die Materie. Es ist nicht so, dass man sich einfach mal hinsetzen kann und schnell eine Erweiterung schreibt. Dies macht aber sehr oft nur in Ausnahmefällen Sinn. Tutorials dazu solltest du bei Google finden können.


    Also hier mal eine kleine Todo-Liste für dich:

    • Überprüfe ob du deine Querys optimieren kannst
    • Eventuell auf PHP-Funktionen zurückgreifen die das ganze schneller machen
    • Unnötige Funktionsaufrufe / Sequenzen entfernen

    Aber um genaueres sagen zu können, müsstest du uns deinen Code mitteilen und uns deinen Datenbankaufbau zeigen (inklusive Datensätze)