cachednerds / toolbox Goto Github PK
View Code? Open in Web Editor NEWA collection of helper tools developed and used by Cached Nerds
License: MIT License
A collection of helper tools developed and used by Cached Nerds
License: MIT License
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.
We need to research and choose a cross platform build system that we will use throughout all of our projects.
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.
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.
Implement the ConvertibleTo interface and Stringifiable subclass.
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.
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.
It would nice if every time we pushed our changes it would auto run cppcheck.
It would be nice if the Sinks could support the use of the << operator as a means of piping data into its containing resource.
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.
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.
We need to test and verify that the Logger is working as we expect. I have decided to try and use the Boost Test library for now.
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().
Test cases need to be written for the Sink Project.
Create the basic underlying Sink system that will be built upon with Synchronization.
The current implementation of the Logger is not thread-safe. We need to implement a concurrency model such as a readers/writers message queue system to facilitate synchronization.
Complete creating the Logger interface that will allow the logging of both strings and objects convertible to strings, and allow the setting and getting of the default and threshold log levels.
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.
We need to determine how to establish code coverage from Catch and be able to report this information to Codacy or a CI.
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.
Tup or a script should be able to generate documentation easily.
We need to be able to separate our projects into individual static libraries so that they can be developed separately and can be included into the projects that need them.
We should use #pragma once to ensure a single instance of a translation unit instead of the more error prone #define approach.
A heap allocated option type with smart-pointer semantics can be helpful.
A few features that could be useful:
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).
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.
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.
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.
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.
Test cases need to be written for the Conversion Project.
We use ZenHub to mange the Toolbox on github. A section in the contribution file should be added with comments about ZenHub usage.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.