Giter Site home page Giter Site logo

toolbox's People

Contributors

codacy-badger avatar damon-myers avatar dannypeck avatar technetos avatar xmclark avatar

Stargazers

 avatar

Watchers

 avatar  avatar

toolbox's Issues

Toolbox - Add known supported compilers and platforms to README

I have tested building Logger project on the windows platform. I have not tested compiling on

I was able to successfully compile and link Logger project using Visual Studio 2017.

The other compilers had issues but that may have been my fault with not knowing how to compile with them on windows.

I tried compiling with g++ 5.x and I had compiler errors because of nested namespaces not being supported in that version of the compiler. I believe a later version of g++ will support these features but I didn't try them.

I tried compiling with Clang 4.0.x and got compiler errors coming from boost. Not sure why. This should be investigated.

Research Compilation Systems

We need to research and choose a cross platform build system that we will use throughout all of our projects.

Toolbox - Separate the Conversion and Sink projects out of the Logger project

Description

Right now the Conversion and Sink projects are defined within the Logger project. These are individual projects in their own right and need to be moved to their own repositories.

This however requires that we have a system in place to allow us to include these project within our other projects, so we are currently blocked by that.

Determine a preferred doxygen style

A simple task to discuss the different styles of formatting Doxygen in source code. Research in to Doxygen syntax and configuration may be required. Some concerns are readability in source code and generated documents.

Fix ctime is deprecated

This warning is produced during build on Windows:

src\Logger.cpp:96:32: warning: 'ctime' is deprecated: This function or variable may be unsafe. Consider using ctime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [-Wdeprecated-declarations]

  std::string timestamp = std::ctime (&now);

                               ^

C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt\time.h:475:41: note: 'ctime' has been explicitly marked deprecated here

        static __inline char* __CRTDECL ctime(

                                        ^

1 warning generated.

Research tools and how-tos on using doxgen

Task to research and discuss preferred tools for using Doxygen in a cross-platform way. There may be plugins, command line tools, tips and tricks, best-practices, etc. that we should be informed about.

Sink - FileSink

We need to create a Synchronized FileSink that will allow us to log to a file. This Sink needs to be thread-safe. We need to also decide on what we are going to use for handling the files, ofstreams or maybe boost filesystem. We need to research these options.

Toolbox - Establish a build system for all of our C++ projects

We need to choose a build system to manage the compilation and linking of our projects. Maintaining a makefile is simply not realistic and is only a short-term solution. This should be very well thought out as it is something that will be very hard to change in the future.

Compile issues on GCC due to Time

Toolbox is failing to compile on Ubuntu 16.10 with gcc version 6.3.0 due to the preprocessor macros in the Time implementation, as well as passing a const char * in to strftime().

Logger - Filter log messages on a provided predicate

Description

It could be convenient to allow the definition of custom predicates that determine whether or not certain messages get logged.

The internal threshold level is currently built into the Logger and is doing a form of this.

Code Coverage

We need to determine how to establish code coverage from Catch and be able to report this information to Codacy or a CI.

Logger - Abstract out the formatting of the logged message

The current implementation of the logger is responsible for constructing the final message and adds the timestamp, level, and message to a json-ish format. This needs to be abstracted away so that the logger has no knowledge of the formatting.

Option type

Create Option type

A heap allocated option type with smart-pointer semantics can be helpful.
A few features that could be useful:

  • Functional methods for forEach, map, and filter
  • No direct access to underlying data
  • Utilize unique pointer as underlying data structure
  • No modification of underlying data, only copying

Toolbox - Standards

We need to establish standards for Git workflows, kanban board workflows when we establish a kanban board, we should also agree on a coding style.. (I am not super stressed about this one, still want it to be fun).

Integrate with CI and Host Documents

Doxygen should run on commits. CI or codacy seem like great options for running the script. The documents should be hosted on github or another service. There may be a documentation service out there that is free.

Design workflow for documenation with doxygen

Setup a workflow for devs to use doxygen to document source code. This should be partially planning and partially documenting. Some work will just be discussion and proposal. A small document describing a devs workflow may be required.

The end goal is a clear vision of how one contributes source code with documentation. A developer should have the necessary resources to get started.

Toolbox - Documentation

We need to establish how we want to provide documentation for our projects. Whether we use a tool like Doxygen or simply write ours out ourselves with some kind of pre-defined format. Either way we need to make sure that we document our projects and keep the documentation up to date.

Infrastructure

Description

This milestone encapsulates the tasks related to establishing our systems infrastructure such as our Build System, Kanban Board setup, creation of Milestones, creation of Labels, creation of Standards, and any other tasks / items related to the flow of project development.

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.