Mehr

Wie erstelle ich eine Schleife für die Auswahl nach Attribut?

Wie erstelle ich eine Schleife für die Auswahl nach Attribut?


Ich versuche, ein Beispiel aus einer Geodatabase-Datei zu ziehen. Ich habe 100800 Samples und muss 28 Datensätze auswählen, im Grunde alle 3600, ich fange mit FID=0 an und gehe von dort aus weiter. Leider habe ich es nicht geschafft, es zum Laufen zu bringen. das habe ich bisher gemacht. Wer kann mir einen Tipp geben, das wird eine große Hilfe sein.

import arcpy, sys, os Input=sys.argv[1] field=sys.argv[2] counts=sys.argv[3] output=sys.argv[4] def deleteMe(fc): if arcpy.Exists(fc ): arcpy.Delete_management(fc) return fc cursor =arcpy.da.SearchCursor(Input,field) für Zeile im Cursor: a=row[0] while row: x=a+3600 arcpy.MakeFeatureLayer_management(Input, deleteMe(" lyr")) arcpy.SelectLayerByAttribute_management ("lyr", "NEW_SELECTION",a) #arcpy.SelectLayerByAttribute_management ("lyr", "ADD_TO_SELECTION",x) arcpy.CopyFeatures_management ("lyr", deleteMe(output))

Wie wäre es, einfach eine Liste der gewünschten OBJECTIDs zu erstellen und daraus eine Abfrage zu machen?

## mit Liste aller Objekt-IDs beginnen all_oids = [row[0] für Zeile in arcpy.da.SearchCursor(Input,"OBJECTID")] ## Liste aller 3600 Objekt-IDs erstellen oids = [] für Index, oid in enumerate( range(len(all_oids))): if index % 3600 == 0: oids.append(oid) ## make sql query qry = '"OBJECTID" IN ({0})'.format(".join(oids) ) ## Umgang mit den Datensätzen arcpy.MakeFeatureLayer_management(Input, deleteMe("lyr")) arcpy.SelectLayerByAttribute_management ("lyr", "NEW_SELECTION", qry) arcpy.CopyFeatures_management ("lyr", deleteMe(output))

Aufzählen ist eine super nützliche Funktion. Es iteriert eine Liste und gibt auch den Index jedes Elements zurück. Sie verwenden es hier, um die Liste der OBJECTIDs zu durchlaufen, und wenn der Index einen Faktor von 3600 hat, wird das oid an eine Liste angehängt. Verwenden Sie dann diese Liste, um eine Abfrage zu erstellen, die Sie auf den Feature-Layer anwenden können.


Wenn kein Ziel angegeben ist, wird der Link im aktuellen Kontext geöffnet, es sei denn, der Benutzer oder Browser gibt etwas anderes an.

Das Zielattribut gibt an, wo das verlinkte Dokument geöffnet wird, wenn auf den Link geklickt wird. Der Standardwert ist das aktuelle Fenster. Bei target="_blank" wird das verlinkte Dokument in einem neuen Tab oder (bei älteren Browsern) einem neuen Fenster geöffnet.

Warum in einem neuen Browser öffnen?

Der häufigste Grund für die Verwendung von `target=”_blank” ist, dass Offsite-Links in einem separaten Tab geöffnet werden. Auf diese Weise kann ein Benutzer auf eine Referenz klicken und später darauf zurückkommen, ohne die aktuelle Seite zu verlassen. Es hält Besucher länger auf Ihrer Website und verbessert die meisten Ihrer Metriken: Absprungrate, Konversion, besuchte Seiten.

Alle externen Links in einem neuen Tab mit JavaScript öffnen

Sie müssen target="_blank" nicht jedem Link auf Ihrer Website manuell hinzufügen. Wenn Sie viel verlinken (was Sie tun sollten), ist es einfach, etwas JavaScript-Code zu Ihrer Site hinzuzufügen und alle externen Links automatisch in _leere Links umzuwandeln.

(Sie können auf jeder Seite dieser Website eine leicht modifizierte Form dieses Codes in Aktion sehen.) Dieser Trick erfordert jQuery, aber es besteht eine gute Chance, dass Sie ihn bereits verwenden. Es wird in den gängigsten Frameworks und Content-Management-Systemen verwendet, darunter WordPress, Drupal und Twitter Bootstrap. Wenn Sie dies ohne jQuery tun müssen, ist dies auch möglich. Hier ist eine “einfache JavaScript-Version”:

Dies macht es nicht nur einfacher, sondern bereinigt auch Ihr Markup erheblich.

Gründe, `target=”_blank” . nicht zu verwenden

