Storaculum - decentralized file repono

Storaculum - decentralized file repono

Priusquam incipiam, relinquo ad priorem articulumut perspicuum sit quidnam loquimur.

In hoc articulo videre vellem accumsan tabularum thesaurariarum quae responsabilis est, et quomodo ab aliquo adhiberi potest. Storacle is a standalone librarynulla est directa connexio cum musica. Tabularium cuiusvis imagini ordinare potes.

In superiori articulo, "dolium volvebam" paulo supra ipfssed hoc ipsum accidit in contextu quaestionis quam solvebam. Overall, I think this project is cool. Modo potius facultatem ad creandi diversa retiacula pro diversis operibus. Hoc permittit ut structuram melius instituas et sarcinam in singulis nodis ac retis in totum minuas. Etiam intra unius incepti compagem, si opus est, retiaculum in frusta scindere potes secundum aliquas normas, et totum onus minuendo.

Itaque storacle utitur mechanism spreadable pro ordinandis retis. Res maiora:

  • Tabulae per nodi repositio addi possunt.
  • Tabulae integrae salvantur, non in caudices.
  • Quaelibet fasciculus suum unicum contentum habet ad ulteriora opera cum eo.
  • Files duplicari potest ad maiorem fidem
  • Numerus imaginum in una nodi limitatur tantum systematis fasciculi (exceptio, plura infra)
  • Numerus imaginum in retis limitatur facultatibus expansis secundum numerum nodis validorum in retis, quae in secunda versione cum infinitis nodis (more in alio articulo) operari poterit.

Simplex exemplum quomodo hoc generaliter operatur ex institutione:

Servo:

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);
  }
})();

Cliens:

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);
  }
})();

visum interiorem

Nihil lubet sub cucullo. Informationes de numero imaginum, eorum magnitudine et alia puncta summa in memoria database reponuntur et renovantur cum lima deleta et addita sunt, ideo non opus est ut ratio tabellae frequentius accedere. Exceptio est ut quisquiliarum collectori cum fasciculis circumferre debes cum ad certam tabularum magnitudinem ventum est, nec novas addere prohibemus. Hoc in casu, repositiones praeterire debes, et cum magno numero fasciculorum (> decies centena millia dicere) ad significant onera ducere potest. Et melius est files pauciores condere et plures nodos currere. Si "purus" debilis est, tunc quaestio talis non est.

Tabella repono constat ex 256 folders et 2 gradibus nidificandi. Tabulae in secundo gradu folder reponuntur. Hoc est, si decies 1 sunt. Tabulae circiter 62500 erunt in unaquaque tali folder (1000000 / sqrt(256)).

Folder nomina e tabella Nullam formantur ut celeriter accedere possis si Nullam scis.

Haec structura electa est secundum multitudinem diversarum repositorium requisita: subsidia pro infirmis systematibus fasciculi, in quibus non est optandum ut multa lima in uno folder, velociter percurrendo omnium folder, si opus sit, etc. Aurea quaedam mediocritas.

caching

Cum imagini addendo, tum recipiendo, nexus cum fasciculis scribentur cella.
Propter hoc persaepe necesse non est totam retiaculum in quaerendo limam percurrere. Hoc accelerat acceptionem nexuum ac sarcinam in retiaculis minuit. Caching etiam per http capitis.

Isomorphy

Cliens in Javascript scriptus est et est isomorphicus, directe e navigatro adhiberi potest. 
Potes upload lima https://github.com/ortexx/storacle/blob/master/dist/storacle.client.js sicut scriptum et accessum window.ClientStoracle ratio construendi vel importandi, etc.

Dilata nexus

Interesting notam quoque "differri referat". Haec est nexus fasciculi qui synchrone hic et nunc haberi potest, et tabella evellitur cum iam in repositione inventa est. Hoc commodissimum est, cum, exempli gratia, picturas quasdam in situ ostendere debes. Modo nexum differtum ponemus in src et id est. Multis casibus potes ascendere.

Clientem API

  • async Client.prototype.storeFile() - salvis tabella
  • async Client.prototype.getFileLink() - questus directus nexus ad lima
  • async Client.prototype.getFileLinks() - Indicem directorum nexuum cum fasciculo ex omnibus nodis ubi exstat
  • async Client.prototype.getFileToBuffer() - ut tabella in quiddam
  • async Client.prototype.getFileToPath () - lima ut a systema in tabella
  • async Client.prototype.getFileToBlob () - ut tabella in STILLA (pro pasco version)
  • async Client.prototype.removeFile() - lima delere
  • Client.prototype.createRequestedFileLink() - creare in diem differatur link

Exportare lima alteri servo

Ut tabellas in aliam nodi transferas, potes;

  • Iustus effingo totum repono folder cum uncinis. (Hoc non operatur in futurum)
  • Effingo solum folder cum files. Sed, hoc in casu, munus semel currere debes node.normalizeFilesInfo()recalculare omnia data et in datorum intrare.
  • uti munus node.exportFiles()quae exscribend testatem files incipiet.

Nodi basic occasus
Incipiens nodi repositionis, omnia necessaria occasus specificare potes.
praecipuas describam, reliqua reperiri possunt in Github.

  • storage.dataSize - magnitudinem folder cum files
  • storage.tempSize - tempus folder mole
  • storage.autoCleanSize - minimam quantitatem repositionis quae tenendae indiget. Si modulum hunc definias, quam primum spatium excurrere incipit, fasciculi usus minimus delebitur.
  • file.maxSize - maximum lima amplitudo
  • file.minSize - minimum magnitudo file
  • file.preferredDuplicates - malle numerum documenti duplicata in network
  • file.mimeWhitelist - valida file types
  • file.mimeBlacklist - irritum file types
  • file.extWhitelist - valid file extensiones
  • file.extBlacklist - irritum file extensiones
  • file.linkCache - varia pagina caching occasus

Omnes fere parametri ad dimensiones pertinentes tam absoluti quam relativi iniri possunt.

Operantes per order versus
Bibliothecam adhiberi potest per lineam mandatum. Hoc facere debes ut globaliter instituas: npm i -g storacle. Post haec, actiones necessarias e indice proiecti ubi nodi est mittere potes. Exempli gratia storaculum -a storeFile -f ./file.txt -c ./config.jstabella addere. Omnes actiones possunt inveniri in https://github.com/ortexx/storacle/blob/master/bin/actions.js

Quid hoc opus esset?

  • Si vis aliquod genus propositi decentralitatis creare in quo cogitas condere et operari cum lima utendi commodis modis. Exempli gratia, consilium musicae in nexu in principio usus articuli descriptum est storaculum.
  • Si in quibusvis aliis inceptis laboras ubi lima modo distributo condere debes. Facillime potes retia tua clausa, nodos molliter configurare et novas addere cum opus fuerit.
  • Si iustus postulo ut alicubi tabulas tuas websites condere et nimium est tibi scribere omnia teipsum. Fortasse haec bibliotheca aptior est quam alii in tua causa.
  • Si consilium habes in quo cum fasciculis laboras, sed omnes machinationes ex navigatro vis conficere. Servare codicem scribere vitare potes.

Contactus mei:

Source: www.habr.com