Ndisati ndatanga, ndinofanira kuenda
Muchinyorwa chino ndinoda kutarisa dhizaini ine basa rekuchengetedza mafaera, uye kuti ingashandiswa sei nemunhu wese.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ "Π½Π°ΠΊΠ°ΡΠΈΠ» Π±ΠΎΡΠΊΡ" Π½Π° ipfs, Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ ΠΌΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. Π ΡΠ΅Π»ΠΎΠΌ, Ρ ΡΡΠΈΡΠ°Ρ ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΡΡΡΡΠΌ. ΠΡΠΎΡΡΠΎ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ°Π²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΡΡΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΡΠ½ΠΈΠΆΠ°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ ΠΈ ΡΠ΅ΡΡ Π² ΡΠ΅Π»ΠΎΠΌ. ΠΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π΄ΡΠΎΠ±ΠΈΡΡ ΡΠ΅ΡΡ Π½Π° ΠΊΡΡΠΊΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ, ΡΠ½ΠΈΠΆΠ°Ρ ΠΎΠ±ΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ.
Saka storcle inoshandisa michina
- Π€Π°ΠΉΠ»Ρ ΠΌΠΎΠ³ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π· Π»ΡΠ±ΠΎΠΉ ΡΠ·Π΅Π».
- Mafaira anochengetwa zvachose, kwete mumabhuroko.
- Imwe neimwe faira ine yayo yakasarudzika yemukati hash yekuwedzera basa nayo.
- Mafaira anogona kudzokororwa kuti avimbike zvakanyanya
- Huwandu hwemafaira pane imwe node inongogumira chete neiyo faira system (pane musiyano, zvimwe nezvayo pazasi)
- Nhamba yefaira mu network inogumira nekukwanisa kupararira zvichienderana nehuwandu hwemanodhi akakodzera mune network, iyo mune yechipiri vhezheni ichakwanisa kushanda nenhamba isingaperi yemanodhi (zvimwe pane izvi mune imwe chinyorwa)
Muenzaniso wakajeka wekuti izvi zvinowanzoshanda sei kubva kuchirongwa:
Sevha:
const Node = require('storacle').Node;
(async () => {
try {
const node = new Node({
port: 4000,
hostname: 'localhost'
});
await node.init();
}
catch(err) {
console.error(err.stack);
process.exit(1);
}
})();
Mutengi:
const Client = require('storacle').Client;
(async () => {
try {
const client = new Client({
address: 'localhost:4000'
});
await client.init();
const hash = await client.storeFile('./my-file');
const link = await client.getFileLink(hash);
await client.removeFile(hash);
}
catch(err) {
console.error(err.stack);
process.exit(1);
}
})();
Mukati kutarisa
ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ²Π΅ΡΡ ΡΠ΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΠΌ ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² in-memory Π±Π°Π·Π΅ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½Π΅Ρ. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½Π° ΡΠΈΡΠΊΡΠ»ΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π° Π½Π΅ Π·Π°ΠΏΡΠ΅Ρ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ . Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²(> ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠΊΠ°ΠΆΠ΅ΠΌ) ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ Π½Π°Π³ΡΡΠ·ΠΊΠ°ΠΌ. Π Π»ΡΡΡΠ΅ Ρ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΠΎΠ±ΠΎΠ»ΡΡΠ΅ ΡΠ·Π»ΠΎΠ². ΠΡΠ»ΠΈ "ΡΠΈΡΡΠΈΠ»ΡΡΠΈΠΊ" ΠΎΡΠΊΠ»ΡΡΠ΅Π½, ΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅Ρ.
Iyo faira yekuchengetera ine 256 mafolda uye 2 mazinga ekudyara. Mafaira anochengetwa muchikamu chechipiri maforodha. Kureva, kana paine miriyoni. Pachave neanosvika makumi matanhatu nemazana mashanu mafaera mune imwe neimwe folda yakadaro (1 / sqrt(62500)).
Mazita eforodha anoumbwa kubva kufaira hashi kuitira kuti iwe ugone kukurumidza kuiwana kana iwe uchiziva hashi.
Ichi chimiro chakasarudzwa zvichienderana nenhamba huru yezvakasiyana zvekuchengetera zvinodiwa: kutsigirwa kune isina simba faira masisitimu, uko kusingafadzi kuve nemafaira akawanda mune imwe folda, nekukurumidza kutenderera kwemaforodha ese kana zvichidikanwa, nezvimwe. Imwe mhando yegoridhe zvinoreva.
caching
Paunenge uchiwedzera mafaira, uye kana uchiagamuchira, zvinongedzo kune mafaera zvinonyorerwa kune cache.
Nekuda kweizvi, kazhinji kazhinji hapana chikonzero chekupfuura netiweki yese uchitsvaga faira. Izvi zvinomhanyisa risiti yezvibatanidza uye zvinoderedza mutoro pane network. Caching zvakare inoitika kuburikidza ne http misoro.
Isomorphy
Mutengi akanyorwa mujavascript uye isomorphic, inogona kushandiswa zvakananga kubva kubrowser.
Unogona kurodha faira
Deferred links
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΠ΅ΠΉ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ "ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΡΡΡΠ»ΠΊΠ°". ΠΡΠΎ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ, Π·Π΄Π΅ΡΡ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ, Π° ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ΡΡΠ½Π΅ΡΡΡ ΠΊΠΎΠ³Π΄Π° ΡΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. ΠΡΠΎΡΡΠΎ ΠΏΡΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π² src ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΡΠ»ΠΊΡ ΠΈ Π²ΡΠ΅. ΠΠ΅ΠΉΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ.
Purogiramu inonzi Client
- async Client.prototype.storeFile() - kuchengetedza faira
- async Client.prototype.getFileLink() - kuwana chinongedzo chakananga kune faira
- async Client.prototype.getFileLinks() - kuwana runyorwa rwezvakananga zvinongedzo kune faira kubva kune ese node kwairi
- async Client.prototype.getFileToBuffer() - tora iyo faira mubuffer
- async Client.prototype.getFileToPath() - tora faira mufaira system
- async Client.prototype.getFileToBlob() - tora iyo faira mu blob (yebrowser vhezheni)
- async Client.prototype.removeFile() - bvisa faira
- Client.prototype.createRequestedFileLink() - gadzira chinongedzo chakamisikidzwa
Tumira mafaira kune imwe sevha
Kuti uendese mafaera kune imwe node, unogona:
- Ingoteedzera iyo yese yekuchengetedza folda pamwe chete nemaseting. (izvi zvinogona kusashanda mune ramangwana)
- Kopa chete folda ine mafaera. Asi, mune iyi kesi, iwe uchafanirwa kumhanya iyo basa kamwe chete node.normalizeFilesInfo()kuverengera zvakare data rese uye kuiisa mudhatabhesi.
- shandisa basa node.exportFiles()iyo inotanga kukopa mafaira.
Basic node settings
Paunotanga node yekuchengetedza, unogona kutsanangura ese anodiwa marongero.
Ini ndichatsanangura akanyanya kukosha, mamwe anogona kuwanikwa paGithub.
- storage.dataSize - saizi yefolda ine mafaera
- storage.tempSize - yenguva folda saizi
- storage.autoCleanSize - saizi shoma yekuchengetera inoda kuchengetwa. Kana iwe ukatsanangura iyi parameter, ipapo nzvimbo painongotanga kupera, mafaira mashoma akashandiswa anobviswa.
- file.maxSize β ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°
- file.minSize - saizi shoma yefaira
- file.preferredDuplicates - yakasarudzika nhamba yemafaira akadzokorora pane network
- file.mimeWhitelist - mhando dzemafaira anoshanda
- file.mimeBlacklist - mhando dzemafaira dzisina kunaka
- file.extWhitelist - faira rekuwedzera rakakodzera
- file.extBlacklist - mafaira ekuwedzera asina kunaka
- file.linkCache - akasiyana ekubatanidza caching marongero
Anenge ese ma parameter ane hukama nehukuru anogona kuiswa mune ese absolute uye akaenzana kukosha.
Kushanda kuburikidza nemutsara wekuraira
Raibhurari inogona kushandiswa kuburikidza nemutsara wekuraira. Kuti uite izvi unofanirwa kuiisa pasi rose: npm i -g dura. Mushure meizvi, iwe unogona kuvhura zviito zvinodikanwa kubva kune dhairekitori reprojekiti uko node iri. Semuyenzaniso, dura -a storeFile -f ./file.txt -c ./config.jskuwedzera faira. Zviito zvese zvinowanikwa mukati
Sei ungade izvi?
- ΠΡΠ»ΠΈ ΡΡ Ρ ΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄Π΅ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΌΡΠ·ΡΠΊΠΎΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ°ΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ duracle.
- Kana iwe ukashanda pane chero mamwe mapurojekiti kwaunoda kuchengeta mafaera nenzira yakagoverwa. Iwe unogona nyore kuvaka yako yakavharwa network, zviri nyore kugadzirisa node uye kuwedzera matsva kana zvichidikanwa.
- Kana iwe uchingoda kuchengeta yako webhusaiti mafaera kumwe kunhu uye zvakawandisa kuti iwe unyore zvese iwe pachako. Zvichida raibhurari iyi inokodzera zviri nani pane vamwe vari kwauri.
- ΠΡΠ»ΠΈ Ρ ΡΠ΅Π±Ρ ΠΏΡΠΎΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, Π½ΠΎ Ρ ΠΎΡΠ΅ΡΡ Π²ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠ°. Π’Ρ ΠΌΠΎΠΆΠ΅ΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Vandinoshamwaridzana navo:
Source: www.habr.com