Museria - gudang musik desentralisasi

Museria - gudang musik desentralisasi

Hiji poé kuring mutuskeun nulis hiji aplikasi pikeun milih musik keur kuring sorangan jeung ngadangukeun eta di imah / di jalan / workouts, jsb. Sareng supados sadayana ieu jalan dina aliran, kalayan partisipasi minimal ti kuring. Kuring datang ka hiji arsitéktur, sketsa kaluar prototipe, sarta ahirna lumpat kana hiji "masalah leutik".

Sareng teu jelas dimana kéngingkeun file lagu nyalira. Ku waktos ieu, VKontakte parantos nutup api, dina portal musik ageung sadayana ogé dibunyikeun, bahkan lagu-lagu dipasihkeun sapotong-potong supados henteu di-parse. Kabéh anu tetep aya sababaraha situs fly-demi-wengi individu kalawan ton iklan jeung sagala sorts sampah, sagala sorts program grabber dubious sarta séjén "kotor" pilihan. Sacara umum, teu hiji-hijina solusi anu saé. Anjeun tiasa, tangtosna, mésér langganan kana sababaraha musik Yandex atanapi anu sanés. Tapi deui, teu aya API umum kabuka dimana waé sareng anjeun henteu ngagaduhan aksés kana musik sacara program. Sababaraha perusahaan ageung dasarna ngabatesan aksés batur kana musik. Naha ieu kajadian pisan? Digging deeper, éta janten jelas yén masalah utama éta hak cipta. Solusi ayeuna dina bentuk langganan cocog sareng seueur pangarang musik komérsial sareng perusahaan anu sami. Dina waktos anu sami, musik non-komérsial sareng semi-komérsial ogé kalebet kana daptar umum. Anjeun boh mayar sagalana atawa ngadengekeun nanaon pisan.

Sareng kuring mimiti mikir naon anu kudu dilakukeun ku sadayana ieu. Kumaha urang tiasa ngatur distribusi musik gratis? Naon anu bakal kuring laksanakeun upami kuring nyiptakeun musik sorangan sareng hoyong kéngingkeun artos? Abdi hoyong upami lagu abdi dibajak? Naon solusi alternatif anu aya?

Hasilna, aya dua masalah utama anu kedah direngsekeun:

  • Organisasi distribusi musik gratis nganggo metode anu cocog pikeun kalolobaan jalma, kalebet parangkat lunak.
  • Nawiskeun alternatif pikeun pencipta musik pikeun nyieun duit

Panyimpen musik desentralisasi global

Mimitina, kuring nyobian milarian solusi anu tos aya sareng nyiptakeun sadayana dumasar kana ieu. Saatos sababaraha waktos milarian, anu munggaran anu kuring resep nyaéta ipfs. Kuring mimiti ngalaksanakeun ideu, tapi saatos sababaraha waktos kuring mendakan sababaraha masalah kritis dina solusi ieu:

  • Ipfs - gudang pikeun sagalana jeung dulur. Aya gambar sareng musik sareng video sareng sadaya anu anjeun pikahoyong. Sacara umum, sapertos "tong sampah" planét ageung. Janten, nalika anjeun ngaluncurkeun titik anjeun, anjeun langsung nampi beban anu ageung. Mobilna ukur ngagigelan nyeri.
  • Sababaraha jenis mékanisme ngumpulkeun "sampah" tacan beres. Abdi henteu terang kumaha ayeuna, tapi dina waktos éta, upami anjeun nyerat dina config yén anjeun badé ngabatesan panyimpenan kana sapuluh gigabyte data, maka éta henteu hartosna nanaon. Panyimpenan naék, teu malire seueur parameter konfigurasi. Hasilna, anjeun kedah gaduh cadangan hard disk anu ageung dugi ka ipfs terang kumaha cara ngareset anu teu perlu.
  • Dina waktu ngagunakeun perpustakaan (Kuring henteu weruh kumaha ayeuna), klien nu teu boga timeouts dilaksanakeun. Anjeun ngirim pamundut pikeun nampa file, sarta lamun teu aya, lajeng Anjeun ngan ngagantung. Tangtu, jalma datang nepi ka sagala sorts workarounds nu sabagean direngsekeun masalah, tapi ieu crutches. Hal-hal ieu kedah kaluar tina kotak.

