Je vais vous dire comment il est conseillé de le programmer.
Mots-clés et leur héritage
L'approche moderne utilisée par toutes les banques de photos et galeries est de fournir des illustrations avec un ensemble de balises (mots-clés). J'ai développé cette approche dans deux directions: (1) les balises peuvent être héritées (l'utilisateur cherchait des baies - il a trouvé une image avec la balise "cherry"), et (2) les balises peuvent être attachées au niveau non pas d'illustrations individuelles, mais de répertoires.
L'inconvénient de cette approche de marquage est que vous effectuez une recherche en fonction de mots-clés, en ignorant le tracé de l'image. Le dragon tué par la fille et le dragon qui a tué la fille sont deux intrigues différentes, mais les mêmes pour la liste de mots: Dragon, Girl, Death et Winner (s'il y avait une bataille). L'approche basée sur les mots clés ne permettra pas de récupérer un échantillon pour la requête "Dead Dragon" qui n'inclut pas l'image d'un dragon vaincre un ennemi tué.
Les balises principales sont celles qui sont visibles par l'utilisateur dans le répertoire alphabétique. Les balises supplémentaires sont celles qui sont disponibles pour l'utilisateur uniquement en entrant manuellement les noms de ces balises dans le texte de la chaîne de recherche. Je considère le nombre optimal de balises: principal = 1/75, supplémentaire = 1/195, du nombre d'images.
Désignez les pluriels (cavaliers, montagnes, etc.) des balises dans les noms de fichiers comme <nom de la balise>! (c'est-à-dire point d'exclamation). Vous aurez besoin d'un dictionnaire sur la façon dont les balises peuvent être appelées - pluriel, féminin / masculin, mots synonymes, fautes d'orthographe.
Conservez le dictionnaire des balises dans 4 fichiers: Marks.csv - balises principales, Other.csv - balises supplémentaires, Wrong.csv - orthographes incorrectes, synonymes, noms de balises au pluriel, Artists.csv - auteurs. Dans les fichiers Marks.csv et Other.csv, après l'identifiant de la balise et le nom principal en russe, les balises parentes sont répertoriées (c'est-à-dire l'héritage) .
Marks.csv
Arwen; ( );Person,Girl,Elf,LordOfTheRings
ThorinOakenshield; ;Person,Male,Beard,LordOfTheRings
Il est écrit ici qu'Arwen est un personnage, une fille, un elfe, un personnage du Seigneur des Anneaux; Thorin Oakenshield - une personne, un homme, porte une barbe, le personnage de "Le Seigneur des Anneaux". En conséquence, lorsque l'utilisateur recherche "Le Seigneur des Anneaux", toutes les images d'Arwen et Thorin seront trouvées. Lorsque vous cherchez "barbe" - entre autres choses, il y aura Thorin. Lorsque vous recherchez "Thorin", il sera également trouvé, car cette orthographe abrégée est dans Wrong.csv.
Structure des dossiers
Si nous superposons l'échantillon «show girls» ou «show the sun» sur 100 000 images, le nombre de résultats sera trop grand. Mais cela ne se produira pas si les images sont divisées en dossiers. Par exemple, dans le répertoire racine, il y a un dossier Dragons, à l'intérieur il y a un dossier Jaune, à l'intérieur il y a un dossier Filles (c'est-à-dire des images avec des filles), et à l'intérieur (dans tous les sous-dossiers) il y a 200 images. Dans ce cas, ce ne sont pas ces 200 images qui apparaîtront dans les résultats de la recherche, mais le dossier les contenant. C'est aussi mieux pour l'utilisateur.
Ici, cependant, il y a un problème de liens étroits. Les rois portent presque toujours des couronnes sur les images, mais pas dans tous les cas. Disons qu'il existe un dossier appelé Kings, et il contient 3000 images, dont 2500 sont en couronnes. Ici, en ce qui concerne la couronne - la simple approche de montrer le dossier ne fonctionne pas.
Je pense que le nombre optimal de dossiers = 1/28 du nombre d'images
Comme vous l'avez compris, si le fichier est déjà dans le dossier Dragons / Yellow / Girls, vous n'avez pas besoin d'ajouter ces balises au nom du fichier, ajoutez uniquement les identifiants de balises qui ne suivent pas le nom du fichier de son emplacement de stockage.
Multilingue, icônes, textes, sous-dossiers virtuels
Un fichier _.jpg d'une taille de 200 (largeur) * 280 (hauteur) est créé à l'intérieur de chaque dossier - il s'agit de l'icône du dossier lors de sa visualisation (le texte est affiché dessus), à la fois lorsque l'utilisateur se trouve dans le dossier parent, et lorsque l'utilisateur parcourt les résultats de la recherche (si trouvé ce dossier). Les icônes de mots-clés ont la même résolution.
De plus, dans de nombreux dossiers, un fichier _.txt est créé, composé des lignes suivantes:
Artefact \ _. Txt (fragment)
=Mielofon
=Mjolnir
=Palantir
=ThanosGlove
=Glass-Potion
by-DavisonCarvalho=*
TheWitcher/Wolf-Head-Logo|
DisneyPrincess/Moana/HeartOfTeFiti|
SuperHeroes/Hellraiser/HellraiserBox|
-m|Artefact
Ici, nous voyons les types d'enregistrements:
- Flasks = Glass-Potion - alias pour les sous-dossiers. Dans l'illustration ci-dessus, nous voyons que le pseudonyme du dossier Japon n'a pas été enregistré et que lors de la visualisation du dossier, il n'est pas traduit en russe. Deux tags - Verre et Potion (Verre et Potion) - sont traduits en un mot.
- by-DavisonCarvalho = * - aucun alias requis
- SuperHeroes / Hellraiser / HellraiserBox | Lemarshan's Box est un sous-dossier virtuel. Un sous-dossier dans un autre répertoire sera également affiché ici sous le nom donné.
- -m | Artefact - le dossier représente la balise Artifact. Si du texte est attaché à cette balise, il sera écrit sous les illustrations.
Taille sur le disque
Aujourd'hui, 111'000 images occupent 65 Go d'espace disque. Et ceci malgré le fait que dans de nombreux cas, il est nécessaire d'en faire un format png plus lourd:
- ( ), paint-.
- - , .
- .webp, .png, (, , ).
- .png, .jpg, .gif. .
—
index.php - lancé sans paramètres, il affiche le dossier racine de la galerie, l'alphabet et la chaîne de recherche. En cliquant sur un sous-dossier dans le dossier racine, il y accède. En cliquant sur une lettre de l'alphabet, on accède aux balises principales commençant par cette lettre. Lorsque vous entrez du texte dans la chaîne de recherche, il accède à la balise identifiée par ce texte.
i.php est un outil permettant de visualiser une image sélectionnée. Vous permet d'accéder aux balises de la liste auxquelles cette image correspond.
img - dossier racine de la galerie Web
m - dossier avec les vignettes générées de toutes les images. Les miniatures ont une hauteur de 200, une largeur proportionnelle à l'image. La structure du dossier m suit la structure du dossier img. Le dossier m est créé par programme avant le téléchargement de chaque version de la galerie.
Balises - pour chaque mot-clé, contient un fichier avec le résultat de sa recherche dans les répertoires.
Marques - types de fichiers:
- Pour chaque mot-clé, contient son fichier de vignettes
- Pour la plupart des mots-clés, contient un fichier avec leur description textuelle ou une histoire thématique, une anecdote
- Pour certains mots clés, contient une ou plusieurs histoires thématiques html-text
- En outre, ce dossier contient des fichiers tels que <letter code> .txt - des listes de mots-clés triées par ordre alphabétique pour chaque lettre de l'alphabet russe.
La procédure de téléchargement d'une nouvelle version de la galerie sur le site
Un programme spécialement écrit (utilisant Delphi et la bibliothèque Graphics32) effectue les opérations suivantes:
- — , ( .. ), ( Wrong.csv), _.txt, , .
- . , : .jpg .png ..
- . . — , .
- .
Ensuite, le dossier de la galerie et ces matériaux sont téléchargés sur le serveur.
Le moteur de la galerie Web n'utilise pas de SGBD.
Hébergement
J'utilise Avahost d' hébergement , 100 Go d'espace disque coûte 500 roubles par mois. Comme vous pouvez le voir, avec une taille de collection de 65 Go, + des vignettes, etc., et une taille d'hébergement de 100 Go, la mise à niveau n'est jamais transparente. Il n'y a pas assez d'espace pour d'abord décharger une toute nouvelle version, puis passer de manière transparente à celle-ci, il y a un intervalle inévitable d'indisponibilité du site de plusieurs heures. Je fais maintenant des mises à jour une fois par mois.
Les fichiers sont envoyés à l'hébergement sous forme d'archives. Le système cPanel actuellement utilisé sur tous les systèmes d'hébergement ne peut décompresser que les archives zip. Il est conseillé d'utiliser des fichiers d'une longueur maximale de 2,5 Go, sinon après la fin du téléchargement d'un fichier dans un dossier via l'interface Web cPanel, la barre de progression du téléchargement (la couleur initiale est bleue) peut devenir rouge au lieu de vert. Quelle est la différence, je n'ai pas compris (le fichier semble être téléchargé normalement même dans ce cas), mais dans ce cas, je re-upload. Pour certains dossiers, cela signifie que les dossiers doivent être divisés en plusieurs archives zip séparées.
Auparavant, j'ai essayé de créer un hébergement à la maison, acheté un netbook d'occasion sur Avito pour 2000 roubles. Configurez-le, tout fonctionne. Quelques jours passent - cela ne fonctionne pas. Je redémarre - inutile. Ensuite, cela a fonctionné à nouveau, puis encore une fois, cela n'a pas fonctionné. J'ai changé de netbook (j'en ai acheté un autre, plus puissant, également sur Avito, pour 3000 roubles) et j'ai commencé à utiliser un autre logiciel - la même chose. J'ai changé trois fournisseurs (Seven Sky> Akado> MGTS) - la même chose. En bref, l'équipement qui se trouve chez les fournisseurs coupe apparemment l'hébergement à domicile, et les fournisseurs eux-mêmes ne le savent pas. Ou quelles autres raisons. Allez chez les hébergeurs, ne faites pas d'hébergement à la maison. L'hébergement indépendant est nul. Même un routeur primitif pour l'interaction de jeux en réseau vaut mieux être empilé sur php et hébergé que de rester à la maison ou au bureau, et d'attendre que quelque chose se brise sans raison raisonnable.
Note à l'hôtesse (sur l'hébergement)
En plus des caractéristiques techniques (dont une seule est vraiment nécessaire - le nombre de gigaoctets, tout le reste est le nombre pour chacun à sa propre échelle, je suis arrivé à la conclusion que les caractéristiques sont meilleures pour les Avachosts), il existe un tel paramètre - la résistance aux abus. «Abus» est une plainte. De plus, la raison de la plainte peut surgir à l'improviste, par exemple au studio d'Artemy Lebedev . Par conséquent, un hébergement normal a le paramètre résistance aux balles, résistance aux plaintes. (À ne pas confondre avec l'hébergement spécial, où vous pouvez héberger n'importe quoi, même si la page de phishing d'une Sberbank avec une invitation à entrer dans votre compte personnel - ce sont des bureaux séparés, je ne les comprends pas).
Monétisation
Disons que vous êtes un média majeur et que vous décidez de rendre publique une partie importante de vos photos (accumulées au fil des décennies). Par exemple, en utilisant la technologie décrite ci-dessus. Comment gagner de l'argent avec cela (sauf pour le branding en imposant des filigranes sur les photos et en les vendant)? Eh bien, si vous êtes les médias, vous savez, je vous dirai pour le reste.
La plupart des systèmes de monétisation vous donnent 10 kopecks du visiteur moyen du site par jour (y compris ceux qui ont visité le site une fois et ceux qui l'ont visité plusieurs fois par jour). De même, il donne l'auteur du site et YAN (Yandex Advertising Network). Pour gagner plus, il faut impliquer des gens dans des sectes religieuses ou vendre des talismans miraculeux, je ne fais pas ça. Les agrégateurs de telles publicités sont faciles à trouver sur Internet, ils paient pour obtenir des résultats (une personne a acheté un aspirateur Kirby ou est devenue membre d'une secte). De plus, c'est dommage: je ne fais pas ça, mais Yandex conduit de temps en temps quelque chose comme ça sur mon site. En conséquence, les gens vendent encore parfois des conneries à un prix élevé (via Yandex), mais j'en tire 6 à 10 fois moins.
De nombreuses personnes que je connais ont un bloc d'annonces ou quelque chose du genre par défaut et les publicités Yandex ne sont pas visibles. Et eux-mêmes ne l'ont pas mis. Pourquoi - je ne sais pas.
Yandex vous permet de retirer le montant après avoir atteint 3000 roubles.
En outre, le propriétaire du site peut s'inscrire sur miralinks.ru et publier des articles. L'adresse de l'article et les liens vers celui-ci doivent être affichés pour toujours, c'est-à-dire assurez-vous que leur placement n'est pas trop toxique. Il est permis que de nouveaux articles remplacent les précédents dans les pages suivantes de l'histoire.
Vous pouvez vendre le placement de bannières, et autrement conformément à la signification de la ressource.
Où puis-je voir cette technologie en action (quel projet suis-je en train de faire)?
Je crée un site corchaosis.ru - une sorte d'analogue wiki pour les graphiques.
Pourquoi n'a-t-il pas encore été possible de le promouvoir (comme je le pense):
- Les gens n'ont besoin que d'un moyen de réaliser des réalisations.
Même si les gens vont dans une galerie d'art pour regarder des peintures, ils se soucient toujours de la réalisation matérielle. J'ai visité la galerie Tretyakov. J'ai vu le lac des cygnes.
Si une ressource Web ne rapproche pas une personne des réalisations matérielles, elle n'y va pas.
Les gens eux-mêmes peuvent penser autrement, qu'ils aiment les peintures. Ce n'est pas important. Si nous faisons quelque chose pour les gens, nous devons être «plus difficiles» que les gens. Comprenez et réalisez plus. Si un renard mange des poulets et des souris, le renard doit être plus parfait que les poulets. Du niveau de représentation du poulet, les résultats d'un renard ne peuvent pas être atteints.
- Les gens ont besoin d'interactif.
WEB 1.0 est mort.
Si vous ne pouvez pas offrir d'interactivité, personne n'a besoin de vous.
Vous n'êtes pas surveillé. Il s'agit d'obtenir à nouveau des résultats. Kobvoy ne va pas dans la jungle pour le tourisme, il va dans la jungle pour fonder son propre ranch. Bien que le site ne dispose pas des outils pour créer leur propre ranch (portfolio, etc.), les cowboys ne sont pas intéressés par la jungle.
Où se procurer un moteur prêt à l'emploi
En principe, j'ai décrit tout ce que vous devez faire pour le faire. Tu peux m'écrire.
Le fichier exe local est écrit en Delphi + Graphics32, le côté serveur est composé de deux fichiers .php.