Git Product home page Git Product logo

diztl's People

Contributors

codacy-badger avatar gravetii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

diztl's Issues

Allow to download entire folder enclosing a file

  • Right now, the user is given the option of downloading only files and not the enclosing folders if the user so wishes.
  • Scope of this issue is to somehow give user the option to see what other files are present in the enclosing folder of a file and download the entire folder if he/she wishes.

How to handle file changes during download?

  • How to detect file changes in the host node when another node is downloading the file?
  • Use file's ModTime() to check if file has been modified after it was indexed. Re-calculate checksum if the modification happened and send that checksum to the downloading node.
  • Another idea is to acquire an OS-level lock on the file to be downloaded so that the user isn't allowed to modify the file.

Configure logging levels

  • Right now, there's no configuration for logging levels like info, debug etc.
  • Go's logging does not provide such capabilities.
  • Solution is to implement log levels on top of the standard lib or use some other third-party lib.

Create file in temporary folder and move it to output folder after download

...after verifying checksum.

  • This is necessary because it's better not to give the user a chance to tamper with a partially downloaded file. Also, in case the download fails for some reason (checksum doesn't match), then it's easier to cleanup if the file was only created in the temporary folder in the first place.

no Go files

$ go get -u -v github.com/gravetii/diztl
github.com/gravetii/diztl (download)
package github.com/gravetii/diztl: no Go files in $HOMR/go/src/github.com/gravetii/diztl

Ability to cancel an ongoing download

  • User should be able to cancel an ongoing download if he so wishes.
  • The cancellation should be graceful. For instance, temp file should be deleted etc.

Check if file exists before downloading

  • Earlier, this was implicitly handled because the file was directly downloaded to the output folder.
  • Now, because the file is first downloaded to the temporary folder, it's necessary to check if the file with given name already exists in the output folder before starting the download.

Chunk size configuration between uploader and downloader

  • Both the parties should somehow share a contract for the chunk size.
  • Right now, the value is part of config, so it's possible that either party changes it.
  • Receiver should have the say in defining the chunk size that it's comfortable with, and sender should abide by it.

Size of downloaded file is slightly bigger than that of source file

For eg., a file of size 276.5 MB on one node when downloaded by another node has a size of 276.8 MB.

This happens because the last chunk of the file has lesser bytes than the configured chunk buffer size. As a result, when the copied slice of bytes is transmitted over the network, it is padded by empty bytes.

This is fixed in 7635bba.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.