schussvogeltot: node server über javascript starten und nciht über die console?

0 46

node server über javascript starten und nciht über die console?

schussvogeltot
  • javascript
  • node
  • webserver
  1. 0
    dedlfix
    1. 0
      schussvogeltot
      1. 0
        dedlfix
        1. 0
          schussvogeltot
          1. 0
            dedlfix
            1. 0
              schussvogeltot
              1. 0
                dedlfix
                1. 0
                  schussvogeltot
                  1. 0
                    dedlfix
                    1. 0
                      schussvogeltot
                      1. 0
                        dedlfix
                        1. 0
                          TS
                          • javascript
                          • webserver
                          1. 0
                            schussvogeltot
                        2. 0
                          schussvogeltot
                          1. 0
                            Robert B.
                            1. 0
                              schussvogeltot
                              1. 0
                                Robert B.
                                • node
                                • webserver
                                1. 0
                                  schussvogeltot
                                  1. 0
                                    Robert B.
                                    1. 0
                                      schussvogeltot
                                      1. 1
                                        Robert B.
                                        • menschelei
                                        1. 0
                                          schussvogeltot
                                          1. 0
                                            schussvogeltot
                                          2. 1
                                            Robert B.
                                            1. 0
                                              Matthias Apsel
                                              1. 0
                                                Robert B.
                                                1. 0
                                                  schussvogeltot
                                            2. 0
                                              schussvogeltot
                                              1. 0
                                                Robert B.
                                                1. 0
                                                  dedlfix
                                                2. 0
                                                  schussvogeltot
  2. 0
    Robert B.
    1. 0
      schussvogeltot
      1. 0
        Robert B.
        • javascript
        • node
        • shell
        1. 0
          schussvogeltot
          1. 0
            Regina Schlauklug
            1. 0
              schussvogeltot
          2. 0
            Robert B.
            1. 0
              schussvogeltot
              1. 0
                Robert B.
                • node
                • webserver
        2. 0
          schussvogeltot
          1. 0
            Robert B.
            1. 0
              schussvogeltot
              1. 0
                Robert B.
                1. 0
                  schussvogeltot

Ich möchte eine reine Netzwerkanwendung schreiben. Die benutzer sollen ganz einfach einen server starten können oder sich als client mit dem server verbinden können, ohne eine konsole benutzen zu müssen. Click 'n' Play.

Leider sit das sehr schwer dazu einträge im Internet zu finden, weil man immer mit den Suchbegriffen bei seiten landet wo es dann mit console erklärt wird, einfach einen server zu starten. Das ist aber für normalanwender (Muttis, Opis, Kinder, etc.) nicht zumutbar.

Wer kann mir vielleicht einen Befehl zum weiter suchen nennen oder hat auch ein Beispiel wie das gehen kann?

PS: Serverkosten möchte ich gerne sparen und auch peer2peer braucht einen server.

