Git Product home page Git Product logo

csharpkdb's People

Contributors

cdoyle-kx avatar csteppe-kx avatar sshanks-kx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

csharpkdb's Issues

Add Serialize and Deserialize methods to c.cs

Add explicit methods for Serialize and Deserialize to c.cs

Change will

  • support Serialization and deserialization of all data-types
  • allow unit-testing of writing and reading to buffers
  • not impact any existing functionality

kx.Test unit-test library

Add kx.Test unit-test library for testing

Initial check-in add unit-tests for public static methods

Add logic for running code-coverage reports using OpenCover and ReportGenerator

Rename private fields

Rename private fields to more meaningful terms

Change will

  • improve readability for other users
  • not impact existing functionality or unit-tests

XML documentation

Add XML comments to public members

Add compiler flags for publishing XML doc as part of build

IEquatable and IComparable support

Add industry standard implemenation of IEquatable and IComparable for helper classes

Cover

  • kx.c.Date
  • kx.c.KTimespan
  • kx.c.Minute
  • kx.c.Month
  • kx.c.Second

Update README

Update README.md file

  • add details on supported .NET framework and .NET core
  • add details for basic initialisation
  • add details of legacy change records
  • add details for running unit-tests and code-coverage report

README for beginners

Would be good to have a bit of an intro for a user new to C# of some pointers of what to install/run to build, run tests, generate doc & were you find the results e.g.

  • dev who knows other languages but has a 3rd party lib thats only available in C# so has to get up to speed
  • a student that been tasked with adding an interface with C#.

Ref: https://github.com/KxSystems/javakdb - start of some docs but needs update with where users find the jar, how to generate javadocs, etc.

May allow someone to get something running in mins, rather than having to wait till they read a c# book or some tutorials on using the build system/etc.

Refactor c.cs format

Refactor c.cs code to use standardised .NET format

This will help improve code readability

Run code through .NET Standard 2.0 release build and then decompile

Standard layout of class

  • fields
    -constructors
  • properties
  • methods
  • inner helper classes

Argument validation

Add argument checks for public methods to resolve roslyn:CA1062 warnings highlighted in SonarQube and FxCop scans

Change will

  • apply argument null checks to public methods
  • throw ArgumentNullException as appropriate
  • apply XML exception comments for any potential exceptions thrown

Benchmark tests

Investigate using BenchmarkDotNet framework to create performance tests for serialization and de-serialization

Tests will

  • cover serialization and deserialization of arrays of different object types
  • cover serialization and deserialization of arrays of different sizes
  • record metrics on duration of operations
  • record metrics on memory usage of operations

Explicit exception when Serialization fails.

When serialization throws an exception only general C# exceptions are returned with a stack trace of internal methods within the c.cs file. This means little to the user and leads to time wasted debugging other non issues when in reality their payload could potentially contain invalid data. It is suggested to return a more explicit KException that describes the situation and contains the inner exception.

FxCop CodeAnalysis

Add FxCop code-analysiser to project build

Long term will identify poor code practices and bugs in legacy c.cs

No async/await support

This is an industry standard for I/O operations and we should be following it. When an I/O operation is performed the compiler transforms any async I/O method into a form of state machine and can be awaited.ย  Once this method is awaited it frees the calling thread up and releases it back to the thread pool for other work while the IO is processing. Once the response comes back a new different thread is spawned to handle that response. This optimizes the number of threads in the pool saves resources.

We should be offering async versions of various calls that reach out to kdb via our TCP client implementation

Examples

May be useful to have some examples, if this can be compiled as part of the travis job, but avoiding being packaged up with the main lib.
Rather than code being on a doc, it'd make sure the code still builds with any potential changes made to the interface.
Some examples were on https://github.com/KxSystems/javakdb - these also included a bit of a guide to how to run (for someone thats never used kdb before, but might want to see something running). Note: the java docs for examples prob need improved further.

Publish Nuget package

Add script to allow creating Release version of csharpKDB library and publishing to Nuget feed

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.