Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
I wrote - way back - a quick and dirty little program to find people who had attached their own hubs/switches to the network. I have just started dabbling in Perl and SNMP, so the first few scripts were quite horrible, inefficient, and (worst) similar to each other.

Several years later, the tool is still in use, but has a built-in Web interface (that needs to be re-written to use CGI;, now that I know how), many different kinds of reports, much better SNMP handling, and a built-in arbitrary MIB query tool for the desparate debugger (usually me).

Naturally, only one of these functions is actually used by any number of people, despite the fact that I hear them whine every day about not having this piece of info or how the ports are set on xx device. "~ has done that for years," I say. Blank stare. Sigh.

At least there are two guys who use some of the more interesting features on a regular basis. These two understand 'intelligent laziness'. Sure, you *could* do it manually, but what's the point, especially when you need to do it accurately, and you need to do it 30 times?

Ironically, the best thing to come out of the whole project - aside from my drastic knowledge gain in Perl, SNMP, and several other related topics - is that a lot of the app is written as modules. Originally, this was just to speed the thing up, since modules (and SelfLoader) were a great way to only load and interpret the code for the report I wanted. But later, I realized that several of the modules became what modules are meant for: I'd built a fairly functional API!

Since then, I've used those modules (and CGI, and...) to create several other Web apps (and cron jobs), and those for some reason are much more appreciated. Go figure.

The whole thing is due for another rewrite. I still do a lot of things manually that Net::IP, Net::IPv4, CGI, several other modules do better and faster. But it was certainly fun!

If anybody wants to play with the app, it's called 'JScan' (named after me, originally, since at first I didn't anticipate that others would use it), and is at JScan.

In reply to Tools ignored (or misused) by Rhys
in thread That screwdriver looks like a hammer... by tilly

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    [Corion]: On the upside, I spend a lot of time thinking this weekend about how to actually implement rate limiting for futures, and if things work out, maybe even loading a configuration from an external file makes sense
    [Corion]: I've also found some interesting invariants that I have to think/write about more. A simple rate limiter will never change the order of the input, while a limiter that allows for parallel execution will change the order. But my API currently allows for bo
    [Corion]: ... for both, and I'm not sure if I want to add the cruft from the parallel API (a token that you need to hold on to while you hold the lock) to the rate limiting API too, to allow seamless up/downgrades, or not.
    [Corion]: Also, rate limiting will look great with await: my $token = await $limiter-> limit($hostname); instead of my $f = $limiter->limit( $hostname )->then(sub { my( $token)=@_; ... });

    How do I use this? | Other CB clients
    Other Users?
    Others rifling through the Monastery: (9)
    As of 2017-10-23 08:25 GMT
    Find Nodes?
      Voting Booth?
      My fridge is mostly full of:

      Results (277 votes). Check out past polls.