Como escrever e colocar no site um banco de fotos para> 100.000 pinturas

Digamos que você tenha mais de 100.000 imagens que precisam ser classificadas e convenientemente colocadas na Web para visualização em massa. Pode ser qualquer coisa - uma galeria de toda a arte criada pela humanidade (na tarefa que eu estava realizando), ou um arquivo histórico de fotos da cidade de Moscou, fotos de filmes ou um arquivo geral de fotos de férias de uma grande agência de viagens ou um site para ilustrações e fotografias, ou arquivo de imagens para grandes mídias por muitos anos - no qual é necessário organizar as coisas, organizar a navegação e o acesso dos funcionários da rede interna.



Vou lhe dizer como é aconselhável programá-lo.



Palavras-chave e sua herança



A abordagem moderna usada por todos os bancos de fotos e galerias é fornecer ilustrações com um conjunto de tags (palavras-chave). Eu desenvolvi essa abordagem em duas direções: (1) tags podem ser herdadas (o usuário estava procurando bagas - ele encontrou uma imagem com a tag "cherry") e (2) tags podem ser anexadas no nível de ilustrações não únicas, mas de diretórios.



A desvantagem dessa abordagem de marcação é que você pesquisa com base em palavras-chave, ignorando o gráfico da imagem. O dragão morto pela garota e o dragão que a matou são dois lotes diferentes, mas o mesmo para a lista de palavras: Dragão, Garota, Morte e Vencedor (se houver uma batalha). A abordagem de palavra-chave não permitirá recuperar uma amostra para a consulta "Dragão morto" que não inclui a imagem de um dragão derrotando um inimigo morto.



As tags principais são aquelas que são visíveis para o usuário no diretório alfabético. Tags adicionais são aquelas que estão disponíveis apenas para o usuário digitando manualmente os nomes dessas tags no texto da string de pesquisa. Considero o número ideal de tags: main = 1/75, adicional = 1/195, do número de imagens.



Designe plurais (ciclistas, montanhas etc.) de tags nos nomes de arquivos como <nome da tag>! (ou seja, ponto de exclamação). Você precisará de um dicionário de como as tags podem ser chamadas - plural, feminino / masculino, palavras sinônimos, erros ortográficos.



Mantenha o dicionário de tags em 4 arquivos: Marks.csv - tags principais, Other.csv - tags adicionais, Wrong.csv - grafias incorretas, sinônimos, nomes plurais de tags, Artists.csv - autores. Nos arquivos Marks.csv e Other.csv, após o identificador da tag e o nome principal em russo, as tags principais são listadas (por exemplo, herança) .



Marks.csv



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


Está escrito aqui que Arwen é uma persona, uma garota, um elfo, um personagem em O Senhor dos Anéis; Thorin Oakenshield - uma pessoa, um homem, usa barba, o personagem de "O Senhor dos Anéis". Assim, quando o usuário procurar "O Senhor dos Anéis", todas as imagens de Arwen e Thorin serão encontradas. Ao procurar "barba" - entre outras coisas, haverá Thorin. Quando você procurar por "Thorin", ele também será encontrado, pois essa ortografia abreviada está em Wrong.csv.



Estrutura de pastas



Se sobrepormos a amostra "mostrar garotas" ou "mostrar o sol" em 100.000 imagens, o número de resultados será muito grande. Mas isso não acontecerá se as imagens forem divididas em pastas. Por exemplo, no diretório raiz, há uma pasta Dragons, dentro dela, uma pasta Yellow, dentro dela, uma pasta Girls (ou seja, imagens com meninas) e, dentro dele (em todas as subpastas), existem 200 imagens. Nesse caso, não essas 200 imagens aparecerão nos resultados da pesquisa, mas a pasta que as contém. É melhor para o usuário também.



Aqui, no entanto, há um problema de vínculos estreitamente relacionados. Os reis quase sempre usam coroas nas imagens, mas não em todos os casos. Digamos que exista uma pasta chamada Kings, e ela contém 3000 imagens, das quais 2500 estão em coroas. Aqui, em relação à coroa - a abordagem simples de mostrar a pasta não funciona.



Eu acho que o número ideal de pastas = 1/28 do número de imagens



Como você entende, se o arquivo já estiver na pasta Dragons / Yellow / Girls, não será necessário adicionar essas tags ao nome do arquivo, adicione apenas os identificadores de tags que não seguem o nome do arquivo do seu local de armazenamento.







Multilíngüe, ícones, textos, subpastas virtuais



Um arquivo _.jpg com um tamanho de 200 (largura) * 280 (altura) é criado dentro de cada pasta - este é o ícone da pasta ao visualizá-lo (o texto é exibido sobre ele), tanto quando o usuário está na pasta pai quanto quando ele navega nos resultados da pesquisa (se encontrado esta pasta). Os ícones de palavras-chave têm a mesma resolução.



