Coder Social home page Coder Social logo

levymatan / geeks4geeks Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 299 KB

Collect solutions for Geeks4Geeks Problem of the Day coding questions. https://levymatan.github.io/Geeks4Geeks/

License: The Unlicense

CMake 8.13% C++ 64.33% C 1.67% Python 25.86%
cmake cpp algorithms begginer-friendly coding-questions github-workflows

geeks4geeks's Introduction

  • ๐Ÿ‘‹ Hi, Iโ€™m @LevyMatan
  • ๐Ÿ‘€ Iโ€™m interested in Embedded systems and Robotics.
  • ๐ŸŒฑ Iโ€™m currently learning cMake to enable me a more modern build system techniques
  • ๐Ÿ’ž๏ธ Iโ€™m looking to collaborate on DIY projects which involves some mechanic componenets.
  • ๐Ÿ“ซ How to reach me ... Here is a great way!

geeks4geeks's People

Contributors

levymatan avatar

Stargazers

 avatar

Watchers

 avatar

geeks4geeks's Issues

Add semantic versioning to CI

Add auto tags increments according to Semantic Versioning.

fix() --> increase VERSION.PATCH
feat() --> increase VERSION.MINOR
if commit message has: BREAKING-CHANGES in them: Increase VERSION.MAJOR

Also update the project's version

Time Complexity Analysis Library

Create a template library for time complexity analysis.
Should be a decorator like that take a function pointer, a parameter generation function,
Call the function N iteration with different parameter input length.
Summarize the performance against theoretical time complexity
Generate a log with plots

Create a debug utility header

Debug Utilities

Lets distinguish three cases of debug logs:

  • Development Debug: This is the most verbose debug log level. In development phase we usually want as much information as possible to follow. The informative logs should enable the developer follow the execution flow of the program with ease.
  • Maintenance Debug Mode: After a module/function is developed and tested, sometime there is a need to change/add/modify a dependency or change the code to allow new features. CI will run all tests made available by the developer, if a test fails, we would like to have some information to understand what is going on and help solve the bug.
  • Release Runtime Mode: Here we want to keep the debug information to the minimum. The debug information has its cost of memory and CPU clocks consumption, we would like to reduce it to be minimal.

Design Proposal

An header macros library with the three above level controlled by a preprocessor defines.
Development Debug we require build type to be Debug and define of an extra parameter
For example: cmake --build build --target all -D__DEV_DEBUG_ON__
Maintenance Debug Mode will be on in Debug mode.
Release Runtime Mode Will be without any debug info.

Debug Information

The debug information can be: Function start and End, function arguments values.
Flow indications in the programs.
Example:

void main()
{
    DEBUG_PRINT_FUNCTION_START()
    int x;
    printf("Dear user, please enter a number\n");
    scanf("%d", &x);

    if(x > GREEDY_THRESHOLD)
    {
        DEBUG_PRINT("Greedy user flow");
        greedy_user_function()
    }
    else
    {
        normal_flow()
    }
    DEBUG_PRINT_FUNCTION_END()
}

Embedded World

In the embedded business there is a need for neat debug mechanism.
Normally long and high bandwidth requiring logs are an issue.
We would like to be able to control the debug information without a huge impact on:

  • Memory consumption
  • Runtime execution performance
  • Correctability - need to have a separate (sometime it is duplicate) set of variables, never count on debug variable for program flow.

A great bonus is to be able to adjust the debug log levels at runtime!

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.