Wie man eine Fotobank für> 100.000 Gemälde schreibt und auf der Website platziert

Angenommen, Sie haben> 100'000 Bilder, die sortiert und bequem für die Massenanzeige ins Internet gestellt werden müssen. Es kann alles sein - eine Galerie aller von der Menschheit geschaffenen Kunstwerke (in meiner Aufgabe) oder ein historisches Fotoarchiv der Stadt Moskau oder Standbilder aus Filmen oder ein allgemeines Archiv mit Fotos aus einem Urlaub eines großen Reisebüros oder eine Website für Bildillustrationen und Fotos oder Archiv von Bildern für große Medien seit vielen Jahren - in denen es notwendig ist, Dinge in Ordnung zu bringen, die Navigation und den Zugriff für Mitarbeiter aus dem internen Netzwerk zu organisieren.



Ich werde Ihnen sagen, wie es ratsam ist, es zu programmieren.



Schlüsselwörter und ihre Vererbung



Der moderne Ansatz aller Fotobanken und Galerien besteht darin, Illustrationen mit einer Reihe von Tags (Schlüsselwörtern) zu versehen. Ich habe diesen Ansatz in zwei Richtungen entwickelt: (1) Tags können vererbt werden (der Benutzer suchte nach Beeren - er fand ein Bild mit dem Tag "Kirsche"), und (2) Tags können nicht auf der Ebene einzelner Abbildungen, sondern Verzeichnisse angehängt werden.



Der Nachteil dieses Tagging-Ansatzes besteht darin, dass Sie anhand von Schlüsselwörtern suchen und die Darstellung des Bildes ignorieren. Der von dem Mädchen getötete Drache und der Drache, der das Mädchen getötet hat, sind zwei verschiedene Handlungen, aber die gleiche für die Wortliste: Drache, Mädchen, Tod und Gewinner (wenn es eine Schlacht gab). Der schlüsselwortbasierte Ansatz ermöglicht nicht das Abrufen eines Beispiels für die Abfrage "Toter Drache", das nicht das Bild eines Drachen enthält, der einen getöteten Feind besiegt.



Die Haupt-Tags sind diejenigen, die für den Benutzer im alphabetischen Verzeichnis sichtbar sind. Zusätzliche Tags sind solche, die dem Benutzer nur zur Verfügung stehen, indem die Namen dieser Tags manuell in den Text der Suchzeichenfolge eingegeben werden. Ich betrachte die optimale Anzahl von Tags: main = 1/75, zusätzliche = 1/195 der Anzahl der Bilder.



Kennzeichnen Sie Pluralformen (Reiter, Berge usw.) von Tags in Dateinamen als <Tagname>! (d. h. Ausrufezeichen). Sie benötigen ein Wörterbuch, wie Tags aufgerufen werden können - Plural, weiblich / männlich, synonym Wörter, Rechtschreibfehler.



Bewahren Sie das Wörterbuch der Tags in 4 Dateien auf: Marks.csv - Haupt-Tags, Other.csv - zusätzliche Tags, Wrong.csv - falsche Schreibweisen, Synonyme, Plural-Tag-Namen, Artists.csv - Autoren. In den Dateien Marks.csv und Other.csv werden nach der Tag-ID und dem Hauptnamen in Russisch die übergeordneten Tags aufgelistet (d . H. Vererbung) .



Marks.csv



Arwen; ( );Person,Girl,Elf,LordOfTheRings
ThorinOakenshield; ;Person,Male,Beard,LordOfTheRings


Hier steht geschrieben, dass Arwen eine Person ist, ein Mädchen, eine Elfe, eine Figur in Der Herr der Ringe; Thorin Oakenshield - eine Person, ein Mann, trägt einen Bart, den Charakter von "Der Herr der Ringe". Wenn der Benutzer nach "Der Herr der Ringe" sucht, werden dementsprechend alle Bilder von Arwen und Thorin gefunden. Bei der Suche nach "Bart" - unter anderem wird es Thorin geben. Wenn Sie nach "Thorin" suchen, wird es auch gefunden, da diese abgekürzte Schreibweise in Wrong.csv steht.



Ordnerstruktur



Wenn wir 100.000 Bildern das Beispiel „Show Girls“ oder „Show the Sun“ überlagern, ist die Anzahl der Ergebnisse zu groß. Dies ist jedoch nicht der Fall, wenn die Bilder in Ordner aufgeteilt sind. Im Stammverzeichnis befindet sich beispielsweise ein Dragons-Ordner, darin ein gelber Ordner, darin ein Girls-Ordner (d. H. Bilder mit Mädchen) und darin (über alle Unterordner hinweg) 200 Bilder. In diesem Fall werden nicht diese 200 Bilder in den Suchergebnissen angezeigt, sondern der Ordner, der sie enthält. Es ist auch besser für den Benutzer.