Aya kénéh loba masalah leutik, sarta gambaran éta jelas: ieu teu bisa dipaké pikeun proyek. Kuring terus neangan fasilitas gudang, Ngajalajah pilihan béda, tapi pernah kapanggih nanaon cocog.

Tungtungna, kuring mutuskeun yén éta patut nyobian nulis gudang desentralisasi sorangan. Sanaos henteu nyamar janten antarplanét, éta bakal ngabéréskeun tugas anu khusus.

Jeung kitu tétéla nyebar, gudang, métastokel, musium, museum-global.

nyebar - Ieu utama, lapisan panghandapna nu ngidinan Anjeun pikeun ngagabungkeun titik kana jaringan. Ieu ngandung hiji algoritma, nu Kuring geus jadi jauh dilaksanakeun sabagean dumasar kana ngeunaan 10000 server. Algoritma versi lengkep langkung hese pikeun dilaksanakeun sareng peryogi sababaraha bulan tambahan (meureun deui).

Kuring moal ngajelaskeun sacara rinci anu tiasa disebarkeun dina tulisan ieu; langkung saé nyerat anu misah dina hiji dinten. Di dieu kuring ngan bakal nyatet sababaraha fitur:

  • Gawéna via http/https.
  • Anjeun tiasa nyiptakeun jaringan anu misah pikeun tugas khusus, anu sacara signifikan ngirangan beban dina unggal proyék individu tibatan upami aranjeunna sadayana dina jaringan anu sami.
  • Mékanisme sareng waktos waktos sareng hal-hal alit sanésna mimitina dipikirkeun. Sareng ieu tiasa dianggo pikeun sadaya metode dina klien sareng dina titik. Anjeun tiasa sacara fleksibel ngatur setélan tina jero aplikasi anjeun.
  • Perpustakaan ditulis dina nodejs. Masalah kinerja tumpukan diimbangi ku sifat desentralisasi na. Beban tiasa "nyebarkeun" ku cara ningkatkeun jumlah titik. Sabalikna, aya seueur kauntungan: komunitas anu ageung, kesederhanaan sareng betah dianggo, klien isomorphic, teu aya katergantungan éksternal, jsb.

gudang nyaéta lapisan warisan ti spreadable nu ngidinan Anjeun pikeun nyimpen file dina jaringan. Unggal file gaduh hash sorangan tina eusina, anu tiasa dianggo pikeun nyandak deui engké. File henteu dibagi kana blok, tapi disimpen sadayana.

métastokel - lapisan diwariskeun ti spreadable, nu ngidinan Anjeun pikeun nyimpen data dina jaringan, tapi teu file. Antarbeungeutna sami sareng database Nosql. Anjeun tiasa, contona, nambahkeun file ka storacle, meunang Hash na jeung nulis ka metastocle kalawan tumbu ka hiji hal.

musium - diwariskeun ti storacle na metastocle. Lapisan ieu tanggung jawab langsung pikeun nyimpen musik. Panyimpenan ngan ukur dianggo sareng file mp3 sareng tag id3.

Salaku "konci" pikeun lagu, ngaran lengkep na dipaké dina formulir Artis (TPE1) - Judul (TIT2). Contona:

  • Brimstone - The Beungbeurat
  • Hi-rez - Lost My Way (feat. Emilio Rojas, Dani Devinci)

Anjeun tiasa mendakan saloba mungkin kumaha judul lagu kabentuk. di dieu. Anjeun kudu kasampak di fungsi utils.beautifySongTitle().

Persentase patandingan anu ditetepkeun dina setélan titik dianggap cocog. Contona, nilai 0.85 hartina lamun fungsi ngabandingkeun konci (ngaran lagu) kapanggih kasaruaan leuwih ti 85%, mangka éta lagu sarua.

Algoritma pikeun nangtukeun kasaruaan aya, dina fungsi utils.getSongSimilarity().

Panutup kana lagu, pikeun resi engké, ogé tiasa napel via tag (APIC). Utiliti gaduh sadaya metode anu dipikabutuh pikeun nampi sareng ngolah tag.

Conto gawé bareng gudang ngaliwatan klien bisa kapanggih dina readme.

