<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>46palermo</title>
	<link>http://www.46palermo.com</link>
	<description>a web developer's blog</description>
	<pubDate>Mon, 07 Jun 2010 23:21:33 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>I&#8217;m judging on .net awards 2009</title>
		<link>http://www.46palermo.com/judging-on-net-awards-2009/</link>
		<comments>http://www.46palermo.com/judging-on-net-awards-2009/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 19:15:20 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[Press]]></category>

		<guid isPermaLink="false">http://www.46palermo.com/judging-on-net-awards-2009/</guid>
		<description><![CDATA[ I have been selected to be on the judging panel of the .net awards 2009. I&#8217;m very grateful to be next to some of the most prominent people in the industry. You can take part in selecting the best in the digital industry by voting yourself!
If you don&#8217;t know what the awards are about:
&#8220;The [...]]]></description>
			<content:encoded><![CDATA[<p> <a href="http://www.thenetawards.com/judges.php" title=".net awards 2009" target="_blank"><img src="http://www.46palermo.com/wp-content/uploads/2009/10/net09_web_icon1.gif" style="border: 0pt none ; float: right; margin-left: 15px" alt=".net awards 2009" /></a>I have been selected to be on the judging panel of the .net awards 2009. I&#8217;m very grateful to be next to some of the most prominent people in the industry. You can take part in selecting the best in the digital industry by <a href="http://www.thenetawards.com/index.php#vote" rel="nofollow" target="_blank">voting yourself</a>!</p>
<p>If you don&#8217;t know what the awards are about:</p>
<p>&#8220;The .net Awards celebrate the best in web design and development, and are brought to you by the world&#8217;s best-selling magazine for web builders - .net. The 17 categories for 2009 range from Design Agency of the Year and Mobile Site of the Year through to the Infamy Award, and once you&#8217;ve voted you can use our Twitter widget - over there on the left - to tell your friends about the Awards! This year we have a fantastic group of judges including the likes of Jeffrey Zeldman, Paul Boag, Andy Budd, Christian Heilmann, Jason Santa Maria, Jon Hicks, Ryan Carson and Jonathan Snook!&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/judging-on-net-awards-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>I got published in .net magazine</title>
		<link>http://www.46palermo.com/i-got-published-in-net-magazine/</link>
		<comments>http://www.46palermo.com/i-got-published-in-net-magazine/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 19:26:19 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[Press]]></category>

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

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

		<guid isPermaLink="false">http://www.46palermo.com/i-got-published-in-net-magazine/</guid>
		<description><![CDATA[Ladies and gentlemen, I&#8217;m pleased to announce that an article I wrote has been published in a paper magazine.
The magazine itself is no less than the .net. You can find my article in the &#8216;technique&#8217; section of issue 191. You can find out what&#8217;s in issue 191 here
The article itself is a tutorial on how [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.netmag.co.uk/files/article_images/191/net191tutajax250.jpg" title="Ajax chat tutorial shot" style="margin: 0pt 0pt 0pt 15px; width: 250px; height: 162px; float: right" height="162" width="250" />Ladies and gentlemen, I&#8217;m pleased to announce that an article I wrote has been published in a paper magazine.</p>
<p>The magazine itself is no less than the .net. You can find my article in the &#8216;technique&#8217; section of issue 191. You can find out <a href="http://www.netmag.co.uk/zine/back-issues/issue-191" target="_blank" rel="nofollow">what&#8217;s in issue 191 here</a></p>
<p>The article itself is a tutorial on how to put together an Ajax Chat for your website and I&#8217;m very proud of it. I will post a PDF version soon.</p>
<p>Stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/i-got-published-in-net-magazine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mac OS X Mouse Cursors for Windows XP and Vista - Easy Installer</title>
		<link>http://www.46palermo.com/mac-os-x-mouse-cursors-for-windows-xp-vista-quick-installer/</link>
		<comments>http://www.46palermo.com/mac-os-x-mouse-cursors-for-windows-xp-vista-quick-installer/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 11:31:55 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[Downloads]]></category>

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

		<guid isPermaLink="false">http://www.46palermo.com/mac-os-x-mouse-cursors-for-windows-xp-vista-quick-installer/</guid>
		<description><![CDATA[Here is a little something for all of you Mac-lovers who use Windows. The installer I put together is a quick and easy way to have Mac OS X mouse pointers on a PC running Windows XP or Vista.]]></description>
			<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2008/09/mac-os-x-cursors-10-setup.exe"><img src="http://www.46palermo.com/wp-content/uploads/2008/09/sidebar.jpg" style="float: right; margin-left: 15px" alt="Mac OS X Cursors for Windows XP and Vista Quick Installer" border="0" /></a>Here is a little something for all of you Mac-lovers who use Windows. A quick and easy way to have Mac OS X mouse pointers on a PC running Windows XP or Vista.Although personally I&#8217;m not a Mac person, one of the first things I do after installing a fresh copy of Windows is change the mouse pointers to the Mac OS X ones. Usually this means I have to download a zip of individual pointer icons and then manually assign them to the right cursors in the Control Panel, which is a bit annoying.Well, I don&#8217;t have to do this anymore. This morning I put together a nice and easy installer that does all that manual work for me. You can download the installer using the link below.
<p class="download" style="clear: both"><strong><a href="/wp-content/uploads/2008/09/mac-os-x-cursors-10-setup.exe">Download Mac OS X Mouse Cursors Easy Installer</a></strong></p>
<p>Thanks to Shinde for uploading the cursors to Winmatrix.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/mac-os-x-mouse-cursors-for-windows-xp-vista-quick-installer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to workaround PHP&#8217;s SOAPClient bug when connecting over SSL</title>
		<link>http://www.46palermo.com/how-to-workaround-php-soapclient-bug-when-connecting-over-ssl/</link>
		<comments>http://www.46palermo.com/how-to-workaround-php-soapclient-bug-when-connecting-over-ssl/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 21:08:54 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.46palermo.com/how-to-workaround-phps-soapclient-bug-when-connecting-over-ssl/</guid>
		<description><![CDATA[In this post you will find a quick workaround for a problem PHP has with connecting to SOAP interfaces using SSL. If you see "SoapClient::SoapClient() [function.SoapClient-SoapClient]: SSL: fatal protocol error", read on.]]></description>
			<content:encoded><![CDATA[<p>Today, while integrating SecPay (aka PayPoint) payment gateway with an ecommerce site I&#8217;m working on, I came across a very annoying problem with PHP&#8217;s SOAPClient implementation.</p>
<p>When talking to a SOAP interface the first thing you want to do is obviously connect to the endpoint:</p>
<div class="codesnip-container" >
<div class="codesnip">$this-&gt;soap = new SoapClient<span class="br0">&#40;</span><span class="st0">&#8216;https://www.secpay.com/java-bin/services/SECCardService?wsdl&#8217;</span><span class="br0">&#41;</span>;</div>
</div>
<p>This looks correct and innocent, however it produces this nasty error:</p>
<div class="codesnip-container" >
<div class="codesnip">SoapClient::<span class="me2">SoapClient</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#91;</span><span class="kw2">function</span>.<span class="me1">SoapClient</span>-SoapClient<span class="br0">&#93;</span>: SSL: fatal protocol error</div>
</div>
<p>Changing SOAPClient parameters doesn&#8217;t help and disabling wsdl cache in php.ini doesn&#8217;t do much either.</p>
<p>After googling a bit I found a couple of bug reports. It turns out PHP has issues talking to endpoints over SSL. *Sigh*.</p>
<p>Here&#8217;s a workaround I came up with to force PHP to connect:</p>
<div class="codesnip-container" >
<div class="codesnip">$orig_error_reporting = error_reporting<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
error_reporting<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>;<br />
$this-&gt;soap = new SoapClient<span class="br0">&#40;</span><span class="st0">&#8216;https://www.secpay.com/java-bin/services/SECCardService?wsdl&#8217;</span><span class="br0">&#41;</span>;<br />
error_reporting<span class="br0">&#40;</span>$orig_error_reporting<span class="br0">&#41;</span>;</div>
</div>
<p>As you can see the idea is simple. Just turn off error reporting before instantiating soapclient and restore it afterwards.</p>
<p>I hope this helps some of you frustrated by this bug.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/how-to-workaround-php-soapclient-bug-when-connecting-over-ssl/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Secure Windows File Sharing (Samba) over the Internet without Putty.</title>
		<link>http://www.46palermo.com/secure-samba-windows-file-sharing-without-putty/</link>
		<comments>http://www.46palermo.com/secure-samba-windows-file-sharing-without-putty/#comments</comments>
		<pubDate>Sun, 15 Jul 2007 11:02:07 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[Windows]]></category>

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

		<guid isPermaLink="false">http://www.46palermo.com/nicer-samba-windows-file-sharing-over-ssh/</guid>
		<description><![CDATA[There are numerous articles describing tunnelling Samba over SSH with putty. In this post I will show you how to set up Samba tunnelling for everyday use without putty running all the time.]]></description>
			<content:encoded><![CDATA[<p>There are numerous articles describing tunnelling Samba over SSH with putty. In this post I will show you how to set up Samba tunnelling for everyday use without putty running all the time.</p>
<p>Things you need before you start:</p>
<ul>
<li>A SSH server between you and the shares you want to connect to. It may be running on the same machine as the shares you want to access.</li>
<li>File Sharing (Windows) or Samba (Linux) configured correctly on the machine you want to access. Make sure your firewall lets the SSH server connect to your Samba or Windows shares.</li>
</ul>
<h3>1st Step: Create a local loopback interface</h3>
<p>We need to create a loopback interface on your local computer first. There is a lot of HOWTOs on the web describing this. I suggest you <a href="http://www.security-hacks.com/2007/05/18/tunneling-smb-over-ssh-secure-file-sharing">read this one</a>. As soon as you have the loopback working and putting properly forwarding ports to the local loopback interface, go to step 2.</p>
<h3>2nd Step: Set up the tunnelling app</h3>
<p>So you have the forwarding working now. Technically, that&#8217;s all you need. However, if you plan to use shares on a daily basis, there are a few things you will notice:</p>
<ul>
<li>It&#8217;s annoying to have the putty window open all the time,</li>
<li>If you close it, your shares will become unavailable,</li>
<li>If your network goes down for a while, putty won&#8217;t be able to reconnect your ssh session.</li>
</ul>
<p><img src="http://www.46palermo.com/wp-content/uploads/2007/07/myentunnel.jpg" style="border-width: 0px; width: 300px; height: 176px; margin-left: 20px" alt="Myentunnel Screenshot" align="right" border="0" height="176" width="300" />There&#8217;s a solution to these problems: a tunnelling tray application. Personally, I like myentunnel. It&#8217;s a simple wrapper for plink.exe from the putty package. Sitting quietly in the task-bar&#8217;s tray, it&#8217;s unobtrusive and reconnects automatically after a network failure.</p>
<p>Install and run <a href="http://nemesis2.qx.net/software-myentunnel.php" rel="nofollow">myentunnel</a>. Then set your hostname, username and password stuff  in the Settings tab and go to the Tunnels tab. Add the Samba port and IPs in the Local box, press Save and then Connect. If putty connected and forwarded the ports properly, myentunnel should work without a hitch too.</p>
<p>If you have multiple servers to connect to, you can create server profiles. Read the myentunnel documentation for details.</p>
<p>That&#8217;s all, enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/secure-samba-windows-file-sharing-without-putty/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paczkator - sending big scanned attachments made easy!</title>
		<link>http://www.46palermo.com/paczkator-sending-big-scanned-attachments-made-easy/</link>
		<comments>http://www.46palermo.com/paczkator-sending-big-scanned-attachments-made-easy/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 11:34:31 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[Downloads]]></category>

		<category><![CDATA[My Pet Projects]]></category>

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

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

		<guid isPermaLink="false">http://www.46palermo.com/2007/07/09/paczkator-sending-big-scanned-attachments-made-easy/</guid>
		<description><![CDATA[Paczkator is a small Windows utility I wrote for the company I'm currently working with. Its purpose is to simplify the process of sending multiple big images (usually scanned documents) by mail. It's small, pretty fast and requires no configuration from the user. You can download it here, it's free...]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.46palermo.com/wp-content/uploads/2007/07/paczkator-logo.jpg" style="border-width: 0px; width: 96px; height: 96px; margin-left: 20px" alt="Paczkator Logo" align="right" border="0" height="96" width="96" /><strong>Paczkator</strong>  is a small Windows utility I wrote for the company I&#8217;m currently working with. Its purpose is to simplify the process of sending multiple big images (usually scanned documents) by mail. It&#8217;s small, pretty fast and requires no configuration from the user.</p>
<p>Features:</p>
<ul>
<li>Small, free and easy to install and use</li>
<li>Automatically finds any images in the folder specified and scales them down if they are too big</li>
<li>Zips the folder, opens your email application (Outlook Express by default) and creates an attachment for you.</li>
<li>Warns you if the compressed folder is too big to send by email</li>
<li>It&#8217;s localised. Currently it speaks English and Polish</li>
<li>No administrator privileges required to install and run</li>
<li>No additional software required to work properly</li>
</ul>
<p class="download"><a href="http://www.46palermo.com/wp-content/uploads/2007/07/paczkator-08-installer.exe" title="Paczkator 0.8 Installer"><strong>Download Paczkator 0.8 now!</strong><br />
</a></p>
<p>Paczkator is distributed under the <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt" rel="nofollow" title="GPL2 License">GPL2 license</a>, which means the program is FREE for both private and commercial use. You can also redistribute and modify it. If you do so, I would be grateful if you notified me.</p>
<p>Feel free to <a href="/contact" title="Contact the author">contact me</a> if you have questions or suggestions concerning Paczkator.</p>
<p>Version History:</p>
<ul>
<li>0.8 - current release: added localisation, installer and fixed a few bugs</li>
<li>0.6 - improved image recognition and scaling procedures, a bug-fix release</li>
<li>0.5 - initial release</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/paczkator-sending-big-scanned-attachments-made-easy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gadżet iKlasa - znajomi z nasza-klasa.pl na twojej stronie domowej</title>
		<link>http://www.46palermo.com/igoogle-nasza-klasa-gadzet-strona-domowa-iklasa/</link>
		<comments>http://www.46palermo.com/igoogle-nasza-klasa-gadzet-strona-domowa-iklasa/#comments</comments>
		<pubDate>Sat, 05 May 2007 15:56:31 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

		<category><![CDATA[My Pet Projects]]></category>

		<guid isPermaLink="false">http://www.46palermo.com/iklasa-gadzet-igoogle-nasza-klasa-pl/</guid>
		<description><![CDATA[iKlasa to gadżet, który pokazuje najnowsze fotki twoich znajomych z Naszej Klasy na twojej stronie domowej Google.]]></description>
			<content:encoded><![CDATA[<p>iKlasa to gadżet, który pokazuje najnowsze fotki twoich znajomych z serwisu Nasza Klasa na twojej stronie domowej Google.</p>
<p><a href="http://fusion.google.com/add?source=atgs&amp;moduleurl=http%3A//www.46palermo.com/iklasa/iklasa_gadget.xml&amp;nocache=1"><img src="/iklasa/images/iklasa_screenshot_big.png" alt="iKlasa - gadżet dla iGoogle pokazujący ostatnio dodane fotki znajomych" border="0" height="325" width="464" /></a></p>
<p><a href="http://fusion.google.com/add?source=atgs&amp;moduleurl=http%3A//www.46palermo.com/iklasa/iklasa_gadget.xml&amp;nocache=1"><img src="http://buttons.googlesyndication.com/fusion/add.gif" alt="Add to Google" style="vertical-align: middle" border="0" /></a>   Chcesz iKlasę? Kliknij <a href="http://fusion.google.com/add?source=atgs&amp;moduleurl=http%3A//www.46palermo.com/iklasa/iklasa_gadget.xml&amp;nocache=1">dodaj do strony domowej</a></p>
<p>Już niedługo iKlasa będzie dostępna także jako kanał RSS.</p>
<p>Jeśli masz jakies sugestie co do gadżetu - zapraszam do komentowania.</p>
<p><small style="clear: both">English: iKlasa is an iGoogle gadget which displays a feed of latest friends photos from a Polish social-networking website nasza-klasa.pl</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/igoogle-nasza-klasa-gadzet-strona-domowa-iklasa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Finally! A decent text editor for Linux with Windows key bindings.</title>
		<link>http://www.46palermo.com/text-editor-for-linux-with-windows-key-bindings/</link>
		<comments>http://www.46palermo.com/text-editor-for-linux-with-windows-key-bindings/#comments</comments>
		<pubDate>Thu, 03 May 2007 08:05:37 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[Code Editing]]></category>

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

		<guid isPermaLink="false">http://www.46palermo.com/2007/07/05/finally-a-decent-console-editor-for-linux-with-windows-keybindings/</guid>
		<description><![CDATA[I used Vim for several years before realising that all this complexity and a user interface from the 70s were not for me anymore. I needed simplicity. I needed something with Ctrl-C, Ctrl-V for clipboard and Ctrl-F for find. I decided to look for another editor...]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using Linux for more than 7 years now. The main thing I do on Linux is text editing. Editing configuration files, source files, html files and what not. Initially I used Midnight Commander&#8217;s built-in editor (as probably many of you coming from windowed systems). As I became more experienced and geeky I moved to one of the &#8216;holy editors&#8217;: Vim. Vim is an excellent editor with unlimited possibilities but unfortunately mastering it takes unlimited time as well. I used Vim for several years before realising that all this complexity and a user interface from the 70s were not for me anymore. I needed simplicity. I needed something with Ctrl-C, Ctrl-V for clipboard and Ctrl-F for find. I decided to look for another editor.</p>
<p>Here&#8217;s what I was looking for:</p>
<ul>
<li>as many windows-like (CUA) key bindings as possible. At least Ctrl-C, Ctrl-V.</li>
<li>syntax coloring</li>
<li>basic editing functions like search&amp;replace</li>
<li>needs to work on a VT as well as a console without rebinding keys</li>
<li>minimum configuration</li>
</ul>
<p>These features are not particularly demanding, are they? Well, I tried at least a dozen various editors and couldn&#8217;t find any that would meet these requirements. Not until I stumbled upon Diakonos.</p>
<p><a href="http://purepistos.net/diakonos/" title="Diakonos">Diakonos</a> is a simple programmer&#8217;s editor for the Linux console that I find almost ideal. It&#8217;s open-source, it has all I need and it works out of the box. I&#8217;m not going into details (you can read about its features on the homepage), just a screenshot and a list of pros and cons.</p>
<p>Pros:</p>
<ul>
<li>very windows-like key bindings (all that I use, I didn&#8217;t rebind a single key!)</li>
<li>no configuration needed (although you can configure it pretty extensively if you want to)</li>
<li>works on a VT as well as console without reconfiguring putty, .inputrc or anything</li>
<li>has all the features you would expect in a basic programmers editor (regexps, etc)</li>
</ul>
<p>Cons:</p>
<ul>
<li>It&#8217;s slow. It is really slow when compared to any other editor (even Emacs). It&#8217;s written in Ruby, which is an interpreted language. I&#8217;m not sure if it is for Ruby or the author&#8217;s laziness but I don&#8217;t really care. It works sufficiently fast on my hardware. It saves a lot of my time which is more valuable to me than cpu cycles.</li>
<li>Syntax coloring has some problems. I think it has something to do with switching contexts. When editing a PHP file with HTML in it, the coloring sometimes gets funny. Well that&#8217;s not a major drawback for me too.</li>
</ul>
<p><a href="http://p.usher.com.pl/wp-content/uploads/2007/07/diakonos2.jpg" title="Diakonos2"></a>To summarise. If you&#8217;re frustrated with complexity of Vim and Emacs, try Diakonos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/text-editor-for-linux-with-windows-key-bindings/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Decowood Saunas - a product site.</title>
		<link>http://www.46palermo.com/saunas-product-site/</link>
		<comments>http://www.46palermo.com/saunas-product-site/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 17:20:26 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[My Pet Projects]]></category>

		<guid isPermaLink="false">http://www.46palermo.com/saunas-product-site/</guid>
		<description><![CDATA[The task I've received recently was to develop a product site for a company producing saunas. The idea was to create a web equivalent of their printed catalogue of products. It was a pretty simple project but there were a few things I had to deal with...]]></description>
			<content:encoded><![CDATA[<p>The task I&#8217;ve received recently was to develop a product site for a company producing saunas. The idea was to create a web equivalent of their printed catalogue of products. It was a pretty simple project but there were a few things I had to deal with:</p>
<ul>
<li>It had to be pure a XHTML/CSS site. No PHP or any other server-side scripting used on the production server.  That of course implied I couldn&#8217;t use a database.</li>
<li>I had to transfer all the texts, product descriptions and images from MS Word documents I received from the client.</li>
<li>The site had to be multilingual, so even more data to insert from *.docs.</li>
</ul>
<p>The prospect of manually cutting and pasting those things from Word to XHTML sources didn&#8217;t sound exciting so I decided to use some scripting to do the tedious job for me.  Here&#8217;s what I did:</p>
<ul>
<li>Firstly, I made XHTML layouts from images I received from my friend who took care of designing the whole thing. I included a bit of JavaScript eye-candy to to make the site more attractive.</li>
<li>Then I developed a minimalistic CMS using PHP for automatic generation of product entries and pages from CSV input. It could also export the whole site to separate XHTML and CSS files.</li>
<li>Then I made a couple of Perl scripts to convert *.docs to HTML, extract all the data from them (images and tabular data) and create CSV files.</li>
<li>Finally I fed my minicms script with the CSV data and rendered everything to pure XHTML pages.</li>
</ul>
<p>Of course not everything went OK automagically. Scripts needed quite a bit of tweaking because *.doc files didn&#8217;t have a regular structure and some things just were faster to import manually. However, the site was ready in half the time I would have needed to create it by hand and I saved myself from some serious headaches.</p>
<p>Screenshots of the result (you can take a look at the <a href="http://www.decowood.com/saunas-en/" rel="nofollow">live site here</a>):</p>

<div class="slideshow" id="ngg_slideshow4"><p>The <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> and <a href="http://www.mozilla.com/firefox/">a browser with Javascript support</a> are needed..</p></div>
	<script type="text/javascript">
		var so = new SWFObject("http://www.46palermo.com/wp-content/plugins/nggallery/imagerotator.swf", "ngg_slideshow4", "490", "375", "7", "#000000");
		so.addParam("wmode", "opaque");
		so.addVariable("file", "http://www.46palermo.com/wp-content/plugins/nggallery/nggextractXML.php?gid=4");
		so.addVariable("shuffle", "false");
		so.addVariable("linkfromdisplay", "false");
		so.addVariable("shownavigation", "true");
		so.addVariable("showicons", "true");
		so.addVariable("overstretch", "true");
		so.addVariable("backcolor", "0x000000");
		so.addVariable("frontcolor", "0xFFFFFF");
		so.addVariable("lightcolor", "0xCDFC00");
		so.addVariable("rotatetime", "10");
		so.addVariable("transition", "blocks");
		so.addVariable("width", "490");
		so.addVariable("height", "375");
		so.write("ngg_slideshow4");
	</script>
<p><small>Note: Decowood logo is a property of Decowood company. Both logos and pictures of products are used only for the purpose of presentation. Currently the site is maintained by a third-party contractor so it may look different.<br />
</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/saunas-product-site/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PlastiCMS - E-commerce website management system.</title>
		<link>http://www.46palermo.com/plasticms/</link>
		<comments>http://www.46palermo.com/plasticms/#comments</comments>
		<pubDate>Sun, 22 Oct 2006 14:14:06 +0000</pubDate>
		<dc:creator>Damian Gaweda</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[My Pet Projects]]></category>

		<guid isPermaLink="false">http://www.46palermo.com/2006/10/22/plasticms/</guid>
		<description><![CDATA[PlastiCMS was my first commercial project created with CakePHP. It's a custom-built CMS for managing a company website with an integrated E-commerce application.

From this post you can learn about features of the system and technologies I used to create it. A few screenshots of a live site running PlastiCMS are included. ]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a minimalist by nature. I like things designed for a particular purpose. That&#8217;s why I tend to create custom applications rather than to modify generic ones. I used to build everything from ground up using only a few handy PHP classes. However some time ago I decided it was a huge waste of time and drawbacks of this development method outweighed the benefits.</p>
<p>I decided to give some of the generally available frameworks a try. After some time of playing with open-source solutions I chose CakePHP. I liked CakePHP the most because of its conventions, model relationships and the fact it worked with both PHP4 and PHP5.</p>
<p><strong>PlastiCMS</strong> was my first commercial project created with CakePHP.  It&#8217;s a custom-built CMS for managing a company website with an integrated E-commerce application.</p>
<p>Features of PlastiCMS include:</p>
<ul>
<li>Page management. You can organise pages in a classical tree structure, which is not trendy but suitable for a company site. Navigational elements are automatically generated using the page tree.</li>
<li>TinyMCE rich text editor. You can edit pages the way you edit MS Word documents.</li>
<li>An Image Gallery with a fancy Web2.0-like presentation using JavaScript.</li>
<li>A Catalogue of Products with unlimited number of categories and subcategories. Products can be assigned to multiple categories. Each product can have many variants (colour, size, length). Each variant may influence price of the product.</li>
<li>Internationalisation. You can run several language versions of a site.</li>
<li>A simple Client Relationship Manager is included</li>
<li>It&#8217;s Google-friendly</li>
<li>It works with any shared hosting provider</li>
<li>It&#8217;s simple to use for non-technical people.</li>
</ul>
<p>Screenshots of a live site using PlastiCMS:</p>

<div class="slideshow" id="ngg_slideshow3"><p>The <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> and <a href="http://www.mozilla.com/firefox/">a browser with Javascript support</a> are needed..</p></div>
	<script type="text/javascript">
		var so = new SWFObject("http://www.46palermo.com/wp-content/plugins/nggallery/imagerotator.swf", "ngg_slideshow3", "490", "340", "7", "#000000");
		so.addParam("wmode", "opaque");
		so.addVariable("file", "http://www.46palermo.com/wp-content/plugins/nggallery/nggextractXML.php?gid=3");
		so.addVariable("shuffle", "false");
		so.addVariable("linkfromdisplay", "false");
		so.addVariable("shownavigation", "true");
		so.addVariable("showicons", "true");
		so.addVariable("overstretch", "true");
		so.addVariable("backcolor", "0x000000");
		so.addVariable("frontcolor", "0xFFFFFF");
		so.addVariable("lightcolor", "0xCDFC00");
		so.addVariable("rotatetime", "10");
		so.addVariable("transition", "blocks");
		so.addVariable("width", "490");
		so.addVariable("height", "340");
		so.write("ngg_slideshow3");
	</script>
<p>Plastiflora&#8217;s site design was created by a friend of mine, Marcin from <a href="http://www.k13.com.pl" rel="nofollow">K13 Graphic Design</a>. I made the XHTML/CSS version of his idea.</p>
<p><small>Note: <a href="http://www.plastiflora.pl" rel="nofollow">Plastiflora</a> logo is a property of Plastiflora company. Both logos and pictures of products are used only for the purpose of presentation. Currently the site of Plastiflora is maintained by a third-party contractor so it may look different.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.46palermo.com/plasticms/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