Hier besteht jedoch das Problem eng verwandter Bindungen. Könige tragen fast immer Kronen in Bildern, aber nicht in allen Fällen. Nehmen wir an, es gibt einen Ordner namens Kings, der 3000 Bilder enthält, von denen 2500 in Kronen sind. Hier in Bezug auf die Krone - der einfache Ansatz, den Ordner anzuzeigen, funktioniert nicht.



Ich denke, die optimale Anzahl von Ordnern = 1/28 der Anzahl von Bildern



. Wenn sich die Datei bereits im Ordner Dragons / Yellow / Girls befindet, müssen Sie diese Tags nicht zum Dateinamen hinzufügen. Fügen Sie nur die Tag-IDs hinzu, die nicht dem Dateinamen folgen von seinem Lagerort.







Mehrsprachig, Symbole, Texte, virtuelle Unterordner



In jedem Ordner wird eine Datei _.jpg mit einer Größe von 200 (Breite) * 280 (Höhe) erstellt. Dies ist das Ordnersymbol beim Anzeigen (der Text wird darüber angezeigt), sowohl wenn sich der Benutzer im übergeordneten Ordner befindet als auch wenn der Benutzer die Suchergebnisse durchsucht (falls gefunden) dieser Ordner). Schlüsselwortsymbole haben dieselbe Auflösung.



Außerdem wird in vielen Ordnern eine Datei _.txt erstellt, die aus den folgenden Zeilen besteht:



Artefakt \ _. Txt (Fragment)



=Mielofon
=Mjolnir
=Palantir
 =ThanosGlove
=Glass-Potion
by-DavisonCarvalho=*
TheWitcher/Wolf-Head-Logo| 
DisneyPrincess/Moana/HeartOfTeFiti|  
SuperHeroes/Hellraiser/HellraiserBox| 
-m|Artefact


Hier sehen wir die Arten von Datensätzen:



  1. Flaschen = Glastrank - Aliase für Unterordner. In der obigen Abbildung sehen wir, dass das Pseudonym für den Japan-Ordner nicht aufgezeichnet wurde und beim Anzeigen des Ordners nicht ins Russische übersetzt wird. Zwei Tags - Glas und Trank (Glas und Trank) - werden in ein Wort übersetzt.
  2. by-DavisonCarvalho = * - kein Alias ​​erforderlich
  3. SuperHeroes / Hellraiser / HellraiserBox | Lemarshan's Box ist ein virtueller Unterordner. Hier wird auch ein Unterordner in einem anderen Verzeichnis unter dem angegebenen Namen angezeigt.
  4. -m | Artefakt - Der Ordner repräsentiert das Artefakt-Tag. Wenn diesem Tag Text beigefügt ist, wird er unter den Abbildungen geschrieben.


Größe auf der Festplatte



Jetzt belegen 111'000 Bilder 65 GB Speicherplatz. Und dies trotz der Tatsache, dass es in vielen Fällen notwendig ist, ein schwereres PNG-Format daraus zu machen:



  • ( ), paint-.
  • - , .
  • .webp, .png, (, , ).
  • .png, .jpg, .gif. .




index.php - ohne Parameter gestartet, zeigt es den Galerie-Stammordner, das Alphabet und die Suchzeichenfolge an. Durch Klicken auf einen Unterordner im Stammordner wird dieser aufgerufen. Durch Klicken auf einen Buchstaben des Alphabets gelangen Sie zu den Haupt-Tags, die mit diesem Buchstaben beginnen. Wenn Sie Text in die Suchzeichenfolge eingeben, wird dieser an das durch diesen Text gekennzeichnete Tag weitergeleitet.



i.php ist ein Werkzeug zum Anzeigen eines ausgewählten Bildes. Ermöglicht das Navigieren zu Tags aus der Liste, mit der dieses Bild übereinstimmt.

img - root Ordner der Webgalerie

m - Ordner mit generierten Thumbnails aller Bilder. Thumbnails haben eine Höhe von 200 und eine Breite im Verhältnis zum Bild. Die Struktur des Ordners m folgt der Struktur des Ordners img. Der Ordner m wird programmgesteuert erstellt, bevor jede Version der Galerie hochgeladen wird.

Tags - Enthält für jedes Schlüsselwort eine Datei mit dem Ergebnis der Suche in Verzeichnissen.