Einige Leute argumentieren, dass Benutzer es nicht vorziehen, Links in einem neuen Browserkontext zu öffnen. Sie denken, dass dies Popup-Anzeigen und anderem nervigen Verhalten ähnelt. Mit dem Aufkommen des Tabbed Browsing ist dieses Argument weitgehend verschwunden. Die meisten Benutzer ziehen es vor, Links in einer neuen Registerkarte zu öffnen, da sie es ihnen ermöglichen, referenzierte Links zum späteren Lesen in die Warteschlange zu stellen, ohne ihren aktuellen Browserkontext zu verlieren.


2 Antworten 2

Willkommen beim Blender-Stack-Austausch!

Sie stellen hier fest, dass Sie mit zwei separaten Objekten arbeiten. Blender kann keine neue Geometrie erstellen, die mit beiden Objekten verbunden ist und die beiden trotzdem getrennt sind.

Um dies ein wenig besser zu verstehen, lassen Sie uns durchgehen, was Sie Blender aufgetragen haben und was Blender tun kann.

In 2.80 wurde eine neue "Multi-Edit"-Funktion hinzugefügt, mit der Sie zwei Objekte im Objektmodus auswählen und gleichzeitig die darunter liegenden Netze bearbeiten können. Der Schlüssel hier ist, dass die Objekte getrennt sind. Sobald Sie den Bearbeitungsmodus verlassen (damit beide gleichzeitig bearbeitet werden), müssen sie wieder getrennt werden und können daher in keiner Weise miteinander verbunden werden.

Wenn Sie Blender jetzt mit dem Bridge Edge Loops-Werkzeug verwenden, müssen Sie einige neue Flächen zwischen zwei Edge-Loops erstellen. Blender macht das in fast allen Fällen sehr gerne. Wenn wir jedoch über das nachdenken, was ich zuvor erwähnt habe, werden wir sehen, woher das Problem kommt. Wenn Sie Blender bitten, die Kantenschleifen zu verbinden, verbindet es jedes neue Gesicht mit beiden Schleifen. Aber gleichzeitig sagst du Blender, dass es in der Lage sein muss, diese neuen Gesichter wieder in 2 separate Objekte zu trennen, wenn du den Bearbeitungsmodus verlässt. Blender läuft hier steckengeblieben, weshalb Sie den Fehler bekommen (der definitiv etwas klarer sein könnte), weil es keine Möglichkeit gibt, diese Gesichter wieder in zwei Objekte zu trennen. Entweder gehört jedes Gesicht ganz zu einem Objekt oder ganz zu dem anderen.

Um all dies zu beheben, müssen Sie nur Ihre beiden Zylinder zu einem Objekt machen. Blender behält sie weiterhin als zwei Zylinder, behandelt sie jedoch als eine Einheit. Verwenden Sie dazu Strg + J, um die Objekte im Objektmodus zu verbinden. Jetzt haben Sie ein einziges Objekt, mit dem Sie arbeiten können, und Blender überbrückt glücklich die beiden Schleifen.


5 Antworten 5

Angenommen, eine Kontaktliste enthält ein Nachschlagefeld namens Provinz

Sobald eine Nachschlagespalte zur Liste hinzugefügt wird, wird ihre ID automatisch über die ListItem-Ressource zugänglich. Zum Beispiel, wenn das Feld namens der Liste hinzugefügt wird, kann sein Wert gesetzt oder über abgerufen werden ID-Eigenschaft des Listenelements.

Die folgende Abfrage zeigt, wie Sie Listenelemente filtern nach Nachschlagefeld-ID (Provinz-ID in unserem Fall):

wobei <ProvinceId> eine Provinz-ID ist

Um zu filtern nach Lookup-Wert, sollte die Abfrage $expand-Abfrageoption enthalten, um projizierte Felder abzurufen (wie Provinztitel ). Das folgende Beispiel zeigt, wie Sie nach filtern Nachschlagefeldwert (in unserem Fall nach Provinztitel):


Explizite Schleifen sind in Mathematica oft kontraproduktiv, da sie nicht nur mehr Tastenanschläge benötigen, sondern auch mehr Ausführungszeit. Sie sind meiner Meinung nach auch anfälliger für Fehler.

Bessere Möglichkeiten sind die Verwendung von Do, Scan oder Map.

Do und Scan sind (normalerweise) für Operationen geeignet, die keine Ergebnisliste ansammeln, während Map und Table (eine Variante von Do) (normalerweise) für Operationen verwendet werden, die dies tun. Die dritte Methode verwendet Map (Kurzform: /@ ) und sammelt eine nutzlose Ergebnisliste, aus diesem Grund ist sie wahrscheinlich weniger speichereffizient als die ersten beiden.

Durchschnittliches Timing , PrimeQ anstelle von Print für 10^6 Iterationen verwenden:


Einführung in das Systemdenken

