Thursday, September 24, 2009

Google apologizes for Gmail outage

WASHINGTON – Google apologized Thursday for a Gmail outage which left some users of the free Web-based email service cut off for the second time in a month.

The Internet giant announced at 10:29 am (1429 GMT) that an unspecified problem was preventing a "small subset of users" from accessing their Gmail accounts.

About an hour later, the Internet giant said service had been restored for some users and at 12:58 pm (1658 GMT) it said the problem had been resolved.

"We apologize for the inconvenience and thank you for your patience and continued support," Google said in a message on its App Status Dashboard, a site which monitors the performance of its online services.

The disruption came just over three weeks after an outage which left millions of users without Gmail for more than an hour and a half.

Google blamed server maintenance for the September 1 Gmail outage and apologized for the disruption, which it called a "Big Deal."

Google also suffered technical problems in May, leaving millions of people unable to use popular services such as its main search page, as well as Gmail and Google News.

Google also experienced a breakdown of Gmail, which has tens of millions of users, in February which lasted a few hours.

The failures, while rare, are seen by some industry analysts as a setback to the Mountain View, California-based Google's efforts to promote Gmail and other Web-based services to businesses.

Source: Google apologizes for Gmail outage

Thursday, September 3, 2009

100 Artworks from the Top Digital Artists in Asia

While surfing; I came across this site that features Top Asian Digital Artist. It hit me hard when I failed to see my countrymen from Philippines failed to have an entry.

I may have a long way to go; but I still believe we Filipinos can make it.


http://psd.tutsplus.com/tutorials/tutorials-effects/100-artworks-from-the-top-digital-artists-in-asia/

Sunday, August 16, 2009

From X to NEXT




From X to NEXT. The 21 year old Cebu International Furniture and Furnishings Exhibition, previously known as CEBU X, has been reincarnated as CEBUNEXT.

As CEBUNEXT, the exhibition embodies the drive to create new designs with exceptional quality. It harnesses and consolidates the collective strength of the Philippine furniture industry, while highlighting Cebu as the design capital of Southeast Asia.

Cebu has a rich history in furniture making. So rich that is is even the key source for trends that are followed worldwide, such as the popularity of rattan and buri in the 60s and 70s respectively, stonecraft in the 80's, cane & iron furnishings in the 90's and the abaca trend of early 2000. CEBUNEXT continues this leading legacy by setting its sights forward to the furniture trends of the coming decade--

Come see what's next at CEBUNEXT.

Visit the CEBUNEXT website

Sunday, August 9, 2009

Google AdWords Trying Out an Opportunities Tab

On Sunday, I went into AdWords to do a little keyword research. You've seen their keyword tool before. You just go into the campaign, click on the Tools button and you've got the keyword tool right up top. This didn't happen to me Sunday. In fact, I didn't see the Tools button at all. Sitting here confused, it took me quite a few seconds to recognize something I've never seen before, an Opportunities tab.

Friday, August 7, 2009

Hackers hit Twitter and Facebook





Micro-blogging service Twitter and social networking site Facebook have been severely disrupted by hackers.


Twitter was taken offline for more than two hours whilst Facebook's service was "degraded", according to the firms.

The popular sites were subject to so-called denial-of-service attacks on Thursday, the companies believe.

Denial-of-service (DOS) attacks take various forms but often involve a company's servers being flooded with data in an effort to disable them.

"Attacks such as this are malicious efforts orchestrated to disrupt and make unavailable services such as online banks, credit card payment gateways, and in this case, Twitter for intended customers or users," said Twitter co-founder Biz Stone on the company's blog.

The service was restored shortly after the blog post, but the companies have had to continue to fend off the attack.

Facebook said its service was reduced but not taken offline.

"No user data was at risk and we have restored full access to the site for most users," spokeswoman Brandee Barker told the AFP news agency.

"We're continuing to monitor the situation to ensure that users have the fast and reliable experience they've come to expect from Facebook."


