<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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>backend &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/backend/</link>
	<description>Feed of posts on WordPress.com tagged "backend"</description>
	<pubDate>Fri, 25 Dec 2009 19:23:22 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Django cache framework: how to write custom decorators]]></title>
<link>http://ricardo.getgears.com/2009/12/15/django-cache-framework-how-to-write-custom-decorators/</link>
<pubDate>Tue, 15 Dec 2009 18:19:32 +0000</pubDate>
<dc:creator>ricardo</dc:creator>
<guid>http://ricardo.getgears.com/2009/12/15/django-cache-framework-how-to-write-custom-decorators/</guid>
<description><![CDATA[Anyone developing high requested web applications will at some point consider server side caching to]]></description>
<content:encoded><![CDATA[Anyone developing high requested web applications will at some point consider server side caching to]]></content:encoded>
</item>
<item>
<title><![CDATA[Routing problems in Linux]]></title>
<link>http://hwdbbefe.wordpress.com/2009/12/09/routing-problems-in-linux/</link>
<pubDate>Wed, 09 Dec 2009 09:37:46 +0000</pubDate>
<dc:creator>firelynx</dc:creator>
<guid>http://hwdbbefe.wordpress.com/2009/12/09/routing-problems-in-linux/</guid>
<description><![CDATA[This is a little side note, since this blog is not really about server administration. But when I co]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>This is a little side note, since this blog is not really about server administration. But when I confronted this problem in linux I noticed I did not find any help on the net to indicate why I got the strange behaviour out of linux that I did.</p>
<p>So our new servers were installed with Linux Fedora 11. This is a GUI based Linux, keep that in mind. The reason I installed a GUI based linux was because when you get to the servers in the server halls and you find a problem which you cannot handle. Not having your own laptop with you could prove fatal because you will have a hard time googling for answers in lynx. So having a GUI on the servers could save you there. Also, some future admins may not be so comfortable with CLI as I am, and therefore will appreciate the GUI for what it is.</p>
<p>But, on to the problem. We have a server pair which are simply two identical servers set up so for redundancy. One can be taken down for maintenance and the other pulls both servers loads. Problem was, when the one server which we can call server alpha went down or even just did a service network restart, the other server, which we can call server gamma, would jump and restart its network as well. This is not good of course, but what is even worse is that when server gamma restarted its network, the routings would go haywire and even though none of the interfaces had IP-addresses in the 192.168. range assigned on any network card, the default route would appear in the routing table as 192.168.1.1.</p>
<p>So, what I did was I used the route command to correct the routes, thinking they would stay the way I changed them. But after a service network restart to test it, the same results occurred. So I thought I had some bogus network script somewhere maybe. I pulled up a grep -r &#8220;192.168.1.&#8221; /etc/* but it yielded nothing.</p>
<p>I just couldn&#8217;t figure out what was wrong. I started writing route-eth0 and route-eth1 files to force my routes into the routing table. And this did just that. But it did not remove the wrongful default route to 192.168.1.1.</p>
<p>So after consulting with some Linux people on IRC I found out that Fedora does not leave the network handling to the conf files in /etc and the network service. Fedora has a service called NetworkManager. I shivered as I see saw this service-name in camel-casing. The dread which struck me when I saw it had to do with networking was even worse. This NetworkManager is a graphical tray-daemon which simply ignores all config files and holds on to what you told it the first time you started the server. Especially the default route it seems. After killing NetworkManager, the right configs were read by the network service and everything turned out right.</p>
<p><strong>How to kill the NetworkManager.</strong></p>
<p>First we need to make sure it does not start automatically on restart.</p>
<blockquote><p>chkconfig &#8211;level 2345 NetworkManager off</p></blockquote>
<p>We also want to make sure the network service does start automatically. Otherwise we will be without network.</p>
<blockquote><p>chkconfig &#8211;level 2345 network on</p></blockquote>
<p>Now we need to stop both the network service (if active) and the NetworkManager service to then just start the network service.</p>
<blockquote><p>service network stop &#38;&#38; service NetworkManager stop &#38;&#38; service network start</p></blockquote>
<p>I hope this helps someone else who runs into the same problem that I did.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Як створити нову статичну сторінку (CMS Page) в Magento.]]></title>
<link>http://magentoua.wordpress.com/2009/11/16/create-cms-page/</link>
<pubDate>Mon, 16 Nov 2009 11:12:57 +0000</pubDate>
<dc:creator>Wolf</dc:creator>
<guid>http://magentoua.wordpress.com/2009/11/16/create-cms-page/</guid>
<description><![CDATA[Додаємо статичну сторінку в Magento Сьогодні розглянемо проблему додавання статичної сторінки в Mage]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><div id="attachment_191" class="wp-caption aligncenter" style="width: 590px"><a href="http://magentoua.wordpress.com/2009/11/16/create-cms-page/"><img class="size-full wp-image-191 " title="Про компанію Magentoua" src="http://magentoua.wordpress.com/files/2009/11/about_company.png" alt="Про компанію Magentoua" width="580" height="340" /></a><p class="wp-caption-text">Додаємо статичну сторінку в Magento</p></div>
<p>Сьогодні розглянемо проблему додавання статичної сторінки в Magento.</p>
<p>В переважній більшості випадків це такі сторінки як «Про нас» (About Us), «Інформація про доставку» (Shipping information), «Приватність та безпека покупок» (Privacy &#38; Security), «Повернення товару» (Return Policy) і т.д.</p>
<p>CMS сторінки можуть містити відформатований HTML чи простий текст.<!--more Поїхали! --></p>
<p>Поїхали!</p>
<p>Йдемо в «Панель адміністратора»(Admin Panel) <em>www.yourmagentosite/admin</em> і логуємося</p>
<div id="attachment_186" class="wp-caption aligncenter" style="width: 591px"><img class="size-full wp-image-186" title="login_to_admin" src="http://magentoua.wordpress.com/files/2009/11/login_to_admin.png" alt="Login to Admin Panel" width="581" height="208" /><p class="wp-caption-text">Логуємося в Панель адміністратора</p></div>
<div id="attachment_187" class="wp-caption alignleft" style="width: 214px"><img class="size-full wp-image-187" title="Manage Pages" src="http://magentoua.wordpress.com/files/2009/11/manage_pages.png" alt="Manage Pages" width="204" height="110" /><p class="wp-caption-text">Manage Pages</p></div>
<p>Заходимо в CMS-&#62;Manage Pages і натискаємо Add New Page.<strong> </strong>Ми перейдемо на нашу новостворену сторінку та розглянемо її детальніше.</p>
<p>Під <strong>Page Information</strong> ми бачимо три закладки:</p>
<ol>
<li>General Information (загальна інформація)</li>
<li>Custom Design (індивідуальні налаштування макету)</li>
<li>Meta Data (мета інформація)</li>
</ol>
<h4>Закладка General Information</h4>
<ul>
<li><strong>Page Title</strong> — Назва сторінки, яка буде відображатися в заголовку браузера і в списку сторінок в CMS-&#62;Manage Pages.</li>
<li><strong>SEF URL Identifier</strong> — це ідентифікатор посилання на вашу сторінку. Якщо ви ввели туди about-us то шлях на вашу сторінку буде мати наступний вигляд www.yourmagentosite<em>/about-us</em></li>
<li><strong>Status</strong> — Enabled: сторінка активна, Disabled: вимкнена.</li>
<li><strong>Content</strong> — поле в яке ви вводите контент, що повинен бути на сторінці.</li>
</ul>
<div id="attachment_188" class="wp-caption aligncenter" style="width: 590px"><img class="size-full wp-image-188 " title="Create new page" src="http://magentoua.wordpress.com/files/2009/11/new_page.png" alt="Create new page" width="580" height="267" /><p class="wp-caption-text">Створюємо нову сторінку - загальна інформація</p></div>
<p style="text-align:center;">
<h4>Закладка Custom Design</h4>
<ul>
<li><strong>Custom Theme</strong> — можна вибрати для сторінки іншу тему (ми ж залишаємо це поле так як є)</li>
<li><strong>Custom Theme From/Custom Theme To</strong> — можна задати початкову і кінцеву дату активності нашої вибраної теми (теж залишаємо поля так як вони є)</li>
<li><strong>Layout</strong> — тут вибираємо який темплейт ми будемо використовувати: з однією колонкою, з двома чи трьома. Ми вибрали з двома колонками в якого ліва колонка вужча.</li>
<li><strong>Layout Update XML</strong> — дуже важливе поле. Дає змогу робити зміни в макеті (layout), які впливатимуть тільки на цю сторінку. Наприклад, можна додати додатковий клас на &#60;body&#62; чи підключити інший темплейт сторінки.</li>
</ul>
<div id="attachment_189" class="wp-caption aligncenter" style="width: 590px"><img class="size-full wp-image-189" title="Manage pages - Custom design" src="http://magentoua.wordpress.com/files/2009/11/manage_pages_design.png" alt="Manage pages - Custom design" width="580" height="275" /><p class="wp-caption-text">Створюємо нову сторінку - Custom Design</p></div>
<h4>Закладка Meta Data</h4>
<ul>
<li><strong>Keywords</strong> — додаємо ключові слова які будуть відноситись до цієї сторінки.</li>
<li><strong>Description</strong> — додаємо опис сторінки (якщо потрібно)</li>
</ul>
<div id="attachment_190" class="wp-caption aligncenter" style="width: 589px"><img class="size-full wp-image-190" title="Manage pages - Meta Data" src="http://magentoua.wordpress.com/files/2009/11/manage_pages_meta.png" alt="Manage pages - Meta Data" width="579" height="316" /><p class="wp-caption-text">Створюємо нову сторінку - Meta Data</p></div>
<p>Натискаємо «Save Page» і наша сторінка створена.</p>
<p>&#160;</p>
<hr />
<p>&#160;</p>
<p>Подібні статті:</p>
<ul>
<li><a href="http://magentoua.wordpress.com/2009/11/05/how-to-add-and-edit-cms-block/">Як створити та редагувати статичний блок Static Block в Magento?</a></li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[IIS Manager (Inetmgr) ist leer]]></title>
<link>http://bcdotnet.wordpress.com/2009/11/10/iis-manager-inetmgr-ist-leer/</link>
<pubDate>Tue, 10 Nov 2009 17:29:27 +0000</pubDate>
<dc:creator>bc</dc:creator>
<guid>http://bcdotnet.wordpress.com/2009/11/10/iis-manager-inetmgr-ist-leer/</guid>
<description><![CDATA[Ich wollte heute Morgen auf meinem Server ein neues virtuelles Verzeichnis erstellen. Also inetmgr g]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ich wollte heute Morgen auf meinem Server ein neues virtuelles Verzeichnis erstellen. Also <strong>inetmgr</strong> gestartet und siehe da, nichts! Es wird kein Server angezeigt. Auch ein Verbinden mit einem anderen Webserver im Netz ist nicht möglich.</p>
<p>Nach langer Suche habe ich ein <a href="http://support.microsoft.com/?scid=kb;en-us;946517&#38;x=13&#38;y=13">Fix bei Microsoft</a> gefunden aber der Hotfix steht dort nicht zum Download bereit.</p>
<p>Auf einem weiteren Server (beide Sharepoint Frontend Server) fand ich dieses Problem ebenfalls. Der Unterschied: der eine Server war eine Testmaschine und der andere ein Produktivserver.</p>
<p>Ein Neustart des Testservers behob das Problem, aber den Produktivserver konnte ich nicht neustarten. Die Lösung fand ich durch Google. <strong>Ein Restart des &#8220;Microsoft Sharepoint Timer&#8221; Dienstes behob das Problem.</strong></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Scripted backups.]]></title>
<link>http://hwdbbefe.wordpress.com/2009/10/28/scripted-backups/</link>
<pubDate>Wed, 28 Oct 2009 09:12:31 +0000</pubDate>
<dc:creator>firelynx</dc:creator>
<guid>http://hwdbbefe.wordpress.com/2009/10/28/scripted-backups/</guid>
<description><![CDATA[Many people are struggling with how to deal with their backups. Normally backups are a problem handl]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Many people are struggling with how to deal with their backups. Normally backups are a problem handled by some administrator who copies a whole bunch of stuff onto a tape cassette. Often without knowing how, if even possible to restore everything from the data on the tape cassette.</p>
<p>I approached this at a different angle.</p>
<p>As developers we needed a staging environment for the application we are developing. Using the live servers is not okay in my opinion. So I found an old P4 box with 1GB ram. Slapped in a new HDD for the databases and started setting this up as a development server. Of course, porting the code to make it mobile enough to move it to this server was one thing, which is another story. But getting concurrent versions of the databases onto this server was were the backups came into play.</p>
<p>Using the development server as a test case for the backups, I had everything I needed to build a true case where I could assure that each and every backup taken would work. Each backup is restored to the development server and as we developers use the development server, we see if some data goes terribly wrong. Of course, this does not protect us from the scenario where some data is malformed in a uniformed way, producing false positives. However, all data which goes into our system is backed up separately, so everything can be rebuilt if needed. This data is checked via md5 hashes, so no malformation is possible there.</p>
<p>So, the backups are taken to a backup server, custom built for the purpose. This server is an office version. We wanted an out-of-the-server-park backup, so we decided to put a server at our office. The box is custom built by myself and based on a Chieftec chassis with an Intel motherboard and Intel processor. I used a highpoint rocketraid 3210 as a RAID controller. I built a RAID5 from four Western Digital 1TB hard drives. We also have two spares in the server, so in case we need to rebuild the RAID we do not have to wait for a delivery.</p>
<p><strong>A word or two on security.</strong></p>
<p>When doing cross server backup transfers, you must always make sure you know your security priorities. In my case I trust the backup server far more than the live servers. This is often how the case should be in my opinion. The backup servers are exposed to no one but the live servers and the developers. and the live servers are exposed to the whole world. Thus, the more likely first target of an attack would be the live servers. If the backup servers trust the live servers, and the live servers are compromised, the backup server will be compromised as well. This is why we build the backup scripts on the backup server and make them fetch the data from the live servers, rather than having the live servers push the data to the backup server.</p>
<p>The backup scripts are in our case built in php, so all developers at this  company can understand them. I would rather have built them in straight bash or perhaps python, but the advantage of more people being able to understand all code is far greater than having used &#8220;that cool programming language&#8221;. Of course the php executes complex shell commands to do most of the actual work, but the flow of the program is entirely php.</p>
<p><strong>So, how do you set all this up?</strong></p>
<p>The way to set up these kind of scripts are with ssh certificates, crontab and some basic php code.</p>
<p>First you need to set up a user on the live servers who will have only the privileges of reading the files/databases which needs to be backed up. I&#8217;m calling this user &#8216;backup&#8217; for easy reference.<br />
the adduser command is slightly different in many distros, so read up on it if you are unsure.</p>
<blockquote><p>man adduser</p></blockquote>
<p>Secondly you need to give the backup user on your live server the public key of the backup user on your backup server. So log on to your backup server as your backup user and type:</p>
<blockquote><p>ssh-keygen -t rsa</p></blockquote>
<p>a file &#8220;id_rsa.pub&#8221; should be generated in the .ssh directory in your home directory (~/.ssh/id_rsa.pub). This file contains one(1) line and this line is this user at this machines public key. It identifies this user at this machine. What you need to do now is to transfer this line into the live servers&#8217; authorized keys file. (~/.ssh/authorized_keys). This file may not even exist on the live servers, but if it does, make sure only to add your public key line to the end of this file. Do not overwrite. The magical unix command for doing this would be:</p>
<blockquote><p>cat ~/.ssh/id_rsa.pub &#124; ssh backup@your.liveserver &#8220;cat &#62;&#62; ~/.ssh/authorized_keys&#8221;</p></blockquote>
<p>of course, you should double check these kind of things manually and not rely on a copy-pasted command from blogs like mine. The command above does give you a hint on how the backups are transferred though.<br />
After you have put the backup user of the backup servers public key into the authorized keys file of the backup user on the live server, you should now be able to log in from the backup server as the backup user on the live server as the backup user, without being prompted for a password. If this is not the case, you&#8217;ve done something wrong. Start from the beginning.</p>
<p>So, now we need to start writing the actual script which controls the flow of the backup process. I will now write an explanation which can be applied into any kind of programming language.</p>
<p>First thing we need to do is to get the information on what databases we need to back up from the server. We do this with an easy shell command executed from within the script, and then parsing the output it gives us. Why do we not use a local mysql client implementation to query the database directly and get a mysql resultset? Simple. We do not want to expose the live mysql to the outside world. So what do is we issue the following command in a shell controlled by the script (so we can get the output into our code and use it):</p>
<blockquote><p>ssh backup@your.liveserver mysqlshow</p></blockquote>
<p>This will initiate a new ssh connection to your live server, and the command mysqlshow is sent over that connection, just as if you would have logged in and done it yourself. All output from mysql will be returned and will end up in your script.<br />
Once you have gotten this down you will have to parse what mysql throws at you. This should be a no brainer. I use this regular expression /[\w]+/ because all we really need to do is remove all spaces and pipes. Of course, this regular expression must match all your databases you need to backup. Maybe you only have one database to back up, in which case, you do not need to do this step really.</p>
<p>Next thing in the script is to, for each database we want to backup, get the dump from the database. But how do we do this without actually writing everything to disk as dump files? Easy. This command may seem complex, but I will walk you trough it step by step:</p>
<blockquote><p>ssh backup@your.liveserver &#8220;mysqldump databasename &#124; gzip -c&#8221; &#62; /your_backup_location/databasename_date.mysqldump.gz</p></blockquote>
<p>ok. this may look scary for some of you. If you are not familiar with the mysqldump command, what it does is it outputs in plaintext a full recreation script for the database in question. So we initiate an ssh connection and tell the server to start outputting the whole database. Then we take all which it outputs and hand it over to gzip, which zips the output and with the -c parameter it just passes the zipped output on. All of this ends up on your side of the ssh connection, where you in turn tell it to go into the file /your_backup_location/databasename_date.mysqldump.gz<br />
All data is zipped and done when it gets to your side of the connection.<br />
Restoring from this file is also easy. The following command can be used for that:</p>
<blockquote><p>cat /your_backup_location/databasename_date.mysqldump.gz &#124; ssh backup@your.liveserver &#8220;gunzip -c &#124; mysql databasename&#8221;</p></blockquote>
<p>So, having the script done we need to put this into a crontab on the backup server. Note that nothing except for the authorized_keys have been changed on the live server.<br />
crontab -e<br />
lets you edit your crontab. Here you need to write a crontab line. The crontab may be empty, in which case it is hard to remember which order everything should be put, so here is a reference:</p>
<blockquote><p>min     hour     day_of_month     month      day_of_week      command to be executed</p></blockquote>
<p>So if we want this script to be executed every evening at 23:42 except for on Sundays, because then the server does other heavy load things, we would write something like this:</p>
<blockquote><p>42      23         *           *            1-6        /path/to/script</p></blockquote>
<p>A better reference for crontab can be found here: <a title="Unix Crontab at Adminschoice" href="http://www.adminschoice.com/docs/crontab.htm#Crontab%20file" target="_blank">http://www.adminschoice.com/docs/crontab.htm#Crontab%20file</a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SQL SERVER – Queries Waiting for Memory Allocation to Execute « Journey to SQL Authority with Pinal Dave]]></title>
<link>http://enggtech.wordpress.com/2009/10/15/sql-server-%e2%80%93-queries-waiting-for-memory-allocation-to-execute-%c2%ab-journey-to-sql-authority-with-pinal-dave/</link>
<pubDate>Thu, 15 Oct 2009 14:38:58 +0000</pubDate>
<dc:creator>Visitor Blogs</dc:creator>
<guid>http://enggtech.wordpress.com/2009/10/15/sql-server-%e2%80%93-queries-waiting-for-memory-allocation-to-execute-%c2%ab-journey-to-sql-authority-with-pinal-dave/</guid>
<description><![CDATA[If ever you notice that your queries are running slow and think that memory is the culprit, do run t]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>If ever you notice that your queries are running slow and think that memory is the culprit, do run this query. If there are lots of rows in the result, please try to optimize the queries or increase the memory capacity.</p>
<p style="text-align:justify;"><code style="font-size:12px;"><span style="color:blue;">SELECT TEXT</span><span style="color:gray;">, </span><span style="color:black;">query_plan</span><span style="color:gray;">, </span><span style="color:black;">requested_memory_kb</span><span style="color:gray;">,<br />
</span><span style="color:black;">granted_memory_kb</span><span style="color:gray;">,</span><span style="color:black;">used_memory_kb</span><span style="color:gray;">, </span><span style="color:black;">wait_order<br />
</span><span style="color:blue;">FROM </span><span style="color:black;">sys.dm_exec_query_memory_grants MG<br />
</span><span style="color:gray;">CROSS </span><span style="color:black;">APPLY sys.dm_exec_sql_text</span><span style="color:gray;">(</span><span style="color:black;">sql_handle</span><span style="color:gray;">)<br />
CROSS </span><span style="color:black;">APPLY sys.dm_exec_query_plan</span><span style="color:gray;">(</span><span style="color:black;">MG.plan_handle</span><span style="color:gray;">)</span></code></p>
<p>via <a href="http://blog.sqlauthority.com/2009/10/09/sql-server-queries-waiting-for-memory-allocation-to-execute/">SQL SERVER – Queries Waiting for Memory Allocation to Execute « Journey to SQL Authority with Pinal Dave</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Microsoft Sharepoint: Traditional Data Protection Tiers]]></title>
<link>http://enggtech.wordpress.com/2009/10/09/microsoft-sharepoint-traditional-data-protection-tiers/</link>
<pubDate>Fri, 09 Oct 2009 14:36:02 +0000</pubDate>
<dc:creator>Visitor Blogs</dc:creator>
<guid>http://enggtech.wordpress.com/2009/10/09/microsoft-sharepoint-traditional-data-protection-tiers/</guid>
<description><![CDATA[]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="aligncenter size-full wp-image-651" title="Data-Protection-high-availability-options-tiers-sharepoint-DBA" src="http://enggtech.wordpress.com/files/2009/10/data-protection-high-availability-options-tiers-sharepoint-dba.gif" alt="Data-Protection-high-availability-options-tiers-sharepoint-DBA" width="500" height="276" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Створення нової теми в Magento]]></title>
<link>http://magentoua.wordpress.com/2009/10/07/new-theme-create/</link>
<pubDate>Wed, 07 Oct 2009 12:08:52 +0000</pubDate>
<dc:creator>Wolf</dc:creator>
<guid>http://magentoua.wordpress.com/2009/10/07/new-theme-create/</guid>
<description><![CDATA[Отже, ми проінсталювали Magento тепер можна створювати свою оригінальну тему. Першим кроком буде дуб]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Отже, ми <a href="http://magentoua.wordpress.com/2009/09/30/magento-install/">проінсталювали Magento</a> тепер можна створювати свою оригінальну тему.</p>
<p>Першим кроком буде дублювання структури папок дефолтової теми (default), так щоб ми завжди мали страховку на випадок якщо ми щось зіпсуємо. Структура дефолтової теми Magento показана знизу, саме ці дві папки потрібно здублювати. Дублювання в нашому випадку означає створення нової папки з тим самим вмістом що і оригінальна. Найпростішим методом є копіювання папки з оригінальної теми або дублювання за допомогою SSH чи подібного клієнта.</p>
<p>Базова структура папок:<br />
<em>/app/design/frontend/default/default/</em> &#8211; налаштування теми<br />
<em>/skin/frontend/default/default</em>/ &#8211; де знаходяться css і малюнки теми</p>
<p>Давайте назвемо новий проект new_package. Тоді структура папок буде виглядати так:<br />
<em> /app/design/frontend/default/default/</em> &#8211; дефолтова (оригінальна) тема<br />
<em> /app/design/frontend/new_package/default/</em> &#8211; наша нова, скопійована тема<br />
<em> /skin/frontend/default/default/</em> &#8211; де знаходяться css і малюнки теми<br />
<em> /skin/frontend/new_package/default/</em> &#8211; наша нова, папка з скінами</p>
<div id="attachment_95" class="wp-caption alignleft" style="width: 286px"><img class="size-full wp-image-95" title="layout-structure" src="http://magentoua.wordpress.com/files/2009/10/layout-structure1.png" alt="Базова структура папок" width="276" height="434" /><p class="wp-caption-text">Базова структура папок</p></div>
<div id="attachment_96" class="wp-caption alignleft" style="width: 284px"><img class="size-full wp-image-96 " title="layout-structure-new" src="http://magentoua.wordpress.com/files/2009/10/layout-structure-new.png" alt="Структура з новим пакаджем" width="274" height="479" /><p class="wp-caption-text">Структура з новим пакаджем</p></div>
<p><img class="alignnone size-full wp-image-98" title="blank" src="http://magentoua.wordpress.com/files/2009/10/blank.gif" alt="blank" width="500" height="1" /><br />
<!--more Детальніше…--><br />
Насправді це не є необхідно повністю копіювати структуру папок для нової теми. Тобто фактично нам потрібна структура тільки тих файлів які будуть модифікуватися, а усі файли, яких буде бракувати Magento буде брати з дефолтової теми.</p>
<p><strong>Як задати нову тему в панелі адміністратора.</strong><br />
Тепер після того як ми продублювали потрібні нам папки, ми повинні переключити тему в панелі адміністратора.</p>
<ol>
<li>Логуємося в панель адміністратора. Йдемо в <strong>System &#62; Configuration &#62; Design</strong> яке знаходиться в верхньому навігаційному меню.</li>
<li> В «Current package name» вводимо <strong>new_package</strong>, а в «Default» полі вводу набираємо: <strong>default</strong> (інші варіанти &#8211; modern, blank etc., в залежності яку тему ми будемо модифікувати).</li>
<li> Натискаємо кнопку «Save config» який зявляється в правому верхньому кутку.</li>
</ol>
<div id="attachment_100" class="wp-caption alignnone" style="width: 580px"><img class="size-full wp-image-100" title="new-design-set" src="http://magentoua.wordpress.com/files/2009/10/new-design-set.png" alt="Задаємо новий пакадж і тему" width="570" height="529" /><p class="wp-caption-text">Задаємо новий пакадж і тему</p></div>
<h4><strong>Додаємо додаткові таблиці стилів та бібліотеки Javascript.</strong></h4>
<p>Будь-які зовнішні css файли або javascript/ajax бібліотеки які ми хочемо включити в наш новий проект, мають бути скопійовані в відповідні папки.</p>
<p><strong>Таблиці стилів.</strong> Скопіюйте файли в папку <em>/skin/frontend/default/new_theme/css/</em>. Не забудьте також скопіювати css файли, які імпортуються в ваших таблицях стилів.<br />
А підключити ми можемо їх таким чином:<br />
1. додаємо <code>@<span style="color:#3366ff;">import url('new_styles.css');</span></code> до одного з вже існуючих css файлів (наприклад reset.css)<br />
2. Відкриваємо файл <em>/skin/frontend/default/new_theme/layout/page.xml <span style="font-style:normal;">там шукаємо <code><span style="color:#0000ff;">&#60;reference</span> <span style="color:#ff0000;">name<span style="color:#800080;">="</span></span><span style="color:#800080;">head</span><span style="color:#800080;">"</span><span style="color:#0000ff;">&#62;</span></code> і підключаємо наш css файл за допомогою методу <strong>addCss</strong>:</span></em></p>
<blockquote><p><code><span style="color:#0000ff;">&#60;reference</span> <span style="color:#ff0000;">name<span style="color:#800080;">="</span></span><span style="color:#800080;">head</span><span style="color:#800080;">"</span><span style="color:#0000ff;">&#62;</span><br />
<span style="color:#0000ff;">&#60;action</span> <span style="color:#ff0000;">method<span style="color:#800080;">="</span></span><span style="color:#800080;">addCss</span><span style="color:#800080;">"</span><span style="color:#0000ff;">&#62;</span><span style="color:#0000ff;">&#60;link&#62;</span><span style="color:#000000;">new_styles.css</span><span style="color:#0000ff;">&#60;/link&#62;&#60;/action&#62;</span><br />
<span style="color:#0000ff;">&#60;/reference&#62;</span></code></p></blockquote>
<p>Незважаючи на значну легкість підключення додаткових таблиць стилів, я б рекомендував не зловживати ними, а просто редагувати вже існуючі стилі.</p>
<p><strong>Javascript / AJAX бібліотеки.</strong> Скорпіюйте файли в папку /js і підключіть потрібні за допомогою методу <strong>addJs:</strong></p>
<p>Відкриваємо файл /skin/frontend/default/new_theme/layout/page.xml (або будь-який інший потрібний нам xml файл, якщо ми використовуємо даний скріпт тільки на певній сторінці, а не по всьому сайті) <span style="font-style:normal;">там шукаємо <code><span style="color:#0000ff;">&#60;reference</span> <span style="color:#ff0000;">name<span style="color:#800080;">="</span></span><span style="color:#800080;">head</span><span style="color:#800080;">"</span><span style="color:#0000ff;">&#62;</span></code> і підключаємо наш js файл</span></p>
<blockquote><p><code><span style="font-style:normal;"><span style="color:#0000ff;">&#60;reference</span> <span style="color:#ff0000;">name<span style="color:#800080;">="</span></span><span style="color:#800080;">head</span><span style="color:#800080;">"</span><span style="color:#0000ff;">&#62;<br />
<span style="color:#0000ff;">&#60;action</span> <span style="color:#ff0000;">method<span style="color:#800080;">="addJs</span></span><span style="color:#800080;">"</span><span style="color:#0000ff;">&#62;</span><span style="color:#0000ff;">&#60;script&#62;</span><span style="color:#000000;">new_script.js</span><span style="color:#0000ff;">&#60;/script&#62;&#60;/action&#62;<br />
&#60;/reference&#62;</span></span></span></code></p></blockquote>
<p>Слід додатково уточнити, що ми додаємо тільки ось цей рядок <code><span style="color:#0000ff;">&#60;action</span> <span style="color:#ff0000;">method<span style="color:#800080;">="addJs</span></span><span style="color:#800080;">"</span><span style="color:#0000ff;">&#62;</span><span style="color:#0000ff;">&#60;script&#62;</span><span style="color:#000000;">new_script.js</span><span style="color:#0000ff;">&#60;/script&#62;&#60;/action&#62;</span></code> у вже існуючий <code><span style="color:#0000ff;">&#60;reference</span> <span style="color:#ff0000;">name<span style="color:#800080;">="</span></span><span style="color:#800080;">head</span><span style="color:#800080;">"</span><span style="color:#0000ff;">&#62;</span></code>, а не повністю копіюємо код, що розміщений вгорі<span style="color:#0000ff;">.</span></p>
<p>Успіхів Вам!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How Can I Profit from Resell Rights Products]]></title>
<link>http://thelistbuilderstips.wordpress.com/2009/10/07/how-can-i-profit-from-resell-rights-products/</link>
<pubDate>Wed, 07 Oct 2009 06:25:10 +0000</pubDate>
<dc:creator>jconway0424</dc:creator>
<guid>http://thelistbuilderstips.wordpress.com/2009/10/07/how-can-i-profit-from-resell-rights-products/</guid>
<description><![CDATA[There are many ways to profit from resell rights products. The first way, of course, is to simply re]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>There are many ways to profit from resell rights products. The first way, of course, is to simply resell the product. However, there are ways that you can realize even more profits. It just takes a little thought and creativity.</p>
<p>When you sell the product, have an additional product or products to sell as an upsell or backend product. For instance, sell the resell product at 39.95, then have an upsell, or a related product, that you offer either on your order page for an increased price, such as 49.95 or 59.95. Your upsell could even be a membership website, for which you would collect monthly membership fees from your customers.</p>
<p>You can also advertise a backend product on the thank you page. This is a product that is offered after the purchase of the original product is made, for a different price. Backend products can cost more than the original product, the same, or even less.</p>
<p>You can also profit more from your resell rights products by repackaging it, including more products, and raising the value of the package – which in turn raises the price.  If you have master resell rights of the product, which allows you to sell the resell rights as well, you can create a nice package of various related products and sell resell rights to that package as well.</p>
<p>You could even simply sell the product, or give it away if you are allowed to do so, in order to use a squeeze page to collect quality leads. A large list of quality leads opens many profitable doors. For instance, you could enter into joint venture deals to sell high ticket products to your list, or rent your list out to other companies for a fee.</p>
<p>However, before you start using various methods for increasing your profits with resell rights products, it is very important that you read your license agreement to be certain that you are not in violation of any of the terms.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Los usuarios de Yahoo! Mail en peligro]]></title>
<link>http://elbitbang.wordpress.com/2009/09/21/los-usuarios-de-yahoo-mail-en-peligro/</link>
<pubDate>Mon, 21 Sep 2009 13:09:55 +0000</pubDate>
<dc:creator>elbitbang</dc:creator>
<guid>http://elbitbang.wordpress.com/2009/09/21/los-usuarios-de-yahoo-mail-en-peligro/</guid>
<description><![CDATA[Los usuarios de Yahoo! Mail se están viendo afectados por un fallo de dos años de antigüedad que los]]></description>
<content:encoded><![CDATA[Los usuarios de Yahoo! Mail se están viendo afectados por un fallo de dos años de antigüedad que los]]></content:encoded>
</item>
<item>
<title><![CDATA[GOOGLE WOULD NEVER BUY BRIGHTCOVE :: THINK YAHOO! MAVEN :: DUH]]></title>
<link>http://nicomclane.com/2009/09/17/google-would-never-buy-brightcove-think-yahoo-maven-duh/</link>
<pubDate>Thu, 17 Sep 2009 15:45:01 +0000</pubDate>
<dc:creator>Nico McLane</dc:creator>
<guid>http://nicomclane.com/2009/09/17/google-would-never-buy-brightcove-think-yahoo-maven-duh/</guid>
<description><![CDATA[It was a wonderful frenzy of speculation and doubt when a simple leak on Twitter caused an entire in]]></description>
<content:encoded><![CDATA[It was a wonderful frenzy of speculation and doubt when a simple leak on Twitter caused an entire in]]></content:encoded>
</item>
<item>
<title><![CDATA[Defining The Backend]]></title>
<link>http://weekendwarriorco.wordpress.com/2009/09/14/defining-the-backend/</link>
<pubDate>Mon, 14 Sep 2009 22:59:10 +0000</pubDate>
<dc:creator>Claire Fisher</dc:creator>
<guid>http://weekendwarriorco.wordpress.com/2009/09/14/defining-the-backend/</guid>
<description><![CDATA[As a digital marketer, I am constantly faced with the challenge of explaining what the hell that eve]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>As a digital marketer, I am constantly faced with the challenge of explaining what the hell that even means. It’s like, people’s eyes get huge the moment you utter the word Digital or some three-letter acronym (TLA) associated with the trade. Sometimes, when I meet a fellow digital person, I get so excited speaking my native tongue, that I forget all about how completely ridiculous it sounds. “Well, you could build a custom CMS, but WordPress might be even better because of its high organic SEO.” Ateewhattee?</p>
<p>That is the inherent challenge of being anything technical. Remember the IT guy from SNL? That old solution of turn-off-your-computer doesn’t solve anything on the world of the interwebs. I have finally faced the ultimate challenge in being a digital. Explaining TLAs doesn’t even hold a candle to trying to redefine E-Marketing with a buzz-word heavy term like Lead Nurturing or User Experience. Not to mention introducing a new, fairly complex software like <a href="http://eloqua.blogspot.com/" target="_blank">Eloqua</a>.</p>
<p>It’s not Eloqua and what it does; lead nurturing and why it’s important; email marketing and why it’s (arguably) ineffective; or how it all ties together, that’s the challenge. It’s coming up with a high enough-level explanation of all of these in a visual way.</p>
<p>Last year during budgets I found myself inventing new terms to explain digital terms over and over. Not because I’m a bad communicator; I think it was because the message wasn’t memorable enough to executives all with vastly diverse backgrounds and their own set of buzz words to keep straight.<br />
I’m a DigiBaby. My memory has always been immensely integrated with computers: instant messenger, text, Napster and Facebook (Myspace, Friendster, whatever). There’s no doubt that my brain functions at an entirely different level than the executives I work with. So naturally, when they see a line item that says “Social Media” a glazed look of WTF falls over and a continuous cycle of explaining occurs. “It’s not just Facebook, it’s a continuous conversation with your consumers online.”</p>
<p>So when the challenge arose to take a deeper look at how digital marketing integrates and affects every aspect of overall marketing, I in turn, felt that sense of WTF.</p>
<p>That’s when the white papers began, (they have pretty graphs). I worked with <a href="http://effectiveui.com/" target="_blank">Effective UI</a> (new website!) at the beginning of this gradual slope, who I regard as having the toughest job of any of us in the digital marketing space. They have to explain what UI is after someone sees it in their name. What a challenge to overcome! And then you get down to the core of their mission, the User Experience &#8212; which isn’t even abbreviated as such &#8212; so have fun with that one. BTW, I’ve stopped using the acronym UX in general because of the complete disconnect I see when I say or especially write it. I think people think it’s a computer processor or something, like the way people react to letters at the end of a software version. CS4? WTF!</p>
<p>The sequence of planting the seed with white papers went as follows:<br />
I. White paper from Eloqua explaining the pipeline, how it’s changed, and how Eloqua + <a href="http://salesforce.com" target="_blank">Salesforce</a> “close the loop”. Spent about a month using the term “close the loop” until it became an internal term. Success.<br />
II. White paper explaining UX (User Experience). Tried to integrate this term internally, but it never stuck. It has since morphed into the Consumer Experience with Our Brand and finally into a module called the Concierge. Not bad, because the end result is the same. The hardest part is convincing that we need some research to support that experience. Overall, I’d call this a Success.<br />
III. Strategy meeting bringing up whitepaper No. 1. It ended with, “Why can’t you do this manually?” Fail.<br />
IV. Flow chart in Excel. Breaking out each touch point of communication in an excel document. This got the UX look.<br />
V. Flow chart in Word. I added colors this time, so you could see how the leads (type of prospects, etc.) would go through different types of communication paths as they experience the sales cycle. Again, this didn’t resonate with the team. I think there were too many unknowns, such as the bubble that says “Dramatic Re-engagement with the Brand.” I think this also failed because there is an entire front end component to this that isn’t represented, which in turn distracted my highly visual team.<br />
VI. White paper on a progressive form. This helped a little with saying that a form doesn’t have to be a form; it could a mechanism that extracts information on the user based off of their behavior with the online environment. We got a little closer with this concept, because at the end of the day, it sounds pretty neat.<br />
VII. Powerpoint Presentation explaining what each type of prospect is and how we should communicate differently with them. This exercise actually might have brought us back about three steps. I think defining the different prospects may need to occur after you define the optimal end user experience.<br />
VIII. Six months go by and the name Eloqua has been morphed into this term representing an end-all solution that will just feed personalized and relevant information to our users – automatically. I needed to change that thinking because Eloqua is ultimately just code and a fancy user interface. So I started calling it the “capture mechanism” – that magical piece of back end technology that will ensure that no lead falls through the cracks, ultimately “closing the loop”. Bam. It finally stuck, and not only did it stick it moved to the center of the bubble diagram, which held all of the other marketing objectives together. Big-time success. But still, this made it all too intangible. What does Capture really mean? It’s too spatial. And thus the ultimate digital marketing conundrum – how to you show someone a system that doesn’t tangibly exist outside of code? How do you show that there’s a digital component to even things that have zero online presence?<br />
IX. This is how it was done. Matt Fajohn, Digital Strategist from <a href="http://www.fl-2.com" target="_blank">FL-2</a>, and I physically taped a wireframe to the conference table and walked everyone through the steps of how it would play out in the world.<br />
To be honest, I don’t know if it achieved the ultimate goal of explaining the complexity of the integrated system; what it did do was show how something offline eventually will get put back online. My team could finally see what I’ve been talking about all this time. Success.</p>

<p>Digital marketing and all of its TLAs and buzzwords needs to get over itself. It is such an enormous part of all of our marketing efforts that it really needs to stop singling itself out. Digital marketing is no longer just a website; it’s not an email campaign; it’s not a database; it’s not a user interface; it’s not mobile web or an application or even software. It is ultimately the way a user interacts with a brand. Digital is supposed to make everyone’s life easier and disseminate free information for all. It’s about convenience, knowing that you can find what you want the moment you think about it. So if a brand is investing heavily in their digital presence, they better make sure that the end experience, no matter how complicated the backend is, is flawless, simple and completely integrated.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Weekly Wrap Up]]></title>
<link>http://tommybd.wordpress.com/2009/09/13/weekly-wrap-up/</link>
<pubDate>Sun, 13 Sep 2009 05:12:28 +0000</pubDate>
<dc:creator>tommybdesign</dc:creator>
<guid>http://tommybd.wordpress.com/2009/09/13/weekly-wrap-up/</guid>
<description><![CDATA[Hello again! It&#8217;s been another busy week of developing the portfolio site, as well as a pletho]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Hello again! It&#8217;s been another busy week of developing the portfolio site, as well as a plethora of other things. I was able to see the new &#8216;The Office&#8217; season over last weekend before it was officially released (my fiancée working for Blockbuster has its perks.) Season 5 of &#8216;The Office&#8217; is hilarious (if that&#8217;s your brand of humor, I suppose) and full of craziness that has yet to be tapped in previous seasons. The character development is still going strong, too, which is amazing how the writers were able to morph the characters so subtly over only a few seasons to the personalities they are now. Anyway, it&#8217;s worth the watch if you&#8217;re looking to laugh. A lot.</p>
<p>My web host&#8217;s tech support is failing me by not having any sort of explanation as to why I can&#8217;t move new folders into my ftp space via Dreamweaver, and there seems to be no end (of useless solutions) in sight. I am probably going to shop for a new host when the main site is ready to launch, unless a tech support version of Dr. Phil can repair my local host to ftp relationship; It&#8217;s too painful to talk about.</p>
<p>There is a new technology that is being integrated as I write this called RFID, and  you can read in detail about it<a title="RFID" href="http://www.technovelgy.com/ct/Technology-Article.asp?ArtNum=1" target="_blank"> here</a>. RFID is a small identification chip that has a small antenna that can communicate with readers planted throughout the world to locate any specific consumer good it may happen to be nestled in. Apparently they are being sewn into seams of clothes, in between labels, and various other sneaky-as-a-fox ways of tracking their products via RFID. I am on the fence about this one ethically, because it seems like a great way to target your market demographics with pinpoint accuracy, but in the same respect; that seems like corporate cheating, does it not? I imagine fishing with a fish radar, which normally is ok, but adding a dragnet and a shotgun to the mix, maybe a wooden barrel, so you&#8217;ll miss less.  On another hand, imagine being able to have that power in your own hand; you could inventory your pantry and refrigerator with ease, not to mention your closet, hell, your entire house. Imagine the decrease in insurance fraud!</p>
<p>As far as how RFID can be integrated with design, well, I imagine that would depend on how well (or not) the technology is accepted.  I can see social networking sites making some sort of gadget that could tweet what you bought/wore/ate/etc every time you passed a reader. Let me know what you think about RFID!</p>
<p>Finally, I am learning more and more about backend web design, as it seems like a prerequisute for almost any serious designer in the job market today. I&#8217;m not complaining; now I can integrate my design WITH function. Multimedia design is larger than I thought, and I&#8217;m finding out more every day that knowledge of backend developing is proving to be a valuable asset, especially when trying to get your own site up and running (which has an ETA of about a week!)</p>
<p>Until then!</p>
<p>Cheers,</p>
<p>Tommy</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[GTKx, GIMP toolkit extentions.]]></title>
<link>http://usefull.wordpress.com/2009/09/09/gtkx-gimp-toolkit-extentions/</link>
<pubDate>Wed, 09 Sep 2009 17:15:05 +0000</pubDate>
<dc:creator>Jonas Erlandsson</dc:creator>
<guid>http://usefull.wordpress.com/2009/09/09/gtkx-gimp-toolkit-extentions/</guid>
<description><![CDATA[So, I have been working on a idea for my masters thesis. I know in what area I&#8217;d like to work ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>So, I have been working on a idea for my masters thesis. I know in what area I&#8217;d like to work and what I think the next step in that area is, lets see if you agree&#8230;</p>
<p>I&#8217;m a sucker for usability. It might be the single most important feature in modern computing. Even more so than fancy algorithms and raw computing power. Both of which are wasted if impossible to use.</p>
<h2>Background</h2>
<p>For a while now I have looked at how games handle user interaction and particularly the recent wave of plugin based user interfaces, like in world of warcraft. My studies has shown, that given this option, users tend to reconfigure their user interface to suit them.</p>
<p>I put forth that fully configurable GUIs give better productivity. To prove this I use two pieces of information. The first one is that users use everyday applications to solve very different tasks. Take open office and the applications contained in that suite. I use them mainly for school right now. Writing reports and putting together presentations. While I uses most of the individual applications in the suit I don&#8217;t use all of the tools they provide and so if I could configure them away I&#8217;d get a cleaner interface that would make it easier for me to find the function I&#8217;m after and hence make me work faster. On the other hand someone in economy, for example, would not use the spreadsheet application simply to stuff column data into diagrams. They would need more of the advanced functionality that I&#8217;d configure away. It is easy to see that different user groups have different needs with regard to the same piece of software.</p>
<p>The other piece would be the many reports on how good user interfaces improve productivity, I list some examples:</p>
<ol>
<li>Cardinali, R., &#8220;Productivity Improvements through the Use of Graphic User Interfaces&#8221;, Industrial Management &#38; Data Systems, Vol. 94 No. 4, 1994, pp. 3-7.</li>
<li>Hayes, F. and Baran, N., “A Guide to GUIs”, BYTE, July 1989, pp. 250-57.</li>
<li> Temple, Barker &#38; Sloane, Inc., The Benefits of the Graphical User Interface: A Report on New Primary Research, Spring, 1990.</li>
<li>Block, A.V., “Automation with a Graphic Interface”, Personal Computing, October 1988, pp. 132-4.</li>
<li>Lockwood, R., “Winning the Interface Battle”, Personal Computing, October 1987, pp. 39-41.</li>
<li>Bartimo, J., “The New Human Interface Comes of Age”, Personal Computing, January 1986, pp. 58-65.</li>
</ol>
<p>So we know that good interfaces improve productivity and we can also prove, by example right now, that no one interface is best for every user. We need to give the user the possibility to configure their own environment to be able to achieve optimal productivity. There is also the feeling of control and ownership that would come with this. Feeling in control and &#8220;welcome&#8221; in the system is a great help to improve productivity. Feeling good makes you work better, simple as that.</p>
<p>So what am I proposing? Simply that we take the improvements thought up by game designers back to the desktop. So some form of plugin system to change how our computers display and manipulate information to suit what the individual user wants. And ideally we would like to be able to do this without writing a completely new platform.</p>
<p>Since I exclusively use Linux as an operating system on all of my computers since a few years back I will start from there. My distribution of choice is Ubuntu that uses gnome and hence GTK. So can we extend GTK to handle this new paradigm of computing? I think we can. Sure it will require a lot of work and I wouldn&#8217;t want to call this a formal spec. in any way, but it&#8217;s a starting point.</p>
<h2>Concepts</h2>
<p>Lets introduce some concepts to help the discussion on. I will be referring to the new components needed as concepts and realizations. Let&#8217;s talk about the concepts first.</p>
<p>I&#8217;ll explain with an example, let&#8217;s look at Gnome&#8217;s default file manager, Nautilus. There have been some recent work to get Nautilus to use the information from tracker to tag and search files. The different approaches that have been tried are all fine but basically no matter which finally gets accepted into the code base, we will be stuck with that way of doing it. What if we didn&#8217;t have to?</p>
<p>The main view in Nautilus is, like most file managers, the file view. Normally we can choose different views, like compact, list or icon in Nautilus. Let&#8217;s abstract it a bit shall we. The file view is just a list. There is some backing store holding the information read from the file system and the list is just one way to display a set of that information. The file view &#8220;chooses&#8221; what information to display and how to display it. If we make the list a concept, the concept of a list, we will have far more freedom in how we interact with it.</p>
<p>The list concept will have to contain of an interface to the backing store. The file list concept would be an instance of the list concept with some added functionality to handle the specific needs of files. It might for example contain some standard columns like name, size, dates and full path. Certainly it would be a mistake to <em>only</em> allow for these columns. But requiring some standard columns to be exported just makes sense.</p>
<p>So now we have a concept of a file list containing a backing store and an API to that store. But nothing is showing. This is where the other half of the puzzle comes in, realizations. Lets realize the file list.</p>
<p>I&#8217;d like to have columns of files as hight as the window and extending right as needed. Each file in it&#8217;s own box a thumbnail in the top left corner, vital information to the right of that and other stuff underneath. This would mean that the individual entries in the column will not be guaranteed to be of uniform height. So to realize this we need some high level construct to format columns of stuff and then we need the formating of each individual item in the list.</p>
<p>At this point we could separate the two into different realizations, one for the column formating and another for the items. These can be saved as external files, XML would be a logical way to go. Either that or we define the two together in one file. The point of this is that we can use these realizations to be our compact, list, icon views in the file Manager. We can choose what information to show from the backing store and we can format it as we like. Even have different realizations for different folders or tasks.</p>
<p>How useful is this then? Not very. It&#8217;s limited in scope and most people wouldn&#8217;t bother with it and just get by with what we already have. We can make it a lot more useful by making the realizations be like themes for the file view. We can add new ones and if you don&#8217;t feel like getting your hands dirty just head on over to gnome looks or any other site for themes and download someone else&#8217;s. But we can use this metaphor for <em>everything</em>, every element in the GUI can become a concept. Dialog boxes, menus, tool bars, tree views &#8230;</p>
<p>If every component is a concept using a realization to display it everything in the system becomes instantly customizable! So adding the different concepts to the freedesktop.org path system you can assign realizations to any component type you&#8217;d like; org.freedesktop.gnome.menu, or any programs you&#8217;d like; org.freedesktop.nautilus.mainmenu &#8230; The interaction with the desktop would be drag and drop. Drag a new file view realization on to Nautilus and drop it, the system will then ask you if you&#8217;d like to replace the current, add to option or replace system wide.</p>
<p>It&#8217;s simple to use, it&#8217;s portable and shareable and it greatly extends the ability for users to customize their work flow.</p>
<p>This is my idea and it&#8217;s, admittedly very rough, tech spec. Let&#8217;s talk about it now and see what you think ;o)</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