System. Wir hören und verwenden das Wort die ganze Zeit. “Es macht keinen Sinn, dem System zu widerstehen,” könnten wir sagen. Oder “Dieser Job gerät außer Kontrolle, ich muss ein System aufbauen.” Ob Sie sich dessen bewusst sind oder nicht, Sie sind Mitglied vieler Systeme – eine Familie, eine Gemeinschaft, eine Kirche, eine Firma. Sie selbst sind ein komplexes biologisches System, das aus vielen kleineren Systemen besteht. Und jeden Tag interagieren Sie wahrscheinlich mit Dutzenden von Systemen wie Autos, Einzelhandelsgeschäften, der Organisation, für die Sie arbeiten usw. Aber was genau ist ein System? Wie würden wir einen erkennen, wenn wir einen sehen würden, und warum ist es wichtig, Systeme zu verstehen? Am wichtigsten ist, wie können wir unsere Organisationen effektiver verwalten, indem wir Systeme verstehen?

Dieser Band geht diesen Fragen nach und führt in die Prinzipien und Praxis eines leise wachsenden Feldes ein: Systemdenken. Mit Wurzeln in so unterschiedlichen Disziplinen wie Biologie, Kybernetik und Ökologie bietet Systemdenken eine Sichtweise auf die Funktionsweise der Welt, die sich deutlich von der traditionellen reduktionistischen, analytischen Sichtweise unterscheidet. Warum ist eine systemische Perspektive eine wichtige Ergänzung zum analytischen Denken? Ein Grund dafür ist, dass wir durch das Verständnis der Funktionsweise von Systemen – und wie wir eine Rolle in ihnen spielen –, in ihnen effektiver und proaktiver zu arbeiten. Je besser wir systemisches Verhalten verstehen, desto besser können wir dieses Verhalten antizipieren und mit Systemen arbeiten (anstatt von ihnen kontrolliert zu werden), um die Qualität unseres Lebens zu gestalten.

Es heißt, dass Systemdenken eine der Schlüsselkompetenzen des Managements des 21. Jahrhunderts ist. Da unsere Welt global immer enger verflochten wird und das Tempo des Wandels weiter zunimmt, müssen wir alle zunehmend „systembezogen“ werden. Dieser Band gibt Ihnen die Sprache und die Werkzeuge, die Sie benötigen, um mit der Anwendung von Systemdenken zu beginnen Prinzipien und Praktiken in Ihrer eigenen Organisation.


Vielleicht haben Sie sich gefragt, wie berechenbare Maschinen wie Computer Zufälligkeit erzeugen können. In Wirklichkeit sind die meisten in Computerprogrammen verwendeten Zufallszahlen pseudozufällig, was bedeutet, dass sie auf vorhersagbare Weise mithilfe einer mathematischen Formel generiert werden. Dies ist für viele Zwecke in Ordnung, aber es ist möglicherweise nicht so, wie Sie es erwarten, wenn Sie an Würfelwürfe und Lotterieziehungen gewöhnt sind.

RANDOM.ORG-Angebote Stimmt Zufallszahlen für jeden im Internet. Die Zufälligkeit kommt von atmosphärischem Rauschen, das für viele Zwecke besser ist als die Pseudo-Zufallszahlenalgorithmen, die typischerweise in Computerprogrammen verwendet werden. Menschen nutzen RANDOM.ORG zum Abhalten von Ziehungen, Lotterien und Gewinnspielen, zum Treiben von Online-Spielen, für wissenschaftliche Anwendungen sowie für Kunst und Musik. Der Dienst existiert seit 1998 und wurde von Dr. Mads Haahr von der School of Computer Science and Statistics am Trinity College in Dublin in Irland aufgebaut. Heute wird RANDOM.ORG von Randomness and Integrity Services Ltd. betrieben.

Spiele und Lotterien

Lottery Quick Pick ist mit über 280 Lotterien vielleicht die beliebteste im Internet
Keno Quick Pick für das beliebte Spiel, das in vielen Ländern gespielt wird
Coin Flipper gibt Ihnen Kopf oder Zahl in vielen Währungen
Dice Roller macht genau das was auf der Dose steht
Playing Card Shuffler zieht Karten aus mehreren gemischten Decks
Birdie Fund Generator erstellt Birdie Holes für Golfplätze

Zufällige Zeichnungen

