<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PlanetMysql.ru - информация о СУБД MySQL &#187; ajax</title>
	<atom:link href="http://planetmysql.ru/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://planetmysql.ru</link>
	<description>Блог о самой популярной СУБД MySQL</description>
	<lastBuildDate>Fri, 10 Feb 2012 22:53:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Speaking at the MySQL conference 2011</title>
		<link>http://rpbouman.blogspot.com/2011/01/speaking-at-mysql-conference-2011.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=speaking-at-the-mysql-conference-2011</link>
		<comments>http://rpbouman.blogspot.com/2011/01/speaking-at-mysql-conference-2011.html#comments</comments>
		<pubDate>Thu, 06 Jan 2011 00:43:00 +0000</pubDate>
		<dc:creator>Roland Bouman</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[Drizzle]]></category>
		<category><![CDATA[Freebase]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[MQL]]></category>
		<category><![CDATA[mql-to-sql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql user conference]]></category>
		<category><![CDATA[mysqlconf]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I just received a confirmation that my presentation proposal for the MySQL user conference 2011 was accepted! The title for my proposal is MQL-to-SQL: a JSON-based Query Language for RDBMS Access from AJAX Applications, and it covers pretty much everything implied by the title.As always, the Hyatt Regency Hotel in Santa Clara, California serves as the venue. The conference will be held from April 11-14. Except for the venue and period, I think this year's conference will bear few similarities to previous editions. Let me try and explain.This year's theme is "MySQL, the ecosystem and Beyond". This means that the conference is using MySQL as an anchor for a myriad of topics which are of interest to a large majority of MySQL users. This explicitly leaves room for subjects that may not be directly related to the MySQL product proper. So, not only products with a direct link to MySQL, such as drizzle and MariaDB are covered; NoSQL databases like CouchDB, MongoDB and Cassandra are quite well represented and the conference committee actively reached out to the PostgreSQL community to submit proposals. Traditional topics like scalability, performance and tuning remain strongly present, just like high availability, failover, and replication. As always, some of the world experts in this field will be speaking. In addition, infrastructural topics like virtualization and cloud computing are well represented (but of course, especially with regard to database management); One of the things I'm thrilled about is the presence of developer and applicattion centric topics like GIS, rapid application development, and object relational mapping.  Just take a look at the full schedule to get a taste of what this event will be offering. Personally, I think it's a great setup, and I'm happy and honored to attend! In a series of upcoming blog posts, I plan to explain some of the subject matter regarding my own talk. But for now, I just want to tell you that I think this is going to be a great conference! I'm looking forward to attending a lot of high quality sessions, and meeting world leading experts in the MySQL and open source database ecosystem. I hope to see you there!]]></description>
			<content:encoded><![CDATA[I just received a confirmation that my <a href="http://en.oreilly.com/mysql2011/public/schedule/full#session17134">presentation proposal</a> for the <a href="http://en.oreilly.com/mysql2011">MySQL user conference 2011</a> was accepted! The title for my proposal is <a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17134">MQL-to-SQL: a JSON-based Query Language for RDBMS Access from AJAX Applications</a>, and it covers pretty much everything implied by the title.<br /><br />As always, the <a href="http://www.santaclara.hyatt.com/hyatt/hotels/index.jsp">Hyatt Regency Hotel</a> in Santa Clara, California serves as the venue. The conference will be held from April 11-14. Except for the venue and period, I think this year's conference will bear few similarities to previous editions. Let me try and explain.<br /><br />This year's theme is "MySQL, the ecosystem and Beyond". This means that the conference is using MySQL as an <em>anchor</em> for a myriad of topics which are of interest to a large majority of MySQL users. This explicitly leaves room for subjects that may not be directly related to the MySQL product proper. <br /><br />So, not only products with a direct link to MySQL, such as <a href="http://drizzle.org/Home.html">drizzle</a> and <a href="http://mariadb.org/">MariaDB</a> are covered; NoSQL databases like <a href="http://couchdb.apache.org/">CouchDB</a>, <a href="http://www.mongodb.org/">MongoDB</a> and <a href="http://cassandra.apache.org/">Cassandra</a> are quite well represented and the conference committee actively reached out to the <a href="http://www.postgresql.org/">PostgreSQL</a> community to submit proposals. Traditional topics like scalability, performance and tuning remain strongly present, just like high availability, failover, and replication. As always, some of the world experts in this field will be speaking. In addition, infrastructural topics like virtualization and cloud computing are well represented (but of course, especially with regard to database management); One of the things I'm thrilled about is the presence of developer and applicattion centric topics like GIS, rapid application development, and object relational mapping.  <br /><br />Just <a href="http://en.oreilly.com/mysql2011/public/schedule">take a look at the full schedule</a> to get a taste of what this event will be offering. Personally, I think it's a great setup, and I'm happy and honored to attend! <br /><br />In a series of upcoming blog posts, I plan to explain some of the subject matter regarding my own talk. But for now, I just want to tell you that I think this is going to be a great conference! I'm looking forward to attending a lot of high quality sessions, and meeting world leading experts in the MySQL and open source database ecosystem. I hope to see you there!<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/15319370-6905816910315063839?l=rpbouman.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=26923&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=26923&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2011/01/06/speaking-at-the-mysql-conference-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A comet over PHProjekt 6</title>
		<link>http://blog.thinkphp.de/archives/495-A-comet-over-PHProjekt-6.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-comet-over-phprojekt-6</link>
		<comments>http://blog.thinkphp.de/archives/495-A-comet-over-PHProjekt-6.html#comments</comments>
		<pubDate>Thu, 04 Mar 2010 11:59:37 +0000</pubDate>
		<dc:creator>Planet MySQL</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[comet]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phprojekt]]></category>

		<guid isPermaLink="false">http://blog.thinkphp.de/archives/495-guid.html</guid>
		<description><![CDATA[So far PHProjekt 6 (P6, see http://phprojekt.com) is already enhanced with nice AJAX workflows and snappy user-experience. Nevertheless, we discussed a way to provide synchronous communication and direct information within the application.

Everybody knows GoogleMail with its easy to use frontend. Maybe you use it for your daily work. In GoogleMail, there is no need to refresh the page to receive a new mail, Google informs you automatically whenever a new mail is available. But how is this possible? The answer to this question is really simple: The server triggers a signal informing that a new mail is available. This technology is called Comet and describes a way how the server communicates with the client [see http://en.wikipedia.org/wiki/Comet_(programming) ].

Is there a way to use Comet for P6? As P6 works with a lot of users, it is important for me as a user to be informed when somebody has changed something in my projects or has added an urgent todo. The list where a notification could be triggered is long, but at the moment, only email notifications are sent immediately. So, what we need in P6 are real-time notifications. With real-time notifications, for example, every time somebody changes something in my project, I receive a message in form of a highlighted info box. This looks like a typical use case for using Comet. And yes, Comet would be great for realizing this kind of real-time notification! But since the users love the handy system requirements (Apache Server and MySQL) and the ease of installation, something different is needed than a real Comet architecture, because all the Comet magic is based on a so called application server, e.g. Jetty, Persevere. Therefore, I decide to implement another (Comet-) technology, called Long Polling. You can find the name AJAX Polling for this technology, too.

The technology behind Long Polling is to open a connection from the client to the server and not to close this connection immediately. Ok, that´s fine, but how to open a connection and "hold" it? Opening a connection to the server is easy, a simple AJAX will do the trick. P6 uses the Dojo Toolkit for all its AJAX, so in this case I used the Dojo.xhrPost.

        dojo.xhrPost({
            url:   myUrl,
            error: function(error, handle) {
                handleError(myUrl, error);
            },
            load: function(response) {
                if (false != response.data) {
                    showToaster(response.data);
                }
            },
            handleAs: 'json'
        });

Since the HTTP protocoll is connection-based, at the server-side, a process is also needed that holds the connection and does not return . So, what I do to hold this connection open is to set a simple timeout during the execution of the server-side script, in my case I use sleep(). This is the basic idea of long polling, but the gimmick of this approach is to return earlier if something happens on the server-side. In other words, I open a connection to the server and check whether there are any changes, if not, the connection stays open for the maximum polling time. If yes, the response will be returned to the client immediately. 


This diagram shows the basic workflow, and the lines below show the possible solution in PHP:
        $counter  = 0;
        $maxLoops = 4;
        $data     = array();

        while ($counter != $maxLoops) {
            $counter++;
            $data = $this-&#62;getMessage($userId); // get data from database
            if (false === empty($data)) {
                return $data; // there is something new, return immediately
            }
            sleep(5); // nothing is new, sleep for 5 sec.
        }

        return $data; // return the empty array 

For P6 this means that I always save the following: the person who triggers an event, the event itself (e.g. somebody adds a new note), the item, the project, the creation time, the time until this message is valid, and the persons who should receive a frontend message from the database. The long polling loop checks whether there is anything new. If yes, it returns the data. If not, the polling loop starts again. Every event is saved in the database for a maximum of two minutes, except events in the future. Itis real-time  so itis possible to miss a message  ;-) 

One word about the Dojo Toolkit. The AJAX API of Dojo provides several functions to communicate with the server. The easiest way is to use dojo.xhrGet or dojo.xhrPost.  I decided to use the Post version. Although the function has a property setTimeout, which allows you to set the time to wait for a response from the server, this is not needed, because of the sleep loops at the server side.

Now, lets look at the downsides of the long polling approach. Yes, I partly agree with everybody who says that the permanent polling to the server causes massive traffic and server load, especially with an increasing number of users. But in the special case of P6 this is OK, because the number of users is manageable and in most cases, P6 runs in a local network. In addition, the frontend messages are configurable, You can set the polling loop and the number of requests to the database. 

Considering all the facts and keeping in mind that P6 is designed to be a lightweight open source groupware, I am positive to say that the Long Polling technology is the right choice for P6.]]></description>
			<content:encoded><![CDATA[So far PHProjekt 6 (P6, see <a href="http://phprojekt.com" title="PHProject 6">http://phprojekt.com</a>) is already enhanced with nice AJAX workflows and snappy user-experience. Nevertheless, we discussed a way to provide synchronous communication and direct information within the application.
<br /><br />
Everybody knows GoogleMail with its easy to use frontend. Maybe you use it for your daily work. In GoogleMail, there is no need to refresh the page to receive a new mail, Google informs you automatically whenever a new mail is available. But how is this possible? The answer to this question is really simple: The server triggers a signal informing that a new mail is available. This technology is called Comet and describes a way how the server communicates with the client [see <a href="http://en.wikipedia.org/wiki/Comet_(programming)" title="Comet">http://en.wikipedia.org/wiki/Comet_(programming)</a> ].
<br /><br />
Is there a way to use Comet for P6? As P6 works with a lot of users, it is important for me as a user to be informed when somebody has changed something in my projects or has added an urgent todo. The list where a notification could be triggered is long, but at the moment, only email notifications are sent immediately. So, what we need in P6 are real-time notifications. With real-time notifications, for example, every time somebody changes something in my project, I receive a message in form of a highlighted info box. This looks like a typical use case for using Comet. And yes, Comet would be great for realizing this kind of real-time notification! But since the users love the handy system requirements (Apache Server and MySQL) and the ease of installation, something different is needed than a real Comet architecture, because all the Comet magic is based on a so called application server, e.g. Jetty, Persevere. Therefore, I decide to implement another (Comet-) technology, called Long Polling. You can find the name AJAX Polling for this technology, too.
<br /><br />
The technology behind Long Polling is to open a connection from the client to the server and not to close this connection immediately. Ok, that´s fine, but how to open a connection and "hold" it? Opening a connection to the server is easy, a simple AJAX will do the trick. P6 uses the Dojo Toolkit for all its AJAX, so in this case I used the Dojo.xhrPost.
<br /><br />
<code>        dojo.xhrPost({
            url:   myUrl,
            error: function(error, handle) {
                handleError(myUrl, error);
            },
            load: function(response) {
                if (false != response.data) {
                    showToaster(response.data);
                }
            },
            handleAs: 'json'
        });</code>
<br /><br />
Since the HTTP protocoll is connection-based, at the server-side, a process is also needed that holds the connection and does not return . So, what I do to hold this connection open is to set a simple timeout during the execution of the server-side script, in my case I use sleep(). This is the basic idea of long polling, but the gimmick of this approach is to return earlier if something happens on the server-side. In other words, I open a connection to the server and check whether there are any changes, if not, the connection stays open for the maximum polling time. If yes, the response will be returned to the client immediately. 
<br /><!-- s9ymdb:359 --><img class="serendipity_image_center" width="526" height="514" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="http://blog.thinkphp.de/uploads/phprojekt/workflowajaxrequestlongpolling.png" alt="" />
<br />
This diagram shows the basic workflow, and the lines below show the possible solution in PHP:
<br /><br /><code>        $counter  = 0;
        $maxLoops = 4;
        $data     = array();

        while ($counter != $maxLoops) {
            $counter++;
            $data = $this->getMessage($userId); // get data from database
            if (false === empty($data)) {
                return $data; // there is something new, return immediately
            }
            sleep(5); // nothing is new, sleep for 5 sec.
        }

        return $data; // return the empty array </code>
<br /><br />
For P6 this means that I always save the following: the person who triggers an event, the event itself (e.g. somebody adds a new note), the item, the project, the creation time, the time until this message is valid, and the persons who should receive a frontend message from the database. The long polling loop checks whether there is anything new. If yes, it returns the data. If not, the polling loop starts again. Every event is saved in the database for a maximum of two minutes, except events in the future. Itis real-time  so itis possible to miss a message  ;-) 
<br /><br />
One word about the Dojo Toolkit. The AJAX API of Dojo provides several functions to communicate with the server. The easiest way is to use dojo.xhrGet or dojo.xhrPost.  I decided to use the Post version. Although the function has a property setTimeout, which allows you to set the time to wait for a response from the server, this is not needed, because of the sleep loops at the server side.
<br /><br />
Now, lets look at the downsides of the long polling approach. Yes, I partly agree with everybody who says that the permanent polling to the server causes massive traffic and server load, especially with an increasing number of users. But in the special case of P6 this is OK, because the number of users is manageable and in most cases, P6 runs in a local network. In addition, the frontend messages are configurable, You can set the polling loop and the number of requests to the database. 
<br /><br />
Considering all the facts and keeping in mind that P6 is designed to be a lightweight open source groupware, I am positive to say that the Long Polling technology is the right choice for P6.<br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=23742&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=23742&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2010/03/04/a-comet-over-phprojekt-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spinn3r Hiring Senior Unix Operations Engineer</title>
		<link>http://feedblog.org/2009/08/31/spinn3r-hiring-senior-unix-operations-engineer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=spinn3r-hiring-senior-unix-operations-engineer</link>
		<comments>http://feedblog.org/2009/08/31/spinn3r-hiring-senior-unix-operations-engineer/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 00:07:08 +0000</pubDate>
		<dc:creator>Kevin Burton</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[spinn3r]]></category>

		<guid isPermaLink="false">http://feedblog.org/?p=1956</guid>
		<description><![CDATA[Spinn3r is growing fast.  Time to hire another engineer.  Actually, we&#8217;re hiring for like four people right now so I&#8217;ll probably be blogging more on this topic. 
My older post on this subject still applies for requirements.
If you&#8217;re a Linux or MySQL geek we&#8217;d love to have your help.
Did I mention we just moved to an awesome office on 2nd and Howard in downtown SF?
       ]]></description>
			<content:encoded><![CDATA[<div><br /><p>Spinn3r is growing fast.  Time to hire another engineer.  Actually, we&#8217;re hiring for like four people right now so I&#8217;ll probably be blogging more on this topic. </p>
<p>My older post on this subject <a href="http://blog.spinn3r.com/2008/05/spinn3r-hiring.html">still applies for requirements</a>.</p>
<p>If you&#8217;re a Linux or MySQL geek we&#8217;d love to have your help.</p>
<p>Did I mention we just moved to an awesome office on 2nd and Howard in downtown SF?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/burtonator.wordpress.com/1956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/burtonator.wordpress.com/1956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/burtonator.wordpress.com/1956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/burtonator.wordpress.com/1956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/burtonator.wordpress.com/1956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/burtonator.wordpress.com/1956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/burtonator.wordpress.com/1956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/burtonator.wordpress.com/1956/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/burtonator.wordpress.com/1956/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/burtonator.wordpress.com/1956/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=feedblog.org&amp;blog=848832&amp;post=1956&amp;subd=burtonator&amp;ref=&amp;feed=1" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=20877&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=20877&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2009/09/01/spinn3r-hiring-senior-unix-operations-engineer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

