Git Product home page Git Product logo

pipanel's Introduction

๐Ÿ‘‹ Howdy, I'm Ben.

I'm a computer science student at Clemson University. You'll find various projects that I've worked on over time hosted here.

pipanel's People

Contributors

benjetson avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

fossabot

pipanel's Issues

Improve logging with handler context

At the present time, it is not possible to identify which request from the server caused an error to occur. Primarily, this is caused by the lack of context at the handler level.

  • Incoming request contexts need to be tagged with a request identifier so that they can be mapped back to the request that triggered them in the logs.
  • Context needs to be an argument to all request handlers.
  • PiPanel needs a custom logger that accepts a context as a parameter, writing the request ID with the log messages.

Make errors traceable

Use pkg/errors package for wrapping errors to improve traceability; attach a stack trace to all errors.

Make TTSAlerter not hang while reading

The current implementation of TTSAlerter causes the request handler to hang while the alert message is read. If the message is long, this significantly delays the time for responding to the request.

Consider handling this asynchronously.

Make GTKAlerter user configurable

  • Font size preference
  • Window size preference
  • Icon size preference
  • Default icon preference
  • Default timeout preference
  • Min/Max timeout preference
  • Enable/disable perpetual alerts

Improve handling of asynchronous errors

Several tasks in PiPanel are completed asynchronously by request handlers, often without any goroutine monitoring the results. Handling of these errors needs to be improved, at the minimum writing a log with the trace to the console.

Fix default config file location

os.Open(`~/pipanel_config.json`)

This will always fail because ~ is not expanded as it ought to be. Consider parsing the home directory from $HOME or other means.

Guard GTKAlerter.windows from race conditions

Because of the server implementation, it is possible for multiple alerts events to be passed to an Alerter simultaneously. Therefore, it is necessary to protect the windows field of GTKAlerter with a mutex to avoid race conditions.

Timeout for request handlers

Request handlers should complete their task and return control to the server within a certain amount of time, such that the client can receive a response in a timely manner.

If the request takes too long, its context should be canceled and request handlers should stop processing the event.

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.