Érdekes

BR a kristálytani számítástechnikai oktató

Bevezetés

A weboldalak ténylegesen látod a kliens oldalon a kliens-szerver kapcsolat az interneten keresztül. Ha a böngésző (az ügyfél) akar látni egy weboldalt, például, hogy egy kérést küld a fogadó megadja az URL (Uniform Resource Locator) a megadott protokoll (HTTP ebben az esetben, Hyper Text Transfer Protocol). Példa egy URL: http://www.ruppweb.org/default.htm (protokoll: //site.domain/document). A webhely neve nem más, mint egy nevet rendelt IP-cím a gép (például 128.115.150.112) futtató (web) kiszolgálóról.

(Megjegyzés: ebben az összefüggésben a szerver program fut a webes szolgáltatás a gépen, nem maga a számítógép – a számítógép a host).

Ha a szerver ilyen kérést kap, akkor jelez, és visszaküld egy oldalt, vagy mi a kérés volt. A nyelv, amelyen a szerver és kliens kommunikálni HTML (Hyper Text Markup Language). Beyond statikus kérelmek weboldalakat, az ember szeretné, hogy a szerver, hogy végre egy bizonyos feladat (például keresni adatbázis dekódolására szóköz csoport). Ott kell lennie egy mechanizmust a szerver információt kapni, hogy mit és átadni le, hogy a kezelő alkalmazás a kérelmet. Ez az interfész a CGI (Common Gateway Interface). A szerver alapvetően meghatározza a rendszer bizonyos környezeti változókat, amelyek a hívott program tudja olvasni és feldolgozni. A kimeneti vezetjük vissza a szerver továbbítja azt az interneten keresztül, hogy a kérelmező böngésző, amely megjeleníti az eredményt. Érdemes megnézni a Microsoft Internet Fejlesztési CD, vagy a másik referenciák több információt a témával kapcsolatban.

Példa

Ebben weboldal szoktam következő szkript a beviteli mezőbe, és meghatározza a meghozandó intézkedéseket:

<form action="/cgi-bin/sexie32.exe" method="GET">
  <p>Enter a spacegroup or spacegroup number 
  <input type="text" size="11" name="spcgrp"> 
  and hit enter</p>
</form>

Ezt a minimális kód létrehoz a fenti beviteli mezőbe, hozzárendeli a bemenet a változó nevű “spcgrp” és végrehajtja a programot sexie32, ami elvégzi a munkát. Hogyan kapom meg a teret csoport változó a programba? Megadásával GET mint módszer, a szerver hozzáadja a változó neve és annak tartalmát, miután egy kérdőjel a program nevét, és tárolja ezt sztringet egy környezeti változó QUERY_STRING. Minden a program nem olvassa ezt a környezeti változót string dekódolja, és miután a számítás, írja az eredményt, mint egy HTML-fájlt a szabványos kimenetre (konzol), amely a szerver átirányítja a kérelmezőnek. A legtöbb programozási nyelv a könyvtárak és az egyik nem kell foglalkozni a részleteket olvasni a rendszer környezetben.

FORTRAN

Ahogy a tudósok, mi lehet hasznos program Fortan hogy jó munkát végez, és kívánatos lenne, hogy elérhetővé az interneten. A nyilvánvaló előnye, hogy nem kell foglalkozni a platform és a végrehajtással kapcsolatos kérdések – nincs ellenőrizetlen elterjedése verzió, nincs forráskód káosz, stb – az alkalmazás fut a számítógéphez, és a böngészők gondoskodunk a platform konkrét megvalósítására. Hirtelen a régi F66 kód egy grafikus ablak felület!

Szubrutin WEBSPC beolvassa a környezeti változók, és visszaadja a spacegroup húr a fő rutin:

       subroutine webspc (spcgrp,title,igr,ierr)                         WEBS0001
c ----------------------------------------------------------------------WEBS0002
c     returns space group passed from web server through GET method     WEBS0003
c ----------------------------------------------------------------------WEBS0004
      USE MSFLIB                                                        WEBS0005
      integer*4 lstr                                                    WEBS0006
      integer igr(36)                                                   WEBS0007
      character today*24,spcgrp*10,title*60,usradd*15,fname*60,qstr*80  WEBS0008
      character usrnam*80,browsr*80                                     WEBS0009
                                                                        WEBS0010
c --- Set spacegroup blank                                              WEBS0011
      spcgrp='          '                                               WEBS0012
      ierr=0                                                            WEBS0013