Q3.1 in den FAQ erklärt, wie Sie KOSTENLOS einen Gewinner für Ihr Giveaway auswählen
Der Drittanbieter-Zeichnungsservice ist die beste Lösung, um zufällige Ziehungen online durchzuführen
Schritt-für-Schritt-Anleitung erklärt, wie Sie eine Ziehung mit dem Ziehungsdienst von Drittanbietern durchführen
Schritt-für-Schritt-Video zeigt, wie Sie eine Ziehung mit dem Ziehungsdienst von Drittanbietern durchführen
Der Preisrechner sagt genau, wie viel Ihre Zeichnung kosten wird
Die Zeichnungs-FAQ beantwortet häufig gestellte Fragen zum Halten von Zeichnungen
Public Records zeigt alle fertiggestellten Zeichnungen, die fünf Jahre zurückreichen
Das Ziehungsergebnis-Widget kann verwendet werden, um Ihre Gewinner auf Ihrer Webseite zu veröffentlichen
Mehrrunder Giveaway-Service für verifizierte Video-Werbegeschenke

Zahlen

Integer Generator erzeugt Zufallszahlen in konfigurierbaren Intervallen
Sequence Generator randomisiert eine ganzzahlige Sequenz Ihrer Wahl
Integer Set Generator erstellt Sätze von sich nicht wiederholenden ganzen Zahlen
Gaußscher Generator erzeugt Zufallszahlen, die einer Normalverteilung entsprechen
Decimal Fraction Generator erzeugt Zahlen im Bereich [0,1] mit konfigurierbaren Dezimalstellen
Raw Random Bytes sind für viele kryptografische Zwecke nützlich

Listen und Strings und Maps, oh mein!

List Randomizer erstellt eine zufällige Liste mit allem, was Sie haben (Namen, Telefonnummern usw.)
String Generator erzeugt zufällige alphanumerische Strings
Password Generator erstellt sichere Passwörter für Ihr WLAN oder dieses zusätzliche Gmail-Konto
Clock Time Generator wählt zufällige Tageszeiten
Der Kalender-Datumsgenerator wählt zufällige Tage aus fast dreieinhalb Jahrtausenden
Der geografische Koordinatengenerator wählt einen zufälligen Punkt auf der Oberfläche unseres Planeten
Bitmaps in Schwarzweiß
Der hexadezimale Farbcode-Generator wählt Farbcodes aus, zum Beispiel für die Verwendung als Webfarben
Vorgenerierte Dateien enthalten große Mengen herunterladbarer Zufallsbits
Pure White Audio Noise zum Komponieren oder einfach zum Testen Ihrer Audiogeräte
Jazz Scales zum Üben von Improvisation für Schüler der Jazzgitarre
Samuel Becketts zufällig generierte Kurzprosa
DNA-Proteinsequenz-Randomizer (bei Bio-Web)

Webtools und Widgets für Ihre Seiten

Der Integer Widget Wizard fügt ein mini-RANDOM.ORG auf Ihre Webseite oder Ihren Blog
Der Draw Widget Wizard wird das Ergebnis einer bezahlten Zeichnung auf Ihrer Webseite oder Ihrem Blog platzieren
HTTP-API, um echte Zufallszahlen in Ihren eigenen Code zu integrieren
Richtlinien beschreiben, wie Sie Ärger vermeiden können
Gesperrte Hosts listet auf, die sich nicht benommen haben und blockiert wurden

Erfahren Sie mehr über Zufälligkeit

Einführung in die Zufälligkeit erklärt, was echte Zufallszahlen sind und warum sie interessant sind
Die Geschichte erklärt, wie RANDOM.ORG begann und wo es heute steht
Viele Erfahrungsberichte von Leuten, die sehr kreative Verwendungen für Zufallszahlen gefunden haben
Danke an all die großzügigen Leute, die mitgeholfen haben
Zitate über Zufälligkeit in Wissenschaft, Kunst und im Leben allgemein
Media Coverage and Scientific Citations listet populäre gedruckte und wissenschaftliche Erwähnungen des Dienstes auf
Neuigkeiten über die neuesten Ergänzungen der Website

Statistiken

Echtzeitstatistiken zeigen die aktuelle Leistung des Generators generator
Statistische Analyse erklärt, wie Sie Zufallszahlen auf Zufälligkeit testen
Bit Tally zeigt an, wie viel Zufall seit 1998 erzeugt wurde (Hinweis: viel!)
Ihre Quote gibt an, wie viele zufällige Bits Sie für heute übrig haben

Kontakt und Hilfe

FAQ enthält Antworten auf häufig gestellte Fragen
Newsletter erscheint in zufälligen Abständen, aber melden Sie sich an
Kontaktdaten für den Fall, dass Sie mit uns in Kontakt treten möchten


8 Antworten 8

  • Löschen Sie Ihre Cookies (wenn eine Dauer zulässig ist, würde ich "alles" versuchen)
  • Cache leeren (wenn eine Dauer erlaubt ist, würde ich "alles" versuchen)
  • Stellen Sie sicher, dass Ihre Systemzeit korrekt ist.
  • Wenn nichts davon funktioniert, melden Sie sich mit deaktivierten Labs an: http://mail.google.com/mail/?labs=0

