<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Anders Hassis</title>
	
	<link>http://hassis.com</link>
	<description>DID MMORPGS OVERWRITE YOUR COMMON SENSE?</description>
	<lastBuildDate>Sat, 31 Jul 2010 11:20:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Hassiscom" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="hassiscom" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Riding the Rails: Aktiva menyobjekt</title>
		<link>http://hassis.com/2010/07/31/riding-the-rails-aktiva-menyobjekt/</link>
		<comments>http://hassis.com/2010/07/31/riding-the-rails-aktiva-menyobjekt/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 11:17:49 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=325</guid>
		<description><![CDATA[Fredrik W visade mig en riktigt stilig sak häromdagen på ett Rails-projekt vi håller på med. Att göra layouter och framför allt visa vilket menyobjekt som är &#8221;aktivt&#8221;, dvs vilken sida du är på just nu. Lägg in denna helpern, i exempelvis application_helper.rb: def menu_item&#40;text, link, options = &#123;:use_span =&#62; false, :only_controller =&#62; false&#125;&#41; active [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bitsamppixels.com/">Fredrik W</a> visade mig en riktigt stilig sak häromdagen på ett Rails-projekt vi håller på med. Att göra layouter och framför allt visa vilket menyobjekt som är &#8221;aktivt&#8221;, dvs vilken sida du är på just nu. </p>
<p>Lägg in denna helpern, i exempelvis application_helper.rb:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> menu_item<span style="color:#006600; font-weight:bold;">&#40;</span>text, link, options = <span style="color:#006600; font-weight:bold;">&#123;</span>:use_span <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">false</span>, <span style="color:#ff3333; font-weight:bold;">:only_controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
   active = Rails.<span style="color:#9900CC;">application</span>.<span style="color:#9900CC;">routes</span>.<span style="color:#9900CC;">recognize_path</span> link
   text = content_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;span&quot;</span>, text<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">if</span> options<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:use_span</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
   link_is_currently_active = options<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:only_controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> ? params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> == active<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> : params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> == active<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:controller</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> params<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:action</span><span style="color:#006600; font-weight:bold;">&#93;</span> == active<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:action</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
   klass = link_is_currently_active ? <span style="color:#996600;">&quot;active&quot;</span> : <span style="color:#996600;">&quot;&quot;</span>
   <span style="color:#0000FF; font-weight:bold;">return</span> content_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;li&quot;</span>, link_to<span style="color:#006600; font-weight:bold;">&#40;</span>text, link<span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#ff3333; font-weight:bold;">:class</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> klass<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> menu<span style="color:#006600; font-weight:bold;">&#40;</span>options = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#0000FF; font-weight:bold;">return</span> content_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;ul&quot;</span>, options, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Vi läser alltså av existerande routen och jämför den med menyobjektets. Så nu istället för att länk runt dig i applikationen med <em>link_to</em> så kan du nu använda blocket <em>menu</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&lt;%</span> menu <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
  <span style="color:#006600; font-weight:bold;">&lt;%</span>= menu_item <span style="color:#996600;">&quot;Link 1&quot;</span>, project_path<span style="color:#006600; font-weight:bold;">&#40;</span>@project<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
  <span style="color:#006600; font-weight:bold;">&lt;%</span>= menu_item <span style="color:#996600;">&quot;Link 2&quot;</span>, project_medias_path<span style="color:#006600; font-weight:bold;">&#40;</span>@project<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
<span style="color:#006600; font-weight:bold;">&lt;%</span> <span style="color:#9966CC; font-weight:bold;">end</span> <span style="color:#006600; font-weight:bold;">%&gt;</span></pre></div></div>

<p>Vips, så har vi nu fått en lista med det aktiva objektets klass som &#8221;<em>active</em>&#8221;. </p>
<p>Nu är det klart att detta är en väldigt begränsad lösning och kanske inte lämpar sig i större projekt med stora menystrukturer, men för enklare projekt fungerar detta alldeles utmärkt.</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=325&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/07/31/riding-the-rails-aktiva-menyobjekt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress pluginguide: Sätta ny titel i en shortcode</title>
		<link>http://hassis.com/2010/07/21/wordpress-pluginguide-satta-ny-titel-i-en-shortcode/</link>
		<comments>http://hassis.com/2010/07/21/wordpress-pluginguide-satta-ny-titel-i-en-shortcode/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 15:59:04 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=280</guid>
		<description><![CDATA[Jag håller på med ett Reddit-liknande WordPress-plugin på ett projekt hos Populate. Systemet listar ett antal frågor som du som besökare kan &#8221;rösta upp&#8221;, sedan visar man de populäraste frågorna och lite annat. Varje fråga har en egen landningssida, exempelvis /fraga/10 (där 10 är id:t på frågan). Landningssidan och listningen av frågorna definieras av shortcodes [...]]]></description>
			<content:encoded><![CDATA[<p>Jag håller på med ett <a href="http://www.reddit.com">Reddit</a>-liknande WordPress-plugin på ett projekt hos <a href="http://www.populate.se">Populate</a>. </p>
<p>Systemet listar ett antal frågor som du som besökare kan &#8221;rösta upp&#8221;, sedan visar man de populäraste frågorna och lite annat. Varje fråga har en egen landningssida, exempelvis /fraga/10 (där 10 är id:t på frågan). Landningssidan och listningen av frågorna definieras av shortcodes i sidor, exempelvis: [poll_show_single] och [poll_list]. </p>
<p>På sidan som innehåller [poll_show_single], i det här fallet är det sidan &#8216;fraga&#8217;, vill jag ha möjlighet att sätta frågans rubrik som ny titel (via filtret wp_title). </p>
<p>Det går tyvärr inte att ändra titeln inifrån shortcoden, utan man får identifiera vilken sida som shortcoden finns på och sen sätta titeln separat. Detta kan du göra på följande sätt:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> locate_shortcode <span style="color: #009900;">&#40;</span><span style="color: #000088;">$shortcode</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000088;">$search</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$search</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>?<span style="color: #0000ff;">&quot; OR &quot;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;post_content LIKE '%<span style="color: #006699; font-weight: bold;">$shortcode</span>%'&quot;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT ID,post_title,post_name,post_content FROM <span style="color: #006699; font-weight: bold;">$wpdb-&gt;posts</span> WHERE <span style="color: #006699; font-weight: bold;">$search</span> AND post_type='page'&quot;</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_results</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'title'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_title</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post_name</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'uri'</span> <span style="color: #339933;">=&gt;</span> get_page_uri<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Sedan läser du av den:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$pollSingle</span> <span style="color: #339933;">=</span> locate_shortcode<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'poll_show_single'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
<span style="color: #000088;">$pollSingleURI</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$pollSingle</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'uri'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Då får jag fram vilken sida som innehåller shortcoden för att visa en enskild fråga, därefter kan jag haka in mig på filtret &#8216;wp&#8217; och sätta titeln:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'titles'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>I titels() kollar vi sedan upp om vi står på rätt sida (den som finns i $pollSingleURI) och jämför den med $wp_query->query['pagename']:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> titles<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">,</span> <span style="color: #000088;">$newTitle</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pollSingleURI</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Single poll</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pagename'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$pollSingleURI</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/\d+\/?$/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'page'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$pollID</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'page'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_results</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT subject FROM <span style="color: #009933; font-weight: bold;">%s</span>poll WHERE id = <span style="color: #009933; font-weight: bold;">%d</span> LIMIT 1&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">prefix</span><span style="color: #339933;">,</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">escape</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pollID</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #666666; font-style: italic;">// Set title</span>
      <span style="color: #000088;">$newTitle</span> <span style="color: #339933;">=</span> esc_html<span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">subject</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp_title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'frontend_set_title'</span> <span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Ovanstående SQL-fråga hämtar just nu frågans titel, men detta ändrar du givetvis till det du vill ha som titel.</p>
<p>Och eftersom PHP fortfarande har lite problem med closures/anonyma funktioner så måste titeln sättas separat:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> frontend_set_title<span style="color: #009900;">&#40;</span><span style="color: #000088;">$title</span><span style="color: #339933;">,</span> <span style="color: #000088;">$separator</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$newTitle</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> esc_html<span style="color: #009900;">&#40;</span><span style="color: #000088;">$newTitle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$separator</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Allt är ryckt ur en klass för att lättare kunna visa hur det fungerar, därav alla globala variabler *urk*. Denna metod kräver inga &#8221;rewrites&#8221; eller &#8221;template redirect intercepts&#8221;.</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=280&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/07/21/wordpress-pluginguide-satta-ny-titel-i-en-shortcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intressanta länkar</title>
		<link>http://hassis.com/2010/07/10/intressanta-och-larorika-lankar/</link>
		<comments>http://hassis.com/2010/07/10/intressanta-och-larorika-lankar/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 14:17:33 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Personligt]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=272</guid>
		<description><![CDATA[För att hålla mig uppdaterad om vad som händer i programmerings- och webbvärlden så tänkte jag lista de platser som jag gör ett besök på varje dag. Reddit &#8211; Programming Reddit &#8211; Web design Reddit &#8211; WordPress Webmaster Network Ovanstående är endast sidor som jag besöker manuellt, dvs. sidor som jag inte har i mitt [...]]]></description>
			<content:encoded><![CDATA[<p>För att hålla mig uppdaterad om vad som händer i programmerings- och webbvärlden så tänkte jag lista de platser som jag gör ett besök på varje dag.</p>
<ul>
<li><a href="http://www.reddit.com/r/programming">Reddit &#8211; Programming</a></li>
<li><a href="http://www.reddit.com/r/web_design">Reddit &#8211; Web design</a></li>
<li><a href="http://www.reddit.com/r/wordpress">Reddit &#8211; WordPress</a></li>
<li><a href="http://www.wn.se">Webmaster Network</a></li>
</ul>
<p>Ovanstående är endast sidor som jag besöker manuellt, dvs. sidor som jag inte har i mitt RSS-flöde pga. jag vill inte ha allt som publiceras på de.</p>
<p>Här kommer några guldkorn från RSS-listan (206 flöden and counting&#8230;):</p>
<ul>
<li><a href="http://wpdevel.wordpress.com/">WordPress Development Log</a> &#8211; Utvecklingsteamet bakom WordPress postar uppdateringar.</li>
<li><a href="http://www.dan.se/">Dan Nilsson</a> &#8211; Dan Nilsson skriver om E-handel och webben med glimten i ögat, väldigt roligt!</li>
<li><a href="http://axon.blogg.se">Axon</a> &#8211; Här kommer ett wildcard, den här bloggen har inte med webbutveckling att göra, utan handlar om träning. Väldigt bra om du är intresserad av träning.</li>
<li><a href="http://www.sulo.se">Jonathan Sulo</a> &#8211; Funnits på både Loopia och Binero, skriver om webbutveckling och webben i allmänhet</li>
<li><a href="http://weblogtoolscollection.com/">Weblog Tools Collection</a> &#8211; Dessa postar artiklar med inriktning på wordpress.</li>
<li><a href="http://weblogs.asp.net/mikaelsoderstrom/default.aspx">Mikael Söderström</a> &#8211; Även fast jag inte arbetar med ASP.NET brukar jag alltid ta mig tid att läsa Mikaels välskrivna inlägg</li>
</ul>
<p>Har du några att tipsa mig om? Posta i kommentarerna eller använd <a href="/kontakt/">kontaktformuläret</a>!</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=272&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/07/10/intressanta-och-larorika-lankar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visa ID på Media i WordPress</title>
		<link>http://hassis.com/2010/06/30/visa-id-pa-media-i-wordpress/</link>
		<comments>http://hassis.com/2010/06/30/visa-id-pa-media-i-wordpress/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 11:46:37 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=250</guid>
		<description><![CDATA[Jag hade nyss ett behov på jobbet att visa vilket ID ett objekt har i mediaredigeraren (WordPress). Detta kan vara bra att ha när man ska bygga gallerier, framförallt när man exkluderar vissa bilder genom att använda ID:et. Kod: add_filter&#40;'attachment_fields_to_edit', 'enable_media_id', 10, 2&#41;; function enable_media_id&#40; $form_fields, $post &#41; &#123; $form_fields&#91;&#34;enable-media-id&#34;&#93; = array&#40;&#34;label&#34; =&#62; &#34;MediaID&#34;, &#34;input&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Jag hade nyss ett behov <a href="http://www.populate.se">på jobbet</a> att visa vilket ID ett objekt har i mediaredigeraren (WordPress). Detta kan vara bra att ha när man ska bygga gallerier, framförallt när man exkluderar vissa bilder genom att använda ID:et.</p>
<p>Kod:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'attachment_fields_to_edit'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'enable_media_id'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> enable_media_id<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$form_fields</span><span style="color: #339933;">,</span> <span style="color: #000088;">$post</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$form_fields</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;enable-media-id&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;label&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;MediaID&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;input&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;html&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;html&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;&lt;p&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/p&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$form_fields</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Bild på hur det kommer se ut:<br />
<a href="http://hassis.com/wp-content/uploads/2010/06/mediaexempel.jpg" rel="lightbox[250]" title="mediaexempel"><img src="http://hassis.com/wp-content/uploads/2010/06/mediaexempel-287x300.jpg" alt="" title="mediaexempel" width="287" height="300" class="alignnone size-medium wp-image-253" /></a></p>
<p>(Jag såg idag att någon hade önskat denna funktionaliteten på <a href="http://wordpress.org/extend/ideas/topic/display-id-of-pictures">WordPress.org -> Ideas</a>)</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=250&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/06/30/visa-id-pa-media-i-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>R.I.P PHPSidan 2002-2010</title>
		<link>http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/</link>
		<comments>http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 17:55:03 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Personligt]]></category>
		<category><![CDATA[Programmering]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=224</guid>
		<description><![CDATA[Läs om PHPSidans historia fram tills nedläggningen, PHPSidan var ända fram tills slutet en av Sveriges ledande diskussionsforum för webbutveckling, främst inom PHP.]]></description>
			<content:encoded><![CDATA[<p><em>PHPSidan var ända fram tills nedläggningen en av Sveriges ledande diskussionsforum för webbutveckling, främst inom PHP.</em></p>
<p>PHPSidan startades av mig och Björn Enochsson i högstadiet (2002) som ett roligt projekt, främst för att jag ville lära mig PHP bättre. På den tiden höll jag på med ASP (Classic) och hade precis börjat titta på PHP. Namnet PHPSidan kommer ifrån den kända <a href="http://www.aspsidan.se">ASPsidan</a>.</p>
<p>I början driftade jag PHPSidan på en server som jag hade hemma hos mina föräldrar i Orsa, efter ett tag så växte sidan sig allt för stor för att jag skulle vilja drifta den på en ostabil 0.5 Mbit/s -lina. Därefter fick vi sponsring från lite olika håll innan vi till slut hamnade hos <a href="http://www.loopia.se">Loopia</a>. </p>
<h3>Så, vad hände sen?</h3>
<p>Väldigt mycket (de första åren), sen blev det mindre och mindre tid över till PHPSidan från både mitt och Björns håll. Om jag inte minns fel så var det 2006 vi släppte PHPSidan version 6, därefter gjorde vi många försök för att få klart en helt ny version som skulle passa våra (och hela webbens) nya behov bättre. Men på grund av tidsbristen så blev aldrig den nya versionen riktigt klar.</p>
<p>En av mina personliga anledningar till att PHPSidan aldrig färdigsställdes, var att jag blev mer och mer övertygad om att de engelska resurserna som fanns (finns) är så mycket bättre än det vi kan publicera. Därför kände jag aldrig det personliga behovet av att göra allt det som de gjorde, fast på svenska.</p>
<h3>Nu då?</h3>
<p>Efter en lång tids velande så tog vi beslutet att lägga ner PHPSidan. Besökarantalet på sidan har sakta men säkert dalat. Jag bestämde att jag inte ville att någon skulle ta över PHPSidan och driva vidare den. En av anledningarna till det beslutet är att domänen fortfarande används aktivt av mig. Att låta någon ta över en viss &#8221;del&#8221; av domänen, men att jag får behålla någon slags kontroll över eposten kändes inte riktigt rätt mot den personen, den personen skulle nog aldrig kunna satsa 110% på PHPSidan utan fullständig kontroll över domänen.</p>
<p>Jag antar att jag samtidigt på något sätt ville att PHPSidan v7 skulle göras på &#8221;mitt&#8221; sätt.</p>
<p>PHPSidan har betytt enormt mycket för mig personligen, jag har fått vänner som jag fortfarande har kontakt med och träffar aktivt. Jag har fått höra från många andra att PHPSidan har betytt väldigt mycket och fått dem att börja med programmering.</p>
<p>Strax innan nedläggningen så startade några på PHPSidan upp <a href="http://phpsverige.se/">PHP Sverige</a>, jag hoppas att många hittar dit och att de gör något riktigt bra av den sidan. Några andra webbplatser ni kan besöka ifall för PHP-relaterade ämnen är <a href="http://www.w3sidan.net">W3sidan</a> och <a href="http://www.phpportalen.net">PHPportalen</a>. Det är fortfarande aktivitet på IRC-kanalen #phpsidan på Quakenet ifall ni känner för att prata med någon av oss.</p>
<h3>Summan av kardemumman</h3>
<p>Tack för denna tid allihop, hoppas vi hörs på andra diskussionsforum och om inte annat så hör gärna av er till mig för att snacka webb. Stort tack till <a href="http://www.loopia.se">Loopia</a> för att ni har tagit hand om oss så länge!</p>
<h3>Nostalgitripp</h3>
<p>Här kan vi se olika utseenden som PHPSidan haft under åren som gått. Ni kan även se några av de tidiga konceptbilderna på version 7.</p>

<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/phpsidan/' title='phpsidan'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/phpsidan-150x150.jpg" class="attachment-thumbnail" alt="phpsidan" title="phpsidan" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/attachment/3/' title='3'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/3-150x150.jpg" class="attachment-thumbnail" alt="3" title="3" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/phpsidan4_1/' title='phpsidan4_1'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/phpsidan4_1-150x150.jpg" class="attachment-thumbnail" alt="phpsidan4_1" title="phpsidan4_1" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/phpsidan5/' title='phpsidan5'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/phpsidan5-150x150.jpg" class="attachment-thumbnail" alt="phpsidan5" title="phpsidan5" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/v6/' title='v6'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/v6-150x150.jpg" class="attachment-thumbnail" alt="v6" title="v6" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/final/' title='final'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/final-150x150.jpg" class="attachment-thumbnail" alt="final" title="final" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/php/' title='PHP'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/PHP-150x150.gif" class="attachment-thumbnail" alt="PHP" title="PHP" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/phpsajt/' title='phpsajt'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/phpsajt-150x150.gif" class="attachment-thumbnail" alt="phpsajt" title="phpsajt" /></a>
<a href='http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/v7temp/' title='v7temp'><img width="150" height="150" src="http://hassis.com/wp-content/uploads/2010/06/v7temp-150x150.jpg" class="attachment-thumbnail" alt="v7temp" title="v7temp" /></a>

<img src="http://hassis.com/?ak_action=api_record_view&id=224&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/06/29/r-i-p-phpsidan-2002-2010/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Nyheter kring Shopp 1.1</title>
		<link>http://hassis.com/2010/05/30/nyheter-kring-shopp-1-1/</link>
		<comments>http://hassis.com/2010/05/30/nyheter-kring-shopp-1-1/#comments</comments>
		<pubDate>Sun, 30 May 2010 17:03:23 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Shopp]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=216</guid>
		<description><![CDATA[Utveckligen av Shopp går i en rasande fart framåt. Just nu fokuserar utvecklarna främst på att se till att göra kodbasen stabil och se till att allting fungerar. Jag nämnde i mitt senaste inlägg kring Shopp att en alpha-version skulle dyka upp ganska kort efter att det postades. Den har dykt upp för ganska länge [...]]]></description>
			<content:encoded><![CDATA[<p>Utveckligen av <a href="http://www.shopplugin.net">Shopp</a> går i en rasande fart framåt. Just nu fokuserar utvecklarna främst på att se till att göra kodbasen stabil och se till att allting fungerar. </p>
<p>Jag nämnde i mitt <a href="http://hassis.com/2010/01/23/blandad-information-om-shopp/">senaste inlägg kring Shopp</a> att en alpha-version skulle dyka upp ganska kort efter att det postades. Den har dykt upp för ganska länge sedan och det ser riktigt bra ut, det som har fått mycket fokus är baksidan, alltså källkoden, det gör att det inte är några jättestora förändringar utseendemässigt. Det är förvisso lite enklare att hitta i orderdetaljerna och en andra småsaker.</p>
<p>Något som jag trivs riktigt bra med är hanteringen av betalningsmodulerna, jag var med Jonathan Davis (huvudutvecklare) en kväll och vi gjorde i ordning Payson-modulen så den är kompatibel med 1.1. Jisses vilken skillnad i kod jämfört med den tidigare versionen 1.0.x.</p>
<p>Momssatser för specifika kategorier är även det möjligt, men det är lite finputsning på det kvar innan den fungerar klockrent. </p>
<h3>Så, när kommer den?</h3>
<p>Det som just nu tar tid är QA-delen, att se till att allting funkar. Det har varit lite dåligt med testning från min egen sida, men jag räknar med att sätta igång ordentligt någon gång under nästa vecka. Det nämndes i en <a href="http://www.wptavern.com/jonathan-davis-via-wordcamp-raleigh">videointervju med Jonathan</a> att de siktade på slutet av juni, men det är flytande.</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=216&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/05/30/nyheter-kring-shopp-1-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Min guide till Whilenium</title>
		<link>http://hassis.com/2010/05/29/min-guide-till-whilenium-os2010/</link>
		<comments>http://hassis.com/2010/05/29/min-guide-till-whilenium-os2010/#comments</comments>
		<pubDate>Sat, 29 May 2010 15:52:52 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[Assembler]]></category>
		<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=200</guid>
		<description><![CDATA[I en projektkurs den här perioden &#8221;Operativsystem&#8221; har vi skapat ett ganska grundläggande operativsystem vid namn &#8221;Whilenium&#8221;, vi har kört det genom Simics med emulering av MIPS. Simics beskrivs så här av Wikipedia: Simics is a full-system simulator used to run unchanged production binaries of the target hardware at high-performance speeds. Simics was originally developed [...]]]></description>
			<content:encoded><![CDATA[<p>I en projektkurs den här perioden &#8221;Operativsystem&#8221; har vi skapat ett ganska grundläggande operativsystem vid namn &#8221;Whilenium&#8221;, vi har kört det genom Simics med emulering av MIPS. Simics beskrivs så här av Wikipedia: </p>
<blockquote><p>Simics is a full-system simulator used to run unchanged production binaries of the target hardware at high-performance speeds. Simics was originally developed by the Swedish Institute of Computer Science (SICS), and then spun off to Virtutech  for commercial development in 1998.</p></blockquote>
<p>Vårt operativsystem har i korta drag följande funktioner:
<ul>
<li>Skapa flera processer</li>
<li>Köra processerna samtidigt</li>
<li>Skicka och ta emot I/O</li>
</ul>
<p><a href="http://hassis.com/wp-content/uploads/2010/05/Whilenium-HelloWorld.png" rel="lightbox[200]" title="Hello World"><img src="http://hassis.com/wp-content/uploads/2010/05/Whilenium-HelloWorld.png" alt="" title="Hello World" width="493" height="264" class="alignnone size-full wp-image-201" /></a></p>
<p>Däremellan är det väldigt mycket saker varje process ska kunna göra (och inte göra), exempelvis ska processerna kunna avsluta varandra, inte dela minne med varandra etc.</p>
<p>Det har varit en väldigt intressant kurs som byggde på en tidigare väldigt teoretisk kurs med mycket praktiskt arbete. Det som var svårast var nog att förstå kopplingen mellan C och Assembler. Därefter stötte vi på en del problem vad gäller schemaläggningen av processer samt få till systemanropen för att hoppa mellan <a href="http://en.wikipedia.org/wiki/User_space">&#8221;User-space&#8221; och &#8221;Kernel-space&#8221;</a></p>
<p>För de som är intresserade kan ni ladda ner <a href='http://hassis.com/wp-content/uploads/2010/05/os-2010.zip'>källkoden</a> och se (den väldigt korta) <a href='http://hassis.com/wp-content/uploads/2010/05/Whilenium_User_guide.pdf'>dokumentationen</a> här. Ni kan även besöka <a href="http://code.google.com/p/os-2010/">vårt projekt på Google Code</a>.</p>
<p>Källkoden har en del struktureringsbrister och är inte helt komplett dokumenterad, det hann vi inte med i slutspurten av projektet.</p>
<p><a href="http://hassis.com/wp-content/uploads/2010/05/Grupp-5.jpg" rel="lightbox[200]" title="Gruppfoto"><img src="http://hassis.com/wp-content/uploads/2010/05/Grupp-5.jpg" alt="" title="Gruppfoto" width="527" height="344" class="alignnone size-full wp-image-211" /></a><br />
Tack till Jesper Friberg, Oskar Wirén och <a href="http://www.daniellervik.com">Daniel Lervik</a> för ett bra arbete!</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=200&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/05/29/min-guide-till-whilenium-os2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>”They want users on modern browsers”</title>
		<link>http://hassis.com/2010/03/17/they-want-users-on-modern-browsers/</link>
		<comments>http://hassis.com/2010/03/17/they-want-users-on-modern-browsers/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 18:49:39 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=191</guid>
		<description><![CDATA[Rubriken är en del av ett twitter-inlägg postat av Rey Bango och handlar om Internet Explorer 9 som släpptes som en preview idag. Istället för att jag ska skriva om denna händelse så tänkte jag länka till några andra läsvärda inlägg om detta: Mikael Söderström: En första titt på Internet Explorer 9 Net tuts: IE9 [...]]]></description>
			<content:encoded><![CDATA[<p>Rubriken är en del av ett twitter-inlägg postat av <a href="http://twitter.com/reybango/status/10577319636">Rey Bango</a> och handlar om Internet Explorer 9 som släpptes som en preview idag.</p>
<p>Istället för att jag ska skriva om denna händelse så tänkte jag länka till några andra läsvärda inlägg om detta:</p>
<ul>
<li><a href="http://weblogs.asp.net/mikaelsoderstrom/archive/2010/03/17/en-f-246-rsta-titt-p-229-internet-explorer-9.aspx?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+MikaelSoderstrom+%28Mikael+S%C3%B6derstr%C3%B6m%29">Mikael Söderström: En första titt på Internet Explorer 9</a></li>
<li><a href="http://net.tutsplus.com/articles/news/ie9-may-actually-be-a-great-browser/">Net tuts:  IE9 May Actually Be a Fantastic Browser </a></li>
<li><a href="http://robertnyman.com/2010/03/17/testing-the-internet-explorer-platform-preview-ie9-reviewing-the-good-the-bad-and-the-main-letdown/">Robert Nyman: Testing the Internet Explorer Platform Preview (IE9) – reviewing the good, the bad and the main letdown</a></li>
</ul>
<p>Trevlig läsning! Jag säger som min gode vän <a href="http://parhaggstrom.com">Pär Häggström</a> sa: &#8221;Om Microsoft inte gjort rätt den här gången kommer jag aldrig förlåta dem!&#8221;</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=191&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/03/17/they-want-users-on-modern-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enkelt shell skrivet i C</title>
		<link>http://hassis.com/2010/03/06/enkelt-shell-skrivet-i-c/</link>
		<comments>http://hassis.com/2010/03/06/enkelt-shell-skrivet-i-c/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 22:17:32 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Programmering]]></category>
		<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=185</guid>
		<description><![CDATA[Tänkte snabbt lägga upp koden som vi gjorde i en skoluppgift. Uppgiften gick ut på att skapa en del i ett shell-script, närmare bestämt den delen där kommandon som skrivs i shellet &#8221;pipas&#8221;. #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;string.h&#62; #include &#60;ctype.h&#62; #include &#60;unistd.h&#62; &#160; #include &#60;sys/types.h&#62; #include &#60;sys/wait.h&#62; &#160; /* The array below will hold [...]]]></description>
			<content:encoded><![CDATA[<p>Tänkte snabbt lägga upp koden som vi gjorde i en skoluppgift. Uppgiften gick ut på att skapa en del i ett shell-script, närmare bestämt den delen där kommandon som skrivs i shellet &#8221;pipas&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
<span style="color: #339933;">#include &lt;ctype.h&gt;</span>
<span style="color: #339933;">#include &lt;unistd.h&gt;</span>
&nbsp;
<span style="color: #339933;">#include &lt;sys/types.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/wait.h&gt;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* The array below will hold the arguments: args[0] is the command. */</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">char</span><span style="color: #339933;">*</span> args<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">512</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
pid_t pid<span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> command_pipe<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">#define READ  0</span>
<span style="color: #339933;">#define WRITE 1</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/*
 * Handle commands separatly
 * input: return value from previous command (useful for pipe file descriptor)
 * first: 1 if first command in pipe-sequence (no input from previous pipe)
 * last: 1 if last command in pipe-sequence (no input from previous pipe)
 *
 * EXAMPLE: If you type &quot;ls | grep shell | wc&quot; in your shell:
 *    fd1 = command(0, 1, 0), with args[0] = &quot;ls&quot;
 *    fd2 = command(fd1, 0, 0), with args[0] = &quot;grep&quot; and args[1] = &quot;shell&quot;
 *    fd3 = command(fd2, 0, 1), with args[0] = &quot;wc&quot;
 *
 * So if 'command' returns a file descriptor, the next 'command' has this
 * descriptor as its 'input'.
 */</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> command<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> input<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> first<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> last<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> pipettes<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/* Invoke pipe */</span>
	pipe<span style="color: #009900;">&#40;</span> pipettes <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
	pid <span style="color: #339933;">=</span> fork<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #808080; font-style: italic;">/*
	 SCHEME:
	 	STDIN --&gt; O --&gt; O --&gt; O --&gt; STDOUT
	*/</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>pid <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>first <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span> <span style="color: #339933;">&amp;&amp;</span> last <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> input <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// First command</span>
			dup2<span style="color: #009900;">&#40;</span> pipettes<span style="color: #009900;">&#91;</span>WRITE<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> STDOUT_FILENO <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>first <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> last <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #339933;">&amp;&amp;</span> input <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Middle command</span>
			dup2<span style="color: #009900;">&#40;</span>input<span style="color: #339933;">,</span> STDIN_FILENO<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			dup2<span style="color: #009900;">&#40;</span>pipettes<span style="color: #009900;">&#91;</span>WRITE<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> STDOUT_FILENO<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Last command</span>
			dup2<span style="color: #009900;">&#40;</span> input<span style="color: #339933;">,</span> STDIN_FILENO <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>execvp<span style="color: #009900;">&#40;</span> args<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> args<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
			_exit<span style="color: #009900;">&#40;</span>EXIT_FAILURE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// If child fails</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>input <span style="color: #339933;">!=</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> 
		close<span style="color: #009900;">&#40;</span>input<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Nothing more needs to be written</span>
	close<span style="color: #009900;">&#40;</span>pipettes<span style="color: #009900;">&#91;</span>WRITE<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// If it's the last command, nothing more needs to be read</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>last <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
		close<span style="color: #009900;">&#40;</span>pipettes<span style="color: #009900;">&#91;</span>READ<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> pipettes<span style="color: #009900;">&#91;</span>READ<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* Final cleanup, 'wait' for processes to terminate.
 *  n : Number of times 'command' was invoked.
 */</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> cleanup<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> n<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> i<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> n<span style="color: #339933;">;</span> <span style="color: #339933;">++</span>i<span style="color: #009900;">&#41;</span> 
		wait<span style="color: #009900;">&#40;</span>NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> run<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> input<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> first<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> last<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">char</span> line<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> n <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* number of calls to 'command' */</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SIMPLE SHELL: Type 'exit' or send EOF to exit.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/* Print the command prompt */</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$&gt; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		fflush<span style="color: #009900;">&#40;</span>NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/* Read a command line */</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>fgets<span style="color: #009900;">&#40;</span>line<span style="color: #339933;">,</span> <span style="color: #0000dd;">1024</span><span style="color: #339933;">,</span> stdin<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
			<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #993333;">int</span> input <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
		<span style="color: #993333;">int</span> first <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd <span style="color: #339933;">=</span> line<span style="color: #339933;">;</span>
		<span style="color: #993333;">char</span><span style="color: #339933;">*</span> next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">'|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* Find first '|' */</span>
&nbsp;
		<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>next <span style="color: #339933;">!=</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #808080; font-style: italic;">/* 'next' points to '|' */</span>
			<span style="color: #339933;">*</span>next <span style="color: #339933;">=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span>
			input <span style="color: #339933;">=</span> run<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> input<span style="color: #339933;">,</span> first<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			cmd <span style="color: #339933;">=</span> next <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
			next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">'|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #808080; font-style: italic;">/* Find next '|' */</span>
			first <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		input <span style="color: #339933;">=</span> run<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> input<span style="color: #339933;">,</span> first<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		cleanup<span style="color: #009900;">&#40;</span>n<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		n <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> split<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> run<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> input<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> first<span style="color: #339933;">,</span> <span style="color: #993333;">int</span> last<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	split<span style="color: #009900;">&#40;</span>cmd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>args<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>strcmp<span style="color: #009900;">&#40;</span>args<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;exit&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> 
			exit<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		n <span style="color: #339933;">+=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> command<span style="color: #009900;">&#40;</span>input<span style="color: #339933;">,</span> first<span style="color: #339933;">,</span> last<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">char</span><span style="color: #339933;">*</span> skipwhite<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> s<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span>isspace<span style="color: #009900;">&#40;</span><span style="color: #339933;">*</span>s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">++</span>s<span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> s<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span> split<span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span><span style="color: #339933;">*</span> cmd<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	cmd <span style="color: #339933;">=</span> skipwhite<span style="color: #009900;">&#40;</span>cmd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">char</span><span style="color: #339933;">*</span> next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">' '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #993333;">int</span> i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>next <span style="color: #339933;">!=</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		next<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span>
		args<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> cmd<span style="color: #339933;">;</span>
		<span style="color: #339933;">++</span>i<span style="color: #339933;">;</span>
		cmd <span style="color: #339933;">=</span> skipwhite<span style="color: #009900;">&#40;</span>next <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">' '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cmd<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		args<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> cmd<span style="color: #339933;">;</span>
		next <span style="color: #339933;">=</span> strchr<span style="color: #009900;">&#40;</span>cmd<span style="color: #339933;">,</span> <span style="color: #ff0000;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		next<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #339933;">;</span>
		<span style="color: #339933;">++</span>i<span style="color: #339933;">;</span> 
	<span style="color: #009900;">&#125;</span>
&nbsp;
	args<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<img src="http://hassis.com/?ak_action=api_record_view&id=185&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/03/06/enkelt-shell-skrivet-i-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Byte till Mozilla Weave</title>
		<link>http://hassis.com/2010/02/16/byte-till-mozilla-weave/</link>
		<comments>http://hassis.com/2010/02/16/byte-till-mozilla-weave/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 16:16:35 +0000</pubDate>
		<dc:creator>Anders Hassis</dc:creator>
				<category><![CDATA[Personligt]]></category>

		<guid isPermaLink="false">http://hassis.com/?p=179</guid>
		<description><![CDATA[Förra måndagen var jag i Stockholm på Geek Meet hos Creuna och lyssnade på Christopher Blizzard. Christophers föredrag handlade först och främst om HTML5, men med stora inslag om hur Mozilla som organisation fungerade samt vilka produkter de utvecklar. Något som ligger Mozilla och mig varmt om hjärtat är integritet och öppen källkod. Alla Mozillas [...]]]></description>
			<content:encoded><![CDATA[<p>Förra måndagen var jag i Stockholm på <a href="http://robertnyman.com/2010/01/28/geek-meet-february-8th-2010-christoper-blizzard-of-mozilla/">Geek Meet</a> hos <a href="http://www.creuna.se/">Creuna</a> och lyssnade på <a href="http://www.0xdeadbeef.com/weblog/">Christopher Blizzard</a>. Christophers föredrag handlade först och främst om HTML5, men med stora inslag om hur Mozilla som organisation fungerade samt vilka produkter de utvecklar.</p>
<p>Något som ligger Mozilla och mig varmt om hjärtat är integritet och öppen källkod. Alla Mozillas produkter är öppen källkod som jag förstått det, och i alla deras produkter så står integritet högt i priolistan.</p>
<p>För att lösa <a href="http://hassis.com/2010/01/04/mitt-nya-liv-med-mac/">synkroniseringen av data mellan flera datorer</a> så har jag tidigare använt <a href="http://www.xmarks.com/">Xmarks</a>, men för någon vecka sedan släpptes <a href="https://mozillalabs.com/weave/">Mozilla Weave</a>. När det släpptes så tänkte jag låta det mogna lite innan jag provade det, men efter Christophers föredrag och hans entusiasm över det så tänkte jag att det var lika bra att göra slag i sak och testa det så fort jag kom hem.</p>
<p>Christopher bekräftade mina misstankar att Xmarks läser av datan som sparas hos dem, och jag har känt en längre tid att jag inte alls gillade det. Weave å andra sidan sparar allt hos dem som en enda stor blob som inte ens de kan läsa av (inte utan min nyckel).</p>
<p>Weave gör följande:</p>
<ul>
<li>Synkroniserar dina tabbar, så du kan fortsätta det du gör på en annan dator</li>
<li>Synkroniserar bokmärken, lösenord och <a href="http://www.getpersonas.com/en-US/">Personas</a>,</li>
</ul>
<p>I kommande versioner är det meningen att Weave ska synkronisera dina tillägg också, något jag verkligen ser fram emot.</p>
<p>Jag har läst på forum att Weave buggar för många, men jag har inte märkt av några problem än så länge. Om någon vecka kan jag nog gå in och ta bort mitt konto hos Xmarks.</p>
<p>Så ett hett tips är: <a href="http://mozillalabs.com/weave/">Mozilla Weave</a>!</p>
<img src="http://hassis.com/?ak_action=api_record_view&id=179&type=feed" alt="" /><!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://hassis.com/2010/02/16/byte-till-mozilla-weave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