View this article

REPLACE Statement on MySQL

Many times we need to update a record but we might not know whether such a record exists or not. In traditional programming we usually check whether the record exists or not, then perfrom the appropriate query according to the result of the previous query. A very good example of such situatuion is where you need to update the ip of an user against an user id, but the id may or may not be present in the visits table, user_id being the primary key for the table visits.

An usual solution to the problem is something like this.

Code: Perl
my $user_id = 1000;
my $ip = $ENV{'REMOTE_ADDR'};
my $stmt = $db->prepare('SELECT * FROM visits WHERE user_id=?');
$stmt->execute($user_id);

if($stmt->rows) ## a entry for the page id exists, update the record
{
my $update_stmt = $db->prepare('UPDATE visits SET ip = ? WHERE user_id=?');
$update_stmt->execute($ip,$user_id);
}
else ## no such id, insert a new entry with count 1
{
my $insert_stmt = $db->prepare('INSERT INTO visits VALUES(?,?)');
$insert_stmt->execute($user_id,$ip);
}

Code: PHP
$user_id = 1000;
$ip = $_SERVER['REMOTE_ADDR'];
$res = mysql_query("SELECT * FROM visits WHERE user_id=$user_id");

if(mysql_num_rows($res)) // a entry for the page id exists, update the record
{
$result = mysql_query("UPDATE visits SET ip = '$ip' WHERE user_id=$user_id");
}
else // no such id, insert a new entry with count 1
{
$result = mysql_query("INSERT INTO visits VALUES('$user_id','$ip')");
}

Enter: REPLACE

The REPLACE statement very similarly or exactly like INSERT statment, except for the fact that in case a record with the same primary key exists in the one that's going to be inserted then the old row is deleted before the new one is inserted. You need to have an unique index or a primary key to use REPLACE statment.

REPLACE is not part of the SQL standard, it's an useful extension by MySQL, I guess there are many other RDBMSs which have come up with similar extensions.

So, now that we have REPLACE, we can rewrite above code snippets in the following manner:

Code: Perl
my $user_id = 1000;
my $ip = $ENV{'REMOTE_ADDR'};
my $stmt = $db->prepare('REPLACE INTO visits VALUES(?,?)');
$stmt->execute($user_id,$ip);

Code: PHP
$user_id = 1000;
$ip = $_SERVER['REMOTE_ADDR'];
$res = mysql_query("REPLACE INTO visits VALUES('$user_id','$ip')");

That's it, isn't that easier guys!!

Read more about REPLACE statement here, http://dev.mysql.com/doc/refman/5.0/en/replace.html

Alternative Approach

A forgotten or unknown feature among the masses is the ON DUPLICATE KEY UPDATE, it causes an UPDATE when a duplicate key error is encountered during an insert. The above code snippet again be re-written like this,

Code: Perl
my $user_id = 1000;
my $ip = $ENV{'REMOTE_ADDR'};
my $stmt = $db->prepare('INSERT INTO visits VALUES (?,?) ON DUPLICATE KEY UPDATE ip=?');
$stmt>execute($user_id,$ip,$ip);

Code: PHP
$user_id = 1000;
$ip = $_SERVER['REMOTE_ADDR'];
$res = mysql_query("INSERT INTO visits VALUES ('$user_id','$ip') ON DUPLICATE KEY UPDATE ip='$ip'");

You can read more about this feature here, http://dev.mysql.com/doc/refman/5.0/...duplicate.html

Monday, May 25, 2009

Google Chrome 2.0 now available for download


If you're like me who's using Chrome for quite sometime now, then you'll be excited to know that they've released the Google Chrome 2.0, which boasts 20% increase in browser performance than Chrome 1. With it's simple design hides a technology sophisticatedly integrated to provide faster, safer and easier web browsing experience.

Download it now at google.com\chrome and see for yourself!