Markierungen - Dateitypen:



  1. Enthält für jedes Schlüsselwort die Miniaturbilddatei
  2. Enthält für die meisten Schlüsselwörter eine Datei mit ihrer Textbeschreibung oder eine thematische Geschichte, eine Anekdote
  3. Enthält für einige Schlüsselwörter eine oder mehrere thematische Geschichten mit HTML-Text
  4. Außerdem enthält dieser Ordner Dateien wie <Buchstabencode> .txt - alphabetisch sortierte Listen von Schlüsselwörtern für jeden Buchstaben des russischen Alphabets.


Das Verfahren zum Hochladen einer neuen Version der Galerie auf die Site



Ein speziell geschriebenes Programm (mit Delphi und der Graphics32-Bibliothek) führt Folgendes aus:



  1. — , ( .. ), ( Wrong.csv), _.txt, , .
  2. . , : .jpg .png ..
  3. . . — , .
  4. .


Anschließend werden sowohl der Galerieordner als auch diese Materialien auf den Server hochgeladen.



Die Webgalerie-Engine verwendet kein DBMS.



Hosting



Ich benutze Avahost-Hosting , 100 GB Festplattenspeicher kosten 500 Rubel pro Monat. Wie Sie sehen können, ist das Upgrade mit einer Sammlungsgröße von 65 GB, + Miniaturansichten usw. und einer Hosting-Größe von 100 GB niemals nahtlos. Es ist nicht genügend Speicherplatz vorhanden, um zuerst eine vollständig neue Version zu entladen und dann nahtlos zu dieser zu wechseln. Es gibt ein unvermeidliches Intervall von Ausfallzeiten der Site von mehreren Stunden. Ich mache jetzt Updates einmal im Monat.



Dateien werden in Form von Archiven an das Hosting gesendet. Das derzeit auf allen Hosting-Systemen verwendete cPanel-System kann nur Zip-Archive entpacken. Es wird empfohlen, Dateien mit einer Länge von bis zu 2,5 GB zu verwenden. Andernfalls wird nach dem Hochladen einer Datei in einen Ordner über die cPanel-Weboberfläche der Fortschrittsbalken für den Upload (die ursprüngliche Farbe ist blau) möglicherweise rot statt grün. Was der Unterschied ist, habe ich nicht verstanden (die Datei scheint auch in diesem Fall normal hochgeladen zu werden), aber in diesem Fall lade ich sie erneut hoch. Bei einigen Ordnern führt dies dazu, dass Ordner in mehrere separate Zip-Archive aufgeteilt werden müssen.



Früher habe ich versucht, Hosting zu Hause zu erstellen, kaufte ein gebrauchtes Netbook auf Avito für 2000 Rubel. Richten Sie es ein, alles funktioniert. Ein paar Tage vergehen - es funktioniert nicht. Ich starte neu - keine Verwendung. Dann hat es wieder funktioniert, dann wieder nicht. Ich wechselte das Netbook (ich kaufte ein anderes, leistungsfähigeres, ebenfalls bei Avito, für 3000 Rubel) und begann, eine andere Software zu verwenden - das Gleiche. Ich habe drei Anbieter gewechselt (Seven Sky> Akado> MGTS) - das Gleiche. Kurz gesagt, die Ausrüstung, die bei den Anbietern steht, schneidet anscheinend das Hosting zu Hause ab, und die Anbieter selbst wissen nichts davon. Oder welche anderen Gründe. Gehen Sie zu Hostern, hosten Sie nicht zu Hause. Indie-Hosting ist scheiße. Selbst ein primitiver Router für die Interaktion von Netzwerkspielen ist besser auf PHP zu stapeln und auf Hosting zu setzen, als zu Hause oder im Büro zu bleiben und darauf zu warten, dass etwas ohne vernünftigen Grund kaputt geht.



Hinweis an die Gastgeberin (zum Hosting)



Zusätzlich zu den technischen Merkmalen (von denen nur eines wirklich benötigt wird - die Anzahl der Gigabyte, alles andere sind die Zahlen für jeden auf seiner eigenen Skala, bin ich zu dem Schluss gekommen, dass die Merkmale für Avachosts besser sind) gibt es einen solchen Parameter - Missbrauchsresistenz. "Missbrauch" ist eine Beschwerde. Darüber hinaus kann der Grund für die Beschwerde beispielsweise im Atelier von Artemy Lebedev aus heiterem Himmel entstehen . Daher hat ein normales Hosting den Parameter Widerstand gegen Kugeln, Widerstand gegen Beschwerden. (Nicht zu verwechseln mit speziellem Hosting, bei dem Sie überhaupt alles hosten können, obwohl die Phishing-Seite einer Sberbank eine Einladung zur Eingabe Ihres persönlichen Kontos enthält - dies sind separate Büros, ich verstehe sie nicht).



