Category Archives: Software Development

CIDR notation – Living in Net Block Hell

CIDR… what is CIDR? No, it’s not something you drink. Although, given enough exposure to it, It’s something that makes me want to drink (hard) cider. Be that as it may, it’s an important part of my job, de-cidering, I mean, deciphering these cute little buggers.

So.. just what does a typical CIDR notation IP block look like? Well, it looks like this:

67.213.31.0/26

Now, you might be asking yourself, what, why and who cares? So, to answer your questions:

What:
Well, it’s a CIDR block dumba**, that’s what we’re talking about here. Oh.. what does it mean you might really be asking me. It means: Classless Inter Domain Routing. Or, in layman’s terms, it’s like a sort of Internet Zip Code, a method of sub-organizing the massive worldwide IPv4 addressing system (which amounts to approximately 4,000,000,000 addressable ‘systems’, not counting those massive blocks that are set aside for private network use, such as the infamous 192.0.0.0/24.

Why
Well, there is a good question. In the early 90s it became apparent that the number of free IP addresses would be depleted. The total number of IPs was large enough then, but because of routing issues, they could only be used in blocks. Now, those that are even slightly in the know, know, (heheh) that that entire pool of IPs is projected to be exhausted in early 2011. Yeah… that’s right, NEXT YEAR! But, IPv4 and the new IPv6 that supersedes it is another discussion for another time. Right now, were talking about Cider!, uh CIDR! So, trying to get back on point, the use of these CIDR blocks was a way for routing tables (in those things they call routers, imagine that) to store and organize large pools of IPs, or small pools of IPs as one might see fit.

Who Cares?
Anyone that deals with internet IP infrastructure cares. Now, since it’s my business (what I’m paid to do) is watch the ENTIRE Internet to make sure that:

  • DNS (oh.. dont’ get me started) works for corporations large and small. And yes, DNS hijacking is real, it happens, but not only that sometimes they are corrupted accidentally, and people like me designed the software the keeps track of that.
  • I’m able to do other things with this data that I can’t talk about, period. So don’t ask.
  • And, last but certainly not least, it’s just how us geeks communicate. So be it.

Now, why is it a pain in the ass? Well, simply, I need to accurately decode these CIDR blocks into IP ranges (what I do with them is a classified trade and operational secret, so don’t ask, I just need to do this). And to do so requires MATH!. Math… nothing wrong with Math, but it’s math that is to computationally intense for me to do it in my head. Primarily because it’s based on bits, 32 to be exact. Bits are those nasty little binary components of the real numbers the rest of you common mortals pretend you know what you are doing with.

I’m not going to try to explain why routers care about CIDR, I’m only going to say ONE of the things I care about most, re: CIDR blocks is getting the actual (true) IP range values from that short-hand notation.

So, let’s take the fictitious example I displayed before (67.213.31.0/26). I don’t know whom off the top of my head (I have databases to do that sort of stuff for me) that CIDR block might belong to (and it might belong to more than one organization), but let’s pretend that CIDR (the one I picked out of thin air) is relevant.

First things first.. we need to know what the block notation of 26 means, so we’ll start there. This part is called the ‘Network Prefix’. It signifies the number of bits (from the left) that identify the starting point of that network block. In this case, the first 26 bits determine the NETWORK and the last 6 bits ( 32 – 26 = 6 ) the HOSTS that are within that NETWORK.

So.. taking that number, 67.213.31.0 :

  • 01000011.11010101.00011111.00000000
  • and knowing we need the first 26 bits, which would be:

  • 01000011.11010101.00011111.00------
  • The starting address point is.. ta, da! 67.213.31.0
    uh.. OK.. so that’s not super illustrative.. but do the math anyway.

    OK.. next.. we know that we have a block of 6 bits to play with, starting at ‘0’. so the range is:
    .00000000 to .00111111

    Now.. doing that big of math we get (drum roll please…)

    0 (where we started in that net block) up to 63 (which is what 111111 binary means in base-10.

    THUS:

    The IP range calculation for this 67.213.31.0/26 is:

  • 67.213.31.067.213.31.63

    Now.. don’t you feel a little enlightened?

    Maybe next week, if I’m in a good mood, I’ll write a CIDR translator program and post it to my blog, but don’t hold your breath, unless you want to PayPal me a a $1000, then I’ll do it this weekend.

  • Corporation or LLC – that is the question.

    I’ve always been one that is not at all comfortable relying upon a single source of financial well being. Since the early 80’s in one form or another I’ve owned and operated a business.

    Early on I have a little Electronics sales business selling Cell Phones to the well-healed during it’s hayday. It was fantastic. Hardly work, get paid well, and live La Vita Loca.

    I’d take a number of odd jobs during that time, driving computer mag tapes around Silicon Valley, installing car audio systems, systems administrator for a large multi-national corporation, Y2K mitigation for a number of organizations (not the least strange of which was the California Department of Corrections).

    At any rate, as I said, I’m not one that’s comfortable with a single source of income, so I’ve been investigating business structures to determine what my next organization will look like.

    I have plenty of experience being the President and CEO of a corporation, having ran one from 2000 to 2006. The structure offers a lot of advantages, such as dividing income between corporate tax concerns and personal tax concerns. Corporations also have the advantage of having ownership interest in other organizations. But there are also some disadvantages, not the least of which is very strict requirements and regulations on annual meeting, IRS and state tax filings, additional book keeping to track basis and stock ownership (plus managing different classes of stock).

    I was really more of a burden than a blessing to myself, which is to a large degree why I terminated operation in 2006 and became a W-2 wage slave.

    Since that time a number of interesting ideas have popped into my head. One of which are some software product ideas for the iPhone.

    My intent at this point is to move forward on development of 2 concepts. One of which will have a pretty limited market, the other, I hope, to have a much wider market, and is a type of social networking application. The second of which I hope to see wide spread usage. The plan, is for the first app to fund development of the second. That is the plan.

    Before I cut my first line of code, I wanted to know what type of organization I wanted to create. I need to have my business licenses in place, before I complete the Apple Developers Contract. They are quite clear that it won’t be approved for any shoddily / hastily created pseudo-company.

    I’ve done some reason on the Secretary of State’s website, checked a few of the fee structures, and such, but my primary source of research on the business organization from has been from the book LLC or Corporation – How to Choose the Right Form for Your Business“. Author is Anthony Mancuso, Attorney.

    It’s not a long read, about 250 pages, which I spend the last 5 evenings digesting. It’s rather repetitive, which was a little frustrating for me, initially. However, having completed the book I can understand at least one reason for it’s repetitive nature. If anyone were to pick up the book and *not* read the entire thing (why would you do that, well, sometimes I’ve been guilty of poaching the parts of books I need without taking the time to digest the entire tome) they would still get the frame of reference required to get useful information on the topic of interest. I’d say, it’s a modern writing method for the more ADHD nature of our society. In the end, it’s worth dealing with the repetitiveness. It has it’s place.

    Another helpful part of this book is extensive use of examples. More than once I’d read the example 2-3 times to really grok the point, and that was very helpful. The last chapter is also dedicated to some ‘real-world-ish’ examples of business formation decision making. All in all, it was well worth the $25.00 price tag.

    So, what did I decide to do? Well, an LLC is the type that I’ve decided to select for a number of reasons, but the primary ones I’ll list here:

    • Simplicity of formation
    • Limited personal liability for company debt
    • Pass-through tax advantages (this sword cuts both ways though)
    • Fewer operational requirements (no board of directors, meetings, etc.)
    • Simpler tracking of each owners basis in the company

    So, with my new company name selected, and my form of business decided, it’s time to move forward with foundation of the company.

    You know I’ll be sure to post information on that once the State registration has been completed any my licenses granted, EIN number acquired, and finally the domain names registered.

    A little model building.

    It’s been, almost a decade since I picked up an X-Acto Knife and built a styrene model. This weekend changed all that.

    The reasons are many, some I can’t even go into. The ship was picked for 2 reasons. Price (about $10) and it had below waterline detail. That’s all I was looking for and this fit the bill. What turned out to be serendipitous fortune simply makes the project that much more poignant.

    Blucher

    The Blücher was a German Admiral Hipper-class heavy cruiser. The Kriegsmarine’s newest ship at the outbreak of World War II, having been in commission for just over six months, she was sunk by Norwegian shore defenses at the Battle of Drøbak Sound on April 9, 1940, the first day of the invasion of Norway (Operation Weserübung).

    It took approximately 4 hours to formulate the plan for the build, and the first plastic was cut on Saturday night.

    12 hours later, the final result. And I’m quite pleased with it. Moving some of the parts did not require much skill at all, but moving the starboard side screw was, well, a several hour effort. In the end, a fair bit of plastic welding was done, and body filler applied to completely conceal the original location. I hope you can see the final result in the side shot.

    Blucher

    I wish I could say more about it. 🙂

    Setting up a custom ‘Weather Reader’ (Part 3) – Using Data


    <– Part 2

    It would be short work to grab the current observations from the local station’s file, then grab the full projected forecast from the Zone’s XML formatted data file (example for Bremerton). I checked the full forecast XML, and unfortunately it does not include the local current conditions. In the grand scheme, this is not a big deal since I’ll need to grab three forecast files already. One more file for current observations is not that much more of a burden.

    This section contains the Maximum Forecast Temperatures, covering outlook:

    <temperature type="minimum" units="Fahrenheit" time-layout="k-p24h-n7-1">
    <name>Daily Minimum Temperature</name>
    <value>40</value>
    <value>45</value>
    <value>43</value>
    <value>44</value>
    <value>43</value>
    <value>43</value>
    <value>42</value>
    </temperature>

    This section contains the Minimum Forecast Temperatures, covering outlook:

    <temperature type="maximum" units="Fahrenheit" time-layout="k-p24h-n7-2">
    <name>Daily Maximum Temperature</name>
    <value>59</value>
    <value>61</value>
    <value>60</value>
    <value>61</value>
    <value>61</value>
    <value>60</value>
    <value>60</value>
    </temperature>

    Also in the file is the projected percentage of precipitation:

    <probability-of-precipitation type="12 hour" units="percent" time-layout="k-p12h-n14-1">
    <name>12 Hourly Probability of Precipitation</name>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value>30</value>
    <value>30</value>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    <value xsi:nil="true"/>
    </probability-of-precipitation>

    The XML also is kind enough to include the image names.   Based on this, the actual visually rendered page is a style sheet applied to the XML data, providing a human readable web page <i>(something I need to get more familiar with)</i>.

    <conditions-icon type="forecast-NWS" time-layout="k-p12h-n14-1">
    <name>Conditions Icon</name>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nbkn.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/sct.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nsct.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/bkn.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nbkn.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra30.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nshra30.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nshra.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nshra.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/nshra.jpg</icon-link>
    <icon-link>http://www.nws.noaa.gov/weather/images/fcicons/shra.jpg</icon-link>
    </conditions-icon>

    Design and coding of the file downloads, processing and construction of the status file is the next step.  One thought I have, is to download and store locally, all the images.  This will keep my page off of their webserver’s request log.  External includes of images can be a burden on a remote server, if you start to abuse it.  No sense in being a bad netizen.  The question that I need to answer is, <i>CAN I</i> get a list of all the potential images (and there are <i>many</i>) and automate the download to system I plan to run this little product upon.

    Automation

    Automation of the XML downloading and parsing, will be handled by PERL (at least in this first tool, it may be converted to JAVA on a second iteration, once I’ve performed usability testing of this first iteration).

    Additional binary libraries are required first:

    apt-get install libxml2-dev
    

    So, here is the skinny. First, have to move into the location where CPAN unravels the packages:

    cd /root/.cpan/build

    Next, move into the directory for XML::LibXML and manually build with these steps:

    cd XML-LibXML-1.70-OucP9U
    perl Makefile.PL
    make
    make install

    Next build the XML::Atom package:

    cd XML-Atom-0.37-pcVvAG/
    perl Makefile.PL
    make
    make install

    Next, a few PERL modules must first be installed. NOTE: the XML::SAX modules are suggested, to provide a big boost in XML parsing performance. You might be surprised at how much processing power the typical XML parsing packages require. XML::SAX and XML::SAX::Expat provide a better code for XML parsing.

    cpan LWP::UserAgent
    cpan HTML::TokeParse
    cpan XML::Feed
    cpan XML::SAX
    cpan XML::SAX::Expat
    cpan Data::Dumper
    cpan XML::Feed
    cpan XML::Atom
    

    NOTE:
    As hard as I tried, CPAN would not install XML::LibXML nor XML::Atom. So, I had to get down into the muck and manually build the packages. The trick was getting the libxml2 package talked about earlier.

    One critical required step, if you are going to write and use custom PERL libraries, you need to add the following line to a shell initialization file. I’ve been using bash, for lack of any reason to use other shells. Thus, I added this line to my ~/.bash_profile

    export PERL5LIB=$HOME/plib
    

    Once that is done, you’ll need to source the updated config file, or logout/login to gain the benefits of the change.

    Step 4 – coming soon

    Setting up a custom ‘Weather Reader’ (Part 2)

    <-- PART 1

    Locating Suitable Data Sources

    The process of finding the desirable data sources, can be a challenge. I already know which of the 5 day forecast sources I want to use.

    Bremerton, WA

    Tacoma, WA

    Seattle, WA

    Maybe I’ll add this one too, just to so I’m reminded of what I’m missing in CA:

    Campbell, CA

    Next is a page that contains the CURRENT and HIGH / LOW temps. In the past I have located some text based data files on the NOAA.GOV website. I’ll have to dig up my notes one this. From time to time NOAA moves those files and changes the format, so those notes might not end up being that helpful. It is somewhere to start.

    This page here, has a pile of nice detailed information (see compressed screen shot) but does not contain everything I’m looking for:

    Recent WX from Bremerton National Airport.

    XML DATA!. XML is something I know more about, than I really care too, but it is a portable, easily parsable and text data format. I’ve not yet investigated the contents here, but it does look promising!

    Washington State WX XML Feeds

    TO BE CONTINUED TODAY

    Part 3 –>

    Setting up a custom ‘Weather Reader’ (Part 1) – Product Plan

    What is a “Weather Reader”? Well, it’s like a “News Reader”, but it’s purpose is to check the web for local weather conditions and display them on a computer screen. For this project I’ve revived an old Averatec laptop, installed Ubuntu 9.10 on it and started to write some PERL.

    Beat up old Averatec AMD64 laptop, only 1/2 the keyboard works and the battery is shot.

    Weather Data

    Where to get the weather data? Personally, I like to go to the source. The public source at NOAA.gov. This is a government agency, paid for by my tax dollars (and yours too if you’re a US tax payer.. of which only 53% of working people in the US are, but that’s another story. So, free for the taking as far as I can tell, and am concerned. Which is good, because the real heavy work is up to me. Finding a URL is one thing, using it for something productive is another thing.

    To see what I’m looking at as a source without clicking a bunch of links, here is a screen shot of my indented HTML victim:

    Seattle Weather from NOAA website.

    Now, the only part that I’m interested in is this one:

    I’m sure some of you are asking, “WHAT’S THE POINT!?!?!?”. Well, I have several, not all atop my head. As an avid motorcyclist, weather is almost as import to me as mariners and aviators. Weather might look good for the moment, but around here anything can happen. It’s good to know what the forecast is. And not just in one location. Since I transit two area micro-climates commuting to work, knowing that weather will be at the end points of my journey are are a minimum requirement. Plus, I’m lazy. Not so lazy I won’t write a program to do this, but lazy in the larger sense, of I just want to hit a button and see all the data I want, not have to wait for the Weather Chanel to decided it’s ready to dispense it’s forecast, or hunt around on various local news sites. Nor, frankly, have to click on TWO hyperlinks to see what weather will be like HERE and THERE. Nope, I’m just too lazy for that, so I’ll spend 8-32 hours figuring out a way to save myself 2-3 minutes a day (I didn’t say I’m always smart, but always lazy). Remember; “Laziness is the father of invention!”. Digressing….

    The Plan

    The plan is to use PERL, run every 30 minutes from 5 AM-> 1 AM, and grab the weather page shown above. Parse out only that which I want, and then re-construct my own page on my own server. It’s a basically a mashup page of what I want to see.

    Checking the source code of the page, I see that, ugh, NOAA did not supply and useful DIV markers that I can use. So, this will be a rel brute-force process to detect, select, extract and re-construct the page of my dreams. Yes, I can be easily entertained.

    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr valign ="top" align="center">
    <td width="11%"><b>Tonight<br></b><br><img src="/images/wtf/nshra50.jpg" width="55" height="58" alt="Scattered Showers Chance for Measurable Precipitation 50%" title="Scattered Showers Chance for Measurable Precipitation 50%" ><br>Scattered<br>Showers<br>Lo <font color="#0033CC">45 &deg;F</font></td><td width="11%"><b>Tuesday<br></b><br><img src="/images/wtf/shra50.jpg" width="55" height="58" alt="Scattered Showers Chance for Measurable Precipitation 50%" title="Scattered Showers Chance for Measurable Precipitation 50%" ><br>Scattered<br>Showers<br>Hi <font color="#FF0000">54 &deg;F</font></td><td width="11%"><b>Tuesday<br>Night</b><br><img src="/images/wtf/nshra30.jpg" width="55" height="58" alt="Scattered Showers Chance for Measurable Precipitation 30%" title="Scattered Showers Chance for Measurable Precipitation 30%" ><br>Scattered<br>Showers<br>Lo <font color="#0033CC">44 &deg;F</font></td><td width="11%"><b>Wednesday<br></b><br><img src="/images/wtf/bkn.jpg" width="55" height="58" alt="Partly Sunny" title="Partly Sunny" ><br>Partly<br>Sunny<br>Hi <font color="#FF0000">57 &deg;F</font></td><td width="11%"><b>Wednesday<br>Night</b><br><img src="/images/wtf/hi_nshwrs30.jpg" width="55" height="58" alt="Chance Showers Chance for Measurable Precipitation 30%" title="Chance Showers Chance for Measurable Precipitation 30%" ><br>Chance<br>Showers<br>Lo <font color="#0033CC">46 &deg;F</font></td><td width="11%"><b>Thursday<br></b><br><img src="/images/wtf/shra30.jpg" width="55" height="58" alt="Chance Showers Chance for Measurable Precipitation 30%" title="Chance Showers Chance for Measurable Precipitation 30%" ><br>Chance<br>Showers<br>Hi <font color="#FF0000">59 &deg;F</font></td><td width="11%"><b>Thursday<br>Night</b><br><img src="/images/wtf/nshra30.jpg" width="55" height="58" alt="Chance Showers Chance for Measurable Precipitation 30%" title="Chance Showers Chance for Measurable Precipitation 30%" ><br>Chance<br>Showers<br>Lo <font color="#0033CC">46 &deg;F</font></td><td width="11%"><b>Friday<br></b><br><img src="/images/wtf/shra.jpg" width="55" height="58" alt="Chance Showers" title="Chance Showers" ><br>Chance<br>Showers<br>Hi <font color="#FF0000">59 &deg;F</font></td><td width="11%"><b>Friday<br>Night</b><br><img src="/images/wtf/nshra.jpg" width="55" height="58" alt="Chance Showers" title="Chance Showers" ><br>Chance<br>Showers<br>Lo <font color="#0033CC">46 &deg;F</font></td></tr>
    </table>

    Snagging that out of the documents for 2-3 locations will get me what I want. It should look something like this, but the example here does not have any stylesheets applied, it’s a direct rip and mash.

    Sample mashup, this was done manually. It at least proved the concept.

    There are a couple of problems with that page though, it’s going to take up too much real estate on the final page. Here, it’s almost too large to view on my laptop’s main screen. So, some embedded CSS is in order. This hear overloads the td type, making any text found within anytd rendered at 80% of the normal size. This also overloads creates a style named headish that I is applied to the section titles:

    <style>
    .headish { 
      font-weight:bold; 
      background-color:#CCC; 
      font-size: 1.2em;}
    td { font-size: 0.8em; }
    </style>
    

    The result of that very small change, gives me a smaller visual footprint, and formatting at little more pleasing to my sensibilities:

    A little more hammering around in the stylesheet, and adding a CURRENT and High/Low temps forecast for the day. A little closer to the desired mockup. I still need to locate a suitable news feed to process:

    A little closer to the desired mashup page.

    PART 2 –>

    Starting gearmand deamon

    Getting the gearmand deamon running. Should be simple work, yet, as with a lot of thing in the software world, it’s not quite that simple. My first attempt to start up gearmand failed with the following error:

    Corsa-3:~ root# gearmand
    Error creating socket: IO::Socket::INET: Address already in use
    Corsa-3:~ root#

    Now, I’m not sure why that would be the case, since I checked the system process list and did NOT see any other instance of gearman executing (if you are not sure what you are looking at, the only thing found matching gearman, was the grep against the process list itself, not what I’m looking for)

    Corsa-3:~ root# ps -ealf | grep gearman
    0 33324 32942 4006 0 31 0 2425520 168 - R+ 5bb5a80 ttys000 0:00.00 grep gearman 0:00.00

    A check of netstat did not reveal a listener on either of the known gearman ports (7003 or the new official port: 4730 ).

    ** TO BE COMPLETED **

    Help for Geeks – My Development Bookmarks

    I’ve thought about this many times. What info do I find useful, and would other geeks find it useful too?   Perhaps.    In that spirit here is my current list of Development related bookmarks.   Slightly organized.  You might find some nuggets of info in here that relates to a project you are working on.  Or it might spark and idea to build something new, or re-design a process that is not as optimal is you’d like it to be.

    I hope some of these help, as they have helped me over the years.  One note though, I removed all my links to PHP development.  I just can’t stand using it any more, it’s just too easy to PWN.


    Apache

    libapreq2-2.08: libapreq2: Apache2::Request
    Apache2::RequestRec – Perl API for Apache request record accessors – search.cpan.org
    Apache2::AuthCookie – Perl Authentication and Authorization via cookies – search.cpan.org
    Adventures in the Land of Apache and mod_perl
    perl. Computational Chemistry List, perl, mod_perl, modperl2, cgi, Apache, cgi, forms
    Combining Apache and Perl
    Useful OpenSSL Commands
    Creating Self-Signed Certs on Apache 2.2 | CB1, INC.
    CB1, INC. is a Minneapolis based software and consulting company specializing in custom development and systems integration.
    NSS and SSL Error Codes
    Smart HTTP and HTTPS RewriteRule Redirects
    Smarter SSL HTTPS to HTTP Redirections in .htaccess using RewriteRule to set an environment variable
    Apache Week. Using User Authentication
    The O’Reilly Network has teamed with Red Hat Apache Week, the leading commercial Apache site to offer comprehensive Apache information and resources. Apache Week offers news, feature articles, reviews, resources, and documentation.
    htaccess rewrite tips using RewriteRule and RewriteCond for .htaccess mod_rewrite
    mod_rewrite tips and tricks for .htaccess files using RewriteBase, RewriteCond, RewriteEngine, RewriteLock, RewriteLog, RewriteLogLevel, RewriteMap, RewriteOptions, and RewriteRule
    mod_perl: mod_perl 2.0 Server Configuration
    mod_perl documentation: This chapter provides an in-depth mod_perl 2.0 configuration details.
    Dr. Dobb’s | A mod_perl 2 Primer | December 1, 2004
    Though it’s technically not quite ready for prime time, it’s high time we all got a taste of the next version of mod_perl.
    Apache2::Status 4.00
    apache 2: “private key not found”

    HTML / CSS

    CSS2 Reference
    Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
    CSS Tutorial – Border
    Place customized CSS borders around your HTML elements with the CSS Border attribute.
    How can I make just one cell in an HTML table bordered, or just one side of a cell bordered?
    CSS Positioning Properties
    Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
    Ajaxload – Ajax loading gif generator
    Ajaxload – Ajax loading gif generator
    workalike for top.location.watch(“href”,fn) in IE? – JavaScript
    workalike for top.location.watch(“href”,fn) in IE?. Get answers to your questions in our JavaScript forum.
    window.onbeforeunload [javascript] [form]
    HTML FIELDSET TAG
    Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
    wg:Bubble Tooltips
    web graphics is a compilation of hypertext design resources, links, and commentary.
    lixlpixel CSS tooltips
    pure CSS pop up tooltips with clean semantic code – valid XHTML – degrades nicely
    Simple Round CSS Links ( Wii Buttons )
    HTML URL-encoding Reference
    Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
    Custom error responses
    CSS and round corners: Making accessible menu tabs
    Find out how to lose the box layout of your CSS pages and make great menu tabs
    A List Apart: Articles: Sliding Doors of CSS
    Must CSS layouts be flat and boxy? Nope! Bowman shows how to create slick tabbed navigation using CSS and structured XHTML lists.
    Light Weight Low Tech CSS Tabs
    An example of light weight tabs by combining the Sliding Doors method with the Mountaintop corners idea.
    A List Apart: Articles: Mountaintop Corners
    Using CSS to create standards-compliant, mountain top corners
    Setting a Minimum Body Height:Solving the ‘Height’ Mystery
    W3C Markup Validator
    W3C’s easy-to-use HTML validation service, based on an SGML parser.
    Private RSS Feeds: Support for security in aggregators – silverorange labs
    We’ve been experimenting with security options for RSS feeds for our intranet product. However, we found that there weren’t many resources or guidelines for how encryption or authentification should be handled (either in feeds or in readers/aggregators).
    The W3C CSS Validation Service
    The Art of Web ~ CSS: border-radius and -moz-border-radius
    One of the most keenly-anticipated CSS properties is border-radius. It’s not yet available in Internet Explorer, but there is limited support in Firefox (-moz-border-radius) and Safari (WebKit). Discussion and examples.
    removeChild
    javascript document object javascript document object model sans serif font document object model removechild: Removing objects from a web page.
    Adding elements to the DOM
    Click here for an introductory tutorial on the DOM of IE 5/ NS 6, and how to program using it
    JavaScript tutorial – DOM nodes and tree
    HTTP State Management Mechanism [RFC-Ref]
    phone number validation
    phone number validation
    Validating with XML Schema
    HTML Color Names
    Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
    CSS Color Names
    Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.
    CSS Image Opacity / Transparency
    Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.

    JavaScript

    O’Reilly Network — Dynamic HTML Tables: Improving Performance
    The widespread browser adoption of the W3C Document Object Model (DOM) and other de facto standards have given developers many ways to repopulate a table. So what’s the best approach? Danny Goodman, author of JavaScript & DHTML Cookbook, investigated…
    Managing the Dynamic created HTML table thru javascript – SEO Chat
    Managing the Dynamic created HTML table thru javascript- HTML Coding. Visit SEO Chat to discuss Managing the Dynamic created HTML table thru javascript
    JavaScript Kit- Text Object
    Click here for a complete JavaScript Reference, including array, string, document. window, and more.
    How do you know what button was pressed in the submit? – JavaScript
    How do you know what button was pressed in the submit?. Get answers to your questions in our JavaScript forum.
    The JavaScript Source: Forms : Auto Email Link
    Automatically creates a new e-mail utilizing the user’s default e-mail client. The script fills in the subject line and adds the URL of the current Web page to the body. Note: May not be compatible with all e-mail clients.
    Javascript – Early event handlers
    Javascript – The events
    Javascript – Introduction to Events
    The JavaScript Source: Forms: Form Focus
    Places the focus on the first editable field in a form on any web page. Efficient!
    JavaScript Help: How to access parent elements from a child window or frame
    Popup Window Tutorials
    This series of tutorials takes you step by step thrugh thedifferent ways that you can create and modify popup windows.
    DevGuru JavaScript PROPERTY: document::forms
    Award-winning web developers’ resource: over 3000 pages of quick reference guides, tutorials, knowledge base articles, Ask DevGuru, useful products.
    ActiveWidgets • sorting • download data xls

    JAVA

    java integer to string – Google Search
    Java Dynamic Management Kit 5.1 Release Notes
    NetBeans IDE 6.0.1 Download
    NetBeans IDE 6.0.1 Download
    Welcome to JavaWorld.com
    Solutions for Java developers
    Your Source for Java Information – Developer.com’s Gamelan.com
    Get the latest Java news, articles, whitepapers, analyst reports, and more. This is your one stop for information that will help you make decisions related to Java.
    String (Java Platform SE 6)
    Arrays (The Java™ Tutorials > Learning the Java Language > Language Basics)
    StringBuffer (Java 2 Platform SE 5.0)
    Throwable (Java 2 Platform SE v1.4.2)
    NetBeans Forums – How to use Netbeans packages?
    Javadoc Guide
    System Properties (The Java™ Tutorials > Deployment > Doing More With Rich Internet Applications)
    Adding Classes to the JAR File’s Classpath (The Java™ Tutorials > Deployment > Packaging Programs in JAR Files)
    NetBeans Forums – Create manifest, jar and class file in netbeans
    Packaging and Deploying Desktop Java Applications
    Creating executable JAR files and deploying netbeans projects
    Understanding the Manifest
    JAR files can support a wide range of functionality, including electronic signing, version control, package sealing, extensions, and others. What gives JAR files the ability to be so versatile? The answer is embodied in the JAR file’s manifest.
    http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#JAR%20Manifest
    JAVA Illegal Start of Expression Error – Java
    JAVA Illegal Start of Expression Error Java
    do-jar-with-main class ‘manifest.available+main.class’ not set. – Google Search
    Formatted Printing for Java (sprintf)
    The C language utility sprintf is for formatting strings of characters and numbers. This article documents the use of a Java programming language class, PrintfFormat, whose behavior is based on the sprintf specification. Source code is provided.
    Java Tips – How to align your components in horizontal or vertical layout
    Java Tips — Java, Java, and more Java, How to align your components in horizontal or vertical layout
    Java Tips – PointBase Embedded
    Java Tips — Java, Java, and more Java, PointBase Embedded
    Programming with Java in 24 Hours: Building a Complex User Interface
    Questions, corrections and clarifications for hour 16 of the book Teach Yourself Java 6 in 24 Hours by Rogers Cadenhead. The book teaches Java 6 programming for non-programmers, new programmers who hated learning a language, and experienced programmers who want to quickly get up to speed.
    Java look and feel Graphics Repository
    Welcome to the Java Software Human Interface Group’s Java look and feel Graphics Repository pages.

    MySQL

    MySQL Stored Procedures / Functions
    MySQL AB :: MySQL Forums :: Install :: Comments on my.cnf for high insert volume db
    MySQL Configuration
    MySQL Performance Blog » Should MySQL and Web Server share the same box ?
    MySQL AB :: Index update with update statement
    MySQL AB :: MySQL 5.0 Reference Manual :: 18 Stored Procedures and Functions
    MySQL Stored Procedures
    MySQL Server Tweaking Basics – Admin Zone Forums
    This is a basic guide to understanding what the directives in your my.cnf mean, and what they do. We’ll also try to give some general
    mySql — CHECK TABLE Syntax
    Live Backups of MySQL Using Replication
    Russell Dyer, author of MySQL in a Nutshell, walks through the process of using replication for data backups in MySQL.
    MySQL AB :: MySQL 5.0 Reference Manual :: B.1.4.1 How to Reset the Root Password
    MySQL – best methods for backups
    Best way to backup, MySQL/VPS etc Linux
    MySQL AB :: MySQL 5.0 Reference Manual :: 12.2.17.1 Troubleshooting InnoDB Data Dictionary Operations
    ERROR: database: mysql_error: Can’t connect to MySQL server on ‘10.10.0.7 (110) – Snort Forums Archive
    The open source Snort Intrusion Detection and Prevention system is the most flexible and widely deployed solution available.
    How to fix error 134 from storage engine – MySQL
    How to fix error 134 from storage engine. Get answers to your questions in our MySQL forum.
    MySQL AB :: MySQL 5.0 Reference Manual :: 12.2.3 InnoDB Configuration
    MySQL Stored Procedures: Part 2
    Part 2 of MySQL Stored Procedures covers some more advanced concepts, including conditions and loops.
    MySQL AB :: MySQL 5.0 Reference Manual :: 10.11.1 GROUP BY (Aggregate) Functions
    Select INTO OUTFILE
    MySQL :: stored procedure to list stored procedures
    MySQL :: MySQL 5.1 Reference Manual :: 10.4.5 The SET Type
    InnoDbEngineStatusAndTuning < Development < TWiki
    MySQL :: MySQL 5.0 Reference Manual :: 13.2.11 InnoDB Performance Tuning Tips
    Regular Expressions in MySQL
    Regular Expressions in MySQL
    Dan Winchester – MySQL date_format
    MySQL :: MySQL 5.0 Reference Manual :: B.1.2.11 Communication Errors and Aborted Connections
    MySQL Bugs: #36910: Mysql Server has gone away
    Mysql_User_Add < Development < TWiki
    mytop – a top clone for MySQL
    Using ON DUPLICATE KEY UPDATE to improve MySQL Replication Performance « Kevin Burton’s NEW FeedBlog
    MySQL :: MySQL 5.1 Reference Manual :: 13.11 The FEDERATED Storage Engine
    MySQL :: MySQL 5.1 Reference Manual :: 11.4.2 Regular Expressions
    MySQL :: MySQL 5.1 Reference Manual :: 18.2 Partition Types

    PERL

    Proc::ProcessTable – Perl extension to access the unix process table – search.cpan.org
    Proc::ProcessTable::Process – Perl process objects – search.cpan.org
    perlvar
    Perl 5.8 Documentation – Signals
    Perl 5.8 Documentation – Signals
    khtml2png – Make screenshots from webpages
    Sys::Load – Perl module for getting the current system load and uptime – search.cpan.org
    The CPAN Search Site – search.cpan.org
    Perl HTML::Form
    Perl 5.8 Documentation – HTML::Form – Class that represents HTML forms
    LWP Cookbook – URL explosion
    Reaping Zombies
    PERL ‘UTF-16LE’ – MarkMail
    urlencode / urldecode in Perl | melecio.org
    Regular Expression Examples
    how check new URL of redirected page
    Getopt::Long – perldoc.perl.org
    perl.com: Beginners Intro to Perl – Part 6
    Doug Sheppard shows us how to activate Perl’s built in security features.
    How can I make one class extend another one?
    XML::Generator – Perl extension for generating XML – search.cpan.org
    Free Perl source library: unescape
    subroutine name: unescape decode URL-encoded string
    rami.info » URLEncode And URLDecode For Perl
    File Tests in Perl
    File Tests in Perl
    Page 2 – Build a Perl RSS Aggregator with Templating Tools
    Page 2 – Build a Perl RSS Aggregator with Templating Tools
    perl.com: Preventing Cross-site Scripting Attacks
    Paul Lindner, author of the mod_perl Cookbook, explains how to secure our sites against Cross-Site Scripting attacks using mod_perl and Apache::TaintRequest
    libapreq2-2.08: libapreq2: Apache2::Upload
    binary data handling – examine a .gif file – Perl example
    binary data handling – examine a .gif file – Perl example
    PERL — Conversion Functions
    LWP::UserAgent
    Web user agent class
    Fastest XML Parser ?

    mod_perl

    Practical mod_perl: 6.3.3.6. A third solution
    This solution makes use of package-name declaration in the …
    mod_perl: HTTP Handlers
    mod_perl documentation: This chapter explains how to implement the HTTP protocol handlers in mod_perl.
    Installing mod_perl from RPM | O’Reilly Media
    It’s easy to install mod_perl using the Red Hat package manager. Configuring it is trickier.
    mod_perl: Apache2::RequestRec – Perl API for Apache request record accessors
    mod_perl documentation: <code>Apache2::RequestRec</code> provides the Perl API for Apache request_rec object.
    How to extract name/value pairs from the query string? | ModPerl | ModPerl
    How to extract name/value pairs from the query string? ModPerl ModPerl
    mod_perl: Code Snippets
    mod_perl documentation: A collection of mod_perl code snippets which you can either adapt to your own use or integrate directly into your own code.

    XML

    Helpful XML related sites
    iWeb Toolkit: XML Validator
    XML Schema (REC (20010502) version, as amended) Checking Service
    XML Schema Examples
    XML::Generator
    Perl extension for generating XML
    XML DOM – Validate XML
    Free HTML XHTML CSS JavaScript DHTML XML DOM XSL XSLT RSS AJAX ASP ADO PHP SQL tutorials, references, examples for web building.

    Swish-e

    Swish-e :: Re: performance aspects
    Swish-e Lightning Talk
    Swish-e :: Re: running out of memory during merge
    Swish-e :: INSTALL – Swish-e Installation Instructions
    Connecting Linux or UNIX system to Network attached storage device
    Network attached storage (NAS) allows using TCP/IP network to backup files. This enables multiple servers in IDC to share the same storage for backup at once, which minimizes overhead by centrally managing hard disks. NAS …
    How do I access NAS server using automount?
    Network-attached storage commonly used to store backup and other shared files over TCP/IP network. For example: i) Corporate e-mail system with multiple, load-balanced webmail servers ii) Load-balanced web servers access the same contents from NAS …
    SmallNetBuilder
    SmallNetBuilder provides networking and IT news, reviews, help and information for professional and &quot;prosumer&quot; SOHO and SMB users.
    IP Subnet Calculator
    Online IP Subnet Calculator
    10 Steps to Installing PostgreSQL
    Remote Network Commands | Linux Journal
    Cikul » How to change hostname in CentOS
    Thecus User Group – NFS mount failed permission denied
    Thecus 1U4500 – Enable root SSH
    Wahoo’s Word » Using watch to monitor Javascript
    Ascii control codes (control characters, C0 controls)
    DOM Based Cross Site Scripting
    document.body, doctype switching, and more | evolt.org
    A world community for web developers, evolt.org promotes the mutual free exchange of ideas, skills and experiences.
    DOM:window.open – MDC
    Welcome to Hadoop!
    Internationalized domain name – Wikipedia, the free encyclopedia
    Code Charts – Scripts
    ISO 8859-1 Latin 1 and Unicode characters in ampersand entities
    Dig Demonstrations
    Re: say if grep can find non-ascii
    http://www.ietf.org/rfc/rfc2181.txt
    MIL-STD-498,MIL STD 498,MIL-STD,MIL-SPEC,MIL SPEC,Military Standards
    MIL-STD-498,MIL-STD,MIL-SPEC,MIL STD,MIL SPEC,Military Standards for ISA
    J-STD-016 & MIL-STD-498 vs. DOD-STD-2167A & 7935A
    DOD Standards Procedures Collection Document Listing – Page 2
    IHS, DOD STANDARDS (MILITARY/FEDERAL SPECS) – General Collection
    Fred Morris, project management/distributed systems/practices
    Info: (dir) Top
    VICNET Help: Online – Web Design – .htpasswd encoder
    reminders about programming: Fedora firewall setup is simple using built-in tools
    Sample Usability Test Plan
    FavIcon from Pics — free favicon.ico for your website (animated, static and marquee icons)
    Free and easy to use online tool for creating favicons (.ico, animated, marquee and static) for browser address bars, favorites and tabs, from pictures, logos and other graphics.
    How to Obscure Any URL
    frames test page for harvesters
    IP CIDR Subnet Calculator
    Online IP CIDR / VLSM Supernet Calculator
    DNS BIND named.conf Parameters
    Copy files and directories recursively with tar – Tech-Recipes.com
    Copying a directory tree and its contents to another filesystem using tar will preserve ownership, permissions, and timestamps. A neat trick allows using tar to perform a recursive copy without creating an intermediate tar file.
    Scrum (development) – Wikipedia, the free encyclopedia
    Searching your files with SWISH-E
    Disk I/O
    Installing and Configuring iptables
    How to add an external USB hard drive to your Linux server (Redhat, CentOS, Ubuntu, Gentoo and SUSE) | my-whiteboard
    Extenal USB hard disk is really useful (and inexpensive) for backing up your Linux server. Follow these steps to get it to work. 1, Buy a USB hard disk (I have
    Which Web Browser is King? – Round 5: JavaScript Library and Framework Tests – OS, Software & Networking by ExtremeTech
    Which browser is faster? IE7, Firefox 3, Google Chrome, Safari, or Opera? We run a bevy of tests to determine the king of the Web browser hill.
    How to: Debug SSL certificate problems from the shell prompt
    OpenSSL is a cryptography toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) network protocols and related cryptography standards required by them. It also includes the openssl command, which provides a rich variety of commands You can use the same command to debug problems with SSL certificates. To test the secure connections to a server, type the following command at a shell prompt: openssl s_client -connect ssl.servername.com:443 Where, s_client : This implements a generic SSL/TLS client which can establish a transparent connection to a remote server speaking SSL/TLS. It’s intended for testing …
    Ascii Table – ASCII character codes and html, octal, hex and decimal chart conversion
    Ascii character table – ascii ascii ascii ascii and ascii…conversions
    How to Copy Files Across a Network/Internet in UNIX/LINUX (Redhat, Debian, FreeBSD, etc) – scp tar rsync
    HOWTO: Installing DenyHosts – Page 2 – Ubuntu Forums
    Page 2- HOWTO: Installing DenyHosts Tutorials & Tips
    sendmail Configuration
    history–Show status of files and users
    using rsync to copy files from one server to another
    CVS Commands
    FC5 Repositories & Updates
    Multiple Bugzilla databases with a single installation
    IP Address Lookup (IPv4 & IPv6)
    Determines your IP address and shows information (host, location, whois…) about any IP address entered – Up to 10 IP addresses can be looked up at the same time
    FC10 network setup repeatedly overwritten – FedoraForum.org
    FC10 network setup repeatedly overwritten Installation Help
    Interface Configuration Files
    CVS revision numbers
    CVS Branch and Merge example
    CVS–Concurrent Versions System – Merging two revisions
    Linux.com :: All about Linux swap space
    When your computer needs to run programs that are bigger than your available physical memory, most modern operating systems use a technique called swapping, in which chunks of memory are temporarily stored on the hard disk while other data is moved into physical memory space. Here are some techniques that may help you better manage swapping on Linux systems and get the best performance from the Linux swapping subsystem.
    Zone Files
    HowTo Setup an NTP Daemon for Time Synchronization – SIPfoundry sipXecs IP PBX, The Open Source SIP PBX for Linux – Calivia
    YAML Ain’t Markup Language (YAML) Version 1.1
    Trouble editing whine.txt.tmpl – What variables can I use? – mozilla.support.bugzilla | Google Groups
    The Cafes » Privacy Tip #3: Block Referer Headers in Firefox
    Writing Software Requirements Specifications | A Technical Communication Community
    DiG HOWTO
    How to use dig to query DNS name servers.
    Behavior Driven Development – Wikipedia, the free encyclopedia
    Agile software development – Wikipedia, the free encyclopedia
    Waterfall model – Wikipedia, the free encyclopedia