Onur Güzel This was a triumph…

HTML5 Video Loop Support for Firefox

Posted on May 16, 2011

You created a fancy HTML5 page with video element but guess what, Firefox 4 does not support video loop.

I found a workaround for this problem with javascript.

<video onended="this.play();" loop />

Storing MAC address in a MySQL database

Posted on January 4, 2011

Today, I encountered a problem: storing MAC address in a MySQL database. MAC addresses (something like "01:23:45:67:78:AB") contain six hexadecimal (base 16) values. This means each hexadecimal field can store 256 (2 to the power of 8, in base 10) values. It's 8 bits (= 1 byte) for each value.

6 field x 8 bit = 48 bit = 6 bytes

Thus, instead of storing the address as string, I prefer to store it as an integer. Because as a string (without colons "0123456789A"), it can be stored in 12 bytes. Storing MAC address as integer allows us to store it using less space and also fast indexing.

In database, we can use unsigned BIGINT data type as it can store up to 8 bytes. While reading from database,

SELECT HEX(mac_addr) FROM `devices`;

While saving,

INSERT INTO `devices` (mac_addr) VALUES (x'0123456789AB');

If you prefer to make conversions in PHP,

function mac2int($mac) {
    return base_convert($mac, 16, 10);
}

function int2mac($int) {
    return base_convert($int, 10, 16);
}

You can use this function to make the address human readable

function int2macaddress($int) {
$hex = base_convert($int, 10, 16);
while (strlen($hex) < 12)
	$hex = '0'.$hex;
return strtoupper(implode(':', str_split($hex,2)));
}

Show forecast using Yahoo! Weather

Posted on August 9, 2010

Note: This snippet uses piksemel module to parse XML files. If you don't have it, read this article to install it.

First of all, you need the WOEID (Where on Earth Identification) of the city. In order to learn it, go to http://weather.yahoo.com and search for the city. You'll find the WOEID at the end of the url of the page.

# for Istanbul, TR
woeid = 2344116

Use this id in Yahoo! Weather API url, for w parameter.

weatherUri = "http://weather.yahooapis.com/forecastrss?w=%d" % woeid

If you want the results to be in metric units, add u=c parameter into your query.

weatherUri = "http://weather.yahooapis.com/forecastrss?w=%d&u=c" % woeid

Using urllib, fetch the XML file:

import urllib

xml = urllib.urlopen(weatherUri).read()

We can parse this XML easily using piksemel:

import piksemel

temp = piksemel.parseString(xml).getTag('channel').getTag('item').getTag('yweather:condition').getAttribute('temp')

You can also view XML file and look for other resources such as: humidity, visibility, wind, etc.