To avoid ‘l33t hax0rs’, and generally keep your app purdy like its nice to know when you’ve got a vulnerability.
It’s also super nice when fixes are back ported, so that you can apply fixes without bumping major/minor version numbers.
I had to do so with Rails 3.1.x and all the application specific gems.
Since all my apps are on github, I used gemnasium.com which shows all out of date, and at risk gems in your Gemfile, and which versions contain fixes so you can estimate how much time needs to be spent updating.
Go do it. It’s easy
Color schemes for graphs out of excel can be pretty bland, and there are ways to get aesthetically pleasing color sets with predefined palettes like Tango or COLOURlovers which is a huge repository of color schemes.
However these, or just using linear interpolation between two colors or a color and white don’t do your data justice.
The gist is, colorspace doesn’t match your eyeballs, and equidistance colors in HSL don’t have the same lightness intensity. As best explained in this post over at vis4.
You can jump right in to some color palettes (which are also GIS friendly) at Color Brewer
Here are some more graph libraries worth investigating:
And a bunch of random tools here
And this guy does beautiful things in flash
Also. What you really came looking for:
Module has a built in callback for when it is included in a class.
self.included(klass) is called on the module directly after a class declaration which includes it.
ancestors but not a direct way to look at descendant classes. However you can use
ObjectSpace to iterate over classes, and use the
< comparison or
include? to see if a class has your module as an ancestor.
When using mechanical buttons to trigger events on a micro-controller there can be some voltage spikes that can re-trigger whatever logic you have for that button.
The same goes for rotary encoders, which in case of this one at sparkfun is two ‘buttons’ 90’ out of phase from one another, thus allowing you to detect clockwise or counter clockwise movement.
There are a few ways to filter out unwanted mechanical noise. Using capacitors to react to the sudden spikes, or in software. In software you can check the values in your main loop, but that can be troublesome if your loop includes a lot of logic.
The other two approaches involve interrupts. You can use a timer to poll the pins at a regular interval, or you can attach an interrupt to the change of each pin.
Arduino cooking timer has a great example of polling based matching. I really liked his code but wanted to try to code my own since this is a learning experience for me.
By looking at the value of both pins when one of them changes, you can predict the next valid value. By ignoring any other values, you do a good job of filtering out any noisy values that happen during one turn of the knob.
Check out the source over at my git hub
Here’s a video of it in action!
If you find yourself dealing with explicit data from binary files in ruby, you may end up writing something like this.
unpack work great, and have a wealth of ways to get at the data String#unpack rdoc. But after using nice DSLs like ActiveRecord and DataMapper, we can do better!
BinData has patterns for cleanly describing how to access the data structures found in binary files. Data can be nested inside other types, including ones you define yourself.
I’m using it to read a Minecraft map file and manipulate shapes with ruby. Here are some of the highlights of what BinData can do!
Go check it out over at Rubyforge