<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jefim Borissov &#187; Assorted</title>
	<atom:link href="http://jefim.eu/blog/category/assorted/feed/" rel="self" type="application/rss+xml" />
	<link>http://jefim.eu/blog</link>
	<description>Житие мое</description>
	<lastBuildDate>Fri, 05 Aug 2011 22:28:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Loading Assebmlies with references</title>
		<link>http://jefim.eu/blog/2010/03/loading-assebmlies-with-references/</link>
		<comments>http://jefim.eu/blog/2010/03/loading-assebmlies-with-references/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 13:54:56 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/2010/03/loading-assebmlies-with-references/</guid>
		<description><![CDATA[Recently I encountered this thing again and had to look for an answer for quite some time (again ). Just an example of the assembly structure I wanted to have: Main.exe lib (folder) Shared.dll (used by Main.exe, Plugin1.dll and Plugin2.dll) Plugin1.dll Plugin2.dll The answer – open up your app.config from Main.exe project and add the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I encountered this thing again and had to look for an answer for quite some time (again <img src='http://jefim.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>Just an example of the assembly structure I wanted to have:</p>
<ul>
<li>Main.exe
<ul>
<li><strong>lib </strong>(folder)
<ul>
<li>Shared.dll (used by Main.exe, Plugin1.dll and Plugin2.dll)</li>
<li>Plugin1.dll</li>
<li>Plugin2.dll</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>The answer – open up your app.config from Main.exe project and add the following (under &lt;configuration&gt; tag):</p>
<pre class="xml" name="code">&lt;runtime&gt;
  &lt;assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"&gt;
    &lt;probing privatePath="lib"/&gt;
  &lt;/assemblyBinding&gt;
&lt;/runtime&gt;</pre>
<p>That is it. Now it will also search for referenced libraries in the <strong>lib</strong> folder <img src='http://jefim.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2010/03/loading-assebmlies-with-references/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enough ClearType! Go GDI++!</title>
		<link>http://jefim.eu/blog/2009/11/enough-cleartype-go-gdi/</link>
		<comments>http://jefim.eu/blog/2009/11/enough-cleartype-go-gdi/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 16:46:40 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[smoothing]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=273</guid>
		<description><![CDATA[Did you ever want to replace the ugly ClearType with something better? I know I have. And my prayers have been answered - meet GDI++ - the solution to all your font problems. Enough words, see it in action (this is Verdana, btw): Well, I think that the difference is pretty obvious. So if you [...]]]></description>
			<content:encoded><![CDATA[<p>Did you ever want to replace the ugly ClearType with something better? I know I have. And my prayers have been answered - meet <em>GDI++</em> - the solution to all your font problems. Enough words, see it in action (this is Verdana, btw):</p>
<div id="attachment_274" class="wp-caption aligncenter" style="width: 610px"><a href="http://jefim.eu/blog/wp-content/uploads/2009/11/cleartype.png"><img class="size-full wp-image-274" title="ClearType vs. GDI++" src="http://jefim.eu/blog/wp-content/uploads/2009/11/cleartype.png" alt="ClearType vs. GDI++" width="600" height="92" /></a><p class="wp-caption-text">ClearType vs. GDI++</p></div>
<p style="text-align: left;">Well, I think that the difference is pretty obvious. So if you are ready to start you new font life - go <a href="http://free.flop.jp/gdi++/upload.php" target="_blank">here</a> and download the file named <em>gdi0870.zip (404kb)</em>. Extract anywhere you want and launch <em>gditray.exe</em>. Choose 'enable' from the context menu of the tray icon and voila - your font are rendered without the help of that ugly, ugly ClearType.</p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/11/enough-cleartype-go-gdi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>RoR: Session / login management</title>
		<link>http://jefim.eu/blog/2009/11/ror-session-login-management/</link>
		<comments>http://jefim.eu/blog/2009/11/ror-session-login-management/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:01:32 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[Ruby (on Rails)]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=269</guid>
		<description><![CDATA[This is basic yet not obvious in Ruby on Rails - I've been looking for info on this for a long time (a long time for this problem is anything more than 5 minutes). So, this is the way you make sessions/logins work in ruby: class SessionController < ApplicationController def login @session['logged'] = true end [...]]]></description>
			<content:encoded><![CDATA[<p>This is basic yet not obvious in Ruby on Rails - I've been looking for info on this for a long time (a long time for this problem is anything more than 5 minutes).</p>
<p>So, this is the way you make sessions/logins work in ruby:</p>
<pre name="code" class="ruby">
class SessionController < ApplicationController
  def login
    @session['logged'] = true
  end
  def logout
    @session['logged'] = false
  end
end
</pre>
<p>The @session variable is available anywhere. Use it anywhere. For example you could come up with the following view showing whether the user is logged in:</p>
<pre name="code" class="ruby">
&lt;p&gt;Logged in: &lt;%= @session['logged'] %&gt; &lt;/p&gt;
</pre>
<p>And that is it. Anything beyond that (like adding a User model etc.) is out of this post's target. There are many articles on those things yet no clear explanation where to find and how to init a session. As you can see - the answer is clear - you don't <img src='http://jefim.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <strong>The session is already there. Just start using it.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/11/ror-session-login-management/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Komodo Edit tools &#8211; add style.css and reset.css</title>
		<link>http://jefim.eu/blog/2009/10/komodo-edit-tool-style/</link>
		<comments>http://jefim.eu/blog/2009/10/komodo-edit-tool-style/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 05:28:49 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web dev]]></category>
		<category><![CDATA[komodo]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[toolbox]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=225</guid>
		<description><![CDATA[Good morning, planet. Today I am going to share a very useful script I am using in Komodo Edit (it automates adding style.css). It is very (!) simple yet very effective for me and, probably for others who are doing a lot of HTML files and face a problem of repetitive actions. This thing works [...]]]></description>
			<content:encoded><![CDATA[<p>Good morning, planet. Today I am going to share a very useful script I am using in Komodo Edit (it automates adding style.css). It is very (!) simple yet very effective for me and, probably for others who are doing a lot of HTML files and face a problem of repetitive actions.<br />
This thing works as follows (the use case):</p>
<ol>
<li> You create a new HTML file in komodo and save it in some directory.</li>
<li> You double-click the script in the Komodo Edit toolbox.</li>
<li> The script adds the following folders/files to the project (paths relative to the file currently in editor!)
<ul>
<li>css/</li>
<li>css/style.css</li>
<li>css/reset.css</li>
</ul>
</li>
<li>Also the file adds the following HTML code at the cursor in current opened file:</li>
</ol>
<pre name="code" class="html">
<link rel="stylesheet" type="text/css" href="css/reset.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
</pre>
<p>Voila. The needed action is done.<br />
<span id="more-225"></span></p>
<h3>Now, the snippet code:</h3>
<pre name="code" class="python">
import sys
import shutil
import os
import os.path

# argv[1] - dir of cur project (%D)
# argv[2] - current file name (%F)
if os.path.exists(sys.argv[1]+'/css/') != True:
    os.mkdir(sys.argv[1]+'/css/')

# NB! Edit the paths to style.css and reset.css
# (these will be copied into your project)!
shutil.copy('C:/Work/__distributives/css/reset.css',sys.argv[1]+'/css/')
shutil.copy('C:/Work/__distributives/css/style.css',sys.argv[1]+'/css/')

print '
<link rel="stylesheet" type="text/css" href="css/reset.css" />'
print '
<link rel="stylesheet" type="text/css" href="css/style.css" />'
</pre>
<p>Save this as a file somewhere (e.g. C:/Work/__scripts/add_style_css.py).<br />
Open up Komodo Edit and add it to your toolbox (<em>Toolbox->Add->New command...</em>) with the following settings:</p>
<ul>
<li><strong>Command:</strong> python add_style_css.py %D %F</li>
<li><strong>Insert output:</strong> check</li>
<li><strong>Start in:</strong> whatever the script resides in (e.g. C:/Work/__scripts)</li>
<li>anything else should bet left as it is</li>
</ul>
<p>Enjoy</p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/10/komodo-edit-tool-style/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How-To: Create a horizontal menu</title>
		<link>http://jefim.eu/blog/2009/10/how-to-create-a-horizontal-menu/</link>
		<comments>http://jefim.eu/blog/2009/10/how-to-create-a-horizontal-menu/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 08:01:11 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Web dev]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=111</guid>
		<description><![CDATA[This is a tutorial on how to create a fully costomizable horizontal menu. Why another menu how-to? Well, mostly because there are situations when there are no suitable google results (based on my experience) and you have to come up with something yourself. These are the features we will try to get into our menu: [...]]]></description>
			<content:encoded><![CDATA[<p>This is a tutorial on how to create a fully costomizable horizontal menu. Why another menu how-to? Well, mostly because there are situations when there are no suitable google results (based on my experience) and you have to come up with something yourself.</p>
<p>These are the features we will try to get into our menu:</p>
<ol>
<li>It will be horizontal</li>
<li>It will have splitters (made with images)</li>
<li>It will have active class for rollover / selected item (background change)</li>
<li>Menu items will be of different size</li>
</ol>
<p><strong>This code works for Internet Explorer 6+, Firefox 2.0+, Opera 9+, Safari (at least on Safari 4 - tested on Windows version of it).</strong></p>
<p>Here is a mockup that we have:</p>
<div id="attachment_114" class="wp-caption aligncenter" style="width: 312px"><img class="size-full wp-image-114 " title="menu" src="http://jefim.eu/blog/wp-content/uploads/2009/10/menu.png" alt="Menu mockup" width="302" height="33" /><p class="wp-caption-text">Menu mockup</p></div>
<p><a href="http://jefim.eu/examples/menu1/menu.html" target="_blank"><strong><span style="color: #ff0000;">NB! If you just want to see how to do it - go here for the demo / full code.</span></strong></a><br />
<span id="more-111"></span><br />
Ok, first, the HTML you need for this thing to happen:</p>
<pre name="code" class="html">&lt;ul id="menu"&gt;
 &lt;li&gt;&lt;a href="#"&gt;Menu item&lt;/a&gt;&lt;/li&gt;
 &lt;li class="active"&gt;&lt;a href="#"&gt;Longer item&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#"&gt;Short&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#"&gt;Finally&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>This is the needed thing. One more thing to add - if you lack one element for background (if &lt;li&gt; and &lt;a&gt; are already having backgrounds and you need another one) - just wrap &lt;a&gt; with a &lt;span&gt;.</p>
<p>The CSS code for the menu:</p>
<pre name="code" class="css">html, body {
    font-family: "Trebuchet MS";
    font-size: 16px;
}
a       { text-decoration: none; color: #ffffff; }
a:hover { text-decoration: underline; }

#menu {
    margin:0;
    padding:0 12px;
    list-style-type: none;

    background: url(menu-bg.png) no-repeat;
    height:33px;
}
#menu li {
    float: left;
    display: block;
    margin-top:1px;
    background: url(menu-item-bg.png) no-repeat top right;
}
#menu li a {
    display: block;
    padding:4px 12px 4px 10px;
}
#menu li.active {
    background: url(menu-item-active-bg.png) no-repeat;
}
#menu li.active a {
    background:
        url(menu-item-active-bg-right.png)
        no-repeat top right;
}</pre>
<p>Some explanations: paddings and heights are just to make this thing look better a bit. The most important things are float, display and background aligns! If you want to create the menu yourself - just change the images and change the paddings / heights to correspond.</p>
<p>Now, the list images we will have to use:</p>
<div id="attachment_117" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-117" title="menu-bg" src="http://jefim.eu/blog/wp-content/uploads/2009/10/menu-bg.png" alt="Menu background" width="600" height="33" /><p class="wp-caption-text">Menu background</p></div>
<div id="attachment_120" class="wp-caption aligncenter" style="width: 310px"><img class="size-full wp-image-120" title="menu-item-bg" src="http://jefim.eu/blog/wp-content/uploads/2009/10/menu-item-bg.png" alt="Menu item background" width="300" height="30" /><p class="wp-caption-text">Menu item background</p></div>
<div id="attachment_118" class="wp-caption aligncenter" style="width: 310px"><img class="size-full wp-image-118" title="menu-item-active-bg" src="http://jefim.eu/blog/wp-content/uploads/2009/10/menu-item-active-bg.png" alt="Active menu item background" width="300" height="30" /><p class="wp-caption-text">Active menu item background</p></div>
<div id="attachment_119" class="wp-caption aligncenter" style="width: 22px"><img class="size-full wp-image-119 " title="menu-item-active-bg-right" src="http://jefim.eu/blog/wp-content/uploads/2009/10/menu-item-active-bg-right.png" alt="right-handed chunk" width="12" height="30" /><p class="wp-caption-text">Right-handed chunk</p></div>
<p>Of course you may want it to be a rollover effect. This is very easy to accomplish by using JavaScript. I will use jQuery for this but you can pretty much use any framework or just plain JavaScript to do that. The code for the rollover effect in jQuery is as follows:</p>
<pre name="code" class="javascript">    $(document).ready(function () {
       $('#menu li').mouseenter(function ()
           { $(this).addClass('active'); });
       $('#menu li').mouseleave(function ()
           { $(this).removeClass('active'); });
    });</pre>
<p><a href="http://jefim.eu/examples/menu1/menu.html" target="_blank">Finally, the whole stuff compiled together</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/10/how-to-create-a-horizontal-menu/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The Web 2.0 craze</title>
		<link>http://jefim.eu/blog/2009/07/the-web-2-0-craze/</link>
		<comments>http://jefim.eu/blog/2009/07/the-web-2-0-craze/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 02:31:48 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[ul]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=85</guid>
		<description><![CDATA[The craze of Web 2.0 is consuming more and more developers and their customers. And, from my point of view, this is a good trend - websites are more clear, more usable and intercative - users are happy =&#62; site owners are happy =&#62; developers are happy. We are all happy. On the other hand [...]]]></description>
			<content:encoded><![CDATA[<p>The craze of Web 2.0 is consuming more and more developers and their customers. And, from my point of view, this is a good trend - websites are more clear, more usable and intercative - users are happy =&gt; site owners are happy =&gt; developers are happy. We are all happy.</p>
<p>On the other hand I must say that this craze is a bit over the edge. Why is that and how can it be seen? Well, from a dev perspective this mostly conserns HTML. Everybody wants valid (X)HTML today and I am not an exception. The other side of this is that everyone wants &lt;div&gt; vased websites with &lt;ul&gt; menus. Full stop. Now why is that? I admit, yes - &lt;table&gt; based sites are horrible to look at (the source code I mean). Yes, it is much clearer to do sites using &lt;div&gt; elements. But can anybody explain to me what is this "oh-so-obvious" reason for making menus using<br />
&lt;ul&gt;&lt;li&gt; menus? I don't mind it, but let us be honest - this can be a pain sometimes when you want a decent menu.</p>
<p>I see a lot of enthusiasts voting for &lt;ul&gt; who actually just repeat after others. They always use very simple menu examples to indicate how good this costruct is and I do not blame them. But is there any reason to hate &lt;table&gt; in menus? I do not see it. Do you? Using tables for menus is even a bit more natural to me than using lists - they are much more versatile in certain situation and demand much less effort to make them look good. Lists are an idealistic view at the source code structure and are good, but when the customer requires a more complex menu (not just plain background and color changing on hover) I often come to a conclusion that tables are the way to go.</p>
<p>I am, of course, not saying that tables should be used in every single menu, but I want to point is that tables are nothing to be afraid of. Do not listen to the masses, who scream one phrase all the time - think for yourself and decide which concept to use in a certain case of yours. Be reasonable.</p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/07/the-web-2-0-craze/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Web development future</title>
		<link>http://jefim.eu/blog/2009/06/web-development-future/</link>
		<comments>http://jefim.eu/blog/2009/06/web-development-future/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 03:21:21 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=70</guid>
		<description><![CDATA[As you may already know I work as a web developer. This means I encounter a lot of (X)HTML, PHP and JavaScript. There is no doubt that those are the most widely used tools for small/medium websites as well as there is no doubt that with all the new trends, with the increasing will to [...]]]></description>
			<content:encoded><![CDATA[<p>As you may already know I work as a web developer. This means I encounter a lot of (X)HTML, PHP and JavaScript. There is no doubt that those are the most widely used tools for small/medium websites as well as there is no doubt that with all the new trends, with the increasing will to build the "Web 2.0" the developmet becms harder and harder. There is a tremendous amount of ways to implement things, a huge number of frameworks out there than say "Hey, use me! I am the best!". Obviously, this is very stressful for the developer. And what is more stressing is the complexity of the code.</p>
<p>Remember how you used to write those small pure HTML pages without caring about whether it passes the validity tests? Remeber how you didn't care about Mozilla, Opera and Safari? You only had to make sure that this will work in IE and put a small text on the front page - "This site was made for IE6".</p>
<p>After that came PHP, which was overwhelming. It is a great tool designed to make scripting pages with ease. Then came databases and object-oriented paradigms. That is the time when I first started to feel frustrated. The code did not fit into my head anymore. I had to review the classes I have, the functions that they have, members, deal with connections and other crap.</p>
<p>And the latest thing - AJAX. This thing has been terrorising every single web developer. When I hear AJAX I always have two conflicting feelings - it is cool and it is very unpleasant to make it happen. I mean JavaScript was so simple (and mostly unnecessary) until AJAX hit the internet (and Web 2.0, of course). All you did was getElementById and validate forms with it sometimes.</p>
<p>Where am I going with this? Well... It is simple. At the moment the whole web development process with HTML/PHP/JS is quite complicated if you want to make something exceptional. As I work I keep seeing that I am performing repeating actions now and then. And I think that now <em><strong>it is time to make something new</strong></em>. A new way, a new tool, tailored for the specific needs of the web developer community. I will be not surprised if it will be something ASP.NET-like. Let it be. It is time to either dramatically improve the web development tools we have now or to create a new all-in-one tool that takes the concepts of HTML, PHP and JS/AJAX together and puts them into a universal form.</p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/06/web-development-future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web development tools I use and recommend</title>
		<link>http://jefim.eu/blog/2009/06/web-development-tools-i-use-nd-recommend/</link>
		<comments>http://jefim.eu/blog/2009/06/web-development-tools-i-use-nd-recommend/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 03:47:49 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=54</guid>
		<description><![CDATA[Ok, not being original here, but still... a web developer's blog is never complete without this. Maybe somebody will find at least something useful here. So here goes: Tasks slicing designs into images and cobining it to (X)HTML/CSS script writing (PHP / JavaScript) debugging testing IE compatibility quick editing database handling OS: Microsoft Windows others [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, not being original here, but still... a web developer's blog is never complete without this. Maybe somebody will find at least something useful here. So here goes:</p>
<h2>Tasks</h2>
<ul>
<li>slicing designs into images and cobining it to (X)HTML/CSS</li>
<li>script writing (PHP / JavaScript)</li>
<li>debugging</li>
<li>testing IE compatibility</li>
<li>quick editing</li>
<li>database handling</li>
<li>OS: Microsoft Windows</li>
<li>others<span id="more-54"></span></li>
</ul>
<h2>Slicing</h2>
<p><strong>Adobe Photoshop</strong> - using it mostly because the designs are in PSD files. I do not actually slice anything here. I just need this to take screenshots of the design to slice it with Paint.NET afterwards.</p>
<p><strong>Paint.NET</strong> - a free, but absolutely awesome graphical editor without the tremendous amount of unnecessary functionality. I paste the screenshots from Photoshop here and select-and-crop them for slicing.</p>
<h2>Creating (X)HTML/CSS</h2>
<p><strong>Adobe Dreamweaver</strong> - the most usable markup/style editor I have ever seen so far. Mostly because its autocomplete functions are so well thought-out. It is just a pleasure to use it. It is really worth the money Adobe wants people to pay for it.</p>
<h2>Script Writing</h2>
<p><strong>Komodo Edit</strong> - a free tool, that has all the features I need. This is the only editor I know that has every feature that one might want in a script editor (PHP / JS autocomplete, code folding and project files) and does not have all those features that a regular person would use once a year max. Also, it is a very neat that Komodo has <strong>addons</strong>, which are implemented the same way as they are in Firefox. Very handy thing to have packed into a very familiar interface. Has the vertical selection feature, which is very important to me (just hold donw Alt+Shift while selecting). Can also be quite handy when need to change something in HTML/CSS and you do not want to bother opening up Dreamweaver.</p>
<h2>Debugging</h2>
<p><strong>Firefox + Firebug and Web Developer addons</strong> - the best HTML/CSS/JS debugging tool. If you are not using those yet - you are now a web developer <img src='http://jefim.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I do not use any PHP debugging stuff. Still doing it the crappy way - <em>echo</em>'es and <em>print_r</em>'s. And the messages from the PHP interpreter, of course.</p>
<h2>Testing IE compatibility</h2>
<p>Of course I test my sites in Firefox, Opera and Safari. But the only problem is Internet Explorer (I test 6, 7 and 8), so...</p>
<p><strong>Multiple IE</strong> - adds shortcuts to IE versions (starting at version 3) to your quick-launch. Has PNG fix support. Nothing special, but I like it more than IETest.</p>
<h2>Quick Editing</h2>
<p><strong>Notepad++</strong> - hands down the most handy editor for some quick edits. Not for real production though, since there is just too much tweaking to be done in order to make it into a half-decent environment to work with. Editing some notes, viewing sources or creating a fast JS - Notepad++ makes it all happen for me.</p>
<h2>Database Handling</h2>
<p><strong>MySQL GUI Tools</strong> - mostly the Query Browser and Administrator. No real alternatives here, so there is not much to argue about. Better than phpMyAdmin anyway <img src='http://jefim.eu/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>phpMyAdmin</strong> - the standart in hostings with MySQL databases, so I am simply forced to use it.</p>
<h2>OS: Microsoft Windows</h2>
<p>This is quite important to me. Even though I really lack multiple workspaces in Linux (and do not even dare telling me about those crappy emulators for Windows of this feature) I still think that Windows is a better enviroment for web developing. Actually, I think that some people go to do this on Linux just because there are tools on Linux that allow it (e.g. ADs cannot go there since there is no Photoshop there). It is just a trend. Want to be cool? Install Linux.</p>
<p>Well, I personally think that this is not true. Web development is much more comfortable <span style="text-decoration: underline;">for me</span> in Windows because of the wide selection of tools (notice Notepad++, Dreamweaver and Paint.NET as well as the presence of normal IE). I do not dislike Linux though (I even have my lovely Ubuntu 9.04 installed). It is just that it does not provide me with all the tools to do my job in the most efficient way. Period.</p>
<h2>Others</h2>
<p>Of course there is a lot of other cool tools I use like Filezilla for FTP, Dia, MySQL Workbench and Visual Paradigm for modelling, Evernote for quick notes and so on. But they are quite small and sometimes completely unrelated to the topic of web development. Maybe someday I can write something about those little things that also help making the development process much more easy and less tiring.</p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/06/web-development-tools-i-use-nd-recommend/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ORM for PHP &#8211; Doctrine</title>
		<link>http://jefim.eu/blog/2009/06/orm-for-php-doctrine/</link>
		<comments>http://jefim.eu/blog/2009/06/orm-for-php-doctrine/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 16:29:09 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[modx]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=49</guid>
		<description><![CDATA[I have been always dreaming about some magical component for PHP developers that would free us from the pain of handling databses. And I have mostly seen useless wrappers for native database functions of PHP. Those always tried to claim that the will make it all better. No luck. Until recently (well, a bit more [...]]]></description>
			<content:encoded><![CDATA[<p>I have been always dreaming about some magical component for PHP developers that would free us from the pain of handling databses. And I have mostly seen useless wrappers for native database functions of PHP. Those always tried to claim that the will make it all better. No luck. Until recently (well, a bit more than recently) I looked into a thing called <a id="ekxb" title="ORM (Object-relational mapping)" href="http://en.wikipedia.org/wiki/Object-relational_mapping">ORM (Object-relational mapping)</a>. Specifically - an ORM for PHP called <a id="dqp9" title="Doctrine" href="http://www.doctrine-project.org/">Doctrine</a>.<span id="more-49"></span></p>
<p>Now, having some experience in trying to do database handling manually (e.g. having to use <em>mysql_connect</em> etc all the time) and letting Doctrine to do this for you I have one phrase to tell you: <strong>if you are not using ORM already you are losing a lot of precious time</strong>.</p>
<p>So, just as a small example of ORM godlyness. Really small and really simple. We need to create a page which holds orders from clients. Each order consists of items (duh!). This means two database entities - Orders and Items</p>
<p>First, let us see what we would need to do if we did not use Doctrine (or some another ORM):</p>
<ul>
<li>Create an SQL script for table creation (the main problem here is that SQL scripts are unreadable at all):
<ul>
<li><em>CREATE TABLE 'order' (id INT NOT NULL AUTO_INCREMENT, client_name VARCHAR(255), client_address VARCHAR(255));</em></li>
<li><em>CREATE TABLE 'item' (id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255), cost FLOAT, order_id INT NOT NULL);</em></li>
</ul>
</li>
<li>Create classes Order and Item. This is always very annoying for one reason - you have to rewrite CRUD functions over and over and over and over again. I hate it. I am not going to write the CRUD support for those classes right now, but if you did it once - you do not want to do it again.</li>
</ul>
<p>Well, that was pretty simple, but 1) time-consuming; 2) cofusing (you cannot see the overall scheme of things; 3) it is Boring.</p>
<p>Let's take a look how you can do this whole thing with Doctrine in no time. The basic idea is to create a YAML (*.yml) file, which describes your database scheme. Here is how our case would look like:</p>
<pre><strong><span style="color: #0000ff;">      Order:
        columns:
          client_name: string(255)
          client_address: string(255)
      Item:
        columns:
          title: string(255)
          cost: float
          order_id: integer
        relations:
          Order:
            local: order_id
            foreign: id
            foreignAlias: items</span></strong></pre>
<p>Voila. This is it. After that the only thing you have to do is type "php doctrine build-all-reload" in your favourite console and let Doctrine create the tables in the database and the classes for you. Right after that you can start using those to implement your business logic without caring about the CRUD functions!</p>
<p>In my script I could go like this right away:</p>
<pre><strong><span style="color: #0000ff;"><span style="color: #808080;">      // Create an order and set its vars
<span style="color: #0000ff;">      $order = new Order();
      $order-&gt;client_name = "Vasili Pupkin";
      $order-&gt;client_address = "Bobrujsk";</span>
      // Add a new item
<span style="color: #0000ff;">      $order[0]-&gt;title = "Saaremaa Vodka 80";
      $order[0]-&gt;cost = 15;</span>
      // Add another item (which plays very well with the first item)
<span style="color: #0000ff;">      $order[1]-&gt;title = "Good pickles";
      $order[1]-&gt;cost = 2;</span>
      // Save the order to the database
<span style="color: #0000ff;">      $order-&gt;save();</span></span></span></strong></pre>
<p>And that is the end of that story. Create a YAML file and start implementing the business-logic instead of spending a couple of hours (or more) writing boring monkey-oriented code.</p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/06/orm-for-php-doctrine/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A bit of MODx CMS criticism</title>
		<link>http://jefim.eu/blog/2009/05/a-bit-of-modx-cms-criticism/</link>
		<comments>http://jefim.eu/blog/2009/05/a-bit-of-modx-cms-criticism/#comments</comments>
		<pubDate>Fri, 29 May 2009 16:48:50 +0000</pubDate>
		<dc:creator>Jefim</dc:creator>
				<category><![CDATA[Assorted]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[modx]]></category>

		<guid isPermaLink="false">http://jefim.eu/blog/?p=41</guid>
		<description><![CDATA[Today I am going to talk about MODx CMS again. Now, the first post on this topic covered my first impressions of this product. And now I have something else to say. This time I am going to go a bit deeper into minuses of MODx. Why? Well, all the pluses are available on the [...]]]></description>
			<content:encoded><![CDATA[<p>Today I am going to talk about MODx CMS again. Now, the first post on this topic covered my first impressions of this product. And now I have something else to say.</p>
<p>This time I am going to go a bit deeper into minuses of MODx. Why? Well, all the pluses are available on the official website and I do not see the reason for repeating those. This post does not in anyway mean that MODx is a bad product! It just has some bad sides that I would find very useful to read about before starting to build a website based on this system. This post is healthy citicism and maybe a precaution for those wondering what can't you do with MODx.<span id="more-41"></span></p>
<h2>1. Documentation</h2>
<p>One of the most important minuses I have noted about MODx and anything related to documentation. Well, it is horrible. That concernes practically eveything. MODx heavily relies on customization by adding such things as chunks, snippets, plugins and modules. Not only the documentation of the MODx core system is horrible (and can be shown as agood example of how to not write documentation) but this practice also concerns anything starting from snippet usage to writing your own MODx components.</p>
<p>Now, I undertand that MODx did not even hit version 1.0 yet, but this (boring) part of any project is crucial to its success as the will to start using any framework-like product mostly depends on the features offered (50%) and documentation (50%). This is obvious and I do not understand why the MODx team is not concerned about this.</p>
<p>In the end I found myself googling such things as "wayfinder placeholders" and "ditto parameters" every now and then, since I keep forgetting those details. In addition to that all the documentation is done in different formats and designs, which is very annoying.</p>
<p>As a solution it would be not so hard to make some kind of a public documentation repository available to the MODx contributors with unified rules about documenting their code. Some kind of MSDN for MODx (not that complex of course).</p>
<p>Or as for now (e.g. until the 1.0 release) there should be at least a unified refence on all bundled MODx components!</p>
<h2>2. Administrating area (manager) customization</h2>
<p>At the moment the admin zone of MODx is pretty much monolithic. It cannot be changed fundamentally. And this is a major drawback, since admin zone is a vast part of the website itself. You cannot hide all of the stuff here and then, you cannot make it look too user-friendly after all (yes, I know about roles, groups etc. - it is far from ideal). Adding new custom functionality to the admin area can be done through modules, though the only place you can actually add this functionality is to the "Modules" menu (I get the logic, but I do not get why is there such a limit?).</p>
<p>The admin area must be fully customizable. Every single piece of it. Without editing the core MODx files.</p>
<p>* Many MODx people can, of course, say that there is MODx Revolution (which looks very promising), but at this point I will not discuss anything connected to it as the latest alpha was very buggy (right from the start) and unusable.</p>
<h2>3. Templating engine</h2>
<p>As already said in the previous post about MODx, the templating engine is quite far from being perfect. It has most of the necessary features, but far from Smarty by its functionality. I, personally, lack logical constucts ({if}). BUT! The behaviour of the templating engine can be changed. You can hook into the output event and modify the output as you wish (e.g. implementing as {if} would be quite easy, in fact, I have done it already as I cannot live without it and I do ot know how people use MODx without it - this simple plugin will be available as soon as I have time to make it look pretty).</p>
<p>Again, there is NO way you can mimic Smarty {if} with snippets - they simply work on a different level of MODx.</p>
<h2>Conclusion</h2>
<p>To conclude... Well, MODx is still pretty solid CMS system, which offeres a lot of features and works as a charm if configured and used corectly. Its disadvantage in the documentation area is, obviously, an effect of its open-source nature. The templating engine problems can be solved by creating a plugin (although it is quite strange to me that Smarty-like features are not present in MODx). Therefore, the only major problem at the moment is the manager customization. This problem is promised to be fixed when Revolution hits the ground but from what I've seen in the latest alpha it won't be a reliable product in near future. Therefore - modules are the only way to affect the admin area without going inside the core files of MODx.</p>
]]></content:encoded>
			<wfw:commentRss>http://jefim.eu/blog/2009/05/a-bit-of-modx-cms-criticism/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