Monetarisierung



Nehmen wir an, Sie sind ein wichtiges Medienunternehmen und beschließen, einen erheblichen Teil Ihrer (über Jahrzehnte gesammelten) Fotos öffentlich zu machen. Zum Beispiel mit der oben beschriebenen Technologie. Wie können Sie damit Geld verdienen (außer beim Branding, indem Sie Fotos mit Wasserzeichen versehen und verkaufen)? Nun, wenn Sie die Medien sind, dann wissen Sie, ich werde es Ihnen für den Rest sagen.



Bei den meisten Monetarisierungsprogrammen erhalten Sie 10 Kopeken vom durchschnittlichen Website-Besucher pro Tag (einschließlich derjenigen, die die Website einmal besucht haben, und derjenigen, die sie mehrmals am Tag besucht haben). Ebenso gibt es den Autor der Website und YAN (Yandex Advertising Network). Um mehr zu verdienen, muss man Menschen in religiöse Sekten einbeziehen oder wundersame Talismane verkaufen, das mache ich nicht. Aggregatoren solcher Anzeigen sind im Internet leicht zu finden, sie zahlen, um Ergebnisse zu erzielen (eine Person kaufte einen Kirby-Staubsauger oder wurde Mitglied einer Sekte). Außerdem ist es eine Schande: Ich mache das nicht, aber Yandex fährt so etwas ständig über meine Website. Infolgedessen verkaufen die Leute manchmal immer noch Bullshit zu einem hohen Preis (über Yandex), aber ich bekomme 6 bis 10 Mal weniger davon.



Viele Leute, die ich kenne, haben standardmäßig einen Werbeblock oder ähnliches, und Yandex-Anzeigen sind nicht sichtbar. Und sie selbst haben es nicht ausgedrückt. Warum so - ich weiß es nicht.



Mit Yandex können Sie den Betrag bei Erreichen von 3000 Rubel abheben.



Der Websitebesitzer kann sich auch bei miralinks.ru registrieren und Artikel veröffentlichen. Die Adresse des Artikels und die Links dazu müssen für immer veröffentlicht werden, d. H. Stellen Sie sicher, dass ihre Platzierung nicht zu giftig ist. Es ist zulässig, dass neue Artikel die vorherigen auf den nächsten Seiten der Geschichte ersetzen.



Sie können die Platzierung von Bannern und ansonsten entsprechend der Bedeutung der Ressource verkaufen.



Wo kann ich diese Technologie in Aktion sehen (welches Projekt mache ich)?



Ich mache eine Seite corchaosis.ru - eine Art Wiki-Analogon für Grafiken.



Warum war es noch nicht möglich, es zu fördern (wie ich denke):



- Die Menschen brauchen nur ein Mittel, um Erfolge zu erzielen.



Selbst wenn Menschen in eine Kunstgalerie gehen, um sich Gemälde anzusehen, kümmern sie sich immer noch um materielle Errungenschaften. Ich habe die Tretjakow-Galerie besucht. Ich habe Swan Lake gesehen.



Wenn eine Webressource eine Person nicht näher an materielle Errungenschaften bringt, geht sie nicht dorthin.

Die Leute selbst denken vielleicht anders, dass sie Gemälde mögen. Das ist nicht wichtig. Wenn wir etwas gegen Menschen unternehmen, müssen wir "schwieriger" sein als Menschen. Mehr verstehen und realisieren. Wenn ein Fuchs Hühner und Mäuse frisst, muss der Fuchs perfekter sein als Hühner. Aus der Repräsentationsebene des Huhns können die Ergebnisse eines Fuchses nicht erzielt werden.



- Menschen brauchen interaktive.



WEB 1.0 ist tot.



Wenn Sie keine Interaktivität anbieten können, braucht Sie niemand.



Sie werden nicht beobachtet. Es geht darum, wieder Ergebnisse zu erzielen. Kobvoy geht nicht für den Tourismus in den Dschungel, er geht in den Dschungel, um seine eigene Ranch zu gründen. Während die Site nicht über die Tools verfügt, um eine eigene Ranch (Portfolio usw.) zu erstellen, interessieren sich Cowboys nicht für den Dschungel.



Wo man einen vorgefertigten Motor bekommt



Im Prinzip habe ich alles beschrieben, was Sie dazu tun müssen. Du kannst mir schreiben.



Die lokale exe-Datei ist in Delphi + Graphics32 geschrieben, die Serverseite besteht aus zwei .php-Dateien.



All Articles