{"id":80222,"date":"2020-05-04T13:42:18","date_gmt":"2020-05-04T11:42:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki"},"modified":"2020-05-04T13:42:18","modified_gmt":"2020-05-04T11:42:18","slug":"museria-deczentralizovannoe-hranilishhe-muzyki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","title":{"rendered":"Museria \u2014 un archivio musicale decentralizzato","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Museria \u2014 un archivio musicale decentralizzato\" src=\"\/wp-content\/uploads\/2020\/05\/e5323f70f0df3f3bb6fb92ae0544ad2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn giorno ho deciso di creare un'app per selezionare la musica da ascoltare a casa, mentre sono fuori, durante l'allenamento, ecc. Volevo che funzionasse in modo fluido, con il minimo mio intervento. Ho ideato l'architettura, schizzato un prototipo e alla fine mi sono trovato di fronte a un 'piccolo problema'. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMa non \u00e8 chiaro da dove recuperare i file delle canzoni. A questo punto, VKontakte ha gi\u00e0 chiuso l'API, e anche nei grandi portali musicali c'\u00e8 silenzio, persino le canzoni vengono restituite a pezzi, per evitare che vengano estratte. Restano solo alcuni siti temporanei pieni di pubblicit\u00e0 e spazzatura, varie applicazioni di grabbing e altre soluzioni \"sporche\". In sostanza, non c'\u00e8 una reale e valida soluzione. Certo, si pu\u00f2 acquistare un abbonamento a qualche servizio di musica come Yandex Music o simili. Ma ancora una volta, non c'\u00e8 un API pubblico aperto, e non hai accesso alla musica in modo programmato. Diverse grandi aziende, di fatto, hanno limitato l'accesso alla musica per altri. Perch\u00e9 \u00e8 successo tutto questo? Scavando pi\u00f9 a fondo, \u00e8 emerso che il problema principale sono i diritti d'autore. L'attuale soluzione basata su abbonamenti soddisfa molti autori commerciali di opere musicali e tali aziende. Tuttavia, anche la musica non commerciale e condizionatamente commerciale rientra nella lista generale. Devi o pagare per tutto, o non ascoltare affatto.<\/p>\n<p>Iniziai a pensare a cosa fare con tutto questo. Come si pu\u00f2 organizzare la diffusione libera della musica? Cosa farei se fossi io a creare musica e volessi guadagnare da essa? Mi piacerebbe se le mie canzoni venissero diffuse in modo pirata? Qual \u00e8, in generale, la soluzione alternativa? <\/p>\n<p>Alla fine si sono presentati due problemi principali da risolvere:<\/p>\n<ul>\n<li>Organizzare la diffusione libera della musica con metodi convenienti per la maggior parte delle persone, inclusi quelli software.<\/li>\n<li>Proporre alternative ai creatori di musica per guadagnare<\/li>\n<\/ul>\n<p><\/p>\n<h3>Un deposito musicale globale e decentralizzato<\/h3>\n<p>\nInizialmente ho cercato di trovare soluzioni gi\u00e0 esistenti e di costruire tutto su di esse. Dopo un po' di tempo di ricerche, il primo che attir\u00f2 la mia attenzione fu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ipfs\/ipfs\">ipfs<\/a><\/noindex>. Cominciai a implementare la mia idea, ma dopo un po' scoprii alcuni problemi critici in questa soluzione:<\/p>\n<ul>\n<li>Ipfs \u00e8 un deposito per qualsiasi cosa e tutto. Qui ci sono immagini, musica, video e qualsiasi cosa. In sostanza, una grande \"discarica\" planetaria. Quindi, quando avvii il tuo nodo, ricevi subito un carico enorme. La macchina semplicemente si contorce dal dolore. <\/li>\n<li>Un meccanismo di raccolta dei \"rifiuti\" incompleto. Non so come sia la situazione ora, ma in quel momento, se nel file di configurazione indicavi di voler limitare lo spazio a dieci gigabyte di dati, questo non valeva nulla. Lo spazio si espandeva, ignorando molti parametri di configurazione. Alla fine, era necessario avere un enorme spazio su disco fisso finch\u00e9 IPFS non capiva come eliminare l'inutile.<\/li>\n<li>Al momento dell'utilizzo della libreria (non so come sia ora), il client non aveva implementato timeout. Inviavi una richiesta per ottenere un file e se non era presente, rimanevi semplicemente bloccato. Certamente, le persone avevano inventato varie soluzioni alternative che in parte risolvevano il problema, ma erano palliativi. Queste cose dovrebbero essere disponibili di default.<\/li>\n<\/ul>\n<p>\nC'erano anche molti piccoli problemi e l'impressione che ne ricavai fu chiara: non poteva essere usato per un progetto. Ho continuato a cercare uno spazio di archiviazione, esplorando diverse opzioni, ma non ho trovato nulla di adatto.<\/p>\n<p>Alla fine, ho deciso di provare a scrivere io stesso uno spazio di archiviazione decentralizzato. Anche se non pretender\u00e0 di essere interplanetario, risolver\u00e0 il compito specifico che mi sono posto.<\/p>\n<p>E cos\u00ec sono nati <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/spreadable\">spreadable<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/storacle\/\">storacle<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/metastocle\">metastocle<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\">museria<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria-global\">museria-global<\/a><\/noindex>. <\/p>\n<p><b>spreadable <\/b> \u2014 \u00e8 il livello principale, il pi\u00f9 basso, che consente di connettere i nodi in una rete. Contiene un algoritmo che ho implementato parzialmente per circa 10,000 server. La versione completa dell'algoritmo \u00e8 molto pi\u00f9 complessa da implementare e richiederebbe diversi mesi aggiuntivi (forse anche di pi\u00f9).<\/p>\n<p>Non entrer\u00f2 nei dettagli di spreadable in questo articolo, meglio scriver\u00f2 qualcosa di separato in futuro. Qui sottolineer\u00f2 solo alcune caratteristiche:<\/p>\n<ul>\n<li>Funziona attraverso http\/https.<\/li>\n<li>\u00c8 possibile creare una rete separata per compiti specifici, il che riduce notevolmente il carico su ogni singolo progetto rispetto a tenerli tutti in un'unica rete.<\/li>\n<li>Inizialmente, \u00e8 stato pensato un meccanismo con timeout e altri dettagli. E questo funziona per tutti i metodi sia nel client che nel nodo. \u00c8 possibile gestire flessibilmente i parametri dalla propria applicazione.<\/li>\n<li>La libreria \u00e8 scritta in nodejs. I problemi di prestazioni dello stack sono compensati dalla natura decentralizzata. Il carico pu\u00f2 essere 'spalmato' aumentando il numero di nodi. In cambio, ci sono molti vantaggi: una grande comunit\u00e0, facilit\u00e0 e comodit\u00e0 d'uso, client isomorfico, assenza di dipendenze esterne, ecc.<\/li>\n<\/ul>\n<p>\n<b>storacle <\/b> \u2014 \u00e8 un layer derivante da spreadable, che consente di memorizzare file in rete. Ogni file ha un proprio hash basato sul contenuto, che consente di accedervi successivamente. I file non sono suddivisi in blocchi, ma vengono memorizzati per intero.<\/p>\n<p><b>metastocle <\/b> \u2014 \u00e8 un layer derivante da spreadable, che consente di memorizzare dati in rete, ma non file. L'interfaccia \u00e8 simile alle banche dati noSQL. \u00c8 possibile, ad esempio, aggiungere un file in storacle, ottenere il suo hash e registrarlo in metastocle associandolo a qualcos'altro.<\/p>\n<p><b>museria<\/b> \u2014 deriva da storacle e metastocle. Questo layer \u00e8 direttamente responsabile della memorizzazione della musica. Lo storage lavora solo con file mp3 e tag id3. <\/p>\n<p>Come \"chiave\" per la canzone viene utilizzato il suo titolo completo sotto forma di <b>Artista (TPE1) \u2014 Titolo (TIT2)<\/b>. Ad esempio:<\/p>\n<ul>\n<li>Brimstone \u2014 The Burden<\/li>\n<li>Hi-rez \u2014 Lost My Way (feat. Emilio Rojas, Dani Devinci)<\/li>\n<\/ul>\n<p>\n\u00c8 possibile approfondire come vengono formati i titoli delle canzoni <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\/blob\/master\/src\/utils.js\">qui<\/a><\/noindex>. Bisogna guardare la funzione <b>utils.beautifySongTitle()<\/b>.<\/p>\n<p>La corrispondenza delle chiavi \u00e8 considerata una certa percentuale definita nelle impostazioni del nodo. Ad esempio, un valore di 0,85 significa che se la funzione di confronto delle chiavi (titoli delle canzoni) rileva una somiglianza superiore all'85%, si tratta della stessa canzone.<\/p>\n<p>L'algoritmo per la determinazione della somiglianza si trova anch'esso nella funzione <b>utils.getSongSimilarity()<\/b>.<\/p>\n<p>Cover di una canzone, per il successivo ottenimento, da allegare anche tramite tags (<b>APIC<\/b>). Negli utility ci sono tutti i metodi necessari per ottenere e gestire i tags.<\/p>\n<p>Un esempio di utilizzo dello storage tramite client pu\u00f2 essere visto in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\">readme<\/a><\/noindex>.<\/p>\n<blockquote><p>Tutti i livelli sopra menzionati sono autonomi e possono essere utilizzati separatamente come livelli pi\u00f9 bassi per altri progetti. Ad esempio, c'\u00e8 gi\u00e0 l'idea di creare un livello per lo storage dei libri.<\/p><\/blockquote>\n<p>\n<b>museria-global<\/b> \u2014 \u00e8 gi\u00e0 un repository git configurato per lanciare il proprio nodo nella rete globale della musica. Clonalo, <b>npm i &amp;&amp; npm<\/b> start e in sostanza \u00e8 tutto. Puoi configurarlo in modo pi\u00f9 dettagliato, eseguirlo in Docker, ecc. Maggiori informazioni sono disponibili su <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria-global#museria-global-storage-alpha-\">GitHub.<\/a><\/noindex>.<\/p>\n<p>Quando il repository viene aggiornato, \u00e8 necessario aggiornare anche il proprio nodo. Se il numero di versione maggiore o minore cambia, questa azione \u00e8 obbligatoria; altrimenti, i nodi vecchi verranno ignorati dalla rete.<\/p>\n<p>\u00c8 possibile lavorare con le canzoni manualmente e programmaticamente. Ogni nodo avvia un server per diversi compiti. Inclusa, al visitare l'endpoint predefinito, riceverai un'interfaccia per lavorare con la musica. Ad esempio, puoi accedere al <noindex><a rel=\"nofollow\" href=\"http:\/\/storage.museria.com\">nodo radice<\/a><\/noindex> (il link potrebbe non essere pi\u00f9 valido in seguito, \u00e8 possibile ottenere anche i nodi d'ingresso su <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/museria\">Telegram<\/a><\/noindex>, oppure vedere gli aggiornamenti su GitHub).<\/p>\n<p>In questo modo puoi cercare e caricare canzoni nel repository. Il caricamento delle canzoni pu\u00f2 avvenire in due modalit\u00e0: normale e moderata. La seconda modalit\u00e0 significa che un essere umano, non un programma, \u00e8 coinvolto nel processo. Se selezioni questa opzione durante l'aggiunta, dovrai risolvere un captcha. Le canzoni possono essere aggiunte con priorit\u00e0 -1, 0 o 1. La priorit\u00e0 1 pu\u00f2 essere assegnata solo in modalit\u00e0 moderata. Le priorit\u00e0 sono necessarie affinch\u00e9 il repository prenda decisioni pi\u00f9 efficaci quando tenti di sostituire una canzone esistente con una nuova. Maggiore \u00e8 la priorit\u00e0, maggiori saranno le possibilit\u00e0 di sovrascrivere un file esistente. Questo aiuta a combattere lo spam e aumenta la qualit\u00e0 delle canzoni caricate. <\/p>\n<p>Se inizi ad aggiungere canzoni al repository, cerca di allegare anche le immagini (cover), anche se questo campo non \u00e8 obbligatorio. Nel 99% dei casi, le prime immagini su Google con i titoli delle canzoni sono le copertine degli album.<\/p>\n<p>Come avviene tecnicamente l'aggiunta di file, in poche parole:<\/p>\n<ul>\n<li>Il cliente riceve l'indirizzo di un nodo libero, che per un certo periodo diventa il coordinatore.<\/li>\n<li>Si attiva la funzione di aggiunta di una canzone (da parte di una persona o tramite codice), viene effettuata una richiesta per l'aggiunta all'endpoint del coordinatore.<\/li>\n<li>Il coordinatore calcola quanti duplicati devono essere conservati (parametro configurabile).<\/li>\n<li>Si cercano i nodi pi\u00f9 adatti per la conservazione.<\/li>\n<li>Il file, direttamente, viene inviato a questi nodi. <\/li>\n<\/ul>\n<p>\nCome avviene tecnicamente il recupero dei file:<\/p>\n<ul>\n<li>Il cliente riceve l'indirizzo di un nodo libero, che per un certo periodo diventa il coordinatore.<\/li>\n<li>Si attiva la funzione di recupero di una canzone (da parte di una persona o tramite codice), viene effettuata una richiesta per il recupero all'endpoint del coordinatore.<\/li>\n<li>Il coordinatore verifica se il link \u00e8 presente nella cache. Se c'\u00e8 ed \u00e8 attivo, viene restituito immediatamente al cliente, altrimenti si interrogano i nodi per verificarne la disponibilit\u00e0.<\/li>\n<li>Si procede al recupero del file tramite il link, se disponibile. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Alternative per i creatori di musica<\/h3>\n<p>\nMi ha sempre incuriosito il modo di valutare oggettivamente il valore di molte opere creative. Perch\u00e9, ad esempio, una persona vende il suo album musicale per 10$? O per 20$ oppure 100$. Qual \u00e8 l\u2019algoritmo? Quando parliamo di un prodotto fisico, o anche di molti tipi di servizi, possiamo almeno calcolare il costo di produzione e partire da l\u00ec. <\/p>\n<p>Va bene, supponiamo di aver fissato il prezzo a 10$. \u00c8 davvero efficace? Supponiamo di ascoltare l'album da qualche parte o una canzone e di voler ricompensare l'artista. Ma per quello che sento e le mie possibilit\u00e0, 3$ sono il mio massimo. E come ci si comporta in questo caso? Probabilmente non far\u00f2 nulla, come la maggior parte delle persone. <\/p>\n<p>Fissando un prezzo fisso per il lavoro creativo, ti limiti e non permetti a un numero maggiore di persone di offrirti somme pi\u00f9 piccole, che in totale potrebbero essere pi\u00f9 significative rispetto a quelle di coloro che comprano al prezzo che hai impostato. Mi sembra che la creativit\u00e0 sia proprio il settore in cui dovrebbero prevalere le donazioni. E per questo \u00e8 necessario:<\/p>\n<ul>\n<li>Insegnare alle persone a ringraziare in questo modo. I creatori devono dimostrarlo chiaramente, mostrando che vorrebbero ricevere donazioni, aggiungendo ovunque link a diversi metodi di pagamento, ecc.<\/li>\n<li>Serve pi\u00f9 meccanismi per semplificare e rafforzare questi processi. Ad esempio, creare un sito globale dove si pu\u00f2 donare per la creativit\u00e0 tramite link personalizzati.\n<p>Supponiamo che il link sia pi\u00f9 o meno cos\u00ec: <\/p>\n<p><b><code>http:\/\/someartistsdonationsite.site\/category\/artist?external-info<\/code><\/b><\/p>\n<p>Se ci limitiamo ai musicisti, allora:<\/p>\n<p><b><code>http:\/\/someartistsdonationsite.com\/music\/miyagi?song=blabla<\/code><\/b><\/p>\n<p>L'artista deve verificare il proprio nickname e associarlo.<\/p>\n<p>Nel client museria, aggiungiamo la funzione di generazione di link simili, e tutti i progetti che utilizzano lo storage possono posizionare sui propri siti\/app le pulsanti per le donazioni con questi link accanto alle canzoni. Gli utenti possono fare donazioni molto rapidamente e facilmente. Naturalmente, questo approccio pu\u00f2 essere utilizzato in qualsiasi progetto e categoria creativa, non solo attraverso lo storage.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Perch\u00e9, proprio per te, uno storage musicale, e come \u00e8 possibile partecipare?<\/h3>\n<p><\/p>\n<ul>\n<li>Se lavori a un progetto legato alla musica o stai pianificando di crearne uno, \u00e8 proprio per questo che tutto \u00e8 stato concepito. Puoi utilizzare museria per memorizzare e ricevere canzoni, aumentando il flusso di musica online. Se hai anche la possibilit\u00e0 di ospitare e mantenere almeno un tuo nodo, ci\u00f2 rappresenter\u00e0 il miglior contributo allo sviluppo della rete.<\/li>\n<li>Forse sei pronto a prendere un altro ruolo: aiutare con il codice, oppure riempire e moderare il database, diffondere informazioni sul progetto ai tuoi amici, ecc.<\/li>\n<li>Magari ti \u00e8 piaciuta l'idea e sei disposto ad aiutare economicamente affinch\u00e9 tutto possa esistere e svilupparsi. Pi\u00f9 nodi ci sono, pi\u00f9 canzoni ci saranno.<\/li>\n<li>Oppure, a un certo punto, potresti semplicemente aver bisogno di trovare e scaricare una canzone. Potrai farlo molto facilmente, ad esempio, tramite <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/MuseriaBot\">un bot di Telegram.<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nIl progetto \u00e8 attualmente nella fase iniziale. \u00c8 stata avviata una rete di test, i nodi possono spesso riavviarsi, richiedere aggiornamenti, ecc. In assenza di problemi critici durante il periodo di valutazione, questa stessa rete si trasformer\u00e0 nella rete principale.<\/p>\n<p>Visualizza informazioni sul nodo dall'esterno: numero di canzoni, spazio disponibile, ecc. tramite un link del tipo <b><code>http:\/\/node-address\/status<\/code><\/b> o <b><code>http:\/\/node-address\/status?pretty<\/code><\/b><\/p>\n<p>I miei contatti:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ortex\">@ortex<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"mailto:mywebstreet@gmail.com\">mywebstreet@gmail.com<\/a><\/noindex>\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/museria\">Gruppo Telegram in inglese.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/museria.com\/\">E il sito grazie al quale \u00e8 nata tutta questa idea.<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495058\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u044f \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0434\u043e\u043c\u0430\/\u043d\u0430 \u0443\u043b\u0438\u0446\u0435\/\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430\u0445 \u0438.\u0442.\u0434. \u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0432 \u043f\u043e\u0442\u043e\u043a\u0435, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u0438\u043c \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c. \u041f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u043b \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043e\u0434\u043d\u043e\u0439 \u201c\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439\u201d. \u0410 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0441\u0435\u043d. \u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u043b\u0430 api, \u043d\u0430 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80223,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80222","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u044f \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0434\u043e\u043c\u0430\/\u043d\u0430 \u0443\u043b\u0438\u0446\u0435\/\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430\u0445 \u0438.\u0442.\u0434. \u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0432 \u043f\u043e\u0442\u043e\u043a\u0435, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u0438\u043c \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c. \u041f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u043b \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043e\u0434\u043d\u043e\u0439 \u201c\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439\u201d. \u0410 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0441\u0435\u043d. \u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u043b\u0430 api, \u043d\u0430 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Museria \u2014 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043c\u0443\u0437\u044b\u043a\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u044f \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0434\u043e\u043c\u0430\/\u043d\u0430 \u0443\u043b\u0438\u0446\u0435\/\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430\u0445 \u0438.\u0442.\u0434. \u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0432 \u043f\u043e\u0442\u043e\u043a\u0435, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u0438\u043c \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c. \u041f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u043b \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043e\u0434\u043d\u043e\u0439 \u201c\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439\u201d. \u0410 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0441\u0435\u043d. \u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u043b\u0430 api, \u043d\u0430 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-04T11:42:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-04T11:42:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Museria \u2014 storage musicale decentralizzato | ProHoster","description":"Una volta ho deciso di scrivere un'app per selezionare musica da ascoltare a casa \/ per strada \/ durante gli allenamenti, ecc. E per far funzionare tutto questo in modo fluido, con il mio minimo coinvolgimento. Ho progettato l'architettura, creato un prototipo e alla fine mi sono trovato di fronte a un \"piccolo problema\". Non era chiaro da dove prendere i file delle canzoni. A quel punto, Vkontakte aveva gi\u00e0 chiuso l'API, mentre le grandi piattaforme musicali","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Museria \u2014 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043c\u0443\u0437\u044b\u043a\u0438 | ProHoster","og:description":"\u0421\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u044f \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0434\u043e\u043c\u0430\/\u043d\u0430 \u0443\u043b\u0438\u0446\u0435\/\u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430\u0445 \u0438.\u0442.\u0434. \u0418 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0432 \u043f\u043e\u0442\u043e\u043a\u0435, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u043e\u0438\u043c \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c. \u041f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043d\u0430\u0431\u0440\u043e\u0441\u0430\u043b \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043e\u0434\u043d\u043e\u0439 \u201c\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439\u201d. \u0410 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u044b \u043f\u0435\u0441\u0435\u043d. \u041a \u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u0443\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u043b\u0430 api, \u043d\u0430 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-04T11:42:18+00:00","article:modified_time":"2020-05-04T11:42:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80222","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:22:48","updated":"2022-10-08 10:56:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/80222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=80222"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/80222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/80223"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=80222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=80222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=80222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}