{"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\/sk\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","title":{"rendered":"Museria \u2014 decentralizovan\u00e9 \u00falo\u017eisko hudby","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Museria \u2014 decentralizovan\u00e9 \u00falo\u017eisko hudby\" src=\"\/wp-content\/uploads\/2020\/05\/e5323f70f0df3f3bb6fb92ae0544ad2f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRozhodol som sa raz nap\u00edsa\u0165 aplik\u00e1ciu, ktor\u00e1 by vyberala hudbu pre m\u0148a a umo\u017enila mi po\u010d\u00fava\u0165 ju doma, vonku, na tr\u00e9ningoch at\u010f. A aby to v\u0161etko fungovalo plynulo, s minim\u00e1lnym zapojen\u00edm z mojej strany. Vymyslel som architekt\u00faru, na\u010drtl prototyp a nakoniec som sa stretol s jedn\u00fdm \"mal\u00fdm probl\u00e9mom.\" <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nA nebolo jasn\u00e9, odkia\u013e z\u00edska\u0165 samotn\u00e9 s\u00fabory piesn\u00ed. V tomto momente u\u017e VKontakte uzavrelo API, na ve\u013ek\u00fdch hudobn\u00fdch port\u00e1loch to bolo tie\u017e bez n\u00e1deje, dokonca piesne sa poskytovali po \u010dastiach, aby sa predi\u0161lo parsovaniu. Zostali len nejak\u00e9 jednorazov\u00e9 weby s mno\u017estvom reklamy a r\u00f4zne pochybn\u00e9 programy na \u0165ahanie a in\u00e9 \"\u0161pinav\u00e9\" mo\u017enosti. Skr\u00e1tka, neexistovalo \u017eiadne poriadne rie\u0161enie. Samozrejme, m\u00f4\u017eete si k\u00fapi\u0165 predplatn\u00e9 na nejak\u00fa Yandex hudbu alebo podobne. Ale op\u00e4\u0165, tam nikde nie je otvoren\u00e9 verejn\u00e9 API a nem\u00e1te pr\u00edstup k hudbe programovo. Nieko\u013eko ve\u013ek\u00fdch spolo\u010dnost\u00ed v podstate obmedzilo ostatn\u00fdch v pr\u00edstupe k hudbe. Pre\u010do sa to vlastne stalo? Ke\u010f som sa hlb\u0161ie ponoril, bolo jasn\u00e9, \u017ee hlavn\u00fd probl\u00e9m spo\u010d\u00edva v autorsk\u00fdch pr\u00e1vach. S\u00fa\u010dasn\u00e9 rie\u0161enie v podobe predplatn\u00e9ho vyhovuje mnoh\u00fdm komer\u010dn\u00fdm autorom hudobn\u00fdch diel a t\u00fdmto spolo\u010dnostiam. Pri tom nekomer\u010dn\u00e1 a podmiene\u010dne komer\u010dn\u00e1 hudba sa tie\u017e dost\u00e1va na spolo\u010dn\u00fd zoznam. Bu\u010f plat\u00edte za v\u0161etko, alebo nepo\u010d\u00favate v\u00f4bec ni\u010d.<\/p>\n<p>A za\u010dal som rozm\u00fd\u0161\u013ea\u0165, \u010do s t\u00fdm v\u0161etk\u00fdm robi\u0165. Ako by sa dalo organizova\u0165 vo\u013en\u00e9 \u0161\u00edrenie hudby? \u010co by som robil, keby som s\u00e1m vytv\u00e1ral hudbu a chcel na tom zar\u00e1ba\u0165? P\u00e1\u010dilo by sa mi, keby sa moje piesne za\u010dali \u0161\u00edri\u0165 pir\u00e1tsky? Ak\u00e9 vlastne existuj\u00fa alternat\u00edvne rie\u0161enia? <\/p>\n<p>Nakoniec sa vytvorili dve hlavn\u00e9 probl\u00e9my, ktor\u00e9 je potrebn\u00e9 vyrie\u0161i\u0165:<\/p>\n<ul>\n<li>Organiz\u00e1cia vo\u013en\u00e9ho \u0161\u00edrenia hudby pohodln\u00fdmi pre v\u00e4\u010d\u0161inu \u013eud\u00ed met\u00f3dami, vr\u00e1tane programov\u00fdch.<\/li>\n<li>N\u00e1vrh alternat\u00edv pre tvorcov hudby na zar\u00e1banie<\/li>\n<\/ul>\n<p><\/p>\n<h3>Glob\u00e1lne decentralizovan\u00e9 \u00falo\u017eisko hudby<\/h3>\n<p>\nNa za\u010diatku som sa pok\u00fasil n\u00e1js\u0165 u\u017e existuj\u00face rie\u0161enia a vytvori\u0165 v\u0161etko na ich b\u00e1ze. Po ur\u010ditom \u010dase h\u013eadania ma ako prv\u00e9 up\u00fatalo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ipfs\/ipfs\">, ale to sa stalo presne v kontexte \u00falohy, ktor\u00fa rie\u0161im. Celkovo pova\u017eujem tento projekt za zauj\u00edmav\u00fd. Len sa mi viac p\u00e1\u010di mo\u017enos\u0165 vytv\u00e1ra\u0165 r\u00f4zne siete pre r\u00f4zne \u00falohy. To umo\u017e\u0148uje lep\u0161ie organizova\u0165 \u0161trukt\u00faru a zni\u017eova\u0165 z\u00e1\u0165a\u017e na jednotliv\u00fdch uzloch a na sie\u0165 ako celok. M\u00f4\u017ee sa dokonca aj v r\u00e1mci jedn\u00e9ho projektu, ak je to potrebn\u00e9, rozde\u013eova\u0165 sie\u0165 na \u010dasti pod\u013ea nejak\u00fdch krit\u00e9ri\u00ed, \u010do zni\u017euje celkov\u00fa z\u00e1\u0165a\u017e.<\/a><\/noindex>. Za\u010dal som realiz\u00e1ciu svojej my\u0161lienky, ale po ur\u010ditom \u010dase som objavil nieko\u013eko kritick\u00fdch probl\u00e9mov v tomto rie\u0161en\u00ed:<\/p>\n<ul>\n<li>Ipfs \u2014 \u00falo\u017eisko pre v\u0161etko a v\u0161ade. Obsahuje obr\u00e1zky, hudbu, vide\u00e1 a v\u0161etko, \u010do si vie\u0161 predstavi\u0165. V podstate je to obrovsk\u00e1 planet\u00e1rna \u00absmetisko\u00bb. Preto, ke\u010f spust\u00ed\u0161 svoj uzol, dost\u00e1va\u0161 sa okam\u017eite pod obrovsk\u00fd tlak. Stroj doslova trp\u00ed. <\/li>\n<li>Ak\u00fdsi nedokon\u010den\u00fd mechanizmus pre zber \u00abodpadkov\u00bb. Neviem, ako je to teraz, ale vtedy, ak si v konfigur\u00e1cii nastavil, \u017ee chce\u0161 obmedzi\u0165 \u00falo\u017eisko na desa\u0165 gigabajtov d\u00e1t, tak to ni\u010d neznamenalo. \u00dalo\u017eisko sa rozrastalo, ignoruj\u00fac mnoh\u00e9 konfigura\u010dn\u00e9 parametre. Nakoniec bolo potrebn\u00e9 ma\u0165 obrovsk\u00fd rezervn\u00fd disk, k\u00fdm ipfs zist\u00ed, ako zru\u0161i\u0165 nepotrebn\u00e9.<\/li>\n<li>V \u010dase pou\u017e\u00edvania kni\u017enice (neviem, ako je to teraz), klient nemal implementovan\u00e9 \u010dasov\u00e9 obmedzenia. Po\u0161le\u0161 po\u017eiadavku na z\u00edskanie s\u00faboru, a ak ho niet, proste vis\u00ed\u0161. Samozrejme, \u013eudia vymysleli r\u00f4zne obch\u00e1dzaj\u00face cesty, ktor\u00e9 \u010diasto\u010dne rie\u0161ili probl\u00e9m, ale to boli len \u0161kared\u00e9 r\u00fdchle opravy. Tak\u00e9to veci by mali by\u0165 prednastaven\u00e9.<\/li>\n<\/ul>\n<p>\nBolo tam e\u0161te ve\u013ea drobn\u00fdch probl\u00e9mov, celkov\u00fd dojem bol vtedy jednozna\u010dn\u00fd: toto sa ned\u00e1 pou\u017ei\u0165 na projekt. Pokra\u010doval som v h\u013eadan\u00ed \u00falo\u017eiska, sk\u00famal r\u00f4zne mo\u017enosti, ale ni\u010d vhodn\u00e9 som nena\u0161iel.<\/p>\n<p>Nakoniec som sa rozhodol, \u017ee sk\u00fasim nap\u00edsa\u0165 decentralizovan\u00e9 \u00falo\u017eisko s\u00e1m. Nech nie je medziplanet\u00e1rne, ale bude rie\u0161i\u0165 konkr\u00e9tny \u00fakol.<\/p>\n<p>Takto to dopadlo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/spreadable\">na organiz\u00e1ciu siete. Hlavn\u00e9 vlastnosti:<\/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>na organiz\u00e1ciu siete. Hlavn\u00e9 vlastnosti: <\/b> \u2014 to je z\u00e1kladn\u00e1, najni\u017e\u0161ia vrstva, ktor\u00e1 umo\u017e\u0148uje spoji\u0165 uzly do siete. Obsahuje algoritmus, ktor\u00fd som zatia\u013e implementoval len \u010diasto\u010dne, predpokladaj\u00fac pribli\u017ene 10000 serverov. Pln\u00e1 verzia algoritmu je ove\u013ea zlo\u017eitej\u0161ia na implement\u00e1ciu a vy\u017eadovala by e\u0161te nieko\u013eko mesiacov (mo\u017eno aj viac).<\/p>\n<p>Podrobne to v \u010dl\u00e1nku spreadable nebudem opisova\u0165, rad\u0161ej nap\u00ed\u0161em samostatn\u00fd \u010dl\u00e1nok niekedy. Tu len spomeniem niektor\u00e9 \u0161pecifik\u00e1:<\/p>\n<ul>\n<li>Funguje cez http\/https.<\/li>\n<li>M\u00f4\u017ee\u0161 vytvori\u0165 samostatn\u00fa sie\u0165 pre konkr\u00e9tny \u00fakol, \u010do v\u00fdrazne zn\u00ed\u017ei z\u00e1\u0165a\u017e na ka\u017ed\u00fd samostatn\u00fd projekt, ako keby boli v\u0161etky v jednej sieti.<\/li>\n<li>P\u00f4vodne bol premyslen\u00fd mechanizmus s \u010dasov\u00fdmi obmedzeniami a \u010fal\u0161\u00edmi drobnos\u0165ami. A to funguje pre v\u0161etky met\u00f3dy, ako v klientovi, tak v uzle. M\u00f4\u017ee\u0161 flexibilne spravova\u0165 parametre zo svojej aplik\u00e1cie.<\/li>\n<li>Kni\u017enica je nap\u00edsan\u00e1 v nodejs. Probl\u00e9my s v\u00fdkonom technol\u00f3gie s\u00fa kompenzovan\u00e9 decentralizovanou povahou. Za\u0165a\u017eenie sa d\u00e1 'rozprestrie\u0165' zv\u00fd\u0161en\u00edm po\u010dtu uzlov. Na opl\u00e1tku pon\u00faka ve\u013ea v\u00fdhod: obrovsk\u00e1 komunita, jednoduchos\u0165 a pohodlnos\u0165 pr\u00e1ce, izomorfn\u00fd klient, absence vonkaj\u0161\u00edch z\u00e1vislost\u00ed at\u010f.<\/li>\n<\/ul>\n<p>\n<b>storacle <\/b> \u2014 je vrstva dedi\u010dn\u00e1 po spreadable, ktor\u00e1 umo\u017e\u0148uje uklada\u0165 s\u00fabory v sieti. Ka\u017ed\u00fd s\u00fabor m\u00e1 svoj hash pod\u013ea obsahu, na z\u00e1klade ktor\u00e9ho ho je mo\u017en\u00e9 nesk\u00f4r z\u00edska\u0165. S\u00fabory sa nedel\u00eda na bloky, ale ukladaj\u00fa sa cel\u00e9.<\/p>\n<p><b>metastocle <\/b> \u2014 vrstva dedi\u010dn\u00e1 po spreadable, ktor\u00e1 umo\u017e\u0148uje uklada\u0165 v sieti d\u00e1ta, ale nie s\u00fabory. Rozhranie sa podob\u00e1 na nosql datab\u00e1zy. Je mo\u017en\u00e9, napr\u00edklad, prida\u0165 s\u00fabor do storacle, z\u00edska\u0165 jeho hash a zap\u00edsa\u0165 do metastocle s viazan\u00edm na nie\u010do.<\/p>\n<p><b>museria<\/b> \u2014 ded\u00ed po storacle a metastocle. T\u00e1to vrstva priamo zodpoved\u00e1 za ukladanie hudby. \u00dalo\u017eisko pracuje iba so s\u00fabormi mp3 a id3 tagmi. <\/p>\n<p>Ako 'k\u013e\u00fa\u010d' na piese\u0148 sa pou\u017e\u00edva jej cel\u00e9 n\u00e1zov vo forme <b>Interpret (TPE1) \u2014 N\u00e1zov (TIT2)<\/b>. Napr\u00edklad:<\/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>\nMaxim\u00e1lne podrobne zisti\u0165, ako sa formuj\u00fa n\u00e1zvy piesn\u00ed, m\u00f4\u017eete <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\/blob\/master\/src\/utils.js\">tu<\/a><\/noindex>. Mus\u00edte sa pozrie\u0165 na funkciu <b>utils.beautifySongTitle()<\/b>.<\/p>\n<p>Zhoda pod\u013ea k\u013e\u00fa\u010dov sa pova\u017euje za ur\u010dit\u00fd percentu\u00e1lny podiel stanoven\u00fd v nastaveniach uzla. Napr\u00edklad, hodnota 0.85 znamen\u00e1, \u017ee ak funkcia porovn\u00e1vania k\u013e\u00fa\u010dov (n\u00e1zvov piesn\u00ed) zist\u00ed podobnos\u0165 vy\u0161\u0161iu ako 85%, ide o t\u00fa ist\u00fa piese\u0148.<\/p>\n<p>Algoritmus na ur\u010denie podobnosti je tie\u017e tam, vo funkcii <b>utils.getSongSimilarity()<\/b>.<\/p>\n<p>Obal piesne, pre jeho neskor\u0161ie z\u00edskanie, sa taktie\u017e prip\u00e1ja cez tagy (<b>APIC<\/b>). V utilit\u00e1ch (utils) s\u00fa v\u0161etky potrebn\u00e9 met\u00f3dy na z\u00edskanie a spracovanie tagov.<\/p>\n<p>Pr\u00edklad pr\u00e1ce so skladovan\u00edm cez klienta si m\u00f4\u017eete pozrie\u0165 v <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria\">readme<\/a><\/noindex>.<\/p>\n<blockquote><p>V\u0161etky vy\u0161\u0161ie uveden\u00e9 vrstvy s\u00fa samostatn\u00e9 a m\u00f4\u017eu by\u0165 pou\u017eit\u00e9 samostatne ako ni\u017e\u0161ie vrstvy pre in\u00e9 projekty. Napr\u00edklad, u\u017e je teraz my\u0161lienka vytvori\u0165 vrstvu pre uchov\u00e1vanie kn\u00edh.<\/p><\/blockquote>\n<p>\n<b>museria-global<\/b> \u2014 je u\u017e nakonfigurovan\u00e9 git-repozit\u00e1r na spustenie vlastn\u00e9ho uzla v glob\u00e1lnej sieti hudby. Klonujete, <b>npm i &amp;&amp; npm<\/b> start a v podstate v\u0161etko. M\u00f4\u017eete to nastavi\u0165 podrobnej\u0161ie, spusti\u0165 v dockeri at\u010f. Podrobn\u00e9 inform\u00e1cie s\u00fa na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/museria-global#museria-global-storage-alpha-\">github-e<\/a><\/noindex>.<\/p>\n<p>Ke\u010f sa repozit\u00e1r aktualizuje, je potrebn\u00e9 aktualizova\u0165 aj svoj uzol. Ak sa zmen\u00ed hlavn\u00fa alebo ved\u013eaj\u0161iu verziu, t\u00e1to akcia je povinn\u00e1, inak bud\u00fa star\u00e9 uzly sie\u0165ou ignorovan\u00e9.<\/p>\n<p>Pracova\u0165 so skladbami je mo\u017en\u00e9 manu\u00e1lne aj programovo. Ka\u017ed\u00fd uzol sp\u00fa\u0161\u0165a server na r\u00f4zne \u00falohy. Medziin\u00fdm, pri n\u00e1v\u0161teve predvolen\u00e9ho koncov\u00e9ho bodu, dostanete rozhranie na pr\u00e1cu s hudbou. Napr\u00edklad, m\u00f4\u017eete \u00eds\u0165 na <noindex><a rel=\"nofollow\" href=\"http:\/\/storage.museria.com\">kore\u0148ov\u00fd uzol<\/a><\/noindex> (odkaz m\u00f4\u017ee by\u0165 nesk\u00f4r neaktu\u00e1lny, vstupn\u00e9 uzly je mo\u017en\u00e9 z\u00edska\u0165 aj v <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/museria\">telegrame<\/a><\/noindex>, alebo si pozrie\u0165 aktualiz\u00e1cie na GitHube).<\/p>\n<p>Tak m\u00f4\u017eete vyh\u013ead\u00e1va\u0165 a nahr\u00e1va\u0165 skladby do \u00falo\u017eiska. Nahr\u00e1vanie skladieb m\u00f4\u017ee prebieha\u0165 v dvoch re\u017eimoch: be\u017enom a moderovanom. Druh\u00fd re\u017eim znamen\u00e1, \u017ee pr\u00e1cu vedie \u010dlovek, nie program. Ak za\u0161krtnete t\u00fato mo\u017enos\u0165 pri prid\u00e1van\u00ed, bude potrebn\u00e9 vyrie\u0161i\u0165 captcha. Skladby je mo\u017en\u00e9 prid\u00e1va\u0165 s prioritami -1, 0 alebo 1. Prioritu 1 je mo\u017en\u00e9 stanovi\u0165 iba v moderovanom re\u017eime. Priority s\u00fa potrebn\u00e9 na to, aby \u00falo\u017eisko efekt\u00edvnej\u0161ie rozhodovalo, \u010do robi\u0165, ke\u010f sa sna\u017e\u00edte nahradi\u0165 u\u017e existuj\u00facu skladbu novou. \u010c\u00edm v\u00e4\u010d\u0161ia priorita, t\u00fdm v\u00e4\u010d\u0161ia \u0161anca, \u017ee prep\u00ed\u0161ete existuj\u00faci s\u00fabor. To pom\u00e1ha bojova\u0165 proti spamu a zvy\u0161uje kvalitu nahr\u00e1van\u00fdch skladieb. <\/p>\n<p>Ak za\u010dnete prid\u00e1va\u0165 skladby do \u00falo\u017eiska, sna\u017ete sa pripoji\u0165 aj obr\u00e1zky (cover), aj ke\u010f toto pole nie je povinn\u00e9. V 99% pr\u00edpadov s\u00fa prv\u00e9 obr\u00e1zky v Google pod\u013ea n\u00e1zvov skladieb obaly albumov.<\/p>\n<p>Ako technicky prebieha pridanie s\u00faborov, v skratke:<\/p>\n<ul>\n<li>Klient z\u00edska adresu vo\u013en\u00e9ho uzla, ktor\u00fd na ur\u010dit\u00fd \u010das sa stane koordin\u00e1torom.<\/li>\n<li>Spust\u00ed sa funkcia pridania skladby (\u010dlovekom alebo k\u00f3dom), uskuto\u010dn\u00ed sa po\u017eiadavka na pridanie na koncov\u00fd bod koordin\u00e1tora.<\/li>\n<li>Koordin\u00e1tor vypo\u010d\u00edta, ko\u013eko duplicitn\u00fdch k\u00f3pi\u00ed je potrebn\u00e9 uchova\u0165 (konfigurovate\u013en\u00fd parameter).<\/li>\n<li>H\u013eadaj\u00fa sa najvhodnej\u0161ie uzly na ulo\u017eenie.<\/li>\n<li>S\u00fabor sa priamo posiela na tieto uzly. <\/li>\n<\/ul>\n<p>\nAko technicky prebieha z\u00edskavanie s\u00faborov:<\/p>\n<ul>\n<li>Klient z\u00edska adresu vo\u013en\u00e9ho uzla, ktor\u00fd na ur\u010dit\u00fd \u010das sa stane koordin\u00e1torom.<\/li>\n<li>Spust\u00ed sa funkcia z\u00edskania skladby (\u010dlovekom alebo k\u00f3dom), uskuto\u010dn\u00ed sa po\u017eiadavka na z\u00edskanie na koncov\u00fd bod koordin\u00e1tora.<\/li>\n<li>Koordin\u00e1tor kontroluje pr\u00edtomnos\u0165 odkazu v cache. Ak tak\u00fd existuje a je funk\u010dn\u00fd, ihne\u010f sa vr\u00e1ti klientovi, inak sa preveria uzly na pr\u00edtomnos\u0165.<\/li>\n<li>Prebieha z\u00edskavanie s\u00faboru pod\u013ea odkazu, ak bol n\u00e1jden\u00fd. <\/li>\n<\/ul>\n<p><\/p>\n<h3>Alternat\u00edvy pre hudobn\u00fdch tvorcov<\/h3>\n<p>\nV\u017edy ma zauj\u00edmalo, ako mo\u017eno objekt\u00edvne ohodnoti\u0165 cenu mnoh\u00fdch kreat\u00edvnych diel. Pre\u010do napr\u00edklad niekto pon\u00faka svoj hudobn\u00fd album za 10 $? Alebo za 20 $, \u010di dokonca za 100 $. Kde je ten algoritmus? Ke\u010f hovor\u00edme o fyzickom produkte, alebo aj mnoh\u00fdch druhoch slu\u017eieb, m\u00f4\u017eeme aspo\u0148 vypo\u010d\u00edta\u0165 v\u00fdrobn\u00e9 n\u00e1klady a vych\u00e1dza\u0165 z tohto. <\/p>\n<p>Dobre, povedzme, \u017ee sme nastavili 10 $. Je to naozaj efekt\u00edvne? Povedzme, \u017ee som si niekde vypo\u010dul album alebo piese\u0148 z neho a rozhodol sa po\u010fakova\u0165. Ale pod\u013ea mojich pocitov a vlastn\u00fdch mo\u017enost\u00ed je 3 $ moj\u00edm stropom. A \u010do teraz? Pravdepodobne neurob\u00edm ni\u010d, tak ako v\u00e4\u010d\u0161ina \u013eud\u00ed. <\/p>\n<p>Nastaven\u00edm nejakej pevnej ceny za kreat\u00edvnu pr\u00e1cu sa jednoducho obmedzuje\u0161, ned\u00e1va\u0161 v\u00e4\u010d\u0161iemu po\u010dtu \u013eud\u00ed mo\u017enos\u0165 posla\u0165 ti men\u0161ie peniaze, ktor\u00e9 v s\u00fa\u010dte m\u00f4\u017eu by\u0165 v\u00e4\u010d\u0161ie ne\u017e to, \u010do k\u00fapi nieko\u013eko \u013eud\u00ed za cenu, ktor\u00fa si stanovil. Mysl\u00edm, \u017ee kreativita je presne t\u00e1 oblas\u0165, kde by mali dominova\u0165 dary. Na to je potrebn\u00e9:<\/p>\n<ul>\n<li>Nau\u010di\u0165 \u013eud\u00ed \u010fakova\u0165 tak\u00fdmto sp\u00f4sobom. Tvorcovia by to mali jasne uk\u00e1za\u0165, \u017ee by chceli prij\u00edma\u0165 dary, prid\u00e1va\u0165 odkazy na r\u00f4zne sp\u00f4soby platby a pod.<\/li>\n<li>Potrebujeme viac mechanizmov na zjednodu\u0161enie a posilnenie t\u00fdchto procesov. Napr\u00edklad vytvori\u0165 ak\u00fasi glob\u00e1lnu str\u00e1nku, kde sa daj\u00fa podpori\u0165 kreat\u00edvne diela prostredn\u00edctvom autorsk\u00fdch odkazov.\n<p>Povedzme, \u017ee odkaz je pribli\u017ene tak\u00fdto: <\/p>\n<p><b><code>http:\/\/someartistsdonationsite.site\/category\/artist?external-info<\/code><\/b><\/p>\n<p>Ak sa zameriavame na hudobn\u00edkov, takto:<\/p>\n<p><b><code>http:\/\/someartistsdonationsite.com\/music\/miyagi?song=blabla<\/code><\/b><\/p>\n<p>Interpret mus\u00ed overi\u0165 svoje prez\u00fdvky a pripoji\u0165 sa k nim.<\/p>\n<p>V klientovi museria prid\u00e1me funkciu generovania podobn\u00e9ho odkazu, a v\u0161etky projekty vyu\u017e\u00edvaj\u00face \u00falo\u017eisko m\u00f4\u017eu umiestni\u0165 na svoje weby\/aplik\u00e1cie tla\u010didl\u00e1 na dary s t\u00fdmito odkazmi ved\u013ea piesn\u00ed. Pou\u017e\u00edvatelia maj\u00fa ve\u013emi r\u00fdchlo a jednoducho mo\u017enos\u0165 posla\u0165 dar.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Pre\u010do je pre teba hudobn\u00e9 \u00falo\u017eisko d\u00f4le\u017eit\u00e9 a ako sa na tom m\u00f4\u017ee\u0161 z\u00fa\u010dastni\u0165?<\/h3>\n<p><\/p>\n<ul>\n<li>Ak pracuje\u0161 na projekte s\u00favisiacom s hudbou, alebo pl\u00e1nuje\u0161 tak\u00fd vytvori\u0165, potom pr\u00e1ve pre toto to v\u0161etko vzniklo. M\u00f4\u017ee\u0161 vyu\u017ei\u0165 museria na ukladanie a z\u00edskavanie piesn\u00ed, \u010d\u00edm zv\u00fd\u0161i\u0161 pr\u00edtok piesn\u00ed v sieti. Ak m\u00e1\u0161 z\u00e1rove\u0148 mo\u017enos\u0165 spusti\u0165 a udr\u017ea\u0165 aspo\u0148 jeden vlastn\u00fd uzol, bude to najlep\u0161ia invest\u00edcia do rozvoja siete.<\/li>\n<li>Mo\u017eno si pripraven\u00fd prevzia\u0165 in\u00fa rolu: pom\u00f4c\u0165 s k\u00f3dom, alebo vyplni\u0165 a moderova\u0165 datab\u00e1zu, \u0161\u00edri\u0165 inform\u00e1cie o projekte svojim zn\u00e1mym at\u010f.<\/li>\n<li>Mo\u017eno sa ti t\u00e1to my\u0161lienka p\u00e1\u010di a si ochotn\u00fd pom\u00f4c\u0165 finan\u010dne, aby to v\u0161etko \u017eilo a rozv\u00edjalo sa. \u010c\u00edm viac uzlov, t\u00fdm viac piesn\u00ed.<\/li>\n<li>Alebo mo\u017eno potrebuje\u0161 len z \u010dasu na \u010das n\u00e1js\u0165 a stiahnu\u0165 piese\u0148. M\u00f4\u017ee\u0161 to urobi\u0165 ve\u013emi jednoducho, napr\u00edklad cez <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/MuseriaBot\">telegramov\u00e9ho bota<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nProjekt je teraz v samotnej po\u010diato\u010dnej f\u00e1ze. Testovacia sie\u0165 je spusten\u00e1, uzly sa m\u00f4\u017eu \u010dasto re\u0161tartova\u0165, vy\u017eadova\u0165 aktualiz\u00e1cie a podobne. Ak po\u010das odhadovan\u00e9ho obdobia nevznikn\u00fa kritick\u00e9 probl\u00e9my, t\u00e1to sie\u0165 sa transformuje na hlavn\u00fa.<\/p>\n<p>Inform\u00e1cie o uzle zvonka: po\u010det piesn\u00ed, vo\u013en\u00e9 miesto at\u010f. si m\u00f4\u017ee\u0161 pozrie\u0165 cez odkaz vo forme <b><code>http:\/\/node-address\/status<\/code><\/b> alebo <b><code>http:\/\/node-address\/status?pretty<\/code><\/b><\/p>\n<p>Moje kontakty:<\/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\">Skupina na telegrame v angli\u010dtine.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/museria.com\/\">A samozrejme, str\u00e1nka, v\u010faka ktorej t\u00e1to my\u0161lienka vznikla.<\/a><\/noindex><\/li>\n<\/ul>\n<p>Zdroj: <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 5.0.3 - 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.\" \/>\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\/sk\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/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 decentralizovan\u00e9 \u00falo\u017eisko hudby | ProHoster","description":"Raz som sa rozhodol nap\u00edsa\u0165 aplik\u00e1ciu, aby.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/museria-deczentralizovannoe-hranilishhe-muzyki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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.","og:url":"https:\/\/prohoster.info\/sk\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/80222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=80222"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/80222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/80223"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=80222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=80222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=80222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}