Além disso, em muitas pastas, um arquivo _.txt é criado, consistindo nas seguintes linhas:



Artefato \ _. Txt (fragmento)



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


Aqui vemos os tipos de registros:



  1. Frascos = Poção de Vidro - pseudônimos para subpastas. Na ilustração acima, vemos que o pseudônimo da pasta do Japão não foi gravado e, ao visualizá-la, não é traduzido para o russo. Duas tags - Vidro e Poção (Vidro e Poção) - são traduzidas em uma palavra.
  2. by-DavisonCarvalho = * - nenhum alias necessário
  3. SuperHeroes / Hellraiser / HellraiserBox | Caixa de Lemarshan é uma subpasta virtual. Uma subpasta em outro diretório também será exibida aqui com o nome fornecido.
  4. -m | Artefato - a pasta representa a tag Artefato. Se o texto estiver anexado a esta tag, ele será escrito sob as ilustrações.


Tamanho no disco



Agora, 111.000 imagens ocupam 65 GB de espaço em disco. E isso apesar do fato de que em muitos casos é necessário criar um formato png mais pesado a partir deles:



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




index.php - lançado sem parâmetros, exibe a pasta raiz da galeria, o alfabeto e a string de pesquisa. Ao clicar em uma subpasta na pasta raiz, ela acessa. Ao clicar em uma letra do alfabeto, ele acessa as principais tags que começam com esta letra. Quando você digita texto na sequência de pesquisa, ela é direcionada para a tag identificada por este texto.



O i.php é uma ferramenta para visualizar uma imagem selecionada. Permite navegar para as tags da lista com as quais esta imagem corresponde.

img - pasta raiz da galeria na web

m - pasta com miniaturas geradas de todas as imagens. As miniaturas têm 200 cm de altura e largura proporcional à imagem. A estrutura da pasta m segue a estrutura da pasta img. A pasta m é criada programaticamente antes de carregar cada versão da galeria.

Tags - para cada palavra-chave, contém um arquivo com o resultado de sua pesquisa nos diretórios.

Marcas - tipos de arquivo:



  1. Para cada palavra-chave, contém seu arquivo de miniatura
  2. Para a maioria das palavras-chave, contém um arquivo com sua descrição textual ou uma história temática,
  3. Para algumas palavras-chave, contém uma ou mais histórias temáticas de texto html
  4. Além disso, esta pasta contém arquivos como <código da letra> .txt - listas de palavras-chave classificadas em ordem alfabética para cada letra do alfabeto russo.


O procedimento para carregar uma nova versão da galeria no site



Um programa especialmente escrito (usando Delphi e a biblioteca Graphics32) faz o seguinte:



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


Em seguida, a pasta da galeria e esses materiais são carregados no servidor.



O mecanismo da galeria da web não usa um DBMS.



Hospedagem



Eu uso a hospedagem Avahost , 100 GB de espaço em disco custa 500 rublos por mês. Como você pode ver, com um tamanho de coleção de 65 GB, + miniaturas e assim por diante, e um tamanho de hospedagem de 100 GB, a atualização nunca é perfeita. Não há espaço suficiente para descarregar primeiro uma versão completamente nova e, em seguida, alternar facilmente para ela; existe um intervalo inevitável de tempo de inatividade do site de várias horas. Agora faço atualizações uma vez por mês.



Os arquivos são enviados para hospedagem na forma de arquivos. O sistema cPanel atualmente usado em todos os sistemas de hospedagem pode descompactar apenas arquivos zip. É recomendável usar arquivos de até 2,5 GB de comprimento; caso contrário, após o upload de um arquivo para uma pasta pela interface da web do cPanel, a barra de progresso do upload (a cor inicial é azul) pode ficar vermelha em vez de verde. Qual é a diferença que eu não entendi (o arquivo parece ser carregado normalmente, mesmo nesse caso), mas nesse caso eu reenvio. Para algumas pastas, isso resulta em pastas que precisam ser divididas em vários arquivos zip separados.



Anteriormente, tentei criar hospedagem em casa, comprei um netbook usado no Avito por 2000 rublos. Configure, tudo funciona. Alguns dias se passam - não funciona. Eu reinicio - não adianta. Então, funcionou novamente, e novamente não funcionou. Troquei o netbook (comprei outro mais poderoso, também no Avito, por 3000 rublos) e comecei a usar outro software - a mesma coisa. Mudei três fornecedores (Seven Sky> Akado> MGTS) - a mesma coisa. Em suma, o equipamento existente nos fornecedores interrompe aparentemente a hospedagem em casa, e os próprios fornecedores não sabem disso. Ou que outras razões. Vá para hosters, não faça hospedagem em casa. Hospedagem independente é uma merda. Mesmo um roteador primitivo para a interação de jogos em rede é melhor empilhar no php e colocar na hospedagem do que mantê-lo em casa ou no escritório e esperar que algo quebre sem motivo razoável.



