Connecting Remotely to MySQL Database on an Amazon EC2 Server

While this was tested using a TurnKey LAMP Server build (Debian Linux), it applies to any Debian/Ubuntu server with MySQL.

Top-Level View of Tutorial

  • Enable MySQL access through server’s firewall (Amazon AWS-EC2 Security Groups)
  • Create non-root MySQL user with % (any) Host permissions
  • Alter the bind-address in the MySQL configuration file (my.cnf) file
  • Restart MySQL

Continue reading

Perfecting Prints with a Printrbot Simple Metal

The Printrbot Simple Metal can be purchased (assembled) for as little as $599 making it a remarkable unit for even the most timid maker.

I’ve had my PSM for almost a year now and printed 2kg worth of PLA on it in that time, so I’ve got a bit of experience under my belt. This was also my very first 3d printer, and I’ve used it for my business making custom chocolates. In that time I’ve learned that, out-of-the-box, the PSM needs a few additional items to really make great prints.

To that end, I wanted to write this post to help other owners get the most out of their little printer. Alas, currently a faulty wire for the auto-level probe (induction sensor) has also given me a little spare time before dealing with that repair (not uncommon unfortunately). There are 3 categories for this guide: Printed add-ons, temperature and curling, and software settings.
Continue reading

Setup OctoPi (US Edition) – OctoPrint on a Raspberry Pi

OctoPrint-GCode-ViewerFirst and foremost, OctoPi is a fantastic pre-built image for a Raspberry Pi (Model A, B, or B+) that is designed to connect to your 3d printer and provide a web interface to interacting with your printer, all using the simple and powerful OctoPrint software. In my case, I’m connecting it to my Printrbot Simple Metal.

OctoPrint is incredibly powerful: you can connect a Raspberry Pi camera, print out a camera mount to attach it to your bed and actually watch your printer through the OctoPrint webpage (or record video, if that’s your thing). You could even do it in complete darkness (with IR LEDs). I have my printer in the same room, but it’s good to dream.
Continue reading

jQuery Mobile Filterable Collapsible Listview with Smart Expansion

Wow, that’s a mouthful. Basically, I wanted to make use of the data-filter option to search a listview, but instead of a listview, I wanted it to be a collection of collapsible elements. Do accomplish this I needed some custom CSS to make it look right. Here is the example code with the ID iamalist. The page’s content section ID is iama, which is used in the CSS.
Continue reading

Using AutoHotKey and Ditto with PHP

I’m a purist I suppose. I write PHP, Javascript, CSS, and HTML in Notepad++. I don’t use an IDE (such as NetBeans), but I do have some shortcuts to make things go faster for me. The first one, Ditto, is a clipboard program that remembers the last 10 things put into the clipboard. This means you don’t have to worry about losing that copy/paste because it was overwritten. It’s simple, open, and a no-brainer addition. For those on OSX, Jumpcut is a great option.

The second one is AutoHotKey, which is crazy powerful, but for this example, I’m using its simple text replacement features. For instance, when I type qwhi, it is replaced with this:

while ($row = mysqli_fetch_assoc($result)){

}mysqli_free_result($result);

You can imagine how handy this can be. Below are some of the shortcodes I use in my AutoHotKey file. Enjoy.
Continue reading

Mysqli and BLOB binary database fields

This post exists to save you hours of research on the web. The following things may be true about you:

  • You recently transitioned from mysql PHP functions to mysqli functions (staying current)
  • You prefer procedural PHP over object-oriented PHP (functions and arrays are cooler than classes)
  • You are storing some data in a MySQL BLOB, MEDIUMBLOB, or LONGBLOB field, which is Binary

Continue reading

mysqli_result() function to match mysql_result()

This code is licensed under Creative Commons 0 (Public Domain)

As of PHP 5.5, the MySQL functions are deprecated and are removed in PHP 7. The recommendation is to switch to MySQLi functions, which conveniently offer both a procedural (my preference) and an object-oriented structure. Luckily, it’s a rather easy transition to MySQLi as functions names and functions are nearly identical (just change mysql_ to mysqli_). The only exception to this is the mysql_result() function, which has no analog.

Quick review: mysql_result() is used to write less code when your database query is returning only a single row (LIMIT 1) and/or a single column.


$output = mysql_result($result,0);

Pretty simple and straightforward. To replicate this in MySQLi, the following function can be used:


function mysqli_result($res,$row=0,$col=0){ 
    $numrows = mysqli_num_rows($res); 
    if ($numrows && $row <= ($numrows-1) && $row >=0){
        mysqli_data_seek($res,$row);
        $resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
        if (isset($resrow[$col])){
            return $resrow[$col];
        }
    }
    return false;
}

It has one improvement over mysql_result(), which is you can choose to only include the resource and no row and/or column. It will just assume mysqli_result($resource,0,0).

EDITED Dec 19, 2014
Function updated to allow for the column to be referenced by field name as well as numerical offset.