tine: Nur der Dillo kann's

Hallo allerseits,

kleines grosses Problem: Hab hier ein kleines Perl-Programm, was ich gern per Link von meiner Web-Site aus starten moechte. Das geht auch mit Browsern wie Dillo oder Lynx, die nur HTML verstehen. Komplexere Browser wie Mozilla,Konqueror (vom IE brauch ich gar nicht erst anfangen), bieten nur das cgi-file zum Download an. Laedt man es dann down, laesst sich more das Resultat wunderbar betrachten.

Wie muss ich das cgi-file veraendern, damit auch verbreitetere Browser als der Dillo mit dem Dings unter Umgehung der Downloaderei klar kommen?

Ein paar Tips wuerden den heutigen Tag um ein Vielfaches aufwerten : )
Gruesse, Tine

  1. Hi,

    Das geht auch mit Browsern wie Dillo oder Lynx, die nur HTML verstehen. Komplexere Browser wie Mozilla,Konqueror (vom IE brauch ich gar nicht erst anfangen), bieten nur das cgi-file zum Download an. Laedt man es dann down, laesst sich more das Resultat wunderbar betrachten.

    die Header des HTTP-Response sind defekt. Faszinierend, dass Browser wie lynx das Ergebnis akzeptieren; derartigen Unfug kennt man sonst nur vom IE.

    Wie muss ich das cgi-file veraendern,

    Finde erst mal heraus, was am Header falsch ist, dann ergibt sich diese Frage vermutlich von selbst.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Ok, also das Ding sieht folgendermassen aus:

      #!/usr/bin/env perl
      print "Content-Type: text/tab-separated-values/html\n\n";
      printf "cardinals \t\t squares \t\t odds\n\n";
      $a = 0;
      while ($a <= 128) {
       $d = $b;
       $b = $a**2;
       $c=$b-$d;
       printf "%d \t\t\t %d \t\t\t %d\n",$a,$b$c;
       ++$a;
      }

      Hab schon mal versucht, eine print '<!DOCTYPE usw >' (danke Thomas) einzufuegen, aber das hatte nicht gerade den erwuenschten Effekt. Irgendwas Anderes muss da fehlen. (Sorry, hab heute frueh gerade erst mal mit CGI angefangen)

      1. Hallo tine,

        #!/usr/bin/env perl

        das ist potentiell gefährlich: Du solltest besser den Pfad zum Perl-Interpreter direkt angeben.

        print "Content-Type: text/tab-separated-values/html\n\n";

        Diesen Content-Type gibt es gar nicht. Es gibt nur einen "text/tab-separated-values" [1] und einen "text/html" aber eben kein "text/tab-separated-values/html".

        Außerdem: Warum überhaupt html? Du benutzt doch gar keine html Auszeichnungen in deinem Script!
        Dein Script müsste funktionieren, wenn du den Content-Type in "text/tab-separated-values" änderst.

        Grüße,

        Peter

        [1] wusste bis eben gar nicht, daß es den Content-Type gibt ;-) (http://selfhtml.teamone.de/diverses/mimetypen.htm hat mich schlau gemacht).

        --
        exp(i * PI) + 1 = 0
        1. Hallo,

          Dein Script müsste funktionieren, wenn du den Content-Type in "text/tab-separated-values" änderst.

          Mit diesem Typ koennen wohl die meisten Browser auch nichts anfangen.
          Ich bin diesem Typ noch nie begegnet, und habe ihn auch noch
          nie in einem Accept-Head eines Browsers gesehen.

          Ich wuerde als text/plain ausliefern, wenn die Meinung ist,
          dass die Browser es direkt anzeigen sollen.

          Die Doctype-Angabe ist natuerlich nur bei HTML-Dateien notwendig
          und sinnvoll, da hast Du recht.

          mfg
          Thomas

          1. Perfekt, jetzt gehts : )

            Vielen Dank. Aber schade, dass sich das text/tab-separated-values als nutzlos rausgestellt hat. Ich fand das eine schoene, selbsterklaerende, elegante Sache. Aber dann halt plain old plain.

            Begeisterte Gruesse,
            Tine

            1. Hallo,

              Aber schade, dass sich das text/tab-separated-values als nutzlos rausgestellt hat. Ich fand das eine schoene, selbsterklaerende, elegante Sache. Aber dann halt plain old plain.

              Die Idee von Content-Types auf dem Web ist nach meinem Verstaendnis,
              dass die Browser wissen, was sie mit den Dateien anfangen sollen.

              Diejenigen Typen, die sie selbst "koennen", zeigen sie selbst an:
              text/plain, text/html, image/jpeg, image/gif, image/png u.s.w.

              Diejenigen Typen, von denen man ihnen beigebracht hat, wozu
              sie gut sind, uebergeben sie an das zustaendige Plug-In bzw.
              externe Programm:
              application/pdf, application/x-shockwave-flash u.s.w.

              Unbekannte Typen bieten die Browser zum Download an.

              ---

              Ist Dein Skript jetzt uebers Internet erreichbar?
              (URL please, natuerlich als Link </faq/#Q-19> ;-)

              Gerade, weil es in der Macht der Browser steht, wie breit
              ein "Tabulator" ist, ist das ganze ziemlich fehleranfaellig,
              was die Anzeige angeht.

              Je nach Art und Menge der Daten sowie nach Zielpublikum
              waere es vielleicht sinnvoller, das ganze doch noch als
              HTML-Tabelle zu loesen.

              Gruesse,

              Thomas

              P.S. Subject endlich geaendert. ;-)

              1. Ja, der ist erreichbar, mal sehen, ob ich das als link hinbekomme ; )

                http://www.informatik.uni-muenchen.de/~enzinger/Programme/square_and_odd

                Danke fuer die Erklaerung. Hoert sich sinnvoll und logisch an. Puh, aber ob ich jemals selbstverstaendlich mit CGI umgehen werde koennen... Fast einen ganzen Tag verbraucht fuer das bisschen Zahlen im Netz.

                Mal sehen, ob Du den Zusammenhang zwischen der zweiten und der dritten Tabelle siehst. Ich fands eine erstaunliche Entdeckung.

                Viele Gruesse nochmals, und natuerlich DANK,
                Tine

                1. Hallo,

                  http://www.informatik.uni-muenchen.de/~enzinger/Programme/square_and_odd

                  bzw. das eigentliche Skript:

                  http://www.cip.informatik.uni-muenchen.de/~enzinger/cgi-bin/square_odd.cgi

                  Sieht OK aus in Opera 7.10, Mozilla 1.2.1 und MS IE 5.0 (Win2000).
                  Die Spalten stehen schoen weit auseinander.

                  Puh, aber ob ich jemals selbstverstaendlich mit CGI umgehen werde koennen... Fast einen ganzen Tag verbraucht fuer das bisschen Zahlen im Netz.

                  Du darfst einen "Trost" waehlen:

                  • Es ist noch kein Meister vom Himmel gefallen
                  • Aller Anfang ist schwer
                  • Uebung macht den Meister
                    ;-)

                  Nur Mut - das wird schon kommen!

                  Mal sehen, ob Du den Zusammenhang zwischen der zweiten und der dritten Tabelle siehst. Ich fands eine erstaunliche Entdeckung.

                  Du meinst wohl Spalte.

                  Der Zusammenhang ist ja offensichlich (Differenz zum letzten Quadrat),
                  und abgesehen davon: soviel Perl verstehe ich dann schon noch...

                  Was mich mehr "erstaunt", ist, dass die dritte Spalte einfach
                  "linear hochzaehlt" (1, 3, 5, 7, ...)

                  Gruesse + gute Nacht,

                  Thomas

                  --
                  Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
                  Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
                  Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
                  1. Ich nehm dann mal: Es ist noch keinem Meister ein schwerer Anfang ohne Uebung auf den Kopf gefallen. : )

                    Habe nicht an Deinen Perl-Kenntnissen gezweifelt, aber wer ahnt denn schon, dass Du Dir das Prograemmchen so genau angeguckt hast.

                    Ja, das eigentlich Erstaunliche ist eben, dass wirklich jede ungerade Zahl zwei benachbarte Quadratzahlen voneinander trennt. Der Beweis ist aber recht einleuchtend und einfach (elegant, induktiv, einfach schoen).

                    Bin aber nur drauf gekommen, dieses "Programm" zu schreiben, weil in Simon Singhs "Fermats letzter Satz" einfach nur gesagt wurde, dass es sich eben so verhaelt mit den ungeraden und den Quadratzahlen. Jetzt muesste man nur noch mal den Beweis in Perl implementieren, aber die Nacht ist ja noch lang ; ).

                    Bis zur naechsten dummen frage,
                    Tine

                    1. Hallo tine,

                      Ja, das eigentlich Erstaunliche ist eben, dass wirklich jede ungerade Zahl zwei benachbarte Quadratzahlen voneinander trennt. Der Beweis ist aber recht einleuchtend und einfach (elegant, induktiv, einfach schoen).

                      (n+1)^2 - n^2 = 2n + 1

                      mit n Element der natürlichen Zahlen ist das die klassische Definition aller ungeraden ganzen und postiven Zahlen. Mehr Beweis braucht doch niemand ;-).

                      Grüße,

                      Peter

                      --
                      exp(i * PI) + 1 = 0
                      1. Hi Peter,

                        stimmt, das ist ja noch einfacher : )
                        Bin wohl heute schon zu wirr im Kopf.

                        Gruesse,
                        Tine

                    2. Hallo Tine,

                      Habe nicht an Deinen Perl-Kenntnissen gezweifelt,

                      Ich bezog mich da auf meine eigene Aussage
                      "bekennender Perl-Analphabet" in [pref:t=71195&m=409737] ;-)

                      Ja, das eigentlich Erstaunliche ist eben, dass wirklich jede ungerade Zahl zwei benachbarte Quadratzahlen voneinander trennt. Der Beweis ist aber recht einleuchtend und einfach (elegant, induktiv, einfach schoen).

                      Die Formel von Peter ist es in der Tat. ;-)

                      Bis zur naechsten dummen frage,

                      Es gibt keine dummen Fragen.
                      Nur dumme Antworten.
                      Oder faule Frager.

                      Freundliche Gruesse,

                      Thomas

        2. Hi Peter,

          Dann bringen meine Anfaengerprobleme ja wenigstens jemandem was : )

          Leider mag er trotzdem nicht. Macht gar keinen Unterschied (zumindest im Ergebnis), ob ich da text/tab-separated-values mit oder ohne /html hab.

          Ratlosigkeit macht sich breit.

          Gruesse
          Tine

          1. Hallo,

            Leider mag er trotzdem nicht. Macht gar keinen Unterschied (zumindest im Ergebnis), ob ich da text/tab-separated-values mit oder ohne /html hab.

            Wie ich schon schrieb: die Browser kennen dieses exotische
            Format nicht und fuehren es nicht in der Liste der
            Typen, die sie akzeptieren (*).

            Schick es als text/plain:

            print "Content-type: text/html\n\n";

            Gruesse,

            Thomas

            (*) Den HTTP-Accept-Head der Browser kann man z.B.
            hier ganz bequem anzeigen lassen:
            http://www.christian-gerner.de/computer/status406-lang.php

  2. Hallo,

    Wie muss ich das cgi-file veraendern, damit auch verbreitetere Browser als der Dillo mit dem Dings unter Umgehung der Downloaderei klar kommen?

    Du solltest vermutlich als allererstes
    einen HTTP-Head mit mindestens der Zeile
    "Content-type: text/html"
    ausgeben.
    Dann zwei Zeilenumbrueche.
    Dann der HTML-Inhalt:

    print "Content-type: text/html\n\n";
    print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";

    Gruesse,

    Thomas
      bekennender Perl-Analphabet