<?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"
	>

<channel>
	<title>IPSOJOBS Blog</title>
	<atom:link href="http://www.ipsojobs.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ipsojobs.com/blog</link>
	<description>Ipsojobs, when time is of the essence</description>
	<pubDate>Tue, 01 Jul 2008 15:39:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>New ipsojobs summer features</title>
		<link>http://www.ipsojobs.com/blog/2008/07/01/new-ipsojobs-summer-features/</link>
		<comments>http://www.ipsojobs.com/blog/2008/07/01/new-ipsojobs-summer-features/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 15:39:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[New features]]></category>

		<category><![CDATA[Promoción]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/?p=75</guid>
		<description><![CDATA[The summer is already here, almost in Barcelona, today is better to stay in your workplace with the AC than in the street.
For that reason we&#8217;ve been working so hard in new features  
Expiration Warnings:
We&#8217;ve introduced new warnings when your job posting is about to expire. To use this new feature simply introduce a  [...]]]></description>
			<content:encoded><![CDATA[<p>The summer is already here, <em>almost in Barcelona</em>, today is better to stay in your workplace with the AC than in the street.</p>
<p>For that reason we&#8217;ve been working so hard in new features <img src='http://www.ipsojobs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Expiration Warnings:</strong></p>
<p>We&#8217;ve introduced new warnings when your job posting is about to expire. To use this new feature simply introduce a  job posting and then you&#8217;ll be asked to fill your contact email.</p>
<p>We&#8217;ll send you a link to renew the job posting (if you want) near the end of the publishing period.</p>
<p>When you renew the job posting, you can optionally introduce again an email for a further expiration warning.</p>
<p><strong>Better SEO in Pagination:</strong></p>
<p>The pagination for big cities have become a little bulky, for that reason we&#8217;ve simplified the pagination and added a more descriptive title in the links (better than 1, 2, 3 &#8230;)</p>
<p><strong>Ultra fast, spam detection for admins:</strong></p>
<p>We&#8217;ve set up a new ultra-fast way to remove spammy job postings, we&#8217;ll send an email to all the admins telling the secrets of this new feature.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/07/01/new-ipsojobs-summer-features/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Out of the cloud</title>
		<link>http://www.ipsojobs.com/blog/2008/06/26/out-of-the-cloud/</link>
		<comments>http://www.ipsojobs.com/blog/2008/06/26/out-of-the-cloud/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 15:54:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Curiosidades]]></category>

		<category><![CDATA[ipsojobs return]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/?p=73</guid>
		<description><![CDATA[After a few days running a simple CDN in Google App Engine, we&#8217;re forced to turn back and wait until Google App Engine are more &#8220;mature&#8221;.
As you can see in the following image the Google App Engine have got lots of trouble in this June and we cannot afford to lose customers.

For that reason we [...]]]></description>
			<content:encoded><![CDATA[<p>After a few days running a simple CDN in Google App Engine, we&#8217;re forced to turn back and wait until Google App Engine are more &#8220;mature&#8221;.</p>
<p>As you can see in the following image the Google App Engine have got lots of trouble in this June and we cannot afford to lose customers.</p>
<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/screenhunter_215.jpg"><img class="aligncenter size-full wp-image-74" title="downtime in google app engine" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/screenhunter_215.jpg" alt="" width="380" height="312" /></a></p>
<p>For that reason we are now serving again our static content from our servers until the situation in Google App Engine normalizes.</p>
<p>You can follow the <a title="Google appengine downtime notify" href="http://groups.google.com/group/google-appengine-downtime-notify" target="_blank">google app engine downtimes here</a></p>
<p>Thank you</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/06/26/out-of-the-cloud/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to create a simple but powerful CDN with Google App Engine (GAE)</title>
		<link>http://www.ipsojobs.com/blog/2008/06/17/how-to-create-a-simple-but-powerful-cdn-with-google-app-engine-gae/</link>
		<comments>http://www.ipsojobs.com/blog/2008/06/17/how-to-create-a-simple-but-powerful-cdn-with-google-app-engine-gae/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 09:18:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[New features]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[ipsojobs return]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/?p=66</guid>
		<description><![CDATA[The main purpose when I started to look at Google App Engine (3 days ago) was to use it as a &#8220;CDN for the rest of us&#8221;, a way to cache static content (initially) and have this content distributed along all the infrastructure of Google (maybe the most powerful cloud rigth now)
What we want?:

Create a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-72" style="float:left" title="google-app-engine2" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/google-app-engine2-150x150.png" alt="" width="81" height="81" />The main purpose when I started to look at <a href="http://code.google.com/appengine/" target="_blank">Google App Engine</a> (3 days ago) was to use it as a <strong>&#8220;CDN for the rest of us&#8221;</strong>, a way to cache <strong>static content</strong> (initially) and have this content distributed along all the infrastructure of Google (maybe the most powerful cloud rigth now)</p>
<p><strong>What we want?:</strong></p>
<ul>
<li>Create a CDN easy to update and free of charge for static resources (images, css, js)</li>
<li>Consume as less bandwidth as possible leveraging the If-Modified-Since/Last-Modified/304 Not Modified model</li>
</ul>
<p><strong>Hands-on:</strong></p>
<p>The first approach, of course, was to look on Google for some help, the post of <a href="http://www.digitalistic.com/2008/06/09/10-easy-steps-to-use-google-app-engine-as-your-own-cdn/" target="_blank">Andreas Krohn</a> helped a lot to start.</p>
<p>But I want to go further and take care of modern browsers <strong>If-Modified-Since requests</strong>, then the google framework and a little of <strong>Python</strong> comes to the rescue.</p>
<p><em>Note: I&#8217;m assuming you&#8217;ve already installed the Python environment and the Google App Engine SDK</em></p>
<p>First of all let me give you two little .bat files that are useful:</p>
<p>Start the test webserver (<strong>test.bat</strong>):<br />
<strong>dev_appserver.py c:\ipsojobscloud</strong></p>
<p>Upload your application to the cloud (<strong>update.bat</strong>):<br />
<strong>appcfg.py update c:\ipsojobscloud</strong></p>
<p><em>Note: simply change c:\ipsojobscloud for the folder you are working in and contains your app.yaml</em></p>
<p>Then I&#8217;ve setup the <strong>app.yaml</strong>, it&#8217;s very simple (16 lines):</p>
<pre>application: ipsojobscloud
version: 1
runtime: python
api_version: 1

handlers:
- url: /favicon.ico
  static_files: favicon.ico
  upload: favicon.ico

- url: /images/favicon.ico
  static_files: favicon.ico
  upload: favicon.ico

- url: /.*
  script: cacheheaders.py</pre>
<p>This app.yaml simply tells the GAE the name of the application (ipsojobscloud) the version we&#8217;re working on (use only the major release number, GAE automatically takes care of the .x when you upload).</p>
<p>Then we specify two handlers for the favicon.ico static file and a catch-all handler that redirects our requests to the <strong>Python script cacheheaders.py</strong></p>
<p>With that environment set, we simply code the cacheheaders.py file, let&#8217;s see it in detail:</p>
<p>The skeleton of the file is:</p>
<pre>import wsgiref.handlers
from google.appengine.ext import webapp

class MainPage(webapp.RequestHandler):

  def get(self, dir, file, extension):
...

def main():
  application = webapp.WSGIApplication([(r'/(.*)/([^.]*).(.*)&#8217;, MainPage)], debug=False)
  wsgiref.handlers.CGIHandler().run(application)

if __name__ == &#8220;__main__&#8221;:
  main()</pre>
<p>Here we are importing the webapp framework and setting the class MainPage, in the main section the only change in the sample GAE is<br />
the regular expression that we used to match our requests, the expression <strong>r&#8217;/(.*)/([^.]*).(.*)&#8217;</strong> is telling that we are using regular expressions (r)<br />
, then take one slash, followed by an arbitray number of characters and another slash /(.*)/ the parentesis tells the regular expression to keep the string beetween the two slashes as a variable. The next part ([^.]*). takes all caracters except a dot and puts them in to the second variable and finally, we&#8217;ll take the rest of the input as a variable with (.*)</p>
<p>This regular expression is designed to <strong>only capture paths like /images/helloworld.gif</strong> where variables are <strong>images, helloworld and gif</strong> respectively</p>
<p><em>Note: Of course that&#8217;s not a complete solution, we can only have one folder depth, but it&#8217;s a good readers exercice to improve that  <img src='http://www.ipsojobs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em></p>
<p>The part that you need to know is that when a request arrives it&#8217;s mapped to the get function with the parameters dir, file and extension (and don&#8217;t forget the first &#8220;self&#8221; parameter)</p>
<p><strong>Let&#8217;s see the code of the get function in detail:</strong></p>
<p>First, check the validity of the parameters received and set the correct content-type based on the extension:</p>
<pre>  def get(self, dir, file, extension):
    if (dir!='js' and dir!='css' and dir!='images'):
      self.error(404)
      return

    if (extension!='js' and extension!='css' and extension!='jpg' and extension!='png' and extension!='gif'):
      self.error(404)
      return

    if extension=='js':
      self.response.headers['Content-Type'] = &#8216;application/x-javascript&#8217;
    elif extension==&#8217;css&#8217;:
      self.response.headers['Content-Type'] = &#8216;text/css&#8217;
    elif extension==&#8217;jpg&#8217;:
      self.response.headers['Content-Type'] = &#8216;image/jpeg&#8217;
    elif extension==&#8217;gif&#8217;:
      self.response.headers['Content-Type'] = &#8216;image/gif&#8217;
    elif extension==&#8217;png&#8217;:
      self.response.headers['Content-Type'] = &#8216;image/png&#8217;</pre>
<p><em>Note: the firts two ifs are completely optional, we check if the dir variable is in our valid list of dirs (js, css, images) and if the extension of the file is in our allowed list (js, css, jpg, png, gif), you have to change that check or completely remove it at your convenience.<br />
</em></p>
<p><strong>And now the tricky part:<br />
</strong></p>
<pre>    try:
      import os
      import datetime
      path = dir+'/'+file+"."+extension
      info = os.stat(path)
      lastmod = datetime.datetime.fromtimestamp(info[8])
      if self.request.headers.has_key(&#8217;If-Modified-Since&#8217;):
        dt = self.request.headers.get(&#8217;If-Modified-Since&#8217;).split(&#8217;;')[0]
        modsince = datetime.datetime.strptime(dt, &#8220;%a, %d %b %Y %H:%M:%S %Z&#8221;)
        if modsince &gt;= lastmod:
        # The file is older than the cached copy (or exactly the same)
          self.error(304)
          return
        else:
        # The file is newer
          self.output_file(path, lastmod)
      else:
        self.output_file(path, lastmod)
    except:
      self.error(404)
      return</pre>
<p>First we import some packages (os, datetime), then create a variable &#8220;path&#8221; with the full path of the file we want to retrieve</p>
<pre>path = dir+'/'+file+"."+extension</pre>
<p>Then, take the info of the file from the Operating System and keep the <strong>last modified date</strong> into lastmod variable, note that if an error occurs (non existing file for example, the except part will be executed, returning a 404 not found response to the browser).</p>
<p>In the following lines we scan the headers of the request, looking for an If-Modified-Since header, if we found it take the date part</p>
<pre>
      if self.request.headers.has_key('If-Modified-Since'):
        dt = self.request.headers.get('If-Modified-Since').split(';')[0]
        modsince = datetime.datetime.strptime(dt, &#8220;%a, %d %b %Y %H:%M:%S %Z&#8221;)</pre>
<p>Then <strong>compare the last modification date of the file against the ifmodifiedsince date</strong> and act accordingly, note that self.error(304) will return a response code 304 (Not-Modified) to the browser:</p>
<pre>        if modsince &gt;= lastmod:
        # The file is older than the cached copy or the same
          self.error(304)
          return
        else:
        # The file is newer
          self.output_file(path, lastmod)</pre>
<p>The <strong>self.output_file(path, lastmod)</strong> is a function we have defined to avoid code duplication:</p>
<pre>  def output_file(self, path, lastmod):
    import datetime
    try:
      self.response.headers['Cache-Control']=&#8217;public, max-age=31536000&#8242;
      self.response.headers['Last-Modified'] = lastmod.strftime(&#8221;%a, %d %b %Y %H:%M:%S GMT&#8221;)
      expires=lastmod+datetime.timedelta(days=365)
      self.response.headers['Expires'] = expires.strftime(&#8221;%a, %d %b %Y %H:%M:%S GMT&#8221;)
      fh=open(path, &#8216;r&#8217;)
      self.response.out.write(fh.read())
      fh.close
      return
    except IOError:
      self.error(404)
      return</pre>
<p>As you can see we imported datetime to manipulate dates and try to do the following:</p>
<ul>
<li>Set the header Cache-Control, to be as much cacheable as posible</li>
<li>Set the header Last-Modified (IMPORTANT ! when we send for the first time the file to the browser it keeps the Last-Modified date of the file, this value is the value that will send in the next If-Modified-Since requests, when we usually will respond 304 not-modified!)</li>
<li>Calculate an expires date in the future (we&#8217;ve put 365 days)</li>
<li>Set the Expires header with this value (last-modified+365 days)</li>
<li>Open the file and send it to the output and finally close the file</li>
<li>return, because when we output the file we&#8217;re done</li>
</ul>
<p><em>Note: If something happens we returned an standard response of Not Found (404)</em></p>
<p><strong>Conclusions:</strong></p>
<blockquote><p>We&#8217;ve improved the latency in the requests of static files putting them into the cloud, and keep the bandwidth used in the cloud to a minimum answering correctly to the If-Modified-Since requests and only <strong>in about 70 lines of code</strong></p></blockquote>
<p>One of the advantatges of Google App Engine above Amazon S3 is that GAE <strong>is free up 5 million page views a month</strong>, that give us a good chance to try this kind of features without spending cash.</p>
<p>You can see the speed improvement on-line in all the <a href="http://www.ipsojobs.com/" target="_blank">ipsojobs.com</a> pages rigth now !</p>
<p><strong>Some screenshots taken from firebug:</strong></p>
<p><strong>First request:</strong></p>
<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/first_request_500.jpg"><img class="aligncenter size-full wp-image-67" title="first_request_500" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/first_request_500.jpg" alt="First request (not cached)" width="500" height="193" /></a></p>
<p><strong>Second request:</strong></p>
<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/second_request_500.jpg"><img class="aligncenter size-full wp-image-68" title="second_request_500" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/second_request_500.jpg" alt="Second request, cached, note the 304 responses" width="500" height="209" /></a></p>
<p><strong>Detail of a request:</strong></p>
<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/sample_cache_friendly_response_500.jpg"><img class="aligncenter size-full wp-image-69" title="sample_cache_friendly_response_500" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/sample_cache_friendly_response_500.jpg" alt="Sample cached response, details" width="500" height="226" /></a></p>
<p><strong>Full source of cacheheaders.py:</strong></p>
<pre>import wsgiref.handlers
from google.appengine.ext import webapp

class MainPage(webapp.RequestHandler):

  def output_file(self, path, lastmod):
    import datetime
    try:
      self.response.headers['Cache-Control']=&#8217;public, max-age=31536000&#8242;
      self.response.headers['Last-Modified'] = lastmod.strftime(&#8221;%a, %d %b %Y %H:%M:%S GMT&#8221;)
      expires=lastmod+datetime.timedelta(days=365)
      self.response.headers['Expires'] = expires.strftime(&#8221;%a, %d %b %Y %H:%M:%S GMT&#8221;)
      fh=open(path, &#8216;r&#8217;)
      self.response.out.write(fh.read())
      fh.close
      return
    except IOError:
      self.error(404)
      return

  def get(self, dir, file, extension):
    if (dir!=&#8217;js&#8217; and dir!=&#8217;css&#8217; and dir!=&#8217;images&#8217;):
      self.error(404)
      return

    if (extension!=&#8217;js&#8217; and extension!=&#8217;css&#8217; and extension!=&#8217;jpg&#8217; and extension!=&#8217;png&#8217; and extension!=&#8217;gif&#8217;):
      self.error(404)
      return

    if extension==&#8217;js&#8217;:
      self.response.headers['Content-Type'] = &#8216;application/x-javascript&#8217;
    elif extension==&#8217;css&#8217;:
      self.response.headers['Content-Type'] = &#8216;text/css&#8217;
    elif extension==&#8217;jpg&#8217;:
      self.response.headers['Content-Type'] = &#8216;image/jpeg&#8217;
    elif extension==&#8217;gif&#8217;:
      self.response.headers['Content-Type'] = &#8216;image/gif&#8217;
    elif extension==&#8217;png&#8217;:
      self.response.headers['Content-Type'] = &#8216;image/png&#8217;

    try:
      import os
      import datetime
      path = dir+&#8217;/'+file+&#8221;.&#8221;+extension
      info = os.stat(path)
      lastmod = datetime.datetime.fromtimestamp(info[8])
      if self.request.headers.has_key(&#8217;If-Modified-Since&#8217;):
        dt = self.request.headers.get(&#8217;If-Modified-Since&#8217;).split(&#8217;;')[0]
        modsince = datetime.datetime.strptime(dt, &#8220;%a, %d %b %Y %H:%M:%S %Z&#8221;)
        if modsince &gt;= lastmod:
        # The file is older than the cached copy (or exactly the same)
          self.error(304)
          return
        else:
        # The file is newer
          self.output_file(path, lastmod)
      else:
        self.output_file(path, lastmod)
    except:
      self.error(404)
      return

def main():
  application = webapp.WSGIApplication([(r'/(.*)/([^.]*).(.*)&#8217;, MainPage)], debug=False)
  wsgiref.handlers.CGIHandler().run(application)

if __name__ == &#8220;__main__&#8221;:
  main()</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/06/17/how-to-create-a-simple-but-powerful-cdn-with-google-app-engine-gae/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Put the latest job offers in your web site, the easy way</title>
		<link>http://www.ipsojobs.com/blog/2008/06/10/put-the-latest-job-offers-in-your-web-the-easy-way/</link>
		<comments>http://www.ipsojobs.com/blog/2008/06/10/put-the-latest-job-offers-in-your-web-the-easy-way/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 16:16:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[ipsojobs return]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/?p=62</guid>
		<description><![CDATA[Again, google&#8217;s folks come out with a great and simple service, it&#8217;s called:
Google AJAX Feed API

The idea is simple, just put some keywords, google will look for relevant RSS feeds and generate a simple but elegant RSS slideshow with the latest &#8220;news&#8221; contained in those feeds.
How can help you to put the latest job offers [...]]]></description>
			<content:encoded><![CDATA[<p>Again, google&#8217;s folks come out with a great and simple service, it&#8217;s called:</p>
<p><a href="http://www.google.com/uds/solutions/wizards/dynamicfeed.html" target="_blank">Google AJAX Feed API</a></p>
<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/screenhunter_212.jpg"><img class="alignleft size-full wp-image-65" title="screenhunter_212" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/screenhunter_212.jpg" alt="That\'s what we want to obtain" width="352" height="313" /></a></p>
<p>The idea is simple, just put some keywords, google will look for relevant RSS feeds and generate a simple but elegant RSS slideshow with the latest &#8220;news&#8221; contained in those feeds.</p>
<p>How can help you to put the <a href="http://www.ipsojobs.com" target="_blank">latest job offers</a> of ipsojobs.com in your website?</p>
<p><strong>EASY</strong><br />
Just go to  <a href="http://www.google.com/uds/solutions/wizards/dynamicfeed.html" target="_blank">http://www.google.com/uds/solutions/wizards/dynamicfeed.html</a></p>
<p>In the Style, check the best suited for your site (if you choose &#8220;Vertical Stacked&#8221; be sure to choose an appropiate title too)</p>
<p>In the <strong>&#8220;Feeds Expression&#8221;</strong> enter your favorite ipsojobs sites, for example:</p>
<blockquote><p>ipsojobs barcelona, ipsojobs sabadell</p></blockquote>
<p>The comma, separates the cities and it&#8217;s important to put ipsojobs every time to be sure that google takes the correct RSS</p>
<p>When you click the Preview button be sure that in the &#8220;Direct Feed URL&#8221; are appearing valid ipsojobs RSS feeds, like in the example:</p>
<blockquote><p>ipsojobs barcelona: http://barcelona.ipsojobs.com/rss/controller.php<br />
ipsojobs sabadell: http://sabadell.ipsojobs.com/rss/controller.php</p></blockquote>
<p>Finally, go to Generate Code and copy and paste it in to <strong>your favorite CMS</strong>.</p>
<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/google_ajax_api.jpg"><img class="aligncenter size-full wp-image-63" title="google_ajax_api" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/google_ajax_api.jpg" alt="The sample, visually" width="500" height="239" /></a></p>
<p><strong>That&#8217;s what we have done</strong></p>
<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/google_ajax_api_integrat.jpg"><img class="aligncenter size-full wp-image-64" title="google_ajax_api_integrat" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/google_ajax_api_integrat.jpg" alt="The example integrated in a Blog" width="500" height="367" /></a></p>
<p><strong>Sample integration in a blogger page</strong></p>
<p><!-- ++Begin Dynamic Feed Wizard Generated Code++ --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/06/10/put-the-latest-job-offers-in-your-web-the-easy-way/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Latest news of ipsojobs.com</title>
		<link>http://www.ipsojobs.com/blog/2008/06/06/latest-news-of-ipsojobscom/</link>
		<comments>http://www.ipsojobs.com/blog/2008/06/06/latest-news-of-ipsojobscom/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 09:01:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Colaboraciones]]></category>

		<category><![CDATA[New features]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/?p=60</guid>
		<description><![CDATA[
We&#8217;ve been very busy in ipsojobs in the last weeks.
So busy that we don&#8217;t have time to post  
Let us fire some facts:

The traffic is growing steadily giving our administrators more ad cash every month.
Alexa has changed the measuring system, taken us off the top 100.000 temporarily, now, we&#8217;re back and some days we&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/russia1.jpg"><img class="alignnone size-full wp-image-61" title="Russia at home" src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/06/russia1.jpg" alt="" width="450" height="68" /></a></p>
<p>We&#8217;ve been very busy in ipsojobs in the last weeks.</p>
<p>So busy that we don&#8217;t have time to post <img src='http://www.ipsojobs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Let us fire some facts:</p>
<ul>
<li>The traffic is growing steadily giving our administrators more ad cash every month.</li>
<li><strong>Alexa</strong> has changed the measuring system, taken us off the top 100.000 temporarily, now, we&#8217;re back and some days we&#8217;re reaching the top <strong>50.000 mark</strong>, that&#8217;s great with the new system!</li>
<li>We&#8217;ve opened <a title="Moscow jobs" href="http://moscow.ipsojobs.com" target="_blank">Moscow</a> and <a title="Jobs in Sankt Peterburg" href="http://sanktpeterburg.ipsojobs.com/" target="_blank">Sankt-Peterburg</a>, in <strong>Russia</strong> and the city administrator of those cities has made the <strong>Russian translation of <a title="Worldwide jobs at ipsojobs.com" href="http://www.ipsojobs.com" target="_self">ipsojobs.com</a></strong></li>
<li>We&#8217;re starting to integrate <strong>broadbean offers</strong> in our site giving us a headstart in the <strong>UK market</strong>. We hope this agreement will start to give results in the following weeks.</li>
<li><a title="Worldwide jobs at ipsojobs.com" href="http://www.ipsojobs.com" target="_self">ipsojobs.com</a> have reached the <strong>11,000 active jobs mark</strong>, that&#8217;s a big milestone for us !</li>
<li>We&#8217;ve done some minor <strong>SEO adjustments</strong>, basically putting the word <strong>&#8220;Jobs&#8221; or &#8220;Trabajos&#8221;</strong> in some important links, between cities and to the worldwide home page.</li>
<li>At the technical level <strong>we&#8217;ve now two dedicated servers</strong>, one for the database and one for the frontend and this give us enough power to reach a 10-fold traffic grow.</li>
<li>And we also added some <strong>anti-spam features</strong> to keep the quality of all the <a title="Worldwide jobs at ipsojobs.com" href="http://www.ipsojobs.com" target="_self">ipsojobs.com</a> cities as good as always</li>
</ul>
<p>More news to come<br />
The ipsojobs.com team</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/06/06/latest-news-of-ipsojobscom/feed/</wfw:commentRss>
		</item>
		<item>
		<title>We&#8217;ve got NEW HOME</title>
		<link>http://www.ipsojobs.com/blog/2008/03/20/weve-got-new-home/</link>
		<comments>http://www.ipsojobs.com/blog/2008/03/20/weve-got-new-home/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 10:31:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[New features]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/2008/03/20/weve-got-new-home/</guid>
		<description><![CDATA[Hi all,
we&#8217;ve improved the ipsojobs.com home page, showing the more active cities in a pretty &#8220;tag cloud&#8221;, every ipsojobs zone have it&#8217;s own metrics of what is relevant and decides the font-size depending on the current active job postings in the city relative to the area.
Here the first screenshot of the new home:

We pursue three [...]]]></description>
			<content:encoded><![CDATA[<p>Hi all,</p>
<p>we&#8217;ve improved the ipsojobs.com home page, showing the more active cities in a pretty <strong>&#8220;tag cloud&#8221;</strong>, every ipsojobs zone have it&#8217;s own metrics of what is relevant and decides the font-size depending on the current active job postings in the city relative to the area.</p>
<p>Here the first screenshot of the <a href="http://www.ipsojobs.com/">new home</a>:</p>
<p><a href="http://www.ipsojobs.com/" target="_blank" title="New Home screenshot, click to see it in real !"><img src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/03/nova_home_ipsojobs_20080320_450px.jpg" alt="New Home screenshot" /></a></p>
<p>We pursue three objectives:</p>
<ol>
<li>Promote the competence between the city managers in the same area</li>
<li>Save screen space, moving the inactive or less active cities to the bottom</li>
<li>Show most active cities with a premium size</li>
</ol>
<p><a href="http://www.ipsojobs.com/">Go to see the new home of ipsojobs.com NOW!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/03/20/weve-got-new-home/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Happy ipsojobs.com half-aniversary</title>
		<link>http://www.ipsojobs.com/blog/2008/03/11/happy-ipsojobscom-half-aniversary/</link>
		<comments>http://www.ipsojobs.com/blog/2008/03/11/happy-ipsojobscom-half-aniversary/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 08:43:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/2008/03/11/happy-ipsojobscom-half-aniversary/</guid>
		<description><![CDATA[Last sunday was the 6 months half-aniversary of ipsojobs.com and we are very excited to share with all our managers, partners and users the good health of the site. We think that the following months will be better than the first 6 ones and we expect a high growth in traffic, cities and job offers [...]]]></description>
			<content:encoded><![CDATA[<p>Last sunday was the <strong>6 months</strong> half-aniversary of <a href="http://www.ipsojobs.com">ipsojobs.com</a> and we are very excited to share with all our managers, partners and users the good health of the site. We think that the following months will be better than the first 6 ones and we expect a high growth in traffic, cities and job offers all over the world.</p>
<p>Let&#8217;s see the numbers of the first 6 months, compared with the 3 months data in parenthesis:</p>
<p>Total number of published job offers: <strong>14.709</strong> (6.563)<br />
Currently active job offers: <strong>4.645</strong> (2.395)<br />
Average new job offers by day: 81,7 (72,9)<br />
Active job sites (cities): <strong>282</strong> (219)<br />
Number of city managers: 160 (149)<br />
PageRank: 4 (4)<br />
Alexa Ranking: 62.204 (56.540)<br />
Partners: <strong>8</strong> (3)</p>
<p>Thanks to all our partners, city managers and users. You make ipsojobs.com a success job board site !</p>
<p>Our partners:</p>
<ul>
<li><a href="http://www.indeed.com/">indeed.com</a></li>
<li><a href="http://www.simplyhired.com/">simplyhired.com</a></li>
<li><a href="http://www.sniptime.com/">sniptime.com</a></li>
<li><a href="http://www.recruit.net/">recruit.net</a></li>
<li><a href="http://www.opcionempleo.com/">opcionempleo.com</a></li>
<li><a href="http://synerquia.com/">Synerquia.com</a></li>
<li><a href="http://empleo.trovit.es/">trovit.es</a></li>
<li><a href="http://www.buscocanguro.com/">BuscoCanguro.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/03/11/happy-ipsojobscom-half-aniversary/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ipsojobs and Recruit.net integration</title>
		<link>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-recruitnet-integration/</link>
		<comments>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-recruitnet-integration/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 17:13:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Colaboraciones]]></category>

		<category><![CDATA[New features]]></category>

		<category><![CDATA[Promoción]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-recruitnet-integration/</guid>
		<description><![CDATA[Ipsojobs.com is proud to annunce the inclusion in the recruit.net search index.
Recruit.net is the leader in vertical job search in Australia, New Zealand, China, Malaysia, India, Japan and Singapore. This new vertical search engine integration will help Ipsojobs.com to be more popular in those areas.
We are receiving visitors from recruit.net since February the 19th (19/02/2008). [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/02/recruitnet.jpg" title="Recruit.net page showing Ipsojobs.com job offers"><img src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/02/recruitnet.jpg" alt="Recruit.net page showing Ipsojobs.com job offers" /></a><a href="www.ipsojobs.com">Ipsojobs.com</a> is proud to annunce the inclusion in the <a href="http://www.recruit.net/company-Ipsojobs-jobs" target="_blank">recruit.net</a> search index.</p>
<p>Recruit.net is the leader in vertical job search in Australia, New Zealand, China, Malaysia, India, Japan and Singapore. This new vertical search engine integration will help Ipsojobs.com to be more popular in those areas.</p>
<p>We are receiving visitors from recruit.net since February the 19th (19/02/2008). Welcome all !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-recruitnet-integration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ipsojobs and SnipTime integration</title>
		<link>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-sniptime-integration/</link>
		<comments>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-sniptime-integration/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 16:54:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Colaboraciones]]></category>

		<category><![CDATA[New features]]></category>

		<category><![CDATA[Promoción]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-sniptime-integration/</guid>
		<description><![CDATA[
Ipsojobs.com is proud to annunce the inclusion in the sniptime search index.
Sniptime is one of the most important players in the job search market in Spain, this new vertical search engine integration will help Ipsojobs.com to be more popular and more relevant in the Spanish market.
We are receiving visitors from sniptime.com since February the 21th [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/02/sniptime.jpg" title="ScreenShot of a sniptime/ipsojobs integration"><img src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/02/sniptime.jpg" alt="ScreenShot of a sniptime/ipsojobs integration" /></a></p>
<p><a href="www.ipsojobs.com">Ipsojobs.com</a> is proud to annunce the inclusion in the <a href="http://www.sniptime.com" target="_blank">sniptime</a> search index.</p>
<p>Sniptime is one of the most important players in the job search market in Spain, this new vertical search engine integration will help Ipsojobs.com to be more popular and more relevant in the Spanish market.</p>
<p>We are receiving visitors from sniptime.com since February the 21th (21/02/2008). Welcome all !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-sniptime-integration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ipsojobs and SimplyHired integration</title>
		<link>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-simplyhired-integration/</link>
		<comments>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-simplyhired-integration/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 16:34:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Colaboraciones]]></category>

		<category><![CDATA[New features]]></category>

		<category><![CDATA[Promoción]]></category>

		<category><![CDATA[meta ipsojobs]]></category>

		<guid isPermaLink="false">http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-simplyhired-integration/</guid>
		<description><![CDATA[
Ipsojobs.com is proud to annunce the inclusion in the simplyhired search index.
SimplyHired is one of the most important players in the job search market in the US, this new vertical search engine integration will help Ipsojobs.com to be more popular and more relevant in the US market.
We are receiving visitors from simpyhired.com since February the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ipsojobs.com/blog/wp-content/uploads/2008/02/simplyhired.jpg" title="Search result of simplyhired.com showing an ipsojobs.com job offer"><img src="http://www.ipsojobs.com/blog/wp-content/uploads/2008/02/simplyhired.jpg" alt="Search result of simplyhired.com showing an ipsojobs.com job offer" /></a></p>
<p><a href="www.ipsojobs.com">Ipsojobs.com</a> is proud to annunce the inclusion in the <a href="http://www.simplyhired.com" target="_blank">simplyhired</a> search index.</p>
<p>SimplyHired is one of the most important players in the job search market in the US, this new vertical search engine integration will help Ipsojobs.com to be more popular and more relevant in the US market.</p>
<p>We are receiving visitors from simpyhired.com since February the 19th (19/02/2008). Welcome all !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ipsojobs.com/blog/2008/02/28/ipsojobs-and-simplyhired-integration/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