Sadaya lapisan di luhur mangrupikeun mandiri sareng tiasa dianggo nyalira salaku lapisan handap pikeun proyék-proyék sanés. Contona, geus aya ide pikeun nyieun lapisan pikeun nyimpen buku.

museum-global mangrupikeun gudang git anu parantos dikonpigurasi pikeun ngaluncurkeun titik anjeun sorangan dina jaringan musik global. Kloning npm kuring && npm ngamimitian jeung éta dasarna eta. Anjeun tiasa ngonpigurasikeunana sacara langkung rinci, ngajalankeun éta di Docker, jsb. Inpo wincik sadia di github.

Nalika Repository diropéa, anjeun kedah ngapdet titik anjeun. Upami nomer vérsi ageung atanapi minor robih, maka tindakan ieu wajib, upami henteu, titik-titik anu lami bakal dipaliré ku jaringan.

Anjeun tiasa damel sareng lagu sacara manual sareng program. Unggal titik ngajalankeun server pikeun tugas béda. Kaasup, nalika anjeun nganjang ka tungtung standar, anjeun bakal nampi antarmuka pikeun damel sareng musik. Salaku conto, anjeun tiasa angkat ka titik akar (Tumbu bisa jadi teu relevan engké, titik input ogé bisa diala dina telegram, atawa néangan apdet on Github).

Ku cara ieu anjeun tiasa milarian sareng unggah lagu ka panyimpenan. Unggah lagu tiasa lumangsung dina dua mode: normal sareng moderated. Modeu kadua hartosna yén pagawéan dilaksanakeun ku jalma, sanés program. Sareng upami anjeun pariksa kotak ieu nalika nambihan, anjeun kedah ngabéréskeun captcha. Lagu bisa ditambahkeun kalawan prioritas -1, 0 atawa 1. Prioritas 1 ngan bisa diatur dina modeu moderated. Prioritas diperyogikeun supados panyimpen tiasa langkung efektif mutuskeun naon anu kudu dilakukeun nalika anjeun nyobian ngagentos lagu anu tos aya sareng anu énggal. Nu leuwih luhur prioritas, leuwih gampang anjeun nimpa hiji file aya. Ieu ngabantosan ngalawan spam sareng ningkatkeun kualitas lagu anu diunduh.

Upami anjeun mimiti nambihan lagu kana panyimpenan anjeun, cobian ngagantelkeun gambar (panutup), sanaos kolom ieu henteu diperyogikeun. Dina 99% kasus, gambar munggaran dina Google dumasar kana judul lagu nyaéta panutup albeum.

Kumaha téhnisna nambahkeun file lumangsung, dina nutshell:

  • Klién nampi alamat titik gratis, anu bakal janten koordinator sakedap.
  • Fungsi nambahkeun lagu dipicu (ku jalma atawa kode), sarta pamundut dijieun pikeun nambahkeun koordinator ka titik tungtung.
  • Koordinator ngitung sabaraha duplikat anu kedah disimpen (parameter anu tiasa dikonfigurasi).
  • Titik anu paling cocog pikeun disimpen dipilarian.
  • Berkas langsung ka titik ieu.

Kumaha téknisna file ditampi:

  • Klién nampi alamat titik gratis, anu bakal janten koordinator sakedap.
  • Fungsi narima lagu (ku jalma atawa kode a) dipicu, sarta pamundut dijieun pikeun nampa eta di titik tungtung koordinator urang.
  • Koordinator mariksa ayana tautan dina cache. Upami aya hiji sareng éta tiasa dianggo, éta langsung dipulangkeun ka klien, upami henteu, titik-titik dijajal pikeun kasadiaan.
  • Berkas ditampi tina tautan, upami aya anu kapendak.

Alternatif pikeun Music Creators

Kuring geus salawasna geus kabetot dina sual kumaha bisa obyektif evaluate nilai loba karya kreatif? Naha, contona, hiji jalma nawiskeun albeum musikna kanggo $10? Boh pikeun $20 atanapi $100. Dimana algoritmana? Nalika, contona, urang ngobrol ngeunaan sababaraha produk fisik, atanapi malah seueur jinis jasa, maka urang sahenteuna tiasa ngitung biaya sareng teraskeun ti éta.