Itt van, hogyan kell olvasni a környezeti változók, amelyeket meghatározott szerver által végrehajtott művelet szerint utasításokat a HTML kódrészlet felett. Talál egy listát más változók vannak beállítva a legtöbb könyvet web programozás (némelyikük olvassa webspc is). A kulcs QUERY_STRING amely tartalmazza a változó része az URL által épített cselekvési fent felsorolt:

http://ruppweb.dyndns.org/cgi-bin/sexie32.exe?spcgrp=I+4%2Fm+m+m

QUERY_STRING tartalmazza: spcgrp = I + 4% 2FM + m + m (Megjegyzés: ha beírja az URL vagy klikkelj rá, a CGI ténylegesen végrehajtásra). Vegyük észre, hogy a CGI interfész helyettesíti üres helyeket + jelek és speciális karakterek azok hexadecimális kódot megelőzi egy% jelet (például a perjel% 2F). A tényleges bemeneti karakterlánc a dobozban volt: “I 4 / m m m” ebben az esetben.

                                                                        WEBS0014
c --- get the client name and the query_string from environment         WEBS0015
      ladd = GETENVQQ('REMOTE_ADDR', usradd)                            WEBS0016
      lnam = GETENVQQ('REMOTE_USR', usrnam)                             WEBS0017
      lbrs = GETENVQQ('HTTP_USER_AGENT', browsr)                        WEBS0018
      lstr = GETENVQQ('QUERY_STRING', qstr)                             WEBS0019
                                                                        WEBS0020
c --- read space group - if an integer decode by number                 WEBS0021
      read(qstr,'(7x,i3)',err=0001) ispa                                WEBS0022
c --- if we get here, it was read successfully as a number              WEBS0023

Figyeljük meg, hogy azt használja a hiba címke olvasása közben a szimbólum, mint egy egész megkülönböztetni, hogy a tér csoport szimbólum vagy szóköz csoport számot adták.

      call spsymc (spcgrp,ispa)                                         WEBS0024
c --- ispa returns the symbol now proceed with checks                   WEBS0025
      goto 2002                                                         WEBS0026
                                                                        WEBS0027
c --- parse the input string if not a number                            WEBS0028
0001  continue                                                          WEBS0029
      ilen=lstr-7                                                       WEBS0030
      j=0                                                               WEBS0031
c --- begin loop over query_string                                      WEBS0032

Figyeljük meg, hogy a CGI felületet helyettesítő üres helyeket + jelek és speciális karaktereket hexadecimális kód előzi% jelet (például a / a% 2F), ezért meg kell elemezni, hogy a húr:

      i=8                                                               WEBS0033
1000  continue                                                          WEBS0034
c ---    replace + with blank                                           WEBS0035
         if (qstr(i:i).eq.'+') then                                     WEBS0036
            j=j+1                                                       WEBS0037
            spcgrp(j:j)=' '                                             WEBS0038
            i=i+1                                                       WEBS0039
c ---    replace special character hex code with character              WEBS0040
         else if (qstr(i:i).eq.'%') then                                WEBS0041
c ---       %2F is slash                                                WEBS0042
            if (qstr(i+1:i+2).eq.'2F') then                             WEBS0043
               j=j+1                                                    WEBS0044
               spcgrp(j:j)='/'                                          WEBS0045
               i=i+3                                                    WEBS0046
            end if                                                      WEBS0047
         else                                                           WEBS0048
            j=j+1                                                       WEBS0049
            spcgrp(j:j)=qstr(i:i)                                       WEBS0050
            i=i+1                                                       WEBS0051
         end if                                                         WEBS0052
c --- repeat until finished with string                                 WEBS0053
      if (i.lt.(ilen+8)) goto 1000                                      WEBS0054
                                                                        WEBS0055
c --- now check if a valid space group symbol                           WEBS0056
 2002 call upstrg(spcgrp,10)                                            WEBS0057
      read(spcgrp,'(10a1)') (igr(i), i=1,10)                            WEBS0058
      ispa=0                                                            WEBS0059
      call spsymc (spcgrp,ispa)                                         WEBS0060
                                                                        WEBS0061
c --- get a date string, format is :Wed Nov 20 15:33:29 1996            WEBS0062
      call fdate (today)                                                WEBS0063
      title='Webjob on '//today(1:10)//today(20:24)//' at'//            WEBS0064
     & today(11:19) //' from '//usradd                                  WEBS0065