Nota para a anfitriã (sobre hospedagem)



Além das características técnicas (das quais apenas uma é realmente necessária - o número de gigabytes, tudo o resto é o número para todos de acordo com sua própria escala, cheguei à conclusão de que as características são melhores para Avachosts), existe esse parâmetro - resistência a abusos. "Abuso" é uma reclamação. Além disso, o motivo da reclamação pode surgir do nada, por exemplo, no estúdio de Artemy Lebedev . Portanto, uma hospedagem normal possui o parâmetro resistência à bala, resistência a reclamações. (Não deve ser confundido com hospedagem especial, onde você pode hospedar qualquer coisa, mesmo que seja uma página de phishing de um Sberbank com um convite para entrar em sua conta pessoal - esses são escritórios separados, eu não os entendo).



Monetização



Digamos que você seja um grande veículo de mídia e decida tornar pública uma parte significativa de suas fotos (acumuladas ao longo de décadas). Por exemplo, usando a tecnologia descrita acima. Como você pode ganhar dinheiro com isso (com exceção da marca impondo marcas d'água nas fotos e vendendo-as)? Bem, se você é a mídia, então eu digo o resto.



A maioria dos esquemas de monetização oferece 10 copias do visitante médio do site por dia (incluindo aqueles que visitaram o site uma vez e que visitaram várias vezes ao dia). Da mesma forma, fornece o autor do site e o YAN (Yandex Advertising Network). Para ganhar mais, você precisa envolver pessoas em seitas religiosas ou vender talismãs milagrosos, eu não faço isso. Os agregadores de tais anúncios são fáceis de encontrar na Internet, pagam para obter resultados (uma pessoa comprou um aspirador Kirby ou tornou-se membro de uma seita). Além disso, é uma pena: eu não faço isso, mas o Yandex de vez em quando conduz algo assim através do meu site. Como resultado, às vezes as pessoas ainda vendem besteiras a um preço alto (através do Yandex), mas recebo de 6 a 10 vezes menos com isso.



Muitas pessoas que conheço têm um bloco de anúncios ou algo parecido por padrão e os anúncios Yandex não são visíveis. E eles mesmos não o colocaram. Por que sim - eu não sei.



Yandex permite que você retire a quantidade ao atingir 3000 rublos.



Além disso, o proprietário do site pode se registrar no miralinks.ru e postar artigos. O endereço do artigo e os links para ele devem ser publicados para sempre, ou seja, verifique se a colocação deles não é muito tóxica. É permitido que novos artigos substituam os anteriores nas próximas páginas da história.



Você pode vender a colocação de banners e, de outra forma, de acordo com o significado do recurso.



Onde posso ver essa tecnologia em ação (que projeto estou fazendo)?



Estou criando um site corchaosis.ru - uma espécie de análogo do wiki para gráficos.



Por que ainda não foi possível promovê-lo (como penso):



- As pessoas precisam apenas de um meio para alcançar conquistas.



Mesmo que as pessoas vão a uma galeria de arte para ver pinturas, ainda se preocupam com a conquista de materiais. Eu visitei a Galeria Tretyakov. Eu vi o lago dos cisnes.



Se um recurso da Web não aproxima uma pessoa das conquistas materiais, ele não o faz.

As próprias pessoas podem pensar o contrário, que gostam de pinturas. Isso não importa. Se fizermos algo sobre as pessoas, devemos ser "mais difíceis" do que as pessoas. Compreenda e realize mais. Se uma raposa come galinhas e ratos, ela deve ser mais perfeita que as galinhas. Do nível de representação do frango, os resultados de uma raposa não podem ser alcançados.



- As pessoas precisam de interatividade.



WEB 1.0 está morto.



Se você não pode oferecer interatividade, ninguém precisa de você.



Você não está sendo vigiado. É sobre obter resultados novamente. Kobvoy não entra na selva para o turismo, ele entra na selva para iniciar seu próprio rancho. Embora o site não possua as ferramentas para criar seu próprio rancho (portfólio, etc.), os cowboys não estão interessados ​​na selva.



Onde obter um mecanismo pronto



Em princípio, descrevi tudo o que você precisa fazer para fazê-lo. Você pode escrever para mim.



O arquivo exe local é escrito em Delphi + Graphics32, o lado do servidor é dois arquivos .php.



All Articles