Oké, hayu urang bet $10. Ieu pisan éféktif? Anggap kuring ngadangukeun albeum dimana waé atanapi lagu ti dinya sareng mutuskeun pikeun nunjukkeun rasa syukur kuring. Tapi numutkeun parasaan kuring sareng kamampuan kuring sorangan, $ 3 mangrupikeun siling kuring. Janten naon anu kedah urang pigawé? Paling dipikaresep kuring ngan moal ngalakukeun nanaon, kawas kalolobaan jalma.

Ku netepkeun sababaraha harga tetep pikeun karya kreatif, anjeun ngan saukur ngawatesan diri, nyegah sajumlah badag jalma ti ngirim anjeun kurang duit, nu dina total bisa jadi leuwih impressive ti jalma anu bakal meuli di harga nu disetel. Sigana mah kreativitas téh persis wewengkon mana sumbangan kedah aturan munggaran. Jang ngalampahkeun ieu anjeun peryogi:

  • Ngajarkeun jalma pikeun nganuhunkeun ku cara ieu. Panyipta sorangan kedah jelas nunjukkeun yén aranjeunna hoyong nampi sumbangan, nambihan tautan kana metode pamayaran anu béda di mana waé, jsb.
  • Langkung seueur mékanisme anu diperyogikeun pikeun nyederhanakeun sareng nguatkeun prosés ieu. Salaku conto, jieun sababaraha jinis situs wéb global dimana anjeun tiasa nyumbang pikeun kréativitas nganggo tautan hak cipta.

    Sebutkeun tautanna sapertos kieu:

    http://someartistsdonationsite.site/category/artist?external-info

    Upami urang ngahususkeun kana musisi, maka:

    http://someartistsdonationsite.com/music/miyagi?song=blabla

    Pelaku kedah pariksa nickname na sareng ngagantelkeunana.

    Urang nambahkeun fungsi pikeun generating link sapertos ka klien museria, sarta sakabeh proyék ngagunakeun Repository nu bisa nempatkeun tombol sumbangan kalawan tumbu ieu gigireun lagu dina situs web maranéhanana / aplikasi. Pamaké boga kasempetan pikeun nyieun sumbangan pisan gancang sarta gampang. Alami, pendekatan ieu bisa dipaké dina sagala proyék jeung kategori kreativitas, teu ngan ngaliwatan gudang.

Naha persis anjeun peryogi fasilitas panyimpen musik, sareng kumaha anjeun tiasa ilubiung dina éta?

  • Upami anjeun nuju damel dina proyék anu aya hubunganana sareng musik, atanapi ngarencanakeun nyiptakeunana, maka ieu mangrupikeun anu dimaksudkeun pikeun sadayana. Anjeun tiasa nganggo museria pikeun nyimpen sareng nyandak lagu, ningkatkeun aliran lagu online. Upami, dina waktos anu sami, anjeun gaduh kamampuan pikeun ngangkat sareng nahan sahenteuna hiji titik anjeun nyalira, maka ieu bakal janten kontribusi anu pangsaéna pikeun pangwangunan jaringan.
  • Panginten anjeun siap nyandak sababaraha peran anu sanés: ngabantosan kode, atanapi eusian sareng sedeng database, nyebarkeun inpormasi ngeunaan proyék ka réréncangan anjeun, jsb.
  • Panginten anjeun resep ideu sareng siap ngabantosan kauangan supados sadayana hirup sareng mekar. Beuki titik, beuki loba lagu.
  • Atawa anjeun ngan perlu neangan tur ngundeur lagu di sawatara titik. Anjeun tiasa ngalakukeun ieu pisan basajan, contona, ngaliwatan bot telegram.

Proyék ayeuna dina tahap awal. Jaringan uji parantos diluncurkeun, titik-titik tiasa sering reboot, peryogi apdet, jsb. Upami teu aya masalah kritis salami periode évaluasi, jaringan anu sami ieu dirobih janten jaringan utama.

Anjeun tiasa ningali inpormasi ngeunaan titik ti luar: jumlah lagu, rohangan bébas, jsb, nganggo tautan sapertos http://node-address/status atawa http://node-address/status?pretty

Kontak abdi:

sumber: www.habr.com

Tambahkeun komentar