A program azt is naplózza a felhasználók számára.

c --- log the job                                                       WEBS0066
      fname='C:\inetsrv\wwwroot\webjobs.html'                           WEBS0067
      open (66,file=fname,access='append',position='append')            WEBS0068
c --- overwrite old </body> tag                                         WEBS0069
      backspace (66)                                                    WEBS0070
      write(66,'(a,a,a)')' <p>Date   : '//today//'<br>'                 WEBS0071
      write(66,'(a,a,a)')' Client : '//usradd(1:ladd)//'<br>'           WEBS0072
      write(66,'(a,a,a)')' Browser : '//browsr(1:lbrs)//'<br>'          WEBS0073
      write(66,'(a,a,a)')' Spacegr: '//spcgrp//'<br>'                   WEBS0074
      if (ispa.lt.0) then                                               WEBS0075
         write(66,'(a)')' Status : failed!</p>'                         WEBS0076
      else                                                              WEBS0077
         write(66,'(a)')' Status : ok</p>'                              WEBS0078
      end if                                                            WEBS0079
      write(66,'(a)')    ' <hr>'                                        WEBS0080
      write(66,'(a)')    ' </BODY>'                                     WEBS0081
      close(66)                                                         WEBS0082
c --- if something went wrong, return message and termination signal    WEBS0083
      if (ispa.lt.0) then                                               WEBS0084
         call webtxt (1,spcgrp)                                         WEBS0085
         ierr=1                                                         WEBS0086
         close(5)                                                       WEBS0087
         return                                                         WEBS0088
      else                                                              WEBS0089
         close(5)                                                       WEBS0090
         return                                                         WEBS0091
      end if                                                            WEBS0092
      return                                                            WEBS0093
      end                                                               WEBS0094

A változó spcgrp adja vissza a fő rutin, amely dekódolja a tér-csoport. A kimenetet egy fájlba, és minden, ami szükséges egy kis rutin, hogy megírjam ezt a nyomtatáshoz HTML fájlt a szabványos kimenetre (konzol).

      subroutine htmake                                                 HTMA0001
                                                                        HTMA0002
      character*80 line                                                 HTMA0003
                                                                        HTMA0004
      open(6,file='sexie.out')                                          HTMA0005
      write(*,*)'Content-type: text/html'                               HTMA0006
      write(*,*)                                                        HTMA0007
      write(*,*)'<BODY bgcolor="#FFFDE6" TEXT="#0000FF">'               HTMA0008
      write(*,*)'<TITLE>Space group decoding</TITLE>'                   HTMA0009
      write(*,*)'<pre>'                                                 HTMA0010
      do i=1,100000                                                     HTMA0011
         read(6,'(1x,a)',end=9999) line                                 HTMA0012
         write(*,'(1x,a)') line                                         HTMA0013
      end do                                                            HTMA0014
9999  close(6)                                                          HTMA0015
      open(6,file='xyz.txt')                                            HTMA0016
      write(*,'(//a//)')                                                HTMA0017
     &  ' Alternate listing of symmetry operators follows'              HTMA0018
      do i=1,100000                                                     HTMA0019
         read(6,'(1x,a)',end=9990) line                                 HTMA0020
         write(*,'(1x,a)') line                                         HTMA0021
      end do                                                            HTMA0022
9990  close(6)                                                          HTMA0023
      write(*,*) '</pre>'						HTMA0024
      write(*,*) '</BODY>'                                              HTMA0025
      return                                                            HTMA0026
      end                                                               HTMA0027

Tehát, hogy ennyi van az alapvető CGI script. Csak megy előre, írjon egy kicsit kódrészlet magát, és játszani egy kicsit. Régebben a Microsoft Frontpage [2], hogy hozzon létre az oldalamon, és a formák, és a Microsoft FORTRAN szakmai kiadás az F90 programozás. A FORTRAN fordító használhat egy másik módja annak, hogy a környezeti változók, de meg kell tenni, hogy megtalálja ezt a dokumentációt. Természetesen ez nem egy bátorítás írni CGI scriptek a Fortran. A futtatható terjedelmes és tele a fejük fölött, és számos feladat, C, Pearl, J ++ stb gyorsabbak. De ha van egy szilárd béke kódot, hé, miért nem teszi használhatóvá az interneten!
Eredetileg a http://ruppweb.org/Xray/comp/cgi_prog.htm. Menj a honlapon http://www.forallworld.com