akzeptierte Antworten

  1. Tach!

    Ich möchte eine reine Netzwerkanwendung schreiben.

    Meinst du statt "rein" eigentlich das Wort "lokal"? Das Internet ist auch ein Netzwerk.

    Die benutzer sollen ganz einfach einen server starten können oder sich als client mit dem server verbinden können, ohne eine konsole benutzen zu müssen. Click 'n' Play.

    Leider sit das sehr schwer dazu einträge im Internet zu finden, weil man immer mit den Suchbegriffen bei seiten landet wo es dann mit console erklärt wird, einfach einen server zu starten. Das ist aber für normalanwender (Muttis, Opis, Kinder, etc.) nicht zumutbar.

    Wenn es was Vertrautes sein soll, wird es wohl ein Windows-Programm werden, das über den üblichen Weg installiert wird und dann per Icon zu starten ist.

    PS: Serverkosten möchte ich gerne sparen und auch peer2peer braucht einen server.

    Wenn du auf Heimanwender setzt, hast du das Problem, dass du zwar meist über den Router rauskommst, aber nicht rein. Da wird sich fast niemand mit anderen verbinden können, wenn es nicht eine zentrale Verteilerinstanz gibt.

    Zudem wissen die Clients auch nichts voneinander, ohne das gesamte Internet nach anderen Clients abzusuchen.

    Solange aber alles im lokalen Netzwerk stattfindet, musst du nur einen kleinen Bereich nach anderen Client absuchen. Einen zentralen Server braucht es dann auch nicht. Aber für Fälle von nicht gleichzeitiger Kommunikation brauchst du dann doch einen Server, der die Nachrichten bis zum Ausliefern speichert.

    dedlfix.

    1. ja, ich meine Lokal.

      es soll eine plattformunabhängige App sein. Und ich möchte das ein Spieler server und client zugleich ist. Ich will nur nciht das der über console "node server" eingeben muss, sondern einfach nur auf einen button drückt.

      1. Tach!

        es soll eine plattformunabhängige App sein. Und ich möchte das ein Spieler server und client zugleich ist. Ich will nur nciht das der über console "node server" eingeben muss, sondern einfach nur auf einen button drückt.

        Du kannst auch auf anderen Plattformen, da aber systemspezifisch Icons anlegen. Jedes Console-Programm kann auch mit Icons gestartet werden. Für Linux musst du die Dokumentation des jeweils verwendeten Window-Managers beachten.

        dedlfix.

        1. Tach

          Mit den Icons wäre ich ja dann plattformabhängig richtig? Z.B. auf android müsste ich in den appstor ein icon für android hochladen und dann über einen javascript event diese verknüpfung ausführen richtig?

          1. Tach!

            Mit den Icons wäre ich ja dann plattformabhängig richtig? Z.B. auf android müsste ich in den appstor ein icon für android hochladen und dann über einen javascript event diese verknüpfung ausführen richtig?

            Mit ist keine plattformunabhängige Geschichte bekannt, die auf allen Plattformen Programmicons einrichten kann.

            Und ja, die Stores für Mobilgeräte sind da auch noch individuell zu berücksichtigen. Was dann da beim Endgerät an Icons installiert wird, gibst du da irgendwo in den Installationapaketdaten an.

            dedlfix.

            1. das heißt wenn ich über eine verknüpfung gehe, kann ich dann den server nciht mehr abschalten. :-o?

              1. Tach!

                das heißt wenn ich über eine verknüpfung gehe, kann ich dann den server nciht mehr abschalten. :-o?

                Das hat nichts miteinander zu tun. Ein Server ist erstmal nur ein Programm. Ob das als Service/Daemon läuft oder als Standalone-Programm, ist nicht prinzipiell festgelegt. Andererseits kann man auch Service/Daemon-Start-Stop-Anweisungen in das Feld für das auszuführende Kommando beim Icon schreiben.

                dedlfix.

                1. okay, kannst du mir auch sagen, wie ich dann die verknüpfung mit javascript starte? Mein Problem mit dem ausführen hat sich ja jetzt nur verschoben.

                  1. Tach!

                    okay, kannst du mir auch sagen, wie ich dann die verknüpfung mit javascript starte? Mein Problem mit dem ausführen hat sich ja jetzt nur verschoben.

                    • Meinst du von Javascript aus ein Programm starten? Wenn ja, wo läuft das Javascript? Browser werden laut heulend Zugriffe auf Dinge außerhalb des Browsers unterbinden.
                    • Meinst du ein Javascript-Programm (für node.js geschrieben) starten?

                    dedlfix.

                    1. vom browser aus, na klar. Programm starten bzw. halt "node server.js" ausführen. Natürlich auf dem Rechner/Handy wo es gestartet wird.

                      1. Tach!

                        vom browser aus, na klar. Programm starten bzw. halt "node server.js" ausführen. Natürlich auf dem Rechner/Handy wo es gestartet wird.

                        Vergiss das Vorhaben. Nimm einen Server als Instanz, zu dem sich alle hinverbinden. Server auf Mobilgeräten laufen lassen ... ich glaube nicht, dass das (so einfach) geht.

                        dedlfix.

                        1. Hello,

                          Server auf Mobilgeräten laufen lassen ... ich glaube nicht, dass das (so einfach) geht.

                          Auf meinem Tab4 kann ich den Palapa-Webwerver mit PHP starten und benutzen.
                          Das Ding läuft zwar stabil, aber es macht dann ohne DNS wenig Spaß.

                          Für Mini-Vorführungen per localhost ist er aber durchaus geeignet.

                          Liebe Grüße
                          Tom S.

                          --
                          Es gibt nichts Gutes, außer man tut es
                          Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
                          1. Danke für den Tipp TS, aber PHP wollte ich nicht anfangen. Im video sieht das auch aufwendig aus. Das macht kein Anwender mit, wenn der sieht das da zich andere programme geladen werden. Vorallem, weil meine Anwendung nur ganz einfache dinge tut.

                        2. Danke dir. Ist aber echt schade. Da konn man mit node.js so viel machen, aber ist halt immer an das internet gefesset oder setzt voraus das jemand die Konsole bedienen kann.

                          1. Moin,

                            Wo ist denn Node.js an eine Internetanbindung „gefesselt“? Und das Starten kann ja auch aus einer Batchdatei oder einem Programm heraus erfolgen.

                            Viele Grüße
                            Robert

                            1. entweder internet oder console. - Mit internetserver habe ich ja nicht mehr das problem einen server starten zu müssen. der läuft ja dann immer.

                              1. Moin,

                                ich glaube, dass hier …

                                entweder internet oder console.

                                … ein Verständnisproblem vorliegt. Lies dir noch einmal durch, was ich drüben über Server geschrieben habe, dann sollte klar sein, dass ein Server noch nicht einmal Netzwerk braucht.

                                Und einen Server kannst du auch mit einem anderen Programm als mit der Konsole starten, z.B. in Perl

                                exec '/pfad/zum/server', 'start' or die $!;
                                

                                oder in C:

                                #include <unistd.h>
                                
                                execl("/pfad/zum/server", "start", NULL);
                                perror("exec");
                                

                                Mit internetserver habe ich ja nicht mehr das problem einen server starten zu müssen. der läuft ja dann immer.

                                Und wer startet den Server im Internet? Ist der überhaupt nötig, sprich sind die Clients immer im lokalen Netz oder auch weiter entfernt (Internet)?

                                Viele Grüße
                                Robert

                                1. die clients sind immer wieder in anderen lokalen Netzwerken. Eben wie bei localvote. Deshalb kann ich nciht einfach einen server starten und gut ist. Es muss auch funktionieren, wenn niemand einen server über console startet.

                                  Internet brauche ich garnicht, für meine Anwendung. Das würde ich gerne vermeiden. Aber im Netzwerk muss es funktionieren. Das ganze soll eine app werden die man wie localvote runterladen kann. Ich will zwar nciht localvote nachbauen, aber der funnktions- bzw. programmierumfang ist genau gleich.

                                  Okay, also davon eine dll erzeugen, dann in javascript reinladen:

                                  #include <unistd.h>
                                  
                                  execl("/pfad/zum/server", "start", NULL);
                                  perror("exec");
                                  

                                  "start" ist eine exe-datei? (Oder kann das auch eine server.js sein?) Hab gerade versucht meine einfache serverdatei zur exe zu compilieren, aber da hab ich gleich fehler kassiert.

                                  PS: Sorry, bin halt kein informatiker. Ich lerne mir das alles aus beispielen zusammen. Aber danke schonmal für die befehle. bin schon am recherchieren wie das funktionieren soll.

                                  1. Okay, also davon eine dll erzeugen, dann in javascript reinladen:

                                    Wo läuft denn das JavaScript: im Browser oder in Node.js? Wenn dein JavaScript jedenfalls eine DLL laden kann, kann es bestimmt auch direkt den Server starten.

                                    "start" ist eine exe-datei?

                                    Ein Platzhalter um zu demonstrieren, wie man Parameter übergibt. Die meisten Serverprogramme, die ich kenne, möchten zum Starten mit einem Parameter start und zum Beenden mit dem Argument stop aufgerufen werden.

                                    1. naja dll laden steht hier. allerdings geht das nciht mit allen befehlen von javascript eine dll zu erzeugen. Über das geht mein wissen leider nicht hinaus: https://www.phpied.com/make-your-javascript-a-windows-exe/ (Vielleicht mache ich da noch was falsch. Muss ich noch weiter rumprobieren.)

                                      Nach dem Link habe ich das eher als die ausführende Datei verstanden: http://www.unix.com/homework-and-coursework-questions/246577-help-execl-system-call-c-program.html

                                      execl("/home/dl121/cs371/assn7/a7.sh", "a7.sh", NULL);

                                      And it ran my a7.sh script.

                                      PS: Fazit: Baustelle 1: server.js in eine exe oder dll ohne fehler compilieren könne Baustelle 2: hoffen das diese wirklich dann als server startet mit dem befehl execl Baustelle 3: Befehl execl über einen event oder beim start mit einer HTML5 app (browser oder androidsystem) ausführen können

                                      1. Bevor du immer gleich neue Highlevel-Themen auf den Tisch legst, frühstücke bitte erst einmal die Hinweise ab, die man dir hinlegt, sprich beantworte bitte erst einmal meine Fragen, wenn ich dir weiter helfen soll. Nur, weil es Softwareentwicklung ist, muss es nicht kompliziert sein. Danke!

                                        1. Oh, sorry, ich habe deine Fragen nicht ignorieren wollen, dachte ich hätte drauf geantwortet.

                                          Wo läuft denn das JavaScript: im Browser oder in Node.js?

                                          Es läuft im Browser (Firefox) sowie Chrome auf meinem Android Handy und soll später in den Google Play Store als App. Und natürlich möglichst überall laufen irgendwann.

                                          Wo ist denn Node.js an eine Internetanbindung „gefesselt“?

                                          Ich kenne nur drei Möglichkeiten mit node.js: 1.) Server auf Ueberspace.de für 12-120 Eur im Jahr 2.) Über console starten local im Netzwerk separat zur App 3.) Peer2peer kostenfrei über einen kostenlosen server im internet eines fremden anbieters beschränkt auf 50 Teilnehmer. - Ich bin also bei 1 und 3 ans internet gebunden. bei 2 brauche ich die console die ich für andere zu umständlich halte.

                                          Und wer startet den Server im Internet? Ist der überhaupt nötig, sprich sind die Clients immer im lokalen Netz oder auch weiter entfernt (Internet)?

                                          Am besten startet keiner einen Server im Internet. Das koste Geld und ist für die Anwendung im lokalen Netzwerk unnötig. Die Clients sind immer im localen Netzwerk, sogar in einem Raum. Die Clients sind beliebige Smartphone, Laptop und Tabletbesitzer die sich treffen und in ein gerade verfügbares WLAN einwählen. An einem tag ist es bei Client A einandermal bei Client B mit einem anderen privaten WLAN Heimnetzwerk. Also man kann das vielleicht mit privaten Lanpartys vergleich die dann ein Spiel im lokalen Netzwerk spielen.

                                          Du willst unter Android einen Server starten? Lässt das Sicherheitsmodell das überhaupt zu? Da ich mich mit Android nicht auskenne (und was ist mit anderen mobilen Betriebssystemen?)

                                          Ja, ich will das jemand auf seinem Android Smartphone, den Host machen kann und alle übrigen clients sich mit Ihm verbinden können. Das Sicherheitsmodell lässt das zu, wenn man sich die genannte localvote App anschaut. Andere Clients haben andere Betriebsplattformen. Je mehr unterstützt werden, desto besser.

                                          Hm, das ganze funktioniert auch lokal?

                                          Ja, nur über netzwerk. Jedenfalls nach Aussage des App programmierers. Die App gibt eine ip und einen port aus und den können die clients zum verbinden eintippen.

                                          Du meinst beim start der app wird gleichzeit ein server mitgestartet.
                                          

                                          Ja, warum nicht?

                                          Also bei der localvote App scheint das das nicht so zu sein, vielleicht wird die IP und port aber auch erst angezeigt wenn dieser benötigt wird. Aber wenn es sein muss, gerne auch so.

                                          1. Moin,

                                            Oh, sorry, ich habe deine Fragen nicht ignorieren wollen, dachte ich hätte drauf geantwortet.

                                            Offensichtlich nicht, wie das folgende zeigt.

                                            Wo läuft denn das JavaScript: im Browser oder in Node.js?

                                            Es läuft im Browser (Firefox) sowie Chrome auf meinem Android Handy und soll später in den Google Play Store als App. Und natürlich möglichst überall laufen irgendwann.

                                            Hier fängt das erste Problem schon an: Apps haben ein anderes Sicherheitsmodell als Webapps, Webseiten oder lokale HTML-Dateien. Von Webseiten oder lokalen HTML-Dateien aus wirst du nie externe Programme starten können (von Webapps vielleicht auch nicht).

                                            Wo ist denn Node.js an eine Internetanbindung „gefesselt“?

                                            Ich kenne nur drei Möglichkeiten mit node.js: 1.) Server auf Ueberspace.de für 12-120 Eur im Jahr 2.) Über console starten local im Netzwerk separat zur App 3.) Peer2peer kostenfrei über einen kostenlosen server im internet eines fremden anbieters beschränkt auf 50 Teilnehmer.

                                            Ein auf Node.js basierender Server ist ein Serverprogramm. Dieses Programm kann auf einem lokalen Rechner mit oder ohne Netzwerk laufen oder auf irgendeinem Rechner in irgendeinem Netzwerk. Punkt.

                                            Und wer startet den Server im Internet? Ist der überhaupt nötig, sprich sind die Clients immer im lokalen Netz oder auch weiter entfernt (Internet)?

                                            Am besten startet keiner einen Server im Internet. Das … ist für die Anwendung im lokalen Netzwerk unnötig. Die Clients sind immer im localen Netzwerk … Also man kann das vielleicht mit privaten Lanpartys vergleich die dann ein Spiel im lokalen Netzwerk spielen.

                                            Das heißt eine der gestarteten Apps muss als Server für die anderen Clients fungieren. Das sollte dann machbar sein, denn:

                                            Die App gibt eine ip und einen port aus und den können die clients zum verbinden eintippen.

                                            Damit hast du sogar die Information für die Clients, die dann kein „Service Discovery“ betreiben müssen.

                                            Du meinst beim start der app wird gleichzeit ein server mitgestartet.

                                            Ja, warum nicht?

                                            Also bei der localvote App scheint das das nicht so zu sein, vielleicht wird die IP und port aber auch erst angezeigt wenn dieser benötigt wird.

                                            Gut, das heißt aber, dass es prinzipiell möglich ist, aus einer App heraus einen Server zu starten.

                                            Viele Grüße
                                            Robert

                                            P.S.: Ich möchte dir keinesfalls zu Nahe treten, aber gerade für Programmiereinsteiger empfehle ich dringend, sich erst einmal in die Thematik einzuarbeiten anstatt „per Google zu programmieren“. „Programming by Googling“ führt viel zu oft zu Cargo-Kult-Programming.

                                            1. Hallo Robert B.,

                                              P.S.: Ich möchte dir keinesfalls zu Nahe treten, aber gerade für Programmiereinsteiger empfehle ich dringend, sich erst einmal in die Thematik einzuarbeiten anstatt „per Google zu programmieren“. „Programming by Googling“ führt viel zu oft zu Cargo-Kult-Programming.

                                              +1

                                              + ein mMn. treffenderer Artikel Cargo-Kult-Wissenschaft

                                              Bis demnächst
                                              Matthias

                                              --
                                              Rosen sind rot.
                                              1. Hallo Matthias,

                                                im Grunde fehlt da noch ein Artikel über Cargo-Kult-Programming 😉

                                                Ich habe das oft genug erlebt, dass Leute mit Problemen ankamen, weil sie ohne Verständnis Code zusammenkopiert haben und ihnen dann alles um die Ohren geflogen ist. Bei so komplexen Dingen wie LaTeX wird das natürlich besonders schnell besonders chaotisch, weil die Fehler u.U. ganz woanders zu Tage treten als dort, wo sie tatsächlich sind.

                                                Viele Grüße
                                                Robert

                                                1. Jepp, genau das mache ich, aber bitte ich beschäftige mich schon damit was ich da zusammenkopiere. Letztlich schreibe ich kein kommerzielles Programm es ist nur ein hobby! Ich lerne Javascript, aber halt natürlich nciht ohne motivation, das dann irgendwas am ende auch funktioniert.

                                                  Seid nicht so streng mit mir. Ich unterhalte mich gerne mit euch. Ich habe wieder viel gelernt und so schnell werde ich es nciht wieder vergessen. - Alles gut.

                                                  PS: Es geht sicher noch schlimmer, siehe hier: ;-) https://de.wikipedia.org/wiki/Scriptkiddie

                                            2. Das heißt eine der gestarteten Apps muss als Server für die anderen Clients fungieren. Das sollte dann machbar sein, denn:

                                              Die App gibt eine ip und einen port aus und den können die clients zum verbinden eintippen.
                                              

                                              Und das genau will ich herausfinden, wie das geht. Aber, wie du schon sagst:

                                              Hier fängt das erste Problem schon an: Apps haben ein anderes Sicherheitsmodell als Webapps, Webseiten oder lokale HTML-Dateien. Von Webseiten oder lokalen HTML-Dateien aus wirst du nie externe Programme starten können (von Webapps vielleicht auch nicht).

                                              Um noch mal die besagte App heranzuziehen: http://lehrer.guru/author/toke-lichtenberg

                                              Es handelt sich dabei um eine Android Applikation, welche allen Nutzern im WLAN, Eduroam oder Hotspot die Teilnahme an Umfragen mit ihren Endgeräten (Notebook, Smartphone …) ermöglicht. Das ganze funktioniert ohne Registrierung, ohne zusätzliche Kosten, ohne die App selbst installiert zu haben und sogar ohne Internet. Die Daten werden auf dem Gerät in dem die Abstimmung läuft gespeichert.

                                              Das klingt doch nach Webapp. Aber vielleicht geht das halt auch erst eingebunden in einer Android Application. (Damit hatte ich noch nicht zu tun. Muss ich lernen, ich weiß manchmal mehr garnicht wo ich anfangen soll. :-) )

                                              Ein auf Node.js basierender Server ist ein Serverprogramm. Dieses Programm kann auf einem lokalen Rechner mit oder ohne Netzwerk laufen oder auf irgendeinem Rechner in irgendeinem Netzwerk. Punkt.

                                              Fazit: Node.js ist kein Javascript das man über eine Webapp ausführen kann, sondern eine Umgebung wie ein Browser oder anderes Programm aus dem Dateien gestartet werden können. Ergo, es geht nur so das die Androidapp bei dem besagten "localvote" beim start node startet. Und das wohl über eine batch datei. Das heißt ich brauche ein googleplay konto um das mal auszuprobieren. Welche "Thematik" empfiehlst du mir? (definitiv wird es an meinem windowsrechner nicht gehen bzw. anders sein.)

                                              PS: Naja, ich nenne das learning by doing. ;-)

                                              Als Cargo-Kult-Wissenschaft bezeichnete der Physiker Richard Feynman eine syntaktisch richtige, aber ansonsten sinnlose Arbeitsweise im Wissenschaftsbetrieb oder bei der Softwareentwicklung. Die Entsprechung in hierarchischen Systemen wird als Cargo-Kult-Management bezeichnet. Auch hier stehen formal richtige Vorgehensweise und zur Schau getragene Umtriebigkeit zur realen Wirkungslosigkeit des Handelns in einem (teilweise bizarren) Gegensatz.

                                              1. Moin,

                                                Um noch mal die besagte App heranzuziehen: http://lehrer.guru/author/toke-lichtenberg

                                                Es handelt sich dabei um eine Android Applikation, welche allen Nutzern im WLAN, Eduroam oder Hotspot die Teilnahme an Umfragen mit ihren Endgeräten (Notebook, Smartphone …) ermöglicht. Das ganze funktioniert ohne Registrierung, ohne zusätzliche Kosten, ohne die App selbst installiert zu haben und sogar ohne Internet. Die Daten werden auf dem Gerät in dem die Abstimmung läuft gespeichert.

                                                In dem von dir verlinkten Artikel ist ein Link auf den Google-Playstore, das heißt, dass die App auf mindestens einem Gerät installiert wird. Und wenn du dir die Screenshots im Playstore anschaust, dann sollte dir etwas auffallen (und vielleicht auch schon in dem Zitat oben).

                                                Ergo, es geht nur so das die Androidapp bei dem besagten "localvote" beim start node startet. Und das wohl über eine batch datei.

                                                Nein, zum letzten Mal: Die App startet den Node-Server direkt als externen Befehl und braucht keine Batchdatei dafür.

                                                Das heißt ich brauche ein googleplay konto um das mal auszuprobieren. Welche "Thematik" empfiehlst du mir? (definitiv wird es an meinem windowsrechner nicht gehen bzw. anders sein.)

                                                Die Android-Entwicklungsumgebung (oder so Dinger wie Apache Cordova, Xcode, …) bringen üblicherweise einen Telefon-Simulator zum Testen mit. Es wäre ja auch unpraktisch, wenn du nach jedem Kompilieren das Ergebnis in den Playstore hochladen müsstest.

                                                PS: Naja, ich nenne das learning by doing. ;-)

                                                Das führt aber nur dann zum Ziel, wenn die Grundlagen da sind. Du kannst ja auch kein Auto bauen, ohne zu wissen, wie eine Drehbank oder eine Presse funktionieren.

                                                Als Cargo-Kult-Wissenschaft bezeichnete der Physiker Richard Feynman eine syntaktisch richtige, aber ansonsten sinnlose Arbeitsweise im Wissenschaftsbetrieb oder bei der Softwareentwicklung. Die Entsprechung in hierarchischen Systemen wird als Cargo-Kult-Management bezeichnet. Auch hier stehen formal richtige Vorgehensweise und zur Schau getragene Umtriebigkeit zur realen Wirkungslosigkeit des Handelns in einem (teilweise bizarren) Gegensatz.

                                                Übersetzt: Man googlet Code zusammen, den man nicht versteht, in der Hoffnung, dass er das ausführt, was man möchte. Der historische Hintergrund ist bizarr genug, das zu verstehen: Die Inselvölker im Pazifik haben Flugplätze nachgebaut in der Hoffnung, dass „der Himmel“ ihnen Pakete abwirft.

                                                Viele Grüße
                                                Robert

                                                1. Tach!

                                                  Die Android-Entwicklungsumgebung (oder so Dinger wie Apache Cordova, Xcode, …) bringen üblicherweise einen Telefon-Simulator zum Testen mit. Es wäre ja auch unpraktisch, wenn du nach jedem Kompilieren das Ergebnis in den Playstore hochladen müsstest.

                                                  Nicht nur den Simulator gibt es. Man kann auch zumindest Android-Geräte mit USB-Kabel am Rechner anschließen und die Anwendungen darauf laufen lassen und sogar debuggen, ohne Playstore. Muss aber vermutlich irgendwo in den Einstellungen freigegeben werden.

                                                  dedlfix.

                                                2. Die Android-Entwicklungsumgebung (oder so Dinger wie Apache Cordova, Xcode, …) bringen üblicherweise einen Telefon-Simulator zum Testen mit. Es wäre ja auch unpraktisch, wenn du nach jedem Kompilieren das Ergebnis in den Playstore hochladen müsstest.

                                                  Natürlich

                                                  Der historische Hintergrund ist bizarr genug, das zu verstehen: Die Inselvölker im Pazifik haben Flugplätze nachgebaut in der Hoffnung, dass „der Himmel“ ihnen Pakete abwirft.

                                                  Dazu fällt mir ein: "Fake it, until u made it."

  2. Moin,

    wenn der Aufruf des Servers immer gleich ist, schreibe den Befehl in eine Batchdatei und lasse den Benutzer diese per Klick starten.

    Viele Grüße
    Robert

    1. eine batchdatei ist doch plattformabhängig. das wäre enorm schade, wenn man doch javascript bzw. HTML5 benutzt. dann müsste ich für jede plattform eine batchdatei schreiebn, naja gut. Aber wie startet man die und wie sieht die für android aus. Bat dateien sind ja windows.

      1. Moin,

        eine batchdatei ist doch plattformabhängig.

        Wenn du die Shell als Plattform bezeichnest, Ja.

        das wäre enorm schade, wenn man doch javascript bzw. HTML5 benutzt.

        JavaScript läuft üblicherweise in einer Sandbox, die dir das Ausführen irgendwelcher Programme aus gutem Grund nicht gestattet.

        dann müsste ich für jede plattform eine batchdatei schreiebn, naja gut.

        Für jede von dir unterstützte Plattform. Aber für die verbreitetsten Plattformen reichen im Grunde zwei verschiedene Batchdateien:

        1. Bash (Unix, Linux, Mac OS X)
        #!/bin/bash
        server-command start
        
        1. Windows
        server-command start
        

        Aber wie startet man die und wie sieht die für android aus.

        Du willst unter Android einen Server starten? Lässt das Sicherheitsmodell das überhaupt zu? Da ich mich mit Android nicht auskenne (und was ist mit anderen mobilen Betriebssystemen?), musst du mal schauen, ob man dort Batchdateien ausführen kann. Ansonsten muss der Starter deiner App das mit übernehmen.

        Bat dateien sind ja windows.

        Ja, aber .bat-Dateien sind nur eine Untermenge von Batchdateien.

        Viele Grüße
        Robert

        1. also das ausführen von bat dateien geht unter android ist, jedenfalls die quellen die ich dazu gefunden haben haben es nciht hinbekommen. Tja, das ist schade.

          Mich wundert aber wie die app das schafft? Wohl nicht mit node.js: https://play.google.com/store/apps/details?id=com.survivaladmin.localvote&hl=de

          Die Antworten der Teilnehmer werden direkt an Ihr Smartphone gesendet. Die Antworten werden nicht online gespeichert. Die Ergebnisse gehören ganz allein Ihnen. Eigentlich brauchen sie nicht einmal Internet solange Sie sich in einem lokalen WIFI befinden oder einen eigenen Hotspot aufgemacht haben.

          1. 1. Antwort

            Außerdem ist "nicht gespeichert" != "wird an Server geschickt und weitergeleitet"

            1. Hallo Regina,

              ja stimmt wir waren schon mal ganz dicht dran:

              Solange aber alles im lokalen Netzwerk stattfindet, musst du nur einen kleinen Bereich nach anderen Client absuchen. Einen zentralen Server braucht es dann auch nicht.

              genau das will ich. Aber ich kenne node nur so das man einen server braucht. Ob für Peer2peer oder server-client Anwendung.

              So wie sich die Antwort liest brauche ich doch dann nur ganz viele server die auch gleichzeitig clients sind. Deshalb will ich ja einen server starten können, von jeder platform aus. ????

              Deine ungleichung verstehe ich, aber wie geht es dann nun mit node.js und ohne einen server?

          2. Moin,

            also das ausführen von bat dateien geht unter android ist, jedenfalls die quellen die ich dazu gefunden haben haben es nciht hinbekommen. Tja, das ist schade.

            Da soll wohl „nicht“ statt „ist“ stehen und ein paar Kommata eingefügt werden, vermute ich.

            Mich hätte auch gewundert, wenn man bei Android so einfach an eine Shell herankäme. Dann musst du deine Batchbefehle innerhalb der App ausführen.

            Mich wundert aber wie die app das schafft? Wohl nicht mit node.js: https://play.google.com/store/apps/details?id=com.survivaladmin.localvote&hl=de

            Die Antworten der Teilnehmer werden direkt an Ihr Smartphone gesendet. Die Antworten werden nicht online gespeichert. Die Ergebnisse gehören ganz allein Ihnen. Eigentlich brauchen sie nicht einmal Internet solange Sie sich in einem lokalen WIFI befinden oder einen eigenen Hotspot aufgemacht haben.

            Hm, das ganze funktioniert auch lokal? Das heißt, dass das Telefon in dem Fall eine feste IP und einen laufenden Server hat, mit der die anderen Endgeräte kommunizieren. Was das für ein Server ist, lässt sich nur raten, aber es könnte auch ein node.js sein. Die App kann ja von sich aus den Server starten.

            Außerhalb des lokalen Netzes muss das Prinzip der verlinkten App allerdings anders funktionieren.

            Viele Grüße
            Robert

            1. Was das für ein Server ist, lässt sich nur raten, aber es könnte auch ein node.js sein. Die App kann ja von sich aus den Server starten.

              Du meinst beim start der app wird gleichzeit ein server mitgestartet. Also so wie du schon gesagt hast über eine batch-Datei. (Hatten wir ja ausgeschlossen.) - Wenn man dem Authoren im Internet folgt, hat er node.js benutzt. Das wäre aber sehr resourcehnunfreundlich, wenn da jedes system einen server einfach sinnlos laufen hat, außer eine Appanwendung wo dieser wirlich gebraucht wird. - nichts desto trotz, wie startet er den server ohne console ohne verknüpfung um plattformunabhängig zu bleiben? :-)

              PS: Klar, das ist eine reine lokale Netzwerkanwendung. Aber das will ich ja.

              1. Moin,

                Du meinst beim start der app wird gleichzeit ein server mitgestartet.

                Ja, warum nicht?

                Also so wie du schon gesagt hast über eine batch-Datei.

                siehe oben

                Wenn man dem Authoren im Internet folgt, hat er node.js benutzt. Das wäre aber sehr resourcehnunfreundlich, wenn da jedes system einen server einfach sinnlos laufen hat, außer eine Appanwendung wo dieser wirlich gebraucht wird.

                Ein Serverprogramm wird im Leerlauf kaum Last erzeugen.

                nichts desto trotz, wie startet er den server ohne console ohne verknüpfung um plattformunabhängig zu bleiben? :-)

                Wenn wir ausschließlich von Android reden, ist das aber nicht plattformunabhängig.

                PS: Klar, das ist eine reine lokale Netzwerkanwendung. Aber das will ich ja.

                Dann bietet sich ein lokal laufendes Serverprogramm an.

                Viele Grüße
                Robert

        2. Also bash dateien. Ich benutze Windows.

          mit "server-command start node server.js;" in einer new1.js Datei aufgerufen über eine html Datei mit <script language="javascript" type="text/javascript" src="new1.js"></script> hatte ich die Fehlermeldung > SyntaxError: missing ; before statement[Weitere Informationen]

          Dann haber ich hier folgendes gelesen:

          https://stackoverflow.com/questions/33509816/what-exactly-does-usr-bin-env-node-do-at-the-beginning-of-node-files

          #!/usr/bin/env node is an instance of a shebang line: the very first line in an executable plain-text file on Unix-like platforms that tells the system what interpreter to pass that file to for execution, via the command line following the magic #! prefix (called shebang).

          Note: Windows does not support shebang lines, so they're effectively ignored there; on Windows it is solely a given file's filename extension that determines what executable will interpret it. [1]

          und in die new1.js folgendes geschrieben:

          #!/usr/bin/env node
          
          
          
          
          const exec = require('child_process').exec;
          
          exec('node server.js', (e, stdout, stderr)=> {
          
              if (e instanceof Error) {
          
                  console.error(e);
          
                  throw e;
          
              }
          
              console.log('stdout ', stdout);
          
              console.log('stderr ', stderr);
          
          }); 
          
          
          
          

          ob das dann mit android oder unix linux funktioniert, konnte ich nciht testen, weil ich windows habe. 😟

          Weil das auf Windows auch gehen soll, habe ich dann eine .cmd datei (ähnlich .bat oder .exe) mit dem Inhalt geschrieben:

          @node "%~dp0server.js" %

          die Server.js ist meine node server-datei. Das habe ich so hier gelesen: http://2ality.com/2011/12/nodejs-shell-scripting.html

          wenn ich die d.cmd Datei starte funktioniert das auch. Jetzt ist dann halt die Frage wie starte ich die cmd Datei? Vielleicht ActiveXObject?

          Ich habe also folgendes meiner html-datei hinzugefügt:

          <script>
          wshShell = new ActiveXObject("WScript.Shell");
          
          var parameter = "d.cmd";  
           
          var oExec = wshShell.Run(parameter);
           </script>
          

          Und leider klappt das nicht. In der webconsole bekomme ich den Fehler: "ReferenceError: ActiveXObject is not defined[Weitere Informationen]" Tja, keine Ahnung. Die Frage ist dann auch wie lasse ich windows und android von der html Seite unterscheiden? Und solange node nicht gestartet ist, ist das halt qualvoll, weil die tolle require-funktion erstmal nicht zur verfügung steht.

          Soweit mein Stand mit batchdateien.

          1. Moin,

            diese Antwort bitte erst komplett lesen vor dem Ausprobieren oder Antworten!

            Also bash dateien. Ich benutze Windows.

            Die Bash ist eine bestimmte Shell. Wenn du die unter Windows nutzen willst, musst du sie dort installieren. Windows bringt standardmäßig cmd.exe sowie die Powershell mit.

            und in die new1.js folgendes geschrieben:

            #!/usr/bin/env node
            
            const exec = require('child_process').exec;
            
            exec('node server.js', (e, stdout, stderr)=> {
            
                if (e instanceof Error) {
            
                    console.error(e);
            
                    throw e;
            
                }
            
                console.log('stdout ', stdout);
            
                console.log('stderr ', stderr);
            
            }); 
            

            Ob das unter Unix (das versteht die Shebang-Zeile) mit Node.js überhaupt funktioniert? Die Shebang-Zeile setzt voraus, dass der Interpreter − das ist hier Node.js − diese Zeile ignoriert; sie hat nur für die Shell eine Bedeutung.

            wenn ich die d.cmd Datei starte funktioniert das auch. Jetzt ist dann halt die Frage wie starte ich die cmd Datei? Vielleicht ActiveXObject?

            Du willst also im Endeffekt den Node-Server aus einer HTML-Datei heraus starten? Das kannst du vergessen, weil das Sicherheitsmodell der Browser das nicht zulässt. Aber wenn ich dich richtig verstanden habe, willst du den Server doch eigentlich auch gar nicht aus dem Browser, sondern aus einer App heraus starten.

            Viele Grüße
            Robert

            1. Also bash dateien. Ich benutze Windows.
              

              Die Bash ist eine bestimmte Shell. Wenn du die unter Windows nutzen willst, musst du sie dort installieren. Windows bringt standardmäßig cmd.exe sowie die Powershell mit.

              Es tut mir leid, ich benutze viele Begriffe nicht richtig bzw. ich vertue mich in der Schreibweise. Ich meine Batch-Datei (Stapelverarbeitungsdatei). Ich meinte nicht die Bash-Shell (Terminal, Console). - Du bist halt ein Experte und Du kennst halt alle Begriffe und unterschiede ganz genau. (Ich arbeite die ganze ZEit schon mit cmd.exe)

              Ob das unter Unix (das versteht die Shebang-Zeile) mit Node.js überhaupt funktioniert? Die Shebang-Zeile setzt voraus, dass der Interpreter − das ist hier Node.js − diese Zeile ignoriert; sie hat nur für die Shell eine Bedeutung.

              Genau, das ist meine Batch-Datei. Die Shebang-Zeile soll node starten (geht nur bei unix-Systemen), dann steht mir die Funktion require zur verfügung und das Rätzel ist gelöst. Sobald node gestartet ist, weiß ich wie es weiter geht. Dann kann ich soviele Server Starten wie ich mag. :-D

              Du willst also im Endeffekt den Node-Server aus einer HTML-Datei heraus starten? Das kannst du vergessen, weil das Sicherheitsmodell der Browser das nicht zulässt. Aber wenn ich dich richtig verstanden habe, willst du den Server doch eigentlich auch gar nicht aus dem Browser, sondern aus einer App heraus starten.

              Jepp, es wird wohl nie über den browser gehen, nur über eine batchdatei bzw. der anwender startet node über die console. ActiveXObject könnte eine chance sein, aber das wird jeder vernünftige User wohl nciht erlauben in seinem Browser. - Also die "localvote App" kann das wohl auch nur aus der Android App heraus.

              PS: Ich verstehe das der Browser es nicht erlaubt Fremdprogramme zu starten, aber bei node.js hätte er ruhig eine Ausnahme machen können. Für mich :-) Wahrscheinlich will man aber auch hier verhindern das schadhafte Anwendungen im nodecode versteckt werden und damit lokal zur Anwendung kommen können ohne das der User das explizit absegnet. Andererseits ist der unterschied doppelt auf eine exe oder bat datei zu drücken auch nciht sehr groß im vergleich eine lokale webseite mit einem klick aufzurufen.

              1. Moin,

                Du willst also im Endeffekt den Node-Server aus einer HTML-Datei heraus starten? Das kannst du vergessen, weil das Sicherheitsmodell der Browser das nicht zulässt. Aber wenn ich dich richtig verstanden habe, willst du den Server doch eigentlich auch gar nicht aus dem Browser, sondern aus einer App heraus starten.

                Jepp, es wird wohl nie über den browser gehen, nur über eine batchdatei bzw. der anwender startet node über die console.

                … oder eine App startet den Server direkt und ohne Batch-Datei.

                ActiveXObject könnte eine chance sein, aber das wird jeder vernünftige User wohl nciht erlauben in seinem Browser. - Also die "localvote App" kann das wohl auch nur aus der Android App heraus.

                Vergiss ActiveX; das gab es nur im Internet Explorer unter Windows. Und du willst doch eh den Server aus deiner App heraus starten.

                PS: Ich verstehe das der Browser es nicht erlaubt Fremdprogramme zu starten, aber bei node.js hätte er ruhig eine Ausnahme machen können. Für mich :-)

                Und woher will der Browser auf einem fremden Endgerät wissen, dass ausgerechnet dein Code vertrauenswürdig ist? Aber das ist ja das Schöne an der IT: Es gibt für jeden Anwendungsfall die richtige Programmiersprache und -umgebung.

                Andererseits ist der unterschied doppelt auf eine exe oder bat datei zu drücken auch nciht sehr groß im vergleich eine lokale webseite mit einem klick aufzurufen.

                Wenn der Nutzer ein Programm startet, ist er sich dessen bewusst. Wenn er eine HTML-Datei anzeigt, rechnet er nicht damit, dass externe Programme ausgeführt werden könnten.

                Viele Grüße
                Robert

                1. … oder eine App startet den Server direkt und ohne Batch-Datei.

                  Das wäre super.

                  Und du willst doch eh den Server aus deiner App heraus starten.

                  jepp, genau.

                  Alles gut. - Danke Dir. Mir hilft das mich darüber mit jemanden unterhalten zu können, der sich damit auskennt.