Giter Site home page Giter Site logo

davenport's People

Contributors

bobwall23 avatar coltfred avatar skeet70 avatar zmre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

davenport's Issues

Bucket passwords should not be passed around in plain text

I shudder when I see plain text passwords passed around and stored in config files or in source code. It seems like we ought to be able to help a user out with that being as we are a crypto company and all.

The approach would be to create a separate tool or an API or both for someone to input a password and get back something encrypted. Then when opening a bucket, maybe we have a plain text password option and maybe we have an encrypted password option. We'll decrypt it, but meanwhile wherever it was stored was at least somewhat protected.

Our protection can't be fantastic, but I believe it would be better than nothing. I would argue for generating a symmetric key using PBKDF1 using inputs that are specific to the calling application. Or better yet, the app provides some identifier (preferably app name and some random number that they store) and that can be used to generate a key that unlocks the password. So at least the app key is in code and the password is in the config file. Pretty low level of security, but still better than plain text passwords floating around.

Add index and index query capabilities

Simpler than arbitrary N1QL is the index capabilities of CouchBase 4. In particular, I mean the "Global Secondary Index" -- http://developer.couchbase.com/documentation/server/4.0/indexes/indexing-overview.html. See also: http://developer.couchbase.com/documentation/server/4.0/sdks/java-2.2/querying-n1ql.html

The thought here would be that you register a field to be indexed and then make lookups based on the indexed field. This should be more straight forward and simplified and relatively easy to model in MemInterpreter.

Rename interpreter

The fact that davenport is implemented using Scala free monads seems like a detail that could be hidden. The name "interpreter" doesn't seem to help much with comprehending the package and how to use it.

Add an ADT for error cases

Currently we package up errors into disjunctions that return any arbitrary Exception. The library would benefit more from a finite list of defined error conditions.

Daily snapshots are published incorrectly

Right now daily snapshots require you to specify -SNAPSHOT-SNAPSHOT which is ugly.

While we're at it, should add getting started directions for how to use snapshots.

Rename HashVer/hashVer to CommitVer/commitVer

I think the name "hashVer" may lead users to think they are responsible for computing and submitting this value. (Actually, reading the documentation from couchbase, I'm not even sure it is actually a hash).

Add N1QL access to interpreter capabilities

CouchBase 4 adds a sql-like query language that can be used to fetch lists of apps based on fields inside json docs. This might be very hard to represent for the MemInterpreter, which would be a requirement, but we could perhaps implement specific, strict subsets of N1QL . This would not need to support the SQL syntax, just stronger query capabilities.

The contributing guide should say what you need installed...

When attempting to run sbt previewSite I received an error about needing jekyll.

java.io.IOException: Cannot run program "jekyll" (in directory "/home/cfrederickson/src/github/coltfred/davenport/src/jekyll"): error=2, No such file or directory

It should mention you need Jekyll (and what version of Jekyll you need).

Add more error cases to the new errors ADT

In particular, we have these known general exceptions:

  • - The operation takes longer than the specified timeout: {@link TimeoutException} wrapped in a {@link RuntimeException}
  • - The producer outpaces the SDK: {@link BackpressureException}
  • - The operation had to be cancelled while on the wire or the retry strategy cancelled it instead of
  • retrying: {@link RequestCancelledException}
  • - The durability constraint could not be fulfilled because of a temporary or persistent problem:
  • {@link DurabilityException}.
  • - A CAS value was set on the {@link Document} and it did not match with the server: {@link CASMismatchException}
  • - The server is currently not able to process the request, retrying may help: {@link TemporaryFailureException}
  • - The server is out of memory: {@link CouchbaseOutOfMemoryException}
  • - Unexpected errors are caught and contained in a generic {@link CouchbaseException}.

I think we can put these into three buckets: CAS error, server error and connection error as a way to simplify further.

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.