Ich habe festgestellt, dass es die in Labs verfügbare Smart Labels-Funktion war, die die unendliche Umleitungsschleife verursacht hat. Nachdem ich http://mail.google.com/mail/?labs=0 zum Abrufen meiner E-Mails verwendet hatte, habe ich diese Lab-Funktion deaktiviert. Danach konnte ich wieder normal auf E-Mails zugreifen. Schade, dass diese Antwort (insbesondere um die URL labs=0 zu verwenden) nirgendwo auf der Google Apps-Hilfeseite aufgeführt ist.

Ich habe die Endlosschleife beim Anmelden erlebt, nachdem ich https://mail.google.com zu meiner Liste vertrauenswürdiger Websites in IE11 hinzugefügt hatte (Tools &rarr Internetoptionen &rarr Sicherheit &rarr Vertrauenswürdige Sites &rarr Sites &rarr Hinzufügen)

Nachdem ich https://mail.google.com aus meiner Liste der vertrauenswürdigen Sites entfernt hatte, war das Problem behoben.

Scheint aber so zu sein, als ob das Löschen der Cookies helfen sollte das wäre jedes Mal ärgerlich, wenn Sie sich bei Ihrem Gmail-Konto anmelden möchten.

Ich würde daher vorschlagen, dass Sie entweder Ihre Frau bitten, die privates Surfen/Inkognito-Modus Ihres Browsers, oder dass Sie a erstellen separates Browserprofil für jeden von Ihnen (mit Chrome können Sie ChromeDeck verwenden: http://lifehacker.com/5549178/chromedeck-creates-and-manages-multiple-chrome-profiles).

Alternativ, wenn Sie gerne a Desktop-Client wie Thunderbird, das sollte auch Ihre Probleme lösen, wenn auch indirekt.

Ich musste Cookies von Drittanbietern aktivieren, damit meine funktioniert. Nachdem ich alles gereinigt und mich eingeloggt hatte, waren die Cookies, die ich hatte: google-analytics.com googleusercontent.com gstatic.com youtube.com

Damit registriert dich Google beim Einloggen.

Ich habe das gleiche Problem: Auf dem Desktop funktioniert das Wechseln zwischen Profilen gut, aber auf Mobilgeräten komme ich entweder immer auf die erste Kontoseite oder erhalte unendliche Weiterleitungen zwischen zwei Konten.

Der Workaround, der bei mir funktioniert: Aktivieren Sie in den Einstellungen die Option "PC-Version" (aber dann erhalten Sie natürlich die Desktop-Ansicht Ihres Posteingangs).

Ich habe es behoben, indem ich die Hola-Erweiterung in Chrom deaktiviert habe.

Ich habe das gleiche Problem auf meinem Android-Telefon, wenn ich mich bei 9 Gmail-Konten anmelde. Das letzte Gmail-Konto X, das ich hinzugefügt habe, leitet mich immer zum ersten Gmail-Konto Y weiter. Nachdem ich diesen Thread gelesen hatte, habe ich alle meine Cookies gelöscht und mich dann zuerst wieder bei X angemeldet. Es funktionierte! Ich habe dann die meisten anderen Gmail-Konten hinzugefügt und alles hat gut funktioniert, aber vielleicht liegt es daran, dass ich mich jetzt bei 7 Gmail-Konten anstelle von 9 anmelde. Ich hatte das anfängliche Problem nicht, als ich mich bei 8 Gmail-Konten anmeldete, also ist es vielleicht 8 die maximale Anzahl von Gmail-Konten, mit denen Sie sich auf Android-Telefonen anmelden können.


Wie erstelle ich eine Schleife für die Auswahl nach Attribut? - Geografisches Informationssystem

Wie bestimmen Sie Ihre Prioritäten?

Wie strukturieren Sie Ihre Organisation, um Ihre Geschäftsergebnisse zu unterstützen?

Wie unterstützt Ihre Unternehmenskultur Ihre Geschäftsergebnisse?

Wie gestalten Sie Ihren Workload, damit Sie seinen Zustand verstehen können?

Wie reduzieren Sie Fehler, erleichtern die Behebung und verbessern den Fluss in die Produktion?

Wie mindern Sie Bereitstellungsrisiken?

Woher wissen Sie, dass Sie bereit sind, eine Arbeitsbelastung zu unterstützen?

Wie verstehen Sie die Gesundheit Ihrer Arbeitsbelastung?

Wie verstehen Sie die Gesundheit Ihres Betriebs?

Wie verwalten Sie Workload- und Betriebsereignisse?

Wie entwickeln Sie den Betrieb?

Wie betreiben Sie Ihren Workload sicher?

Wie verwalten Sie Identitäten für Menschen und Maschinen?

Wie verwalten Sie Berechtigungen für Personen und Maschinen?

Wie erkennen und untersuchen Sie Sicherheitsereignisse?

Wie schützen Sie Ihre Netzwerkressourcen?

Wie schützen Sie Ihre Rechenressourcen?

Wie klassifizieren Sie Ihre Daten?

Wie schützen Sie Ihre Daten im Ruhezustand?

Wie schützen Sie Ihre Daten bei der Übertragung?

Wie antizipieren, reagieren und erholen Sie sich von Vorfällen?

Wie verwalten Sie Dienstkontingente und -einschränkungen?

Wie planen Sie Ihre Netzwerktopologie?

Wie gestalten Sie Ihre Workload-Service-Architektur?

Wie gestaltet man Interaktionen in einem verteilten System, um Ausfälle zu vermeiden?

Wie gestalten Sie Interaktionen in einem verteilten System, um Ausfälle zu mindern oder zu widerstehen?

Wie überwachen Sie Workload-Ressourcen?

Wie gestalten Sie Ihre Arbeitsbelastung, um sich an Veränderungen der Nachfrage anzupassen?

Wie setzen Sie Veränderungen um?

Wie verwenden Sie die Fehlerisolierung, um Ihre Workload zu schützen?

Wie gestalten Sie Ihren Workload, um Komponentenausfällen standzuhalten?

Wie testet man die Zuverlässigkeit?

Wie planen Sie Disaster Recovery (DR)?

Wie wählen Sie die leistungsstärkste Architektur aus?

Wie wählen Sie Ihre Computing-Lösung aus?

Wie wählen Sie Ihre Speicherlösung aus?

Wie wählen Sie Ihre Datenbanklösung aus?

Wie konfigurieren Sie Ihre Netzwerklösung?

Wie entwickeln Sie Ihren Workload, um die Vorteile neuer Releases zu nutzen?

Wie überwachen Sie Ihre Ressourcen, um sicherzustellen, dass sie funktionieren?

Wie verwenden Sie Kompromisse, um die Leistung zu verbessern?

Wie implementieren Sie Cloud-Finanzmanagement?

Cloud-Finanzmanagement

Wie überwachen Sie Nutzung und Kosten?

Wie werden Ressourcen stillgelegt?

Wie bewerten Sie die Kosten, wenn Sie Dienstleistungen auswählen?

Wie erreichen Sie Kostenziele, wenn Sie Ressourcentyp, -größe und -anzahl auswählen?


17.13 Formulareinreichung

In den folgenden Abschnitten wird erläutert, wie Benutzeragenten Formulardaten an Formularverarbeitungsagenten senden.

17.13.1 Formulareinsendemethode

Das method-Attribut des FORM-Elements gibt die HTTP-Methode an, die verwendet wird, um das Formular an den verarbeitenden Agenten zu senden. Dieses Attribut kann zwei Werte annehmen:

  • get: Bei der HTTP-Methode "get" wird der Formulardatensatz an die durch das action-Attribut angegebene URI angehängt (mit einem Fragezeichen ("?") als Trennzeichen) und diese neue URI wird an den Verarbeitungsagenten gesendet.
  • post: Bei der HTTP-Methode "post" wird der Formulardatensatz in den Formularkörper aufgenommen und an den verarbeitenden Agenten gesendet.

Die Methode "get" sollte verwendet werden, wenn die Form idempotent ist (d. h. keine Nebenwirkungen verursacht). Viele Datenbanksuchen haben keine sichtbaren Nebenwirkungen und eignen sich ideal für die "get"-Methode.

Wenn der mit der Verarbeitung eines Formulars verbundene Dienst Nebenwirkungen verursacht (z. B. wenn das Formular eine Datenbank oder ein Abonnement eines Dienstes ändert), sollte die Methode "post" verwendet werden.

Notiz. Die Methode "get" beschränkt Formulardatensatzwerte auf ASCII-Zeichen. Nur die Methode "post" (mit enctype ="multipart/form-data") wird angegeben, um den gesamten [ISO10646]-Zeichensatz abzudecken.

17.13.2 Erfolgreiche Kontrollen

A ist "gültig" für die Einreichung. Jedes erfolgreiche Steuerelement hat seinen Steuerelementnamen gepaart mit seinem aktuellen Wert als Teil des gesendeten Formulardatensatzes. Ein erfolgreiches Steuerelement muss innerhalb eines FORM-Elements definiert sein und einen Steuerelementnamen haben.

  • Deaktivierte Steuerelemente können nicht erfolgreich sein.
  • Enthält ein Formular mehr als einen Absenden-Button, ist nur der aktivierte Absenden-Button erfolgreich.
  • Alle "Ein"-Kontrollkästchen können erfolgreich sein.
  • Bei Optionsfeldern, die denselben Wert des Namensattributs aufweisen, kann nur das Optionsfeld "on" erfolgreich sein.
  • Bei Menüs wird der Name des Steuerelements von einem SELECT-Element bereitgestellt und Werte werden von OPTION-Elementen bereitgestellt. Nur ausgewählte Optionen können erfolgreich sein. Wenn keine Optionen ausgewählt sind, ist das Steuerelement nicht erfolgreich und beim Senden des Formulars werden weder der Name noch Werte an den Server gesendet.
  • Der aktuelle Wert einer Dateiauswahl ist eine Liste mit einem oder mehreren Dateinamen. Nach dem Absenden des Formulars wird die Inhalt jeder Datei werden mit den restlichen Formulardaten übermittelt. Der Dateiinhalt wird entsprechend dem Inhaltstyp des Formulars verpackt.
  • Der aktuelle Wert eines Objektsteuerelements wird durch die Implementierung des Objekts bestimmt.

Wenn ein Steuerelement beim Senden des Formulars keinen aktuellen Wert hat, müssen Benutzeragenten es nicht als erfolgreiches Steuerelement behandeln.

Darüber hinaus sollten Benutzeragenten die folgenden Kontrollen nicht als erfolgreich betrachten:

Ausgeblendete Steuerelemente und Steuerelemente, die aufgrund von Stylesheet-Einstellungen nicht gerendert werden, können dennoch erfolgreich sein. Beispielsweise:

wird immer noch ein Wert mit dem Namen "invisible-password" gepaart und mit dem Formular gesendet.

17.13.3 Formulardaten verarbeiten

Wenn der Benutzer ein Formular absendet (z. B. durch Aktivieren eines Absenden-Buttons), verarbeitet der Benutzeragent dieses wie folgt.

Schritt eins: Identifizieren Sie die erfolgreichen Kontrollen

Schritt 2: Erstellen eines Formulardatensatzes

Schritt 3: Codieren des Formulardatensatzes

Der Formulardatensatz wird dann gemäß dem Inhaltstyp codiert, der durch das Attribut enctype des FORM-Elements angegeben wird.

Schritt 4: Senden Sie den codierten Formulardatensatz

Schließlich werden die codierten Daten an den durch das Aktionsattribut bezeichneten Verarbeitungsagenten unter Verwendung des durch das Methodenattribut spezifizierten Protokolls gesendet.

Diese Spezifikation gibt nicht alle gültigen Übermittlungsmethoden oder Inhaltstypen an, die mit Formularen verwendet werden können. HTML 4-Benutzeragenten müssen jedoch in den folgenden Fällen die etablierten Konventionen unterstützen:

  • Wenn die Methode "get" ist und die Aktion ein HTTP-URI ist, nimmt der Benutzeragent den Wert von action an und hängt ein `?' daran und hängt dann den Formulardatensatz an, der mit dem Inhaltstyp "application/x-www-form-urlencoded" codiert ist. Der Benutzeragent durchläuft dann den Link zu diesem URI. In diesem Szenario sind Formulardaten auf ASCII-Codes beschränkt.
  • Wenn die Methode "post" ist und die Aktion ein HTTP-URI ist, führt der Benutzeragent eine HTTP-"post"-Transaktion unter Verwendung des Werts des Aktionsattributs und einer Nachricht durch, die gemäß dem durch das enctype-Attribut angegebenen Inhaltstyp erstellt wird.

Für jeden anderen Wert von action oder method ist das Verhalten nicht spezifiziert.

Benutzeragenten sollten die Antwort der HTTP-Transaktionen "get" und "post" rendern.

17.13.4 Formularinhaltstypen

Das Attribut enctype des Elements FORM gibt den Inhaltstyp an, der verwendet wird, um den Formulardatensatz für die Übermittlung an den Server zu codieren. Benutzeragenten müssen die unten aufgeführten Inhaltstypen unterstützen. Das Verhalten für andere Inhaltstypen ist nicht angegeben.

Application/x-www-form-urlencoded

Dies ist der Standardinhaltstyp. Mit diesem Inhaltstyp übermittelte Formulare müssen wie folgt codiert sein:

  1. Steuerelementnamen und -werte werden mit Escapezeichen versehen. Leerzeichen werden durch `+' ersetzt, und dann werden reservierte Zeichen mit Escapezeichen versehen, wie in [RFC1738], Abschnitt 2.2 beschrieben: Nicht-alphanumerische Zeichen werden durch `%HH' ersetzt, ein Prozentzeichen und zwei hexadezimale Ziffern, die den ASCII-Code des Charakter. Zeilenumbrüche werden als "CR LF"-Paare dargestellt (d. h. `%0D%0A' ).
  2. Die Namen/Werte der Steuerelemente werden in der Reihenfolge aufgelistet, in der sie im Dokument erscheinen. Der Name wird durch `=' vom Wert getrennt und Name/Wert-Paare werden durch `&' voneinander getrennt.

Mehrteilig/Formulardaten

Notiz. Bitte konsultieren Sie [RFC2388] für zusätzliche Informationen zu Datei-Uploads, einschließlich Problemen mit der Abwärtskompatibilität, der Beziehung zwischen "multipart/form-data" und anderen Inhaltstypen, Leistungsproblemen usw.

Informationen zu Sicherheitsproblemen bei Formularen finden Sie im Anhang.

Der Inhaltstyp "application/x-www-form-urlencoded" ist zum Senden großer Mengen binärer Daten oder von Text mit Nicht-ASCII-Zeichen ineffizient. Der Inhaltstyp "multipart/form-data" sollte zum Senden von Formularen verwendet werden, die Dateien, Nicht-ASCII-Daten und Binärdaten enthalten.

Der Inhalt "multipart/form-data" folgt den Regeln aller multipart MIME-Datenströme wie in [RFC2045] skizziert. Die Definition von "multipart/form-data" ist bei der [IANA] Registry verfügbar.

Eine "multipart/form-data"-Nachricht enthält eine Reihe von Teilen, die jeweils ein erfolgreiches Steuerelement darstellen. Die Teile werden in derselben Reihenfolge an den Verarbeitungsagenten gesendet, in der die entsprechenden Steuerelemente im Dokumentenstrom angezeigt werden. Teilegrenzen sollten in keiner der Daten vorkommen, wie dies geschieht, liegt außerhalb des Umfangs dieser Spezifikation.

Wie bei allen mehrteiligen MIME-Typen hat jeder Teil einen optionalen "Content-Type"-Header, der standardmäßig "text/plain" ist. Benutzeragenten sollten den "Content-Type"-Header zusammen mit einem "charset"-Parameter bereitstellen.

Jeder Teil soll enthalten:

  1. ein "Content-Disposition"-Header, dessen Wert "form-data" ist.
  2. ein Namensattribut, das den Steuerelementnamen des entsprechenden Steuerelements angibt. Steuernamen, die ursprünglich in Nicht-ASCII-Zeichensätzen codiert wurden, können mit der in [RFC2045] beschriebenen Methode codiert werden.

So würde beispielsweise für ein Control namens "mycontrol" der entsprechende Teil angegeben:

Wie bei allen MIME-Übertragungen wird "CR LF" (d. h. '%0D%0A') verwendet, um Datenzeilen zu trennen.

Jeder Teil kann codiert und der Header "Content-Transfer-Encoding" geliefert werden, wenn der Wert dieses Teils nicht der Standardcodierung (7BIT) entspricht (siehe [RFC2045], Abschnitt 6)

Wenn der Inhalt einer Datei mit einem Formular übermittelt wird, sollte die Dateieingabe durch den entsprechenden Inhaltstyp (z. B. "Anwendung/Oktett-Stream") identifiziert werden. Sollen mehrere Dateien als Ergebnis eines einzelnen Formulareintrags zurückgegeben werden, sollten diese als "multipart/mixed" eingebettet in "multipart/form-data" zurückgegeben werden.

Der Benutzeragent sollte versuchen, für jede übermittelte Datei einen Dateinamen anzugeben. Der Dateiname kann mit dem Parameter "filename" des Headers "Content-Disposition: form-data" oder bei mehreren Dateien in einem Header "Content-Disposition: file" des Unterteils angegeben werden. Wenn der Dateiname des Betriebssystems des Clients nicht in US-ASCII ist, kann der Dateiname mit der Methode von [RFC2045] angenähert oder codiert werden. Dies ist praktisch für die Fälle, in denen beispielsweise die hochgeladenen Dateien Verweise aufeinander enthalten können (z. B. eine TeX-Datei und ihre ".sty"-Hilfsstilbeschreibung).

Das folgende Beispiel veranschaulicht die Codierung "multipart/form-data". Angenommen, wir haben die folgende Form:

Wenn der Benutzer in die Texteingabe "Larry" eingibt und die Textdatei "file1.txt" auswählt, sendet der Benutzeragent möglicherweise folgende Daten zurück:

Wenn der Benutzer eine zweite (Bild-)Datei "file2.gif" ausgewählt hat, könnte der Benutzeragent die Teile wie folgt erstellen:


Schau das Video: While-Schleife Programmieren - Java Tutorial 8 Gehe auf u0026 werde #EinserSchüler