<?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>Alexey Zakhlestins blog &#187; web</title>
	<atom:link href="http://blog.milkfarmsoft.com/category/computers/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.milkfarmsoft.com</link>
	<description>Programming for Mac and Web</description>
	<lastBuildDate>Sun, 13 Jun 2010 15:42:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>DNS SRV-records support in HTTP-browsers</title>
		<link>http://blog.milkfarmsoft.com/2009/09/dns-srv-records-support-in-http-browsers/</link>
		<comments>http://blog.milkfarmsoft.com/2009/09/dns-srv-records-support-in-http-browsers/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 13:34:11 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=141</guid>
		<description><![CDATA[Ten years ago, today, on september 20, 1999 bug titled "DNS: RFC 2782 not supported (SRV records)" was submitted to Mozilla. Today, in 2009, bug has patch attached, but it is not committed and waits for approval. I doubt, that is the longest-living bug in mozilla, but, still, 10 years is a great age for a bug. Let's party! :)
 <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2009/09/dns-srv-records-support-in-http-browsers/">DNS SRV-records support in HTTP-browsers</a></span>]]></description>
			<content:encoded><![CDATA[<p>Ten years ago, today, on september 20, 1999 bug titled &#8220;DNS: RFC 2782 not supported (SRV records)&#8221; was submitted to Mozilla. Today, in 2009, bug has patch attached, but it is not committed and waits for approval. I doubt, that is the longest-living bug in mozilla, but, still, 10 years is a great age for a bug. Let&#8217;s party! <img src='http://blog.milkfarmsoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Now, some of my readers, are probably asking themselves: what is it all about? why is this bug important? Ok. Let&#8217;s find out!</p>
<p>How does browser usually find which server to ask, when you enter URL?  Well, at first, it parses out protocol and domain name from URL. For example, if URL is <strong>http://www.example.com/page.html</strong> then protocol is <strong>http</strong> and domain name is <strong>www.example.com</strong>. After that, browser sends request for &#8220;A&#8221; type record to DNS server and server replies with IP address (or several IP addresses). After that, browser tries to open connection with these addresses one by one, until it finds one which really works. Hopefully, first one will work, but sometimes each one will fail; In this case, browser will show us an error.</p>
<p>&#8220;A&#8221; records have the following format:</p>
<pre>
    hostname    IN  A   ip-address  time-to-live
</pre>
<p>For basic cases, this scheme seems to work just fine, but it has some inherent flaws, when you start to think about scalability.</p>
<ol>
<li>It is impossible to map different services on the same domain-name to different servers. For example: I can&#8217;t have FTP and HTTP servers responding on example.com and, at the same time, located on different physical machines. My only option would be some kind of router, which would forward requests on different ports to different IP&#8217;s.</li>
<li>It is impossible to map service to specific port of server. Browsers just looks for TCP-connection on port 80 while using HTTP, for example.</li>
<li>It is impossible to implement sophisticated load-balancing rules in DNS. Having several A-records in DNS just gives possibility to have equal-load of several machines, nothing fancy.</li>
</ol>
<p>It is an interesting fact, that all this problems are solved long time ago for one specific protocol called SMTP (yes, the one which delivers emails all around the globe). SMTP uses special kind of DNS-records called &#8220;MX&#8221; which allow to specify which machine(s) are waiting for SMTP-connections targeted to domain name and allow to specify priority of these machines, so, at first, clients will try to access machines with high priority and in case of problems will fallback to low-priority ones. So, MX records make email-infrastructure seriously more robust and scalable then anything else. Why such special treatment?</p>
<p><a href="http://en.wikipedia.org/wiki/MX_record" title="MX record - Wikipedia, the free encyclopedia">&#8220;MX&#8221; records</a> have the following format:</p>
<pre>
    domainname  IN  MX  priority    hostname  time-to-live
</pre>
<p>Here, <a href="http://tools.ietf.org/html/rfc2782" title="RFC 2782 - A DNS RR for specifying the location of services (DNS SRV)">RFC 2782</a> comes on scene. Idea of this standard is to achieve similiar flexibility for any protocol used on internet.</p>
<p>&#8220;SRV&#8221; records allow to specify that specific application protocol, used over specific transport protocol of this domainname is handled by several servers on specific ports with various priority. That is as flexible as it can be. Let me throw some examples:</p>
<pre>
    _http._tcp.example.com. 86400 IN SRV 0 5 81 www1.example.com.
    _http._tcp.example.com. 86400 IN SRV 0 5 80 www2.example.com.
    _http._tcp.example.com. 86400 IN SRV 1 9 81 www-backup.example.com.
    _http._tcp.example.com. 86400 IN SRV 1 1 8000 www-weak-backup.example.com.
</pre>
<p>These four records tell browser, that:</p>
<ul>
<li>HTTP-over-TCP connections for &#8220;example.com&#8221; domain are handled by 4 servers: www1.example.com on port 81, www2.example.com on port 80, www-backup.example.com on port 81 and www-weak-backup.example.com on port 8000.</li>
<li>www1.example.com and www2.example.com have priority &#8220;0&#8243; (highest), so should be first to try. Both have weight &#8220;5&#8243;, which means, that they have 50% chance to be selected by client (equal load)</li>
<li>In case both of these are not reachable, browser should check lower-priority servers www-backup.example.com and www-weak-backup.example.com, but www-backup.example com should be preferred in 9 out of 10 cases (it has weight=9, while another one has weight=1).</li>
</ul>
<p>Sounds pretty cool, but, unfortunately, this technology is still not implemented in any of the browsers. Mozilla(Firefox) has <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=14328">this bug</a> for 10 years, WebKit has <a href="https://bugs.webkit.org/show_bug.cgi?id=6872">this bug</a> for 3+ years and Chromium has <a href="http://code.google.com/p/chromium/issues/detail?id=22423" title="Issue 22423 - chromium - DNS: RFC 2782 not supported (SRV records) - Project Hosting on Google Code">this bug</a> since today.</p>
<p>There is no need for special support on webserver-side — that&#8217;s a good side of this technology too. Just add relevant records to DNS-server and all compliant clients will see it.</p>
<p>At the moment, SRV-records are widely used by XMPP/Jabber, SIP, LDAP software and Kerberos. I believe, any protocol in use can benefit.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2009/09/dns-srv-records-support-in-http-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>work with TwitterData in PHP</title>
		<link>http://blog.milkfarmsoft.com/2009/08/work-with-twitterdata-in-php/</link>
		<comments>http://blog.milkfarmsoft.com/2009/08/work-with-twitterdata-in-php/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 19:36:35 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=106</guid>
		<description><![CDATA[I recently created a small library for working with twitterdata in PHP. Sources are available from GitHub. Twitter Data is a simple, open, semi-structured format for embedding machine-readable, yet human-friendly, data in Twitter messages. <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2009/08/work-with-twitterdata-in-php/">work with TwitterData in PHP</a></span>]]></description>
			<content:encoded><![CDATA[<p>I recently created a small library for working with <a href="http://twitterdata.org/" target="_blank">twitterdata</a> in PHP. Sources are available from GitHub: <a href="http://github.com/indeyets/php-twitterdata/tree/master">php-twitterdata</a></p>
<p>Here&#8217;s the description from Twitter Data site:</p>
<blockquote><p>
Twitter Data is a simple, open, semi-structured format for embedding machine-readable, yet human-friendly, data in <a href="http://twitter.com/">Twitter</a> messages. This data can then be transmitted, received, and interpreted in real time by powerful new kinds of applications built on the Twitter platform. Here is an example Twitter Data message:</p>
<p><code>I love the #twitterdata proposal! $vote +1</code></p>
<p>The part with the dollar sign, $vote +1, is a piece of data embedded using the Twitter Data format.
</p></blockquote>
<p>To use php-twitterdata library, <a href="http://github.com/indeyets/php-twitterdata/downloads">download</a> it into the sub-direcory in your project&#8217;s directory (or any other place you like) and init the autoloader:</p>
<div class="php" style="font-family: monospace; color: #000000;"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br /><span style="color: #2500B9; font-weight: bold;">require</span> <span style="color: #ff0000;">&#8216;php-twitterdata/autoload.php&#8217;</span>;<br /><span style="color: #000000; font-weight: bold;">?&gt;</span></div>
<p>PHP API provided by php-twitterdata has 2 layers. On lower level, there are 3 classes: <a href="http://github.com/indeyets/php-twitterdata/blob/e59c94763f60deb9701a380101047d9cb6586245/TwitterData_Message.php#L12" target="_blank">TwitterData_Message</a>, <a href="http://github.com/indeyets/php-twitterdata/blob/e59c94763f60deb9701a380101047d9cb6586245/TwitterData_Frame.php#L12" target="_blank">TwitterData_Frame</a> and <a href="http://github.com/indeyets/php-twitterdata/blob/e59c94763f60deb9701a380101047d9cb6586245/TwitterData_Tuple.php#L12" target="_blank">TwitterData_Tuple</a> which correspond to parts of data-enabled twitter-message. Message can consist of several Frames, Frame can consist of several Tuples and a &#8220;subject&#8221;. Objects of each of these classes can be created programmatically and combined in hierarchy. Each of them has &#8220;magic&#8221; <a href="http://docs.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring" target="_blank">__toString()</a> method, so, to export them as a valid twitter-message, you just need to put objects in string context. Something like this:</p>
<div class="php" style="font-family: monospace; color: #000000;"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br /><span style="color: #0000ff;">$tuple</span> = <span style="color: #000000; font-weight: bold;">new</span> TwitterData_Tuple<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;foo&#8217;</span>, <span style="color: #ff0000;">&#8216;bar&#8217;</span><span style="color: #66cc66;">&#41;</span>;<br /><span style="color: #0000ff;">$frame</span> = <span style="color: #000000; font-weight: bold;">new</span> TwitterData_Frame<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;Hello, world!&#8217;</span>, <a style="text-decoration: none;" href="http://docs.php.net/array" target="_blank"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$tuple</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br /><a style="text-decoration: none;" href="http://docs.php.net/echo" target="_blank"><span style="color: #000066;">echo</span></a> <span style="color: #0000ff;">$frame</span>;<br /><span style="color: #000000; font-weight: bold;">?&gt;</span></div>
<p>and the result will be:<br />
<code><br />
Hello, world! $foo bar<br />
</code></p>
<p>If you need to parse Twitter Data messages you should use <a href="http://github.com/indeyets/php-twitterdata/blob/e59c94763f60deb9701a380101047d9cb6586245/TwitterData_Parser.php#L29" target="_blank">TwitterData_Parser</a> class. It is a SAX-style parser, with DOM-style export. If all you need is a hierarchy of objects, use it like this:</p>
<div class="php" style="font-family: monospace; color: #000000;"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br /><span style="color: #0000ff;">$parser</span> = <span style="color: #000000; font-weight: bold;">new</span> TwitterData_Parser<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$text_from_twitter</span><span style="color: #66cc66;">&#41;</span>;<br /><span style="color: #0000ff;">$message</span> = <span style="color: #0000ff;">$parser</span>-&gt;<span style="color: #006600;">export</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// $message is object of TwitterData_Message class</span><br /><span style="color: #000000; font-weight: bold;">?&gt;</span></div>
<p>Otherwise, you can specify another handler-class as a second parameter of constructor. Such class has to implement <a href="http://github.com/indeyets/php-twitterdata/blob/e59c94763f60deb9701a380101047d9cb6586245/TwitterData_Parser.php#L12" target="_blank">TwitterData_Parser_CallbackInterface</a>.</p>
<p>Does it all sound too complex? No problem!</p>
<p>php-twitterdata library also includes high-level interface, which consists of 2 simple functions: <a href="http://github.com/indeyets/php-twitterdata/blob/e59c94763f60deb9701a380101047d9cb6586245/TwitterData.php#L14" target="_blank">TwitterData::array_to_TwitterData()</a> and <a href="http://github.com/indeyets/php-twitterdata/blob/e59c94763f60deb9701a380101047d9cb6586245/TwitterData.php#L19" target="_blank">TwitterData::TwitterData_to_array()</a>. First one converts associative array into the string, which can be inserted into twitter-message, and second one takes message-string received from twitter and returns associative array parsed out of tuples from the first frame of message (If you need to get all possible data from message, you will still need to use low-level API).</p>
<p>Example of high-level API:</p>
<div class="php" style="font-family: monospace; color: #000000;"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />TwitterData::<span style="color: #006600;">TwitterData_to_array</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;Hello, world! $foo bar&#8217;</span><span style="color: #66cc66;">&#41;</span>;<br /><span style="color: #808080; font-style: italic;">// array(&#8216;foo&#8217; =&gt; &#8216;bar&#8217;);</span></p>
<p><span style="color: #0000ff;">$message</span> = <span style="color: #ff0000;">&#8216;Hello, world! &#8216;</span>.TwitterData::<span style="color: #006600;">array_to_TwitterData</span><span style="color: #66cc66;">&#40;</span><a style="text-decoration: none;" href="http://docs.php.net/array" target="_blank"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&#8216;foo&#8217;</span> =&gt; <span style="color: #ff0000;">&#8216;bar&#8217;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br /><span style="color: #808080; font-style: italic;">// Hello, world! $foo bar</span><br /><span style="color: #000000; font-weight: bold;">?&gt;</span></div>
<p>Library has <a href="http://github.com/indeyets/php-twitterdata/tree/e5f7ae14a65ed00368e23750de1addaac20f5684/tests" target="_blank">unit-tests</a>, which cover all examples provided on Twitter Data site both on <a href="http://twitterdata.org/" target="_blank">Introduction</a> page and on <a href="http://twitterdata.org/examples/" target="_blank">Examples</a> page and is licensed under <a href="http://github.com/indeyets/php-twitterdata/blob/e5f7ae14a65ed00368e23750de1addaac20f5684/LICENSE#L1" target="_blank">MIT-style license</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2009/08/work-with-twitterdata-in-php/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PHP-FPM is BSD-licensed now</title>
		<link>http://blog.milkfarmsoft.com/2009/06/php-fpm-is-bsd-licensed-now/</link>
		<comments>http://blog.milkfarmsoft.com/2009/06/php-fpm-is-bsd-licensed-now/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 06:25:16 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=88</guid>
		<description><![CDATA[It took several years of waiting, but, it finally happened. PHP-FPM project is officially BSD-licensed now and has good chances to become a part of official PHP distribution. <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2009/06/php-fpm-is-bsd-licensed-now/">PHP-FPM is BSD-licensed now</a></span>]]></description>
			<content:encoded><![CDATA[<p>Some seriously good news here. It took several years of waiting, but, it finally happened. <a href="http://php-fpm.anight.org/" title="php-fpm: PHP FastCGI Process Manager">PHP-FPM</a> project is <a href="http://groups.google.com/group/highload-php-en/browse_thread/thread/974eaff4ad094391">officially BSD-licensed</a> now, which means, that it has good chances to become a part of official PHP distribution.</p>
<p>PHP-FPM is &#8220;deciphered&#8221; as &#8220;PHP FastCGI Process Manager&#8221; and is a patch for php to greatly improve FastCGI SAPI usage in production. It adds a bunch of additional features to php&#8217;s fastcgi such as: easy php-process daemonization (with ability to specify uid/gid/chroot/log-file), safe php-processes restart (without losing requests), custom error-handling and accelerated file-upload support (requires additional support from web-server).</p>
<p>There&#8217;s not much documentation in english, currently, but, again, there is a good chance that it will be added really soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2009/06/php-fpm-is-bsd-licensed-now/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>GSoC is about to start</title>
		<link>http://blog.milkfarmsoft.com/2008/04/gsoc-is-about-to-start/</link>
		<comments>http://blog.milkfarmsoft.com/2008/04/gsoc-is-about-to-start/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 08:17:27 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webforms2]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=81</guid>
		<description><![CDATA[Google announced the list of students, they will be sponsoring this summer to work on open-source projects. My congratulations to everyone, who succeeded. <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2008/04/gsoc-is-about-to-start/">GSoC is about to start</a></span>]]></description>
			<content:encoded><![CDATA[<p>Google announced the list of students, they will be sponsoring this summer to work on open-source projects. My congratulations to everyone, who succeeded.</p>
<p>May the force be with you! <img src='http://blog.milkfarmsoft.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<ul>
<li><a href="http://code.google.com/soc/2008/webkit/about.html">WebKit students</a></li>
<li><a href="http://code.google.com/soc/2008/php/about.html">PHP students</a></li>
<li><a href="http://code.google.com/soc/2008/mysql/about.html">MySQL students</a></li>
</ul>
<p>[<a href="http://google-opensource.blogspot.com/2008/04/announcing-accepted-student-proposals.html" title="">official announcement</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2008/04/gsoc-is-about-to-start/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The shortcut to switch tabs is&#8230;</title>
		<link>http://blog.milkfarmsoft.com/2008/01/the-shortcut-to-switch-tabs-is/</link>
		<comments>http://blog.milkfarmsoft.com/2008/01/the-shortcut-to-switch-tabs-is/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 15:41:49 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[computers]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=79</guid>
		<description><![CDATA[<p>The shortcut to switch tabs is…</p>



TextMate:
Command + Option + Left/Right


Skype:
Command + Shift + Left/Right


Adium, Firefox:
Command + Left/Right


Colloquy, Firefox:
Command + Up/Down


Opera, Safari, Terminal:
Command + Shift + [/]


<p></p>
<p>Dear Santa, please, bring me Mk 41 next christmas, so I can fix <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2008/01/the-shortcut-to-switch-tabs-is/">The shortcut to switch tabs is&#8230;</a></span>]]></description>
			<content:encoded><![CDATA[<p>The shortcut to switch tabs is…</p>
<table border="0" style="margin-top: 0px">
<col width="200" />
<tr>
<td>TextMate:</td>
<td><strong>Command</strong> + <strong>Option</strong> + <strong>Left</strong>/<strong>Right</strong></td>
</tr>
<tr>
<td>Skype:</td>
<td><strong>Command</strong> + <strong>Shift</strong> + <strong>Left</strong>/<strong>Right</strong></td>
</tr>
<tr>
<td>Adium, Firefox:</td>
<td><strong>Command</strong> + <strong>Left</strong>/<strong>Right</strong></td>
</tr>
<tr>
<td>Colloquy, Firefox:</td>
<td><strong>Command</strong> + <strong>Up</strong>/<strong>Down</strong></td>
</tr>
<tr>
<td>Opera, Safari, Terminal:</td>
<td><strong>Command</strong> + <strong>Shift</strong> + <strong>[</strong>/<strong>]</strong></td>
</tr>
</table>
<p></p>
<p>Dear Santa, please, bring me <a href="http://en.wikipedia.org/wiki/Mk_41" title="Mk 41 - Wikipedia, the free encyclopedia">Mk 41</a> next christmas, so I can fix this world.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2008/01/the-shortcut-to-switch-tabs-is/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>all those IIS talks</title>
		<link>http://blog.milkfarmsoft.com/2007/11/all-those-iis-talks/</link>
		<comments>http://blog.milkfarmsoft.com/2007/11/all-those-iis-talks/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 07:37:53 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=77</guid>
		<description><![CDATA[<p style="clear: both">Looks like almost every planet-php blogger mentioned that FastCGI for IIS thingie. I wonder: was it really that bad before it came? The thing which disturbes me in all this hype is that people will tend to think that fastcgi is something iis-specific. Hope they won&#8217;t, because fastcgi is a good (and really powerful) <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2007/11/all-those-iis-talks/">all those IIS talks</a></span>]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Looks like almost every planet-php blogger mentioned that FastCGI for IIS thingie. I wonder: was it really that bad before it came? The thing which disturbes me in all this hype is that people will tend to think that fastcgi is something iis-specific. Hope they won&#8217;t, because fastcgi is a good (and really powerful) way to run PHP applications even if you use apache.</p>
<p style="clear: both">Top reasons:<br />1. FastCGI process can be run using the actual uid of user who creates the files (no need to allow group-readability of files)<br />2. Apache2 can be run in multithreaded-mode (aka &#8220;<a href="http://httpd.apache.org/docs/2.0/mod/worker.html">worker mpm</a>&#8220;)<br />3. It is much easier to switch to any other server (fastcgi is an industry standard and works with any web-server software I know of)<br />4. It is much easier to scale — fastcgi-application can be moved to another physical server and http-server will still be able to talk with it</p>
<p style="clear: both">FastCGI is about flexibility and it deserves a lot of good words not only in IIS context <img src='http://blog.milkfarmsoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p class='final-break' style='clear: both'>
<p class='final-break' style='clear: both'>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2007/11/all-those-iis-talks/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>move to the new server</title>
		<link>http://blog.milkfarmsoft.com/2007/11/move-to-the-new-server/</link>
		<comments>http://blog.milkfarmsoft.com/2007/11/move-to-the-new-server/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 16:47:58 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[hosting]]></category>
		<category><![CDATA[milkfarmsoft]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=75</guid>
		<description><![CDATA[<p style="clear: both">Ok, the transition is over and DNS is propagated. Both web-site and blog are on a new server now.</p>
<p style="clear: both">I guess I can put a badge &#8220;Powered by OpenSolaris&#8221; somewhere around  </p>
<p class='final-break' style='clear: both'>
<p class='final-break' <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2007/11/move-to-the-new-server/">move to the new server</a></span>]]></description>
			<content:encoded><![CDATA[<p style="clear: both">Ok, the transition is over and DNS is propagated. Both <a href="http://www.milkfarmsoft.com/">web-site</a> and <a href="http://blog.milkfarmsoft.com/" target="_blank">blog</a> are on a new server now.</p>
<p style="clear: both">I guess I can put a badge &#8220;Powered by OpenSolaris&#8221; somewhere around <img src='http://blog.milkfarmsoft.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p class='final-break' style='clear: both'>
<p class='final-break' style='clear: both'>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2007/11/move-to-the-new-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fink, new PDB</title>
		<link>http://blog.milkfarmsoft.com/2007/09/fink-new-pdb/</link>
		<comments>http://blog.milkfarmsoft.com/2007/09/fink-new-pdb/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 08:29:13 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[fink]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=69</guid>
		<description><![CDATA[<p>Fink project has launched the new Package Database (aka PDB) interface. Looks neat <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2007/09/fink-new-pdb/">Fink, new PDB</a></span>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.finkproject.org/index.php">Fink project</a> has launched the new <a href="http://pdb.finkproject.org/pdb/">Package Database</a> (aka <a href="http://pdb.finkproject.org/pdb/">PDB</a>) interface. Looks neat <img src='http://blog.milkfarmsoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2007/09/fink-new-pdb/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Some things which happened while I wasn&#8217;t blogging</title>
		<link>http://blog.milkfarmsoft.com/2007/09/some-things-which-happened-while-i-wasnt-blogging/</link>
		<comments>http://blog.milkfarmsoft.com/2007/09/some-things-which-happened-while-i-wasnt-blogging/#comments</comments>
		<pubDate>Sun, 23 Sep 2007 08:22:46 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[D language]]></category>
		<category><![CDATA[beos]]></category>
		<category><![CDATA[haikuos]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[os]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=67</guid>
		<description><![CDATA[<p>Haiku OS reported on their Google Summer of Code results</p>
<p>Makes me think, that I should really-really get some old mac-mini and install Haiku on it. At least, I can program some fancy Jukebox out of it  </p>
<p></p>
<p>ohloh.net: The World&#8217;s Oldest Source Code Repositories</p>
<p>Hey! I was only 1 year old, when they started to use version <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2007/09/some-things-which-happened-while-i-wasnt-blogging/">Some things which happened while I wasn&#8217;t blogging</a></span>]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://haiku-os.org/news/2007-09-19/2007_google_summer_of_code_summary" title="2007 Google Summer of Code Summary | Haiku Operating System">Haiku OS reported on their Google Summer of Code results</a></strong></p>
<p>Makes me think, that I should really-really get some old mac-mini and install Haiku on it. At least, I can program some fancy Jukebox out of it <img src='http://blog.milkfarmsoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p></p>
<p><strong><a href="http://www.ohloh.net/blog/worlds_oldest_source_code_repositories" title="The World's Oldest Source Code Repositories - Ohloh">ohloh.net: The World&#8217;s Oldest Source Code Repositories</a></strong></p>
<p>Hey! I was only 1 year old, when they started to use version control! <img src='http://blog.milkfarmsoft.com/wp-includes/images/smilies/icon_surprised.gif' alt=':-o' class='wp-smiley' /> </p>
<p></p>
<p><strong><a href="http://www.dsource.org/projects/llvmdc" title="llvmdc - dsource.org">DSource: LLVM D Compiler</a></strong></p>
<p>I love <a href="http://www.digitalmars.com/d/" title="Intro - D Programming Language 2.0 - Digital Mars">D language</a>, I love <a href="http://llvm.org/" title="The LLVM Compiler Infrastructure Project">LLVM</a> â€” they make such a beautiful couple. Project is not complete, yet, but it already works for simple cases. <a href="http://www.ohloh.net/accounts/9641" title="lindquist - Ohloh">Author</a> needs any man-power he can get: spread the word, please.</p>
<p></p>
<p><strong>Sam Ruby noticed CouchDB: <a href="http://intertwingly.net/blog/2007/09/07/Ascetic-Database-Architectures" title="Sam Ruby: Ascetic Database Architectures">Ascetic Database Architectures</a></strong></p>
<p>It brought some more attention to <a href="http://www.couchdb.com/" title="CouchDB">CouchDB</a>, which is really-really deserved. CouchDB is a document-oriented non-relational database written by <a href="http://damienkatz.net/" title="Damien Katz">Damien Katz</a> and <a href="http://jan.prima.de/" title="Â«An argument is a connected series of statements to establish a definite proposition.Â»">Jan Lehnardt</a> in erlang, which has JSON, PHP and Ruby APIs (the number of APIs grows each day).</p>
<p></p>
<p><strong>Opera released 3 public <a href="http://www.opera.com/products/desktop/next/" title="Opera Browser 9.5 Alpha release">alpha-versions of their 9.5 series</a></strong></p>
<p>Finally, Opera looks like a native application on mac. It is lightning fast with a new javascript-engine and heavily optimized UI code. I already use 9.5 on daily basis without problems, but your mileage may differ â€” it is an alpha-version, after all. <a href="http://my.opera.com/desktopteam/blog/" title="Desktop Team - by Desktop Team">Get it here</a></p>
<p></p>
<p><strong>PHP 5.3 will have Late Static Binding</strong></p>
<p>LSB will allow static methods to know about inheritance (to know, on which of the descendant-classes the method was actually called). Which means, that it will be possible to make a good-looking ActiveRecord implementation, after all these years.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2007/09/some-things-which-happened-while-i-wasnt-blogging/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>www.milkfarmsoft.com up and running</title>
		<link>http://blog.milkfarmsoft.com/2007/08/wwwmilkfarmsoftcom-up-and-running/</link>
		<comments>http://blog.milkfarmsoft.com/2007/08/wwwmilkfarmsoftcom-up-and-running/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 01:09:54 +0000</pubDate>
		<dc:creator>indeyets</dc:creator>
				<category><![CDATA[html]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.milkfarmsoft.com/?p=66</guid>
		<description><![CDATA[<p>Web site of my company (Milk Farm Sotware, ltd.) is kinda &#8220;alive&#8221; again. The design is brand-new, the content is partially updated.</p>
<p>The texts and downloads are there â€” everything should be working fine. I didn&#8217;t do any software updates this time â€” just republished old archives (they still work) to the redesigned site.</p>
<p>So, in case you <span style="color:#777"> . . . &#8594; Read More: <a href="http://blog.milkfarmsoft.com/2007/08/wwwmilkfarmsoftcom-up-and-running/">www.milkfarmsoft.com up and running</a></span>]]></description>
			<content:encoded><![CDATA[<p>Web site of my company (<a href="http://www.milkfarmsoft.com/" title="Milk Farm Software: products">Milk Farm Sotware, ltd.</a>) is kinda &#8220;alive&#8221; again. The design is brand-new, the content is partially updated.</p>
<p>The texts and downloads are there â€” everything should be working fine. I didn&#8217;t do any software updates this time â€” just republished old archives (they still work) to the redesigned site.</p>
<p>So, in case you were missing my software, you can grab it again, now <img src='http://blog.milkfarmsoft.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Plans:</p>
<ul>
<li>release &ldquo;<a href="http://www.milkfarmsoft.com/pingpong.php" title="Milk Farm Software: products">Ping-Pong</a>&rdquo; â€” the new piece of software by us</li>
<li>release universal binary of <a href="http://www.milkfarmsoft.com/separator.php" title="Milk Farm Software: products">Separator</a></li>
<li>check if open-source stuff needs to be updated</li>
</ul>
<p></p>
<p>p.s. the plans will probably be realized in mid-september, as I am going to take a vacation in a week</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.milkfarmsoft.com/2007/08/wwwmilkfarmsoftcom-up-and-running/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
